diff --git a/bench/assimp/optimized/FBXConverter.ll b/bench/assimp/optimized/FBXConverter.ll index bfe6cb381b5..79127d9ea41 100644 --- a/bench/assimp/optimized/FBXConverter.ll +++ b/bench/assimp/optimized/FBXConverter.ll @@ -11729,7 +11729,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit7: ; preds = %19, define linkonce_odr hidden { <2 x float>, float } @_ZNK6Assimp3FBX5Light5ColorEv(ptr noundef nonnull align 8 dereferenceable(72) %0) local_unnamed_addr #4 comdat align 2 personality ptr @__gxx_personality_v0 { ._crit_edge.i.i: %1 = alloca %"class.std::__cxx11::basic_string", align 8 - %.sroa.0 = alloca { float, float }, align 8 + %.sroa.0 = alloca <2 x float>, align 8 %.sroa.7 = alloca float, align 4 %2 = getelementptr inbounds nuw i8, ptr %0, i64 56 %3 = load ptr, ptr %2, align 8 @@ -37853,15 +37853,15 @@ define hidden noundef ptr @_ZN6Assimp3FBX12FBXConverter22GenerateSimpleNodeAnimE %17 = alloca %"class.std::vector.442", align 8 %18 = alloca %class.aiVector3t, align 8 %19 = alloca %"class.std::__cxx11::basic_string", align 8 - %.sroa.0619 = alloca { float, float }, align 8 + %.sroa.0619 = alloca <2 x float>, align 8 %.sroa.7620 = alloca float, align 4 %20 = alloca %class.aiVector3t, align 8 %21 = alloca %"class.std::__cxx11::basic_string", align 8 - %.sroa.0615 = alloca { float, float }, align 8 + %.sroa.0615 = alloca <2 x float>, align 8 %.sroa.7616 = alloca float, align 4 %22 = alloca %class.aiVector3t, align 8 %23 = alloca %"class.std::__cxx11::basic_string", align 8 - %.sroa.0 = alloca { float, float }, align 8 + %.sroa.0 = alloca <2 x float>, align 8 %.sroa.7 = alloca float, align 4 %24 = alloca %class.aiVector3t, align 8 %25 = alloca %"class.std::__cxx11::basic_string", align 8 @@ -44793,7 +44793,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit7: ; preds = %22, define linkonce_odr hidden { <2 x float>, float } @_ZNK6Assimp3FBX18FileGlobalSettings12AmbientColorEv(ptr noundef nonnull align 8 dereferenceable(24) %0) local_unnamed_addr #4 comdat align 2 personality ptr @__gxx_personality_v0 { ._crit_edge.i.i: %1 = alloca %"class.std::__cxx11::basic_string", align 8 - %.sroa.0 = alloca { float, float }, align 8 + %.sroa.0 = alloca <2 x float>, align 8 %.sroa.7 = alloca float, align 4 %2 = load ptr, ptr %0, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %1) diff --git a/bench/box2d/optimized/sample_collision.ll b/bench/box2d/optimized/sample_collision.ll index 909ab452af0..3c6f220c866 100644 --- a/bench/box2d/optimized/sample_collision.ll +++ b/bench/box2d/optimized/sample_collision.ll @@ -873,19 +873,19 @@ _ZN13ShapeDistance9MakeProxyENS_9ShapeTypeEf.exit24: ; preds = %15 store float 0.000000e+00, ptr %25, align 4, !tbaa !89 %26 = load i64, ptr %17, align 8, !noalias !90 %27 = getelementptr inbounds nuw i8, ptr %0, i64 256 - %28 = load i64, ptr %27, align 8, !noalias !90 + %28 = load <2 x float>, ptr %27, align 8, !noalias !90 %29 = getelementptr inbounds nuw i8, ptr %0, i64 264 - %30 = load i64, ptr %29, align 8, !noalias !90 + %30 = load <2 x float>, ptr %29, align 8, !noalias !90 %31 = getelementptr inbounds nuw i8, ptr %0, i64 272 - %32 = load i64, ptr %31, align 8, !noalias !90 + %32 = load <2 x float>, ptr %31, align 8, !noalias !90 %33 = getelementptr inbounds nuw i8, ptr %0, i64 576 store i64 %26, ptr %33, align 8 %.sroa.731.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 584 - store i64 %28, ptr %.sroa.731.0..sroa_idx, align 8 + store <2 x float> %28, ptr %.sroa.731.0..sroa_idx, align 8 %.sroa.1032.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 592 - store i64 %30, ptr %.sroa.1032.0..sroa_idx, align 8 + store <2 x float> %30, ptr %.sroa.1032.0..sroa_idx, align 8 %.sroa.1233.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 600 - store i64 %32, ptr %.sroa.1233.0..sroa_idx, align 8 + store <2 x float> %32, ptr %.sroa.1233.0..sroa_idx, align 8 %.sroa.1334.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 608 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.1334.0..sroa_idx, i8 0, i64 32, i1 false) %.sroa.1335.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 640 @@ -895,11 +895,11 @@ _ZN13ShapeDistance9MakeProxyENS_9ShapeTypeEf.exit24: ; preds = %15 %34 = getelementptr inbounds nuw i8, ptr %0, i64 648 store i64 %26, ptr %34, align 8 %.sroa.7.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 656 - store i64 %28, ptr %.sroa.7.0..sroa_idx, align 8 + store <2 x float> %28, ptr %.sroa.7.0..sroa_idx, align 8 %.sroa.10.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 664 - store i64 %30, ptr %.sroa.10.0..sroa_idx, align 8 + store <2 x float> %30, ptr %.sroa.10.0..sroa_idx, align 8 %.sroa.12.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 672 - store i64 %32, ptr %.sroa.12.0..sroa_idx, align 8 + store <2 x float> %32, ptr %.sroa.12.0..sroa_idx, align 8 %.sroa.13.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 680 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.13.0..sroa_idx, i8 0, i64 32, i1 false) %.sroa.1327.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 712 @@ -1322,12 +1322,12 @@ define linkonce_odr dso_local void @_ZN13ShapeDistance8UpdateUIEv(ptr noundef no %4 = alloca %struct.ImVec2, align 4 %5 = alloca [4 x ptr], align 16 %6 = alloca i32, align 4 - %.sroa.716 = alloca %struct.b2Vec2, align 8 - %.sroa.1017 = alloca %struct.b2Vec2, align 8 - %.sroa.1218 = alloca %struct.b2Vec2, align 8 - %.sroa.7 = alloca %struct.b2Vec2, align 8 - %.sroa.10 = alloca %struct.b2Vec2, align 8 - %.sroa.12 = alloca %struct.b2Vec2, align 8 + %.sroa.716 = alloca <2 x float>, align 8 + %.sroa.1017 = alloca <2 x float>, align 8 + %.sroa.1218 = alloca <2 x float>, align 8 + %.sroa.7 = alloca <2 x float>, align 8 + %.sroa.10 = alloca <2 x float>, align 8 + %.sroa.12 = alloca <2 x float>, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %2) %7 = load i32, ptr getelementptr inbounds nuw (i8, ptr @g_camera, i64 16), align 4, !tbaa !123 %8 = sitofp i32 %7 to float @@ -1368,9 +1368,9 @@ define linkonce_odr dso_local void @_ZN13ShapeDistance8UpdateUIEv(ptr noundef no %20 = getelementptr inbounds nuw i8, ptr %0, i64 568 %21 = load float, ptr %20, align 8, !tbaa !88 call void @llvm.experimental.noalias.scope.decl(metadata !127) - store i64 0, ptr %.sroa.716, align 8 - store i64 0, ptr %.sroa.1017, align 8 - store i64 0, ptr %.sroa.1218, align 8 + store <2 x float> zeroinitializer, ptr %.sroa.716, align 8, !alias.scope !127 + store <2 x float> zeroinitializer, ptr %.sroa.1017, align 8, !alias.scope !127 + store <2 x float> zeroinitializer, ptr %.sroa.1218, align 8, !alias.scope !127 switch i32 %19, label %_ZN13ShapeDistance9MakeProxyENS_9ShapeTypeEf.exit [ i32 0, label %.sink.split.i i32 1, label %22 @@ -1387,19 +1387,19 @@ define linkonce_odr dso_local void @_ZN13ShapeDistance8UpdateUIEv(ptr noundef no %26 = getelementptr inbounds nuw i8, ptr %0, i64 392 %27 = load i64, ptr %26, align 8, !noalias !127 %28 = getelementptr inbounds nuw i8, ptr %0, i64 400 - %29 = load i64, ptr %28, align 8, !noalias !127 - store i64 %29, ptr %.sroa.716, align 8, !alias.scope !127 + %29 = load <2 x float>, ptr %28, align 8, !noalias !127 + store <2 x float> %29, ptr %.sroa.716, align 8, !alias.scope !127 br label %.sink.split.sink.split.i 30: ; preds = %18 %31 = getelementptr inbounds nuw i8, ptr %0, i64 248 %32 = load i64, ptr %31, align 8, !noalias !127 %33 = getelementptr inbounds nuw i8, ptr %0, i64 256 - %34 = load i64, ptr %33, align 8, !noalias !127 - store i64 %34, ptr %.sroa.716, align 8, !alias.scope !127 + %34 = load <2 x float>, ptr %33, align 8, !noalias !127 + store <2 x float> %34, ptr %.sroa.716, align 8, !alias.scope !127 %35 = getelementptr inbounds nuw i8, ptr %0, i64 264 - %36 = load i64, ptr %35, align 8, !noalias !127 - store i64 %36, ptr %.sroa.1017, align 8, !alias.scope !127 + %36 = load <2 x float>, ptr %35, align 8, !noalias !127 + store <2 x float> %36, ptr %.sroa.1017, align 8, !alias.scope !127 br label %.sink.split.sink.split.i .sink.split.sink.split.i: ; preds = %30, %25, %22 @@ -1410,28 +1410,28 @@ define linkonce_odr dso_local void @_ZN13ShapeDistance8UpdateUIEv(ptr noundef no %37 = getelementptr inbounds nuw i8, ptr %0, i64 %.sink7.i %38 = load i64, ptr %37, align 8, !noalias !127 store i64 %38, ptr %.sink6.i.sroa.phi, align 8, !alias.scope !127 - %.sroa.716.0..sroa.716.0..pre = load i64, ptr %.sroa.716, align 8 - %.sroa.1017.0..sroa.1017.0..pre = load i64, ptr %.sroa.1017, align 8 - %.sroa.1218.0..sroa.1218.0..pre = load i64, ptr %.sroa.1218, align 8 + %.sroa.716.0..sroa.716.0..pre = load <2 x float>, ptr %.sroa.716, align 8 + %.sroa.1017.0..sroa.1017.0..pre = load <2 x float>, ptr %.sroa.1017, align 8 + %.sroa.1218.0..sroa.1218.0..pre = load <2 x float>, ptr %.sroa.1218, align 8 br label %_ZN13ShapeDistance9MakeProxyENS_9ShapeTypeEf.exit .sink.split.i: ; preds = %18 br label %_ZN13ShapeDistance9MakeProxyENS_9ShapeTypeEf.exit _ZN13ShapeDistance9MakeProxyENS_9ShapeTypeEf.exit: ; preds = %.sink.split.sink.split.i, %18, %.sink.split.i - %.sroa.1218.0. = phi i64 [ 0, %18 ], [ %.sroa.1218.0..sroa.1218.0..pre, %.sink.split.sink.split.i ], [ 0, %.sink.split.i ] - %.sroa.1017.0. = phi i64 [ 0, %18 ], [ %.sroa.1017.0..sroa.1017.0..pre, %.sink.split.sink.split.i ], [ 0, %.sink.split.i ] - %.sroa.716.0. = phi i64 [ 0, %18 ], [ %.sroa.716.0..sroa.716.0..pre, %.sink.split.sink.split.i ], [ 0, %.sink.split.i ] + %.sroa.1218.0. = phi <2 x float> [ zeroinitializer, %18 ], [ %.sroa.1218.0..sroa.1218.0..pre, %.sink.split.sink.split.i ], [ zeroinitializer, %.sink.split.i ] + %.sroa.1017.0. = phi <2 x float> [ zeroinitializer, %18 ], [ %.sroa.1017.0..sroa.1017.0..pre, %.sink.split.sink.split.i ], [ zeroinitializer, %.sink.split.i ] + %.sroa.716.0. = phi <2 x float> [ zeroinitializer, %18 ], [ %.sroa.716.0..sroa.716.0..pre, %.sink.split.sink.split.i ], [ zeroinitializer, %.sink.split.i ] %.sroa.1320.0 = phi i32 [ 0, %18 ], [ %.sink.ph.i, %.sink.split.sink.split.i ], [ 1, %.sink.split.i ] %.sroa.015.2 = phi i64 [ 0, %18 ], [ %.sroa.015.0, %.sink.split.sink.split.i ], [ 0, %.sink.split.i ] %39 = getelementptr inbounds nuw i8, ptr %0, i64 576 store i64 %.sroa.015.2, ptr %39, align 8 %.sroa.716.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 584 - store i64 %.sroa.716.0., ptr %.sroa.716.0..sroa_idx, align 8 + store <2 x float> %.sroa.716.0., ptr %.sroa.716.0..sroa_idx, align 8 %.sroa.1017.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 592 - store i64 %.sroa.1017.0., ptr %.sroa.1017.0..sroa_idx, align 8 + store <2 x float> %.sroa.1017.0., ptr %.sroa.1017.0..sroa_idx, align 8 %.sroa.1218.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 600 - store i64 %.sroa.1218.0., ptr %.sroa.1218.0..sroa_idx, align 8 + store <2 x float> %.sroa.1218.0., ptr %.sroa.1218.0..sroa_idx, align 8 %.sroa.1319.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 608 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.1319.0..sroa_idx, i8 0, i64 32, i1 false) %.sroa.1320.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 640 @@ -1470,9 +1470,9 @@ _ZN13ShapeDistance9MakeProxyENS_9ShapeTypeEf.exit: ; preds = %.sink.split.sink.s %52 = getelementptr inbounds nuw i8, ptr %0, i64 572 %53 = load float, ptr %52, align 4, !tbaa !89 call void @llvm.experimental.noalias.scope.decl(metadata !131) - store i64 0, ptr %.sroa.7, align 8 - store i64 0, ptr %.sroa.10, align 8 - store i64 0, ptr %.sroa.12, align 8 + store <2 x float> zeroinitializer, ptr %.sroa.7, align 8, !alias.scope !131 + store <2 x float> zeroinitializer, ptr %.sroa.10, align 8, !alias.scope !131 + store <2 x float> zeroinitializer, ptr %.sroa.12, align 8, !alias.scope !131 switch i32 %51, label %_ZN13ShapeDistance9MakeProxyENS_9ShapeTypeEf.exit9 [ i32 0, label %.sink.split.i7 i32 1, label %54 @@ -1489,19 +1489,19 @@ _ZN13ShapeDistance9MakeProxyENS_9ShapeTypeEf.exit: ; preds = %.sink.split.sink.s %58 = getelementptr inbounds nuw i8, ptr %0, i64 392 %59 = load i64, ptr %58, align 8, !noalias !131 %60 = getelementptr inbounds nuw i8, ptr %0, i64 400 - %61 = load i64, ptr %60, align 8, !noalias !131 - store i64 %61, ptr %.sroa.7, align 8, !alias.scope !131 + %61 = load <2 x float>, ptr %60, align 8, !noalias !131 + store <2 x float> %61, ptr %.sroa.7, align 8, !alias.scope !131 br label %.sink.split.sink.split.i3 62: ; preds = %50 %63 = getelementptr inbounds nuw i8, ptr %0, i64 248 %64 = load i64, ptr %63, align 8, !noalias !131 %65 = getelementptr inbounds nuw i8, ptr %0, i64 256 - %66 = load i64, ptr %65, align 8, !noalias !131 - store i64 %66, ptr %.sroa.7, align 8, !alias.scope !131 + %66 = load <2 x float>, ptr %65, align 8, !noalias !131 + store <2 x float> %66, ptr %.sroa.7, align 8, !alias.scope !131 %67 = getelementptr inbounds nuw i8, ptr %0, i64 264 - %68 = load i64, ptr %67, align 8, !noalias !131 - store i64 %68, ptr %.sroa.10, align 8, !alias.scope !131 + %68 = load <2 x float>, ptr %67, align 8, !noalias !131 + store <2 x float> %68, ptr %.sroa.10, align 8, !alias.scope !131 br label %.sink.split.sink.split.i3 .sink.split.sink.split.i3: ; preds = %62, %57, %54 @@ -1512,28 +1512,28 @@ _ZN13ShapeDistance9MakeProxyENS_9ShapeTypeEf.exit: ; preds = %.sink.split.sink.s %69 = getelementptr inbounds nuw i8, ptr %0, i64 %.sink7.i4 %70 = load i64, ptr %69, align 8, !noalias !131 store i64 %70, ptr %.sink6.i5.sroa.phi, align 8, !alias.scope !131 - %.sroa.7.0..sroa.7.0..pre = load i64, ptr %.sroa.7, align 8 - %.sroa.10.0..sroa.10.0..pre = load i64, ptr %.sroa.10, align 8 - %.sroa.12.0..sroa.12.0..pre = load i64, ptr %.sroa.12, align 8 + %.sroa.7.0..sroa.7.0..pre = load <2 x float>, ptr %.sroa.7, align 8 + %.sroa.10.0..sroa.10.0..pre = load <2 x float>, ptr %.sroa.10, align 8 + %.sroa.12.0..sroa.12.0..pre = load <2 x float>, ptr %.sroa.12, align 8 br label %_ZN13ShapeDistance9MakeProxyENS_9ShapeTypeEf.exit9 .sink.split.i7: ; preds = %50 br label %_ZN13ShapeDistance9MakeProxyENS_9ShapeTypeEf.exit9 _ZN13ShapeDistance9MakeProxyENS_9ShapeTypeEf.exit9: ; preds = %.sink.split.sink.split.i3, %50, %.sink.split.i7 - %.sroa.12.0. = phi i64 [ 0, %50 ], [ %.sroa.12.0..sroa.12.0..pre, %.sink.split.sink.split.i3 ], [ 0, %.sink.split.i7 ] - %.sroa.10.0. = phi i64 [ 0, %50 ], [ %.sroa.10.0..sroa.10.0..pre, %.sink.split.sink.split.i3 ], [ 0, %.sink.split.i7 ] - %.sroa.7.0. = phi i64 [ 0, %50 ], [ %.sroa.7.0..sroa.7.0..pre, %.sink.split.sink.split.i3 ], [ 0, %.sink.split.i7 ] + %.sroa.12.0. = phi <2 x float> [ zeroinitializer, %50 ], [ %.sroa.12.0..sroa.12.0..pre, %.sink.split.sink.split.i3 ], [ zeroinitializer, %.sink.split.i7 ] + %.sroa.10.0. = phi <2 x float> [ zeroinitializer, %50 ], [ %.sroa.10.0..sroa.10.0..pre, %.sink.split.sink.split.i3 ], [ zeroinitializer, %.sink.split.i7 ] + %.sroa.7.0. = phi <2 x float> [ zeroinitializer, %50 ], [ %.sroa.7.0..sroa.7.0..pre, %.sink.split.sink.split.i3 ], [ zeroinitializer, %.sink.split.i7 ] %.sroa.0.2 = phi i64 [ 0, %50 ], [ %.sroa.0.0, %.sink.split.sink.split.i3 ], [ 0, %.sink.split.i7 ] %.sroa.1312.0 = phi i32 [ 0, %50 ], [ %.sink.ph.i6, %.sink.split.sink.split.i3 ], [ 1, %.sink.split.i7 ] %71 = getelementptr inbounds nuw i8, ptr %0, i64 648 store i64 %.sroa.0.2, ptr %71, align 8 %.sroa.7.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 656 - store i64 %.sroa.7.0., ptr %.sroa.7.0..sroa_idx, align 8 + store <2 x float> %.sroa.7.0., ptr %.sroa.7.0..sroa_idx, align 8 %.sroa.10.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 664 - store i64 %.sroa.10.0., ptr %.sroa.10.0..sroa_idx, align 8 + store <2 x float> %.sroa.10.0., ptr %.sroa.10.0..sroa_idx, align 8 %.sroa.12.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 672 - store i64 %.sroa.12.0., ptr %.sroa.12.0..sroa_idx, align 8 + store <2 x float> %.sroa.12.0., ptr %.sroa.12.0..sroa_idx, align 8 %.sroa.13.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 680 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.13.0..sroa_idx, i8 0, i64 32, i1 false) %.sroa.1312.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 712 diff --git a/bench/bullet3/optimized/b3DynamicBvhBroadphase.ll b/bench/bullet3/optimized/b3DynamicBvhBroadphase.ll index 8266c1571e1..b3fff5a86b2 100644 --- a/bench/bullet3/optimized/b3DynamicBvhBroadphase.ll +++ b/bench/bullet3/optimized/b3DynamicBvhBroadphase.ll @@ -2940,7 +2940,6 @@ define linkonce_odr dso_local void @_ZN20BroadphaseAabbTester7ProcessEPK10b3Dbvt ; Function Attrs: mustprogress uwtable define linkonce_odr dso_local void @_ZN20b3AlignedObjectArrayI6b3Int4E17quickSortInternalI29b3BroadphasePairSortPredicateEEvRKT_ii(ptr noundef nonnull align 8 dereferenceable(25) %0, ptr noundef nonnull align 1 dereferenceable(1) %1, i32 noundef %2, i32 noundef %3) local_unnamed_addr #0 comdat align 2 { - %.sroa.0.i = alloca %struct.anon.10, align 16 %5 = getelementptr inbounds nuw i8, ptr %0, i64 16 br label %tailrecurse @@ -3012,13 +3011,11 @@ _ZNK29b3BroadphasePairSortPredicateclERK6b3Int4S2_.exit34.thread: ; preds = %24, br i1 %.not, label %41, label %36 36: ; preds = %33 - call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.0.i) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %.sroa.0.i, ptr noundef nonnull align 16 dereferenceable(16) %15, i64 16, i1 false), !tbaa.struct !48 + %.sroa.0.i.sroa.0.0.copyload = load <4 x i32>, ptr %15, align 16, !tbaa !49 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %15, ptr noundef nonnull align 16 dereferenceable(16) %25, i64 16, i1 false), !tbaa.struct !48 %37 = load ptr, ptr %5, align 8, !tbaa !98 %38 = getelementptr inbounds %struct.b3Int4, ptr %37, i64 %indvars.iv46 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %38, ptr noundef nonnull align 16 dereferenceable(16) %.sroa.0.i, i64 16, i1 false), !tbaa.struct !48 - call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.0.i) + store <4 x i32> %.sroa.0.i.sroa.0.0.copyload, ptr %38, align 16, !tbaa !49 %39 = add nsw i32 %34, 1 %40 = add nsw i32 %35, -1 br label %41 diff --git a/bench/bullet3/optimized/btConvexHullComputer.ll b/bench/bullet3/optimized/btConvexHullComputer.ll index 3de23cc731e..679d99bf488 100644 --- a/bench/bullet3/optimized/btConvexHullComputer.ll +++ b/bench/bullet3/optimized/btConvexHullComputer.ll @@ -10097,13 +10097,12 @@ declare noundef ptr @_Z22btAlignedAllocInternalmi(i64 noundef, i32 noundef) loca ; Function Attrs: mustprogress uwtable define linkonce_odr dso_local void @_ZN20btAlignedObjectArrayIN20btConvexHullInternal7Point32EE17quickSortInternalI8pointCmpEEvRKT_ii(ptr noundef nonnull align 8 dereferenceable(25) %0, ptr noundef nonnull align 1 dereferenceable(1) %1, i32 noundef %2, i32 noundef %3) local_unnamed_addr #3 comdat align 2 { - %5 = alloca %"class.btConvexHullInternal::Point32", align 4 - %6 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %5 = getelementptr inbounds nuw i8, ptr %0, i64 16 br label %tailrecurse tailrecurse: ; preds = %58, %4 - %.tr41 = phi i32 [ %2, %4 ], [ %.230, %58 ] - %7 = load ptr, ptr %6, align 8, !tbaa !122 + %.tr41 = phi i32 [ %2, %4 ], [ %.230, %57 ] + %7 = load ptr, ptr %5, align 8, !tbaa !122 %8 = add nsw i32 %.tr41, %3 %9 = sdiv i32 %8, 2 %10 = sext i32 %9 to i64 @@ -10113,54 +10112,54 @@ tailrecurse: ; preds = %58, %4 %.sroa.5.0.copyload = load i32, ptr %.sroa.5.0..sroa_idx, align 4, !tbaa !82 %.sroa.7.0..sroa_idx = getelementptr inbounds nuw i8, ptr %11, i64 8 %.sroa.7.0.copyload = load i32, ptr %.sroa.7.0..sroa_idx, align 4, !tbaa !82 - br label %12 + br label %11 + +11: ; preds = %53, %tailrecurse + %.028 = phi i32 [ %.tr41, %tailrecurse ], [ %.230, %53 ] + %.0 = phi i32 [ %3, %tailrecurse ], [ %.2, %53 ] + %12 = load ptr, ptr %5, align 8, !tbaa !122 + %13 = sext i32 %.028 to i64 + br label %14 + +14: ; preds = %_ZNK8pointCmpclERKN20btConvexHullInternal7Point32ES3_.exit.thread, %11 + %indvars.iv = phi i64 [ %indvars.iv.next, %_ZNK8pointCmpclERKN20btConvexHullInternal7Point32ES3_.exit.thread ], [ %13, %11 ] + %15 = getelementptr inbounds %"class.btConvexHullInternal::Point32", ptr %12, i64 %indvars.iv + %16 = getelementptr inbounds nuw i8, ptr %15, i64 4 + %17 = load i32, ptr %16, align 4, !tbaa !78 + %18 = icmp slt i32 %17, %.sroa.5.0.copyload + br i1 %18, label %_ZNK8pointCmpclERKN20btConvexHullInternal7Point32ES3_.exit.thread, label %19 -12: ; preds = %54, %tailrecurse - %.028 = phi i32 [ %.tr41, %tailrecurse ], [ %.230, %54 ] - %.0 = phi i32 [ %3, %tailrecurse ], [ %.2, %54 ] - %13 = load ptr, ptr %6, align 8, !tbaa !122 - %14 = sext i32 %.028 to i64 - br label %15 - -15: ; preds = %_ZNK8pointCmpclERKN20btConvexHullInternal7Point32ES3_.exit.thread, %12 - %indvars.iv = phi i64 [ %indvars.iv.next, %_ZNK8pointCmpclERKN20btConvexHullInternal7Point32ES3_.exit.thread ], [ %14, %12 ] - %16 = getelementptr inbounds %"class.btConvexHullInternal::Point32", ptr %13, i64 %indvars.iv - %17 = getelementptr inbounds nuw i8, ptr %16, i64 4 - %18 = load i32, ptr %17, align 4, !tbaa !78 - %19 = icmp slt i32 %18, %.sroa.5.0.copyload - br i1 %19, label %_ZNK8pointCmpclERKN20btConvexHullInternal7Point32ES3_.exit.thread, label %20 - -20: ; preds = %15 - %21 = icmp eq i32 %18, %.sroa.5.0.copyload - br i1 %21, label %22, label %.preheader - -22: ; preds = %20 - %23 = load i32, ptr %16, align 4, !tbaa !77 - %24 = icmp slt i32 %23, %.sroa.0.0.copyload - br i1 %24, label %_ZNK8pointCmpclERKN20btConvexHullInternal7Point32ES3_.exit.thread, label %25 - -25: ; preds = %22 - %26 = icmp eq i32 %23, %.sroa.0.0.copyload - br i1 %26, label %27, label %.preheader - -27: ; preds = %25 - %28 = getelementptr inbounds nuw i8, ptr %16, i64 8 - %29 = load i32, ptr %28, align 4, !tbaa !79 - %30 = icmp slt i32 %29, %.sroa.7.0.copyload - br i1 %30, label %_ZNK8pointCmpclERKN20btConvexHullInternal7Point32ES3_.exit.thread, label %.preheader - -.preheader: ; preds = %27, %25, %20 - %31 = trunc nsw i64 %indvars.iv to i32 - %32 = sext i32 %.0 to i64 - br label %33 - -_ZNK8pointCmpclERKN20btConvexHullInternal7Point32ES3_.exit.thread: ; preds = %22, %15, %27 +19: ; preds = %14 + %20 = icmp eq i32 %17, %.sroa.5.0.copyload + br i1 %20, label %21, label %.preheader + +21: ; preds = %19 + %22 = load i32, ptr %15, align 4, !tbaa !77 + %23 = icmp slt i32 %22, %.sroa.0.0.copyload + br i1 %23, label %_ZNK8pointCmpclERKN20btConvexHullInternal7Point32ES3_.exit.thread, label %24 + +24: ; preds = %21 + %25 = icmp eq i32 %22, %.sroa.0.0.copyload + br i1 %25, label %26, label %.preheader + +12: ; preds = %24 + %27 = getelementptr inbounds nuw i8, ptr %15, i64 8 + %28 = load i32, ptr %27, align 4, !tbaa !79 + %29 = icmp slt i32 %28, %.sroa.7.0.copyload + br i1 %29, label %_ZNK8pointCmpclERKN20btConvexHullInternal7Point32ES3_.exit.thread, label %.preheader + +.preheader: ; preds = %26, %24, %19 + %30 = trunc nsw i64 %indvars.iv to i32 + %31 = sext i32 %.0 to i64 + br label %32 + +_ZNK8pointCmpclERKN20btConvexHullInternal7Point32ES3_.exit.thread:; preds = %21, %14, %26 %indvars.iv.next = add nsw i64 %indvars.iv, 1 - br label %15, !llvm.loop !246 + br label %14, !llvm.loop !246 33: ; preds = %.preheader, %_ZNK8pointCmpclERKN20btConvexHullInternal7Point32ES3_.exit34.thread - %indvars.iv53 = phi i64 [ %32, %.preheader ], [ %indvars.iv.next54, %_ZNK8pointCmpclERKN20btConvexHullInternal7Point32ES3_.exit34.thread ] - %34 = getelementptr inbounds %"class.btConvexHullInternal::Point32", ptr %13, i64 %indvars.iv53 + %indvars.iv53 = phi i64 [ %31, %.preheader ], [ %indvars.iv.next54, %_ZNK8pointCmpclERKN20btConvexHullInternal7Point32ES3_.exit34.thread ] + %34 = getelementptr inbounds %"class.btConvexHullInternal::Point32", ptr %12, i64 %indvars.iv53 %35 = getelementptr inbounds nuw i8, ptr %34, i64 4 %36 = load i32, ptr %35, align 4, !tbaa !78 %37 = icmp slt i32 %.sroa.5.0.copyload, %36 @@ -10192,27 +10191,25 @@ _ZNK8pointCmpclERKN20btConvexHullInternal7Point32ES3_.exit34.thread: ; preds = % _ZNK8pointCmpclERKN20btConvexHullInternal7Point32ES3_.exit34.thread39: ; preds = %38, %43, %_ZNK8pointCmpclERKN20btConvexHullInternal7Point32ES3_.exit34 %48 = trunc nsw i64 %indvars.iv53 to i32 %.not = icmp sgt i64 %indvars.iv, %indvars.iv53 - br i1 %.not, label %54, label %49 + br i1 %.not, label %53, label %49 49: ; preds = %_ZNK8pointCmpclERKN20btConvexHullInternal7Point32ES3_.exit34.thread39 - call void @llvm.lifetime.start.p0(ptr nonnull %5) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %5, ptr noundef nonnull align 4 dereferenceable(16) %16, i64 16, i1 false), !tbaa.struct !125 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %16, ptr noundef nonnull align 4 dereferenceable(16) %34, i64 16, i1 false), !tbaa.struct !125 - %50 = load ptr, ptr %6, align 8, !tbaa !122 - %51 = getelementptr inbounds %"class.btConvexHullInternal::Point32", ptr %50, i64 %indvars.iv53 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %51, ptr noundef nonnull align 4 dereferenceable(16) %5, i64 16, i1 false), !tbaa.struct !125 - call void @llvm.lifetime.end.p0(ptr nonnull %5) - %52 = add nsw i32 %31, 1 - %53 = add nsw i32 %48, -1 - br label %54 - -54: ; preds = %_ZNK8pointCmpclERKN20btConvexHullInternal7Point32ES3_.exit34.thread39, %49 - %.230 = phi i32 [ %52, %49 ], [ %31, %_ZNK8pointCmpclERKN20btConvexHullInternal7Point32ES3_.exit34.thread39 ] - %.2 = phi i32 [ %53, %49 ], [ %48, %_ZNK8pointCmpclERKN20btConvexHullInternal7Point32ES3_.exit34.thread39 ] + %.sroa.0.0.copyload56 = load <4 x i32>, ptr %15, align 4 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %15, ptr noundef nonnull align 4 dereferenceable(16) %33, i64 16, i1 false), !tbaa.struct !125 + %49 = load ptr, ptr %5, align 8, !tbaa !122 + %50 = getelementptr inbounds %"class.btConvexHullInternal::Point32", ptr %49, i64 %indvars.iv53 + store <4 x i32> %.sroa.0.0.copyload56, ptr %50, align 4 + %51 = add nsw i32 %30, 1 + %52 = add nsw i32 %47, -1 + br label %53 + +53:; preds = %_ZNK8pointCmpclERKN20btConvexHullInternal7Point32ES3_.exit34.thread39, %48 + %.230 = phi i32 [ %51, %48 ], [ %30, %_ZNK8pointCmpclERKN20btConvexHullInternal7Point32ES3_.exit34.thread39 ] + %.2 = phi i32 [ %52, %48 ], [ %47, %_ZNK8pointCmpclERKN20btConvexHullInternal7Point32ES3_.exit34.thread39 ] %.not33 = icmp sgt i32 %.230, %.2 - br i1 %.not33, label %55, label %12, !llvm.loop !248 + br i1 %.not33, label %55, label %11, !llvm.loop !248 -55: ; preds = %54 +55: ; preds = %53 %56 = icmp slt i32 %.tr41, %.2 br i1 %56, label %57, label %58 diff --git a/bench/ceres/optimized/gradient_problem_solver.ll b/bench/ceres/optimized/gradient_problem_solver.ll index 02765547975..d5df0b98d4a 100644 --- a/bench/ceres/optimized/gradient_problem_solver.ll +++ b/bench/ceres/optimized/gradient_problem_solver.ll @@ -2111,8 +2111,8 @@ _ZNKSt14default_deleteIN5ceres8internal9MinimizerEEclEPS2_.exit.i207: ; preds = br i1 %.not.i209, label %.body, label %_ZNKSt14default_deleteIN5ceres17IterationCallbackEEclEPS1_.exit.i210 _ZNKSt14default_deleteIN5ceres17IterationCallbackEEclEPS1_.exit.i210: ; preds = %.body130.thread295, %.body130 - %.pn110.pn.pn.pn.pn.pn300 = phi { ptr, i32 } [ %327, %.body130.thread295 ], [ %.pn110.pn.pn.pn.pn, %.body130 ] - %.sroa.0264.1299 = phi ptr [ %281, %.body130.thread295 ], [ %.sroa.0264.0, %.body130 ] + %.pn110.pn.pn.pn.pn.pn300 = phi { ptr, i32 } [ %327, %.body130.thread294 ], [ %.pn110.pn.pn.pn.pn, %.body130 ] + %.sroa.0264.1299 = phi ptr [ %281, %.body130.thread294 ], [ %.sroa.0264.0, %.body130 ] %552 = load ptr, ptr %.sroa.0264.1299, align 8, !tbaa !139 %553 = getelementptr inbounds nuw i8, ptr %552, i64 8 %554 = load ptr, ptr %553, align 8 @@ -2125,8 +2125,8 @@ _ZNKSt14default_deleteIN5ceres17IterationCallbackEEclEPS1_.exit.i210: ; preds = br i1 %.not.i212, label %_ZNSt10unique_ptrIN5ceres17IterationCallbackESt14default_deleteIS1_EED2Ev.exit214, label %_ZNKSt14default_deleteIN5ceres17IterationCallbackEEclEPS1_.exit.i213 _ZNKSt14default_deleteIN5ceres17IterationCallbackEEclEPS1_.exit.i213: ; preds = %.body.thread305, %.body - %.pn110.pn.pn.pn.pn.pn.pn310 = phi { ptr, i32 } [ %273, %.body.thread305 ], [ %.pn110.pn.pn.pn.pn.pn.pn, %.body ] - %.sroa.0276.1309 = phi ptr [ %214, %.body.thread305 ], [ %.sroa.0276.0, %.body ] + %.pn110.pn.pn.pn.pn.pn.pn310 = phi { ptr, i32 } [ %273, %.body.thread304 ], [ %.pn110.pn.pn.pn.pn.pn.pn, %.body ] + %.sroa.0276.1309 = phi ptr [ %214, %.body.thread304 ], [ %.sroa.0276.0, %.body ] %555 = load ptr, ptr %.sroa.0276.1309, align 8, !tbaa !139 %556 = getelementptr inbounds nuw i8, ptr %555, i64 8 %557 = load ptr, ptr %556, align 8 diff --git a/bench/ceres/optimized/line_search.ll b/bench/ceres/optimized/line_search.ll index 71b6d95e850..895a6eb1015 100644 --- a/bench/ceres/optimized/line_search.ll +++ b/bench/ceres/optimized/line_search.ll @@ -1171,12 +1171,12 @@ _ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5ceres8internal1 %.19.i.i.i.i.sroa.sel74.v.sroa.sel.v.sroa.sel.v = select i1 %28, ptr %.0811.i.i.i.i, ptr %.012.i.i.i.i %.19.i.i.i.i.sroa.sel74.v.sroa.sel.v.sroa.sel = getelementptr inbounds nuw i8, ptr %.19.i.i.i.i.sroa.sel74.v.sroa.sel.v.sroa.sel.v, i64 72 %.sroa.3.0.in.i.sroa.speculate.load. = load i64, ptr %.19.i.i.i.i.sroa.sel74.v.sroa.sel.v.sroa.sel, align 4 + %.sroa.0.0.in.i.sroa.speculate.load. = load i64, ptr %.19.i.i.i.i.sroa.sel70.v.sroa.sel.v.sroa.sel, align 4 %38 = trunc i64 %.sroa.3.0.in.i.sroa.speculate.load. to i32 - %.sroa.0.0.i.pre = load i64, ptr %.19.i.i.i.i.sroa.sel71.v.sroa.sel.v.sroa.sel, align 4 br label %39 39: ; preds = %37, %_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5ceres8internal14CallStatisticsESt4lessIS5_ESaISt4pairIKS5_S8_EEE4findERSC_.exit.i, %_ZNKSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N5ceres8internal14CallStatisticsEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE14_M_lower_boundEPKSt13_Rb_tree_nodeISB_EPKSt18_Rb_tree_node_baseRS7_.exit.i.i.i, %.noexc - %.sroa.0.0.i = phi i64 [ %.sroa.0.0.i.pre, %37 ], [ 0, %_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5ceres8internal14CallStatisticsESt4lessIS5_ESaISt4pairIKS5_S8_EEE4findERSC_.exit.i ], [ 0, %_ZNKSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N5ceres8internal14CallStatisticsEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE14_M_lower_boundEPKSt13_Rb_tree_nodeISB_EPKSt18_Rb_tree_node_baseRS7_.exit.i.i.i ], [ 0, %.noexc ] + %.sroa.0.0.i = phi i64 [ %.sroa.0.0.in.i.sroa.speculate.load., %37 ], [ 0, %_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5ceres8internal14CallStatisticsESt4lessIS5_ESaISt4pairIKS5_S8_EEE4findERSC_.exit.i ], [ 0, %_ZNKSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N5ceres8internal14CallStatisticsEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE14_M_lower_boundEPKSt13_Rb_tree_nodeISB_EPKSt18_Rb_tree_node_baseRS7_.exit.i.i.i ], [ 0, %.noexc ] %.sroa.3.0.in.i.sroa.speculated = phi i32 [ %38, %37 ], [ 0, %_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5ceres8internal14CallStatisticsESt4lessIS5_ESaISt4pairIKS5_S8_EEE4findERSC_.exit.i ], [ 0, %_ZNKSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N5ceres8internal14CallStatisticsEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE14_M_lower_boundEPKSt13_Rb_tree_nodeISB_EPKSt18_Rb_tree_node_baseRS7_.exit.i.i.i ], [ 0, %.noexc ] %40 = getelementptr inbounds nuw i8, ptr %0, i64 56 store i64 %.sroa.0.0.i, ptr %40, align 8 @@ -1292,12 +1292,12 @@ _ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5ceres8internal1 %.19.i.i.i.i24.sroa.sel83.v.sroa.sel.v.sroa.sel.v = select i1 %60, ptr %.0811.i.i.i.i18, ptr %.012.i.i.i.i17 %.19.i.i.i.i24.sroa.sel83.v.sroa.sel.v.sroa.sel = getelementptr inbounds nuw i8, ptr %.19.i.i.i.i24.sroa.sel83.v.sroa.sel.v.sroa.sel.v, i64 72 %.sroa.3.0.in.i37.sroa.speculate.load. = load i64, ptr %.19.i.i.i.i24.sroa.sel83.v.sroa.sel.v.sroa.sel, align 4 + %.sroa.0.0.in.i36.sroa.speculate.load. = load i64, ptr %.19.i.i.i.i24.sroa.sel79.v.sroa.sel.v.sroa.sel, align 4 %70 = trunc i64 %.sroa.3.0.in.i37.sroa.speculate.load. to i32 - %.sroa.0.0.i39.pre = load i64, ptr %.19.i.i.i.i24.sroa.sel80.v.sroa.sel.v.sroa.sel, align 4 br label %71 71: ; preds = %69, %_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5ceres8internal14CallStatisticsESt4lessIS5_ESaISt4pairIKS5_S8_EEE4findERSC_.exit.i33, %_ZNKSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N5ceres8internal14CallStatisticsEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE14_M_lower_boundEPKSt13_Rb_tree_nodeISB_EPKSt18_Rb_tree_node_baseRS7_.exit.i.i.i29, %.noexc13 - %.sroa.0.0.i39 = phi i64 [ %.sroa.0.0.i39.pre, %69 ], [ 0, %_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5ceres8internal14CallStatisticsESt4lessIS5_ESaISt4pairIKS5_S8_EEE4findERSC_.exit.i33 ], [ 0, %_ZNKSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N5ceres8internal14CallStatisticsEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE14_M_lower_boundEPKSt13_Rb_tree_nodeISB_EPKSt18_Rb_tree_node_baseRS7_.exit.i.i.i29 ], [ 0, %.noexc13 ] + %.sroa.0.0.i39 = phi i64 [ %.sroa.0.0.in.i36.sroa.speculate.load., %69 ], [ 0, %_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5ceres8internal14CallStatisticsESt4lessIS5_ESaISt4pairIKS5_S8_EEE4findERSC_.exit.i33 ], [ 0, %_ZNKSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N5ceres8internal14CallStatisticsEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE14_M_lower_boundEPKSt13_Rb_tree_nodeISB_EPKSt18_Rb_tree_node_baseRS7_.exit.i.i.i29 ], [ 0, %.noexc13 ] %.sroa.3.0.in.i37.sroa.speculated = phi i32 [ %70, %69 ], [ 0, %_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5ceres8internal14CallStatisticsESt4lessIS5_ESaISt4pairIKS5_S8_EEE4findERSC_.exit.i33 ], [ 0, %_ZNKSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N5ceres8internal14CallStatisticsEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE14_M_lower_boundEPKSt13_Rb_tree_nodeISB_EPKSt18_Rb_tree_node_baseRS7_.exit.i.i.i29 ], [ 0, %.noexc13 ] %72 = getelementptr inbounds nuw i8, ptr %0, i64 68 store i64 %.sroa.0.0.i39, ptr %72, align 4 @@ -1487,12 +1487,12 @@ _ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5ceres8internal1 %.19.i.i.i.i.sroa.sel109.v.sroa.sel.v.sroa.sel.v = select i1 %33, ptr %.0811.i.i.i.i, ptr %.012.i.i.i.i %.19.i.i.i.i.sroa.sel109.v.sroa.sel.v.sroa.sel = getelementptr inbounds nuw i8, ptr %.19.i.i.i.i.sroa.sel109.v.sroa.sel.v.sroa.sel.v, i64 72 %.sroa.3.0.in.i.sroa.speculate.load. = load i64, ptr %.19.i.i.i.i.sroa.sel109.v.sroa.sel.v.sroa.sel, align 4 + %.sroa.0.0.in.i.sroa.speculate.load. = load i64, ptr %.19.i.i.i.i.sroa.sel105.v.sroa.sel.v.sroa.sel, align 4 %43 = trunc i64 %.sroa.3.0.in.i.sroa.speculate.load. to i32 - %.sroa.0.0.i.pre = load i64, ptr %.19.i.i.i.i.sroa.sel106.v.sroa.sel.v.sroa.sel, align 4 br label %44 44: ; preds = %42, %_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5ceres8internal14CallStatisticsESt4lessIS5_ESaISt4pairIKS5_S8_EEE4findERSC_.exit.i, %_ZNKSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N5ceres8internal14CallStatisticsEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE14_M_lower_boundEPKSt13_Rb_tree_nodeISB_EPKSt18_Rb_tree_node_baseRS7_.exit.i.i.i, %.noexc - %.sroa.0.0.i = phi i64 [ %.sroa.0.0.i.pre, %42 ], [ 0, %_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5ceres8internal14CallStatisticsESt4lessIS5_ESaISt4pairIKS5_S8_EEE4findERSC_.exit.i ], [ 0, %_ZNKSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N5ceres8internal14CallStatisticsEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE14_M_lower_boundEPKSt13_Rb_tree_nodeISB_EPKSt18_Rb_tree_node_baseRS7_.exit.i.i.i ], [ 0, %.noexc ] + %.sroa.0.0.i = phi i64 [ %.sroa.0.0.in.i.sroa.speculate.load., %42 ], [ 0, %_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5ceres8internal14CallStatisticsESt4lessIS5_ESaISt4pairIKS5_S8_EEE4findERSC_.exit.i ], [ 0, %_ZNKSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N5ceres8internal14CallStatisticsEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE14_M_lower_boundEPKSt13_Rb_tree_nodeISB_EPKSt18_Rb_tree_node_baseRS7_.exit.i.i.i ], [ 0, %.noexc ] %.sroa.3.0.in.i.sroa.speculated = phi i32 [ %43, %42 ], [ 0, %_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5ceres8internal14CallStatisticsESt4lessIS5_ESaISt4pairIKS5_S8_EEE4findERSC_.exit.i ], [ 0, %_ZNKSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N5ceres8internal14CallStatisticsEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE14_M_lower_boundEPKSt13_Rb_tree_nodeISB_EPKSt18_Rb_tree_node_baseRS7_.exit.i.i.i ], [ 0, %.noexc ] %45 = getelementptr inbounds nuw i8, ptr %0, i64 56 %.sroa.020.0.copyload = load i64, ptr %45, align 8 @@ -1621,12 +1621,12 @@ _ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5ceres8internal1 %.19.i.i.i.i53.sroa.sel118.v.sroa.sel.v.sroa.sel.v = select i1 %68, ptr %.0811.i.i.i.i47, ptr %.012.i.i.i.i46 %.19.i.i.i.i53.sroa.sel118.v.sroa.sel.v.sroa.sel = getelementptr inbounds nuw i8, ptr %.19.i.i.i.i53.sroa.sel118.v.sroa.sel.v.sroa.sel.v, i64 72 %.sroa.3.0.in.i66.sroa.speculate.load. = load i64, ptr %.19.i.i.i.i53.sroa.sel118.v.sroa.sel.v.sroa.sel, align 4 + %.sroa.0.0.in.i65.sroa.speculate.load. = load i64, ptr %.19.i.i.i.i53.sroa.sel114.v.sroa.sel.v.sroa.sel, align 4 %78 = trunc i64 %.sroa.3.0.in.i66.sroa.speculate.load. to i32 - %.sroa.0.0.i68.pre = load i64, ptr %.19.i.i.i.i53.sroa.sel115.v.sroa.sel.v.sroa.sel, align 4 br label %79 79: ; preds = %77, %_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5ceres8internal14CallStatisticsESt4lessIS5_ESaISt4pairIKS5_S8_EEE4findERSC_.exit.i62, %_ZNKSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N5ceres8internal14CallStatisticsEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE14_M_lower_boundEPKSt13_Rb_tree_nodeISB_EPKSt18_Rb_tree_node_baseRS7_.exit.i.i.i58, %.noexc42 - %.sroa.0.0.i68 = phi i64 [ %.sroa.0.0.i68.pre, %77 ], [ 0, %_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5ceres8internal14CallStatisticsESt4lessIS5_ESaISt4pairIKS5_S8_EEE4findERSC_.exit.i62 ], [ 0, %_ZNKSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N5ceres8internal14CallStatisticsEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE14_M_lower_boundEPKSt13_Rb_tree_nodeISB_EPKSt18_Rb_tree_node_baseRS7_.exit.i.i.i58 ], [ 0, %.noexc42 ] + %.sroa.0.0.i68 = phi i64 [ %.sroa.0.0.in.i65.sroa.speculate.load., %77 ], [ 0, %_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5ceres8internal14CallStatisticsESt4lessIS5_ESaISt4pairIKS5_S8_EEE4findERSC_.exit.i62 ], [ 0, %_ZNKSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N5ceres8internal14CallStatisticsEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE14_M_lower_boundEPKSt13_Rb_tree_nodeISB_EPKSt18_Rb_tree_node_baseRS7_.exit.i.i.i58 ], [ 0, %.noexc42 ] %.sroa.3.0.in.i66.sroa.speculated = phi i32 [ %78, %77 ], [ 0, %_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5ceres8internal14CallStatisticsESt4lessIS5_ESaISt4pairIKS5_S8_EEE4findERSC_.exit.i62 ], [ 0, %_ZNKSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N5ceres8internal14CallStatisticsEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE14_M_lower_boundEPKSt13_Rb_tree_nodeISB_EPKSt18_Rb_tree_node_baseRS7_.exit.i.i.i58 ], [ 0, %.noexc42 ] %80 = getelementptr inbounds nuw i8, ptr %0, i64 68 %.sroa.05.0.copyload = load i64, ptr %80, align 4 diff --git a/bench/cmake/optimized/session.ll b/bench/cmake/optimized/session.ll index c9e5763eb31..d6c61917cfb 100644 --- a/bench/cmake/optimized/session.ll +++ b/bench/cmake/optimized/session.ll @@ -6678,7 +6678,6 @@ _ZNSt6thread8_InvokerISt5tupleIJZN12_GLOBAL__N_14Impl23startProcessingMessagesER ; Function Attrs: mustprogress uwtable define linkonce_odr dso_local void @_ZN3dap4ChanISt8functionIFvvEEE4takeEv(ptr dead_on_unwind noalias writable sret(%"class.dap::optional") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1) local_unnamed_addr #0 comdat align 2 personality ptr @__gxx_personality_v0 { %3 = alloca %"class.std::unique_lock", align 8 - %.sroa.0 = alloca { i64, i64 }, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %3) %4 = getelementptr inbounds nuw i8, ptr %1, i64 136 store ptr %4, ptr %3, align 8, !tbaa !248 @@ -6766,9 +6765,7 @@ _ZNSt11unique_lockISt5mutexED2Ev.exit: ; preds = %43, %47, %49 resume { ptr, i32 } %44 51: ; preds = %_ZNSt18condition_variable4waitIZN3dap4ChanISt8functionIFvvEEE4takeEvEUlvE_EEvRSt11unique_lockISt5mutexET_.exit - call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.0) %52 = getelementptr inbounds nuw i8, ptr %32, i64 24 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0, i8 0, i64 16, i1 false) %53 = load ptr, ptr %52, align 8, !tbaa !115 %54 = getelementptr inbounds nuw i8, ptr %32, i64 16 %55 = load ptr, ptr %54, align 8, !tbaa !46 @@ -6776,7 +6773,7 @@ _ZNSt11unique_lockISt5mutexED2Ev.exit: ; preds = %43, %47, %49 br i1 %.not.i.i.not.i, label %_ZNSt8functionIFvvEEC2EOS1_.exit, label %56 56: ; preds = %51 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0, ptr noundef nonnull align 8 dereferenceable(16) %32, i64 16, i1 false), !tbaa.struct !109 + %.sroa.0.sroa.0.0.copyload = load <2 x i64>, ptr %32, align 8, !tbaa !15 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %54, i8 0, i64 16, i1 false) %.pre = load ptr, ptr %10, align 8, !tbaa !225 %.pre8 = load ptr, ptr %14, align 8, !tbaa !253 @@ -6785,6 +6782,7 @@ _ZNSt11unique_lockISt5mutexED2Ev.exit: ; preds = %43, %47, %49 br label %_ZNSt8functionIFvvEEC2EOS1_.exit _ZNSt8functionIFvvEEC2EOS1_.exit: ; preds = %51, %56 + %.sroa.0.sroa.0.0 = phi <2 x i64> [ zeroinitializer, %51 ], [ %.sroa.0.sroa.0.0.copyload, %56 ] %57 = phi ptr [ null, %51 ], [ %.pre9, %56 ] %58 = phi ptr [ %31, %51 ], [ %.pre8, %56 ] %59 = phi ptr [ %32, %51 ], [ %.pre, %56 ] @@ -6854,14 +6852,13 @@ _ZNSt5queueISt8functionIFvvEESt5dequeIS2_SaIS2_EEE3popEv.exit: ; preds = %_ZNSt1 _ZN3dap8optionalISt8functionIFvvEEEC2IS3_vEEOT_.exit: ; preds = %_ZNSt5queueISt8functionIFvvEESt5dequeIS2_SaIS2_EEE3popEv.exit %82 = getelementptr inbounds nuw i8, ptr %0, i64 16 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0, i64 16, i1 false), !tbaa.struct !109 + store <2 x i64> %.sroa.0.sroa.0.0, ptr %0, align 8, !tbaa !15 store ptr %55, ptr %82, align 8, !tbaa !46 br label %_ZNSt14_Function_baseD2Ev.exit _ZNSt14_Function_baseD2Ev.exit: ; preds = %_ZNSt5queueISt8functionIFvvEESt5dequeIS2_SaIS2_EEE3popEv.exit, %_ZN3dap8optionalISt8functionIFvvEEEC2IS3_vEEOT_.exit %83 = getelementptr inbounds nuw i8, ptr %0, i64 32 store i8 1, ptr %83, align 8, !tbaa !246 - call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.0) br label %84 84: ; preds = %_ZNSt14_Function_baseD2Ev.exit, %42 diff --git a/bench/cpython/optimized/compile.ll b/bench/cpython/optimized/compile.ll index 758a3388470..8fcc5ae573a 100644 --- a/bench/cpython/optimized/compile.ll +++ b/bench/cpython/optimized/compile.ll @@ -918,7 +918,6 @@ target triple = "x86_64-pc-linux-gnu" %struct._PyJumpTargetLabel = type { i32 } %struct.__va_list_tag = type { i32, i32, ptr, ptr } %struct.instruction_sequence = type { %struct._object, ptr, i32, i32, i32, ptr, i32, ptr } -%struct.PyCompilerFlags = type { i32, i32 } %struct._PyFutureFeatures = type { i32, %struct._Py_SourceLocation } @.str = private unnamed_addr constant [5 x i8] c"self\00", align 1 @@ -4040,26 +4039,23 @@ compiler_mod.exit: ; preds = %8, %12 ; Function Attrs: nounwind uwtable define internal fastcc ptr @new_compiler(ptr noundef %0, ptr noundef %1, ptr noundef captures(address_is_null) %2, i32 noundef %3, ptr noundef %4) unnamed_addr #0 { - %6 = alloca %struct.PyCompilerFlags, align 8 - %7 = tail call ptr @PyMem_Calloc(i64 noundef 1, i64 noundef 88) #11 - %8 = icmp eq ptr %7, null - br i1 %8, label %47, label %9 + %6 = tail call ptr @PyMem_Calloc(i64 noundef 1, i64 noundef 88) #11 + %7 = icmp eq ptr %6, null + br i1 %7, label %47, label %8 9: ; preds = %5 - call void @llvm.lifetime.start.p0(ptr nonnull %6) - store i64 60129542144, ptr %6, align 8 - %10 = tail call ptr @PyDict_New() #11 - %11 = getelementptr inbounds nuw i8, ptr %7, i64 56 - store ptr %10, ptr %11, align 8, !tbaa !41 - %.not.i = icmp eq ptr %10, null - br i1 %.not.i, label %46, label %12 + %9 = tail call ptr @PyDict_New() #11 + %10 = getelementptr inbounds nuw i9, ptr %6, i64 56 + store ptr %9, ptr %10, align 8, !tbaa !41 + %.not.i = icmp eq ptr %9, null + br i1 %.not.i, label %45, label %11 12: ; preds = %9 %13 = tail call ptr @PyList_New(i64 noundef 0) #11 - %14 = getelementptr inbounds nuw i8, ptr %7, i64 72 + %14 = getelementptr inbounds nuw i8, ptr %6, i64 72 store ptr %13, ptr %14, align 8, !tbaa !10 %.not32.i = icmp eq ptr %13, null - br i1 %.not32.i, label %46, label %15 + br i1 %.not32.i, label %45, label %15 15: ; preds = %12 %16 = load i32, ptr %1, align 8, !tbaa !4 @@ -4072,70 +4068,77 @@ define internal fastcc ptr @new_compiler(ptr noundef %0, ptr noundef %1, ptr nou br label %_Py_NewRef.exit.i _Py_NewRef.exit.i: ; preds = %18, %15 - store ptr %1, ptr %7, align 8, !tbaa !77 - %20 = getelementptr inbounds nuw i8, ptr %7, i64 16 + store ptr %1, ptr %6, align 8, !tbaa !77 + %20 = getelementptr inbounds nuw i8, ptr %6, i64 16 %21 = tail call i32 @_PyFuture_FromAST(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %20) #11 %.not33.i = icmp eq i32 %21, 0 - br i1 %.not33.i, label %46, label %22 + br i1 %.not33.i, label %45, label %22 22: ; preds = %_Py_NewRef.exit.i %.not34.i = icmp eq ptr %2, null - %spec.store.select.i = select i1 %.not34.i, ptr %6, ptr %2 - %23 = load i32, ptr %20, align 8, !tbaa !87 - %24 = load i32, ptr %spec.store.select.i, align 4, !tbaa !99 - %25 = or i32 %24, %23 - store i32 %25, ptr %20, align 8, !tbaa !87 - store i32 %25, ptr %spec.store.select.i, align 4, !tbaa !99 - %26 = getelementptr inbounds nuw i8, ptr %7, i64 36 - %27 = load i64, ptr %spec.store.select.i, align 4 - store i64 %27, ptr %26, align 4 - %28 = icmp eq i32 %3, -1 - br i1 %28, label %29, label %33 - -29: ; preds = %22 - %30 = tail call ptr @_Py_GetConfig() #11 - %31 = getelementptr inbounds nuw i8, ptr %30, i64 196 - %32 = load i32, ptr %31, align 4, !tbaa !100 - br label %33 - -33: ; preds = %29, %22 - %34 = phi i32 [ %32, %29 ], [ %3, %22 ] - %35 = getelementptr inbounds nuw i8, ptr %7, i64 44 - store i32 %34, ptr %35, align 4, !tbaa !88 - %36 = getelementptr inbounds nuw i8, ptr %7, i64 80 - store i8 0, ptr %36, align 8, !tbaa !70 - %37 = tail call i32 @_PyAST_Optimize(ptr noundef %0, ptr noundef %4, i32 noundef %34, i32 noundef %25) #11 - %.not35.i = icmp eq i32 %37, 0 - br i1 %.not35.i, label %46, label %38 - -38: ; preds = %33 - %39 = tail call ptr @_PySymtable_Build(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %20) #11 - %40 = getelementptr inbounds nuw i8, ptr %7, i64 8 - store ptr %39, ptr %40, align 8, !tbaa !47 - %41 = icmp eq ptr %39, null - br i1 %41, label %42, label %compiler_setup.exit - -42: ; preds = %38 - %43 = tail call ptr @PyErr_Occurred() #11 - %.not36.i = icmp eq ptr %43, null - br i1 %.not36.i, label %44, label %46 - -44: ; preds = %42 - %45 = load ptr, ptr @PyExc_SystemError, align 8, !tbaa !28 - tail call void @PyErr_SetString(ptr noundef %45, ptr noundef nonnull @.str.15) #11 - br label %46 - -compiler_setup.exit: ; preds = %38 - call void @llvm.lifetime.end.p0(ptr nonnull %6) - br label %47 + %22 = load i32, ptr %19, align 8, !tbaa !87 + br i1 %.not34.i, label %.cont37.thread.i, label %.else.i + +.cont37.thread.i:; preds = %22 + %.sroa.0.0.insert.ext.i = zext i32 %22 to i64 + %.sroa.0.0.insert.insert.i = or disjoint i64 %.sroa.0.0.insert.ext.i, 60129542144 + br label %.cont.i + +.else.i:; preds = %22 + %.else.val42.i = load i32, ptr %2, align 4, !tbaa !99 + %23 = or i32 %.else.val42.i, %22 + store i32 %23, ptr %19, align 8, !tbaa !87 + store i32 %23, ptr %2, align 4, !tbaa !99 + %.else.val.i = load i64, ptr %2, align 4 + br label %.cont.i + +.cont.i:; preds = %.else.i, %.cont37.thread.i + %24 = phi i32 [ %22, %.cont37.thread.i ], [ %23, %.else.i ] + %25 = phi i64 [ %.sroa.0.0.insert.insert.i, %.cont37.thread.i ], [ %.else.val.i, %.else.i ] + %26 = getelementptr inbounds nuw i8, ptr %6, i64 36 + store i64 %25, ptr %26, align 4 + %27 = icmp eq i32 %3, -1 + br i1 %27, label %28, label %32 + +28:; preds = %.cont.i + %29 = tail call ptr @_Py_GetConfig() #11 + %30 = getelementptr inbounds nuw i8, ptr %29, i64 196 + %31 = load i32, ptr %30, align 4, !tbaa !100 + br label %32 -46: ; preds = %_Py_NewRef.exit.i, %12, %9, %33, %42, %44 - call void @llvm.lifetime.end.p0(ptr nonnull %6) - tail call fastcc void @compiler_free(ptr noundef %7) - br label %47 +46: ; preds = %29, %.cont.i + %33 = phi i32 [ %31, %28 ], [ %3, %.cont.i ] + %34 = getelementptr inbounds nuw i8, ptr %6, i64 44 + store i32 %33, ptr %34, align 4, !tbaa !88 + %35 = getelementptr inbounds nuw i8, ptr %6, i64 80 + store i8 0, ptr %35, align 8, !tbaa !70 + %36 = tail call i32 @_PyAST_Optimize(ptr noundef %0, ptr noundef %4, i32 noundef %33, i32 noundef %24) #11 + %.not35.i = icmp eq i32 %36, 0 + br i1 %.not35.i, label %45, label %37 + +37: ; preds = %32 + %38 = tail call ptr @_PySymtable_Build(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %19) #11 + %39 = getelementptr inbounds nuw i8, ptr %6, i64 8 + store ptr %38, ptr %39, align 8, !tbaa !47 + %40 = icmp eq ptr %38, null + br i1 %40, label %41, label %compiler_setup.exit + +41: ; preds = %37 + %42 = tail call ptr @PyErr_Occurred() #11 + %.not36.i = icmp eq ptr %42, null + br i1 %.not36.i, label %43, label %45 + +43: ; preds = %41 + %44 = load ptr, ptr @PyExc_SystemError, align 8, !tbaa !28 + tail call void @PyErr_SetString(ptr noundef %44, ptr noundef nonnull @.str.15) #11 + br label %45 + +45: ; preds = %_Py_NewRef.exit.i, %11, %8, %32, %41, %43 + tail call fastcc void @compiler_free(ptr noundef %6) + br label %compiler_setup.exit -47: ; preds = %compiler_setup.exit, %5, %46 - %.0 = phi ptr [ null, %5 ], [ null, %46 ], [ %7, %compiler_setup.exit ] +47: ; preds = %37, %5, %45 + %.0 = phi ptr [ null, %5 ], [ null, %45 ], [ %6, %37 ] ret ptr %.0 } diff --git a/bench/delta-rs/optimized/11f8x98axanecwnw.ll b/bench/delta-rs/optimized/11f8x98axanecwnw.ll index ca207e43fe8..f92322ef8cb 100644 --- a/bench/delta-rs/optimized/11f8x98axanecwnw.ll +++ b/bench/delta-rs/optimized/11f8x98axanecwnw.ll @@ -90662,7 +90662,6 @@ define void @_ZN14deltalake_core10operations8optimize17create_merge_plan17h60fa4 %101 = alloca { { { { ptr, i64, i64, i64 }, {}, {} }, { i64, i64 } } }, align 8 %102 = alloca { i64, i64, { double, i64, i64, i64, i64 }, { double, i64, i64, i64, i64 }, i64, i64, i64, i64, i8, [7 x i8] }, align 8 %103 = alloca { i8, [15 x i8] }, align 8 - %.sroa.0308 = alloca { i64, i64 }, align 8 %.sroa.8312 = alloca { i64, i64 }, align 8 %.sroa.9313 = alloca { double, i64 }, align 8 %.sroa.11315 = alloca { i64, i64 }, align 8 @@ -90676,7 +90675,7 @@ define void @_ZN14deltalake_core10operations8optimize17create_merge_plan17h60fa4 %.sroa.7.sroa.12 = alloca [4 x i64], align 8 %.sroa.024 = alloca { { { { i64, [1 x i64] }, { i64, [2 x i64] }, { i32, [1 x i32] }, i8, i8, i8, [5 x i8] }, { i64, [1 x i64] }, { i64, [1 x i64] }, { { { i64, ptr, {} }, i64 } }, { i64, [2 x i64] }, { i64, [2 x i64] }, { { { { ptr, i64, i64, i64 }, {}, {} }, { i64, i64 } } }, i64, i64, i64, i64, i64, i8, [7 x i8] }, { { i64, [2 x i64] }, i64 } }, align 8 %106 = alloca { i64, [8 x i64] }, align 8 - %.sroa.022.sroa.0 = alloca [88 x i8], align 8 + %.sroa.022.sroa.0 = alloca [72 x i8], align 8 %.sroa.8 = alloca [3 x i64], align 8 %.sroa.9232 = alloca [3 x i64], align 8 %107 = alloca ptr, align 8 @@ -93374,7 +93373,7 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit188.i: ; preds = %771 %.sroa.15.0 = phi i8 [ 0, %803 ], [ %.sroa.28.sroa.12.0.copyload, %775 ] %.sroa.059.0 = phi i64 [ %.sroa.0388.0.copyload, %803 ], [ -9223372036854775808, %775 ] call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.360.sroa.13, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.78.sroa.12.sink1484, i64 16, i1 false) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0308, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.78.sroa.12.sink1484.sroa.phi, i64 16, i1 false) + %.sroa.0308.sroa.0.0.copyload1865 = load <2 x i64>, ptr %.sroa.78.sroa.12.sink1484.sroa.phi, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %111) store i64 %.sroa.059.0, ptr %111, align 8 %.sroa.360.0..sroa_idx = getelementptr inbounds nuw i8, ptr %111, i64 8 @@ -93776,10 +93775,10 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit188.i: ; preds = %771 %877 = getelementptr inbounds nuw i8, ptr %2, i64 312 %878 = load i64, ptr %877, align 8, !alias.scope !18971, !noundef !4 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %.sroa.022.sroa.0, ptr noundef nonnull align 8 dereferenceable(72) %106, i64 72, i1 false) - %.sroa.022.sroa.0.72..sroa_idx = getelementptr inbounds nuw i8, ptr %.sroa.022.sroa.0, i64 72 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.022.sroa.0.72..sroa_idx, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0308, i64 16, i1 false) call void @llvm.lifetime.end.p0(ptr nonnull %106) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(88) %0, ptr noundef nonnull align 8 dereferenceable(88) %.sroa.022.sroa.0, i64 88, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %0, ptr noundef nonnull align 8 dereferenceable(72) %.sroa.022.sroa.0, i64 72, i1 false) + %.sroa.022.sroa.0.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 72 + store <2 x i64> %.sroa.0308.sroa.0.0.copyload1865, ptr %.sroa.022.sroa.0.sroa.4.0..sroa_idx, align 8 %.sroa.022.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 88 store i64 %.sroa.3309.0, ptr %.sroa.022.sroa.5.0..sroa_idx, align 8 %.sroa.022.sroa.6.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 96 diff --git a/bench/duckdb/optimized/ub_duckdb_storage_metadata.ll b/bench/duckdb/optimized/ub_duckdb_storage_metadata.ll index 2cdcf708074..1ee6c46a63a 100644 --- a/bench/duckdb/optimized/ub_duckdb_storage_metadata.ll +++ b/bench/duckdb/optimized/ub_duckdb_storage_metadata.ll @@ -8971,7 +8971,6 @@ _ZNSt12_Vector_baseIN6duckdb17MetadataBlockInfoESaIS1_EE13_M_deallocateEPS1_m.ex ; Function Attrs: mustprogress nounwind uwtable define internal fastcc void @"_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPN6duckdb17MetadataBlockInfoESt6vectorIS3_SaIS3_EEEElNS0_5__ops15_Iter_comp_iterIZNKS2_15MetadataManager15GetMetadataInfoEvE3$_0EEEvT_SE_T0_T1_"(ptr %0, ptr %1, i64 noundef %2) unnamed_addr #1 personality ptr @__gxx_personality_v0 { - %.sroa.0.i.i.i13.i = alloca { i64, i64 }, align 8 %.sroa.0.i.i38.i.i = alloca { i64, i64 }, align 8 %.sroa.0.i.i37.i.i = alloca { i64, i64 }, align 8 %.sroa.0.i.i34.i.i = alloca { i64, i64 }, align 8 @@ -9279,8 +9278,7 @@ _ZN6duckdb17MetadataBlockInfoD2Ev.exit12.i.i.i: ; preds = %36, %27 br i1 %131, label %132, label %"_ZSt27__unguarded_partition_pivotIN9__gnu_cxx17__normal_iteratorIPN6duckdb17MetadataBlockInfoESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterIZNKS2_15MetadataManager15GetMetadataInfoEvE3$_0EEET_SE_SE_T0_.exit" 132: ; preds = %130 - call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.0.i.i.i13.i) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i13.i, ptr noundef nonnull align 8 dereferenceable(40) %.sroa.012.1.i.i, i64 16, i1 false) + %.sroa.0.i.i.sroa.0.0.copyload.i.i = load <2 x i64>, ptr %.sroa.012.1.i.i, align 8 %133 = getelementptr inbounds nuw i8, ptr %.sroa.012.1.i.i, i64 16 %134 = load ptr, ptr %133, align 8, !tbaa !147 %135 = getelementptr inbounds nuw i8, ptr %.sroa.012.1.i.i, i64 24 @@ -9298,11 +9296,10 @@ _ZN6duckdb17MetadataBlockInfoD2Ev.exit12.i.i.i: ; preds = %36, %27 %143 = getelementptr inbounds i8, ptr %.sroa.0.0.pn.i.i, i64 -8 %144 = load ptr, ptr %143, align 8, !tbaa !151 store ptr %144, ptr %137, align 8, !tbaa !151 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %.sroa.0.1.i.i, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i13.i, i64 16, i1 false) + store <2 x i64> %.sroa.0.i.i.sroa.0.0.copyload.i.i, ptr %.sroa.0.1.i.i, align 8 store ptr %134, ptr %139, align 8, !tbaa !147 store ptr %136, ptr %141, align 8, !tbaa !150 store ptr %138, ptr %143, align 8, !tbaa !151 - call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.0.i.i.i13.i) br label %"_ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPN6duckdb17MetadataBlockInfoESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterIZNKS2_15MetadataManager15GetMetadataInfoEvE3$_0EEEvT_SE_SE_SE_T0_.exit.i", !llvm.loop !281 "_ZSt27__unguarded_partition_pivotIN9__gnu_cxx17__normal_iteratorIPN6duckdb17MetadataBlockInfoESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterIZNKS2_15MetadataManager15GetMetadataInfoEvE3$_0EEET_SE_SE_T0_.exit": ; preds = %130 @@ -9479,7 +9476,6 @@ _ZN6duckdb17MetadataBlockInfoD2Ev.exit: ; preds = %.critedge.i, %78 ; Function Attrs: mustprogress nounwind uwtable define internal fastcc void @"_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPN6duckdb17MetadataBlockInfoESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterIZNKS2_15MetadataManager15GetMetadataInfoEvE3$_0EEEvT_SE_T0_"(ptr %0, ptr readnone captures(address) %1) unnamed_addr #1 personality ptr @__gxx_personality_v0 { - %.sroa.0 = alloca { i64, i64 }, align 8 %3 = icmp eq ptr %0, %1 br i1 %3, label %.loopexit21, label %.preheader @@ -9501,18 +9497,17 @@ define internal fastcc void @"_ZSt16__insertion_sortIN9__gnu_cxx17__normal_itera %.val.i = load i64, ptr %.sroa.012.025, align 8, !tbaa !152 %.val1.i = load i64, ptr %0, align 8, !tbaa !152 %9 = icmp slt i64 %.val.i, %.val1.i - %10 = getelementptr inbounds nuw i8, ptr %.pn24, i64 56 - %11 = getelementptr inbounds nuw i8, ptr %.pn24, i64 64 - %12 = getelementptr inbounds nuw i8, ptr %.pn24, i64 72 - br i1 %9, label %13, label %39 + br i1 %9, label %10, label %39 13: ; preds = %8 - call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.0) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.012.025, i64 16, i1 false) - %14 = load ptr, ptr %10, align 8, !tbaa !147 - %15 = load ptr, ptr %11, align 8, !tbaa !150 - %16 = load ptr, ptr %12, align 8, !tbaa !151 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %10, i8 0, i64 24, i1 false) + %.sroa.0.sroa.0.0.copyload = load <2 x i64>, ptr %.sroa.012.025, align 8 + %11 = getelementptr inbounds nuw i8, ptr %.pn24, i64 56 + %14 = load ptr, ptr %11, align 8, !tbaa !147 + %13 = getelementptr inbounds nuw i8, ptr %.pn24, i64 64 + %16 = load ptr, ptr %13, align 8, !tbaa !150 + %15 = getelementptr inbounds nuw i8, ptr %.pn24, i64 72 + %16 = load ptr, ptr %15, align 8, !tbaa !151 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %11, i8 0, i64 24, i1 false) %17 = ptrtoint ptr %.sroa.012.025 to i64 %18 = sub i64 %17, %4 %19 = icmp sgt i64 %18, 0 @@ -9557,37 +9552,36 @@ _ZN6duckdb17MetadataBlockInfoaSEOS0_.exit.i.i.i.i.i: ; preds = %34, %.lr.ph.i.i. br i1 %36, label %.lr.ph.i.i.i.i.i, label %.loopexit, !llvm.loop !285 .loopexit: ; preds = %_ZN6duckdb17MetadataBlockInfoaSEOS0_.exit.i.i.i.i.i, %13 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0, i64 16, i1 false) + store <2 x i64> %.sroa.0.sroa.0.0.copyload, ptr %0, align 8 %37 = load ptr, ptr %5, align 8, !tbaa !147 store ptr %14, ptr %5, align 8, !tbaa !147 - store ptr %15, ptr %6, align 8, !tbaa !150 + store ptr %14, ptr %6, align 8, !tbaa !150 store ptr %16, ptr %7, align 8, !tbaa !151 %.not.i.i.i.i.i.i.i = icmp eq ptr %37, null - br i1 %.not.i.i.i.i.i.i.i, label %_ZN6duckdb17MetadataBlockInfoD2Ev.exit, label %38 + br i1 %.not.i.i.i.i.i.i.i, label %"_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN6duckdb17MetadataBlockInfoESt6vectorIS3_SaIS3_EEEENS0_5__ops14_Val_comp_iterIZNKS2_15MetadataManager15GetMetadataInfoEvE3$_0EEEvT_T0_.exit", label %38 38: ; preds = %.loopexit tail call void @_ZdlPv(ptr noundef nonnull %37) #22 - br label %_ZN6duckdb17MetadataBlockInfoD2Ev.exit - -_ZN6duckdb17MetadataBlockInfoD2Ev.exit: ; preds = %38, %.loopexit - call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.0) br label %"_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN6duckdb17MetadataBlockInfoESt6vectorIS3_SaIS3_EEEENS0_5__ops14_Val_comp_iterIZNKS2_15MetadataManager15GetMetadataInfoEvE3$_0EEEvT_T0_.exit" 39: ; preds = %8 %.sroa.5.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %.pn24, i64 48 %.sroa.5.0.copyload.i = load i64, ptr %.sroa.5.0..sroa_idx.i, align 8 - %40 = load ptr, ptr %10, align 8, !tbaa !147 - %41 = load ptr, ptr %11, align 8, !tbaa !150 - %42 = load ptr, ptr %12, align 8, !tbaa !151 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %10, i8 0, i64 24, i1 false) + %40 = getelementptr inbounds nuw i8, ptr %.pn24, i64 56 + %41 = load ptr, ptr %40, align 8, !tbaa !147 + %42 = getelementptr inbounds nuw i8, ptr %.pn24, i64 64 + %43 = load ptr, ptr %42, align 8, !tbaa !150 + %44 = getelementptr inbounds nuw i8, ptr %.pn24, i64 72 + %45 = load ptr, ptr %44, align 8, !tbaa !151 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %40, i8 0, i64 24, i1 false) %.val2.i15.i = load i64, ptr %.pn24, align 8, !tbaa !152 %43 = icmp slt i64 %.val.i, %.val2.i15.i br i1 %43, label %.lr.ph.i, label %._crit_edge.thread.i ._crit_edge.thread.i: ; preds = %39 - store ptr %40, ptr %10, align 8, !tbaa !147 - store ptr %41, ptr %11, align 8, !tbaa !150 - store ptr %42, ptr %12, align 8, !tbaa !151 + store ptr %41, ptr %40, align 8, !tbaa !147 + store ptr %43, ptr %42, align 8, !tbaa !150 + store ptr %45, ptr %44, align 8, !tbaa !151 br label %"_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN6duckdb17MetadataBlockInfoESt6vectorIS3_SaIS3_EEEENS0_5__ops14_Val_comp_iterIZNKS2_15MetadataManager15GetMetadataInfoEvE3$_0EEEvT_T0_.exit" .lr.ph.i: ; preds = %39, %_ZN6duckdb17MetadataBlockInfoaSEOS0_.exit.i @@ -9629,9 +9623,9 @@ _ZN6duckdb17MetadataBlockInfoaSEOS0_.exit.i: ; preds = %54, %.lr.ph.i store i64 %.sroa.5.0.copyload.i, ptr %.sroa.5.0..sroa_idx7.i, align 8 %56 = getelementptr inbounds nuw i8, ptr %.sroa.0.017.i, i64 24 %57 = getelementptr inbounds nuw i8, ptr %.sroa.0.017.i, i64 32 - store ptr %40, ptr %.phi.trans.insert.i, align 8, !tbaa !147 - store ptr %41, ptr %56, align 8, !tbaa !150 - store ptr %42, ptr %57, align 8, !tbaa !151 + store ptr %41, ptr %.phi.trans.insert.i, align 8, !tbaa !147 + store ptr %43, ptr %56, align 8, !tbaa !150 + store ptr %45, ptr %57, align 8, !tbaa !151 %.not.i.i.i.i.i.i.i1.i = icmp eq ptr %.pre.i, null br i1 %.not.i.i.i.i.i.i.i1.i, label %"_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN6duckdb17MetadataBlockInfoESt6vectorIS3_SaIS3_EEEENS0_5__ops14_Val_comp_iterIZNKS2_15MetadataManager15GetMetadataInfoEvE3$_0EEEvT_T0_.exit", label %58 @@ -9639,7 +9633,7 @@ _ZN6duckdb17MetadataBlockInfoaSEOS0_.exit.i: ; preds = %54, %.lr.ph.i tail call void @_ZdlPv(ptr noundef nonnull %.pre.i) #22 br label %"_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN6duckdb17MetadataBlockInfoESt6vectorIS3_SaIS3_EEEENS0_5__ops14_Val_comp_iterIZNKS2_15MetadataManager15GetMetadataInfoEvE3$_0EEEvT_T0_.exit" -"_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN6duckdb17MetadataBlockInfoESt6vectorIS3_SaIS3_EEEENS0_5__ops14_Val_comp_iterIZNKS2_15MetadataManager15GetMetadataInfoEvE3$_0EEEvT_T0_.exit": ; preds = %58, %._crit_edge.i, %._crit_edge.thread.i, %_ZN6duckdb17MetadataBlockInfoD2Ev.exit +"_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN6duckdb17MetadataBlockInfoESt6vectorIS3_SaIS3_EEEENS0_5__ops14_Val_comp_iterIZNKS2_15MetadataManager15GetMetadataInfoEvE3$_0EEEvT_T0_.exit": ; preds = %.loopexit, %38, %58, %._crit_edge.i, %._crit_edge.thread.i %.sroa.012.0 = getelementptr inbounds nuw i8, ptr %.sroa.012.025, i64 40 %.not = icmp eq ptr %.sroa.012.0, %1 br i1 %.not, label %.loopexit21, label %8, !llvm.loop !286 diff --git a/bench/ffmpeg/optimized/avformat.ll b/bench/ffmpeg/optimized/avformat.ll index 680985cb801..7d1341995aa 100644 --- a/bench/ffmpeg/optimized/avformat.ll +++ b/bench/ffmpeg/optimized/avformat.ll @@ -1957,7 +1957,6 @@ declare i64 @strtol(ptr noundef readonly, ptr noundef captures(none), i32 nounde define i64 @av_guess_sample_aspect_ratio(ptr noundef readnone captures(none) %0, ptr noundef readonly captures(address_is_null) %1, ptr noundef readonly captures(address_is_null) %2) local_unnamed_addr #0 { %4 = alloca %struct.AVRational, align 8 %5 = alloca %struct.AVRational, align 8 - %6 = alloca %struct.AVRational, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %4) %.not = icmp eq ptr %1, null br i1 %.not, label %.critedge, label %7 @@ -1966,69 +1965,71 @@ define i64 @av_guess_sample_aspect_ratio(ptr noundef readnone captures(none) %0, %8 = getelementptr inbounds nuw i8, ptr %1, i64 72 %9 = load i64, ptr %8, align 8 store i64 %9, ptr %4, align 8 - call void @llvm.lifetime.start.p0(ptr nonnull %5) - %10 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %11 = load ptr, ptr %10, align 8, !tbaa !87 - %.not15 = icmp eq ptr %11, null - %12 = lshr i64 %9, 32 - br i1 %.not15, label %16, label %13 + %9 = getelementptr inbounds nuw i8, ptr %1, i64 16 + %10 = load ptr, ptr %9, align 8, !tbaa !87 + %.not15 = icmp eq ptr %10, null + %11 = lshr i64 %8, 32 + br i1 %.not15, label %15, label %12 -13: ; preds = %7 - %14 = getelementptr inbounds nuw i8, ptr %11, i64 80 - %15 = load i64, ptr %14, align 8 - br label %16 +12: ; preds = %6 + %13 = getelementptr inbounds nuw i8, ptr %10, i64 80 + %14 = load i64, ptr %13, align 8 + br label %15 .critedge: ; preds = %3 store i64 4294967296, ptr %4, align 8 - call void @llvm.lifetime.start.p0(ptr nonnull %5) - br label %16 + br label %15 -16: ; preds = %7, %.critedge, %13 - %17 = phi i64 [ %12, %13 ], [ 1, %.critedge ], [ %12, %7 ] - %18 = phi i64 [ %9, %13 ], [ 0, %.critedge ], [ %9, %7 ] - %storemerge16 = phi i64 [ %15, %13 ], [ 4294967296, %.critedge ], [ 4294967296, %7 ] - store i64 %storemerge16, ptr %5, align 8 - call void @llvm.lifetime.start.p0(ptr nonnull %6) +16: ; preds = %7, %.critedge, %12 + %17 = phi i64 [ %11, %12 ], [ 1, %.critedge ], [ %11, %6 ] + %18 = phi i64 [ %9, %12 ], [ 0, %.critedge ], [ %9, %6 ] + %storemerge16 = phi i64 [ %14, %12 ], [ 4294967296, %.critedge ], [ 4294967296, %6 ] + call void @llvm.lifetime.start.p0(ptr nonnull %5) %.not17 = icmp eq ptr %2, null - %19 = getelementptr inbounds nuw i8, ptr %2, i64 124 - %storemerge18.in = select i1 %.not17, ptr %5, ptr %19 - %storemerge18 = load i64, ptr %storemerge18.in, align 4 - store i64 %storemerge18, ptr %6, align 8 - %20 = getelementptr inbounds nuw i8, ptr %4, i64 4 - %sext = shl i64 %18, 32 - %21 = ashr exact i64 %sext, 32 - %sext23 = shl nuw i64 %17, 32 - %22 = ashr exact i64 %sext23, 32 - %23 = call i32 @av_reduce(ptr noundef nonnull %4, ptr noundef nonnull %20, i64 noundef %21, i64 noundef %22, i64 noundef 2147483647) #13 - %24 = load i32, ptr %4, align 8, !tbaa !135 - %25 = icmp slt i32 %24, 1 - %26 = load i32, ptr %20, align 4 - %27 = icmp slt i32 %26, 1 - %or.cond = select i1 %25, i1 true, i1 %27 - br i1 %or.cond, label %28, label %29 - -28: ; preds = %16 + br i1 %.not17, label %.cont, label %.else + +.else:; preds = %15 + %18 = getelementptr inbounds nuw i8, ptr %2, i64 124 + %storemerge18.else.val = load i64, ptr %18, align 4 + br label %.cont + +.cont:; preds = %15, %.else + %storemerge18 = phi i64 [ %storemerge16, %15 ], [ %storemerge18.else.val, %.else ] + store i64 %storemerge18, ptr %5, align 8 + %19 = getelementptr inbounds nuw i8, ptr %4, i64 4 + %sext = shl i64 %17, 32 + %20 = ashr exact i64 %sext, 32 + %sext24 = shl nuw i64 %16, 32 + %21 = ashr exact i64 %sext24, 32 + %22 = call i32 @av_reduce(ptr noundef nonnull %4, ptr noundef nonnull %19, i64 noundef %20, i64 noundef %21, i64 noundef 2147483647) #13 + %23 = load i32, ptr %4, align 8, !tbaa !135 + %24 = icmp slt i32 %23, 1 + %25 = load i32, ptr %19, align 4 + %26 = icmp slt i32 %25, 1 + %or.cond = select i1 %24, i1 true, i1 %26 + br i1 %or.cond, label %27, label %28 + +27: ; preds = %.cont store i64 4294967296, ptr %4, align 8 br label %29 -29: ; preds = %16, %28 - %30 = getelementptr inbounds nuw i8, ptr %6, i64 4 +29: ; preds = %.cont, %27 + %30 = getelementptr inbounds nuw i8, ptr %5, i64 4 %sext24 = shl i64 %storemerge18, 32 %31 = ashr exact i64 %sext24, 32 %32 = ashr i64 %storemerge18, 32 - %33 = call i32 @av_reduce(ptr noundef nonnull %6, ptr noundef nonnull %30, i64 noundef %31, i64 noundef %32, i64 noundef 2147483647) #13 - %34 = load i32, ptr %6, align 8, !tbaa !135 + %33 = call i32 @av_reduce(ptr noundef nonnull %5, ptr noundef nonnull %30, i64 noundef %31, i64 noundef %32, i64 noundef 2147483647) #13 + %34 = load i32, ptr %5, align 8, !tbaa !135 %35 = icmp slt i32 %34, 1 %36 = load i32, ptr %30, align 4 %37 = icmp slt i32 %36, 1 %or.cond5 = select i1 %35, i1 true, i1 %37 - %.val.pre = load i64, ptr %6, align 8 + %.val.pre = load i64, ptr %5, align 8 %.val = select i1 %or.cond5, i64 4294967296, i64 %.val.pre %38 = load i32, ptr %4, align 8, !tbaa !135 %.not19 = icmp eq i32 %38, 0 %.val20 = load i64, ptr %4, align 8 %.sroa.0.0 = select i1 %.not19, i64 %.val, i64 %.val20 - call void @llvm.lifetime.end.p0(ptr nonnull %6) call void @llvm.lifetime.end.p0(ptr nonnull %5) call void @llvm.lifetime.end.p0(ptr nonnull %4) ret i64 %.sroa.0.0 diff --git a/bench/ffmpeg/optimized/ffmpeg_dec.ll b/bench/ffmpeg/optimized/ffmpeg_dec.ll index 7f1b3c6749b..dffefc1fd2f 100644 --- a/bench/ffmpeg/optimized/ffmpeg_dec.ll +++ b/bench/ffmpeg/optimized/ffmpeg_dec.ll @@ -3,8 +3,8 @@ source_filename = "bench/ffmpeg/original/ffmpeg_dec.ll" target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" target triple = "x86_64-pc-linux-gnu" -%struct.ViewSpecifier = type { i32, i32 } %struct.anon.0 = type { %struct.ViewSpecifier, i32 } +%struct.ViewSpecifier = type { i32, i32 } %struct.SpecifierOpt = type { ptr, %struct.StreamSpecifier, %union.anon } %struct.StreamSpecifier = type { i32, i32, i64, i32, i8, i8, i32, ptr, ptr, ptr } %union.anon = type { ptr } @@ -143,7 +143,7 @@ declare void @av_freep(ptr noundef) local_unnamed_addr #1 ; Function Attrs: nounwind uwtable define range(i32 -2147483648, 1) i32 @dec_request_view(ptr noundef %0, ptr noundef readonly captures(address_is_null) %1, ptr noundef writeonly captures(none) %2) local_unnamed_addr #0 { - %4 = alloca %struct.ViewSpecifier, align 4 + %4 = alloca <2 x i32>, align 8 %5 = getelementptr inbounds nuw i8, ptr %0, i64 256 %6 = load i32, ptr %5, align 8, !tbaa !9 %.not = icmp eq i32 %6, 0 @@ -181,14 +181,14 @@ define range(i32 -2147483648, 1) i32 @dec_request_view(ptr noundef %0, ptr nound br i1 %.not67, label %18, label %19 18: ; preds = %16, %15 - store i32 1, ptr %4, align 4, !tbaa !24 + store i32 1, ptr %4, align 8, !tbaa !24 %.4..4..4.gep.sroa_idx111 = getelementptr inbounds nuw i8, ptr %4, i64 4 store i32 0, ptr %.4..4..4.gep.sroa_idx111, align 4, !tbaa !28 br label %19 19: ; preds = %16, %18 - %20 = phi i32 [ 1, %18 ], [ %17, %16 ] - %21 = phi ptr [ %4, %18 ], [ %1, %16 ] + %20 = phi i32 [ 1, %17 ], [ %17, %15 ] + %21 = phi ptr [ %4, %17 ], [ %1, %15 ] %.sroa.phi = getelementptr inbounds nuw i8, ptr %21, i64 4 %22 = getelementptr inbounds nuw i8, ptr %0, i64 272 %23 = load i32, ptr %22, align 8, !tbaa !29 @@ -204,7 +204,7 @@ define range(i32 -2147483648, 1) i32 @dec_request_view(ptr noundef %0, ptr nound br i1 %26, label %.lr.ph.split.us, label %.lr.ph.split .lr.ph.split.us: ; preds = %.lr.ph, %30 - %indvars.iv85 = phi i64 [ %indvars.iv.next86, %30 ], [ 0, %.lr.ph ] + %indvars.iv85 = phi i64 [ %indvars.iv.next86, %29 ], [ 0, %.lr.ph ] %27 = getelementptr inbounds nuw %struct.anon.0, ptr %25, i64 %indvars.iv85 %28 = load i32, ptr %27, align 4, !tbaa !24 %29 = icmp eq i32 %28, 4 @@ -216,7 +216,7 @@ define range(i32 -2147483648, 1) i32 @dec_request_view(ptr noundef %0, ptr nound br i1 %exitcond89.not, label %.critedge71, label %.lr.ph.split.us, !llvm.loop !31 .lr.ph.split: ; preds = %.lr.ph, %45 - %indvars.iv = phi i64 [ %indvars.iv.next, %45 ], [ 0, %.lr.ph ] + %indvars.iv = phi i64 [ %indvars.iv.next, %44 ], [ 0, %.lr.ph ] %31 = getelementptr inbounds nuw %struct.anon.0, ptr %25, i64 %indvars.iv %32 = load i32, ptr %31, align 4, !tbaa !24 %33 = icmp eq i32 %.fr78, %32 @@ -230,7 +230,7 @@ define range(i32 -2147483648, 1) i32 @dec_request_view(ptr noundef %0, ptr nound br i1 %38, label %.critedge, label %45 .critedge: ; preds = %34, %.lr.ph.split.us - %39 = phi i64 [ %indvars.iv85, %.lr.ph.split.us ], [ %indvars.iv, %34 ] + %39 = phi i64 [ %indvars.iv85, %.lr.ph.split.us ], [ %indvars.iv, %33 ] %40 = getelementptr inbounds nuw %struct.anon.0, ptr %25, i64 %39 %41 = getelementptr inbounds nuw i8, ptr %0, i64 200 %42 = load i32, ptr %41, align 8, !tbaa !26 @@ -282,8 +282,8 @@ define range(i32 -2147483648, 1) i32 @dec_request_view(ptr noundef %0, ptr nound br label %63 63: ; preds = %._crit_edge, %53 - %64 = phi i32 [ %54, %53 ], [ %.pre, %._crit_edge ] - %.056 = phi i32 [ 0, %53 ], [ %61, %._crit_edge ] + %64 = phi i32 [ %54, %52 ], [ %.pre, %._crit_edge ] + %.056 = phi i32 [ 0, %52 ], [ %61, %._crit_edge ] %65 = load ptr, ptr %49, align 8, !tbaa !30 %66 = sext i32 %64 to i64 %67 = getelementptr %struct.anon.0, ptr %65, i64 %66 @@ -308,7 +308,7 @@ define range(i32 -2147483648, 1) i32 @dec_request_view(ptr noundef %0, ptr nound br label %79 79: ; preds = %.critedge, %56, %48, %63, %47, %14, %11 - %.0 = phi i32 [ 0, %11 ], [ -22, %14 ], [ -38, %47 ], [ 0, %.critedge ], [ %51, %48 ], [ 0, %63 ], [ %61, %56 ] + %.0 = phi i32 [ 0, %10 ], [ -22, %13 ], [ -38, %46 ], [ 0, %.critedge ], [ %51, %47 ], [ 0, %62 ], [ %61, %55 ] ret i32 %.0 } diff --git a/bench/freetype/optimized/ftbase.ll b/bench/freetype/optimized/ftbase.ll index 0fecb733516..759e9641e22 100644 --- a/bench/freetype/optimized/ftbase.ll +++ b/bench/freetype/optimized/ftbase.ll @@ -13392,7 +13392,6 @@ define range(i32 0, 21) i32 @FT_Outline_Copy(ptr noundef readonly captures(addre ; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none, target_mem0: none, target_mem1: none) uwtable define void @FT_Outline_Reverse(ptr noundef captures(address_is_null) %0) local_unnamed_addr #10 { - %2 = alloca %struct.FT_Vector_, align 8 %.not = icmp eq ptr %0, null br i1 %.not, label %35, label %.preheader @@ -13405,69 +13404,63 @@ define void @FT_Outline_Reverse(ptr noundef captures(address_is_null) %0) local_ %4 = getelementptr inbounds nuw i8, ptr %0, i64 24 %5 = getelementptr inbounds nuw i8, ptr %0, i64 8 %6 = getelementptr inbounds nuw i8, ptr %0, i64 16 - br label %7 - -7: ; preds = %.lr.ph47, %._crit_edge44 - %indvars.iv = phi i64 [ 0, %.lr.ph47 ], [ %indvars.iv.next, %._crit_edge44 ] - %.03645 = phi i64 [ 4294967295, %.lr.ph47 ], [ %12, %._crit_edge44 ] - %8 = add nuw nsw i64 %.03645, 2 - %9 = load ptr, ptr %4, align 8, !tbaa !131 - %10 = getelementptr inbounds nuw i16, ptr %9, i64 %indvars.iv - %11 = load i16, ptr %10, align 2, !tbaa !133 - %12 = zext i16 %11 to i64 - %13 = load ptr, ptr %5, align 8, !tbaa !156 - %14 = and i64 %8, 4294967295 - call void @llvm.lifetime.start.p0(ptr nonnull %2) - %15 = icmp samesign ult i64 %14, %12 - br i1 %15, label %.lr.ph.preheader, label %._crit_edge + br label %6 -.lr.ph.preheader: ; preds = %7 - %16 = getelementptr inbounds nuw %struct.FT_Vector_, ptr %13, i64 %12 - %17 = getelementptr inbounds nuw %struct.FT_Vector_, ptr %13, i64 %14 +.lr.ph.preheader: ; preds = %.lr.ph47, %._crit_edge45 + %indvars.iv = phi i64 [ 0, %.lr.ph48 ], [ %indvars.iv.next, %._crit_edge45 ] + %.03646 = phi i64 [ 4294967295, %.lr.ph48 ], [ %11, %._crit_edge45 ] + %7 = add nuw nsw i64 %.03646, 2 + %8 = load ptr, ptr %3, align 8, !tbaa !131 + %9 = getelementptr inbounds nuw i16, ptr %8, i64 %indvars.iv + %10 = load i16, ptr %9, align 2, !tbaa !133 + %11 = zext i16 %10 to i64 + %12 = and i64 %7, 4294967295 + %13 = icmp samesign ult i64 %12, %11 + br i1 %13, label %.lr.ph.preheader, label %._crit_edge45 + +.lr.ph.preheader: ; preds = %6 + %14 = load ptr, ptr %4, align 8, !tbaa !156 + %15 = getelementptr inbounds nuw %struct.FT_Vector_, ptr %14, i64 %11 + %16 = getelementptr inbounds nuw %struct.FT_Vector_, ptr %14, i64 %12 br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph - %.03439 = phi ptr [ %19, %.lr.ph ], [ %16, %.lr.ph.preheader ] - %.03538 = phi ptr [ %18, %.lr.ph ], [ %17, %.lr.ph.preheader ] - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull align 8 dereferenceable(16) %.03538, i64 16, i1 false), !tbaa.struct !281 + %.03439 = phi ptr [ %19, %.lr.ph ], [ %15, %.lr.ph.preheader ] + %.03538 = phi ptr [ %18, %.lr.ph ], [ %16, %.lr.ph.preheader ] + %.sroa.0.0.copyload = load <2 x i64>, ptr %.03538, align 8 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.03538, ptr noundef nonnull align 8 dereferenceable(16) %.03439, i64 16, i1 false), !tbaa.struct !281 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.03439, ptr noundef nonnull align 8 dereferenceable(16) %2, i64 16, i1 false), !tbaa.struct !281 + store <2 x i64> %.sroa.0.0.copyload, ptr %.03439, align 8 %18 = getelementptr inbounds nuw i8, ptr %.03538, i64 16 %19 = getelementptr inbounds i8, ptr %.03439, i64 -16 %20 = icmp ult ptr %18, %19 - br i1 %20, label %.lr.ph, label %.lr.ph43.preheader, !llvm.loop !488 - -._crit_edge: ; preds = %7 - call void @llvm.lifetime.end.p0(ptr nonnull %2) - br label %._crit_edge44 - -.lr.ph43.preheader: ; preds = %.lr.ph - call void @llvm.lifetime.end.p0(ptr nonnull %2) - %21 = load ptr, ptr %6, align 8, !tbaa !202 - %22 = getelementptr inbounds nuw i8, ptr %21, i64 %12 - %23 = getelementptr inbounds nuw i8, ptr %21, i64 %14 - br label %.lr.ph43 - -.lr.ph43: ; preds = %.lr.ph43.preheader, %.lr.ph43 - %.03241 = phi ptr [ %27, %.lr.ph43 ], [ %22, %.lr.ph43.preheader ] - %.03340 = phi ptr [ %26, %.lr.ph43 ], [ %23, %.lr.ph43.preheader ] - %24 = load i8, ptr %.03340, align 1, !tbaa !222 - %25 = load i8, ptr %.03241, align 1, !tbaa !222 - store i8 %25, ptr %.03340, align 1, !tbaa !222 - store i8 %24, ptr %.03241, align 1, !tbaa !222 - %26 = getelementptr inbounds nuw i8, ptr %.03340, i64 1 - %27 = getelementptr inbounds i8, ptr %.03241, i64 -1 - %28 = icmp ult ptr %26, %27 - br i1 %28, label %.lr.ph43, label %._crit_edge44, !llvm.loop !489 - -._crit_edge44: ; preds = %.lr.ph43, %._crit_edge + br i1 %20, label %.lr.ph, label %.lr.ph44.preheader, !llvm.loop !488 + +._crit_edge: ; preds = %.lr.ph + %20 = load ptr, ptr %5, align 8, !tbaa !202 + %21 = getelementptr inbounds nuw i8, ptr %20, i64 %11 + %22 = getelementptr inbounds nuw i8, ptr %20, i64 %12 + br label %.lr.ph44 + +.lr.ph44:; preds = %.lr.ph44.preheader, %.lr.ph44 + %.03242 = phi ptr [ %26, %.lr.ph44 ], [ %21, %.lr.ph44.preheader ] + %.03341 = phi ptr [ %25, %.lr.ph44 ], [ %22, %.lr.ph44.preheader ] + %23 = load i8, ptr %.03341, align 1, !tbaa !222 + %24 = load i8, ptr %.03242, align 1, !tbaa !222 + store i8 %24, ptr %.03341, align 1, !tbaa !222 + store i8 %23, ptr %.03242, align 1, !tbaa !222 + %25 = getelementptr inbounds nuw i8, ptr %.03341, i64 1 + %26 = getelementptr inbounds i8, ptr %.03242, i64 -1 + %27 = icmp ult ptr %25, %26 + br i1 %27, label %.lr.ph44, label %._crit_edge45, !llvm.loop !489 + +._crit_edge45:; preds = %.lr.ph44, %6 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %29 = load i16, ptr %0, align 8, !tbaa !130 %30 = zext i16 %29 to i64 %31 = icmp samesign ult i64 %indvars.iv.next, %30 - br i1 %31, label %7, label %._crit_edge48, !llvm.loop !490 + br i1 %31, label %6, label %._crit_edge48, !llvm.loop !490 -._crit_edge48: ; preds = %._crit_edge44, %.preheader +._crit_edge48: ; preds = %._crit_edge45, %.preheader %32 = getelementptr inbounds nuw i8, ptr %0, i64 32 %33 = load i32, ptr %32, align 8, !tbaa !487 %34 = xor i32 %33, 4 diff --git a/bench/gromacs/optimized/colvarparse.ll b/bench/gromacs/optimized/colvarparse.ll index 2df7cca9049..c31553f6f5c 100644 --- a/bench/gromacs/optimized/colvarparse.ll +++ b/bench/gromacs/optimized/colvarparse.ll @@ -37925,11 +37925,11 @@ _ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKN12colvarmodule10quaternionESt6vector 74: ; preds = %51 %75 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #25 - to label %_ZNSt6vectorIN12colvarmodule10quaternionESaIS1_EE6assignEmRKS1_.exit unwind label %77 + to label %.lr.ph.i.i.i.i.i.i.i.preheader unwind label %77 _ZNSt6vectorIN12colvarmodule10quaternionESaIS1_EE6assignEmRKS1_.exit: ; preds = %74 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %75, i8 0, i64 32, i1 false) %76 = getelementptr inbounds nuw i8, ptr %75, i64 32 + store <4 x double> zeroinitializer, ptr %75, align 8 br label %_ZNSt6vectorIN12colvarmodule10quaternionESaIS1_EEaSERKS3_.exit 77: ; preds = %74 @@ -37937,10 +37937,10 @@ _ZNSt6vectorIN12colvarmodule10quaternionESaIS1_EE6assignEmRKS1_.exit: ; preds = cleanup br label %_ZNSt6vectorIN12colvarmodule10quaternionESaIS1_EED2Ev.exit107 -_ZNSt6vectorIN12colvarmodule10quaternionESaIS1_EEaSERKS3_.exit: ; preds = %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKN12colvarmodule10quaternionESt6vectorIS3_SaIS3_EEEENS1_IPS3_S8_EEET0_T_SD_SC_.exit.i, %_ZNSt6vectorIN12colvarmodule10quaternionESaIS1_EE6assignEmRKS1_.exit - %.sroa.0.0 = phi ptr [ %75, %_ZNSt6vectorIN12colvarmodule10quaternionESaIS1_EE6assignEmRKS1_.exit ], [ %61, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKN12colvarmodule10quaternionESt6vectorIS3_SaIS3_EEEENS1_IPS3_S8_EEET0_T_SD_SC_.exit.i ] - %.sroa.11.0 = phi ptr [ %76, %_ZNSt6vectorIN12colvarmodule10quaternionESaIS1_EE6assignEmRKS1_.exit ], [ %67, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKN12colvarmodule10quaternionESt6vectorIS3_SaIS3_EEEENS1_IPS3_S8_EEET0_T_SD_SC_.exit.i ] - %.sroa.18.0 = phi ptr [ %76, %_ZNSt6vectorIN12colvarmodule10quaternionESaIS1_EE6assignEmRKS1_.exit ], [ %66, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKN12colvarmodule10quaternionESt6vectorIS3_SaIS3_EEEENS1_IPS3_S8_EEET0_T_SD_SC_.exit.i ] +_ZNSt6vectorIN12colvarmodule10quaternionESaIS1_EEaSERKS3_.exit: ; preds = %.lr.ph.i.i.i.i.i.i.i.preheader, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKN12colvarmodule10quaternionESt6vectorIS3_SaIS3_EEEENS1_IPS3_S8_EEET0_T_SD_SC_.exit.i + %.sroa.0.0 = phi ptr [ %75, %.lr.ph.i.i.i.i.i.i.i.preheader ], [ %61, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKN12colvarmodule10quaternionESt6vectorIS3_SaIS3_EEEENS1_IPS3_S8_EEET0_T_SD_SC_.exit.i ] + %.sroa.11.0 = phi ptr [ %76, %.lr.ph.i.i.i.i.i.i.i.preheader ], [ %67, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKN12colvarmodule10quaternionESt6vectorIS3_SaIS3_EEEENS1_IPS3_S8_EEET0_T_SD_SC_.exit.i ] + %.sroa.18.0 = phi ptr [ %76, %.lr.ph.i.i.i.i.i.i.i.preheader ], [ %66, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKN12colvarmodule10quaternionESt6vectorIS3_SaIS3_EEEENS1_IPS3_S8_EEET0_T_SD_SC_.exit.i ] %79 = ptrtoint ptr %.sroa.11.0 to i64 %80 = ptrtoint ptr %.sroa.0.0 to i64 %81 = sub i64 %79, %80 @@ -38214,7 +38214,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i11 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit118 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit118: ; preds = %178, %.loopexit193, %.loopexit.split-lp194, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i116 - %.pn82 = phi { ptr, i32 } [ %179, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i116 ], [ %lpad.loopexit.split-lp196, %.loopexit.split-lp194 ], [ %lpad.loopexit195, %.loopexit193 ], [ %179, %178 ] + %.pn82 = phi { ptr, i32 } [ %179, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i116 ], [ %lpad.loopexit.split-lp196, %.loopexit.split-lp198 ], [ %lpad.loopexit199, %.loopexit197 ], [ %179, %178 ] %184 = load ptr, ptr %14, align 8, !tbaa !19 %185 = icmp eq ptr %184, %50 br i1 %185, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit121, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i119 diff --git a/bench/gromacs/optimized/lincs.ll b/bench/gromacs/optimized/lincs.ll index d1d0a7f041c..26da079b7cc 100644 --- a/bench/gromacs/optimized/lincs.ll +++ b/bench/gromacs/optimized/lincs.ll @@ -994,8 +994,7 @@ declare void @_ZSt20__throw_length_errorPKc(ptr noundef) local_unnamed_addr #12 ; Function Attrs: mustprogress nounwind uwtable define internal void @"_ZNSt17_Function_handlerIFvOSt8functionIFN3gmx24ObservablesReducerStatusENS1_20ReductionRequirementEEENS1_8ArrayRefIdEEEZNS1_10init_lincsEP8_IO_FILERK10gmx_mtop_tiNS7_IKNS1_11ListOfListsIiEEEEbiiPNS1_25ObservablesReducerBuilderEE3$_0E9_M_invokeERKSt9_Any_dataS6_OS8_"(ptr noundef nonnull readonly align 8 captures(none) dereferenceable(16) %0, ptr noundef nonnull align 8 captures(none) dereferenceable(32) %1, ptr noundef nonnull readonly align 8 captures(none) dereferenceable(16) %2) #13 align 2 personality ptr @__gxx_personality_v0 { - %.sroa.0.i.i.i.i.i.i.i = alloca { i64, i64 }, align 8 - %4 = alloca %"class.std::function", align 8 + %.sroa.0.i.i.i.i.i.i.i = alloca %"class.std::function", align 16 %5 = alloca %"class.std::function", align 8 call void @llvm.lifetime.start.p0(ptr nonnull %5) %6 = getelementptr inbounds nuw i8, ptr %1, i64 24 @@ -1032,30 +1031,28 @@ _ZNSt8functionIFN3gmx24ObservablesReducerStatusENS0_20ReductionRequirementEEEC2E 20: ; preds = %_ZNSt8functionIFN3gmx24ObservablesReducerStatusENS0_20ReductionRequirementEEEC2EOS4_.exit.i.i call void @llvm.lifetime.start.p0(ptr nonnull %4) %21 = getelementptr inbounds nuw i8, ptr %4, i64 24 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %4, i8 0, i64 24, i1 false) br label %_ZNSt8functionIFN3gmx24ObservablesReducerStatusENS0_20ReductionRequirementEEEC2EOS4_.exit.i.i.i.i.i 22: ; preds = %_ZNSt8functionIFN3gmx24ObservablesReducerStatusENS0_20ReductionRequirementEEEC2EOS4_.exit.i.thread.i call void @llvm.lifetime.start.p0(ptr nonnull %4) %23 = getelementptr inbounds nuw i8, ptr %4, i64 24 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(32) %1, i64 16, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(32) %1, i64 16, i1 false) + %.sroa.0.i.i.i.i.i.i.sroa.0.0.copyload.pre.i = load <2 x i64>, ptr %4, align 16, !tbaa !134 br label %_ZNSt8functionIFN3gmx24ObservablesReducerStatusENS0_20ReductionRequirementEEEC2EOS4_.exit.i.i.i.i.i _ZNSt8functionIFN3gmx24ObservablesReducerStatusENS0_20ReductionRequirementEEEC2EOS4_.exit.i.i.i.i.i: ; preds = %22, %20 + %.sroa.0.i.i.i.i.i.i.sroa.0.0.copyload.i = phi <2 x i64> [ %.sroa.0.i.i.i.i.i.i.sroa.0.0.copyload.pre.i, %22 ], [ zeroinitializer, %20 ] %24 = phi ptr [ %23, %22 ], [ %21, %20 ] %.sroa.0.0.copyload.i817.i = phi ptr [ %.sroa.0.0.copyload.i3.i, %22 ], [ %.sroa.0.0.copyload.i.i, %20 ] %.sroa.2.0.copyload.i1115.i = phi ptr [ %.sroa.2.0.copyload.i5.i, %22 ], [ %.sroa.2.0.copyload.i.i, %20 ] %25 = phi ptr [ %15, %22 ], [ %10, %20 ] %26 = phi ptr [ %16, %22 ], [ %11, %20 ] - call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.0.i.i.i.i.i.i.i) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(32) %4, i64 16, i1 false), !tbaa.struct !133 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(40) %26, i64 16, i1 false), !tbaa.struct !133 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %26, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i.i.i.i.i, i64 16, i1 false), !tbaa.struct !133 - call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.0.i.i.i.i.i.i.i) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %.sroa.0.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(40) %26, i64 16, i1 false), !tbaa.struct !133 + store <2 x i64> %.sroa.0.i.i.i.i.i.i.sroa.0.0.copyload.i, ptr %26, align 8, !tbaa !134 %27 = getelementptr inbounds nuw i8, ptr %4, i64 16 %28 = getelementptr inbounds nuw i8, ptr %25, i64 600 %29 = load ptr, ptr %28, align 8, !tbaa !135 - store ptr %29, ptr %27, align 8, !tbaa !135 + store ptr %29, ptr %27, align 16, !tbaa !135 store ptr %9, ptr %28, align 8, !tbaa !135 %30 = getelementptr inbounds nuw i8, ptr %25, i64 608 %31 = load ptr, ptr %30, align 8, !tbaa !135 diff --git a/bench/hermes/optimized/Exceptions.ll b/bench/hermes/optimized/Exceptions.ll index fd083622bea..419c751b2d6 100644 --- a/bench/hermes/optimized/Exceptions.ll +++ b/bench/hermes/optimized/Exceptions.ll @@ -2804,7 +2804,6 @@ declare i64 @llvm.ctlz.i64(i64, i1 immarg) #7 ; Function Attrs: mustprogress nounwind uwtable define linkonce_odr hidden void @_ZSt16__introsort_loopIPN6hermes20ExceptionHandlerInfoElN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S6_T0_T1_(ptr noundef %__first, ptr noundef %__last, i64 noundef %__depth_limit) local_unnamed_addr #0 comdat { entry: - %__tmp.i.i.i.i = alloca %"struct.hermes::ExceptionHandlerInfo", align 4 %__comp.i.i = alloca %"struct.__gnu_cxx::__ops::_Iter_less_iter", align 1 %__comp.i = alloca %"struct.__gnu_cxx::__ops::_Iter_less_iter", align 1 %sub.ptr.rhs.cast = ptrtoint ptr %__first to i64 @@ -2908,11 +2907,9 @@ while.end8.i.i: ; preds = %land.rhs.i.i16.i.i, br i1 %cmp.i.i, label %if.end.i.i, label %_ZSt27__unguarded_partition_pivotIPN6hermes20ExceptionHandlerInfoEN9__gnu_cxx5__ops15_Iter_less_iterEET_S6_S6_T0_.exit if.end.i.i: ; preds = %while.end8.i.i - call void @llvm.lifetime.start.p0(ptr nonnull %__tmp.i.i.i.i) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %__tmp.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(16) %__first.addr.1.i.i, i64 16, i1 false) + %__tmp.i.i.sroa.0.0.copyload.i.i = load <4 x i32>, ptr %__first.addr.1.i.i, align 4 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %__first.addr.1.i.i, ptr noundef nonnull align 4 dereferenceable(16) %__last.addr.1.i.i, i64 16, i1 false) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %__last.addr.1.i.i, ptr noundef nonnull align 4 dereferenceable(16) %__tmp.i.i.i.i, i64 16, i1 false) - call void @llvm.lifetime.end.p0(ptr nonnull %__tmp.i.i.i.i) + store <4 x i32> %__tmp.i.i.sroa.0.0.copyload.i.i, ptr %__last.addr.1.i.i, align 4 %incdec.ptr9.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.1.i.i, i64 16 br label %while.body.i.i10, !llvm.loop !46 @@ -2931,8 +2928,6 @@ while.end: ; preds = %_ZSt27__unguarded_p ; Function Attrs: mustprogress nounwind uwtable define linkonce_odr hidden void @_ZSt22__final_insertion_sortIPN6hermes20ExceptionHandlerInfoEN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S6_T0_(ptr noundef %__first, ptr noundef %__last) local_unnamed_addr #0 comdat { entry: - %__val.i22 = alloca %"struct.hermes::ExceptionHandlerInfo", align 4 - %__val.i = alloca %"struct.hermes::ExceptionHandlerInfo", align 4 %sub.ptr.lhs.cast = ptrtoint ptr %__last to i64 %sub.ptr.rhs.cast = ptrtoint ptr %__first to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast @@ -2940,7 +2935,6 @@ entry: br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry - call void @llvm.lifetime.start.p0(ptr nonnull %__val.i) %depth2.i.i.i = getelementptr inbounds nuw i8, ptr %__first, i64 12 %scevgep = getelementptr i8, ptr %__first, i64 16 br label %for.body.i @@ -2966,9 +2960,9 @@ _ZNK9__gnu_cxx5__ops15_Iter_less_iterclIPN6hermes20ExceptionHandlerInfoES5_EEbT_ br i1 %cmp7.i.i.i, label %if.then2.i, label %if.else.i if.then2.i: ; preds = %_ZNK9__gnu_cxx5__ops15_Iter_less_iterclIPN6hermes20ExceptionHandlerInfoES5_EEbT_T0_.exit.i, %for.body.i - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %__val.i, ptr noundef nonnull align 4 dereferenceable(16) %__i.016.i.ptr, i64 16, i1 false) + %__val.sroa.0.0.copyload.i = load <4 x i32>, ptr %__i.016.i.ptr, align 4 tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep, ptr noundef nonnull align 4 dereferenceable(1) %__first, i64 %__i.016.i.idx, i1 false) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %__first, ptr noundef nonnull align 4 dereferenceable(16) %__val.i, i64 16, i1 false) + store <4 x i32> %__val.sroa.0.0.copyload.i, ptr %__first, align 4 br label %for.inc.i if.else.i: ; preds = %_ZNK9__gnu_cxx5__ops15_Iter_less_iterclIPN6hermes20ExceptionHandlerInfoES5_EEbT_T0_.exit.i, %lor.rhs.i.i.i @@ -3012,7 +3006,6 @@ for.inc.i: ; preds = %_ZSt25__unguarded_l _ZSt16__insertion_sortIPN6hermes20ExceptionHandlerInfoEN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S6_T0_.exit: ; preds = %for.inc.i %add.ptr = getelementptr inbounds nuw i8, ptr %__first, i64 256 - call void @llvm.lifetime.end.p0(ptr nonnull %__val.i) %cmp.not3.i = icmp eq ptr %add.ptr, %__last br i1 %cmp.not3.i, label %if.end, label %for.body.i7 @@ -3057,7 +3050,6 @@ _ZSt25__unguarded_linear_insertIPN6hermes20ExceptionHandlerInfoEN9__gnu_cxx5__op br i1 %cmp.not.i, label %if.end, label %for.body.i7, !llvm.loop !50 if.else: ; preds = %entry - call void @llvm.lifetime.start.p0(ptr nonnull %__val.i22) %cmp.i = icmp eq ptr %__first, %__last br i1 %cmp.i, label %_ZSt16__insertion_sortIPN6hermes20ExceptionHandlerInfoEN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S6_T0_.exit61, label %for.cond.preheader.i @@ -3071,8 +3063,8 @@ for.body.lr.ph.i: ; preds = %for.cond.preheader. br label %for.body.i26 for.body.i26: ; preds = %for.inc.i46, %for.body.lr.ph.i - %__i.016.i27 = phi ptr [ %__i.013.i23, %for.body.lr.ph.i ], [ %__i.0.i47, %for.inc.i46 ] - %__first.pn15.i28 = phi ptr [ %__first, %for.body.lr.ph.i ], [ %__i.016.i27, %for.inc.i46 ] + %__i.016.i27 = phi ptr [ %__i.013.i23, %for.body.lr.ph.i ], [ %__i.0.i47, %for.inc.i45 ] + %__first.pn15.i28 = phi ptr [ %__first, %for.body.lr.ph.i ], [ %__i.016.i27, %for.inc.i45 ] %depth.i.i.i29 = getelementptr inbounds nuw i8, ptr %__first.pn15.i28, i64 28 %9 = load i32, ptr %depth.i.i.i29, align 4 %10 = load i32, ptr %depth2.i.i.i24, align 4 @@ -3090,7 +3082,7 @@ _ZNK9__gnu_cxx5__ops15_Iter_less_iterclIPN6hermes20ExceptionHandlerInfoES5_EEbT_ br i1 %cmp7.i.i.i53, label %if.then2.i54, label %if.else.i34 if.then2.i54: ; preds = %_ZNK9__gnu_cxx5__ops15_Iter_less_iterclIPN6hermes20ExceptionHandlerInfoES5_EEbT_T0_.exit.i52, %for.body.i26 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %__val.i22, ptr noundef nonnull align 4 dereferenceable(16) %__i.016.i27, i64 16, i1 false) + %__val.sroa.0.0.copyload.i54 = load <4 x i32>, ptr %__i.016.i26, align 4 %add.ptr3.i55 = getelementptr inbounds nuw i8, ptr %__first.pn15.i28, i64 32 %sub.ptr.lhs.cast.i.i.i.i.i.i56 = ptrtoint ptr %__i.016.i27 to i64 %sub.ptr.sub.i.i.i.i.i.i57 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i56, %sub.ptr.rhs.cast @@ -3098,7 +3090,7 @@ if.then2.i54: ; preds = %_ZNK9__gnu_cxx5__op %idx.neg.i.i.i.i.i.i59 = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i58 %add.ptr.i.i.i.i.i.i60 = getelementptr inbounds %"struct.hermes::ExceptionHandlerInfo", ptr %add.ptr3.i55, i64 %idx.neg.i.i.i.i.i.i59 tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %add.ptr.i.i.i.i.i.i60, ptr noundef nonnull align 4 dereferenceable(1) %__first, i64 %sub.ptr.sub.i.i.i.i.i.i57, i1 false) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %__first, ptr noundef nonnull align 4 dereferenceable(16) %__val.i22, i64 16, i1 false) + store <4 x i32> %__val.sroa.0.0.copyload.i54, ptr %__first, align 4 br label %for.inc.i46 if.else.i34: ; preds = %_ZNK9__gnu_cxx5__ops15_Iter_less_iterclIPN6hermes20ExceptionHandlerInfoES5_EEbT_T0_.exit.i52, %lor.rhs.i.i.i31 @@ -3107,7 +3099,7 @@ if.else.i34: ; preds = %_ZNK9__gnu_cxx5__op br label %while.cond.i.i36 while.cond.i.i36: ; preds = %while.body.i.i51, %if.else.i34 - %__last.addr.0.i.i37 = phi ptr [ %__i.016.i27, %if.else.i34 ], [ %__next.0.i.i38, %while.body.i.i51 ] + %__last.addr.0.i.i37 = phi ptr [ %__i.016.i27, %if.else.i33 ], [ %__next.0.i.i38, %while.body.i.i50 ] %__next.0.i.i38 = getelementptr inbounds i8, ptr %__last.addr.0.i.i37, i64 -16 %depth2.i.i.i.i39 = getelementptr inbounds i8, ptr %__last.addr.0.i.i37, i64 -4 %13 = load i32, ptr %depth2.i.i.i.i39, align 4 @@ -3140,11 +3132,7 @@ for.inc.i46: ; preds = %_ZSt25__unguarded_l %cmp1.not.i48 = icmp eq ptr %__i.0.i47, %__last br i1 %cmp1.not.i48, label %_ZSt16__insertion_sortIPN6hermes20ExceptionHandlerInfoEN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S6_T0_.exit61, label %for.body.i26, !llvm.loop !49 -_ZSt16__insertion_sortIPN6hermes20ExceptionHandlerInfoEN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S6_T0_.exit61: ; preds = %for.inc.i46, %if.else, %for.cond.preheader.i - call void @llvm.lifetime.end.p0(ptr nonnull %__val.i22) - br label %if.end - -if.end: ; preds = %_ZSt25__unguarded_linear_insertIPN6hermes20ExceptionHandlerInfoEN9__gnu_cxx5__ops14_Val_less_iterEEvT_T0_.exit.i16, %_ZSt16__insertion_sortIPN6hermes20ExceptionHandlerInfoEN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S6_T0_.exit, %_ZSt16__insertion_sortIPN6hermes20ExceptionHandlerInfoEN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S6_T0_.exit61 +_ZSt16__insertion_sortIPN6hermes20ExceptionHandlerInfoEN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S6_T0_.exit61: ; preds = %for.inc.i46, %_ZSt25__unguarded_linear_insertIPN6hermes20ExceptionHandlerInfoEN9__gnu_cxx5__ops14_Val_less_iterEEvT_T0_.exit.i16, %for.cond.preheader.i, %if.else, %_ZSt16__insertion_sortIPN6hermes20ExceptionHandlerInfoEN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S6_T0_.exit ret void } diff --git a/bench/hyperscan/optimized/rose_build_bytecode.ll b/bench/hyperscan/optimized/rose_build_bytecode.ll index a707e50b7e7..ad8860cb4bc 100644 --- a/bench/hyperscan/optimized/rose_build_bytecode.ll +++ b/bench/hyperscan/optimized/rose_build_bytecode.ll @@ -1667,7 +1667,6 @@ define hidden void @_ZN3ue213RoseBuildImpl16buildFinalEngineEj(ptr dead_on_unwin %106 = alloca i8, align 1 %107 = alloca %"class.std::unique_ptr.515", align 8 %108 = alloca %"class.ue2::bytecode_ptr.534", align 8 - %.sroa.15.i.i.i.i.i.i.i.i = alloca { i64, i64 }, align 8 %109 = alloca %"class.ue2::bytecode_ptr.534", align 8 %110 = alloca %"class.ue2::bytecode_ptr.534", align 8 %111 = alloca %"class.ue2::bytecode_ptr.534", align 8 @@ -4570,7 +4569,6 @@ _ZN3ue2L7prepMpvERNS_13RoseBuildImplERNS_12_GLOBAL__N_113build_contextEPmPb.exit 1299: ; preds = %1297 %1300 = ptrtoint ptr %1298 to i64 - call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.15.i.i.i.i.i.i.i.i) store i64 %1300, ptr %109, align 8, !noalias !102 store ptr null, ptr %108, align 8, !noalias !102 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sink26.i.sroa.gep.i.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %1271, i64 16, i1 false), !noalias !102 @@ -4664,7 +4662,7 @@ _ZN3ue2L7prepMpvERNS_13RoseBuildImplERNS_12_GLOBAL__N_113build_contextEPmPb.exit %1326 = phi ptr [ %..cast.i.i.i.i.i.i.i.i, %1321 ], [ %.cast.27.i.i.i.i.i.i.i.i, %1323 ], [ %..cast23.i.i.i.i.i.i.i.i, %1322 ], [ null, %1299 ], [ %.cast.i.i.i.i.i.i.i.i, %.noexc.i.i.i.i.i.i.i.i ] %.sroa.0.0.i.i.i.i.i.i.i.i = phi ptr [ %.cast..i.i.i.i.i.i.i.i, %1321 ], [ %..cast28.i.i.i.i.i.i.i.i, %1323 ], [ %.cast.24.i.i.i.i.i.i.i.i, %1322 ], [ %.cast.i.i.i.i.i.i.i.i, %1299 ], [ %1298, %.noexc.i.i.i.i.i.i.i.i ] %.sink26.i.sroa.phi.i.i.i.i.i.i.i.i = phi ptr [ %.sink26.i.sroa.gep1..sink26.i.sroa.gep.i.i.i.i.i.i.i.i, %1321 ], [ %.sink26.i.sroa.gep..sink26.i.sroa.gep1.i.i.i.i.i.i.i.i, %1323 ], [ %.sink26.i.sroa.gep1..sink26.i.sroa.gep25.i.i.i.i.i.i.i.i, %1322 ], [ %.sink26.i.sroa.gep1.i.i.i.i.i.i.i.i, %1299 ], [ %.sink26.i.sroa.gep.i.i.i.i.i.i.i.i, %.noexc.i.i.i.i.i.i.i.i ] - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.15.i.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %.sink26.i.sroa.phi.i.i.i.i.i.i.i.i, i64 16, i1 false), !noalias !102 + %.sroa.15.sroa.0.0.copyload.i.i.i.i.i.i.i.i = load <2 x i64>, ptr %.sink26.i.sroa.phi.i.i.i.i.i.i.i.i, align 8, !noalias !102 %1327 = load ptr, ptr %111, align 8, !alias.scope !102 store ptr %.sroa.0.0.i.i.i.i.i.i.i.i, ptr %111, align 8, !alias.scope !102 %.not.i.i.i.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %1327, null @@ -4682,7 +4680,7 @@ _ZN3ue2L7prepMpvERNS_13RoseBuildImplERNS_12_GLOBAL__N_113build_contextEPmPb.exit unreachable _ZN3ue212bytecode_ptrI3NFAED2Ev.exit.i.i.i.i.i.i.i.i: ; preds = %1328, %1324 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %1272, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.15.i.i.i.i.i.i.i.i, i64 16, i1 false) + store <2 x i64> %.sroa.15.sroa.0.0.copyload.i.i.i.i.i.i.i.i, ptr %1272, align 8, !alias.scope !102 %.not.i.i27.i.i.i.i.i.i.i.i = icmp eq ptr %1326, null br i1 %.not.i.i27.i.i.i.i.i.i.i.i, label %_ZN3ue212bytecode_ptrI3NFAED2Ev.exit28.i.i.i.i.i.i.i.i, label %1332 @@ -4737,12 +4735,10 @@ _ZN3ue212bytecode_ptrI3NFAED2Ev.exit28.i.i.i.i.i.i.i.i: ; preds = %1332, %_ZN3ue cleanup call void @_ZN3ue212bytecode_ptrI3NFAED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %110) #27 call void @_ZN3ue212bytecode_ptrI3NFAED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %109) #27 - call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.15.i.i.i.i.i.i.i.i) call void @_ZN3ue212bytecode_ptrI3NFAED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %108) #27 br label %1355 1350: ; preds = %1336, %_ZN3ue212bytecode_ptrI3NFAED2Ev.exit28.i.i.i.i.i.i.i.i - call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.15.i.i.i.i.i.i.i.i) %.pr.i.i.i.i.i.i.i.i = load ptr, ptr %108, align 8, !noalias !102 %.not.i.i31.i.i.i.i.i.i.i.i = icmp eq ptr %.pr.i.i.i.i.i.i.i.i, null br i1 %.not.i.i31.i.i.i.i.i.i.i.i, label %.thread.i.i.i.i.i.i.i.i, label %1351 diff --git a/bench/image-rs/optimized/1clnprdgqfw2q9lq.ll b/bench/image-rs/optimized/1clnprdgqfw2q9lq.ll index c0161b1d6c4..7d7ad584bb7 100644 --- a/bench/image-rs/optimized/1clnprdgqfw2q9lq.ll +++ b/bench/image-rs/optimized/1clnprdgqfw2q9lq.ll @@ -20169,7 +20169,6 @@ define hidden void @"_ZN3exr5block6reader15Reader$LT$R$GT$13filter_chunks17h235c %10 = alloca { i64, [3 x i64] }, align 8 %11 = alloca ptr, align 8 %12 = alloca { { i64, i64 }, { i64, i64 } }, align 8 - %.sroa.0121 = alloca { i64, i64 }, align 8 %.sroa.273 = alloca [3 x i64], align 8 %.sroa.7 = alloca [4 x i64], align 8 %.sroa.060.sroa.0 = alloca { { { { i64, [534 x i64] }, i64 }, { i8, i8, i8, i8, i8 }, [3 x i8] }, { { i8, [15 x i8] }, { { { { ptr, i64 }, i64, i64, i64 }, i32, [1 x i32] }, i64 } } }, align 8 @@ -20587,7 +20586,7 @@ _ZN4core5slice4sort9quicksort17hae0bd84b19696730E.exit: ; preds = %.thread213 %144 = load i64, ptr %.sroa.218.0..sroa_idx, align 8, !alias.scope !4273, !noalias !4276, !noundef !4 %145 = add i64 %144, 1 store i64 %145, ptr %.sroa.218.0..sroa_idx, align 8, !alias.scope !4273, !noalias !4276 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0121, ptr noundef nonnull align 8 dereferenceable(16) %142, i64 16, i1 false) + %.sroa.0121.sroa.0.0.copyload389 = load <2 x i64>, ptr %142, align 8 %.sroa.10.16..sroa_idx = getelementptr inbounds nuw i8, ptr %142, i64 16 %.sroa.10.16.copyload = load i64, ptr %.sroa.10.16..sroa_idx, align 8, !noalias !4273 %.sroa.11.16..sroa_idx = getelementptr inbounds nuw i8, ptr %142, i64 24 @@ -20646,7 +20645,7 @@ _ZN4core5slice4sort9quicksort17hae0bd84b19696730E.exit: ; preds = %.thread213 call void @llvm.lifetime.end.p0(ptr nonnull %15) call void @llvm.lifetime.start.p0(ptr nonnull %14) store ptr %1, ptr %14, align 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %95, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0121, i64 16, i1 false) + store <2 x i64> %.sroa.0121.sroa.0.0.copyload389, ptr %95, align 8 store i64 %.sroa.10.16.copyload, ptr %.sroa.3122.0..sroa_idx125, align 8 store i64 %.sroa.11.16.copyload, ptr %.sroa.4127.0..sroa_idx130, align 8 store i64 %157, ptr %96, align 8 @@ -20843,7 +20842,6 @@ define hidden void @"_ZN3exr5block6reader15Reader$LT$R$GT$13filter_chunks17h754c %10 = alloca { i64, [3 x i64] }, align 8 %11 = alloca ptr, align 8 %12 = alloca { { i64, i64 }, { i64, i64 } }, align 8 - %.sroa.0121 = alloca { i64, i64 }, align 8 %.sroa.273 = alloca [3 x i64], align 8 %.sroa.7 = alloca [4 x i64], align 8 %.sroa.060.sroa.0 = alloca { { { { i64, [534 x i64] }, i64 }, { i8, i8, i8, i8, i8 }, [3 x i8] }, { { i8, [15 x i8] }, { { { ptr, i64 }, i64 }, i64 } } }, align 8 @@ -21261,7 +21259,7 @@ _ZN4core5slice4sort9quicksort17hae0bd84b19696730E.exit: ; preds = %.thread213 %144 = load i64, ptr %.sroa.218.0..sroa_idx, align 8, !alias.scope !4354, !noalias !4357, !noundef !4 %145 = add i64 %144, 1 store i64 %145, ptr %.sroa.218.0..sroa_idx, align 8, !alias.scope !4354, !noalias !4357 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0121, ptr noundef nonnull align 8 dereferenceable(16) %142, i64 16, i1 false) + %.sroa.0121.sroa.0.0.copyload389 = load <2 x i64>, ptr %142, align 8 %.sroa.10.16..sroa_idx = getelementptr inbounds nuw i8, ptr %142, i64 16 %.sroa.10.16.copyload = load i64, ptr %.sroa.10.16..sroa_idx, align 8, !noalias !4354 %.sroa.11.16..sroa_idx = getelementptr inbounds nuw i8, ptr %142, i64 24 @@ -21320,7 +21318,7 @@ _ZN4core5slice4sort9quicksort17hae0bd84b19696730E.exit: ; preds = %.thread213 call void @llvm.lifetime.end.p0(ptr nonnull %15) call void @llvm.lifetime.start.p0(ptr nonnull %14) store ptr %1, ptr %14, align 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %95, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0121, i64 16, i1 false) + store <2 x i64> %.sroa.0121.sroa.0.0.copyload389, ptr %95, align 8 store i64 %.sroa.10.16.copyload, ptr %.sroa.3122.0..sroa_idx125, align 8 store i64 %.sroa.11.16.copyload, ptr %.sroa.4127.0..sroa_idx130, align 8 store i64 %157, ptr %96, align 8 diff --git a/bench/llvm/optimized/AArch64InstructionSelector.ll b/bench/llvm/optimized/AArch64InstructionSelector.ll index 4a3cbd19b64..c4adff80ffa 100644 --- a/bench/llvm/optimized/AArch64InstructionSelector.ll +++ b/bench/llvm/optimized/AArch64InstructionSelector.ll @@ -12346,11 +12346,9 @@ declare void @free(ptr allocptr noundef captures(none)) local_unnamed_addr #11 ; Function Attrs: mustprogress nounwind uwtable define linkonce_odr noundef nonnull align 8 dereferenceable(16) ptr @_ZN4llvm15SmallVectorImplISt8functionIFvRNS_19MachineInstrBuilderEEEEaSEOS6_(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(16) %1) local_unnamed_addr #0 comdat align 2 { - %.sroa.0.i.i.i.i.i.i.i.i57 = alloca { i64, i64 }, align 8 - %3 = alloca %"class.std::function", align 8 + %.sroa.0.i.i.i.i.i.i.i.i57 = alloca %"class.std::function", align 16 %4 = alloca i64, align 8 - %.sroa.0.i.i.i.i.i.i.i.i = alloca { i64, i64 }, align 8 - %5 = alloca %"class.std::function", align 8 + %.sroa.0.i.i.i.i.i.i.i.i = alloca %"class.std::function", align 16 %6 = icmp eq ptr %0, %1 br i1 %6, label %160, label %7 @@ -12444,7 +12442,7 @@ _ZN4llvm15SmallVectorImplISt8functionIFvRNS_19MachineInstrBuilderEEEE12assignRem %.0910.i.i.i.i.i = phi ptr [ %8, %.lr.ph.i.i.i.i.i ], [ %55, %_ZNSt8functionIFvRN4llvm19MachineInstrBuilderEEEaSEOS4_.exit.i.i.i.i.i ] call void @llvm.lifetime.start.p0(ptr nonnull %5) %44 = getelementptr inbounds nuw i8, ptr %.0910.i.i.i.i.i, i64 24 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %5, i8 0, i64 24, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %5, i8 0, i64 24, i1 false) %45 = load ptr, ptr %44, align 8, !tbaa !573 %46 = getelementptr inbounds nuw i8, ptr %.0910.i.i.i.i.i, i64 16 %47 = load ptr, ptr %46, align 8, !tbaa !576 @@ -12452,19 +12450,18 @@ _ZN4llvm15SmallVectorImplISt8functionIFvRNS_19MachineInstrBuilderEEEE12assignRem br i1 %.not.i.i.not.i.i.i.i.i.i.i, label %_ZNSt8functionIFvRN4llvm19MachineInstrBuilderEEEC2EOS4_.exit.i.i.i.i.i.i, label %48 48: ; preds = %43 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(32) %.0910.i.i.i.i.i, i64 16, i1 false), !tbaa.struct !606 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(32) %.0910.i.i.i.i.i, i64 16, i1 false), !tbaa.struct !606 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %46, i8 0, i64 16, i1 false) + %.sroa.0.i.i.i.sroa.0.0.copyload.pre.i.i.i.i.i = load <2 x i64>, ptr %5, align 16, !tbaa !296 br label %_ZNSt8functionIFvRN4llvm19MachineInstrBuilderEEEC2EOS4_.exit.i.i.i.i.i.i _ZNSt8functionIFvRN4llvm19MachineInstrBuilderEEEC2EOS4_.exit.i.i.i.i.i.i: ; preds = %48, %43 - call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.0.i.i.i.i.i.i.i.i) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(32) %5, i64 16, i1 false), !tbaa.struct !606 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(32) %.0811.i.i.i.i.i, i64 16, i1 false), !tbaa.struct !606 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.0811.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i.i.i.i.i.i, i64 16, i1 false), !tbaa.struct !606 - call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.0.i.i.i.i.i.i.i.i) - %49 = getelementptr inbounds nuw i8, ptr %.0811.i.i.i.i.i, i64 16 + %.sroa.0.i.i.i.sroa.0.0.copyload.i.i.i.i.i = phi <2 x i64> [ %.sroa.0.i.i.i.sroa.0.0.copyload.pre.i.i.i.i.i, %48 ], [ zeroinitializer, %43 ] + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %.sroa.0.i.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(32) %.0812.i.i.i.i.i, i64 16, i1 false), !tbaa.struct !606 + store <2 x i64> %.sroa.0.i.i.i.sroa.0.0.copyload.i.i.i.i.i, ptr %.0811.i.i.i.i.i, align 8, !tbaa !296 + %49 = getelementptr inbounds nuw i8, ptr %.0812.i.i.i.i.i, i64 16 %50 = load ptr, ptr %49, align 8, !tbaa !871 - store ptr %50, ptr %42, align 8, !tbaa !871 + store ptr %50, ptr %42, align 16, !tbaa !871 store ptr %47, ptr %49, align 8, !tbaa !871 %51 = getelementptr inbounds nuw i8, ptr %.0811.i.i.i.i.i, i64 24 %52 = load ptr, ptr %51, align 8, !tbaa !871 @@ -12680,12 +12677,12 @@ _ZN4llvm23SmallVectorTemplateBaseISt8functionIFvRNS_19MachineInstrBuilderEEELb0E br label %118 118: ; preds = %_ZNSt8functionIFvRN4llvm19MachineInstrBuilderEEEaSEOS4_.exit.i.i.i.i.i66, %.lr.ph.i.i.i.i.i59 - %.012.i.i.i.i.i60 = phi i64 [ %38, %.lr.ph.i.i.i.i.i59 ], [ %132, %_ZNSt8functionIFvRN4llvm19MachineInstrBuilderEEEaSEOS4_.exit.i.i.i.i.i66 ] - %.0811.i.i.i.i.i61 = phi ptr [ %.pre82, %.lr.ph.i.i.i.i.i59 ], [ %131, %_ZNSt8functionIFvRN4llvm19MachineInstrBuilderEEEaSEOS4_.exit.i.i.i.i.i66 ] - %.0910.i.i.i.i.i62 = phi ptr [ %8, %.lr.ph.i.i.i.i.i59 ], [ %130, %_ZNSt8functionIFvRN4llvm19MachineInstrBuilderEEEaSEOS4_.exit.i.i.i.i.i66 ] + %.012.i.i.i.i.i60 = phi i64 [ %38, %.lr.ph.i.i.i.i.i58 ], [ %132, %_ZNSt8functionIFvRN4llvm19MachineInstrBuilderEEEaSEOS4_.exit.i.i.i.i.i67 ] + %.0811.i.i.i.i.i61 = phi ptr [ %.pre82, %.lr.ph.i.i.i.i.i58 ], [ %131, %_ZNSt8functionIFvRN4llvm19MachineInstrBuilderEEEaSEOS4_.exit.i.i.i.i.i67 ] + %.0910.i.i.i.i.i62 = phi ptr [ %8, %.lr.ph.i.i.i.i.i58 ], [ %130, %_ZNSt8functionIFvRN4llvm19MachineInstrBuilderEEEaSEOS4_.exit.i.i.i.i.i67 ] call void @llvm.lifetime.start.p0(ptr nonnull %3) %119 = getelementptr inbounds nuw i8, ptr %.0910.i.i.i.i.i62, i64 24 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %3, i8 0, i64 24, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %3, i8 0, i64 24, i1 false) %120 = load ptr, ptr %119, align 8, !tbaa !573 %121 = getelementptr inbounds nuw i8, ptr %.0910.i.i.i.i.i62, i64 16 %122 = load ptr, ptr %121, align 8, !tbaa !576 @@ -12693,19 +12690,18 @@ _ZN4llvm23SmallVectorTemplateBaseISt8functionIFvRNS_19MachineInstrBuilderEEELb0E br i1 %.not.i.i.not.i.i.i.i.i.i.i63, label %_ZNSt8functionIFvRN4llvm19MachineInstrBuilderEEEC2EOS4_.exit.i.i.i.i.i.i64, label %123 123: ; preds = %118 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(32) %.0910.i.i.i.i.i62, i64 16, i1 false), !tbaa.struct !606 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(32) %.0910.i.i.i.i.i62, i64 16, i1 false), !tbaa.struct !606 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %121, i8 0, i64 16, i1 false) + %.sroa.0.i.i.i.sroa.0.0.copyload.pre.i.i.i.i.i63 = load <2 x i64>, ptr %3, align 16, !tbaa !296 br label %_ZNSt8functionIFvRN4llvm19MachineInstrBuilderEEEC2EOS4_.exit.i.i.i.i.i.i64 _ZNSt8functionIFvRN4llvm19MachineInstrBuilderEEEC2EOS4_.exit.i.i.i.i.i.i64: ; preds = %123, %118 - call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.0.i.i.i.i.i.i.i.i57) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i.i.i.i.i.i57, ptr noundef nonnull align 8 dereferenceable(32) %3, i64 16, i1 false), !tbaa.struct !606 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(32) %.0811.i.i.i.i.i61, i64 16, i1 false), !tbaa.struct !606 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.0811.i.i.i.i.i61, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i.i.i.i.i.i57, i64 16, i1 false), !tbaa.struct !606 - call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.0.i.i.i.i.i.i.i.i57) - %124 = getelementptr inbounds nuw i8, ptr %.0811.i.i.i.i.i61, i64 16 + %.sroa.0.i.i.i.sroa.0.0.copyload.i.i.i.i.i65 = phi <2 x i64> [ %.sroa.0.i.i.i.sroa.0.0.copyload.pre.i.i.i.i.i63, %123 ], [ zeroinitializer, %118 ] + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %.sroa.0.i.i.i.i.i.i.i.i57, ptr noundef nonnull align 8 dereferenceable(32) %.0812.i.i.i.i.i60, i64 16, i1 false), !tbaa.struct !606 + store <2 x i64> %.sroa.0.i.i.i.sroa.0.0.copyload.i.i.i.i.i65, ptr %.0811.i.i.i.i.i61, align 8, !tbaa !296 + %124 = getelementptr inbounds nuw i8, ptr %.0812.i.i.i.i.i60, i64 16 %125 = load ptr, ptr %124, align 8, !tbaa !871 - store ptr %125, ptr %117, align 8, !tbaa !871 + store ptr %125, ptr %117, align 16, !tbaa !871 store ptr %122, ptr %124, align 8, !tbaa !871 %126 = getelementptr inbounds nuw i8, ptr %.0811.i.i.i.i.i61, i64 24 %127 = load ptr, ptr %126, align 8, !tbaa !871 @@ -12731,8 +12727,8 @@ _ZSt4moveIPSt8functionIFvRN4llvm19MachineInstrBuilderEEES6_ET0_T_S8_S7_.exit67.l br label %_ZSt4moveIPSt8functionIFvRN4llvm19MachineInstrBuilderEEES6_ET0_T_S8_S7_.exit67 _ZSt4moveIPSt8functionIFvRN4llvm19MachineInstrBuilderEEES6_ET0_T_S8_S7_.exit67: ; preds = %_ZSt4moveIPSt8functionIFvRN4llvm19MachineInstrBuilderEEES6_ET0_T_S8_S7_.exit67.loopexit, %115, %_ZN4llvm23SmallVectorTemplateBaseISt8functionIFvRNS_19MachineInstrBuilderEEELb0EE4growEm.exit - %134 = phi ptr [ %88, %_ZN4llvm23SmallVectorTemplateBaseISt8functionIFvRNS_19MachineInstrBuilderEEELb0EE4growEm.exit ], [ %.pre82, %115 ], [ %.pre81, %_ZSt4moveIPSt8functionIFvRN4llvm19MachineInstrBuilderEEES6_ET0_T_S8_S7_.exit67.loopexit ] - %.026 = phi i64 [ 0, %_ZN4llvm23SmallVectorTemplateBaseISt8functionIFvRNS_19MachineInstrBuilderEEELb0EE4growEm.exit ], [ 0, %115 ], [ %38, %_ZSt4moveIPSt8functionIFvRN4llvm19MachineInstrBuilderEEES6_ET0_T_S8_S7_.exit67.loopexit ] + %134 = phi ptr [ %88, %_ZN4llvm23SmallVectorTemplateBaseISt8functionIFvRNS_19MachineInstrBuilderEEELb0EE4growEm.exit ], [ %.pre82, %115 ], [ %.pre81, %_ZSt4moveIPSt8functionIFvRN4llvm19MachineInstrBuilderEEES6_ET0_T_S8_S7_.exit68.loopexit ] + %.026 = phi i64 [ 0, %_ZN4llvm23SmallVectorTemplateBaseISt8functionIFvRNS_19MachineInstrBuilderEEELb0EE4growEm.exit ], [ 0, %115 ], [ %38, %_ZSt4moveIPSt8functionIFvRN4llvm19MachineInstrBuilderEEES6_ET0_T_S8_S7_.exit68.loopexit ] %135 = load ptr, ptr %1, align 8, !tbaa !497 %136 = load i32, ptr %33, align 8, !tbaa !498 %137 = zext i32 %136 to i64 @@ -12746,8 +12742,8 @@ _ZSt4moveIPSt8functionIFvRN4llvm19MachineInstrBuilderEEES6_ET0_T_S8_S7_.exit67: br label %.lr.ph.i.i.i.i.i68 .lr.ph.i.i.i.i.i68: ; preds = %.lr.ph.i.i.i.i.i68.preheader, %_ZSt10_ConstructISt8functionIFvRN4llvm19MachineInstrBuilderEEEJS5_EEvPT_DpOT0_.exit.i.i.i.i.i - %.09.i.i.i.i.i = phi ptr [ %150, %_ZSt10_ConstructISt8functionIFvRN4llvm19MachineInstrBuilderEEEJS5_EEvPT_DpOT0_.exit.i.i.i.i.i ], [ %139, %.lr.ph.i.i.i.i.i68.preheader ] - %.sroa.04.08.i.i.i.i.i = phi ptr [ %149, %_ZSt10_ConstructISt8functionIFvRN4llvm19MachineInstrBuilderEEEJS5_EEvPT_DpOT0_.exit.i.i.i.i.i ], [ %140, %.lr.ph.i.i.i.i.i68.preheader ] + %.09.i.i.i.i.i = phi ptr [ %150, %_ZSt10_ConstructISt8functionIFvRN4llvm19MachineInstrBuilderEEEJS5_EEvPT_DpOT0_.exit.i.i.i.i.i ], [ %139, %.lr.ph.i.i.i.i.i69.preheader ] + %.sroa.04.08.i.i.i.i.i = phi ptr [ %149, %_ZSt10_ConstructISt8functionIFvRN4llvm19MachineInstrBuilderEEEJS5_EEvPT_DpOT0_.exit.i.i.i.i.i ], [ %140, %.lr.ph.i.i.i.i.i69.preheader ] %141 = getelementptr inbounds nuw i8, ptr %.09.i.i.i.i.i, i64 24 %142 = getelementptr inbounds nuw i8, ptr %.sroa.04.08.i.i.i.i.i, i64 24 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.09.i.i.i.i.i, i8 0, i64 24, i1 false) @@ -12777,7 +12773,7 @@ _ZN4llvm23SmallVectorTemplateBaseISt8functionIFvRNS_19MachineInstrBuilderEEELb0E br label %_ZN4llvm23SmallVectorTemplateBaseISt8functionIFvRNS_19MachineInstrBuilderEEELb0EE18uninitialized_moveIPS5_S8_EEvT_S9_T0_.exit _ZN4llvm23SmallVectorTemplateBaseISt8functionIFvRNS_19MachineInstrBuilderEEELb0EE18uninitialized_moveIPS5_S8_EEvT_S9_T0_.exit: ; preds = %_ZN4llvm23SmallVectorTemplateBaseISt8functionIFvRNS_19MachineInstrBuilderEEELb0EE18uninitialized_moveIPS5_S8_EEvT_S9_T0_.exit.loopexit, %_ZSt4moveIPSt8functionIFvRN4llvm19MachineInstrBuilderEEES6_ET0_T_S8_S7_.exit67 - %151 = phi ptr [ %.pre83, %_ZN4llvm23SmallVectorTemplateBaseISt8functionIFvRNS_19MachineInstrBuilderEEELb0EE18uninitialized_moveIPS5_S8_EEvT_S9_T0_.exit.loopexit ], [ %135, %_ZSt4moveIPSt8functionIFvRN4llvm19MachineInstrBuilderEEES6_ET0_T_S8_S7_.exit67 ] + %151 = phi ptr [ %.pre83, %_ZN4llvm23SmallVectorTemplateBaseISt8functionIFvRNS_19MachineInstrBuilderEEELb0EE18uninitialized_moveIPS5_S8_EEvT_S9_T0_.exit.loopexit ], [ %135, %_ZSt4moveIPSt8functionIFvRN4llvm19MachineInstrBuilderEEES6_ET0_T_S8_S7_.exit68 ] store i32 %34, ptr %36, align 8, !tbaa !498 %152 = load i32, ptr %33, align 8, !tbaa !498 %.not4.i.i70 = icmp eq i32 %152, 0 @@ -12790,7 +12786,7 @@ _ZN4llvm23SmallVectorTemplateBaseISt8functionIFvRNS_19MachineInstrBuilderEEELb0E br label %.lr.ph.i.i73 .lr.ph.i.i73: ; preds = %_ZNSt14_Function_baseD2Ev.exit.i.i76, %.lr.ph.i.preheader.i71 - %.05.i.i74 = phi ptr [ %155, %_ZNSt14_Function_baseD2Ev.exit.i.i76 ], [ %154, %.lr.ph.i.preheader.i71 ] + %.05.i.i74 = phi ptr [ %155, %_ZNSt14_Function_baseD2Ev.exit.i.i77 ], [ %154, %.lr.ph.i.preheader.i72 ] %155 = getelementptr inbounds i8, ptr %.05.i.i74, i64 -32 %156 = getelementptr inbounds i8, ptr %.05.i.i74, i64 -16 %157 = load ptr, ptr %156, align 8, !tbaa !576 @@ -45208,11 +45204,9 @@ declare noundef nonnull align 4 dereferenceable(17) ptr @_ZNK4llvm10DataLayout14 ; Function Attrs: mustprogress nounwind uwtable define linkonce_odr noundef nonnull align 8 dereferenceable(16) ptr @_ZN4llvm15SmallVectorImplISt8functionIFvRNS_19MachineInstrBuilderEEEEaSERKS6_(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(16) %1) local_unnamed_addr #0 comdat align 2 { - %.sroa.0.i.i.i.i.i.i.i.i33 = alloca { i64, i64 }, align 8 - %3 = alloca %"class.std::function", align 8 + %.sroa.0.i.i.i.i.i.i.i.i33 = alloca %"class.std::function", align 16 %4 = alloca i64, align 8 - %.sroa.0.i.i.i.i.i.i.i.i = alloca { i64, i64 }, align 8 - %5 = alloca %"class.std::function", align 8 + %.sroa.0.i.i.i.i.i.i.i.i = alloca %"class.std::function", align 16 %6 = icmp eq ptr %0, %1 br i1 %6, label %128, label %7 @@ -45243,7 +45237,7 @@ define linkonce_odr noundef nonnull align 8 dereferenceable(16) ptr @_ZN4llvm15S %.0910.i.i.i.i.i = phi ptr [ %16, %.lr.ph.i.i.i.i.i ], [ %35, %_ZNSt8functionIFvRN4llvm19MachineInstrBuilderEEEaSERKS4_.exit.i.i.i.i.i ] call void @llvm.lifetime.start.p0(ptr nonnull %5) %20 = getelementptr inbounds nuw i8, ptr %.0910.i.i.i.i.i, i64 16 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %5, i8 0, i64 32, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %5, i8 0, i64 32, i1 false) %21 = load ptr, ptr %20, align 8, !tbaa !576 %.not.i.i.not.i.i.i.i.i.i.i = icmp eq ptr %21, null br i1 %.not.i.i.not.i.i.i.i.i.i.i, label %_ZNSt8functionIFvRN4llvm19MachineInstrBuilderEEEC2ERKS4_.exit.i.i.i.i.i.i, label %22 @@ -45253,19 +45247,18 @@ define linkonce_odr noundef nonnull align 8 dereferenceable(16) ptr @_ZN4llvm15S %24 = getelementptr inbounds nuw i8, ptr %.0910.i.i.i.i.i, i64 24 %25 = load ptr, ptr %24, align 8, !tbaa !573 %26 = load ptr, ptr %20, align 8, !tbaa !576 + %.sroa.0.i.i.i.sroa.0.0.copyload.pre.i.i.i.i.i = load <2 x i64>, ptr %5, align 16, !tbaa !296 br label %_ZNSt8functionIFvRN4llvm19MachineInstrBuilderEEEC2ERKS4_.exit.i.i.i.i.i.i _ZNSt8functionIFvRN4llvm19MachineInstrBuilderEEEC2ERKS4_.exit.i.i.i.i.i.i: ; preds = %22, %19 + %.sroa.0.i.i.i.sroa.0.0.copyload.i.i.i.i.i = phi <2 x i64> [ zeroinitializer, %19 ], [ %.sroa.0.i.i.i.sroa.0.0.copyload.pre.i.i.i.i.i, %22 ] %27 = phi ptr [ null, %19 ], [ %25, %22 ] %28 = phi ptr [ null, %19 ], [ %26, %22 ] - call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.0.i.i.i.i.i.i.i.i) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(32) %5, i64 16, i1 false), !tbaa.struct !606 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(32) %.0811.i.i.i.i.i, i64 16, i1 false), !tbaa.struct !606 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.0811.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i.i.i.i.i.i, i64 16, i1 false), !tbaa.struct !606 - call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.0.i.i.i.i.i.i.i.i) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %.sroa.0.i.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(32) %.0812.i.i.i.i.i, i64 16, i1 false), !tbaa.struct !606 + store <2 x i64> %.sroa.0.i.i.i.sroa.0.0.copyload.i.i.i.i.i, ptr %.0812.i.i.i.i.i, align 8, !tbaa !296 %29 = getelementptr inbounds nuw i8, ptr %.0811.i.i.i.i.i, i64 16 %30 = load ptr, ptr %29, align 8, !tbaa !871 - store ptr %30, ptr %17, align 8, !tbaa !871 + store ptr %30, ptr %17, align 16, !tbaa !871 store ptr %28, ptr %29, align 8, !tbaa !871 %31 = getelementptr inbounds nuw i8, ptr %.0811.i.i.i.i.i, i64 24 %32 = load ptr, ptr %31, align 8, !tbaa !871 @@ -45449,12 +45442,12 @@ _ZN4llvm23SmallVectorTemplateBaseISt8functionIFvRNS_19MachineInstrBuilderEEELb0E br label %90 90: ; preds = %_ZNSt8functionIFvRN4llvm19MachineInstrBuilderEEEaSERKS4_.exit.i.i.i.i.i42, %.lr.ph.i.i.i.i.i35 - %.012.i.i.i.i.i36 = phi i64 [ %13, %.lr.ph.i.i.i.i.i35 ], [ %108, %_ZNSt8functionIFvRN4llvm19MachineInstrBuilderEEEaSERKS4_.exit.i.i.i.i.i42 ] - %.0811.i.i.i.i.i37 = phi ptr [ %.pre47, %.lr.ph.i.i.i.i.i35 ], [ %107, %_ZNSt8functionIFvRN4llvm19MachineInstrBuilderEEEaSERKS4_.exit.i.i.i.i.i42 ] - %.0910.i.i.i.i.i38 = phi ptr [ %87, %.lr.ph.i.i.i.i.i35 ], [ %106, %_ZNSt8functionIFvRN4llvm19MachineInstrBuilderEEEaSERKS4_.exit.i.i.i.i.i42 ] + %.012.i.i.i.i.i36 = phi i64 [ %13, %.lr.ph.i.i.i.i.i34 ], [ %108, %_ZNSt8functionIFvRN4llvm19MachineInstrBuilderEEEaSERKS4_.exit.i.i.i.i.i43 ] + %.0811.i.i.i.i.i37 = phi ptr [ %.pre47, %.lr.ph.i.i.i.i.i34 ], [ %107, %_ZNSt8functionIFvRN4llvm19MachineInstrBuilderEEEaSERKS4_.exit.i.i.i.i.i43 ] + %.0910.i.i.i.i.i38 = phi ptr [ %87, %.lr.ph.i.i.i.i.i34 ], [ %106, %_ZNSt8functionIFvRN4llvm19MachineInstrBuilderEEEaSERKS4_.exit.i.i.i.i.i43 ] call void @llvm.lifetime.start.p0(ptr nonnull %3) %91 = getelementptr inbounds nuw i8, ptr %.0910.i.i.i.i.i38, i64 16 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %3, i8 0, i64 32, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %3, i8 0, i64 32, i1 false) %92 = load ptr, ptr %91, align 8, !tbaa !576 %.not.i.i.not.i.i.i.i.i.i.i39 = icmp eq ptr %92, null br i1 %.not.i.i.not.i.i.i.i.i.i.i39, label %_ZNSt8functionIFvRN4llvm19MachineInstrBuilderEEEC2ERKS4_.exit.i.i.i.i.i.i40, label %93 @@ -45464,19 +45457,18 @@ _ZN4llvm23SmallVectorTemplateBaseISt8functionIFvRNS_19MachineInstrBuilderEEELb0E %95 = getelementptr inbounds nuw i8, ptr %.0910.i.i.i.i.i38, i64 24 %96 = load ptr, ptr %95, align 8, !tbaa !573 %97 = load ptr, ptr %91, align 8, !tbaa !576 + %.sroa.0.i.i.i.sroa.0.0.copyload.pre.i.i.i.i.i39 = load <2 x i64>, ptr %3, align 16, !tbaa !296 br label %_ZNSt8functionIFvRN4llvm19MachineInstrBuilderEEEC2ERKS4_.exit.i.i.i.i.i.i40 _ZNSt8functionIFvRN4llvm19MachineInstrBuilderEEEC2ERKS4_.exit.i.i.i.i.i.i40: ; preds = %93, %90 + %.sroa.0.i.i.i.sroa.0.0.copyload.i.i.i.i.i41 = phi <2 x i64> [ zeroinitializer, %90 ], [ %.sroa.0.i.i.i.sroa.0.0.copyload.pre.i.i.i.i.i39, %93 ] %98 = phi ptr [ null, %90 ], [ %96, %93 ] %99 = phi ptr [ null, %90 ], [ %97, %93 ] - call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.0.i.i.i.i.i.i.i.i33) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i.i.i.i.i.i33, ptr noundef nonnull align 8 dereferenceable(32) %3, i64 16, i1 false), !tbaa.struct !606 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(32) %.0811.i.i.i.i.i37, i64 16, i1 false), !tbaa.struct !606 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.0811.i.i.i.i.i37, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i.i.i.i.i.i33, i64 16, i1 false), !tbaa.struct !606 - call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.0.i.i.i.i.i.i.i.i33) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %.sroa.0.i.i.i.i.i.i.i.i33, ptr noundef nonnull align 8 dereferenceable(32) %.0812.i.i.i.i.i36, i64 16, i1 false), !tbaa.struct !606 + store <2 x i64> %.sroa.0.i.i.i.sroa.0.0.copyload.i.i.i.i.i41, ptr %.0812.i.i.i.i.i36, align 8, !tbaa !296 %100 = getelementptr inbounds nuw i8, ptr %.0811.i.i.i.i.i37, i64 16 %101 = load ptr, ptr %100, align 8, !tbaa !871 - store ptr %101, ptr %88, align 8, !tbaa !871 + store ptr %101, ptr %88, align 16, !tbaa !871 store ptr %99, ptr %100, align 8, !tbaa !871 %102 = getelementptr inbounds nuw i8, ptr %.0811.i.i.i.i.i37, i64 24 %103 = load ptr, ptr %102, align 8, !tbaa !871 @@ -45502,8 +45494,8 @@ _ZSt4copyIPKSt8functionIFvRN4llvm19MachineInstrBuilderEEEPS5_ET0_T_SA_S9_.exit43 br label %_ZSt4copyIPKSt8functionIFvRN4llvm19MachineInstrBuilderEEEPS5_ET0_T_SA_S9_.exit43 _ZSt4copyIPKSt8functionIFvRN4llvm19MachineInstrBuilderEEEPS5_ET0_T_SA_S9_.exit43: ; preds = %_ZSt4copyIPKSt8functionIFvRN4llvm19MachineInstrBuilderEEEPS5_ET0_T_SA_S9_.exit43.loopexit, %86, %_ZN4llvm23SmallVectorTemplateBaseISt8functionIFvRNS_19MachineInstrBuilderEEELb0EE4growEm.exit - %110 = phi ptr [ %59, %_ZN4llvm23SmallVectorTemplateBaseISt8functionIFvRNS_19MachineInstrBuilderEEELb0EE4growEm.exit ], [ %.pre47, %86 ], [ %.pre46, %_ZSt4copyIPKSt8functionIFvRN4llvm19MachineInstrBuilderEEEPS5_ET0_T_SA_S9_.exit43.loopexit ] - %.022 = phi i64 [ 0, %_ZN4llvm23SmallVectorTemplateBaseISt8functionIFvRNS_19MachineInstrBuilderEEELb0EE4growEm.exit ], [ 0, %86 ], [ %13, %_ZSt4copyIPKSt8functionIFvRN4llvm19MachineInstrBuilderEEEPS5_ET0_T_SA_S9_.exit43.loopexit ] + %110 = phi ptr [ %59, %_ZN4llvm23SmallVectorTemplateBaseISt8functionIFvRNS_19MachineInstrBuilderEEELb0EE4growEm.exit ], [ %.pre47, %86 ], [ %.pre46, %_ZSt4copyIPKSt8functionIFvRN4llvm19MachineInstrBuilderEEEPS5_ET0_T_SA_S9_.exit44.loopexit ] + %.022 = phi i64 [ 0, %_ZN4llvm23SmallVectorTemplateBaseISt8functionIFvRNS_19MachineInstrBuilderEEELb0EE4growEm.exit ], [ 0, %86 ], [ %13, %_ZSt4copyIPKSt8functionIFvRN4llvm19MachineInstrBuilderEEEPS5_ET0_T_SA_S9_.exit44.loopexit ] %111 = load ptr, ptr %1, align 8, !tbaa !497 %112 = load i32, ptr %8, align 8, !tbaa !498 %113 = zext i32 %112 to i64 diff --git a/bench/llvm/optimized/AArch64O0PreLegalizerCombiner.ll b/bench/llvm/optimized/AArch64O0PreLegalizerCombiner.ll index ab691e560a0..8468d2d9a74 100644 --- a/bench/llvm/optimized/AArch64O0PreLegalizerCombiner.ll +++ b/bench/llvm/optimized/AArch64O0PreLegalizerCombiner.ll @@ -12267,11 +12267,9 @@ declare noundef nonnull align 4 dereferenceable(17) ptr @_ZNK4llvm10DataLayout14 ; Function Attrs: mustprogress nounwind uwtable define linkonce_odr noundef nonnull align 8 dereferenceable(16) ptr @_ZN4llvm15SmallVectorImplISt8functionIFvRNS_19MachineInstrBuilderEEEEaSERKS6_(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(16) %1) local_unnamed_addr #0 comdat align 2 { - %.sroa.0.i.i.i.i.i.i.i.i33 = alloca { i64, i64 }, align 8 - %3 = alloca %"class.std::function.518", align 8 + %.sroa.0.i.i.i.i.i.i.i.i33 = alloca %"class.std::function.518", align 16 %4 = alloca i64, align 8 - %.sroa.0.i.i.i.i.i.i.i.i = alloca { i64, i64 }, align 8 - %5 = alloca %"class.std::function.518", align 8 + %.sroa.0.i.i.i.i.i.i.i.i = alloca %"class.std::function.518", align 16 %6 = icmp eq ptr %0, %1 br i1 %6, label %128, label %7 @@ -12302,7 +12300,7 @@ define linkonce_odr noundef nonnull align 8 dereferenceable(16) ptr @_ZN4llvm15S %.0910.i.i.i.i.i = phi ptr [ %16, %.lr.ph.i.i.i.i.i ], [ %35, %_ZNSt8functionIFvRN4llvm19MachineInstrBuilderEEEaSERKS4_.exit.i.i.i.i.i ] call void @llvm.lifetime.start.p0(ptr nonnull %5) %20 = getelementptr inbounds nuw i8, ptr %.0910.i.i.i.i.i, i64 16 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %5, i8 0, i64 32, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %5, i8 0, i64 32, i1 false) %21 = load ptr, ptr %20, align 8, !tbaa !48 %.not.i.i.not.i.i.i.i.i.i.i = icmp eq ptr %21, null br i1 %.not.i.i.not.i.i.i.i.i.i.i, label %_ZNSt8functionIFvRN4llvm19MachineInstrBuilderEEEC2ERKS4_.exit.i.i.i.i.i.i, label %22 @@ -12312,19 +12310,18 @@ define linkonce_odr noundef nonnull align 8 dereferenceable(16) ptr @_ZN4llvm15S %24 = getelementptr inbounds nuw i8, ptr %.0910.i.i.i.i.i, i64 24 %25 = load ptr, ptr %24, align 8, !tbaa !915 %26 = load ptr, ptr %20, align 8, !tbaa !48 + %.sroa.0.i.i.i.sroa.0.0.copyload.pre.i.i.i.i.i = load <2 x i64>, ptr %5, align 16, !tbaa !15 br label %_ZNSt8functionIFvRN4llvm19MachineInstrBuilderEEEC2ERKS4_.exit.i.i.i.i.i.i _ZNSt8functionIFvRN4llvm19MachineInstrBuilderEEEC2ERKS4_.exit.i.i.i.i.i.i: ; preds = %22, %19 + %.sroa.0.i.i.i.sroa.0.0.copyload.i.i.i.i.i = phi <2 x i64> [ zeroinitializer, %19 ], [ %.sroa.0.i.i.i.sroa.0.0.copyload.pre.i.i.i.i.i, %22 ] %27 = phi ptr [ null, %19 ], [ %25, %22 ] %28 = phi ptr [ null, %19 ], [ %26, %22 ] - call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.0.i.i.i.i.i.i.i.i) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(32) %5, i64 16, i1 false), !tbaa.struct !1012 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(32) %.0811.i.i.i.i.i, i64 16, i1 false), !tbaa.struct !1012 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.0811.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i.i.i.i.i.i, i64 16, i1 false), !tbaa.struct !1012 - call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.0.i.i.i.i.i.i.i.i) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %.sroa.0.i.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(32) %.0812.i.i.i.i.i, i64 16, i1 false), !tbaa.struct !1012 + store <2 x i64> %.sroa.0.i.i.i.sroa.0.0.copyload.i.i.i.i.i, ptr %.0812.i.i.i.i.i, align 8, !tbaa !15 %29 = getelementptr inbounds nuw i8, ptr %.0811.i.i.i.i.i, i64 16 %30 = load ptr, ptr %29, align 8, !tbaa !65 - store ptr %30, ptr %17, align 8, !tbaa !65 + store ptr %30, ptr %17, align 16, !tbaa !65 store ptr %28, ptr %29, align 8, !tbaa !65 %31 = getelementptr inbounds nuw i8, ptr %.0811.i.i.i.i.i, i64 24 %32 = load ptr, ptr %31, align 8, !tbaa !65 @@ -12508,12 +12505,12 @@ _ZN4llvm23SmallVectorTemplateBaseISt8functionIFvRNS_19MachineInstrBuilderEEELb0E br label %90 90: ; preds = %_ZNSt8functionIFvRN4llvm19MachineInstrBuilderEEEaSERKS4_.exit.i.i.i.i.i42, %.lr.ph.i.i.i.i.i35 - %.012.i.i.i.i.i36 = phi i64 [ %13, %.lr.ph.i.i.i.i.i35 ], [ %108, %_ZNSt8functionIFvRN4llvm19MachineInstrBuilderEEEaSERKS4_.exit.i.i.i.i.i42 ] - %.0811.i.i.i.i.i37 = phi ptr [ %.pre47, %.lr.ph.i.i.i.i.i35 ], [ %107, %_ZNSt8functionIFvRN4llvm19MachineInstrBuilderEEEaSERKS4_.exit.i.i.i.i.i42 ] - %.0910.i.i.i.i.i38 = phi ptr [ %87, %.lr.ph.i.i.i.i.i35 ], [ %106, %_ZNSt8functionIFvRN4llvm19MachineInstrBuilderEEEaSERKS4_.exit.i.i.i.i.i42 ] + %.012.i.i.i.i.i36 = phi i64 [ %13, %.lr.ph.i.i.i.i.i34 ], [ %108, %_ZNSt8functionIFvRN4llvm19MachineInstrBuilderEEEaSERKS4_.exit.i.i.i.i.i43 ] + %.0811.i.i.i.i.i37 = phi ptr [ %.pre47, %.lr.ph.i.i.i.i.i34 ], [ %107, %_ZNSt8functionIFvRN4llvm19MachineInstrBuilderEEEaSERKS4_.exit.i.i.i.i.i43 ] + %.0910.i.i.i.i.i38 = phi ptr [ %87, %.lr.ph.i.i.i.i.i34 ], [ %106, %_ZNSt8functionIFvRN4llvm19MachineInstrBuilderEEEaSERKS4_.exit.i.i.i.i.i43 ] call void @llvm.lifetime.start.p0(ptr nonnull %3) %91 = getelementptr inbounds nuw i8, ptr %.0910.i.i.i.i.i38, i64 16 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %3, i8 0, i64 32, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %3, i8 0, i64 32, i1 false) %92 = load ptr, ptr %91, align 8, !tbaa !48 %.not.i.i.not.i.i.i.i.i.i.i39 = icmp eq ptr %92, null br i1 %.not.i.i.not.i.i.i.i.i.i.i39, label %_ZNSt8functionIFvRN4llvm19MachineInstrBuilderEEEC2ERKS4_.exit.i.i.i.i.i.i40, label %93 @@ -12523,19 +12520,18 @@ _ZN4llvm23SmallVectorTemplateBaseISt8functionIFvRNS_19MachineInstrBuilderEEELb0E %95 = getelementptr inbounds nuw i8, ptr %.0910.i.i.i.i.i38, i64 24 %96 = load ptr, ptr %95, align 8, !tbaa !915 %97 = load ptr, ptr %91, align 8, !tbaa !48 + %.sroa.0.i.i.i.sroa.0.0.copyload.pre.i.i.i.i.i39 = load <2 x i64>, ptr %3, align 16, !tbaa !15 br label %_ZNSt8functionIFvRN4llvm19MachineInstrBuilderEEEC2ERKS4_.exit.i.i.i.i.i.i40 _ZNSt8functionIFvRN4llvm19MachineInstrBuilderEEEC2ERKS4_.exit.i.i.i.i.i.i40: ; preds = %93, %90 + %.sroa.0.i.i.i.sroa.0.0.copyload.i.i.i.i.i41 = phi <2 x i64> [ zeroinitializer, %90 ], [ %.sroa.0.i.i.i.sroa.0.0.copyload.pre.i.i.i.i.i39, %93 ] %98 = phi ptr [ null, %90 ], [ %96, %93 ] %99 = phi ptr [ null, %90 ], [ %97, %93 ] - call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.0.i.i.i.i.i.i.i.i33) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i.i.i.i.i.i33, ptr noundef nonnull align 8 dereferenceable(32) %3, i64 16, i1 false), !tbaa.struct !1012 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(32) %.0811.i.i.i.i.i37, i64 16, i1 false), !tbaa.struct !1012 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.0811.i.i.i.i.i37, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i.i.i.i.i.i33, i64 16, i1 false), !tbaa.struct !1012 - call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.0.i.i.i.i.i.i.i.i33) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %.sroa.0.i.i.i.i.i.i.i.i33, ptr noundef nonnull align 8 dereferenceable(32) %.0812.i.i.i.i.i36, i64 16, i1 false), !tbaa.struct !1012 + store <2 x i64> %.sroa.0.i.i.i.sroa.0.0.copyload.i.i.i.i.i41, ptr %.0812.i.i.i.i.i36, align 8, !tbaa !15 %100 = getelementptr inbounds nuw i8, ptr %.0811.i.i.i.i.i37, i64 16 %101 = load ptr, ptr %100, align 8, !tbaa !65 - store ptr %101, ptr %88, align 8, !tbaa !65 + store ptr %101, ptr %88, align 16, !tbaa !65 store ptr %99, ptr %100, align 8, !tbaa !65 %102 = getelementptr inbounds nuw i8, ptr %.0811.i.i.i.i.i37, i64 24 %103 = load ptr, ptr %102, align 8, !tbaa !65 @@ -12561,8 +12557,8 @@ _ZSt4copyIPKSt8functionIFvRN4llvm19MachineInstrBuilderEEEPS5_ET0_T_SA_S9_.exit43 br label %_ZSt4copyIPKSt8functionIFvRN4llvm19MachineInstrBuilderEEEPS5_ET0_T_SA_S9_.exit43 _ZSt4copyIPKSt8functionIFvRN4llvm19MachineInstrBuilderEEEPS5_ET0_T_SA_S9_.exit43: ; preds = %_ZSt4copyIPKSt8functionIFvRN4llvm19MachineInstrBuilderEEEPS5_ET0_T_SA_S9_.exit43.loopexit, %86, %_ZN4llvm23SmallVectorTemplateBaseISt8functionIFvRNS_19MachineInstrBuilderEEELb0EE4growEm.exit - %110 = phi ptr [ %59, %_ZN4llvm23SmallVectorTemplateBaseISt8functionIFvRNS_19MachineInstrBuilderEEELb0EE4growEm.exit ], [ %.pre47, %86 ], [ %.pre46, %_ZSt4copyIPKSt8functionIFvRN4llvm19MachineInstrBuilderEEEPS5_ET0_T_SA_S9_.exit43.loopexit ] - %.022 = phi i64 [ 0, %_ZN4llvm23SmallVectorTemplateBaseISt8functionIFvRNS_19MachineInstrBuilderEEELb0EE4growEm.exit ], [ 0, %86 ], [ %13, %_ZSt4copyIPKSt8functionIFvRN4llvm19MachineInstrBuilderEEEPS5_ET0_T_SA_S9_.exit43.loopexit ] + %110 = phi ptr [ %59, %_ZN4llvm23SmallVectorTemplateBaseISt8functionIFvRNS_19MachineInstrBuilderEEELb0EE4growEm.exit ], [ %.pre47, %86 ], [ %.pre46, %_ZSt4copyIPKSt8functionIFvRN4llvm19MachineInstrBuilderEEEPS5_ET0_T_SA_S9_.exit44.loopexit ] + %.022 = phi i64 [ 0, %_ZN4llvm23SmallVectorTemplateBaseISt8functionIFvRNS_19MachineInstrBuilderEEELb0EE4growEm.exit ], [ 0, %86 ], [ %13, %_ZSt4copyIPKSt8functionIFvRN4llvm19MachineInstrBuilderEEEPS5_ET0_T_SA_S9_.exit44.loopexit ] %111 = load ptr, ptr %1, align 8, !tbaa !36 %112 = load i32, ptr %8, align 8, !tbaa !37 %113 = zext i32 %112 to i64 diff --git a/bench/llvm/optimized/AttributorAttributes.ll b/bench/llvm/optimized/AttributorAttributes.ll index fad35c6aa12..ad5cd6f492a 100644 --- a/bench/llvm/optimized/AttributorAttributes.ll +++ b/bench/llvm/optimized/AttributorAttributes.ll @@ -162002,11 +162002,9 @@ _ZN4llvm11SmallVectorISt8functionIFSt8optionalIPNS_5ValueEERKNS_10IRPositionEPKN ; Function Attrs: mustprogress nounwind uwtable define linkonce_odr noundef nonnull align 8 dereferenceable(16) ptr @_ZN4llvm15SmallVectorImplISt8functionIFSt8optionalIPNS_5ValueEERKNS_10IRPositionEPKNS_17AbstractAttributeERbEEEaSEOSF_(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(16) %1) local_unnamed_addr #0 comdat align 2 { - %.sroa.0.i.i.i.i.i.i.i.i57 = alloca { i64, i64 }, align 8 - %3 = alloca %"class.std::function.1807", align 8 + %.sroa.0.i.i.i.i.i.i.i.i57 = alloca %"class.std::function.1807", align 16 %4 = alloca i64, align 8 - %.sroa.0.i.i.i.i.i.i.i.i = alloca { i64, i64 }, align 8 - %5 = alloca %"class.std::function.1807", align 8 + %.sroa.0.i.i.i.i.i.i.i.i = alloca %"class.std::function.1807", align 16 %6 = icmp eq ptr %0, %1 br i1 %6, label %160, label %7 @@ -162100,7 +162098,7 @@ _ZN4llvm15SmallVectorImplISt8functionIFSt8optionalIPNS_5ValueEERKNS_10IRPosition %.0910.i.i.i.i.i = phi ptr [ %8, %.lr.ph.i.i.i.i.i ], [ %55, %_ZNSt8functionIFSt8optionalIPN4llvm5ValueEERKNS1_10IRPositionEPKNS1_17AbstractAttributeERbEEaSEOSD_.exit.i.i.i.i.i ] call void @llvm.lifetime.start.p0(ptr nonnull %5) %44 = getelementptr inbounds nuw i8, ptr %.0910.i.i.i.i.i, i64 24 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %5, i8 0, i64 24, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %5, i8 0, i64 24, i1 false) %45 = load ptr, ptr %44, align 8, !tbaa !3460 %46 = getelementptr inbounds nuw i8, ptr %.0910.i.i.i.i.i, i64 16 %47 = load ptr, ptr %46, align 8, !tbaa !50 @@ -162108,19 +162106,18 @@ _ZN4llvm15SmallVectorImplISt8functionIFSt8optionalIPNS_5ValueEERKNS_10IRPosition br i1 %.not.i.i.not.i.i.i.i.i.i.i, label %_ZNSt8functionIFSt8optionalIPN4llvm5ValueEERKNS1_10IRPositionEPKNS1_17AbstractAttributeERbEEC2EOSD_.exit.i.i.i.i.i.i, label %48 48: ; preds = %43 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(32) %.0910.i.i.i.i.i, i64 16, i1 false), !tbaa.struct !2566 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(32) %.0910.i.i.i.i.i, i64 16, i1 false), !tbaa.struct !2566 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %46, i8 0, i64 16, i1 false) + %.sroa.0.i.i.i.sroa.0.0.copyload.pre.i.i.i.i.i = load <2 x i64>, ptr %5, align 16, !tbaa !13 br label %_ZNSt8functionIFSt8optionalIPN4llvm5ValueEERKNS1_10IRPositionEPKNS1_17AbstractAttributeERbEEC2EOSD_.exit.i.i.i.i.i.i _ZNSt8functionIFSt8optionalIPN4llvm5ValueEERKNS1_10IRPositionEPKNS1_17AbstractAttributeERbEEC2EOSD_.exit.i.i.i.i.i.i: ; preds = %48, %43 - call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.0.i.i.i.i.i.i.i.i) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(32) %5, i64 16, i1 false), !tbaa.struct !2566 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(32) %.0811.i.i.i.i.i, i64 16, i1 false), !tbaa.struct !2566 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.0811.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i.i.i.i.i.i, i64 16, i1 false), !tbaa.struct !2566 - call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.0.i.i.i.i.i.i.i.i) - %49 = getelementptr inbounds nuw i8, ptr %.0811.i.i.i.i.i, i64 16 + %.sroa.0.i.i.i.sroa.0.0.copyload.i.i.i.i.i = phi <2 x i64> [ %.sroa.0.i.i.i.sroa.0.0.copyload.pre.i.i.i.i.i, %48 ], [ zeroinitializer, %43 ] + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %.sroa.0.i.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(32) %.0812.i.i.i.i.i, i64 16, i1 false), !tbaa.struct !2566 + store <2 x i64> %.sroa.0.i.i.i.sroa.0.0.copyload.i.i.i.i.i, ptr %.0811.i.i.i.i.i, align 8, !tbaa !13 + %49 = getelementptr inbounds nuw i8, ptr %.0812.i.i.i.i.i, i64 16 %50 = load ptr, ptr %49, align 8, !tbaa !678 - store ptr %50, ptr %42, align 8, !tbaa !678 + store ptr %50, ptr %42, align 16, !tbaa !678 store ptr %47, ptr %49, align 8, !tbaa !678 %51 = getelementptr inbounds nuw i8, ptr %.0811.i.i.i.i.i, i64 24 %52 = load ptr, ptr %51, align 8, !tbaa !678 @@ -162336,12 +162333,12 @@ _ZN4llvm23SmallVectorTemplateBaseISt8functionIFSt8optionalIPNS_5ValueEERKNS_10IR br label %118 118: ; preds = %_ZNSt8functionIFSt8optionalIPN4llvm5ValueEERKNS1_10IRPositionEPKNS1_17AbstractAttributeERbEEaSEOSD_.exit.i.i.i.i.i66, %.lr.ph.i.i.i.i.i59 - %.012.i.i.i.i.i60 = phi i64 [ %38, %.lr.ph.i.i.i.i.i59 ], [ %132, %_ZNSt8functionIFSt8optionalIPN4llvm5ValueEERKNS1_10IRPositionEPKNS1_17AbstractAttributeERbEEaSEOSD_.exit.i.i.i.i.i66 ] - %.0811.i.i.i.i.i61 = phi ptr [ %.pre82, %.lr.ph.i.i.i.i.i59 ], [ %131, %_ZNSt8functionIFSt8optionalIPN4llvm5ValueEERKNS1_10IRPositionEPKNS1_17AbstractAttributeERbEEaSEOSD_.exit.i.i.i.i.i66 ] - %.0910.i.i.i.i.i62 = phi ptr [ %8, %.lr.ph.i.i.i.i.i59 ], [ %130, %_ZNSt8functionIFSt8optionalIPN4llvm5ValueEERKNS1_10IRPositionEPKNS1_17AbstractAttributeERbEEaSEOSD_.exit.i.i.i.i.i66 ] + %.012.i.i.i.i.i60 = phi i64 [ %38, %.lr.ph.i.i.i.i.i58 ], [ %132, %_ZNSt8functionIFSt8optionalIPN4llvm5ValueEERKNS1_10IRPositionEPKNS1_17AbstractAttributeERbEEaSEOSD_.exit.i.i.i.i.i67 ] + %.0811.i.i.i.i.i61 = phi ptr [ %.pre82, %.lr.ph.i.i.i.i.i58 ], [ %131, %_ZNSt8functionIFSt8optionalIPN4llvm5ValueEERKNS1_10IRPositionEPKNS1_17AbstractAttributeERbEEaSEOSD_.exit.i.i.i.i.i67 ] + %.0910.i.i.i.i.i62 = phi ptr [ %8, %.lr.ph.i.i.i.i.i58 ], [ %130, %_ZNSt8functionIFSt8optionalIPN4llvm5ValueEERKNS1_10IRPositionEPKNS1_17AbstractAttributeERbEEaSEOSD_.exit.i.i.i.i.i67 ] call void @llvm.lifetime.start.p0(ptr nonnull %3) %119 = getelementptr inbounds nuw i8, ptr %.0910.i.i.i.i.i62, i64 24 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %3, i8 0, i64 24, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %3, i8 0, i64 24, i1 false) %120 = load ptr, ptr %119, align 8, !tbaa !3460 %121 = getelementptr inbounds nuw i8, ptr %.0910.i.i.i.i.i62, i64 16 %122 = load ptr, ptr %121, align 8, !tbaa !50 @@ -162349,19 +162346,18 @@ _ZN4llvm23SmallVectorTemplateBaseISt8functionIFSt8optionalIPNS_5ValueEERKNS_10IR br i1 %.not.i.i.not.i.i.i.i.i.i.i63, label %_ZNSt8functionIFSt8optionalIPN4llvm5ValueEERKNS1_10IRPositionEPKNS1_17AbstractAttributeERbEEC2EOSD_.exit.i.i.i.i.i.i64, label %123 123: ; preds = %118 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(32) %.0910.i.i.i.i.i62, i64 16, i1 false), !tbaa.struct !2566 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(32) %.0910.i.i.i.i.i62, i64 16, i1 false), !tbaa.struct !2566 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %121, i8 0, i64 16, i1 false) + %.sroa.0.i.i.i.sroa.0.0.copyload.pre.i.i.i.i.i63 = load <2 x i64>, ptr %3, align 16, !tbaa !13 br label %_ZNSt8functionIFSt8optionalIPN4llvm5ValueEERKNS1_10IRPositionEPKNS1_17AbstractAttributeERbEEC2EOSD_.exit.i.i.i.i.i.i64 _ZNSt8functionIFSt8optionalIPN4llvm5ValueEERKNS1_10IRPositionEPKNS1_17AbstractAttributeERbEEC2EOSD_.exit.i.i.i.i.i.i64: ; preds = %123, %118 - call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.0.i.i.i.i.i.i.i.i57) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i.i.i.i.i.i57, ptr noundef nonnull align 8 dereferenceable(32) %3, i64 16, i1 false), !tbaa.struct !2566 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(32) %.0811.i.i.i.i.i61, i64 16, i1 false), !tbaa.struct !2566 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.0811.i.i.i.i.i61, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i.i.i.i.i.i57, i64 16, i1 false), !tbaa.struct !2566 - call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.0.i.i.i.i.i.i.i.i57) - %124 = getelementptr inbounds nuw i8, ptr %.0811.i.i.i.i.i61, i64 16 + %.sroa.0.i.i.i.sroa.0.0.copyload.i.i.i.i.i65 = phi <2 x i64> [ %.sroa.0.i.i.i.sroa.0.0.copyload.pre.i.i.i.i.i63, %123 ], [ zeroinitializer, %118 ] + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %.sroa.0.i.i.i.i.i.i.i.i57, ptr noundef nonnull align 8 dereferenceable(32) %.0812.i.i.i.i.i60, i64 16, i1 false), !tbaa.struct !2566 + store <2 x i64> %.sroa.0.i.i.i.sroa.0.0.copyload.i.i.i.i.i65, ptr %.0811.i.i.i.i.i61, align 8, !tbaa !13 + %124 = getelementptr inbounds nuw i8, ptr %.0812.i.i.i.i.i60, i64 16 %125 = load ptr, ptr %124, align 8, !tbaa !678 - store ptr %125, ptr %117, align 8, !tbaa !678 + store ptr %125, ptr %117, align 16, !tbaa !678 store ptr %122, ptr %124, align 8, !tbaa !678 %126 = getelementptr inbounds nuw i8, ptr %.0811.i.i.i.i.i61, i64 24 %127 = load ptr, ptr %126, align 8, !tbaa !678 @@ -162387,8 +162383,8 @@ _ZSt4moveIPSt8functionIFSt8optionalIPN4llvm5ValueEERKNS2_10IRPositionEPKNS2_17Ab br label %_ZSt4moveIPSt8functionIFSt8optionalIPN4llvm5ValueEERKNS2_10IRPositionEPKNS2_17AbstractAttributeERbEESF_ET0_T_SH_SG_.exit67 _ZSt4moveIPSt8functionIFSt8optionalIPN4llvm5ValueEERKNS2_10IRPositionEPKNS2_17AbstractAttributeERbEESF_ET0_T_SH_SG_.exit67: ; preds = %_ZSt4moveIPSt8functionIFSt8optionalIPN4llvm5ValueEERKNS2_10IRPositionEPKNS2_17AbstractAttributeERbEESF_ET0_T_SH_SG_.exit67.loopexit, %115, %_ZN4llvm23SmallVectorTemplateBaseISt8functionIFSt8optionalIPNS_5ValueEERKNS_10IRPositionEPKNS_17AbstractAttributeERbEELb0EE4growEm.exit - %134 = phi ptr [ %88, %_ZN4llvm23SmallVectorTemplateBaseISt8functionIFSt8optionalIPNS_5ValueEERKNS_10IRPositionEPKNS_17AbstractAttributeERbEELb0EE4growEm.exit ], [ %.pre82, %115 ], [ %.pre81, %_ZSt4moveIPSt8functionIFSt8optionalIPN4llvm5ValueEERKNS2_10IRPositionEPKNS2_17AbstractAttributeERbEESF_ET0_T_SH_SG_.exit67.loopexit ] - %.026 = phi i64 [ 0, %_ZN4llvm23SmallVectorTemplateBaseISt8functionIFSt8optionalIPNS_5ValueEERKNS_10IRPositionEPKNS_17AbstractAttributeERbEELb0EE4growEm.exit ], [ 0, %115 ], [ %38, %_ZSt4moveIPSt8functionIFSt8optionalIPN4llvm5ValueEERKNS2_10IRPositionEPKNS2_17AbstractAttributeERbEESF_ET0_T_SH_SG_.exit67.loopexit ] + %134 = phi ptr [ %88, %_ZN4llvm23SmallVectorTemplateBaseISt8functionIFSt8optionalIPNS_5ValueEERKNS_10IRPositionEPKNS_17AbstractAttributeERbEELb0EE4growEm.exit ], [ %.pre82, %115 ], [ %.pre81, %_ZSt4moveIPSt8functionIFSt8optionalIPN4llvm5ValueEERKNS2_10IRPositionEPKNS2_17AbstractAttributeERbEESF_ET0_T_SH_SG_.exit68.loopexit ] + %.026 = phi i64 [ 0, %_ZN4llvm23SmallVectorTemplateBaseISt8functionIFSt8optionalIPNS_5ValueEERKNS_10IRPositionEPKNS_17AbstractAttributeERbEELb0EE4growEm.exit ], [ 0, %115 ], [ %38, %_ZSt4moveIPSt8functionIFSt8optionalIPN4llvm5ValueEERKNS2_10IRPositionEPKNS2_17AbstractAttributeERbEESF_ET0_T_SH_SG_.exit68.loopexit ] %135 = load ptr, ptr %1, align 8, !tbaa !32 %136 = load i32, ptr %33, align 8, !tbaa !33 %137 = zext i32 %136 to i64 @@ -162402,8 +162398,8 @@ _ZSt4moveIPSt8functionIFSt8optionalIPN4llvm5ValueEERKNS2_10IRPositionEPKNS2_17Ab br label %.lr.ph.i.i.i.i.i68 .lr.ph.i.i.i.i.i68: ; preds = %.lr.ph.i.i.i.i.i68.preheader, %_ZSt10_ConstructISt8functionIFSt8optionalIPN4llvm5ValueEERKNS2_10IRPositionEPKNS2_17AbstractAttributeERbEEJSE_EEvPT_DpOT0_.exit.i.i.i.i.i - %.09.i.i.i.i.i = phi ptr [ %150, %_ZSt10_ConstructISt8functionIFSt8optionalIPN4llvm5ValueEERKNS2_10IRPositionEPKNS2_17AbstractAttributeERbEEJSE_EEvPT_DpOT0_.exit.i.i.i.i.i ], [ %139, %.lr.ph.i.i.i.i.i68.preheader ] - %.sroa.04.08.i.i.i.i.i = phi ptr [ %149, %_ZSt10_ConstructISt8functionIFSt8optionalIPN4llvm5ValueEERKNS2_10IRPositionEPKNS2_17AbstractAttributeERbEEJSE_EEvPT_DpOT0_.exit.i.i.i.i.i ], [ %140, %.lr.ph.i.i.i.i.i68.preheader ] + %.09.i.i.i.i.i = phi ptr [ %150, %_ZSt10_ConstructISt8functionIFSt8optionalIPN4llvm5ValueEERKNS2_10IRPositionEPKNS2_17AbstractAttributeERbEEJSE_EEvPT_DpOT0_.exit.i.i.i.i.i ], [ %139, %.lr.ph.i.i.i.i.i69.preheader ] + %.sroa.04.08.i.i.i.i.i = phi ptr [ %149, %_ZSt10_ConstructISt8functionIFSt8optionalIPN4llvm5ValueEERKNS2_10IRPositionEPKNS2_17AbstractAttributeERbEEJSE_EEvPT_DpOT0_.exit.i.i.i.i.i ], [ %140, %.lr.ph.i.i.i.i.i69.preheader ] %141 = getelementptr inbounds nuw i8, ptr %.09.i.i.i.i.i, i64 24 %142 = getelementptr inbounds nuw i8, ptr %.sroa.04.08.i.i.i.i.i, i64 24 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.09.i.i.i.i.i, i8 0, i64 24, i1 false) @@ -162433,7 +162429,7 @@ _ZN4llvm23SmallVectorTemplateBaseISt8functionIFSt8optionalIPNS_5ValueEERKNS_10IR br label %_ZN4llvm23SmallVectorTemplateBaseISt8functionIFSt8optionalIPNS_5ValueEERKNS_10IRPositionEPKNS_17AbstractAttributeERbEELb0EE18uninitialized_moveIPSE_SH_EEvT_SI_T0_.exit _ZN4llvm23SmallVectorTemplateBaseISt8functionIFSt8optionalIPNS_5ValueEERKNS_10IRPositionEPKNS_17AbstractAttributeERbEELb0EE18uninitialized_moveIPSE_SH_EEvT_SI_T0_.exit: ; preds = %_ZN4llvm23SmallVectorTemplateBaseISt8functionIFSt8optionalIPNS_5ValueEERKNS_10IRPositionEPKNS_17AbstractAttributeERbEELb0EE18uninitialized_moveIPSE_SH_EEvT_SI_T0_.exit.loopexit, %_ZSt4moveIPSt8functionIFSt8optionalIPN4llvm5ValueEERKNS2_10IRPositionEPKNS2_17AbstractAttributeERbEESF_ET0_T_SH_SG_.exit67 - %151 = phi ptr [ %.pre83, %_ZN4llvm23SmallVectorTemplateBaseISt8functionIFSt8optionalIPNS_5ValueEERKNS_10IRPositionEPKNS_17AbstractAttributeERbEELb0EE18uninitialized_moveIPSE_SH_EEvT_SI_T0_.exit.loopexit ], [ %135, %_ZSt4moveIPSt8functionIFSt8optionalIPN4llvm5ValueEERKNS2_10IRPositionEPKNS2_17AbstractAttributeERbEESF_ET0_T_SH_SG_.exit67 ] + %151 = phi ptr [ %.pre83, %_ZN4llvm23SmallVectorTemplateBaseISt8functionIFSt8optionalIPNS_5ValueEERKNS_10IRPositionEPKNS_17AbstractAttributeERbEELb0EE18uninitialized_moveIPSE_SH_EEvT_SI_T0_.exit.loopexit ], [ %135, %_ZSt4moveIPSt8functionIFSt8optionalIPN4llvm5ValueEERKNS2_10IRPositionEPKNS2_17AbstractAttributeERbEESF_ET0_T_SH_SG_.exit68 ] store i32 %34, ptr %36, align 8, !tbaa !33 %152 = load i32, ptr %33, align 8, !tbaa !33 %.not4.i.i70 = icmp eq i32 %152, 0 @@ -162446,7 +162442,7 @@ _ZN4llvm23SmallVectorTemplateBaseISt8functionIFSt8optionalIPNS_5ValueEERKNS_10IR br label %.lr.ph.i.i73 .lr.ph.i.i73: ; preds = %_ZNSt14_Function_baseD2Ev.exit.i.i76, %.lr.ph.i.preheader.i71 - %.05.i.i74 = phi ptr [ %155, %_ZNSt14_Function_baseD2Ev.exit.i.i76 ], [ %154, %.lr.ph.i.preheader.i71 ] + %.05.i.i74 = phi ptr [ %155, %_ZNSt14_Function_baseD2Ev.exit.i.i77 ], [ %154, %.lr.ph.i.preheader.i72 ] %155 = getelementptr inbounds i8, ptr %.05.i.i74, i64 -32 %156 = getelementptr inbounds i8, ptr %.05.i.i74, i64 -16 %157 = load ptr, ptr %156, align 8, !tbaa !50 diff --git a/bench/llvm/optimized/FunctionAttrs.ll b/bench/llvm/optimized/FunctionAttrs.ll index a56bfb705e2..1930d6a1ce8 100644 --- a/bench/llvm/optimized/FunctionAttrs.ll +++ b/bench/llvm/optimized/FunctionAttrs.ll @@ -24766,44 +24766,37 @@ define internal fastcc void @_ZN12_GLOBAL__N_116AttributeInferer3runERKN4llvm14S %4 = alloca %"class.std::function.697", align 8 %.sroa.0.i.i.i5.i502 = alloca { i64, i64 }, align 8 %5 = alloca %"class.std::function.694", align 8 - %.sroa.0.i.i.i.i503 = alloca { i64, i64 }, align 8 - %6 = alloca %"class.std::function.691", align 8 + %.sroa.0.i.i.i.i503 = alloca %"class.std::function.691", align 16 %.sroa.0.i.i.i8.i486 = alloca { i64, i64 }, align 8 %7 = alloca %"class.std::function.697", align 8 %.sroa.0.i.i.i5.i487 = alloca { i64, i64 }, align 8 %8 = alloca %"class.std::function.694", align 8 - %.sroa.0.i.i.i.i488 = alloca { i64, i64 }, align 8 - %9 = alloca %"class.std::function.691", align 8 + %.sroa.0.i.i.i.i488 = alloca %"class.std::function.691", align 16 %.sroa.0.i.i.i8.i471 = alloca { i64, i64 }, align 8 %10 = alloca %"class.std::function.697", align 8 %.sroa.0.i.i.i5.i472 = alloca { i64, i64 }, align 8 %11 = alloca %"class.std::function.694", align 8 - %.sroa.0.i.i.i.i473 = alloca { i64, i64 }, align 8 - %12 = alloca %"class.std::function.691", align 8 + %.sroa.0.i.i.i.i473 = alloca %"class.std::function.691", align 16 %.sroa.0.i.i.i8.i456 = alloca { i64, i64 }, align 8 %13 = alloca %"class.std::function.697", align 8 %.sroa.0.i.i.i5.i457 = alloca { i64, i64 }, align 8 %14 = alloca %"class.std::function.694", align 8 - %.sroa.0.i.i.i.i458 = alloca { i64, i64 }, align 8 - %15 = alloca %"class.std::function.691", align 8 + %.sroa.0.i.i.i.i458 = alloca %"class.std::function.691", align 16 %.sroa.0.i.i.i8.i441 = alloca { i64, i64 }, align 8 %16 = alloca %"class.std::function.697", align 8 %.sroa.0.i.i.i5.i442 = alloca { i64, i64 }, align 8 %17 = alloca %"class.std::function.694", align 8 - %.sroa.0.i.i.i.i443 = alloca { i64, i64 }, align 8 - %18 = alloca %"class.std::function.691", align 8 + %.sroa.0.i.i.i.i443 = alloca %"class.std::function.691", align 16 %.sroa.0.i.i.i8.i126 = alloca { i64, i64 }, align 8 %19 = alloca %"class.std::function.697", align 8 %.sroa.0.i.i.i5.i127 = alloca { i64, i64 }, align 8 %20 = alloca %"class.std::function.694", align 8 - %.sroa.0.i.i.i.i128 = alloca { i64, i64 }, align 8 - %21 = alloca %"class.std::function.691", align 8 + %.sroa.0.i.i.i.i128 = alloca %"class.std::function.691", align 16 %.sroa.0.i.i.i8.i = alloca { i64, i64 }, align 8 %22 = alloca %"class.std::function.697", align 8 %.sroa.0.i.i.i5.i = alloca { i64, i64 }, align 8 %23 = alloca %"class.std::function.694", align 8 - %.sroa.0.i.i.i.i = alloca { i64, i64 }, align 8 - %24 = alloca %"class.std::function.691", align 8 + %.sroa.0.i.i.i.i = alloca %"class.std::function.691", align 16 %25 = alloca %"struct.__gnu_cxx::__ops::_Iter_pred.712", align 8 %26 = alloca %"class.llvm::SmallVector.686", align 8 %27 = alloca %"class.llvm::SmallVector.686", align 8 @@ -24986,7 +24979,7 @@ _ZN4llvm11SmallVectorIN12_GLOBAL__N_116AttributeInferer19InferenceDescriptorELj4 br label %131 131: ; preds = %.lr.ph610, %1151 - %.0609 = phi ptr [ %80, %.lr.ph610 ], [ %1152, %1151 ] + %.0609 = phi ptr [ %80, %.lr.ph617 ], [ %1152, %1151 ] %132 = load ptr, ptr %.0609, align 8, !tbaa !108 %133 = load i32, ptr %29, align 8, !tbaa !26 %.not.i = icmp eq i32 %133, 0 @@ -25528,7 +25521,7 @@ _ZNKSt8functionIFbRKN4llvm8FunctionEEEclES3_.exit.i.i.i.i.i.i: ; preds = %305 "_ZN9__gnu_cxx5__ops10_Iter_predIZN12_GLOBAL__N_116AttributeInferer3runERKN4llvm14SmallSetVectorIPNS4_8FunctionELj8EEERNS4_8SmallSetIS7_Lj8ESt4lessIS7_EEEE3$_0EclIPNS3_19InferenceDescriptorEEEbT_.exit.thread26.i.i.i.i": ; preds = %"_ZN9__gnu_cxx5__ops10_Iter_predIZN12_GLOBAL__N_116AttributeInferer3runERKN4llvm14SmallSetVectorIPNS4_8FunctionELj8EEERNS4_8SmallSetIS7_Lj8ESt4lessIS7_EEEE3$_0EclIPNS3_19InferenceDescriptorEEEbT_.exit.i.i.i.i", %314, %_ZNKSt8functionIFbRKN4llvm8FunctionEEEclES3_.exit.i.i.i.i.i.i call void @llvm.lifetime.start.p0(ptr nonnull %24) %327 = getelementptr inbounds nuw i8, ptr %.01734.i.i.i.i, i64 24 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %24, i8 0, i64 24, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %24, i8 0, i64 24, i1 false) %328 = load ptr, ptr %327, align 8, !tbaa !286 %329 = getelementptr inbounds nuw i8, ptr %.01734.i.i.i.i, i64 16 %330 = load ptr, ptr %329, align 8, !tbaa !43 @@ -25536,19 +25529,18 @@ _ZNKSt8functionIFbRKN4llvm8FunctionEEEclES3_.exit.i.i.i.i.i.i: ; preds = %305 br i1 %.not.i.i.not.i.i.i, label %_ZNSt8functionIFbRKN4llvm8FunctionEEEC2EOS5_.exit.i.i, label %331 331: ; preds = %"_ZN9__gnu_cxx5__ops10_Iter_predIZN12_GLOBAL__N_116AttributeInferer3runERKN4llvm14SmallSetVectorIPNS4_8FunctionELj8EEERNS4_8SmallSetIS7_Lj8ESt4lessIS7_EEEE3$_0EclIPNS3_19InferenceDescriptorEEEbT_.exit.thread26.i.i.i.i" - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull align 8 dereferenceable(101) %.01734.i.i.i.i, i64 16, i1 false), !tbaa.struct !1016 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %24, ptr noundef nonnull align 8 dereferenceable(101) %.01734.i.i.i.i, i64 16, i1 false), !tbaa.struct !1016 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %329, i8 0, i64 16, i1 false) + %.sroa.0.i.i.i.i.sroa.0.0.copyload.pre = load <2 x i64>, ptr %24, align 16, !tbaa !151 br label %_ZNSt8functionIFbRKN4llvm8FunctionEEEC2EOS5_.exit.i.i _ZNSt8functionIFbRKN4llvm8FunctionEEEC2EOS5_.exit.i.i: ; preds = %331, %"_ZN9__gnu_cxx5__ops10_Iter_predIZN12_GLOBAL__N_116AttributeInferer3runERKN4llvm14SmallSetVectorIPNS4_8FunctionELj8EEERNS4_8SmallSetIS7_Lj8ESt4lessIS7_EEEE3$_0EclIPNS3_19InferenceDescriptorEEEbT_.exit.thread26.i.i.i.i" - call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.0.i.i.i.i) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(32) %24, i64 16, i1 false), !tbaa.struct !1016 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull align 8 dereferenceable(101) %.033.i.i.i.i, i64 16, i1 false), !tbaa.struct !1016 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(101) %.033.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i.i, i64 16, i1 false), !tbaa.struct !1016 - call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.0.i.i.i.i) + %.sroa.0.i.i.i.i.sroa.0.0.copyload = phi <2 x i64> [ %.sroa.0.i.i.i.i.sroa.0.0.copyload.pre, %331 ], [ zeroinitializer, %"_ZN9__gnu_cxx5__ops10_Iter_predIZN12_GLOBAL__N_116AttributeInferer3runERKN4llvm14SmallSetVectorIPNS4_8FunctionELj8EEERNS4_8SmallSetIS7_Lj8ESt4lessIS7_EEEE3$_0EclIPNS3_19InferenceDescriptorEEEbT_.exit.thread26.i.i.i.i" ] + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %.sroa.0.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(101) %.033.i.i.i.i, i64 16, i1 false), !tbaa.struct !1016 + store <2 x i64> %.sroa.0.i.i.i.i.sroa.0.0.copyload, ptr %.033.i.i.i.i, align 8, !tbaa !151 %332 = getelementptr inbounds nuw i8, ptr %.033.i.i.i.i, i64 16 %333 = load ptr, ptr %332, align 8, !tbaa !214 - store ptr %333, ptr %86, align 8, !tbaa !214 + store ptr %333, ptr %86, align 16, !tbaa !214 store ptr %330, ptr %332, align 8, !tbaa !214 %334 = getelementptr inbounds nuw i8, ptr %.033.i.i.i.i, i64 24 %335 = load ptr, ptr %334, align 8, !tbaa !214 @@ -25916,8 +25908,8 @@ _ZN4llvm12instructionsERNS_8FunctionE.exit: ; preds = %.lr.ph.i.i.i.i59, % br i1 %.not.i.i61, label %._crit_edge.i.i.i.i.i.i65, label %.lr.ph.i.i.i.i.i.i62 .lr.ph.i.i.i.i.i.i62: ; preds = %.lr.ph607, %"_ZN9__gnu_cxx5__ops10_Iter_predIZN12_GLOBAL__N_116AttributeInferer3runERKN4llvm14SmallSetVectorIPNS4_8FunctionELj8EEERNS4_8SmallSetIS7_Lj8ESt4lessIS7_EEEE3$_2EclIPNS3_19InferenceDescriptorEEEbT_.exit218.thread" - %.032.i.i.i.i.i.i = phi i64 [ %920, %"_ZN9__gnu_cxx5__ops10_Iter_predIZN12_GLOBAL__N_116AttributeInferer3runERKN4llvm14SmallSetVectorIPNS4_8FunctionELj8EEERNS4_8SmallSetIS7_Lj8ESt4lessIS7_EEEE3$_2EclIPNS3_19InferenceDescriptorEEEbT_.exit218.thread" ], [ %475, %.lr.ph607 ] - %.02931.i.i.i.i.i.i = phi ptr [ %919, %"_ZN9__gnu_cxx5__ops10_Iter_predIZN12_GLOBAL__N_116AttributeInferer3runERKN4llvm14SmallSetVectorIPNS4_8FunctionELj8EEERNS4_8SmallSetIS7_Lj8ESt4lessIS7_EEEE3$_2EclIPNS3_19InferenceDescriptorEEEbT_.exit218.thread" ], [ %.val6.i60, %.lr.ph607 ] + %.032.i.i.i.i.i.i = phi i64 [ %920, %"_ZN9__gnu_cxx5__ops10_Iter_predIZN12_GLOBAL__N_116AttributeInferer3runERKN4llvm14SmallSetVectorIPNS4_8FunctionELj8EEERNS4_8SmallSetIS7_Lj8ESt4lessIS7_EEEE3$_2EclIPNS3_19InferenceDescriptorEEEbT_.exit218.thread" ], [ %475, %.lr.ph614 ] + %.02931.i.i.i.i.i.i = phi ptr [ %919, %"_ZN9__gnu_cxx5__ops10_Iter_predIZN12_GLOBAL__N_116AttributeInferer3runERKN4llvm14SmallSetVectorIPNS4_8FunctionELj8EEERNS4_8SmallSetIS7_Lj8ESt4lessIS7_EEEE3$_2EclIPNS3_19InferenceDescriptorEEEbT_.exit218.thread" ], [ %.val6.i60, %.lr.ph614 ] %476 = getelementptr inbounds nuw i8, ptr %.02931.i.i.i.i.i.i, i64 48 %477 = load ptr, ptr %476, align 8, !tbaa !43 %.not.i.i.i.i367 = icmp eq ptr %477, null @@ -26078,7 +26070,7 @@ _ZNKSt8functionIFbRN4llvm11InstructionEEEclES2_.exit.i.i368: ; preds = %.lr.ph.i 528: ; preds = %525 call void @llvm.lifetime.start.p0(ptr nonnull %6) %529 = getelementptr inbounds nuw i8, ptr %.01730.i.i.i.i.i.i417, i64 24 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %6, i8 0, i64 24, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %6, i8 0, i64 24, i1 false) %530 = load ptr, ptr %529, align 8, !tbaa !286 %531 = getelementptr inbounds nuw i8, ptr %.01730.i.i.i.i.i.i417, i64 16 %532 = load ptr, ptr %531, align 8, !tbaa !43 @@ -26086,19 +26078,18 @@ _ZNKSt8functionIFbRN4llvm11InstructionEEEclES2_.exit.i.i368: ; preds = %.lr.ph.i br i1 %.not.i.i.not.i.i.i504, label %_ZNSt8functionIFbRKN4llvm8FunctionEEEC2EOS5_.exit.i.i505, label %533 533: ; preds = %528 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(101) %.01730.i.i.i.i.i.i417, i64 16, i1 false), !tbaa.struct !1016 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(101) %.01730.i.i.i.i.i.i417, i64 16, i1 false), !tbaa.struct !1016 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %531, i8 0, i64 16, i1 false) + %.sroa.0.i.i.i.i503.sroa.0.0.copyload.pre = load <2 x i64>, ptr %6, align 16, !tbaa !151 br label %_ZNSt8functionIFbRKN4llvm8FunctionEEEC2EOS5_.exit.i.i505 _ZNSt8functionIFbRKN4llvm8FunctionEEEC2EOS5_.exit.i.i505: ; preds = %533, %528 - call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.0.i.i.i.i503) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i.i503, ptr noundef nonnull align 8 dereferenceable(32) %6, i64 16, i1 false), !tbaa.struct !1016 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(101) %.029.i.i.i.i.i.i418, i64 16, i1 false), !tbaa.struct !1016 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(101) %.029.i.i.i.i.i.i418, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i.i503, i64 16, i1 false), !tbaa.struct !1016 - call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.0.i.i.i.i503) + %.sroa.0.i.i.i.i503.sroa.0.0.copyload = phi <2 x i64> [ %.sroa.0.i.i.i.i503.sroa.0.0.copyload.pre, %533 ], [ zeroinitializer, %528 ] + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %.sroa.0.i.i.i.i503, ptr noundef nonnull align 8 dereferenceable(101) %.029.i.i.i.i.i.i418, i64 16, i1 false), !tbaa.struct !1016 + store <2 x i64> %.sroa.0.i.i.i.i503.sroa.0.0.copyload, ptr %.029.i.i.i.i.i.i418, align 8, !tbaa !151 %534 = getelementptr inbounds nuw i8, ptr %.029.i.i.i.i.i.i418, i64 16 %535 = load ptr, ptr %534, align 8, !tbaa !214 - store ptr %535, ptr %114, align 8, !tbaa !214 + store ptr %535, ptr %114, align 16, !tbaa !214 store ptr %532, ptr %534, align 8, !tbaa !214 %536 = getelementptr inbounds nuw i8, ptr %.029.i.i.i.i.i.i418, i64 24 %537 = load ptr, ptr %536, align 8, !tbaa !214 @@ -26421,7 +26412,7 @@ _ZNKSt8functionIFbRN4llvm11InstructionEEEclES2_.exit.i.i294: ; preds = %"_ZN9__g 639: ; preds = %636 call void @llvm.lifetime.start.p0(ptr nonnull %9) %640 = getelementptr inbounds nuw i8, ptr %.01730.i.i.i.i.i.i343, i64 24 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %9, i8 0, i64 24, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %9, i8 0, i64 24, i1 false) %641 = load ptr, ptr %640, align 8, !tbaa !286 %642 = getelementptr inbounds nuw i8, ptr %.01730.i.i.i.i.i.i343, i64 16 %643 = load ptr, ptr %642, align 8, !tbaa !43 @@ -26429,19 +26420,18 @@ _ZNKSt8functionIFbRN4llvm11InstructionEEEclES2_.exit.i.i294: ; preds = %"_ZN9__g br i1 %.not.i.i.not.i.i.i489, label %_ZNSt8functionIFbRKN4llvm8FunctionEEEC2EOS5_.exit.i.i490, label %644 644: ; preds = %639 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(101) %.01730.i.i.i.i.i.i343, i64 16, i1 false), !tbaa.struct !1016 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(101) %.01730.i.i.i.i.i.i343, i64 16, i1 false), !tbaa.struct !1016 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %642, i8 0, i64 16, i1 false) + %.sroa.0.i.i.i.i488.sroa.0.0.copyload.pre = load <2 x i64>, ptr %9, align 16, !tbaa !151 br label %_ZNSt8functionIFbRKN4llvm8FunctionEEEC2EOS5_.exit.i.i490 _ZNSt8functionIFbRKN4llvm8FunctionEEEC2EOS5_.exit.i.i490: ; preds = %644, %639 - call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.0.i.i.i.i488) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i.i488, ptr noundef nonnull align 8 dereferenceable(32) %9, i64 16, i1 false), !tbaa.struct !1016 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(101) %.029.i.i.i.i.i.i344, i64 16, i1 false), !tbaa.struct !1016 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(101) %.029.i.i.i.i.i.i344, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i.i488, i64 16, i1 false), !tbaa.struct !1016 - call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.0.i.i.i.i488) + %.sroa.0.i.i.i.i488.sroa.0.0.copyload = phi <2 x i64> [ %.sroa.0.i.i.i.i488.sroa.0.0.copyload.pre, %644 ], [ zeroinitializer, %639 ] + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %.sroa.0.i.i.i.i488, ptr noundef nonnull align 8 dereferenceable(101) %.029.i.i.i.i.i.i344, i64 16, i1 false), !tbaa.struct !1016 + store <2 x i64> %.sroa.0.i.i.i.i488.sroa.0.0.copyload, ptr %.029.i.i.i.i.i.i344, align 8, !tbaa !151 %645 = getelementptr inbounds nuw i8, ptr %.029.i.i.i.i.i.i344, i64 16 %646 = load ptr, ptr %645, align 8, !tbaa !214 - store ptr %646, ptr %108, align 8, !tbaa !214 + store ptr %646, ptr %108, align 16, !tbaa !214 store ptr %643, ptr %645, align 8, !tbaa !214 %647 = getelementptr inbounds nuw i8, ptr %.029.i.i.i.i.i.i344, i64 24 %648 = load ptr, ptr %647, align 8, !tbaa !214 @@ -26764,7 +26754,7 @@ _ZNKSt8functionIFbRN4llvm11InstructionEEEclES2_.exit.i.i220: ; preds = %"_ZN9__g 750: ; preds = %747 call void @llvm.lifetime.start.p0(ptr nonnull %12) %751 = getelementptr inbounds nuw i8, ptr %.01730.i.i.i.i.i.i269, i64 24 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %12, i8 0, i64 24, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %12, i8 0, i64 24, i1 false) %752 = load ptr, ptr %751, align 8, !tbaa !286 %753 = getelementptr inbounds nuw i8, ptr %.01730.i.i.i.i.i.i269, i64 16 %754 = load ptr, ptr %753, align 8, !tbaa !43 @@ -26772,19 +26762,18 @@ _ZNKSt8functionIFbRN4llvm11InstructionEEEclES2_.exit.i.i220: ; preds = %"_ZN9__g br i1 %.not.i.i.not.i.i.i474, label %_ZNSt8functionIFbRKN4llvm8FunctionEEEC2EOS5_.exit.i.i475, label %755 755: ; preds = %750 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull align 8 dereferenceable(101) %.01730.i.i.i.i.i.i269, i64 16, i1 false), !tbaa.struct !1016 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %12, ptr noundef nonnull align 8 dereferenceable(101) %.01730.i.i.i.i.i.i269, i64 16, i1 false), !tbaa.struct !1016 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %753, i8 0, i64 16, i1 false) + %.sroa.0.i.i.i.i473.sroa.0.0.copyload.pre = load <2 x i64>, ptr %12, align 16, !tbaa !151 br label %_ZNSt8functionIFbRKN4llvm8FunctionEEEC2EOS5_.exit.i.i475 _ZNSt8functionIFbRKN4llvm8FunctionEEEC2EOS5_.exit.i.i475: ; preds = %755, %750 - call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.0.i.i.i.i473) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i.i473, ptr noundef nonnull align 8 dereferenceable(32) %12, i64 16, i1 false), !tbaa.struct !1016 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull align 8 dereferenceable(101) %.029.i.i.i.i.i.i270, i64 16, i1 false), !tbaa.struct !1016 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(101) %.029.i.i.i.i.i.i270, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i.i473, i64 16, i1 false), !tbaa.struct !1016 - call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.0.i.i.i.i473) + %.sroa.0.i.i.i.i473.sroa.0.0.copyload = phi <2 x i64> [ %.sroa.0.i.i.i.i473.sroa.0.0.copyload.pre, %755 ], [ zeroinitializer, %750 ] + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %.sroa.0.i.i.i.i473, ptr noundef nonnull align 8 dereferenceable(101) %.029.i.i.i.i.i.i270, i64 16, i1 false), !tbaa.struct !1016 + store <2 x i64> %.sroa.0.i.i.i.i473.sroa.0.0.copyload, ptr %.029.i.i.i.i.i.i270, align 8, !tbaa !151 %756 = getelementptr inbounds nuw i8, ptr %.029.i.i.i.i.i.i270, i64 16 %757 = load ptr, ptr %756, align 8, !tbaa !214 - store ptr %757, ptr %102, align 8, !tbaa !214 + store ptr %757, ptr %102, align 16, !tbaa !214 store ptr %754, ptr %756, align 8, !tbaa !214 %758 = getelementptr inbounds nuw i8, ptr %.029.i.i.i.i.i.i270, i64 24 %759 = load ptr, ptr %758, align 8, !tbaa !214 @@ -27107,7 +27096,7 @@ _ZNKSt8functionIFbRN4llvm11InstructionEEEclES2_.exit.i.i146: ; preds = %"_ZN9__g 861: ; preds = %858 call void @llvm.lifetime.start.p0(ptr nonnull %15) %862 = getelementptr inbounds nuw i8, ptr %.01730.i.i.i.i.i.i195, i64 24 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %15, i8 0, i64 24, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %15, i8 0, i64 24, i1 false) %863 = load ptr, ptr %862, align 8, !tbaa !286 %864 = getelementptr inbounds nuw i8, ptr %.01730.i.i.i.i.i.i195, i64 16 %865 = load ptr, ptr %864, align 8, !tbaa !43 @@ -27115,19 +27104,18 @@ _ZNKSt8functionIFbRN4llvm11InstructionEEEclES2_.exit.i.i146: ; preds = %"_ZN9__g br i1 %.not.i.i.not.i.i.i459, label %_ZNSt8functionIFbRKN4llvm8FunctionEEEC2EOS5_.exit.i.i460, label %866 866: ; preds = %861 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull align 8 dereferenceable(101) %.01730.i.i.i.i.i.i195, i64 16, i1 false), !tbaa.struct !1016 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %15, ptr noundef nonnull align 8 dereferenceable(101) %.01730.i.i.i.i.i.i195, i64 16, i1 false), !tbaa.struct !1016 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %864, i8 0, i64 16, i1 false) + %.sroa.0.i.i.i.i458.sroa.0.0.copyload.pre = load <2 x i64>, ptr %15, align 16, !tbaa !151 br label %_ZNSt8functionIFbRKN4llvm8FunctionEEEC2EOS5_.exit.i.i460 _ZNSt8functionIFbRKN4llvm8FunctionEEEC2EOS5_.exit.i.i460: ; preds = %866, %861 - call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.0.i.i.i.i458) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i.i458, ptr noundef nonnull align 8 dereferenceable(32) %15, i64 16, i1 false), !tbaa.struct !1016 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull align 8 dereferenceable(101) %.029.i.i.i.i.i.i196, i64 16, i1 false), !tbaa.struct !1016 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(101) %.029.i.i.i.i.i.i196, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i.i458, i64 16, i1 false), !tbaa.struct !1016 - call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.0.i.i.i.i458) + %.sroa.0.i.i.i.i458.sroa.0.0.copyload = phi <2 x i64> [ %.sroa.0.i.i.i.i458.sroa.0.0.copyload.pre, %866 ], [ zeroinitializer, %861 ] + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %.sroa.0.i.i.i.i458, ptr noundef nonnull align 8 dereferenceable(101) %.029.i.i.i.i.i.i196, i64 16, i1 false), !tbaa.struct !1016 + store <2 x i64> %.sroa.0.i.i.i.i458.sroa.0.0.copyload, ptr %.029.i.i.i.i.i.i196, align 8, !tbaa !151 %867 = getelementptr inbounds nuw i8, ptr %.029.i.i.i.i.i.i196, i64 16 %868 = load ptr, ptr %867, align 8, !tbaa !214 - store ptr %868, ptr %96, align 8, !tbaa !214 + store ptr %868, ptr %96, align 16, !tbaa !214 store ptr %865, ptr %867, align 8, !tbaa !214 %869 = getelementptr inbounds nuw i8, ptr %.029.i.i.i.i.i.i196, i64 24 %870 = load ptr, ptr %869, align 8, !tbaa !214 @@ -27301,8 +27289,8 @@ _ZN4llvm23SmallVectorTemplateBaseIN12_GLOBAL__N_116AttributeInferer19InferenceDe br label %._crit_edge.i.i.i.i.i.i65 ._crit_edge.i.i.i.i.i.i65: ; preds = %._crit_edge.loopexit.i.i.i.i.i.i63, %.lr.ph607 - %.pre-phi34.i.i.i.i.i.i = phi i64 [ %922, %._crit_edge.loopexit.i.i.i.i.i.i63 ], [ %472, %.lr.ph607 ] - %.029.lcssa.i.i.i.i.i.i66 = phi ptr [ %919, %._crit_edge.loopexit.i.i.i.i.i.i63 ], [ %.val6.i60, %.lr.ph607 ] + %.pre-phi34.i.i.i.i.i.i = phi i64 [ %922, %._crit_edge.loopexit.i.i.i.i.i.i63 ], [ %472, %.lr.ph614 ] + %.029.lcssa.i.i.i.i.i.i66 = phi ptr [ %919, %._crit_edge.loopexit.i.i.i.i.i.i63 ], [ %.val6.i60, %.lr.ph614 ] switch i64 %.pre-phi34.i.i.i.i.i.i, label %"_ZSt9__find_ifIPN12_GLOBAL__N_116AttributeInferer19InferenceDescriptorEN9__gnu_cxx5__ops10_Iter_predIZNS1_3runERKN4llvm14SmallSetVectorIPNS7_8FunctionELj8EEERNS7_8SmallSetISA_Lj8ESt4lessISA_EEEE3$_2EEET_SL_SL_T0_.exit.thread.i.i.i.i" [ i64 3, label %923 i64 2, label %927 @@ -27519,7 +27507,7 @@ _ZNKSt8functionIFbRN4llvm11InstructionEEEclES2_.exit.i.i: ; preds = %.lr.ph.i.i. 991: ; preds = %988 call void @llvm.lifetime.start.p0(ptr nonnull %18) %992 = getelementptr inbounds nuw i8, ptr %.01730.i.i.i.i.i.i, i64 24 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %18, i8 0, i64 24, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %18, i8 0, i64 24, i1 false) %993 = load ptr, ptr %992, align 8, !tbaa !286 %994 = getelementptr inbounds nuw i8, ptr %.01730.i.i.i.i.i.i, i64 16 %995 = load ptr, ptr %994, align 8, !tbaa !43 @@ -27527,19 +27515,18 @@ _ZNKSt8functionIFbRN4llvm11InstructionEEEclES2_.exit.i.i: ; preds = %.lr.ph.i.i. br i1 %.not.i.i.not.i.i.i444, label %_ZNSt8functionIFbRKN4llvm8FunctionEEEC2EOS5_.exit.i.i445, label %996 996: ; preds = %991 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull align 8 dereferenceable(101) %.01730.i.i.i.i.i.i, i64 16, i1 false), !tbaa.struct !1016 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %18, ptr noundef nonnull align 8 dereferenceable(101) %.01730.i.i.i.i.i.i, i64 16, i1 false), !tbaa.struct !1016 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %994, i8 0, i64 16, i1 false) + %.sroa.0.i.i.i.i443.sroa.0.0.copyload.pre = load <2 x i64>, ptr %18, align 16, !tbaa !151 br label %_ZNSt8functionIFbRKN4llvm8FunctionEEEC2EOS5_.exit.i.i445 _ZNSt8functionIFbRKN4llvm8FunctionEEEC2EOS5_.exit.i.i445: ; preds = %996, %991 - call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.0.i.i.i.i443) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i.i443, ptr noundef nonnull align 8 dereferenceable(32) %18, i64 16, i1 false), !tbaa.struct !1016 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull align 8 dereferenceable(101) %.029.i.i.i.i.i.i, i64 16, i1 false), !tbaa.struct !1016 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(101) %.029.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i.i443, i64 16, i1 false), !tbaa.struct !1016 - call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.0.i.i.i.i443) + %.sroa.0.i.i.i.i443.sroa.0.0.copyload = phi <2 x i64> [ %.sroa.0.i.i.i.i443.sroa.0.0.copyload.pre, %996 ], [ zeroinitializer, %991 ] + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %.sroa.0.i.i.i.i443, ptr noundef nonnull align 8 dereferenceable(101) %.029.i.i.i.i.i.i, i64 16, i1 false), !tbaa.struct !1016 + store <2 x i64> %.sroa.0.i.i.i.i443.sroa.0.0.copyload, ptr %.029.i.i.i.i.i.i, align 8, !tbaa !151 %997 = getelementptr inbounds nuw i8, ptr %.029.i.i.i.i.i.i, i64 16 %998 = load ptr, ptr %997, align 8, !tbaa !214 - store ptr %998, ptr %126, align 8, !tbaa !214 + store ptr %998, ptr %126, align 16, !tbaa !214 store ptr %995, ptr %997, align 8, !tbaa !214 %999 = getelementptr inbounds nuw i8, ptr %.029.i.i.i.i.i.i, i64 24 %1000 = load ptr, ptr %999, align 8, !tbaa !214 @@ -27713,7 +27700,7 @@ _ZN4llvm23SmallVectorTemplateBaseIN12_GLOBAL__N_116AttributeInferer19InferenceDe "_ZN9__gnu_cxx5__ops10_Iter_predIZN12_GLOBAL__N_116AttributeInferer3runERKN4llvm14SmallSetVectorIPNS4_8FunctionELj8EEERNS4_8SmallSetIS7_Lj8ESt4lessIS7_EEEE3$_2EclIPNS3_19InferenceDescriptorEEEbT_.exit.thread": ; preds = %_ZNKSt8functionIFbRN4llvm11InstructionEEEclES2_.exit.i.i call void @llvm.lifetime.start.p0(ptr nonnull %21) %1054 = getelementptr inbounds nuw i8, ptr %.01725.i.i.i.i, i64 24 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %21, i8 0, i64 24, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %21, i8 0, i64 24, i1 false) %1055 = load ptr, ptr %1054, align 8, !tbaa !286 %1056 = getelementptr inbounds nuw i8, ptr %.01725.i.i.i.i, i64 16 %1057 = load ptr, ptr %1056, align 8, !tbaa !43 @@ -27721,19 +27708,18 @@ _ZN4llvm23SmallVectorTemplateBaseIN12_GLOBAL__N_116AttributeInferer19InferenceDe br i1 %.not.i.i.not.i.i.i129, label %_ZNSt8functionIFbRKN4llvm8FunctionEEEC2EOS5_.exit.i.i130, label %1058 1058: ; preds = %"_ZN9__gnu_cxx5__ops10_Iter_predIZN12_GLOBAL__N_116AttributeInferer3runERKN4llvm14SmallSetVectorIPNS4_8FunctionELj8EEERNS4_8SmallSetIS7_Lj8ESt4lessIS7_EEEE3$_2EclIPNS3_19InferenceDescriptorEEEbT_.exit.thread" - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull align 8 dereferenceable(101) %.01725.i.i.i.i, i64 16, i1 false), !tbaa.struct !1016 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %21, ptr noundef nonnull align 8 dereferenceable(101) %.01725.i.i.i.i, i64 16, i1 false), !tbaa.struct !1016 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %1056, i8 0, i64 16, i1 false) + %.sroa.0.i.i.i.i128.sroa.0.0.copyload.pre = load <2 x i64>, ptr %21, align 16, !tbaa !151 br label %_ZNSt8functionIFbRKN4llvm8FunctionEEEC2EOS5_.exit.i.i130 _ZNSt8functionIFbRKN4llvm8FunctionEEEC2EOS5_.exit.i.i130: ; preds = %1058, %"_ZN9__gnu_cxx5__ops10_Iter_predIZN12_GLOBAL__N_116AttributeInferer3runERKN4llvm14SmallSetVectorIPNS4_8FunctionELj8EEERNS4_8SmallSetIS7_Lj8ESt4lessIS7_EEEE3$_2EclIPNS3_19InferenceDescriptorEEEbT_.exit.thread" - call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.0.i.i.i.i128) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i.i128, ptr noundef nonnull align 8 dereferenceable(32) %21, i64 16, i1 false), !tbaa.struct !1016 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull align 8 dereferenceable(101) %.024.i.i.i.i, i64 16, i1 false), !tbaa.struct !1016 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(101) %.024.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i.i128, i64 16, i1 false), !tbaa.struct !1016 - call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.0.i.i.i.i128) + %.sroa.0.i.i.i.i128.sroa.0.0.copyload = phi <2 x i64> [ %.sroa.0.i.i.i.i128.sroa.0.0.copyload.pre, %1058 ], [ zeroinitializer, %"_ZN9__gnu_cxx5__ops10_Iter_predIZN12_GLOBAL__N_116AttributeInferer3runERKN4llvm14SmallSetVectorIPNS4_8FunctionELj8EEERNS4_8SmallSetIS7_Lj8ESt4lessIS7_EEEE3$_2EclIPNS3_19InferenceDescriptorEEEbT_.exit.thread" ] + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %.sroa.0.i.i.i.i128, ptr noundef nonnull align 8 dereferenceable(101) %.024.i.i.i.i, i64 16, i1 false), !tbaa.struct !1016 + store <2 x i64> %.sroa.0.i.i.i.i128.sroa.0.0.copyload, ptr %.024.i.i.i.i, align 8, !tbaa !151 %1059 = getelementptr inbounds nuw i8, ptr %.024.i.i.i.i, i64 16 %1060 = load ptr, ptr %1059, align 8, !tbaa !214 - store ptr %1060, ptr %120, align 8, !tbaa !214 + store ptr %1060, ptr %120, align 16, !tbaa !214 store ptr %1057, ptr %1059, align 8, !tbaa !214 %1061 = getelementptr inbounds nuw i8, ptr %.024.i.i.i.i, i64 24 %1062 = load ptr, ptr %1061, align 8, !tbaa !214 @@ -28027,7 +28013,7 @@ _ZN4llvm23SmallVectorTemplateBaseIN12_GLOBAL__N_116AttributeInferer19InferenceDe br label %1162 1162: ; preds = %.lr.ph619, %._crit_edge615 - %.044617 = phi ptr [ %1155, %.lr.ph619 ], [ %1166, %._crit_edge615 ] + %.044617 = phi ptr [ %1155, %.lr.ph626 ], [ %1166, %._crit_edge622 ] %1163 = load ptr, ptr %.044617, align 8, !tbaa !108 %.val = load ptr, ptr %26, align 8, !tbaa !25 %.val48 = load i32, ptr %29, align 8, !tbaa !26 @@ -28132,8 +28118,8 @@ _ZNKSt8functionIFvRN4llvm8FunctionEEEclES2_.exit: ; preds = %_ZN4llvm15SmallPtrS br i1 %.not4.i.i107, label %_ZN4llvm23SmallVectorTemplateBaseIN12_GLOBAL__N_116AttributeInferer19InferenceDescriptorELb0EE13destroy_rangeEPS3_S5_.exit.i121, label %.lr.ph.i.preheader.i108 .lr.ph.i.preheader.i108: ; preds = %._crit_edge620.thread, %._crit_edge620 - %.val.i105809 = phi ptr [ %.val.i105806, %._crit_edge620.thread ], [ %.val.i105, %._crit_edge620 ] - %.val2.i106.pr808 = phi i32 [ %1153, %._crit_edge620.thread ], [ %.val2.i106.pr.pre, %._crit_edge620 ] + %.val.i105809 = phi ptr [ %.val.i105806, %._crit_edge627.thread ], [ %.val.i105, %._crit_edge627 ] + %.val2.i106.pr808 = phi i32 [ %1153, %._crit_edge627.thread ], [ %.val2.i106.pr.pre, %._crit_edge627 ] %1196 = zext i32 %.val2.i106.pr808 to i64 %.idx.i109 = mul nuw nsw i64 %1196, 104 %1197 = getelementptr inbounds nuw i8, ptr %.val.i105809, i64 %.idx.i109 @@ -28182,7 +28168,7 @@ _ZN4llvm23SmallVectorTemplateBaseIN12_GLOBAL__N_116AttributeInferer19InferenceDe br label %_ZN4llvm23SmallVectorTemplateBaseIN12_GLOBAL__N_116AttributeInferer19InferenceDescriptorELb0EE13destroy_rangeEPS3_S5_.exit.i121 _ZN4llvm23SmallVectorTemplateBaseIN12_GLOBAL__N_116AttributeInferer19InferenceDescriptorELb0EE13destroy_rangeEPS3_S5_.exit.i121: ; preds = %.thread542, %_ZN4llvm23SmallVectorTemplateBaseIN12_GLOBAL__N_116AttributeInferer19InferenceDescriptorELb0EE13destroy_rangeEPS3_S5_.exit.loopexit.i119, %._crit_edge620 - %1213 = phi ptr [ %.pre.i120, %_ZN4llvm23SmallVectorTemplateBaseIN12_GLOBAL__N_116AttributeInferer19InferenceDescriptorELb0EE13destroy_rangeEPS3_S5_.exit.loopexit.i119 ], [ %.val.i105, %._crit_edge620 ], [ %.val.i105544, %.thread542 ] + %1213 = phi ptr [ %.pre.i120, %_ZN4llvm23SmallVectorTemplateBaseIN12_GLOBAL__N_116AttributeInferer19InferenceDescriptorELb0EE13destroy_rangeEPS3_S5_.exit.loopexit.i119 ], [ %.val.i105, %._crit_edge627 ], [ %.val.i105544, %.thread549 ] %1214 = icmp eq ptr %1213, %28 br i1 %1214, label %_ZN4llvm11SmallVectorIN12_GLOBAL__N_116AttributeInferer19InferenceDescriptorELj4EED2Ev.exit122, label %1215 diff --git a/bench/llvm/optimized/OMPIRBuilder.ll b/bench/llvm/optimized/OMPIRBuilder.ll index 8d20f101890..54c179967bb 100644 --- a/bench/llvm/optimized/OMPIRBuilder.ll +++ b/bench/llvm/optimized/OMPIRBuilder.ll @@ -90552,10 +90552,8 @@ declare void @_ZN4llvm21SymbolTableListTraitsINS_8FunctionEJEE13addNodeToListEPS ; Function Attrs: mustprogress nounwind uwtable define linkonce_odr noundef nonnull align 8 dereferenceable(16) ptr @_ZN4llvm15SmallVectorImplINS_15OpenMPIRBuilder11OutlineInfoEEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(16) %1) local_unnamed_addr #0 comdat align 2 { - %.sroa.0.i.i.i.i.i.i.i.i.i55 = alloca { i64, i64 }, align 8 - %3 = alloca %"class.std::function.232", align 8 - %.sroa.0.i.i.i.i.i.i.i.i.i = alloca { i64, i64 }, align 8 - %4 = alloca %"class.std::function.232", align 8 + %.sroa.0.i.i.i.i.i.i.i.i.i55 = alloca %"class.std::function.232", align 16 + %3 = alloca %"class.std::function.232", align 16 %5 = icmp eq ptr %0, %1 br i1 %5, label %178, label %6 @@ -90660,7 +90658,7 @@ _ZN4llvm15SmallVectorImplINS_15OpenMPIRBuilder11OutlineInfoEE12assignRemoteEOS3_ %.0910.i.i.i.i.i = phi ptr [ %7, %.lr.ph.i.i.i.i.i ], [ %64, %_ZN4llvm15OpenMPIRBuilder11OutlineInfoaSEOS1_.exit.i.i.i.i.i ] call void @llvm.lifetime.start.p0(ptr nonnull %4) %48 = getelementptr inbounds nuw i8, ptr %.0910.i.i.i.i.i, i64 24 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %4, i8 0, i64 24, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %4, i8 0, i64 24, i1 false) %49 = load ptr, ptr %48, align 8, !tbaa !602 %50 = getelementptr inbounds nuw i8, ptr %.0910.i.i.i.i.i, i64 16 %51 = load ptr, ptr %50, align 8, !tbaa !43 @@ -90668,19 +90666,18 @@ _ZN4llvm15SmallVectorImplINS_15OpenMPIRBuilder11OutlineInfoEE12assignRemoteEOS3_ br i1 %.not.i.i.not.i.i.i.i.i.i.i.i, label %_ZNSt8functionIFvRN4llvm8FunctionEEEC2EOS4_.exit.i.i.i.i.i.i.i, label %52 52: ; preds = %47 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(88) %.0910.i.i.i.i.i, i64 16, i1 false), !tbaa.struct !830 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(88) %.0910.i.i.i.i.i, i64 16, i1 false), !tbaa.struct !830 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %50, i8 0, i64 16, i1 false) + %.sroa.0.i.i.i.i.sroa.0.0.copyload.pre.i.i.i.i.i = load <2 x i64>, ptr %4, align 16, !tbaa !111 br label %_ZNSt8functionIFvRN4llvm8FunctionEEEC2EOS4_.exit.i.i.i.i.i.i.i _ZNSt8functionIFvRN4llvm8FunctionEEEC2EOS4_.exit.i.i.i.i.i.i.i: ; preds = %52, %47 - call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.0.i.i.i.i.i.i.i.i.i) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(32) %4, i64 16, i1 false), !tbaa.struct !830 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(88) %.0811.i.i.i.i.i, i64 16, i1 false), !tbaa.struct !830 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(88) %.0811.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i.i.i.i.i.i.i, i64 16, i1 false), !tbaa.struct !830 - call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.0.i.i.i.i.i.i.i.i.i) - %53 = getelementptr inbounds nuw i8, ptr %.0811.i.i.i.i.i, i64 16 + %.sroa.0.i.i.i.i.sroa.0.0.copyload.i.i.i.i.i = phi <2 x i64> [ %.sroa.0.i.i.i.i.sroa.0.0.copyload.pre.i.i.i.i.i, %52 ], [ zeroinitializer, %47 ] + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(88) %.0812.i.i.i.i.i, i64 16, i1 false), !tbaa.struct !830 + store <2 x i64> %.sroa.0.i.i.i.i.sroa.0.0.copyload.i.i.i.i.i, ptr %.0811.i.i.i.i.i, align 8, !tbaa !111 + %53 = getelementptr inbounds nuw i8, ptr %.0812.i.i.i.i.i, i64 16 %54 = load ptr, ptr %53, align 8, !tbaa !638 - store ptr %54, ptr %46, align 8, !tbaa !638 + store ptr %54, ptr %46, align 16, !tbaa !638 store ptr %51, ptr %53, align 8, !tbaa !638 %55 = getelementptr inbounds nuw i8, ptr %.0811.i.i.i.i.i, i64 24 %56 = load ptr, ptr %55, align 8, !tbaa !638 @@ -90851,12 +90848,12 @@ _ZN4llvm15SmallVectorImplINS_15OpenMPIRBuilder11OutlineInfoEE5clearEv.exit54: ; br label %115 115: ; preds = %_ZN4llvm15OpenMPIRBuilder11OutlineInfoaSEOS1_.exit.i.i.i.i.i64, %.lr.ph.i.i.i.i.i57 - %.012.i.i.i.i.i58 = phi i64 [ %42, %.lr.ph.i.i.i.i.i57 ], [ %134, %_ZN4llvm15OpenMPIRBuilder11OutlineInfoaSEOS1_.exit.i.i.i.i.i64 ] - %.0811.i.i.i.i.i59 = phi ptr [ %112, %.lr.ph.i.i.i.i.i57 ], [ %133, %_ZN4llvm15OpenMPIRBuilder11OutlineInfoaSEOS1_.exit.i.i.i.i.i64 ] - %.0910.i.i.i.i.i60 = phi ptr [ %7, %.lr.ph.i.i.i.i.i57 ], [ %132, %_ZN4llvm15OpenMPIRBuilder11OutlineInfoaSEOS1_.exit.i.i.i.i.i64 ] + %.012.i.i.i.i.i58 = phi i64 [ %42, %.lr.ph.i.i.i.i.i56 ], [ %134, %_ZN4llvm15OpenMPIRBuilder11OutlineInfoaSEOS1_.exit.i.i.i.i.i65 ] + %.0811.i.i.i.i.i59 = phi ptr [ %112, %.lr.ph.i.i.i.i.i56 ], [ %133, %_ZN4llvm15OpenMPIRBuilder11OutlineInfoaSEOS1_.exit.i.i.i.i.i65 ] + %.0910.i.i.i.i.i60 = phi ptr [ %7, %.lr.ph.i.i.i.i.i56 ], [ %132, %_ZN4llvm15OpenMPIRBuilder11OutlineInfoaSEOS1_.exit.i.i.i.i.i65 ] call void @llvm.lifetime.start.p0(ptr nonnull %3) %116 = getelementptr inbounds nuw i8, ptr %.0910.i.i.i.i.i60, i64 24 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %3, i8 0, i64 24, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %3, i8 0, i64 24, i1 false) %117 = load ptr, ptr %116, align 8, !tbaa !602 %118 = getelementptr inbounds nuw i8, ptr %.0910.i.i.i.i.i60, i64 16 %119 = load ptr, ptr %118, align 8, !tbaa !43 @@ -90864,19 +90861,18 @@ _ZN4llvm15SmallVectorImplINS_15OpenMPIRBuilder11OutlineInfoEE5clearEv.exit54: ; br i1 %.not.i.i.not.i.i.i.i.i.i.i.i61, label %_ZNSt8functionIFvRN4llvm8FunctionEEEC2EOS4_.exit.i.i.i.i.i.i.i62, label %120 120: ; preds = %115 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(88) %.0910.i.i.i.i.i60, i64 16, i1 false), !tbaa.struct !830 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(88) %.0910.i.i.i.i.i60, i64 16, i1 false), !tbaa.struct !830 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %118, i8 0, i64 16, i1 false) + %.sroa.0.i.i.i.i.sroa.0.0.copyload.pre.i.i.i.i.i61 = load <2 x i64>, ptr %3, align 16, !tbaa !111 br label %_ZNSt8functionIFvRN4llvm8FunctionEEEC2EOS4_.exit.i.i.i.i.i.i.i62 _ZNSt8functionIFvRN4llvm8FunctionEEEC2EOS4_.exit.i.i.i.i.i.i.i62: ; preds = %120, %115 - call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.0.i.i.i.i.i.i.i.i.i55) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i.i.i.i.i.i.i55, ptr noundef nonnull align 8 dereferenceable(32) %3, i64 16, i1 false), !tbaa.struct !830 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(88) %.0811.i.i.i.i.i59, i64 16, i1 false), !tbaa.struct !830 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(88) %.0811.i.i.i.i.i59, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i.i.i.i.i.i.i55, i64 16, i1 false), !tbaa.struct !830 - call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.0.i.i.i.i.i.i.i.i.i55) + %.sroa.0.i.i.i.i.sroa.0.0.copyload.i.i.i.i.i63 = phi <2 x i64> [ %.sroa.0.i.i.i.i.sroa.0.0.copyload.pre.i.i.i.i.i61, %120 ], [ zeroinitializer, %115 ] + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %.sroa.0.i.i.i.i.i.i.i.i.i55, ptr noundef nonnull align 8 dereferenceable(88) %.0812.i.i.i.i.i58, i64 16, i1 false), !tbaa.struct !830 + store <2 x i64> %.sroa.0.i.i.i.i.sroa.0.0.copyload.i.i.i.i.i63, ptr %.0811.i.i.i.i.i59, align 8, !tbaa !111 %121 = getelementptr inbounds nuw i8, ptr %.0811.i.i.i.i.i59, i64 16 %122 = load ptr, ptr %121, align 8, !tbaa !638 - store ptr %122, ptr %114, align 8, !tbaa !638 + store ptr %122, ptr %114, align 16, !tbaa !638 store ptr %119, ptr %121, align 8, !tbaa !638 %123 = getelementptr inbounds nuw i8, ptr %.0811.i.i.i.i.i59, i64 24 %124 = load ptr, ptr %123, align 8, !tbaa !638 @@ -90904,7 +90900,7 @@ _ZN4llvm15OpenMPIRBuilder11OutlineInfoaSEOS1_.exit.i.i.i.i.i64: ; preds = %125, br i1 %135, label %115, label %_ZSt4moveIPN4llvm15OpenMPIRBuilder11OutlineInfoES3_ET0_T_S5_S4_.exit65, !llvm.loop !2849 _ZSt4moveIPN4llvm15OpenMPIRBuilder11OutlineInfoES3_ET0_T_S5_S4_.exit65: ; preds = %_ZN4llvm15OpenMPIRBuilder11OutlineInfoaSEOS1_.exit.i.i.i.i.i64, %111, %_ZN4llvm15SmallVectorImplINS_15OpenMPIRBuilder11OutlineInfoEE5clearEv.exit54 - %.026 = phi i64 [ 0, %_ZN4llvm15SmallVectorImplINS_15OpenMPIRBuilder11OutlineInfoEE5clearEv.exit54 ], [ 0, %111 ], [ %42, %_ZN4llvm15OpenMPIRBuilder11OutlineInfoaSEOS1_.exit.i.i.i.i.i64 ] + %.026 = phi i64 [ 0, %_ZN4llvm15SmallVectorImplINS_15OpenMPIRBuilder11OutlineInfoEE5clearEv.exit54 ], [ 0, %111 ], [ %42, %_ZN4llvm15OpenMPIRBuilder11OutlineInfoaSEOS1_.exit.i.i.i.i.i65 ] %136 = load ptr, ptr %1, align 8, !tbaa !25 %137 = load i32, ptr %37, align 8, !tbaa !26 %138 = zext i32 %137 to i64 @@ -90919,8 +90915,8 @@ _ZSt4moveIPN4llvm15OpenMPIRBuilder11OutlineInfoES3_ET0_T_S5_S4_.exit65: ; preds br label %.lr.ph.i.i.i.i.i66 .lr.ph.i.i.i.i.i66: ; preds = %.lr.ph.i.i.i.i.i66.preheader, %_ZSt10_ConstructIN4llvm15OpenMPIRBuilder11OutlineInfoEJS2_EEvPT_DpOT0_.exit.i.i.i.i.i - %.09.i.i.i.i.i = phi ptr [ %163, %_ZSt10_ConstructIN4llvm15OpenMPIRBuilder11OutlineInfoEJS2_EEvPT_DpOT0_.exit.i.i.i.i.i ], [ %141, %.lr.ph.i.i.i.i.i66.preheader ] - %.sroa.04.08.i.i.i.i.i = phi ptr [ %162, %_ZSt10_ConstructIN4llvm15OpenMPIRBuilder11OutlineInfoEJS2_EEvPT_DpOT0_.exit.i.i.i.i.i ], [ %142, %.lr.ph.i.i.i.i.i66.preheader ] + %.09.i.i.i.i.i = phi ptr [ %163, %_ZSt10_ConstructIN4llvm15OpenMPIRBuilder11OutlineInfoEJS2_EEvPT_DpOT0_.exit.i.i.i.i.i ], [ %141, %.lr.ph.i.i.i.i.i67.preheader ] + %.sroa.04.08.i.i.i.i.i = phi ptr [ %162, %_ZSt10_ConstructIN4llvm15OpenMPIRBuilder11OutlineInfoEJS2_EEvPT_DpOT0_.exit.i.i.i.i.i ], [ %142, %.lr.ph.i.i.i.i.i67.preheader ] %143 = getelementptr inbounds nuw i8, ptr %.09.i.i.i.i.i, i64 24 %144 = getelementptr inbounds nuw i8, ptr %.sroa.04.08.i.i.i.i.i, i64 24 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(88) %.09.i.i.i.i.i, i8 0, i64 24, i1 false) @@ -90971,7 +90967,7 @@ _ZN4llvm23SmallVectorTemplateBaseINS_15OpenMPIRBuilder11OutlineInfoELb0EE18unini br label %_ZN4llvm23SmallVectorTemplateBaseINS_15OpenMPIRBuilder11OutlineInfoELb0EE18uninitialized_moveIPS2_S5_EEvT_S6_T0_.exit _ZN4llvm23SmallVectorTemplateBaseINS_15OpenMPIRBuilder11OutlineInfoELb0EE18uninitialized_moveIPS2_S5_EEvT_S6_T0_.exit: ; preds = %_ZN4llvm23SmallVectorTemplateBaseINS_15OpenMPIRBuilder11OutlineInfoELb0EE18uninitialized_moveIPS2_S5_EEvT_S6_T0_.exit.loopexit, %_ZSt4moveIPN4llvm15OpenMPIRBuilder11OutlineInfoES3_ET0_T_S5_S4_.exit65 - %164 = phi ptr [ %.pre81, %_ZN4llvm23SmallVectorTemplateBaseINS_15OpenMPIRBuilder11OutlineInfoELb0EE18uninitialized_moveIPS2_S5_EEvT_S6_T0_.exit.loopexit ], [ %136, %_ZSt4moveIPN4llvm15OpenMPIRBuilder11OutlineInfoES3_ET0_T_S5_S4_.exit65 ] + %164 = phi ptr [ %.pre81, %_ZN4llvm23SmallVectorTemplateBaseINS_15OpenMPIRBuilder11OutlineInfoELb0EE18uninitialized_moveIPS2_S5_EEvT_S6_T0_.exit.loopexit ], [ %136, %_ZSt4moveIPN4llvm15OpenMPIRBuilder11OutlineInfoES3_ET0_T_S5_S4_.exit66 ] store i32 %38, ptr %40, align 8, !tbaa !26 %165 = load i32, ptr %37, align 8, !tbaa !26 %.not4.i.i69 = icmp eq i32 %165, 0 @@ -90984,7 +90980,7 @@ _ZN4llvm23SmallVectorTemplateBaseINS_15OpenMPIRBuilder11OutlineInfoELb0EE18unini br label %.lr.ph.i.i72 .lr.ph.i.i72: ; preds = %_ZN4llvm15OpenMPIRBuilder11OutlineInfoD2Ev.exit.i.i76, %.lr.ph.i.preheader.i70 - %.05.i.i73 = phi ptr [ %168, %_ZN4llvm15OpenMPIRBuilder11OutlineInfoD2Ev.exit.i.i76 ], [ %167, %.lr.ph.i.preheader.i70 ] + %.05.i.i73 = phi ptr [ %168, %_ZN4llvm15OpenMPIRBuilder11OutlineInfoD2Ev.exit.i.i77 ], [ %167, %.lr.ph.i.preheader.i71 ] %168 = getelementptr inbounds i8, ptr %.05.i.i73, i64 -88 %169 = getelementptr inbounds i8, ptr %.05.i.i73, i64 -32 %170 = load ptr, ptr %169, align 8, !tbaa !25 diff --git a/bench/open3d/optimized/EstimateNormals.ll b/bench/open3d/optimized/EstimateNormals.ll index a97fd98d3ce..6d5202f14c2 100644 --- a/bench/open3d/optimized/EstimateNormals.ll +++ b/bench/open3d/optimized/EstimateNormals.ll @@ -4549,10 +4549,7 @@ _ZNKSt13unordered_setImSt4hashImESt8equal_toImESaImEE5countERKm.exit: ; preds = ; Function Attrs: mustprogress ssp uwtable define internal fastcc void @_ZN6open3d12_GLOBAL__N_17KruskalERSt6vectorINS0_12WeightedEdgeESaIS2_EEm(ptr dead_on_unwind noalias nonnull writable align 8 captures(none) %0, ptr noundef nonnull readonly align 8 captures(none) dereferenceable(24) %1, i64 noundef %2) unnamed_addr #0 personality ptr @__gxx_personality_v0 { - %.sroa.06.i.i26.i.i.i = alloca { i64, i64 }, align 8 %4 = alloca %"struct.open3d::(anonymous namespace)::WeightedEdge", align 8 - %.sroa.06.i.i15.i.i.i = alloca { i64, i64 }, align 8 - %.sroa.06.i.i.i.i.i = alloca { i64, i64 }, align 8 %5 = alloca %"struct.open3d::(anonymous namespace)::WeightedEdge", align 8 %6 = alloca %"class.open3d::(anonymous namespace)::DisjointSet", align 8 %.val = load ptr, ptr %1, align 8, !tbaa !126 @@ -4609,8 +4606,7 @@ _ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN6open3d12_GLOBAL__N_112Weig br label %31 26: ; preds = %18 - call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.06.i.i.i.i.i) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.06.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.020.i.ptr.i.i.i, i64 16, i1 false), !tbaa.struct !150 + %.sroa.06.sroa.0.0.copyload.i.i.i.i.i = load <2 x i64>, ptr %.sroa.0.020.i.ptr.i.i.i, align 8 %27 = getelementptr i8, ptr %.pn19.i.i.i.i, i64 16 %.val3.i9.i.i.i.i.i = load double, ptr %27, align 8, !tbaa !131 %28 = fcmp olt double %.val2.i.i.i.i.i, %.val3.i9.i.i.i.i.i @@ -4627,10 +4623,9 @@ _ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN6open3d12_GLOBAL__N_112Weig "_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN6open3d12_GLOBAL__N_112WeightedEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops14_Val_comp_iterIZNS3_7KruskalERS8_mE3$_0EEEvT_T0_.exit.i.i.i.i": ; preds = %.lr.ph.i.i.i.i.i, %26 %.sroa.08.0.lcssa.i.i.i.i.i = phi ptr [ %.sroa.0.020.i.ptr.i.i.i, %26 ], [ %.sroa.0.0.i.i.i.i.i, %.lr.ph.i.i.i.i.i ] - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.08.0.lcssa.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.06.i.i.i.i.i, i64 16, i1 false), !tbaa.struct !150 + store <2 x i64> %.sroa.06.sroa.0.0.copyload.i.i.i.i.i, ptr %.sroa.08.0.lcssa.i.i.i.i.i, align 8 %.sroa.4.0..val.sroa_idx.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %.sroa.08.0.lcssa.i.i.i.i.i, i64 16 store double %.val2.i.i.i.i.i, ptr %.sroa.4.0..val.sroa_idx.i.i.i.i.i, align 8, !tbaa !29 - call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.06.i.i.i.i.i) br label %31 31: ; preds = %"_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN6open3d12_GLOBAL__N_112WeightedEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops14_Val_comp_iterIZNS3_7KruskalERS8_mE3$_0EEEvT_T0_.exit.i.i.i.i", %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN6open3d12_GLOBAL__N_112WeightedEdgeESt6vectorIS4_SaIS4_EEEES9_ET0_T_SB_SA_.exit.i.i.i.i @@ -4645,8 +4640,7 @@ _ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN6open3d12_GLOBAL__N_112Weig .lr.ph.i16.i.i.i: ; preds = %"_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPN6open3d12_GLOBAL__N_112WeightedEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_comp_iterIZNS3_7KruskalERS8_mE3$_0EEEvT_SF_T0_.exit.i.i.i", %"_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN6open3d12_GLOBAL__N_112WeightedEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops14_Val_comp_iterIZNS3_7KruskalERS8_mE3$_0EEEvT_T0_.exit.i18.i.i.i" %.sroa.0.07.i.i.i.i = phi ptr [ %37, %"_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN6open3d12_GLOBAL__N_112WeightedEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops14_Val_comp_iterIZNS3_7KruskalERS8_mE3$_0EEEvT_T0_.exit.i18.i.i.i" ], [ %32, %"_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPN6open3d12_GLOBAL__N_112WeightedEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_comp_iterIZNS3_7KruskalERS8_mE3$_0EEEvT_SF_T0_.exit.i.i.i" ] - call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.06.i.i15.i.i.i) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.06.i.i15.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.07.i.i.i.i, i64 16, i1 false), !tbaa.struct !150 + %.sroa.06.sroa.0.0.copyload.i.i16.i.i.i = load <2 x i64>, ptr %.sroa.0.07.i.i.i.i, align 8 %.sroa.4.0..val3.sroa_idx.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %.sroa.0.07.i.i.i.i, i64 16 %.sroa.4.0.copyload.i.i.i.i.i = load double, ptr %.sroa.4.0..val3.sroa_idx.i.i.i.i.i, align 8, !tbaa !29 %33 = getelementptr i8, ptr %.sroa.0.07.i.i.i.i, i64 -8 @@ -4655,7 +4649,7 @@ _ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN6open3d12_GLOBAL__N_112Weig br i1 %34, label %.lr.ph.i.i22.i.i.i, label %"_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN6open3d12_GLOBAL__N_112WeightedEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops14_Val_comp_iterIZNS3_7KruskalERS8_mE3$_0EEEvT_T0_.exit.i18.i.i.i" .lr.ph.i.i22.i.i.i: ; preds = %.lr.ph.i16.i.i.i, %.lr.ph.i.i22.i.i.i - %.sroa.08.010.i.i23.i.i.i = phi ptr [ %.sroa.0.0.i.i24.i.i.i, %.lr.ph.i.i22.i.i.i ], [ %.sroa.0.07.i.i.i.i, %.lr.ph.i16.i.i.i ] + %.sroa.08.010.i.i23.i.i.i = phi ptr [ %.sroa.0.0.i.i24.i.i.i, %.lr.ph.i.i22.i.i.i ], [ %.sroa.0.07.i.i.i.i, %.lr.ph.i15.i.i.i ] %.sroa.0.0.i.i24.i.i.i = getelementptr inbounds i8, ptr %.sroa.08.010.i.i23.i.i.i, i64 -24 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.08.010.i.i23.i.i.i, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.0.0.i.i24.i.i.i, i64 24, i1 false), !tbaa.struct !150 %35 = getelementptr i8, ptr %.sroa.08.010.i.i23.i.i.i, i64 -32 @@ -4664,11 +4658,10 @@ _ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN6open3d12_GLOBAL__N_112Weig br i1 %36, label %.lr.ph.i.i22.i.i.i, label %"_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN6open3d12_GLOBAL__N_112WeightedEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops14_Val_comp_iterIZNS3_7KruskalERS8_mE3$_0EEEvT_T0_.exit.i18.i.i.i", !llvm.loop !202 "_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN6open3d12_GLOBAL__N_112WeightedEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops14_Val_comp_iterIZNS3_7KruskalERS8_mE3$_0EEEvT_T0_.exit.i18.i.i.i": ; preds = %.lr.ph.i.i22.i.i.i, %.lr.ph.i16.i.i.i - %.sroa.08.0.lcssa.i.i19.i.i.i = phi ptr [ %.sroa.0.07.i.i.i.i, %.lr.ph.i16.i.i.i ], [ %.sroa.0.0.i.i24.i.i.i, %.lr.ph.i.i22.i.i.i ] - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.08.0.lcssa.i.i19.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.06.i.i15.i.i.i, i64 16, i1 false), !tbaa.struct !150 + %.sroa.08.0.lcssa.i.i19.i.i.i = phi ptr [ %.sroa.0.07.i.i.i.i, %.lr.ph.i15.i.i.i ], [ %.sroa.0.0.i.i24.i.i.i, %.lr.ph.i.i22.i.i.i ] + store <2 x i64> %.sroa.06.sroa.0.0.copyload.i.i16.i.i.i, ptr %.sroa.08.0.lcssa.i.i19.i.i.i, align 8 %.sroa.4.0..val.sroa_idx.i.i20.i.i.i = getelementptr inbounds nuw i8, ptr %.sroa.08.0.lcssa.i.i19.i.i.i, i64 16 store double %.sroa.4.0.copyload.i.i.i.i.i, ptr %.sroa.4.0..val.sroa_idx.i.i20.i.i.i, align 8, !tbaa !29 - call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.06.i.i15.i.i.i) %37 = getelementptr inbounds nuw i8, ptr %.sroa.0.07.i.i.i.i, i64 24 %.not.i21.i.i.i = icmp eq ptr %37, %.val24 br i1 %.not.i21.i.i.i, label %"_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN6open3d12_GLOBAL__N_112WeightedEdgeESt6vectorIS4_SaIS4_EEEEZNS3_7KruskalERS8_mE3$_0EvT_SC_T0_.exit", label %.lr.ph.i16.i.i.i, !llvm.loop !204 @@ -4683,8 +4676,8 @@ _ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN6open3d12_GLOBAL__N_112Weig br label %39 39: ; preds = %58, %.lr.ph.i30.i.i.i - %.sroa.0.020.i31.i.i.i = phi ptr [ %.sroa.0.017.i28.i.i.i, %.lr.ph.i30.i.i.i ], [ %.sroa.0.0.i39.i.i.i, %58 ] - %.pn19.i32.i.i.i = phi ptr [ %.val, %.lr.ph.i30.i.i.i ], [ %.sroa.0.020.i31.i.i.i, %58 ] + %.sroa.0.020.i31.i.i.i = phi ptr [ %.sroa.0.017.i28.i.i.i, %.lr.ph.i29.i.i.i ], [ %.sroa.0.0.i39.i.i.i, %58 ] + %.pn19.i32.i.i.i = phi ptr [ %.val, %.lr.ph.i29.i.i.i ], [ %.sroa.0.020.i31.i.i.i, %58 ] %40 = getelementptr i8, ptr %.pn19.i32.i.i.i, i64 40 %.val2.i.i33.i.i.i = load double, ptr %40, align 8, !tbaa !131 %.val3.i.i34.i.i.i = load double, ptr %38, align 8, !tbaa !131 @@ -4722,9 +4715,8 @@ _ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN6open3d12_GLOBAL__N_112Weig br label %58 53: ; preds = %39 - call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.06.i.i26.i.i.i) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.06.i.i26.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.020.i31.i.i.i, i64 16, i1 false), !tbaa.struct !150 - %54 = getelementptr i8, ptr %.pn19.i32.i.i.i, i64 16 + %.sroa.06.sroa.0.0.copyload.i.i34.i.i.i = load <2 x i64>, ptr %.sroa.0.020.i30.i.i.i, align 8 + %54 = getelementptr i8, ptr %.pn19.i31.i.i.i, i64 16 %.val3.i9.i.i35.i.i.i = load double, ptr %54, align 8, !tbaa !131 %55 = fcmp olt double %.val2.i.i33.i.i.i, %.val3.i9.i.i35.i.i.i br i1 %55, label %.lr.ph.i.i41.i.i.i, label %"_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN6open3d12_GLOBAL__N_112WeightedEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops14_Val_comp_iterIZNS3_7KruskalERS8_mE3$_0EEEvT_T0_.exit.i36.i.i.i" @@ -4740,10 +4732,9 @@ _ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN6open3d12_GLOBAL__N_112Weig "_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN6open3d12_GLOBAL__N_112WeightedEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops14_Val_comp_iterIZNS3_7KruskalERS8_mE3$_0EEEvT_T0_.exit.i36.i.i.i": ; preds = %.lr.ph.i.i41.i.i.i, %53 %.sroa.08.0.lcssa.i.i37.i.i.i = phi ptr [ %.sroa.0.020.i31.i.i.i, %53 ], [ %.sroa.0.0.i.i43.i.i.i, %.lr.ph.i.i41.i.i.i ] - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.08.0.lcssa.i.i37.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.06.i.i26.i.i.i, i64 16, i1 false), !tbaa.struct !150 + store <2 x i64> %.sroa.06.sroa.0.0.copyload.i.i34.i.i.i, ptr %.sroa.08.0.lcssa.i.i37.i.i.i, align 8 %.sroa.4.0..val.sroa_idx.i.i38.i.i.i = getelementptr inbounds nuw i8, ptr %.sroa.08.0.lcssa.i.i37.i.i.i, i64 16 store double %.val2.i.i33.i.i.i, ptr %.sroa.4.0..val.sroa_idx.i.i38.i.i.i, align 8, !tbaa !29 - call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.06.i.i26.i.i.i) br label %58 58: ; preds = %"_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN6open3d12_GLOBAL__N_112WeightedEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops14_Val_comp_iterIZNS3_7KruskalERS8_mE3$_0EEEvT_T0_.exit.i36.i.i.i", %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN6open3d12_GLOBAL__N_112WeightedEdgeESt6vectorIS4_SaIS4_EEEES9_ET0_T_SB_SA_.exit.i45.i.i.i diff --git a/bench/opencv/optimized/benchmark.ll b/bench/opencv/optimized/benchmark.ll index c5e0e4aabd1..92a6cce1a56 100644 --- a/bench/opencv/optimized/benchmark.ll +++ b/bench/opencv/optimized/benchmark.ll @@ -2640,7 +2640,7 @@ _ZNSirsERj.exit35: ; preds = %_ZNSirsERj.exit .lr.ph53: ; preds = %.lr.ph53.preheader, %.lr.ph53 %.sroa.039.051 = phi ptr [ %166, %.lr.ph53 ], [ %165, %.lr.ph53.preheader ] - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.039.051, i8 0, i64 32, i1 false) + store <4 x double> zeroinitializer, ptr %.sroa.039.051, align 8 %166 = getelementptr inbounds nuw i8, ptr %.sroa.039.051, i64 32 %.not = icmp eq ptr %166, %162 br i1 %.not, label %.loopexit, label %.lr.ph53, !llvm.loop !99 diff --git a/bench/opencv/optimized/binarizer.ll b/bench/opencv/optimized/binarizer.ll index 31847438710..00164b1d954 100644 --- a/bench/opencv/optimized/binarizer.ll +++ b/bench/opencv/optimized/binarizer.ll @@ -783,8 +783,8 @@ _ZNSt6vectorIN5zxing15BINARIZER_BLOCKESaIS1_EE17_S_check_init_lenEmRKS2_.exit.i. br label %.loopexit .loopexit: ; preds = %.noexc11, %_ZNSt6vectorIN5zxing15BINARIZER_BLOCKESaIS1_EE17_S_check_init_lenEmRKS2_.exit.i.i - %14 = phi ptr [ null, %_ZNSt6vectorIN5zxing15BINARIZER_BLOCKESaIS1_EE17_S_check_init_lenEmRKS2_.exit.i.i ], [ %10, %.noexc11 ] - %.0.i.i.i.i.i.i.i.i = phi ptr [ null, %_ZNSt6vectorIN5zxing15BINARIZER_BLOCKESaIS1_EE17_S_check_init_lenEmRKS2_.exit.i.i ], [ %13, %.noexc11 ] + %14 = phi ptr [ %10, %.noexc11 ], [ null, %_ZNSt6vectorIN5zxing15BINARIZER_BLOCKESaIS1_EE17_S_check_init_lenEmRKS2_.exit.i.i ] + %.0.i.i.i.i.i.i.i.i = phi ptr [ %13, %.noexc11 ], [ null, %_ZNSt6vectorIN5zxing15BINARIZER_BLOCKESaIS1_EE17_S_check_init_lenEmRKS2_.exit.i.i ] %15 = getelementptr inbounds nuw i8, ptr %4, i64 24 store ptr %.0.i.i.i.i.i.i.i.i, ptr %15, align 8, !tbaa !35 %16 = getelementptr inbounds nuw i8, ptr %0, i64 8 diff --git a/bench/opencv/optimized/erfilter.ll b/bench/opencv/optimized/erfilter.ll index 6ad1c1349d1..71309fdd757 100644 --- a/bench/opencv/optimized/erfilter.ll +++ b/bench/opencv/optimized/erfilter.ll @@ -35474,7 +35474,6 @@ _ZN2cv4text14auto_array_ptrIlED2Ev.exit1: ; preds = %_ZN2cv4text14auto_a ; Function Attrs: mustprogress uwtable define linkonce_odr hidden void @_ZSt21__inplace_stable_sortIPN2cv4text4nodeEN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S7_T0_(ptr noundef %0, ptr noundef %1) local_unnamed_addr #3 comdat { - %.sroa.0.i.i = alloca { i64, i64 }, align 8 %3 = alloca %"struct.cv::text::node", align 8 %4 = ptrtoint ptr %1 to i64 %5 = ptrtoint ptr %0 to i64 @@ -35525,8 +35524,7 @@ _ZNK9__gnu_cxx5__ops15_Iter_less_iterclIPN2cv4text4nodeES6_EEbT_T0_.exit.thread. br label %26 19: ; preds = %_ZNK9__gnu_cxx5__ops15_Iter_less_iterclIPN2cv4text4nodeES6_EEbT_T0_.exit.i - call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.0.i.i) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i, ptr noundef nonnull align 8 dereferenceable(16) %.024.i, i64 16, i1 false), !tbaa.struct !746 + %.sroa.0.sroa.0.0.copyload.i.i = load <2 x i64>, ptr %.024.i, align 8 br i1 %12, label %.split.i.preheader.i, label %.split.us.i.i .split.i.preheader.i: ; preds = %19 @@ -35565,10 +35563,9 @@ _ZNK9__gnu_cxx5__ops14_Val_less_iterclIN2cv4text4nodeEPS5_EEbRT_T0_.exit.thread. _ZSt25__unguarded_linear_insertIPN2cv4text4nodeEN9__gnu_cxx5__ops14_Val_less_iterEEvT_T0_.exit.i: ; preds = %_ZNK9__gnu_cxx5__ops14_Val_less_iterclIN2cv4text4nodeEPS5_EEbRT_T0_.exit.thread.us.i.i, %_ZNK9__gnu_cxx5__ops14_Val_less_iterclIN2cv4text4nodeEPS5_EEbRT_T0_.exit.thread.i.i, %.split.us.i.i, %.split.i.preheader.i %.us-phi.i.i = phi ptr [ %.0.i.i, %_ZNK9__gnu_cxx5__ops14_Val_less_iterclIN2cv4text4nodeEPS5_EEbRT_T0_.exit.thread.i.i ], [ %.024.i, %.split.us.i.i ], [ %.024.i, %.split.i.preheader.i ], [ %.0.us17.i.i, %_ZNK9__gnu_cxx5__ops14_Val_less_iterclIN2cv4text4nodeEPS5_EEbRT_T0_.exit.thread.us.i.i ] - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.us-phi.i.i, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i, i64 16, i1 false), !tbaa.struct !746 + store <2 x i64> %.sroa.0.sroa.0.0.copyload.i.i, ptr %.us-phi.i.i, align 8 %.sroa.4.0..09.sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %.us-phi.i.i, i64 16 store double %.sroa.4.0.copyload.fr.i.i, ptr %.sroa.4.0..09.sroa_idx.i.i, align 8, !tbaa !106 - call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.0.i.i) br label %26 26: ; preds = %_ZSt25__unguarded_linear_insertIPN2cv4text4nodeEN9__gnu_cxx5__ops14_Val_less_iterEEvT_T0_.exit.i, %_ZNK9__gnu_cxx5__ops15_Iter_less_iterclIPN2cv4text4nodeES6_EEbT_T0_.exit.thread.i @@ -36393,9 +36390,7 @@ _ZSt21__move_merge_adaptiveIPN2cv4text4nodeES3_S3_N9__gnu_cxx5__ops15_Iter_less_ ; Function Attrs: mustprogress uwtable define linkonce_odr hidden void @_ZSt22__chunk_insertion_sortIPN2cv4text4nodeElN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S7_T0_T1_(ptr noundef %0, ptr noundef %1, i64 noundef %2) local_unnamed_addr #3 comdat { - %.sroa.0.i.i10 = alloca { i64, i64 }, align 8 %4 = alloca %"struct.cv::text::node", align 8 - %.sroa.0.i.i = alloca { i64, i64 }, align 8 %5 = alloca %"struct.cv::text::node", align 8 %6 = ptrtoint ptr %1 to i64 %7 = ptrtoint ptr %0 to i64 @@ -36456,8 +36451,7 @@ _ZNK9__gnu_cxx5__ops15_Iter_less_iterclIPN2cv4text4nodeES6_EEbT_T0_.exit.thread. br label %32 25: ; preds = %_ZNK9__gnu_cxx5__ops15_Iter_less_iterclIPN2cv4text4nodeES6_EEbT_T0_.exit.i - call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.0.i.i) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i, ptr noundef nonnull align 8 dereferenceable(16) %.024.i, i64 16, i1 false), !tbaa.struct !746 + %.sroa.0.sroa.0.0.copyload.i.i = load <2 x i64>, ptr %.024.i, align 8 br i1 %18, label %.split.i.preheader.i, label %.split.us.i.i .split.i.preheader.i: ; preds = %25 @@ -36496,10 +36490,9 @@ _ZNK9__gnu_cxx5__ops14_Val_less_iterclIN2cv4text4nodeEPS5_EEbRT_T0_.exit.thread. _ZSt25__unguarded_linear_insertIPN2cv4text4nodeEN9__gnu_cxx5__ops14_Val_less_iterEEvT_T0_.exit.i: ; preds = %_ZNK9__gnu_cxx5__ops14_Val_less_iterclIN2cv4text4nodeEPS5_EEbRT_T0_.exit.thread.us.i.i, %_ZNK9__gnu_cxx5__ops14_Val_less_iterclIN2cv4text4nodeEPS5_EEbRT_T0_.exit.thread.i.i, %.split.us.i.i, %.split.i.preheader.i %.us-phi.i.i = phi ptr [ %.0.i.i, %_ZNK9__gnu_cxx5__ops14_Val_less_iterclIN2cv4text4nodeEPS5_EEbRT_T0_.exit.thread.i.i ], [ %.024.i, %.split.us.i.i ], [ %.024.i, %.split.i.preheader.i ], [ %.0.us17.i.i, %_ZNK9__gnu_cxx5__ops14_Val_less_iterclIN2cv4text4nodeEPS5_EEbRT_T0_.exit.thread.us.i.i ] - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.us-phi.i.i, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i, i64 16, i1 false), !tbaa.struct !746 + store <2 x i64> %.sroa.0.sroa.0.0.copyload.i.i, ptr %.us-phi.i.i, align 8 %.sroa.4.0..09.sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %.us-phi.i.i, i64 16 store double %.sroa.4.0.copyload.fr.i.i, ptr %.sroa.4.0..09.sroa_idx.i.i, align 8, !tbaa !106 - call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.0.i.i) br label %32 32: ; preds = %_ZSt25__unguarded_linear_insertIPN2cv4text4nodeEN9__gnu_cxx5__ops14_Val_less_iterEEvT_T0_.exit.i, %_ZNK9__gnu_cxx5__ops15_Iter_less_iterclIPN2cv4text4nodeES6_EEbT_T0_.exit.thread.i @@ -36530,8 +36523,8 @@ _ZSt16__insertion_sortIPN2cv4text4nodeEN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S7 br label %37 37: ; preds = %53, %.lr.ph.i14 - %.024.i16 = phi ptr [ %.021.i12, %.lr.ph.i14 ], [ %.0.i29, %53 ] - %.pn23.i17 = phi ptr [ %.0.lcssa, %.lr.ph.i14 ], [ %.024.i16, %53 ] + %.024.i16 = phi ptr [ %.021.i12, %.lr.ph.i13 ], [ %.0.i29, %53 ] + %.pn23.i17 = phi ptr [ %.0.lcssa, %.lr.ph.i13 ], [ %.024.i16, %53 ] %.sroa.2.0..sroa_idx.i.i18 = getelementptr inbounds nuw i8, ptr %.pn23.i17, i64 40 %.sroa.2.0.copyload.i.i19 = load double, ptr %.sroa.2.0..sroa_idx.i.i18, align 8, !tbaa !106 %.sroa.4.0.copyload.fr.i.i20 = freeze double %.sroa.2.0.copyload.i.i19 @@ -36559,8 +36552,7 @@ _ZNK9__gnu_cxx5__ops15_Iter_less_iterclIPN2cv4text4nodeES6_EEbT_T0_.exit.thread. br label %53 46: ; preds = %_ZNK9__gnu_cxx5__ops15_Iter_less_iterclIPN2cv4text4nodeES6_EEbT_T0_.exit.i22 - call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.0.i.i10) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i10, ptr noundef nonnull align 8 dereferenceable(16) %.024.i16, i64 16, i1 false), !tbaa.struct !746 + %.sroa.0.sroa.0.0.copyload.i.i22 = load <2 x i64>, ptr %.024.i15, align 8 br i1 %39, label %.split.i.preheader.i36, label %.split.us.i.i23 .split.i.preheader.i36: ; preds = %46 @@ -36599,10 +36591,9 @@ _ZNK9__gnu_cxx5__ops14_Val_less_iterclIN2cv4text4nodeEPS5_EEbRT_T0_.exit.thread. _ZSt25__unguarded_linear_insertIPN2cv4text4nodeEN9__gnu_cxx5__ops14_Val_less_iterEEvT_T0_.exit.i26: ; preds = %_ZNK9__gnu_cxx5__ops14_Val_less_iterclIN2cv4text4nodeEPS5_EEbRT_T0_.exit.thread.us.i.i31, %_ZNK9__gnu_cxx5__ops14_Val_less_iterclIN2cv4text4nodeEPS5_EEbRT_T0_.exit.thread.i.i40, %.split.us.i.i23, %.split.i.preheader.i36 %.us-phi.i.i27 = phi ptr [ %.0.i.i42, %_ZNK9__gnu_cxx5__ops14_Val_less_iterclIN2cv4text4nodeEPS5_EEbRT_T0_.exit.thread.i.i40 ], [ %.024.i16, %.split.us.i.i23 ], [ %.024.i16, %.split.i.preheader.i36 ], [ %.0.us17.i.i33, %_ZNK9__gnu_cxx5__ops14_Val_less_iterclIN2cv4text4nodeEPS5_EEbRT_T0_.exit.thread.us.i.i31 ] - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.us-phi.i.i27, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i10, i64 16, i1 false), !tbaa.struct !746 + store <2 x i64> %.sroa.0.sroa.0.0.copyload.i.i22, ptr %.us-phi.i.i27, align 8 %.sroa.4.0..09.sroa_idx.i.i28 = getelementptr inbounds nuw i8, ptr %.us-phi.i.i27, i64 16 store double %.sroa.4.0.copyload.fr.i.i20, ptr %.sroa.4.0..09.sroa_idx.i.i28, align 8, !tbaa !106 - call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.0.i.i10) br label %53 53: ; preds = %_ZSt25__unguarded_linear_insertIPN2cv4text4nodeEN9__gnu_cxx5__ops14_Val_less_iterEEvT_T0_.exit.i26, %_ZNK9__gnu_cxx5__ops15_Iter_less_iterclIPN2cv4text4nodeES6_EEbT_T0_.exit.thread.i46 diff --git a/bench/opencv/optimized/gapi_core_perf_tests.ll b/bench/opencv/optimized/gapi_core_perf_tests.ll index d429d6d57c7..7f9dedafd29 100644 --- a/bench/opencv/optimized/gapi_core_perf_tests.ll +++ b/bench/opencv/optimized/gapi_core_perf_tests.ll @@ -385273,7 +385273,6 @@ declare float @expf(float noundef) local_unnamed_addr #23 ; Function Attrs: mustprogress uwtable define linkonce_odr hidden void @_ZSt21__inplace_stable_sortIN9__gnu_cxx17__normal_iteratorIPN11opencv_test14ParserYoloTest9DetectionESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_comp_iterIZNS3_12parseYoloRefERKN2cv3MatERKNSC_5Size_IiEEffiRKS6_IfSaIfEERS6_INSC_5Rect_IiEESaISP_EERS6_IiSaIiEEEUlRKS4_SX_E_EEEvT_S10_T0_(ptr %0, ptr %1) local_unnamed_addr #4 comdat { - %.sroa.03.i.i = alloca %"class.cv::Rect_", align 8 %3 = alloca %"struct.opencv_test::ParserYoloTest::Detection", align 4 %4 = ptrtoint ptr %1 to i64 %5 = ptrtoint ptr %0 to i64 @@ -385317,8 +385316,7 @@ _ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN11opencv_test14ParserYoloTe br label %27 20: ; preds = %11 - call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.03.i.i) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.03.i.i, ptr noundef nonnull align 4 dereferenceable(16) %.sroa.0.019.i, i64 16, i1 false), !tbaa.struct !1564 + %.sroa.03.sroa.0.0.copyload.i.i = load <4 x i32>, ptr %.sroa.0.019.i, align 4 %.sroa.5.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %.pn18.i, i64 44 %.sroa.5.0.copyload.i.i = load i32, ptr %.sroa.5.0..sroa_idx.i.i, align 4, !tbaa !89 %21 = getelementptr inbounds nuw i8, ptr %.pn18.i, i64 16 @@ -385337,12 +385335,11 @@ _ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN11opencv_test14ParserYoloTe _ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN11opencv_test14ParserYoloTest9DetectionESt6vectorIS4_SaIS4_EEEENS0_5__ops14_Val_comp_iterIZNS3_12parseYoloRefERKN2cv3MatERKNSC_5Size_IiEEffiRKS6_IfSaIfEERS6_INSC_5Rect_IiEESaISP_EERS6_IiSaIiEEEUlRKS4_SX_E_EEEvT_T0_.exit.i: ; preds = %.lr.ph.i.i, %20 %.sroa.08.0.lcssa.i.i = phi ptr [ %.sroa.0.019.i, %20 ], [ %.sroa.0.0.i.i, %.lr.ph.i.i ] - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %.sroa.08.0.lcssa.i.i, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.03.i.i, i64 16, i1 false), !tbaa.struct !1564 + store <4 x i32> %.sroa.03.sroa.0.0.copyload.i.i, ptr %.sroa.08.0.lcssa.i.i, align 4 %.sroa.4.0..sroa_idx4.i.i = getelementptr inbounds nuw i8, ptr %.sroa.08.0.lcssa.i.i, i64 16 store float %13, ptr %.sroa.4.0..sroa_idx4.i.i, align 4, !tbaa !176 %.sroa.5.0..sroa_idx6.i.i = getelementptr inbounds nuw i8, ptr %.sroa.08.0.lcssa.i.i, i64 20 store i32 %.sroa.5.0.copyload.i.i, ptr %.sroa.5.0..sroa_idx6.i.i, align 4, !tbaa !89 - call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.03.i.i) br label %27 27: ; preds = %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN11opencv_test14ParserYoloTest9DetectionESt6vectorIS4_SaIS4_EEEENS0_5__ops14_Val_comp_iterIZNS3_12parseYoloRefERKN2cv3MatERKNSC_5Size_IiEEffiRKS6_IfSaIfEERS6_INSC_5Rect_IiEESaISP_EERS6_IiSaIiEEEUlRKS4_SX_E_EEEvT_T0_.exit.i, %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN11opencv_test14ParserYoloTest9DetectionESt6vectorIS4_SaIS4_EEEES9_ET0_T_SB_SA_.exit.i @@ -386211,9 +386208,7 @@ _ZSt21__move_merge_adaptiveIPN11opencv_test14ParserYoloTest9DetectionEN9__gnu_cx ; Function Attrs: mustprogress uwtable define linkonce_odr hidden void @_ZSt22__chunk_insertion_sortIN9__gnu_cxx17__normal_iteratorIPN11opencv_test14ParserYoloTest9DetectionESt6vectorIS4_SaIS4_EEEElNS0_5__ops15_Iter_comp_iterIZNS3_12parseYoloRefERKN2cv3MatERKNSC_5Size_IiEEffiRKS6_IfSaIfEERS6_INSC_5Rect_IiEESaISP_EERS6_IiSaIiEEEUlRKS4_SX_E_EEEvT_S10_T0_T1_(ptr %0, ptr %1, i64 noundef %2) local_unnamed_addr #4 comdat { - %.sroa.03.i.i10 = alloca %"class.cv::Rect_", align 8 %4 = alloca %"struct.opencv_test::ParserYoloTest::Detection", align 4 - %.sroa.03.i.i = alloca %"class.cv::Rect_", align 8 %5 = alloca %"struct.opencv_test::ParserYoloTest::Detection", align 4 %6 = ptrtoint ptr %1 to i64 %7 = ptrtoint ptr %0 to i64 @@ -386267,8 +386262,7 @@ _ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN11opencv_test14ParserYoloTe br label %33 26: ; preds = %17 - call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.03.i.i) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.03.i.i, ptr noundef nonnull align 4 dereferenceable(16) %.sroa.0.019.i, i64 16, i1 false), !tbaa.struct !1564 + %.sroa.03.sroa.0.0.copyload.i.i = load <4 x i32>, ptr %.sroa.0.019.i, align 4 %.sroa.5.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %.pn18.i, i64 44 %.sroa.5.0.copyload.i.i = load i32, ptr %.sroa.5.0..sroa_idx.i.i, align 4, !tbaa !89 %27 = getelementptr inbounds nuw i8, ptr %.pn18.i, i64 16 @@ -386287,12 +386281,11 @@ _ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN11opencv_test14ParserYoloTe _ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN11opencv_test14ParserYoloTest9DetectionESt6vectorIS4_SaIS4_EEEENS0_5__ops14_Val_comp_iterIZNS3_12parseYoloRefERKN2cv3MatERKNSC_5Size_IiEEffiRKS6_IfSaIfEERS6_INSC_5Rect_IiEESaISP_EERS6_IiSaIiEEEUlRKS4_SX_E_EEEvT_T0_.exit.i: ; preds = %.lr.ph.i.i, %26 %.sroa.08.0.lcssa.i.i = phi ptr [ %.sroa.0.019.i, %26 ], [ %.sroa.0.0.i.i, %.lr.ph.i.i ] - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %.sroa.08.0.lcssa.i.i, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.03.i.i, i64 16, i1 false), !tbaa.struct !1564 + store <4 x i32> %.sroa.03.sroa.0.0.copyload.i.i, ptr %.sroa.08.0.lcssa.i.i, align 4 %.sroa.4.0..sroa_idx4.i.i = getelementptr inbounds nuw i8, ptr %.sroa.08.0.lcssa.i.i, i64 16 store float %19, ptr %.sroa.4.0..sroa_idx4.i.i, align 4, !tbaa !176 %.sroa.5.0..sroa_idx6.i.i = getelementptr inbounds nuw i8, ptr %.sroa.08.0.lcssa.i.i, i64 20 store i32 %.sroa.5.0.copyload.i.i, ptr %.sroa.5.0..sroa_idx6.i.i, align 4, !tbaa !89 - call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.03.i.i) br label %33 33: ; preds = %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN11opencv_test14ParserYoloTest9DetectionESt6vectorIS4_SaIS4_EEEENS0_5__ops14_Val_comp_iterIZNS3_12parseYoloRefERKN2cv3MatERKNSC_5Size_IiEEffiRKS6_IfSaIfEERS6_INSC_5Rect_IiEESaISP_EERS6_IiSaIiEEEUlRKS4_SX_E_EEEvT_T0_.exit.i, %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN11opencv_test14ParserYoloTest9DetectionESt6vectorIS4_SaIS4_EEEES9_ET0_T_SB_SA_.exit.i @@ -386323,8 +386316,8 @@ _ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPN11opencv_test14ParserYol br label %39 39: ; preds = %55, %.lr.ph.i14 - %.sroa.0.019.i15 = phi ptr [ %.sroa.0.016.i12, %.lr.ph.i14 ], [ %.sroa.0.0.i23, %55 ] - %.pn18.i16 = phi ptr [ %.sroa.031.0.lcssa, %.lr.ph.i14 ], [ %.sroa.0.019.i15, %55 ] + %.sroa.0.019.i15 = phi ptr [ %.sroa.0.016.i12, %.lr.ph.i13 ], [ %.sroa.0.0.i23, %55 ] + %.pn18.i16 = phi ptr [ %.sroa.031.0.lcssa, %.lr.ph.i13 ], [ %.sroa.0.019.i15, %55 ] %40 = getelementptr inbounds nuw i8, ptr %.pn18.i16, i64 40 %41 = load float, ptr %40, align 4, !tbaa !4246 %42 = load float, ptr %38, align 4, !tbaa !4246 @@ -386345,9 +386338,8 @@ _ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN11opencv_test14ParserYoloTe br label %55 48: ; preds = %39 - call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.03.i.i10) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.03.i.i10, ptr noundef nonnull align 4 dereferenceable(16) %.sroa.0.019.i15, i64 16, i1 false), !tbaa.struct !1564 - %.sroa.5.0..sroa_idx.i.i17 = getelementptr inbounds nuw i8, ptr %.pn18.i16, i64 44 + %.sroa.03.sroa.0.0.copyload.i.i16 = load <4 x i32>, ptr %.sroa.0.019.i14, align 4 + %.sroa.5.0..sroa_idx.i.i17 = getelementptr inbounds nuw i8, ptr %.pn18.i15, i64 44 %.sroa.5.0.copyload.i.i18 = load i32, ptr %.sroa.5.0..sroa_idx.i.i17, align 4, !tbaa !89 %49 = getelementptr inbounds nuw i8, ptr %.pn18.i16, i64 16 %50 = load float, ptr %49, align 4, !tbaa !4246 @@ -386365,12 +386357,11 @@ _ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN11opencv_test14ParserYoloTe _ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN11opencv_test14ParserYoloTest9DetectionESt6vectorIS4_SaIS4_EEEENS0_5__ops14_Val_comp_iterIZNS3_12parseYoloRefERKN2cv3MatERKNSC_5Size_IiEEffiRKS6_IfSaIfEERS6_INSC_5Rect_IiEESaISP_EERS6_IiSaIiEEEUlRKS4_SX_E_EEEvT_T0_.exit.i19: ; preds = %.lr.ph.i.i25, %48 %.sroa.08.0.lcssa.i.i20 = phi ptr [ %.sroa.0.019.i15, %48 ], [ %.sroa.0.0.i.i27, %.lr.ph.i.i25 ] - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %.sroa.08.0.lcssa.i.i20, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.03.i.i10, i64 16, i1 false), !tbaa.struct !1564 + store <4 x i32> %.sroa.03.sroa.0.0.copyload.i.i16, ptr %.sroa.08.0.lcssa.i.i20, align 4 %.sroa.4.0..sroa_idx4.i.i21 = getelementptr inbounds nuw i8, ptr %.sroa.08.0.lcssa.i.i20, i64 16 store float %41, ptr %.sroa.4.0..sroa_idx4.i.i21, align 4, !tbaa !176 %.sroa.5.0..sroa_idx6.i.i22 = getelementptr inbounds nuw i8, ptr %.sroa.08.0.lcssa.i.i20, i64 20 store i32 %.sroa.5.0.copyload.i.i18, ptr %.sroa.5.0..sroa_idx6.i.i22, align 4, !tbaa !89 - call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.03.i.i10) br label %55 55: ; preds = %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN11opencv_test14ParserYoloTest9DetectionESt6vectorIS4_SaIS4_EEEENS0_5__ops14_Val_comp_iterIZNS3_12parseYoloRefERKN2cv3MatERKNSC_5Size_IiEEffiRKS6_IfSaIfEERS6_INSC_5Rect_IiEESaISP_EERS6_IiSaIiEEEUlRKS4_SX_E_EEEvT_T0_.exit.i19, %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN11opencv_test14ParserYoloTest9DetectionESt6vectorIS4_SaIS4_EEEES9_ET0_T_SB_SA_.exit.i28 diff --git a/bench/opencv/optimized/gnnparsers.ll b/bench/opencv/optimized/gnnparsers.ll index f59c59e51cd..c8e83d5c82d 100644 --- a/bench/opencv/optimized/gnnparsers.ll +++ b/bench/opencv/optimized/gnnparsers.ll @@ -1955,7 +1955,6 @@ declare void @llvm.memmove.p0.p0.i64(ptr writeonly captures(none), ptr readonly ; Function Attrs: mustprogress nofree nosync nounwind memory(readwrite, inaccessiblemem: none, target_mem0: none, target_mem1: none) uwtable define internal fastcc void @"_ZSt21__inplace_stable_sortIN9__gnu_cxx17__normal_iteratorIPN2cv4gapi2nn9DetectionESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_comp_iterIZNS2_9parseYoloERKNS2_3MatERKNS2_5Size_IiEEffRKS7_IfSaIfEERS7_INS2_5Rect_IiEESaISP_EERS7_IiSaIiEEE3$_0EEEvT_SY_T0_"(ptr %0, ptr %1) unnamed_addr #9 { - %.sroa.03.i.i = alloca %"class.cv::Rect_", align 8 %3 = alloca %"struct.cv::gapi::nn::Detection", align 4 %4 = ptrtoint ptr %1 to i64 %5 = ptrtoint ptr %0 to i64 @@ -1999,8 +1998,7 @@ _ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN2cv4gapi2nn9DetectionESt6ve br label %23 18: ; preds = %11 - call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.03.i.i) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.03.i.i, ptr noundef nonnull align 4 dereferenceable(16) %.sroa.0.019.i, i64 16, i1 false), !tbaa.struct !65 + %.sroa.03.sroa.0.0.copyload.i.i = load <4 x i32>, ptr %.sroa.0.019.i, align 4 %.sroa.5.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %.pn18.i, i64 44 %.sroa.5.0.copyload.i.i = load i32, ptr %.sroa.5.0..sroa_idx.i.i, align 4, !tbaa !39 %19 = getelementptr i8, ptr %.pn18.i, i64 16 @@ -2019,12 +2017,11 @@ _ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN2cv4gapi2nn9DetectionESt6ve "_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN2cv4gapi2nn9DetectionESt6vectorIS5_SaIS5_EEEENS0_5__ops14_Val_comp_iterIZNS2_9parseYoloERKNS2_3MatERKNS2_5Size_IiEEffRKS7_IfSaIfEERS7_INS2_5Rect_IiEESaISP_EERS7_IiSaIiEEE3$_0EEEvT_T0_.exit.i": ; preds = %.lr.ph.i.i, %18 %.sroa.08.0.lcssa.i.i = phi ptr [ %.sroa.0.019.i, %18 ], [ %.sroa.0.0.i.i, %.lr.ph.i.i ] - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %.sroa.08.0.lcssa.i.i, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.03.i.i, i64 16, i1 false), !tbaa.struct !65 + store <4 x i32> %.sroa.03.sroa.0.0.copyload.i.i, ptr %.sroa.08.0.lcssa.i.i, align 4 %.sroa.4.0..sroa_idx4.i.i = getelementptr inbounds nuw i8, ptr %.sroa.08.0.lcssa.i.i, i64 16 store float %.val.i.i, ptr %.sroa.4.0..sroa_idx4.i.i, align 4, !tbaa !33 %.sroa.5.0..sroa_idx6.i.i = getelementptr inbounds nuw i8, ptr %.sroa.08.0.lcssa.i.i, i64 20 store i32 %.sroa.5.0.copyload.i.i, ptr %.sroa.5.0..sroa_idx6.i.i, align 4, !tbaa !39 - call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.03.i.i) br label %23 23: ; preds = %"_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN2cv4gapi2nn9DetectionESt6vectorIS5_SaIS5_EEEENS0_5__ops14_Val_comp_iterIZNS2_9parseYoloERKNS2_3MatERKNS2_5Size_IiEEffRKS7_IfSaIfEERS7_INS2_5Rect_IiEESaISP_EERS7_IiSaIiEEE3$_0EEEvT_T0_.exit.i", %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN2cv4gapi2nn9DetectionESt6vectorIS5_SaIS5_EEEESA_ET0_T_SC_SB_.exit.i @@ -2340,9 +2337,7 @@ _ZNSt3_V26rotateIN9__gnu_cxx17__normal_iteratorIPN2cv4gapi2nn9DetectionESt6vecto ; Function Attrs: mustprogress nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable define internal fastcc void @"_ZSt24__merge_sort_with_bufferIN9__gnu_cxx17__normal_iteratorIPN2cv4gapi2nn9DetectionESt6vectorIS5_SaIS5_EEEES6_NS0_5__ops15_Iter_comp_iterIZNS2_9parseYoloERKNS2_3MatERKNS2_5Size_IiEEffRKS7_IfSaIfEERS7_INS2_5Rect_IiEESaISP_EERS7_IiSaIiEEE3$_0EEEvT_SY_T0_T1_"(ptr %0, ptr %1, ptr noundef %2) unnamed_addr #11 { - %.sroa.03.i.i10.i = alloca %"class.cv::Rect_", align 8 %4 = alloca %"struct.cv::gapi::nn::Detection", align 4 - %.sroa.03.i.i.i = alloca %"class.cv::Rect_", align 8 %5 = alloca %"struct.cv::gapi::nn::Detection", align 4 %6 = ptrtoint ptr %1 to i64 %7 = ptrtoint ptr %0 to i64 @@ -2382,8 +2377,7 @@ _ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN2cv4gapi2nn9DetectionESt6ve br label %26 21: ; preds = %14 - call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.03.i.i.i) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.03.i.i.i, ptr noundef nonnull align 4 dereferenceable(16) %.sroa.0.019.i.ptr.i, i64 16, i1 false), !tbaa.struct !65 + %.sroa.03.sroa.0.0.copyload.i.i.i = load <4 x i32>, ptr %.sroa.0.019.i.ptr.i, align 4 %.sroa.5.0..sroa_idx.i.i.i = getelementptr inbounds nuw i8, ptr %.pn18.i.i, i64 44 %.sroa.5.0.copyload.i.i.i = load i32, ptr %.sroa.5.0..sroa_idx.i.i.i, align 4, !tbaa !39 %22 = getelementptr i8, ptr %.pn18.i.i, i64 16 @@ -2402,12 +2396,11 @@ _ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN2cv4gapi2nn9DetectionESt6ve "_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN2cv4gapi2nn9DetectionESt6vectorIS5_SaIS5_EEEENS0_5__ops14_Val_comp_iterIZNS2_9parseYoloERKNS2_3MatERKNS2_5Size_IiEEffRKS7_IfSaIfEERS7_INS2_5Rect_IiEESaISP_EERS7_IiSaIiEEE3$_0EEEvT_T0_.exit.i.i": ; preds = %.lr.ph.i.i.i, %21 %.sroa.08.0.lcssa.i.i.i = phi ptr [ %.sroa.0.019.i.ptr.i, %21 ], [ %.sroa.0.0.i.i.i, %.lr.ph.i.i.i ] - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %.sroa.08.0.lcssa.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.03.i.i.i, i64 16, i1 false), !tbaa.struct !65 + store <4 x i32> %.sroa.03.sroa.0.0.copyload.i.i.i, ptr %.sroa.08.0.lcssa.i.i.i, align 4 %.sroa.4.0..sroa_idx4.i.i.i = getelementptr inbounds nuw i8, ptr %.sroa.08.0.lcssa.i.i.i, i64 16 store float %.val.i.i.i, ptr %.sroa.4.0..sroa_idx4.i.i.i, align 4, !tbaa !33 %.sroa.5.0..sroa_idx6.i.i.i = getelementptr inbounds nuw i8, ptr %.sroa.08.0.lcssa.i.i.i, i64 20 store i32 %.sroa.5.0.copyload.i.i.i, ptr %.sroa.5.0..sroa_idx6.i.i.i, align 4, !tbaa !39 - call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.03.i.i.i) br label %26 26: ; preds = %"_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN2cv4gapi2nn9DetectionESt6vectorIS5_SaIS5_EEEENS0_5__ops14_Val_comp_iterIZNS2_9parseYoloERKNS2_3MatERKNS2_5Size_IiEEffRKS7_IfSaIfEERS7_INS2_5Rect_IiEESaISP_EERS7_IiSaIiEEE3$_0EEEvT_T0_.exit.i.i", %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN2cv4gapi2nn9DetectionESt6vectorIS5_SaIS5_EEEESA_ET0_T_SC_SB_.exit.i.i @@ -2438,8 +2431,8 @@ _ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN2cv4gapi2nn9DetectionESt6ve br label %33 33: ; preds = %45, %.lr.ph.i14.i - %.sroa.0.019.i15.i = phi ptr [ %.sroa.0.016.i12.i, %.lr.ph.i14.i ], [ %.sroa.0.0.i26.i, %45 ] - %.pn18.i16.i = phi ptr [ %.sroa.035.0.lcssa.i, %.lr.ph.i14.i ], [ %.sroa.0.019.i15.i, %45 ] + %.sroa.0.019.i15.i = phi ptr [ %.sroa.0.016.i12.i, %.lr.ph.i13.i ], [ %.sroa.0.0.i26.i, %45 ] + %.pn18.i16.i = phi ptr [ %.sroa.035.0.lcssa.i, %.lr.ph.i13.i ], [ %.sroa.0.019.i15.i, %45 ] %34 = getelementptr i8, ptr %.pn18.i16.i, i64 40 %.val.i.i17.i = load float, ptr %34, align 4, !tbaa !86 %.val1.i.i18.i = load float, ptr %32, align 4, !tbaa !86 @@ -2460,9 +2453,8 @@ _ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN2cv4gapi2nn9DetectionESt6ve br label %45 40: ; preds = %33 - call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.03.i.i10.i) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.03.i.i10.i, ptr noundef nonnull align 4 dereferenceable(16) %.sroa.0.019.i15.i, i64 16, i1 false), !tbaa.struct !65 - %.sroa.5.0..sroa_idx.i.i19.i = getelementptr inbounds nuw i8, ptr %.pn18.i16.i, i64 44 + %.sroa.03.sroa.0.0.copyload.i.i18.i = load <4 x i32>, ptr %.sroa.0.019.i14.i, align 4 + %.sroa.5.0..sroa_idx.i.i19.i = getelementptr inbounds nuw i8, ptr %.pn18.i15.i, i64 44 %.sroa.5.0.copyload.i.i20.i = load i32, ptr %.sroa.5.0..sroa_idx.i.i19.i, align 4, !tbaa !39 %41 = getelementptr i8, ptr %.pn18.i16.i, i64 16 %.val2.i11.i.i21.i = load float, ptr %41, align 4, !tbaa !86 @@ -2480,12 +2472,11 @@ _ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN2cv4gapi2nn9DetectionESt6ve "_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN2cv4gapi2nn9DetectionESt6vectorIS5_SaIS5_EEEENS0_5__ops14_Val_comp_iterIZNS2_9parseYoloERKNS2_3MatERKNS2_5Size_IiEEffRKS7_IfSaIfEERS7_INS2_5Rect_IiEESaISP_EERS7_IiSaIiEEE3$_0EEEvT_T0_.exit.i22.i": ; preds = %.lr.ph.i.i28.i, %40 %.sroa.08.0.lcssa.i.i23.i = phi ptr [ %.sroa.0.019.i15.i, %40 ], [ %.sroa.0.0.i.i30.i, %.lr.ph.i.i28.i ] - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %.sroa.08.0.lcssa.i.i23.i, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.03.i.i10.i, i64 16, i1 false), !tbaa.struct !65 + store <4 x i32> %.sroa.03.sroa.0.0.copyload.i.i18.i, ptr %.sroa.08.0.lcssa.i.i23.i, align 4 %.sroa.4.0..sroa_idx4.i.i24.i = getelementptr inbounds nuw i8, ptr %.sroa.08.0.lcssa.i.i23.i, i64 16 store float %.val.i.i17.i, ptr %.sroa.4.0..sroa_idx4.i.i24.i, align 4, !tbaa !33 %.sroa.5.0..sroa_idx6.i.i25.i = getelementptr inbounds nuw i8, ptr %.sroa.08.0.lcssa.i.i23.i, i64 20 store i32 %.sroa.5.0.copyload.i.i20.i, ptr %.sroa.5.0..sroa_idx6.i.i25.i, align 4, !tbaa !39 - call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.03.i.i10.i) br label %45 45: ; preds = %"_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN2cv4gapi2nn9DetectionESt6vectorIS5_SaIS5_EEEENS0_5__ops14_Val_comp_iterIZNS2_9parseYoloERKNS2_3MatERKNS2_5Size_IiEEffRKS7_IfSaIfEERS7_INS2_5Rect_IiEESaISP_EERS7_IiSaIiEEE3$_0EEEvT_T0_.exit.i22.i", %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN2cv4gapi2nn9DetectionESt6vectorIS5_SaIS5_EEEESA_ET0_T_SC_SB_.exit.i32.i diff --git a/bench/opencv/optimized/graphsegmentation.ll b/bench/opencv/optimized/graphsegmentation.ll index eab146deb08..03da148351a 100644 --- a/bench/opencv/optimized/graphsegmentation.ll +++ b/bench/opencv/optimized/graphsegmentation.ll @@ -2346,8 +2346,8 @@ define linkonce_odr hidden void @_ZSt22__final_insertion_sortIPN2cv8ximgproc12se br label %11 11: ; preds = %27, %9 - %.019.i.idx = phi i64 [ 12, %9 ], [ %.019.i.add, %27 ] - %.pn18.i = phi ptr [ %0, %9 ], [ %.019.i.ptr, %27 ] + %.019.i.idx = phi i64 [ 12, %9 ], [ %.019.i.add, %26 ] + %.pn18.i = phi ptr [ %0, %9 ], [ %.019.i.ptr, %26 ] %.019.i.ptr = getelementptr inbounds nuw i8, ptr %0, i64 %.019.i.idx %12 = getelementptr inbounds nuw i8, ptr %.pn18.i, i64 20 %13 = load float, ptr %12, align 4, !tbaa !44 @@ -2367,7 +2367,7 @@ define linkonce_odr hidden void @_ZSt22__final_insertion_sortIPN2cv8ximgproc12se br label %27 19: ; preds = %11 - %20 = load i64, ptr %.019.i.ptr, align 4 + %20 = load <2 x i32>, ptr %.019.i.ptr, align 4 %21 = getelementptr inbounds nuw i8, ptr %.pn18.i, i64 8 %22 = load float, ptr %21, align 4, !tbaa !44 %23 = fcmp olt float %13, %22 @@ -2384,7 +2384,7 @@ define linkonce_odr hidden void @_ZSt22__final_insertion_sortIPN2cv8ximgproc12se _ZSt25__unguarded_linear_insertIPN2cv8ximgproc12segmentation4EdgeEN9__gnu_cxx5__ops14_Val_less_iterEEvT_T0_.exit.i: ; preds = %.lr.ph.i.i, %19 %.09.lcssa.i.i = phi ptr [ %.019.i.ptr, %19 ], [ %.0.i.i, %.lr.ph.i.i ] - store i64 %20, ptr %.09.lcssa.i.i, align 4 + store <2 x i32> %20, ptr %.09.lcssa.i.i, align 4 %.sroa.4.0..09.sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %.09.lcssa.i.i, i64 8 store float %13, ptr %.sroa.4.0..09.sroa_idx.i.i, align 4, !tbaa !48 br label %27 @@ -2400,8 +2400,8 @@ _ZSt16__insertion_sortIPN2cv8ximgproc12segmentation4EdgeEN9__gnu_cxx5__ops15_Ite br i1 %.not5.i, label %_ZSt26__unguarded_insertion_sortIPN2cv8ximgproc12segmentation4EdgeEN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S8_T0_.exit, label %.lr.ph.i .lr.ph.i: ; preds = %_ZSt16__insertion_sortIPN2cv8ximgproc12segmentation4EdgeEN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S8_T0_.exit, %_ZSt25__unguarded_linear_insertIPN2cv8ximgproc12segmentation4EdgeEN9__gnu_cxx5__ops14_Val_less_iterEEvT_T0_.exit.i8 - %.06.i = phi ptr [ %36, %_ZSt25__unguarded_linear_insertIPN2cv8ximgproc12segmentation4EdgeEN9__gnu_cxx5__ops14_Val_less_iterEEvT_T0_.exit.i8 ], [ %28, %_ZSt16__insertion_sortIPN2cv8ximgproc12segmentation4EdgeEN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S8_T0_.exit ] - %29 = load i64, ptr %.06.i, align 4 + %.06.i = phi ptr [ %36, %_ZSt25__unguarded_linear_insertIPN2cv8ximgproc12segmentation4EdgeEN9__gnu_cxx5__ops14_Val_less_iterEEvT_T0_.exit.i9 ], [ %28, %_ZSt16__insertion_sortIPN2cv8ximgproc12segmentation4EdgeEN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S8_T0_.exit ] + %29 = load <2 x i32>, ptr %.06.i, align 4 %.sroa.4.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %.06.i, i64 8 %.sroa.4.0.copyload.i.i = load float, ptr %.sroa.4.0..sroa_idx.i.i, align 4, !tbaa !48 %30 = getelementptr inbounds i8, ptr %.06.i, i64 -4 @@ -2410,7 +2410,7 @@ _ZSt16__insertion_sortIPN2cv8ximgproc12segmentation4EdgeEN9__gnu_cxx5__ops15_Ite br i1 %32, label %.lr.ph.i.i12, label %_ZSt25__unguarded_linear_insertIPN2cv8ximgproc12segmentation4EdgeEN9__gnu_cxx5__ops14_Val_less_iterEEvT_T0_.exit.i8 .lr.ph.i.i12: ; preds = %.lr.ph.i, %.lr.ph.i.i12 - %.0911.i.i13 = phi ptr [ %.0.i.i14, %.lr.ph.i.i12 ], [ %.06.i, %.lr.ph.i ] + %.0911.i.i13 = phi ptr [ %.0.i.i14, %.lr.ph.i.i13 ], [ %.06.i, %.lr.ph.i ] %.0.i.i14 = getelementptr inbounds i8, ptr %.0911.i.i13, i64 -12 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %.0911.i.i13, ptr noundef nonnull align 4 dereferenceable(12) %.0.i.i14, i64 12, i1 false), !tbaa.struct !108 %33 = getelementptr inbounds i8, ptr %.0911.i.i13, i64 -16 @@ -2419,8 +2419,8 @@ _ZSt16__insertion_sortIPN2cv8ximgproc12segmentation4EdgeEN9__gnu_cxx5__ops15_Ite br i1 %35, label %.lr.ph.i.i12, label %_ZSt25__unguarded_linear_insertIPN2cv8ximgproc12segmentation4EdgeEN9__gnu_cxx5__ops14_Val_less_iterEEvT_T0_.exit.i8, !llvm.loop !117 _ZSt25__unguarded_linear_insertIPN2cv8ximgproc12segmentation4EdgeEN9__gnu_cxx5__ops14_Val_less_iterEEvT_T0_.exit.i8: ; preds = %.lr.ph.i.i12, %.lr.ph.i - %.09.lcssa.i.i9 = phi ptr [ %.06.i, %.lr.ph.i ], [ %.0.i.i14, %.lr.ph.i.i12 ] - store i64 %29, ptr %.09.lcssa.i.i9, align 4 + %.09.lcssa.i.i9 = phi ptr [ %.06.i, %.lr.ph.i ], [ %.0.i.i14, %.lr.ph.i.i13 ] + store <2 x i32> %29, ptr %.09.lcssa.i.i9, align 4 %.sroa.4.0..09.sroa_idx.i.i10 = getelementptr inbounds nuw i8, ptr %.09.lcssa.i.i9, i64 8 store float %.sroa.4.0.copyload.i.i, ptr %.sroa.4.0..09.sroa_idx.i.i10, align 4, !tbaa !48 %36 = getelementptr inbounds nuw i8, ptr %.06.i, i64 12 @@ -2440,9 +2440,9 @@ _ZSt25__unguarded_linear_insertIPN2cv8ximgproc12segmentation4EdgeEN9__gnu_cxx5__ %39 = getelementptr inbounds nuw i8, ptr %0, i64 8 br label %40 -40: ; preds = %58, %.lr.ph.i16 - %.019.i17 = phi ptr [ %.016.i15, %.lr.ph.i16 ], [ %.0.i22, %58 ] - %.pn18.i18 = phi ptr [ %0, %.lr.ph.i16 ], [ %.019.i17, %58 ] +40: ; preds = %55, %.lr.ph.i16 + %.019.i17 = phi ptr [ %.016.i15, %.lr.ph.i17 ], [ %.0.i24, %55 ] + %.pn18.i18 = phi ptr [ %0, %.lr.ph.i17 ], [ %.019.i17, %55 ] %41 = getelementptr inbounds nuw i8, ptr %.pn18.i18, i64 20 %42 = load float, ptr %41, align 4, !tbaa !44 %43 = load float, ptr %39, align 4, !tbaa !44 @@ -2460,37 +2460,37 @@ _ZSt25__unguarded_linear_insertIPN2cv8ximgproc12segmentation4EdgeEN9__gnu_cxx5__ tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %49, ptr noundef nonnull align 4 dereferenceable(1) %0, i64 %48, i1 false) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %0, ptr noundef nonnull align 4 dereferenceable(12) %3, i64 12, i1 false), !tbaa.struct !108 call void @llvm.lifetime.end.p0(ptr nonnull %3) - br label %58 + br label %55 50: ; preds = %40 - %51 = load i64, ptr %.019.i17, align 4 + %51 = load <2 x i32>, ptr %.019.i17, align 4 %52 = getelementptr inbounds nuw i8, ptr %.pn18.i18, i64 8 + %50 = load float, ptr %49, align 4, !tbaa !44 + %51 = fcmp olt float %40, %50 + br i1 %51, label %.lr.ph.i.i26, label %_ZSt25__unguarded_linear_insertIPN2cv8ximgproc12segmentation4EdgeEN9__gnu_cxx5__ops14_Val_less_iterEEvT_T0_.exit.i21 + +.lr.ph.i.i26: ; preds = %48, %.lr.ph.i.i26 + %.0912.i.i27 = phi ptr [ %.0.i.i28, %.lr.ph.i.i26 ], [ %.019.i18, %48 ] + %.0.i.i28 = getelementptr inbounds i8, ptr %.0912.i.i27, i64 -12 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %.0912.i.i27, ptr noundef nonnull align 4 dereferenceable(12) %.0.i.i28, i64 12, i1 false), !tbaa.struct !108 + %52 = getelementptr inbounds i8, ptr %.0912.i.i27, i64 -16 %53 = load float, ptr %52, align 4, !tbaa !44 %54 = fcmp olt float %42, %53 - br i1 %54, label %.lr.ph.i.i24, label %_ZSt25__unguarded_linear_insertIPN2cv8ximgproc12segmentation4EdgeEN9__gnu_cxx5__ops14_Val_less_iterEEvT_T0_.exit.i19 - -.lr.ph.i.i24: ; preds = %50, %.lr.ph.i.i24 - %.0911.i.i25 = phi ptr [ %.0.i.i26, %.lr.ph.i.i24 ], [ %.019.i17, %50 ] - %.0.i.i26 = getelementptr inbounds i8, ptr %.0911.i.i25, i64 -12 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %.0911.i.i25, ptr noundef nonnull align 4 dereferenceable(12) %.0.i.i26, i64 12, i1 false), !tbaa.struct !108 - %55 = getelementptr inbounds i8, ptr %.0911.i.i25, i64 -16 - %56 = load float, ptr %55, align 4, !tbaa !44 - %57 = fcmp olt float %42, %56 - br i1 %57, label %.lr.ph.i.i24, label %_ZSt25__unguarded_linear_insertIPN2cv8ximgproc12segmentation4EdgeEN9__gnu_cxx5__ops14_Val_less_iterEEvT_T0_.exit.i19, !llvm.loop !117 - -_ZSt25__unguarded_linear_insertIPN2cv8ximgproc12segmentation4EdgeEN9__gnu_cxx5__ops14_Val_less_iterEEvT_T0_.exit.i19: ; preds = %.lr.ph.i.i24, %50 - %.09.lcssa.i.i20 = phi ptr [ %.019.i17, %50 ], [ %.0.i.i26, %.lr.ph.i.i24 ] - store i64 %51, ptr %.09.lcssa.i.i20, align 4 - %.sroa.4.0..09.sroa_idx.i.i21 = getelementptr inbounds nuw i8, ptr %.09.lcssa.i.i20, i64 8 - store float %42, ptr %.sroa.4.0..09.sroa_idx.i.i21, align 4, !tbaa !48 - br label %58 - -58: ; preds = %_ZSt25__unguarded_linear_insertIPN2cv8ximgproc12segmentation4EdgeEN9__gnu_cxx5__ops14_Val_less_iterEEvT_T0_.exit.i19, %45 - %.0.i22 = getelementptr inbounds nuw i8, ptr %.019.i17, i64 12 - %.not.i23 = icmp eq ptr %.0.i22, %1 - br i1 %.not.i23, label %_ZSt26__unguarded_insertion_sortIPN2cv8ximgproc12segmentation4EdgeEN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S8_T0_.exit, label %40, !llvm.loop !118 - -_ZSt26__unguarded_insertion_sortIPN2cv8ximgproc12segmentation4EdgeEN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S8_T0_.exit: ; preds = %58, %_ZSt25__unguarded_linear_insertIPN2cv8ximgproc12segmentation4EdgeEN9__gnu_cxx5__ops14_Val_less_iterEEvT_T0_.exit.i8, %.preheader.i, %37, %_ZSt16__insertion_sortIPN2cv8ximgproc12segmentation4EdgeEN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S8_T0_.exit + br i1 %54, label %.lr.ph.i.i26, label %_ZSt25__unguarded_linear_insertIPN2cv8ximgproc12segmentation4EdgeEN9__gnu_cxx5__ops14_Val_less_iterEEvT_T0_.exit.i21, !llvm.loop !117 + +.lr.ph.i.i24: ; preds = %.lr.ph.i.i26, %48 + %.0911.i.i25 = phi ptr [ %.019.i18, %48 ], [ %.0.i.i28, %.lr.ph.i.i26 ] + store <2 x i32> %51, ptr %.0911.i.i25, align 4 + %.sroa.4.0..09.sroa_idx.i.i23 = getelementptr inbounds nuw i8, ptr %.0911.i.i25, i64 8 + store float %40, ptr %.sroa.4.0..09.sroa_idx.i.i23, align 4, !tbaa !48 + br label %55 + +55: ; preds = %_ZSt25__unguarded_linear_insertIPN2cv8ximgproc12segmentation4EdgeEN9__gnu_cxx5__ops14_Val_less_iterEEvT_T0_.exit.i21, %43 + %.0.i24 = getelementptr inbounds nuw i8, ptr %.019.i18, i64 12 + %.not.i25 = icmp eq ptr %.0.i24, %1 + br i1 %.not.i25, label %_ZSt26__unguarded_insertion_sortIPN2cv8ximgproc12segmentation4EdgeEN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S8_T0_.exit, label %38, !llvm.loop !118 + +_ZSt26__unguarded_insertion_sortIPN2cv8ximgproc12segmentation4EdgeEN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S8_T0_.exit:; preds = %55, %_ZSt25__unguarded_linear_insertIPN2cv8ximgproc12segmentation4EdgeEN9__gnu_cxx5__ops14_Val_less_iterEEvT_T0_.exit.i9, %.preheader.i, %35, %_ZSt16__insertion_sortIPN2cv8ximgproc12segmentation4EdgeEN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S8_T0_.exit ret void } diff --git a/bench/opencv/optimized/seam_finders.ll b/bench/opencv/optimized/seam_finders.ll index af8164c3271..0dcfd4e785f 100644 --- a/bench/opencv/optimized/seam_finders.ll +++ b/bench/opencv/optimized/seam_finders.ll @@ -7757,8 +7757,8 @@ define noundef zeroext i1 @_ZN2cv6detail12DpSeamFinder11getSeamTipsEiiRNS_6Point %8 = alloca %"class.std::vector.20", align 8 %9 = alloca %"class.std::vector.60", align 8 %10 = alloca %"class.std::vector.32", align 8 - %.sroa.0 = alloca %"class.cv::Point_", align 16 - %.sroa.5 = alloca %"class.cv::Point_", align 8 + %.sroa.0 = alloca <2 x i32>, align 16 + %.sroa.5 = alloca <2 x i32>, align 8 %11 = getelementptr inbounds nuw i8, ptr %0, i64 912 %12 = sext i32 %1 to i64 %13 = load ptr, ptr %11, align 8, !tbaa !151 @@ -8345,8 +8345,8 @@ _ZNSt6vectorIN2cv6Point_IiEESaIS2_EE9push_backERKS2_.exit: ; preds = %_ZNSt6vect .preheader: ; preds = %.loopexit call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.0) call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.5) - store i64 0, ptr %.sroa.0, align 16 - store i64 0, ptr %.sroa.5, align 8 + store <2 x i32> zeroinitializer, ptr %.sroa.0, align 16, !tbaa !55 + store <2 x i32> zeroinitializer, ptr %.sroa.5, align 8, !tbaa !55 br label %350 292: ; preds = %.lr.ph248, %.loopexit diff --git a/bench/openusd/optimized/blendShapeQuery.ll b/bench/openusd/optimized/blendShapeQuery.ll index 57e9d179394..f110dcad7fd 100644 --- a/bench/openusd/optimized/blendShapeQuery.ll +++ b/bench/openusd/optimized/blendShapeQuery.ll @@ -6980,8 +6980,8 @@ define linkonce_odr void @_ZSt22__final_insertion_sortIPN32pxrInternal_v0_24__px br label %11 11: ; preds = %27, %9 - %.019.i.idx = phi i64 [ 12, %9 ], [ %.019.i.add, %27 ] - %.pn18.i = phi ptr [ %0, %9 ], [ %.019.i.ptr, %27 ] + %.019.i.idx = phi i64 [ 12, %9 ], [ %.019.i.add, %26 ] + %.pn18.i = phi ptr [ %0, %9 ], [ %.019.i.ptr, %26 ] %.019.i.ptr = getelementptr inbounds nuw i8, ptr %0, i64 %.019.i.idx %12 = getelementptr inbounds nuw i8, ptr %.pn18.i, i64 20 %13 = load float, ptr %12, align 4 @@ -6999,7 +6999,7 @@ define linkonce_odr void @_ZSt22__final_insertion_sortIPN32pxrInternal_v0_24__px br label %27 19: ; preds = %11 - %20 = load i64, ptr %.019.i.ptr, align 4 + %20 = load <2 x i32>, ptr %.019.i.ptr, align 4 %21 = getelementptr inbounds nuw i8, ptr %.pn18.i, i64 8 %22 = load float, ptr %21, align 4 %23 = fcmp olt float %13, %22 @@ -7016,7 +7016,7 @@ define linkonce_odr void @_ZSt22__final_insertion_sortIPN32pxrInternal_v0_24__px _ZSt25__unguarded_linear_insertIPN32pxrInternal_v0_24__pxrReserved__22UsdSkelBlendShapeQuery9_SubShapeEN9__gnu_cxx5__ops14_Val_comp_iterINS1_24_SubShapeCompareByWeightEEEEvT_T0_.exit.i: ; preds = %.lr.ph.i.i, %19 %.09.lcssa.i.i = phi ptr [ %.019.i.ptr, %19 ], [ %.0.i.i, %.lr.ph.i.i ] - store i64 %20, ptr %.09.lcssa.i.i, align 4 + store <2 x i32> %20, ptr %.09.lcssa.i.i, align 4 %.sroa.2.0..09.sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %.09.lcssa.i.i, i64 8 store float %13, ptr %.sroa.2.0..09.sroa_idx.i.i, align 4 br label %27 @@ -7033,8 +7033,8 @@ _ZSt16__insertion_sortIPN32pxrInternal_v0_24__pxrReserved__22UsdSkelBlendShapeQu br i1 %.not6.i, label %_ZSt26__unguarded_insertion_sortIPN32pxrInternal_v0_24__pxrReserved__22UsdSkelBlendShapeQuery9_SubShapeEN9__gnu_cxx5__ops15_Iter_comp_iterINS1_24_SubShapeCompareByWeightEEEEvT_S9_T0_.exit, label %.lr.ph.i .lr.ph.i: ; preds = %_ZSt16__insertion_sortIPN32pxrInternal_v0_24__pxrReserved__22UsdSkelBlendShapeQuery9_SubShapeEN9__gnu_cxx5__ops15_Iter_comp_iterINS1_24_SubShapeCompareByWeightEEEEvT_S9_T0_.exit, %_ZSt25__unguarded_linear_insertIPN32pxrInternal_v0_24__pxrReserved__22UsdSkelBlendShapeQuery9_SubShapeEN9__gnu_cxx5__ops14_Val_comp_iterINS1_24_SubShapeCompareByWeightEEEEvT_T0_.exit.i13 - %.07.i = phi ptr [ %36, %_ZSt25__unguarded_linear_insertIPN32pxrInternal_v0_24__pxrReserved__22UsdSkelBlendShapeQuery9_SubShapeEN9__gnu_cxx5__ops14_Val_comp_iterINS1_24_SubShapeCompareByWeightEEEEvT_T0_.exit.i13 ], [ %28, %_ZSt16__insertion_sortIPN32pxrInternal_v0_24__pxrReserved__22UsdSkelBlendShapeQuery9_SubShapeEN9__gnu_cxx5__ops15_Iter_comp_iterINS1_24_SubShapeCompareByWeightEEEEvT_S9_T0_.exit ] - %29 = load i64, ptr %.07.i, align 4 + %.07.i = phi ptr [ %36, %_ZSt25__unguarded_linear_insertIPN32pxrInternal_v0_24__pxrReserved__22UsdSkelBlendShapeQuery9_SubShapeEN9__gnu_cxx5__ops14_Val_comp_iterINS1_24_SubShapeCompareByWeightEEEEvT_T0_.exit.i14 ], [ %28, %_ZSt16__insertion_sortIPN32pxrInternal_v0_24__pxrReserved__22UsdSkelBlendShapeQuery9_SubShapeEN9__gnu_cxx5__ops15_Iter_comp_iterINS1_24_SubShapeCompareByWeightEEEEvT_S9_T0_.exit ] + %29 = load <2 x i32>, ptr %.07.i, align 4 %.sroa.2.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %.07.i, i64 8 %.sroa.2.0.copyload.i.i = load float, ptr %.sroa.2.0..sroa_idx.i.i, align 4 %30 = getelementptr inbounds i8, ptr %.07.i, i64 -4 @@ -7043,7 +7043,7 @@ _ZSt16__insertion_sortIPN32pxrInternal_v0_24__pxrReserved__22UsdSkelBlendShapeQu br i1 %32, label %.lr.ph.i.i17, label %_ZSt25__unguarded_linear_insertIPN32pxrInternal_v0_24__pxrReserved__22UsdSkelBlendShapeQuery9_SubShapeEN9__gnu_cxx5__ops14_Val_comp_iterINS1_24_SubShapeCompareByWeightEEEEvT_T0_.exit.i13 .lr.ph.i.i17: ; preds = %.lr.ph.i, %.lr.ph.i.i17 - %.0911.i.i18 = phi ptr [ %.0.i.i19, %.lr.ph.i.i17 ], [ %.07.i, %.lr.ph.i ] + %.0911.i.i18 = phi ptr [ %.0.i.i19, %.lr.ph.i.i18 ], [ %.07.i, %.lr.ph.i ] %.0.i.i19 = getelementptr inbounds i8, ptr %.0911.i.i18, i64 -12 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %.0911.i.i18, ptr noundef nonnull align 4 dereferenceable(12) %.0.i.i19, i64 12, i1 false) %33 = getelementptr inbounds i8, ptr %.0911.i.i18, i64 -16 @@ -7052,8 +7052,8 @@ _ZSt16__insertion_sortIPN32pxrInternal_v0_24__pxrReserved__22UsdSkelBlendShapeQu br i1 %35, label %.lr.ph.i.i17, label %_ZSt25__unguarded_linear_insertIPN32pxrInternal_v0_24__pxrReserved__22UsdSkelBlendShapeQuery9_SubShapeEN9__gnu_cxx5__ops14_Val_comp_iterINS1_24_SubShapeCompareByWeightEEEEvT_T0_.exit.i13, !llvm.loop !70 _ZSt25__unguarded_linear_insertIPN32pxrInternal_v0_24__pxrReserved__22UsdSkelBlendShapeQuery9_SubShapeEN9__gnu_cxx5__ops14_Val_comp_iterINS1_24_SubShapeCompareByWeightEEEEvT_T0_.exit.i13: ; preds = %.lr.ph.i.i17, %.lr.ph.i - %.09.lcssa.i.i14 = phi ptr [ %.07.i, %.lr.ph.i ], [ %.0.i.i19, %.lr.ph.i.i17 ] - store i64 %29, ptr %.09.lcssa.i.i14, align 4 + %.09.lcssa.i.i14 = phi ptr [ %.07.i, %.lr.ph.i ], [ %.0.i.i19, %.lr.ph.i.i18 ] + store <2 x i32> %29, ptr %.09.lcssa.i.i14, align 4 %.sroa.2.0..09.sroa_idx.i.i15 = getelementptr inbounds nuw i8, ptr %.09.lcssa.i.i14, i64 8 store float %.sroa.2.0.copyload.i.i, ptr %.sroa.2.0..09.sroa_idx.i.i15, align 4 %36 = getelementptr inbounds nuw i8, ptr %.07.i, i64 12 @@ -7063,20 +7063,20 @@ _ZSt25__unguarded_linear_insertIPN32pxrInternal_v0_24__pxrReserved__22UsdSkelBle 37: ; preds = %2 call void @llvm.lifetime.start.p0(ptr nonnull %3) %38 = icmp eq ptr %0, %1 - br i1 %38, label %_ZSt16__insertion_sortIPN32pxrInternal_v0_24__pxrReserved__22UsdSkelBlendShapeQuery9_SubShapeEN9__gnu_cxx5__ops15_Iter_comp_iterINS1_24_SubShapeCompareByWeightEEEEvT_S9_T0_.exit33, label %.preheader.i + br i1 %38, label %_ZSt16__insertion_sortIPN32pxrInternal_v0_24__pxrReserved__22UsdSkelBlendShapeQuery9_SubShapeEN9__gnu_cxx5__ops15_Iter_comp_iterINS1_24_SubShapeCompareByWeightEEEEvT_S9_T0_.exit35, label %.preheader.i .preheader.i: ; preds = %37 %.016.i20 = getelementptr inbounds nuw i8, ptr %0, i64 12 %.not17.i = icmp eq ptr %.016.i20, %1 - br i1 %.not17.i, label %_ZSt16__insertion_sortIPN32pxrInternal_v0_24__pxrReserved__22UsdSkelBlendShapeQuery9_SubShapeEN9__gnu_cxx5__ops15_Iter_comp_iterINS1_24_SubShapeCompareByWeightEEEEvT_S9_T0_.exit33, label %.lr.ph.i21 + br i1 %.not17.i, label %_ZSt16__insertion_sortIPN32pxrInternal_v0_24__pxrReserved__22UsdSkelBlendShapeQuery9_SubShapeEN9__gnu_cxx5__ops15_Iter_comp_iterINS1_24_SubShapeCompareByWeightEEEEvT_S9_T0_.exit35, label %.lr.ph.i21 .lr.ph.i21: ; preds = %.preheader.i %39 = getelementptr inbounds nuw i8, ptr %0, i64 8 br label %40 -40: ; preds = %58, %.lr.ph.i21 - %.019.i22 = phi ptr [ %.016.i20, %.lr.ph.i21 ], [ %.0.i27, %58 ] - %.pn18.i23 = phi ptr [ %0, %.lr.ph.i21 ], [ %.019.i22, %58 ] +40: ; preds = %55, %.lr.ph.i21 + %.019.i22 = phi ptr [ %.016.i20, %.lr.ph.i22 ], [ %.0.i29, %55 ] + %.pn18.i23 = phi ptr [ %0, %.lr.ph.i22 ], [ %.019.i22, %55 ] %41 = getelementptr inbounds nuw i8, ptr %.pn18.i23, i64 20 %42 = load float, ptr %41, align 4 %43 = load float, ptr %39, align 4 @@ -7092,41 +7092,41 @@ _ZSt25__unguarded_linear_insertIPN32pxrInternal_v0_24__pxrReserved__22UsdSkelBle %49 = getelementptr inbounds %"struct.pxrInternal_v0_24__pxrReserved__::UsdSkelBlendShapeQuery::_SubShape", ptr %46, i64 %.neg.i.i.i.i.i.i32 tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %49, ptr noundef nonnull align 4 dereferenceable(1) %0, i64 %48, i1 false) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %0, ptr noundef nonnull align 4 dereferenceable(12) %3, i64 12, i1 false) - br label %58 + br label %55 50: ; preds = %40 - %51 = load i64, ptr %.019.i22, align 4 + %51 = load <2 x i32>, ptr %.019.i22, align 4 %52 = getelementptr inbounds nuw i8, ptr %.pn18.i23, i64 8 + %50 = load float, ptr %49, align 4 + %51 = fcmp olt float %40, %50 + br i1 %51, label %.lr.ph.i.i31, label %_ZSt25__unguarded_linear_insertIPN32pxrInternal_v0_24__pxrReserved__22UsdSkelBlendShapeQuery9_SubShapeEN9__gnu_cxx5__ops14_Val_comp_iterINS1_24_SubShapeCompareByWeightEEEEvT_T0_.exit.i26 + +.lr.ph.i.i31: ; preds = %48, %.lr.ph.i.i31 + %.0912.i.i32 = phi ptr [ %.0.i.i33, %.lr.ph.i.i31 ], [ %.019.i23, %48 ] + %.0.i.i33 = getelementptr inbounds i8, ptr %.0912.i.i32, i64 -12 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %.0912.i.i32, ptr noundef nonnull align 4 dereferenceable(12) %.0.i.i33, i64 12, i1 false) + %52 = getelementptr inbounds i8, ptr %.0912.i.i32, i64 -16 %53 = load float, ptr %52, align 4 %54 = fcmp olt float %42, %53 - br i1 %54, label %.lr.ph.i.i29, label %_ZSt25__unguarded_linear_insertIPN32pxrInternal_v0_24__pxrReserved__22UsdSkelBlendShapeQuery9_SubShapeEN9__gnu_cxx5__ops14_Val_comp_iterINS1_24_SubShapeCompareByWeightEEEEvT_T0_.exit.i24 - -.lr.ph.i.i29: ; preds = %50, %.lr.ph.i.i29 - %.0911.i.i30 = phi ptr [ %.0.i.i31, %.lr.ph.i.i29 ], [ %.019.i22, %50 ] - %.0.i.i31 = getelementptr inbounds i8, ptr %.0911.i.i30, i64 -12 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %.0911.i.i30, ptr noundef nonnull align 4 dereferenceable(12) %.0.i.i31, i64 12, i1 false) - %55 = getelementptr inbounds i8, ptr %.0911.i.i30, i64 -16 - %56 = load float, ptr %55, align 4 - %57 = fcmp olt float %42, %56 - br i1 %57, label %.lr.ph.i.i29, label %_ZSt25__unguarded_linear_insertIPN32pxrInternal_v0_24__pxrReserved__22UsdSkelBlendShapeQuery9_SubShapeEN9__gnu_cxx5__ops14_Val_comp_iterINS1_24_SubShapeCompareByWeightEEEEvT_T0_.exit.i24, !llvm.loop !70 - -_ZSt25__unguarded_linear_insertIPN32pxrInternal_v0_24__pxrReserved__22UsdSkelBlendShapeQuery9_SubShapeEN9__gnu_cxx5__ops14_Val_comp_iterINS1_24_SubShapeCompareByWeightEEEEvT_T0_.exit.i24: ; preds = %.lr.ph.i.i29, %50 - %.09.lcssa.i.i25 = phi ptr [ %.019.i22, %50 ], [ %.0.i.i31, %.lr.ph.i.i29 ] - store i64 %51, ptr %.09.lcssa.i.i25, align 4 - %.sroa.2.0..09.sroa_idx.i.i26 = getelementptr inbounds nuw i8, ptr %.09.lcssa.i.i25, i64 8 - store float %42, ptr %.sroa.2.0..09.sroa_idx.i.i26, align 4 - br label %58 - -58: ; preds = %_ZSt25__unguarded_linear_insertIPN32pxrInternal_v0_24__pxrReserved__22UsdSkelBlendShapeQuery9_SubShapeEN9__gnu_cxx5__ops14_Val_comp_iterINS1_24_SubShapeCompareByWeightEEEEvT_T0_.exit.i24, %45 - %.0.i27 = getelementptr inbounds nuw i8, ptr %.019.i22, i64 12 - %.not.i28 = icmp eq ptr %.0.i27, %1 - br i1 %.not.i28, label %_ZSt16__insertion_sortIPN32pxrInternal_v0_24__pxrReserved__22UsdSkelBlendShapeQuery9_SubShapeEN9__gnu_cxx5__ops15_Iter_comp_iterINS1_24_SubShapeCompareByWeightEEEEvT_S9_T0_.exit33, label %40, !llvm.loop !71 - -_ZSt16__insertion_sortIPN32pxrInternal_v0_24__pxrReserved__22UsdSkelBlendShapeQuery9_SubShapeEN9__gnu_cxx5__ops15_Iter_comp_iterINS1_24_SubShapeCompareByWeightEEEEvT_S9_T0_.exit33: ; preds = %58, %37, %.preheader.i + br i1 %54, label %.lr.ph.i.i31, label %_ZSt25__unguarded_linear_insertIPN32pxrInternal_v0_24__pxrReserved__22UsdSkelBlendShapeQuery9_SubShapeEN9__gnu_cxx5__ops14_Val_comp_iterINS1_24_SubShapeCompareByWeightEEEEvT_T0_.exit.i26, !llvm.loop !70 + +.lr.ph.i.i29: ; preds = %.lr.ph.i.i31, %48 + %.0911.i.i30 = phi ptr [ %.019.i23, %48 ], [ %.0.i.i33, %.lr.ph.i.i31 ] + store <2 x i32> %51, ptr %.0911.i.i30, align 4 + %.sroa.2.0..09.sroa_idx.i.i28 = getelementptr inbounds nuw i8, ptr %.0911.i.i30, i64 8 + store float %40, ptr %.sroa.2.0..09.sroa_idx.i.i28, align 4 + br label %55 + +55:; preds = %_ZSt25__unguarded_linear_insertIPN32pxrInternal_v0_24__pxrReserved__22UsdSkelBlendShapeQuery9_SubShapeEN9__gnu_cxx5__ops14_Val_comp_iterINS1_24_SubShapeCompareByWeightEEEEvT_T0_.exit.i26, %43 + %.0.i29 = getelementptr inbounds nuw i8, ptr %.019.i23, i64 12 + %.not.i30 = icmp eq ptr %.0.i29, %1 + br i1 %.not.i30, label %_ZSt16__insertion_sortIPN32pxrInternal_v0_24__pxrReserved__22UsdSkelBlendShapeQuery9_SubShapeEN9__gnu_cxx5__ops15_Iter_comp_iterINS1_24_SubShapeCompareByWeightEEEEvT_S9_T0_.exit35, label %38, !llvm.loop !71 + +_ZSt16__insertion_sortIPN32pxrInternal_v0_24__pxrReserved__22UsdSkelBlendShapeQuery9_SubShapeEN9__gnu_cxx5__ops15_Iter_comp_iterINS1_24_SubShapeCompareByWeightEEEEvT_S9_T0_.exit35:; preds = %55, %35, %.preheader.i call void @llvm.lifetime.end.p0(ptr nonnull %3) br label %_ZSt26__unguarded_insertion_sortIPN32pxrInternal_v0_24__pxrReserved__22UsdSkelBlendShapeQuery9_SubShapeEN9__gnu_cxx5__ops15_Iter_comp_iterINS1_24_SubShapeCompareByWeightEEEEvT_S9_T0_.exit -_ZSt26__unguarded_insertion_sortIPN32pxrInternal_v0_24__pxrReserved__22UsdSkelBlendShapeQuery9_SubShapeEN9__gnu_cxx5__ops15_Iter_comp_iterINS1_24_SubShapeCompareByWeightEEEEvT_S9_T0_.exit: ; preds = %_ZSt25__unguarded_linear_insertIPN32pxrInternal_v0_24__pxrReserved__22UsdSkelBlendShapeQuery9_SubShapeEN9__gnu_cxx5__ops14_Val_comp_iterINS1_24_SubShapeCompareByWeightEEEEvT_T0_.exit.i13, %_ZSt16__insertion_sortIPN32pxrInternal_v0_24__pxrReserved__22UsdSkelBlendShapeQuery9_SubShapeEN9__gnu_cxx5__ops15_Iter_comp_iterINS1_24_SubShapeCompareByWeightEEEEvT_S9_T0_.exit, %_ZSt16__insertion_sortIPN32pxrInternal_v0_24__pxrReserved__22UsdSkelBlendShapeQuery9_SubShapeEN9__gnu_cxx5__ops15_Iter_comp_iterINS1_24_SubShapeCompareByWeightEEEEvT_S9_T0_.exit33 +_ZSt26__unguarded_insertion_sortIPN32pxrInternal_v0_24__pxrReserved__22UsdSkelBlendShapeQuery9_SubShapeEN9__gnu_cxx5__ops15_Iter_comp_iterINS1_24_SubShapeCompareByWeightEEEEvT_S9_T0_.exit: ; preds = %_ZSt25__unguarded_linear_insertIPN32pxrInternal_v0_24__pxrReserved__22UsdSkelBlendShapeQuery9_SubShapeEN9__gnu_cxx5__ops14_Val_comp_iterINS1_24_SubShapeCompareByWeightEEEEvT_T0_.exit.i13, %_ZSt16__insertion_sortIPN32pxrInternal_v0_24__pxrReserved__22UsdSkelBlendShapeQuery9_SubShapeEN9__gnu_cxx5__ops15_Iter_comp_iterINS1_24_SubShapeCompareByWeightEEEEvT_S9_T0_.exit, %_ZSt16__insertion_sortIPN32pxrInternal_v0_24__pxrReserved__22UsdSkelBlendShapeQuery9_SubShapeEN9__gnu_cxx5__ops15_Iter_comp_iterINS1_24_SubShapeCompareByWeightEEEEvT_S9_T0_.exit35 ret void } diff --git a/bench/openusd/optimized/collectionCache.ll b/bench/openusd/optimized/collectionCache.ll index f478ef28eca..6c0211fbc68 100644 --- a/bench/openusd/optimized/collectionCache.ll +++ b/bench/openusd/optimized/collectionCache.ll @@ -178,9 +178,7 @@ $_ZNSt6vectorISt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunc $_ZNSt6vectorISt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEESaIS7_EE20_M_allocate_and_copyIN9__gnu_cxx17__normal_iteratorIPKS7_S9_EEEEPS7_mT_SH_ = comdat any -$_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE8__copy_mIPKSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS4_9UsdObjectEEEPSA_EET0_T_SF_SE_ = comdat any - -$_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE8__copy_mIPSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS4_9UsdObjectEEESB_EET0_T_SD_SC_ = comdat any +$_ZSt13__copy_move_aILb0EN9__gnu_cxx17__normal_iteratorIPKSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS3_9UsdObjectEEESt6vectorIS9_SaIS9_EEEENS1_IPS9_SE_EEET1_T0_SJ_SI_ = comdat any $_ZSt16__do_uninit_copyIPSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEES8_ET0_T_SA_S9_ = comdat any @@ -7815,6 +7813,7 @@ _ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKN32pxrInternal_v0_24__pxrReserved__19 ; Function Attrs: mustprogress uwtable define linkonce_odr noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorISt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEESaIS7_EEaSERKS9_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %1) local_unnamed_addr #0 comdat align 2 personality ptr @__gxx_personality_v0 { + %3 = alloca %"class.std::function", align 16 %.not = icmp eq ptr %1, %0 br i1 %.not, label %72, label %3 @@ -7822,36 +7821,36 @@ define linkonce_odr noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vecto %4 = getelementptr inbounds nuw i8, ptr %1, i64 8 %5 = load ptr, ptr %4, align 8 %6 = load ptr, ptr %1, align 8 - %7 = ptrtoint ptr %5 to i64 %8 = ptrtoint ptr %6 to i64 - %9 = sub i64 %7, %8 - %10 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %11 = load ptr, ptr %10, align 8 - %12 = load ptr, ptr %0, align 8 - %13 = ptrtoint ptr %11 to i64 + %9 = ptrtoint ptr %7 to i63 + %10 = sub i64 %8, %9 + %11 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %12 = load ptr, ptr %11, align 8 + %13 = load ptr, ptr %0, align 8 %14 = ptrtoint ptr %12 to i64 - %15 = sub i64 %13, %14 - %16 = icmp ugt i64 %9, %15 - br i1 %16, label %17, label %38 - -17: ; preds = %3 - %18 = ashr exact i64 %9, 5 - %19 = tail call noundef ptr @_ZNSt6vectorISt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEESaIS7_EE20_M_allocate_and_copyIN9__gnu_cxx17__normal_iteratorIPKS7_S9_EEEEPS7_mT_SH_(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %18, ptr %6, ptr %5) - %20 = load ptr, ptr %0, align 8 - %21 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %22 = load ptr, ptr %21, align 8 - %.not4.i.i.i = icmp eq ptr %20, %22 + %15 = ptrtoint ptr %13 to i64 + %16 = sub i64 %14, %15 + %17 = icmp ugt i64 %10, %16 + br i1 %17, label %18, label %39 + +18:; preds = %4 + %19 = ashr exact i64 %10, 5 + %20 = tail call noundef ptr @_ZNSt6vectorISt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEESaIS7_EE20_M_allocate_and_copyIN9__gnu_cxx17__normal_iteratorIPKS7_S9_EEEEPS7_mT_SH_(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %19, ptr %7, ptr %6) + %21 = load ptr, ptr %0, align 8 + %22 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %23 = load ptr, ptr %22, align 8 + %.not4.i.i.i = icmp eq ptr %21, %23 br i1 %.not4.i.i.i, label %_ZSt8_DestroyIPSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEES7_EvT_S9_RSaIT0_E.exit, label %.lr.ph.i.i.i -.lr.ph.i.i.i: ; preds = %17, %_ZSt8_DestroyISt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEEEvPT_.exit.i.i.i - %.05.i.i.i = phi ptr [ %30, %_ZSt8_DestroyISt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEEEvPT_.exit.i.i.i ], [ %20, %17 ] +.lr.ph.i.i.i: ; preds = %18, %_ZSt8_DestroyISt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEEEvPT_.exit.i.i.i + %.05.i.i.i = phi ptr [ %30, %_ZSt8_DestroyISt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEEEvPT_.exit.i.i.i ], [ %21, %18 ] %23 = getelementptr inbounds nuw i8, ptr %.05.i.i.i, i64 16 %24 = load ptr, ptr %23, align 8 %.not.i.i.i.i.i.i = icmp eq ptr %24, null br i1 %.not.i.i.i.i.i.i, label %_ZSt8_DestroyISt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEEEvPT_.exit.i.i.i, label %25 25: ; preds = %.lr.ph.i.i.i - %26 = invoke noundef zeroext i1 %24(ptr noundef nonnull align 8 dereferenceable(32) %.05.i.i.i, ptr noundef nonnull align 8 dereferenceable(32) %.05.i.i.i, i32 noundef 3) + %26 = invoke noundef zeroext i1 %25(ptr noundef nonnull align 8 dereferenceable(32) %.05.i.i.i, ptr noundef nonnull align 8 dereferenceable(32) %.05.i.i.i, i32 noundef 3) to label %_ZSt8_DestroyISt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEEEvPT_.exit.i.i.i unwind label %27 27: ; preds = %25 @@ -7863,20 +7862,20 @@ define linkonce_odr noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vecto _ZSt8_DestroyISt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEEEvPT_.exit.i.i.i: ; preds = %25, %.lr.ph.i.i.i %30 = getelementptr inbounds nuw i8, ptr %.05.i.i.i, i64 32 - %.not.i.i.i = icmp eq ptr %30, %22 + %.not.i.i.i = icmp eq ptr %30, %23 br i1 %.not.i.i.i, label %_ZSt8_DestroyIPSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEES7_EvT_S9_RSaIT0_E.exitthread-pre-split, label %.lr.ph.i.i.i, !llvm.loop !36 _ZSt8_DestroyIPSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEES7_EvT_S9_RSaIT0_E.exitthread-pre-split: ; preds = %_ZSt8_DestroyISt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEEEvPT_.exit.i.i.i %.pr = load ptr, ptr %0, align 8 br label %_ZSt8_DestroyIPSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEES7_EvT_S9_RSaIT0_E.exit -_ZSt8_DestroyIPSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEES7_EvT_S9_RSaIT0_E.exit: ; preds = %_ZSt8_DestroyIPSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEES7_EvT_S9_RSaIT0_E.exitthread-pre-split, %17 - %31 = phi ptr [ %.pr, %_ZSt8_DestroyIPSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEES7_EvT_S9_RSaIT0_E.exitthread-pre-split ], [ %20, %17 ] +_ZSt8_DestroyIPSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEES7_EvT_S9_RSaIT0_E.exit: ; preds = %_ZSt8_DestroyIPSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEES7_EvT_S9_RSaIT0_E.exitthread-pre-split, %18 + %31 = phi ptr [ %.pr, %_ZSt8_DestroyIPSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEES7_EvT_S9_RSaIT0_E.exitthread-pre-split ], [ %21, %18 ] %.not.i = icmp eq ptr %31, null br i1 %.not.i, label %_ZNSt12_Vector_baseISt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEESaIS7_EE13_M_deallocateEPS7_m.exit, label %32 32: ; preds = %_ZSt8_DestroyIPSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEES7_EvT_S9_RSaIT0_E.exit - %33 = load ptr, ptr %10, align 8 + %33 = load ptr, ptr %11, align 8 %34 = ptrtoint ptr %33 to i64 %35 = ptrtoint ptr %31 to i64 %36 = sub i64 %34, %35 @@ -7884,40 +7883,34 @@ _ZSt8_DestroyIPSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFun br label %_ZNSt12_Vector_baseISt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEESaIS7_EE13_M_deallocateEPS7_m.exit _ZNSt12_Vector_baseISt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEESaIS7_EE13_M_deallocateEPS7_m.exit: ; preds = %_ZSt8_DestroyIPSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEES7_EvT_S9_RSaIT0_E.exit, %32 - store ptr %19, ptr %0, align 8 - %37 = getelementptr inbounds i8, ptr %19, i64 %9 - store ptr %37, ptr %10, align 8 + store ptr %20, ptr %0, align 8 + %37 = getelementptr inbounds i8, ptr %20, i64 %10 + store ptr %37, ptr %11, align 8 br label %_ZSt8_DestroyIN9__gnu_cxx17__normal_iteratorIPSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS3_9UsdObjectEEESt6vectorIS9_SaIS9_EEEES9_EvT_SF_RSaIT0_E.exit 38: ; preds = %3 %39 = getelementptr inbounds nuw i8, ptr %0, i64 8 %40 = load ptr, ptr %39, align 8 %41 = ptrtoint ptr %40 to i64 - %42 = sub i64 %41, %14 - %.not24 = icmp ult i64 %42, %9 + %42 = sub i64 %41, %15 + %.not24 = icmp ult i64 %42, %10 br i1 %.not24, label %57, label %43 43: ; preds = %38 - %44 = tail call noundef ptr @_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE8__copy_mIPKSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS4_9UsdObjectEEEPSA_EET0_T_SF_SE_(ptr noundef %6, ptr noundef %5, ptr noundef %12) + %44 = tail call ptr @_ZSt13__copy_move_aILb0EN9__gnu_cxx17__normal_iteratorIPKSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS3_9UsdObjectEEESt6vectorIS9_SaIS9_EEEENS1_IPS9_SE_EEET1_T0_SJ_SI_(ptr %6, ptr %5, ptr %13) %45 = load ptr, ptr %39, align 8 %.not4.i.i.i25 = icmp eq ptr %44, %45 br i1 %.not4.i.i.i25, label %_ZSt8_DestroyIN9__gnu_cxx17__normal_iteratorIPSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS3_9UsdObjectEEESt6vectorIS9_SaIS9_EEEES9_EvT_SF_RSaIT0_E.exit, label %.lr.ph.i.i.i26.preheader -.lr.ph.i.i.i26.preheader: ; preds = %43 - %46 = ptrtoint ptr %44 to i64 - %47 = sub i64 %46, %14 - %48 = getelementptr inbounds i8, ptr %12, i64 %47 - br label %.lr.ph.i.i.i26 - -.lr.ph.i.i.i26: ; preds = %.lr.ph.i.i.i26.preheader, %_ZSt8_DestroyISt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEEEvPT_.exit.i.i.i28 - %.sroa.01.05.i.i.i = phi ptr [ %56, %_ZSt8_DestroyISt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEEEvPT_.exit.i.i.i28 ], [ %48, %.lr.ph.i.i.i26.preheader ] - %49 = getelementptr inbounds nuw i8, ptr %.sroa.01.05.i.i.i, i64 16 - %50 = load ptr, ptr %49, align 8 - %.not.i.i.i.i.i.i27 = icmp eq ptr %50, null - br i1 %.not.i.i.i.i.i.i27, label %_ZSt8_DestroyISt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEEEvPT_.exit.i.i.i28, label %51 +.lr.ph.i.i.i26.preheader: ; preds = %44, %_ZSt8_DestroyISt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEEEvPT_.exit.i.i.i28 + %.sroa.01.05.i.i.i = phi ptr [ %54, %_ZSt8_DestroyISt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEEEvPT_.exit.i.i.i28 ], [ %45, %44 ] + %47 = getelementptr inbounds nuw i8, ptr %.sroa.01.05.i.i.i, i64 16 + %48 = load ptr, ptr %47, align 8 + %.not.i.i.i.i.i.i27 = icmp eq ptr %48, null + br i1 %.not.i.i.i.i.i.i27, label %_ZSt8_DestroyISt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEEEvPT_.exit.i.i.i28, label %49 51: ; preds = %.lr.ph.i.i.i26 - %52 = invoke noundef zeroext i1 %50(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.01.05.i.i.i, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.01.05.i.i.i, i32 noundef 3) + %52 = invoke noundef zeroext i1 %48(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.01.05.i.i.i, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.01.05.i.i.i, i32 noundef 3) to label %_ZSt8_DestroyISt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEEEvPT_.exit.i.i.i28 unwind label %53 53: ; preds = %51 @@ -7933,22 +7926,116 @@ _ZSt8_DestroyISt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunc br i1 %.not.i.i.i29, label %_ZSt8_DestroyIN9__gnu_cxx17__normal_iteratorIPSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS3_9UsdObjectEEESt6vectorIS9_SaIS9_EEEES9_EvT_SF_RSaIT0_E.exit, label %.lr.ph.i.i.i26, !llvm.loop !51 57: ; preds = %38 - %58 = getelementptr inbounds i8, ptr %6, i64 %42 - %59 = tail call noundef ptr @_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE8__copy_mIPSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS4_9UsdObjectEEESB_EET0_T_SD_SC_(ptr noundef %6, ptr noundef %58, ptr noundef %12) - %60 = load ptr, ptr %1, align 8 - %61 = load ptr, ptr %39, align 8 - %62 = load ptr, ptr %0, align 8 - %63 = ptrtoint ptr %61 to i64 - %64 = ptrtoint ptr %62 to i64 - %65 = sub i64 %63, %64 - %66 = getelementptr inbounds i8, ptr %60, i64 %65 - %67 = load ptr, ptr %4, align 8 - %68 = tail call noundef ptr @_ZSt16__do_uninit_copyIPSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEES8_ET0_T_SA_S9_(ptr noundef %66, ptr noundef %67, ptr noundef %61) + %56 = ashr exact i64 %42, 5 + %57 = icmp sgt i64 %56, 0 + br i1 %57, label %.lr.ph.i.i.i.i.i, label %_ZSt4copyIPSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEES8_ET0_T_SA_S9_.exit + +.lr.ph.i.i.i.i.i:; preds = %55 + %58 = getelementptr inbounds nuw i8, ptr %3, i64 16 + %59 = getelementptr inbounds nuw i8, ptr %3, i64 24 + br label %60 + +60:; preds = %_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEaSERKS6_.exit.i.i.i.i.i, %.lr.ph.i.i.i.i.i + %.016.i.i.i.i.i = phi i64 [ %56, %.lr.ph.i.i.i.i.i ], [ %90, %_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEaSERKS6_.exit.i.i.i.i.i ] + %.0815.i.i.i.i.i = phi ptr [ %13, %.lr.ph.i.i.i.i.i ], [ %89, %_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEaSERKS6_.exit.i.i.i.i.i ] + %.0914.i.i.i.i.i = phi ptr [ %7, %.lr.ph.i.i.i.i.i ], [ %88, %_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEaSERKS6_.exit.i.i.i.i.i ] + call void @llvm.lifetime.start.p0(ptr nonnull %3) + %61 = getelementptr inbounds nuw i8, ptr %.0914.i.i.i.i.i, i64 16 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %3, i8 0, i64 32, i1 false) + %62 = load ptr, ptr %61, align 8 + %.not.i.i.not.i.i.i.i.i.i.i = icmp eq ptr %62, null + br i1 %.not.i.i.not.i.i.i.i.i.i.i, label %_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEC2ERKS6_.exit.i.i.i.i.i.i, label %63 + +63: ; preds = %60 + %64 = invoke noundef zeroext i1 %62(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(32) %.0914.i.i.i.i.i, i32 noundef 2) + to label %65 unwind label %69 + +65: ; preds = %63 + %66 = getelementptr inbounds nuw i8, ptr %.0914.i.i.i.i.i, i64 24 + %67 = load ptr, ptr %66, align 8 + %68 = load ptr, ptr %61, align 8 + %.sroa.0.i.i.i.sroa.0.0.copyload.pre.i.i.i.i.i = load <2 x i64>, ptr %3, align 16 + br label %_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEC2ERKS6_.exit.i.i.i.i.i.i + +69: ; preds = %63 + %70 = landingpad { ptr, i32 } + cleanup + %71 = load ptr, ptr %58, align 16 + %.not.i.i.i.i.i.i.i.i = icmp eq ptr %71, null + br i1 %.not.i.i.i.i.i.i.i.i, label %_ZNSt14_Function_baseD2Ev.exit.i.i.i.i.i.i.i, label %72 + +72: ; preds = %69 + %73 = invoke noundef zeroext i1 %71(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(32) %3, i32 noundef 3) + to label %_ZNSt14_Function_baseD2Ev.exit.i.i.i.i.i.i.i unwind label %74 + +74: ; preds = %72 + %75 = landingpad { ptr, i32 } + catch ptr null + %76 = extractvalue { ptr, i32 } %75, 0 + call void @__clang_call_terminate(ptr %76) #16 + unreachable + +_ZNSt14_Function_baseD2Ev.exit.i.i.i.i.i.i.i: ; preds = %72, %69 + resume { ptr, i32 } %70 + +_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEC2ERKS6_.exit.i.i.i.i.i.i: ; preds = %65, %60 + %.sroa.0.i.i.i.sroa.0.0.copyload.i.i.i.i.i = phi <2 x i64> [ zeroinitializer, %60 ], [ %.sroa.0.i.i.i.sroa.0.0.copyload.pre.i.i.i.i.i, %65 ] + %77 = phi ptr [ null, %60 ], [ %67, %65 ] + %78 = phi ptr [ null, %60 ], [ %68, %65 ] + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(32) %.0815.i.i.i.i.i, i64 16, i1 false) + store <2 x i64> %.sroa.0.i.i.i.sroa.0.0.copyload.i.i.i.i.i, ptr %.0815.i.i.i.i.i, align 8 + %79 = getelementptr inbounds nuw i8, ptr %.0815.i.i.i.i.i, i64 16 + %80 = load ptr, ptr %79, align 8 + store ptr %80, ptr %58, align 16 + store ptr %78, ptr %79, align 8 + %81 = getelementptr inbounds nuw i8, ptr %.0815.i.i.i.i.i, i64 24 + %82 = load ptr, ptr %81, align 8 + store ptr %82, ptr %59, align 8 + store ptr %77, ptr %81, align 8 + %.not.i.i2.i.i.i.i.i.i = icmp eq ptr %80, null + br i1 %.not.i.i2.i.i.i.i.i.i, label %_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEaSERKS6_.exit.i.i.i.i.i, label %83 + +83: ; preds = %_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEC2ERKS6_.exit.i.i.i.i.i.i + %84 = invoke noundef zeroext i1 %80(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(32) %3, i32 noundef 3) + to label %_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEaSERKS6_.exit.i.i.i.i.i unwind label %85 + +85: ; preds = %83 + %86 = landingpad { ptr, i32 } + catch ptr null + %87 = extractvalue { ptr, i32 } %86, 0 + call void @__clang_call_terminate(ptr %87) #16 + unreachable + +_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEaSERKS6_.exit.i.i.i.i.i: ; preds = %83, %_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEC2ERKS6_.exit.i.i.i.i.i.i + call void @llvm.lifetime.end.p0(ptr nonnull %3) + %88 = getelementptr inbounds nuw i8, ptr %.0914.i.i.i.i.i, i64 32 + %89 = getelementptr inbounds nuw i8, ptr %.0815.i.i.i.i.i, i64 32 + %90 = add nsw i64 %.016.i.i.i.i.i, -1 + %91 = icmp sgt i64 %.016.i.i.i.i.i, 1 + br i1 %91, label %60, label %_ZSt4copyIPSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEES8_ET0_T_SA_S9_.exit.loopexit, !llvm.loop !52 + +_ZSt4copyIPSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEES8_ET0_T_SA_S9_.exit.loopexit: ; preds = %_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEaSERKS6_.exit.i.i.i.i.i + %.pre = load ptr, ptr %1, align 8 + %.pre30 = load ptr, ptr %40, align 8 + %.pre31 = load ptr, ptr %0, align 8 + %.pre32 = load ptr, ptr %5, align 8 + %.pre33 = ptrtoint ptr %.pre30 to i64 + %.pre34 = ptrtoint ptr %.pre31 to i64 + %.pre36 = sub i64 %.pre33, %.pre34 + br label %_ZSt4copyIPSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEES8_ET0_T_SA_S9_.exit + +_ZSt4copyIPSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEES8_ET0_T_SA_S9_.exit: ; preds = %_ZSt4copyIPSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEES8_ET0_T_SA_S9_.exit.loopexit, %55 + %.pre-phi37 = phi i64 [ %.pre36, %_ZSt4copyIPSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEES8_ET0_T_SA_S9_.exit.loopexit ], [ %43, %55 ] + %92 = phi ptr [ %.pre32, %_ZSt4copyIPSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEES8_ET0_T_SA_S9_.exit.loopexit ], [ %6, %55 ] + %93 = phi ptr [ %.pre30, %_ZSt4copyIPSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEES8_ET0_T_SA_S9_.exit.loopexit ], [ %41, %55 ] + %94 = phi ptr [ %.pre, %_ZSt4copyIPSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEES8_ET0_T_SA_S9_.exit.loopexit ], [ %7, %55 ] + %95 = getelementptr inbounds i8, ptr %94, i64 %.pre-phi37 + %96 = call noundef ptr @_ZSt16__do_uninit_copyIPSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEES8_ET0_T_SA_S9_(ptr noundef %95, ptr noundef %92, ptr noundef %93) br label %_ZSt8_DestroyIN9__gnu_cxx17__normal_iteratorIPSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS3_9UsdObjectEEESt6vectorIS9_SaIS9_EEEES9_EvT_SF_RSaIT0_E.exit -_ZSt8_DestroyIN9__gnu_cxx17__normal_iteratorIPSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS3_9UsdObjectEEESt6vectorIS9_SaIS9_EEEES9_EvT_SF_RSaIT0_E.exit: ; preds = %_ZSt8_DestroyISt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEEEvPT_.exit.i.i.i28, %43, %57, %_ZNSt12_Vector_baseISt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEESaIS7_EE13_M_deallocateEPS7_m.exit +_ZSt8_DestroyIN9__gnu_cxx17__normal_iteratorIPSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS3_9UsdObjectEEESt6vectorIS9_SaIS9_EEEES9_EvT_SF_RSaIT0_E.exit: ; preds = %_ZSt8_DestroyISt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEEEvPT_.exit.i.i.i28, %43, %_ZSt4copyIPSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEES8_ET0_T_SA_S9_.exit, %_ZNSt12_Vector_baseISt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS1_9UsdObjectEEESaIS7_EE13_M_deallocateEPS7_m.exit %69 = load ptr, ptr %0, align 8 - %70 = getelementptr inbounds i8, ptr %69, i64 %9 + %70 = getelementptr inbounds i8, ptr %69, i64 %10 %71 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %70, ptr %71, align 8 br label %72 @@ -8029,110 +8116,8 @@ _ZNSt12_Vector_baseISt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredica } ; Function Attrs: mustprogress uwtable -define linkonce_odr noundef ptr @_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE8__copy_mIPKSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS4_9UsdObjectEEEPSA_EET0_T_SF_SE_(ptr noundef %0, ptr noundef %1, ptr noundef %2) local_unnamed_addr #0 comdat align 2 personality ptr @__gxx_personality_v0 { - %.sroa.0.i.i.i = alloca { i64, i64 }, align 8 - %4 = alloca %"class.std::function", align 8 - %5 = ptrtoint ptr %1 to i64 - %6 = ptrtoint ptr %0 to i64 - %7 = sub i64 %5, %6 - %8 = ashr exact i64 %7, 5 - %9 = icmp sgt i64 %8, 0 - br i1 %9, label %.lr.ph, label %._crit_edge - -.lr.ph: ; preds = %3 - %10 = getelementptr inbounds nuw i8, ptr %4, i64 16 - %11 = getelementptr inbounds nuw i8, ptr %4, i64 24 - br label %12 - -12: ; preds = %.lr.ph, %_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEaSERKS6_.exit - %.015 = phi i64 [ %8, %.lr.ph ], [ %42, %_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEaSERKS6_.exit ] - %.0814 = phi ptr [ %2, %.lr.ph ], [ %41, %_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEaSERKS6_.exit ] - %.0913 = phi ptr [ %0, %.lr.ph ], [ %40, %_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEaSERKS6_.exit ] - call void @llvm.lifetime.start.p0(ptr nonnull %4) - %13 = getelementptr inbounds nuw i8, ptr %.0913, i64 16 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %4, i8 0, i64 32, i1 false) - %14 = load ptr, ptr %13, align 8 - %.not.i.i.not.i.i = icmp eq ptr %14, null - br i1 %.not.i.i.not.i.i, label %_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEC2ERKS6_.exit.i, label %15 - -15: ; preds = %12 - %16 = invoke noundef zeroext i1 %14(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(32) %.0913, i32 noundef 2) - to label %17 unwind label %21 - -17: ; preds = %15 - %18 = getelementptr inbounds nuw i8, ptr %.0913, i64 24 - %19 = load ptr, ptr %18, align 8 - %20 = load ptr, ptr %13, align 8 - br label %_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEC2ERKS6_.exit.i - -21: ; preds = %15 - %22 = landingpad { ptr, i32 } - cleanup - %23 = load ptr, ptr %10, align 8 - %.not.i.i.i = icmp eq ptr %23, null - br i1 %.not.i.i.i, label %_ZNSt14_Function_baseD2Ev.exit.i.i, label %24 - -24: ; preds = %21 - %25 = invoke noundef zeroext i1 %23(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(32) %4, i32 noundef 3) - to label %_ZNSt14_Function_baseD2Ev.exit.i.i unwind label %26 - -26: ; preds = %24 - %27 = landingpad { ptr, i32 } - catch ptr null - %28 = extractvalue { ptr, i32 } %27, 0 - call void @__clang_call_terminate(ptr %28) #16 - unreachable - -_ZNSt14_Function_baseD2Ev.exit.i.i: ; preds = %24, %21 - resume { ptr, i32 } %22 - -_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEC2ERKS6_.exit.i: ; preds = %17, %12 - %29 = phi ptr [ null, %12 ], [ %19, %17 ] - %30 = phi ptr [ null, %12 ], [ %20, %17 ] - call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.0.i.i.i) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i, ptr noundef nonnull align 8 dereferenceable(32) %4, i64 16, i1 false) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(32) %.0814, i64 16, i1 false) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.0814, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i, i64 16, i1 false) - call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.0.i.i.i) - %31 = getelementptr inbounds nuw i8, ptr %.0814, i64 16 - %32 = load ptr, ptr %31, align 8 - store ptr %32, ptr %10, align 8 - store ptr %30, ptr %31, align 8 - %33 = getelementptr inbounds nuw i8, ptr %.0814, i64 24 - %34 = load ptr, ptr %33, align 8 - store ptr %34, ptr %11, align 8 - store ptr %29, ptr %33, align 8 - %.not.i.i2.i = icmp eq ptr %32, null - br i1 %.not.i.i2.i, label %_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEaSERKS6_.exit, label %35 - -35: ; preds = %_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEC2ERKS6_.exit.i - %36 = invoke noundef zeroext i1 %32(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(32) %4, i32 noundef 3) - to label %_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEaSERKS6_.exit unwind label %37 - -37: ; preds = %35 - %38 = landingpad { ptr, i32 } - catch ptr null - %39 = extractvalue { ptr, i32 } %38, 0 - call void @__clang_call_terminate(ptr %39) #16 - unreachable - -_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEaSERKS6_.exit: ; preds = %_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEC2ERKS6_.exit.i, %35 - call void @llvm.lifetime.end.p0(ptr nonnull %4) - %40 = getelementptr inbounds nuw i8, ptr %.0913, i64 32 - %41 = getelementptr inbounds nuw i8, ptr %.0814, i64 32 - %42 = add nsw i64 %.015, -1 - %43 = icmp sgt i64 %.015, 1 - br i1 %43, label %12, label %._crit_edge, !llvm.loop !52 - -._crit_edge: ; preds = %_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEaSERKS6_.exit, %3 - %.08.lcssa = phi ptr [ %2, %3 ], [ %41, %_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEaSERKS6_.exit ] - ret ptr %.08.lcssa -} - -; Function Attrs: mustprogress uwtable -define linkonce_odr noundef ptr @_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE8__copy_mIPSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS4_9UsdObjectEEESB_EET0_T_SD_SC_(ptr noundef %0, ptr noundef %1, ptr noundef %2) local_unnamed_addr #0 comdat align 2 personality ptr @__gxx_personality_v0 { - %.sroa.0.i.i.i = alloca { i64, i64 }, align 8 - %4 = alloca %"class.std::function", align 8 +define linkonce_odr ptr @_ZSt13__copy_move_aILb0EN9__gnu_cxx17__normal_iteratorIPKSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS3_9UsdObjectEEESt6vectorIS9_SaIS9_EEEENS1_IPS9_SE_EEET1_T0_SJ_SI_(ptr %0, ptr %1, ptr %2) local_unnamed_addr #0 comdat personality ptr @__gxx_personality_v0 { + %.sroa.0.i.i.i = alloca %"class.std::function", align 16 %5 = ptrtoint ptr %1 to i64 %6 = ptrtoint ptr %0 to i64 %7 = sub i64 %5, %6 @@ -8145,13 +8130,13 @@ define linkonce_odr noundef ptr @_ZNSt11__copy_moveILb0ELb0ESt26random_access_it %11 = getelementptr inbounds nuw i8, ptr %4, i64 24 br label %12 -12: ; preds = %.lr.ph, %_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEaSERKS6_.exit - %.015 = phi i64 [ %8, %.lr.ph ], [ %42, %_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEaSERKS6_.exit ] - %.0814 = phi ptr [ %2, %.lr.ph ], [ %41, %_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEaSERKS6_.exit ] - %.0913 = phi ptr [ %0, %.lr.ph ], [ %40, %_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEaSERKS6_.exit ] +12: ; preds = %_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEaSERKS6_.exit, %.lr.ph + %.015 = phi i64 [ %8, %.lr.ph.i.i.i ], [ %42, %_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEaSERKS6_.exit.i.i.i ] + %.0814 = phi ptr [ %2, %.lr.ph.i.i.i ], [ %41, %_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEaSERKS6_.exit.i.i.i ] + %.0913 = phi ptr [ %0, %.lr.ph.i.i.i ], [ %40, %_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEaSERKS6_.exit.i.i.i ] call void @llvm.lifetime.start.p0(ptr nonnull %4) %13 = getelementptr inbounds nuw i8, ptr %.0913, i64 16 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %4, i8 0, i64 32, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %4, i8 0, i64 32, i1 false) %14 = load ptr, ptr %13, align 8 %.not.i.i.not.i.i = icmp eq ptr %14, null br i1 %.not.i.i.not.i.i, label %_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEC2ERKS6_.exit.i, label %15 @@ -8164,18 +8149,19 @@ define linkonce_odr noundef ptr @_ZNSt11__copy_moveILb0ELb0ESt26random_access_it %18 = getelementptr inbounds nuw i8, ptr %.0913, i64 24 %19 = load ptr, ptr %18, align 8 %20 = load ptr, ptr %13, align 8 - br label %_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEC2ERKS6_.exit.i + %.sroa.0.i.i.i.sroa.0.0.copyload.pre.i.i.i = load <2 x i64>, ptr %4, align 16 + br label %_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEC2ERKS6_.exit.i.i.i.i 21: ; preds = %15 %22 = landingpad { ptr, i32 } cleanup - %23 = load ptr, ptr %10, align 8 + %23 = load ptr, ptr %10, align 16 %.not.i.i.i = icmp eq ptr %23, null br i1 %.not.i.i.i, label %_ZNSt14_Function_baseD2Ev.exit.i.i, label %24 24: ; preds = %21 %25 = invoke noundef zeroext i1 %23(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(32) %4, i32 noundef 3) - to label %_ZNSt14_Function_baseD2Ev.exit.i.i unwind label %26 + to label %_ZNSt14_Function_baseD2Ev.exit.i.i.i.i.i unwind label %26 26: ; preds = %24 %27 = landingpad { ptr, i32 } @@ -8188,16 +8174,14 @@ _ZNSt14_Function_baseD2Ev.exit.i.i: ; preds = %24, %21 resume { ptr, i32 } %22 _ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEC2ERKS6_.exit.i: ; preds = %17, %12 + %.sroa.0.i.i.i.sroa.0.0.copyload.i.i.i = phi <2 x i64> [ zeroinitializer, %12 ], [ %.sroa.0.i.i.i.sroa.0.0.copyload.pre.i.i.i, %17 ] %29 = phi ptr [ null, %12 ], [ %19, %17 ] %30 = phi ptr [ null, %12 ], [ %20, %17 ] - call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.0.i.i.i) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i, ptr noundef nonnull align 8 dereferenceable(32) %4, i64 16, i1 false) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(32) %.0814, i64 16, i1 false) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.0814, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i, i64 16, i1 false) - call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.0.i.i.i) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %.sroa.0.i.i.i, ptr noundef nonnull align 8 dereferenceable(32) %.0814, i64 16, i1 false) + store <2 x i64> %.sroa.0.i.i.i.sroa.0.0.copyload.i.i.i, ptr %.0814, align 8 %31 = getelementptr inbounds nuw i8, ptr %.0814, i64 16 %32 = load ptr, ptr %31, align 8 - store ptr %32, ptr %10, align 8 + store ptr %32, ptr %10, align 16 store ptr %30, ptr %31, align 8 %33 = getelementptr inbounds nuw i8, ptr %.0814, i64 24 %34 = load ptr, ptr %33, align 8 @@ -8208,7 +8192,7 @@ _ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultE 35: ; preds = %_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEC2ERKS6_.exit.i %36 = invoke noundef zeroext i1 %32(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(32) %4, i32 noundef 3) - to label %_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEaSERKS6_.exit unwind label %37 + to label %_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEaSERKS6_.exit.i.i.i unwind label %37 37: ; preds = %35 %38 = landingpad { ptr, i32 } @@ -8217,7 +8201,7 @@ _ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultE call void @__clang_call_terminate(ptr %39) #16 unreachable -_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEaSERKS6_.exit: ; preds = %_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEC2ERKS6_.exit.i, %35 +_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEaSERKS6_.exit: ; preds = %34, %_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEC2ERKS6_.exit.i call void @llvm.lifetime.end.p0(ptr nonnull %4) %40 = getelementptr inbounds nuw i8, ptr %.0913, i64 32 %41 = getelementptr inbounds nuw i8, ptr %.0814, i64 32 @@ -8226,8 +8210,12 @@ _ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultE br i1 %43, label %12, label %._crit_edge, !llvm.loop !53 ._crit_edge: ; preds = %_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEaSERKS6_.exit, %3 - %.08.lcssa = phi ptr [ %2, %3 ], [ %41, %_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEaSERKS6_.exit ] - ret ptr %.08.lcssa + %.08.lcssa = phi ptr [ %2, %3 ], [ %41, %_ZNSt8functionIFN32pxrInternal_v0_24__pxrReserved__26SdfPredicateFunctionResultERKNS0_9UsdObjectEEEaSERKS6_.exit.i.i.i ] + %44 = ptrtoint ptr %.08.lcssa to i64 + %45 = ptrtoint ptr %2 to i64 + %46 = sub i64 %44, %45 + %47 = getelementptr inbounds i8, ptr %2, i64 %46 + ret ptr %47 } ; Function Attrs: mustprogress uwtable diff --git a/bench/php/optimized/dirstream.ll b/bench/php/optimized/dirstream.ll index 4cfbfa317bd..8300602dcd3 100644 --- a/bench/php/optimized/dirstream.ll +++ b/bench/php/optimized/dirstream.ll @@ -490,7 +490,6 @@ declare ptr @_php_stream_opendir(ptr noundef, i32 noundef, ptr noundef) local_un ; Function Attrs: nounwind uwtable define hidden range(i32 0, 2) i32 @phar_wrapper_mkdir(ptr noundef %0, ptr noundef %1, i32 noundef %2, i32 noundef %3, ptr noundef readnone captures(none) %4) local_unnamed_addr #0 { %6 = alloca %struct._zval_struct, align 8 - %.sroa.0 = alloca { i32, i32, i32, i32 }, align 8 %.sroa.6 = alloca %struct._phar_metadata_tracker, align 8 %.sroa.13 = alloca { i32, i64, i64, i64, ptr, ptr, i32, ptr }, align 8 %7 = alloca ptr, align 8 @@ -499,7 +498,6 @@ define hidden range(i32 0, 2) i32 @phar_wrapper_mkdir(ptr noundef %0, ptr nounde %10 = alloca ptr, align 8 %11 = alloca i64, align 8 %12 = alloca i64, align 8 - call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.0) call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.6) call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.13) call void @llvm.lifetime.start.p0(ptr nonnull %7) @@ -706,7 +704,6 @@ define hidden range(i32 0, 2) i32 @phar_wrapper_mkdir(ptr noundef %0, ptr nounde br label %169 zend_string_alloc.exit: ; preds = %110 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0, i8 0, i64 16, i1 false) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.6, i8 0, i64 24, i1 false) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %.sroa.13, i8 0, i64 64, i1 false) %118 = load ptr, ptr %7, align 8, !tbaa !21 @@ -780,7 +777,7 @@ zend_string_alloc.exit: ; preds = %110 156: ; preds = %150, %148 %157 = phi ptr [ %149, %148 ], [ %151, %150 ] store ptr %157, ptr %143, align 8, !tbaa !23 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(16) %157, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0, i64 16, i1 false) + store <4 x i32> zeroinitializer, ptr %157, align 1 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %157, i64 16 store i32 511, ptr %.sroa.4.0..sroa_idx, align 1 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %157, i64 20 @@ -834,7 +831,6 @@ zend_string_alloc.exit: ; preds = %110 call void @llvm.lifetime.end.p0(ptr nonnull %9) call void @llvm.lifetime.end.p0(ptr nonnull %8) call void @llvm.lifetime.end.p0(ptr nonnull %7) - call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.0) call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.6) call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.13) ret i32 %.0 diff --git a/bench/velox/optimized/ArraySort.ll b/bench/velox/optimized/ArraySort.ll index f2a021ece03..7c6c0bd107b 100644 --- a/bench/velox/optimized/ArraySort.ll +++ b/bench/velox/optimized/ArraySort.ll @@ -52787,7 +52787,6 @@ if.end24: ; preds = %.noexc.i, %if.then. ; Function Attrs: mustprogress uwtable define linkonce_odr void @_ZSt16__introsort_loopIPN8facebook5velox9TimestampElN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S7_T0_T1_(ptr noundef %__first, ptr noundef %__last, i64 noundef %__depth_limit) local_unnamed_addr #0 comdat { entry: - %__tmp.i.i.i.i = alloca %"struct.facebook::velox::Timestamp", align 8 %__comp.i.i = alloca %"struct.__gnu_cxx::__ops::_Iter_less_iter", align 1 %__comp.i = alloca %"struct.__gnu_cxx::__ops::_Iter_less_iter", align 1 %sub.ptr.rhs.cast = ptrtoint ptr %__first to i64 @@ -52891,11 +52890,9 @@ while.end8.i.i: ; preds = %land.rhs.i.i14.i.i, br i1 %cmp.i.i, label %if.end.i.i, label %_ZSt27__unguarded_partition_pivotIPN8facebook5velox9TimestampEN9__gnu_cxx5__ops15_Iter_less_iterEET_S7_S7_T0_.exit if.end.i.i: ; preds = %while.end8.i.i - call void @llvm.lifetime.start.p0(ptr nonnull %__tmp.i.i.i.i) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %__tmp.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %__first.addr.1.i.i, i64 16, i1 false) + %__tmp.i.i.sroa.0.0.copyload.i.i = load <2 x i64>, ptr %__first.addr.1.i.i, align 8 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %__first.addr.1.i.i, ptr noundef nonnull align 8 dereferenceable(16) %__last.addr.1.i.i, i64 16, i1 false) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %__last.addr.1.i.i, ptr noundef nonnull align 8 dereferenceable(16) %__tmp.i.i.i.i, i64 16, i1 false) - call void @llvm.lifetime.end.p0(ptr nonnull %__tmp.i.i.i.i) + store <2 x i64> %__tmp.i.i.sroa.0.0.copyload.i.i, ptr %__last.addr.1.i.i, align 8 %incdec.ptr9.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.1.i.i, i64 16 br label %while.body.i.i10, !llvm.loop !601 @@ -52914,8 +52911,6 @@ while.end: ; preds = %_ZSt27__unguarded_p ; Function Attrs: mustprogress uwtable define linkonce_odr void @_ZSt22__final_insertion_sortIPN8facebook5velox9TimestampEN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S7_T0_(ptr noundef %__first, ptr noundef %__last) local_unnamed_addr #0 comdat { entry: - %__val.i20 = alloca %"struct.facebook::velox::Timestamp", align 8 - %__val.i = alloca %"struct.facebook::velox::Timestamp", align 8 %sub.ptr.lhs.cast = ptrtoint ptr %__last to i64 %sub.ptr.rhs.cast = ptrtoint ptr %__first to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast @@ -52923,7 +52918,6 @@ entry: br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry - call void @llvm.lifetime.start.p0(ptr nonnull %__val.i) %nanos_6.i.i.i = getelementptr inbounds nuw i8, ptr %__first, i64 8 %scevgep = getelementptr i8, ptr %__first, i64 16 br label %for.body.i @@ -52952,9 +52946,9 @@ _ZNK9__gnu_cxx5__ops15_Iter_less_iterclIPN8facebook5velox9TimestampES6_EEbT_T0_. br i1 %cmp7.i.i.i, label %if.then2.i, label %while.cond.i.i.preheader if.then2.i: ; preds = %_ZNK9__gnu_cxx5__ops15_Iter_less_iterclIPN8facebook5velox9TimestampES6_EEbT_T0_.exit.i, %for.body.i - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %__val.i, ptr noundef nonnull align 8 dereferenceable(16) %__i.016.i.ptr, i64 16, i1 false) + %__val.sroa.0.0.copyload.i = load <2 x i64>, ptr %__i.016.i.ptr, align 8 tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %scevgep, ptr noundef nonnull align 8 dereferenceable(1) %__first, i64 %__i.016.i.idx, i1 false) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %__first, ptr noundef nonnull align 8 dereferenceable(16) %__val.i, i64 16, i1 false) + store <2 x i64> %__val.sroa.0.0.copyload.i, ptr %__first, align 8 br label %for.inc.i while.cond.i.i: ; preds = %while.cond.i.i.preheader, %while.body.i.i @@ -52991,7 +52985,6 @@ for.inc.i: ; preds = %_ZSt25__unguarded_l _ZSt16__insertion_sortIPN8facebook5velox9TimestampEN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S7_T0_.exit: ; preds = %for.inc.i %add.ptr = getelementptr inbounds nuw i8, ptr %__first, i64 256 - call void @llvm.lifetime.end.p0(ptr nonnull %__val.i) %cmp.not3.i = icmp eq ptr %add.ptr, %__last br i1 %cmp.not3.i, label %if.end, label %for.body.i7 @@ -53032,22 +53025,21 @@ _ZSt25__unguarded_linear_insertIPN8facebook5velox9TimestampEN9__gnu_cxx5__ops14_ br i1 %cmp.not.i, label %if.end, label %for.body.i7, !llvm.loop !605 if.else: ; preds = %entry - call void @llvm.lifetime.start.p0(ptr nonnull %__val.i20) %cmp.i = icmp eq ptr %__first, %__last - br i1 %cmp.i, label %_ZSt16__insertion_sortIPN8facebook5velox9TimestampEN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S7_T0_.exit56, label %for.cond.preheader.i + br i1 %cmp.i, label %_ZSt16__insertion_sortIPN8facebook5velox9TimestampEN9__gnu_cxx5__ops15_Iter_comp_iterISt7greaterIS2_EEEEvT_SA_T0_.exit58, label %for.cond.preheader.i for.cond.preheader.i: ; preds = %if.else %__i.013.i21 = getelementptr inbounds nuw i8, ptr %__first, i64 16 %cmp1.not14.i = icmp eq ptr %__i.013.i21, %__last - br i1 %cmp1.not14.i, label %_ZSt16__insertion_sortIPN8facebook5velox9TimestampEN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S7_T0_.exit56, label %for.body.lr.ph.i + br i1 %cmp1.not14.i, label %_ZSt16__insertion_sortIPN8facebook5velox9TimestampEN9__gnu_cxx5__ops15_Iter_comp_iterISt7greaterIS2_EEEEvT_SA_T0_.exit58, label %for.body.lr.ph.i for.body.lr.ph.i: ; preds = %for.cond.preheader.i %nanos_6.i.i.i22 = getelementptr inbounds nuw i8, ptr %__first, i64 8 br label %for.body.i24 -for.body.i24: ; preds = %for.inc.i40, %for.body.lr.ph.i - %__i.016.i25 = phi ptr [ %__i.013.i21, %for.body.lr.ph.i ], [ %__i.0.i41, %for.inc.i40 ] - %__first.pn15.i26 = phi ptr [ %__first, %for.body.lr.ph.i ], [ %__i.016.i25, %for.inc.i40 ] +for.body.i24: ; preds = %for.inc.i39, %for.body.lr.ph.i + %__i.016.i25 = phi ptr [ %__i.013.i21, %for.body.lr.ph.i ], [ %__i.0.i40, %for.inc.i39 ] + %__first.pn15.i26 = phi ptr [ %__first, %for.body.lr.ph.i ], [ %__i.016.i25, %for.inc.i39 ] %8 = load i64, ptr %__i.016.i25, align 8 %9 = load i64, ptr %__first, align 8 %cmp.i.i.i27 = icmp slt i64 %8, %9 @@ -53068,7 +53060,7 @@ _ZNK9__gnu_cxx5__ops15_Iter_less_iterclIPN8facebook5velox9TimestampES6_EEbT_T0_. br i1 %cmp7.i.i.i48, label %if.then2.i49, label %while.cond.i.i32.preheader if.then2.i49: ; preds = %_ZNK9__gnu_cxx5__ops15_Iter_less_iterclIPN8facebook5velox9TimestampES6_EEbT_T0_.exit.i47, %for.body.i24 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %__val.i20, ptr noundef nonnull align 8 dereferenceable(16) %__i.016.i25, i64 16, i1 false) + %__val.sroa.0.0.copyload.i49 = load <2 x i64>, ptr %__i.016.i25, align 8 %add.ptr3.i50 = getelementptr inbounds nuw i8, ptr %__first.pn15.i26, i64 32 %sub.ptr.lhs.cast.i.i.i.i.i.i51 = ptrtoint ptr %__i.016.i25 to i64 %sub.ptr.sub.i.i.i.i.i.i52 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i51, %sub.ptr.rhs.cast @@ -53076,11 +53068,11 @@ if.then2.i49: ; preds = %_ZNK9__gnu_cxx5__op %idx.neg.i.i.i.i.i.i54 = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i53 %add.ptr.i.i.i.i.i.i55 = getelementptr inbounds %"struct.facebook::velox::Timestamp", ptr %add.ptr3.i50, i64 %idx.neg.i.i.i.i.i.i54 tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %add.ptr.i.i.i.i.i.i55, ptr noundef nonnull align 8 dereferenceable(1) %__first, i64 %sub.ptr.sub.i.i.i.i.i.i52, i1 false) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %__first, ptr noundef nonnull align 8 dereferenceable(16) %__val.i20, i64 16, i1 false) - br label %for.inc.i40 + store <2 x i64> %__val.sroa.0.0.copyload.i49, ptr %__first, align 8 + br label %for.inc.i39 while.cond.i.i32: ; preds = %while.cond.i.i32.preheader, %while.body.i.i46 - %__last.addr.0.i.i33 = phi ptr [ %__next.0.i.i34, %while.body.i.i46 ], [ %__i.016.i25, %while.cond.i.i32.preheader ] + %__last.addr.0.i.i33 = phi ptr [ %__next.0.i.i34, %while.body.i.i45 ], [ %__i.016.i25, %while.cond.i.i31.preheader ] %__next.0.i.i34 = getelementptr inbounds i8, ptr %__last.addr.0.i.i33, i64 -16 %12 = load i64, ptr %__next.0.i.i34, align 8 %cmp.i.i.i.i35 = icmp slt i64 %8, %12 @@ -53088,34 +53080,30 @@ while.cond.i.i32: ; preds = %while.cond.i.i32.pr lor.rhs.i.i.i.i36: ; preds = %while.cond.i.i32 %cmp5.i.i.i.i37 = icmp eq i64 %8, %12 - br i1 %cmp5.i.i.i.i37, label %_ZNK9__gnu_cxx5__ops14_Val_less_iterclIN8facebook5velox9TimestampEPS5_EEbRT_T0_.exit.i.i43, label %_ZSt25__unguarded_linear_insertIPN8facebook5velox9TimestampEN9__gnu_cxx5__ops14_Val_less_iterEEvT_T0_.exit.i38 + br i1 %cmp5.i.i.i.i37, label %_ZNK9__gnu_cxx5__ops14_Val_less_iterclIN8facebook5velox9TimestampEPS5_EEbRT_T0_.exit.i.i43, label %_ZSt25__unguarded_linear_insertIPN8facebook5velox9TimestampEN9__gnu_cxx5__ops14_Val_less_iterEEvT_T0_.exit.i37 _ZNK9__gnu_cxx5__ops14_Val_less_iterclIN8facebook5velox9TimestampEPS5_EEbRT_T0_.exit.i.i43: ; preds = %lor.rhs.i.i.i.i36 %nanos_6.i.i.i.i44 = getelementptr inbounds i8, ptr %__last.addr.0.i.i33, i64 -8 %13 = load i64, ptr %nanos_6.i.i.i.i44, align 8 %cmp7.i.i.i.i45 = icmp ult i64 %10, %13 - br i1 %cmp7.i.i.i.i45, label %while.body.i.i46, label %_ZSt25__unguarded_linear_insertIPN8facebook5velox9TimestampEN9__gnu_cxx5__ops14_Val_less_iterEEvT_T0_.exit.i38 + br i1 %cmp7.i.i.i.i45, label %while.body.i.i46, label %_ZSt25__unguarded_linear_insertIPN8facebook5velox9TimestampEN9__gnu_cxx5__ops14_Val_less_iterEEvT_T0_.exit.i37 while.body.i.i46: ; preds = %_ZNK9__gnu_cxx5__ops14_Val_less_iterclIN8facebook5velox9TimestampEPS5_EEbRT_T0_.exit.i.i43, %while.cond.i.i32 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %__last.addr.0.i.i33, ptr noundef nonnull align 8 dereferenceable(16) %__next.0.i.i34, i64 16, i1 false) br label %while.cond.i.i32, !llvm.loop !603 -_ZSt25__unguarded_linear_insertIPN8facebook5velox9TimestampEN9__gnu_cxx5__ops14_Val_less_iterEEvT_T0_.exit.i38: ; preds = %_ZNK9__gnu_cxx5__ops14_Val_less_iterclIN8facebook5velox9TimestampEPS5_EEbRT_T0_.exit.i.i43, %lor.rhs.i.i.i.i36 - store i64 %8, ptr %__last.addr.0.i.i33, align 8 - %__val.sroa.3.0.__last.addr.0.sroa_idx.i.i39 = getelementptr inbounds nuw i8, ptr %__last.addr.0.i.i33, i64 8 - store i64 %10, ptr %__val.sroa.3.0.__last.addr.0.sroa_idx.i.i39, align 8 - br label %for.inc.i40 - -for.inc.i40: ; preds = %_ZSt25__unguarded_linear_insertIPN8facebook5velox9TimestampEN9__gnu_cxx5__ops14_Val_less_iterEEvT_T0_.exit.i38, %if.then2.i49 - %__i.0.i41 = getelementptr inbounds nuw i8, ptr %__i.016.i25, i64 16 - %cmp1.not.i42 = icmp eq ptr %__i.0.i41, %__last - br i1 %cmp1.not.i42, label %_ZSt16__insertion_sortIPN8facebook5velox9TimestampEN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S7_T0_.exit56, label %for.body.i24, !llvm.loop !604 +_ZSt25__unguarded_linear_insertIPN8facebook5velox9TimestampEN9__gnu_cxx5__ops14_Val_less_iterEEvT_T0_.exit.i37:; preds = %_ZNK9__gnu_cxx5__ops14_Val_less_iterclIN8facebook5velox9TimestampEPS5_EEbRT_T0_.exit.i.i42, %lor.rhs.i.i.i.i36 + store i64 %8, ptr %__last.addr.0.i.i32, align 8 + %__val.sroa.3.0.__last.addr.0.sroa_idx.i.i38 = getelementptr inbounds nuw i8, ptr %__last.addr.0.i.i32, i64 8 + store i64 %10, ptr %__val.sroa.3.0.__last.addr.0.sroa_idx.i.i38, align 8 + br label %for.inc.i39 -_ZSt16__insertion_sortIPN8facebook5velox9TimestampEN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S7_T0_.exit56: ; preds = %for.inc.i40, %if.else, %for.cond.preheader.i - call void @llvm.lifetime.end.p0(ptr nonnull %__val.i20) - br label %if.end +for.inc.i39: ; preds = %_ZSt25__unguarded_linear_insertIPN8facebook5velox9TimestampEN9__gnu_cxx5__ops14_Val_less_iterEEvT_T0_.exit.i37, %if.then2.i48 + %__i.0.i40 = getelementptr inbounds nuw i8, ptr %__i.016.i24, i64 16 + %cmp1.not.i41 = icmp eq ptr %__i.0.i40, %__last + br i1 %cmp1.not.i41, label %if.end, label %for.body.i23, !llvm.loop !604 -if.end: ; preds = %_ZSt25__unguarded_linear_insertIPN8facebook5velox9TimestampEN9__gnu_cxx5__ops14_Val_less_iterEEvT_T0_.exit.i14, %_ZSt16__insertion_sortIPN8facebook5velox9TimestampEN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S7_T0_.exit, %_ZSt16__insertion_sortIPN8facebook5velox9TimestampEN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S7_T0_.exit56 +if.end: ; preds = %for.inc.i39, %_ZSt25__unguarded_linear_insertIPN8facebook5velox9TimestampEN9__gnu_cxx5__ops14_Val_less_iterEEvT_T0_.exit.i14, %for.cond.preheader.i, %if.else, %_ZSt16__insertion_sortIPN8facebook5velox9TimestampEN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S7_T0_.exit ret void } @@ -53605,7 +53593,6 @@ if.end16: ; preds = %if.then9, %if.else1 ; Function Attrs: mustprogress uwtable define linkonce_odr void @_ZSt16__introsort_loopIPN8facebook5velox9TimestampElN9__gnu_cxx5__ops15_Iter_comp_iterISt7greaterIS2_EEEEvT_SA_T0_T1_(ptr noundef %__first, ptr noundef %__last, i64 noundef %__depth_limit) local_unnamed_addr #0 comdat { entry: - %__tmp.i.i.i.i = alloca %"struct.facebook::velox::Timestamp", align 8 %__comp.i.i = alloca %"struct.__gnu_cxx::__ops::_Iter_comp_iter.628", align 1 %__comp.i = alloca %"struct.__gnu_cxx::__ops::_Iter_comp_iter.628", align 1 %sub.ptr.rhs.cast = ptrtoint ptr %__first to i64 @@ -53709,11 +53696,9 @@ while.end8.i.i: ; preds = %land.rhs.i.i.i14.i. br i1 %cmp.i.i, label %if.end.i.i, label %_ZSt27__unguarded_partition_pivotIPN8facebook5velox9TimestampEN9__gnu_cxx5__ops15_Iter_comp_iterISt7greaterIS2_EEEET_SA_SA_T0_.exit if.end.i.i: ; preds = %while.end8.i.i - call void @llvm.lifetime.start.p0(ptr nonnull %__tmp.i.i.i.i) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %__tmp.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %__first.addr.1.i.i, i64 16, i1 false) + %__tmp.i.i.sroa.0.0.copyload.i.i = load <2 x i64>, ptr %__first.addr.1.i.i, align 8 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %__first.addr.1.i.i, ptr noundef nonnull align 8 dereferenceable(16) %__last.addr.1.i.i, i64 16, i1 false) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %__last.addr.1.i.i, ptr noundef nonnull align 8 dereferenceable(16) %__tmp.i.i.i.i, i64 16, i1 false) - call void @llvm.lifetime.end.p0(ptr nonnull %__tmp.i.i.i.i) + store <2 x i64> %__tmp.i.i.sroa.0.0.copyload.i.i, ptr %__last.addr.1.i.i, align 8 %incdec.ptr9.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.1.i.i, i64 16 br label %while.body.i.i12, !llvm.loop !612 @@ -53732,8 +53717,6 @@ while.end: ; preds = %_ZSt27__unguarded_p ; Function Attrs: mustprogress uwtable define linkonce_odr void @_ZSt22__final_insertion_sortIPN8facebook5velox9TimestampEN9__gnu_cxx5__ops15_Iter_comp_iterISt7greaterIS2_EEEEvT_SA_T0_(ptr noundef %__first, ptr noundef %__last) local_unnamed_addr #0 comdat { entry: - %__val.i22 = alloca %"struct.facebook::velox::Timestamp", align 8 - %__val.i = alloca %"struct.facebook::velox::Timestamp", align 8 %sub.ptr.lhs.cast = ptrtoint ptr %__last to i64 %sub.ptr.rhs.cast = ptrtoint ptr %__first to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast @@ -53741,7 +53724,6 @@ entry: br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry - call void @llvm.lifetime.start.p0(ptr nonnull %__val.i) %nanos_6.i.i.i.i = getelementptr inbounds nuw i8, ptr %__first, i64 8 %scevgep = getelementptr i8, ptr %__first, i64 16 br label %for.body.i @@ -53770,9 +53752,9 @@ _ZN9__gnu_cxx5__ops15_Iter_comp_iterISt7greaterIN8facebook5velox9TimestampEEEclI br i1 %cmp7.i.i.i.i, label %if.then2.i, label %while.cond.i.i.preheader if.then2.i: ; preds = %_ZN9__gnu_cxx5__ops15_Iter_comp_iterISt7greaterIN8facebook5velox9TimestampEEEclIPS5_S9_EEbT_T0_.exit.i, %for.body.i - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %__val.i, ptr noundef nonnull align 8 dereferenceable(16) %__i.016.i.ptr, i64 16, i1 false) + %__val.sroa.0.0.copyload.i = load <2 x i64>, ptr %__i.016.i.ptr, align 8 tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %scevgep, ptr noundef nonnull align 8 dereferenceable(1) %__first, i64 %__i.016.i.idx, i1 false) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %__first, ptr noundef nonnull align 8 dereferenceable(16) %__val.i, i64 16, i1 false) + store <2 x i64> %__val.sroa.0.0.copyload.i, ptr %__first, align 8 br label %for.inc.i while.cond.i.i: ; preds = %while.cond.i.i.preheader, %while.body.i.i @@ -53809,7 +53791,6 @@ for.inc.i: ; preds = %_ZSt25__unguarded_l _ZSt16__insertion_sortIPN8facebook5velox9TimestampEN9__gnu_cxx5__ops15_Iter_comp_iterISt7greaterIS2_EEEEvT_SA_T0_.exit: ; preds = %for.inc.i %add.ptr = getelementptr inbounds nuw i8, ptr %__first, i64 256 - call void @llvm.lifetime.end.p0(ptr nonnull %__val.i) %cmp.not3.i = icmp eq ptr %add.ptr, %__last br i1 %cmp.not3.i, label %if.end, label %for.body.i9 @@ -53850,7 +53831,6 @@ _ZSt25__unguarded_linear_insertIPN8facebook5velox9TimestampEN9__gnu_cxx5__ops14_ br i1 %cmp.not.i, label %if.end, label %for.body.i9, !llvm.loop !616 if.else: ; preds = %entry - call void @llvm.lifetime.start.p0(ptr nonnull %__val.i22) %cmp.i = icmp eq ptr %__first, %__last br i1 %cmp.i, label %_ZSt16__insertion_sortIPN8facebook5velox9TimestampEN9__gnu_cxx5__ops15_Iter_comp_iterISt7greaterIS2_EEEEvT_SA_T0_.exit58, label %for.cond.preheader.i @@ -53864,8 +53844,8 @@ for.body.lr.ph.i: ; preds = %for.cond.preheader. br label %for.body.i26 for.body.i26: ; preds = %for.inc.i42, %for.body.lr.ph.i - %__i.016.i27 = phi ptr [ %__i.013.i23, %for.body.lr.ph.i ], [ %__i.0.i43, %for.inc.i42 ] - %__first.pn15.i28 = phi ptr [ %__first, %for.body.lr.ph.i ], [ %__i.016.i27, %for.inc.i42 ] + %__i.016.i27 = phi ptr [ %__i.013.i23, %for.body.lr.ph.i ], [ %__i.0.i43, %for.inc.i41 ] + %__first.pn15.i28 = phi ptr [ %__first, %for.body.lr.ph.i ], [ %__i.016.i27, %for.inc.i41 ] %8 = load i64, ptr %__i.016.i27, align 8 %9 = load i64, ptr %__first, align 8 %cmp.i.i.i.i29 = icmp sgt i64 %8, %9 @@ -53886,7 +53866,7 @@ _ZN9__gnu_cxx5__ops15_Iter_comp_iterISt7greaterIN8facebook5velox9TimestampEEEclI br i1 %cmp7.i.i.i.i50, label %if.then2.i51, label %while.cond.i.i34.preheader if.then2.i51: ; preds = %_ZN9__gnu_cxx5__ops15_Iter_comp_iterISt7greaterIN8facebook5velox9TimestampEEEclIPS5_S9_EEbT_T0_.exit.i49, %for.body.i26 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %__val.i22, ptr noundef nonnull align 8 dereferenceable(16) %__i.016.i27, i64 16, i1 false) + %__val.sroa.0.0.copyload.i51 = load <2 x i64>, ptr %__i.016.i26, align 8 %add.ptr3.i52 = getelementptr inbounds nuw i8, ptr %__first.pn15.i28, i64 32 %sub.ptr.lhs.cast.i.i.i.i.i.i53 = ptrtoint ptr %__i.016.i27 to i64 %sub.ptr.sub.i.i.i.i.i.i54 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i53, %sub.ptr.rhs.cast @@ -53894,11 +53874,11 @@ if.then2.i51: ; preds = %_ZN9__gnu_cxx5__ops %idx.neg.i.i.i.i.i.i56 = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i55 %add.ptr.i.i.i.i.i.i57 = getelementptr inbounds %"struct.facebook::velox::Timestamp", ptr %add.ptr3.i52, i64 %idx.neg.i.i.i.i.i.i56 tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %add.ptr.i.i.i.i.i.i57, ptr noundef nonnull align 8 dereferenceable(1) %__first, i64 %sub.ptr.sub.i.i.i.i.i.i54, i1 false) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %__first, ptr noundef nonnull align 8 dereferenceable(16) %__val.i22, i64 16, i1 false) + store <2 x i64> %__val.sroa.0.0.copyload.i51, ptr %__first, align 8 br label %for.inc.i42 while.cond.i.i34: ; preds = %while.cond.i.i34.preheader, %while.body.i.i48 - %__last.addr.0.i.i35 = phi ptr [ %__next.0.i.i36, %while.body.i.i48 ], [ %__i.016.i27, %while.cond.i.i34.preheader ] + %__last.addr.0.i.i35 = phi ptr [ %__next.0.i.i36, %while.body.i.i47 ], [ %__i.016.i27, %while.cond.i.i33.preheader ] %__next.0.i.i36 = getelementptr inbounds i8, ptr %__last.addr.0.i.i35, i64 -16 %12 = load i64, ptr %__next.0.i.i36, align 8 %cmp.i.i.i.i.i37 = icmp sgt i64 %8, %12 @@ -53929,11 +53909,7 @@ for.inc.i42: ; preds = %_ZSt25__unguarded_l %cmp1.not.i44 = icmp eq ptr %__i.0.i43, %__last br i1 %cmp1.not.i44, label %_ZSt16__insertion_sortIPN8facebook5velox9TimestampEN9__gnu_cxx5__ops15_Iter_comp_iterISt7greaterIS2_EEEEvT_SA_T0_.exit58, label %for.body.i26, !llvm.loop !615 -_ZSt16__insertion_sortIPN8facebook5velox9TimestampEN9__gnu_cxx5__ops15_Iter_comp_iterISt7greaterIS2_EEEEvT_SA_T0_.exit58: ; preds = %for.inc.i42, %if.else, %for.cond.preheader.i - call void @llvm.lifetime.end.p0(ptr nonnull %__val.i22) - br label %if.end - -if.end: ; preds = %_ZSt25__unguarded_linear_insertIPN8facebook5velox9TimestampEN9__gnu_cxx5__ops14_Val_comp_iterISt7greaterIS2_EEEEvT_T0_.exit.i16, %_ZSt16__insertion_sortIPN8facebook5velox9TimestampEN9__gnu_cxx5__ops15_Iter_comp_iterISt7greaterIS2_EEEEvT_SA_T0_.exit, %_ZSt16__insertion_sortIPN8facebook5velox9TimestampEN9__gnu_cxx5__ops15_Iter_comp_iterISt7greaterIS2_EEEEvT_SA_T0_.exit58 +_ZSt16__insertion_sortIPN8facebook5velox9TimestampEN9__gnu_cxx5__ops15_Iter_comp_iterISt7greaterIS2_EEEEvT_SA_T0_.exit58: ; preds = %for.inc.i42, %_ZSt25__unguarded_linear_insertIPN8facebook5velox9TimestampEN9__gnu_cxx5__ops14_Val_comp_iterISt7greaterIS2_EEEEvT_T0_.exit.i16, %for.cond.preheader.i, %if.else, %_ZSt16__insertion_sortIPN8facebook5velox9TimestampEN9__gnu_cxx5__ops15_Iter_comp_iterISt7greaterIS2_EEEEvT_SA_T0_.exit ret void } diff --git a/bench/velox/optimized/GreatestLeast.ll b/bench/velox/optimized/GreatestLeast.ll index 2d88ebe92c6..0d2ae9a05ce 100644 --- a/bench/velox/optimized/GreatestLeast.ll +++ b/bench/velox/optimized/GreatestLeast.ll @@ -27161,7 +27161,6 @@ define linkonce_odr void @_ZN8facebook5velox10FlatVectorINS0_9TimestampEE13mutab entry: %ref.tmp = alloca %"class.std::optional.339", align 8 %newValues = alloca %"class.boost::intrusive_ptr", align 8 - %ref.tmp18.sroa.0 = alloca %"struct.facebook::velox::Timestamp", align 8 %conv.i = sext i32 %size to i64 %mul.i = shl nsw i64 %conv.i, 4 %values_ = getelementptr inbounds nuw i8, ptr %this, i64 160 @@ -27200,7 +27199,6 @@ if.then13: ; preds = %if.then if.else: ; preds = %land.lhs.true6, %land.lhs.true, %entry %pool_.i = getelementptr inbounds nuw i8, ptr %this, i64 48 %6 = load ptr, ptr %pool_.i, align 8 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp18.sroa.0, i8 0, i64 16, i1 false) tail call void @llvm.experimental.noalias.scope.decl(metadata !253) %7 = icmp slt i32 %size, 0 br i1 %7, label %if.then.i.i, label %_ZN5boost13intrusive_ptrIN8facebook5velox6BufferEEC2EPS3_b.exit.i @@ -27266,15 +27264,8 @@ if.then.i.i.i: ; preds = %call.i.i.noexc.i for.body.i.i.i.preheader.i.i: ; preds = %call.i.i.noexc.i %14 = load ptr, ptr %data_.i.i.i, align 8, !noalias !253 - %add.ptr9.i.i = getelementptr inbounds nuw %"struct.facebook::velox::Timestamp", ptr %14, i64 %conv.i - br label %for.body.i.i.i.i.i - -for.body.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i, %for.body.i.i.i.preheader.i.i - %__first.addr.04.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %for.body.i.i.i.i.i ], [ %14, %for.body.i.i.i.preheader.i.i ] - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %__first.addr.04.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp18.sroa.0, i64 16, i1 false), !noalias !253 - %incdec.ptr.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.04.i.i.i.i.i, i64 16 - %cmp.not.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i, %add.ptr9.i.i - br i1 %cmp.not.i.i.i.i.i, label %_ZN8facebook5velox13AlignedBuffer8allocateINS0_9TimestampEEEN5boost13intrusive_ptrINS0_6BufferEEEmPNS0_6memory10MemoryPoolERKSt8optionalIT_E.exit, label %for.body.i.i.i.i.i, !llvm.loop !256 + tail call void @llvm.memset.p0.i64(ptr align 8 %14, i8 0, i64 %mul.i, i1 false), !noalias !253 + br label %_ZN8facebook5velox13AlignedBuffer8allocateINS0_9TimestampEEEN5boost13intrusive_ptrINS0_6BufferEEEmPNS0_6memory10MemoryPoolERKSt8optionalIT_E.exit common.resume: ; preds = %lpad, %lpad.i %common.resume.op = phi { ptr, i32 } [ %15, %lpad.i ], [ %23, %lpad ] @@ -27286,7 +27277,7 @@ lpad.i: ; preds = %if.then6.i.i cleanup br label %common.resume -_ZN8facebook5velox13AlignedBuffer8allocateINS0_9TimestampEEEN5boost13intrusive_ptrINS0_6BufferEEEmPNS0_6memory10MemoryPoolERKSt8optionalIT_E.exit: ; preds = %for.body.i.i.i.i.i, %if.end.i.i +_ZN8facebook5velox13AlignedBuffer8allocateINS0_9TimestampEEEN5boost13intrusive_ptrINS0_6BufferEEEmPNS0_6memory10MemoryPoolERKSt8optionalIT_E.exit: ; preds = %for.body.i.i.i.preheader.i.i, %if.end.i.i %16 = load ptr, ptr %values_, align 8 %cmp.i7.not = icmp eq ptr %16, null br i1 %cmp.i7.not, label %if.end37, label %if.then22 diff --git a/bench/wasmtime-rs/optimized/16qf4j2oevjc61uc.ll b/bench/wasmtime-rs/optimized/16qf4j2oevjc61uc.ll index 1ae713c00b7..eec0cd4f446 100644 --- a/bench/wasmtime-rs/optimized/16qf4j2oevjc61uc.ll +++ b/bench/wasmtime-rs/optimized/16qf4j2oevjc61uc.ll @@ -5908,6 +5908,10 @@ define hidden noundef nonnull align 4 dereferenceable(16) ptr @"_ZN16cranelift_e %9 = load i32, ptr %8, align 8, !alias.scope !1156, !noalias !1159, !noundef !4 %10 = getelementptr inbounds nuw i8, ptr %0, i64 36 %11 = load i32, ptr %10, align 4, !alias.scope !1156, !noalias !1159, !noundef !4 + %.sroa.0.0.vec.insert = insertelement <4 x i32> poison, i32 %5, i64 0 + %.sroa.0.4.vec.insert = insertelement <4 x i32> %.sroa.0.0.vec.insert, i32 %7, i64 1 + %.sroa.0.8.vec.insert = insertelement <4 x i32> %.sroa.0.4.vec.insert, i32 %9, i64 2 + %.sroa.0.12.vec.insert = insertelement <4 x i32> %.sroa.0.8.vec.insert, i32 %11, i64 3 %12 = getelementptr inbounds nuw i8, ptr %0, i64 16 %13 = load i64, ptr %12, align 8, !alias.scope !1161, !noalias !1164, !noundef !4 %14 = icmp ugt i64 %3, %13 @@ -5941,14 +5945,8 @@ define hidden noundef nonnull align 4 dereferenceable(16) ptr @"_ZN16cranelift_e ._crit_edge.i.i: ; preds = %._crit_edge.thread.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h2dfac94aa9605507E.exit.i.i" %.0.lcssa28.i.i = phi ptr [ %30, %._crit_edge.thread.i.i ], [ %24, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h2dfac94aa9605507E.exit.i.i" ] %storemerge.lcssa27.i.i = phi i64 [ %27, %._crit_edge.thread.i.i ], [ %21, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h2dfac94aa9605507E.exit.i.i" ] - store i32 %5, ptr %.0.lcssa28.i.i, align 4, !noalias !1164 - %.sroa.5.0..0.lcssa28.i.sroa_idx.i = getelementptr inbounds nuw i8, ptr %.0.lcssa28.i.i, i64 4 - store i32 %7, ptr %.sroa.5.0..0.lcssa28.i.sroa_idx.i, align 4, !noalias !1164 - %.sroa.6.0..0.lcssa28.i.sroa_idx.i = getelementptr inbounds nuw i8, ptr %.0.lcssa28.i.i, i64 8 - store i32 %9, ptr %.sroa.6.0..0.lcssa28.i.sroa_idx.i, align 4, !noalias !1164 - %.sroa.7.0..0.lcssa28.i.sroa_idx.i = getelementptr inbounds nuw i8, ptr %.0.lcssa28.i.i, i64 12 - store i32 %11, ptr %.sroa.7.0..0.lcssa28.i.sroa_idx.i, align 4, !noalias !1164 - %28 = add i64 %storemerge.lcssa27.i.i, 1 + store <4 x i32> %.sroa.0.12.vec.insert, ptr %.0.lcssa28.i.i, align 4, !noalias !1171 + %28 = add i64 %storemerge.lcssa29.i.i, 1 br label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6resize17h7d1bd8c2f3c31114E.llvm.14502953478370073462.exit" .lr.ph.i.i: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h2dfac94aa9605507E.exit.i.i", %.lr.ph.i.i @@ -6376,6 +6374,10 @@ define hidden noundef nonnull align 4 dereferenceable(16) ptr @"_ZN16cranelift_e %9 = load i32, ptr %8, align 8, !alias.scope !1259, !noalias !1262, !noundef !4 %10 = getelementptr inbounds nuw i8, ptr %0, i64 36 %11 = load i32, ptr %10, align 4, !alias.scope !1259, !noalias !1262, !noundef !4 + %.sroa.0.0.vec.insert = insertelement <4 x i32> poison, i32 %5, i64 0 + %.sroa.0.4.vec.insert = insertelement <4 x i32> %.sroa.0.0.vec.insert, i32 %7, i64 1 + %.sroa.0.8.vec.insert = insertelement <4 x i32> %.sroa.0.4.vec.insert, i32 %9, i64 2 + %.sroa.0.12.vec.insert = insertelement <4 x i32> %.sroa.0.8.vec.insert, i32 %11, i64 3 %12 = getelementptr inbounds nuw i8, ptr %0, i64 16 %13 = load i64, ptr %12, align 8, !alias.scope !1264, !noalias !1267, !noundef !4 %14 = icmp ugt i64 %3, %13 @@ -6409,14 +6411,8 @@ define hidden noundef nonnull align 4 dereferenceable(16) ptr @"_ZN16cranelift_e ._crit_edge.i.i: ; preds = %._crit_edge.thread.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hfbac7d3bf504630aE.exit.i.i" %.0.lcssa28.i.i = phi ptr [ %30, %._crit_edge.thread.i.i ], [ %24, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hfbac7d3bf504630aE.exit.i.i" ] %storemerge.lcssa27.i.i = phi i64 [ %27, %._crit_edge.thread.i.i ], [ %21, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hfbac7d3bf504630aE.exit.i.i" ] - store i32 %5, ptr %.0.lcssa28.i.i, align 4, !noalias !1267 - %.sroa.5.0..0.lcssa28.i.sroa_idx.i = getelementptr inbounds nuw i8, ptr %.0.lcssa28.i.i, i64 4 - store i32 %7, ptr %.sroa.5.0..0.lcssa28.i.sroa_idx.i, align 4, !noalias !1267 - %.sroa.6.0..0.lcssa28.i.sroa_idx.i = getelementptr inbounds nuw i8, ptr %.0.lcssa28.i.i, i64 8 - store i32 %9, ptr %.sroa.6.0..0.lcssa28.i.sroa_idx.i, align 4, !noalias !1267 - %.sroa.7.0..0.lcssa28.i.sroa_idx.i = getelementptr inbounds nuw i8, ptr %.0.lcssa28.i.i, i64 12 - store i32 %11, ptr %.sroa.7.0..0.lcssa28.i.sroa_idx.i, align 4, !noalias !1267 - %28 = add i64 %storemerge.lcssa27.i.i, 1 + store <4 x i32> %.sroa.0.12.vec.insert, ptr %.0.lcssa28.i.i, align 4, !noalias !1274 + %28 = add i64 %storemerge.lcssa29.i.i, 1 br label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6resize17he8b03bf861563415E.llvm.14502953478370073462.exit" .lr.ph.i.i: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hfbac7d3bf504630aE.exit.i.i", %.lr.ph.i.i @@ -12831,8 +12827,9 @@ define hidden void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$11extend_with17h0769ec123d2b 25: ; preds = %._crit_edge.thread, %._crit_edge %.0.lcssa28 = phi ptr [ %29, %._crit_edge.thread ], [ %13, %._crit_edge ] %storemerge.lcssa27 = phi i64 [ %23, %._crit_edge.thread ], [ %10, %._crit_edge ] - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %.0.lcssa28, ptr noundef nonnull align 4 dereferenceable(16) %2, i64 16, i1 false) - %26 = add i64 %storemerge.lcssa27, 1 + %.sroa.018.0.copyload = load <4 x i32>, ptr %2, align 4 + store <4 x i32> %.sroa.018.0.copyload, ptr %.0.lcssa28, align 4 + %26 = add i64 %storemerge.lcssa29, 1 br label %24 27: ; preds = %.lr.ph, %27 @@ -13582,8 +13579,9 @@ define hidden void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$11extend_with17h59e008bb761e 25: ; preds = %._crit_edge.thread, %._crit_edge %.0.lcssa28 = phi ptr [ %29, %._crit_edge.thread ], [ %13, %._crit_edge ] %storemerge.lcssa27 = phi i64 [ %23, %._crit_edge.thread ], [ %10, %._crit_edge ] - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %.0.lcssa28, ptr noundef nonnull align 4 dereferenceable(16) %2, i64 16, i1 false) - %26 = add i64 %storemerge.lcssa27, 1 + %.sroa.018.0.copyload = load <4 x i32>, ptr %2, align 4 + store <4 x i32> %.sroa.018.0.copyload, ptr %.0.lcssa28, align 4 + %26 = add i64 %storemerge.lcssa29, 1 br label %24 27: ; preds = %.lr.ph, %27 @@ -15845,13 +15843,7 @@ define hidden void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6resize17h7d1bd8c2f3c31114E. 7: ; preds = %3 %8 = sub nuw i64 %1, %5 - %.sroa.0.0.copyload = load i32, ptr %2, align 4 - %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 4 - %.sroa.5.0.copyload = load i32, ptr %.sroa.5.0..sroa_idx, align 4 - %.sroa.6.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 8 - %.sroa.6.0.copyload = load i32, ptr %.sroa.6.0..sroa_idx, align 4 - %.sroa.7.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 12 - %.sroa.7.0.copyload = load i32, ptr %.sroa.7.0..sroa_idx, align 4 + %.sroa.0.0.copyload = load <4 x i32>, ptr %2, align 4 %9 = load i64, ptr %0, align 8, !alias.scope !2688, !noalias !2693, !noundef !4 %10 = sub i64 %9, %5 %11 = icmp ugt i64 %8, %10 @@ -15870,7 +15862,14 @@ define hidden void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6resize17h7d1bd8c2f3c31114E. %17 = icmp ugt i64 %8, 1 br i1 %17, label %.lr.ph.i, label %._crit_edge.i -._crit_edge.thread.i: ; preds = %.lr.ph.i +._crit_edge.thread.i: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h2dfac94aa9605507E.exit.i" + %.sroa.0.0.vec.extract = extractelement <4 x i32> %.sroa.0.0.copyload, i64 0 + %.sroa.0.4.vec.extract = extractelement <4 x i32> %.sroa.0.0.copyload, i64 1 + %.sroa.0.8.vec.extract = extractelement <4 x i32> %.sroa.0.0.copyload, i64 2 + %.sroa.0.12.vec.extract = extractelement <4 x i32> %.sroa.0.0.copyload, i64 3 + br label %21 + +._crit_edge.thread.i: ; preds = %21 %18 = add i64 %8, -1 %19 = add i64 %18, %13 br label %._crit_edge.i @@ -15878,27 +15877,21 @@ define hidden void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6resize17h7d1bd8c2f3c31114E. ._crit_edge.i: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h2dfac94aa9605507E.exit.i", %._crit_edge.thread.i %.0.lcssa28.i = phi ptr [ %22, %._crit_edge.thread.i ], [ %16, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h2dfac94aa9605507E.exit.i" ] %storemerge.lcssa27.i = phi i64 [ %19, %._crit_edge.thread.i ], [ %13, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h2dfac94aa9605507E.exit.i" ] - store i32 %.sroa.0.0.copyload, ptr %.0.lcssa28.i, align 4 - %.sroa.5.0..0.lcssa28.i.sroa_idx = getelementptr inbounds nuw i8, ptr %.0.lcssa28.i, i64 4 - store i32 %.sroa.5.0.copyload, ptr %.sroa.5.0..0.lcssa28.i.sroa_idx, align 4 - %.sroa.6.0..0.lcssa28.i.sroa_idx = getelementptr inbounds nuw i8, ptr %.0.lcssa28.i, i64 8 - store i32 %.sroa.6.0.copyload, ptr %.sroa.6.0..0.lcssa28.i.sroa_idx, align 4 - %.sroa.7.0..0.lcssa28.i.sroa_idx = getelementptr inbounds nuw i8, ptr %.0.lcssa28.i, i64 12 - store i32 %.sroa.7.0.copyload, ptr %.sroa.7.0..0.lcssa28.i.sroa_idx, align 4 - %20 = add i64 %storemerge.lcssa27.i, 1 + store <4 x i32> %.sroa.0.0.copyload, ptr %.0.lcssa28.i, align 4, !noalias !2693 + %20 = add i64 %storemerge.lcssa29.i, 1 br label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$8truncate17h87aa176d5af7c088E.llvm.14502953478370073462.exit" -.lr.ph.i: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h2dfac94aa9605507E.exit.i", %.lr.ph.i - %.021.i = phi ptr [ %22, %.lr.ph.i ], [ %16, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h2dfac94aa9605507E.exit.i" ] - %.sroa.03.020.i = phi i64 [ %21, %.lr.ph.i ], [ 1, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h2dfac94aa9605507E.exit.i" ] +.lr.ph.i: ; preds = %.lr.ph.i, %.lr.ph.i + %.021.i = phi ptr [ %16, %.lr.ph.i ], [ %23, %21 ] + %.sroa.03.020.i = phi i64 [ 1, %.lr.ph.i ], [ %21, %21 ] %21 = add nuw i64 %.sroa.03.020.i, 1 - store i32 %.sroa.0.0.copyload, ptr %.021.i, align 4, !noalias !2693 + store i32 %.sroa.0.0.vec.extract, ptr %.021.i, align 4, !noalias !2693 %.sroa.4.0..0.sroa_idx.i = getelementptr inbounds nuw i8, ptr %.021.i, i64 4 - store i32 %.sroa.5.0.copyload, ptr %.sroa.4.0..0.sroa_idx.i, align 4, !noalias !2693 + store i32 %.sroa.0.4.vec.extract, ptr %.sroa.4.0..0.sroa_idx.i, align 4, !noalias !2693 %.sroa.517.0..0.sroa_idx.i = getelementptr inbounds nuw i8, ptr %.021.i, i64 8 - store i32 %.sroa.6.0.copyload, ptr %.sroa.517.0..0.sroa_idx.i, align 4, !noalias !2693 + store i32 %.sroa.0.8.vec.extract, ptr %.sroa.517.0..0.sroa_idx.i, align 4, !noalias !2693 %.sroa.6.0..0.sroa_idx.i = getelementptr inbounds nuw i8, ptr %.021.i, i64 12 - store i32 %.sroa.7.0.copyload, ptr %.sroa.6.0..0.sroa_idx.i, align 4, !noalias !2693 + store i32 %.sroa.0.12.vec.extract, ptr %.sroa.6.0..0.sroa_idx.i, align 4, !noalias !2693 %22 = getelementptr inbounds nuw i8, ptr %.021.i, i64 16 %exitcond.not.i = icmp eq i64 %21, %8 br i1 %exitcond.not.i, label %._crit_edge.thread.i, label %.lr.ph.i @@ -16794,13 +16787,7 @@ define hidden void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6resize17he8b03bf861563415E. 7: ; preds = %3 %8 = sub nuw i64 %1, %5 - %.sroa.0.0.copyload = load i32, ptr %2, align 4 - %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 4 - %.sroa.5.0.copyload = load i32, ptr %.sroa.5.0..sroa_idx, align 4 - %.sroa.6.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 8 - %.sroa.6.0.copyload = load i32, ptr %.sroa.6.0..sroa_idx, align 4 - %.sroa.7.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 12 - %.sroa.7.0.copyload = load i32, ptr %.sroa.7.0..sroa_idx, align 4 + %.sroa.0.0.copyload = load <4 x i32>, ptr %2, align 4 %9 = load i64, ptr %0, align 8, !alias.scope !2790, !noalias !2795, !noundef !4 %10 = sub i64 %9, %5 %11 = icmp ugt i64 %8, %10 @@ -16819,7 +16806,14 @@ define hidden void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6resize17he8b03bf861563415E. %17 = icmp ugt i64 %8, 1 br i1 %17, label %.lr.ph.i, label %._crit_edge.i -._crit_edge.thread.i: ; preds = %.lr.ph.i +._crit_edge.thread.i: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hfbac7d3bf504630aE.exit.i" + %.sroa.0.0.vec.extract = extractelement <4 x i32> %.sroa.0.0.copyload, i64 0 + %.sroa.0.4.vec.extract = extractelement <4 x i32> %.sroa.0.0.copyload, i64 1 + %.sroa.0.8.vec.extract = extractelement <4 x i32> %.sroa.0.0.copyload, i64 2 + %.sroa.0.12.vec.extract = extractelement <4 x i32> %.sroa.0.0.copyload, i64 3 + br label %21 + +._crit_edge.thread.i: ; preds = %21 %18 = add i64 %8, -1 %19 = add i64 %18, %13 br label %._crit_edge.i @@ -16827,27 +16821,21 @@ define hidden void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6resize17he8b03bf861563415E. ._crit_edge.i: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hfbac7d3bf504630aE.exit.i", %._crit_edge.thread.i %.0.lcssa28.i = phi ptr [ %22, %._crit_edge.thread.i ], [ %16, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hfbac7d3bf504630aE.exit.i" ] %storemerge.lcssa27.i = phi i64 [ %19, %._crit_edge.thread.i ], [ %13, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hfbac7d3bf504630aE.exit.i" ] - store i32 %.sroa.0.0.copyload, ptr %.0.lcssa28.i, align 4 - %.sroa.5.0..0.lcssa28.i.sroa_idx = getelementptr inbounds nuw i8, ptr %.0.lcssa28.i, i64 4 - store i32 %.sroa.5.0.copyload, ptr %.sroa.5.0..0.lcssa28.i.sroa_idx, align 4 - %.sroa.6.0..0.lcssa28.i.sroa_idx = getelementptr inbounds nuw i8, ptr %.0.lcssa28.i, i64 8 - store i32 %.sroa.6.0.copyload, ptr %.sroa.6.0..0.lcssa28.i.sroa_idx, align 4 - %.sroa.7.0..0.lcssa28.i.sroa_idx = getelementptr inbounds nuw i8, ptr %.0.lcssa28.i, i64 12 - store i32 %.sroa.7.0.copyload, ptr %.sroa.7.0..0.lcssa28.i.sroa_idx, align 4 - %20 = add i64 %storemerge.lcssa27.i, 1 + store <4 x i32> %.sroa.0.0.copyload, ptr %.0.lcssa28.i, align 4, !noalias !2795 + %20 = add i64 %storemerge.lcssa29.i, 1 br label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$8truncate17h9b37b0a3c734221dE.llvm.14502953478370073462.exit" -.lr.ph.i: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hfbac7d3bf504630aE.exit.i", %.lr.ph.i - %.021.i = phi ptr [ %22, %.lr.ph.i ], [ %16, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hfbac7d3bf504630aE.exit.i" ] - %.sroa.03.020.i = phi i64 [ %21, %.lr.ph.i ], [ 1, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hfbac7d3bf504630aE.exit.i" ] +.lr.ph.i: ; preds = %.lr.ph.i, %.lr.ph.i + %.021.i = phi ptr [ %16, %.lr.ph.i ], [ %23, %21 ] + %.sroa.03.020.i = phi i64 [ 1, %.lr.ph.i ], [ %21, %21 ] %21 = add nuw i64 %.sroa.03.020.i, 1 - store i32 %.sroa.0.0.copyload, ptr %.021.i, align 4, !noalias !2795 + store i32 %.sroa.0.0.vec.extract, ptr %.021.i, align 4, !noalias !2795 %.sroa.4.0..0.sroa_idx.i = getelementptr inbounds nuw i8, ptr %.021.i, i64 4 - store i32 %.sroa.5.0.copyload, ptr %.sroa.4.0..0.sroa_idx.i, align 4, !noalias !2795 + store i32 %.sroa.0.4.vec.extract, ptr %.sroa.4.0..0.sroa_idx.i, align 4, !noalias !2795 %.sroa.517.0..0.sroa_idx.i = getelementptr inbounds nuw i8, ptr %.021.i, i64 8 - store i32 %.sroa.6.0.copyload, ptr %.sroa.517.0..0.sroa_idx.i, align 4, !noalias !2795 + store i32 %.sroa.0.8.vec.extract, ptr %.sroa.517.0..0.sroa_idx.i, align 4, !noalias !2795 %.sroa.6.0..0.sroa_idx.i = getelementptr inbounds nuw i8, ptr %.021.i, i64 12 - store i32 %.sroa.7.0.copyload, ptr %.sroa.6.0..0.sroa_idx.i, align 4, !noalias !2795 + store i32 %.sroa.0.12.vec.extract, ptr %.sroa.6.0..0.sroa_idx.i, align 4, !noalias !2795 %22 = getelementptr inbounds nuw i8, ptr %.021.i, i64 16 %exitcond.not.i = icmp eq i64 %21, %8 br i1 %exitcond.not.i, label %._crit_edge.thread.i, label %.lr.ph.i diff --git a/bench/wireshark/optimized/sparkline_delegate.ll b/bench/wireshark/optimized/sparkline_delegate.ll index 20f749fdfe8..c3c54be65df 100644 --- a/bench/wireshark/optimized/sparkline_delegate.ll +++ b/bench/wireshark/optimized/sparkline_delegate.ll @@ -4234,78 +4234,76 @@ declare void @_ZN11QMetaObject14normalizedTypeEPKc(ptr dead_on_unwind writable s ; Function Attrs: mustprogress null_pointer_is_valid sspstrong uwtable define linkonce_odr void @_ZN9QtPrivate12QPodArrayOpsI7QPointFE7emplaceIJS1_EEEvxDpOT_(ptr noundef align 8 dereferenceable_or_null(24) %0, i64 noundef %1, ptr noundef align 8 dereferenceable(16) %2) local_unnamed_addr #0 comdat align 2 personality ptr @__gxx_personality_v0 { - %4 = alloca %class.QPointF, align 8 - %5 = load ptr, ptr %0, align 8 - %.not.i = icmp eq ptr %5, null + %4 = load ptr, ptr %0, align 8 + %.not.i = icmp eq ptr %4, null br i1 %.not.i, label %_ZNK17QArrayDataPointerI7QPointFE11needsDetachEv.exit.thread, label %_ZNK17QArrayDataPointerI7QPointFE11needsDetachEv.exit _ZNK17QArrayDataPointerI7QPointFE11needsDetachEv.exit: ; preds = %3 - %6 = load atomic i32, ptr %5 monotonic, align 4 + %6 = load atomic i32, ptr %4 monotonic, align 4 %7 = icmp sgt i32 %6, 1 - br i1 %7, label %_ZNK17QArrayDataPointerI7QPointFE11needsDetachEv.exit.thread, label %8 - -8: ; preds = %_ZNK17QArrayDataPointerI7QPointFE11needsDetachEv.exit - %9 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %10 = load i64, ptr %9, align 8 - %11 = icmp eq i64 %1, %10 - br i1 %11, label %_ZNK17QArrayDataPointerI7QPointFE14freeSpaceAtEndEv.exit, label %27 - -_ZNK17QArrayDataPointerI7QPointFE14freeSpaceAtEndEv.exit: ; preds = %8 - %12 = getelementptr inbounds nuw i8, ptr %5, i64 8 - %13 = load i64, ptr %12, align 8 - %14 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %15 = load ptr, ptr %14, align 8 - %16 = ptrtoint ptr %5 to i64 - %17 = add i64 %16, 23 - %18 = and i64 %17, -8 - %19 = ptrtoint ptr %15 to i64 - %20 = sub i64 %19, %18 - %21 = ashr exact i64 %20, 4 - %22 = add i64 %21, %1 - %.not = icmp eq i64 %13, %22 - br i1 %.not, label %27, label %23 - -23: ; preds = %_ZNK17QArrayDataPointerI7QPointFE14freeSpaceAtEndEv.exit - %24 = getelementptr %class.QPointF, ptr %15, i64 %1 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef align 8 dereferenceable(16) %24, ptr noundef align 8 dereferenceable(16) %2, i64 16, i1 false) - %25 = load i64, ptr %9, align 8 - %26 = add i64 %25, 1 - store i64 %26, ptr %9, align 8 - br label %60 + br i1 %7, label %_ZNK17QArrayDataPointerI7QPointFE11needsDetachEv.exit.thread, label %7 -27: ; preds = %_ZNK17QArrayDataPointerI7QPointFE14freeSpaceAtEndEv.exit, %8 - %28 = icmp eq i64 %1, 0 - br i1 %28, label %_ZNK17QArrayDataPointerI7QPointFE16freeSpaceAtBeginEv.exit, label %_ZNK17QArrayDataPointerI7QPointFE11needsDetachEv.exit.thread +27: ; preds = %_ZNK17QArrayDataPointerI7QPointFE11needsDetachEv.exit + %8 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %9 = load i64, ptr %8, align 8 + %10 = icmp eq i64 %1, %9 + br i1 %10, label %_ZNK17QArrayDataPointerI7QPointFE14freeSpaceAtEndEv.exit, label %26 _ZNK17QArrayDataPointerI7QPointFE16freeSpaceAtBeginEv.exit: ; preds = %27 - %29 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %30 = load ptr, ptr %29, align 8 - %31 = ptrtoint ptr %5 to i64 - %32 = add i64 %31, 23 - %33 = and i64 %32, -8 - %34 = ptrtoint ptr %30 to i64 - %.not12 = icmp eq i64 %33, %34 - br i1 %.not12, label %_ZNK17QArrayDataPointerI7QPointFE11needsDetachEv.exit.thread, label %35 - -35: ; preds = %_ZNK17QArrayDataPointerI7QPointFE16freeSpaceAtBeginEv.exit - %36 = getelementptr i8, ptr %30, i64 -16 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef align 8 dereferenceable(16) %36, ptr noundef align 8 dereferenceable(16) %2, i64 16, i1 false) - %37 = load ptr, ptr %29, align 8 - %38 = getelementptr i8, ptr %37, i64 -16 - store ptr %38, ptr %29, align 8 - %39 = load i64, ptr %9, align 8 - %40 = add i64 %39, 1 - store i64 %40, ptr %9, align 8 + %29 = getelementptr inbounds nuw i8, ptr %4, i64 8 + %30 = load i64, ptr %29, align 8 + %13 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %14 = load ptr, ptr %13, align 8 + %15 = ptrtoint ptr %4 to i64 + %16 = add i64 %15, 23 + %17 = and i64 %16, -8 + %18 = ptrtoint ptr %14 to i64 + %19 = sub i64 %18, %17 + %20 = ashr exact i64 %19, 4 + %21 = add i64 %20, %1 + %.not = icmp eq i64 %12, %21 + br i1 %.not, label %26, label %22 + +_ZNK17QArrayDataPointerI7QPointFE11needsDetachEv.exit.thread: ; preds = %_ZNK17QArrayDataPointerI7QPointFE16freeSpaceAtBeginEv.exit + %23 = getelementptr %class.QPointF, ptr %14, i64 %1 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef align 8 dereferenceable(16) %23, ptr noundef align 8 dereferenceable(16) %2, i64 16, i1 false) + %24 = load i64, ptr %8, align 8 + %25 = add i64 %24, 1 + store i64 %25, ptr %8, align 8 br label %60 -_ZNK17QArrayDataPointerI7QPointFE11needsDetachEv.exit.thread: ; preds = %3, %27, %_ZNK17QArrayDataPointerI7QPointFE16freeSpaceAtBeginEv.exit, %_ZNK17QArrayDataPointerI7QPointFE11needsDetachEv.exit - call void @llvm.lifetime.start.p0(ptr nonnull %4) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef align 8 dereferenceable(16) %2, i64 16, i1 false) - %41 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %42 = load i64, ptr %41, align 8 - %43 = icmp ne i64 %42, 0 - %44 = icmp eq i64 %1, 0 - %or.cond = and i1 %44, %43 +26: ; preds = %_ZNK17QArrayDataPointerI7QPointFE14freeSpaceAtEndEv.exit, %7 + %27 = icmp eq i64 %1, 0 + br i1 %27, label %_ZNK17QArrayDataPointerI7QPointFE16freeSpaceAtBeginEv.exit, label %_ZNK17QArrayDataPointerI7QPointFE11needsDetachEv.exit.thread + +_ZNK17QArrayDataPointerI7QPointFE16freeSpaceAtBeginEv.exit: ; preds = %26 + %28 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %29 = load ptr, ptr %28, align 8 + %30 = ptrtoint ptr %4 to i64 + %31 = add i64 %30, 23 + %32 = and i64 %31, -8 + %33 = ptrtoint ptr %29 to i64 + %.not12 = icmp eq i64 %32, %33 + br i1 %.not12, label %_ZNK17QArrayDataPointerI7QPointFE11needsDetachEv.exit.thread, label %34 + +34: ; preds = %_ZNK17QArrayDataPointerI7QPointFE16freeSpaceAtBeginEv.exit + %35 = getelementptr i8, ptr %29, i64 -16 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef align 8 dereferenceable(16) %35, ptr noundef align 8 dereferenceable(16) %2, i64 16, i1 false) + %36 = load ptr, ptr %28, align 8 + %37 = getelementptr i8, ptr %36, i64 -16 + store ptr %37, ptr %28, align 8 + %38 = load i64, ptr %8, align 8 + %39 = add i64 %38, 1 + store i64 %39, ptr %8, align 8 + br label %59 + +_ZNK17QArrayDataPointerI7QPointFE11needsDetachEv.exit.thread: ; preds = %3, %26, %_ZNK17QArrayDataPointerI7QPointFE16freeSpaceAtBeginEv.exit, %_ZNK17QArrayDataPointerI7QPointFE11needsDetachEv.exit + %.sroa.0.0.copyload = load <2 x double>, ptr %2, align 8 + %40 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %41 = load i64, ptr %40, align 8 + %42 = icmp ne i64 %41, 0 + %43 = icmp eq i64 %1, 0 + %or.cond = and i1 %43, %42 %spec.store.select = zext i1 %or.cond to i32 tail call void @_ZN17QArrayDataPointerI7QPointFE13detachAndGrowEN10QArrayData14GrowthPositionExPPKS0_PS1_(ptr noundef align 8 dereferenceable_or_null(24) %0, i32 noundef %spec.store.select, i64 noundef 1, ptr noundef null, ptr noundef null) %45 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -4314,7 +4312,7 @@ _ZNK17QArrayDataPointerI7QPointFE11needsDetachEv.exit.thread: ; preds = %3, %27, br i1 %or.cond, label %55, label %48 48: ; preds = %_ZNK17QArrayDataPointerI7QPointFE11needsDetachEv.exit.thread - %49 = load i64, ptr %41, align 8 + %49 = load i64, ptr %40, align 8 %50 = icmp slt i64 %1, %49 br i1 %50, label %51, label %_ZN9QtPrivate12QPodArrayOpsI7QPointFE10createHoleEN10QArrayData14GrowthPositionExx.exit @@ -4326,21 +4324,20 @@ _ZNK17QArrayDataPointerI7QPointFE11needsDetachEv.exit.thread: ; preds = %3, %27, br label %_ZN9QtPrivate12QPodArrayOpsI7QPointFE10createHoleEN10QArrayData14GrowthPositionExx.exit 55: ; preds = %_ZNK17QArrayDataPointerI7QPointFE11needsDetachEv.exit.thread + %55 = getelementptr i8, ptr %45, i64 -16 + store ptr %55, ptr %44, align 8 %56 = getelementptr i8, ptr %46, i64 -16 - store ptr %56, ptr %45, align 8 - %57 = getelementptr i8, ptr %47, i64 -16 br label %_ZN9QtPrivate12QPodArrayOpsI7QPointFE10createHoleEN10QArrayData14GrowthPositionExx.exit _ZN9QtPrivate12QPodArrayOpsI7QPointFE10createHoleEN10QArrayData14GrowthPositionExx.exit: ; preds = %48, %51, %55 - %.0.i14 = phi ptr [ %47, %51 ], [ %47, %48 ], [ %57, %55 ] - %58 = load i64, ptr %41, align 8 + %.0.i14 = phi ptr [ %47, %50 ], [ %47, %47 ], [ %56, %54 ] + %58 = load i64, ptr %40, align 8 %59 = add i64 %58, 1 - store i64 %59, ptr %41, align 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef align 8 dereferenceable(16) %.0.i14, ptr noundef nonnull align 8 dereferenceable(16) %4, i64 16, i1 false) - call void @llvm.lifetime.end.p0(ptr nonnull %4) - br label %60 + store i64 %59, ptr %40, align 8 + store <2 x double> %.sroa.0.0.copyload, ptr %.0.i14, align 8 + br label %59 -60: ; preds = %_ZN9QtPrivate12QPodArrayOpsI7QPointFE10createHoleEN10QArrayData14GrowthPositionExx.exit, %35, %23 +60: ; preds = %_ZN9QtPrivate12QPodArrayOpsI7QPointFE10createHoleEN10QArrayData14GrowthPositionExx.exit, %34, %22 ret void } diff --git a/bench/xgboost/optimized/updater_approx.ll b/bench/xgboost/optimized/updater_approx.ll index 40da7fd697b..77e4871ffbe 100644 --- a/bench/xgboost/optimized/updater_approx.ll +++ b/bench/xgboost/optimized/updater_approx.ll @@ -33898,25 +33898,15 @@ _ZN7xgboost6common14HistCollection12AllocateDataEj.exit.thread: ; preds = %91, % 130: ; preds = %128 %.idx.i.i = shl nuw nsw i64 %.sroa.045.0, 4 - %131 = getelementptr inbounds nuw i8, ptr %.sroa.446.0, i64 %.idx.i.i - br label %.lr.ph.i.i.i.i43 - -.lr.ph.i.i.i.i43: ; preds = %.lr.ph.i.i.i.i43, %130 - %.06.i.i.i.i = phi ptr [ %132, %.lr.ph.i.i.i.i43 ], [ %.sroa.446.0, %130 ] - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.06.i.i.i.i, i8 0, i64 16, i1 false) - %132 = getelementptr inbounds nuw i8, ptr %.06.i.i.i.i, i64 16 - %.not.i.i.i.i44 = icmp eq ptr %132, %131 - br i1 %.not.i.i.i.i44, label %_ZSt6fill_nIPN7xgboost6detail20GradientPairInternalIdEEmS3_ET_S5_T0_RKT1_.exit.loopexit, label %.lr.ph.i.i.i.i43, !llvm.loop !988 - -_ZSt6fill_nIPN7xgboost6detail20GradientPairInternalIdEEmS3_ET_S5_T0_RKT1_.exit.loopexit: ; preds = %.lr.ph.i.i.i.i43 - %.pre57 = load i64, ptr %11, align 8, !tbaa !1116 - %.pre58 = load ptr, ptr %121, align 8, !tbaa !194 - %.pre59 = mul i64 %.pre57, %120 + call void @llvm.memset.p0.i64(ptr align 8 %.sroa.446.0, i8 0, i64 %.idx.i.i, i1 false) + %.pre58 = load i64, ptr %11, align 8, !tbaa !1116 + %.pre59 = load ptr, ptr %121, align 8, !tbaa !194 + %.pre60 = mul i64 %.pre58, %120 br label %_ZSt6fill_nIPN7xgboost6detail20GradientPairInternalIdEEmS3_ET_S5_T0_RKT1_.exit _ZSt6fill_nIPN7xgboost6detail20GradientPairInternalIdEEmS3_ET_S5_T0_RKT1_.exit: ; preds = %_ZSt6fill_nIPN7xgboost6detail20GradientPairInternalIdEEmS3_ET_S5_T0_RKT1_.exit.loopexit, %128 - %.pre-phi = phi i64 [ %.pre59, %_ZSt6fill_nIPN7xgboost6detail20GradientPairInternalIdEEmS3_ET_S5_T0_RKT1_.exit.loopexit ], [ %123, %128 ] - %133 = phi ptr [ %.pre58, %_ZSt6fill_nIPN7xgboost6detail20GradientPairInternalIdEEmS3_ET_S5_T0_RKT1_.exit.loopexit ], [ %124, %128 ] + %.pre-phi = phi i64 [ %.pre60, %_ZSt6fill_nIPN7xgboost6detail20GradientPairInternalIdEEmS3_ET_S5_T0_RKT1_.exit.loopexit ], [ %123, %128 ] + %133 = phi ptr [ %.pre59, %_ZSt6fill_nIPN7xgboost6detail20GradientPairInternalIdEEmS3_ET_S5_T0_RKT1_.exit.loopexit ], [ %124, %128 ] %134 = getelementptr i32, ptr %133, i64 %.pre-phi %135 = getelementptr i32, ptr %134, i64 %119 store i32 1, ptr %135, align 4, !tbaa !99 @@ -36201,22 +36191,17 @@ _ZNKSt3mapISt4pairImmEiSt4lessIS1_ESaIS0_IKS1_iEEE2atERS4_.exit: ; preds = %97, .critedge: ; preds = %_ZNSt10unique_ptrINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt14default_deleteIS5_EED2Ev.exit42, %._crit_edge %120 = load i64, ptr %6, align 8, !tbaa !44 %121 = load i64, ptr %7, align 8, !tbaa !44 - %122 = getelementptr inbounds nuw %"class.xgboost::detail::GradientPairInternal.445", ptr %.sroa.448.0.copyload, i64 %121 %.not5.i.i.i = icmp samesign eq i64 %120, %121 br i1 %.not5.i.i.i, label %_ZSt4fillIPN7xgboost6detail20GradientPairInternalIdEES3_EvT_S5_RKT0_.exit, label %.lr.ph.i.i.i.preheader .lr.ph.i.i.i.preheader: ; preds = %.critedge - %123 = getelementptr inbounds nuw %"class.xgboost::detail::GradientPairInternal.445", ptr %.sroa.448.0.copyload, i64 %120 - br label %.lr.ph.i.i.i - -.lr.ph.i.i.i: ; preds = %.lr.ph.i.i.i.preheader, %.lr.ph.i.i.i - %.06.i.i.i = phi ptr [ %124, %.lr.ph.i.i.i ], [ %123, %.lr.ph.i.i.i.preheader ] - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.06.i.i.i, i8 0, i64 16, i1 false) - %124 = getelementptr inbounds nuw i8, ptr %.06.i.i.i, i64 16 - %.not.i.i.i = icmp eq ptr %124, %122 - br i1 %.not.i.i.i, label %_ZSt4fillIPN7xgboost6detail20GradientPairInternalIdEES3_EvT_S5_RKT0_.exit, label %.lr.ph.i.i.i, !llvm.loop !988 + %123 = getelementptr %"class.xgboost::detail::GradientPairInternal.445", ptr %.sroa.448.0.copyload, i64 %120 + %123 = sub i64 %121, %120 + %124 = shl i64 %123, 4 + call void @llvm.memset.p0.i64(ptr align 8 %122, i8 0, i64 %124, i1 false) + br label %_ZSt4fillIPN7xgboost6detail20GradientPairInternalIdEES3_EvT_S5_RKT0_.exit -_ZSt4fillIPN7xgboost6detail20GradientPairInternalIdEES3_EvT_S5_RKT0_.exit: ; preds = %.lr.ph.i.i.i, %.critedge, %._crit_edge +_ZSt4fillIPN7xgboost6detail20GradientPairInternalIdEES3_EvT_S5_RKT0_.exit: ; preds = %.lr.ph.i.i.i.preheader, %.critedge, %._crit_edge ret void 125: ; preds = %55, %28 diff --git a/bench/xgboost/optimized/updater_refresh.ll b/bench/xgboost/optimized/updater_refresh.ll index fb194166733..78efed50a18 100644 --- a/bench/xgboost/optimized/updater_refresh.ll +++ b/bench/xgboost/optimized/updater_refresh.ll @@ -6321,68 +6321,71 @@ _ZNSt6vectorIN7xgboost4tree9GradStatsESaIS2_EE6resizeEmRKS2_.exit: ; preds = %19 %.not5.i.i.i.i = icmp eq ptr %28, %30 br i1 %.not5.i.i.i.i, label %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPN7xgboost4tree9GradStatsESt6vectorIS4_SaIS4_EEEES4_EvT_SA_RKT0_.exit, label %.lr.ph.i.i.i.i -.lr.ph.i.i.i.i: ; preds = %_ZNSt6vectorIN7xgboost4tree9GradStatsESaIS2_EE6resizeEmRKS2_.exit, %.lr.ph.i.i.i.i - %.06.i.i.i.i = phi ptr [ %31, %.lr.ph.i.i.i.i ], [ %28, %_ZNSt6vectorIN7xgboost4tree9GradStatsESaIS2_EE6resizeEmRKS2_.exit ] - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.06.i.i.i.i, i8 0, i64 16, i1 false) - %31 = getelementptr inbounds nuw i8, ptr %.06.i.i.i.i, i64 16 - %.not.i.i.i.i = icmp eq ptr %31, %30 - br i1 %.not.i.i.i.i, label %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPN7xgboost4tree9GradStatsESt6vectorIS4_SaIS4_EEEES4_EvT_SA_RKT0_.exit, label %.lr.ph.i.i.i.i, !llvm.loop !297 - -_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPN7xgboost4tree9GradStatsESt6vectorIS4_SaIS4_EEEES4_EvT_SA_RKT0_.exit: ; preds = %.lr.ph.i.i.i.i, %_ZNSt6vectorIN7xgboost4tree9GradStatsESaIS2_EE6resizeEmRKS2_.exit - %32 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %33 = load ptr, ptr %32, align 8, !tbaa !298 - %34 = load ptr, ptr %33, align 8, !tbaa !68 - %35 = load ptr, ptr %0, align 8, !tbaa !294 - %36 = load ptr, ptr %35, align 8, !tbaa !62 - %37 = load ptr, ptr %36, align 8, !tbaa !115 - %38 = getelementptr inbounds nuw i8, ptr %37, i64 24 - %39 = load i32, ptr %38, align 8, !tbaa !299 - %40 = zext i32 %39 to i64 - %41 = getelementptr inbounds nuw i8, ptr %34, i64 8 - %42 = load ptr, ptr %41, align 8, !tbaa !273 - %43 = load ptr, ptr %34, align 8, !tbaa !69 - %44 = ptrtoint ptr %42 to i64 - %45 = ptrtoint ptr %43 to i64 - %46 = sub i64 %44, %45 - %47 = ashr exact i64 %46, 2 - %48 = icmp ult i64 %47, %40 - br i1 %48, label %49, label %51 - -49: ; preds = %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPN7xgboost4tree9GradStatsESt6vectorIS4_SaIS4_EEEES4_EvT_SA_RKT0_.exit - %50 = sub nuw nsw i64 %40, %47 - call void @_ZNSt6vectorIfSaIfEE17_M_default_appendEm(ptr noundef nonnull align 8 dereferenceable(25) %34, i64 noundef %50) - %.pre.i = load ptr, ptr %34, align 8, !tbaa !282 - %.pre2.i = load ptr, ptr %41, align 8, !tbaa !282 +.lr.ph.i.i.i.i: ; preds = %_ZNSt6vectorIN7xgboost4tree9GradStatsESaIS2_EE6resizeEmRKS2_.exit + %31 = ptrtoint ptr %30 to i64 + %32 = ptrtoint ptr %28 to i64 + %33 = add i64 %31, -16 + %34 = sub i64 %33, %32 + %35 = and i64 %34, -16 + %36 = add i64 %35, 16 + call void @llvm.memset.p0.i64(ptr align 8 %28, i8 0, i64 %36, i1 false) + br label %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPN7xgboost4tree9GradStatsESt6vectorIS4_SaIS4_EEEES4_EvT_SA_RKT0_.exit + +_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPN7xgboost4tree9GradStatsESt6vectorIS4_SaIS4_EEEES4_EvT_SA_RKT0_.exit:; preds = %.lr.ph.i.i.i.i.preheader, %_ZNSt6vectorIN7xgboost4tree9GradStatsESaIS2_EE6resizeEmRKS2_.exit + %37 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %36 = load ptr, ptr %37, align 8, !tbaa !297 + %37 = load ptr, ptr %36, align 8, !tbaa !68 + %40 = load ptr, ptr %0, align 8, !tbaa !294 + %39 = load ptr, ptr %40, align 8, !tbaa !62 + %42 = load ptr, ptr %39, align 8, !tbaa !115 + %41 = getelementptr inbounds nuw i8, ptr %42, i64 24 + %42 = load i32, ptr %41, align 8, !tbaa !298 + %45 = zext i32 %44 to i64 + %46 = getelementptr inbounds nuw i8, ptr %39, i64 8 + %47 = load ptr, ptr %46, align 8, !tbaa !273 + %48 = load ptr, ptr %39, align 8, !tbaa !69 + %49 = ptrtoint ptr %47 to i64 + %50 = ptrtoint ptr %48 to i64 + %51 = sub i64 %49, %50 + %52 = ashr exact i64 %51, 2 + %53 = icmp ult i64 %52, %45 + br i1 %53, label %54, label %56 + +54:; preds = %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPN7xgboost4tree9GradStatsESt6vectorIS4_SaIS4_EEEES4_EvT_SA_RKT0_.exit + %55 = sub nuw nsw i64 %45, %52 + call void @_ZNSt6vectorIfSaIfEE17_M_default_appendEm(ptr noundef nonnull align 8 dereferenceable(25) %39, i64 noundef %55) + %.pre.i = load ptr, ptr %39, align 8, !tbaa !282 + %.pre2.i = load ptr, ptr %46, align 8, !tbaa !282 br label %_ZNSt6vectorIfSaIfEE6resizeEm.exit.i 51: ; preds = %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPN7xgboost4tree9GradStatsESt6vectorIS4_SaIS4_EEEES4_EvT_SA_RKT0_.exit - %52 = icmp ugt i64 %47, %40 + %52 = icmp ugt i64 %52, %45 br i1 %52, label %53, label %_ZNSt6vectorIfSaIfEE6resizeEm.exit.i 53: ; preds = %51 - %54 = getelementptr inbounds nuw float, ptr %43, i64 %40 - %.not.i.i.i = icmp eq ptr %42, %54 + %54 = getelementptr inbounds nuw float, ptr %48, i64 %45 + %.not.i.i.i = icmp eq ptr %47, %54 br i1 %.not.i.i.i, label %_ZNSt6vectorIfSaIfEE6resizeEm.exit.i, label %55 55: ; preds = %53 - store ptr %54, ptr %41, align 8, !tbaa !273 + store ptr %54, ptr %46, align 8, !tbaa !273 br label %_ZNSt6vectorIfSaIfEE6resizeEm.exit.i -_ZNSt6vectorIfSaIfEE6resizeEm.exit.i: ; preds = %55, %53, %51, %49 - %56 = phi ptr [ %.pre2.i, %49 ], [ %42, %51 ], [ %42, %53 ], [ %54, %55 ] - %57 = phi ptr [ %.pre.i, %49 ], [ %43, %51 ], [ %43, %53 ], [ %43, %55 ] +_ZNSt6vectorIfSaIfEE6resizeEm.exit.i: ; preds = %55, %53, %51, %54 + %56 = phi ptr [ %.pre2.i, %54 ], [ %47, %56 ], [ %47, %58 ], [ %54, %60 ] + %57 = phi ptr [ %.pre.i, %54 ], [ %48, %56 ], [ %48, %58 ], [ %48, %60 ] %.not6.i.i.i.i.i = icmp eq ptr %57, %56 br i1 %.not6.i.i.i.i.i, label %_ZN7xgboost7RegTree4FVec4InitEm.exit, label %.lr.ph.i.i.i.i.i .lr.ph.i.i.i.i.i: ; preds = %_ZNSt6vectorIfSaIfEE6resizeEm.exit.i, %.lr.ph.i.i.i.i.i %.07.i.i.i.i.i = phi ptr [ %58, %.lr.ph.i.i.i.i.i ], [ %57, %_ZNSt6vectorIfSaIfEE6resizeEm.exit.i ] - store float 0x7FF8000000000000, ptr %.07.i.i.i.i.i, align 4, !tbaa !300 + store float 0x7FF8000000000000, ptr %.07.i.i.i.i.i, align 4, !tbaa !299 %58 = getelementptr inbounds nuw i8, ptr %.07.i.i.i.i.i, i64 4 %.not.i.i.i.i.i = icmp eq ptr %58, %56 - br i1 %.not.i.i.i.i.i, label %_ZN7xgboost7RegTree4FVec4InitEm.exit, label %.lr.ph.i.i.i.i.i, !llvm.loop !301 + br i1 %.not.i.i.i.i.i, label %_ZN7xgboost7RegTree4FVec4InitEm.exit, label %.lr.ph.i.i.i.i.i, !llvm.loop !300 _ZN7xgboost7RegTree4FVec4InitEm.exit: ; preds = %.lr.ph.i.i.i.i.i, %_ZNSt6vectorIfSaIfEE6resizeEm.exit.i - %59 = getelementptr inbounds nuw i8, ptr %34, i64 24 + %59 = getelementptr inbounds nuw i8, ptr %39, i64 24 store i8 1, ptr %59, align 8, !tbaa !274 ret void @@ -6426,7 +6429,7 @@ define linkonce_odr void @_ZNSt6vectorIN7xgboost4tree9GradStatsESaIS2_EE14_M_fil call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.9) %.sroa.4.8.copyload = load i8, ptr %3, align 8 %.sroa.9.8..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(15) %.sroa.9, ptr noundef nonnull align 1 dereferenceable(15) %.sroa.9.8..sroa_idx, i64 15, i1 false), !tbaa.struct !302 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(15) %.sroa.9, ptr noundef nonnull align 1 dereferenceable(15) %.sroa.9.8..sroa_idx, i64 15, i1 false), !tbaa.struct !301 %15 = ptrtoint ptr %1 to i64 %16 = sub i64 %11, %15 %17 = ashr exact i64 %16, 4 @@ -6446,7 +6449,7 @@ define linkonce_odr void @_ZNSt6vectorIN7xgboost4tree9GradStatsESaIS2_EE14_M_fil %21 = getelementptr inbounds nuw i8, ptr %.sroa.08.012.i.i.i.i.i, i64 16 %22 = getelementptr inbounds nuw i8, ptr %.013.i.i.i.i.i, i64 16 %.not.i.i.i.i.i = icmp eq ptr %21, %9 - br i1 %.not.i.i.i.i.i, label %_ZSt22__uninitialized_move_aIPN7xgboost4tree9GradStatsES3_SaIS2_EET0_T_S6_S5_RT1_.exit.loopexit, label %.lr.ph.i.i.i.i.i, !llvm.loop !303 + br i1 %.not.i.i.i.i.i, label %_ZSt22__uninitialized_move_aIPN7xgboost4tree9GradStatsES3_SaIS2_EET0_T_S6_S5_RT1_.exit.loopexit, label %.lr.ph.i.i.i.i.i, !llvm.loop !302 _ZSt22__uninitialized_move_aIPN7xgboost4tree9GradStatsES3_SaIS2_EET0_T_S6_S5_RT1_.exit.loopexit: ; preds = %.lr.ph.i.i.i.i.i %.pre = load ptr, ptr %8, align 8, !tbaa !100 @@ -6477,10 +6480,10 @@ _ZSt13move_backwardIPN7xgboost4tree9GradStatsES3_ET0_T_S5_S4_.exit: ; preds = %2 %.06.i.i.i = phi ptr [ %32, %.lr.ph.i.i.i ], [ %1, %_ZSt13move_backwardIPN7xgboost4tree9GradStatsES3_ET0_T_S5_S4_.exit ] store i8 %.sroa.4.8.copyload, ptr %.06.i.i.i, align 8 %.sroa.9.8..06.i.i.i.sroa_idx = getelementptr inbounds nuw i8, ptr %.06.i.i.i, i64 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(15) %.sroa.9.8..06.i.i.i.sroa_idx, ptr noundef nonnull align 1 dereferenceable(15) %.sroa.9, i64 15, i1 false), !tbaa.struct !302 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(15) %.sroa.9.8..06.i.i.i.sroa_idx, ptr noundef nonnull align 1 dereferenceable(15) %.sroa.9, i64 15, i1 false), !tbaa.struct !301 %32 = getelementptr inbounds nuw i8, ptr %.06.i.i.i, i64 16 %.not.i.i.i = icmp eq ptr %32, %31 - br i1 %.not.i.i.i, label %_ZSt4fillIPN7xgboost4tree9GradStatsES2_EvT_S4_RKT0_.exit, label %.lr.ph.i.i.i, !llvm.loop !297 + br i1 %.not.i.i.i, label %_ZSt4fillIPN7xgboost4tree9GradStatsES2_EvT_S4_RKT0_.exit, label %.lr.ph.i.i.i, !llvm.loop !303 33: ; preds = %14 %34 = sub nuw i64 %2, %17 @@ -6492,7 +6495,7 @@ _ZSt13move_backwardIPN7xgboost4tree9GradStatsES3_ET0_T_S5_S4_.exit: ; preds = %2 %.068.i.i.i.i = phi i64 [ %35, %.lr.ph.i.i.i.i ], [ %34, %33 ] store i8 %.sroa.4.8.copyload, ptr %.09.i.i.i.i, align 8 %.sroa.9.8..09.i.i.i.i.sroa_idx = getelementptr inbounds nuw i8, ptr %.09.i.i.i.i, i64 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(15) %.sroa.9.8..09.i.i.i.i.sroa_idx, ptr noundef nonnull align 1 dereferenceable(15) %.sroa.9, i64 15, i1 false), !tbaa.struct !302 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(15) %.sroa.9.8..09.i.i.i.i.sroa_idx, ptr noundef nonnull align 1 dereferenceable(15) %.sroa.9, i64 15, i1 false), !tbaa.struct !301 %35 = add i64 %.068.i.i.i.i, -1 %36 = getelementptr inbounds nuw i8, ptr %.09.i.i.i.i, i64 16 %.not.i.i.i.i = icmp eq i64 %35, 0 @@ -6516,7 +6519,7 @@ _ZSt22__uninitialized_move_aIPN7xgboost4tree9GradStatsES3_SaIS2_EET0_T_S6_S5_RT1 %39 = getelementptr inbounds nuw i8, ptr %.sroa.08.012.i.i.i.i.i72, i64 16 %40 = getelementptr inbounds nuw i8, ptr %.013.i.i.i.i.i71, i64 16 %.not.i.i.i.i.i73 = icmp eq ptr %39, %9 - br i1 %.not.i.i.i.i.i73, label %_ZSt22__uninitialized_move_aIPN7xgboost4tree9GradStatsES3_SaIS2_EET0_T_S6_S5_RT1_.exit75, label %.lr.ph.i.i.i.i.i70, !llvm.loop !303 + br i1 %.not.i.i.i.i.i73, label %_ZSt22__uninitialized_move_aIPN7xgboost4tree9GradStatsES3_SaIS2_EET0_T_S6_S5_RT1_.exit75, label %.lr.ph.i.i.i.i.i70, !llvm.loop !302 _ZSt22__uninitialized_move_aIPN7xgboost4tree9GradStatsES3_SaIS2_EET0_T_S6_S5_RT1_.exit75: ; preds = %.lr.ph.i.i.i.i.i70 %41 = load ptr, ptr %8, align 8, !tbaa !100 @@ -6528,10 +6531,10 @@ _ZSt22__uninitialized_move_aIPN7xgboost4tree9GradStatsES3_SaIS2_EET0_T_S6_S5_RT1 %.06.i.i.i78 = phi ptr [ %43, %.lr.ph.i.i.i77 ], [ %1, %_ZSt22__uninitialized_move_aIPN7xgboost4tree9GradStatsES3_SaIS2_EET0_T_S6_S5_RT1_.exit75 ] store i8 %.sroa.4.8.copyload, ptr %.06.i.i.i78, align 8 %.sroa.9.8..06.i.i.i78.sroa_idx = getelementptr inbounds nuw i8, ptr %.06.i.i.i78, i64 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(15) %.sroa.9.8..06.i.i.i78.sroa_idx, ptr noundef nonnull align 1 dereferenceable(15) %.sroa.9, i64 15, i1 false), !tbaa.struct !302 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(15) %.sroa.9.8..06.i.i.i78.sroa_idx, ptr noundef nonnull align 1 dereferenceable(15) %.sroa.9, i64 15, i1 false), !tbaa.struct !301 %43 = getelementptr inbounds nuw i8, ptr %.06.i.i.i78, i64 16 %.not.i.i.i79 = icmp eq ptr %43, %9 - br i1 %.not.i.i.i79, label %_ZSt4fillIPN7xgboost4tree9GradStatsES2_EvT_S4_RKT0_.exit, label %.lr.ph.i.i.i77, !llvm.loop !297 + br i1 %.not.i.i.i79, label %_ZSt4fillIPN7xgboost4tree9GradStatsES2_EvT_S4_RKT0_.exit, label %.lr.ph.i.i.i77, !llvm.loop !303 _ZSt4fillIPN7xgboost4tree9GradStatsES2_EvT_S4_RKT0_.exit: ; preds = %.lr.ph.i.i.i77, %.lr.ph.i.i.i, %_ZSt22__uninitialized_move_aIPN7xgboost4tree9GradStatsES3_SaIS2_EET0_T_S6_S5_RT1_.exit75.thread call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.9) @@ -6591,7 +6594,7 @@ _ZSt24__uninitialized_fill_n_aIPN7xgboost4tree9GradStatsEmS2_S2_ET_S4_T0_RKT1_RS %65 = getelementptr inbounds nuw i8, ptr %.sroa.08.012.i.i.i.i.i91, i64 16 %66 = getelementptr inbounds nuw i8, ptr %.013.i.i.i.i.i90, i64 16 %.not.i.i.i.i.i92 = icmp eq ptr %65, %1 - br i1 %.not.i.i.i.i.i92, label %_ZSt34__uninitialized_move_if_noexcept_aIPN7xgboost4tree9GradStatsES3_SaIS2_EET0_T_S6_S5_RT1_.exit, label %.lr.ph.i.i.i.i.i89, !llvm.loop !303 + br i1 %.not.i.i.i.i.i92, label %_ZSt34__uninitialized_move_if_noexcept_aIPN7xgboost4tree9GradStatsES3_SaIS2_EET0_T_S6_S5_RT1_.exit, label %.lr.ph.i.i.i.i.i89, !llvm.loop !302 _ZSt34__uninitialized_move_if_noexcept_aIPN7xgboost4tree9GradStatsES3_SaIS2_EET0_T_S6_S5_RT1_.exit: ; preds = %.lr.ph.i.i.i.i.i89, %_ZSt24__uninitialized_fill_n_aIPN7xgboost4tree9GradStatsEmS2_S2_ET_S4_T0_RKT1_RSaIT2_E.exit87 %.0.lcssa.i.i.i.i.i93 = phi ptr [ %61, %_ZSt24__uninitialized_fill_n_aIPN7xgboost4tree9GradStatsEmS2_S2_ET_S4_T0_RKT1_RSaIT2_E.exit87 ], [ %66, %.lr.ph.i.i.i.i.i89 ] @@ -6606,7 +6609,7 @@ _ZSt34__uninitialized_move_if_noexcept_aIPN7xgboost4tree9GradStatsES3_SaIS2_EET0 %68 = getelementptr inbounds nuw i8, ptr %.sroa.08.012.i.i.i.i.i97, i64 16 %69 = getelementptr inbounds nuw i8, ptr %.013.i.i.i.i.i96, i64 16 %.not.i.i.i.i.i98 = icmp eq ptr %68, %9 - br i1 %.not.i.i.i.i.i98, label %_ZSt34__uninitialized_move_if_noexcept_aIPN7xgboost4tree9GradStatsES3_SaIS2_EET0_T_S6_S5_RT1_.exit100, label %.lr.ph.i.i.i.i.i95, !llvm.loop !303 + br i1 %.not.i.i.i.i.i98, label %_ZSt34__uninitialized_move_if_noexcept_aIPN7xgboost4tree9GradStatsES3_SaIS2_EET0_T_S6_S5_RT1_.exit100, label %.lr.ph.i.i.i.i.i95, !llvm.loop !302 _ZSt34__uninitialized_move_if_noexcept_aIPN7xgboost4tree9GradStatsES3_SaIS2_EET0_T_S6_S5_RT1_.exit100: ; preds = %.lr.ph.i.i.i.i.i95, %_ZSt34__uninitialized_move_if_noexcept_aIPN7xgboost4tree9GradStatsES3_SaIS2_EET0_T_S6_S5_RT1_.exit %.0.lcssa.i.i.i.i.i99 = phi ptr [ %67, %_ZSt34__uninitialized_move_if_noexcept_aIPN7xgboost4tree9GradStatsES3_SaIS2_EET0_T_S6_S5_RT1_.exit ], [ %69, %.lr.ph.i.i.i.i.i95 ] @@ -6658,7 +6661,7 @@ define linkonce_odr void @_ZNSt6vectorIfSaIfEE17_M_default_appendEm(ptr noundef br i1 %.not28, label %24, label %19 19: ; preds = %3 - store float 0.000000e+00, ptr %5, align 4, !tbaa !300 + store float 0.000000e+00, ptr %5, align 4, !tbaa !299 %20 = getelementptr i8, ptr %5, i64 4 %21 = add nsw i64 %1, -1 %22 = icmp eq i64 %21, 0 @@ -6666,7 +6669,7 @@ define linkonce_odr void @_ZNSt6vectorIfSaIfEE17_M_default_appendEm(ptr noundef _ZSt6fill_nIPfmfET_S1_T0_RKT1_.exit.loopexit.i.i.i: ; preds = %19 %.idx.i.i.i.i.i = shl nuw nsw i64 %21, 2 - tail call void @llvm.memset.p0.i64(ptr align 4 %20, i8 0, i64 %.idx.i.i.i.i.i, i1 false), !tbaa !300 + tail call void @llvm.memset.p0.i64(ptr align 4 %20, i8 0, i64 %.idx.i.i.i.i.i, i1 false), !tbaa !299 %23 = getelementptr inbounds nuw i8, ptr %20, i64 %.idx.i.i.i.i.i br label %_ZSt27__uninitialized_default_n_aIPfmfET_S1_T0_RSaIT1_E.exit @@ -6690,7 +6693,7 @@ _ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit: ; preds = %24 %29 = shl nuw nsw i64 %28, 2 %30 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %29) #35 %31 = getelementptr inbounds nuw i8, ptr %30, i64 %9 - store float 0.000000e+00, ptr %31, align 4, !tbaa !300 + store float 0.000000e+00, ptr %31, align 4, !tbaa !299 %32 = add nsw i64 %1, -1 %33 = icmp eq i64 %32, 0 br i1 %33, label %_ZSt27__uninitialized_default_n_aIPfmfET_S1_T0_RSaIT1_E.exit33, label %_ZSt6fill_nIPfmfET_S1_T0_RKT1_.exit.loopexit.i.i.i30 @@ -6698,7 +6701,7 @@ _ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit: ; preds = %24 _ZSt6fill_nIPfmfET_S1_T0_RKT1_.exit.loopexit.i.i.i30: ; preds = %_ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit %34 = getelementptr i8, ptr %31, i64 4 %.idx.i.i.i.i.i31 = shl nuw nsw i64 %32, 2 - tail call void @llvm.memset.p0.i64(ptr align 4 %34, i8 0, i64 %.idx.i.i.i.i.i31, i1 false), !tbaa !300 + tail call void @llvm.memset.p0.i64(ptr align 4 %34, i8 0, i64 %.idx.i.i.i.i.i31, i1 false), !tbaa !299 br label %_ZSt27__uninitialized_default_n_aIPfmfET_S1_T0_RSaIT1_E.exit33 _ZSt27__uninitialized_default_n_aIPfmfET_S1_T0_RSaIT1_E.exit33: ; preds = %_ZSt6fill_nIPfmfET_S1_T0_RKT1_.exit.loopexit.i.i.i30, %_ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit @@ -7744,7 +7747,7 @@ _ZNK7xgboost18HostSparsePageViewixEm.exit: ; preds = %2 %32 = load i32, ptr %29, align 4, !tbaa !341 %33 = zext i32 %32 to i64 %34 = getelementptr inbounds nuw float, ptr %28, i64 %33 - store float %31, ptr %34, align 4, !tbaa !300 + store float %31, ptr %34, align 4, !tbaa !299 %35 = add nuw i64 %.011.i, 1 %exitcond.not.i = icmp eq i64 %35, %17 br i1 %exitcond.not.i, label %_ZN7xgboost7RegTree4FVec4FillERKNS_6common4SpanIKNS_5EntryELm18446744073709551615EEE.exit, label %.lr.ph.i, !llvm.loop !342 @@ -7790,10 +7793,10 @@ _ZN7xgboost7RegTree4FVec4FillERKNS_6common4SpanIKNS_5EntryELm1844674407370955161 .lr.ph.i.i.i.i.i.i: ; preds = %._crit_edge, %.lr.ph.i.i.i.i.i.i %.07.i.i.i.i.i.i = phi ptr [ %62, %.lr.ph.i.i.i.i.i.i ], [ %28, %._crit_edge ] - store float 0x7FF8000000000000, ptr %.07.i.i.i.i.i.i, align 4, !tbaa !300 + store float 0x7FF8000000000000, ptr %.07.i.i.i.i.i.i, align 4, !tbaa !299 %62 = getelementptr inbounds nuw i8, ptr %.07.i.i.i.i.i.i, i64 4 %.not.i.i.i.i.i.i = icmp eq ptr %62, %37 - br i1 %.not.i.i.i.i.i.i, label %_ZN7xgboost7RegTree4FVec4DropEv.exit, label %.lr.ph.i.i.i.i.i.i, !llvm.loop !301 + br i1 %.not.i.i.i.i.i.i, label %_ZN7xgboost7RegTree4FVec4DropEv.exit, label %.lr.ph.i.i.i.i.i.i, !llvm.loop !300 _ZN7xgboost7RegTree4FVec4DropEv.exit: ; preds = %.lr.ph.i.i.i.i.i.i, %._crit_edge store i8 1, ptr %43, align 8, !tbaa !274 @@ -7861,7 +7864,7 @@ _ZN7xgboost7RegTree4FVec4DropEv.exit: ; preds = %.lr.ph.i.i.i.i.i.i, %108 = and i32 %107, 2147483647 %109 = zext nneg i32 %108 to i64 %110 = getelementptr inbounds nuw float, ptr %28, i64 %109 - %111 = load float, ptr %110, align 4, !tbaa !300 + %111 = load float, ptr %110, align 4, !tbaa !299 %112 = fcmp uno float %111, 0.000000e+00 br i1 %112, label %118, label %_ZN7xgboost6common5IsCatENS0_4SpanIKNS_11FeatureTypeELm18446744073709551615EEEj.exit.thread.i.us @@ -7911,7 +7914,7 @@ _ZN7xgboost9predictor11GetNextNodeILb1ELb1EEEiRKNS_7RegTree4NodeEifbRKNS2_22Cate %140 = and i32 %139, 2147483647 %141 = zext nneg i32 %140 to i64 %142 = getelementptr inbounds nuw float, ptr %28, i64 %141 - %143 = load float, ptr %142, align 4, !tbaa !300 + %143 = load float, ptr %142, align 4, !tbaa !299 %144 = fcmp uno float %143, 0.000000e+00 br i1 %144, label %145, label %150 @@ -9584,12 +9587,12 @@ attributes #38 = { nounwind willreturn memory(read) } !294 = !{!295, !84, i64 0} !295 = !{!"_ZTSZN7xgboost4tree13TreeRefresher6UpdateEPKNS0_10TrainParamEPNS_6linalg6TensorINS_6detail20GradientPairInternalIfEELi2EEEPNS_7DMatrixENS_6common4SpanINS_16HostDeviceVectorIiEELm18446744073709551615EEERKSt6vectorIPNS_7RegTreeESaISL_EEEUlvE_", !84, i64 0, !86, i64 8, !88, i64 16} !296 = !{!295, !86, i64 8} -!297 = distinct !{!297, !19} -!298 = !{!295, !88, i64 16} -!299 = !{!118, !64, i64 24} -!300 = !{!204, !204, i64 0} -!301 = distinct !{!301, !19} -!302 = !{i64 0, i64 7, !198, i64 7, i64 8, !198} +!297 = !{!295, !88, i64 16} +!298 = !{!118, !64, i64 24} +!299 = !{!204, !204, i64 0} +!300 = distinct !{!300, !19} +!301 = !{i64 0, i64 7, !198, i64 7, i64 8, !198} +!302 = distinct !{!302, !19} !303 = distinct !{!303, !19} !304 = distinct !{!304, !19} !305 = !{!306, !165, i64 16} diff --git a/bench/z3/optimized/euf_proof_checker.ll b/bench/z3/optimized/euf_proof_checker.ll index 12c9152d24e..ba83fc7f6a4 100644 --- a/bench/z3/optimized/euf_proof_checker.ll +++ b/bench/z3/optimized/euf_proof_checker.ll @@ -19274,11 +19274,11 @@ _ZN6vectorISt4pairIP4exprS2_ELb0EjE7destroyEv.exit: ; preds = %_ZSt20uninitializ ; Function Attrs: mustprogress uwtable define linkonce_odr hidden noundef i32 @_ZN3euf17eq_theory_checker7expr2idEP4expr(ptr noundef nonnull align 8 dereferenceable(100) %0, ptr noundef %1) local_unnamed_addr #3 comdat align 2 { - %3 = alloca %"struct.std::pair.138", align 4 + %3 = alloca <2 x i32>, align 8 %4 = getelementptr inbounds nuw i8, ptr %0, i64 72 %5 = load i32, ptr %1, align 4, !tbaa !105 call void @llvm.lifetime.start.p0(ptr nonnull %3) - store i32 0, ptr %3, align 4, !tbaa !536 + store i32 0, ptr %3, align 8, !tbaa !536 %.4..4..4..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 4 store i32 0, ptr %.4..4..4..sroa_idx, align 4, !tbaa !538 %6 = load ptr, ptr %4, align 8, !tbaa !411 @@ -19376,7 +19376,7 @@ _ZNK6vectorISt4pairIjjELb0EjE8capacityEv.exit.thread.i.i: ; preds = %_ZNK6vector br label %_ZN6vectorISt4pairIjjELb0EjE4setxEjRKS1_S4_.exit _ZN6vectorISt4pairIjjELb0EjE4setxEjRKS1_S4_.exit: ; preds = %_ZNK6vectorISt4pairIjjELb0EjE4sizeEv.exit.i6, %28, %34, %.lr.ph.preheader.i.i - %41 = phi ptr [ %.pre.i, %.lr.ph.preheader.i.i ], [ %29, %34 ], [ %22, %28 ], [ %22, %_ZNK6vectorISt4pairIjjELb0EjE4sizeEv.exit.i6 ] + %41 = phi ptr [ %.pre.i, %.lr.ph.preheader.i.i ], [ %29, %33 ], [ %22, %27 ], [ %22, %_ZNK6vectorISt4pairIjjELb0EjE4sizeEv.exit.i6 ] %42 = zext i32 %20 to i64 %43 = getelementptr inbounds nuw %"struct.std::pair.138", ptr %41, i64 %42 store i32 %21, ptr %43, align 4, !tbaa !536 @@ -19446,7 +19446,7 @@ _ZNK6vectorIP4exprLb0EjE8capacityEv.exit.thread.i.i: ; preds = %_ZNK6vectorIP4ex br label %_ZN6vectorIP4exprLb0EjE4setxEjRKS1_S4_.exit _ZN6vectorIP4exprLb0EjE4setxEjRKS1_S4_.exit: ; preds = %.lr.ph.preheader.i.i10, %_ZNK6vectorIP4exprLb0EjE4sizeEv.exit.i, %52, %58 - %65 = phi ptr [ %46, %_ZNK6vectorIP4exprLb0EjE4sizeEv.exit.i ], [ %53, %58 ], [ %46, %52 ], [ %53, %.lr.ph.preheader.i.i10 ] + %65 = phi ptr [ %46, %_ZNK6vectorIP4exprLb0EjE4sizeEv.exit.i ], [ %53, %57 ], [ %46, %51 ], [ %53, %.lr.ph.preheader.i.i10 ] %66 = zext i32 %19 to i64 %67 = getelementptr inbounds nuw ptr, ptr %65, i64 %66 store ptr %1, ptr %67, align 8, !tbaa !90 diff --git a/bench/z3/optimized/seq_axioms.ll b/bench/z3/optimized/seq_axioms.ll index c43648c30b0..ae8450029a1 100644 --- a/bench/z3/optimized/seq_axioms.ll +++ b/bench/z3/optimized/seq_axioms.ll @@ -107,8 +107,7 @@ declare ptr @llvm.invariant.start.p0(i64 immarg, ptr captures(none)) #3 define hidden void @_ZN3smt10seq_axiomsC2ERNS_6theoryER11th_rewriter(ptr noundef nonnull align 8 dereferenceable(1240) initializes((0, 24)) %0, ptr noundef nonnull align 8 dereferenceable(53) %1, ptr noundef nonnull align 8 dereferenceable(16) %2) unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 { %.sroa.0.i.i.i.i20 = alloca { i64, i64 }, align 8 %4 = alloca %"class.std::function.4", align 8 - %.sroa.0.i.i.i.i13 = alloca { i64, i64 }, align 8 - %5 = alloca %"class.std::function.1", align 8 + %.sroa.0.i.i.i.i13 = alloca %"class.std::function.1", align 16 %.sroa.0.i.i.i.i = alloca { i64, i64 }, align 8 %6 = alloca %"class.std::function", align 8 %7 = alloca %class.symbol, align 8 @@ -248,7 +247,7 @@ _ZNSt8functionIFvRK10ref_vectorI4expr11ast_managerEEEC2ERKS7_.exit.i.i: ; preds call void @llvm.lifetime.start.p0(ptr nonnull %5) %72 = getelementptr inbounds nuw i8, ptr %5, i64 16 %73 = getelementptr inbounds nuw i8, ptr %5, i64 24 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %5, i8 0, i64 32, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %5, i8 0, i64 32, i1 false) br label %83 74: ; preds = %_ZNSt8functionIFvRK10ref_vectorI4expr11ast_managerEEEC2ERKS7_.exit.i.i @@ -269,7 +268,7 @@ _ZNSt8functionIFvRK10ref_vectorI4expr11ast_managerEEEC2ERKS7_.exit.i.i: ; preds call void @llvm.lifetime.start.p0(ptr nonnull %5) %81 = getelementptr inbounds nuw i8, ptr %5, i64 16 %82 = getelementptr inbounds nuw i8, ptr %5, i64 24 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %5, i8 0, i64 32, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %5, i8 0, i64 32, i1 false) %.not.i.i.not.i.i.i14 = icmp eq ptr %.pre, null br i1 %.not.i.i.not.i.i.i14, label %_ZNSt8functionIFvP4exprEEC2ERKS3_.exit.i.i, label %83 @@ -284,6 +283,7 @@ _ZNSt8functionIFvRK10ref_vectorI4expr11ast_managerEEEC2ERKS7_.exit.i.i: ; preds 89: ; preds = %83 %90 = load ptr, ptr %58, align 8, !tbaa !77 %91 = load ptr, ptr %57, align 8, !tbaa !76 + %.sroa.0.i.i.i.i13.sroa.0.0.copyload.pre = load <2 x i64>, ptr %5, align 16, !tbaa !80 br label %_ZNSt8functionIFvP4exprEEC2ERKS3_.exit.i.i 92: ; preds = %83 @@ -305,16 +305,14 @@ _ZNSt8functionIFvRK10ref_vectorI4expr11ast_managerEEEC2ERKS7_.exit.i.i: ; preds unreachable _ZNSt8functionIFvP4exprEEC2ERKS3_.exit.i.i: ; preds = %89, %79 + %.sroa.0.i.i.i.i13.sroa.0.0.copyload = phi <2 x i64> [ zeroinitializer, %79 ], [ %.sroa.0.i.i.i.i13.sroa.0.0.copyload.pre, %89 ] %100 = phi ptr [ %82, %79 ], [ %84, %89 ] %101 = phi ptr [ %81, %79 ], [ %85, %89 ] %102 = phi ptr [ %80, %79 ], [ %86, %89 ] %103 = phi ptr [ null, %79 ], [ %90, %89 ] %104 = phi ptr [ null, %79 ], [ %91, %89 ] - call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.0.i.i.i.i13) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i.i13, ptr noundef nonnull align 8 dereferenceable(32) %5, i64 16, i1 false), !tbaa.struct !79 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(32) %102, i64 16, i1 false), !tbaa.struct !79 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %102, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.i.i.i.i13, i64 16, i1 false), !tbaa.struct !79 - call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.0.i.i.i.i13) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %.sroa.0.i.i.i.i13, ptr noundef nonnull align 8 dereferenceable(32) %102, i64 16, i1 false), !tbaa.struct !79 + store <2 x i64> %.sroa.0.i.i.i.i13.sroa.0.0.copyload, ptr %102, align 8, !tbaa !80 %105 = getelementptr inbounds nuw i8, ptr %0, i64 1120 %106 = load ptr, ptr %105, align 8, !tbaa !81 store ptr %106, ptr %101, align 8, !tbaa !81 diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c8d0fce0bf7..2bcca0b44e9 100755 --- a/scripts/setup_pre_commit_patch.sh +++ b/scripts/setup_pre_commit_patch.sh @@ -2,7 +2,7 @@ set -euo pipefail shopt -s inherit_errexit -export GITHUB_PATCH_ID="/llvm-project/commit/" +export GITHUB_PATCH_ID=llvm/llvm-project/pull/165159 export COMPTIME_MODE=0 export STAT_MODE=0 export STAT_NAME=""