diff --git a/bench/icu/optimized/collationcompare.ll b/bench/icu/optimized/collationcompare.ll index b8a58ac3a05..6de34a97d1b 100644 --- a/bench/icu/optimized/collationcompare.ll +++ b/bench/icu/optimized/collationcompare.ll @@ -68,8 +68,8 @@ define noundef i32 @_ZN6icu_7716CollationCompare21compareUpToQuaternaryERNS_17Co br i1 %42, label %.lr.ph, label %._crit_edge, !llvm.loop !29 ._crit_edge: ; preds = %.lr.ph, %.preheader369 - %.lcssa417 = phi i64 [ %32, %.preheader369 ], [ %40, %.lr.ph ] - %.lcssa416 = phi i64 [ %33, %.preheader369 ], [ %41, %.lr.ph ] + %.lcssa417 = phi i64 [ %32, %.preheader372 ], [ %40, %.lr.ph ] + %.lcssa416 = phi i64 [ %33, %.preheader372 ], [ %41, %.lr.ph ] %43 = trunc nuw i64 %.lcssa416 to i32 %44 = icmp ugt i32 %.0199, %43 %45 = icmp ugt i64 %.lcssa417, 144115192370823167 @@ -81,8 +81,8 @@ define noundef i32 @_ZN6icu_7716CollationCompare21compareUpToQuaternaryERNS_17Co br i1 %47, label %20, label %.preheader372, !llvm.loop !32 .preheader372: ; preds = %.loopexit370, %._crit_edge - %.2205577 = phi i8 [ 1, %._crit_edge ], [ %.0203, %.loopexit370 ] - %.0210576 = phi i32 [ %43, %._crit_edge ], [ %23, %.loopexit370 ] + %.2205577 = phi i8 [ 1, %._crit_edge ], [ %.0203, %.loopexit373 ] + %.0210576 = phi i32 [ %43, %._crit_edge ], [ %23, %.loopexit373 ] br label %48 48: ; preds = %.preheader372, %75 @@ -95,7 +95,7 @@ define noundef i32 @_ZN6icu_7716CollationCompare21compareUpToQuaternaryERNS_17Co br i1 %or.cond5, label %.preheader371, label %75 .preheader371: ; preds = %48, %._crit_edge432 - %.0249 = phi i64 [ %.lcssa425, %._crit_edge432 ], [ %49, %48 ] + %.0249 = phi i64 [ %.lcssa425, %._crit_edge435 ], [ %49, %48 ] %54 = and i64 %.0249, -4294967296 %55 = load i32, ptr %17, align 8, !tbaa !18 %56 = load ptr, ptr %18, align 8, !tbaa !26 @@ -121,8 +121,8 @@ define noundef i32 @_ZN6icu_7716CollationCompare21compareUpToQuaternaryERNS_17Co br i1 %70, label %.lr.ph431, label %._crit_edge432, !llvm.loop !33 ._crit_edge432: ; preds = %.lr.ph431, %.preheader371 - %.lcssa425 = phi i64 [ %60, %.preheader371 ], [ %68, %.lr.ph431 ] - %.lcssa424 = phi i64 [ %61, %.preheader371 ], [ %69, %.lr.ph431 ] + %.lcssa425 = phi i64 [ %60, %.preheader374 ], [ %68, %.lr.ph434 ] + %.lcssa424 = phi i64 [ %61, %.preheader374 ], [ %69, %.lr.ph434 ] %71 = trunc nuw i64 %.lcssa424 to i32 %72 = icmp ugt i32 %.0199, %71 %73 = icmp ugt i64 %.lcssa425, 144115192370823167 @@ -134,8 +134,8 @@ define noundef i32 @_ZN6icu_7716CollationCompare21compareUpToQuaternaryERNS_17Co br i1 %76, label %48, label %.thread, !llvm.loop !35 .thread: ; preds = %75, %._crit_edge432 - %.4207302 = phi i8 [ 1, %._crit_edge432 ], [ %.2205577, %75 ] - %.0235301 = phi i32 [ %71, %._crit_edge432 ], [ %51, %75 ] + %.4207302 = phi i8 [ 1, %._crit_edge435 ], [ %.2205577, %75 ] + %.0235301 = phi i32 [ %71, %._crit_edge435 ], [ %51, %75 ] %.not277 = icmp eq i32 %.0210576, %.0235301 br i1 %.not277, label %110, label %77 @@ -221,17 +221,18 @@ _ZNK6icu_7717CollationSettings7reorderEj.exit: ; preds = %87, %92 .preheader360: ; preds = %118, %137 %.0262 = phi i64 [ %indvars.iv.next519, %137 ], [ 0, %118 ] %.0260 = phi i64 [ %indvars.iv.next522, %137 ], [ 0, %118 ] - %.5 = phi i32 [ %.6, %137 ], [ undef, %118 ] + %.5 = phi i32 [ %select.ucmp349, %137 ], [ undef, %118 ] %sext = shl i64 %.0262, 32 %123 = ashr exact i64 %sext, 32 br label %124 124: ; preds = %124, %.preheader360 - %indvars.iv518 = phi i64 [ %indvars.iv.next519, %124 ], [ %123, %.preheader360 ] + %indvars.iv518 = phi i64 [ %indvars.iv.next519, %124 ], [ %123, %.preheader363 ] %indvars.iv.next519 = add nsw i64 %indvars.iv518, 1 %125 = getelementptr inbounds i64, ptr %121, i64 %indvars.iv518 %126 = load i64, ptr %125, align 8, !tbaa !27 - %127 = trunc i64 %126 to i32 + %.fr = freeze i64 %126 + %127 = trunc i64 %.fr to i32 %128 = lshr i32 %127, 16 %129 = icmp eq i32 %128, 0 br i1 %129, label %124, label %.preheader359, !llvm.loop !38 @@ -242,30 +243,30 @@ _ZNK6icu_7717CollationSettings7reorderEj.exit: ; preds = %87, %92 br label %131 131: ; preds = %.preheader359, %131 - %indvars.iv521 = phi i64 [ %130, %.preheader359 ], [ %indvars.iv.next522, %131 ] + %indvars.iv521 = phi i64 [ %130, %.preheader362 ], [ %indvars.iv.next522, %131 ] %indvars.iv.next522 = add nsw i64 %indvars.iv521, 1 %132 = getelementptr inbounds i64, ptr %122, i64 %indvars.iv521 %133 = load i64, ptr %132, align 8, !tbaa !27 - %134 = trunc i64 %133 to i32 + %.fr350 = freeze i64 %133 + %134 = trunc i64 %.fr350 to i32 %135 = lshr i32 %134, 16 %136 = icmp eq i32 %135, 0 br i1 %136, label %131, label %137, !llvm.loop !39 137: ; preds = %131 %.not281 = icmp eq i32 %128, %135 - %138 = icmp samesign ult i32 %128, %135 - %139 = select i1 %138, i32 -1, i32 1 - %140 = icmp eq i32 %128, 256 - %.289 = select i1 %140, i32 16, i32 0 + %138 = icmp eq i32 %128, 256 + %139 = select i1 %138, i32 16, i32 0 %.1251 = select i1 %.not281, i32 %.289, i32 1 - %.6 = select i1 %.not281, i32 %.5, i32 %139 + %139 = tail call i32 @llvm.ucmp.i32.i32(i32 %128, i32 %135) + %select.ucmp349 = select i1 %.not281, i32 %.5, i32 %139 switch i32 %.1251, label %.loopexit [ i32 0, label %.preheader360 i32 16, label %.thread310 ], !llvm.loop !40 141: ; preds = %141, %.outer - %indvars.iv = phi i64 [ %indvars.iv.next, %141 ], [ %183, %.outer ] + %indvars.iv = phi i64 [ %indvars.iv.next, %140 ], [ %183, %.outer ] %142 = getelementptr inbounds i64, ptr %121, i64 %indvars.iv %143 = load i64, ptr %142, align 8, !tbaa !27 %144 = add i64 %143, -144115192370823168 @@ -274,7 +275,7 @@ _ZNK6icu_7717CollationSettings7reorderEj.exit: ; preds = %87, %92 br i1 %145, label %141, label %.preheader365, !llvm.loop !41 .preheader365: ; preds = %141, %.preheader365 - %indvars.iv509 = phi i64 [ %indvars.iv.next510, %.preheader365 ], [ %184, %141 ] + %indvars.iv509 = phi i64 [ %indvars.iv.next510, %.preheader368 ], [ %184, %140 ] %146 = getelementptr inbounds i64, ptr %122, i64 %indvars.iv509 %147 = load i64, ptr %146, align 8, !tbaa !27 %148 = lshr i64 %147, 32 @@ -289,10 +290,10 @@ _ZNK6icu_7717CollationSettings7reorderEj.exit: ; preds = %87, %92 %153 = trunc nsw i64 %indvars.iv509 to i32 br label %154 -154: ; preds = %.preheader363, %._crit_edge443 - %.0241 = phi i32 [ %.1242.lcssa, %._crit_edge443 ], [ %152, %.preheader363 ] - %.0239 = phi i32 [ %.1240.lcssa, %._crit_edge443 ], [ %153, %.preheader363 ] - %.8 = phi i32 [ %.9, %._crit_edge443 ], [ %.7.ph, %.preheader363 ] +154: ; preds = %.preheader363, %._crit_edge446 + %.0241 = phi i32 [ %.1242.lcssa, %._crit_edge446 ], [ %152, %.preheader366 ] + %.0239 = phi i32 [ %.1240.lcssa, %._crit_edge446 ], [ %153, %.preheader366 ] + %.8 = phi i32 [ %select.ucmp, %._crit_edge446 ], [ %.7.ph, %.preheader366 ] %155 = icmp sgt i32 %.0241, %.0247.ph br i1 %155, label %.lr.ph437.preheader, label %.preheader362 @@ -302,62 +303,63 @@ _ZNK6icu_7717CollationSettings7reorderEj.exit: ; preds = %87, %92 .preheader362.loopexit: ; preds = %.lr.ph437 %157 = trunc nsw i64 %indvars.iv.next513 to i32 - %158 = select i1 %165, i32 28, i32 0 + %158 = select i1 %164, i32 28, i32 0 br label %.preheader362 .preheader362: ; preds = %.preheader362.loopexit, %154 - %.1242.lcssa = phi i32 [ %.0241, %154 ], [ %157, %.preheader362.loopexit ] - %.0238.lcssa = phi i32 [ 0, %154 ], [ %164, %.preheader362.loopexit ] - %.lcssa412 = phi i32 [ 28, %154 ], [ %158, %.preheader362.loopexit ] + %.1242.lcssa = phi i32 [ %.0241, %153 ], [ %157, %.preheader365.loopexit ] + %.0238.lcssa = phi i32 [ 0, %153 ], [ %163, %.preheader365.loopexit ] + %.lcssa412 = phi i32 [ 28, %153 ], [ %158, %.preheader365.loopexit ] %159 = icmp sgt i32 %.0239, %.0245.ph - br i1 %159, label %.lr.ph442.preheader, label %._crit_edge443 + br i1 %159, label %.lr.ph442.preheader, label %._crit_edge446 .lr.ph442.preheader: ; preds = %.preheader362 %160 = sext i32 %.0239 to i64 - br label %.lr.ph442 + br label %.lr.ph445 .lr.ph437: ; preds = %.lr.ph437.preheader, %.lr.ph437 - %indvars.iv512 = phi i64 [ %156, %.lr.ph437.preheader ], [ %indvars.iv.next513, %.lr.ph437 ] + %indvars.iv512 = phi i64 [ %156, %.lr.ph440.preheader ], [ %indvars.iv.next513, %.lr.ph440 ] %indvars.iv.next513 = add nsw i64 %indvars.iv512, -1 %161 = getelementptr inbounds i64, ptr %121, i64 %indvars.iv.next513 %162 = load i64, ptr %161, align 8, !tbaa !27 - %163 = trunc i64 %162 to i32 - %164 = lshr i32 %163, 16 - %165 = icmp eq i32 %164, 0 - %166 = icmp sgt i64 %indvars.iv.next513, %183 - %167 = select i1 %165, i1 %166, i1 false - br i1 %167, label %.lr.ph437, label %.preheader362.loopexit, !llvm.loop !43 - -.lr.ph442: ; preds = %.lr.ph442.preheader, %.lr.ph442 - %indvars.iv515 = phi i64 [ %160, %.lr.ph442.preheader ], [ %indvars.iv.next516, %.lr.ph442 ] - %indvars.iv.next516 = add nsw i64 %indvars.iv515, -1 - %168 = getelementptr inbounds i64, ptr %122, i64 %indvars.iv.next516 - %169 = load i64, ptr %168, align 8, !tbaa !27 - %170 = trunc i64 %169 to i32 - %171 = lshr i32 %170, 16 - %172 = icmp eq i32 %171, 0 - %173 = icmp sgt i64 %indvars.iv.next516, %184 - %174 = select i1 %172, i1 %173, i1 false - br i1 %174, label %.lr.ph442, label %._crit_edge443.loopexit, !llvm.loop !44 - -._crit_edge443.loopexit: ; preds = %.lr.ph442 - %175 = trunc nsw i64 %indvars.iv.next516 to i32 - br label %._crit_edge443 - -._crit_edge443: ; preds = %._crit_edge443.loopexit, %.preheader362 - %.1240.lcssa = phi i32 [ %.0239, %.preheader362 ], [ %175, %._crit_edge443.loopexit ] - %.0237.lcssa = phi i32 [ 0, %.preheader362 ], [ %171, %._crit_edge443.loopexit ] - %.not280 = icmp eq i32 %.0238.lcssa, %.0237.lcssa - %176 = icmp samesign ult i32 %.0238.lcssa, %.0237.lcssa - %177 = select i1 %176, i32 -1, i32 1 + %.fr450 = freeze i64 %162 + %162 = trunc i64 %.fr450 to i32 + %163 = lshr i32 %162, 16 + %166 = icmp eq i32 %163, 0 + %165 = icmp sgt i64 %indvars.iv.next518, %181 + %166 = select i1 %164, i1 %165, i1 false + br i1 %166, label %.lr.ph440, label %.preheader365.loopexit, !llvm.loop !43 + +.lr.ph445:; preds = %.lr.ph442.preheader, %.lr.ph445 + %indvars.iv520 = phi i64 [ %159, %.lr.ph445.preheader ], [ %indvars.iv.next521, %.lr.ph445 ] + %indvars.iv.next521 = add nsw i64 %indvars.iv520, -1 + %167 = getelementptr inbounds i64, ptr %122, i64 %indvars.iv.next521 + %168 = load i64, ptr %167, align 8, !tbaa !27 + %.fr451 = freeze i64 %168 + %169 = trunc i64 %.fr451 to i32 + %170 = lshr i32 %169, 16 + %171 = icmp eq i32 %170, 0 + %172 = icmp sgt i64 %indvars.iv.next521, %184 + %173 = select i1 %171, i1 %172, i1 false + br i1 %173, label %.lr.ph445, label %._crit_edge446.loopexit, !llvm.loop !44 + +._crit_edge446.loopexit:; preds = %.lr.ph445 + %174 = trunc nsw i64 %indvars.iv.next521 to i32 + br label %._crit_edge446 + +._crit_edge446: ; preds = %._crit_edge446.loopexit, %.preheader365 + %.1240.lcssa = phi i32 [ %.0239, %.preheader365 ], [ %174, %._crit_edge446.loopexit ] + %.0237.frz.lcssa = phi i32 [ 0, %.preheader365 ], [ %170, %._crit_edge446.loopexit ] + %.not280 = icmp eq i32 %.0238.lcssa, %.0237.frz.lcssa %.3253 = select i1 %.not280, i32 %.lcssa412, i32 1 - %.9 = select i1 %.not280, i32 %.8, i32 %177 + %175 = tail call i32 @llvm.ucmp.i32.i32(i32 %.0238.lcssa, i32 %.0237.frz.lcssa) + %select.ucmp = select i1 %.not280, i32 %.8, i32 %175 switch i32 %.3253, label %.loopexit [ i32 0, label %154 i32 28, label %178 ], !llvm.loop !45 -178: ; preds = %._crit_edge443 +178: ; preds = %._crit_edge446 %179 = icmp eq i64 %148, 1 br i1 %179, label %.thread310, label %180 @@ -367,9 +369,9 @@ _ZNK6icu_7717CollationSettings7reorderEj.exit: ; preds = %87, %92 br label %.outer .outer: ; preds = %118, %180 - %.0247.ph = phi i32 [ %181, %180 ], [ 0, %118 ] - %.0245.ph = phi i32 [ %182, %180 ], [ 0, %118 ] - %.7.ph = phi i32 [ %.9, %180 ], [ undef, %118 ] + %.0247.ph = phi i32 [ %181, %178 ], [ 0, %118 ] + %.0245.ph = phi i32 [ %182, %178 ], [ 0, %118 ] + %.7.ph = phi i32 [ %select.ucmp, %178 ], [ undef, %118 ] %183 = sext i32 %.0247.ph to i64 %184 = sext i32 %.0245.ph to i64 br label %141 @@ -386,14 +388,14 @@ _ZNK6icu_7717CollationSettings7reorderEj.exit: ; preds = %87, %92 br i1 %186, label %.preheader354.us, label %.preheader357 .preheader354.us: ; preds = %.preheader358, %204 - %.0231.us = phi i64 [ %indvars.iv.next531, %204 ], [ 0, %.preheader358 ] - %.0227.us = phi i64 [ %indvars.iv.next534, %204 ], [ 0, %.preheader358 ] + %.0231.us = phi i64 [ %indvars.iv.next531, %202 ], [ 0, %.preheader361 ] + %.0227.us = phi i64 [ %indvars.iv.next534, %202 ], [ 0, %.preheader361 ] %sext568 = shl i64 %.0231.us, 32 %189 = ashr exact i64 %sext568, 32 br label %190 190: ; preds = %.preheader354.us, %190 - %indvars.iv530 = phi i64 [ %189, %.preheader354.us ], [ %indvars.iv.next531, %190 ] + %indvars.iv530 = phi i64 [ %189, %.preheader357.us ], [ %indvars.iv.next531, %188 ] %indvars.iv.next531 = add nsw i64 %indvars.iv530, 1 %191 = getelementptr inbounds i64, ptr %187, i64 %indvars.iv530 %192 = load i64, ptr %191, align 8, !tbaa !27 @@ -404,7 +406,7 @@ _ZNK6icu_7717CollationSettings7reorderEj.exit: ; preds = %87, %92 br i1 %196, label %190, label %.preheader352.us, !llvm.loop !46 197: ; preds = %.preheader352.us, %197 - %indvars.iv533 = phi i64 [ %206, %.preheader352.us ], [ %indvars.iv.next534, %197 ] + %indvars.iv533 = phi i64 [ %206, %.preheader355.us ], [ %indvars.iv.next534, %195 ] %indvars.iv.next534 = add nsw i64 %indvars.iv533, 1 %198 = getelementptr inbounds i64, ptr %188, i64 %indvars.iv533 %199 = load i64, ptr %198, align 8, !tbaa !27 @@ -431,14 +433,14 @@ _ZNK6icu_7717CollationSettings7reorderEj.exit: ; preds = %87, %92 br i1 %.not283.us, label %204, label %.split.us .preheader357: ; preds = %.preheader358, %226 - %.0231 = phi i64 [ %indvars.iv.next525, %226 ], [ 0, %.preheader358 ] - %.0227 = phi i64 [ %indvars.iv.next528, %226 ], [ 0, %.preheader358 ] + %.0231 = phi i64 [ %indvars.iv.next525, %224 ], [ 0, %.preheader361 ] + %.0227 = phi i64 [ %indvars.iv.next528, %224 ], [ 0, %.preheader361 ] %sext566 = shl i64 %.0231, 32 %207 = ashr exact i64 %sext566, 32 br label %208 208: ; preds = %.preheader357, %208 - %indvars.iv524 = phi i64 [ %207, %.preheader357 ], [ %indvars.iv.next525, %208 ] + %indvars.iv524 = phi i64 [ %207, %.preheader360 ], [ %indvars.iv.next525, %206 ] %indvars.iv.next525 = add nsw i64 %indvars.iv524, 1 %209 = getelementptr inbounds i64, ptr %187, i64 %indvars.iv524 %210 = load i64, ptr %209, align 8, !tbaa !27 @@ -452,7 +454,7 @@ _ZNK6icu_7717CollationSettings7reorderEj.exit: ; preds = %87, %92 br label %214 214: ; preds = %.preheader355, %214 - %indvars.iv527 = phi i64 [ %213, %.preheader355 ], [ %indvars.iv.next528, %214 ] + %indvars.iv527 = phi i64 [ %213, %.preheader358 ], [ %indvars.iv.next528, %212 ] %indvars.iv.next528 = add nsw i64 %indvars.iv527, 1 %215 = getelementptr inbounds i64, ptr %188, i64 %indvars.iv527 %216 = load i64, ptr %215, align 8, !tbaa !27 @@ -467,8 +469,8 @@ _ZNK6icu_7717CollationSettings7reorderEj.exit: ; preds = %87, %92 br i1 %.not283, label %226, label %.split.us .split.us: ; preds = %.loopexit356, %.loopexit353.us - %.us-phi = phi i32 [ %.0224.us, %.loopexit353.us ], [ %.0224, %.loopexit356 ] - %.us-phi446 = phi i32 [ %.0226.us, %.loopexit353.us ], [ %.0226, %.loopexit356 ] + %.us-phi = phi i32 [ %.0224.us, %.loopexit356.us ], [ %.0224, %.loopexit359 ] + %.us-phi446 = phi i32 [ %.0226.us, %.loopexit356.us ], [ %.0226, %.loopexit359 ] %219 = and i32 %9, 256 %220 = icmp eq i32 %219, 0 %221 = icmp samesign ult i32 %.us-phi446, %.us-phi @@ -497,97 +499,97 @@ _ZNK6icu_7717CollationSettings7reorderEj.exit: ; preds = %87, %92 %231 = select i1 %.not.i, i32 65343, i32 16191 %232 = load ptr, ptr %16, align 8, !tbaa !26 %233 = load ptr, ptr %18, align 8, !tbaa !26 + br label %232 + +232: ; preds = %270, %227 + %.0219 = phi i64 [ 0, %227 ], [ %indvars.iv.next542, %270 ] + %.0215 = phi i64 [ 0, %227 ], [ %indvars.iv.next545, %270 ] + %.0212 = phi i32 [ 0, %227 ], [ %246, %270 ] + %sext575 = shl i64 %.0219, 32 + %233 = ashr exact i64 %sext575, 32 br label %234 -234: ; preds = %272, %229 - %.0219 = phi i64 [ 0, %229 ], [ %indvars.iv.next537, %272 ] - %.0215 = phi i64 [ 0, %229 ], [ %indvars.iv.next540, %272 ] - %.0212 = phi i32 [ 0, %229 ], [ %248, %272 ] - %sext570 = shl i64 %.0219, 32 - %235 = ashr exact i64 %sext570, 32 - br label %236 - -236: ; preds = %236, %234 - %indvars.iv536 = phi i64 [ %indvars.iv.next537, %236 ], [ %235, %234 ] - %.1213 = phi i32 [ %240, %236 ], [ %.0212, %234 ] - %indvars.iv.next537 = add nsw i64 %indvars.iv536, 1 - %237 = getelementptr inbounds i64, ptr %232, i64 %indvars.iv536 - %238 = load i64, ptr %237, align 8, !tbaa !27 - %239 = trunc i64 %238 to i32 - %240 = or i32 %.1213, %239 - %241 = and i32 %231, %239 - %242 = icmp eq i32 %241, 0 - br i1 %242, label %236, label %.preheader351, !llvm.loop !50 - -.preheader351: ; preds = %236 - %sext571 = shl i64 %.0215, 32 - %243 = ashr exact i64 %sext571, 32 - br label %244 - -244: ; preds = %.preheader351, %244 - %indvars.iv539 = phi i64 [ %243, %.preheader351 ], [ %indvars.iv.next540, %244 ] - %.2214 = phi i32 [ %240, %.preheader351 ], [ %248, %244 ] - %indvars.iv.next540 = add nsw i64 %indvars.iv539, 1 - %245 = getelementptr inbounds i64, ptr %233, i64 %indvars.iv539 - %246 = load i64, ptr %245, align 8, !tbaa !27 - %247 = trunc i64 %246 to i32 - %248 = or i32 %.2214, %247 - %249 = and i32 %231, %247 - %250 = icmp eq i32 %249, 0 - br i1 %250, label %244, label %251, !llvm.loop !51 - -251: ; preds = %244 - %.not284 = icmp eq i32 %241, %249 - br i1 %.not284, label %272, label %252 - -252: ; preds = %251 - %253 = and i32 %9, 1792 - %.not348 = icmp eq i32 %253, 768 - br i1 %.not348, label %254, label %.thread334 +234: ; preds = %234, %232 + %.0219 = phi i64 [ %indvars.iv.next542, %234 ], [ %233, %232 ] + %.0215 = phi i32 [ %238, %234 ], [ %.0212, %232 ] + %indvars.iv.next542 = add nsw i64 %indvars.iv541, 1 + %235 = getelementptr inbounds i64, ptr %230, i64 %.0219 + %236 = load i64, ptr %235, align 8, !tbaa !27 + %237 = trunc i64 %236 to i32 + %238 = or i32 %.1213, %237 + %239 = and i32 %229, %237 + %240 = icmp eq i32 %239, 0 + br i1 %240, label %234, label %.preheader354, !llvm.loop !50 + +.preheader354:; preds = %234 + %sext576 = shl i64 %.0215, 32 + %241 = ashr exact i64 %sext576, 32 + br label %242 + +242:; preds = %.preheader354, %242 + %indvars.iv544 = phi i64 [ %241, %.preheader354 ], [ %indvars.iv.next545, %242 ] + %.2214 = phi i32 [ %238, %.preheader354 ], [ %246, %242 ] + %indvars.iv.next545 = add nsw i64 %indvars.iv544, 1 + %243 = getelementptr inbounds i64, ptr %231, i64 %indvars.iv544 + %244 = load i64, ptr %243, align 8, !tbaa !27 + %245 = trunc i64 %244 to i32 + %246 = or i32 %.2214, %245 + %247 = and i32 %231, %245 + %248 = icmp eq i32 %247, 0 + br i1 %248, label %242, label %249, !llvm.loop !51 + +249: ; preds = %242 + %.not284 = icmp eq i32 %239, %247 + br i1 %.not284, label %270, label %250 + +250:; preds = %249 + %251 = and i32 %9, 1792 + %.not351 = icmp eq i32 %251, 768 + br i1 %.not351, label %252, label %.thread334 + +252:; preds = %250 + %253 = icmp samesign ugt i32 %239, 256 + br i1 %253, label %254, label %260 254: ; preds = %252 - %255 = icmp samesign ugt i32 %241, 256 - br i1 %255, label %256, label %262 + %255 = icmp ugt i32 %237, 65535 + br i1 %255, label %256, label %258 256: ; preds = %254 - %257 = icmp ugt i32 %239, 65535 - br i1 %257, label %258, label %260 + %257 = xor i32 %239, 49152 + br label %260 -258: ; preds = %256 - %259 = xor i32 %241, 49152 - br label %262 +258: ; preds = %254 + %259 = add nuw nsw i32 %239, 16384 + br label %260 -260: ; preds = %256 - %261 = add nuw nsw i32 %241, 16384 - br label %262 +260: ; preds = %256, %258, %252 + %.1209 = phi i32 [ %257, %256 ], [ %259, %258 ], [ %239, %252 ] + %261 = icmp samesign ugt i32 %247, 256 + br i1 %261, label %262, label %.thread334 -262: ; preds = %258, %260, %254 - %.1209 = phi i32 [ %259, %258 ], [ %261, %260 ], [ %241, %254 ] - %263 = icmp samesign ugt i32 %249, 256 - br i1 %263, label %264, label %.thread334 +262: ; preds = %260 + %263 = icmp ugt i32 %245, 65535 + br i1 %263, label %264, label %266 264: ; preds = %262 - %265 = icmp ugt i32 %247, 65535 - br i1 %265, label %266, label %268 - -266: ; preds = %264 - %267 = xor i32 %249, 49152 + %265 = xor i32 %247, 49152 br label %.thread334 -268: ; preds = %264 - %269 = add nuw nsw i32 %249, 16384 +268: ; preds = %262 + %269 = add nuw nsw i32 %247, 16384 br label %.thread334 -.thread334: ; preds = %252, %266, %268, %262 - %.0208 = phi i32 [ %.1209, %266 ], [ %.1209, %268 ], [ %.1209, %262 ], [ %241, %252 ] - %.0202 = phi i32 [ %267, %266 ], [ %269, %268 ], [ %249, %262 ], [ %249, %252 ] +.thread334: ; preds = %250, %264, %268, %260 + %.0208 = phi i32 [ %.1209, %264 ], [ %.1209, %266 ], [ %.1209, %260 ], [ %239, %250 ] + %.0202 = phi i32 [ %265, %264 ], [ %269, %266 ], [ %247, %260 ], [ %247, %250 ] %270 = icmp ult i32 %.0208, %.0202 %271 = select i1 %270, i32 -1, i32 1 br label %.loopexit -272: ; preds = %251 - %273 = icmp eq i32 %241, 256 - br i1 %273, label %274, label %234 +272: ; preds = %249 + %273 = icmp eq i32 %239, 256 + br i1 %273, label %274, label %232 274: ; preds = %272 %275 = icmp eq i32 %116, 2 @@ -595,20 +597,20 @@ _ZNK6icu_7717CollationSettings7reorderEj.exit: ; preds = %87, %92 276: ; preds = %274 %.not286 = icmp eq i8 %.4207302, 0 - %277 = and i32 %248, 192 + %277 = and i32 %246, 192 %278 = icmp eq i32 %277, 0 %or.cond294 = select i1 %.not286, i1 %278, i1 false br i1 %or.cond294, label %.loopexit, label %.preheader350 .preheader350: ; preds = %276, %310 - %.2221 = phi i64 [ %indvars.iv.next543, %310 ], [ 0, %276 ] - %.2217 = phi i64 [ %indvars.iv.next546, %310 ], [ 0, %276 ] + %.2221 = phi i64 [ %indvars.iv.next543, %308 ], [ 0, %274 ] + %.2217 = phi i64 [ %indvars.iv.next546, %308 ], [ 0, %274 ] %sext572 = shl i64 %.2221, 32 %279 = ashr exact i64 %sext572, 32 br label %280 280: ; preds = %280, %.preheader350 - %indvars.iv542 = phi i64 [ %indvars.iv.next543, %280 ], [ %279, %.preheader350 ] + %indvars.iv542 = phi i64 [ %indvars.iv.next543, %278 ], [ %279, %.preheader353 ] %indvars.iv.next543 = add nsw i64 %indvars.iv542, 1 %281 = getelementptr inbounds i64, ptr %232, i64 %indvars.iv542 %282 = load i64, ptr %281, align 8, !tbaa !27 @@ -628,7 +630,7 @@ _ZNK6icu_7717CollationSettings7reorderEj.exit: ; preds = %87, %92 br label %291 291: ; preds = %.preheader, %291 - %indvars.iv545 = phi i64 [ %290, %.preheader ], [ %indvars.iv.next546, %291 ] + %indvars.iv545 = phi i64 [ %290, %.preheader ], [ %indvars.iv.next546, %289 ] %indvars.iv.next546 = add nsw i64 %indvars.iv545, 1 %292 = getelementptr inbounds i64, ptr %233, i64 %indvars.iv545 %293 = load i64, ptr %292, align 8, !tbaa !27 @@ -658,8 +660,8 @@ _ZNK6icu_7717CollationSettings7reorderEj.exit: ; preds = %87, %92 br label %.thread342 .thread342: ; preds = %302, %305 - %.1201 = phi i32 [ %306, %305 ], [ %.0200, %302 ] - %.1198 = phi i32 [ %307, %305 ], [ %.0197, %302 ] + %.1201 = phi i32 [ %306, %303 ], [ %.0200, %300 ] + %.1198 = phi i32 [ %307, %303 ], [ %.0197, %300 ] %308 = icmp ult i32 %.1201, %.1198 %309 = select i1 %308, i32 -1, i32 1 br label %.loopexit @@ -668,8 +670,8 @@ _ZNK6icu_7717CollationSettings7reorderEj.exit: ; preds = %87, %92 %311 = icmp eq i32 %.0200, 1 br i1 %311, label %.loopexit, label %.preheader350 -.loopexit: ; preds = %._crit_edge443, %137, %310, %.thread342, %.thread334, %224, %222, %.thread303, %112, %.thread329, %276, %274, %4 - %.0 = phi i32 [ 0, %4 ], [ 0, %112 ], [ 0, %.thread329 ], [ 0, %274 ], [ 0, %276 ], [ %109, %.thread303 ], [ %225, %224 ], [ %223, %222 ], [ %271, %.thread334 ], [ %309, %.thread342 ], [ 0, %310 ], [ %.6, %137 ], [ %.9, %._crit_edge443 ] +.loopexit: ; preds = %._crit_edge446, %137, %310, %.thread342, %.thread334, %224, %222, %.thread303, %112, %.thread329, %276, %274, %4 + %.0 = phi i32 [ 0, %4 ], [ 0, %112 ], [ 0, %.thread329 ], [ 0, %272 ], [ 0, %274 ], [ %109, %.thread303 ], [ %225, %222 ], [ %221, %220 ], [ %269, %.thread334 ], [ %307, %.thread342 ], [ 0, %308 ], [ %select.ucmp349, %137 ], [ %select.ucmp, %._crit_edge446 ] ret i32 %.0 } @@ -950,10 +952,14 @@ declare void @llvm.lifetime.start.p0(ptr captures(none)) #3 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p0(ptr captures(none)) #3 +; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) +declare range(i32 -1, 2) i32 @llvm.ucmp.i32.i32(i32, i32) #4 + attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #3 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #4 = { nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) } !llvm.module.flags = !{!0, !1, !2} diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c8d0fce0bf7..17d4f525267 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/168505 export COMPTIME_MODE=0 export STAT_MODE=0 export STAT_NAME=""