diff --git a/bench/abc/optimized/abcOrchestration.ll b/bench/abc/optimized/abcOrchestration.ll index d22bde55a1d..eb97124e0cb 100644 --- a/bench/abc/optimized/abcOrchestration.ll +++ b/bench/abc/optimized/abcOrchestration.ll @@ -6705,55 +6705,56 @@ define noalias noundef ptr @Abc_ManResubQuit2_1(ptr noundef readonly captures(no %26 = trunc i64 %11 to i32 %27 = xor i32 %25, %26 %28 = and i32 %27, 1 - %29 = trunc i64 %15 to i32 - %30 = and i32 %29, 1 - %.not = icmp eq i32 %30, 0 - %31 = and i64 %19, 1 - %.not41 = icmp eq i64 %31, 0 - %or.cond = or i1 %.not, %.not41 - %32 = getelementptr inbounds nuw i8, ptr %17, i64 20 - %33 = load i32, ptr %32, align 4 - %34 = lshr i32 %33, 7 - br i1 %or.cond, label %Dec_GraphAddNodeAnd.exit, label %Dec_GraphAddNodeOr.exit + %29 = and i64 %15, 1 + %30 = and i64 %29, %19 + %.not = icmp eq i64 %30, 0 + br i1 %.not, label %Dec_GraphAddNodeAnd.exit, label %Dec_GraphAddNodeOr.exit Dec_GraphAddNodeOr.exit: ; preds = %5 - %35 = and i32 %34, 1 - %36 = getelementptr inbounds nuw i8, ptr %21, i64 20 - %37 = load i32, ptr %36, align 4 - %38 = lshr i32 %37, 7 - %39 = and i32 %38, 1 - %40 = getelementptr inbounds nuw i8, ptr %9, i64 80 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %40, i8 0, i64 16, i1 false) - %41 = shl nuw nsw i32 %35, 15 - %42 = shl nuw nsw i32 %39, 16 - %43 = or disjoint i32 %42, %41 - %44 = or disjoint i32 %43, 16384 - %45 = xor i32 %35, 3 - %46 = xor i32 %39, 5 - br label %61 + %31 = getelementptr inbounds nuw i8, ptr %17, i64 20 + %32 = load i32, ptr %31, align 4 + %33 = lshr i32 %32, 7 + %34 = and i32 %33, 1 + %35 = getelementptr inbounds nuw i8, ptr %21, i64 20 + %36 = load i32, ptr %35, align 4 + %37 = lshr i32 %36, 7 + %41 = and i32 %37, 1 + %42 = getelementptr inbounds nuw i8, ptr %9, i64 80 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %42, i8 0, i64 16, i1 false) + %40 = shl nuw nsw i32 %34, 15 + %41 = shl nuw nsw i32 %38, 16 + %42 = or disjoint i32 %41, %40 + %43 = or disjoint i32 %42, 16384 + %44 = xor i32 %34, 3 + %45 = xor i32 %38, 5 + br label %64 Dec_GraphAddNodeAnd.exit: ; preds = %5 - %47 = xor i32 %34, %29 - %48 = and i32 %47, 1 - %49 = or disjoint i32 %48, 2 - %50 = getelementptr inbounds nuw i8, ptr %21, i64 20 - %51 = load i32, ptr %50, align 4 - %52 = lshr i32 %51, 7 - %53 = trunc i64 %19 to i32 - %54 = xor i32 %52, %53 - %55 = and i32 %54, 1 - %56 = or disjoint i32 %55, 4 - %57 = getelementptr inbounds nuw i8, ptr %9, i64 80 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %57, i8 0, i64 16, i1 false) - %58 = shl nuw nsw i32 %48, 15 - %59 = shl nuw nsw i32 %55, 16 - %60 = or disjoint i32 %59, %58 - br label %61 - -61: ; preds = %Dec_GraphAddNodeAnd.exit, %Dec_GraphAddNodeOr.exit - %.sink68 = phi i32 [ %49, %Dec_GraphAddNodeAnd.exit ], [ %45, %Dec_GraphAddNodeOr.exit ] - %.sink67 = phi i32 [ %56, %Dec_GraphAddNodeAnd.exit ], [ %46, %Dec_GraphAddNodeOr.exit ] - %.sink = phi i32 [ %60, %Dec_GraphAddNodeAnd.exit ], [ %44, %Dec_GraphAddNodeOr.exit ] + %46 = trunc i64 %15 to i32 + %47 = getelementptr inbounds nuw i8, ptr %17, i64 20 + %51 = load i32, ptr %47, align 4 + %49 = lshr i32 %51, 7 + %52 = xor i32 %49, %46 + %51 = and i32 %50, 1 + %52 = or disjoint i32 %51, 2 + %55 = getelementptr inbounds nuw i8, ptr %21, i64 20 + %54 = load i32, ptr %53, align 4 + %55 = lshr i32 %54, 7 + %56 = trunc i64 %19 to i32 + %57 = xor i32 %57, %56 + %58 = and i32 %57, 1 + %59 = or disjoint i32 %58, 4 + %60 = getelementptr inbounds nuw i8, ptr %9, i64 80 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %60, i8 0, i64 16, i1 false) + %61 = shl nuw nsw i32 %51, 15 + %62 = shl nuw nsw i32 %58, 16 + %63 = or disjoint i32 %64, %61 + br label %64 + +64: ; preds = %Dec_GraphAddNodeAnd.exit, %Dec_GraphAddNodeOr.exit + %.sink68 = phi i32 [ %52, %Dec_GraphAddNodeAnd.exit ], [ %44, %Dec_GraphAddNodeOr.exit ] + %.sink67 = phi i32 [ %59, %Dec_GraphAddNodeAnd.exit ], [ %45, %Dec_GraphAddNodeOr.exit ] + %.sink = phi i32 [ %63, %Dec_GraphAddNodeAnd.exit ], [ %43, %Dec_GraphAddNodeOr.exit ] %.sroa.015.0 = phi i32 [ 6, %Dec_GraphAddNodeAnd.exit ], [ 7, %Dec_GraphAddNodeOr.exit ] %62 = getelementptr inbounds nuw i8, ptr %9, i64 72 store i32 %.sink68, ptr %62, align 8 @@ -6768,7 +6769,7 @@ Dec_GraphAddNodeAnd.exit: ; preds = %5 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %66, i8 0, i64 16, i1 false) br i1 %.not42, label %Dec_GraphAddNodeAnd.exit65, label %Dec_GraphAddNodeOr.exit58 -Dec_GraphAddNodeOr.exit58: ; preds = %61 +Dec_GraphAddNodeOr.exit58: ; preds = %64 %67 = getelementptr inbounds nuw i8, ptr %9, i64 100 %68 = getelementptr inbounds nuw i8, ptr %9, i64 112 %69 = shl nuw nsw i32 %28, 15 @@ -6783,7 +6784,7 @@ Dec_GraphAddNodeOr.exit58: ; preds = %61 store i32 %75, ptr %67, align 4 br label %82 -Dec_GraphAddNodeAnd.exit65: ; preds = %61 +Dec_GraphAddNodeAnd.exit65: ; preds = %64 store i32 %28, ptr %65, align 8, !tbaa !66 %76 = getelementptr inbounds nuw i8, ptr %9, i64 100 store i32 %.sroa.015.0, ptr %76, align 4, !tbaa !66 @@ -6846,47 +6847,41 @@ define noalias noundef ptr @Abc_ManResubQuit3_1(ptr noundef readonly captures(no %26 = inttoptr i64 %25 to ptr %27 = getelementptr inbounds nuw i8, ptr %10, i64 80 store ptr %26, ptr %27, align 8, !tbaa !66 - %28 = trunc i64 %12 to i32 - %29 = and i32 %28, 1 - %.not = icmp eq i32 %29, 0 - %30 = and i64 %16, 1 - %.not80 = icmp eq i64 %30, 0 - %or.cond = or i1 %.not, %.not80 - %31 = getelementptr inbounds nuw i8, ptr %14, i64 20 - %32 = load i32, ptr %31, align 4 - %33 = lshr i32 %32, 7 - br i1 %or.cond, label %Dec_GraphAddNodeAnd.exit109, label %Dec_GraphAddNodeOr.exit + %28 = and i64 %12, 1 + %29 = and i64 %28, %16 + %.not = icmp eq i64 %29, 0 + br i1 %.not, label %Dec_GraphAddNodeAnd.exit109, label %Dec_GraphAddNodeOr.exit Dec_GraphAddNodeOr.exit: ; preds = %6 - %34 = and i32 %33, 1 - %35 = getelementptr inbounds nuw i8, ptr %18, i64 20 - %36 = load i32, ptr %35, align 4 - %37 = lshr i32 %36, 7 - %38 = and i32 %37, 1 - %39 = getelementptr inbounds nuw i8, ptr %10, i64 96 - %40 = getelementptr inbounds nuw i8, ptr %10, i64 104 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %40, i8 0, i64 16, i1 false) - %41 = getelementptr inbounds nuw i8, ptr %10, i64 100 - %42 = getelementptr inbounds nuw i8, ptr %10, i64 112 - %43 = shl nuw nsw i32 %34, 15 - %44 = shl nuw nsw i32 %38, 16 - %45 = or disjoint i32 %44, %43 - %46 = or disjoint i32 %45, 16384 - store i32 %46, ptr %42, align 8 - %47 = xor i32 %34, 1 - store i32 %47, ptr %39, align 8 - %48 = xor i32 %38, 3 - store i32 %48, ptr %41, align 4 - %49 = trunc i64 %20 to i32 - %50 = and i32 %49, 1 - %.not83 = icmp eq i32 %50, 0 - %51 = and i64 %24, 1 - %.not84 = icmp eq i64 %51, 0 - %or.cond140 = or i1 %.not83, %.not84 + %30 = getelementptr inbounds nuw i8, ptr %14, i64 20 + %31 = load i32, ptr %30, align 4 + %32 = lshr i32 %31, 7 + %33 = and i32 %32, 1 + %34 = getelementptr inbounds nuw i8, ptr %18, i64 20 + %35 = load i32, ptr %34, align 4 + %36 = lshr i32 %35, 7 + %37 = and i32 %36, 1 + %41 = getelementptr inbounds nuw i8, ptr %10, i64 96 + %42 = getelementptr inbounds nuw i8, ptr %10, i64 104 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %39, i8 0, i64 16, i1 false) + %40 = getelementptr inbounds nuw i8, ptr %10, i64 100 + %41 = getelementptr inbounds nuw i8, ptr %10, i64 112 + %42 = shl nuw nsw i32 %33, 15 + %43 = shl nuw nsw i32 %37, 16 + %44 = or disjoint i32 %43, %42 + %45 = or disjoint i32 %44, 16384 + store i32 %45, ptr %41, align 8 + %46 = xor i32 %33, 1 + store i32 %46, ptr %38, align 8 + %47 = xor i32 %37, 3 + store i32 %47, ptr %40, align 4 + %51 = and i64 %20, 1 + %49 = and i64 %51, %24 + %or.cond140.not.not = icmp eq i64 %49, 0 %52 = getelementptr inbounds nuw i8, ptr %26, i64 20 %53 = load i32, ptr %52, align 4 %54 = lshr i32 %53, 7 - br i1 %or.cond140, label %Dec_GraphAddNodeAnd.exit, label %Dec_GraphAddNodeOr.exit96 + br i1 %or.cond140.not.not, label %Dec_GraphAddNodeAnd.exit, label %Dec_GraphAddNodeOr.exit96 Dec_GraphAddNodeOr.exit96: ; preds = %Dec_GraphAddNodeOr.exit %55 = and i32 %54, 1 @@ -6919,56 +6914,58 @@ Dec_GraphAddNodeAnd.exit: ; preds = %Dec_GraphAddNodeOr. %74 = getelementptr inbounds nuw i8, ptr %22, i64 20 %75 = load i32, ptr %74, align 4 %76 = lshr i32 %75, 7 - %77 = xor i32 %76, %49 - %78 = and i32 %77, 1 - %79 = or disjoint i32 %78, 4 - %80 = getelementptr inbounds nuw i8, ptr %10, i64 120 - %81 = getelementptr inbounds nuw i8, ptr %10, i64 128 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %81, i8 0, i64 16, i1 false) - store i32 %79, ptr %80, align 8, !tbaa !66 - %82 = getelementptr inbounds nuw i8, ptr %10, i64 124 - store i32 %73, ptr %82, align 4, !tbaa !66 - %83 = getelementptr inbounds nuw i8, ptr %10, i64 136 - %84 = shl nuw nsw i32 %78, 15 - %85 = shl nuw nsw i32 %72, 16 - %86 = or disjoint i32 %85, %84 - store i32 %86, ptr %83, align 8 - br label %141 + %75 = trunc i64 %20 to i32 + %76 = xor i32 %74, %75 + %77 = and i32 %76, 1 + %78 = or disjoint i32 %77, 4 + %81 = getelementptr inbounds nuw i8, ptr %10, i64 120 + %80 = getelementptr inbounds nuw i8, ptr %10, i64 128 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %80, i8 0, i64 16, i1 false) + store i32 %78, ptr %81, align 8, !tbaa !66 + %78 = getelementptr inbounds nuw i8, ptr %10, i64 124 + store i32 %68, ptr %81, align 4, !tbaa !66 + %82 = getelementptr inbounds nuw i8, ptr %10, i64 136 + %85 = shl nuw nsw i32 %77, 15 + %84 = shl nuw nsw i32 %70, 16 + %85 = or disjoint i32 %84, %83 + store i32 %85, ptr %82, align 8 + br label %144 Dec_GraphAddNodeAnd.exit109: ; preds = %6 - %87 = xor i32 %33, %28 - %88 = and i32 %87, 1 - %89 = getelementptr inbounds nuw i8, ptr %18, i64 20 - %90 = load i32, ptr %89, align 4 - %91 = lshr i32 %90, 7 - %92 = trunc i64 %16 to i32 - %93 = xor i32 %91, %92 - %94 = and i32 %93, 1 - %95 = or disjoint i32 %94, 2 - %96 = getelementptr inbounds nuw i8, ptr %10, i64 96 - %97 = getelementptr inbounds nuw i8, ptr %10, i64 104 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %97, i8 0, i64 16, i1 false) - store i32 %88, ptr %96, align 8, !tbaa !66 - %98 = getelementptr inbounds nuw i8, ptr %10, i64 100 - store i32 %95, ptr %98, align 4, !tbaa !66 - %99 = getelementptr inbounds nuw i8, ptr %10, i64 112 - %100 = shl nuw nsw i32 %88, 15 - %101 = shl nuw nsw i32 %94, 16 - %102 = or disjoint i32 %101, %100 - store i32 %102, ptr %99, align 8 - %103 = trunc i64 %20 to i32 - %104 = and i32 %103, 1 - %.not81 = icmp eq i32 %104, 0 - %105 = and i64 %24, 1 - %.not82 = icmp eq i64 %105, 0 - %or.cond142 = or i1 %.not81, %.not82 - %106 = getelementptr inbounds nuw i8, ptr %26, i64 20 - %107 = load i32, ptr %106, align 4 - %108 = lshr i32 %107, 7 - br i1 %or.cond142, label %Dec_GraphAddNodeAnd.exit123, label %Dec_GraphAddNodeOr.exit116 + %86 = trunc i64 %12 to i32 + %87 = getelementptr inbounds nuw i8, ptr %14, i64 20 + %88 = load i32, ptr %87, align 4 + %86 = lshr i32 %88, 7 + %90 = xor i32 %89, %86 + %91 = and i32 %90, 1 + %92 = getelementptr inbounds nuw i8, ptr %18, i64 20 + %93 = load i32, ptr %92, align 4 + %94 = lshr i32 %93, 7 + %95 = trunc i64 %16 to i32 + %96 = xor i32 %94, %95 + %97 = and i32 %96, 1 + %98 = or disjoint i32 %97, 2 + %98 = getelementptr inbounds nuw i8, ptr %10, i64 96 + %100 = getelementptr inbounds nuw i8, ptr %10, i64 104 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %100, i8 0, i64 16, i1 false) + store i32 %88, ptr %99, align 8, !tbaa !66 + %101 = getelementptr inbounds nuw i8, ptr %10, i64 100 + store i32 %98, ptr %101, align 4, !tbaa !66 + %102 = getelementptr inbounds nuw i8, ptr %10, i64 112 + %103 = shl nuw nsw i32 %91, 15 + %104 = shl nuw nsw i32 %97, 16 + %105 = or disjoint i32 %104, %103 + store i32 %105, ptr %102, align 8 + %106 = and i64 %20, 1 + %107 = and i64 %106, %24 + %or.cond142.not.not = icmp eq i64 %107, 0 + %108 = getelementptr inbounds nuw i8, ptr %26, i64 20 + %109 = load i32, ptr %108, align 4 + %110 = lshr i32 %109, 7 + br i1 %or.cond142.not.not, label %Dec_GraphAddNodeAnd.exit123, label %Dec_GraphAddNodeOr.exit116 Dec_GraphAddNodeOr.exit116: ; preds = %Dec_GraphAddNodeAnd.exit109 - %109 = and i32 %108, 1 + %109 = and i32 %110, 1 %110 = getelementptr inbounds nuw i8, ptr %22, i64 20 %111 = load i32, ptr %110, align 4 %112 = lshr i32 %111, 7 @@ -6991,27 +6988,28 @@ Dec_GraphAddNodeOr.exit116: ; preds = %Dec_GraphAddNodeAnd Dec_GraphAddNodeAnd.exit123: ; preds = %Dec_GraphAddNodeAnd.exit109 %124 = trunc i64 %24 to i32 - %125 = xor i32 %108, %124 + %125 = xor i32 %110, %124 %126 = and i32 %125, 1 %127 = or disjoint i32 %126, 6 %128 = getelementptr inbounds nuw i8, ptr %22, i64 20 %129 = load i32, ptr %128, align 4 %130 = lshr i32 %129, 7 - %131 = xor i32 %130, %103 - %132 = and i32 %131, 1 - %133 = or disjoint i32 %132, 4 - %134 = getelementptr inbounds nuw i8, ptr %10, i64 120 - %135 = getelementptr inbounds nuw i8, ptr %10, i64 128 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %135, i8 0, i64 16, i1 false) - store i32 %133, ptr %134, align 8, !tbaa !66 - %136 = getelementptr inbounds nuw i8, ptr %10, i64 124 - store i32 %127, ptr %136, align 4, !tbaa !66 - %137 = getelementptr inbounds nuw i8, ptr %10, i64 136 - %138 = shl nuw nsw i32 %132, 15 - %139 = shl nuw nsw i32 %126, 16 - %140 = or disjoint i32 %139, %138 - store i32 %140, ptr %137, align 8 - br label %141 + %133 = trunc i64 %20 to i32 + %134 = xor i32 %132, %133 + %135 = and i32 %134, 1 + %136 = or disjoint i32 %135, 4 + %135 = getelementptr inbounds nuw i8, ptr %10, i64 120 + %138 = getelementptr inbounds nuw i8, ptr %10, i64 128 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %138, i8 0, i64 16, i1 false) + store i32 %136, ptr %137, align 8, !tbaa !66 + %139 = getelementptr inbounds nuw i8, ptr %10, i64 124 + store i32 %129, ptr %139, align 4, !tbaa !66 + %140 = getelementptr inbounds nuw i8, ptr %10, i64 136 + %139 = shl nuw nsw i32 %135, 15 + %142 = shl nuw nsw i32 %128, 16 + %143 = or disjoint i32 %142, %139 + store i32 %143, ptr %140, align 8 + br label %144 141: ; preds = %Dec_GraphAddNodeOr.exit116, %Dec_GraphAddNodeAnd.exit123, %Dec_GraphAddNodeOr.exit96, %Dec_GraphAddNodeAnd.exit %.sroa.032.0 = phi i32 [ 11, %Dec_GraphAddNodeOr.exit96 ], [ 10, %Dec_GraphAddNodeAnd.exit ], [ 11, %Dec_GraphAddNodeOr.exit116 ], [ 10, %Dec_GraphAddNodeAnd.exit123 ] diff --git a/bench/abc/optimized/abcResub.ll b/bench/abc/optimized/abcResub.ll index 8a031bba25b..69116ee89ec 100644 --- a/bench/abc/optimized/abcResub.ll +++ b/bench/abc/optimized/abcResub.ll @@ -4336,55 +4336,56 @@ define noalias noundef ptr @Abc_ManResubQuit2(ptr noundef readonly captures(none %26 = trunc i64 %11 to i32 %27 = xor i32 %25, %26 %28 = and i32 %27, 1 - %29 = trunc i64 %15 to i32 - %30 = and i32 %29, 1 - %.not = icmp eq i32 %30, 0 - %31 = and i64 %19, 1 - %.not41 = icmp eq i64 %31, 0 - %or.cond = or i1 %.not, %.not41 - %32 = getelementptr inbounds nuw i8, ptr %17, i64 20 - %33 = load i32, ptr %32, align 4 - %34 = lshr i32 %33, 7 - br i1 %or.cond, label %Dec_GraphAddNodeAnd.exit, label %Dec_GraphAddNodeOr.exit + %29 = and i64 %15, 1 + %30 = and i64 %29, %19 + %.not = icmp eq i64 %30, 0 + br i1 %.not, label %Dec_GraphAddNodeAnd.exit, label %Dec_GraphAddNodeOr.exit Dec_GraphAddNodeOr.exit: ; preds = %5 - %35 = and i32 %34, 1 - %36 = getelementptr inbounds nuw i8, ptr %21, i64 20 - %37 = load i32, ptr %36, align 4 - %38 = lshr i32 %37, 7 - %39 = and i32 %38, 1 - %40 = getelementptr inbounds nuw i8, ptr %9, i64 80 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %40, i8 0, i64 16, i1 false) - %41 = shl nuw nsw i32 %35, 15 - %42 = shl nuw nsw i32 %39, 16 - %43 = or disjoint i32 %42, %41 - %44 = or disjoint i32 %43, 16384 - %45 = xor i32 %35, 3 - %46 = xor i32 %39, 5 - br label %61 + %31 = getelementptr inbounds nuw i8, ptr %17, i64 20 + %32 = load i32, ptr %31, align 4 + %33 = lshr i32 %32, 7 + %34 = and i32 %33, 1 + %35 = getelementptr inbounds nuw i8, ptr %21, i64 20 + %36 = load i32, ptr %35, align 4 + %37 = lshr i32 %36, 7 + %41 = and i32 %37, 1 + %42 = getelementptr inbounds nuw i8, ptr %9, i64 80 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %42, i8 0, i64 16, i1 false) + %40 = shl nuw nsw i32 %34, 15 + %41 = shl nuw nsw i32 %38, 16 + %42 = or disjoint i32 %41, %40 + %43 = or disjoint i32 %42, 16384 + %44 = xor i32 %34, 3 + %45 = xor i32 %38, 5 + br label %64 Dec_GraphAddNodeAnd.exit: ; preds = %5 - %47 = xor i32 %34, %29 - %48 = and i32 %47, 1 - %49 = or disjoint i32 %48, 2 - %50 = getelementptr inbounds nuw i8, ptr %21, i64 20 - %51 = load i32, ptr %50, align 4 - %52 = lshr i32 %51, 7 - %53 = trunc i64 %19 to i32 - %54 = xor i32 %52, %53 - %55 = and i32 %54, 1 - %56 = or disjoint i32 %55, 4 - %57 = getelementptr inbounds nuw i8, ptr %9, i64 80 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %57, i8 0, i64 16, i1 false) - %58 = shl nuw nsw i32 %48, 15 - %59 = shl nuw nsw i32 %55, 16 - %60 = or disjoint i32 %59, %58 - br label %61 - -61: ; preds = %Dec_GraphAddNodeAnd.exit, %Dec_GraphAddNodeOr.exit - %.sink68 = phi i32 [ %49, %Dec_GraphAddNodeAnd.exit ], [ %45, %Dec_GraphAddNodeOr.exit ] - %.sink67 = phi i32 [ %56, %Dec_GraphAddNodeAnd.exit ], [ %46, %Dec_GraphAddNodeOr.exit ] - %.sink = phi i32 [ %60, %Dec_GraphAddNodeAnd.exit ], [ %44, %Dec_GraphAddNodeOr.exit ] + %46 = trunc i64 %15 to i32 + %47 = getelementptr inbounds nuw i8, ptr %17, i64 20 + %51 = load i32, ptr %47, align 4 + %49 = lshr i32 %51, 7 + %52 = xor i32 %49, %46 + %51 = and i32 %50, 1 + %52 = or disjoint i32 %51, 2 + %55 = getelementptr inbounds nuw i8, ptr %21, i64 20 + %54 = load i32, ptr %53, align 4 + %55 = lshr i32 %54, 7 + %56 = trunc i64 %19 to i32 + %57 = xor i32 %57, %56 + %58 = and i32 %57, 1 + %59 = or disjoint i32 %58, 4 + %60 = getelementptr inbounds nuw i8, ptr %9, i64 80 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %60, i8 0, i64 16, i1 false) + %61 = shl nuw nsw i32 %51, 15 + %62 = shl nuw nsw i32 %58, 16 + %63 = or disjoint i32 %64, %61 + br label %64 + +64: ; preds = %Dec_GraphAddNodeAnd.exit, %Dec_GraphAddNodeOr.exit + %.sink68 = phi i32 [ %52, %Dec_GraphAddNodeAnd.exit ], [ %44, %Dec_GraphAddNodeOr.exit ] + %.sink67 = phi i32 [ %59, %Dec_GraphAddNodeAnd.exit ], [ %45, %Dec_GraphAddNodeOr.exit ] + %.sink = phi i32 [ %63, %Dec_GraphAddNodeAnd.exit ], [ %43, %Dec_GraphAddNodeOr.exit ] %.sroa.015.0 = phi i32 [ 6, %Dec_GraphAddNodeAnd.exit ], [ 7, %Dec_GraphAddNodeOr.exit ] %62 = getelementptr inbounds nuw i8, ptr %9, i64 72 store i32 %.sink68, ptr %62, align 8 @@ -4399,7 +4400,7 @@ Dec_GraphAddNodeAnd.exit: ; preds = %5 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %66, i8 0, i64 16, i1 false) br i1 %.not42, label %Dec_GraphAddNodeAnd.exit65, label %Dec_GraphAddNodeOr.exit58 -Dec_GraphAddNodeOr.exit58: ; preds = %61 +Dec_GraphAddNodeOr.exit58: ; preds = %64 %67 = getelementptr inbounds nuw i8, ptr %9, i64 100 %68 = getelementptr inbounds nuw i8, ptr %9, i64 112 %69 = shl nuw nsw i32 %28, 15 @@ -4414,7 +4415,7 @@ Dec_GraphAddNodeOr.exit58: ; preds = %61 store i32 %75, ptr %67, align 4 br label %82 -Dec_GraphAddNodeAnd.exit65: ; preds = %61 +Dec_GraphAddNodeAnd.exit65: ; preds = %64 store i32 %28, ptr %65, align 8, !tbaa !57 %76 = getelementptr inbounds nuw i8, ptr %9, i64 100 store i32 %.sroa.015.0, ptr %76, align 4, !tbaa !57 @@ -4477,47 +4478,41 @@ define noalias noundef ptr @Abc_ManResubQuit3(ptr noundef readonly captures(none %26 = inttoptr i64 %25 to ptr %27 = getelementptr inbounds nuw i8, ptr %10, i64 80 store ptr %26, ptr %27, align 8, !tbaa !57 - %28 = trunc i64 %12 to i32 - %29 = and i32 %28, 1 - %.not = icmp eq i32 %29, 0 - %30 = and i64 %16, 1 - %.not80 = icmp eq i64 %30, 0 - %or.cond = or i1 %.not, %.not80 - %31 = getelementptr inbounds nuw i8, ptr %14, i64 20 - %32 = load i32, ptr %31, align 4 - %33 = lshr i32 %32, 7 - br i1 %or.cond, label %Dec_GraphAddNodeAnd.exit109, label %Dec_GraphAddNodeOr.exit + %28 = and i64 %12, 1 + %29 = and i64 %28, %16 + %.not = icmp eq i64 %29, 0 + br i1 %.not, label %Dec_GraphAddNodeAnd.exit109, label %Dec_GraphAddNodeOr.exit Dec_GraphAddNodeOr.exit: ; preds = %6 - %34 = and i32 %33, 1 - %35 = getelementptr inbounds nuw i8, ptr %18, i64 20 - %36 = load i32, ptr %35, align 4 - %37 = lshr i32 %36, 7 - %38 = and i32 %37, 1 - %39 = getelementptr inbounds nuw i8, ptr %10, i64 96 - %40 = getelementptr inbounds nuw i8, ptr %10, i64 104 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %40, i8 0, i64 16, i1 false) - %41 = getelementptr inbounds nuw i8, ptr %10, i64 100 - %42 = getelementptr inbounds nuw i8, ptr %10, i64 112 - %43 = shl nuw nsw i32 %34, 15 - %44 = shl nuw nsw i32 %38, 16 - %45 = or disjoint i32 %44, %43 - %46 = or disjoint i32 %45, 16384 - store i32 %46, ptr %42, align 8 - %47 = xor i32 %34, 1 - store i32 %47, ptr %39, align 8 - %48 = xor i32 %38, 3 - store i32 %48, ptr %41, align 4 - %49 = trunc i64 %20 to i32 - %50 = and i32 %49, 1 - %.not83 = icmp eq i32 %50, 0 - %51 = and i64 %24, 1 - %.not84 = icmp eq i64 %51, 0 - %or.cond140 = or i1 %.not83, %.not84 + %30 = getelementptr inbounds nuw i8, ptr %14, i64 20 + %31 = load i32, ptr %30, align 4 + %32 = lshr i32 %31, 7 + %33 = and i32 %32, 1 + %34 = getelementptr inbounds nuw i8, ptr %18, i64 20 + %35 = load i32, ptr %34, align 4 + %36 = lshr i32 %35, 7 + %37 = and i32 %36, 1 + %41 = getelementptr inbounds nuw i8, ptr %10, i64 96 + %42 = getelementptr inbounds nuw i8, ptr %10, i64 104 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %39, i8 0, i64 16, i1 false) + %40 = getelementptr inbounds nuw i8, ptr %10, i64 100 + %41 = getelementptr inbounds nuw i8, ptr %10, i64 112 + %42 = shl nuw nsw i32 %33, 15 + %43 = shl nuw nsw i32 %37, 16 + %44 = or disjoint i32 %43, %42 + %45 = or disjoint i32 %44, 16384 + store i32 %45, ptr %41, align 8 + %46 = xor i32 %33, 1 + store i32 %46, ptr %38, align 8 + %47 = xor i32 %37, 3 + store i32 %47, ptr %40, align 4 + %51 = and i64 %20, 1 + %49 = and i64 %51, %24 + %or.cond140.not.not = icmp eq i64 %49, 0 %52 = getelementptr inbounds nuw i8, ptr %26, i64 20 %53 = load i32, ptr %52, align 4 %54 = lshr i32 %53, 7 - br i1 %or.cond140, label %Dec_GraphAddNodeAnd.exit, label %Dec_GraphAddNodeOr.exit96 + br i1 %or.cond140.not.not, label %Dec_GraphAddNodeAnd.exit, label %Dec_GraphAddNodeOr.exit96 Dec_GraphAddNodeOr.exit96: ; preds = %Dec_GraphAddNodeOr.exit %55 = and i32 %54, 1 @@ -4540,7 +4535,7 @@ Dec_GraphAddNodeOr.exit96: ; preds = %Dec_GraphAddNodeOr. store i32 %68, ptr %60, align 8 %69 = xor i32 %55, 7 store i32 %69, ptr %62, align 4 - br label %141 + br label %144 Dec_GraphAddNodeAnd.exit: ; preds = %Dec_GraphAddNodeOr.exit %70 = trunc i64 %24 to i32 @@ -4550,56 +4545,58 @@ Dec_GraphAddNodeAnd.exit: ; preds = %Dec_GraphAddNodeOr. %74 = getelementptr inbounds nuw i8, ptr %22, i64 20 %75 = load i32, ptr %74, align 4 %76 = lshr i32 %75, 7 - %77 = xor i32 %76, %49 - %78 = and i32 %77, 1 - %79 = or disjoint i32 %78, 4 - %80 = getelementptr inbounds nuw i8, ptr %10, i64 120 - %81 = getelementptr inbounds nuw i8, ptr %10, i64 128 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %81, i8 0, i64 16, i1 false) - store i32 %79, ptr %80, align 8, !tbaa !57 - %82 = getelementptr inbounds nuw i8, ptr %10, i64 124 - store i32 %73, ptr %82, align 4, !tbaa !57 - %83 = getelementptr inbounds nuw i8, ptr %10, i64 136 - %84 = shl nuw nsw i32 %78, 15 - %85 = shl nuw nsw i32 %72, 16 - %86 = or disjoint i32 %85, %84 - store i32 %86, ptr %83, align 8 - br label %141 + %75 = trunc i64 %20 to i32 + %76 = xor i32 %74, %75 + %77 = and i32 %76, 1 + %78 = or disjoint i32 %77, 4 + %81 = getelementptr inbounds nuw i8, ptr %10, i64 120 + %80 = getelementptr inbounds nuw i8, ptr %10, i64 128 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %80, i8 0, i64 16, i1 false) + store i32 %78, ptr %81, align 8, !tbaa !57 + %78 = getelementptr inbounds nuw i8, ptr %10, i64 124 + store i32 %68, ptr %81, align 4, !tbaa !57 + %82 = getelementptr inbounds nuw i8, ptr %10, i64 136 + %85 = shl nuw nsw i32 %77, 15 + %84 = shl nuw nsw i32 %70, 16 + %85 = or disjoint i32 %84, %83 + store i32 %85, ptr %82, align 8 + br label %144 Dec_GraphAddNodeAnd.exit109: ; preds = %6 - %87 = xor i32 %33, %28 - %88 = and i32 %87, 1 - %89 = getelementptr inbounds nuw i8, ptr %18, i64 20 - %90 = load i32, ptr %89, align 4 - %91 = lshr i32 %90, 7 - %92 = trunc i64 %16 to i32 - %93 = xor i32 %91, %92 - %94 = and i32 %93, 1 - %95 = or disjoint i32 %94, 2 - %96 = getelementptr inbounds nuw i8, ptr %10, i64 96 - %97 = getelementptr inbounds nuw i8, ptr %10, i64 104 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %97, i8 0, i64 16, i1 false) - store i32 %88, ptr %96, align 8, !tbaa !57 - %98 = getelementptr inbounds nuw i8, ptr %10, i64 100 - store i32 %95, ptr %98, align 4, !tbaa !57 - %99 = getelementptr inbounds nuw i8, ptr %10, i64 112 - %100 = shl nuw nsw i32 %88, 15 - %101 = shl nuw nsw i32 %94, 16 - %102 = or disjoint i32 %101, %100 - store i32 %102, ptr %99, align 8 - %103 = trunc i64 %20 to i32 - %104 = and i32 %103, 1 - %.not81 = icmp eq i32 %104, 0 - %105 = and i64 %24, 1 - %.not82 = icmp eq i64 %105, 0 - %or.cond142 = or i1 %.not81, %.not82 - %106 = getelementptr inbounds nuw i8, ptr %26, i64 20 - %107 = load i32, ptr %106, align 4 - %108 = lshr i32 %107, 7 - br i1 %or.cond142, label %Dec_GraphAddNodeAnd.exit123, label %Dec_GraphAddNodeOr.exit116 + %86 = trunc i64 %12 to i32 + %87 = getelementptr inbounds nuw i8, ptr %14, i64 20 + %88 = load i32, ptr %87, align 4 + %86 = lshr i32 %88, 7 + %90 = xor i32 %89, %86 + %91 = and i32 %90, 1 + %92 = getelementptr inbounds nuw i8, ptr %18, i64 20 + %93 = load i32, ptr %92, align 4 + %94 = lshr i32 %93, 7 + %95 = trunc i64 %16 to i32 + %96 = xor i32 %94, %95 + %97 = and i32 %96, 1 + %98 = or disjoint i32 %97, 2 + %98 = getelementptr inbounds nuw i8, ptr %10, i64 96 + %100 = getelementptr inbounds nuw i8, ptr %10, i64 104 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %100, i8 0, i64 16, i1 false) + store i32 %88, ptr %99, align 8, !tbaa !57 + %101 = getelementptr inbounds nuw i8, ptr %10, i64 100 + store i32 %98, ptr %101, align 4, !tbaa !57 + %102 = getelementptr inbounds nuw i8, ptr %10, i64 112 + %103 = shl nuw nsw i32 %91, 15 + %104 = shl nuw nsw i32 %97, 16 + %105 = or disjoint i32 %104, %103 + store i32 %105, ptr %102, align 8 + %106 = and i64 %20, 1 + %107 = and i64 %106, %24 + %or.cond142.not.not = icmp eq i64 %107, 0 + %108 = getelementptr inbounds nuw i8, ptr %26, i64 20 + %109 = load i32, ptr %108, align 4 + %110 = lshr i32 %109, 7 + br i1 %or.cond142.not.not, label %Dec_GraphAddNodeAnd.exit123, label %Dec_GraphAddNodeOr.exit116 Dec_GraphAddNodeOr.exit116: ; preds = %Dec_GraphAddNodeAnd.exit109 - %109 = and i32 %108, 1 + %109 = and i32 %110, 1 %110 = getelementptr inbounds nuw i8, ptr %22, i64 20 %111 = load i32, ptr %110, align 4 %112 = lshr i32 %111, 7 @@ -4618,33 +4615,34 @@ Dec_GraphAddNodeOr.exit116: ; preds = %Dec_GraphAddNodeAnd store i32 %122, ptr %114, align 8 %123 = xor i32 %109, 7 store i32 %123, ptr %116, align 4 - br label %141 + br label %144 Dec_GraphAddNodeAnd.exit123: ; preds = %Dec_GraphAddNodeAnd.exit109 %124 = trunc i64 %24 to i32 - %125 = xor i32 %108, %124 + %125 = xor i32 %110, %124 %126 = and i32 %125, 1 %127 = or disjoint i32 %126, 6 %128 = getelementptr inbounds nuw i8, ptr %22, i64 20 %129 = load i32, ptr %128, align 4 %130 = lshr i32 %129, 7 - %131 = xor i32 %130, %103 - %132 = and i32 %131, 1 - %133 = or disjoint i32 %132, 4 - %134 = getelementptr inbounds nuw i8, ptr %10, i64 120 - %135 = getelementptr inbounds nuw i8, ptr %10, i64 128 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %135, i8 0, i64 16, i1 false) - store i32 %133, ptr %134, align 8, !tbaa !57 - %136 = getelementptr inbounds nuw i8, ptr %10, i64 124 - store i32 %127, ptr %136, align 4, !tbaa !57 - %137 = getelementptr inbounds nuw i8, ptr %10, i64 136 - %138 = shl nuw nsw i32 %132, 15 - %139 = shl nuw nsw i32 %126, 16 - %140 = or disjoint i32 %139, %138 - store i32 %140, ptr %137, align 8 - br label %141 - -141: ; preds = %Dec_GraphAddNodeOr.exit116, %Dec_GraphAddNodeAnd.exit123, %Dec_GraphAddNodeOr.exit96, %Dec_GraphAddNodeAnd.exit + %133 = trunc i64 %20 to i32 + %134 = xor i32 %132, %133 + %135 = and i32 %134, 1 + %136 = or disjoint i32 %135, 4 + %135 = getelementptr inbounds nuw i8, ptr %10, i64 120 + %138 = getelementptr inbounds nuw i8, ptr %10, i64 128 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %138, i8 0, i64 16, i1 false) + store i32 %136, ptr %137, align 8, !tbaa !57 + %139 = getelementptr inbounds nuw i8, ptr %10, i64 124 + store i32 %129, ptr %139, align 4, !tbaa !57 + %140 = getelementptr inbounds nuw i8, ptr %10, i64 136 + %139 = shl nuw nsw i32 %135, 15 + %142 = shl nuw nsw i32 %128, 16 + %143 = or disjoint i32 %142, %139 + store i32 %143, ptr %140, align 8 + br label %144 + +144: ; preds = %Dec_GraphAddNodeOr.exit116, %Dec_GraphAddNodeAnd.exit123, %Dec_GraphAddNodeOr.exit96, %Dec_GraphAddNodeAnd.exit %.sroa.032.0 = phi i32 [ 11, %Dec_GraphAddNodeOr.exit96 ], [ 10, %Dec_GraphAddNodeAnd.exit ], [ 11, %Dec_GraphAddNodeOr.exit116 ], [ 10, %Dec_GraphAddNodeAnd.exit123 ] %.sroa.034.0 = phi i32 [ 9, %Dec_GraphAddNodeOr.exit96 ], [ 9, %Dec_GraphAddNodeAnd.exit ], [ 8, %Dec_GraphAddNodeOr.exit116 ], [ 8, %Dec_GraphAddNodeAnd.exit123 ] %.not85 = icmp eq i32 %5, 0 @@ -4654,7 +4652,7 @@ Dec_GraphAddNodeAnd.exit123: ; preds = %Dec_GraphAddNodeAnd tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %143, i8 0, i64 16, i1 false) br i1 %.not85, label %Dec_GraphAddNodeAnd.exit137, label %Dec_GraphAddNodeOr.exit130 -Dec_GraphAddNodeOr.exit130: ; preds = %141 +Dec_GraphAddNodeOr.exit130: ; preds = %144 %144 = getelementptr inbounds nuw i8, ptr %10, i64 148 %145 = getelementptr inbounds nuw i8, ptr %10, i64 160 %146 = shl nuw nsw i32 %.sroa.034.0, 15 @@ -4670,7 +4668,7 @@ Dec_GraphAddNodeOr.exit130: ; preds = %141 store i32 %153, ptr %144, align 4 br label %161 -Dec_GraphAddNodeAnd.exit137: ; preds = %141 +Dec_GraphAddNodeAnd.exit137: ; preds = %144 store i32 %.sroa.034.0, ptr %142, align 8, !tbaa !57 %154 = getelementptr inbounds nuw i8, ptr %10, i64 148 store i32 %.sroa.032.0, ptr %154, align 4, !tbaa !57 diff --git a/bench/abc/optimized/giaMulFind.ll b/bench/abc/optimized/giaMulFind.ll index 6ef49daa8d3..bd2321b8403 100644 --- a/bench/abc/optimized/giaMulFind.ll +++ b/bench/abc/optimized/giaMulFind.ll @@ -62,53 +62,50 @@ define void @Gia_ManMulFindXors2_rec(ptr noundef %0, ptr noundef %1, ptr noundef 25: ; preds = %22 %26 = trunc i64 %23 to i32 - %27 = and i32 %26, 536870912 - %.not24 = icmp eq i32 %27, 0 - %28 = and i64 %23, 2305843009213693952 - %.not25 = icmp eq i64 %28, 0 - %or.cond = and i1 %.not25, %.not24 - br i1 %or.cond, label %29, label %70 - -29: ; preds = %25 - %30 = and i64 %23, 536870911 - %31 = sub nsw i64 0, %30 - %32 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %1, i64 %31 - %33 = getelementptr i8, ptr %0, i64 144 - %.val29 = load ptr, ptr %33, align 8, !tbaa !31 - %34 = ptrtoint ptr %32 to i64 - %35 = sub i64 %34, %14 - %36 = sdiv exact i64 %35, 12 - %sext.i36 = shl i64 %36, 32 - %37 = ashr exact i64 %sext.i36, 30 - %38 = getelementptr inbounds i8, ptr %.val29, i64 %37 - %39 = load i32, ptr %38, align 4, !tbaa !29 - %40 = icmp sgt i32 %39, 3 - br i1 %40, label %41, label %70 - -41: ; preds = %29 - %42 = lshr i64 %23, 32 - %43 = and i64 %42, 536870911 - %44 = sub nsw i64 0, %43 - %45 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %1, i64 %44 - %46 = ptrtoint ptr %45 to i64 - %47 = sub i64 %46, %14 - %48 = sdiv exact i64 %47, 12 - %sext.i37 = shl i64 %48, 32 - %49 = ashr exact i64 %sext.i37, 30 - %50 = getelementptr inbounds i8, ptr %.val29, i64 %49 - %51 = load i32, ptr %50, align 4, !tbaa !29 - %52 = icmp sgt i32 %51, 3 - br i1 %52, label %53, label %70 - -53: ; preds = %41 - %54 = trunc i64 %16 to i32 - %55 = and i32 %26, 536870911 - %56 = sub nsw i32 %54, %55 - %57 = trunc nuw i64 %42 to i32 - %58 = and i32 %57, 536870911 - %59 = sub nsw i32 %54, %58 - tail call fastcc void @Vec_IntPushTwo(ptr noundef %2, i32 noundef %56, i32 noundef %59) - br label %70 + %27 = and i64 %23, 2305843009750564864 + %.not24 = icmp eq i64 %27, 0 + br i1 %.not24, label %28, label %69 + +28:; preds = %25 + %29 = and i64 %23, 536870911 + %30 = sub nsw i64 0, %29 + %31 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %1, i64 %30 + %32 = getelementptr i8, ptr %0, i64 144 + %.val29 = load ptr, ptr %32, align 8, !tbaa !31 + %33 = ptrtoint ptr %31 to i64 + %34 = sub i64 %33, %14 + %35 = sdiv exact i64 %34, 12 + %sext.i36 = shl i64 %35, 32 + %36 = ashr exact i64 %sext.i36, 30 + %37 = getelementptr inbounds i8, ptr %.val29, i64 %36 + %38 = load i32, ptr %37, align 4, !tbaa !29 + %39 = icmp sgt i32 %38, 3 + br i1 %39, label %40, label %70 + +40:; preds = %28 + %41 = lshr i64 %23, 32 + %42 = and i64 %41, 536870911 + %43 = sub nsw i64 0, %42 + %44 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %1, i64 %43 + %45 = ptrtoint ptr %44 to i64 + %44 = sub i64 %45, %14 + %47 = sdiv exact i64 %44, 12 + %sext.i37 = shl i64 %47, 32 + %48 = ashr exact i64 %sext.i37, 30 + %49 = getelementptr inbounds i8, ptr %.val29, i64 %48 + %50 = load i32, ptr %49, align 4, !tbaa !29 + %51 = icmp sgt i32 %50, 3 + br i1 %51, label %52, label %69 + +52:; preds = %40 + %53 = trunc i64 %16 to i32 + %54 = and i32 %26, 536870911 + %55 = sub nsw i32 %53, %54 + %54 = trunc nuw i64 %41 to i32 + %55 = and i32 %56, 536870911 + %56 = sub nsw i32 %53, %55 + tail call fastcc void @Vec_IntPushTwo(ptr noundef %2, i32 noundef %55, i32 noundef %58) + br label %69 60: ; preds = %22 call void @llvm.lifetime.start.p0(ptr nonnull %4) @@ -128,7 +125,7 @@ define void @Gia_ManMulFindXors2_rec(ptr noundef %0, ptr noundef %1, ptr noundef call void @llvm.lifetime.end.p0(ptr nonnull %4) br label %70 -70: ; preds = %25, %29, %41, %53, %9, %3, %60 +70: ; preds = %25, %28, %40, %52, %9, %3, %60 ret void } diff --git a/bench/abc/optimized/giaUtil.ll b/bench/abc/optimized/giaUtil.ll index faf61030cf5..b9940e9e3db 100644 --- a/bench/abc/optimized/giaUtil.ll +++ b/bench/abc/optimized/giaUtil.ll @@ -5757,12 +5757,9 @@ define range(i32 0, 2) i32 @Gia_ObjIsMuxType(ptr noundef readonly captures(none) %11 = icmp eq i32 %7, %10 %.not.i45 = icmp ne i32 %7, 536870911 %or.cond.not.i = and i1 %.not.i45, %11 - %12 = and i32 %6, 536870912 - %.not25 = icmp eq i32 %12, 0 + %12 = and i64 %.val33, 2305843009750564864 + %.not25 = icmp ne i64 %12, 2305843009750564864 %or.cond = or i1 %.not25, %or.cond.not.i - %13 = and i64 %.val33, 2305843009213693952 - %.not26 = icmp eq i64 %13, 0 - %or.cond56 = or i1 %.not26, %or.cond br i1 %or.cond56, label %59, label %14 14: ; preds = %5 diff --git a/bench/abc/optimized/lpkCut.ll b/bench/abc/optimized/lpkCut.ll index 853e5bf6285..936bacf8a89 100644 --- a/bench/abc/optimized/lpkCut.ll +++ b/bench/abc/optimized/lpkCut.ll @@ -258,30 +258,29 @@ select.unfold.preheader.i: ; preds = %16 %33 = tail call ptr @Lpk_CutTruth_rec(ptr noundef %0, ptr noundef %32, i32 noundef %2, ptr noundef nonnull %3, ptr noundef nonnull %4) %.val30 = load ptr, ptr %24, align 8, !tbaa !12 %34 = ptrtoint ptr %.val30 to i64 - %35 = trunc i64 %34 to i32 - %36 = and i32 %35, 1 %.val31 = load ptr, ptr %29, align 8, !tbaa !15 %37 = ptrtoint ptr %.val31 to i64 - %38 = icmp ne i32 %36, 0 - %39 = and i64 %37, 1 - %40 = icmp ne i64 %39, 0 - %or.cond.i = and i1 %38, %40 - br i1 %or.cond.i, label %41, label %55 - -41: ; preds = %23 - %42 = icmp slt i32 %2, 6 - %43 = add nsw i32 %2, -5 - %44 = shl nuw i32 1, %43 - %spec.select.i33 = select i1 %42, i32 1, i32 %44 - %45 = icmp sgt i32 %spec.select.i33, 0 - br i1 %45, label %select.unfold.preheader.i34, label %Kit_TruthFill.exit - -select.unfold.preheader.i34: ; preds = %41 - %46 = zext nneg i32 %spec.select.i33 to i64 + %36 = and i64 %35, 1 + %37 = icmp ne i64 %36, 0 + %38 = and i64 %34, 1 + %or.cond.i = and i64 %38, %35 + %or.cond.i.not = icmp eq i64 %39, 0 + br i1 %or.cond.i.not, label %54, label %40 + +40:; preds = %23 + %41 = icmp slt i32 %2, 6 + %42 = add nsw i32 %2, -5 + %43 = shl nuw i32 1, %42 + %spec.select.i33 = select i1 %41, i32 1, i32 %43 + %44 = icmp sgt i32 %spec.select.i33, 0 + br i1 %44, label %select.unfold.preheader.i34, label %Kit_TruthFill.exit + +select.unfold.preheader.i34:; preds = %40 + %45 = zext nneg i32 %spec.select.i33 to i64 br label %select.unfold.i select.unfold.i: ; preds = %select.unfold.i, %select.unfold.preheader.i34 - %indvars.iv72.i = phi i64 [ %46, %select.unfold.preheader.i34 ], [ %indvars.iv.next73.i, %select.unfold.i ] + %indvars.iv72.i = phi i64 [ %45, %select.unfold.preheader.i34 ], [ %indvars.iv.next73.i, %select.unfold.i ] %indvars.iv.next73.i = add nsw i64 %indvars.iv72.i, -1 %47 = getelementptr inbounds nuw i32, ptr %28, i64 %indvars.iv.next73.i %48 = load i32, ptr %47, align 4, !tbaa !45 @@ -295,8 +294,8 @@ select.unfold.i: ; preds = %select.unfold.i, %s br i1 %54, label %select.unfold.i, label %Kit_TruthFill.exit, !llvm.loop !63 55: ; preds = %23 - %56 = icmp eq i32 %36, 0 - %or.cond3.i = or i1 %56, %40 + %56 = icmp eq i64 %38, 0 + %or.cond3.i = or i1 %56, %37 br i1 %or.cond3.i, label %71, label %57 57: ; preds = %55 @@ -326,7 +325,7 @@ select.unfold46.i: ; preds = %select.unfold46.i, br i1 %70, label %select.unfold46.i, label %Kit_TruthFill.exit, !llvm.loop !64 71: ; preds = %55 - %or.cond5.i = and i1 %56, %40 + %or.cond5.i = and i1 %56, %37 %72 = icmp slt i32 %2, 6 %73 = add nsw i32 %2, -5 %74 = shl nuw i32 1, %73 @@ -375,7 +374,7 @@ select.unfold48.i: ; preds = %select.unfold48.i, %94 = icmp samesign ugt i64 %indvars.iv66.i, 1 br i1 %94, label %select.unfold48.i, label %Kit_TruthFill.exit, !llvm.loop !66 -Kit_TruthFill.exit: ; preds = %select.unfold46.i, %select.unfold48.i, %select.unfold47.i, %select.unfold.i, %86, %76, %57, %41, %select.unfold.preheader.i, %16 +Kit_TruthFill.exit: ; preds = %select.unfold.i, %select.unfold46.i, %select.unfold48.i, %select.unfold47.i, %86, %76, %57, %40, %select.unfold.preheader.i, %16 store ptr %13, ptr %1, align 8, !tbaa !3 br label %95 diff --git a/bench/abc/optimized/sscSim.ll b/bench/abc/optimized/sscSim.ll index df94c12b468..6fd1b8e3c93 100644 --- a/bench/abc/optimized/sscSim.ll +++ b/bench/abc/optimized/sscSim.ll @@ -1115,8 +1115,8 @@ Ssc_SimDup.exit.loopexit.us: ; preds = %.lr.ph18.i.us br label %.lr.ph138.split .lr.ph138.split: ; preds = %.lr.ph138.split.preheader, %118 - %indvars.iv = phi i64 [ 0, %.lr.ph138.split.preheader ], [ %indvars.iv.next, %118 ] - %.161136 = phi ptr [ %65, %.lr.ph138.split.preheader ], [ %.262, %118 ] + %indvars.iv = phi i64 [ 0, %.lr.ph140.split.preheader ], [ %indvars.iv.next, %117 ] + %.161136 = phi ptr [ %65, %.lr.ph140.split.preheader ], [ %.262, %117 ] %66 = getelementptr inbounds nuw %struct.Gia_Obj_t_, ptr %.val70, i64 %indvars.iv %.val80 = load i64, ptr %66, align 4 %67 = and i64 %.val80, 2147483648 @@ -1140,12 +1140,11 @@ Ssc_SimDup.exit.loopexit.us: ; preds = %.lr.ph18.i.us %81 = sext i32 %80 to i64 %82 = sub nsw i64 0, %81 %83 = getelementptr inbounds i64, ptr %.161136, i64 %82 - %84 = and i32 %71, 536870912 - %85 = icmp ne i32 %84, 0 - %86 = and i64 %.val80, 2305843009213693952 - %87 = icmp ne i64 %86, 0 - %or.cond.i = and i1 %87, %85 - br i1 %or.cond.i, label %.preheader.i, label %95 + %84 = and i64 %.val80, 2305843009213693952 + %85 = icmp eq i64 %84, 0 + %86 = and i64 %.val80, 2305843009750564864 + %87 = icmp eq i64 %86, 2305843009750564864 + br i1 %87, label %.preheader.i, label %95 .preheader.i: ; preds = %70 br i1 %42, label %Ssc_SimAnd.exit, label %.lr.ph52.i @@ -1153,19 +1152,21 @@ Ssc_SimDup.exit.loopexit.us: ; preds = %.lr.ph18.i.us .lr.ph52.i: ; preds = %.preheader.i, %.lr.ph52.i %indvars.iv67.i = phi i64 [ %indvars.iv.next68.i, %.lr.ph52.i ], [ 0, %.preheader.i ] %88 = getelementptr inbounds nuw i64, ptr %76, i64 %indvars.iv67.i + %87 = load i64, ptr %86, align 8, !tbaa !38 + %88 = getelementptr inbounds nuw i64, ptr %83, i64 %indvars.iv67.i %89 = load i64, ptr %88, align 8, !tbaa !38 - %90 = getelementptr inbounds nuw i64, ptr %83, i64 %indvars.iv67.i - %91 = load i64, ptr %90, align 8, !tbaa !38 - %92 = or i64 %91, %89 - %93 = xor i64 %92, -1 - %94 = getelementptr inbounds nuw i64, ptr %.161136, i64 %indvars.iv67.i - store i64 %93, ptr %94, align 8, !tbaa !38 + %90 = or i64 %89, %87 + %91 = xor i64 %90, -1 + %92 = getelementptr inbounds nuw i64, ptr %.161138, i64 %indvars.iv67.i + store i64 %91, ptr %92, align 8, !tbaa !38 %indvars.iv.next68.i = add nuw nsw i64 %indvars.iv67.i, 1 %exitcond71.not.i = icmp eq i64 %indvars.iv.next68.i, %wide.trip.count.i br i1 %exitcond71.not.i, label %Ssc_SimAnd.exit, label %.lr.ph52.i, !llvm.loop !56 95: ; preds = %70 - br i1 %85, label %.preheader40.i, label %103 + %94 = and i32 %71, 536870912 + %.not128 = icmp eq i32 %94, 0 + br i1 %.not128, label %102, label %.preheader40.i .preheader40.i: ; preds = %95 br i1 %42, label %Ssc_SimAnd.exit, label %.lr.ph50.i @@ -1185,7 +1186,7 @@ Ssc_SimDup.exit.loopexit.us: ; preds = %.lr.ph18.i.us br i1 %exitcond66.not.i, label %Ssc_SimAnd.exit, label %.lr.ph50.i, !llvm.loop !57 103: ; preds = %95 - br i1 %87, label %.preheader42.i, label %.preheader44.i + br i1 %85, label %.preheader44.i, label %.preheader42.i .preheader44.i: ; preds = %103 br i1 %42, label %Ssc_SimAnd.exit, label %.lr.ph.i @@ -1220,12 +1221,12 @@ Ssc_SimDup.exit.loopexit.us: ; preds = %.lr.ph18.i.us %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i br i1 %exitcond.not.i, label %Ssc_SimAnd.exit, label %.lr.ph.i, !llvm.loop !48 -Ssc_SimAnd.exit: ; preds = %.lr.ph.i, %.lr.ph48.i, %.lr.ph50.i, %.lr.ph52.i, %.preheader.i, %.preheader40.i, %.preheader44.i, %.preheader42.i +Ssc_SimAnd.exit: ; preds = %.lr.ph50.i, %.lr.ph48.i, %.lr.ph.i, %.lr.ph52.i, %.preheader.i, %.preheader40.i, %.preheader44.i, %.preheader42.i %117 = getelementptr inbounds i64, ptr %.161136, i64 %61 br label %118 118: ; preds = %Ssc_SimAnd.exit, %.lr.ph138.split - %.262 = phi ptr [ %117, %Ssc_SimAnd.exit ], [ %.161136, %.lr.ph138.split ] + %.262 = phi ptr [ %117, %Ssc_SimAnd.exit ], [ %.161136, %.lr.ph140.split ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond152.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond152.not, label %.critedge2, label %.lr.ph138.split, !llvm.loop !59 @@ -1261,8 +1262,8 @@ Ssc_SimAnd.exit: ; preds = %.lr.ph.i, %.lr.ph48 br label %.lr.ph143.split.split.us .lr.ph143.split.split.us: ; preds = %.lr.ph143.split.split.us.preheader, %Ssc_SimDup.exit126.us - %indvars.iv153 = phi i64 [ 0, %.lr.ph143.split.split.us.preheader ], [ %indvars.iv.next154, %Ssc_SimDup.exit126.us ] - %.3141.us = phi ptr [ %125, %.lr.ph143.split.split.us.preheader ], [ %149, %Ssc_SimDup.exit126.us ] + %indvars.iv153 = phi i64 [ 0, %.lr.ph145.split.split.us.preheader ], [ %indvars.iv.next154, %Ssc_SimDup.exit126.us ] + %.3141.us = phi ptr [ %125, %.lr.ph145.split.split.us.preheader ], [ %149, %Ssc_SimDup.exit126.us ] %130 = getelementptr inbounds nuw i32, ptr %.val78.val, i64 %indvars.iv153 %131 = load i32, ptr %130, align 4, !tbaa !41 %132 = sext i32 %131 to i64 @@ -1279,7 +1280,7 @@ Ssc_SimAnd.exit: ; preds = %.lr.ph.i, %.lr.ph48 br i1 %.not.i112.us, label %.lr.ph18.i122.us, label %.lr.ph.i115.us .lr.ph.i115.us: ; preds = %.lr.ph143.split.split.us, %.lr.ph.i115.us - %indvars.iv.i116.us = phi i64 [ %indvars.iv.next.i117.us, %.lr.ph.i115.us ], [ 0, %.lr.ph143.split.split.us ] + %indvars.iv.i116.us = phi i64 [ %indvars.iv.next.i117.us, %.lr.ph.i115.us ], [ 0, %.lr.ph145.split.split.us ] %142 = getelementptr inbounds nuw i64, ptr %140, i64 %indvars.iv.i116.us %143 = load i64, ptr %142, align 8, !tbaa !38 %144 = xor i64 %143, -1 @@ -1290,7 +1291,7 @@ Ssc_SimAnd.exit: ; preds = %.lr.ph.i, %.lr.ph48 br i1 %exitcond.not.i118.us, label %Ssc_SimDup.exit126.us, label %.lr.ph.i115.us, !llvm.loop !60 .lr.ph18.i122.us: ; preds = %.lr.ph143.split.split.us, %.lr.ph18.i122.us - %indvars.iv21.i123.us = phi i64 [ %indvars.iv.next22.i124.us, %.lr.ph18.i122.us ], [ 0, %.lr.ph143.split.split.us ] + %indvars.iv21.i123.us = phi i64 [ %indvars.iv.next22.i124.us, %.lr.ph18.i122.us ], [ 0, %.lr.ph145.split.split.us ] %146 = getelementptr inbounds nuw i64, ptr %140, i64 %indvars.iv21.i123.us %147 = load i64, ptr %146, align 8, !tbaa !38 %148 = getelementptr inbounds nuw i64, ptr %.3141.us, i64 %indvars.iv21.i123.us diff --git a/bench/arrow/optimized/value_parsing.ll b/bench/arrow/optimized/value_parsing.ll index 41098d35718..6cc420861ef 100644 --- a/bench/arrow/optimized/value_parsing.ll +++ b/bench/arrow/optimized/value_parsing.ll @@ -391,8 +391,8 @@ define linkonce_odr { ptr, i32 } @_ZN14arrow_vendored10fast_float19from_chars_ad br i1 %.not170.i.not, label %156, label %121 119: ; preds = %88, %86 - %120 = and i32 %.sroa.0.0.extract.trunc.i, 5 - %or.cond175.i.not.not = icmp eq i32 %120, 1 + %120 = and i64 %3, 5 + %or.cond175.i.not.not = icmp eq i64 %120, 1 br i1 %or.cond175.i.not.not, label %156, label %121 121: ; preds = %.thread, %119, %117 @@ -1216,8 +1216,8 @@ define linkonce_odr { ptr, i32 } @_ZN14arrow_vendored10fast_float19from_chars_ad br i1 %.not170.i.not, label %156, label %121 119: ; preds = %88, %86 - %120 = and i32 %.sroa.0.0.extract.trunc.i, 5 - %or.cond175.i.not.not = icmp eq i32 %120, 1 + %120 = and i64 %3, 5 + %or.cond175.i.not.not = icmp eq i64 %120, 1 br i1 %or.cond175.i.not.not, label %156, label %121 121: ; preds = %.thread, %119, %117 diff --git a/bench/boost/optimized/src.ll b/bench/boost/optimized/src.ll index 634a1c88b56..13bf53fdd8b 100644 --- a/bench/boost/optimized/src.ll +++ b/bench/boost/optimized/src.ll @@ -58869,8 +58869,8 @@ define linkonce_odr hidden { ptr, i32 } @_ZN5boost4json6detail8charconv6detail10 br i1 %.not168.i.not, label %157, label %122 120: ; preds = %89, %87 - %121 = and i32 %.sroa.0.0.extract.trunc.i, 3 - %or.cond173.i.not.not = icmp eq i32 %121, 1 + %121 = and i64 %3, 3 + %or.cond173.i.not.not = icmp eq i64 %121, 1 br i1 %or.cond173.i.not.not, label %157, label %122 122: ; preds = %.thread, %120, %118 diff --git a/bench/cmake/optimized/openssl.ll b/bench/cmake/optimized/openssl.ll index 099ffb00c21..2c510b183f5 100644 --- a/bench/cmake/optimized/openssl.ll +++ b/bench/cmake/optimized/openssl.ll @@ -7015,23 +7015,20 @@ ossl_bio_cf_method_create.exit.thread.i: ; preds = %39 %203 = getelementptr inbounds nuw i8, ptr %95, i64 172 store i32 1, ptr %203, align 4, !tbaa !206 %204 = call i64 @ERR_get_error() #13 - %205 = and i64 %204, 2147483648 - %.not.i.i70 = icmp eq i64 %205, 0 - %206 = trunc i64 %204 to i32 - %.mask.i = and i32 %206, -8388608 - %207 = icmp eq i32 %.mask.i, 167772160 - %208 = and i1 %.not.i.i70, %207 - br i1 %208, label %209, label %.thread.i - -209: ; preds = %202 - %.0.i176.i = and i32 %206, 8388607 + %205 = and i64 %204, 4286578688 + %.not.i.i70 = icmp eq i64 %205, 167772160 + br i1 %206, label %207, label %.thread.i + +207:; preds = %202 + %208 = trunc i64 %204 to i32 + %.0.i176.i = and i32 %208, 8388607 switch i32 %.0.i176.i, label %.thread.i [ i32 1045, label %210 i32 134, label %210 i32 1116, label %217 ] -210: ; preds = %209, %209 +210: ; preds = %207, %207 %211 = load ptr, ptr %100, align 8, !tbaa !136 %212 = call i64 @SSL_get_verify_result(ptr noundef %211) #13 %.not165.i = icmp eq i64 %212, 0 @@ -7048,7 +7045,7 @@ ossl_bio_cf_method_create.exit.thread.i: ; preds = %39 call void (ptr, ptr, ...) @Curl_failf(ptr noundef %1, ptr noundef nonnull @.str.222, ptr noundef nonnull @.str.223) #13 br label %.thread185.i -217: ; preds = %209 +217: ; preds = %207 store i8 0, ptr %5, align 16, !tbaa !125 %218 = call ptr @OpenSSL_version(i32 noundef 6) #13 %219 = call i32 (ptr, i64, ptr, ...) @curl_msnprintf(ptr noundef nonnull %5, i64 noundef 256, ptr noundef nonnull @.str.184, ptr noundef nonnull @.str.185, ptr noundef %218) #13 @@ -7067,29 +7064,24 @@ ossl_bio_cf_method_create.exit.thread.i: ; preds = %39 br label %227 227: ; preds = %221, %217 - %.021.i.i = phi i64 [ %224, %221 ], [ 256, %217 ] - %.0.i177.i = phi ptr [ %226, %221 ], [ %5, %217 ] + %.021.i.i = phi i64 [ %224, %220 ], [ 256, %216 ] + %.0.i177.i = phi ptr [ %226, %220 ], [ %5, %216 ] call void @ERR_error_string_n(i64 noundef %204, ptr noundef nonnull %.0.i177.i, i64 noundef %.021.i.i) #13 %228 = load i8, ptr %.0.i177.i, align 1, !tbaa !125 %.not.i178.i = icmp eq i8 %228, 0 - br i1 %.not.i178.i, label %229, label %ossl_strerror.exit.i + %228 = icmp samesign ugt i64 %.021.i.i, 13 + %or.cond.i = select i1 %.not.i178.i, i1 %228, i1 false + br i1 %or.cond.i, label %229, label %ossl_strerror.exit.i -229: ; preds = %227 - %.not23.i.i = icmp eq i64 %204, 0 - %230 = select i1 %.not23.i.i, i64 8, i64 13 - %231 = icmp samesign ult i64 %230, %.021.i.i - br i1 %231, label %232, label %ossl_strerror.exit.i - -232: ; preds = %229 - %233 = select i1 %.not23.i.i, ptr @.str.55, ptr @.str.54 - %234 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %.0.i177.i, ptr noundef nonnull dereferenceable(1) %233) #13 +229:; preds = %226 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(14) %.0.i177.i, ptr noundef nonnull align 1 dereferenceable(14) @.str.54, i64 14, i1 false) #13 br label %ossl_strerror.exit.i -ossl_strerror.exit.i: ; preds = %232, %229, %227 +ossl_strerror.exit.i: ; preds = %229, %227 call void (ptr, ptr, ...) @Curl_failf(ptr noundef %1, ptr noundef nonnull @.str.224, ptr noundef nonnull %.0.i177.i) #13 br label %.thread185.i -.thread.i: ; preds = %209, %202 +.thread.i: ; preds = %207, %202 store i8 0, ptr %5, align 16, !tbaa !125 %235 = call ptr @OpenSSL_version(i32 noundef 6) #13 %236 = call i32 (ptr, i64, ptr, ...) @curl_msnprintf(ptr noundef nonnull %5, i64 noundef 256, ptr noundef nonnull @.str.184, ptr noundef nonnull @.str.185, ptr noundef %235) #13 @@ -7108,8 +7100,8 @@ ossl_strerror.exit.i: ; preds = %232, %229, %227 br label %244 244: ; preds = %238, %.thread.i - %.021.i179.i = phi i64 [ %241, %238 ], [ 256, %.thread.i ] - %.0.i180.i = phi ptr [ %243, %238 ], [ %5, %.thread.i ] + %.021.i179.i = phi i64 [ %241, %233 ], [ 256, %.thread.i ] + %.0.i180.i = phi ptr [ %243, %233 ], [ %5, %.thread.i ] call void @ERR_error_string_n(i64 noundef %204, ptr noundef nonnull %.0.i180.i, i64 noundef %.021.i179.i) #13 %245 = load i8, ptr %.0.i180.i, align 1, !tbaa !125 %.not.i181.i = icmp eq i8 %245, 0 @@ -7159,7 +7151,7 @@ switch.lookup: ; preds = %.thread203.i br label %SSL_ERROR_to_str.exit SSL_ERROR_to_str.exit: ; preds = %259, %.thread203.i, %switch.lookup - %264 = phi ptr [ %spec.select, %259 ], [ @.str.208, %.thread203.i ], [ %switch.load, %switch.lookup ] + %264 = phi ptr [ %spec.select, %254 ], [ @.str.208, %.thread203.i ], [ %switch.load, %switch.lookup ] %265 = load ptr, ptr %95, align 8, !tbaa !210 %266 = getelementptr inbounds nuw i8, ptr %95, i64 28 %267 = load i32, ptr %266, align 4, !tbaa !211 @@ -7168,7 +7160,7 @@ SSL_ERROR_to_str.exit: ; preds = %259, %.thread203.i, br label %.thread185.i .thread185.i: ; preds = %SSL_ERROR_to_str.exit, %252, %ossl_strerror.exit.i, %216, %213 - %.0141188.i = phi i32 [ 35, %252 ], [ 35, %SSL_ERROR_to_str.exit ], [ 98, %ossl_strerror.exit.i ], [ 60, %216 ], [ 60, %213 ] + %.0141188.i = phi i32 [ 35, %247 ], [ 35, %SSL_ERROR_to_str.exit ], [ 98, %ossl_strerror.exit.i ], [ 60, %215 ], [ 60, %212 ] call void @llvm.lifetime.end.p0(ptr nonnull %5) br label %ossl_connect_step3.exit @@ -7184,49 +7176,49 @@ SSL_ERROR_to_str.exit: ; preds = %259, %.thread203.i, %274 = trunc i64 %273 to i32 %275 = and i32 %274, 65535 %276 = call ptr @OBJ_nid2sn(i32 noundef %275) #13 - br i1 %.not162.i, label %295, label %277 + br i1 %.not162.i, label %290, label %277 277: ; preds = %268 %278 = load i64, ptr %70, align 2 %279 = and i64 %278, 134217728 %.not158.i = icmp eq i64 %279, 0 - br i1 %.not158.i, label %295, label %280 + br i1 %.not158.i, label %290, label %280 280: ; preds = %277 %281 = load ptr, ptr %71, align 8, !tbaa !89 %.not159.i = icmp eq ptr %281, null - br i1 %.not159.i, label %286, label %282 + br i1 %.not159.i, label %281, label %277 + +277: ; preds = %275 + %278 = getelementptr inbounds nuw i8, ptr %276, i64 8 + %279 = load i32, ptr %278, align 8, !tbaa !90 + %280 = icmp sgt i32 %279, 0 + br i1 %280, label %281, label %290 + +281: ; preds = %277, %275 + %282 = load ptr, ptr %100, align 8, !tbaa !136 + %283 = call ptr @SSL_get_version(ptr noundef %282) #13 + %284 = load ptr, ptr %100, align 8, !tbaa !136 + %285 = call ptr @SSL_get_current_cipher(ptr noundef %284) #13 + %286 = call ptr @SSL_CIPHER_get_name(ptr noundef %285) #13 + %.not160.i = icmp eq ptr %271, null + %287 = select i1 %.not160.i, ptr @.str.228, ptr %271 + %288 = load i32, ptr %7, align 4, !tbaa !112 + %289 = call ptr @OBJ_nid2sn(i32 noundef %288) #13 + call void (ptr, ptr, ...) @Curl_infof(ptr noundef nonnull %1, ptr noundef nonnull @.str.227, ptr noundef %283, ptr noundef %286, ptr noundef nonnull %287, ptr noundef %289) #13 + br label %290 -282: ; preds = %280 - %283 = getelementptr inbounds nuw i8, ptr %281, i64 8 - %284 = load i32, ptr %283, align 8, !tbaa !90 - %285 = icmp sgt i32 %284, 0 - br i1 %285, label %286, label %295 +282: ; preds = %281, %277, %272, %263 + %283 = getelementptr inbounds nuw i8, ptr %95, i64 40 + %284 = load ptr, ptr %283, align 8, !tbaa !207 + %285 = icmp eq ptr %284, null + br i1 %285, label %286, label %ossl_connect_step2.exit -286: ; preds = %282, %280 - %287 = load ptr, ptr %100, align 8, !tbaa !136 - %288 = call ptr @SSL_get_version(ptr noundef %287) #13 - %289 = load ptr, ptr %100, align 8, !tbaa !136 - %290 = call ptr @SSL_get_current_cipher(ptr noundef %289) #13 - %291 = call ptr @SSL_CIPHER_get_name(ptr noundef %290) #13 - %.not160.i = icmp eq ptr %276, null - %292 = select i1 %.not160.i, ptr @.str.228, ptr %276 - %293 = load i32, ptr %7, align 4, !tbaa !112 - %294 = call ptr @OBJ_nid2sn(i32 noundef %293) #13 - call void (ptr, ptr, ...) @Curl_infof(ptr noundef nonnull %1, ptr noundef nonnull @.str.227, ptr noundef %288, ptr noundef %291, ptr noundef nonnull %292, ptr noundef %294) #13 - br label %295 - -295: ; preds = %286, %282, %277, %268 - %296 = getelementptr inbounds nuw i8, ptr %95, i64 40 - %297 = load ptr, ptr %296, align 8, !tbaa !207 - %.not161.i = icmp eq ptr %297, null - br i1 %.not161.i, label %ossl_connect_step2.exit.thread94, label %ossl_connect_step2.exit - -ossl_connect_step2.exit.thread94: ; preds = %295 +286: ; preds = %282 call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %ossl_connect_step2.exit.thread -ossl_connect_step2.exit: ; preds = %295 +ossl_connect_step2.exit: ; preds = %290 call void @llvm.lifetime.start.p0(ptr nonnull %8) call void @llvm.lifetime.start.p0(ptr nonnull %9) %298 = load ptr, ptr %100, align 8, !tbaa !136 @@ -7241,7 +7233,7 @@ ossl_connect_step2.exit: ; preds = %295 %.not66 = icmp eq i32 %302, 0 br i1 %.not66, label %ossl_connect_step2.exit.thread, label %ossl_connect_step3.exit -ossl_connect_step2.exit.thread: ; preds = %200, %182, %165, %148, %ossl_connect_step2.exit.thread94, %ossl_connect_step2.exit +ossl_connect_step2.exit.thread: ; preds = %200, %182, %165, %148, %ossl_connect_step2.exit.thread93, %ossl_connect_step2.exit br i1 %2, label %303, label %.backedge .backedge: ; preds = %ossl_connect_step2.exit.thread, %303 @@ -7276,7 +7268,7 @@ ossl_connect_step3.exit.thread: ; preds = %306 br label %315 315: ; preds = %.loopexit, %314 - %storemerge = phi i8 [ 1, %314 ], [ 0, %.loopexit ] + %storemerge = phi i8 [ 1, %309 ], [ 0, %.loopexit ] store i8 %storemerge, ptr %3, align 1, !tbaa !188 store i32 0, ptr %20, align 4, !tbaa !206 br label %ossl_connect_step3.exit @@ -7287,7 +7279,7 @@ ossl_connect_step3.exit.thread: ; preds = %306 br label %ossl_connect_step3.exit ossl_connect_step3.exit: ; preds = %106, %ossl_connect_step2.exit, %303, %.thread185.i, %93, %88, %77, %306, %.thread, %315, %316, %18 - %.0 = phi i32 [ 0, %18 ], [ 28, %.thread ], [ %310, %306 ], [ %.0.i.ph, %316 ], [ 0, %315 ], [ 35, %88 ], [ 28, %93 ], [ %.0141188.i, %.thread185.i ], [ 28, %77 ], [ %108, %106 ], [ 0, %303 ], [ %302, %ossl_connect_step2.exit ] + %.0 = phi i32 [ 0, %18 ], [ 28, %.thread ], [ %310, %301 ], [ %.0.i.ph, %311 ], [ 0, %310 ], [ 35, %88 ], [ 28, %93 ], [ %.0141188.i, %.thread185.i ], [ 28, %77 ], [ %108, %106 ], [ 0, %298 ], [ %302, %ossl_connect_step2.exit ] ret i32 %.0 } diff --git a/bench/cpython/optimized/_ssl.ll b/bench/cpython/optimized/_ssl.ll index 4a5d453a5ff..ad0e7303154 100644 --- a/bench/cpython/optimized/_ssl.ll +++ b/bench/cpython/optimized/_ssl.ll @@ -10190,8 +10190,8 @@ define internal fastcc range(i32 -1, 1) i32 @_add_ca_certs(ptr noundef readonly br label %63 .split64.us: ; preds = %52, %48, %32, %.lr.ph72, %36 - %.us-phi = phi i32 [ %37, %36 ], [ %.040.us71, %32 ], [ %.040.us71, %.lr.ph72 ], [ %53, %52 ], [ %.04067, %48 ] - %.us-phi66 = phi i1 [ true, %36 ], [ false, %32 ], [ false, %.lr.ph72 ], [ false, %48 ], [ false, %52 ] + %.us-phi = phi i32 [ %37, %36 ], [ %.040.us71, %32 ], [ %.040.us71, %.lr.ph73 ], [ %.04067, %48 ], [ %53, %52 ] + %.us-phi66 = phi i1 [ true, %36 ], [ false, %32 ], [ false, %.lr.ph73 ], [ false, %48 ], [ false, %52 ] %61 = tail call i64 @ERR_peek_last_error() #11 %62 = icmp eq i32 %.us-phi, 0 br i1 %62, label %63, label %69 @@ -10218,33 +10218,34 @@ define internal fastcc range(i32 -1, 1) i32 @_add_ca_certs(ptr noundef readonly br i1 %or.cond95, label %.sink.split, label %._crit_edge ._crit_edge: ; preds = %70 - %.not47 = icmp eq i64 %72, 0 - br i1 %.not47, label %81, label %73 - -73: ; preds = %._crit_edge - %74 = getelementptr inbounds nuw i8, ptr %0, i64 88 - %75 = load ptr, ptr %74, align 8, !tbaa !103 - %76 = tail call i64 @ERR_peek_last_error() #11 - %77 = trunc i64 %76 to i32 - %78 = getelementptr inbounds nuw i8, ptr %75, i64 40 - %79 = load ptr, ptr %78, align 8, !tbaa !14 - %sext.i = shl i64 %76, 32 - %80 = ashr exact i64 %sext.i, 32 - tail call fastcc void @fill_and_set_sslerror(ptr noundef readonly %75, ptr noundef null, ptr noundef %79, i32 noundef %77, ptr noundef null, i32 noundef 4256, i64 noundef %80) + %75 = and i64 %61, 4294967295 + %.not47 = icmp eq i64 %75, 0 + br i1 %.not47, label %84, label %76 + +76: ; preds = %74 + %77 = getelementptr inbounds nuw i8, ptr %0, i64 88 + %78 = load ptr, ptr %77, align 8, !tbaa !103 + %79 = tail call i64 @ERR_peek_last_error() #11 + %80 = trunc i64 %79 to i32 + %81 = getelementptr inbounds nuw i8, ptr %78, i64 40 + %82 = load ptr, ptr %81, align 8, !tbaa !14 + %sext.i = shl i64 %79, 32 + %83 = ashr exact i64 %sext.i, 32 + tail call fastcc void @fill_and_set_sslerror(ptr noundef readonly %78, ptr noundef null, ptr noundef %82, i32 noundef %80, ptr noundef null, i32 noundef 4256, i64 noundef %83) br label %.sink.split -.sink.split: ; preds = %70, %69, %63, %73 - %.042.ph = phi i32 [ -1, %73 ], [ 0, %69 ], [ -1, %63 ], [ 0, %70 ] +.sink.split: ; preds = %70, %69, %63, %76 + %.042.ph = phi i32 [ -1, %76 ], [ 0, %69 ], [ -1, %63 ], [ 0, %70 ] tail call void @ERR_clear_error() #11 br label %81 81: ; preds = %.sink.split, %._crit_edge - %.042 = phi i32 [ 0, %._crit_edge ], [ %.042.ph, %.sink.split ] + %.042 = phi i32 [ 0, %74 ], [ %.042.ph, %.sink.split ] %82 = tail call i32 @BIO_free(ptr noundef nonnull %14) #11 br label %83 83: ; preds = %81, %16, %10, %6 - %.036 = phi i32 [ -1, %6 ], [ -1, %10 ], [ -1, %16 ], [ %.042, %81 ] + %.036 = phi i32 [ -1, %6 ], [ -1, %10 ], [ -1, %16 ], [ %.042, %84 ] ret i32 %.036 } diff --git a/bench/cpython/optimized/posixmodule.ll b/bench/cpython/optimized/posixmodule.ll index e5d98df927e..04f89091e5a 100644 --- a/bench/cpython/optimized/posixmodule.ll +++ b/bench/cpython/optimized/posixmodule.ll @@ -2820,11 +2820,9 @@ define dso_local range(i32 0, 2) i32 @_Py_Uid_Converter(ptr noundef %0, ptr noun br i1 %.not27, label %38, label %.sink.split 28: ; preds = %22 - %29 = trunc i64 %23 to i32 - %30 = icmp ne i32 %29, -1 - %.not26 = icmp ult i64 %23, 4294967296 - %or.cond28 = and i1 %.not26, %30 - br i1 %or.cond28, label %31, label %.sink.split + %29 = trunc nuw i64 %23 to i32 + %30 = icmp ult i64 %23, 4294967295 + br i1 %30, label %30, label %.sink.split 31: ; preds = %28, %18, %16 %.018 = phi i32 [ %29, %28 ], [ -1, %16 ], [ %19, %18 ] @@ -2868,7 +2866,7 @@ Py_DECREF.exit: ; preds = %31, %33, %36 br label %Py_DECREF.exit30 Py_DECREF.exit30: ; preds = %43, %40, %38, %Py_DECREF.exit, %6 - %.0 = phi i32 [ 0, %6 ], [ 1, %Py_DECREF.exit ], [ 0, %38 ], [ 0, %40 ], [ 0, %43 ] + %.0 = phi i32 [ 0, %6 ], [ 1, %Py_DECREF.exit ], [ 0, %37 ], [ 0, %39 ], [ 0, %42 ] call void @llvm.lifetime.end.p0(ptr nonnull %3) ret i32 %.0 } @@ -2942,11 +2940,9 @@ define dso_local range(i32 0, 2) i32 @_Py_Gid_Converter(ptr noundef %0, ptr noun br i1 %.not27, label %38, label %.sink.split 28: ; preds = %22 - %29 = trunc i64 %23 to i32 - %30 = icmp ne i32 %29, -1 - %.not26 = icmp ult i64 %23, 4294967296 - %or.cond28 = and i1 %.not26, %30 - br i1 %or.cond28, label %31, label %.sink.split + %29 = trunc nuw i64 %23 to i32 + %30 = icmp ult i64 %23, 4294967295 + br i1 %30, label %30, label %.sink.split 31: ; preds = %28, %18, %16 %.018 = phi i32 [ %29, %28 ], [ -1, %16 ], [ %19, %18 ] @@ -2990,7 +2986,7 @@ Py_DECREF.exit30: ; preds = %31, %33, %36 br label %Py_DECREF.exit Py_DECREF.exit: ; preds = %43, %40, %38, %Py_DECREF.exit30, %6 - %.0 = phi i32 [ 0, %6 ], [ 1, %Py_DECREF.exit30 ], [ 0, %38 ], [ 0, %40 ], [ 0, %43 ] + %.0 = phi i32 [ 0, %6 ], [ 1, %Py_DECREF.exit30 ], [ 0, %37 ], [ 0, %39 ], [ 0, %42 ] call void @llvm.lifetime.end.p0(ptr nonnull %3) ret i32 %.0 } diff --git a/bench/curl/optimized/openssl.ll b/bench/curl/optimized/openssl.ll index aa85a585299..931eff3524a 100644 --- a/bench/curl/optimized/openssl.ll +++ b/bench/curl/optimized/openssl.ll @@ -7149,23 +7149,20 @@ ossl_bio_cf_method_create.exit.thread.i: ; preds = %40 %206 = getelementptr inbounds nuw i8, ptr %98, i64 188 store i32 1, ptr %206, align 4, !tbaa !216 %207 = call i64 @ERR_get_error() #13 - %208 = and i64 %207, 2147483648 - %.not.i.i70 = icmp eq i64 %208, 0 - %209 = trunc i64 %207 to i32 - %.mask.i = and i32 %209, -8388608 - %210 = icmp eq i32 %.mask.i, 167772160 - %211 = and i1 %.not.i.i70, %210 - br i1 %211, label %212, label %.thread.i - -212: ; preds = %205 - %.0.i176.i = and i32 %209, 8388607 + %208 = and i64 %207, 4286578688 + %.not.i.i70 = icmp eq i64 %208, 167772160 + br i1 %209, label %210, label %.thread.i + +210:; preds = %205 + %211 = trunc i64 %207 to i32 + %.0.i176.i = and i32 %211, 8388607 switch i32 %.0.i176.i, label %.thread.i [ i32 1045, label %213 i32 134, label %213 i32 1116, label %220 ] -213: ; preds = %212, %212 +213: ; preds = %210, %210 %214 = load ptr, ptr %103, align 8, !tbaa !139 %215 = call i64 @SSL_get_verify_result(ptr noundef %214) #13 %.not165.i = icmp eq i64 %215, 0 @@ -7182,48 +7179,43 @@ ossl_bio_cf_method_create.exit.thread.i: ; preds = %40 call void (ptr, ptr, ...) @Curl_failf(ptr noundef %1, ptr noundef nonnull @.str.229, ptr noundef nonnull @.str.230) #13 br label %.thread185.i -220: ; preds = %212 +220: ; preds = %210 store i8 0, ptr %5, align 16, !tbaa !126 %221 = call ptr @OpenSSL_version(i32 noundef 6) #13 %222 = call i32 (ptr, i64, ptr, ...) @curl_msnprintf(ptr noundef nonnull %5, i64 noundef 256, ptr noundef nonnull @.str.44, ptr noundef nonnull @.str.45, ptr noundef %221) #13 %223 = icmp ult i32 %222, 254 - br i1 %223, label %224, label %230 + br i1 %223, label %223, label %229 + +223: ; preds = %219 + %224 = zext nneg i32 %221 to i64 + %225 = getelementptr inbounds nuw i8, ptr %5, i64 %224 + %226 = sub nuw nsw i64 254, %224 + %227 = getelementptr inbounds nuw i8, ptr %225, i64 1 + store i8 58, ptr %225, align 1, !tbaa !126 + %228 = getelementptr inbounds nuw i8, ptr %225, i64 2 + store i8 32, ptr %227, align 1, !tbaa !126 + store i8 0, ptr %228, align 1, !tbaa !126 + br label %229 -224: ; preds = %220 - %225 = zext nneg i32 %222 to i64 - %226 = getelementptr inbounds nuw i8, ptr %5, i64 %225 - %227 = sub nuw nsw i64 254, %225 - %228 = getelementptr inbounds nuw i8, ptr %226, i64 1 - store i8 58, ptr %226, align 1, !tbaa !126 - %229 = getelementptr inbounds nuw i8, ptr %226, i64 2 - store i8 32, ptr %228, align 1, !tbaa !126 - store i8 0, ptr %229, align 1, !tbaa !126 - br label %230 - -230: ; preds = %224, %220 - %.021.i.i = phi i64 [ %227, %224 ], [ 256, %220 ] - %.0.i177.i = phi ptr [ %229, %224 ], [ %5, %220 ] +224: ; preds = %223, %220 + %.021.i.i = phi i64 [ %226, %223 ], [ 256, %219 ] + %.0.i177.i = phi ptr [ %228, %223 ], [ %5, %219 ] call void @ERR_error_string_n(i64 noundef %207, ptr noundef nonnull %.0.i177.i, i64 noundef %.021.i.i) #13 %231 = load i8, ptr %.0.i177.i, align 1, !tbaa !126 %.not.i178.i = icmp eq i8 %231, 0 - br i1 %.not.i178.i, label %232, label %ossl_strerror.exit.i + %231 = icmp samesign ugt i64 %.021.i.i, 13 + %or.cond.i = select i1 %.not.i178.i, i1 %231, i1 false + br i1 %or.cond.i, label %232, label %ossl_strerror.exit.i -232: ; preds = %230 - %.not23.i.i = icmp eq i64 %207, 0 - %233 = select i1 %.not23.i.i, i64 8, i64 13 - %234 = icmp samesign ult i64 %233, %.021.i.i - br i1 %234, label %235, label %ossl_strerror.exit.i - -235: ; preds = %232 - %236 = select i1 %.not23.i.i, ptr @.str.63, ptr @.str.62 - %237 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %.0.i177.i, ptr noundef nonnull dereferenceable(1) %236) #13 +232:; preds = %224 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(14) %.0.i177.i, ptr noundef nonnull align 1 dereferenceable(14) @.str.62, i64 14, i1 false) #13 br label %ossl_strerror.exit.i -ossl_strerror.exit.i: ; preds = %235, %232, %230 +ossl_strerror.exit.i: ; preds = %232, %229 call void (ptr, ptr, ...) @Curl_failf(ptr noundef %1, ptr noundef nonnull @.str.231, ptr noundef nonnull %.0.i177.i) #13 br label %.thread185.i -.thread.i: ; preds = %212, %205 +.thread.i: ; preds = %210, %205 store i8 0, ptr %5, align 16, !tbaa !126 %238 = call ptr @OpenSSL_version(i32 noundef 6) #13 %239 = call i32 (ptr, i64, ptr, ...) @curl_msnprintf(ptr noundef nonnull %5, i64 noundef 256, ptr noundef nonnull @.str.44, ptr noundef nonnull @.str.45, ptr noundef %238) #13 @@ -7242,8 +7234,8 @@ ossl_strerror.exit.i: ; preds = %235, %232, %230 br label %247 247: ; preds = %241, %.thread.i - %.021.i179.i = phi i64 [ %244, %241 ], [ 256, %.thread.i ] - %.0.i180.i = phi ptr [ %246, %241 ], [ %5, %.thread.i ] + %.021.i179.i = phi i64 [ %244, %236 ], [ 256, %.thread.i ] + %.0.i180.i = phi ptr [ %246, %236 ], [ %5, %.thread.i ] call void @ERR_error_string_n(i64 noundef %207, ptr noundef nonnull %.0.i180.i, i64 noundef %.021.i179.i) #13 %248 = load i8, ptr %.0.i180.i, align 1, !tbaa !126 %.not.i181.i = icmp eq i8 %248, 0 @@ -7293,7 +7285,7 @@ switch.lookup: ; preds = %.thread203.i br label %SSL_ERROR_to_str.exit SSL_ERROR_to_str.exit: ; preds = %262, %.thread203.i, %switch.lookup - %267 = phi ptr [ %spec.select, %262 ], [ @.str.215, %.thread203.i ], [ %switch.load, %switch.lookup ] + %267 = phi ptr [ %spec.select, %257 ], [ @.str.215, %.thread203.i ], [ %switch.load, %switch.lookup ] %268 = getelementptr inbounds nuw i8, ptr %98, i64 8 %269 = load ptr, ptr %268, align 8, !tbaa !220 %270 = getelementptr inbounds nuw i8, ptr %98, i64 44 @@ -7303,7 +7295,7 @@ SSL_ERROR_to_str.exit: ; preds = %262, %.thread203.i, br label %.thread185.i .thread185.i: ; preds = %SSL_ERROR_to_str.exit, %255, %ossl_strerror.exit.i, %219, %216 - %.0141188.i = phi i32 [ 35, %255 ], [ 35, %SSL_ERROR_to_str.exit ], [ 98, %ossl_strerror.exit.i ], [ 60, %219 ], [ 60, %216 ] + %.0141188.i = phi i32 [ 35, %250 ], [ 35, %SSL_ERROR_to_str.exit ], [ 98, %ossl_strerror.exit.i ], [ 60, %218 ], [ 60, %215 ] call void @llvm.lifetime.end.p0(ptr nonnull %5) br label %.thread98 @@ -7418,7 +7410,7 @@ ossl_connect_step3.exit: ; preds = %310 br label %322 322: ; preds = %.loopexit, %321 - %storemerge = phi i8 [ 1, %321 ], [ 0, %.loopexit ] + %storemerge = phi i8 [ 1, %316 ], [ 0, %.loopexit ] store i8 %storemerge, ptr %3, align 1, !tbaa !197 store i32 0, ptr %20, align 4, !tbaa !216 br label %.thread98 @@ -7429,7 +7421,7 @@ ossl_connect_step3.exit: ; preds = %310 br label %.thread98 .thread98: ; preds = %109, %ossl_connect_step2.exit, %307, %.thread185.i, %96, %91, %80, %ossl_connect_step3.exit, %.thread, %322, %323, %18 - %.0 = phi i32 [ 0, %18 ], [ 28, %.thread ], [ %.0.i.ph, %323 ], [ %315, %ossl_connect_step3.exit ], [ 0, %322 ], [ 35, %91 ], [ 28, %96 ], [ %.0141188.i, %.thread185.i ], [ 28, %80 ], [ %111, %109 ], [ 0, %307 ], [ %306, %ossl_connect_step2.exit ] + %.0 = phi i32 [ 0, %18 ], [ 28, %.thread ], [ %.0.i.ph, %318 ], [ %315, %ossl_connect_step3.exit ], [ 0, %317 ], [ 35, %91 ], [ 28, %96 ], [ %.0141188.i, %.thread185.i ], [ 28, %80 ], [ %111, %109 ], [ 0, %302 ], [ %306, %ossl_connect_step2.exit ] ret i32 %.0 } diff --git a/bench/ffmpeg/optimized/vf_lut3d.ll b/bench/ffmpeg/optimized/vf_lut3d.ll index a6e488a64fd..b8e4e847021 100644 --- a/bench/ffmpeg/optimized/vf_lut3d.ll +++ b/bench/ffmpeg/optimized/vf_lut3d.ll @@ -2214,8 +2214,8 @@ define internal noundef i32 @config_input(ptr noundef readonly captures(none) %0 ] 25: ; preds = %1 - %26 = and i32 %14, 528 - %or.cond.not = icmp eq i32 %26, 16 + %26 = and i64 %13, 528 + %or.cond.not = icmp eq i64 %26, 16 br i1 %or.cond.not, label %27, label %40 27: ; preds = %25 @@ -2279,8 +2279,8 @@ define internal noundef i32 @config_input(ptr noundef readonly captures(none) %0 br label %131 46: ; preds = %1 - %47 = and i32 %14, 528 - %or.cond3.not = icmp eq i32 %47, 16 + %47 = and i64 %13, 528 + %or.cond3.not = icmp eq i64 %47, 16 br i1 %or.cond3.not, label %48, label %61 48: ; preds = %46 @@ -2344,8 +2344,8 @@ define internal noundef i32 @config_input(ptr noundef readonly captures(none) %0 br label %131 67: ; preds = %1 - %68 = and i32 %14, 528 - %or.cond5.not = icmp eq i32 %68, 16 + %68 = and i64 %13, 528 + %or.cond5.not = icmp eq i64 %68, 16 br i1 %or.cond5.not, label %69, label %82 69: ; preds = %67 @@ -2409,8 +2409,8 @@ define internal noundef i32 @config_input(ptr noundef readonly captures(none) %0 br label %131 88: ; preds = %1 - %89 = and i32 %14, 528 - %or.cond7.not = icmp eq i32 %89, 16 + %89 = and i64 %13, 528 + %or.cond7.not = icmp eq i64 %89, 16 br i1 %or.cond7.not, label %90, label %103 90: ; preds = %88 @@ -2474,8 +2474,8 @@ define internal noundef i32 @config_input(ptr noundef readonly captures(none) %0 br label %131 109: ; preds = %1 - %110 = and i32 %14, 528 - %or.cond9.not = icmp eq i32 %110, 16 + %110 = and i64 %13, 528 + %or.cond9.not = icmp eq i64 %110, 16 br i1 %or.cond9.not, label %111, label %124 111: ; preds = %109 @@ -20549,8 +20549,8 @@ define internal noundef i32 @config_input_1d(ptr noundef readonly captures(none) ] 25: ; preds = %1 - %26 = and i32 %14, 528 - %or.cond.not = icmp eq i32 %26, 16 + %26 = and i64 %13, 528 + %or.cond.not = icmp eq i64 %26, 16 br i1 %or.cond.not, label %27, label %40 27: ; preds = %25 @@ -20614,8 +20614,8 @@ define internal noundef i32 @config_input_1d(ptr noundef readonly captures(none) br label %131 46: ; preds = %1 - %47 = and i32 %14, 528 - %or.cond3.not = icmp eq i32 %47, 16 + %47 = and i64 %13, 528 + %or.cond3.not = icmp eq i64 %47, 16 br i1 %or.cond3.not, label %48, label %61 48: ; preds = %46 @@ -20679,8 +20679,8 @@ define internal noundef i32 @config_input_1d(ptr noundef readonly captures(none) br label %131 67: ; preds = %1 - %68 = and i32 %14, 528 - %or.cond5.not = icmp eq i32 %68, 16 + %68 = and i64 %13, 528 + %or.cond5.not = icmp eq i64 %68, 16 br i1 %or.cond5.not, label %69, label %82 69: ; preds = %67 @@ -20744,8 +20744,8 @@ define internal noundef i32 @config_input_1d(ptr noundef readonly captures(none) br label %131 88: ; preds = %1 - %89 = and i32 %14, 528 - %or.cond7.not = icmp eq i32 %89, 16 + %89 = and i64 %13, 528 + %or.cond7.not = icmp eq i64 %89, 16 br i1 %or.cond7.not, label %90, label %103 90: ; preds = %88 @@ -20809,8 +20809,8 @@ define internal noundef i32 @config_input_1d(ptr noundef readonly captures(none) br label %131 109: ; preds = %1 - %110 = and i32 %14, 528 - %or.cond9.not = icmp eq i32 %110, 16 + %110 = and i64 %13, 528 + %or.cond9.not = icmp eq i64 %110, 16 br i1 %or.cond9.not, label %111, label %124 111: ; preds = %109 diff --git a/bench/fmt/optimized/format-test.ll b/bench/fmt/optimized/format-test.ll index f7c9029cc3c..bd9f9708431 100644 --- a/bench/fmt/optimized/format-test.ll +++ b/bench/fmt/optimized/format-test.ll @@ -226658,20 +226658,17 @@ define linkonce_odr hidden ptr @_ZN3fmt3v116detail11write_floatIcNS0_14basic_app store i64 %2, ptr %7, align 8 %27 = getelementptr inbounds nuw i8, ptr %7, i64 8 store i64 %3, ptr %27, align 8 - %28 = and i32 %16, 229376 - %29 = icmp eq i32 %28, 32768 - %30 = and i64 %2, 1095216660480 - %31 = icmp eq i64 %30, 206158430208 - %or.cond.i = and i1 %31, %29 - br i1 %or.cond.i, label %32, label %_ZN3fmt3v116detail15write_nonfiniteIcNS0_14basic_appenderIcEEEET0_S5_bNS0_12format_specsENS0_4signE.exit - -32: ; preds = %25 - %33 = getelementptr inbounds nuw i8, ptr %7, i64 4 - store i8 32, ptr %33, align 4, !tbaa !39 + %28 = and i64 %2, 1095216889856 + %29 = icmp eq i64 %28, 206158462976 + br i1 %29, label %29, label %_ZN3fmt3v116detail15write_nonfiniteIcNS0_14basic_appenderIcEEEET0_S5_bNS0_12format_specsENS0_4signE.exit + +29:; preds = %25 + %30 = getelementptr inbounds nuw i8, ptr %7, i64 4 + store i8 32, ptr %30, align 4, !tbaa !39 store i32 %16, ptr %7, align 8, !tbaa !5036 br label %_ZN3fmt3v116detail15write_nonfiniteIcNS0_14basic_appenderIcEEEET0_S5_bNS0_12format_specsENS0_4signE.exit -_ZN3fmt3v116detail15write_nonfiniteIcNS0_14basic_appenderIcEEEET0_S5_bNS0_12format_specsENS0_4signE.exit: ; preds = %25, %32 +_ZN3fmt3v116detail15write_nonfiniteIcNS0_14basic_appenderIcEEEET0_S5_bNS0_12format_specsENS0_4signE.exit: ; preds = %25, %29 %34 = and i32 %16, 4096 %.not7.i = icmp eq i32 %34, 0 %.str.1610..str.1578.i = select i1 %.not7.i, ptr @.str.1578, ptr @.str.1610 @@ -226693,35 +226690,35 @@ _ZN3fmt3v116detail15write_nonfiniteIcNS0_14basic_appenderIcEEEET0_S5_bNS0_12form %41 = icmp eq i32 %40, 32 %42 = icmp ne i32 %19, 0 %or.cond = and i1 %42, %41 - br i1 %or.cond, label %43, label %61 - -43: ; preds = %39 - %44 = shl nuw nsw i32 %19, 3 - %45 = lshr i32 539700480, %44 - %46 = trunc i32 %45 to i8 - %47 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %48 = load i64, ptr %47, align 8, !tbaa !159 - %49 = add i64 %48, 1 - %50 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %51 = load i64, ptr %50, align 8, !tbaa !155 - %52 = icmp ugt i64 %49, %51 - br i1 %52, label %53, label %_ZN3fmt3v1114basic_appenderIcEaSEc.exit + br i1 %or.cond, label %40, label %61 -53: ; preds = %43 - %54 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %55 = load ptr, ptr %54, align 8, !tbaa !152 - tail call void %55(ptr noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %49) - %.pre.i.i = load i64, ptr %47, align 8, !tbaa !159 +53: ; preds = %36 + %41 = shl nuw nsw i32 %19, 3 + %42 = lshr i32 539700480, %41 + %43 = trunc i32 %42 to i8 + %44 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %45 = load i64, ptr %44, align 8, !tbaa !159 + %46 = add i64 %45, 1 + %47 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %48 = load i64, ptr %47, align 8, !tbaa !155 + %49 = icmp ugt i64 %46, %48 + br i1 %49, label %50, label %_ZN3fmt3v1114basic_appenderIcEaSEc.exit + +50: ; preds = %40 + %51 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %52 = load ptr, ptr %51, align 8, !tbaa !152 + tail call void %52(ptr noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %46) + %.pre.i.i = load i64, ptr %44, align 8, !tbaa !159 %.pre2.i.i = add i64 %.pre.i.i, 1 br label %_ZN3fmt3v1114basic_appenderIcEaSEc.exit -_ZN3fmt3v1114basic_appenderIcEaSEc.exit: ; preds = %43, %53 - %.pre-phi.i.i = phi i64 [ %49, %43 ], [ %.pre2.i.i, %53 ] - %56 = phi i64 [ %48, %43 ], [ %.pre.i.i, %53 ] +_ZN3fmt3v1114basic_appenderIcEaSEc.exit: ; preds = %40, %50 + %.pre-phi.i.i = phi i64 [ %46, %40 ], [ %.pre2.i.i, %50 ] + %56 = phi i64 [ %45, %40 ], [ %.pre.i.i, %50 ] %57 = load ptr, ptr %0, align 8, !tbaa !154 - store i64 %.pre-phi.i.i, ptr %47, align 8, !tbaa !159 + store i64 %.pre-phi.i.i, ptr %44, align 8, !tbaa !159 %58 = getelementptr inbounds nuw i8, ptr %57, i64 %56 - store i8 %46, ptr %58, align 1, !tbaa !39 + store i8 %43, ptr %58, align 1, !tbaa !39 %.not = icmp eq i32 %22, 0 br i1 %.not, label %61, label %59 @@ -226731,7 +226728,7 @@ _ZN3fmt3v1114basic_appenderIcEaSEc.exit: ; preds = %43, %53 br label %61 61: ; preds = %_ZN3fmt3v1114basic_appenderIcEaSEc.exit, %59, %39 - %.0 = phi i32 [ 0, %59 ], [ 0, %_ZN3fmt3v1114basic_appenderIcEaSEc.exit ], [ %19, %39 ] + %.0 = phi i32 [ 0, %56 ], [ 0, %_ZN3fmt3v1114basic_appenderIcEaSEc.exit ], [ %19, %36 ] %62 = getelementptr inbounds nuw i8, ptr %9, i64 12 %63 = icmp slt i64 %3, 0 br i1 %63, label %64, label %72 @@ -226754,7 +226751,7 @@ _ZN3fmt3v1114basic_appenderIcEaSEc.exit: ; preds = %43, %53 br label %122 72: ; preds = %64, %61 - %.032 = phi i32 [ %24, %61 ], [ 6, %64 ] + %.032 = phi i32 [ %24, %58 ], [ 6, %61 ] call void @llvm.lifetime.start.p0(ptr nonnull %11) %73 = getelementptr inbounds nuw i8, ptr %11, i64 16 %74 = getelementptr inbounds nuw i8, ptr %11, i64 24 @@ -226766,7 +226763,7 @@ _ZN3fmt3v1114basic_appenderIcEaSEc.exit: ; preds = %43, %53 store i64 500, ptr %73, align 8, !tbaa !155 %77 = trunc i64 %2 to i8 %78 = and i8 %77, 7 - switch i8 %78, label %102 [ + switch i8 %78, label %99 [ i8 4, label %79 i8 1, label %91 i8 2, label %99 @@ -226787,7 +226784,7 @@ _ZN3fmt3v1114basic_appenderIcEaSEc.exit: ; preds = %43, %53 84: ; preds = %80, %79 %.sroa.2.0.copyload = load i64, ptr %13, align 8 invoke void @_ZN3fmt3v116detail15format_hexfloatIdTnNSt9enable_ifIXntsr16is_double_doubleIT_EE5valueEiE4typeELi0EEEvS4_NS0_12format_specsERNS1_6bufferIcEE(double noundef %1, i64 %2, i64 %.sroa.2.0.copyload, ptr noundef nonnull align 8 dereferenceable(32) %11) - to label %85 unwind label %89 + to label %82 unwind label %89 85: ; preds = %84 %86 = load ptr, ptr %11, align 8, !tbaa !154 @@ -226814,7 +226811,7 @@ _ZN3fmt3v116detail11write_bytesIcLNS0_5alignE2ENS0_14basic_appenderIcEEEET1_S6_N 93: ; preds = %91 invoke void @_ZN3fmt3v1112report_errorEPKc(ptr noundef nonnull @.str.794) #43 - to label %94 unwind label %89 + to label %91 unwind label %89 94: ; preds = %93 unreachable @@ -226843,9 +226840,9 @@ _ZN3fmt3v116detail11write_bytesIcLNS0_5alignE2ENS0_14basic_appenderIcEEEET1_S6_N br label %103 103: ; preds = %102, %100, %99, %95, %97 - %.1 = phi i32 [ %96, %97 ], [ %96, %95 ], [ %.032, %100 ], [ %.032, %99 ], [ %spec.store.select, %102 ] + %.1 = phi i32 [ %96, %94 ], [ %96, %92 ], [ %.032, %97 ], [ %.032, %96 ], [ %spec.store.select, %99 ] %104 = invoke noundef i32 @_ZN3fmt3v116detail12format_floatIdEEiT_iRKNS0_12format_specsEbRNS1_6bufferIcEE(double noundef %1, i32 noundef %.1, ptr noundef nonnull align 4 dereferenceable(16) %9, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(32) %11) - to label %105 unwind label %112 + to label %102 unwind label %112 105: ; preds = %103 store i32 %.1, ptr %62, align 4, !tbaa !5038 @@ -226891,7 +226888,7 @@ _ZN3fmt3v1119basic_memory_bufferIcLm500ENS0_6detail9allocatorIcEEED2Ev.exit: ; p br label %122 119: ; preds = %112, %114, %89 - %.pn45 = phi { ptr, i32 } [ %90, %89 ], [ %113, %112 ], [ %115, %114 ] + %.pn45 = phi { ptr, i32 } [ %90, %86 ], [ %113, %109 ], [ %115, %111 ] %120 = load ptr, ptr %11, align 8, !tbaa !154 %.not.i.i49 = icmp eq ptr %120, %76 br i1 %.not.i.i49, label %_ZN3fmt3v1119basic_memory_bufferIcLm500ENS0_6detail9allocatorIcEEED2Ev.exit50, label %121 @@ -226905,7 +226902,7 @@ _ZN3fmt3v1119basic_memory_bufferIcLm500ENS0_6detail9allocatorIcEEED2Ev.exit50: ; resume { ptr, i32 } %.pn45 122: ; preds = %66, %_ZN3fmt3v1119basic_memory_bufferIcLm500ENS0_6detail9allocatorIcEEED2Ev.exit, %_ZN3fmt3v116detail15write_nonfiniteIcNS0_14basic_appenderIcEEEET0_S5_bNS0_12format_specsENS0_4signE.exit - %.sroa.031.0 = phi ptr [ %38, %_ZN3fmt3v116detail15write_nonfiniteIcNS0_14basic_appenderIcEEEET0_S5_bNS0_12format_specsENS0_4signE.exit ], [ %.sroa.031.2, %_ZN3fmt3v1119basic_memory_bufferIcLm500ENS0_6detail9allocatorIcEEED2Ev.exit ], [ %71, %66 ] + %.sroa.031.0 = phi ptr [ %38, %_ZN3fmt3v116detail15write_nonfiniteIcNS0_14basic_appenderIcEEEET0_S5_bNS0_12format_specsENS0_4signE.exit ], [ %.sroa.031.2, %_ZN3fmt3v1119basic_memory_bufferIcLm500ENS0_6detail9allocatorIcEEED2Ev.exit ], [ %71, %63 ] ret ptr %.sroa.031.0 } diff --git a/bench/fmt/optimized/ranges-test.ll b/bench/fmt/optimized/ranges-test.ll index 4ce374cb435..9074c0a9288 100644 --- a/bench/fmt/optimized/ranges-test.ll +++ b/bench/fmt/optimized/ranges-test.ll @@ -41776,7 +41776,7 @@ define linkonce_odr hidden ptr @_ZN3fmt3v116detail11write_floatIcNS0_14basic_app %23 = trunc i64 %3 to i32 %24 = lshr i64 %3, 32 %25 = trunc nuw i64 %24 to i32 - br i1 %22, label %26, label %40 + br i1 %22, label %26, label %54 26: ; preds = %5 %27 = fcmp uno float %1, 0.000000e+00 @@ -41784,12 +41784,9 @@ define linkonce_odr hidden ptr @_ZN3fmt3v116detail11write_floatIcNS0_14basic_app store i64 %2, ptr %7, align 8 %28 = getelementptr inbounds nuw i8, ptr %7, i64 8 store i64 %3, ptr %28, align 8 - %29 = and i32 %17, 229376 - %30 = icmp eq i32 %29, 32768 - %31 = and i64 %2, 1095216660480 - %32 = icmp eq i64 %31, 206158430208 - %or.cond.i = and i1 %32, %30 - br i1 %or.cond.i, label %33, label %_ZN3fmt3v116detail15write_nonfiniteIcNS0_14basic_appenderIcEEEET0_S5_bNS0_12format_specsENS0_4signE.exit + %29 = and i64 %2, 1095216889856 + %30 = icmp eq i64 %29, 206158462976 + br i1 %29, label %30, label %_ZN3fmt3v116detail15write_nonfiniteIcNS0_14basic_appenderIcEEEET0_S5_bNS0_12format_specsENS0_4signE.exit 33: ; preds = %26 %34 = getelementptr inbounds nuw i8, ptr %7, i64 4 @@ -41814,40 +41811,40 @@ _ZN3fmt3v116detail15write_nonfiniteIcNS0_14basic_appenderIcEEEET0_S5_bNS0_12form call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %120 -40: ; preds = %5 - %41 = and i32 %17, 56 - %42 = icmp eq i32 %41, 32 - %43 = icmp ne i32 %20, 0 - %or.cond = and i1 %43, %42 - br i1 %or.cond, label %44, label %62 - -44: ; preds = %40 - %45 = shl nuw nsw i32 %20, 3 - %46 = lshr i32 539700480, %45 - %47 = trunc i32 %46 to i8 - %48 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %49 = load i64, ptr %48, align 8, !tbaa !251 - %50 = add i64 %49, 1 - %51 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %52 = load i64, ptr %51, align 8, !tbaa !237 - %53 = icmp ugt i64 %50, %52 - br i1 %53, label %54, label %_ZN3fmt3v1114basic_appenderIcEaSEc.exit - -54: ; preds = %44 - %55 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %56 = load ptr, ptr %55, align 8, !tbaa !234 - tail call void %56(ptr noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %50) - %.pre.i.i = load i64, ptr %48, align 8, !tbaa !251 +54: ; preds = %5 + %38 = and i32 %17, 56 + %39 = icmp eq i32 %38, 32 + %40 = icmp ne i32 %20, 0 + %or.cond = and i1 %40, %42 + br i1 %or.cond, label %41, label %59 + +41: ; preds = %37 + %42 = shl nuw nsw i32 %20, 3 + %43 = lshr i32 539700480, %42 + %44 = trunc i32 %43 to i8 + %45 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %46 = load i64, ptr %45, align 8, !tbaa !251 + %47 = add i64 %46, 1 + %48 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %49 = load i64, ptr %48, align 8, !tbaa !237 + %50 = icmp ugt i64 %47, %49 + br i1 %50, label %51, label %_ZN3fmt3v1114basic_appenderIcEaSEc.exit + +51: ; preds = %41 + %52 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %53 = load ptr, ptr %52, align 8, !tbaa !234 + tail call void %53(ptr noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %47) + %.pre.i.i = load i64, ptr %45, align 8, !tbaa !251 %.pre2.i.i = add i64 %.pre.i.i, 1 br label %_ZN3fmt3v1114basic_appenderIcEaSEc.exit -_ZN3fmt3v1114basic_appenderIcEaSEc.exit: ; preds = %44, %54 - %.pre-phi.i.i = phi i64 [ %50, %44 ], [ %.pre2.i.i, %54 ] - %57 = phi i64 [ %49, %44 ], [ %.pre.i.i, %54 ] +_ZN3fmt3v1114basic_appenderIcEaSEc.exit: ; preds = %41, %51 + %.pre-phi.i.i = phi i64 [ %47, %41 ], [ %.pre2.i.i, %51 ] + %57 = phi i64 [ %46, %41 ], [ %.pre.i.i, %51 ] %58 = load ptr, ptr %0, align 8, !tbaa !236 - store i64 %.pre-phi.i.i, ptr %48, align 8, !tbaa !251 + store i64 %.pre-phi.i.i, ptr %45, align 8, !tbaa !251 %59 = getelementptr inbounds nuw i8, ptr %58, i64 %57 - store i8 %47, ptr %59, align 1, !tbaa !23 + store i8 %44, ptr %59, align 1, !tbaa !23 %.not = icmp eq i32 %23, 0 br i1 %.not, label %62, label %60 @@ -41856,7 +41853,7 @@ _ZN3fmt3v1114basic_appenderIcEaSEc.exit: ; preds = %44, %54 store i32 %61, ptr %13, align 8, !tbaa !1141 br label %62 -62: ; preds = %_ZN3fmt3v1114basic_appenderIcEaSEc.exit, %60, %40 +62: ; preds = %_ZN3fmt3v1114basic_appenderIcEaSEc.exit, %60, %54 %.0 = phi i32 [ 0, %60 ], [ 0, %_ZN3fmt3v1114basic_appenderIcEaSEc.exit ], [ %20, %40 ] %63 = getelementptr inbounds nuw i8, ptr %9, i64 12 %64 = icmp slt i64 %3, 0 @@ -41888,7 +41885,7 @@ _ZN3fmt3v1114basic_appenderIcEaSEc.exit: ; preds = %44, %54 store i64 500, ptr %71, align 8, !tbaa !237 %75 = trunc i64 %2 to i8 %76 = and i8 %75, 7 - switch i8 %76, label %100 [ + switch i8 %76, label %97 [ i8 4, label %77 i8 1, label %89 i8 2, label %97 @@ -41965,9 +41962,9 @@ _ZN3fmt3v116detail11write_bytesIcLNS0_5alignE2ENS0_14basic_appenderIcEEEET1_S6_N br label %101 101: ; preds = %100, %98, %97, %93, %95 - %.1 = phi i32 [ %94, %95 ], [ %94, %93 ], [ %.032, %98 ], [ %.032, %97 ], [ %spec.store.select, %100 ] + %.1 = phi i32 [ %94, %92 ], [ %94, %90 ], [ %.032, %98 ], [ %.032, %94 ], [ %spec.store.select, %97 ] %102 = invoke noundef i32 @_ZN3fmt3v116detail12format_floatIdEEiT_iRKNS0_12format_specsEbRNS1_6bufferIcEE(double noundef %14, i32 noundef %.1, ptr noundef nonnull align 4 dereferenceable(16) %9, i1 noundef zeroext true, ptr noundef nonnull align 8 dereferenceable(32) %11) - to label %103 unwind label %110 + to label %100 unwind label %110 103: ; preds = %101 store i32 %.1, ptr %63, align 4, !tbaa !240 @@ -42013,7 +42010,7 @@ _ZN3fmt3v1119basic_memory_bufferIcLm500ENS0_6detail9allocatorIcEEED2Ev.exit: ; p br label %120 117: ; preds = %110, %112, %87 - %.pn45 = phi { ptr, i32 } [ %88, %87 ], [ %111, %110 ], [ %113, %112 ] + %.pn45 = phi { ptr, i32 } [ %88, %87 ], [ %111, %110 ], [ %113, %109 ] %118 = load ptr, ptr %11, align 8, !tbaa !236 %.not.i.i49 = icmp eq ptr %118, %74 br i1 %.not.i.i49, label %_ZN3fmt3v1119basic_memory_bufferIcLm500ENS0_6detail9allocatorIcEEED2Ev.exit50, label %119 @@ -59974,12 +59971,9 @@ define linkonce_odr hidden ptr @_ZN3fmt3v116detail11write_floatIcNS0_14basic_app store i64 %2, ptr %7, align 8 %27 = getelementptr inbounds nuw i8, ptr %7, i64 8 store i64 %3, ptr %27, align 8 - %28 = and i32 %16, 229376 - %29 = icmp eq i32 %28, 32768 - %30 = and i64 %2, 1095216660480 - %31 = icmp eq i64 %30, 206158430208 - %or.cond.i = and i1 %31, %29 - br i1 %or.cond.i, label %32, label %_ZN3fmt3v116detail15write_nonfiniteIcNS0_14basic_appenderIcEEEET0_S5_bNS0_12format_specsENS0_4signE.exit + %28 = and i64 %2, 1095216889856 + %29 = icmp eq i64 %28, 206158462976 + br i1 %30, label %29, label %_ZN3fmt3v116detail15write_nonfiniteIcNS0_14basic_appenderIcEEEET0_S5_bNS0_12format_specsENS0_4signE.exit 32: ; preds = %25 %33 = getelementptr inbounds nuw i8, ptr %7, i64 4 @@ -60006,38 +60000,38 @@ _ZN3fmt3v116detail15write_nonfiniteIcNS0_14basic_appenderIcEEEET0_S5_bNS0_12form 39: ; preds = %5 %40 = and i32 %16, 56 - %41 = icmp eq i32 %40, 32 + %41 = icmp eq i32 %54, 32 %42 = icmp ne i32 %19, 0 %or.cond = and i1 %42, %41 - br i1 %or.cond, label %43, label %61 + br i1 %or.cond, label %40, label %61 -43: ; preds = %39 - %44 = shl nuw nsw i32 %19, 3 - %45 = lshr i32 539700480, %44 - %46 = trunc i32 %45 to i8 - %47 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %48 = load i64, ptr %47, align 8, !tbaa !251 - %49 = add i64 %48, 1 - %50 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %51 = load i64, ptr %50, align 8, !tbaa !237 - %52 = icmp ugt i64 %49, %51 - br i1 %52, label %53, label %_ZN3fmt3v1114basic_appenderIcEaSEc.exit - -53: ; preds = %43 - %54 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %55 = load ptr, ptr %54, align 8, !tbaa !234 - tail call void %55(ptr noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %49) - %.pre.i.i = load i64, ptr %47, align 8, !tbaa !251 +40: ; preds = %36 + %41 = shl nuw nsw i32 %19, 3 + %42 = lshr i32 539700480, %41 + %43 = trunc i32 %42 to i8 + %44 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %45 = load i64, ptr %44, align 8, !tbaa !251 + %46 = add i64 %45, 1 + %47 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %48 = load i64, ptr %47, align 8, !tbaa !237 + %49 = icmp ugt i64 %46, %48 + br i1 %49, label %50, label %_ZN3fmt3v1114basic_appenderIcEaSEc.exit + +43: ; preds = %40 + %51 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %52 = load ptr, ptr %51, align 8, !tbaa !234 + tail call void %52(ptr noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %46) + %.pre.i.i = load i64, ptr %44, align 8, !tbaa !251 %.pre2.i.i = add i64 %.pre.i.i, 1 br label %_ZN3fmt3v1114basic_appenderIcEaSEc.exit -_ZN3fmt3v1114basic_appenderIcEaSEc.exit: ; preds = %43, %53 - %.pre-phi.i.i = phi i64 [ %49, %43 ], [ %.pre2.i.i, %53 ] - %56 = phi i64 [ %48, %43 ], [ %.pre.i.i, %53 ] +_ZN3fmt3v1114basic_appenderIcEaSEc.exit: ; preds = %40, %50 + %.pre-phi.i.i = phi i64 [ %46, %40 ], [ %.pre2.i.i, %50 ] + %56 = phi i64 [ %45, %40 ], [ %.pre.i.i, %50 ] %57 = load ptr, ptr %0, align 8, !tbaa !236 - store i64 %.pre-phi.i.i, ptr %47, align 8, !tbaa !251 + store i64 %.pre-phi.i.i, ptr %44, align 8, !tbaa !251 %58 = getelementptr inbounds nuw i8, ptr %57, i64 %56 - store i8 %46, ptr %58, align 1, !tbaa !23 + store i8 %43, ptr %58, align 1, !tbaa !23 %.not = icmp eq i32 %22, 0 br i1 %.not, label %61, label %59 @@ -60159,7 +60153,7 @@ _ZN3fmt3v116detail11write_bytesIcLNS0_5alignE2ENS0_14basic_appenderIcEEEET1_S6_N br label %103 103: ; preds = %102, %100, %99, %95, %97 - %.1 = phi i32 [ %96, %97 ], [ %96, %95 ], [ %.032, %100 ], [ %.032, %99 ], [ %spec.store.select, %102 ] + %.1 = phi i32 [ %96, %94 ], [ %96, %92 ], [ %.032, %97 ], [ %.032, %99 ], [ %spec.store.select, %102 ] %104 = invoke noundef i32 @_ZN3fmt3v116detail12format_floatIdEEiT_iRKNS0_12format_specsEbRNS1_6bufferIcEE(double noundef %1, i32 noundef %.1, ptr noundef nonnull align 4 dereferenceable(16) %9, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(32) %11) to label %105 unwind label %112 @@ -60207,7 +60201,7 @@ _ZN3fmt3v1119basic_memory_bufferIcLm500ENS0_6detail9allocatorIcEEED2Ev.exit: ; p br label %122 119: ; preds = %112, %114, %89 - %.pn45 = phi { ptr, i32 } [ %90, %89 ], [ %113, %112 ], [ %115, %114 ] + %.pn45 = phi { ptr, i32 } [ %90, %86 ], [ %113, %109 ], [ %115, %111 ] %120 = load ptr, ptr %11, align 8, !tbaa !236 %.not.i.i49 = icmp eq ptr %120, %76 br i1 %.not.i.i49, label %_ZN3fmt3v1119basic_memory_bufferIcLm500ENS0_6detail9allocatorIcEEED2Ev.exit50, label %121 diff --git a/bench/fmt/optimized/std-test.ll b/bench/fmt/optimized/std-test.ll index 412f2863514..189b1a76fe6 100644 --- a/bench/fmt/optimized/std-test.ll +++ b/bench/fmt/optimized/std-test.ll @@ -28550,20 +28550,17 @@ define linkonce_odr hidden ptr @_ZN3fmt3v116detail11write_floatIcNS0_14basic_app store i64 %2, ptr %7, align 8 %27 = getelementptr inbounds nuw i8, ptr %7, i64 8 store i64 %3, ptr %27, align 8 - %28 = and i32 %16, 229376 - %29 = icmp eq i32 %28, 32768 - %30 = and i64 %2, 1095216660480 - %31 = icmp eq i64 %30, 206158430208 - %or.cond.i = and i1 %31, %29 - br i1 %or.cond.i, label %32, label %_ZN3fmt3v116detail15write_nonfiniteIcNS0_14basic_appenderIcEEEET0_S5_bNS0_12format_specsENS0_4signE.exit - -32: ; preds = %25 - %33 = getelementptr inbounds nuw i8, ptr %7, i64 4 - store i8 32, ptr %33, align 4, !tbaa !14 + %28 = and i64 %2, 1095216889856 + %29 = icmp eq i64 %28, 206158462976 + br i1 %29, label %29, label %_ZN3fmt3v116detail15write_nonfiniteIcNS0_14basic_appenderIcEEEET0_S5_bNS0_12format_specsENS0_4signE.exit + +29:; preds = %25 + %30 = getelementptr inbounds nuw i8, ptr %7, i64 4 + store i8 32, ptr %30, align 4, !tbaa !14 store i32 %16, ptr %7, align 8, !tbaa !815 br label %_ZN3fmt3v116detail15write_nonfiniteIcNS0_14basic_appenderIcEEEET0_S5_bNS0_12format_specsENS0_4signE.exit -_ZN3fmt3v116detail15write_nonfiniteIcNS0_14basic_appenderIcEEEET0_S5_bNS0_12format_specsENS0_4signE.exit: ; preds = %25, %32 +_ZN3fmt3v116detail15write_nonfiniteIcNS0_14basic_appenderIcEEEET0_S5_bNS0_12format_specsENS0_4signE.exit: ; preds = %25, %29 %34 = and i32 %16, 4096 %.not7.i = icmp eq i32 %34, 0 %.str.312..str.313.i = select i1 %.not7.i, ptr @.str.313, ptr @.str.312 @@ -28602,14 +28599,14 @@ _ZN3fmt3v116detail15write_nonfiniteIcNS0_14basic_appenderIcEEEET0_S5_bNS0_12form 53: ; preds = %43 %54 = getelementptr inbounds nuw i8, ptr %0, i64 24 %55 = load ptr, ptr %54, align 8, !tbaa !811 - tail call void %55(ptr noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %49) + tail call void %52(ptr noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %49) %.pre.i.i = load i64, ptr %47, align 8, !tbaa !821 %.pre2.i.i = add i64 %.pre.i.i, 1 br label %_ZN3fmt3v1114basic_appenderIcEaSEc.exit _ZN3fmt3v1114basic_appenderIcEaSEc.exit: ; preds = %43, %53 - %.pre-phi.i.i = phi i64 [ %49, %43 ], [ %.pre2.i.i, %53 ] - %56 = phi i64 [ %48, %43 ], [ %.pre.i.i, %53 ] + %.pre-phi.i.i = phi i64 [ %49, %40 ], [ %.pre2.i.i, %50 ] + %56 = phi i64 [ %48, %40 ], [ %.pre.i.i, %50 ] %57 = load ptr, ptr %0, align 8, !tbaa !813 store i64 %.pre-phi.i.i, ptr %47, align 8, !tbaa !821 %58 = getelementptr inbounds nuw i8, ptr %57, i64 %56 @@ -28623,7 +28620,7 @@ _ZN3fmt3v1114basic_appenderIcEaSEc.exit: ; preds = %43, %53 br label %61 61: ; preds = %_ZN3fmt3v1114basic_appenderIcEaSEc.exit, %59, %39 - %.0 = phi i32 [ 0, %59 ], [ 0, %_ZN3fmt3v1114basic_appenderIcEaSEc.exit ], [ %19, %39 ] + %.0 = phi i32 [ 0, %56 ], [ 0, %_ZN3fmt3v1114basic_appenderIcEaSEc.exit ], [ %19, %36 ] %62 = getelementptr inbounds nuw i8, ptr %9, i64 12 %63 = icmp slt i64 %3, 0 br i1 %63, label %64, label %72 @@ -28646,7 +28643,7 @@ _ZN3fmt3v1114basic_appenderIcEaSEc.exit: ; preds = %43, %53 br label %122 72: ; preds = %64, %61 - %.032 = phi i32 [ %24, %61 ], [ 6, %64 ] + %.032 = phi i32 [ %24, %58 ], [ 6, %61 ] call void @llvm.lifetime.start.p0(ptr nonnull %11) %73 = getelementptr inbounds nuw i8, ptr %11, i64 16 %74 = getelementptr inbounds nuw i8, ptr %11, i64 24 @@ -28658,7 +28655,7 @@ _ZN3fmt3v1114basic_appenderIcEaSEc.exit: ; preds = %43, %53 store i64 500, ptr %73, align 8, !tbaa !814 %77 = trunc i64 %2 to i8 %78 = and i8 %77, 7 - switch i8 %78, label %102 [ + switch i8 %78, label %99 [ i8 4, label %79 i8 1, label %91 i8 2, label %99 @@ -28679,7 +28676,7 @@ _ZN3fmt3v1114basic_appenderIcEaSEc.exit: ; preds = %43, %53 84: ; preds = %80, %79 %.sroa.2.0.copyload = load i64, ptr %13, align 8 invoke void @_ZN3fmt3v116detail15format_hexfloatIdTnNSt9enable_ifIXntsr16is_double_doubleIT_EE5valueEiE4typeELi0EEEvS4_NS0_12format_specsERNS1_6bufferIcEE(double noundef %1, i64 %2, i64 %.sroa.2.0.copyload, ptr noundef nonnull align 8 dereferenceable(32) %11) - to label %85 unwind label %89 + to label %82 unwind label %89 85: ; preds = %84 %86 = load ptr, ptr %11, align 8, !tbaa !813 @@ -28706,7 +28703,7 @@ _ZN3fmt3v116detail11write_bytesIcLNS0_5alignE2ENS0_14basic_appenderIcEEEET1_S6_N 93: ; preds = %91 invoke void @_ZN3fmt3v1112report_errorEPKc(ptr noundef nonnull @.str.289) #35 - to label %94 unwind label %89 + to label %91 unwind label %89 94: ; preds = %93 unreachable @@ -28735,9 +28732,9 @@ _ZN3fmt3v116detail11write_bytesIcLNS0_5alignE2ENS0_14basic_appenderIcEEEET1_S6_N br label %103 103: ; preds = %102, %100, %99, %95, %97 - %.1 = phi i32 [ %96, %97 ], [ %96, %95 ], [ %.032, %100 ], [ %.032, %99 ], [ %spec.store.select, %102 ] + %.1 = phi i32 [ %96, %94 ], [ %96, %92 ], [ %.032, %97 ], [ %.032, %96 ], [ %spec.store.select, %99 ] %104 = invoke noundef i32 @_ZN3fmt3v116detail12format_floatIdEEiT_iRKNS0_12format_specsEbRNS1_6bufferIcEE(double noundef %1, i32 noundef %.1, ptr noundef nonnull align 4 dereferenceable(16) %9, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(32) %11) - to label %105 unwind label %112 + to label %102 unwind label %112 105: ; preds = %103 store i32 %.1, ptr %62, align 4, !tbaa !817 @@ -28783,7 +28780,7 @@ _ZN3fmt3v1119basic_memory_bufferIcLm500ENS0_6detail9allocatorIcEEED2Ev.exit: ; p br label %122 119: ; preds = %112, %114, %89 - %.pn45 = phi { ptr, i32 } [ %90, %89 ], [ %113, %112 ], [ %115, %114 ] + %.pn45 = phi { ptr, i32 } [ %90, %86 ], [ %113, %109 ], [ %115, %111 ] %120 = load ptr, ptr %11, align 8, !tbaa !813 %.not.i.i49 = icmp eq ptr %120, %76 br i1 %.not.i.i49, label %_ZN3fmt3v1119basic_memory_bufferIcLm500ENS0_6detail9allocatorIcEEED2Ev.exit50, label %121 @@ -28797,7 +28794,7 @@ _ZN3fmt3v1119basic_memory_bufferIcLm500ENS0_6detail9allocatorIcEEED2Ev.exit50: ; resume { ptr, i32 } %.pn45 122: ; preds = %66, %_ZN3fmt3v1119basic_memory_bufferIcLm500ENS0_6detail9allocatorIcEEED2Ev.exit, %_ZN3fmt3v116detail15write_nonfiniteIcNS0_14basic_appenderIcEEEET0_S5_bNS0_12format_specsENS0_4signE.exit - %.sroa.031.0 = phi ptr [ %38, %_ZN3fmt3v116detail15write_nonfiniteIcNS0_14basic_appenderIcEEEET0_S5_bNS0_12format_specsENS0_4signE.exit ], [ %.sroa.031.2, %_ZN3fmt3v1119basic_memory_bufferIcLm500ENS0_6detail9allocatorIcEEED2Ev.exit ], [ %71, %66 ] + %.sroa.031.0 = phi ptr [ %38, %_ZN3fmt3v116detail15write_nonfiniteIcNS0_14basic_appenderIcEEEET0_S5_bNS0_12format_specsENS0_4signE.exit ], [ %.sroa.031.2, %_ZN3fmt3v1119basic_memory_bufferIcLm500ENS0_6detail9allocatorIcEEED2Ev.exit ], [ %71, %63 ] ret ptr %.sroa.031.0 } diff --git a/bench/folly/optimized/OpenSSLCertUtils.ll b/bench/folly/optimized/OpenSSLCertUtils.ll index b7a1d3ba62b..5591d41cd35 100644 --- a/bench/folly/optimized/OpenSSLCertUtils.ll +++ b/bench/folly/optimized/OpenSSLCertUtils.ll @@ -3435,7 +3435,7 @@ define void @_ZN5folly3ssl16OpenSSLCertUtils19readCertsFromBufferENS_5RangeIPKhE 16: ; preds = %14 invoke void @__cxa_throw(ptr nonnull %15, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #23 - to label %109 unwind label %19 + to label %110 unwind label %19 17: ; preds = %14 %18 = landingpad { ptr, i32 } @@ -3596,34 +3596,34 @@ _ZNSt6vectorISt10unique_ptrI7x509_stN5folly23static_function_deleterIS1_XadL_Z9X call void @llvm.lifetime.start.p0(ptr nonnull %7) %69 = load ptr, ptr %22, align 8, !tbaa !103 %70 = load ptr, ptr %0, align 8, !tbaa !107 - %71 = ptrtoint ptr %69 to i64 %72 = ptrtoint ptr %70 to i64 - %73 = sub i64 %71, %72 - %74 = ashr exact i64 %73, 3 - store i64 %74, ptr %7, align 8, !tbaa !16 + %73 = ptrtoint ptr %71 to i64 + %74 = sub i64 %72, %73 + %75 = ashr exact i64 %74, 3 + store i64 %75, ptr %7, align 8, !tbaa !16 call void @llvm.lifetime.start.p0(ptr nonnull %8) invoke fastcc void @_ZN5folly3ssl12_GLOBAL__N_121getOpenSSLErrorStringB5cxx11Em(ptr dead_on_unwind noalias writable align 8 %8, i64 noundef %58) - to label %75 unwind label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit30.thread + to label %76 unwind label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit30.thread 75: ; preds = %67 invoke void @_ZN5folly2toINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEJA22_cmA3_cS6_ETnNSt9enable_ifIXaasr12IsSomeStringIT_EE5valueoonesZT0_Li1Entsr3std7is_sameISA_19__type_pack_elementIXmisPvDpT0_ELi1EEJvSD_EEEE5valueEiE4typeELi0EEESA_DpRKSC_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %6, ptr noundef nonnull align 1 dereferenceable(22) @.str.15, ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 1 dereferenceable(3) @.str.16, ptr noundef nonnull align 8 dereferenceable(32) %8) - to label %76 unwind label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread - -76: ; preds = %75 - invoke void @_ZNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) %68, ptr noundef nonnull align 8 dereferenceable(32) %6) - to label %77 unwind label %79 + to label %77 unwind label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread 77: ; preds = %76 - invoke void @__cxa_throw(ptr nonnull %68, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #23 - to label %109 unwind label %79 + invoke void @_ZNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) %69, ptr noundef nonnull align 8 dereferenceable(32) %6) + to label %78 unwind label %79 -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit30.thread: ; preds = %67 - %78 = landingpad { ptr, i32 } +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit30.thread: ; preds = %77 + invoke void @__cxa_throw(ptr nonnull %69, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #23 + to label %110 unwind label %80 + +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit30.thread: ; preds = %68 + %79 = landingpad { ptr, i32 } cleanup br label %.sink.split -79: ; preds = %77, %76 - %.0 = phi i1 [ false, %77 ], [ true, %76 ] +79: ; preds = %78, %77 + %.0 = phi i1 [ false, %78 ], [ true, %77 ] %80 = landingpad { ptr, i32 } cleanup %81 = load ptr, ptr %6, align 8, !tbaa !18 @@ -3671,37 +3671,37 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i28 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 %6) - br i1 %.0, label %100, label %101 + br i1 %.0, label %101, label %101 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit30: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit 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 %6) - br i1 %.0, label %100, label %101 + br i1 %.0, label %101, label %101 .sink.split: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit30.thread, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit30.thread46, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i28.thread - %.pn.pn39.ph = phi { ptr, i32 } [ %89, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i28.thread ], [ %89, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit30.thread46 ], [ %78, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit30.thread ] + %.pn.pn39.ph = phi { ptr, i32 } [ %89, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i28.thread ], [ %89, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit30.thread46 ], [ %79, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit30.thread ] 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 %6) - br label %100 - -100: ; preds = %.sink.split, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i28, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit30 - %.pn.pn39 = phi { ptr, i32 } [ %80, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i28 ], [ %80, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit30 ], [ %.pn.pn39.ph, %.sink.split ] - call void @__cxa_free_exception(ptr %68) #21 br label %101 +101: ; preds = %.sink.split, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i28, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit30 + %.pn.pn39 = phi { ptr, i32 } [ %81, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i28 ], [ %81, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit30 ], [ %.pn.pn39.ph, %.sink.split ] + call void @__cxa_free_exception(ptr %69) #21 + br label %102 + _ZNSt10unique_ptrI7x509_stN5folly23static_function_deleterIS0_XadL_Z9X509_freeEEEEED2Ev.exit: ; preds = %.noexc, %_ZNSt6vectorISt10unique_ptrI7x509_stN5folly23static_function_deleterIS1_XadL_Z9X509_freeEEEEESaIS5_EE9push_backEOS5_.exit.thread call void @llvm.lifetime.end.p0(ptr nonnull %5) br label %24 -101: ; preds = %.loopexit, %.loopexit.split-lp, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i28, %65, %100, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit30 - %.pn21 = phi { ptr, i32 } [ %80, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i28 ], [ %.pn.pn39, %100 ], [ %80, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit30 ], [ %66, %65 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] +101: ; preds = %.loopexit, %.loopexit.split-lp, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i28, %65, %101, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit30 + %.pn21 = phi { ptr, i32 } [ %80, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i28 ], [ %.pn.pn39, %101 ], [ %80, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit30 ], [ %66, %66 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] call void @_ZNSt10unique_ptrI7x509_stN5folly23static_function_deleterIS0_XadL_Z9X509_freeEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #21 br label %102 102: ; preds = %101, %55 - %.pn21.pn = phi { ptr, i32 } [ %.pn21, %101 ], [ %56, %55 ] + %.pn21.pn = phi { ptr, i32 } [ %.pn21, %102 ], [ %56, %55 ] call void @llvm.lifetime.end.p0(ptr nonnull %5) br label %107 @@ -3722,17 +3722,17 @@ _ZNSt10unique_ptrI6bio_stN5folly23static_function_deleterIS0_XadL_Z9BIO_vfreeEEE ret void 107: ; preds = %102, %53 - %.pn21.pn.pn = phi { ptr, i32 } [ %.pn21.pn, %102 ], [ %54, %53 ] + %.pn21.pn.pn = phi { ptr, i32 } [ %.pn21.pn, %103 ], [ %54, %53 ] call void @_ZNSt6vectorISt10unique_ptrI7x509_stN5folly23static_function_deleterIS1_XadL_Z9X509_freeEEEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #21 br label %108 108: ; preds = %107, %19, %17 - %.pn21.pn.pn.pn = phi { ptr, i32 } [ %.pn21.pn.pn, %107 ], [ %20, %19 ], [ %18, %17 ] + %.pn21.pn.pn.pn = phi { ptr, i32 } [ %.pn21.pn.pn, %108 ], [ %20, %19 ], [ %18, %17 ] call void @_ZNSt10unique_ptrI6bio_stN5folly23static_function_deleterIS0_XadL_Z9BIO_vfreeEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #21 call void @llvm.lifetime.end.p0(ptr nonnull %4) resume { ptr, i32 } %.pn21.pn.pn.pn -109: ; preds = %77, %16 +109: ; preds = %78, %16 unreachable } diff --git a/bench/folly/optimized/Zlib.ll b/bench/folly/optimized/Zlib.ll index ed7618dd1ad..86f18f94283 100644 --- a/bench/folly/optimized/Zlib.ll +++ b/bench/folly/optimized/Zlib.ll @@ -180,23 +180,17 @@ define internal fastcc void @_ZSt11make_uniqueIN5folly11compression4zlib12_GLOBA to label %.noexc unwind label %79 .noexc: ; preds = %1 - %.sroa.3.0.extract.shift.mask.i.i = and i64 %.0.val, -4294967296 - %10 = icmp eq i64 %.sroa.3.0.extract.shift.mask.i.i, 64424509440 - %.sroa.0.0.extract.trunc.i.i = trunc i64 %.0.val to i32 - %11 = icmp eq i32 %.sroa.0.0.extract.trunc.i.i, 0 - %or.cond.i.i = and i1 %10, %11 - %12 = icmp eq i32 %.sroa.0.0.extract.trunc.i.i, 1 - %or.cond5.i.i = and i1 %10, %12 - %..i.i = select i1 %or.cond5.i.i, i32 9, i32 0 - %.0.i.i = select i1 %or.cond.i.i, i32 4, i32 %..i.i - %or.cond5.i28.i = icmp eq i64 %.0.val, 64424509441 - %.str..str.1.i = select i1 %or.cond5.i28.i, ptr @.str, ptr @.str.1 - %13 = select i1 %or.cond5.i28.i, ptr getelementptr inbounds nuw (i8, ptr @.str, i64 4), ptr getelementptr inbounds nuw (i8, ptr @.str.1, i64 4) + %switch.selectcmp8.i.i = icmp eq i64 %.0.val, 64424509440 + %10 = icmp eq i64 %.0.val, 64424509441 + %switch.select.i.i = select i1 %10, i32 9, i32 0 + %switch.select9.i.i = select i1 %switch.selectcmp8.i.i, i32 4, i32 %switch.select.i.i + %.str..str.1.i = select i1 %10, ptr @.str, ptr @.str.1 + %10 = select i1 %switch.selectcmp.i.i, ptr getelementptr inbounds nuw (i8, ptr @.str, i64 4), ptr getelementptr inbounds nuw (i8, ptr @.str.1, i64 4) call void @llvm.lifetime.start.p0(ptr nonnull %2) %14 = getelementptr inbounds nuw i8, ptr %2, i64 4 store i32 %9, ptr %2, align 4, !tbaa !7 store i8 1, ptr %14, align 4, !tbaa !11 - invoke void @_ZN5folly11compression5CodecC2ENS0_9CodecTypeENS_8OptionalIiEENS_5RangeIPKcEE(ptr noundef nonnull align 8 dereferenceable(320) %7, i32 noundef %.0.i.i, ptr noundef nonnull %2, ptr nonnull %.str..str.1.i, ptr nonnull %13) + invoke void @_ZN5folly11compression5CodecC2ENS0_9CodecTypeENS_8OptionalIiEENS_5RangeIPKcEE(ptr noundef nonnull align 8 dereferenceable(320) %7, i32 noundef %switch.select9.i.i, ptr noundef nonnull %2, ptr nonnull %.str..str.1.i, ptr nonnull %10) to label %.noexc3 unwind label %79 .noexc3: ; preds = %.noexc @@ -243,15 +237,15 @@ define internal fastcc void @_ZSt11make_uniqueIN5folly11compression4zlib12_GLOBA call void @llvm.lifetime.start.p0(ptr nonnull %4) %34 = getelementptr inbounds nuw i8, ptr %3, i64 4 invoke void @_ZN5folly2toINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEJA45_ciETnNSt9enable_ifIXaasr12IsSomeStringIT_EE5valueoonesZT0_Li1Entsr3std7is_sameIS9_19__type_pack_elementIXmisPvDpT0_ELi1EEJvSC_EEEE5valueEiE4typeELi0EEES9_DpRKSB_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %4, ptr noundef nonnull align 1 dereferenceable(45) @.str.2, ptr noundef nonnull align 4 dereferenceable(4) %34) - to label %35 unwind label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i + to label %32 unwind label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i 35: ; preds = %32 invoke void @_ZNSt16invalid_argumentC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) %33, ptr noundef nonnull align 8 dereferenceable(32) %4) - to label %36 unwind label %38 + to label %33 unwind label %38 36: ; preds = %35 invoke void @__cxa_throw(ptr nonnull %33, ptr nonnull @_ZTISt16invalid_argument, ptr nonnull @_ZNSt16invalid_argumentD1Ev) #27 - to label %77 unwind label %38 + to label %74 unwind label %38 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i: ; preds = %32 %37 = landingpad { ptr, i32 } @@ -260,7 +254,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i: ; preds br label %.sink.split.i 38: ; preds = %36, %35 - %.011.i = phi i1 [ false, %36 ], [ true, %35 ] + %.011.i = phi i1 [ false, %33 ], [ true, %32 ] %39 = landingpad { ptr, i32 } cleanup %40 = load ptr, ptr %4, align 8, !tbaa !44 @@ -289,15 +283,15 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i: ; preds = %38 %50 = call ptr @__cxa_allocate_exception(i64 16) #26 call void @llvm.lifetime.start.p0(ptr nonnull %5) invoke void @_ZN5folly2toINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEJA43_ciETnNSt9enable_ifIXaasr12IsSomeStringIT_EE5valueoonesZT0_Li1Entsr3std7is_sameIS9_19__type_pack_elementIXmisPvDpT0_ELi1EEJvSC_EEEE5valueEiE4typeELi0EEES9_DpRKSB_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %5, ptr noundef nonnull align 1 dereferenceable(43) @.str.3, ptr noundef nonnull align 4 dereferenceable(4) %8) - to label %51 unwind label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit33.thread.i + to label %48 unwind label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit33.thread.i 51: ; preds = %49 invoke void @_ZNSt16invalid_argumentC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) %50, ptr noundef nonnull align 8 dereferenceable(32) %5) - to label %52 unwind label %54 + to label %49 unwind label %54 52: ; preds = %51 invoke void @__cxa_throw(ptr nonnull %50, ptr nonnull @_ZTISt16invalid_argument, ptr nonnull @_ZNSt16invalid_argumentD1Ev) #27 - to label %77 unwind label %54 + to label %74 unwind label %54 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit33.thread.i: ; preds = %49 %53 = landingpad { ptr, i32 } @@ -306,7 +300,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit33.thread.i: ; pre br label %.sink.split.i 54: ; preds = %52, %51 - %.09.i = phi i1 [ false, %52 ], [ true, %51 ] + %.09.i = phi i1 [ false, %49 ], [ true, %48 ] %55 = landingpad { ptr, i32 } cleanup %56 = load ptr, ptr %5, align 8, !tbaa !44 @@ -335,15 +329,15 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit33.i: ; preds = %5 call void @llvm.lifetime.start.p0(ptr nonnull %6) %66 = getelementptr inbounds nuw i8, ptr %3, i64 12 invoke void @_ZN5folly2toINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEJA36_ciETnNSt9enable_ifIXaasr12IsSomeStringIT_EE5valueoonesZT0_Li1Entsr3std7is_sameIS9_19__type_pack_elementIXmisPvDpT0_ELi1EEJvSC_EEEE5valueEiE4typeELi0EEES9_DpRKSB_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %6, ptr noundef nonnull align 1 dereferenceable(36) @.str.4, ptr noundef nonnull align 4 dereferenceable(4) %66) - to label %67 unwind label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit36.thread.i + to label %64 unwind label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit36.thread.i 67: ; preds = %64 invoke void @_ZNSt16invalid_argumentC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) %65, ptr noundef nonnull align 8 dereferenceable(32) %6) - to label %68 unwind label %70 + to label %65 unwind label %70 68: ; preds = %67 invoke void @__cxa_throw(ptr nonnull %65, ptr nonnull @_ZTISt16invalid_argument, ptr nonnull @_ZNSt16invalid_argumentD1Ev) #27 - to label %77 unwind label %70 + to label %74 unwind label %70 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit36.thread.i: ; preds = %64 %69 = landingpad { ptr, i32 } @@ -352,7 +346,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit36.thread.i: ; pre br label %.sink.split.i 70: ; preds = %68, %67 - %.0.i = phi i1 [ false, %68 ], [ true, %67 ] + %.0.i = phi i1 [ false, %65 ], [ true, %64 ] %71 = landingpad { ptr, i32 } cleanup %72 = load ptr, ptr %6, align 8, !tbaa !44 @@ -372,8 +366,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit36.i: ; preds = %7 br i1 %.0.i, label %.sink.split.i, label %.body .sink.split.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit36.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i34.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit36.thread.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit33.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i31.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit33.thread.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i - %.sink.i = phi ptr [ %50, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit33.i ], [ %33, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %33, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i ], [ %33, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i ], [ %50, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i31.i ], [ %50, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit33.thread.i ], [ %65, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i34.i ], [ %65, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit36.thread.i ], [ %65, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit36.i ] - %.pn22.pn.ph.i = phi { ptr, i32 } [ %55, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit33.i ], [ %39, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %39, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i ], [ %37, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i ], [ %55, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i31.i ], [ %53, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit33.thread.i ], [ %71, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i34.i ], [ %69, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit36.thread.i ], [ %71, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit36.i ] + %.sink.i = phi ptr [ %50, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit31.i ], [ %33, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %33, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i ], [ %33, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i ], [ %50, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i29.i ], [ %50, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit31.thread.i ], [ %65, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i32.i ], [ %65, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit34.thread.i ], [ %65, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit34.i ] + %.pn22.pn.ph.i = phi { ptr, i32 } [ %55, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit31.i ], [ %39, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %39, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i ], [ %37, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i ], [ %55, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i29.i ], [ %53, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit31.thread.i ], [ %71, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i32.i ], [ %69, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit34.thread.i ], [ %71, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit34.i ] call void @__cxa_free_exception(ptr %.sink.i) #26 br label %.body @@ -391,7 +385,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit36.i: ; preds = %7 br label %.body .body: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i31.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit33.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i34.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit36.i, %.sink.split.i, %79 - %eh.lpad-body = phi { ptr, i32 } [ %80, %79 ], [ %39, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %71, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit36.i ], [ %71, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i34.i ], [ %39, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i ], [ %55, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit33.i ], [ %55, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i31.i ], [ %.pn22.pn.ph.i, %.sink.split.i ] + %eh.lpad-body = phi { ptr, i32 } [ %80, %76 ], [ %39, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %71, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit34.i ], [ %71, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i32.i ], [ %39, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i ], [ %55, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit31.i ], [ %55, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i29.i ], [ %.pn22.pn.ph.i, %.sink.split.i ] call void @_ZdlPvm(ptr noundef nonnull %7, i64 noundef 320) #28 resume { ptr, i32 } %eh.lpad-body } diff --git a/bench/hermes/optimized/HiddenClass.ll b/bench/hermes/optimized/HiddenClass.ll index d09a7000902..0a9db602628 100644 --- a/bench/hermes/optimized/HiddenClass.ll +++ b/bench/hermes/optimized/HiddenClass.ll @@ -3393,11 +3393,10 @@ for.body.i.i: ; preds = %for.inc.i.i, %for.b if.then.i.i: ; preds = %for.body.i.i %second.i.i = getelementptr inbounds nuw i8, ptr %add.ptr.i.i, i64 4 %agg.tmp7.sroa.0.0.copyload.i.i = load i64, ptr %second.i.i, align 4 - %desc.sroa.0.0.extract.trunc.i.i.i = trunc i64 %agg.tmp7.sroa.0.0.copyload.i.i to i16 - %15 = and i16 %desc.sroa.0.0.extract.trunc.i.i.i, 20 - %or.cond.not.i.i.i = icmp ne i16 %15, 4 - %16 = and i16 %desc.sroa.0.0.extract.trunc.i.i.i, 8 - %tobool10.not.i.i.i = icmp eq i16 %16, 0 + %15 = and i64 %agg.tmp7.sroa.0.0.copyload.i.i, 20 + %or.cond.not.i.i.i = icmp ne i64 %15, 4 + %16 = and i64 %agg.tmp7.sroa.0.0.copyload.i.i, 8 + %tobool10.not.i.i.i = icmp eq i64 %16, 0 %retval.0.i.i.i = and i1 %or.cond.not.i.i.i, %tobool10.not.i.i.i br i1 %retval.0.i.i.i, label %if.end.i.i, label %"_ZN6hermes2vm11HiddenClass20forEachPropertyWhileIZNS1_14areAllReadOnlyENS0_6HandleIS1_EERNS0_7RuntimeEE3$_0EEbS4_S6_RKT_.exit" diff --git a/bench/hermes/optimized/JSObject.ll b/bench/hermes/optimized/JSObject.ll index 61e4d874331..e6f4bc73247 100644 --- a/bench/hermes/optimized/JSObject.ll +++ b/bench/hermes/optimized/JSObject.ll @@ -10381,7 +10381,6 @@ entry: %lengthDesc = alloca %"struct.hermes::vm::NamedPropertyDescriptor", align 4 %ref.tmp306 = alloca %"class.hermes::vm::TwineChar16", align 8 %ref.tmp342 = alloca %"class.hermes::vm::TwineChar16", align 8 - %dpFlags.sroa.0.0.extract.trunc = trunc i32 %dpFlags.coerce to i16 %agg.tmp.sroa.0.0.copyload.i.i = load i64, ptr %selfHandle.coerce, align 8 %and.i.i.i.i.i = and i64 %agg.tmp.sroa.0.0.copyload.i.i, 281474976710655 %0 = inttoptr i64 %and.i.i.i.i.i to ptr @@ -10658,8 +10657,8 @@ if.end.i.i.i.i.i.i105: ; preds = %if.end199 _ZN6hermes2vm13MutableHandleINS0_11HermesValueEEC2ERNS0_15HandleRootOwnerES2_.exit: ; preds = %if.then.i.i.i.i.i.i108, %if.end.i.i.i.i.i.i105 %retval.0.i.i.i.i.i.i107 = phi ptr [ %36, %if.then.i.i.i.i.i.i108 ], [ %call7.i.i.i.i.i.i106, %if.end.i.i.i.i.i.i105 ] - %38 = and i16 %dpFlags.sroa.0.0.extract.trunc, 448 - %or.cond.not = icmp eq i16 %38, 0 + %38 = and i32 %dpFlags.coerce, 448 + %or.cond.not = icmp eq i32 %38, 0 %retval.0.i.i.i.i.i.i67.valueOrAccessor.coerce = select i1 %or.cond.not, ptr %retval.0.i.i.i.i.i.i67, ptr %valueOrAccessor.coerce %storemerge = load i64, ptr %retval.0.i.i.i.i.i.i67.valueOrAccessor.coerce, align 8 store i64 %storemerge, ptr %retval.0.i.i.i.i.i.i107, align 8 @@ -10828,8 +10827,8 @@ if.end311: ; preds = %if.then290, %_ZN6he br i1 %53, label %if.then317, label %if.end346 if.then317: ; preds = %if.end311 - %54 = and i16 %dpFlags.sroa.0.0.extract.trunc, 256 - %tobool326.not = icmp eq i16 %54, 0 + %54 = and i32 %dpFlags.coerce, 256 + %tobool326.not = icmp eq i32 %54, 0 %spec.select366 = select i1 %tobool326.not, ptr @_ZN6hermes2vm15HandleRootOwner15undefinedValue_E, ptr %valueOrAccessor.coerce %agg.tmp.sroa.0.0.copyload.i.i.i204 = load i64, ptr %selfHandle.coerce, align 8 %and.i.i.i.i.i.i205 = and i64 %agg.tmp.sroa.0.0.copyload.i.i.i204, 281474976710655 @@ -11091,8 +11090,8 @@ if.end156: ; preds = %if.end130, %land.lh %tobool173.not = icmp eq i16 %25, 0 %26 = and i16 %dpFlags.sroa.0.0.extract.trunc, 128 %tobool179.not = icmp eq i16 %26, 0 - %27 = and i16 %dpFlags.sroa.0.0.extract.trunc, 464 - %or.cond22 = icmp eq i16 %27, 0 + %27 = and i32 %dpFlags.coerce, 464 + %or.cond22 = icmp eq i32 %27, 0 br i1 %or.cond22, label %if.end340, label %if.else181 if.else181: ; preds = %if.end156 diff --git a/bench/hermes/optimized/JSProxy.ll b/bench/hermes/optimized/JSProxy.ll index a0f5c63428a..aa3ce0ecd5f 100644 --- a/bench/hermes/optimized/JSProxy.ll +++ b/bench/hermes/optimized/JSProxy.ll @@ -2195,8 +2195,8 @@ if.end105: ; preds = %_ZN6hermes2vm13Muta br i1 %cmp.i87, label %cleanup, label %if.end114 if.end114: ; preds = %if.end105 - %20 = and i16 %dpFlags.sroa.0.0.extract.trunc, 36 - %21 = icmp ne i16 %20, 32 + %20 = and i32 %dpFlags.coerce, 36 + %21 = icmp ne i32 %20, 32 %22 = and i32 %call102, 256 %bf.cast.i.i92.not = icmp eq i32 %22, 0 br i1 %bf.cast.i.i92.not, label %if.then123, label %if.else134 @@ -4712,16 +4712,21 @@ entry: %okFlags.sroa.0.0.extract.trunc = trunc i32 %okFlags.coerce to i8 %0 = and i8 %okFlags.sroa.0.0.extract.trunc, 2 %bf.cast.i.not = icmp eq i8 %0, 0 - %bf.cast.i22 = trunc i32 %okFlags.coerce to i1 - %1 = and i8 %okFlags.sroa.0.0.extract.trunc, 6 - %2 = icmp eq i8 %1, 6 - %or.cond111 = and i1 %2, %bf.cast.i22 + %1 = and i32 %okFlags.coerce, 7 + %or.cond111 = icmp eq i32 %1, 7 + br i1 %or.cond111, label %if.then, label %if.end + +if.then: ; preds = %entry %retval.sroa.0.0.copyload.i.i.i = load i64, ptr %keys.coerce, align 8 %and.i.i.i.i.i = and i64 %retval.sroa.0.0.copyload.i.i.i, 281474976710655 %3 = inttoptr i64 %and.i.i.i.i.i to ptr - br i1 %or.cond111, label %return, label %if.end + br label %return if.end: ; preds = %entry + %bf.cast.i26 = trunc i32 %okFlags.coerce to i1 + %retval.sroa.0.0.copyload.i.i.i27 = load i64, ptr %keys.coerce, align 8 + %and.i.i.i.i.i28 = and i64 %retval.sroa.0.0.copyload.i.i.i27, 281474976710655 + %3 = inttoptr i64 %and.i.i.i.i.i28 to ptr %arrayidx.i.i = getelementptr inbounds nuw i8, ptr %3, i64 32 %retval.sroa.0.0.copyload.i.i = load i32, ptr %arrayidx.i.i, align 4 %conv.i1.i.i = and i32 %retval.sroa.0.0.copyload.i.i, 7 @@ -4797,11 +4802,11 @@ _ZNK6hermes2vm18SegmentedArrayBaseINS0_13HermesValue32EE2atILNS3_6InlineE0EEES2_ %retval.sroa.0.0.i.i = load i32, ptr %arrayidx.i.i.i, align 4 %13 = and i32 %retval.sroa.0.0.i.i, 7 %14 = icmp eq i32 %13, 5 - %15 = xor i1 %14, %bf.cast.i22 + %15 = xor i1 %14, %bf.cast.i26 br label %_ZNK6hermes2vm9ArrayImpl2atERNS0_7RuntimeEj.exit _ZNK6hermes2vm9ArrayImpl2atERNS0_7RuntimeEj.exit: ; preds = %for.body, %_ZNK6hermes2vm18SegmentedArrayBaseINS0_13HermesValue32EE2atILNS3_6InlineE0EEES2_RNS0_11PointerBaseEj.exit.i - %retval.sroa.0.0.i = phi i1 [ %15, %_ZNK6hermes2vm18SegmentedArrayBaseINS0_13HermesValue32EE2atILNS3_6InlineE0EEES2_RNS0_11PointerBaseEj.exit.i ], [ %bf.cast.i22, %for.body ] + %retval.sroa.0.0.i = phi i1 [ %15, %_ZNK6hermes2vm18SegmentedArrayBaseINS0_13HermesValue32EE2atILNS3_6InlineE0EEES2_RNS0_11PointerBaseEj.exit.i ], [ %bf.cast.i26, %for.body ] %not.retval.sroa.0.0.i = xor i1 %retval.sroa.0.0.i, true %inc = zext i1 %not.retval.sroa.0.0.i to i32 %spec.select = add i32 %count.0119, %inc @@ -4917,7 +4922,7 @@ _ZNK6hermes2vm9ArrayImpl2atERNS0_7RuntimeEj.exit72: ; preds = %cond.true.i49, %i br i1 %cmp.i74, label %cond.true, label %cond.false cond.true: ; preds = %_ZNK6hermes2vm9ArrayImpl2atERNS0_7RuntimeEj.exit72 - br i1 %bf.cast.i22, label %if.end56, label %for.inc87 + br i1 %bf.cast.i26, label %if.end56, label %for.inc87 cond.false: ; preds = %for.body48, %_ZNK6hermes2vm9ArrayImpl2atERNS0_7RuntimeEj.exit72 %retval.sroa.0.0.i48110 = phi i32 [ %retval.sroa.0.0.i.i71, %_ZNK6hermes2vm9ArrayImpl2atERNS0_7RuntimeEj.exit72 ], [ 7, %for.body48 ] @@ -5097,8 +5102,8 @@ cleanup: ; preds = %if.then63, %_ZN6her store ptr %21, ptr %next_.i.i, align 8 br label %return -return: ; preds = %entry, %for.end, %if.end32, %cleanup - %retval.sroa.0.0 = phi ptr [ inttoptr (i64 -1 to ptr), %if.end32 ], [ %retval.sroa.0.1, %cleanup ], [ %3, %for.end ], [ %3, %entry ] +return: ; preds = %for.end, %if.end32, %cleanup, %if.then + %retval.sroa.0.0 = phi ptr [ %2, %if.then ], [ %retval.sroa.0.1, %cleanup ], [ %3, %for.end ], [ inttoptr (i64 -1 to ptr), %if.end32 ] ret ptr %retval.sroa.0.0 } diff --git a/bench/icu/optimized/collationbuilder.ll b/bench/icu/optimized/collationbuilder.ll index 36389517417..f972016efcb 100644 --- a/bench/icu/optimized/collationbuilder.ll +++ b/bench/icu/optimized/collationbuilder.ll @@ -2078,28 +2078,25 @@ _ZNK6icu_779UVector6410elementAtiEi.exit.i: ; preds = %137 %142 = zext nneg i32 %.0104.lcssa to i64 %143 = getelementptr inbounds nuw i64, ptr %141, i64 %142 %144 = load i64, ptr %143, align 8, !tbaa !99 - %145 = trunc i64 %144 to i32 - %146 = and i32 %145, 3 - %.not.i = icmp ne i32 %146, 0 - %147 = and i64 %144, 64 - %.not21.i = icmp eq i64 %147, 0 - %or.cond156 = or i1 %.not21.i, %.not.i - br i1 %or.cond156, label %_ZNK6icu_7716CollationBuilder14findCommonNodeEii.exit, label %148 - -148: ; preds = %_ZNK6icu_779UVector6410elementAtiEi.exit.i - %149 = lshr i32 %145, 8 - %150 = and i32 %149, 1048575 - %151 = icmp slt i32 %150, %63 - br i1 %151, label %152, label %_ZNK6icu_779UVector6410elementAtiEi.exit24.i.preheader - -152: ; preds = %148 - %153 = zext nneg i32 %150 to i64 - %154 = getelementptr inbounds nuw i64, ptr %141, i64 %153 - %155 = load i64, ptr %154, align 8, !tbaa !99 + %145 = and i64 %144, 67 + %or.cond156.not = icmp eq i64 %145, 64 + br i1 %or.cond156.not, label %146, label %_ZNK6icu_7716CollationBuilder14findCommonNodeEii.exit + +146:; preds = %_ZNK6icu_779UVector6410elementAtiEi.exit.i + %147 = trunc i64 %144 to i32 + %148 = lshr i32 %147, 8 + %149 = and i32 %148, 1048575 + %150 = icmp slt i32 %149, %63 + br i1 %150, label %151, label %_ZNK6icu_779UVector6410elementAtiEi.exit24.i.preheader + +151:; preds = %146 + %152 = zext nneg i32 %149 to i64 + %153 = getelementptr inbounds nuw i64, ptr %141, i64 %152 + %154 = load i64, ptr %153, align 8, !tbaa !99 br label %_ZNK6icu_779UVector6410elementAtiEi.exit24.i.preheader -_ZNK6icu_779UVector6410elementAtiEi.exit24.i.preheader: ; preds = %152, %148 - %.0.i.ph = phi i64 [ %155, %152 ], [ 0, %148 ] +_ZNK6icu_779UVector6410elementAtiEi.exit24.i.preheader: ; preds = %151, %146 + %.0.i.ph = phi i64 [ %154, %151 ], [ 0, %146 ] br label %_ZNK6icu_779UVector6410elementAtiEi.exit24.i _ZNK6icu_779UVector6410elementAtiEi.exit24.i: ; preds = %_ZNK6icu_779UVector6410elementAtiEi.exit24.i.backedge, %_ZNK6icu_779UVector6410elementAtiEi.exit24.i.preheader @@ -2139,7 +2136,7 @@ _ZNK6icu_7716CollationBuilder14findCommonNodeEii.exit: ; preds = %_ZNK6icu_779UV br label %170 170: ; preds = %168, %_ZNK6icu_7716CollationBuilder14findCommonNodeEii.exit - %.5 = phi i32 [ %169, %168 ], [ %.018.i, %_ZNK6icu_7716CollationBuilder14findCommonNodeEii.exit ] + %.5 = phi i32 [ %169, %167 ], [ %.018.i, %_ZNK6icu_7716CollationBuilder14findCommonNodeEii.exit ] %171 = icmp sgt i32 %.5, -1 %172 = icmp slt i32 %.5, %63 %or.cond.i133 = select i1 %171, i1 %172, i1 false @@ -2178,7 +2175,7 @@ _ZNK6icu_779UVector6410elementAtiEi.exit134: ; preds = %170 br label %191 191: ; preds = %207, %183 - %.0103 = phi i32 [ %187, %183 ], [ %210, %207 ] + %.0103 = phi i32 [ %187, %182 ], [ %210, %206 ] %192 = icmp slt i32 %.0103, %188 br i1 %192, label %193, label %_ZNK6icu_779UVector6410elementAtiEi.exit136 @@ -2189,7 +2186,7 @@ _ZNK6icu_779UVector6410elementAtiEi.exit134: ; preds = %170 br label %_ZNK6icu_779UVector6410elementAtiEi.exit136 _ZNK6icu_779UVector6410elementAtiEi.exit136: ; preds = %191, %193 - %197 = phi i64 [ %196, %193 ], [ 0, %191 ] + %197 = phi i64 [ %196, %192 ], [ 0, %190 ] %198 = trunc i64 %197 to i32 %199 = and i32 %198, 3 %200 = icmp slt i32 %199, %1 @@ -2214,7 +2211,7 @@ _ZNK6icu_779UVector6410elementAtiEi.exit136: ; preds = %191, %193 br label %191, !llvm.loop !124 .loopexit: ; preds = %_ZNK6icu_779UVector6410elementAtiEi.exit136, %204 - %.1110 = phi i32 [ %206, %204 ], [ 1280, %_ZNK6icu_779UVector6410elementAtiEi.exit136 ] + %.1110 = phi i32 [ %206, %203 ], [ 1280, %_ZNK6icu_779UVector6410elementAtiEi.exit136 ] %211 = icmp eq i32 %.1110, %184 br i1 %211, label %221, label %212 @@ -2227,13 +2224,13 @@ _ZNK6icu_779UVector6410elementAtiEi.exit136: ; preds = %191, %193 br label %221 _ZNK6icu_779UVector6410elementAtiEi.exit134.thread: ; preds = %170, %_ZNK6icu_779UVector6410elementAtiEi.exit134 - %218 = phi i64 [ %177, %_ZNK6icu_779UVector6410elementAtiEi.exit134 ], [ 0, %170 ] + %218 = phi i64 [ %177, %_ZNK6icu_779UVector6410elementAtiEi.exit134 ], [ 0, %169 ] %219 = call noundef i32 @_ZN6icu_7716CollationBuilder17getWeight16BeforeEili(ptr noundef nonnull align 8 dereferenceable(616) %0, i32 poison, i64 noundef %218, i32 noundef %1) %220 = call noundef i32 @_ZN6icu_7716CollationBuilder20findOrInsertWeakNodeEijiR10UErrorCode(ptr noundef nonnull align 8 dereferenceable(616) %0, i32 noundef %.5, i32 noundef %219, i32 noundef %1, ptr noundef nonnull align 4 dereferenceable(4) %4) br label %221 221: ; preds = %.loopexit, %212, %_ZNK6icu_779UVector6410elementAtiEi.exit134.thread - %.8 = phi i32 [ %220, %_ZNK6icu_779UVector6410elementAtiEi.exit134.thread ], [ %187, %.loopexit ], [ %217, %212 ] + %.8 = phi i32 [ %220, %_ZNK6icu_779UVector6410elementAtiEi.exit134.thread ], [ %187, %.loopexit ], [ %217, %211 ] %222 = getelementptr inbounds nuw i8, ptr %0, i64 544 %223 = load i32, ptr %222, align 8, !tbaa !92 %224 = sext i32 %223 to i64 @@ -2263,8 +2260,8 @@ _ZNK6icu_779UVector6410elementAtiEi.exit134.thread: ; preds = %170, %_ZNK6icu_77 br label %_ZN6icu_7716CollationBuilder10ceStrengthEl.exit _ZN6icu_7716CollationBuilder10ceStrengthEl.exit: ; preds = %127, %_ZNK6icu_779UVector6410elementAtiEi.exit131, %235, %234, %231, %92 - %.1105 = phi i32 [ %94, %92 ], [ %.8, %234 ], [ %.8, %235 ], [ %.8, %231 ], [ %.3107, %_ZNK6icu_779UVector6410elementAtiEi.exit131 ], [ %.3107, %127 ] - %.0 = phi i32 [ %1, %92 ], [ 0, %234 ], [ %238, %235 ], [ %233, %231 ], [ 0, %_ZNK6icu_779UVector6410elementAtiEi.exit131 ], [ 0, %127 ] + %.1105 = phi i32 [ %94, %92 ], [ %.8, %233 ], [ %.8, %234 ], [ %.8, %230 ], [ %.3107, %_ZNK6icu_779UVector6410elementAtiEi.exit131 ], [ %.3107, %127 ] + %.0 = phi i32 [ %1, %92 ], [ 0, %233 ], [ %238, %234 ], [ %233, %230 ], [ 0, %_ZNK6icu_779UVector6410elementAtiEi.exit131 ], [ 0, %127 ] %239 = load i32, ptr %4, align 4, !tbaa !20 %240 = icmp slt i32 %239, 1 br i1 %240, label %242, label %241 @@ -4409,28 +4406,25 @@ _ZNK6icu_779UVector6410elementAtiEi.exit.i: ; preds = %9 %16 = zext nneg i32 %1 to i64 %17 = getelementptr inbounds nuw i64, ptr %15, i64 %16 %18 = load i64, ptr %17, align 8, !tbaa !99 - %19 = trunc i64 %18 to i32 - %20 = and i32 %19, 3 - %.not.i = icmp ne i32 %20, 0 - %21 = and i64 %18, 64 - %.not21.i = icmp eq i64 %21, 0 - %or.cond = or i1 %.not21.i, %.not.i - br i1 %or.cond, label %_ZNK6icu_7716CollationBuilder14findCommonNodeEii.exit, label %22 - -22: ; preds = %_ZNK6icu_779UVector6410elementAtiEi.exit.i - %23 = lshr i32 %19, 8 - %24 = and i32 %23, 1048575 - %25 = icmp slt i32 %24, %12 - br i1 %25, label %26, label %_ZNK6icu_779UVector6410elementAtiEi.exit24.i.preheader - -26: ; preds = %22 - %27 = zext nneg i32 %24 to i64 - %28 = getelementptr inbounds nuw i64, ptr %15, i64 %27 - %29 = load i64, ptr %28, align 8, !tbaa !99 + %19 = and i64 %18, 67 + %or.cond.not = icmp eq i64 %19, 64 + br i1 %or.cond.not, label %20, label %_ZNK6icu_7716CollationBuilder14findCommonNodeEii.exit + +20:; preds = %_ZNK6icu_779UVector6410elementAtiEi.exit.i + %21 = trunc i64 %18 to i32 + %22 = lshr i32 %21, 8 + %23 = and i32 %22, 1048575 + %24 = icmp slt i32 %23, %12 + br i1 %24, label %25, label %_ZNK6icu_779UVector6410elementAtiEi.exit24.i.preheader + +25:; preds = %20 + %26 = zext nneg i32 %23 to i64 + %27 = getelementptr inbounds nuw i64, ptr %15, i64 %26 + %28 = load i64, ptr %27, align 8, !tbaa !99 br label %_ZNK6icu_779UVector6410elementAtiEi.exit24.i.preheader -_ZNK6icu_779UVector6410elementAtiEi.exit24.i.preheader: ; preds = %26, %22 - %.0.i.ph = phi i64 [ %29, %26 ], [ 0, %22 ] +_ZNK6icu_779UVector6410elementAtiEi.exit24.i.preheader: ; preds = %25, %20 + %.0.i.ph = phi i64 [ %28, %25 ], [ 0, %20 ] br label %_ZNK6icu_779UVector6410elementAtiEi.exit24.i _ZNK6icu_779UVector6410elementAtiEi.exit24.i: ; preds = %_ZNK6icu_779UVector6410elementAtiEi.exit24.i.backedge, %_ZNK6icu_779UVector6410elementAtiEi.exit24.i.preheader @@ -4477,28 +4471,25 @@ _ZNK6icu_779UVector6410elementAtiEi.exit.i27: ; preds = %41 %46 = zext nneg i32 %.018.i to i64 %47 = getelementptr inbounds nuw i64, ptr %45, i64 %46 %48 = load i64, ptr %47, align 8, !tbaa !99 - %49 = trunc i64 %48 to i32 - %50 = and i32 %49, 2 - %.not.i28 = icmp ne i32 %50, 0 - %51 = and i64 %48, 32 - %.not20.i = icmp eq i64 %51, 0 - %or.cond50 = or i1 %.not20.i, %.not.i28 - br i1 %or.cond50, label %_ZNK6icu_7716CollationBuilder14findCommonNodeEii.exit38, label %52 - -52: ; preds = %_ZNK6icu_779UVector6410elementAtiEi.exit.i27 - %53 = lshr i32 %49, 8 - %54 = and i32 %53, 1048575 - %55 = icmp slt i32 %54, %12 - br i1 %55, label %56, label %_ZNK6icu_779UVector6410elementAtiEi.exit24.i30.preheader - -56: ; preds = %52 - %57 = zext nneg i32 %54 to i64 - %58 = getelementptr inbounds nuw i64, ptr %45, i64 %57 - %59 = load i64, ptr %58, align 8, !tbaa !99 + %48 = and i64 %48, 34 + %or.cond50.not = icmp eq i64 %48, 32 + br i1 %or.cond50.not, label %49, label %_ZNK6icu_7716CollationBuilder14findCommonNodeEii.exit38 + +49:; preds = %_ZNK6icu_779UVector6410elementAtiEi.exit.i27 + %50 = trunc i64 %47 to i32 + %51 = lshr i32 %50, 8 + %52 = and i32 %51, 1048575 + %53 = icmp slt i32 %52, %12 + br i1 %53, label %54, label %_ZNK6icu_779UVector6410elementAtiEi.exit24.i30.preheader + +54:; preds = %49 + %55 = zext nneg i32 %52 to i64 + %56 = getelementptr inbounds nuw i64, ptr %44, i64 %55 + %57 = load i64, ptr %56, align 8, !tbaa !99 br label %_ZNK6icu_779UVector6410elementAtiEi.exit24.i30.preheader -_ZNK6icu_779UVector6410elementAtiEi.exit24.i30.preheader: ; preds = %56, %52 - %.0.i31.ph = phi i64 [ %59, %56 ], [ 0, %52 ] +_ZNK6icu_779UVector6410elementAtiEi.exit24.i30.preheader: ; preds = %54, %49 + %.0.i31.ph = phi i64 [ %57, %54 ], [ 0, %49 ] br label %_ZNK6icu_779UVector6410elementAtiEi.exit24.i30 _ZNK6icu_779UVector6410elementAtiEi.exit24.i30: ; preds = %_ZNK6icu_779UVector6410elementAtiEi.exit24.i30.backedge, %_ZNK6icu_779UVector6410elementAtiEi.exit24.i30.preheader @@ -4529,8 +4520,8 @@ _ZNK6icu_779UVector6410elementAtiEi.exit24.i30.backedge: ; preds = %_ZNK6icu_779 br label %_ZNK6icu_779UVector6410elementAtiEi.exit24.i30, !llvm.loop !123 _ZNK6icu_7716CollationBuilder14findCommonNodeEii.exit38: ; preds = %_ZNK6icu_779UVector6410elementAtiEi.exit26.thread.i36, %._ZNK6icu_7716CollationBuilder14findCommonNodeEii.exit38_crit_edge, %41, %_ZNK6icu_779UVector6410elementAtiEi.exit.i27, %_ZNK6icu_7716CollationBuilder14findCommonNodeEii.exit - %71 = phi i32 [ %.pre, %._ZNK6icu_7716CollationBuilder14findCommonNodeEii.exit38_crit_edge ], [ %12, %_ZNK6icu_7716CollationBuilder14findCommonNodeEii.exit ], [ %12, %_ZNK6icu_779UVector6410elementAtiEi.exit.i27 ], [ %12, %41 ], [ %12, %_ZNK6icu_779UVector6410elementAtiEi.exit26.thread.i36 ] - %.018 = phi i32 [ %1, %._ZNK6icu_7716CollationBuilder14findCommonNodeEii.exit38_crit_edge ], [ %.018.i, %_ZNK6icu_7716CollationBuilder14findCommonNodeEii.exit ], [ %.018.i, %_ZNK6icu_779UVector6410elementAtiEi.exit.i27 ], [ %.018.i, %41 ], [ %62, %_ZNK6icu_779UVector6410elementAtiEi.exit26.thread.i36 ] + %71 = phi i32 [ %.pre, %._ZNK6icu_7716CollationBuilder14findCommonNodeEii.exit38_crit_edge ], [ %12, %_ZNK6icu_7716CollationBuilder14findCommonNodeEii.exit ], [ %12, %_ZNK6icu_779UVector6410elementAtiEi.exit.i27 ], [ %12, %40 ], [ %12, %_ZNK6icu_779UVector6410elementAtiEi.exit26.thread.i36 ] + %.018 = phi i32 [ %1, %._ZNK6icu_7716CollationBuilder14findCommonNodeEii.exit38_crit_edge ], [ %.018.i, %_ZNK6icu_7716CollationBuilder14findCommonNodeEii.exit ], [ %.018.i, %_ZNK6icu_779UVector6410elementAtiEi.exit.i27 ], [ %.018.i, %40 ], [ %62, %_ZNK6icu_779UVector6410elementAtiEi.exit26.thread.i36 ] %72 = getelementptr inbounds nuw i8, ptr %0, i64 584 %73 = icmp sgt i32 %.018, -1 %74 = getelementptr inbounds nuw i8, ptr %0, i64 592 @@ -4547,7 +4538,7 @@ _ZNK6icu_7716CollationBuilder14findCommonNodeEii.exit38: ; preds = %_ZNK6icu_779 br label %_ZNK6icu_779UVector6410elementAtiEi.exit _ZNK6icu_779UVector6410elementAtiEi.exit: ; preds = %_ZNK6icu_7716CollationBuilder14findCommonNodeEii.exit38, %78 - %82 = phi i64 [ %81, %78 ], [ 0, %_ZNK6icu_7716CollationBuilder14findCommonNodeEii.exit38 ] + %82 = phi i64 [ %81, %76 ], [ 0, %_ZNK6icu_7716CollationBuilder14findCommonNodeEii.exit38 ] %83 = getelementptr inbounds nuw i8, ptr %0, i64 608 br label %84 @@ -4615,7 +4606,7 @@ _ZN6icu_779UVector6410addElementElR10UErrorCode.exit.i: ; preds = %_ZN6icu_779UV br label %_ZNK6icu_779UVector6410elementAtiEi.exit.i42 _ZNK6icu_779UVector6410elementAtiEi.exit.i42: ; preds = %109, %105 - %115 = phi i64 [ %114, %109 ], [ 0, %105 ] + %115 = phi i64 [ %114, %107 ], [ 0, %103 ] %116 = shl i32 %71, 8 %117 = sext i32 %116 to i64 %118 = or i64 %115, %117 @@ -4633,7 +4624,7 @@ _ZNK6icu_779UVector6410elementAtiEi.exit.i42: ; preds = %109, %105 br label %_ZNK6icu_779UVector6410elementAtiEi.exit44 _ZNK6icu_779UVector6410elementAtiEi.exit44: ; preds = %119, %121 - %125 = phi i64 [ %124, %121 ], [ 0, %119 ] + %125 = phi i64 [ %124, %119 ], [ 0, %117 ] %126 = trunc i64 %125 to i32 %127 = and i32 %126, 3 %.not25 = icmp sgt i32 %127, %2 diff --git a/bench/jq/optimized/jv.ll b/bench/jq/optimized/jv.ll index 4dd10e7cee4..21836c2f0a9 100644 --- a/bench/jq/optimized/jv.ll +++ b/bench/jq/optimized/jv.ll @@ -1580,9 +1580,9 @@ define dso_local range(i32 0, 2) i32 @jv_equal(i64 %0, ptr %1, i64 %2, ptr %3) l br i1 %.not, label %7, label %jvp_array_equal.exit 7: ; preds = %4 - %8 = and i32 %.sroa.0.0.extract.trunc.i, 128 - %9 = and i32 %8, %.sroa.0.0.extract.trunc - %or.cond.not.not = icmp eq i32 %9, 0 + %8 = and i64 %0, 128 + %9 = and i64 %8, %2 + %or.cond.not.not = icmp eq i64 %9, 0 br i1 %or.cond.not.not, label %16, label %10 10: ; preds = %7 diff --git a/bench/libigl/optimized/ViewerCore.ll b/bench/libigl/optimized/ViewerCore.ll index b75399a36e3..592c2a85057 100644 --- a/bench/libigl/optimized/ViewerCore.ll +++ b/bench/libigl/optimized/ViewerCore.ll @@ -1877,36 +1877,37 @@ define dso_local void @_ZN3igl6opengl10ViewerCore11draw_bufferERNS0_10ViewerData %16 = getelementptr inbounds nuw i8, ptr %3, i64 16 %17 = load i64, ptr %16, align 8, !tbaa !149 %18 = trunc i64 %17 to i32 - %19 = or i32 %18, %15 - %or.cond = icmp eq i32 %19, 0 - %20 = getelementptr inbounds nuw i8, ptr %0, i64 216 - %21 = load float, ptr %20, align 8 - %22 = fptoui float %21 to i32 - %23 = getelementptr inbounds nuw i8, ptr %0, i64 220 - %24 = load float, ptr %23, align 4 - %25 = fptoui float %24 to i32 - %.073 = select i1 %or.cond, i32 %25, i32 %18 - %.068 = select i1 %or.cond, i32 %22, i32 %15 - %26 = zext i32 %.068 to i64 - %27 = zext i32 %.073 to i64 - %28 = icmp eq i32 %.068, 0 - %29 = icmp eq i32 %.073, 0 - %or.cond.i.i = or i1 %28, %29 - br i1 %or.cond.i.i, label %_ZN5Eigen8internal28check_rows_cols_for_overflowILin1EE3runIlEEvT_S4_.exit.i, label %30 - -30: ; preds = %7 - %31 = udiv i64 9223372036854775807, %27 - %32 = icmp samesign ult i64 %31, %26 - br i1 %32, label %33, label %_ZN5Eigen8internal28check_rows_cols_for_overflowILin1EE3runIlEEvT_S4_.exit.i - -33: ; preds = %30 - %34 = tail call ptr @__cxa_allocate_exception(i64 8) #21 - store ptr getelementptr inbounds nuw inrange(-16, 24) (i8, ptr @_ZTVSt9bad_alloc, i64 16), ptr %34, align 8, !tbaa !40 - tail call void @__cxa_throw(ptr nonnull %34, ptr nonnull @_ZTISt9bad_alloc, ptr nonnull @_ZNSt9bad_allocD1Ev) #22 + %19 = or i64 %17, %14 + %20 = and i64 %19, 4294967295 + %or.cond = icmp eq i64 %20, 0 + %21 = getelementptr inbounds nuw i8, ptr %0, i64 216 + %22 = load float, ptr %21, align 8 + %23 = fptoui float %22 to i32 + %24 = getelementptr inbounds nuw i8, ptr %0, i64 220 + %25 = load float, ptr %24, align 4 + %26 = fptoui float %25 to i32 + %.068 = select i1 %or.cond, i32 %26, i32 %18 + %.068 = select i1 %or.cond, i32 %23, i32 %15 + %27 = zext i32 %.068 to i64 + %28 = zext i32 %.068 to i64 + %29 = icmp eq i32 %.068, 0 + %30 = icmp eq i32 %.068, 0 + %or.cond.i.i = or i1 %29, %30 + br i1 %or.cond.i.i, label %_ZN5Eigen8internal28check_rows_cols_for_overflowILin1EE3runIlEEvT_S4_.exit.i, label %31 + +31:; preds = %7 + %32 = udiv i64 9223372036854775807, %28 + %33 = icmp samesign ult i64 %32, %27 + br i1 %33, label %34, label %_ZN5Eigen8internal28check_rows_cols_for_overflowILin1EE3runIlEEvT_S4_.exit.i + +34:; preds = %31 + %35 = tail call ptr @__cxa_allocate_exception(i64 8) #21 + store ptr getelementptr inbounds nuw inrange(-16, 24) (i8, ptr @_ZTVSt9bad_alloc, i64 16), ptr %35, align 8, !tbaa !40 + tail call void @__cxa_throw(ptr nonnull %35, ptr nonnull @_ZTISt9bad_alloc, ptr nonnull @_ZNSt9bad_allocD1Ev) #22 unreachable -_ZN5Eigen8internal28check_rows_cols_for_overflowILin1EE3runIlEEvT_S4_.exit.i: ; preds = %30, %7 - %35 = mul nuw nsw i64 %27, %26 +_ZN5Eigen8internal28check_rows_cols_for_overflowILin1EE3runIlEEvT_S4_.exit.i: ; preds = %31, %7 + %35 = mul nuw nsw i64 %28, %27 %36 = mul nsw i64 %17, %14 %.not.i.i = icmp eq i64 %35, %36 br i1 %.not.i.i, label %_ZN5Eigen15PlainObjectBaseINS_6MatrixIhLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exit, label %37 @@ -1929,18 +1930,18 @@ _ZN5Eigen8internal28check_rows_cols_for_overflowILin1EE3runIlEEvT_S4_.exit.i: ; unreachable .sink.split.i.i: ; preds = %39, %37 - %.sink.i.i = phi ptr [ %40, %39 ], [ null, %37 ] + %.sink.i.i = phi ptr [ %40, %40 ], [ null, %38 ] store ptr %.sink.i.i, ptr %3, align 8, !tbaa !150 br label %_ZN5Eigen15PlainObjectBaseINS_6MatrixIhLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exit _ZN5Eigen15PlainObjectBaseINS_6MatrixIhLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exit: ; preds = %_ZN5Eigen8internal28check_rows_cols_for_overflowILin1EE3runIlEEvT_S4_.exit.i, %.sink.split.i.i - store i64 %26, ptr %13, align 8, !tbaa !148 - store i64 %27, ptr %16, align 8, !tbaa !149 + store i64 %27, ptr %13, align 8, !tbaa !148 + store i64 %28, ptr %16, align 8, !tbaa !149 br i1 %or.cond.i.i, label %_ZN5Eigen8internal28check_rows_cols_for_overflowILin1EE3runIlEEvT_S4_.exit.i77, label %44 44: ; preds = %_ZN5Eigen15PlainObjectBaseINS_6MatrixIhLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exit - %45 = udiv i64 9223372036854775807, %27 - %46 = icmp samesign ult i64 %45, %26 + %45 = udiv i64 9223372036854775807, %28 + %46 = icmp samesign ult i64 %45, %27 br i1 %46, label %47, label %_ZN5Eigen8internal28check_rows_cols_for_overflowILin1EE3runIlEEvT_S4_.exit.i77 47: ; preds = %44 @@ -1976,18 +1977,18 @@ _ZN5Eigen8internal28check_rows_cols_for_overflowILin1EE3runIlEEvT_S4_.exit.i77: unreachable .sink.split.i.i79: ; preds = %56, %54 - %.sink.i.i80 = phi ptr [ %57, %56 ], [ null, %54 ] + %.sink.i.i80 = phi ptr [ %57, %57 ], [ null, %55 ] store ptr %.sink.i.i80, ptr %4, align 8, !tbaa !150 br label %_ZN5Eigen15PlainObjectBaseINS_6MatrixIhLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exit81 _ZN5Eigen15PlainObjectBaseINS_6MatrixIhLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exit81: ; preds = %_ZN5Eigen8internal28check_rows_cols_for_overflowILin1EE3runIlEEvT_S4_.exit.i77, %.sink.split.i.i79 - store i64 %26, ptr %49, align 8, !tbaa !148 - store i64 %27, ptr %51, align 8, !tbaa !149 + store i64 %27, ptr %49, align 8, !tbaa !148 + store i64 %28, ptr %51, align 8, !tbaa !149 br i1 %or.cond.i.i, label %_ZN5Eigen8internal28check_rows_cols_for_overflowILin1EE3runIlEEvT_S4_.exit.i83, label %61 61: ; preds = %_ZN5Eigen15PlainObjectBaseINS_6MatrixIhLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exit81 - %62 = udiv i64 9223372036854775807, %27 - %63 = icmp samesign ult i64 %62, %26 + %62 = udiv i64 9223372036854775807, %28 + %63 = icmp samesign ult i64 %62, %27 br i1 %63, label %64, label %_ZN5Eigen8internal28check_rows_cols_for_overflowILin1EE3runIlEEvT_S4_.exit.i83 64: ; preds = %61 @@ -2023,18 +2024,18 @@ _ZN5Eigen8internal28check_rows_cols_for_overflowILin1EE3runIlEEvT_S4_.exit.i83: unreachable .sink.split.i.i85: ; preds = %73, %71 - %.sink.i.i86 = phi ptr [ %74, %73 ], [ null, %71 ] + %.sink.i.i86 = phi ptr [ %74, %74 ], [ null, %72 ] store ptr %.sink.i.i86, ptr %5, align 8, !tbaa !150 br label %_ZN5Eigen15PlainObjectBaseINS_6MatrixIhLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exit87 _ZN5Eigen15PlainObjectBaseINS_6MatrixIhLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exit87: ; preds = %_ZN5Eigen8internal28check_rows_cols_for_overflowILin1EE3runIlEEvT_S4_.exit.i83, %.sink.split.i.i85 - store i64 %26, ptr %66, align 8, !tbaa !148 - store i64 %27, ptr %68, align 8, !tbaa !149 + store i64 %27, ptr %66, align 8, !tbaa !148 + store i64 %28, ptr %68, align 8, !tbaa !149 br i1 %or.cond.i.i, label %_ZN5Eigen8internal28check_rows_cols_for_overflowILin1EE3runIlEEvT_S4_.exit.i89, label %78 78: ; preds = %_ZN5Eigen15PlainObjectBaseINS_6MatrixIhLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exit87 - %79 = udiv i64 9223372036854775807, %27 - %80 = icmp samesign ult i64 %79, %26 + %79 = udiv i64 9223372036854775807, %28 + %80 = icmp samesign ult i64 %79, %27 br i1 %80, label %81, label %_ZN5Eigen8internal28check_rows_cols_for_overflowILin1EE3runIlEEvT_S4_.exit.i89 81: ; preds = %78 @@ -2070,140 +2071,140 @@ _ZN5Eigen8internal28check_rows_cols_for_overflowILin1EE3runIlEEvT_S4_.exit.i89: unreachable .sink.split.i.i91: ; preds = %90, %88 - %.sink.i.i92 = phi ptr [ %91, %90 ], [ null, %88 ] + %.sink.i.i92 = phi ptr [ %91, %91 ], [ null, %89 ] store ptr %.sink.i.i92, ptr %6, align 8, !tbaa !150 br label %95 95: ; preds = %.sink.split.i.i91, %_ZN5Eigen8internal28check_rows_cols_for_overflowILin1EE3runIlEEvT_S4_.exit.i89 - store i64 %26, ptr %83, align 8, !tbaa !148 - store i64 %27, ptr %85, align 8, !tbaa !149 + store i64 %27, ptr %83, align 8, !tbaa !148 + store i64 %28, ptr %85, align 8, !tbaa !149 call void @llvm.lifetime.start.p0(ptr nonnull %8) %96 = load ptr, ptr @glad_glGenFramebuffers, align 8, !tbaa !58 - call void %96(i32 noundef 1, ptr noundef nonnull %8) + call void %97(i32 noundef 1, ptr noundef nonnull %8) %97 = load ptr, ptr @glad_glBindFramebuffer, align 8, !tbaa !58 %98 = load i32, ptr %8, align 4, !tbaa !105 - call void %97(i32 noundef 36160, i32 noundef %98) + call void %98(i32 noundef 36160, i32 noundef %98) call void @llvm.lifetime.start.p0(ptr nonnull %9) %99 = load ptr, ptr @glad_glGenTextures, align 8, !tbaa !58 - call void %99(i32 noundef 1, ptr noundef nonnull %9) + call void %100(i32 noundef 1, ptr noundef nonnull %9) %100 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !58 %101 = load i32, ptr %9, align 4, !tbaa !105 - call void %100(i32 noundef 37120, i32 noundef %101) + call void %101(i32 noundef 37120, i32 noundef %101) %102 = load ptr, ptr @glad_glTexImage2DMultisample, align 8, !tbaa !58 - call void %102(i32 noundef 37120, i32 noundef 4, i32 noundef 6408, i32 noundef %.068, i32 noundef %.073, i8 noundef zeroext 1) + call void %103(i32 noundef 37120, i32 noundef 4, i32 noundef 6408, i32 noundef %.068, i32 noundef %.073, i8 noundef zeroext 1) %103 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !58 - call void %103(i32 noundef 37120, i32 noundef 0) + call void %104(i32 noundef 37120, i32 noundef 0) %104 = load ptr, ptr @glad_glFramebufferTexture2D, align 8, !tbaa !58 %105 = load i32, ptr %9, align 4, !tbaa !105 - call void %104(i32 noundef 36160, i32 noundef 36064, i32 noundef 37120, i32 noundef %105, i32 noundef 0) + call void %105(i32 noundef 36160, i32 noundef 36064, i32 noundef 37120, i32 noundef %105, i32 noundef 0) call void @llvm.lifetime.start.p0(ptr nonnull %10) %106 = load ptr, ptr @glad_glGenRenderbuffers, align 8, !tbaa !58 - call void %106(i32 noundef 1, ptr noundef nonnull %10) + call void %107(i32 noundef 1, ptr noundef nonnull %10) %107 = load ptr, ptr @glad_glBindRenderbuffer, align 8, !tbaa !58 %108 = load i32, ptr %10, align 4, !tbaa !105 - call void %107(i32 noundef 36161, i32 noundef %108) + call void %108(i32 noundef 36161, i32 noundef %108) %109 = load ptr, ptr @glad_glRenderbufferStorageMultisample, align 8, !tbaa !58 - call void %109(i32 noundef 36161, i32 noundef 4, i32 noundef 35056, i32 noundef %.068, i32 noundef %.073) + call void %110(i32 noundef 36161, i32 noundef 4, i32 noundef 35056, i32 noundef %.068, i32 noundef %.073) %110 = load ptr, ptr @glad_glBindRenderbuffer, align 8, !tbaa !58 - call void %110(i32 noundef 36161, i32 noundef 0) + call void %111(i32 noundef 36161, i32 noundef 0) %111 = load ptr, ptr @glad_glFramebufferRenderbuffer, align 8, !tbaa !58 %112 = load i32, ptr %10, align 4, !tbaa !105 - call void %111(i32 noundef 36160, i32 noundef 33306, i32 noundef 36161, i32 noundef %112) + call void %112(i32 noundef 36160, i32 noundef 33306, i32 noundef 36161, i32 noundef %112) %113 = load ptr, ptr @glad_glBindFramebuffer, align 8, !tbaa !58 - call void %113(i32 noundef 36160, i32 noundef 0) + call void %114(i32 noundef 36160, i32 noundef 0) call void @llvm.lifetime.start.p0(ptr nonnull %11) %114 = load ptr, ptr @glad_glGenFramebuffers, align 8, !tbaa !58 - call void %114(i32 noundef 1, ptr noundef nonnull %11) + call void %115(i32 noundef 1, ptr noundef nonnull %11) %115 = load ptr, ptr @glad_glBindFramebuffer, align 8, !tbaa !58 %116 = load i32, ptr %11, align 4, !tbaa !105 - call void %115(i32 noundef 36160, i32 noundef %116) + call void %116(i32 noundef 36160, i32 noundef %116) call void @llvm.lifetime.start.p0(ptr nonnull %12) %117 = load ptr, ptr @glad_glGenTextures, align 8, !tbaa !58 - call void %117(i32 noundef 1, ptr noundef nonnull %12) + call void %118(i32 noundef 1, ptr noundef nonnull %12) %118 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !58 %119 = load i32, ptr %12, align 4, !tbaa !105 - call void %118(i32 noundef 3553, i32 noundef %119) + call void %119(i32 noundef 3553, i32 noundef %119) %120 = load ptr, ptr @glad_glTexImage2D, align 8, !tbaa !58 - call void %120(i32 noundef 3553, i32 noundef 0, i32 noundef 6408, i32 noundef %.068, i32 noundef %.073, i32 noundef 0, i32 noundef 6408, i32 noundef 5121, ptr noundef null) - %121 = load ptr, ptr @glad_glTexParameteri, align 8, !tbaa !58 - call void %121(i32 noundef 3553, i32 noundef 10241, i32 noundef 9729) + call void %121(i32 noundef 3553, i32 noundef 0, i32 noundef 6408, i32 noundef %.068, i32 noundef %.073, i32 noundef 0, i32 noundef 6408, i32 noundef 5121, ptr noundef null) %122 = load ptr, ptr @glad_glTexParameteri, align 8, !tbaa !58 - call void %122(i32 noundef 3553, i32 noundef 10240, i32 noundef 9729) - %123 = load ptr, ptr @glad_glFramebufferTexture2D, align 8, !tbaa !58 - %124 = load i32, ptr %12, align 4, !tbaa !105 - call void %123(i32 noundef 36160, i32 noundef 36064, i32 noundef 3553, i32 noundef %124, i32 noundef 0) - %125 = load ptr, ptr @glad_glBindFramebuffer, align 8, !tbaa !58 - call void %125(i32 noundef 36160, i32 noundef 0) + call void %122(i32 noundef 3553, i32 noundef 10241, i32 noundef 9729) + %123 = load ptr, ptr @glad_glTexParameteri, align 8, !tbaa !58 + call void %123(i32 noundef 3553, i32 noundef 10240, i32 noundef 9729) + %124 = load ptr, ptr @glad_glFramebufferTexture2D, align 8, !tbaa !58 + %125 = load i32, ptr %12, align 4, !tbaa !105 + call void %124(i32 noundef 36160, i32 noundef 36064, i32 noundef 3553, i32 noundef %125, i32 noundef 0) %126 = load ptr, ptr @glad_glBindFramebuffer, align 8, !tbaa !58 - %127 = load i32, ptr %8, align 4, !tbaa !105 - call void %126(i32 noundef 36160, i32 noundef %127) - %128 = load ptr, ptr @glad_glClearColor, align 8, !tbaa !58 - %129 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %130 = load float, ptr %129, align 16, !tbaa !55 - %131 = getelementptr inbounds nuw i8, ptr %0, i64 20 - %132 = load float, ptr %131, align 4, !tbaa !55 - %133 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %134 = load float, ptr %133, align 8, !tbaa !55 - call void %128(float noundef %130, float noundef %132, float noundef %134, float noundef 0.000000e+00) - %135 = load ptr, ptr @glad_glClear, align 8, !tbaa !58 - call void %135(i32 noundef 16640) - %136 = getelementptr inbounds nuw i8, ptr %0, i64 208 - %.sroa.0118.0.copyload = load <4 x float>, ptr %136, align 16, !tbaa !44 - store float 0.000000e+00, ptr %136, align 16, !tbaa !55, !noalias !151 - %137 = getelementptr inbounds nuw i8, ptr %0, i64 212 - store float 0.000000e+00, ptr %137, align 4, !tbaa !55 - %138 = uitofp i32 %.068 to float - store float %138, ptr %20, align 8, !tbaa !55 - %139 = uitofp i32 %.073 to float - store float %139, ptr %23, align 4, !tbaa !55 + call void %126(i32 noundef 36160, i32 noundef 0) + %127 = load ptr, ptr @glad_glBindFramebuffer, align 8, !tbaa !58 + %128 = load i32, ptr %8, align 4, !tbaa !105 + call void %127(i32 noundef 36160, i32 noundef %128) + %130 = load ptr, ptr @glad_glClearColor, align 8, !tbaa !58 + %131 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %132 = load float, ptr %131, align 16, !tbaa !55 + %133 = getelementptr inbounds nuw i8, ptr %0, i64 20 + %134 = load float, ptr %133, align 4, !tbaa !55 + %134 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %135 = load float, ptr %134, align 8, !tbaa !55 + call void %129(float noundef %131, float noundef %134, float noundef %135, float noundef 0.000000e+00) + %136 = load ptr, ptr @glad_glClear, align 8, !tbaa !58 + call void %136(i32 noundef 16640) + %137 = getelementptr inbounds nuw i8, ptr %0, i64 208 + %.sroa.0118.0.copyload = load <4 x float>, ptr %137, align 16, !tbaa !44 + store float 0.000000e+00, ptr %137, align 16, !tbaa !55, !noalias !151 + %138 = getelementptr inbounds nuw i8, ptr %0, i64 212 + store float 0.000000e+00, ptr %138, align 4, !tbaa !55 + %139 = uitofp i32 %.068 to float + store float %139, ptr %21, align 8, !tbaa !55 + %140 = uitofp i32 %.073 to float + store float %140, ptr %24, align 4, !tbaa !55 call void @_ZN3igl6opengl10ViewerCore4drawERNS0_10ViewerDataEb(ptr noundef nonnull align 16 dereferenceable(544) %0, ptr noundef nonnull align 8 dereferenceable(1488) %1, i1 noundef zeroext %2) - store <4 x float> %.sroa.0118.0.copyload, ptr %136, align 16, !tbaa !44 + store <4 x float> %.sroa.0118.0.copyload, ptr %137, align 16, !tbaa !44 %140 = load ptr, ptr @glad_glBindFramebuffer, align 8, !tbaa !58 %141 = load i32, ptr %8, align 4, !tbaa !105 - call void %140(i32 noundef 36008, i32 noundef %141) + call void %141(i32 noundef 36008, i32 noundef %141) %142 = load ptr, ptr @glad_glBindFramebuffer, align 8, !tbaa !58 %143 = load i32, ptr %11, align 4, !tbaa !105 - call void %142(i32 noundef 36009, i32 noundef %143) + call void %143(i32 noundef 36009, i32 noundef %143) %144 = load ptr, ptr @glad_glBlitFramebuffer, align 8, !tbaa !58 - call void %144(i32 noundef 0, i32 noundef 0, i32 noundef %.068, i32 noundef %.073, i32 noundef 0, i32 noundef 0, i32 noundef %.068, i32 noundef %.073, i32 noundef 16384, i32 noundef 9728) + call void %145(i32 noundef 0, i32 noundef 0, i32 noundef %.068, i32 noundef %.073, i32 noundef 0, i32 noundef 0, i32 noundef %.068, i32 noundef %.073, i32 noundef 16384, i32 noundef 9728) %145 = load ptr, ptr @glad_glBindFramebuffer, align 8, !tbaa !58 %146 = load i32, ptr %11, align 4, !tbaa !105 - call void %145(i32 noundef 36160, i32 noundef %146) + call void %146(i32 noundef 36160, i32 noundef %146) %147 = shl i32 %.073, 2 %148 = mul i32 %147, %.068 %149 = zext i32 %148 to i64 %150 = call noalias ptr @calloc(i64 noundef %149, i64 noundef 1) #23 %151 = load ptr, ptr @glad_glReadPixels, align 8, !tbaa !58 - call void %151(i32 noundef 0, i32 noundef 0, i32 noundef %.068, i32 noundef %.073, i32 noundef 6408, i32 noundef 5121, ptr noundef %150) - %152 = load ptr, ptr @glad_glBindFramebuffer, align 8, !tbaa !58 - call void %152(i32 noundef 36009, i32 noundef 0) + call void %152(i32 noundef 0, i32 noundef 0, i32 noundef %.068, i32 noundef %.073, i32 noundef 6408, i32 noundef 5121, ptr noundef %150) %153 = load ptr, ptr @glad_glBindFramebuffer, align 8, !tbaa !58 - call void %153(i32 noundef 36008, i32 noundef 0) + call void %153(i32 noundef 36009, i32 noundef 0) %154 = load ptr, ptr @glad_glBindFramebuffer, align 8, !tbaa !58 - call void %154(i32 noundef 36160, i32 noundef 0) - %155 = load ptr, ptr @glad_glDeleteTextures, align 8, !tbaa !58 - call void %155(i32 noundef 1, ptr noundef nonnull %12) + call void %154(i32 noundef 36008, i32 noundef 0) + %155 = load ptr, ptr @glad_glBindFramebuffer, align 8, !tbaa !58 + call void %155(i32 noundef 36160, i32 noundef 0) %156 = load ptr, ptr @glad_glDeleteTextures, align 8, !tbaa !58 - call void %156(i32 noundef 1, ptr noundef nonnull %9) - %157 = load ptr, ptr @glad_glDeleteFramebuffers, align 8, !tbaa !58 - call void %157(i32 noundef 1, ptr noundef nonnull %8) + call void %156(i32 noundef 1, ptr noundef nonnull %12) + %157 = load ptr, ptr @glad_glDeleteTextures, align 8, !tbaa !58 + call void %157(i32 noundef 1, ptr noundef nonnull %9) %158 = load ptr, ptr @glad_glDeleteFramebuffers, align 8, !tbaa !58 - call void %158(i32 noundef 1, ptr noundef nonnull %11) - %159 = load ptr, ptr @glad_glDeleteRenderbuffers, align 8, !tbaa !58 - call void %159(i32 noundef 1, ptr noundef nonnull %10) - %brmerge = or i1 %29, %28 + call void %158(i32 noundef 1, ptr noundef nonnull %8) + %159 = load ptr, ptr @glad_glDeleteFramebuffers, align 8, !tbaa !58 + call void %159(i32 noundef 1, ptr noundef nonnull %11) + %160 = load ptr, ptr @glad_glDeleteRenderbuffers, align 8, !tbaa !58 + call void %160(i32 noundef 1, ptr noundef nonnull %10) + %brmerge = or i1 %30, %29 br i1 %brmerge, label %._crit_edge126, label %.preheader.us .preheader.us: ; preds = %95, %._crit_edge.us - %indvars.iv135 = phi i64 [ %indvars.iv.next136, %._crit_edge.us ], [ 0, %95 ] - %.067124.us = phi i64 [ %indvars.iv.next131, %._crit_edge.us ], [ 0, %95 ] + %indvars.iv135 = phi i64 [ %indvars.iv.next136, %._crit_edge.us ], [ 0, %96 ] + %.067124.us = phi i64 [ %indvars.iv.next131, %._crit_edge.us ], [ 0, %96 ] %sext = shl i64 %.067124.us, 32 %160 = ashr exact i64 %sext, 32 br label %161 161: ; preds = %.preheader.us, %161 - %indvars.iv130 = phi i64 [ %160, %.preheader.us ], [ %indvars.iv.next131, %161 ] - %indvars.iv = phi i64 [ 0, %.preheader.us ], [ %indvars.iv.next, %161 ] + %indvars.iv130 = phi i64 [ %160, %.preheader.us ], [ %indvars.iv.next131, %162 ] + %indvars.iv = phi i64 [ 0, %.preheader.us ], [ %indvars.iv.next, %162 ] %162 = shl nsw i64 %indvars.iv130, 2 %163 = getelementptr inbounds i8, ptr %150, i64 %162 %164 = load i8, ptr %163, align 1, !tbaa !44 @@ -2239,12 +2240,12 @@ _ZN5Eigen8internal28check_rows_cols_for_overflowILin1EE3runIlEEvT_S4_.exit.i89: store i8 %185, ptr %190, align 1, !tbaa !44 %indvars.iv.next131 = add nsw i64 %indvars.iv130, 1 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next, %26 + %exitcond.not = icmp eq i64 %indvars.iv.next, %27 br i1 %exitcond.not, label %._crit_edge.us, label %161, !llvm.loop !154 ._crit_edge.us: ; preds = %161 %indvars.iv.next136 = add nuw nsw i64 %indvars.iv135, 1 - %exitcond139.not = icmp eq i64 %indvars.iv.next136, %27 + %exitcond139.not = icmp eq i64 %indvars.iv.next136, %28 br i1 %exitcond139.not, label %._crit_edge126, label %.preheader.us, !llvm.loop !155 ._crit_edge126: ; preds = %._crit_edge.us, %95 diff --git a/bench/libigl/optimized/bijective_composite_harmonic_mapping.ll b/bench/libigl/optimized/bijective_composite_harmonic_mapping.ll index 30b6d45eabe..13c89b98d44 100644 --- a/bench/libigl/optimized/bijective_composite_harmonic_mapping.ll +++ b/bench/libigl/optimized/bijective_composite_harmonic_mapping.ll @@ -88,7 +88,7 @@ define weak_odr dso_local noundef zeroext i1 @_ZN3igl36bijective_composite_harmo br label %32 32: ; preds = %.lr.ph220, %218 - %.069218 = phi i32 [ %4, %.lr.ph220 ], [ %219, %218 ] + %.069218 = phi i32 [ %4, %.lr.ph221 ], [ %219, %223 ] %33 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi1ELin1ELin1EEEEaSIS2_EERS2_RKNS_9EigenBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 1 dereferenceable(1) %0) to label %.preheader unwind label %85 @@ -102,9 +102,9 @@ define weak_odr dso_local noundef zeroext i1 @_ZN3igl36bijective_composite_harmo br label %36 36: ; preds = %.lr.ph208, %210 - %.048207 = phi i32 [ 0, %.lr.ph208 ], [ %211, %210 ] - %.049206 = phi i32 [ 0, %.lr.ph208 ], [ %.3, %210 ] - %.052205 = phi i32 [ 0, %.lr.ph208 ], [ %.355, %210 ] + %.048207 = phi i32 [ 0, %.lr.ph209 ], [ %211, %215 ] + %.049206 = phi i32 [ 0, %.lr.ph209 ], [ %.3, %215 ] + %.052205 = phi i32 [ 0, %.lr.ph209 ], [ %.355, %215 ] %37 = uitofp nneg i32 %.048207 to double %38 = fdiv double %37, %34 call void @llvm.lifetime.start.p0(ptr nonnull %12) @@ -210,7 +210,7 @@ _ZN5Eigen8internal23check_size_for_overflowIdEEvm.exit.i.i: ; preds = %49 br label %.body _ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS_13CwiseBinaryOpINS_8internal13scalar_sum_opIddEEKS1_KNS3_INS4_17scalar_product_opIddEEKNS_14CwiseNullaryOpINS4_18scalar_constant_opIdEES7_EEKNS3_INS4_20scalar_difference_opIddEES7_S7_EEEEEEEERKNS_9EigenBaseIT_EE.exit: ; preds = %.lr.ph.i.i.i, %._crit_edge.i.i - br i1 %26, label %.lr.ph, label %._crit_edge + br i1 %26, label %.lr.ph, label %211 85: ; preds = %32 %86 = landingpad { ptr, i32 } @@ -218,8 +218,8 @@ _ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS_13CwiseBinaryOpINS_8internal13s br label %221 .lr.ph: ; preds = %_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS_13CwiseBinaryOpINS_8internal13scalar_sum_opIddEEKS1_KNS3_INS4_17scalar_product_opIddEEKNS_14CwiseNullaryOpINS4_18scalar_constant_opIdEES7_EEKNS3_INS4_20scalar_difference_opIddEES7_S7_EEEEEEEERKNS_9EigenBaseIT_EE.exit, %205 - %.047200 = phi i32 [ %206, %205 ], [ 0, %_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS_13CwiseBinaryOpINS_8internal13scalar_sum_opIddEEKS1_KNS3_INS4_17scalar_product_opIddEEKNS_14CwiseNullaryOpINS4_18scalar_constant_opIdEES7_EEKNS3_INS4_20scalar_difference_opIddEES7_S7_EEEEEEEERKNS_9EigenBaseIT_EE.exit ] - %.254199 = phi i32 [ %.4, %205 ], [ %.052205, %_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS_13CwiseBinaryOpINS_8internal13scalar_sum_opIddEEKS1_KNS3_INS4_17scalar_product_opIddEEKNS_14CwiseNullaryOpINS4_18scalar_constant_opIdEES7_EEKNS3_INS4_20scalar_difference_opIddEES7_S7_EEEEEEEERKNS_9EigenBaseIT_EE.exit ] + %.047200 = phi i32 [ %206, %207 ], [ 0, %_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS_13CwiseBinaryOpINS_8internal13scalar_sum_opIddEEKS1_KNS3_INS4_17scalar_product_opIddEEKNS_14CwiseNullaryOpINS4_18scalar_constant_opIdEES7_EEKNS3_INS4_20scalar_difference_opIddEES7_S7_EEEEEEEERKNS_9EigenBaseIT_EE.exit ] + %.254199 = phi i32 [ %.4, %207 ], [ %.052205, %_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS_13CwiseBinaryOpINS_8internal13scalar_sum_opIddEEKS1_KNS3_INS4_17scalar_product_opIddEEKNS_14CwiseNullaryOpINS4_18scalar_constant_opIdEES7_EEKNS3_INS4_20scalar_difference_opIddEES7_S7_EEEEEEEERKNS_9EigenBaseIT_EE.exit ] call void @llvm.lifetime.start.p0(ptr nonnull %13) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %13, i8 0, i64 24, i1 false) %87 = load ptr, ptr %8, align 8, !tbaa !36 @@ -262,7 +262,7 @@ _ZN5Eigen8internal23check_size_for_overflowIdEEvm.exit.i.i104: ; preds = %97 %102 = call ptr @__cxa_allocate_exception(i64 8) #13 store ptr getelementptr inbounds nuw inrange(-16, 24) (i8, ptr @_ZTVSt9bad_alloc, i64 16), ptr %102, align 8, !tbaa !27 invoke void @__cxa_throw(ptr nonnull %102, ptr nonnull @_ZTISt9bad_alloc, ptr nonnull @_ZNSt9bad_allocD1Ev) #14 - to label %.cont294 unwind label %112 + to label %.cont299 unwind label %112 .cont294: ; preds = %.invoke293 unreachable @@ -365,7 +365,7 @@ _ZN5Eigen8internal23check_size_for_overflowIdEEvm.exit.i.i111: ; preds = %134 %139 = call ptr @__cxa_allocate_exception(i64 8) #13 store ptr getelementptr inbounds nuw inrange(-16, 24) (i8, ptr @_ZTVSt9bad_alloc, i64 16), ptr %139, align 8, !tbaa !27 invoke void @__cxa_throw(ptr nonnull %139, ptr nonnull @_ZTISt9bad_alloc, ptr nonnull @_ZNSt9bad_allocD1Ev) #14 - to label %.cont296 unwind label %200 + to label %.cont301 unwind label %200 .cont296: ; preds = %.invoke295 unreachable @@ -424,12 +424,12 @@ _ZN5Eigen8internal23check_size_for_overflowIdEEvm.exit.i.i111: ; preds = %134 %158 = load ptr, ptr %8, align 8, !tbaa !36 %159 = load double, ptr %158, align 8, !tbaa !30 %160 = fcmp uno double %159, 0.000000e+00 - %161 = zext i1 %160 to i32 + %161 = zext i1 %160 to i64 %162 = icmp sgt i64 %154, 1 br i1 %162, label %.lr.ph.i.i.i.i, label %.preheader23.i.i.i.i .preheader23.i.i.i.i: ; preds = %.lr.ph.i.i.i.i, %157 - %.022.lcssa.i.i.i.i = phi i32 [ %161, %157 ], [ %179, %.lr.ph.i.i.i.i ] + %.022.lcssa.i.i.i.i = phi i64 [ %161, %157 ], [ %179, %.lr.ph.i.i.i.i ] %163 = icmp sgt i64 %153, 1 %164 = icmp sgt i64 %154, 0 %or.cond.i.i.i = and i1 %163, %164 @@ -437,19 +437,19 @@ _ZN5Eigen8internal23check_size_for_overflowIdEEvm.exit.i.i111: ; preds = %134 .preheader.us.i.i.i.i: ; preds = %.preheader23.i.i.i.i, %._crit_edge.us.i.i.i.i %.01634.us.i.i.i.i = phi i64 [ %174, %._crit_edge.us.i.i.i.i ], [ 1, %.preheader23.i.i.i.i ] - %.133.us.i.i.i.i = phi i32 [ %172, %._crit_edge.us.i.i.i.i ], [ %.022.lcssa.i.i.i.i, %.preheader23.i.i.i.i ] + %.133.us.i.i.i.i = phi i64 [ %172, %._crit_edge.us.i.i.i.i ], [ %.022.lcssa.i.i.i.i, %.preheader23.i.i.i.i ] %165 = mul nuw nsw i64 %.01634.us.i.i.i.i, %154 %166 = getelementptr double, ptr %158, i64 %165 br label %167 167: ; preds = %167, %.preheader.us.i.i.i.i %.030.us.i.i.i.i = phi i64 [ 0, %.preheader.us.i.i.i.i ], [ %173, %167 ] - %.229.us.i.i.i.i = phi i32 [ %.133.us.i.i.i.i, %.preheader.us.i.i.i.i ], [ %172, %167 ] + %.229.us.i.i.i.i = phi i64 [ %.133.us.i.i.i.i, %.preheader.us.i.i.i.i ], [ %172, %167 ] %168 = getelementptr double, ptr %166, i64 %.030.us.i.i.i.i %169 = load double, ptr %168, align 8, !tbaa !30 %170 = fcmp uno double %169, 0.000000e+00 - %171 = zext i1 %170 to i32 - %172 = add i32 %.229.us.i.i.i.i, %171 + %171 = zext i1 %170 to i64 + %172 = add nsw i64 %.229.us.i.i.i.i, %171 %173 = add nuw nsw i64 %.030.us.i.i.i.i, 1 %exitcond39.not.i.i.i.i = icmp eq i64 %173, %154 br i1 %exitcond39.not.i.i.i.i, label %._crit_edge.us.i.i.i.i, label %167, !llvm.loop !50 @@ -461,18 +461,18 @@ _ZN5Eigen8internal23check_size_for_overflowIdEEvm.exit.i.i111: ; preds = %134 .lr.ph.i.i.i.i: ; preds = %157, %.lr.ph.i.i.i.i %.01726.i.i.i.i = phi i64 [ %180, %.lr.ph.i.i.i.i ], [ 1, %157 ] - %.02225.i.i.i.i = phi i32 [ %179, %.lr.ph.i.i.i.i ], [ %161, %157 ] + %.02225.i.i.i.i = phi i64 [ %179, %.lr.ph.i.i.i.i ], [ %161, %157 ] %175 = getelementptr double, ptr %158, i64 %.01726.i.i.i.i %176 = load double, ptr %175, align 8, !tbaa !30 %177 = fcmp uno double %176, 0.000000e+00 - %178 = zext i1 %177 to i32 - %179 = add i32 %.02225.i.i.i.i, %178 + %178 = zext i1 %177 to i64 + %179 = add nuw nsw i64 %.02225.i.i.i.i, %178 %180 = add nuw nsw i64 %.01726.i.i.i.i, 1 %exitcond.not.i.i.i.i = icmp eq i64 %180, %154 br i1 %exitcond.not.i.i.i.i, label %.preheader23.i.i.i.i, label %.lr.ph.i.i.i.i, !llvm.loop !52 _ZNK5Eigen9DenseBaseINS_13CwiseBinaryOpINS_8internal13scalar_cmp_opIddLNS2_14ComparisonNameE4EEEKNS_12ArrayWrapperINS_6MatrixIdLin1ELin1ELi1ELin1ELin1EEEEESA_EEE5countEv.exit: ; preds = %._crit_edge.us.i.i.i.i, %.preheader23.i.i.i.i, %.loopexit - %.0.i.i = phi i32 [ 0, %.loopexit ], [ %.022.lcssa.i.i.i.i, %.preheader23.i.i.i.i ], [ %172, %._crit_edge.us.i.i.i.i ] + %.0.i.i = phi i64 [ 0, %.loopexit ], [ %.022.lcssa.i.i.i.i, %.preheader23.i.i.i.i ], [ %172, %._crit_edge.us.i.i.i.i ] br i1 %7, label %181, label %205 181: ; preds = %_ZNK5Eigen9DenseBaseINS_13CwiseBinaryOpINS_8internal13scalar_cmp_opIddLNS2_14ComparisonNameE4EEEKNS_12ArrayWrapperINS_6MatrixIdLin1ELin1ELi1ELin1ELin1EEEEESA_EEE5countEv.exit @@ -490,29 +490,31 @@ _ZNK5Eigen9DenseBaseINS_13CwiseBinaryOpINS_8internal13scalar_cmp_opIddLNS2_14Com 185: ; preds = %182 %186 = load double, ptr %.pre, align 8, !tbaa !30 %187 = fcmp olt double %186, 0.000000e+00 - %188 = zext i1 %187 to i32 + %188 = zext i1 %187 to i64 %189 = icmp sgt i64 %183, 1 br i1 %189, label %.lr.ph.i.i.i.i92, label %_ZNK5Eigen9DenseBaseINS_13CwiseBinaryOpINS_8internal13scalar_cmp_opIddLNS2_14ComparisonNameE1EEEKNS_12ArrayWrapperINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEEEKNS_14CwiseNullaryOpINS2_18scalar_constant_opIdEENS_5ArrayIdLin1ELi1ELi0ELin1ELi1EEEEEEEE5countEv.exit .lr.ph.i.i.i.i92: ; preds = %185, %.lr.ph.i.i.i.i92 %.01724.i.i.i.i = phi i64 [ %195, %.lr.ph.i.i.i.i92 ], [ 1, %185 ] - %.02223.i.i.i.i = phi i32 [ %194, %.lr.ph.i.i.i.i92 ], [ %188, %185 ] + %.02223.i.i.i.i = phi i64 [ %194, %.lr.ph.i.i.i.i92 ], [ %188, %185 ] %190 = getelementptr double, ptr %.pre, i64 %.01724.i.i.i.i %191 = load double, ptr %190, align 8, !tbaa !30 %192 = fcmp olt double %191, 0.000000e+00 - %193 = zext i1 %192 to i32 - %194 = add i32 %.02223.i.i.i.i, %193 + %193 = zext i1 %192 to i64 + %194 = add nuw nsw i64 %.02223.i.i.i.i, %193 %195 = add nuw nsw i64 %.01724.i.i.i.i, 1 %exitcond.not.i.i.i.i93 = icmp eq i64 %195, %183 br i1 %exitcond.not.i.i.i.i93, label %_ZNK5Eigen9DenseBaseINS_13CwiseBinaryOpINS_8internal13scalar_cmp_opIddLNS2_14ComparisonNameE1EEEKNS_12ArrayWrapperINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEEEKNS_14CwiseNullaryOpINS2_18scalar_constant_opIdEENS_5ArrayIdLin1ELi1ELi0ELin1ELi1EEEEEEEE5countEv.exit, label %.lr.ph.i.i.i.i92, !llvm.loop !59 _ZNK5Eigen9DenseBaseINS_13CwiseBinaryOpINS_8internal13scalar_cmp_opIddLNS2_14ComparisonNameE1EEEKNS_12ArrayWrapperINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEEEKNS_14CwiseNullaryOpINS2_18scalar_constant_opIdEENS_5ArrayIdLin1ELi1ELi0ELin1ELi1EEEEEEEE5countEv.exit: ; preds = %.lr.ph.i.i.i.i92, %185, %182 - %.0.i.i91 = phi i32 [ 0, %182 ], [ %188, %185 ], [ %194, %.lr.ph.i.i.i.i92 ] - %196 = or i32 %.0.i.i91, %.0.i.i - %or.cond.not = icmp eq i32 %196, 0 + %.0.i.i91 = phi i64 [ 0, %182 ], [ %188, %185 ], [ %194, %.lr.ph.i.i.i.i92 ] + %196 = trunc i64 %.0.i.i91 to i32 + %197 = or i64 %.0.i.i91, %.0.i.i + %198 = and i64 %197, 4294967295 + %or.cond.not = icmp eq i64 %198, 0 call void @free(ptr noundef %.pre) #13 call void @llvm.lifetime.end.p0(ptr nonnull %14) - br i1 %or.cond.not, label %._crit_edge, label %205 + br i1 %or.cond.not, label %_ZNK5Eigen9DenseBaseINS_13CwiseBinaryOpINS_8internal13scalar_cmp_opIddLNS2_14ComparisonNameE1EEEKNS_12ArrayWrapperINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEEEKNS_14CwiseNullaryOpINS2_18scalar_constant_opIdEENS_5ArrayIdLin1ELi1ELi0ELin1ELi1EEEEEEEE5countEv.exit._crit_edge, label %205 197: ; preds = %_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS_15PlainObjectBaseINS0_IdLin1ELin1ELi1ELin1ELin1EEEEEEERKT_.exit %198 = landingpad { ptr, i32 } @@ -520,7 +522,7 @@ _ZNK5Eigen9DenseBaseINS_13CwiseBinaryOpINS_8internal13scalar_cmp_opIddLNS2_14Com br label %.body87 .body87: ; preds = %112, %197 - %.pn = phi { ptr, i32 } [ %198, %197 ], [ %113, %112 ] + %.pn = phi { ptr, i32 } [ %198, %199 ], [ %113, %112 ] %199 = load ptr, ptr %13, align 8, !tbaa !29 call void @free(ptr noundef %199) #13 call void @llvm.lifetime.end.p0(ptr nonnull %13) @@ -540,43 +542,51 @@ _ZNK5Eigen9DenseBaseINS_13CwiseBinaryOpINS_8internal13scalar_cmp_opIddLNS2_14Com br label %.body 205: ; preds = %_ZNK5Eigen9DenseBaseINS_13CwiseBinaryOpINS_8internal13scalar_cmp_opIddLNS2_14ComparisonNameE4EEEKNS_12ArrayWrapperINS_6MatrixIdLin1ELin1ELi1ELin1ELin1EEEEESA_EEE5countEv.exit, %_ZNK5Eigen9DenseBaseINS_13CwiseBinaryOpINS_8internal13scalar_cmp_opIddLNS2_14ComparisonNameE1EEEKNS_12ArrayWrapperINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEEEKNS_14CwiseNullaryOpINS2_18scalar_constant_opIdEENS_5ArrayIdLin1ELi1ELi0ELin1ELi1EEEEEEEE5countEv.exit - %.4 = phi i32 [ %.0.i.i91, %_ZNK5Eigen9DenseBaseINS_13CwiseBinaryOpINS_8internal13scalar_cmp_opIddLNS2_14ComparisonNameE1EEEKNS_12ArrayWrapperINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEEEKNS_14CwiseNullaryOpINS2_18scalar_constant_opIdEENS_5ArrayIdLin1ELi1ELi0ELin1ELi1EEEEEEEE5countEv.exit ], [ %.254199, %_ZNK5Eigen9DenseBaseINS_13CwiseBinaryOpINS_8internal13scalar_cmp_opIddLNS2_14ComparisonNameE4EEEKNS_12ArrayWrapperINS_6MatrixIdLin1ELin1ELi1ELin1ELin1EEEEESA_EEE5countEv.exit ] + %.4 = phi i32 [ %196, %_ZNK5Eigen9DenseBaseINS_13CwiseBinaryOpINS_8internal13scalar_cmp_opIddLNS2_14ComparisonNameE1EEEKNS_12ArrayWrapperINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEEEKNS_14CwiseNullaryOpINS2_18scalar_constant_opIdEENS_5ArrayIdLin1ELi1ELi0ELin1ELi1EEEEEEEE5countEv.exit ], [ %.254199, %_ZNK5Eigen9DenseBaseINS_13CwiseBinaryOpINS_8internal13scalar_cmp_opIddLNS2_14ComparisonNameE4EEEKNS_12ArrayWrapperINS_6MatrixIdLin1ELin1ELi1ELin1ELin1EEEEESA_EEE5countEv.exit ] %206 = add nuw nsw i32 %.047200, 1 %exitcond.not = icmp eq i32 %206, %6 br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !60 -._crit_edge: ; preds = %_ZNK5Eigen9DenseBaseINS_13CwiseBinaryOpINS_8internal13scalar_cmp_opIddLNS2_14ComparisonNameE1EEEKNS_12ArrayWrapperINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEEEKNS_14CwiseNullaryOpINS2_18scalar_constant_opIdEENS_5ArrayIdLin1ELi1ELi0ELin1ELi1EEEEEEEE5countEv.exit, %205, %_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS_13CwiseBinaryOpINS_8internal13scalar_sum_opIddEEKS1_KNS3_INS4_17scalar_product_opIddEEKNS_14CwiseNullaryOpINS4_18scalar_constant_opIdEES7_EEKNS3_INS4_20scalar_difference_opIddEES7_S7_EEEEEEEERKNS_9EigenBaseIT_EE.exit - %.355 = phi i32 [ %.052205, %_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS_13CwiseBinaryOpINS_8internal13scalar_sum_opIddEEKS1_KNS3_INS4_17scalar_product_opIddEEKNS_14CwiseNullaryOpINS4_18scalar_constant_opIdEES7_EEKNS3_INS4_20scalar_difference_opIddEES7_S7_EEEEEEEERKNS_9EigenBaseIT_EE.exit ], [ %.4, %205 ], [ %.0.i.i91, %_ZNK5Eigen9DenseBaseINS_13CwiseBinaryOpINS_8internal13scalar_cmp_opIddLNS2_14ComparisonNameE1EEEKNS_12ArrayWrapperINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEEEKNS_14CwiseNullaryOpINS2_18scalar_constant_opIdEENS_5ArrayIdLin1ELi1ELi0ELin1ELi1EEEEEEEE5countEv.exit ] - %.3 = phi i32 [ %.049206, %_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS_13CwiseBinaryOpINS_8internal13scalar_sum_opIddEEKS1_KNS3_INS4_17scalar_product_opIddEEKNS_14CwiseNullaryOpINS4_18scalar_constant_opIdEES7_EEKNS3_INS4_20scalar_difference_opIddEES7_S7_EEEEEEEERKNS_9EigenBaseIT_EE.exit ], [ %.0.i.i, %205 ], [ %.0.i.i, %_ZNK5Eigen9DenseBaseINS_13CwiseBinaryOpINS_8internal13scalar_cmp_opIddLNS2_14ComparisonNameE1EEEKNS_12ArrayWrapperINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEEEKNS_14CwiseNullaryOpINS2_18scalar_constant_opIdEENS_5ArrayIdLin1ELi1ELi0ELin1ELi1EEEEEEEE5countEv.exit ] - %207 = icmp sgt i32 %.355, 0 - %208 = icmp sgt i32 %.3, 0 - %or.cond4 = select i1 %207, i1 true, i1 %208 - %209 = load ptr, ptr %12, align 8, !tbaa !29 - call void @free(ptr noundef %209) #13 +._crit_edge: ; preds = %207 + %209 = trunc i64 %.0.i.i to i32 + br label %211 + +_ZNK5Eigen9DenseBaseINS_13CwiseBinaryOpINS_8internal13scalar_cmp_opIddLNS2_14ComparisonNameE1EEEKNS_12ArrayWrapperINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEEEKNS_14CwiseNullaryOpINS2_18scalar_constant_opIdEENS_5ArrayIdLin1ELi1ELi0ELin1ELi1EEEEEEEE5countEv.exit._crit_edge:; preds = %_ZNK5Eigen9DenseBaseINS_13CwiseBinaryOpINS_8internal13scalar_cmp_opIddLNS2_14ComparisonNameE1EEEKNS_12ArrayWrapperINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEEEKNS_14CwiseNullaryOpINS2_18scalar_constant_opIdEENS_5ArrayIdLin1ELi1ELi0ELin1ELi1EEEEEEEE5countEv.exit + %210 = trunc i64 %.0.i.i to i32 + br label %211 + +211: ; preds = %_ZNK5Eigen9DenseBaseINS_13CwiseBinaryOpINS_8internal13scalar_cmp_opIddLNS2_14ComparisonNameE1EEEKNS_12ArrayWrapperINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEEEKNS_14CwiseNullaryOpINS2_18scalar_constant_opIdEENS_5ArrayIdLin1ELi1ELi0ELin1ELi1EEEEEEEE5countEv.exit._crit_edge, %._crit_edge, %_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS_13CwiseBinaryOpINS_8internal13scalar_sum_opIddEEKS1_KNS3_INS4_17scalar_product_opIddEEKNS_14CwiseNullaryOpINS4_18scalar_constant_opIdEES7_EEKNS3_INS4_20scalar_difference_opIddEES7_S7_EEEEEEEERKNS_9EigenBaseIT_EE.exit + %.355 = phi i32 [ %196, %_ZNK5Eigen9DenseBaseINS_13CwiseBinaryOpINS_8internal13scalar_cmp_opIddLNS2_14ComparisonNameE1EEEKNS_12ArrayWrapperINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEEEKNS_14CwiseNullaryOpINS2_18scalar_constant_opIdEENS_5ArrayIdLin1ELi1ELi0ELin1ELi1EEEEEEEE5countEv.exit._crit_edge ], [ %.4, %._crit_edge ], [ %.052206, %_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS_13CwiseBinaryOpINS_8internal13scalar_sum_opIddEEKS1_KNS3_INS4_17scalar_product_opIddEEKNS_14CwiseNullaryOpINS4_18scalar_constant_opIdEES7_EEKNS3_INS4_20scalar_difference_opIddEES7_S7_EEEEEEEERKNS_9EigenBaseIT_EE.exit ] + %.3 = phi i32 [ %210, %_ZNK5Eigen9DenseBaseINS_13CwiseBinaryOpINS_8internal13scalar_cmp_opIddLNS2_14ComparisonNameE1EEEKNS_12ArrayWrapperINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEEEKNS_14CwiseNullaryOpINS2_18scalar_constant_opIdEENS_5ArrayIdLin1ELi1ELi0ELin1ELi1EEEEEEEE5countEv.exit._crit_edge ], [ %209, %._crit_edge ], [ %.049207, %_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS_13CwiseBinaryOpINS_8internal13scalar_sum_opIddEEKS1_KNS3_INS4_17scalar_product_opIddEEKNS_14CwiseNullaryOpINS4_18scalar_constant_opIdEES7_EEKNS3_INS4_20scalar_difference_opIddEES7_S7_EEEEEEEERKNS_9EigenBaseIT_EE.exit ] + %212 = icmp sgt i32 %.355, 0 + %213 = icmp sgt i32 %.3, 0 + %or.cond4 = select i1 %212, i1 true, i1 %213 + %214 = load ptr, ptr %12, align 8, !tbaa !29 + call void @free(ptr noundef %214) #13 call void @llvm.lifetime.end.p0(ptr nonnull %12) br i1 %or.cond4, label %._crit_edge209, label %210 -210: ; preds = %._crit_edge +210: ; preds = %211 %211 = add nuw i32 %.048207, 1 %exitcond241.not = icmp eq i32 %.048207, %.069218 br i1 %exitcond241.not, label %._crit_edge209, label %36, !llvm.loop !61 .body: ; preds = %.body87, %200, %202, %83 - %.pn78.pn.pn.pn.pn = phi { ptr, i32 } [ %84, %83 ], [ %203, %202 ], [ %.pn, %.body87 ], [ %201, %200 ] + %.pn78.pn.pn.pn.pn = phi { ptr, i32 } [ %84, %83 ], [ %203, %204 ], [ %.pn, %.body87 ], [ %201, %202 ] %212 = load ptr, ptr %12, align 8, !tbaa !29 call void @free(ptr noundef %212) #13 call void @llvm.lifetime.end.p0(ptr nonnull %12) br label %221 -._crit_edge209: ; preds = %210, %._crit_edge - %.048.lcssa.ph = phi i32 [ %35, %210 ], [ %.048207, %._crit_edge ] +._crit_edge209: ; preds = %210, %211 + %.048.lcssa.ph = phi i32 [ %35, %215 ], [ %.048207, %211 ] %213 = icmp ne i32 %.355, 0 %214 = icmp ne i32 %.3, 0 %215 = select i1 %213, i1 true, i1 %214 br i1 %215, label %218, label %.thread .thread: ; preds = %.preheader, %._crit_edge209 - %.048.lcssa276 = phi i32 [ %.048.lcssa.ph, %._crit_edge209 ], [ 0, %.preheader ] + %.048.lcssa276 = phi i32 [ %.048.lcssa.ph, %._crit_edge210 ], [ 0, %.preheader ] %216 = add nsw i32 %.069218, 1 %217 = icmp eq i32 %.048.lcssa276, %216 br label %.loopexit166 @@ -587,7 +597,7 @@ _ZNK5Eigen9DenseBaseINS_13CwiseBinaryOpINS_8internal13scalar_cmp_opIddLNS2_14Com br i1 %.not, label %.loopexit166, label %32 .loopexit166: ; preds = %218, %9, %.thread - %.273 = phi i1 [ %217, %.thread ], [ false, %9 ], [ false, %218 ] + %.273 = phi i1 [ %217, %.thread ], [ false, %9 ], [ false, %223 ] %220 = load ptr, ptr %10, align 8, !tbaa !29 call void @free(ptr noundef %220) #13 call void @llvm.lifetime.end.p0(ptr nonnull %10) diff --git a/bench/libquic/optimized/source_address_token.pb.ll b/bench/libquic/optimized/source_address_token.pb.ll index 3fb4d2b9fdf..73aff22c16c 100644 --- a/bench/libquic/optimized/source_address_token.pb.ll +++ b/bench/libquic/optimized/source_address_token.pb.ll @@ -1937,11 +1937,8 @@ _ZN6google8protobuf2io16CodedInputStream11ExpectAtEndEv.exit.thread: ; preds = % 31: ; preds = %.noexc23, %.noexc %.sroa.0.0.in.i = phi i64 [ %.sroa.0.0.insert.insert.i, %.noexc ], [ %.sroa.0.0.insert.insert.i29, %.noexc23 ] %.sroa.0.0.extract.trunc = trunc i64 %.sroa.0.0.in.i to i32 - %32 = and i64 %.sroa.0.0.in.i, 4294967296 - %.not = icmp ne i64 %32, 0 - %33 = icmp eq i32 %.sroa.0.0.extract.trunc, 34 - %or.cond = and i1 %.not, %33 - br i1 %or.cond, label %37, label %92 + %or.cond = icmp eq i64 %.sroa.0.0.in.i, 4294967330 + br i1 %or.cond, label %35, label %90 34: ; preds = %2 %35 = landingpad { ptr, i32 } @@ -2000,7 +1997,7 @@ _ZN6google8protobuf2io16CodedInputStream11ExpectAtEndEv.exit.thread: ; preds = % br i1 %54, label %.thread.i.i.i, label %57 .thread.i.i.i: ; preds = %52, %..thread_crit_edge.i.i.i - %55 = phi i32 [ %.pre.i.i.i, %..thread_crit_edge.i.i.i ], [ %44, %52 ] + %55 = phi i32 [ %.pre.i.i.i, %..thread_crit_edge.i.i.i ], [ %44, %50 ] %56 = add nsw i32 %55, 1 invoke void @_ZN6google8protobuf8internal20RepeatedPtrFieldBase7ReserveEi(ptr noundef nonnull align 8 dereferenceable(24) %12, i32 noundef %56) to label %.noexc30 unwind label %.loopexit @@ -2011,8 +2008,8 @@ _ZN6google8protobuf2io16CodedInputStream11ExpectAtEndEv.exit.thread: ; preds = % br label %57 57: ; preds = %.noexc30, %52 - %58 = phi i32 [ %.pre10.i.i.i, %.noexc30 ], [ %44, %52 ] - %59 = phi ptr [ %.pre9.i.i.i, %.noexc30 ], [ %41, %52 ] + %58 = phi i32 [ %.pre10.i.i.i, %.noexc30 ], [ %44, %50 ] + %59 = phi ptr [ %.pre9.i.i.i, %.noexc30 ], [ %41, %50 ] %60 = add nsw i32 %58, 1 store i32 %60, ptr %59, align 8, !tbaa !65 %61 = load ptr, ptr %12, align 8, !tbaa !67 @@ -2031,7 +2028,7 @@ _ZN6google8protobuf2io16CodedInputStream11ExpectAtEndEv.exit.thread: ; preds = % br label %_ZN3net19SourceAddressTokens10add_tokensEv.exit _ZN3net19SourceAddressTokens10add_tokensEv.exit: ; preds = %.noexc31, %46 - %.0.i.i.i = phi ptr [ %51, %46 ], [ %62, %.noexc31 ] + %.0.i.i.i = phi ptr [ %51, %44 ], [ %62, %.noexc31 ] %69 = invoke noundef i32 @_ZN6google8protobuf2io16CodedInputStream22ReadLengthAndPushLimitEv(ptr noundef nonnull align 8 dereferenceable(80) %1) to label %.noexc33 unwind label %.loopexit @@ -2101,13 +2098,13 @@ _ZN6google8protobuf2io16CodedInputStream11ExpectAtEndEv.exit: ; preds = %85, %87 96: ; preds = %92 %97 = invoke noundef zeroext i1 @_ZN6google8protobuf8internal14WireFormatLite9SkipFieldEPNS0_2io16CodedInputStreamEjPNS3_17CodedOutputStreamE(ptr noundef nonnull %1, i32 noundef %.sroa.0.0.extract.trunc, ptr noundef nonnull %4) - to label %98 unwind label %.loopexit.split-lp + to label %96 unwind label %.loopexit.split-lp 98: ; preds = %96 br i1 %97, label %_ZN6google8protobuf2io16CodedInputStream11ExpectAtEndEv.exit.thread.backedge, label %_ZN6google8protobuf8internal14WireFormatLite36ReadMessageNoVirtualNoRecursionDepthIN3net18SourceAddressTokenEEEbPNS0_2io16CodedInputStreamEPT_.exit.thread, !prof !46 _ZN6google8protobuf8internal14WireFormatLite36ReadMessageNoVirtualNoRecursionDepthIN3net18SourceAddressTokenEEEbPNS0_2io16CodedInputStreamEPT_.exit.thread: ; preds = %92, %98, %37, %.noexc34, %_ZN6google8protobuf8internal14WireFormatLite36ReadMessageNoVirtualNoRecursionDepthIN3net18SourceAddressTokenEEEbPNS0_2io16CodedInputStreamEPT_.exit, %_ZN6google8protobuf2io16CodedInputStream11ExpectAtEndEv.exit - %.017 = phi i1 [ true, %_ZN6google8protobuf2io16CodedInputStream11ExpectAtEndEv.exit ], [ false, %.noexc34 ], [ false, %_ZN6google8protobuf8internal14WireFormatLite36ReadMessageNoVirtualNoRecursionDepthIN3net18SourceAddressTokenEEEbPNS0_2io16CodedInputStreamEPT_.exit ], [ false, %98 ], [ false, %37 ], [ true, %92 ] + %.017 = phi i1 [ true, %_ZN6google8protobuf2io16CodedInputStream11ExpectAtEndEv.exit ], [ false, %.noexc34 ], [ false, %_ZN6google8protobuf8internal14WireFormatLite36ReadMessageNoVirtualNoRecursionDepthIN3net18SourceAddressTokenEEEbPNS0_2io16CodedInputStreamEPT_.exit ], [ false, %96 ], [ false, %35 ], [ true, %90 ] call void @_ZN6google8protobuf2io17CodedOutputStreamD1Ev(ptr noundef nonnull align 8 dereferenceable(26) %4) #22 call void @llvm.lifetime.end.p0(ptr nonnull %4) call void @_ZN6google8protobuf2io22LazyStringOutputStreamD1Ev(ptr noundef nonnull align 8 dereferenceable(25) %3) #22 @@ -2115,7 +2112,7 @@ _ZN6google8protobuf8internal14WireFormatLite36ReadMessageNoVirtualNoRecursionDep ret i1 %.017 99: ; preds = %36, %34 - %.pn = phi { ptr, i32 } [ %lpad.phi, %36 ], [ %35, %34 ] + %.pn = phi { ptr, i32 } [ %lpad.phi, %34 ], [ %35, %32 ] call void @llvm.lifetime.end.p0(ptr nonnull %4) call void @_ZN6google8protobuf2io22LazyStringOutputStreamD1Ev(ptr noundef nonnull align 8 dereferenceable(25) %3) #22 call void @llvm.lifetime.end.p0(ptr nonnull %3) diff --git a/bench/libquic/optimized/tasn_enc.ll b/bench/libquic/optimized/tasn_enc.ll index 9e6554048e9..03fbe401cc0 100644 --- a/bench/libquic/optimized/tasn_enc.ll +++ b/bench/libquic/optimized/tasn_enc.ll @@ -347,10 +347,12 @@ define internal fastcc i32 @asn1_template_ex_i2d(ptr noundef %0, ptr noundef %1, %.095 = phi i32 [ %16, %13 ], [ %3, %18 ] %.094 = phi i32 [ %17, %13 ], [ %spec.select118, %18 ] %21 = and i32 %4, -193 - %22 = and i32 %4, 2048 - %23 = and i32 %22, %10 - %or.cond.not.not = icmp eq i32 %23, 0 - %spec.select120 = select i1 %or.cond.not.not, i32 1, i32 2 + %22 = and i32 %10, 2048 + %.not103 = icmp ne i32 %22, 0 + %23 = and i32 %4, 2048 + %.not104 = icmp ne i32 %23, 0 + %or.cond.not = and i1 %.not104, %.not103 + %spec.select120 = select i1 %or.cond.not, i32 2, i32 1 %24 = and i32 %10, 6 %.not105 = icmp eq i32 %24, 0 br i1 %.not105, label %106, label %25 @@ -542,7 +544,7 @@ asn1_set_seq_out.exit.sink.split: ; preds = %55, %.loopexit asn1_set_seq_out.exit: ; preds = %.lr.ph145, %asn1_set_seq_out.exit.sink.split, %.preheader, %51 call void @llvm.lifetime.end.p0(ptr nonnull %7) call void @llvm.lifetime.end.p0(ptr nonnull %6) - br i1 %or.cond.not.not, label %105, label %101 + br i1 %or.cond.not, label %101, label %105 101: ; preds = %asn1_set_seq_out.exit %102 = call i32 @ASN1_put_eoc(ptr noundef nonnull %1) #11 @@ -578,7 +580,7 @@ asn1_set_seq_out.exit: ; preds = %.lr.ph145, %asn1_se tail call void @ASN1_put_object(ptr noundef nonnull %1, i32 noundef %spec.select120, i32 noundef %111, i32 noundef %.095, i32 noundef %.094) #11 %115 = load ptr, ptr %108, align 8, !tbaa !36 %116 = tail call i32 @ASN1_item_ex_i2d(ptr noundef %0, ptr noundef nonnull %1, ptr noundef %115, i32 noundef -1, i32 noundef %21) - br i1 %or.cond.not.not, label %122, label %117 + br i1 %or.cond.not, label %117, label %122 117: ; preds = %114 %118 = tail call i32 @ASN1_put_eoc(ptr noundef nonnull %1) #11 diff --git a/bench/lightgbm/optimized/tree.ll b/bench/lightgbm/optimized/tree.ll index 69f282939f8..ca3dbbe7d64 100644 --- a/bench/lightgbm/optimized/tree.ll +++ b/bench/lightgbm/optimized/tree.ll @@ -38959,24 +38959,18 @@ define linkonce_odr ptr @_ZN3fmt3v116detail5writeIcNS0_14basic_appenderIcEEEET0_ br i1 %switch.i, label %24, label %10 10: ; preds = %4 - %11 = trunc i64 %7 to i32 - %12 = and i32 %11, 56 - %13 = icmp eq i32 %12, 32 - br i1 %13, label %18, label %14 + %11 = and i64 %7, 56 + %12 = icmp ne i64 %11, 32 + %13 = and i64 %7, 11264 + %or.cond.not.i = icmp eq i64 %13, 0 + %or.cond.i = and i1 %or.cond.not.i, %12 + br i1 %or.cond.i, label %_ZN3fmt3v116detail16check_char_specsERKNS0_12format_specsE.exit, label %14 14: ; preds = %10 - %15 = and i32 %11, 3072 - %.not.i = icmp ne i32 %15, 0 - %16 = and i64 %7, 8192 - %17 = icmp ne i64 %16, 0 - %or.cond.i = or i1 %17, %.not.i - br i1 %or.cond.i, label %18, label %_ZN3fmt3v116detail16check_char_specsERKNS0_12format_specsE.exit - -18: ; preds = %14, %10 tail call void @_ZN3fmt3v1112report_errorEPKc(ptr noundef nonnull @.str.67) #45 unreachable -_ZN3fmt3v116detail16check_char_specsERKNS0_12format_specsE.exit: ; preds = %14 +_ZN3fmt3v116detail16check_char_specsERKNS0_12format_specsE.exit: ; preds = %10 %19 = and i64 %7, 7 %20 = icmp eq i64 %19, 1 %21 = zext i1 %20 to i8 @@ -39007,7 +39001,7 @@ _ZN3fmt3v116detail16check_char_specsERKNS0_12format_specsE.exit: ; preds = %14 br label %.critedge.i .critedge.i: ; preds = %..critedge.i_crit_edge, %24 - %30 = phi i64 [ %.pre, %..critedge.i_crit_edge ], [ %7, %24 ] + %30 = phi i64 [ %.pre, %..critedge.i_crit_edge ], [ %7, %20 ] %31 = lshr i64 %30, 10 %32 = and i64 %31, 3 %33 = getelementptr inbounds nuw i32, ptr @__const._ZN3fmt3v116detail18make_write_int_argIhEENS1_13write_int_argINSt11conditionalIXaalecl8num_bitsIT_EELi32EntLi0EEjNS4_IXlecl8num_bitsIS5_EELi64EEmoE4typeEE4typeEEES5_NS0_4signE.prefixes, i64 %32 @@ -39020,7 +39014,7 @@ _ZN3fmt3v116detail16check_char_specsERKNS0_12format_specsE.exit: ; preds = %14 br label %_ZN3fmt3v116detail5writeIchTnNSt9enable_ifIXaaaasr11is_integralIT0_EE5valuentsr3std7is_sameIS4_bEE5valuentsr3std7is_sameIS4_T_EE5valueEiE4typeELi0EEENS0_14basic_appenderIS5_EES9_S4_RKNS0_12format_specsENS1_10locale_refE.exit _ZN3fmt3v116detail5writeIchTnNSt9enable_ifIXaaaasr11is_integralIT0_EE5valuentsr3std7is_sameIS4_bEE5valuentsr3std7is_sameIS4_T_EE5valueEiE4typeELi0EEENS0_14basic_appenderIS5_EES9_S4_RKNS0_12format_specsENS1_10locale_refE.exit: ; preds = %26, %.critedge.i - %.sroa.010.0.i = phi ptr [ %37, %.critedge.i ], [ %0, %26 ] + %.sroa.010.0.i = phi ptr [ %37, %.critedge.i ], [ %0, %22 ] call void @llvm.lifetime.end.p0(ptr nonnull %6) br label %38 diff --git a/bench/llvm/optimized/CheckObjCDealloc.ll b/bench/llvm/optimized/CheckObjCDealloc.ll index e8f4a4613f3..852898b082c 100644 --- a/bench/llvm/optimized/CheckObjCDealloc.ll +++ b/bench/llvm/optimized/CheckObjCDealloc.ll @@ -1658,14 +1658,13 @@ define internal fastcc noundef range(i32 0, 3) i32 @_ZNK12_GLOBAL__N_118ObjCDeal %13 = load ptr, ptr %12, align 8, !tbaa !480 %14 = getelementptr inbounds nuw i8, ptr %13, i64 72 %15 = load i64, ptr %14, align 8 - %16 = trunc i64 %15 to i32 - %17 = and i32 %16, 1072 - %or.cond21 = icmp eq i32 %17, 0 - br i1 %or.cond21, label %18, label %select.unfold - -18: ; preds = %11 - %19 = and i32 %16, 512 - %.not3.i = icmp eq i32 %19, 0 + %16 = and i64 %15, 1072 + %or.cond21 = icmp eq i64 %16, 0 + br i1 %or.cond21, label %17, label %select.unfold + +17: ; preds = %11 + %18 = and i64 %15, 512 + %.not3.i = icmp eq i64 %18, 0 br i1 %.not3.i, label %_ZNK5clang16ObjCPropertyDecl13getSetterKindEv.exit, label %_ZL31isSynthesizedRetainablePropertyPKN5clang20ObjCPropertyImplDeclEPPKNS_12ObjCIvarDeclEPPKNS_16ObjCPropertyDeclE.exit.thread select.unfold: ; preds = %11 @@ -1692,7 +1691,7 @@ select.unfold: ; preds = %11 br i1 %.not.i.i.i, label %_ZL31isSynthesizedRetainablePropertyPKN5clang20ObjCPropertyImplDeclEPPKNS_12ObjCIvarDeclEPPKNS_16ObjCPropertyDeclE.exit.thread, label %.lr.ph.i.i.i.i.i.i .lr.ph.i.i.i.i.i.i: ; preds = %26, %37 - %.sroa.07.1.i.i.i.i.i = phi ptr [ %38, %37 ], [ %28, %26 ] + %.sroa.07.1.i.i.i.i.i = phi ptr [ %38, %36 ], [ %28, %25 ] %33 = load ptr, ptr %.sroa.07.1.i.i.i.i.i, align 8, !tbaa !483 %34 = getelementptr inbounds nuw i8, ptr %33, i64 32 %35 = load i16, ptr %34, align 8 @@ -1727,14 +1726,14 @@ _ZNK12_GLOBAL__N_118ObjCDeallocChecker28isNibLoadedIvarWithoutRetainEPKN5clang20 %spec.select = select i1 %.not.i10, i32 2, i32 0 br label %_ZL31isSynthesizedRetainablePropertyPKN5clang20ObjCPropertyImplDeclEPPKNS_12ObjCIvarDeclEPPKNS_16ObjCPropertyDeclE.exit.thread -_ZNK5clang16ObjCPropertyDecl13getSetterKindEv.exit: ; preds = %18 +_ZNK5clang16ObjCPropertyDecl13getSetterKindEv.exit: ; preds = %17 %49 = and i64 %15, 1 %.not = icmp eq i64 %49, 0 %.5 = select i1 %.not, i32 1, i32 2 br label %_ZL31isSynthesizedRetainablePropertyPKN5clang20ObjCPropertyImplDeclEPPKNS_12ObjCIvarDeclEPPKNS_16ObjCPropertyDeclE.exit.thread -_ZL31isSynthesizedRetainablePropertyPKN5clang20ObjCPropertyImplDeclEPPKNS_12ObjCIvarDeclEPPKNS_16ObjCPropertyDeclE.exit.thread: ; preds = %37, %_ZNK12_GLOBAL__N_118ObjCDeallocChecker28isNibLoadedIvarWithoutRetainEPKN5clang20ObjCPropertyImplDeclE.exit, %21, %26, %39, %_ZNK5clang4Decl7hasAttrINS_12IBOutletAttrEEEbv.exit.i, %18, %5, %2, %select.unfold, %_ZNK5clang16ObjCPropertyDecl13getSetterKindEv.exit - %.0 = phi i32 [ 1, %18 ], [ 2, %5 ], [ %.5, %_ZNK5clang16ObjCPropertyDecl13getSetterKindEv.exit ], [ 1, %select.unfold ], [ 0, %21 ], [ %spec.select, %_ZNK12_GLOBAL__N_118ObjCDeallocChecker28isNibLoadedIvarWithoutRetainEPKN5clang20ObjCPropertyImplDeclE.exit ], [ 2, %2 ], [ 0, %_ZNK5clang4Decl7hasAttrINS_12IBOutletAttrEEEbv.exit.i ], [ 0, %39 ], [ 0, %26 ], [ 0, %37 ] +_ZL31isSynthesizedRetainablePropertyPKN5clang20ObjCPropertyImplDeclEPPKNS_12ObjCIvarDeclEPPKNS_16ObjCPropertyDeclE.exit.thread: ; preds = %37, %_ZNK12_GLOBAL__N_118ObjCDeallocChecker28isNibLoadedIvarWithoutRetainEPKN5clang20ObjCPropertyImplDeclE.exit, %21, %26, %39, %_ZNK5clang4Decl7hasAttrINS_12IBOutletAttrEEEbv.exit.i, %17, %5, %2, %select.unfold, %_ZNK5clang16ObjCPropertyDecl13getSetterKindEv.exit + %.0 = phi i32 [ 1, %17 ], [ 2, %5 ], [ %.5, %_ZNK5clang16ObjCPropertyDecl13getSetterKindEv.exit ], [ 1, %select.unfold ], [ 0, %20 ], [ %spec.select, %_ZNK12_GLOBAL__N_118ObjCDeallocChecker28isNibLoadedIvarWithoutRetainEPKN5clang20ObjCPropertyImplDeclE.exit ], [ 2, %2 ], [ 0, %_ZNK5clang4Decl7hasAttrINS_12IBOutletAttrEEEbv.exit.i ], [ 0, %38 ], [ 0, %25 ], [ 0, %36 ] ret i32 %.0 } diff --git a/bench/llvm/optimized/Compiler.ll b/bench/llvm/optimized/Compiler.ll index e08b6fe71da..d2ba9d0bd7f 100644 --- a/bench/llvm/optimized/Compiler.ll +++ b/bench/llvm/optimized/Compiler.ll @@ -6731,11 +6731,9 @@ define weak_odr noundef zeroext i1 @_ZN5clang6interp8CompilerINS0_15ByteCodeEmit br label %75 67: ; preds = %59 - %68 = and i64 %19, 4294967296 - %.not = icmp eq i64 %68, 0 - %69 = icmp ne i32 %.sroa.0.0.extract.trunc, 10 - %70 = or i1 %.not, %69 - br i1 %70, label %71, label %75 + %68 = and i64 %19, 8589934591 + %.not = icmp eq i64 %68, 4294967306 + br i1 %.not, label %73, label %71 71: ; preds = %67 call void @llvm.lifetime.start.p0(ptr nonnull %10) @@ -39439,11 +39437,9 @@ define weak_odr noundef zeroext i1 @_ZN5clang6interp8CompilerINS0_11EvalEmitterE br label %72 64: ; preds = %56 - %65 = and i64 %19, 4294967296 - %.not = icmp eq i64 %65, 0 - %66 = icmp ne i32 %.sroa.0.0.extract.trunc, 10 - %67 = or i1 %.not, %66 - br i1 %67, label %68, label %72 + %65 = and i64 %19, 8589934591 + %.not = icmp eq i64 %65, 4294967306 + br i1 %.not, label %70, label %66 68: ; preds = %64 call void @llvm.lifetime.start.p0(ptr nonnull %10) @@ -39455,7 +39451,7 @@ define weak_odr noundef zeroext i1 @_ZN5clang6interp8CompilerINS0_11EvalEmitterE br label %72 72: ; preds = %64, %55, %38, %68, %60 - %.118 = phi i1 [ %63, %60 ], [ %71, %68 ], [ false, %55 ], [ false, %38 ], [ true, %64 ] + %.118 = phi i1 [ %63, %60 ], [ %71, %66 ], [ false, %55 ], [ false, %38 ], [ true, %64 ] ret i1 %.118 } diff --git a/bench/llvm/optimized/DeadStoreElimination.ll b/bench/llvm/optimized/DeadStoreElimination.ll index 6e9a784bd7a..c30c653343e 100644 --- a/bench/llvm/optimized/DeadStoreElimination.ll +++ b/bench/llvm/optimized/DeadStoreElimination.ll @@ -18090,29 +18090,27 @@ _ZN4llvm8dyn_castINS_13IntrinsicInstEKNS_11InstructionEEEDcPT0_.exit36.i: ; pred %296 = call noundef i64 @_ZNK4llvm8TypeSizecvmEv(ptr noundef nonnull align 8 dereferenceable(9) %10) #19 %297 = call noundef i64 @_ZNK4llvm8TypeSizecvmEv(ptr noundef nonnull align 8 dereferenceable(9) %11) #19 %.not = icmp ult i64 %296, %297 - br i1 %.not, label %.critedge88, label %.critedge86 - -298: ; preds = %288 - %299 = icmp eq i8 %293, 2 - %300 = and i32 %292, 256 - %301 = icmp ne i32 %300, 0 - %or.cond124 = and i1 %299, %301 - br i1 %or.cond124, label %302, label %.critedge88 - -302: ; preds = %298 - %303 = ashr i32 %292, 9 - %304 = icmp sgt i32 %303, -1 - br i1 %304, label %305, label %.critedge88 - -305: ; preds = %302 - %306 = zext nneg i32 %303 to i64 - %307 = call noundef i64 @_ZNK4llvm8TypeSizecvmEv(ptr noundef nonnull align 8 dereferenceable(9) %11) #19 - %308 = add i64 %307, %306 - %309 = call noundef i64 @_ZNK4llvm8TypeSizecvmEv(ptr noundef nonnull align 8 dereferenceable(9) %10) #19 - %.not76 = icmp ugt i64 %308, %309 + br i1 %.not, label %298, label %.critedge86 + +298: ; preds = %295, %288 + %299 = and i32 %292, 511 + %or.cond124 = icmp eq i32 %299, 258 + br i1 %or.cond124, label %300, label %.critedge88 + +300: ; preds = %298 + %301 = ashr i32 %292, 9 + %302 = icmp sgt i32 %301, -1 + br i1 %302, label %303, label %.critedge88 + +303:; preds = %300 + %304 = zext nneg i32 %301 to i64 + %305 = call noundef i64 @_ZNK4llvm8TypeSizecvmEv(ptr noundef nonnull align 8 dereferenceable(9) %11) #19 + %306 = add i64 %305, %304 + %307 = call noundef i64 @_ZNK4llvm8TypeSizecvmEv(ptr noundef nonnull align 8 dereferenceable(9) %10) #19 + %.not76 = icmp ugt i64 %306, %307 br i1 %.not76, label %.critedge88, label %.critedge86 -.critedge88: ; preds = %295, %302, %305, %298 +.critedge88: ; preds = %300, %303, %298 br i1 %84, label %312, label %310 310: ; preds = %.critedge88 @@ -18161,8 +18159,8 @@ _ZN4llvm8dyn_castINS_13IntrinsicInstEKNS_11InstructionEEEDcPT0_.exit36.i: ; pred 335: ; preds = %332, %326 br label %.critedge86 -.critedge86: ; preds = %295, %305, %310, %332, %326, %322, %312, %335, %278 - %.6 = phi i32 [ 6, %278 ], [ 4, %332 ], [ 1, %295 ], [ %., %310 ], [ 1, %305 ], [ 4, %326 ], [ 6, %312 ], [ 1, %322 ], [ 5, %335 ] +.critedge86: ; preds = %295, %303, %310, %332, %326, %322, %312, %335, %278 + %.6 = phi i32 [ 6, %278 ], [ 4, %330 ], [ 1, %295 ], [ %., %308 ], [ 1, %303 ], [ 4, %324 ], [ 6, %310 ], [ 1, %320 ], [ 5, %333 ] call void @llvm.lifetime.end.p0(ptr nonnull %11) call void @llvm.lifetime.end.p0(ptr nonnull %10) br label %_ZL22isMaskedStoreOverwritePKN4llvm11InstructionES2_RNS_14BatchAAResultsE.exit diff --git a/bench/llvm/optimized/HeuristicResolver.ll b/bench/llvm/optimized/HeuristicResolver.ll index dae4decef0b..54741088784 100644 --- a/bench/llvm/optimized/HeuristicResolver.ll +++ b/bench/llvm/optimized/HeuristicResolver.ll @@ -2334,41 +2334,38 @@ _ZNK5clang10Qualifiers24isAddressSpaceSupersetOfES0_RKNS_10ASTContextE.exit.i.i: _ZNK5clang10Qualifiers24isAddressSpaceSupersetOfES0_RKNS_10ASTContextE.exit.thread.i.i: ; preds = %_ZNK5clang10Qualifiers24isAddressSpaceSupersetOfES0_RKNS_10ASTContextE.exit.i.i, %_ZNK5clang8QualType13getQualifiersEv.exit.i %49 = xor i64 %41, %28 - %50 = trunc i64 %49 to i32 - %51 = and i32 %50, 48 - %52 = icmp eq i32 %51, 0 - %53 = and i64 %28, 48 - %54 = icmp eq i64 %53, 0 - %or.cond.not17.i.i = or i1 %54, %52 - %55 = and i64 %.sroa.0.0.i.i.i, 48 - %56 = icmp eq i64 %55, 0 - %or.cond11.not14.i.i = or i1 %56, %or.cond.not17.i.i - %57 = icmp ult i64 %49, 4294967296 + %50 = and i64 %49, 48 + %51 = icmp eq i64 %50, 0 + %52 = and i64 %28, 48 + %53 = icmp eq i64 %52, 0 + %or.cond.not17.i.i = or i1 %53, %51 + %54 = and i64 %.sroa.0.0.i.i.i, 48 + %55 = icmp eq i64 %54, 0 + %or.cond11.not14.i.i = or i1 %55, %or.cond.not17.i.i + %56 = and i64 %49, -4294966848 + %57 = icmp eq i64 %56, 0 %or.cond12.i.i = and i1 %57, %or.cond11.not14.i.i - %58 = and i32 %50, 448 - %59 = icmp eq i32 %58, 0 - %or.cond.i.i = and i1 %59, %or.cond12.i.i - br i1 %or.cond.i.i, label %60, label %"_ZZN5clang12_GLOBAL__N_121HeuristicResolverImpl22resolveDependentMemberENS_8QualTypeENS_15DeclarationNameEN4llvm12function_refIFbPKNS_9NamedDeclEEEEENK3$_0clES8_.exit" - -60: ; preds = %_ZNK5clang10Qualifiers24isAddressSpaceSupersetOfES0_RKNS_10ASTContextE.exit.thread.i.i - %61 = and i64 %28, 7 - %62 = xor i64 %61, 7 - %63 = and i64 %41, %62 - %64 = icmp eq i64 %63, 0 - br i1 %64, label %65, label %"_ZZN5clang12_GLOBAL__N_121HeuristicResolverImpl22resolveDependentMemberENS_8QualTypeENS_15DeclarationNameEN4llvm12function_refIFbPKNS_9NamedDeclEEEEENK3$_0clES8_.exit" - -65: ; preds = %60 - %66 = and i64 %.sroa.0.0.i.i.i, 8 - %.not.i.i = icmp eq i64 %66, 0 - br i1 %.not.i.i, label %"_ZZN5clang12_GLOBAL__N_121HeuristicResolverImpl22resolveDependentMemberENS_8QualTypeENS_15DeclarationNameEN4llvm12function_refIFbPKNS_9NamedDeclEEEEENK3$_0clES8_.exit", label %67 - -67: ; preds = %65 - %68 = and i64 %28, 8 - %69 = icmp ne i64 %68, 0 + br i1 %or.cond12.i.i, label %58, label %"_ZZN5clang12_GLOBAL__N_121HeuristicResolverImpl22resolveDependentMemberENS_8QualTypeENS_15DeclarationNameEN4llvm12function_refIFbPKNS_9NamedDeclEEEEENK3$_0clES8_.exit" + +58:; preds = %_ZNK5clang10Qualifiers24isAddressSpaceSupersetOfES0_RKNS_10ASTContextE.exit.thread.i.i + %59 = and i64 %28, 7 + %60 = xor i64 %59, 7 + %61 = and i64 %41, %60 + %62 = icmp eq i64 %61, 0 + br i1 %62, label %63, label %"_ZZN5clang12_GLOBAL__N_121HeuristicResolverImpl22resolveDependentMemberENS_8QualTypeENS_15DeclarationNameEN4llvm12function_refIFbPKNS_9NamedDeclEEEEENK3$_0clES8_.exit" + +63:; preds = %58 + %64 = and i64 %.sroa.0.0.i.i.i, 8 + %.not.i.i = icmp eq i64 %64, 0 + br i1 %.not.i.i, label %"_ZZN5clang12_GLOBAL__N_121HeuristicResolverImpl22resolveDependentMemberENS_8QualTypeENS_15DeclarationNameEN4llvm12function_refIFbPKNS_9NamedDeclEEEEENK3$_0clES8_.exit", label %65 + +65:; preds = %63 + %66 = and i64 %28, 8 + %67 = icmp ne i64 %66, 0 br label %"_ZZN5clang12_GLOBAL__N_121HeuristicResolverImpl22resolveDependentMemberENS_8QualTypeENS_15DeclarationNameEN4llvm12function_refIFbPKNS_9NamedDeclEEEEENK3$_0clES8_.exit" -"_ZZN5clang12_GLOBAL__N_121HeuristicResolverImpl22resolveDependentMemberENS_8QualTypeENS_15DeclarationNameEN4llvm12function_refIFbPKNS_9NamedDeclEEEEENK3$_0clES8_.exit": ; preds = %2, %11, %17, %_ZNK5clang10Qualifiers24isAddressSpaceSupersetOfES0_RKNS_10ASTContextE.exit.i.i, %_ZNK5clang10Qualifiers24isAddressSpaceSupersetOfES0_RKNS_10ASTContextE.exit.thread.i.i, %60, %65, %67 - %.07.i = phi i1 [ false, %2 ], [ true, %11 ], [ true, %17 ], [ false, %60 ], [ true, %65 ], [ %69, %67 ], [ false, %_ZNK5clang10Qualifiers24isAddressSpaceSupersetOfES0_RKNS_10ASTContextE.exit.thread.i.i ], [ false, %_ZNK5clang10Qualifiers24isAddressSpaceSupersetOfES0_RKNS_10ASTContextE.exit.i.i ] +"_ZZN5clang12_GLOBAL__N_121HeuristicResolverImpl22resolveDependentMemberENS_8QualTypeENS_15DeclarationNameEN4llvm12function_refIFbPKNS_9NamedDeclEEEEENK3$_0clES8_.exit": ; preds = %2, %11, %17, %_ZNK5clang10Qualifiers24isAddressSpaceSupersetOfES0_RKNS_10ASTContextE.exit.i.i, %_ZNK5clang10Qualifiers24isAddressSpaceSupersetOfES0_RKNS_10ASTContextE.exit.thread.i.i, %58, %63, %65 + %.07.i = phi i1 [ false, %2 ], [ true, %11 ], [ true, %17 ], [ false, %58 ], [ true, %63 ], [ %67, %65 ], [ false, %_ZNK5clang10Qualifiers24isAddressSpaceSupersetOfES0_RKNS_10ASTContextE.exit.thread.i.i ], [ false, %_ZNK5clang10Qualifiers24isAddressSpaceSupersetOfES0_RKNS_10ASTContextE.exit.i.i ] ret i1 %.07.i } diff --git a/bench/llvm/optimized/InstCombineAndOrXor.ll b/bench/llvm/optimized/InstCombineAndOrXor.ll index aaf1f798dc3..7fb0fc820f8 100644 --- a/bench/llvm/optimized/InstCombineAndOrXor.ll +++ b/bench/llvm/optimized/InstCombineAndOrXor.ll @@ -21258,13 +21258,9 @@ define internal fastcc noundef ptr @_ZL26foldPowerOf2AndShiftedMaskPN4llvm8ICmpI 15: ; preds = %12 %.fca.0.extract = extractvalue { i64, i8 } %13, 0 - %.sroa.0.0.extract.trunc = trunc i64 %.fca.0.extract to i32 - %16 = and i32 %.sroa.0.0.extract.trunc, 16 - %17 = icmp ne i32 %16, 0 - %.sroa.0.4.extract.shift.mask = and i64 %.fca.0.extract, -4294967296 - %18 = icmp eq i64 %.sroa.0.4.extract.shift.mask, 2233382993920 - %or.cond = and i1 %18, %17 - br i1 %or.cond, label %19, label %27 + %16 = and i64 %.fca.0.extract, -4294967280 + %or.cond = icmp eq i64 %16, 2233382993936 + br i1 %or.cond, label %17, label %25 19: ; preds = %15 %20 = load ptr, ptr %5, align 8, !tbaa !128 @@ -21273,16 +21269,14 @@ define internal fastcc noundef ptr @_ZL26foldPowerOf2AndShiftedMaskPN4llvm8ICmpI %23 = load ptr, ptr %9, align 8, !tbaa !128 %24 = load i32, ptr %10, align 4, !tbaa !119 %25 = load i32, ptr %11, align 4, !tbaa !119 - %26 = tail call fastcc noundef ptr @_ZL32foldNegativePower2AndShiftedMaskPN4llvm5ValueES1_S1_S1_NS_7CmpInst9PredicateES3_RNS_9IRBuilderINS_12TargetFolderENS_25IRBuilderCallbackInserterEEE(ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef %23, i32 noundef %24, i32 noundef %25, ptr noundef nonnull align 8 dereferenceable(184) %3) + %26 = tail call fastcc noundef ptr @_ZL32foldNegativePower2AndShiftedMaskPN4llvm5ValueES1_S1_S1_NS_7CmpInst9PredicateES3_RNS_9IRBuilderINS_12TargetFolderENS_25IRBuilderCallbackInserterEEE(ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, i32 noundef %24, i32 noundef %25, ptr noundef nonnull align 8 dereferenceable(184) %3) %.not20 = icmp eq ptr %26, null br i1 %.not20, label %38, label %39 27: ; preds = %15 - %28 = icmp ne i32 %.sroa.0.0.extract.trunc, 520 - %29 = and i64 %.fca.0.extract, 68719476736 - %.not = icmp eq i64 %29, 0 - %or.cond21 = or i1 %28, %.not - br i1 %or.cond21, label %38, label %30 + %26 = and i64 %.fca.0.extract, 73014444031 + %or.cond21.not = icmp eq i64 %26, 68719477256 + br i1 %or.cond21.not, label %27, label %35 30: ; preds = %27 %31 = load ptr, ptr %5, align 8, !tbaa !128 @@ -21299,7 +21293,7 @@ define internal fastcc noundef ptr @_ZL26foldPowerOf2AndShiftedMaskPN4llvm8ICmpI br label %39 39: ; preds = %38, %30, %19, %12 - %.1 = phi ptr [ null, %12 ], [ null, %38 ], [ %26, %19 ], [ %37, %30 ] + %.1 = phi ptr [ null, %12 ], [ null, %35 ], [ %26, %17 ], [ %37, %27 ] call void @llvm.lifetime.end.p0(ptr nonnull %11) call void @llvm.lifetime.end.p0(ptr nonnull %10) call void @llvm.lifetime.end.p0(ptr nonnull %9) @@ -21310,7 +21304,7 @@ define internal fastcc noundef ptr @_ZL26foldPowerOf2AndShiftedMaskPN4llvm8ICmpI br label %40 40: ; preds = %4, %39 - %.0 = phi ptr [ %.1, %39 ], [ null, %4 ] + %.0 = phi ptr [ %.1, %36 ], [ null, %4 ] ret ptr %.0 } diff --git a/bench/llvm/optimized/InstCombineSelect.ll b/bench/llvm/optimized/InstCombineSelect.ll index cde6939e8da..18513930241 100644 --- a/bench/llvm/optimized/InstCombineSelect.ll +++ b/bench/llvm/optimized/InstCombineSelect.ll @@ -15768,9 +15768,8 @@ define linkonce_odr hidden noundef zeroext i1 @_ZNK4llvm5APInt9isAllOnesEv(ptr n ; Function Attrs: mustprogress nounwind uwtable define hidden noundef zeroext i1 @_ZNK4llvm16InstCombinerImpl16fmulByZeroIsZeroEPNS_5ValueENS_13FastMathFlagsEPKNS_11InstructionE(ptr noundef nonnull align 8 dereferenceable(1088) %0, ptr noundef %1, i32 %2, ptr noundef %3) local_unnamed_addr #0 align 2 { %5 = tail call i64 @_ZNK4llvm16InstCombinerImpl19computeKnownFPClassEPNS_5ValueENS_13FastMathFlagsENS_11FPClassTestEPKNS_11InstructionEj(ptr noundef nonnull align 8 dereferenceable(1088) %0, ptr noundef %1, i32 %2, i32 noundef 60, ptr noundef %3, i32 noundef 0) - %.sroa.0.0.extract.trunc = trunc i64 %5 to i32 - %6 = and i32 %.sroa.0.0.extract.trunc, 519 - %or.cond = icmp eq i32 %6, 0 + %6 = and i64 %5, 519 + %or.cond = icmp eq i64 %6, 0 br i1 %or.cond, label %7, label %12 7: ; preds = %4 @@ -15779,8 +15778,8 @@ define hidden noundef zeroext i1 @_ZNK4llvm16InstCombinerImpl16fmulByZeroIsZeroE br i1 %.not, label %9, label %12 9: ; preds = %7 - %10 = and i32 %.sroa.0.0.extract.trunc, 56 - %11 = icmp eq i32 %10, 0 + %10 = and i64 %5, 56 + %11 = icmp eq i64 %10, 0 br label %12 12: ; preds = %7, %9, %4 @@ -18387,16 +18386,15 @@ _ZN4llvm12PatternMatch5matchINS_5ValueENS0_14BinaryOp_matchINS0_14specificval_ty %31 = select i1 %5, i32 8, i32 0 %32 = or disjoint i32 %30, %31 %33 = call i64 @_ZNK4llvm16InstCombinerImpl19computeKnownFPClassEPNS_5ValueENS_13FastMathFlagsENS_11FPClassTestEPKNS_11InstructionEj(ptr noundef nonnull align 8 dereferenceable(1088) %0, ptr noundef nonnull %.sink.i.i.i, i32 %32, i32 noundef 60, ptr noundef nonnull %4, i32 noundef 0) - %.sroa.0.0.extract.trunc.i = trunc i64 %33 to i32 - %34 = and i32 %.sroa.0.0.extract.trunc.i, 519 - %or.cond.i = icmp ne i32 %34, 0 + %34 = and i64 %33, 519 + %or.cond.i = icmp ne i64 %34, 0 %brmerge = or i1 %5, %or.cond.i %not.or.cond.i = xor i1 %or.cond.i, true br i1 %brmerge, label %_ZNK4llvm16InstCombinerImpl16fmulByZeroIsZeroEPNS_5ValueENS_13FastMathFlagsEPKNS_11InstructionE.exit, label %35 35: ; preds = %23 - %36 = and i32 %.sroa.0.0.extract.trunc.i, 56 - %37 = icmp eq i32 %36, 0 + %36 = and i64 %33, 56 + %37 = icmp eq i64 %36, 0 br label %_ZNK4llvm16InstCombinerImpl16fmulByZeroIsZeroEPNS_5ValueENS_13FastMathFlagsEPKNS_11InstructionE.exit .critedge: ; preds = %_ZN4llvm12PatternMatch5matchINS_5ValueENS0_14cstval_pred_tyINS0_14is_pos_zero_fpENS_10ConstantFPELb1EEEEEbPT_RKT0_.exit diff --git a/bench/llvm/optimized/LoopUtils.ll b/bench/llvm/optimized/LoopUtils.ll index 45c388fcd19..04ab1ea74a7 100644 --- a/bench/llvm/optimized/LoopUtils.ll +++ b/bench/llvm/optimized/LoopUtils.ll @@ -1753,94 +1753,95 @@ define dso_local noundef range(i32 0, 7) i32 @_ZN4llvm29hasUnrollAndJamTransform ; Function Attrs: mustprogress nounwind uwtable define dso_local noundef range(i32 0, 7) i32 @_ZN4llvm26hasVectorizeTransformationEPKNS_4LoopE(ptr noundef %0) local_unnamed_addr #0 { %2 = tail call i16 @_ZN4llvm28getOptionalBoolLoopAttributeEPKNS_4LoopENS_9StringRefE(ptr noundef %0, ptr nonnull @.str.9, i64 26) #21 - %.sroa.038.0.extract.trunc = trunc i16 %2 to i8 - %3 = and i16 %2, 256 - %4 = icmp ne i16 %3, 0 - %5 = icmp eq i8 %.sroa.038.0.extract.trunc, 0 - %6 = and i1 %4, %5 - br i1 %6, label %.critedge4, label %7 - -7: ; preds = %1 - %8 = tail call i64 @_ZN4llvm27getOptionalIntLoopAttributeEPKNS_4LoopENS_9StringRefE(ptr noundef %0, ptr nonnull @.str, i64 25) #21 - %9 = and i64 %8, 4294967296 - %.not.i = icmp ne i64 %9, 0 - br i1 %.not.i, label %10, label %_ZN4llvm36getOptionalElementCountLoopAttributeEPKNS_4LoopE.exit - -10: ; preds = %7 - %11 = tail call i64 @_ZN4llvm27getOptionalIntLoopAttributeEPKNS_4LoopENS_9StringRefE(ptr noundef %0, ptr nonnull @.str.1, i64 35) #21 - %12 = and i64 %11, 4294967296 - %.not13.i = icmp eq i64 %12, 0 - %13 = and i64 %11, 4294967295 - %.not1415.i = icmp eq i64 %13, 0 + %3 = and i16 %2, 511 + %4 = icmp eq i16 %3, 256 + br i1 %4, label %.critedge4, label %5 + +5:; preds = %1 + %6 = tail call i64 @_ZN4llvm27getOptionalIntLoopAttributeEPKNS_4LoopENS_9StringRefE(ptr noundef %0, ptr nonnull @.str, i64 25) #21 + %7 = and i64 %6, 4294967296 + %.not.i = icmp ne i64 %7, 0 + br i1 %.not.i, label %8, label %_ZN4llvm36getOptionalElementCountLoopAttributeEPKNS_4LoopE.exit + +8:; preds = %5 + %9 = tail call i64 @_ZN4llvm27getOptionalIntLoopAttributeEPKNS_4LoopENS_9StringRefE(ptr noundef %0, ptr nonnull @.str.1, i64 35) #21 + %10 = and i64 %9, 4294967296 + %.not13.i = icmp eq i64 %10, 0 + %11 = and i64 %9, 4294967295 + %.not1415.i = icmp eq i64 %11, 0 %.not14.i = or i1 %.not13.i, %.not1415.i %.sroa.2.0.insert.shift.i.i = select i1 %.not14.i, i64 0, i64 4294967296 - %.sroa.0.0.insert.ext.i.i = and i64 %8, 4294967295 + %.sroa.0.0.insert.ext.i.i = and i64 %6, 4294967295 %.sroa.0.0.insert.insert.i.i = or disjoint i64 %.sroa.2.0.insert.shift.i.i, %.sroa.0.0.insert.ext.i.i br label %_ZN4llvm36getOptionalElementCountLoopAttributeEPKNS_4LoopE.exit -_ZN4llvm36getOptionalElementCountLoopAttributeEPKNS_4LoopE.exit: ; preds = %7, %10 - %.sroa.011.0.i = phi i64 [ %.sroa.0.0.insert.insert.i.i, %10 ], [ undef, %7 ] +_ZN4llvm36getOptionalElementCountLoopAttributeEPKNS_4LoopE.exit: ; preds = %5, %8 + %.sroa.011.0.i = phi i64 [ %.sroa.0.0.insert.insert.i.i, %8 ], [ undef, %5 ] %14 = tail call i64 @_ZN4llvm27getOptionalIntLoopAttributeEPKNS_4LoopENS_9StringRefE(ptr noundef %0, ptr nonnull @.str.10, i64 26) #21 %.sroa.017.0.extract.trunc = trunc i64 %14 to i32 %.sroa.6.0.extract.shift = lshr i64 %14, 32 - %15 = icmp eq i8 %.sroa.038.0.extract.trunc, 1 - %16 = and i1 %4, %15 - %or.cond = and i1 %16, %.not.i - br i1 %or.cond, label %17, label %.critedge - -17: ; preds = %_ZN4llvm36getOptionalElementCountLoopAttributeEPKNS_4LoopE.exit - %18 = and i64 %.sroa.011.0.i, 8589934591 - %19 = icmp eq i64 %18, 1 - %20 = trunc i64 %.sroa.6.0.extract.shift to i1 - %21 = icmp eq i32 %.sroa.017.0.extract.trunc, 1 - %22 = and i1 %21, %20 - %or.cond46 = select i1 %19, i1 %22, i1 false - br i1 %or.cond46, label %.critedge4, label %.critedge - -.critedge: ; preds = %17, %_ZN4llvm36getOptionalElementCountLoopAttributeEPKNS_4LoopE.exit - %23 = tail call noundef zeroext i1 @_ZN4llvm23getBooleanLoopAttributeEPKNS_4LoopENS_9StringRefE(ptr noundef %0, ptr nonnull @.str.11, i64 22) #21 - %brmerge = or i1 %16, %23 - %.mux = select i1 %23, i32 2, i32 5 - br i1 %brmerge, label %.critedge4, label %24 - -24: ; preds = %.critedge - br i1 %.not.i, label %25, label %.critedge2 - -25: ; preds = %24 - %26 = and i64 %.sroa.011.0.i, 8589934591 - %27 = icmp eq i64 %26, 1 - %28 = trunc i64 %.sroa.6.0.extract.shift to i1 - %29 = icmp eq i32 %.sroa.017.0.extract.trunc, 1 - %30 = and i1 %29, %28 - %or.cond49 = select i1 %27, i1 %30, i1 false - br i1 %or.cond49, label %.critedge4, label %31 - -31: ; preds = %25 - %32 = and i64 %.sroa.011.0.i, 4294967296 - %33 = icmp ne i64 %32, 0 + %15 = icmp eq i16 %3, 257 + %16 = and i1 %13, %.not.i + br i1 %or.cond, label %14, label %.critedge + +14: ; preds = %_ZN4llvm36getOptionalElementCountLoopAttributeEPKNS_4LoopE.exit + %15 = and i64 %.sroa.011.0.i, 8589934591 + %16 = icmp eq i64 %15, 1 + %17 = trunc i64 %.sroa.6.0.extract.shift to i1 + %18 = icmp eq i32 %.sroa.017.0.extract.trunc, 1 + %19 = and i1 %18, %17 + %or.cond46 = select i1 %16, i1 %19, i1 false + br i1 %or.cond46, label %.critedge4, label %.critedge.thread + +.critedge.thread: ; preds = %14 + %20 = tail call noundef zeroext i1 @_ZN4llvm23getBooleanLoopAttributeEPKNS_4LoopENS_9StringRefE(ptr noundef %0, ptr nonnull @.str.11, i64 22) #21 + %.mux55 = select i1 %20, i32 2, i32 5 + br label %.critedge4 + +.critedge:; preds = %_ZN4llvm36getOptionalElementCountLoopAttributeEPKNS_4LoopE.exit + %21 = tail call noundef zeroext i1 @_ZN4llvm23getBooleanLoopAttributeEPKNS_4LoopENS_9StringRefE(ptr noundef %0, ptr nonnull @.str.11, i64 22) #21 + %brmerge = or i1 %13, %21 + %.mux = select i1 %21, i32 2, i32 5 + br i1 %brmerge, label %.critedge4, label %22 + +22:; preds = %.critedge + br i1 %.not.i, label %23, label %.critedge2 + +23:; preds = %22 + %30 = and i64 %.sroa.011.0.i, 8589934591 + %25 = icmp eq i64 %30, 1 + %26 = trunc i64 %.sroa.6.0.extract.shift to i1 + %27 = icmp eq i32 %.sroa.017.0.extract.trunc, 1 + %28 = and i1 %27, %26 + %or.cond49 = select i1 %25, i1 %28, i1 false + br i1 %or.cond49, label %.critedge4, label %29 + +29: ; preds = %23 + %30 = and i64 %.sroa.011.0.i, 4294967296 + %31 = icmp ne i64 %30, 0 %.sroa.022.0.extract.trunc26 = trunc i64 %.sroa.011.0.i to i32 %.not.i10 = icmp ne i32 %.sroa.022.0.extract.trunc26, 0 - %or.cond.not.i = and i1 %33, %.not.i10 + %or.cond.not.i = and i1 %31, %.not.i10 %34 = icmp ugt i32 %.sroa.022.0.extract.trunc26, 1 %spec.select.i = or i1 %34, %or.cond.not.i %35 = icmp sgt i32 %.sroa.017.0.extract.trunc, 1 - %36 = and i1 %35, %28 + %36 = and i1 %35, %26 %or.cond52 = select i1 %spec.select.i, i1 true, i1 %36 br i1 %or.cond52, label %.critedge4, label %37 -.critedge2: ; preds = %24 +.critedge2: ; preds = %22 %.old = trunc i64 %.sroa.6.0.extract.shift to i1 %.old50 = icmp sgt i32 %.sroa.017.0.extract.trunc, 1 %.old51 = and i1 %.old50, %.old br i1 %.old51, label %.critedge4, label %37 -37: ; preds = %31, %.critedge2 +37: ; preds = %29, %.critedge2 %38 = tail call noundef zeroext i1 @_ZN4llvm23getBooleanLoopAttributeEPKNS_4LoopENS_9StringRefE(ptr noundef %0, ptr nonnull @.str.29, i64 27) #21 %. = select i1 %38, i32 2, i32 0 br label %.critedge4 -.critedge4: ; preds = %25, %.critedge, %17, %.critedge2, %37, %31, %1 - %.0 = phi i32 [ 6, %1 ], [ 1, %.critedge2 ], [ 6, %17 ], [ %.mux, %.critedge ], [ 1, %31 ], [ 2, %25 ], [ %., %37 ] +.critedge4: ; preds = %.critedge.thread, %23, %.critedge, %14, %.critedge2, %37, %29, %1 + %.0 = phi i32 [ 6, %1 ], [ 1, %.critedge2 ], [ 6, %14 ], [ %.mux, %.critedge ], [ 1, %29 ], [ 2, %23 ], [ %., %35 ], [ %.mux55, %.critedge.thread ] ret i32 %.0 } diff --git a/bench/llvm/optimized/ModuleSymbolTable.ll b/bench/llvm/optimized/ModuleSymbolTable.ll index c8267a7e8a1..6a74d249eaf 100644 --- a/bench/llvm/optimized/ModuleSymbolTable.ll +++ b/bench/llvm/optimized/ModuleSymbolTable.ll @@ -553,18 +553,15 @@ define dso_local void @_ZN4llvm17ModuleSymbolTable17CollectAsmSymbolsERKNS_6Modu br i1 %23, label %.critedge, label %24 24: ; preds = %20 - %.sroa.04.0.extract.trunc = trunc i64 %21 to i32 - %25 = and i64 %21, 4294967296 - %26 = icmp ne i64 %25, 0 - %27 = add i32 %.sroa.04.0.extract.trunc, -3 - %28 = icmp ult i32 %27, 2 - %or.cond = and i1 %26, %28 - br i1 %or.cond, label %.critedge, label %31 + %25 = and i64 %21, 8589934591 + %26 = add nsw i64 %25, -4294967299 + %26 = icmp ult i64 %26, 2 + br i1 %26, label %.critedge, label %31 .critedge: ; preds = %24, %20 %29 = load ptr, ptr %4, align 8, !tbaa !72 %30 = load i64, ptr %8, align 8, !tbaa !74 - call void %29(i64 noundef %30, ptr nonnull @.str, i64 21, i32 noundef 3) #17 + call void %27(i64 noundef %30, ptr nonnull @.str, i64 21, i32 noundef 3) #17 br label %31 31: ; preds = %24, %.critedge, %3, %16 diff --git a/bench/llvm/optimized/RISCVInstPrinter.ll b/bench/llvm/optimized/RISCVInstPrinter.ll index 7b514858d87..ee277369714 100644 --- a/bench/llvm/optimized/RISCVInstPrinter.ll +++ b/bench/llvm/optimized/RISCVInstPrinter.ll @@ -1824,19 +1824,14 @@ define dso_local void @_ZN4llvm16RISCVInstPrinter11printVTypeIEPKNS_6MCInstEjRKN %10 = getelementptr inbounds nuw %"class.llvm::MCOperand", ptr %9, i64 %8 %11 = getelementptr inbounds nuw i8, ptr %10, i64 8 %12 = load i64, ptr %11, align 8, !tbaa !32 - %13 = trunc i64 %12 to i32 - %14 = and i64 %12, 7 - %15 = icmp eq i64 %14, 4 - br i1 %15, label %19, label %16 + %13 = and i64 %12, 7 + %14 = icmp ne i64 %13, 4 + %15 = and i64 %12, 4294967072 + %or.cond = icmp eq i64 %15, 0 + %or.cond9 = and i1 %14, %or.cond + br i1 %or.cond9, label %24, label %16 16: ; preds = %5 - %17 = and i32 %13, 32 - %18 = icmp eq i32 %17, 0 - %.not = icmp ult i32 %13, 256 - %or.cond = and i1 %.not, %18 - br i1 %or.cond, label %27, label %19 - -19: ; preds = %16, %5 call void @llvm.lifetime.start.p0(ptr nonnull %6) %20 = and i64 %12, 4294967295 %21 = getelementptr inbounds nuw i8, ptr %0, i64 51 @@ -1844,11 +1839,11 @@ define dso_local void @_ZN4llvm16RISCVInstPrinter11printVTypeIEPKNS_6MCInstEjRKN %23 = trunc nuw i8 %22 to i1 br i1 %23, label %24, label %25 -24: ; preds = %19 +24: ; preds = %16 call void @_ZNK4llvm13MCInstPrinter9formatHexEl(ptr dead_on_unwind nonnull writable sret(%"class.llvm::format_object") align 8 %6, ptr noundef nonnull align 8 dereferenceable(96) %0, i64 noundef %20) #20 br label %_ZNK4llvm13MCInstPrinter9formatImmEl.exit -25: ; preds = %19 +25: ; preds = %16 call void @_ZNK4llvm13MCInstPrinter9formatDecEl(ptr dead_on_unwind nonnull writable sret(%"class.llvm::format_object") align 8 %6, ptr noundef nonnull align 8 dereferenceable(96) %0, i64 noundef %20) #20 br label %_ZNK4llvm13MCInstPrinter9formatImmEl.exit @@ -1857,9 +1852,10 @@ _ZNK4llvm13MCInstPrinter9formatImmEl.exit: ; preds = %24, %25 call void @llvm.lifetime.end.p0(ptr nonnull %6) br label %28 -27: ; preds = %16 - tail call void @_ZN4llvm10RISCVVType10printVTypeEjRNS_11raw_ostreamE(i32 noundef %13, ptr noundef nonnull align 8 dereferenceable(48) %4) #20 - br label %28 +27: ; preds = %5 + %25 = trunc i64 %12 to i32 + tail call void @_ZN4llvm10RISCVVType10printVTypeEjRNS_11raw_ostreamE(i32 noundef %25, ptr noundef nonnull align 8 dereferenceable(48) %4) #20 + br label %26 28: ; preds = %27, %_ZNK4llvm13MCInstPrinter9formatImmEl.exit ret void diff --git a/bench/llvm/optimized/SemaARM.ll b/bench/llvm/optimized/SemaARM.ll index cd40032efb0..2628e830c2b 100644 --- a/bench/llvm/optimized/SemaARM.ll +++ b/bench/llvm/optimized/SemaARM.ll @@ -35080,41 +35080,38 @@ _ZNK5clang10Qualifiers24isAddressSpaceSupersetOfES0_RKNS_10ASTContextE.exit.i: ; _ZNK5clang10Qualifiers24isAddressSpaceSupersetOfES0_RKNS_10ASTContextE.exit.thread.i: ; preds = %_ZNK5clang10Qualifiers24isAddressSpaceSupersetOfES0_RKNS_10ASTContextE.exit.i, %_ZNK5clang8QualType13getQualifiersEv.exit8 %53 = xor i64 %46, %.sroa.012.0 - %54 = trunc i64 %53 to i32 - %55 = and i32 %54, 48 - %56 = icmp eq i32 %55, 0 - %57 = and i64 %.sroa.0.0.i.i7, 48 - %58 = icmp eq i64 %57, 0 - %or.cond.not17.i = or i1 %58, %56 - %59 = and i64 %.sroa.012.0, 48 - %60 = icmp eq i64 %59, 0 - %or.cond11.not14.i = or i1 %60, %or.cond.not17.i - %61 = icmp ult i64 %53, 4294967296 + %54 = and i64 %53, 48 + %55 = icmp eq i64 %54, 0 + %56 = and i64 %.sroa.0.0.i.i7, 48 + %57 = icmp eq i64 %56, 0 + %or.cond.not17.i = or i1 %57, %55 + %58 = and i64 %.sroa.012.0, 48 + %59 = icmp eq i64 %58, 0 + %or.cond11.not14.i = or i1 %59, %or.cond.not17.i + %60 = and i64 %53, -4294966848 + %61 = icmp eq i64 %60, 0 %or.cond12.i = and i1 %61, %or.cond11.not14.i - %62 = and i32 %54, 448 - %63 = icmp eq i32 %62, 0 - %or.cond.i = and i1 %63, %or.cond12.i - br i1 %or.cond.i, label %64, label %_ZNK5clang10Qualifiers18compatiblyIncludesES0_RKNS_10ASTContextE.exit - -64: ; preds = %_ZNK5clang10Qualifiers24isAddressSpaceSupersetOfES0_RKNS_10ASTContextE.exit.thread.i - %65 = xor i64 %46, -1 - %66 = and i64 %.sroa.012.0, 7 - %67 = and i64 %66, %65 - %68 = icmp eq i64 %67, 0 - br i1 %68, label %69, label %_ZNK5clang10Qualifiers18compatiblyIncludesES0_RKNS_10ASTContextE.exit - -69: ; preds = %64 - %70 = and i64 %.sroa.012.0, 8 - %.not.i9 = icmp eq i64 %70, 0 - br i1 %.not.i9, label %_ZNK5clang10Qualifiers18compatiblyIncludesES0_RKNS_10ASTContextE.exit, label %71 - -71: ; preds = %69 - %72 = and i64 %.sroa.0.0.i.i7, 8 - %73 = icmp ne i64 %72, 0 + br i1 %or.cond.i, label %62, label %_ZNK5clang10Qualifiers18compatiblyIncludesES0_RKNS_10ASTContextE.exit + +62:; preds = %_ZNK5clang10Qualifiers24isAddressSpaceSupersetOfES0_RKNS_10ASTContextE.exit.thread.i + %63 = xor i64 %46, -1 + %64 = and i64 %.sroa.012.0, 7 + %65 = and i64 %64, %63 + %66 = icmp eq i64 %65, 0 + br i1 %66, label %67, label %_ZNK5clang10Qualifiers18compatiblyIncludesES0_RKNS_10ASTContextE.exit + +67:; preds = %62 + %68 = and i64 %.sroa.012.0, 8 + %.not.i9 = icmp eq i64 %68, 0 + br i1 %.not.i9, label %_ZNK5clang10Qualifiers18compatiblyIncludesES0_RKNS_10ASTContextE.exit, label %69 + +69:; preds = %67 + %70 = and i64 %.sroa.0.0.i.i7, 8 + %71 = icmp ne i64 %70, 0 br label %_ZNK5clang10Qualifiers18compatiblyIncludesES0_RKNS_10ASTContextE.exit -_ZNK5clang10Qualifiers18compatiblyIncludesES0_RKNS_10ASTContextE.exit: ; preds = %_ZNK5clang10Qualifiers24isAddressSpaceSupersetOfES0_RKNS_10ASTContextE.exit.i, %_ZNK5clang10Qualifiers24isAddressSpaceSupersetOfES0_RKNS_10ASTContextE.exit.thread.i, %64, %69, %71 - %74 = phi i1 [ false, %64 ], [ true, %69 ], [ %73, %71 ], [ false, %_ZNK5clang10Qualifiers24isAddressSpaceSupersetOfES0_RKNS_10ASTContextE.exit.thread.i ], [ false, %_ZNK5clang10Qualifiers24isAddressSpaceSupersetOfES0_RKNS_10ASTContextE.exit.i ] +_ZNK5clang10Qualifiers18compatiblyIncludesES0_RKNS_10ASTContextE.exit: ; preds = %_ZNK5clang10Qualifiers24isAddressSpaceSupersetOfES0_RKNS_10ASTContextE.exit.i, %_ZNK5clang10Qualifiers24isAddressSpaceSupersetOfES0_RKNS_10ASTContextE.exit.thread.i, %62, %67, %69 + %74 = phi i1 [ false, %62 ], [ true, %67 ], [ %71, %69 ], [ false, %_ZNK5clang10Qualifiers24isAddressSpaceSupersetOfES0_RKNS_10ASTContextE.exit.thread.i ], [ false, %_ZNK5clang10Qualifiers24isAddressSpaceSupersetOfES0_RKNS_10ASTContextE.exit.i ] ret i1 %74 } diff --git a/bench/llvm/optimized/SemaDeclCXX.ll b/bench/llvm/optimized/SemaDeclCXX.ll index b98d4fee10b..8f6ebad5280 100644 --- a/bench/llvm/optimized/SemaDeclCXX.ll +++ b/bench/llvm/optimized/SemaDeclCXX.ll @@ -135906,20 +135906,17 @@ _ZNK5clang10Qualifiers24isAddressSpaceSupersetOfES0_RKNS_10ASTContextE.exit.i: ; _ZNK5clang10Qualifiers24isAddressSpaceSupersetOfES0_RKNS_10ASTContextE.exit.thread.i: ; preds = %_ZNK5clang10Qualifiers24isAddressSpaceSupersetOfES0_RKNS_10ASTContextE.exit.i, %_ZNK5clang8QualType13getQualifiersEv.exit8 %53 = xor i64 %46, %.sroa.012.0 - %54 = trunc i64 %53 to i32 - %55 = and i32 %54, 48 - %56 = icmp eq i32 %55, 0 - %57 = and i64 %.sroa.0.0.i.i7, 48 - %58 = icmp eq i64 %57, 0 - %or.cond.not17.i = or i1 %58, %56 - %59 = and i64 %.sroa.012.0, 48 - %60 = icmp eq i64 %59, 0 - %or.cond11.not14.i = or i1 %60, %or.cond.not17.i - %61 = icmp ult i64 %53, 4294967296 + %54 = and i64 %53, 48 + %55 = icmp eq i64 %54, 0 + %56 = and i64 %.sroa.0.0.i.i7, 48 + %57 = icmp eq i64 %56, 0 + %or.cond.not17.i = or i1 %57, %55 + %58 = and i64 %.sroa.012.0, 48 + %59 = icmp eq i64 %58, 0 + %or.cond11.not14.i = or i1 %59, %or.cond.not17.i + %60 = and i64 %53, -4294966848 + %61 = icmp eq i64 %60, 0 %or.cond12.i = and i1 %61, %or.cond11.not14.i - %62 = and i32 %54, 448 - %63 = icmp eq i32 %62, 0 - %or.cond.i = and i1 %63, %or.cond12.i br i1 %or.cond.i, label %64, label %_ZNK5clang10Qualifiers18compatiblyIncludesES0_RKNS_10ASTContextE.exit 64: ; preds = %_ZNK5clang10Qualifiers24isAddressSpaceSupersetOfES0_RKNS_10ASTContextE.exit.thread.i @@ -135940,7 +135937,7 @@ _ZNK5clang10Qualifiers24isAddressSpaceSupersetOfES0_RKNS_10ASTContextE.exit.thre br label %_ZNK5clang10Qualifiers18compatiblyIncludesES0_RKNS_10ASTContextE.exit _ZNK5clang10Qualifiers18compatiblyIncludesES0_RKNS_10ASTContextE.exit: ; preds = %_ZNK5clang10Qualifiers24isAddressSpaceSupersetOfES0_RKNS_10ASTContextE.exit.i, %_ZNK5clang10Qualifiers24isAddressSpaceSupersetOfES0_RKNS_10ASTContextE.exit.thread.i, %64, %69, %71 - %74 = phi i1 [ false, %64 ], [ true, %69 ], [ %73, %71 ], [ false, %_ZNK5clang10Qualifiers24isAddressSpaceSupersetOfES0_RKNS_10ASTContextE.exit.thread.i ], [ false, %_ZNK5clang10Qualifiers24isAddressSpaceSupersetOfES0_RKNS_10ASTContextE.exit.i ] + %74 = phi i1 [ false, %62 ], [ true, %67 ], [ %73, %69 ], [ false, %_ZNK5clang10Qualifiers24isAddressSpaceSupersetOfES0_RKNS_10ASTContextE.exit.thread.i ], [ false, %_ZNK5clang10Qualifiers24isAddressSpaceSupersetOfES0_RKNS_10ASTContextE.exit.i ] ret i1 %74 } diff --git a/bench/llvm/optimized/SemaType.ll b/bench/llvm/optimized/SemaType.ll index ae7f036d9a4..6155a54b553 100644 --- a/bench/llvm/optimized/SemaType.ll +++ b/bench/llvm/optimized/SemaType.ll @@ -10966,9 +10966,10 @@ _ZNK5clang4Type5getAsINS_10BitIntTypeEEEPKT_v.exit.thread: ; preds = %125, %_ZNK %.0.i52 = load i64, ptr %.0.in.i51, align 8, !tbaa !12 %187 = trunc i64 %.0.i52 to i32 %188 = icmp eq i32 %187, 0 - %189 = or i32 %187, %182 - %or.cond = icmp eq i32 %189, 0 - br i1 %or.cond, label %190, label %195 + %189 = or i64 %.0.i52, %.0.i + %190 = and i64 %189, 4294967295 + %or.cond = icmp eq i64 %190, 0 + br i1 %or.cond, label %191, label %196 190: ; preds = %177 call void @llvm.lifetime.start.p0(ptr nonnull %18) @@ -11046,7 +11047,7 @@ _ZNK5clang4Type5getAsINS_10BitIntTypeEEEPKT_v.exit.thread: ; preds = %125, %_ZNK br label %225 225: ; preds = %190, %197, %202, %210, %218, %222, %172, %167, %162 - %.sroa.061.2 = phi i64 [ 0, %190 ], [ 0, %197 ], [ 0, %202 ], [ %224, %222 ], [ 0, %218 ], [ 0, %210 ], [ 0, %172 ], [ 0, %167 ], [ 0, %162 ] + %.sroa.061.2 = phi i64 [ 0, %191 ], [ 0, %198 ], [ 0, %203 ], [ %224, %223 ], [ 0, %219 ], [ 0, %211 ], [ 0, %172 ], [ 0, %167 ], [ 0, %162 ] call void @llvm.lifetime.end.p0(ptr nonnull %11) call void @llvm.lifetime.end.p0(ptr nonnull %10) %226 = getelementptr inbounds nuw i8, ptr %9, i64 16 diff --git a/bench/llvm/optimized/VPlanRecipes.ll b/bench/llvm/optimized/VPlanRecipes.ll index acff8dc3353..096b5ab462a 100644 --- a/bench/llvm/optimized/VPlanRecipes.ll +++ b/bench/llvm/optimized/VPlanRecipes.ll @@ -18140,10 +18140,10 @@ _ZN4llvm10BasicBlock13getTerminatorEv.exit: ; preds = %2, %23 %.sroa.0.0.extract.trunc = trunc i64 %29 to i32 %30 = and i64 %29, 4294967296 %31 = icmp ne i64 %30, 0 - %32 = icmp ne i32 %.sroa.0.0.extract.trunc, 1 - %.not59 = or i1 %32, %31 + %32 = and i64 %29, 8589934591 + %.not59.not = icmp eq i64 %32, 1 call void @llvm.lifetime.start.p0(ptr nonnull %7) - br i1 %.not59, label %33, label %37 + br i1 %.not59.not, label %37, label %33 33: ; preds = %_ZN4llvm10BasicBlock13getTerminatorEv.exit %34 = getelementptr inbounds nuw i8, ptr %7, i64 32 @@ -18868,25 +18868,20 @@ define dso_local { i64, i32 } @_ZNK4llvm31VPFirstOrderRecurrencePHIRecipe11compu %4 = alloca %"class.llvm::SmallVector.397", align 8 %5 = alloca %"class.llvm::ArrayRef.200", align 8 %.sroa.018.0.extract.trunc = trunc i64 %1 to i32 - %6 = and i64 %1, 4294967296 - %7 = icmp ne i64 %6, 0 - %8 = icmp ne i32 %.sroa.018.0.extract.trunc, 1 - %.not26 = or i1 %8, %7 - br i1 %.not26, label %14, label %9 - -9: ; preds = %3 - %10 = load ptr, ptr %2, align 8, !tbaa !99 - %11 = getelementptr inbounds nuw i8, ptr %2, i64 160 - %12 = load i32, ptr %11, align 8, !tbaa !323 - %13 = tail call { i64, i32 } @_ZNK4llvm19TargetTransformInfo14getCFInstrCostEjNS0_14TargetCostKindEPKNS_11InstructionE(ptr noundef nonnull align 8 dereferenceable(8) %10, i32 noundef 55, i32 noundef %12, ptr noundef null) #25 - br label %59 + %6 = and i64 %1, 8589934591 + switch i64 %6, label %12 [ + i64 1, label %7 + i64 4294967297, label %54 + ] 14: ; preds = %3 - %.not = xor i1 %7, true - %brmerge = or i1 %8, %.not - br i1 %brmerge, label %15, label %59 + %8 = load ptr, ptr %2, align 8, !tbaa !99 + %9 = getelementptr inbounds nuw i8, ptr %2, i64 160 + %10 = load i32, ptr %9, align 8, !tbaa !323 + %11 = tail call { i64, i32 } @_ZNK4llvm19TargetTransformInfo14getCFInstrCostEjNS0_14TargetCostKindEPKNS_11InstructionE(ptr noundef nonnull align 8 dereferenceable(8) %8, i32 noundef 55, i32 noundef %10, ptr noundef null) #25 + br label %54 -15: ; preds = %14 +15: ; preds = %3 call void @llvm.lifetime.start.p0(ptr nonnull %4) %16 = and i64 %1, 4294967295 %17 = getelementptr inbounds nuw i8, ptr %4, i64 16 @@ -18911,8 +18906,8 @@ _ZN4llvm15SmallVectorImplIiE7reserveEm.exit.i.i.i: ; preds = %21 br i1 %.not11.i.i.i, label %_ZN4llvm11SmallVectorIiLj12EEC2Em.exit, label %.lr.ph.preheader.i.i.i .lr.ph.preheader.i.i.i: ; preds = %_ZN4llvm15SmallVectorImplIiE7reserveEm.exit.i.i.i, %21 - %23 = phi ptr [ %17, %21 ], [ %.pre.pre, %_ZN4llvm15SmallVectorImplIiE7reserveEm.exit.i.i.i ] - %.pre-phi.i.i3.i = phi i64 [ 0, %21 ], [ %.pre13.i.i.i, %_ZN4llvm15SmallVectorImplIiE7reserveEm.exit.i.i.i ] + %23 = phi ptr [ %17, %18 ], [ %.pre.pre, %_ZN4llvm15SmallVectorImplIiE7reserveEm.exit.i.i.i ] + %.pre-phi.i.i3.i = phi i64 [ 0, %18 ], [ %.pre13.i.i.i, %_ZN4llvm15SmallVectorImplIiE7reserveEm.exit.i.i.i ] %24 = getelementptr i32, ptr %23, i64 %.pre-phi.i.i3.i %25 = sub nsw i64 %16, %.pre-phi.i.i3.i %26 = shl nsw i64 %25, 2 @@ -18939,7 +18934,7 @@ _ZN4llvm11SmallVectorIiLj12EEC2Em.exit: ; preds = %_ZN4llvm15SmallVect br i1 %.not.i, label %_ZSt4iotaIPijEvT_S1_T0_.exit, label %.lr.ph.i, !llvm.loop !693 _ZSt4iotaIPijEvT_S1_T0_.exit: ; preds = %.lr.ph.i, %15, %_ZN4llvm11SmallVectorIiLj12EEC2Em.exit - %32 = phi i32 [ -1, %15 ], [ -1, %_ZN4llvm11SmallVectorIiLj12EEC2Em.exit ], [ %29, %.lr.ph.i ] + %32 = phi i32 [ -1, %12 ], [ -1, %_ZN4llvm11SmallVectorIiLj12EEC2Em.exit ], [ %29, %.lr.ph.i ] %33 = getelementptr inbounds nuw i8, ptr %2, i64 16 %34 = getelementptr inbounds nuw i8, ptr %0, i64 16 %.0.copyload.i.i.i.i.i.i.i.i.i = load i64, ptr %34, align 8 @@ -18951,31 +18946,26 @@ _ZSt4iotaIPijEvT_S1_T0_.exit: ; preds = %.lr.ph.i, %15, %_ZN 39: ; preds = %_ZSt4iotaIPijEvT_S1_T0_.exit %40 = load ptr, ptr %38, align 8, !tbaa !59 - %41 = load ptr, ptr %40, align 8, !tbaa !60 + %41 = load ptr, ptr %314, align 8, !tbaa !60 br label %_ZNK4llvm5VPDef16getVPSingleValueEv.exit _ZNK4llvm5VPDef16getVPSingleValueEv.exit: ; preds = %_ZSt4iotaIPijEvT_S1_T0_.exit, %39 - %.0.i.i = phi ptr [ %41, %39 ], [ %38, %_ZSt4iotaIPijEvT_S1_T0_.exit ] + %.0.i.i = phi ptr [ %41, %36 ], [ %38, %_ZSt4iotaIPijEvT_S1_T0_.exit ] %42 = call noundef ptr @_ZN4llvm14VPTypeAnalysis15inferScalarTypeEPKNS_7VPValueE(ptr noundef nonnull align 8 dereferenceable(40) %33, ptr noundef %.0.i.i) #25 %43 = getelementptr inbounds nuw i8, ptr %42, i64 8 %44 = load i32, ptr %43, align 8 %trunc.i = trunc i32 %44 to i8 - switch i8 %trunc.i, label %45 [ + switch i8 %trunc.i, label %42 [ i8 7, label %_ZN4llvm10toVectorTyEPNS_4TypeENS_12ElementCountE.exit i8 9, label %_ZN4llvm10toVectorTyEPNS_4TypeENS_12ElementCountE.exit ] 45: ; preds = %_ZNK4llvm5VPDef16getVPSingleValueEv.exit - %46 = and i64 %1, 8589934591 - %.not5.not.i = icmp eq i64 %46, 1 - br i1 %.not5.not.i, label %_ZN4llvm10toVectorTyEPNS_4TypeENS_12ElementCountE.exit, label %47 - -47: ; preds = %45 - %48 = call noundef ptr @_ZN4llvm10VectorType3getEPNS_4TypeENS_12ElementCountE(ptr noundef nonnull %42, i64 %1) #25 + %43 = call noundef ptr @_ZN4llvm10VectorType3getEPNS_4TypeENS_12ElementCountE(ptr noundef nonnull %39, i64 %1) #25 br label %_ZN4llvm10toVectorTyEPNS_4TypeENS_12ElementCountE.exit -_ZN4llvm10toVectorTyEPNS_4TypeENS_12ElementCountE.exit: ; preds = %_ZNK4llvm5VPDef16getVPSingleValueEv.exit, %_ZNK4llvm5VPDef16getVPSingleValueEv.exit, %45, %47 - %.0.i = phi ptr [ %48, %47 ], [ %42, %45 ], [ %42, %_ZNK4llvm5VPDef16getVPSingleValueEv.exit ], [ %42, %_ZNK4llvm5VPDef16getVPSingleValueEv.exit ] +_ZN4llvm10toVectorTyEPNS_4TypeENS_12ElementCountE.exit: ; preds = %_ZNK4llvm5VPDef16getVPSingleValueEv.exit, %_ZNK4llvm5VPDef16getVPSingleValueEv.exit, %45 + %.0.i = phi ptr [ %43, %42 ], [ %42, %_ZNK4llvm5VPDef16getVPSingleValueEv.exit ], [ %42, %_ZNK4llvm5VPDef16getVPSingleValueEv.exit ] %49 = load ptr, ptr %2, align 8, !tbaa !99 %50 = load ptr, ptr %4, align 8, !tbaa !59 %51 = load i32, ptr %18, align 8, !tbaa !52 @@ -18996,8 +18986,8 @@ _ZN4llvm11SmallVectorIiLj12EED2Ev.exit: ; preds = %_ZN4llvm10toVectorT call void @llvm.lifetime.end.p0(ptr nonnull %4) br label %59 -59: ; preds = %14, %_ZN4llvm11SmallVectorIiLj12EED2Ev.exit, %9 - %.pn = phi { i64, i32 } [ %13, %9 ], [ %55, %_ZN4llvm11SmallVectorIiLj12EED2Ev.exit ], [ { i64 0, i32 1 }, %14 ] +59: ; preds = %3, %_ZN4llvm11SmallVectorIiLj12EED2Ev.exit, %7 + %.pn = phi { i64, i32 } [ %11, %7 ], [ %55, %_ZN4llvm11SmallVectorIiLj12EED2Ev.exit ], [ { i64 0, i32 1 }, %3 ] ret { i64, i32 } %.pn } diff --git a/bench/lvgl/optimized/lv_draw_buf.ll b/bench/lvgl/optimized/lv_draw_buf.ll index 0193d7b1d10..04054a8ff47 100644 --- a/bench/lvgl/optimized/lv_draw_buf.ll +++ b/bench/lvgl/optimized/lv_draw_buf.ll @@ -1529,13 +1529,13 @@ define range(i32 0, 2) i32 @lv_draw_buf_premultiply(ptr noundef captures(address 2: ; preds = %1 %3 = load i64, ptr %0, align 8 - %4 = trunc i64 %3 to i32 - %5 = and i32 %4, 2162688 - %or.cond99.not = icmp eq i32 %5, 2097152 - br i1 %or.cond99.not, label %6, label %80 + %4 = and i64 %3, 2162688 + %or.cond99.not = icmp eq i64 %4, 2097152 + br i1 %or.cond99.not, label %5, label %80 6: ; preds = %2 - %7 = lshr i32 %4, 8 + %6 = trunc i64 %3 to i32 + %7 = lshr i32 %6, 8 %8 = and i32 %7, 255 %9 = add nsw i32 %8, -7 %or.cond = icmp ult i32 %9, 4 diff --git a/bench/node/optimized/libnode.crypto_keys.ll b/bench/node/optimized/libnode.crypto_keys.ll index 00ec74a6a74..b16186055a2 100644 --- a/bench/node/optimized/libnode.crypto_keys.ll +++ b/bench/node/optimized/libnode.crypto_keys.ll @@ -4766,17 +4766,13 @@ if.end68: ; preds = %if.then.i.i49, %if. br i1 %cmp.i51.not, label %if.end71, label %return if.end71: ; preds = %if.then67, %if.end68 - %and.i = and i64 %call65, 2147483648 - %cmp.not.i52 = icmp eq i64 %and.i, 0 - %20 = trunc i64 %call65 to i32 - %.mask = and i32 %20, -8388608 - %cmp7373 = icmp eq i32 %.mask, 75497472 - %cmp73 = and i1 %cmp.not.i52, %cmp7373 + %and.i = and i64 %call65, 4286578688 + %cmp.not.i52 = icmp eq i64 %and.i, 75497472 br i1 %cmp73, label %land.lhs.true, label %if.end81 land.lhs.true: ; preds = %if.end71 - %retval.0.i56 = and i32 %20, 8388607 - %cmp75 = icmp eq i32 %retval.0.i56, 104 + %retval.0.i56 = and i64 %call65, 8388607 + %cmp75 = icmp eq i64 %retval.0.i56, 104 %21 = load i8, ptr %passphrase_, align 8 %tobool.i57 = trunc i8 %21 to i1 %or.cond = select i1 %cmp75, i1 %tobool.i57, i1 false diff --git a/bench/node/optimized/libnode.crypto_util.ll b/bench/node/optimized/libnode.crypto_util.ll index 57982a81d59..4b643b06a44 100644 --- a/bench/node/optimized/libnode.crypto_util.ll +++ b/bench/node/optimized/libnode.crypto_util.ll @@ -357,16 +357,13 @@ if.then: ; preds = %do.body if.end4: ; preds = %if.then, %do.body %call5 = tail call i64 @ERR_peek_last_error() #25 - %and.i = and i64 %call5, 2147483648 - %cmp.not.i = icmp eq i64 %and.i, 0 - %0 = trunc i64 %call5 to i32 - %.mask = and i32 %0, -8388608 - %cmp78 = icmp eq i32 %.mask, 301989888 - %cmp7 = and i1 %cmp.not.i, %cmp78 + %and.i = and i64 %call5, 4286578688 + %cmp.not.i = icmp eq i64 %and.i, 301989888 br i1 %cmp7, label %if.then8, label %do.cond if.then8: ; preds = %if.end4 - %retval.0.i7 = and i32 %0, 8388607 + %1 = trunc i64 %call5 to i32 + %retval.0.i7 = and i32 %1, 8388607 switch i32 %retval.0.i7, label %do.cond [ i32 144, label %return i32 143, label %return diff --git a/bench/oiio/optimized/CineonHeader.ll b/bench/oiio/optimized/CineonHeader.ll index 413fb2ddd41..004bc460b21 100644 --- a/bench/oiio/optimized/CineonHeader.ll +++ b/bench/oiio/optimized/CineonHeader.ll @@ -11936,7 +11936,6 @@ _ZN3fmt2v86detail13error_handler8on_errorEPKc.exit: ; preds = %47 define linkonce_odr hidden noundef i32 @_ZN3fmt2v86detail14snprintf_floatIeEEiT_iNS1_11float_specsERNS1_6bufferIcEE(x86_fp80 noundef %0, i32 noundef %1, i64 %2, ptr noundef nonnull align 8 dereferenceable(32) %3) local_unnamed_addr #9 comdat { %5 = alloca [7 x i8], align 1 %.sroa.1.0.extract.shift = lshr i64 %2, 32 - %.sroa.1.0.extract.trunc = trunc nuw i64 %.sroa.1.0.extract.shift to i32 %6 = getelementptr inbounds nuw i8, ptr %3, i64 24 %7 = getelementptr inbounds nuw i8, ptr %3, i64 16 %8 = trunc i64 %.sroa.1.0.extract.shift to i8 @@ -11948,10 +11947,9 @@ define linkonce_odr hidden noundef i32 @_ZN3fmt2v86detail14snprintf_floatIeEEiT_ call void @llvm.lifetime.start.p0(ptr nonnull %5) %12 = getelementptr inbounds nuw i8, ptr %5, i64 1 store i8 37, ptr %5, align 1, !tbaa !43 - %13 = and i32 %.sroa.1.0.extract.trunc, 1048576 - %.not = icmp ne i32 %13, 0 - %14 = icmp eq i8 %8, 3 - %or.cond = and i1 %14, %.not + %13 = icmp eq i8 %8, 3 + %14 = and i64 %2, 4504694844030976 + %14 = icmp eq i64 %14, 4503612512272384 br i1 %or.cond, label %15, label %17 15: ; preds = %4 @@ -11975,7 +11973,7 @@ define linkonce_odr hidden noundef i32 @_ZN3fmt2v86detail14snprintf_floatIeEEiT_ %.1103 = phi ptr [ %21, %19 ], [ %.0102, %17 ] %23 = getelementptr inbounds nuw i8, ptr %.1103, i64 1 store i8 76, ptr %.1103, align 1, !tbaa !43 - br i1 %14, label %27, label %24 + br i1 %13, label %27, label %24 24: ; preds = %22 %25 = icmp eq i8 %8, 2 @@ -11983,8 +11981,8 @@ define linkonce_odr hidden noundef i32 @_ZN3fmt2v86detail14snprintf_floatIeEEiT_ br label %30 27: ; preds = %22 - %28 = and i32 %.sroa.1.0.extract.trunc, 65536 - %.not117 = icmp eq i32 %28, 0 + %28 = and i64 %2, 281474976710656 + %.not117 = icmp eq i64 %28, 0 %29 = select i1 %.not117, i8 97, i8 65 br label %30 @@ -12039,7 +12037,7 @@ _ZN3fmt2v86detail6bufferIcE11try_reserveEm.exit: ; preds = %_ZN3fmt2v86detail6b br i1 %56, label %_ZN3fmt2v86detail6bufferIcE11try_reserveEm.exit.sink.split, label %_ZN3fmt2v86detail6bufferIcE11try_reserveEm.exit.backedge, !llvm.loop !263 57: ; preds = %51 - switch i8 %8, label %.preheader165 [ + switch i8 %8, label %.preheader164 [ i8 2, label %58 i8 3, label %90 ] @@ -12126,7 +12124,7 @@ _ZN3fmt2v86detail6bufferIcE10try_resizeEm.exit129: ; preds = %90, %94 br label %135 .preheader165: ; preds = %57, %.preheader165 - %.0100.idx = phi i64 [ %.0100.add, %.preheader165 ], [ %52, %57 ] + %.0100.idx = phi i64 [ %.0100.add, %.preheader164 ], [ %52, %57 ] %.0100.add = add nsw i64 %.0100.idx, -1 %.ptr = getelementptr inbounds i8, ptr %37, i64 %.0100.add %98 = load i8, ptr %.ptr, align 1, !tbaa !43 @@ -24633,7 +24631,6 @@ _ZN3fmt2v819basic_memory_bufferIcLm500ESaIcEED2Ev.exit49: ; preds = %.body, %171 define linkonce_odr hidden noundef i32 @_ZN3fmt2v86detail14snprintf_floatIdEEiT_iNS1_11float_specsERNS1_6bufferIcEE(double noundef %0, i32 noundef %1, i64 %2, ptr noundef nonnull align 8 dereferenceable(32) %3) local_unnamed_addr #9 comdat { %5 = alloca [7 x i8], align 1 %.sroa.1.0.extract.shift = lshr i64 %2, 32 - %.sroa.1.0.extract.trunc = trunc nuw i64 %.sroa.1.0.extract.shift to i32 %6 = getelementptr inbounds nuw i8, ptr %3, i64 24 %7 = getelementptr inbounds nuw i8, ptr %3, i64 16 %8 = trunc i64 %.sroa.1.0.extract.shift to i8 @@ -24645,10 +24642,9 @@ define linkonce_odr hidden noundef i32 @_ZN3fmt2v86detail14snprintf_floatIdEEiT_ call void @llvm.lifetime.start.p0(ptr nonnull %5) %12 = getelementptr inbounds nuw i8, ptr %5, i64 1 store i8 37, ptr %5, align 1, !tbaa !43 - %13 = and i32 %.sroa.1.0.extract.trunc, 1048576 - %.not = icmp ne i32 %13, 0 - %14 = icmp eq i8 %8, 3 - %or.cond = and i1 %14, %.not + %13 = icmp eq i8 %8, 3 + %14 = and i64 %2, 4504694844030976 + %14 = icmp eq i64 %14, 4503612512272384 br i1 %or.cond, label %15, label %17 15: ; preds = %4 @@ -24670,7 +24666,7 @@ define linkonce_odr hidden noundef i32 @_ZN3fmt2v86detail14snprintf_floatIdEEiT_ 22: ; preds = %19, %17 %.1102 = phi ptr [ %21, %19 ], [ %.0101, %17 ] - br i1 %14, label %26, label %23 + br i1 %13, label %26, label %23 23: ; preds = %22 %24 = icmp eq i8 %8, 2 @@ -24678,8 +24674,8 @@ define linkonce_odr hidden noundef i32 @_ZN3fmt2v86detail14snprintf_floatIdEEiT_ br label %29 26: ; preds = %22 - %27 = and i32 %.sroa.1.0.extract.trunc, 65536 - %.not116 = icmp eq i32 %27, 0 + %27 = and i64 %2, 281474976710656 + %.not116 = icmp eq i64 %27, 0 %28 = select i1 %.not116, i8 97, i8 65 br label %29 @@ -24734,7 +24730,7 @@ _ZN3fmt2v86detail6bufferIcE11try_reserveEm.exit: ; preds = %_ZN3fmt2v86detail6b br i1 %55, label %_ZN3fmt2v86detail6bufferIcE11try_reserveEm.exit.sink.split, label %_ZN3fmt2v86detail6bufferIcE11try_reserveEm.exit.backedge, !llvm.loop !496 56: ; preds = %50 - switch i8 %8, label %.preheader164 [ + switch i8 %8, label %.preheader163 [ i8 2, label %57 i8 3, label %89 ] @@ -24821,7 +24817,7 @@ _ZN3fmt2v86detail6bufferIcE10try_resizeEm.exit128: ; preds = %89, %93 br label %134 .preheader164: ; preds = %56, %.preheader164 - %.099.idx = phi i64 [ %.099.add, %.preheader164 ], [ %51, %56 ] + %.099.idx = phi i64 [ %.099.add, %.preheader163 ], [ %51, %56 ] %.099.add = add nsw i64 %.099.idx, -1 %.ptr = getelementptr inbounds i8, ptr %36, i64 %.099.add %97 = load i8, ptr %.ptr, align 1, !tbaa !43 diff --git a/bench/openexr/optimized/internal_dwa.ll b/bench/openexr/optimized/internal_dwa.ll index e18aa13fa54..ac34b43271a 100644 --- a/bench/openexr/optimized/internal_dwa.ll +++ b/bench/openexr/optimized/internal_dwa.ll @@ -12921,28 +12921,25 @@ half_to_float.exit305.us: ; preds = %634, %632, %621, %6 ; Function Attrs: inlinehint nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable define internal fastcc void @interleaveByte2(ptr noundef %0, ptr noundef %1, ptr noundef %2, i32 noundef %3) unnamed_addr #9 { %5 = ptrtoint ptr %0 to i64 - %6 = trunc i64 %5 to i32 - %7 = ptrtoint ptr %1 to i64 - %8 = trunc i64 %7 to i32 - %9 = ptrtoint ptr %2 to i64 - %10 = trunc i64 %9 to i32 - %11 = sdiv i32 %3, 16 - %12 = or i32 %8, %6 - %13 = or i32 %12, %10 - %14 = and i32 %13, 15 - %or.cond3.not = icmp eq i32 %14, 0 - br i1 %or.cond3.not, label %.preheader, label %34 + %6 = ptrtoint ptr %1 to i64 + %7 = ptrtoint ptr %2 to i64 + %8 = sdiv i32 %3, 16 + %9 = or i64 %6, %5 + %10 = or i64 %9, %7 + %11 = and i64 %10, 15 + %or.cond3.not = icmp eq i64 %11, 0 + br i1 %or.cond3.not, label %.preheader, label %31 .preheader: ; preds = %4 %15 = icmp sgt i32 %3, 15 br i1 %15, label %.lr.ph146.preheader, label %._crit_edge147 .lr.ph146.preheader: ; preds = %.preheader - %wide.trip.count177 = zext nneg i32 %11 to i64 + %wide.trip.count177 = zext nneg i32 %8 to i64 br label %.lr.ph146 ._crit_edge147: ; preds = %.lr.ph146, %.preheader - %16 = shl nsw i32 %11, 4 + %16 = shl nsw i32 %8, 4 %17 = icmp slt i32 %16, %3 br i1 %17, label %.lr.ph150.preheader, label %.loopexit @@ -12984,13 +12981,13 @@ define internal fastcc void @interleaveByte2(ptr noundef %0, ptr noundef %1, ptr br i1 %exitcond183.not, label %.loopexit, label %.lr.ph150, !llvm.loop !267 34: ; preds = %4 - %35 = and i32 %10, 15 - %36 = and i32 %8, 15 - %37 = and i32 %6, 15 - %38 = icmp eq i32 %37, 0 - %39 = icmp eq i32 %36, 8 - %or.cond5 = and i1 %38, %39 - %40 = icmp eq i32 %35, 8 + %35 = and i64 %5, 15 + %33 = icmp eq i64 %32, 0 + %37 = and i64 %6, 15 + %38 = icmp eq i64 %37, 8 + %or.cond5 = and i1 %33, %38 + %or.cond5 = and i64 %7, 15 + %40 = icmp eq i64 %36, 8 %or.cond7 = and i1 %or.cond5, %40 br i1 %or.cond7, label %42, label %.preheader129 @@ -12999,7 +12996,7 @@ define internal fastcc void @interleaveByte2(ptr noundef %0, ptr noundef %1, ptr br i1 %41, label %.lr.ph.preheader, label %._crit_edge .lr.ph.preheader: ; preds = %.preheader129 - %wide.trip.count = zext nneg i32 %11 to i64 + %wide.trip.count = zext nneg i32 %8 to i64 br label %.lr.ph 42: ; preds = %34 @@ -13090,7 +13087,7 @@ define internal fastcc void @interleaveByte2(ptr noundef %0, ptr noundef %1, ptr br i1 %exitcond173.not, label %.loopexit, label %.lr.ph144, !llvm.loop !270 ._crit_edge: ; preds = %.lr.ph, %.preheader129 - %81 = shl nsw i32 %11, 4 + %81 = shl nsw i32 %8, 4 %82 = icmp slt i32 %81, %3 br i1 %82, label %.lr.ph133.preheader, label %.loopexit diff --git a/bench/openspiel/optimized/quoridor.ll b/bench/openspiel/optimized/quoridor.ll index ed1c85ec473..6699286e912 100644 --- a/bench/openspiel/optimized/quoridor.ll +++ b/bench/openspiel/optimized/quoridor.ll @@ -2289,13 +2289,13 @@ define { i64, i64 } @_ZNK10open_spiel8quoridor13QuoridorState12ActionToMoveEl(pt %6 = srem i64 %1, %5 %7 = sdiv i64 %1, %5 %8 = trunc i64 %7 to i32 - %.sroa.040.0.extract.trunc = trunc nsw i64 %6 to i32 - %9 = or i32 %8, %.sroa.040.0.extract.trunc - %10 = and i32 %9, 1 - %.not = icmp eq i32 %10, 0 + %9 = or i64 %7, %6 + %10 = and i64 %9, 1 + %.not = icmp eq i64 %10, 0 br i1 %.not, label %11, label %48 11: ; preds = %2 + %.sroa.040.0.extract.trunc = trunc nsw i64 %6 to i32 %12 = getelementptr inbounds nuw i8, ptr %0, i64 160 %13 = getelementptr inbounds nuw i8, ptr %0, i64 184 %14 = load i8, ptr %13, align 8 @@ -2364,8 +2364,9 @@ _ZNK10open_spiel8quoridor13QuoridorState9GetPlayerENS0_4MoveE.exit.thread: ; pre %.sroa.5.8.insert.ext.i = zext i32 %4 to i64 %.sroa.5.8.insert.shift.i = shl nuw i64 %.sroa.5.8.insert.ext.i, 32 %49 = mul nsw i32 %4, %8 - %50 = add nsw i32 %49, %.sroa.040.0.extract.trunc - %.sroa.3.8.insert.ext.i = zext i32 %50 to i64 + %50 = trunc nsw i64 %6 to i32 + %51 = add nsw i32 %49, %50 + %.sroa.3.8.insert.ext.i = zext i32 %51 to i64 %.sroa.3.8.insert.insert.i = or disjoint i64 %.sroa.5.8.insert.shift.i, %.sroa.3.8.insert.ext.i %.sroa.040.0.insert.ext = and i64 %6, 4294967295 %.sroa.040.0.insert.insert = or disjoint i64 %.sroa.2.0.insert.ext.i, %.sroa.040.0.insert.ext @@ -4991,13 +4992,13 @@ define void @_ZNK10open_spiel8quoridor13QuoridorState14ActionToStringB5cxx11Eil( %9 = srem i64 %3, %8 %10 = sdiv i64 %3, %8 %11 = trunc i64 %10 to i32 - %.sroa.040.0.extract.trunc.i = trunc nsw i64 %9 to i32 - %12 = or i32 %11, %.sroa.040.0.extract.trunc.i - %13 = and i32 %12, 1 - %.not.i = icmp eq i32 %13, 0 + %12 = or i64 %10, %9 + %13 = and i64 %12, 1 + %.not.i = icmp eq i64 %13, 0 br i1 %.not.i, label %14, label %51 14: ; preds = %4 + %.sroa.040.0.extract.trunc.i = trunc nsw i64 %9 to i32 %15 = getelementptr inbounds nuw i8, ptr %1, i64 160 %16 = getelementptr inbounds nuw i8, ptr %1, i64 184 %17 = load i8, ptr %16, align 8 @@ -5066,8 +5067,9 @@ _ZNK10open_spiel8quoridor13QuoridorState9GetPlayerENS0_4MoveE.exit.thread.i: ; p %.sroa.5.8.insert.ext.i.i = zext i32 %7 to i64 %.sroa.5.8.insert.shift.i.i = shl nuw i64 %.sroa.5.8.insert.ext.i.i, 32 %52 = mul nsw i32 %7, %11 - %53 = add nsw i32 %52, %.sroa.040.0.extract.trunc.i - %.sroa.3.8.insert.ext.i.i = zext i32 %53 to i64 + %53 = trunc nsw i64 %9 to i32 + %54 = add nsw i32 %52, %53 + %.sroa.3.8.insert.ext.i.i = zext i32 %54 to i64 %.sroa.3.8.insert.insert.i.i = or disjoint i64 %.sroa.5.8.insert.shift.i.i, %.sroa.3.8.insert.ext.i.i %.sroa.040.0.insert.ext.i = and i64 %9, 4294967295 %.sroa.040.0.insert.insert.i = or disjoint i64 %.sroa.2.0.insert.ext.i.i, %.sroa.040.0.insert.ext.i @@ -6660,13 +6662,13 @@ define void @_ZN10open_spiel8quoridor13QuoridorState13DoApplyActionEl(ptr nounde %16 = srem i64 %1, %15 %17 = sdiv i64 %1, %15 %18 = trunc i64 %17 to i32 - %.sroa.040.0.extract.trunc.i = trunc nsw i64 %16 to i32 - %19 = or i32 %18, %.sroa.040.0.extract.trunc.i - %20 = and i32 %19, 1 - %.not.i = icmp eq i32 %20, 0 + %19 = or i64 %17, %16 + %20 = and i64 %19, 1 + %.not.i = icmp eq i64 %20, 0 br i1 %.not.i, label %21, label %58 21: ; preds = %2 + %.sroa.040.0.extract.trunc.i = trunc nsw i64 %16 to i32 %22 = getelementptr inbounds nuw i8, ptr %0, i64 160 %23 = getelementptr inbounds nuw i8, ptr %0, i64 184 %24 = load i8, ptr %23, align 8 @@ -6735,8 +6737,9 @@ _ZNK10open_spiel8quoridor13QuoridorState9GetPlayerENS0_4MoveE.exit.thread.i: ; p %.sroa.5.8.insert.ext.i.i = zext i32 %14 to i64 %.sroa.5.8.insert.shift.i.i = shl nuw i64 %.sroa.5.8.insert.ext.i.i, 32 %59 = mul nsw i32 %14, %18 - %60 = add nsw i32 %59, %.sroa.040.0.extract.trunc.i - %.sroa.3.8.insert.ext.i.i = zext i32 %60 to i64 + %60 = trunc nsw i64 %16 to i32 + %61 = add nsw i32 %59, %60 + %.sroa.3.8.insert.ext.i.i = zext i32 %61 to i64 %.sroa.3.8.insert.insert.i.i = or disjoint i64 %.sroa.5.8.insert.shift.i.i, %.sroa.3.8.insert.ext.i.i %.sroa.040.0.insert.ext.i = and i64 %16, 4294967295 %.sroa.040.0.insert.insert.i = or disjoint i64 %.sroa.2.0.insert.ext.i.i, %.sroa.040.0.insert.ext.i @@ -6771,7 +6774,7 @@ _ZNK10open_spiel8quoridor13QuoridorState12ActionToMoveEl.exit: ; preds = %_ZNK10 store i32 619, ptr %6, align 4 call void @_ZN10open_spiel8internal11SpielStrCatIJRA136_KcRA2_S2_iS6_RA31_S2_RA17_S2_RA4_S2_RNS_8quoridor14QuoridorPlayerESA_SF_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %5, ptr noundef nonnull align 1 dereferenceable(136) @.str.12, ptr noundef nonnull align 1 dereferenceable(2) @.str.13, ptr noundef nonnull align 4 dereferenceable(4) %6, ptr noundef nonnull align 1 dereferenceable(2) @.str.36, ptr noundef nonnull align 1 dereferenceable(31) @.str.48, ptr noundef nonnull align 1 dereferenceable(17) @.str.49, ptr noundef nonnull align 1 dereferenceable(4) @.str.44, ptr noundef nonnull align 1 dereferenceable(1) %3, ptr noundef nonnull align 1 dereferenceable(17) @.str.50, ptr noundef nonnull align 1 dereferenceable(1) %4) invoke void @_ZN10open_spiel15SpielFatalErrorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %5) #24 - to label %71 unwind label %72 + to label %72 unwind label %72 71: ; preds = %70 unreachable @@ -6793,7 +6796,7 @@ _ZNK10open_spiel8quoridor13QuoridorState12ActionToMoveEl.exit: ; preds = %_ZNK10 store i32 621, ptr %10, align 4 call void @_ZN10open_spiel8internal11SpielStrCatIJRA136_KcRA2_S2_iS6_RA24_S2_RA10_S2_RA4_S2_RNS_8quoridor14QuoridorPlayerERA17_S2_SF_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %9, ptr noundef nonnull align 1 dereferenceable(136) @.str.12, ptr noundef nonnull align 1 dereferenceable(2) @.str.13, ptr noundef nonnull align 4 dereferenceable(4) %10, ptr noundef nonnull align 1 dereferenceable(2) @.str.36, ptr noundef nonnull align 1 dereferenceable(24) @.str.51, ptr noundef nonnull align 1 dereferenceable(10) @.str.52, ptr noundef nonnull align 1 dereferenceable(4) @.str.44, ptr noundef nonnull align 1 dereferenceable(1) %7, ptr noundef nonnull align 1 dereferenceable(17) @.str.50, ptr noundef nonnull align 1 dereferenceable(1) %8) invoke void @_ZN10open_spiel15SpielFatalErrorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %9) #24 - to label %79 unwind label %80 + to label %80 unwind label %80 79: ; preds = %78 unreachable @@ -6820,7 +6823,7 @@ _ZNK10open_spiel8quoridor4Move7IsValidEv.exit.thread: ; preds = %82, %_ZNK10open store i32 623, ptr %12, align 4 call void @_ZN10open_spiel8internal11SpielStrCatIJRA136_KcRA2_S2_iRA13_S2_RA15_S2_S6_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %11, ptr noundef nonnull align 1 dereferenceable(136) @.str.12, ptr noundef nonnull align 1 dereferenceable(2) @.str.13, ptr noundef nonnull align 4 dereferenceable(4) %12, ptr noundef nonnull align 1 dereferenceable(13) @.str.53, ptr noundef nonnull align 1 dereferenceable(15) @.str.54, ptr noundef nonnull align 1 dereferenceable(2) @.str.16) invoke void @_ZN10open_spiel15SpielFatalErrorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %11) #24 - to label %86 unwind label %87 + to label %87 unwind label %87 86: ; preds = %_ZNK10open_spiel8quoridor4Move7IsValidEv.exit.thread unreachable @@ -6948,8 +6951,8 @@ _ZNK10open_spiel8quoridor4Move7IsValidEv.exit.thread: ; preds = %82, %_ZNK10open ret void 153: ; preds = %87, %80, %72 - %.sink = phi ptr [ %11, %87 ], [ %9, %80 ], [ %5, %72 ] - %.pn = phi { ptr, i32 } [ %88, %87 ], [ %81, %80 ], [ %73, %72 ] + %.sink = phi ptr [ %11, %88 ], [ %9, %81 ], [ %5, %73 ] + %.pn = phi { ptr, i32 } [ %88, %88 ], [ %81, %81 ], [ %73, %73 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %.sink) #25 resume { ptr, i32 } %.pn } diff --git a/bench/openssl/optimized/apps.ll b/bench/openssl/optimized/apps.ll index 5e2106dd022..4a1dd95c12d 100644 --- a/bench/openssl/optimized/apps.ll +++ b/bench/openssl/optimized/apps.ll @@ -5313,16 +5313,13 @@ define dso_local ptr @app_http_tls_cb(ptr noundef %0, ptr noundef readonly captu 50: ; preds = %48, %45 %.0.i.i = phi i64 [ %49, %48 ], [ %46, %45 ] - %51 = and i64 %.0.i.i, 2147483648 - %.not.i5.i.i = icmp eq i64 %51, 0 - %52 = trunc i64 %.0.i.i to i32 - %.mask.i.i = and i32 %52, -8388608 - %.not411.i.i = icmp eq i32 %.mask.i.i, 167772160 - %.not4.i.i = and i1 %.not.i5.i.i, %.not411.i.i - br i1 %.not4.i.i, label %53, label %tls_error_hint.exit.i + %51 = and i64 %.0.i.i, 4286578688 + %.not.i5.i.i = icmp eq i64 %51, 167772160 + br i1 %.not4.i.i, label %52, label %tls_error_hint.exit.i 53: ; preds = %50 - %.0.i8.i.i = and i32 %52, 8388607 + %53 = trunc i64 %.0.i.i to i32 + %.0.i8.i.i = and i32 %53, 8388607 switch i32 %.0.i8.i.i, label %tls_error_hint.exit.i [ i32 267, label %58 i32 252, label %54 @@ -5344,7 +5341,7 @@ define dso_local ptr @app_http_tls_cb(ptr noundef %0, ptr noundef readonly captu br label %58 58: ; preds = %57, %56, %55, %54, %53 - %.03.i.ph.i = phi ptr [ @.str.213, %53 ], [ @.str.216, %56 ], [ @.str.215, %55 ], [ @.str.214, %54 ], [ @.str.217, %57 ] + %.03.i.ph.i = phi ptr [ @.str.213, %52 ], [ @.str.216, %56 ], [ @.str.215, %55 ], [ @.str.214, %54 ], [ @.str.217, %57 ] %59 = load ptr, ptr @bio_err, align 8, !tbaa !26 %60 = tail call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %59, ptr noundef nonnull @.str.212, ptr noundef nonnull %.03.i.ph.i) #27 br label %tls_error_hint.exit.i diff --git a/bench/openssl/optimized/asn1_internal_test.ll b/bench/openssl/optimized/asn1_internal_test.ll index 3ba25117d13..49ae8276651 100644 --- a/bench/openssl/optimized/asn1_internal_test.ll +++ b/bench/openssl/optimized/asn1_internal_test.ll @@ -312,11 +312,10 @@ define internal range(i32 0, 2) i32 @test_obj_create() #0 { %7 = trunc i64 %5 to i32 %.0.v.i.i = select i1 %.not.i.i, i32 8388607, i32 2147483647 %.0.i13.i = and i32 %.0.v.i.i, %7 - %.mask.i = and i32 %7, -8388608 - %8 = icmp eq i32 %.mask.i, 67108864 + %.mask.i = and i64 %5, 4286578688 + %8 = icmp eq i64 %.mask.i, 67108864 %9 = icmp eq i32 %.0.i13.i, 102 %10 = and i1 %8, %9 - %or.cond.not.i = and i1 %.not.i.i, %10 br i1 %or.cond.not.i, label %.critedge.i, label %11 11: ; preds = %4 @@ -352,12 +351,11 @@ test_obj_create_once.exit: ; preds = %11, %.critedge.i %25 = trunc i64 %23 to i32 %.0.v.i.i20 = select i1 %.not.i.i19, i32 8388607, i32 2147483647 %.0.i13.i21 = and i32 %.0.v.i.i20, %25 - %.mask.i22 = and i32 %25, -8388608 - %26 = icmp eq i32 %.mask.i22, 67108864 + %.mask.i22 = and i64 %23, 4286578688 + %26 = icmp eq i64 %.mask.i22, 67108864 %27 = icmp eq i32 %.0.i13.i21, 102 %28 = and i1 %26, %27 - %or.cond.not.i23 = and i1 %.not.i.i19, %28 - br i1 %or.cond.not.i23, label %.critedge.i17, label %29 + br i1 %or.cond.not.i22, label %.critedge.i17, label %29 29: ; preds = %22 %30 = tail call i32 @ERR_clear_last_mark() #4 @@ -392,12 +390,11 @@ test_obj_create_once.exit24: ; preds = %29, %.critedge.i17 %43 = trunc i64 %41 to i32 %.0.v.i.i28 = select i1 %.not.i.i27, i32 8388607, i32 2147483647 %.0.i13.i29 = and i32 %.0.v.i.i28, %43 - %.mask.i30 = and i32 %43, -8388608 - %44 = icmp eq i32 %.mask.i30, 67108864 + %.mask.i30 = and i64 %41, 4286578688 + %44 = icmp eq i64 %.mask.i30, 67108864 %45 = icmp eq i32 %.0.i13.i29, 102 %46 = and i1 %44, %45 - %or.cond.not.i31 = and i1 %.not.i.i27, %46 - br i1 %or.cond.not.i31, label %.critedge.i25, label %47 + br i1 %or.cond.not.i29, label %.critedge.i24, label %47 47: ; preds = %40 %48 = tail call i32 @ERR_clear_last_mark() #4 @@ -408,7 +405,7 @@ test_obj_create_once.exit24: ; preds = %29, %.critedge.i17 br label %test_obj_create_once.exit32 test_obj_create_once.exit32: ; preds = %47, %.critedge.i25 - %.1.i26 = phi i32 [ 1, %.critedge.i25 ], [ 0, %47 ] + %.1.i26 = phi i32 [ 1, %.critedge.i24 ], [ 0, %47 ] %50 = tail call i32 @test_true(ptr noundef nonnull @.str.6, i32 noundef 235, ptr noundef nonnull @.str.32, i32 noundef %.1.i26) #4 %.not4 = icmp eq i32 %50, 0 br i1 %.not4, label %111, label %51 @@ -438,12 +435,11 @@ test_obj_create_once.exit32: ; preds = %47, %.critedge.i25 %64 = trunc i64 %62 to i32 %.0.v.i.i36 = select i1 %.not.i.i35, i32 8388607, i32 2147483647 %.0.i13.i37 = and i32 %.0.v.i.i36, %64 - %.mask.i38 = and i32 %64, -8388608 - %65 = icmp eq i32 %.mask.i38, 67108864 + %.mask.i38 = and i64 %62, 4286578688 + %65 = icmp eq i64 %.mask.i38, 67108864 %66 = icmp eq i32 %.0.i13.i37, 102 %67 = and i1 %65, %66 - %or.cond.not.i39 = and i1 %.not.i.i35, %67 - br i1 %or.cond.not.i39, label %.critedge.i33, label %68 + br i1 %or.cond.not.i36, label %.critedge.i31, label %68 68: ; preds = %61 %69 = tail call i32 @ERR_clear_last_mark() #4 @@ -454,7 +450,7 @@ test_obj_create_once.exit32: ; preds = %47, %.critedge.i25 br label %test_obj_create_once.exit40 test_obj_create_once.exit40: ; preds = %68, %.critedge.i33 - %.1.i34 = phi i32 [ 1, %.critedge.i33 ], [ 0, %68 ] + %.1.i34 = phi i32 [ 1, %.critedge.i31 ], [ 0, %68 ] %71 = tail call i32 @test_true(ptr noundef nonnull @.str.6, i32 noundef 238, ptr noundef nonnull @.str.36, i32 noundef %.1.i34) #4 %.not7 = icmp eq i32 %71, 0 br i1 %.not7, label %111, label %72 @@ -472,12 +468,11 @@ test_obj_create_once.exit40: ; preds = %68, %.critedge.i33 %79 = trunc i64 %77 to i32 %.0.v.i.i44 = select i1 %.not.i.i43, i32 8388607, i32 2147483647 %.0.i13.i45 = and i32 %.0.v.i.i44, %79 - %.mask.i46 = and i32 %79, -8388608 - %80 = icmp eq i32 %.mask.i46, 67108864 + %.mask.i46 = and i64 %77, 4286578688 + %80 = icmp eq i64 %.mask.i46, 67108864 %81 = icmp eq i32 %.0.i13.i45, 102 %82 = and i1 %80, %81 - %or.cond.not.i47 = and i1 %.not.i.i43, %82 - br i1 %or.cond.not.i47, label %.critedge.i41, label %83 + br i1 %or.cond.not.i43, label %.critedge.i38, label %83 83: ; preds = %76 %84 = tail call i32 @ERR_clear_last_mark() #4 @@ -488,7 +483,7 @@ test_obj_create_once.exit40: ; preds = %68, %.critedge.i33 br label %test_obj_create_once.exit48 test_obj_create_once.exit48: ; preds = %83, %.critedge.i41 - %.1.i42 = phi i32 [ 1, %.critedge.i41 ], [ 0, %83 ] + %.1.i42 = phi i32 [ 1, %.critedge.i38 ], [ 0, %83 ] %86 = tail call i32 @test_true(ptr noundef nonnull @.str.6, i32 noundef 239, ptr noundef nonnull @.str.38, i32 noundef %.1.i42) #4 %.not8 = icmp eq i32 %86, 0 br i1 %.not8, label %111, label %87 @@ -543,7 +538,7 @@ test_obj_create_once.exit48: ; preds = %83, %.critedge.i41 br label %111 111: ; preds = %108, %105, %test_obj_create_once.exit, %15, %test_obj_create_once.exit24, %33, %test_obj_create_once.exit32, %51, %54, %test_obj_create_once.exit40, %test_obj_create_once.exit48, %87, %90, %93, %96, %99, %102 - %.0 = phi i32 [ 0, %105 ], [ 0, %test_obj_create_once.exit ], [ 0, %102 ], [ 0, %99 ], [ 0, %96 ], [ 0, %93 ], [ 0, %90 ], [ 0, %87 ], [ 0, %test_obj_create_once.exit48 ], [ 0, %test_obj_create_once.exit40 ], [ 0, %54 ], [ 0, %51 ], [ 0, %test_obj_create_once.exit32 ], [ 0, %33 ], [ 0, %test_obj_create_once.exit24 ], [ 0, %15 ], [ %spec.select, %108 ] + %.0 = phi i32 [ 0, %105 ], [ 0, %test_obj_create_once.exit ], [ 0, %102 ], [ 0, %99 ], [ 0, %96 ], [ 0, %93 ], [ 0, %90 ], [ 0, %87 ], [ 0, %test_obj_create_once.exit44 ], [ 0, %test_obj_create_once.exit37 ], [ 0, %54 ], [ 0, %51 ], [ 0, %test_obj_create_once.exit30 ], [ 0, %33 ], [ 0, %test_obj_create_once.exit23 ], [ 0, %15 ], [ %spec.select, %108 ] ret i32 %.0 } @@ -621,11 +616,10 @@ define internal fastcc range(i32 0, 2) i32 @test_obj_create_once(ptr noundef %0, %10 = trunc i64 %8 to i32 %.0.v.i = select i1 %.not.i, i32 8388607, i32 2147483647 %.0.i13 = and i32 %.0.v.i, %10 - %.mask = and i32 %10, -8388608 - %11 = icmp eq i32 %.mask, 67108864 + %.mask = and i64 %8, 4286578688 + %11 = icmp eq i64 %.mask, 67108864 %12 = icmp eq i32 %.0.i13, 102 %13 = and i1 %11, %12 - %or.cond.not = and i1 %.not.i, %13 br i1 %or.cond.not, label %.critedge, label %14 14: ; preds = %7 diff --git a/bench/openssl/optimized/bio_lib.ll b/bench/openssl/optimized/bio_lib.ll index 91e9b5a04e2..1b840f324c5 100644 --- a/bench/openssl/optimized/bio_lib.ll +++ b/bench/openssl/optimized/bio_lib.ll @@ -2163,23 +2163,20 @@ define i32 @BIO_do_connect_retry(ptr noundef %0, i32 noundef %1, i32 noundef %2) .lr.ph.split.us: ; preds = %.lr.ph %24 = tail call i64 @ERR_peek_last_error() #14 - %25 = and i64 %24, 2147483648 - %.not.i.us = icmp eq i64 %25, 0 - %26 = trunc i64 %24 to i32 - %.mask.us = and i32 %26, -8388608 - %27 = icmp eq i32 %.mask.us, 268435456 - %28 = and i1 %.not.i.us, %27 - br i1 %28, label %29, label %.split.us - -29: ; preds = %.lr.ph.split.us - %.0.i.us = and i32 %26, 8388607 + %25 = and i64 %24, 4286578688 + %.not.i.us = icmp eq i64 %25, 268435456 + br i1 %26, label %27, label %.split.us + +27:; preds = %.lr.ph.split.us + %28 = trunc i64 %24 to i32 + %.0.i.us = and i32 %28, 8388607 switch i32 %.0.i.us, label %.split.us [ i32 524290, label %30 i32 103, label %30 i32 110, label %30 ] -30: ; preds = %29, %29, %29 +30: ; preds = %27, %27, %27 %31 = tail call i64 @BIO_ctrl(ptr noundef nonnull %0, i32 noundef 1, i64 noundef 0, ptr noundef null) br label %.split.us @@ -2189,30 +2186,27 @@ define i32 @BIO_do_connect_retry(ptr noundef %0, i32 noundef %1, i32 noundef %2) .lr.ph.split.split.us: ; preds = %.lr.ph.split, %bio_wait.exit.thread.us %33 = tail call i64 @ERR_peek_last_error() #14 - %34 = and i64 %33, 2147483648 - %.not.i.us50 = icmp eq i64 %34, 0 - %35 = trunc i64 %33 to i32 - %36 = load i32, ptr %21, align 8, !tbaa !27 - %37 = and i32 %36, 8 - %.mask.us51 = and i32 %35, -8388608 - %38 = icmp eq i32 %.mask.us51, 268435456 - %39 = and i1 %.not.i.us50, %38 - br i1 %39, label %40, label %42 - -40: ; preds = %.lr.ph.split.split.us - %.0.i.us52 = and i32 %35, 8388607 - switch i32 %.0.i.us52, label %42 [ + %33 = load i32, ptr %21, align 8, !tbaa !27 + %34 = and i32 %33, 8 + %35 = and i64 %33, 4286578688 + %36 = icmp eq i64 %35, 268435456 + br i1 %36, label %37, label %40 + +37:; preds = %.lr.ph.split.split.us + %38 = trunc i64 %32 to i32 + %.0.i.us52 = and i32 %38, 8388607 + switch i32 %.0.i.us52, label %40 [ i32 524290, label %.thread75 i32 103, label %.thread75 i32 110, label %.thread75 ] -.thread75: ; preds = %40, %40, %40 +.thread75: ; preds = %37, %37, %37 %41 = tail call i64 @BIO_ctrl(ptr noundef nonnull %0, i32 noundef 1, i64 noundef 0, ptr noundef null) br label %bio_wait.exit.thread.us -42: ; preds = %40, %.lr.ph.split.split.us - %.not57 = icmp eq i32 %37, 0 +42: ; preds = %37, %.lr.ph.split.split.us + %.not57 = icmp eq i32 %34, 0 br i1 %.not57, label %.split.us, label %bio_wait.exit.thread.us bio_wait.exit.thread.us: ; preds = %.thread75, %42 @@ -2225,30 +2219,27 @@ bio_wait.exit.thread.us: ; preds = %.thread75, %42 .lr.ph.split.split: ; preds = %.lr.ph.split, %87 %48 = call i64 @ERR_peek_last_error() #14 - %49 = and i64 %48, 2147483648 - %.not.i = icmp eq i64 %49, 0 - %50 = trunc i64 %48 to i32 - %51 = load i32, ptr %21, align 8, !tbaa !27 - %52 = and i32 %51, 8 - %.mask = and i32 %50, -8388608 - %53 = icmp eq i32 %.mask, 268435456 - %54 = and i1 %.not.i, %53 - br i1 %54, label %55, label %57 - -55: ; preds = %.lr.ph.split.split - %.0.i = and i32 %50, 8388607 - switch i32 %.0.i, label %57 [ + %47 = load i32, ptr %21, align 8, !tbaa !27 + %48 = and i32 %47, 8 + %49 = and i64 %48, 4286578688 + %50 = icmp eq i64 %49, 268435456 + br i1 %50, label %51, label %54 + +51:; preds = %.lr.ph.split.split + %52 = trunc i64 %46 to i32 + %.0.i = and i32 %52, 8388607 + switch i32 %.0.i, label %54 [ i32 524290, label %.thread78 i32 103, label %.thread78 i32 110, label %.thread78 ] -.thread78: ; preds = %55, %55, %55 +.thread78: ; preds = %51, %51, %51 %56 = call i64 @BIO_ctrl(ptr noundef nonnull %0, i32 noundef 1, i64 noundef 0, ptr noundef null) br label %58 -57: ; preds = %55, %.lr.ph.split.split - %.not = icmp eq i32 %52, 0 +57: ; preds = %51, %.lr.ph.split.split + %.not = icmp eq i32 %48, 0 br i1 %.not, label %.split.us, label %58 58: ; preds = %.thread78, %57 @@ -2292,7 +2283,7 @@ bio_wait.exit.thread38: ; preds = %68 br label %bio_wait.exit.thread bio_wait.exit.thread: ; preds = %72, %77, %74 - %.016.i = phi i32 [ %spec.store.select, %74 ], [ %79, %77 ], [ %spec.store.select.i, %72 ] + %.016.i = phi i32 [ %spec.store.select, %71 ], [ %79, %74 ], [ %spec.store.select.i, %69 ] %80 = zext i32 %.016.i to i64 call void @OSSL_sleep(i64 noundef %80) #14 call void @llvm.lifetime.end.p0(ptr nonnull %4) @@ -2312,8 +2303,8 @@ bio_wait.exit: ; preds = %62 call void (i32, i32, ptr, ...) @ERR_set_error(i32 noundef 32, i32 noundef %spec.select, ptr noundef null) #14 br label %.thread -.split.us: ; preds = %57, %42, %30, %29, %.lr.ph.split.us - %.us-phi = phi i64 [ %24, %.lr.ph.split.us ], [ %24, %30 ], [ %24, %29 ], [ %33, %42 ], [ %48, %57 ] +.split.us: ; preds = %57, %42, %30, %27, %.lr.ph.split.us + %.us-phi = phi i64 [ %24, %.lr.ph.split.us ], [ %24, %29 ], [ %24, %27 ], [ %33, %40 ], [ %48, %54 ] %83 = call i32 @ERR_clear_last_mark() #14 %84 = and i64 %.us-phi, 4294967295 %85 = icmp eq i64 %84, 0 @@ -2333,12 +2324,12 @@ bio_wait.exit: ; preds = %62 br i1 %91, label %.lr.ph.split.split, label %._crit_edge ._crit_edge: ; preds = %87, %bio_wait.exit.thread.us, %13 - %.lcssa43 = phi i32 [ %19, %13 ], [ %46, %bio_wait.exit.thread.us ], [ %90, %87 ] + %.lcssa43 = phi i32 [ %19, %13 ], [ %46, %bio_wait.exit.thread.us ], [ %90, %84 ] %92 = call i32 @ERR_clear_last_mark() #14 br label %.thread .thread: ; preds = %.loopexit, %86, %.split.us, %._crit_edge, %12 - %.025 = phi i32 [ -1, %12 ], [ %.lcssa43, %._crit_edge ], [ -1, %.split.us ], [ -1, %86 ], [ %.0.i3540, %.loopexit ] + %.025 = phi i32 [ -1, %12 ], [ %.lcssa43, %._crit_edge ], [ -1, %.split.us ], [ -1, %83 ], [ %.0.i3540, %.loopexit ] ret i32 %.025 } diff --git a/bench/openssl/optimized/decode_pvk2key.ll b/bench/openssl/optimized/decode_pvk2key.ll index 4bca86ee7c5..0be16abfbfd 100644 --- a/bench/openssl/optimized/decode_pvk2key.ll +++ b/bench/openssl/optimized/decode_pvk2key.ll @@ -104,26 +104,23 @@ define internal i32 @pvk2key_decode(ptr noundef %0, ptr noundef %1, i32 noundef %36 = call ptr %32(ptr noundef nonnull %16, ptr noundef nonnull @ossl_pw_pvk_password, ptr noundef nonnull %9, ptr noundef %34, ptr noundef nonnull %35) #6 store ptr %36, ptr %8, align 8, !tbaa !12 %37 = call i64 @ERR_peek_last_error() #6 - %38 = and i64 %37, 2147483648 - %.not.i = icmp eq i64 %38, 0 - %39 = trunc i64 %37 to i32 - %.mask = and i32 %39, -8388608 - %40 = icmp eq i32 %.mask, 75497472 - %41 = and i1 %.not.i, %40 - br i1 %41, label %42, label %45 - -42: ; preds = %29 - %.0.i49 = and i32 %39, 8388607 - switch i32 %.0.i49, label %45 [ - i32 104, label %43 + %38 = and i64 %37, 4286578688 + %.not.i = icmp eq i64 %38, 75497472 + br i1 %39, label %40, label %44 + +40:; preds = %29 + %41 = trunc i64 %37 to i32 + %.0.i49 = and i32 %41, 8388607 + switch i32 %.0.i49, label %44 [ + i32 104, label %42 i32 101, label %43 ] -43: ; preds = %42, %42 +43: ; preds = %40, %40 %44 = call i32 @ERR_clear_last_mark() #6 br label %.thread -45: ; preds = %42, %29 +45: ; preds = %40, %29 call void @llvm.lifetime.end.p0(ptr nonnull %9) %.not44 = icmp eq ptr %36, null br i1 %.not44, label %.thread57, label %46 @@ -141,7 +138,7 @@ define internal i32 @pvk2key_decode(ptr noundef %0, ptr noundef %1, i32 noundef br i1 %.not45, label %53, label %51 51: ; preds = %46 - call void %50(ptr noundef nonnull %36, ptr noundef nonnull %0) #6 + call void %49(ptr noundef nonnull %36, ptr noundef nonnull %0) #6 br label %53 .thread57: ; preds = %45, %22, %18 @@ -179,19 +176,19 @@ define internal i32 @pvk2key_decode(ptr noundef %0, ptr noundef %1, i32 noundef br label %63 63: ; preds = %.thread57, %.thread, %53 - %.036 = phi i32 [ %62, %53 ], [ 1, %.thread57 ], [ 0, %.thread ] - %.035 = phi ptr [ null, %53 ], [ null, %.thread57 ], [ %16, %.thread ] + %.036 = phi i32 [ %62, %52 ], [ 1, %.thread57 ], [ 0, %.thread ] + %.035 = phi ptr [ null, %52 ], [ null, %.thread57 ], [ %16, %.thread ] %64 = call i32 @BIO_free(ptr noundef %.035) #6 %65 = getelementptr inbounds nuw i8, ptr %0, i64 264 %66 = load ptr, ptr %65, align 8, !tbaa !11 %67 = getelementptr inbounds nuw i8, ptr %66, i64 40 %68 = load ptr, ptr %67, align 8, !tbaa !25 %69 = load ptr, ptr %8, align 8, !tbaa !12 - call void %68(ptr noundef %69) #6 + call void %67(ptr noundef %69) #6 br label %70 70: ; preds = %7, %63 - %.0 = phi i32 [ %.036, %63 ], [ 0, %7 ] + %.0 = phi i32 [ %.036, %62 ], [ 0, %7 ] call void @llvm.lifetime.end.p0(ptr nonnull %8) ret i32 %.0 } diff --git a/bench/openssl/optimized/p12_kiss.ll b/bench/openssl/optimized/p12_kiss.ll index 46fc7c7c647..176e420b207 100644 --- a/bench/openssl/optimized/p12_kiss.ll +++ b/bench/openssl/optimized/p12_kiss.ll @@ -232,17 +232,16 @@ parse_pk12.exit: ; preds = %56, %.preheader.i parse_pk12.exit.thread: ; preds = %36, %parse_pk12.exit.thread82 %84 = tail call i64 @ERR_peek_last_error() #3 - %85 = and i64 %84, 2147483648 - %.not.i76 = icmp eq i64 %85, 0 - %86 = trunc i64 %84 to i32 - %.mask = and i32 %86, -8388608 - %.not7186 = icmp eq i32 %.mask, 50331648 - %.not71 = and i1 %.not.i76, %.not7186 - br i1 %.not71, label %.loopexit, label %87 - -87: ; preds = %parse_pk12.exit.thread + %85 = and i64 %84, 4286578688 + %.not.i76 = icmp eq i64 %85, 50331648 + br i1 %.not.i76, label %.loopexit, label %86 + +86:; preds = %parse_pk12.exit.thread + %87 = trunc i64 %84 to i32 + %88 = and i64 %84, 2147483648 + %.not.i76 = icmp eq i64 %88, 0 %.0.v.i = select i1 %.not.i76, i32 8388607, i32 2147483647 - %.0.i79 = and i32 %.0.v.i, %86 + %.0.i79 = and i32 %.0.v.i, %87 %.not72 = icmp eq i32 %.0.i79, 156 br i1 %.not72, label %.loopexit, label %.loopexit.sink.split @@ -282,18 +281,18 @@ parse_pk12.exit.thread: ; preds = %36, %parse_pk12.exi tail call void @OPENSSL_sk_free(ptr noundef %.1) #3 br label %105 -.loopexit.sink.split: ; preds = %87, %33, %24, %22 - %.sink156 = phi i32 [ 81, %33 ], [ 71, %24 ], [ 67, %22 ], [ 90, %87 ] - %.sink = phi i32 [ 524303, %33 ], [ 113, %24 ], [ 113, %22 ], [ 114, %87 ] - %.053.ph = phi ptr [ null, %33 ], [ null, %24 ], [ null, %22 ], [ %.1, %87 ] +.loopexit.sink.split: ; preds = %86, %33, %24, %22 + %.sink156 = phi i32 [ 81, %33 ], [ 71, %24 ], [ 67, %22 ], [ 90, %86 ] + %.sink = phi i32 [ 524303, %33 ], [ 113, %24 ], [ 113, %22 ], [ 114, %86 ] + %.053.ph = phi ptr [ null, %33 ], [ null, %24 ], [ null, %22 ], [ %.1, %86 ] tail call void @ERR_new() #3 tail call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef %.sink156, ptr noundef nonnull @__func__.PKCS12_parse) #3 tail call void (i32, i32, ptr, ...) @ERR_set_error(i32 noundef 35, i32 noundef %.sink, ptr noundef null) #3 br label %.loopexit -.loopexit: ; preds = %.thread.us90.us, %.thread.us.us, %.loopexit.sink.split, %parse_pk12.exit.thread, %87 - %.053 = phi ptr [ %.1, %.thread.us.us ], [ %.1, %parse_pk12.exit.thread ], [ %.1, %87 ], [ %.053.ph, %.loopexit.sink.split ], [ %.1, %.thread.us90.us ] - %.052 = phi ptr [ %61, %.thread.us.us ], [ null, %parse_pk12.exit.thread ], [ null, %87 ], [ null, %.loopexit.sink.split ], [ %66, %.thread.us90.us ] +.loopexit: ; preds = %.thread.us90.us, %.thread.us.us, %.loopexit.sink.split, %parse_pk12.exit.thread, %86 + %.053 = phi ptr [ %.1, %.thread.us.us ], [ %.1, %parse_pk12.exit.thread ], [ %.1, %86 ], [ %.053.ph, %.loopexit.sink.split ], [ %.1, %.thread.us90.us ] + %.052 = phi ptr [ %61, %.thread.us.us ], [ null, %parse_pk12.exit.thread ], [ null, %86 ], [ null, %.loopexit.sink.split ], [ %66, %.thread.us90.us ] br i1 %.not, label %101, label %.loopexit.thread .loopexit.thread: ; preds = %.thread.us96, %.loopexit @@ -321,7 +320,7 @@ parse_pk12.exit.thread: ; preds = %36, %parse_pk12.exi br label %105 105: ; preds = %104, %._crit_edge, %12 - %.0 = phi i32 [ 0, %12 ], [ 0, %104 ], [ 1, %._crit_edge ] + %.0 = phi i32 [ 0, %12 ], [ 0, %105 ], [ 1, %._crit_edge ] ret i32 %.0 } diff --git a/bench/openssl/optimized/pkcs12.ll b/bench/openssl/optimized/pkcs12.ll index f629668191e..b65318e29e4 100644 --- a/bench/openssl/optimized/pkcs12.ll +++ b/bench/openssl/optimized/pkcs12.ll @@ -1213,7 +1213,7 @@ set_pbe.exit.backedge: ; preds = %84, %81, %73, %70, br i1 %396, label %.lr.ph706, label %._crit_edge .lr.ph706: ; preds = %394, %.lr.ph706 - %.1234705 = phi i32 [ %401, %.lr.ph706 ], [ 0, %394 ] + %.1234705 = phi i32 [ %401, %.lr.ph705 ], [ 0, %394 ] %397 = call ptr @OPENSSL_sk_value(ptr noundef %.0244, i32 noundef %.1234705) #6 %398 = load ptr, ptr %10, align 8, !tbaa !17 %399 = call ptr @OPENSSL_sk_value(ptr noundef %398, i32 noundef %.1234705) #6 @@ -1674,8 +1674,8 @@ set_pbe.exit.backedge: ; preds = %84, %81, %73, %70, br label %613 613: ; preds = %.sink.split1127, %564 - %.6 = phi ptr [ %.1276468, %564 ], [ %.6.ph, %.sink.split1127 ] - %.4273 = phi ptr [ null, %564 ], [ %.4273.ph, %.sink.split1127 ] + %.6 = phi ptr [ %.1276468, %564 ], [ %.6.ph, %.sink.split1128 ] + %.4273 = phi ptr [ null, %564 ], [ %.4273.ph, %.sink.split1128 ] %614 = call ptr @bio_open_owner(ptr noundef %.0217, i32 noundef 32773, i32 noundef 1) #6 %615 = icmp eq ptr %614, null br i1 %615, label %.loopexit, label %616 diff --git a/bench/openssl/optimized/recordlentest.ll b/bench/openssl/optimized/recordlentest.ll index 459c3930fbc..aa4fb988974 100644 --- a/bench/openssl/optimized/recordlentest.ll +++ b/bench/openssl/optimized/recordlentest.ll @@ -364,7 +364,7 @@ fail_due_to_record_overflow.exit64: ; preds = %106 br label %116 116: ; preds = %fail_due_to_record_overflow.exit64, %106, %write_record.exit59, %78, %fail_due_to_record_overflow.exit, %71, %67, %31, %1, %115 - %.0 = phi i32 [ 1, %115 ], [ 0, %fail_due_to_record_overflow.exit ], [ 0, %71 ], [ 0, %67 ], [ 0, %fail_due_to_record_overflow.exit64 ], [ 0, %106 ], [ 0, %write_record.exit59 ], [ 0, %78 ], [ 0, %31 ], [ 0, %1 ] + %.0 = phi i32 [ 1, %115 ], [ 0, %fail_due_to_record_overflow.exit ], [ 0, %71 ], [ 0, %67 ], [ 0, %fail_due_to_record_overflow.exit62 ], [ 0, %106 ], [ 0, %write_record.exit59 ], [ 0, %78 ], [ 0, %31 ], [ 0, %1 ] %117 = load ptr, ptr %14, align 8, !tbaa !11 call void @SSL_free(ptr noundef %117) #6 %118 = load ptr, ptr %13, align 8, !tbaa !11 diff --git a/bench/openssl/optimized/rsa_gen.ll b/bench/openssl/optimized/rsa_gen.ll index 776b376f616..a5efa07013a 100644 --- a/bench/openssl/optimized/rsa_gen.ll +++ b/bench/openssl/optimized/rsa_gen.ll @@ -624,7 +624,7 @@ define internal fastcc range(i32 0, 2) i32 @rsa_multiprime_keygen(ptr noundef ca br label %.lr.ph340 .lr.ph340: ; preds = %.lr.ph340.preheader, %94 - %.1240338 = phi i32 [ %96, %94 ], [ 2, %.lr.ph340.preheader ] + %.1240338 = phi i32 [ %96, %94 ], [ 2, %.lr.ph339.preheader ] %92 = tail call ptr @ossl_rsa_multip_info_new() #4 %93 = icmp eq ptr %92, null br i1 %93, label %.loopexit, label %94 @@ -648,11 +648,11 @@ define internal fastcc range(i32 0, 2) i32 @rsa_multiprime_keygen(ptr noundef ca br label %101 101: ; preds = %.lr.ph359, %198 - %.1229358 = phi ptr [ %22, %.lr.ph359 ], [ %.2, %198 ] - %.2233357 = phi ptr [ %.0231, %.lr.ph359 ], [ %.3, %198 ] - %.2241356 = phi i32 [ 0, %.lr.ph359 ], [ %199, %198 ] - %.0243355 = phi i32 [ 0, %.lr.ph359 ], [ %.3246, %198 ] - %.0247354 = phi i32 [ 0, %.lr.ph359 ], [ %.3250, %198 ] + %.1229358 = phi ptr [ %22, %.lr.ph358 ], [ %.2, %198 ] + %.2233357 = phi ptr [ %.0231, %.lr.ph358 ], [ %.3, %198 ] + %.2241356 = phi i32 [ 0, %.lr.ph358 ], [ %199, %198 ] + %.0243355 = phi i32 [ 0, %.lr.ph358 ], [ %.3246, %198 ] + %.0247354 = phi i32 [ 0, %.lr.ph358 ], [ %.3250, %198 ] switch i32 %.2241356, label %103 [ i32 0, label %106 i32 1, label %102 @@ -706,11 +706,11 @@ define internal fastcc range(i32 0, 2) i32 @rsa_multiprime_keygen(ptr noundef ca br i1 %exitcond407.not, label %.thread, label %.preheader303.backedge .preheader303.backedge: ; preds = %118, %.loopexit304 - %.0222341.be = phi i32 [ %119, %118 ], [ 0, %.loopexit304 ] + %.0222341.be = phi i32 [ %119, %118 ], [ 0, %.loopexit303 ] br label %.preheader303, !llvm.loop !44 .preheader303: ; preds = %.preheader303.lr.ph, %.preheader303.backedge - %.0222341 = phi i32 [ %.0222341.be, %.preheader303.backedge ], [ 0, %.preheader303.lr.ph ] + %.0222341 = phi i32 [ %.0222341.be, %.preheader302.backedge ], [ 0, %.preheader302.lr.ph ] switch i32 %.0222341, label %121 [ i32 0, label %124 i32 1, label %120 @@ -725,7 +725,7 @@ define internal fastcc range(i32 0, 2) i32 @rsa_multiprime_keygen(ptr noundef ca br label %124 124: ; preds = %.preheader303, %120, %121 - %.0.in = phi ptr [ %123, %121 ], [ %76, %120 ], [ %69, %.preheader303 ] + %.0.in = phi ptr [ %123, %121 ], [ %76, %120 ], [ %69, %.preheader302 ] %.0 = load ptr, ptr %.0.in, align 8, !tbaa !43 %125 = tail call i32 @BN_cmp(ptr noundef %.0251, ptr noundef %.0) #4 %.not285.not = icmp eq i32 %125, 0 @@ -935,7 +935,7 @@ define internal fastcc range(i32 0, 2) i32 @rsa_multiprime_keygen(ptr noundef ca br i1 %exitcond409.not, label %._crit_edge364, label %.lr.ph363, !llvm.loop !48 .lr.ph363: ; preds = %.lr.ph363.preheader, %220 - %.4362 = phi i32 [ %221, %220 ], [ 2, %.lr.ph363.preheader ] + %.4362 = phi i32 [ %221, %220 ], [ 2, %.lr.ph362.preheader ] %222 = add nsw i32 %.4362, -2 %223 = tail call ptr @OPENSSL_sk_value(ptr noundef %.0230, i32 noundef range(i32 -2147483648, 2147483645) %222) #4 %224 = getelementptr inbounds nuw i8, ptr %223, i64 8 @@ -991,7 +991,7 @@ define internal fastcc range(i32 0, 2) i32 @rsa_multiprime_keygen(ptr noundef ca br i1 %exitcond411.not, label %.loopexit, label %.lr.ph367, !llvm.loop !54 .lr.ph367: ; preds = %.lr.ph367.preheader, %247 - %.5365 = phi i32 [ %248, %247 ], [ 2, %.lr.ph367.preheader ] + %.5365 = phi i32 [ %248, %247 ], [ 2, %.lr.ph366.preheader ] %249 = add nsw i32 %.5365, -2 %250 = tail call ptr @OPENSSL_sk_value(ptr noundef %.0230, i32 noundef range(i32 -2147483648, 2147483645) %249) #4 %251 = tail call ptr @OPENSSL_sk_delete(ptr noundef nonnull %.2, i32 noundef 0) #4 @@ -1016,11 +1016,11 @@ define internal fastcc range(i32 0, 2) i32 @rsa_multiprime_keygen(ptr noundef ca br i1 %264, label %.loopexit, label %247 .loopexit: ; preds = %.lr.ph340, %195, %192, %190, %186, %180, %172, %152, %149, %147, %135, %132, %113, %.outer, %161, %155, %144, %140, %.thread, %.loopexit304, %229, %.lr.ph363, %.lr.ph367, %259, %247, %238, %236, %._crit_edge364, %218, %214, %210, %205, %.loopexit310, %83, %78, %71, %65, %58, %52, %35, %30, %27, %24 - %.0228 = phi ptr [ %22, %24 ], [ %22, %27 ], [ %22, %30 ], [ %22, %35 ], [ %22, %83 ], [ %.1229358, %.outer ], [ %22, %.loopexit310 ], [ %.1229358, %135 ], [ %.2, %236 ], [ %.2, %205 ], [ %.2, %238 ], [ %22, %78 ], [ %.2, %.lr.ph367 ], [ %.2, %._crit_edge364 ], [ %.2, %218 ], [ %.2, %214 ], [ %.2, %210 ], [ %22, %65 ], [ %22, %58 ], [ %.1229358, %.loopexit304 ], [ %22, %52 ], [ %22, %71 ], [ null, %172 ], [ %.2, %229 ], [ %.2, %247 ], [ %.2, %259 ], [ %.2, %.lr.ph363 ], [ %.1229358, %.thread ], [ %.1229358, %140 ], [ %.1229358, %144 ], [ %.1229358, %155 ], [ %.1229358, %161 ], [ %.1229358, %113 ], [ %.1229358, %132 ], [ %.1229358, %192 ], [ %.1229358, %152 ], [ %.1229358, %149 ], [ %.1229358, %190 ], [ %.1229358, %186 ], [ %.1229358, %147 ], [ %.1229358, %180 ], [ %.1229358, %195 ], [ %22, %.lr.ph340 ] - %.0227 = phi ptr [ null, %24 ], [ null, %27 ], [ %28, %30 ], [ %28, %35 ], [ %28, %83 ], [ %28, %.outer ], [ %28, %.loopexit310 ], [ %28, %135 ], [ %28, %236 ], [ %28, %205 ], [ %28, %238 ], [ %28, %78 ], [ %28, %.lr.ph367 ], [ %28, %._crit_edge364 ], [ %28, %218 ], [ %28, %214 ], [ %28, %210 ], [ %28, %65 ], [ %28, %58 ], [ %28, %.loopexit304 ], [ %28, %52 ], [ %28, %71 ], [ %28, %195 ], [ %28, %229 ], [ %28, %247 ], [ %28, %259 ], [ %28, %.lr.ph363 ], [ %28, %.thread ], [ %28, %140 ], [ %28, %144 ], [ %28, %155 ], [ %28, %161 ], [ %28, %113 ], [ %28, %132 ], [ %28, %147 ], [ %28, %149 ], [ %28, %152 ], [ %28, %172 ], [ %28, %180 ], [ %28, %186 ], [ %28, %190 ], [ %28, %192 ], [ %28, %.lr.ph340 ] - %.0226 = phi ptr [ null, %24 ], [ null, %27 ], [ null, %30 ], [ %33, %35 ], [ %33, %83 ], [ %33, %.outer ], [ %33, %.loopexit310 ], [ %33, %135 ], [ %33, %236 ], [ %33, %205 ], [ %33, %238 ], [ %33, %78 ], [ %33, %.lr.ph367 ], [ %33, %._crit_edge364 ], [ %33, %218 ], [ %33, %214 ], [ %33, %210 ], [ %33, %65 ], [ %33, %58 ], [ %33, %.loopexit304 ], [ %33, %52 ], [ %33, %71 ], [ %33, %195 ], [ %33, %229 ], [ %33, %247 ], [ %33, %259 ], [ %33, %.lr.ph363 ], [ %33, %.thread ], [ %33, %140 ], [ %33, %144 ], [ %33, %155 ], [ %33, %161 ], [ %33, %113 ], [ %33, %132 ], [ %33, %147 ], [ %33, %149 ], [ %33, %152 ], [ %33, %172 ], [ %33, %180 ], [ %33, %186 ], [ %33, %190 ], [ %33, %192 ], [ %33, %.lr.ph340 ] - %265 = phi i1 [ true, %24 ], [ true, %27 ], [ true, %30 ], [ true, %35 ], [ true, %83 ], [ true, %.outer ], [ true, %.loopexit310 ], [ true, %135 ], [ true, %236 ], [ true, %205 ], [ false, %238 ], [ true, %78 ], [ true, %.lr.ph367 ], [ true, %._crit_edge364 ], [ true, %218 ], [ true, %214 ], [ true, %210 ], [ true, %65 ], [ true, %58 ], [ true, %.loopexit304 ], [ true, %52 ], [ true, %71 ], [ true, %195 ], [ true, %229 ], [ true, %259 ], [ false, %247 ], [ true, %.lr.ph363 ], [ true, %.thread ], [ true, %140 ], [ true, %144 ], [ true, %155 ], [ true, %161 ], [ true, %113 ], [ true, %132 ], [ true, %147 ], [ true, %149 ], [ true, %152 ], [ true, %172 ], [ true, %180 ], [ true, %186 ], [ true, %190 ], [ true, %192 ], [ true, %.lr.ph340 ] - %.0224 = phi i32 [ -1, %24 ], [ -1, %27 ], [ -1, %30 ], [ -1, %35 ], [ -1, %83 ], [ -1, %.outer ], [ -1, %.loopexit310 ], [ -1, %135 ], [ -1, %236 ], [ -1, %205 ], [ 1, %238 ], [ -1, %78 ], [ -1, %.lr.ph367 ], [ -1, %._crit_edge364 ], [ -1, %218 ], [ -1, %214 ], [ -1, %210 ], [ -1, %65 ], [ -1, %58 ], [ -1, %.loopexit304 ], [ -1, %52 ], [ -1, %71 ], [ -1, %195 ], [ -1, %229 ], [ -1, %259 ], [ 1, %247 ], [ -1, %.lr.ph363 ], [ -1, %.thread ], [ -1, %140 ], [ -1, %144 ], [ -1, %155 ], [ -1, %161 ], [ -1, %113 ], [ -1, %132 ], [ -1, %147 ], [ -1, %149 ], [ -1, %152 ], [ -1, %172 ], [ -1, %180 ], [ -1, %186 ], [ -1, %190 ], [ -1, %192 ], [ -1, %.lr.ph340 ] + %.0228 = phi ptr [ %22, %24 ], [ %22, %27 ], [ %22, %30 ], [ %22, %35 ], [ %22, %83 ], [ %.1229358, %.outer ], [ %22, %.loopexit309 ], [ %.1229358, %135 ], [ %.2, %218 ], [ %22, %78 ], [ %.2, %238 ], [ %22, %71 ], [ %.2, %.lr.ph366 ], [ %.2, %._crit_edge363 ], [ %.2, %214 ], [ %.2, %210 ], [ %.2, %205 ], [ %22, %65 ], [ %22, %58 ], [ %.1229358, %.loopexit303 ], [ %22, %52 ], [ %.2, %236 ], [ null, %172 ], [ %.2, %229 ], [ %.2, %247 ], [ %.2, %259 ], [ %.2, %.lr.ph362 ], [ %.1229358, %.thread ], [ %.1229358, %140 ], [ %.1229358, %144 ], [ %.1229358, %155 ], [ %.1229358, %161 ], [ %.1229358, %113 ], [ %.1229358, %132 ], [ %.1229358, %192 ], [ %.1229358, %152 ], [ %.1229358, %149 ], [ %.1229358, %190 ], [ %.1229358, %186 ], [ %.1229358, %147 ], [ %.1229358, %180 ], [ %.1229358, %195 ], [ %22, %.lr.ph339 ] + %.0227 = phi ptr [ null, %24 ], [ null, %27 ], [ %28, %30 ], [ %28, %35 ], [ %28, %83 ], [ %28, %.outer ], [ %28, %.loopexit309 ], [ %28, %135 ], [ %28, %218 ], [ %28, %78 ], [ %28, %238 ], [ %28, %71 ], [ %28, %.lr.ph366 ], [ %28, %._crit_edge363 ], [ %28, %214 ], [ %28, %210 ], [ %28, %205 ], [ %28, %65 ], [ %28, %58 ], [ %28, %.loopexit303 ], [ %28, %52 ], [ %28, %236 ], [ %28, %195 ], [ %28, %229 ], [ %28, %247 ], [ %28, %259 ], [ %28, %.lr.ph362 ], [ %28, %.thread ], [ %28, %140 ], [ %28, %144 ], [ %28, %155 ], [ %28, %161 ], [ %28, %113 ], [ %28, %132 ], [ %28, %147 ], [ %28, %149 ], [ %28, %152 ], [ %28, %172 ], [ %28, %180 ], [ %28, %186 ], [ %28, %190 ], [ %28, %192 ], [ %28, %.lr.ph339 ] + %.0226 = phi ptr [ null, %24 ], [ null, %27 ], [ null, %30 ], [ %33, %35 ], [ %33, %83 ], [ %33, %.outer ], [ %33, %.loopexit309 ], [ %33, %135 ], [ %33, %218 ], [ %33, %78 ], [ %33, %238 ], [ %33, %71 ], [ %33, %.lr.ph366 ], [ %33, %._crit_edge363 ], [ %33, %214 ], [ %33, %210 ], [ %33, %205 ], [ %33, %65 ], [ %33, %58 ], [ %33, %.loopexit303 ], [ %33, %52 ], [ %33, %236 ], [ %33, %195 ], [ %33, %229 ], [ %33, %247 ], [ %33, %259 ], [ %33, %.lr.ph362 ], [ %33, %.thread ], [ %33, %140 ], [ %33, %144 ], [ %33, %155 ], [ %33, %161 ], [ %33, %113 ], [ %33, %132 ], [ %33, %147 ], [ %33, %149 ], [ %33, %152 ], [ %33, %172 ], [ %33, %180 ], [ %33, %186 ], [ %33, %190 ], [ %33, %192 ], [ %33, %.lr.ph339 ] + %265 = phi i1 [ true, %24 ], [ true, %27 ], [ true, %30 ], [ true, %35 ], [ true, %83 ], [ true, %.outer ], [ true, %.loopexit309 ], [ true, %135 ], [ true, %218 ], [ true, %78 ], [ false, %238 ], [ true, %71 ], [ true, %.lr.ph366 ], [ true, %._crit_edge363 ], [ true, %214 ], [ true, %210 ], [ true, %205 ], [ true, %65 ], [ true, %58 ], [ true, %.loopexit303 ], [ true, %52 ], [ true, %236 ], [ true, %195 ], [ true, %229 ], [ true, %259 ], [ false, %247 ], [ true, %.lr.ph362 ], [ true, %.thread ], [ true, %140 ], [ true, %144 ], [ true, %155 ], [ true, %161 ], [ true, %113 ], [ true, %132 ], [ true, %147 ], [ true, %149 ], [ true, %152 ], [ true, %172 ], [ true, %180 ], [ true, %186 ], [ true, %190 ], [ true, %192 ], [ true, %.lr.ph339 ] + %.0224 = phi i32 [ -1, %24 ], [ -1, %27 ], [ -1, %30 ], [ -1, %35 ], [ -1, %83 ], [ -1, %.outer ], [ -1, %.loopexit309 ], [ -1, %135 ], [ -1, %218 ], [ -1, %78 ], [ 1, %238 ], [ -1, %71 ], [ -1, %.lr.ph366 ], [ -1, %._crit_edge363 ], [ -1, %214 ], [ -1, %210 ], [ -1, %205 ], [ -1, %65 ], [ -1, %58 ], [ -1, %.loopexit303 ], [ -1, %52 ], [ -1, %236 ], [ -1, %195 ], [ -1, %229 ], [ -1, %259 ], [ 1, %247 ], [ -1, %.lr.ph362 ], [ -1, %.thread ], [ -1, %140 ], [ -1, %144 ], [ -1, %155 ], [ -1, %161 ], [ -1, %113 ], [ -1, %132 ], [ -1, %147 ], [ -1, %149 ], [ -1, %152 ], [ -1, %172 ], [ -1, %180 ], [ -1, %186 ], [ -1, %190 ], [ -1, %192 ], [ -1, %.lr.ph339 ] tail call void @OPENSSL_sk_free(ptr noundef %.0228) #4 tail call void @OPENSSL_sk_free(ptr noundef %25) #4 tail call void @OPENSSL_sk_free(ptr noundef %.0227) #4 diff --git a/bench/openssl/optimized/speed.ll b/bench/openssl/optimized/speed.ll index 80dcf1fa33b..04e5a15ec7d 100644 --- a/bench/openssl/optimized/speed.ll +++ b/bench/openssl/optimized/speed.ll @@ -12430,38 +12430,33 @@ define internal fastcc ptr @get_ecdsa(ptr noundef readonly captures(none) %0) un %15 = tail call i64 @ERR_peek_error() #14 %16 = tail call i64 @ERR_peek_last_error() #14 %17 = icmp eq i64 %15, %16 - br i1 %17, label %18, label %26 - -18: ; preds = %14 - %19 = and i64 %15, 2147483648 - %.not.i = icmp eq i64 %19, 0 - %20 = trunc i64 %15 to i32 - %.mask = and i32 %20, -8388608 - %21 = icmp eq i32 %.mask, 50331648 - %22 = select i1 %.not.i, i1 %21, i1 false - br i1 %22, label %23, label %26 - -23: ; preds = %18 - %.0.i26 = and i32 %20, 8388607 - switch i32 %.0.i26, label %26 [ - i32 156, label %24 - i32 524556, label %24 + %18 = and i64 %15, 4286578688 + %19 = icmp eq i64 %18, 50331648 + %or.cond = and i1 %17, %19 + br i1 %or.cond, label %20, label %24 + +20:; preds = %14 + %21 = trunc i64 %15 to i32 + %.0.i26 = and i32 %21, 8388607 + switch i32 %.0.i26, label %24 [ + i32 156, label %22 + i32 524556, label %22 ] -24: ; preds = %23, %23 +24: ; preds = %20, %20 %25 = tail call i64 @ERR_get_error() #14 br label %26 -26: ; preds = %23, %24, %18, %14 +26: ; preds = %20, %24, %14 %27 = tail call i64 @ERR_peek_error() #14 %.not24 = icmp eq i64 %27, 0 br i1 %.not24, label %32, label %28 28: ; preds = %26 + %27 = load ptr, ptr @bio_err, align 8, !tbaa !19 + %28 = tail call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %27, ptr noundef nonnull @.str.453) #14 %29 = load ptr, ptr @bio_err, align 8, !tbaa !19 - %30 = tail call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %29, ptr noundef nonnull @.str.453) #14 - %31 = load ptr, ptr @bio_err, align 8, !tbaa !19 - tail call void @ERR_print_errors(ptr noundef %31) #14 + tail call void @ERR_print_errors(ptr noundef %29) #14 store i1 true, ptr @testmoderesult, align 4 br label %.critedge @@ -12487,26 +12482,26 @@ define internal fastcc ptr @get_ecdsa(ptr noundef readonly captures(none) %0) un br i1 %44, label %45, label %49 45: ; preds = %42, %38, %35, %32 + %44 = load ptr, ptr @bio_err, align 8, !tbaa !19 + %45 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %44, ptr noundef nonnull @.str.454) #14 %46 = load ptr, ptr @bio_err, align 8, !tbaa !19 - %47 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %46, ptr noundef nonnull @.str.454) #14 - %48 = load ptr, ptr @bio_err, align 8, !tbaa !19 - call void @ERR_print_errors(ptr noundef %48) #14 + call void @ERR_print_errors(ptr noundef %46) #14 store i1 true, ptr @testmoderesult, align 4 call void @EVP_PKEY_CTX_free(ptr noundef %33) #14 br label %.critedge 49: ; preds = %42 call void @EVP_PKEY_CTX_free(ptr noundef nonnull %33) #14 + %48 = load ptr, ptr %3, align 8, !tbaa !4 + %49 = call ptr @EVP_PKEY_CTX_new(ptr noundef %48, ptr noundef null) #14 %50 = load ptr, ptr %3, align 8, !tbaa !4 - %51 = call ptr @EVP_PKEY_CTX_new(ptr noundef %50, ptr noundef null) #14 - %52 = load ptr, ptr %3, align 8, !tbaa !4 - call void @EVP_PKEY_free(ptr noundef %52) #14 + call void @EVP_PKEY_free(ptr noundef %50) #14 call void @llvm.lifetime.end.p0(ptr nonnull %3) - %53 = icmp eq ptr %51, null + %53 = icmp eq ptr %49, null br i1 %53, label %59, label %.thread .thread: ; preds = %9, %49 - %.01833 = phi ptr [ %51, %49 ], [ %12, %9 ] + %.01833 = phi ptr [ %49, %47 ], [ %12, %9 ] %54 = call i32 @EVP_PKEY_keygen_init(ptr noundef nonnull %.01833) #14 %55 = icmp slt i32 %54, 1 br i1 %55, label %59, label %56 @@ -12517,17 +12512,17 @@ define internal fastcc ptr @get_ecdsa(ptr noundef readonly captures(none) %0) un br i1 %58, label %59, label %63 59: ; preds = %56, %.thread, %49 - %.01832 = phi ptr [ %.01833, %56 ], [ %.01833, %.thread ], [ null, %49 ] + %.01832 = phi ptr [ %.01833, %54 ], [ %.01833, %.thread ], [ null, %47 ] + %58 = load ptr, ptr @bio_err, align 8, !tbaa !19 + %59 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %58, ptr noundef nonnull @.str.455) #14 %60 = load ptr, ptr @bio_err, align 8, !tbaa !19 - %61 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %60, ptr noundef nonnull @.str.455) #14 - %62 = load ptr, ptr @bio_err, align 8, !tbaa !19 - call void @ERR_print_errors(ptr noundef %62) #14 + call void @ERR_print_errors(ptr noundef %60) #14 store i1 true, ptr @testmoderesult, align 4 store ptr null, ptr %2, align 8, !tbaa !4 br label %63 63: ; preds = %59, %56 - %.01831 = phi ptr [ %.01832, %59 ], [ %.01833, %56 ] + %.01831 = phi ptr [ %.01832, %57 ], [ %.01833, %54 ] call void @EVP_PKEY_CTX_free(ptr noundef %.01831) #14 %64 = load ptr, ptr %2, align 8, !tbaa !4 br label %65 @@ -12537,7 +12532,7 @@ define internal fastcc ptr @get_ecdsa(ptr noundef readonly captures(none) %0) un br label %65 65: ; preds = %.critedge, %63 - %.1 = phi ptr [ %64, %63 ], [ null, %.critedge ] + %.1 = phi ptr [ %64, %61 ], [ null, %.critedge ] call void @llvm.lifetime.end.p0(ptr nonnull %2) ret ptr %.1 } diff --git a/bench/openssl/optimized/ssl_rsa.ll b/bench/openssl/optimized/ssl_rsa.ll index 28963bc49c9..141f3ef7eff 100644 --- a/bench/openssl/optimized/ssl_rsa.ll +++ b/bench/openssl/optimized/ssl_rsa.ll @@ -1233,7 +1233,7 @@ define internal fastcc range(i32 0, 2) i32 @use_certificate_chain_file(ptr nound br label %94 94: ; preds = %.thread99, %93, %.split87.us, %62, %.split89.us, %.split.us - %.3 = phi i32 [ 0, %62 ], [ 1, %.split.us ], [ 0, %.split89.us ], [ 1, %93 ], [ 0, %.split87.us ], [ 0, %.thread99 ] + %.3 = phi i32 [ 0, %62 ], [ 1, %.split.us ], [ 0, %.split89.us ], [ 1, %93 ], [ 0, %.thread100 ], [ 0, %.split87.us ] call void @llvm.lifetime.end.p0(ptr nonnull %5) br label %95 diff --git a/bench/openusd/optimized/openexr-c.ll b/bench/openusd/optimized/openexr-c.ll index 0dd35b321c4..1ab3ba010ab 100644 --- a/bench/openusd/optimized/openexr-c.ll +++ b/bench/openusd/optimized/openexr-c.ll @@ -56048,24 +56048,21 @@ half_to_float.exit348: ; preds = %686, %688, %690, %6 ; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable define internal fastcc void @interleaveByte2(ptr noundef %0, ptr noundef %1, ptr noundef %2, i32 noundef %3) unnamed_addr #38 { %5 = ptrtoint ptr %0 to i64 - %6 = trunc i64 %5 to i32 - %7 = ptrtoint ptr %1 to i64 - %8 = trunc i64 %7 to i32 - %9 = ptrtoint ptr %2 to i64 - %10 = trunc i64 %9 to i32 - %11 = sdiv i32 %3, 16 - %12 = or i32 %8, %6 - %13 = or i32 %12, %10 - %14 = and i32 %13, 15 - %or.cond3.not = icmp eq i32 %14, 0 - br i1 %or.cond3.not, label %.preheader, label %34 + %6 = ptrtoint ptr %1 to i64 + %7 = ptrtoint ptr %2 to i64 + %8 = sdiv i32 %3, 16 + %9 = or i64 %6, %5 + %10 = or i64 %9, %7 + %11 = and i64 %10, 15 + %or.cond3.not = icmp eq i64 %11, 0 + br i1 %or.cond3.not, label %.preheader, label %31 .preheader: ; preds = %4 %15 = icmp sgt i32 %3, 15 br i1 %15, label %.lr.ph172.preheader, label %._crit_edge173 .lr.ph172.preheader: ; preds = %.preheader - %wide.trip.count203 = zext nneg i32 %11 to i64 + %wide.trip.count203 = zext nneg i32 %8 to i64 br label %.lr.ph172 .lr.ph172: ; preds = %.lr.ph172.preheader, %.lr.ph172 @@ -56086,7 +56083,7 @@ define internal fastcc void @interleaveByte2(ptr noundef %0, ptr noundef %1, ptr br i1 %exitcond204.not, label %._crit_edge173, label %.lr.ph172, !llvm.loop !472 ._crit_edge173: ; preds = %.lr.ph172, %.preheader - %24 = shl nsw i32 %11, 4 + %24 = shl nsw i32 %8, 4 %25 = icmp slt i32 %24, %3 br i1 %25, label %.lr.ph176.preheader, label %.loopexit @@ -56111,13 +56108,13 @@ define internal fastcc void @interleaveByte2(ptr noundef %0, ptr noundef %1, ptr br i1 %exitcond209.not, label %.loopexit, label %.lr.ph176, !llvm.loop !473 34: ; preds = %4 - %35 = and i32 %10, 15 - %36 = and i32 %8, 15 - %37 = and i32 %6, 15 - %38 = icmp eq i32 %37, 0 - %39 = icmp eq i32 %36, 8 - %or.cond5 = and i1 %38, %39 - %40 = icmp eq i32 %35, 8 + %35 = and i64 %5, 15 + %33 = icmp eq i64 %32, 0 + %37 = and i64 %6, 15 + %38 = icmp eq i64 %37, 8 + %or.cond5 = and i1 %33, %38 + %or.cond5 = and i64 %7, 15 + %40 = icmp eq i64 %36, 8 %or.cond7 = and i1 %or.cond5, %40 br i1 %or.cond7, label %42, label %.preheader155 @@ -56126,7 +56123,7 @@ define internal fastcc void @interleaveByte2(ptr noundef %0, ptr noundef %1, ptr br i1 %41, label %.lr.ph.preheader, label %._crit_edge .lr.ph.preheader: ; preds = %.preheader155 - %wide.trip.count = zext nneg i32 %11 to i64 + %wide.trip.count = zext nneg i32 %8 to i64 br label %.lr.ph 42: ; preds = %34 @@ -56234,7 +56231,7 @@ define internal fastcc void @interleaveByte2(ptr noundef %0, ptr noundef %1, ptr br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !477 ._crit_edge: ; preds = %.lr.ph, %.preheader155 - %89 = shl nsw i32 %11, 4 + %89 = shl nsw i32 %8, 4 %90 = icmp slt i32 %89, %3 br i1 %90, label %.lr.ph159.preheader, label %.loopexit diff --git a/bench/pingora-rs/optimized/031lstpg0hmrazohafgtmu7kw.ll b/bench/pingora-rs/optimized/031lstpg0hmrazohafgtmu7kw.ll index fe0bdaaed6a..2a19aac5dfb 100644 --- a/bench/pingora-rs/optimized/031lstpg0hmrazohafgtmu7kw.ll +++ b/bench/pingora-rs/optimized/031lstpg0hmrazohafgtmu7kw.ll @@ -5896,15 +5896,16 @@ define hidden void @"_ZN6brotli3enc11stride_eval23StrideEval$LT$Alloc$GT$3new17h %.sroa.538.0.extract.trunc = trunc i64 %.sroa.538.0.extract.shift to i16 %.sroa.639.0.extract.shift = lshr i64 %15, 48 %.sroa.639.0.extract.trunc = trunc nuw i64 %.sroa.639.0.extract.shift to i16 - %16 = or i16 %.sroa.437.0.extract.trunc, %.sroa.036.0.extract.trunc - %or.cond = icmp eq i16 %16, 0 - %17 = load i16, ptr %4, align 8 - %18 = getelementptr inbounds nuw i8, ptr %4, i64 2 - %19 = load i16, ptr %18, align 2 - %.sroa.9.0 = select i1 %or.cond, i16 %19, i16 %.sroa.437.0.extract.trunc - %.sroa.0.0 = select i1 %or.cond, i16 %17, i16 %.sroa.036.0.extract.trunc - %20 = or i16 %.sroa.0.0, %.sroa.9.0 - %or.cond5 = icmp eq i16 %20, 0 + %16 = or i64 %.sroa.437.0.extract.shift, %15 + %17 = and i64 %16, 65535 + %or.cond = icmp eq i64 %17, 0 + %18 = load i16, ptr %4, align 8 + %19 = getelementptr inbounds nuw i8, ptr %4, i64 2 + %20 = load i16, ptr %19, align 2 + %.sroa.0.0 = select i1 %or.cond, i16 %20, i16 %.sroa.437.0.extract.trunc + %.sroa.0.0 = select i1 %or.cond, i16 %18, i16 %.sroa.036.0.extract.trunc + %21 = or i16 %.sroa.0.0, %.sroa.9.0 + %or.cond5 = icmp eq i16 %21, 0 %.sroa.9.1 = select i1 %or.cond5, i16 8192, i16 %.sroa.9.0 %.sroa.0.1 = select i1 %or.cond5, i16 8, i16 %.sroa.0.0 %21 = icmp eq i16 %.sroa.538.0.extract.trunc, 0 @@ -5930,7 +5931,7 @@ define hidden void @"_ZN6brotli3enc11stride_eval23StrideEval$LT$Alloc$GT$3new17h store i64 %31, ptr %32, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %13) %33 = invoke { ptr, i64 } @"_ZN111_$LT$alloc_stdlib..std_alloc..StandardAlloc$u20$as$u20$alloc_no_stdlib..stack_allocator..Allocator$LT$T$GT$$GT$10alloc_cell17h109755d396a09275E"(ptr noalias noundef nonnull align 1 %1, i64 noundef 2097152) - to label %36 unwind label %34 + to label %37 unwind label %34 34: ; preds = %5 %35 = landingpad { ptr, i32 } @@ -5945,12 +5946,12 @@ define hidden void @"_ZN6brotli3enc11stride_eval23StrideEval$LT$Alloc$GT$3new17h store i64 %38, ptr %39, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %12) %40 = invoke { ptr, i64 } @"_ZN111_$LT$alloc_stdlib..std_alloc..StandardAlloc$u20$as$u20$alloc_no_stdlib..stack_allocator..Allocator$LT$T$GT$$GT$10alloc_cell17h109755d396a09275E"(ptr noalias noundef nonnull align 1 %1, i64 noundef 2097152) - to label %44 unwind label %42 + to label %45 unwind label %42 41: ; preds = %49, %42 - %.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn, %49 ], [ %43, %42 ] + %.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn, %50 ], [ %43, %43 ] invoke void @"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u16$GT$$GT$17hff0721378e040262E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %13) #22 - to label %113 unwind label %109 + to label %114 unwind label %109 42: ; preds = %36 %43 = landingpad { ptr, i32 } @@ -5965,12 +5966,12 @@ define hidden void @"_ZN6brotli3enc11stride_eval23StrideEval$LT$Alloc$GT$3new17h store i64 %46, ptr %47, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %11) %48 = invoke { ptr, i64 } @"_ZN111_$LT$alloc_stdlib..std_alloc..StandardAlloc$u20$as$u20$alloc_no_stdlib..stack_allocator..Allocator$LT$T$GT$$GT$10alloc_cell17h109755d396a09275E"(ptr noalias noundef nonnull align 1 %1, i64 noundef 2097152) - to label %52 unwind label %50 + to label %53 unwind label %50 49: ; preds = %57, %50 - %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn, %57 ], [ %51, %50 ] + %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn, %58 ], [ %51, %51 ] invoke void @"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u16$GT$$GT$17hff0721378e040262E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %12) #22 - to label %41 unwind label %109 + to label %42 unwind label %109 50: ; preds = %44 %51 = landingpad { ptr, i32 } @@ -5985,12 +5986,12 @@ define hidden void @"_ZN6brotli3enc11stride_eval23StrideEval$LT$Alloc$GT$3new17h store i64 %54, ptr %55, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %10) %56 = invoke { ptr, i64 } @"_ZN111_$LT$alloc_stdlib..std_alloc..StandardAlloc$u20$as$u20$alloc_no_stdlib..stack_allocator..Allocator$LT$T$GT$$GT$10alloc_cell17h109755d396a09275E"(ptr noalias noundef nonnull align 1 %1, i64 noundef 2097152) - to label %60 unwind label %58 + to label %61 unwind label %58 57: ; preds = %65, %58 - %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %65 ], [ %59, %58 ] + %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %66 ], [ %59, %59 ] invoke void @"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u16$GT$$GT$17hff0721378e040262E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %11) #22 - to label %49 unwind label %109 + to label %50 unwind label %109 58: ; preds = %52 %59 = landingpad { ptr, i32 } @@ -6005,12 +6006,12 @@ define hidden void @"_ZN6brotli3enc11stride_eval23StrideEval$LT$Alloc$GT$3new17h store i64 %62, ptr %63, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %9) %64 = invoke { ptr, i64 } @"_ZN111_$LT$alloc_stdlib..std_alloc..StandardAlloc$u20$as$u20$alloc_no_stdlib..stack_allocator..Allocator$LT$T$GT$$GT$10alloc_cell17h109755d396a09275E"(ptr noalias noundef nonnull align 1 %1, i64 noundef 2097152) - to label %68 unwind label %66 + to label %69 unwind label %66 65: ; preds = %73, %66 - %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %73 ], [ %67, %66 ] + %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %74 ], [ %67, %67 ] invoke void @"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u16$GT$$GT$17hff0721378e040262E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %10) #22 - to label %57 unwind label %109 + to label %58 unwind label %109 66: ; preds = %60 %67 = landingpad { ptr, i32 } @@ -6025,12 +6026,12 @@ define hidden void @"_ZN6brotli3enc11stride_eval23StrideEval$LT$Alloc$GT$3new17h store i64 %70, ptr %71, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %8) %72 = invoke { ptr, i64 } @"_ZN111_$LT$alloc_stdlib..std_alloc..StandardAlloc$u20$as$u20$alloc_no_stdlib..stack_allocator..Allocator$LT$T$GT$$GT$10alloc_cell17h109755d396a09275E"(ptr noalias noundef nonnull align 1 %1, i64 noundef 2097152) - to label %76 unwind label %74 + to label %77 unwind label %74 73: ; preds = %81, %74 - %.pn.pn = phi { ptr, i32 } [ %.pn, %81 ], [ %75, %74 ] + %.pn.pn = phi { ptr, i32 } [ %.pn, %82 ], [ %75, %75 ] invoke void @"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u16$GT$$GT$17hff0721378e040262E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %9) #22 - to label %65 unwind label %109 + to label %66 unwind label %109 74: ; preds = %68 %75 = landingpad { ptr, i32 } @@ -6045,12 +6046,12 @@ define hidden void @"_ZN6brotli3enc11stride_eval23StrideEval$LT$Alloc$GT$3new17h store i64 %78, ptr %79, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %7) %80 = invoke { ptr, i64 } @"_ZN111_$LT$alloc_stdlib..std_alloc..StandardAlloc$u20$as$u20$alloc_no_stdlib..stack_allocator..Allocator$LT$T$GT$$GT$10alloc_cell17h109755d396a09275E"(ptr noalias noundef nonnull align 1 %1, i64 noundef 2097152) - to label %84 unwind label %82 + to label %85 unwind label %82 81: ; preds = %89, %82 - %.pn = phi { ptr, i32 } [ %90, %89 ], [ %83, %82 ] + %.pn = phi { ptr, i32 } [ %90, %90 ], [ %83, %83 ] invoke void @"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u16$GT$$GT$17hff0721378e040262E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %8) #22 - to label %73 unwind label %109 + to label %74 unwind label %109 82: ; preds = %76 %83 = landingpad { ptr, i32 } @@ -6064,13 +6065,13 @@ define hidden void @"_ZN6brotli3enc11stride_eval23StrideEval$LT$Alloc$GT$3new17h %87 = getelementptr inbounds nuw i8, ptr %7, i64 8 store i64 %86, ptr %87, align 8 %88 = invoke { ptr, i64 } @"_ZN111_$LT$alloc_stdlib..std_alloc..StandardAlloc$u20$as$u20$alloc_no_stdlib..stack_allocator..Allocator$LT$T$GT$$GT$10alloc_cell17h109755d396a09275E"(ptr noalias noundef nonnull align 1 %1, i64 noundef 2097152) - to label %91 unwind label %89 + to label %92 unwind label %89 89: ; preds = %84 %90 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u16$GT$$GT$17hff0721378e040262E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %7) #22 - to label %81 unwind label %109 + to label %82 unwind label %109 91: ; preds = %84 %92 = extractvalue { ptr, i64 } %88, 0 @@ -6143,7 +6144,7 @@ define hidden void @"_ZN6brotli3enc11stride_eval23StrideEval$LT$Alloc$GT$3new17h br label %103 103: ; preds = %107, %91 - %.sroa.034.0.idx = phi i64 [ 64, %91 ], [ %.sroa.034.0.add, %107 ] + %.sroa.034.0.idx = phi i64 [ 64, %92 ], [ %.sroa.034.0.add, %108 ] %104 = icmp eq i64 %.sroa.034.0.idx, 192 br i1 %104, label %111, label %107 @@ -6151,7 +6152,7 @@ define hidden void @"_ZN6brotli3enc11stride_eval23StrideEval$LT$Alloc$GT$3new17h %106 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr103drop_in_place$LT$brotli..enc..stride_eval..StrideEval$LT$alloc_stdlib..std_alloc..StandardAlloc$GT$$GT$17h4f2b938a92ff2493E"(ptr noalias noundef nonnull align 8 dereferenceable(240) %6) #22 - to label %112 unwind label %109 + to label %113 unwind label %109 107: ; preds = %103 %.sroa.034.0.ptr = getelementptr inbounds nuw i8, ptr %6, i64 %.sroa.034.0.idx @@ -6160,7 +6161,7 @@ define hidden void @"_ZN6brotli3enc11stride_eval23StrideEval$LT$Alloc$GT$3new17h %108 = getelementptr i8, ptr %.sroa.034.0.ptr, i64 8 %.sroa.034.0.ptr.val50 = load i64, ptr %108, align 8, !noundef !3 invoke void @_ZN6brotli3enc11stride_eval15local_init_cdfs17h55030522419a969aE(ptr noalias noundef nonnull align 2 %.sroa.034.0.ptr.val, i64 noundef %.sroa.034.0.ptr.val50) - to label %103 unwind label %105 + to label %104 unwind label %105 109: ; preds = %113, %105, %89, %81, %73, %65, %57, %49, %41 %110 = landingpad { ptr, i32 } @@ -6175,13 +6176,13 @@ define hidden void @"_ZN6brotli3enc11stride_eval23StrideEval$LT$Alloc$GT$3new17h ret void 112: ; preds = %105, %113 - %.pn4853 = phi { ptr, i32 } [ %.pn48.ph, %113 ], [ %106, %105 ] + %.pn4853 = phi { ptr, i32 } [ %.pn48.ph, %114 ], [ %106, %106 ] resume { ptr, i32 } %.pn4853 113: ; preds = %41, %34 - %.pn48.ph = phi { ptr, i32 } [ %35, %34 ], [ %.pn.pn.pn.pn.pn.pn, %41 ] + %.pn48.ph = phi { ptr, i32 } [ %35, %35 ], [ %.pn.pn.pn.pn.pn.pn, %42 ] invoke void @"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$f32$GT$$GT$17hf3151b38ab82c61dE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %14) #22 - to label %112 unwind label %109 + to label %113 unwind label %109 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/pola-rs/optimized/cztbx1zaxsgh33rhqav0blwq7.ll b/bench/pola-rs/optimized/cztbx1zaxsgh33rhqav0blwq7.ll index 9115406ec23..ebab0225cbc 100644 --- a/bench/pola-rs/optimized/cztbx1zaxsgh33rhqav0blwq7.ll +++ b/bench/pola-rs/optimized/cztbx1zaxsgh33rhqav0blwq7.ll @@ -19593,15 +19593,16 @@ define hidden void @"_ZN6brotli3enc11stride_eval23StrideEval$LT$Alloc$GT$3new17h %.sroa.538.0.extract.trunc = trunc i64 %.sroa.538.0.extract.shift to i16 %.sroa.639.0.extract.shift = lshr i64 %15, 48 %.sroa.639.0.extract.trunc = trunc nuw i64 %.sroa.639.0.extract.shift to i16 - %16 = or i16 %.sroa.437.0.extract.trunc, %.sroa.036.0.extract.trunc - %or.cond = icmp eq i16 %16, 0 - %17 = load i16, ptr %4, align 8 - %18 = getelementptr inbounds nuw i8, ptr %4, i64 2 - %19 = load i16, ptr %18, align 2 - %.sroa.9.0 = select i1 %or.cond, i16 %19, i16 %.sroa.437.0.extract.trunc - %.sroa.0.0 = select i1 %or.cond, i16 %17, i16 %.sroa.036.0.extract.trunc - %20 = or i16 %.sroa.0.0, %.sroa.9.0 - %or.cond5 = icmp eq i16 %20, 0 + %16 = or i64 %.sroa.437.0.extract.shift, %15 + %17 = and i64 %16, 65535 + %or.cond = icmp eq i64 %17, 0 + %18 = load i16, ptr %4, align 8 + %19 = getelementptr inbounds nuw i8, ptr %4, i64 2 + %20 = load i16, ptr %19, align 2 + %.sroa.0.0 = select i1 %or.cond, i16 %20, i16 %.sroa.437.0.extract.trunc + %.sroa.0.0 = select i1 %or.cond, i16 %18, i16 %.sroa.036.0.extract.trunc + %21 = or i16 %.sroa.0.0, %.sroa.9.0 + %or.cond5 = icmp eq i16 %21, 0 %.sroa.9.1 = select i1 %or.cond5, i16 8192, i16 %.sroa.9.0 %.sroa.0.1 = select i1 %or.cond5, i16 8, i16 %.sroa.0.0 %21 = icmp eq i16 %.sroa.538.0.extract.trunc, 0 @@ -19627,7 +19628,7 @@ define hidden void @"_ZN6brotli3enc11stride_eval23StrideEval$LT$Alloc$GT$3new17h store i64 %31, ptr %32, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %13) %33 = invoke { ptr, i64 } @"_ZN111_$LT$alloc_stdlib..std_alloc..StandardAlloc$u20$as$u20$alloc_no_stdlib..stack_allocator..Allocator$LT$T$GT$$GT$10alloc_cell17heb7318df9c802764E"(ptr noalias noundef nonnull align 1 %1, i64 noundef 2097152) - to label %36 unwind label %34 + to label %37 unwind label %34 34: ; preds = %5 %35 = landingpad { ptr, i32 } @@ -19642,12 +19643,12 @@ define hidden void @"_ZN6brotli3enc11stride_eval23StrideEval$LT$Alloc$GT$3new17h store i64 %38, ptr %39, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %12) %40 = invoke { ptr, i64 } @"_ZN111_$LT$alloc_stdlib..std_alloc..StandardAlloc$u20$as$u20$alloc_no_stdlib..stack_allocator..Allocator$LT$T$GT$$GT$10alloc_cell17heb7318df9c802764E"(ptr noalias noundef nonnull align 1 %1, i64 noundef 2097152) - to label %44 unwind label %42 + to label %45 unwind label %42 41: ; preds = %49, %42 - %.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn, %49 ], [ %43, %42 ] + %.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn, %50 ], [ %43, %43 ] invoke void @"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u16$GT$$GT$17h20a412c16915552eE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %13) #21 - to label %113 unwind label %109 + to label %114 unwind label %109 42: ; preds = %36 %43 = landingpad { ptr, i32 } @@ -19662,12 +19663,12 @@ define hidden void @"_ZN6brotli3enc11stride_eval23StrideEval$LT$Alloc$GT$3new17h store i64 %46, ptr %47, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %11) %48 = invoke { ptr, i64 } @"_ZN111_$LT$alloc_stdlib..std_alloc..StandardAlloc$u20$as$u20$alloc_no_stdlib..stack_allocator..Allocator$LT$T$GT$$GT$10alloc_cell17heb7318df9c802764E"(ptr noalias noundef nonnull align 1 %1, i64 noundef 2097152) - to label %52 unwind label %50 + to label %53 unwind label %50 49: ; preds = %57, %50 - %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn, %57 ], [ %51, %50 ] + %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn, %58 ], [ %51, %51 ] invoke void @"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u16$GT$$GT$17h20a412c16915552eE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %12) #21 - to label %41 unwind label %109 + to label %42 unwind label %109 50: ; preds = %44 %51 = landingpad { ptr, i32 } @@ -19682,12 +19683,12 @@ define hidden void @"_ZN6brotli3enc11stride_eval23StrideEval$LT$Alloc$GT$3new17h store i64 %54, ptr %55, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %10) %56 = invoke { ptr, i64 } @"_ZN111_$LT$alloc_stdlib..std_alloc..StandardAlloc$u20$as$u20$alloc_no_stdlib..stack_allocator..Allocator$LT$T$GT$$GT$10alloc_cell17heb7318df9c802764E"(ptr noalias noundef nonnull align 1 %1, i64 noundef 2097152) - to label %60 unwind label %58 + to label %61 unwind label %58 57: ; preds = %65, %58 - %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %65 ], [ %59, %58 ] + %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %66 ], [ %59, %59 ] invoke void @"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u16$GT$$GT$17h20a412c16915552eE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %11) #21 - to label %49 unwind label %109 + to label %50 unwind label %109 58: ; preds = %52 %59 = landingpad { ptr, i32 } @@ -19702,12 +19703,12 @@ define hidden void @"_ZN6brotli3enc11stride_eval23StrideEval$LT$Alloc$GT$3new17h store i64 %62, ptr %63, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %9) %64 = invoke { ptr, i64 } @"_ZN111_$LT$alloc_stdlib..std_alloc..StandardAlloc$u20$as$u20$alloc_no_stdlib..stack_allocator..Allocator$LT$T$GT$$GT$10alloc_cell17heb7318df9c802764E"(ptr noalias noundef nonnull align 1 %1, i64 noundef 2097152) - to label %68 unwind label %66 + to label %69 unwind label %66 65: ; preds = %73, %66 - %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %73 ], [ %67, %66 ] + %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %74 ], [ %67, %67 ] invoke void @"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u16$GT$$GT$17h20a412c16915552eE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %10) #21 - to label %57 unwind label %109 + to label %58 unwind label %109 66: ; preds = %60 %67 = landingpad { ptr, i32 } @@ -19722,12 +19723,12 @@ define hidden void @"_ZN6brotli3enc11stride_eval23StrideEval$LT$Alloc$GT$3new17h store i64 %70, ptr %71, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %8) %72 = invoke { ptr, i64 } @"_ZN111_$LT$alloc_stdlib..std_alloc..StandardAlloc$u20$as$u20$alloc_no_stdlib..stack_allocator..Allocator$LT$T$GT$$GT$10alloc_cell17heb7318df9c802764E"(ptr noalias noundef nonnull align 1 %1, i64 noundef 2097152) - to label %76 unwind label %74 + to label %77 unwind label %74 73: ; preds = %81, %74 - %.pn.pn = phi { ptr, i32 } [ %.pn, %81 ], [ %75, %74 ] + %.pn.pn = phi { ptr, i32 } [ %.pn, %82 ], [ %75, %75 ] invoke void @"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u16$GT$$GT$17h20a412c16915552eE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %9) #21 - to label %65 unwind label %109 + to label %66 unwind label %109 74: ; preds = %68 %75 = landingpad { ptr, i32 } @@ -19742,12 +19743,12 @@ define hidden void @"_ZN6brotli3enc11stride_eval23StrideEval$LT$Alloc$GT$3new17h store i64 %78, ptr %79, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %7) %80 = invoke { ptr, i64 } @"_ZN111_$LT$alloc_stdlib..std_alloc..StandardAlloc$u20$as$u20$alloc_no_stdlib..stack_allocator..Allocator$LT$T$GT$$GT$10alloc_cell17heb7318df9c802764E"(ptr noalias noundef nonnull align 1 %1, i64 noundef 2097152) - to label %84 unwind label %82 + to label %85 unwind label %82 81: ; preds = %89, %82 - %.pn = phi { ptr, i32 } [ %90, %89 ], [ %83, %82 ] + %.pn = phi { ptr, i32 } [ %90, %90 ], [ %83, %83 ] invoke void @"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u16$GT$$GT$17h20a412c16915552eE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %8) #21 - to label %73 unwind label %109 + to label %74 unwind label %109 82: ; preds = %76 %83 = landingpad { ptr, i32 } @@ -19761,13 +19762,13 @@ define hidden void @"_ZN6brotli3enc11stride_eval23StrideEval$LT$Alloc$GT$3new17h %87 = getelementptr inbounds nuw i8, ptr %7, i64 8 store i64 %86, ptr %87, align 8 %88 = invoke { ptr, i64 } @"_ZN111_$LT$alloc_stdlib..std_alloc..StandardAlloc$u20$as$u20$alloc_no_stdlib..stack_allocator..Allocator$LT$T$GT$$GT$10alloc_cell17heb7318df9c802764E"(ptr noalias noundef nonnull align 1 %1, i64 noundef 2097152) - to label %91 unwind label %89 + to label %92 unwind label %89 89: ; preds = %84 %90 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$u16$GT$$GT$17h20a412c16915552eE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %7) #21 - to label %81 unwind label %109 + to label %82 unwind label %109 91: ; preds = %84 %92 = extractvalue { ptr, i64 } %88, 0 @@ -19840,7 +19841,7 @@ define hidden void @"_ZN6brotli3enc11stride_eval23StrideEval$LT$Alloc$GT$3new17h br label %103 103: ; preds = %107, %91 - %.sroa.034.0.idx = phi i64 [ 64, %91 ], [ %.sroa.034.0.add, %107 ] + %.sroa.034.0.idx = phi i64 [ 64, %92 ], [ %.sroa.034.0.add, %108 ] %104 = icmp eq i64 %.sroa.034.0.idx, 192 br i1 %104, label %111, label %107 @@ -19848,7 +19849,7 @@ define hidden void @"_ZN6brotli3enc11stride_eval23StrideEval$LT$Alloc$GT$3new17h %106 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr103drop_in_place$LT$brotli..enc..stride_eval..StrideEval$LT$alloc_stdlib..std_alloc..StandardAlloc$GT$$GT$17haf12f3ee3cfa56f1E"(ptr noalias noundef nonnull align 8 dereferenceable(240) %6) #21 - to label %112 unwind label %109 + to label %113 unwind label %109 107: ; preds = %103 %.sroa.034.0.ptr = getelementptr inbounds nuw i8, ptr %6, i64 %.sroa.034.0.idx @@ -19857,7 +19858,7 @@ define hidden void @"_ZN6brotli3enc11stride_eval23StrideEval$LT$Alloc$GT$3new17h %108 = getelementptr i8, ptr %.sroa.034.0.ptr, i64 8 %.sroa.034.0.ptr.val50 = load i64, ptr %108, align 8, !noundef !4 invoke void @_ZN6brotli3enc11stride_eval15local_init_cdfs17hafb1797c7351c233E(ptr noalias noundef nonnull align 2 %.sroa.034.0.ptr.val, i64 noundef %.sroa.034.0.ptr.val50) - to label %103 unwind label %105 + to label %104 unwind label %105 109: ; preds = %113, %105, %89, %81, %73, %65, %57, %49, %41 %110 = landingpad { ptr, i32 } @@ -19872,13 +19873,13 @@ define hidden void @"_ZN6brotli3enc11stride_eval23StrideEval$LT$Alloc$GT$3new17h ret void 112: ; preds = %105, %113 - %.pn4853 = phi { ptr, i32 } [ %.pn48.ph, %113 ], [ %106, %105 ] + %.pn4853 = phi { ptr, i32 } [ %.pn48.ph, %114 ], [ %106, %106 ] resume { ptr, i32 } %.pn4853 113: ; preds = %41, %34 - %.pn48.ph = phi { ptr, i32 } [ %35, %34 ], [ %.pn.pn.pn.pn.pn.pn, %41 ] + %.pn48.ph = phi { ptr, i32 } [ %35, %35 ], [ %.pn.pn.pn.pn.pn.pn, %42 ] invoke void @"_ZN4core3ptr65drop_in_place$LT$alloc_stdlib..heap_alloc..WrapBox$LT$f32$GT$$GT$17hd9638846f92ba97eE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %14) #21 - to label %112 unwind label %109 + to label %113 unwind label %109 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/wasmedge/optimized/wasifunc.ll b/bench/wasmedge/optimized/wasifunc.ll index f8c5322dd33..d87412129a8 100644 --- a/bench/wasmedge/optimized/wasifunc.ll +++ b/bench/wasmedge/optimized/wasifunc.ll @@ -4977,34 +4977,33 @@ _ZNSt10shared_ptrIN8WasmEdge4Host4WASI6VINodeEED2Ev.exit: ; preds = %_ZNK8WasmEd ; Function Attrs: mustprogress nounwind uwtable define void @_ZN8WasmEdge4Host22WasiFdFilestatSetTimes4bodyERKNS_7Runtime12CallingFrameEimmj(ptr dead_on_unwind noalias writable writeonly sret(%"class.cxx20::expected") align 4 captures(none) initializes((0, 1), (4, 8)) %0, ptr noundef nonnull readonly align 8 captures(none) dereferenceable(168) %1, ptr noundef nonnull readnone align 8 captures(none) dereferenceable(16) %2, i32 noundef %3, i64 noundef %4, i64 noundef %5, i32 noundef %6) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 { - %8 = and i32 %6, 65520 - %9 = icmp eq i32 %8, 0 - br i1 %9, label %10, label %_ZN8WasmEdge4Host12_GLOBAL__N_14castI17__wasi_fstflags_tEEN5cxx208expectedIT_14__wasi_errno_tEEm.exit.thread - -10: ; preds = %7 - %11 = trunc i32 %6 to i16 - %12 = and i16 %11, 3 - %or.cond.not.i = icmp eq i16 %12, 3 - br i1 %or.cond.not.i, label %_ZN8WasmEdge4Host12_GLOBAL__N_14castI17__wasi_fstflags_tEEN5cxx208expectedIT_14__wasi_errno_tEEm.exit.thread, label %_ZN8WasmEdge4Host12_GLOBAL__N_14castI17__wasi_fstflags_tEEN5cxx208expectedIT_14__wasi_errno_tEEm.exit - -_ZN8WasmEdge4Host12_GLOBAL__N_14castI17__wasi_fstflags_tEEN5cxx208expectedIT_14__wasi_errno_tEEm.exit: ; preds = %10 - %13 = and i16 %11, 4 + %8 = zext i32 %6 to i64 + %9 = and i64 %8, 65520 + %10 = icmp ne i64 %9, 0 + %11 = and i64 %8, 3 + %or.cond.not.i = icmp eq i64 %11, 3 + %or.cond.i = or i1 %10, %or.cond.not.i + br i1 %or.cond.i, label %_ZN8WasmEdge4Host12_GLOBAL__N_14castI17__wasi_fstflags_tEEN5cxx208expectedIT_14__wasi_errno_tEEm.exit.thread, label %_ZN8WasmEdge4Host12_GLOBAL__N_14castI17__wasi_fstflags_tEEN5cxx208expectedIT_14__wasi_errno_tEEm.exit + +_ZN8WasmEdge4Host12_GLOBAL__N_14castI17__wasi_fstflags_tEEN5cxx208expectedIT_14__wasi_errno_tEEm.exit:; preds = %7 + %12 = trunc i32 %6 to i16 + %13 = and i16 %12, 4 %.not3.i = icmp ne i16 %13, 0 - %.not4.i = icmp ugt i16 %11, 7 + %.not4.i = icmp ugt i16 %12, 7 %or.cond12.i.not = and i1 %.not4.i, %.not3.i br i1 %or.cond12.i.not, label %_ZN8WasmEdge4Host12_GLOBAL__N_14castI17__wasi_fstflags_tEEN5cxx208expectedIT_14__wasi_errno_tEEm.exit.thread, label %14 14: ; preds = %_ZN8WasmEdge4Host12_GLOBAL__N_14castI17__wasi_fstflags_tEEN5cxx208expectedIT_14__wasi_errno_tEEm.exit %15 = getelementptr inbounds nuw i8, ptr %1, i64 160 %16 = load ptr, ptr %15, align 8 - %17 = tail call i32 @_ZNK8WasmEdge4Host4WASI7Environ18fdFilestatSetTimesEimm17__wasi_fstflags_t(ptr noundef nonnull align 8 dereferenceable(344) %16, i32 noundef %3, i64 noundef %4, i64 noundef %5, i16 noundef zeroext %11) #19 + %17 = tail call i32 @_ZNK8WasmEdge4Host4WASI7Environ18fdFilestatSetTimesEimm17__wasi_fstflags_t(ptr noundef nonnull align 8 dereferenceable(344) %16, i32 noundef %3, i64 noundef %4, i64 noundef %5, i16 noundef zeroext %12) #19 %18 = trunc i32 %17 to i1 %.sroa.28.0.extract.shift = lshr i32 %17, 16 %spec.select = select i1 %18, i32 0, i32 %.sroa.28.0.extract.shift br label %_ZN8WasmEdge4Host12_GLOBAL__N_14castI17__wasi_fstflags_tEEN5cxx208expectedIT_14__wasi_errno_tEEm.exit.thread -_ZN8WasmEdge4Host12_GLOBAL__N_14castI17__wasi_fstflags_tEEN5cxx208expectedIT_14__wasi_errno_tEEm.exit.thread: ; preds = %14, %_ZN8WasmEdge4Host12_GLOBAL__N_14castI17__wasi_fstflags_tEEN5cxx208expectedIT_14__wasi_errno_tEEm.exit, %7, %10 - %.sink = phi i32 [ 28, %_ZN8WasmEdge4Host12_GLOBAL__N_14castI17__wasi_fstflags_tEEN5cxx208expectedIT_14__wasi_errno_tEEm.exit ], [ %spec.select, %14 ], [ 28, %10 ], [ 28, %7 ] +_ZN8WasmEdge4Host12_GLOBAL__N_14castI17__wasi_fstflags_tEEN5cxx208expectedIT_14__wasi_errno_tEEm.exit.thread: ; preds = %14, %_ZN8WasmEdge4Host12_GLOBAL__N_14castI17__wasi_fstflags_tEEN5cxx208expectedIT_14__wasi_errno_tEEm.exit, %7 + %.sink = phi i32 [ 28, %_ZN8WasmEdge4Host12_GLOBAL__N_14castI17__wasi_fstflags_tEEN5cxx208expectedIT_14__wasi_errno_tEEm.exit ], [ %spec.select, %14 ], [ 28, %7 ] store i8 1, ptr %0, align 4 %19 = getelementptr inbounds nuw i8, ptr %0, i64 4 store i32 %.sink, ptr %19, align 4 @@ -8355,22 +8354,23 @@ _ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit: ; preds = %_ZNSt11 br i1 %29, label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread, label %30 30: ; preds = %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit - %31 = icmp ult i32 %4, 2 - %32 = and i32 %9, 65520 - %33 = icmp eq i32 %32, 0 - %or.cond = and i1 %31, %33 - br i1 %or.cond, label %34, label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread + %31 = icmp ugt i32 %4, 1 + br i1 %31, label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread, label %34 34: ; preds = %30 - %35 = trunc i32 %9 to i16 - %36 = and i16 %35, 3 - %or.cond.not.i = icmp eq i16 %36, 3 - br i1 %or.cond.not.i, label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread, label %_ZN8WasmEdge4Host12_GLOBAL__N_14castI17__wasi_fstflags_tEEN5cxx208expectedIT_14__wasi_errno_tEEm.exit - -_ZN8WasmEdge4Host12_GLOBAL__N_14castI17__wasi_fstflags_tEEN5cxx208expectedIT_14__wasi_errno_tEEm.exit: ; preds = %34 - %37 = and i16 %35, 4 - %.not3.i = icmp ne i16 %37, 0 - %.not4.i = icmp ugt i16 %35, 7 + %33 = zext i32 %9 to i64 + %36 = and i64 %33, 65520 + %or.cond.not.i = icmp ne i64 %36, 0 + %36 = and i64 %33, 3 + %or.cond.not.i = icmp eq i64 %36, 3 + %or.cond.i = or i1 %35, %or.cond.not.i + br i1 %or.cond.i, label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread, label %_ZN8WasmEdge4Host12_GLOBAL__N_14castI17__wasi_fstflags_tEEN5cxx208expectedIT_14__wasi_errno_tEEm.exit + +_ZN8WasmEdge4Host12_GLOBAL__N_14castI17__wasi_fstflags_tEEN5cxx208expectedIT_14__wasi_errno_tEEm.exit:; preds = %32 + %37 = trunc i32 %9 to i16 + %38 = and i16 %37, 4 + %.not3.i = icmp ne i16 %38, 0 + %.not4.i = icmp ugt i16 %37, 7 %or.cond12.i.not = and i1 %.not4.i, %.not3.i br i1 %or.cond12.i.not, label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread, label %38 @@ -8394,14 +8394,14 @@ _ZN8WasmEdge4Host12_GLOBAL__N_14castI17__wasi_fstflags_tEEN5cxx208expectedIT_14_ %.sroa.3.0.i = select i1 %.not.i, ptr %49, ptr null %50 = getelementptr inbounds nuw i8, ptr %1, i64 160 %51 = load ptr, ptr %50, align 8 - %52 = tail call i32 @_ZN8WasmEdge4Host4WASI7Environ20pathFilestatSetTimesEiSt17basic_string_viewIcSt11char_traitsIcEE20__wasi_lookupflags_tmm17__wasi_fstflags_t(ptr noundef nonnull align 8 dereferenceable(344) %51, i32 noundef %3, i64 %40, ptr %.sroa.3.0.i, i32 noundef %4, i64 noundef %7, i64 noundef %8, i16 noundef zeroext %35) + %52 = tail call i32 @_ZN8WasmEdge4Host4WASI7Environ20pathFilestatSetTimesEiSt17basic_string_viewIcSt11char_traitsIcEE20__wasi_lookupflags_tmm17__wasi_fstflags_t(ptr noundef nonnull align 8 dereferenceable(344) %51, i32 noundef %3, i64 %40, ptr %.sroa.3.0.i, i32 noundef %4, i64 noundef %7, i64 noundef %8, i16 noundef zeroext %37) %53 = trunc i32 %52 to i1 %.sroa.217.0.extract.shift = lshr i32 %52, 16 %spec.select = select i1 %53, i32 0, i32 %.sroa.217.0.extract.shift br label %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread _ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread: ; preds = %46, %38, %_ZN8WasmEdge4Host12_GLOBAL__N_14castI17__wasi_fstflags_tEEN5cxx208expectedIT_14__wasi_errno_tEEm.exit, %34, %30, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread31, %10 - %.sink = phi i32 [ 21, %38 ], [ %spec.select, %46 ], [ 28, %_ZN8WasmEdge4Host12_GLOBAL__N_14castI17__wasi_fstflags_tEEN5cxx208expectedIT_14__wasi_errno_tEEm.exit ], [ 28, %30 ], [ 21, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit ], [ 21, %10 ], [ 21, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread31 ], [ 28, %34 ] + %.sink = phi i32 [ 21, %39 ], [ %spec.select, %47 ], [ 28, %_ZN8WasmEdge4Host12_GLOBAL__N_14castI17__wasi_fstflags_tEEN5cxx208expectedIT_14__wasi_errno_tEEm.exit ], [ 28, %30 ], [ 21, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit ], [ 21, %10 ], [ 21, %_ZNK8WasmEdge7Runtime12CallingFrame16getMemoryByIndexEj.exit.thread31 ], [ 28, %32 ] store i8 1, ptr %0, align 4 %54 = getelementptr inbounds nuw i8, ptr %0, i64 4 store i32 %.sink, ptr %54, align 4 diff --git a/bench/wasmi-rs/optimized/0ub1jde20vya53xoib9dbvqz5.ll b/bench/wasmi-rs/optimized/0ub1jde20vya53xoib9dbvqz5.ll index de1b370937f..efcac24a0ef 100644 --- a/bench/wasmi-rs/optimized/0ub1jde20vya53xoib9dbvqz5.ll +++ b/bench/wasmi-rs/optimized/0ub1jde20vya53xoib9dbvqz5.ll @@ -26198,16 +26198,17 @@ define void @"_ZN135_$LT$wasmi..table..ty..TableType$u20$as$u20$wasmi..module..u %11 = alloca [8 x i8], align 8 %12 = getelementptr inbounds nuw i8, ptr %1, i64 26 %.sroa.019.0.copyload = load i24, ptr %12, align 2 - %.sroa.09.0.extract.trunc.i = trunc i24 %.sroa.019.0.copyload to i8 %.sroa.09.1.extract.shift.i = lshr i24 %.sroa.019.0.copyload, 8 - %.sroa.09.1.extract.trunc.i = trunc i24 %.sroa.09.1.extract.shift.i to i8 %.sroa.09.2.extract.shift.i = lshr i24 %.sroa.019.0.copyload, 16 %.sroa.09.2.extract.trunc.i = trunc nuw i24 %.sroa.09.2.extract.shift.i to i8 - %13 = or i8 %.sroa.09.1.extract.trunc.i, %.sroa.09.0.extract.trunc.i - %or.cond.i = icmp eq i8 %13, 0 - br i1 %or.cond.i, label %19, label %14, !prof !567 + %13 = or i24 %.sroa.09.1.extract.shift.i, %.sroa.019.0.copyload + %14 = and i24 %13, 255 + %or.cond.i = icmp eq i24 %14, 0 + br i1 %or.cond.i, label %20, label %15, !prof !567 14: ; preds = %19, %2 + %.sroa.09.1.extract.trunc.i = trunc i24 %.sroa.09.1.extract.shift.i to i8 + %.sroa.09.0.extract.trunc.i = trunc i24 %.sroa.019.0.copyload to i8 call void @llvm.lifetime.start.p0(ptr nonnull %5) store i8 %.sroa.09.0.extract.trunc.i, ptr %5, align 1 %.sroa.4.0..sroa_idx5.i = getelementptr inbounds nuw i8, ptr %5, i64 1 @@ -26232,7 +26233,7 @@ define void @"_ZN135_$LT$wasmi..table..ty..TableType$u20$as$u20$wasmi..module..u unreachable 19: ; preds = %2 - switch i8 %.sroa.09.2.extract.trunc.i, label %14 [ + switch i8 %.sroa.09.2.extract.trunc.i, label %15 [ i8 -118, label %"_ZN125_$LT$wasmi..module..utils..WasmiValueType$u20$as$u20$core..convert..From$LT$wasmparser..readers..core..types..RefType$GT$$GT$4from17h3ac051b742382b47E.exit" i8 -122, label %20 ], !prof !571 @@ -26241,7 +26242,7 @@ define void @"_ZN135_$LT$wasmi..table..ty..TableType$u20$as$u20$wasmi..module..u br label %"_ZN125_$LT$wasmi..module..utils..WasmiValueType$u20$as$u20$core..convert..From$LT$wasmparser..readers..core..types..RefType$GT$$GT$4from17h3ac051b742382b47E.exit" "_ZN125_$LT$wasmi..module..utils..WasmiValueType$u20$as$u20$core..convert..From$LT$wasmparser..readers..core..types..RefType$GT$$GT$4from17h3ac051b742382b47E.exit": ; preds = %19, %20 - %.sroa.010.0.i = phi i8 [ 6, %20 ], [ 5, %19 ] + %.sroa.010.0.i = phi i8 [ 6, %21 ], [ 5, %20 ] call void @llvm.lifetime.start.p0(ptr nonnull %11) %21 = getelementptr inbounds nuw i8, ptr %1, i64 16 %22 = load i64, ptr %21, align 8, !noundef !3 @@ -26338,16 +26339,18 @@ define { i1, i8 } @"_ZN139_$LT$wasmi_core..global..GlobalType$u20$as$u20$wasmi.. 6: ; preds = %1 %.sroa.4.0.extract.shift.i6 = lshr i48 %0, 24 - %.sroa.09.0.extract.trunc.i.i = trunc i48 %.sroa.4.0.extract.shift.i6 to i8 - %.sroa.09.1.extract.shift.i5.i7 = lshr i48 %0, 32 - %.sroa.09.1.extract.trunc.i.i = trunc i48 %.sroa.09.1.extract.shift.i5.i7 to i8 - %sum.shift8 = lshr i48 %0, 40 - %.sroa.09.2.extract.trunc.i.i = trunc nuw i48 %sum.shift8 to i8 - %7 = or i8 %.sroa.09.1.extract.trunc.i.i, %.sroa.09.0.extract.trunc.i.i - %or.cond.i.i = icmp eq i8 %7, 0 + %.sroa.09.0.extract.trunc.i.i = trunc nuw i48 %.sroa.4.0.extract.shift.i6 to i24 + %.sroa.09.1.extract.shift.i5.i7 = lshr i24 %.sroa.4.0.extract.trunc.i, 8 + %.sroa.09.2.extract.shift.i5.i6 = lshr i48 %0, 40 + %.sroa.09.2.extract.trunc.i.i = trunc nuw i48 %.sroa.09.2.extract.shift.i5.i6 to i8 + %7 = or i24 %.sroa.09.1.extract.shift.i.i, %.sroa.09.0.extract.trunc.i.i + %7 = and i24 %7, 255 + %or.cond.i.i = icmp eq i24 %7, 0 br i1 %or.cond.i.i, label %13, label %8, !prof !567 8: ; preds = %13, %6 + %.sroa.09.1.extract.trunc.i.i = trunc i24 %.sroa.09.1.extract.shift.i.i to i8 + %.sroa.09.0.extract.trunc.i.i = trunc i48 %sum.shift7 to i8 call void @llvm.lifetime.start.p0(ptr nonnull %4) store i8 %.sroa.09.0.extract.trunc.i.i, ptr %4, align 1 %.sroa.4.0..sroa_idx5.i.i = getelementptr inbounds nuw i8, ptr %4, i64 1 @@ -26381,7 +26384,7 @@ define { i1, i8 } @"_ZN139_$LT$wasmi_core..global..GlobalType$u20$as$u20$wasmi.. br label %"_ZN125_$LT$wasmi..module..utils..WasmiValueType$u20$as$u20$core..convert..From$LT$wasmparser..readers..core..types..ValType$GT$$GT$4from17ha98e4fbd1b302170E.exit" "_ZN125_$LT$wasmi..module..utils..WasmiValueType$u20$as$u20$core..convert..From$LT$wasmparser..readers..core..types..ValType$GT$$GT$4from17ha98e4fbd1b302170E.exit": ; preds = %1, %13, %14 - %.sroa.02.0.i = phi i8 [ 6, %14 ], [ 5, %13 ], [ %trunc.i, %1 ] + %.sroa.02.0.i = phi i8 [ 6, %15 ], [ 5, %14 ], [ %trunc.i, %1 ] %15 = trunc i48 %0 to i1 %16 = tail call { i1, i8 } @_ZN10wasmi_core6global10GlobalType3new17hb999e1bb38f145ccE(i8 noundef %.sroa.02.0.i, i1 noundef zeroext %15) ret { i1, i8 } %16 @@ -26399,16 +26402,18 @@ define hidden noundef range(i8 0, 7) i8 @"_ZN136_$LT$wasmi..func..ty..FuncType$u 6: ; preds = %1 %.sroa.4.0.extract.shift.i = lshr i32 %.sroa.0.0.copyload, 8 + %.sroa.4.0.extract.trunc.i = trunc nuw i32 %.sroa.4.0.extract.shift.i to i24 + %.sroa.09.1.extract.shift.i.i = lshr i24 %.sroa.4.0.extract.trunc.i, 8 + %.sroa.09.2.extract.shift.i5.i = lshr i32 %.sroa.0.0.copyload, 24 + %.sroa.09.2.extract.trunc.i.i = trunc nuw i32 %.sroa.09.2.extract.shift.i5.i to i8 + %7 = or i24 %.sroa.09.1.extract.shift.i.i, %.sroa.4.0.extract.trunc.i + %8 = and i24 %7, 255 + %or.cond.i.i = icmp eq i24 %8, 0 + br i1 %or.cond.i.i, label %14, label %9, !prof !567 + +9: ; preds = %14, %6 + %.sroa.09.1.extract.trunc.i.i = trunc i24 %.sroa.09.1.extract.shift.i.i to i8 %.sroa.09.0.extract.trunc.i.i = trunc i32 %.sroa.4.0.extract.shift.i to i8 - %.sroa.09.1.extract.shift.i5.i = lshr i32 %.sroa.0.0.copyload, 16 - %.sroa.09.1.extract.trunc.i.i = trunc i32 %.sroa.09.1.extract.shift.i5.i to i8 - %sum.shift.i = lshr i32 %.sroa.0.0.copyload, 24 - %.sroa.09.2.extract.trunc.i.i = trunc nuw i32 %sum.shift.i to i8 - %7 = or i8 %.sroa.09.1.extract.trunc.i.i, %.sroa.09.0.extract.trunc.i.i - %or.cond.i.i = icmp eq i8 %7, 0 - br i1 %or.cond.i.i, label %13, label %8, !prof !567 - -8: ; preds = %13, %6 call void @llvm.lifetime.start.p0(ptr nonnull %4) store i8 %.sroa.09.0.extract.trunc.i.i, ptr %4, align 1 %.sroa.4.0..sroa_idx5.i.i = getelementptr inbounds nuw i8, ptr %4, i64 1 @@ -26442,7 +26447,7 @@ define hidden noundef range(i8 0, 7) i8 @"_ZN136_$LT$wasmi..func..ty..FuncType$u br label %"_ZN125_$LT$wasmi..module..utils..WasmiValueType$u20$as$u20$core..convert..From$LT$wasmparser..readers..core..types..ValType$GT$$GT$4from17ha98e4fbd1b302170E.exit" "_ZN125_$LT$wasmi..module..utils..WasmiValueType$u20$as$u20$core..convert..From$LT$wasmparser..readers..core..types..ValType$GT$$GT$4from17ha98e4fbd1b302170E.exit": ; preds = %1, %13, %14 - %.sroa.02.0.i = phi i8 [ 6, %14 ], [ 5, %13 ], [ %trunc.i, %1 ] + %.sroa.02.0.i = phi i8 [ 6, %15 ], [ 5, %14 ], [ %trunc.i, %1 ] ret i8 %.sroa.02.0.i } @@ -26506,16 +26511,17 @@ define noundef range(i8 5, 7) i8 @"_ZN125_$LT$wasmi..module..utils..WasmiValueTy %2 = alloca [16 x i8], align 8 %3 = alloca [48 x i8], align 8 %4 = alloca [3 x i8], align 1 - %.sroa.09.0.extract.trunc = trunc i24 %0 to i8 %.sroa.09.1.extract.shift = lshr i24 %0, 8 - %.sroa.09.1.extract.trunc = trunc i24 %.sroa.09.1.extract.shift to i8 %.sroa.09.2.extract.shift = lshr i24 %0, 16 %.sroa.09.2.extract.trunc = trunc nuw i24 %.sroa.09.2.extract.shift to i8 - %5 = or i8 %.sroa.09.1.extract.trunc, %.sroa.09.0.extract.trunc - %or.cond = icmp eq i8 %5, 0 - br i1 %or.cond, label %11, label %6, !prof !567 + %5 = or i24 %.sroa.09.1.extract.shift, %0 + %6 = and i24 %5, 255 + %or.cond = icmp eq i24 %6, 0 + br i1 %or.cond, label %12, label %7, !prof !567 6: ; preds = %11, %1 + %.sroa.09.1.extract.trunc = trunc i24 %.sroa.09.1.extract.shift to i8 + %.sroa.09.0.extract.trunc = trunc i24 %0 to i8 call void @llvm.lifetime.start.p0(ptr nonnull %4) store i8 %.sroa.09.0.extract.trunc, ptr %4, align 1 %.sroa.4.0..sroa_idx5 = getelementptr inbounds nuw i8, ptr %4, i64 1 @@ -26540,7 +26546,7 @@ define noundef range(i8 5, 7) i8 @"_ZN125_$LT$wasmi..module..utils..WasmiValueTy unreachable 11: ; preds = %1 - switch i8 %.sroa.09.2.extract.trunc, label %6 [ + switch i8 %.sroa.09.2.extract.trunc, label %7 [ i8 -118, label %13 i8 -122, label %12 ], !prof !571 @@ -26564,16 +26570,18 @@ define noundef range(i8 0, 7) i8 @"_ZN125_$LT$wasmi..module..utils..WasmiValueTy 6: ; preds = %1 %.sroa.4.0.extract.shift = lshr i32 %0, 8 + %.sroa.4.0.extract.trunc = trunc nuw i32 %.sroa.4.0.extract.shift to i24 + %.sroa.09.1.extract.shift.i = lshr i24 %.sroa.4.0.extract.trunc, 8 + %.sroa.09.2.extract.shift.i5 = lshr i32 %0, 24 + %.sroa.09.2.extract.trunc.i = trunc nuw i32 %.sroa.09.2.extract.shift.i5 to i8 + %7 = or i24 %.sroa.09.1.extract.shift.i, %.sroa.4.0.extract.trunc + %8 = and i24 %7, 255 + %or.cond.i = icmp eq i24 %8, 0 + br i1 %or.cond.i, label %14, label %9, !prof !567 + +9: ; preds = %14, %6 + %.sroa.09.1.extract.trunc.i = trunc i24 %.sroa.09.1.extract.shift.i to i8 %.sroa.09.0.extract.trunc.i = trunc i32 %.sroa.4.0.extract.shift to i8 - %.sroa.09.1.extract.shift.i5 = lshr i32 %0, 16 - %.sroa.09.1.extract.trunc.i = trunc i32 %.sroa.09.1.extract.shift.i5 to i8 - %sum.shift = lshr i32 %0, 24 - %.sroa.09.2.extract.trunc.i = trunc nuw i32 %sum.shift to i8 - %7 = or i8 %.sroa.09.1.extract.trunc.i, %.sroa.09.0.extract.trunc.i - %or.cond.i = icmp eq i8 %7, 0 - br i1 %or.cond.i, label %13, label %8, !prof !567 - -8: ; preds = %13, %6 call void @llvm.lifetime.start.p0(ptr nonnull %4) store i8 %.sroa.09.0.extract.trunc.i, ptr %4, align 1 %.sroa.4.0..sroa_idx5.i = getelementptr inbounds nuw i8, ptr %4, i64 1 @@ -26607,7 +26615,7 @@ define noundef range(i8 0, 7) i8 @"_ZN125_$LT$wasmi..module..utils..WasmiValueTy br label %"_ZN125_$LT$wasmi..module..utils..WasmiValueType$u20$as$u20$core..convert..From$LT$wasmparser..readers..core..types..RefType$GT$$GT$4from17h3ac051b742382b47E.exit" "_ZN125_$LT$wasmi..module..utils..WasmiValueType$u20$as$u20$core..convert..From$LT$wasmparser..readers..core..types..RefType$GT$$GT$4from17h3ac051b742382b47E.exit": ; preds = %1, %14, %13 - %.sroa.02.0 = phi i8 [ 6, %14 ], [ 5, %13 ], [ %trunc, %1 ] + %.sroa.02.0 = phi i8 [ 6, %15 ], [ 5, %14 ], [ %trunc, %1 ] ret i8 %.sroa.02.0 } diff --git a/bench/wolfssl/optimized/tls13.ll b/bench/wolfssl/optimized/tls13.ll index dc3a02921fe..1da3db5123a 100644 --- a/bench/wolfssl/optimized/tls13.ll +++ b/bench/wolfssl/optimized/tls13.ll @@ -2618,10 +2618,9 @@ define i32 @DoTls13ClientHello(ptr noundef initializes((1050, 1051)) %0, ptr nou br i1 %.not, label %20, label %27 20: ; preds = %16 - %.not131 = icmp ne i8 %.sroa.0.sroa.0.0.extract.trunc, 3 - %21 = icmp ugt i16 %12, 1023 - %or.cond257 = or i1 %21, %.not131 - br i1 %or.cond257, label %22, label %24 + %21 = and i16 %12, -769 + %21 = icmp eq i16 %21, 3 + br i1 %21, label %24, label %22 22: ; preds = %20 %23 = getelementptr inbounds nuw i8, ptr %0, i64 711 diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c8d0fce0bf7..ecaefe6bf5d 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/171195 export COMPTIME_MODE=0 export STAT_MODE=0 export STAT_NAME=""