diff --git a/bench/abc/optimized/abcLog.ll b/bench/abc/optimized/abcLog.ll index 156d5693562..043ba2af9c1 100644 --- a/bench/abc/optimized/abcLog.ll +++ b/bench/abc/optimized/abcLog.ll @@ -441,7 +441,7 @@ Vec_IntFree.exit122: ; preds = %108, %109 %111 = sub nsw i32 %.val109, %.val %112 = add nsw i32 %101, 1 %113 = srem i32 %111, %112 - %114 = sdiv i32 %111, %112 + %114 = sdiv exact i32 %111, %112 %.not102 = icmp eq i32 %113, 0 br i1 %.not102, label %117, label %115 diff --git a/bench/abseil-cpp/optimized/symbolize.ll b/bench/abseil-cpp/optimized/symbolize.ll index ea9b2d8be53..595ebb21192 100644 --- a/bench/abseil-cpp/optimized/symbolize.ll +++ b/bench/abseil-cpp/optimized/symbolize.ll @@ -2879,7 +2879,7 @@ cond.false.i.i.i.i: ; preds = %_ZN4absl18debugging cond.end.i.i.i.i: ; preds = %_ZN4absl18debugging_internal12_GLOBAL__N_111CachingFile14ReadFromOffsetEPvml.exit.i79.i.i.i %rem.i82.i.i.i = urem i64 %retval.0.i.i80.i.i.i, 24 - %div11.i.i.i.i = udiv i64 %retval.0.i.i80.i.i.i, 24 + %div11.i.i.i.i = udiv exact i64 %retval.0.i.i80.i.i.i, 24 %cmp7.i.i.i.i = icmp eq i64 %rem.i82.i.i.i, 0 br i1 %cmp7.i.i.i.i, label %cond.end10.i.i.i.i, label %cond.false9.i.i.i.i @@ -2892,7 +2892,7 @@ cond.end10.i.i.i.i: ; preds = %cond.end.i.i.i.i br i1 %cmp12.not.i.i101.i.i, label %cond.false14.i.i.i.i, label %for.cond16.preheader.i.i.i.i for.cond16.preheader.i.i.i.i: ; preds = %cond.end10.i.i.i.i - %cmp1748.not.i.i.i.i = icmp samesign ult i64 %retval.0.i.i80.i.i.i, 24 + %cmp1748.not.i.i.i.i = icmp eq i64 %retval.0.i.i80.i.i.i, 0 br i1 %cmp1748.not.i.i.i.i, label %for.end.i86.i.i.i, label %for.body18.i.i.i.i cond.false14.i.i.i.i: ; preds = %cond.end10.i.i.i.i diff --git a/bench/assimp/optimized/FBXParser.ll b/bench/assimp/optimized/FBXParser.ll index f8341d28d4e..a5183166cc2 100644 --- a/bench/assimp/optimized/FBXParser.ll +++ b/bench/assimp/optimized/FBXParser.ll @@ -2335,7 +2335,7 @@ _ZN6Assimp3FBX12_GLOBAL__N_123ReadBinaryDataArrayHeadERPKcS3_RcRjRKNS0_7ElementE call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp.i) call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp1.i) %rem = urem i32 %add.ptr.val.i, 3 - %div = udiv i32 %add.ptr.val.i, 3 + %div = udiv exact i32 %add.ptr.val.i, 3 %cmp.not = icmp eq i32 %rem, 0 br i1 %cmp.not, label %if.end21, label %if.then12 @@ -2523,18 +2523,15 @@ invoke.cont56: ; preds = %_ZNSt12_Vector_base ] if.then59: ; preds = %invoke.cont56 - %cmp61178.not = icmp ult i32 %add.ptr.val.i, 3 - br i1 %cmp61178.not, label %if.end90, label %for.body.preheader - -for.body.preheader: ; preds = %if.then59 %26 = load ptr, ptr %buff, align 8 + %umax180 = call i32 @llvm.umax.i32(i32 %div, i32 1) %.pre = load ptr, ptr %_M_finish.i.i, align 8 br label %for.body -for.body: ; preds = %for.body.preheader, %for.inc - %27 = phi ptr [ %35, %for.inc ], [ %.pre, %for.body.preheader ] - %d.0180 = phi ptr [ %add.ptr, %for.inc ], [ %26, %for.body.preheader ] - %i.0179 = phi i32 [ %inc, %for.inc ], [ 0, %for.body.preheader ] +for.body: ; preds = %if.then59, %for.inc + %27 = phi ptr [ %.pre, %if.then59 ], [ %35, %for.inc ] + %d.0180 = phi ptr [ %26, %if.then59 ], [ %add.ptr, %for.inc ] + %i.0179 = phi i32 [ 0, %if.then59 ], [ %inc, %for.inc ] %28 = load double, ptr %d.0180, align 8 %conv63 = fptrunc double %28 to float %arrayidx65 = getelementptr inbounds nuw i8, ptr %d.0180, i64 8 @@ -2626,20 +2623,17 @@ for.inc: ; preds = %_ZNSt6vectorI10aiVe %35 = phi ptr [ %incdec.ptr.i.i, %_ZNSt6vectorI10aiVector3tIfESaIS1_EE17_M_realloc_insertIJfffEEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_.exit.i ], [ %incdec.ptr.i, %if.then.i62 ] %inc = add nuw nsw i32 %i.0179, 1 %add.ptr = getelementptr inbounds nuw i8, ptr %d.0180, i64 24 - %exitcond182.not = icmp eq i32 %inc, %div + %exitcond182.not = icmp eq i32 %inc, %umax180 br i1 %exitcond182.not, label %if.end90, label %for.body, !llvm.loop !18 if.then74: ; preds = %invoke.cont56 - %cmp78175.not = icmp ult i32 %add.ptr.val.i, 3 - br i1 %cmp78175.not, label %if.end90, label %for.body79.preheader - -for.body79.preheader: ; preds = %if.then74 %36 = load ptr, ptr %buff, align 8 + %umax = call i32 @llvm.umax.i32(i32 %div, i32 1) br label %for.body79 -for.body79: ; preds = %for.body79.preheader, %for.inc85 - %i76.0177 = phi i32 [ %inc86, %for.inc85 ], [ 0, %for.body79.preheader ] - %f.0176 = phi ptr [ %add.ptr87, %for.inc85 ], [ %36, %for.body79.preheader ] +for.body79: ; preds = %if.then74, %for.inc85 + %i76.0177 = phi i32 [ 0, %if.then74 ], [ %inc86, %for.inc85 ] + %f.0176 = phi ptr [ %36, %if.then74 ], [ %add.ptr87, %for.inc85 ] %arrayidx81 = getelementptr inbounds nuw i8, ptr %f.0176, i64 4 %arrayidx82 = getelementptr inbounds nuw i8, ptr %f.0176, i64 8 %call84 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI10aiVector3tIfESaIS1_EE12emplace_backIJRKfS6_S6_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %out, ptr noundef nonnull align 4 dereferenceable(4) %f.0176, ptr noundef nonnull align 4 dereferenceable(4) %arrayidx81, ptr noundef nonnull align 4 dereferenceable(4) %arrayidx82) @@ -2648,10 +2642,10 @@ for.body79: ; preds = %for.body79.preheade for.inc85: ; preds = %for.body79 %inc86 = add nuw nsw i32 %i76.0177, 1 %add.ptr87 = getelementptr inbounds nuw i8, ptr %f.0176, i64 12 - %exitcond.not = icmp eq i32 %inc86, %div + %exitcond.not = icmp eq i32 %inc86, %umax br i1 %exitcond.not, label %if.end90, label %for.body79, !llvm.loop !19 -if.end90: ; preds = %for.inc85, %for.inc, %if.then74, %if.then59, %invoke.cont56 +if.end90: ; preds = %for.inc85, %for.inc, %invoke.cont56 %37 = load ptr, ptr %buff, align 8 %tobool.not.i.i.i66 = icmp eq ptr %37, null br i1 %tobool.not.i.i.i66, label %_ZNSt6vectorIcSaIcEED2Ev.exit, label %if.then.i.i.i67 diff --git a/bench/boost/optimized/to_chars.ll b/bench/boost/optimized/to_chars.ll index 0881e3970bd..de952f04b1b 100644 --- a/bench/boost/optimized/to_chars.ll +++ b/bench/boost/optimized/to_chars.ll @@ -361,26 +361,23 @@ _ZN5boost8charconv6detail3ryuL22generic_computeInvPow5EjPm.exit.i: ; preds = %62 %.sroa.2.0.insert.shift.i.i.i = shl nuw nsw i128 %.sroa.2.0.insert.ext.i.i.i, 64 %.sroa.0.0.insert.ext.i.i.i = and i128 %27, 18446744073709551612 %.sroa.0.0.insert.insert.i.i.i = or disjoint i128 %.sroa.2.0.insert.shift.i.i.i, %.sroa.0.0.insert.ext.i.i.i - %.not11.i.i.i = icmp eq i128 %.sroa.0.0.insert.insert.i.i.i, 0 - br i1 %.not11.i.i.i, label %_ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit.i, label %.lr.ph.i.i.i - -.lr.ph.i.i.i: ; preds = %98, %102 - %.0713.i.i.i = phi i32 [ %103, %102 ], [ 0, %98 ] - %.0812.i.i.i = phi i128 [ %100, %102 ], [ %.sroa.0.0.insert.insert.i.i.i, %98 ] - %.0812.i.i.i.frozen = freeze i128 %.0812.i.i.i - %100 = udiv i128 %.0812.i.i.i.frozen, 5 - %101 = mul i128 %100, 5 - %.decomposed = sub i128 %.0812.i.i.i.frozen, %101 - %.not10.i.i.i = icmp eq i128 %.decomposed, 0 - br i1 %.not10.i.i.i, label %102, label %_ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit.i - -102: ; preds = %.lr.ph.i.i.i - %103 = add i32 %.0713.i.i.i, 1 - %.not.i.i.i = icmp samesign ult i128 %.0812.i.i.i, 5 - br i1 %.not.i.i.i, label %_ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit.i, label %.lr.ph.i.i.i, !llvm.loop !16 - -_ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit.i: ; preds = %102, %.lr.ph.i.i.i, %98 - %spec.select.i.i.i = phi i32 [ 0, %98 ], [ 0, %102 ], [ %.0713.i.i.i, %.lr.ph.i.i.i ] + %.not11.i.i.i = icmp ne i128 %.sroa.0.0.insert.insert.i.i.i, 0 + %100 = urem i128 %.sroa.0.0.insert.insert.i.i.i, 5 + %.not10.i4.i.i = icmp eq i128 %100, 0 + %or.cond.i.i = and i1 %.not11.i.i.i, %.not10.i4.i.i + br i1 %or.cond.i.i, label %.lr.ph.i.i.i, label %_ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit.i + +.lr.ph.i.i.i:; preds = %98, %.lr.ph.i.i.i + %100 = phi i128 [ %101, %.lr.ph.i.i.i ], [ %.sroa.0.0.insert.insert.i.i.i, %98 ] + %101 = phi i32 [ %102, %.lr.ph.i.i.i ], [ 0, %98 ] + %.decomposed = udiv exact i128 %.0812.i6.i.i, 5 + %.not10.i.i.i = add i32 %.decomposed, 1 + %103 = urem i128 %.decomposed, 5 + %.not10.i.i.i = icmp eq i128 %103, 0 + br i1 %.not10.i.i.i, label %.lr.ph.i.i.i, label %_ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit.i + +_ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit.i:; preds = %.lr.ph.i.i.i, %98 + %spec.select.i.i.i = phi i32 [ 0, %98 ], [ %.not10.i.i.i, %.lr.ph.i.i.i ] %104 = icmp uge i32 %spec.select.i.i.i, %99 %105 = zext i1 %104 to i8 br label %120 @@ -389,27 +386,24 @@ _ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit.i: ; preds = %102, %. br i1 %26, label %107, label %113 107: ; preds = %106 - %.not11.i.i212.i = icmp eq i128 %90, 0 - br i1 %.not11.i.i212.i, label %_ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit219.i, label %.lr.ph.i.i213.i - -.lr.ph.i.i213.i: ; preds = %107, %110 - %.0713.i.i214.i = phi i32 [ %111, %110 ], [ 0, %107 ] - %.0812.i.i215.i = phi i128 [ %108, %110 ], [ %90, %107 ] - %.0812.i.i215.i.frozen = freeze i128 %.0812.i.i215.i - %108 = udiv i128 %.0812.i.i215.i.frozen, 5 - %109 = mul i128 %108, 5 - %.decomposed67 = sub i128 %.0812.i.i215.i.frozen, %109 - %.not10.i.i216.i = icmp eq i128 %.decomposed67, 0 - br i1 %.not10.i.i216.i, label %110, label %_ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit219.i - -110: ; preds = %.lr.ph.i.i213.i - %111 = add i32 %.0713.i.i214.i, 1 - %.not.i.i218.i = icmp ult i128 %.0812.i.i215.i, 5 - br i1 %.not.i.i218.i, label %_ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit219.i, label %.lr.ph.i.i213.i, !llvm.loop !16 - -_ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit219.i: ; preds = %110, %.lr.ph.i.i213.i, %107 - %spec.select.i.i217.i = phi i32 [ 0, %107 ], [ 0, %110 ], [ %.0713.i.i214.i, %.lr.ph.i.i213.i ] - %112 = icmp uge i32 %spec.select.i.i217.i, %37 + %.not11.i.i212.i = icmp ne i128 %90, 0 + %108 = urem i128 %90, 5 + %.not10.i4.i213.i = icmp eq i128 %108, 0 + %or.cond.i214.i = and i1 %.not11.i.i212.i, %.not10.i4.i213.i + br i1 %or.cond.i214.i, label %.lr.ph.i.i216.i, label %_ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit220.i + +.lr.ph.i.i216.i:; preds = %107, %.lr.ph.i.i216.i + %108 = phi i128 [ %109, %.lr.ph.i.i216.i ], [ %90, %107 ] + %109 = phi i32 [ %110, %.lr.ph.i.i216.i ], [ 0, %107 ] + %.decomposed67 = udiv exact i128 %.0812.i6.i217.i, 5 + %.not10.i.i216.i = add i32 %.decomposed67, 1 + %111 = urem i128 %.decomposed67, 5 + %.not10.i.i219.i = icmp eq i128 %111, 0 + br i1 %.not10.i.i219.i, label %.lr.ph.i.i216.i, label %_ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit220.i + +_ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit220.i:; preds = %.lr.ph.i.i216.i, %107 + %spec.select.i.i215.i = phi i32 [ 0, %107 ], [ %110, %.lr.ph.i.i216.i ] + %112 = icmp uge i32 %spec.select.i.i215.i, %37 br label %120 113: ; preds = %106 @@ -417,34 +411,30 @@ _ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit219.i: ; preds = %110, %.sroa.2.0.insert.shift.i.i221.i = shl nuw nsw i128 %.sroa.2.0.insert.ext.i.i220.i, 64 %.sroa.0.0.insert.ext.i.i222.i = zext i64 %.sroa.049.0.extract.trunc.i to i128 %.sroa.0.0.insert.insert.i.i223.i = or disjoint i128 %.sroa.2.0.insert.shift.i.i221.i, %.sroa.0.0.insert.ext.i.i222.i - br label %.lr.ph.i.i225.i - -.lr.ph.i.i225.i: ; preds = %116, %113 - %.0713.i.i226.i = phi i32 [ %117, %116 ], [ 0, %113 ] - %.0812.i.i227.i = phi i128 [ %114, %116 ], [ %.sroa.0.0.insert.insert.i.i223.i, %113 ] - %.0812.i.i227.i.frozen = freeze i128 %.0812.i.i227.i - %114 = udiv i128 %.0812.i.i227.i.frozen, 5 - %115 = mul i128 %114, 5 - %.decomposed68 = sub i128 %.0812.i.i227.i.frozen, %115 - %.not10.i.i228.i = icmp eq i128 %.decomposed68, 0 - br i1 %.not10.i.i228.i, label %116, label %_ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit231.i - -116: ; preds = %.lr.ph.i.i225.i - %117 = add i32 %.0713.i.i226.i, 1 - %.not.i.i230.i = icmp samesign ult i128 %.0812.i.i227.i, 5 - br i1 %.not.i.i230.i, label %_ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit231.i, label %.lr.ph.i.i225.i, !llvm.loop !16 - -_ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit231.i: ; preds = %116, %.lr.ph.i.i225.i - %spec.select.i.i229.i = phi i32 [ 0, %116 ], [ %.0713.i.i226.i, %.lr.ph.i.i225.i ] - %118 = icmp uge i32 %spec.select.i.i229.i, %37 + %114 = urem i128 %.sroa.0.0.insert.insert.i.i224.i, 5 + %.not10.i4.i226.i = icmp eq i128 %114, 0 + br i1 %.not10.i4.i226.i, label %.lr.ph.i.i229.i, label %_ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit233.i + +.lr.ph.i.i229.i: ; preds = %113, %.lr.ph.i.i229.i + %.0812.i.i227.i.frozen = phi i128 [ %115, %.lr.ph.i.i229.i ], [ %.sroa.0.0.insert.insert.i.i224.i, %113 ] + %114 = phi i32 [ %116, %.lr.ph.i.i229.i ], [ 0, %113 ] + %115 = udiv exact i128 %.0812.i6.i230.i, 5 + %.decomposed68 = add i32 %.0713.i5.i231.i, 1 + %.not10.i.i228.i = urem i128 %115, 5 + %.not10.i.i232.i = icmp eq i128 %117, 0 + br i1 %.not10.i.i232.i, label %.lr.ph.i.i229.i, label %_ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit233.i + +_ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit233.i:; preds = %.lr.ph.i.i229.i, %113 + %.not.i.i230.i = phi i32 [ 0, %113 ], [ %116, %.lr.ph.i.i229.i ] + %118 = icmp uge i32 %.not.i.i230.i, %37 %.neg200.i = sext i1 %118 to i128 %119 = add i128 %.sroa.047.0.insert.insert.i, %.neg200.i br label %120 -120: ; preds = %_ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit231.i, %_ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit219.i, %_ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit.i, %_ZN5boost8charconv6detail3ryuL22generic_computeInvPow5EjPm.exit.i - %.0187.i = phi i8 [ %105, %_ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit.i ], [ 0, %_ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit219.i ], [ 0, %_ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit231.i ], [ 0, %_ZN5boost8charconv6detail3ryuL22generic_computeInvPow5EjPm.exit.i ] - %.0183.i = phi i1 [ false, %_ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit.i ], [ %112, %_ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit219.i ], [ false, %_ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit231.i ], [ false, %_ZN5boost8charconv6detail3ryuL22generic_computeInvPow5EjPm.exit.i ] - %.0174.i = phi i128 [ %.sroa.047.0.insert.insert.i, %_ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit.i ], [ %.sroa.047.0.insert.insert.i, %_ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit219.i ], [ %119, %_ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit231.i ], [ %.sroa.047.0.insert.insert.i, %_ZN5boost8charconv6detail3ryuL22generic_computeInvPow5EjPm.exit.i ] +120: ; preds = %_ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit233.i, %_ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit220.i, %_ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit.i, %_ZN5boost8charconv6detail3ryuL22generic_computeInvPow5EjPm.exit.i + %.0187.i = phi i8 [ %105, %_ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit.i ], [ 0, %_ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit220.i ], [ 0, %_ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit233.i ], [ 0, %_ZN5boost8charconv6detail3ryuL22generic_computeInvPow5EjPm.exit.i ] + %.0183.i = phi i1 [ false, %_ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit.i ], [ %112, %_ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit220.i ], [ false, %_ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit233.i ], [ false, %_ZN5boost8charconv6detail3ryuL22generic_computeInvPow5EjPm.exit.i ] + %.0174.i = phi i128 [ %.sroa.047.0.insert.insert.i, %_ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit.i ], [ %.sroa.047.0.insert.insert.i, %_ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit220.i ], [ %119, %_ZN5boost8charconv6detail3ryuL18multipleOfPowerOf5Eoj.exit233.i ], [ %.sroa.047.0.insert.insert.i, %_ZN5boost8charconv6detail3ryuL22generic_computeInvPow5EjPm.exit.i ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #15, !noalias !3 br label %195 @@ -629,7 +619,7 @@ _ZN5boost8charconv6detail3ryuL19generic_computePow5EjPm.exit.i: ; preds = %152, %211 = udiv i128 %201, 10 %212 = udiv i128 %200, 10 %213 = icmp samesign ugt i128 %211, %212 - br i1 %213, label %.lr.ph.i, label %._crit_edge.loopexit.i, !llvm.loop !18 + br i1 %213, label %.lr.ph.i, label %._crit_edge.loopexit.i, !llvm.loop !16 ._crit_edge.loopexit.i: ; preds = %.lr.ph.i %214 = zext i1 %206 to i8 @@ -664,11 +654,11 @@ _ZN5boost8charconv6detail3ryuL19generic_computePow5EjPm.exit.i: ; preds = %152, %221 = mul i128 %220, 10 %.decomposed70 = sub i128 %.3173256.i.frozen, %221 %222 = trunc nuw nsw i128 %.decomposed70 to i8 - %223 = udiv i128 %.3181255.i, 10 + %223 = udiv exact i128 %.3181255.i, 10 %224 = add i32 %.2168257.i, 1 %225 = urem i128 %223, 10 %226 = icmp eq i128 %225, 0 - br i1 %226, label %.lr.ph259.i, label %.loopexit.loopexit.i, !llvm.loop !19 + br i1 %226, label %.lr.ph259.i, label %.loopexit.loopexit.i, !llvm.loop !18 .loopexit.loopexit.i: ; preds = %.lr.ph259.i %227 = zext i1 %219 to i8 @@ -711,7 +701,7 @@ _ZN5boost8charconv6detail3ryuL25generic_binary_to_decimalEojjb.exit: ; preds = % %.lobit = lshr i80 %11, 79 %243 = trunc nuw nsw i80 %.lobit to i8 %244 = getelementptr inbounds nuw i8, ptr %0, i64 20 - store i8 %243, ptr %244, align 4, !tbaa !20, !alias.scope !3 + store i8 %243, ptr %244, align 4, !tbaa !19, !alias.scope !3 ret void } @@ -720,17 +710,17 @@ define internal fastcc noundef i32 @_ZN5boost8charconv6detail3ryuL16generic_to_c %6 = getelementptr inbounds nuw i8, ptr %0, i64 16 %7 = load i32, ptr %6, align 16, !tbaa !13 %8 = icmp eq i32 %7, 2147483647 - %.sroa.0.0.copyload = load i128, ptr %0, align 16, !tbaa !21 + %.sroa.0.0.copyload = load i128, ptr %0, align 16, !tbaa !20 br i1 %8, label %9, label %29 9: ; preds = %5 %.sroa.2130.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 20 - %.sroa.2130.0.copyload = load i8, ptr %.sroa.2130.0..sroa_idx, align 4, !tbaa !22 + %.sroa.2130.0.copyload = load i8, ptr %.sroa.2130.0..sroa_idx, align 4, !tbaa !21 %10 = trunc nuw i8 %.sroa.2130.0.copyload to i1 br i1 %10, label %11, label %.thread.i 11: ; preds = %9 - store i8 45, ptr %1, align 1, !tbaa !23 + store i8 45, ptr %1, align 1, !tbaa !22 %12 = getelementptr inbounds nuw i8, ptr %1, i64 1 switch i128 %.sroa.0.0.copyload, label %16 [ i128 0, label %25 @@ -813,12 +803,12 @@ define internal fastcc noundef i32 @_ZN5boost8charconv6detail3ryuL16generic_to_c .thread: ; preds = %32, %29 %39 = getelementptr inbounds nuw i8, ptr %0, i64 20 - %40 = load i8, ptr %39, align 4, !tbaa !20, !range !24, !noundef !25 + %40 = load i8, ptr %39, align 4, !tbaa !19, !range !23, !noundef !24 %41 = trunc nuw i8 %40 to i1 br i1 %41, label %42, label %43 42: ; preds = %.thread - store i8 45, ptr %1, align 1, !tbaa !23 + store i8 45, ptr %1, align 1, !tbaa !22 br label %43 43: ; preds = %42, %.thread @@ -842,7 +832,7 @@ define internal fastcc noundef i32 @_ZN5boost8charconv6detail3ryuL16generic_to_c %51 = trunc nuw nsw i128 %50 to i8 %52 = or disjoint i8 %51, 48 %53 = getelementptr inbounds nuw i8, ptr %1, i64 %.0110 - store i8 %52, ptr %53, align 1, !tbaa !23 + store i8 %52, ptr %53, align 1, !tbaa !22 br label %68 .lr.ph.preheader: ; preds = %.preheader134 @@ -854,7 +844,7 @@ define internal fastcc noundef i32 @_ZN5boost8charconv6detail3ryuL16generic_to_c %55 = trunc nuw nsw i128 %54 to i8 %56 = or disjoint i8 %55, 48 %57 = getelementptr inbounds nuw i8, ptr %1, i64 %.0110 - store i8 %56, ptr %57, align 1, !tbaa !23 + store i8 %56, ptr %57, align 1, !tbaa !22 %.not125 = icmp eq i32 %30, 1 br i1 %.not125, label %68, label %64 @@ -869,14 +859,14 @@ define internal fastcc noundef i32 @_ZN5boost8charconv6detail3ryuL16generic_to_c %61 = or disjoint i8 %60, 48 %62 = sub nsw i64 %45, %indvars.iv %63 = getelementptr inbounds nuw i8, ptr %1, i64 %62 - store i8 %61, ptr %63, align 1, !tbaa !23 + store i8 %61, ptr %63, align 1, !tbaa !22 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !26 + br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !25 64: ; preds = %._crit_edge %65 = getelementptr inbounds nuw i8, ptr %57, i64 1 - store i8 46, ptr %65, align 1, !tbaa !23 + store i8 46, ptr %65, align 1, !tbaa !22 %66 = add i32 %30, 1 %67 = zext i32 %66 to i64 br label %68 @@ -899,7 +889,7 @@ define internal fastcc noundef i32 @_ZN5boost8charconv6detail3ryuL16generic_to_c %.3113.v = add nuw nsw i64 %.3113.v.v, %70 %.3113 = add nuw nsw i64 %.3113.v, %73 %74 = getelementptr inbounds nuw i8, ptr %1, i64 %.3113 - %75 = load i8, ptr %74, align 1, !tbaa !23 + %75 = load i8, ptr %74, align 1, !tbaa !22 %76 = icmp sgt i8 %75, 52 %77 = add i32 %30, 1 %78 = zext i32 %77 to i64 @@ -911,14 +901,14 @@ define internal fastcc noundef i32 @_ZN5boost8charconv6detail3ryuL16generic_to_c %.0106 = phi i64 [ %80, %.preheader132 ], [ %.3113, %72 ] %80 = add i64 %.0106, -1 %81 = getelementptr inbounds nuw i8, ptr %1, i64 %80 - %82 = load i8, ptr %81, align 1, !tbaa !23 + %82 = load i8, ptr %81, align 1, !tbaa !22 %83 = icmp eq i8 %82, 57 %84 = add i8 %82, 1 %storemerge = select i1 %83, i8 48, i8 %84 - store i8 %storemerge, ptr %81, align 1, !tbaa !23 + store i8 %storemerge, ptr %81, align 1, !tbaa !22 %85 = icmp ugt i64 %80, 2 %86 = and i1 %83, %85 - br i1 %86, label %.preheader132, label %.loopexit133, !llvm.loop !27 + br i1 %86, label %.preheader132, label %.loopexit133, !llvm.loop !26 .loopexit133: ; preds = %.preheader132, %72 br i1 %.not127, label %91, label %.preheader @@ -930,10 +920,10 @@ define internal fastcc noundef i32 @_ZN5boost8charconv6detail3ryuL16generic_to_c 87: ; preds = %87, %.preheader %.4 = phi i64 [ %90, %87 ], [ %.3113, %.preheader ] %gep = getelementptr i8, ptr %invariant.gep, i64 %.4 - %88 = load i8, ptr %gep, align 1, !tbaa !23 + %88 = load i8, ptr %gep, align 1, !tbaa !22 %89 = icmp eq i8 %88, 48 %90 = add i64 %.4, -1 - br i1 %89, label %87, label %.loopexit, !llvm.loop !28 + br i1 %89, label %87, label %.loopexit, !llvm.loop !27 91: ; preds = %.loopexit133 %.not128 = icmp slt i32 %4, %30 @@ -941,7 +931,7 @@ define internal fastcc noundef i32 @_ZN5boost8charconv6detail3ryuL16generic_to_c 92: ; preds = %91 %93 = getelementptr i8, ptr %74, i64 -1 - store i8 48, ptr %93, align 1, !tbaa !23 + store i8 48, ptr %93, align 1, !tbaa !22 br label %.loopexit 94: ; preds = %69 @@ -951,7 +941,7 @@ define internal fastcc noundef i32 @_ZN5boost8charconv6detail3ryuL16generic_to_c .loopexit: ; preds = %87, %91, %92, %94, %68 %.2112 = phi i64 [ %.3113, %92 ], [ %.3113, %91 ], [ %.1111, %94 ], [ %.1111, %68 ], [ %.4, %87 ] %96 = getelementptr inbounds nuw i8, ptr %1, i64 %.2112 - store i8 101, ptr %96, align 1, !tbaa !23 + store i8 101, ptr %96, align 1, !tbaa !22 %97 = add nsw i32 %30, %7 %98 = icmp slt i32 %97, 1 %99 = getelementptr i8, ptr %1, i64 %.2112 @@ -961,12 +951,12 @@ define internal fastcc noundef i32 @_ZN5boost8charconv6detail3ryuL16generic_to_c .thread161: ; preds = %.loopexit %101 = sub nsw i32 1, %97 - store i8 45, ptr %100, align 1, !tbaa !23 + store i8 45, ptr %100, align 1, !tbaa !22 br label %.lr.ph.i.preheader 102: ; preds = %.loopexit %103 = add nsw i32 %97, -1 - store i8 43, ptr %100, align 1, !tbaa !23 + store i8 43, ptr %100, align 1, !tbaa !22 %.not5.i = icmp eq i32 %103, 0 br i1 %.not5.i, label %._crit_edge141, label %.lr.ph.i.preheader @@ -981,7 +971,7 @@ define internal fastcc noundef i32 @_ZN5boost8charconv6detail3ryuL16generic_to_c %105 = add nuw nsw i32 %.07.i, 1 %.046.off.i = add i32 %.046.i, 9 %.not.i = icmp ult i32 %.046.off.i, 19 - br i1 %.not.i, label %.lr.ph140, label %.lr.ph.i, !llvm.loop !29 + br i1 %.not.i, label %.lr.ph140, label %.lr.ph.i, !llvm.loop !28 .lr.ph140: ; preds = %.lr.ph.i %106 = icmp eq i32 %.07.i, 0 @@ -998,11 +988,11 @@ define internal fastcc noundef i32 @_ZN5boost8charconv6detail3ryuL16generic_to_c %109 = getelementptr i8, ptr %108, i64 %107 %scevgep = getelementptr i8, ptr %109, i64 2 %110 = getelementptr inbounds nuw i8, ptr %1, i64 %.5164 - store i8 48, ptr %110, align 1, !tbaa !23 + store i8 48, ptr %110, align 1, !tbaa !22 %111 = urem i32 %.0104166, 10 %112 = trunc nuw nsw i32 %111 to i8 %113 = or disjoint i8 %112, 48 - store i8 %113, ptr %scevgep, align 1, !tbaa !23 + store i8 %113, ptr %scevgep, align 1, !tbaa !22 %114 = add i64 %.2112, 3 br label %._crit_edge141.thread @@ -1015,17 +1005,17 @@ define internal fastcc noundef i32 @_ZN5boost8charconv6detail3ryuL16generic_to_c %119 = or disjoint i8 %118, 48 %120 = xor i64 %indvars.iv151, -1 %121 = getelementptr i8, ptr %gep144, i64 %120 - store i8 %119, ptr %121, align 1, !tbaa !23 + store i8 %119, ptr %121, align 1, !tbaa !22 %indvars.iv.next152 = add nuw nsw i64 %indvars.iv151, 1 %exitcond155.not = icmp eq i64 %indvars.iv.next152, %107 - br i1 %exitcond155.not, label %._crit_edge141.thread, label %115, !llvm.loop !30 + br i1 %exitcond155.not, label %._crit_edge141.thread, label %115, !llvm.loop !29 ._crit_edge141: ; preds = %102 %122 = getelementptr inbounds nuw i8, ptr %1, i64 %.5164 - store i8 48, ptr %122, align 1, !tbaa !23 + store i8 48, ptr %122, align 1, !tbaa !22 %123 = add i64 %.2112, 4 %124 = getelementptr i8, ptr %122, i64 1 - store i8 48, ptr %124, align 1, !tbaa !23 + store i8 48, ptr %124, align 1, !tbaa !22 br label %._crit_edge141.thread ._crit_edge141.thread: ; preds = %115, %._crit_edge141.loopexit, %._crit_edge141 @@ -1148,23 +1138,23 @@ _ZN5boost8charconv6detaillsENS1_7uint128Ei.exit: ; preds = %42, %49, %51 58: ; preds = %57 %59 = getelementptr inbounds nuw i8, ptr %0, i64 1 - store i8 45, ptr %0, align 1, !tbaa !23 + store i8 45, ptr %0, align 1, !tbaa !22 br label %60 60: ; preds = %58, %57 %.0 = phi ptr [ %59, %58 ], [ %0, %57 ] %61 = lshr i64 %.sroa.0.0.extract.trunc.i, 60 %62 = getelementptr inbounds nuw [36 x i8], ptr @_ZN5boost8charconv6detailL11digit_tableE, i64 0, i64 %61 - %63 = load i8, ptr %62, align 1, !tbaa !23 + %63 = load i8, ptr %62, align 1, !tbaa !22 %64 = getelementptr inbounds nuw i8, ptr %.0, i64 1 - store i8 %63, ptr %.0, align 1, !tbaa !23 + store i8 %63, ptr %.0, align 1, !tbaa !22 %65 = icmp sgt i32 %spec.select, 0 br i1 %65, label %66, label %.thread 66: ; preds = %60 %67 = and i64 %.sroa.14.1, 1152921504606846975 %68 = getelementptr inbounds nuw i8, ptr %.0, i64 2 - store i8 46, ptr %64, align 1, !tbaa !23 + store i8 46, ptr %64, align 1, !tbaa !22 br label %_ZN5boost8charconv6detailrsENS1_7uint128Ei.exit _ZN5boost8charconv6detailrsENS1_7uint128Ei.exit: ; preds = %66, %84 @@ -1175,9 +1165,9 @@ _ZN5boost8charconv6detailrsENS1_7uint128Ei.exit: ; preds = %66, %84 %69 = lshr i64 %.sroa.14.2258, %indvars.iv.next261 %70 = and i64 %69, 4294967295 %71 = getelementptr inbounds nuw [36 x i8], ptr @_ZN5boost8charconv6detailL11digit_tableE, i64 0, i64 %70 - %72 = load i8, ptr %71, align 1, !tbaa !23 + %72 = load i8, ptr %71, align 1, !tbaa !22 %73 = getelementptr inbounds nuw i8, ptr %.2260, i64 1 - store i8 %72, ptr %.2260, align 1, !tbaa !23 + store i8 %72, ptr %.2260, align 1, !tbaa !22 %74 = add nsw i32 %.1120259, -1 %75 = icmp eq i32 %74, 0 br i1 %75, label %.thread, label %84 @@ -1185,9 +1175,9 @@ _ZN5boost8charconv6detailrsENS1_7uint128Ei.exit: ; preds = %66, %84 _ZN5boost8charconv6detailrsENS1_7uint128Ei.exit.thread: ; preds = %84 %76 = and i64 %86, 4294967295 %77 = getelementptr inbounds nuw [36 x i8], ptr @_ZN5boost8charconv6detailL11digit_tableE, i64 0, i64 %76 - %78 = load i8, ptr %77, align 1, !tbaa !23 + %78 = load i8, ptr %77, align 1, !tbaa !22 %79 = getelementptr inbounds nuw i8, ptr %.2260, i64 2 - store i8 %78, ptr %73, align 1, !tbaa !23 + store i8 %78, ptr %73, align 1, !tbaa !22 %80 = add nsw i32 %.1120259, -2 %81 = icmp eq i32 %80, 0 br i1 %81, label %.thread, label %.thread243 @@ -1220,7 +1210,7 @@ _ZN5boost8charconv6detailrsENS1_7uint128Ei.exit.thread: ; preds = %84 .preheader: ; preds = %.preheader.preheader, %.preheader %.1.pn = phi ptr [ %.6, %.preheader ], [ %.1.pn.ph, %.preheader.preheader ] %.6 = getelementptr inbounds i8, ptr %.1.pn, i64 -1 - %88 = load i8, ptr %.6, align 1, !tbaa !23 + %88 = load i8, ptr %.6, align 1, !tbaa !22 switch i8 %88, label %.loopexit [ i8 48, label %.preheader i8 46, label %.loopexit.loopexit @@ -1232,10 +1222,10 @@ _ZN5boost8charconv6detailrsENS1_7uint128Ei.exit.thread: ; preds = %84 .loopexit: ; preds = %.preheader, %.loopexit.loopexit, %.thread.thread, %.thread %.5 = phi ptr [ %.1, %.thread ], [ %83, %.thread.thread ], [ %.6, %.loopexit.loopexit ], [ %.1.pn, %.preheader ] %89 = getelementptr inbounds nuw i8, ptr %.5, i64 1 - store i8 112, ptr %.5, align 1, !tbaa !23 + store i8 112, ptr %.5, align 1, !tbaa !22 %. = select i1 %20, i8 45, i8 43 %.7 = getelementptr inbounds nuw i8, ptr %.5, i64 2 - store i8 %., ptr %89, align 1, !tbaa !23 + store i8 %., ptr %89, align 1, !tbaa !22 call void @llvm.lifetime.start.p0(i64 10, ptr nonnull %5) #15 call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(10) %5, i8 0, i64 10, i1 false) %90 = icmp ugt ptr %.7, %1 @@ -1305,7 +1295,7 @@ _ZN5boost8charconv6detail10num_digitsIjEEiT_.exit.i.i: ; preds = %108, %106, %10 %120 = mul nuw i64 %119, 100 %121 = add nuw nsw i64 %.010.i.i.i, 2 %122 = icmp samesign ult i64 %.010.i.i.i, 8 - br i1 %122, label %113, label %_ZN5boost8charconv6detail11decompose32EjPc.exit.i.i, !llvm.loop !31 + br i1 %122, label %113, label %_ZN5boost8charconv6detail11decompose32EjPc.exit.i.i, !llvm.loop !30 _ZN5boost8charconv6detail11decompose32EjPc.exit.i.i: ; preds = %113 %123 = sub nuw nsw i64 10, %.0.i.i.i @@ -1341,14 +1331,14 @@ define internal fastcc noundef i32 @_ZN5boost8charconv6detail3ryuL22generic_to_c br i1 %7, label %8, label %28 8: ; preds = %4 - %.sroa.0.0.copyload = load i128, ptr %0, align 16, !tbaa !21 + %.sroa.0.0.copyload = load i128, ptr %0, align 16, !tbaa !20 %.sroa.266.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 20 - %.sroa.266.0.copyload = load i8, ptr %.sroa.266.0..sroa_idx, align 4, !tbaa !22 + %.sroa.266.0.copyload = load i8, ptr %.sroa.266.0..sroa_idx, align 4, !tbaa !21 %9 = trunc nuw i8 %.sroa.266.0.copyload to i1 br i1 %9, label %10, label %.thread.i 10: ; preds = %8 - store i8 45, ptr %1, align 1, !tbaa !23 + store i8 45, ptr %1, align 1, !tbaa !22 %11 = getelementptr inbounds nuw i8, ptr %1, i64 1 switch i128 %.sroa.0.0.copyload, label %15 [ i128 0, label %24 @@ -1411,13 +1401,13 @@ define internal fastcc noundef i32 @_ZN5boost8charconv6detail3ryuL22generic_to_c 28: ; preds = %4 %29 = getelementptr inbounds nuw i8, ptr %0, i64 20 - %30 = load i8, ptr %29, align 4, !tbaa !20, !range !24, !noundef !25 + %30 = load i8, ptr %29, align 4, !tbaa !19, !range !23, !noundef !24 %31 = trunc nuw i8 %30 to i1 br i1 %31, label %32, label %34 32: ; preds = %28 %33 = getelementptr inbounds nuw i8, ptr %1, i64 1 - store i8 45, ptr %1, align 1, !tbaa !23 + store i8 45, ptr %1, align 1, !tbaa !22 br label %34 34: ; preds = %32, %28 @@ -1447,7 +1437,7 @@ define internal fastcc noundef i32 @_ZN5boost8charconv6detail3ryuL22generic_to_c br i1 %48, label %49, label %53 49: ; preds = %42 - %50 = load i8, ptr %29, align 4, !tbaa !20, !range !24, !noundef !25 + %50 = load i8, ptr %29, align 4, !tbaa !19, !range !23, !noundef !24 %51 = zext nneg i8 %50 to i32 %52 = add nsw i32 %51, %46 br label %_ZN5boost8charconv6detail3ryuL16copy_special_strEPclNS2_20floating_decimal_128E.exit @@ -1470,7 +1460,7 @@ define internal fastcc noundef i32 @_ZN5boost8charconv6detail3ryuL22generic_to_c %63 = getelementptr inbounds nuw i8, ptr %38, i64 %62 %64 = add nsw i32 %61, %46 %65 = getelementptr inbounds nuw i8, ptr %63, i64 1 - store i8 46, ptr %63, align 1, !tbaa !23 + store i8 46, ptr %63, align 1, !tbaa !22 %66 = add nsw i32 %3, 1 br label %107 @@ -1550,7 +1540,7 @@ define internal fastcc noundef i32 @_ZN5boost8charconv6detail3ryuL22generic_to_c 115: ; preds = %113, %107 %.1 = phi i32 [ %110, %113 ], [ %.0, %107 ] - %116 = load i8, ptr %29, align 4, !tbaa !20, !range !24, !noundef !25 + %116 = load i8, ptr %29, align 4, !tbaa !19, !range !23, !noundef !24 %117 = zext nneg i8 %116 to i32 %118 = add nsw i32 %.1, %117 br label %_ZN5boost8charconv6detail3ryuL16copy_special_strEPclNS2_20floating_decimal_128E.exit @@ -1575,7 +1565,7 @@ define linkonce_odr hidden { ptr, i32 } @_ZN5boost8charconv6detail20to_chars_pri 11: ; preds = %5 %12 = getelementptr inbounds nuw i8, ptr %7, i64 1 - store i8 46, ptr %12, align 1, !tbaa !23 + store i8 46, ptr %12, align 1, !tbaa !22 %13 = icmp ult i32 %4, 10 br i1 %13, label %14, label %18 @@ -1583,7 +1573,7 @@ define linkonce_odr hidden { ptr, i32 } @_ZN5boost8charconv6detail20to_chars_pri %15 = getelementptr inbounds nuw i8, ptr %7, i64 2 %16 = trunc nuw i32 %4 to i8 %17 = or disjoint i8 %16, 48 - store i8 %17, ptr %15, align 1, !tbaa !23 + store i8 %17, ptr %15, align 1, !tbaa !22 br label %66 18: ; preds = %11 @@ -1662,14 +1652,14 @@ _ZN5boost8charconv6detail10num_digitsIjEEiT_.exit.i.i.thread: ; preds = %33, %37 %54 = mul nuw i64 %53, 100 %55 = add nuw nsw i64 %.010.i.i.i, 2 %56 = icmp samesign ult i64 %.010.i.i.i, 8 - br i1 %56, label %47, label %_ZN5boost8charconv6detail11decompose32EjPc.exit.i.i, !llvm.loop !31 + br i1 %56, label %47, label %_ZN5boost8charconv6detail11decompose32EjPc.exit.i.i, !llvm.loop !30 _ZN5boost8charconv6detail11decompose32EjPc.exit.i.i: ; preds = %47 br i1 %27, label %57, label %_ZN5boost8charconv6detail12to_chars_intIiEENS0_15to_chars_resultEPcS4_T_i.exit 57: ; preds = %_ZN5boost8charconv6detail11decompose32EjPc.exit.i.i %58 = getelementptr inbounds nuw i8, ptr %7, i64 3 - store i8 45, ptr %20, align 1, !tbaa !23 + store i8 45, ptr %20, align 1, !tbaa !22 br label %_ZN5boost8charconv6detail12to_chars_intIiEENS0_15to_chars_resultEPcS4_T_i.exit _ZN5boost8charconv6detail12to_chars_intIiEENS0_15to_chars_resultEPcS4_T_i.exit: ; preds = %57, %_ZN5boost8charconv6detail11decompose32EjPc.exit.i.i @@ -1689,13 +1679,13 @@ _ZN5boost8charconv6detail12to_chars_intIiEENS0_15to_chars_resultEPcS4_T_i.exit: %64 = getelementptr inbounds nuw i8, ptr %7, i64 1 store i16 12334, ptr %64, align 1 %65 = getelementptr inbounds nuw i8, ptr %7, i64 3 - store i8 76, ptr %65, align 1, !tbaa !23 + store i8 76, ptr %65, align 1, !tbaa !22 br label %.sink.split 66: ; preds = %14, %_ZN5boost8charconv6detail12to_chars_intIiEENS0_15to_chars_resultEPcS4_T_i.exit, %21, %62 %.1 = phi i64 [ 1, %62 ], [ 3, %14 ], [ 4, %21 ], [ %61, %_ZN5boost8charconv6detail12to_chars_intIiEENS0_15to_chars_resultEPcS4_T_i.exit ] %67 = getelementptr inbounds nuw [14 x i8], ptr %7, i64 0, i64 %.1 - store i8 76, ptr %67, align 1, !tbaa !23 + store i8 76, ptr %67, align 1, !tbaa !22 %68 = add i64 %.1, 1 switch i32 %3, label %73 [ i32 3, label %.sink.split @@ -1717,7 +1707,7 @@ _ZN5boost8charconv6detail12to_chars_intIiEENS0_15to_chars_resultEPcS4_T_i.exit: %.sink44 = phi i64 [ %68, %71 ], [ %68, %69 ], [ %68, %66 ], [ 4, %.thread ], [ %68, %70 ] %.sink = phi i8 [ 97, %71 ], [ 101, %69 ], [ 103, %66 ], [ 102, %.thread ], [ 102, %70 ] %72 = getelementptr inbounds nuw [14 x i8], ptr %7, i64 0, i64 %.sink44 - store i8 %.sink, ptr %72, align 1, !tbaa !23 + store i8 %.sink, ptr %72, align 1, !tbaa !22 br label %73 73: ; preds = %.sink.split, %66 @@ -1730,7 +1720,7 @@ _ZN5boost8charconv6detail12to_chars_intIiEENS0_15to_chars_resultEPcS4_T_i.exit: 79: ; preds = %73 %80 = tail call ptr @__errno_location() #17 - %81 = load i32, ptr %80, align 4, !tbaa !32 + %81 = load i32, ptr %80, align 4, !tbaa !31 br label %85 82: ; preds = %73 @@ -1759,7 +1749,7 @@ define hidden { ptr, i32 } @_ZN5boost8charconv6detail15to_chars_detail22dragon_b %7 = add nuw nsw i32 %.07.i.i, 1 %.046.off.i.i = add i32 %.046.i.i, 9 %.not.i.i = icmp ult i32 %.046.off.i.i, 19 - br i1 %.not.i.i, label %_ZN5boost8charconv6detail19total_buffer_lengthIiEEiiT_b.exit.loopexit, label %.lr.ph.i.i, !llvm.loop !29 + br i1 %.not.i.i, label %_ZN5boost8charconv6detail19total_buffer_lengthIiEEiiT_b.exit.loopexit, label %.lr.ph.i.i, !llvm.loop !28 _ZN5boost8charconv6detail19total_buffer_lengthIiEEiiT_b.exit.loopexit: ; preds = %.lr.ph.i.i %8 = add nuw nsw i32 %.07.i.i, 13 @@ -1841,9 +1831,9 @@ _ZN5boost8charconv6detail19total_buffer_lengthIiEEiiT_b.exit: ; preds = %_ZN5boo store i16 %60, ptr %2, align 1 %61 = or i64 %sh.diff113.i, 1 %62 = getelementptr inbounds nuw [200 x i8], ptr @_ZN5boost8charconv6detailL11radix_tableE, i64 0, i64 %61 - %63 = load i8, ptr %62, align 1, !tbaa !23 + %63 = load i8, ptr %62, align 1, !tbaa !22 %64 = getelementptr inbounds nuw i8, ptr %2, i64 2 - store i8 %63, ptr %64, align 1, !tbaa !23 + store i8 %63, ptr %64, align 1, !tbaa !22 %65 = trunc i64 %54 to i32 %66 = icmp ult i32 %65, 4295 br i1 %66, label %67, label %72 @@ -1932,9 +1922,9 @@ _ZN5boost8charconv6detail19total_buffer_lengthIiEEiiT_b.exit: ; preds = %_ZN5boo store i16 %126, ptr %2, align 1 %127 = or i64 %sh.diff112.i, 1 %128 = getelementptr inbounds nuw [200 x i8], ptr @_ZN5boost8charconv6detailL11radix_tableE, i64 0, i64 %127 - %129 = load i8, ptr %128, align 1, !tbaa !23 + %129 = load i8, ptr %128, align 1, !tbaa !22 %130 = getelementptr inbounds nuw i8, ptr %2, i64 2 - store i8 %129, ptr %130, align 1, !tbaa !23 + store i8 %129, ptr %130, align 1, !tbaa !22 %131 = trunc i64 %120 to i32 %132 = icmp ult i32 %131, 429497 br i1 %132, label %133, label %138 @@ -2002,9 +1992,9 @@ _ZN5boost8charconv6detail19total_buffer_lengthIiEEiiT_b.exit: ; preds = %_ZN5boo store i16 %177, ptr %2, align 1 %178 = or i64 %sh.diff.i, 1 %179 = getelementptr inbounds nuw [200 x i8], ptr @_ZN5boost8charconv6detailL11radix_tableE, i64 0, i64 %178 - %180 = load i8, ptr %179, align 1, !tbaa !23 + %180 = load i8, ptr %179, align 1, !tbaa !22 %181 = getelementptr inbounds nuw i8, ptr %2, i64 2 - store i8 %180, ptr %181, align 1, !tbaa !23 + store i8 %180, ptr %181, align 1, !tbaa !22 %182 = trunc i64 %171 to i32 %183 = icmp ult i32 %182, 42949673 br i1 %183, label %184, label %189 @@ -2046,9 +2036,9 @@ _ZN5boost8charconv6detail19total_buffer_lengthIiEEiiT_b.exit: ; preds = %_ZN5boo %211 = or disjoint i32 %207, 1 %212 = zext nneg i32 %211 to i64 %213 = getelementptr inbounds nuw [200 x i8], ptr @_ZN5boost8charconv6detailL11radix_tableE, i64 0, i64 %212 - %214 = load i8, ptr %213, align 1, !tbaa !23 + %214 = load i8, ptr %213, align 1, !tbaa !22 %215 = getelementptr inbounds nuw i8, ptr %2, i64 2 - store i8 %214, ptr %215, align 1, !tbaa !23 + store i8 %214, ptr %215, align 1, !tbaa !22 %216 = icmp sgt i8 %214, 48 %217 = and i1 %204, %216 %218 = select i1 %217, i64 3, i64 1 @@ -2114,7 +2104,7 @@ define hidden { ptr, i32 } @_ZN5boost8charconv6detail15to_chars_detail22dragon_b %7 = add nuw nsw i32 %.07.i.i, 1 %.046.off.i.i = add i32 %.046.i.i, 9 %.not.i.i = icmp ult i32 %.046.off.i.i, 19 - br i1 %.not.i.i, label %_ZN5boost8charconv6detail19total_buffer_lengthIiEEiiT_b.exit.loopexit, label %.lr.ph.i.i, !llvm.loop !29 + br i1 %.not.i.i, label %_ZN5boost8charconv6detail19total_buffer_lengthIiEEiiT_b.exit.loopexit, label %.lr.ph.i.i, !llvm.loop !28 _ZN5boost8charconv6detail19total_buffer_lengthIiEEiiT_b.exit.loopexit: ; preds = %.lr.ph.i.i %8 = add nuw nsw i32 %.07.i.i, 21 @@ -2220,9 +2210,9 @@ _ZN5boost8charconv6detail19total_buffer_lengthIiEEiiT_b.exit: ; preds = %_ZN5boo store i16 %74, ptr %2, align 1 %75 = or i64 %sh.diff113.i, 1 %76 = getelementptr inbounds nuw [200 x i8], ptr @_ZN5boost8charconv6detailL11radix_tableE, i64 0, i64 %75 - %77 = load i8, ptr %76, align 1, !tbaa !23 + %77 = load i8, ptr %76, align 1, !tbaa !22 %78 = getelementptr inbounds nuw i8, ptr %2, i64 2 - store i8 %77, ptr %78, align 1, !tbaa !23 + store i8 %77, ptr %78, align 1, !tbaa !22 %79 = trunc i64 %68 to i32 %80 = icmp ult i32 %79, 4295 br i1 %80, label %81, label %86 @@ -2311,9 +2301,9 @@ _ZN5boost8charconv6detail19total_buffer_lengthIiEEiiT_b.exit: ; preds = %_ZN5boo store i16 %140, ptr %2, align 1 %141 = or i64 %sh.diff112.i, 1 %142 = getelementptr inbounds nuw [200 x i8], ptr @_ZN5boost8charconv6detailL11radix_tableE, i64 0, i64 %141 - %143 = load i8, ptr %142, align 1, !tbaa !23 + %143 = load i8, ptr %142, align 1, !tbaa !22 %144 = getelementptr inbounds nuw i8, ptr %2, i64 2 - store i8 %143, ptr %144, align 1, !tbaa !23 + store i8 %143, ptr %144, align 1, !tbaa !22 %145 = trunc i64 %134 to i32 %146 = icmp ult i32 %145, 429497 br i1 %146, label %147, label %152 @@ -2381,9 +2371,9 @@ _ZN5boost8charconv6detail19total_buffer_lengthIiEEiiT_b.exit: ; preds = %_ZN5boo store i16 %191, ptr %2, align 1 %192 = or i64 %sh.diff.i, 1 %193 = getelementptr inbounds nuw [200 x i8], ptr @_ZN5boost8charconv6detailL11radix_tableE, i64 0, i64 %192 - %194 = load i8, ptr %193, align 1, !tbaa !23 + %194 = load i8, ptr %193, align 1, !tbaa !22 %195 = getelementptr inbounds nuw i8, ptr %2, i64 2 - store i8 %194, ptr %195, align 1, !tbaa !23 + store i8 %194, ptr %195, align 1, !tbaa !22 %196 = trunc i64 %185 to i32 %197 = icmp ult i32 %196, 42949673 br i1 %197, label %198, label %203 @@ -2425,9 +2415,9 @@ _ZN5boost8charconv6detail19total_buffer_lengthIiEEiiT_b.exit: ; preds = %_ZN5boo %225 = or disjoint i32 %221, 1 %226 = zext nneg i32 %225 to i64 %227 = getelementptr inbounds nuw [200 x i8], ptr @_ZN5boost8charconv6detailL11radix_tableE, i64 0, i64 %226 - %228 = load i8, ptr %227, align 1, !tbaa !23 + %228 = load i8, ptr %227, align 1, !tbaa !22 %229 = getelementptr inbounds nuw i8, ptr %2, i64 2 - store i8 %228, ptr %229, align 1, !tbaa !23 + store i8 %228, ptr %229, align 1, !tbaa !22 %230 = icmp sgt i8 %228, 48 %231 = and i1 %218, %230 %232 = select i1 %231, i64 3, i64 1 @@ -2527,9 +2517,9 @@ _ZN5boost8charconv6detail19total_buffer_lengthIiEEiiT_b.exit: ; preds = %_ZN5boo store i16 %298, ptr %2, align 1 %299 = or i64 %sh.diff212, 1 %300 = getelementptr inbounds nuw [200 x i8], ptr @_ZN5boost8charconv6detailL11radix_tableE, i64 0, i64 %299 - %301 = load i8, ptr %300, align 1, !tbaa !23 + %301 = load i8, ptr %300, align 1, !tbaa !22 %302 = getelementptr inbounds nuw i8, ptr %2, i64 2 - store i8 %301, ptr %302, align 1, !tbaa !23 + store i8 %301, ptr %302, align 1, !tbaa !22 %303 = icmp samesign ugt i32 %19, 9999999 %304 = select i1 %303, i32 7, i32 6 %305 = zext i1 %303 to i64 @@ -2575,9 +2565,9 @@ _ZN5boost8charconv6detail19total_buffer_lengthIiEEiiT_b.exit: ; preds = %_ZN5boo store i16 %333, ptr %2, align 1 %334 = or i64 %sh.diff209, 1 %335 = getelementptr inbounds nuw [200 x i8], ptr @_ZN5boost8charconv6detailL11radix_tableE, i64 0, i64 %334 - %336 = load i8, ptr %335, align 1, !tbaa !23 + %336 = load i8, ptr %335, align 1, !tbaa !22 %337 = getelementptr inbounds nuw i8, ptr %2, i64 2 - store i8 %336, ptr %337, align 1, !tbaa !23 + store i8 %336, ptr %337, align 1, !tbaa !22 %338 = icmp samesign ugt i32 %19, 99999 %339 = select i1 %338, i32 5, i32 4 %340 = zext i1 %338 to i64 @@ -2615,9 +2605,9 @@ _ZN5boost8charconv6detail19total_buffer_lengthIiEEiiT_b.exit: ; preds = %_ZN5boo store i16 %362, ptr %2, align 1 %363 = or i64 %sh.diff207, 1 %364 = getelementptr inbounds nuw [200 x i8], ptr @_ZN5boost8charconv6detailL11radix_tableE, i64 0, i64 %363 - %365 = load i8, ptr %364, align 1, !tbaa !23 + %365 = load i8, ptr %364, align 1, !tbaa !22 %366 = getelementptr inbounds nuw i8, ptr %2, i64 2 - store i8 %365, ptr %366, align 1, !tbaa !23 + store i8 %365, ptr %366, align 1, !tbaa !22 %367 = icmp samesign ugt i32 %19, 999 %368 = select i1 %367, i32 3, i32 2 %369 = zext i1 %367 to i64 @@ -2642,9 +2632,9 @@ _ZN5boost8charconv6detail19total_buffer_lengthIiEEiiT_b.exit: ; preds = %_ZN5boo %383 = or disjoint i32 %379, 1 %384 = zext nneg i32 %383 to i64 %385 = getelementptr inbounds nuw [200 x i8], ptr @_ZN5boost8charconv6detailL11radix_tableE, i64 0, i64 %384 - %386 = load i8, ptr %385, align 1, !tbaa !23 + %386 = load i8, ptr %385, align 1, !tbaa !22 %387 = getelementptr inbounds nuw i8, ptr %2, i64 2 - store i8 %386, ptr %387, align 1, !tbaa !23 + store i8 %386, ptr %387, align 1, !tbaa !22 %388 = icmp samesign ugt i32 %19, 9 %389 = zext i1 %388 to i32 %390 = select i1 %388, i64 3, i64 2 @@ -2778,7 +2768,7 @@ _ZN5boost8charconv6detail15to_chars_detailL14print_9_digitsEjRiRPc.exit: ; preds %468 = getelementptr inbounds nuw i8, ptr %.0190, i64 4 %469 = trunc nuw nsw i32 %462 to i8 %470 = or disjoint i8 %469, 48 - store i8 %470, ptr %468, align 1, !tbaa !23 + store i8 %470, ptr %468, align 1, !tbaa !22 %471 = getelementptr inbounds nuw i8, ptr %.0190, i64 5 br label %478 @@ -2847,7 +2837,7 @@ define linkonce_odr hidden { ptr, i32 } @_ZN5boost8charconv6detail19to_chars_flo 23: ; preds = %21 %24 = getelementptr inbounds nuw i8, ptr %0, i64 1 - store i8 45, ptr %0, align 1, !tbaa !23 + store i8 45, ptr %0, align 1, !tbaa !22 br label %25 25: ; preds = %23, %21 @@ -2940,7 +2930,7 @@ _ZSt10fpclassifyf.exit: ; preds = %65 75: ; preds = %_ZSt10fpclassifyf.exit %76 = getelementptr inbounds nuw i8, ptr %0, i64 1 - store i8 45, ptr %0, align 1, !tbaa !23 + store i8 45, ptr %0, align 1, !tbaa !22 br label %77 77: ; preds = %75, %_ZSt10fpclassifyf.exit @@ -3019,7 +3009,7 @@ define linkonce_odr hidden { ptr, i32 } @_ZN5boost8charconv6detail19to_chars_flo 23: ; preds = %21 %24 = getelementptr inbounds nuw i8, ptr %0, i64 1 - store i8 45, ptr %0, align 1, !tbaa !23 + store i8 45, ptr %0, align 1, !tbaa !22 br label %25 25: ; preds = %23, %21 @@ -3110,7 +3100,7 @@ _ZSt10fpclassifyd.exit: ; preds = %63 73: ; preds = %_ZSt10fpclassifyd.exit %74 = getelementptr inbounds nuw i8, ptr %0, i64 1 - store i8 45, ptr %0, align 1, !tbaa !23 + store i8 45, ptr %0, align 1, !tbaa !22 br label %75 75: ; preds = %73, %_ZSt10fpclassifyd.exit @@ -3536,7 +3526,7 @@ define linkonce_odr hidden { ptr, i32 } @_ZN5boost8charconv6detail24to_chars_128 _ZN5boost8charconv6detail10num_digitsIjEEiT_.exit: ; preds = %29, %31, %33, %37, %39 %.0.i = phi i32 [ %.11.i, %33 ], [ 5, %31 ], [ %.12.i, %37 ], [ %.13.i, %39 ], [ %spec.select, %29 ] %41 = getelementptr inbounds nuw [5 x i32], ptr %6, i64 0, i64 %indvars.iv - store i32 %.0.i, ptr %41, align 4, !tbaa !32 + store i32 %.0.i, ptr %41, align 4, !tbaa !31 %42 = getelementptr inbounds nuw [5 x [10 x i8]], ptr %5, i64 0, i64 %indvars.iv %43 = trunc nuw nsw i128 %.decomposed to i64 %44 = mul nuw nsw i64 %43, 1441151881 @@ -3555,17 +3545,17 @@ _ZN5boost8charconv6detail10num_digitsIjEEiT_.exit: ; preds = %29, %31, %33, %37, %52 = mul nuw i64 %51, 100 %53 = add nuw nsw i64 %.010.i, 2 %54 = icmp samesign ult i64 %.010.i, 8 - br i1 %54, label %45, label %_ZN5boost8charconv6detail11decompose32EjPc.exit, !llvm.loop !31 + br i1 %54, label %45, label %_ZN5boost8charconv6detail11decompose32EjPc.exit, !llvm.loop !30 _ZN5boost8charconv6detail11decompose32EjPc.exit: ; preds = %45 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %.not = icmp ult i128 %.04449, 1000000000 - br i1 %.not, label %55, label %22, !llvm.loop !33 + br i1 %.not, label %55, label %22, !llvm.loop !32 55: ; preds = %_ZN5boost8charconv6detail11decompose32EjPc.exit %56 = and i64 %indvars.iv, 4294967295 %57 = getelementptr inbounds nuw [5 x i32], ptr %6, i64 0, i64 %56 - %58 = load i32, ptr %57, align 4, !tbaa !32 + %58 = load i32, ptr %57, align 4, !tbaa !31 %59 = sext i32 %58 to i64 %60 = getelementptr inbounds nuw [5 x [10 x i8]], ptr %5, i64 0, i64 %56 %61 = getelementptr inbounds nuw i8, ptr %60, i64 10 @@ -3584,7 +3574,7 @@ _ZN5boost8charconv6detail11decompose32EjPc.exit: ; preds = %45 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(9) %64, ptr noundef nonnull align 1 dereferenceable(9) %65, i64 9, i1 false) %66 = add nsw i64 %.052, 9 %67 = icmp sgt i64 %indvars.iv55, 1 - br i1 %67, label %.lr.ph, label %._crit_edge, !llvm.loop !34 + br i1 %67, label %.lr.ph, label %._crit_edge, !llvm.loop !33 ._crit_edge: ; preds = %.lr.ph, %55 %68 = getelementptr inbounds i8, ptr %0, i64 %13 @@ -3681,7 +3671,7 @@ _ZN5boost8charconv6detail10num_digitsIjEEiT_.exit: ; preds = %14, %16, %18, %20, %38 = mul nuw i64 %37, 100 %39 = add nuw nsw i64 %.010.i, 2 %40 = icmp samesign ult i64 %.010.i, 8 - br i1 %40, label %31, label %_ZN5boost8charconv6detail11decompose32EjPc.exit, !llvm.loop !31 + br i1 %40, label %31, label %_ZN5boost8charconv6detail11decompose32EjPc.exit, !llvm.loop !30 _ZN5boost8charconv6detail11decompose32EjPc.exit: ; preds = %31 %41 = sub nuw nsw i64 10, %28 @@ -3815,7 +3805,7 @@ _ZN5boost8charconv6detail10num_digitsIjEEiT_.exit89: ; preds = %78, %80, %82, %8 %98 = mul nuw i64 %97, 100 %99 = add nuw nsw i64 %.010.i90, 2 %100 = icmp samesign ult i64 %.010.i90, 8 - br i1 %100, label %91, label %_ZN5boost8charconv6detail11decompose32EjPc.exit92, !llvm.loop !31 + br i1 %100, label %91, label %_ZN5boost8charconv6detail11decompose32EjPc.exit92, !llvm.loop !30 _ZN5boost8charconv6detail11decompose32EjPc.exit92: ; preds = %91 %101 = sub nuw nsw i64 10, %.0.i85 @@ -3837,7 +3827,7 @@ _ZN5boost8charconv6detail11decompose32EjPc.exit92: ; preds = %91 %111 = mul nuw i64 %110, 100 %112 = add nuw nsw i64 %.010.i93, 2 %113 = icmp samesign ult i64 %.010.i93, 8 - br i1 %113, label %104, label %_ZN5boost8charconv6detail11decompose32EjPc.exit95, !llvm.loop !31 + br i1 %113, label %104, label %_ZN5boost8charconv6detail11decompose32EjPc.exit95, !llvm.loop !30 _ZN5boost8charconv6detail11decompose32EjPc.exit95: ; preds = %104 %114 = getelementptr inbounds nuw i8, ptr %0, i64 %.0.i85 @@ -3858,7 +3848,7 @@ _ZN5boost8charconv6detail11decompose32EjPc.exit95: ; preds = %104 %122 = mul nuw i64 %121, 100 %123 = add nuw nsw i64 %.010.i96, 2 %124 = icmp samesign ult i64 %.010.i96, 8 - br i1 %124, label %.preheader, label %_ZN5boost8charconv6detail11decompose32EjPc.exit98, !llvm.loop !31 + br i1 %124, label %.preheader, label %_ZN5boost8charconv6detail11decompose32EjPc.exit98, !llvm.loop !30 _ZN5boost8charconv6detail11decompose32EjPc.exit98: ; preds = %.preheader %125 = getelementptr inbounds nuw i8, ptr %4, i64 2 @@ -3881,7 +3871,7 @@ _ZN5boost8charconv6detail11decompose32EjPc.exit98: ; preds = %.preheader %136 = mul nuw i64 %135, 100 %137 = add nuw nsw i64 %.010.i99, 2 %138 = icmp samesign ult i64 %.010.i99, 8 - br i1 %138, label %129, label %_ZN5boost8charconv6detail11decompose32EjPc.exit101, !llvm.loop !31 + br i1 %138, label %129, label %_ZN5boost8charconv6detail11decompose32EjPc.exit101, !llvm.loop !30 _ZN5boost8charconv6detail11decompose32EjPc.exit101: ; preds = %129 %139 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -3907,7 +3897,7 @@ _ZN5boost8charconv6detail11decompose32EjPc.exit101: ; preds = %129 %151 = mul nuw i64 %150, 100 %152 = add nuw nsw i64 %.010.i102, 2 %153 = icmp samesign ult i64 %.010.i102, 8 - br i1 %153, label %.preheader120, label %_ZN5boost8charconv6detail11decompose32EjPc.exit104, !llvm.loop !31 + br i1 %153, label %.preheader120, label %_ZN5boost8charconv6detail11decompose32EjPc.exit104, !llvm.loop !30 _ZN5boost8charconv6detail11decompose32EjPc.exit104: ; preds = %.preheader120 %154 = getelementptr inbounds nuw i8, ptr %4, i64 1 @@ -3929,7 +3919,7 @@ _ZN5boost8charconv6detail11decompose32EjPc.exit104: ; preds = %.preheader120 %164 = mul nuw i64 %163, 100 %165 = add nuw nsw i64 %.010.i105, 2 %166 = icmp samesign ult i64 %.010.i105, 8 - br i1 %166, label %157, label %_ZN5boost8charconv6detail11decompose32EjPc.exit107, !llvm.loop !31 + br i1 %166, label %157, label %_ZN5boost8charconv6detail11decompose32EjPc.exit107, !llvm.loop !30 _ZN5boost8charconv6detail11decompose32EjPc.exit107: ; preds = %157 %167 = getelementptr inbounds nuw i8, ptr %0, i64 9 @@ -4001,7 +3991,7 @@ define linkonce_odr hidden { ptr, i32 } @_ZN5boost8charconv6detail19to_chars_fix 24: ; preds = %16 %25 = getelementptr inbounds nuw i8, ptr %0, i64 1 - store i8 45, ptr %0, align 1, !tbaa !23 + store i8 45, ptr %0, align 1, !tbaa !22 br label %26 26: ; preds = %24, %16 @@ -4012,13 +4002,13 @@ define linkonce_odr hidden { ptr, i32 } @_ZN5boost8charconv6detail19to_chars_fix 28: ; preds = %26 %29 = getelementptr inbounds nuw i8, ptr %.0, i64 1 - store i8 48, ptr %.0, align 1, !tbaa !23 + store i8 48, ptr %.0, align 1, !tbaa !22 %30 = icmp sgt i32 %4, -1 br i1 %30, label %31, label %155 31: ; preds = %28 %32 = getelementptr inbounds nuw i8, ptr %.0, i64 2 - store i8 46, ptr %29, align 1, !tbaa !23 + store i8 46, ptr %29, align 1, !tbaa !22 %33 = zext nneg i32 %4 to i64 call void @llvm.memset.p0.i64(ptr nonnull align 1 %32, i8 48, i64 %33, i1 false) %34 = getelementptr inbounds nuw i8, ptr %32, i64 %33 @@ -4084,7 +4074,7 @@ _ZN5boost8charconv6detail10num_digitsIjEEiT_.exit: ; preds = %39, %41, %43, %45, %.sroa.023.4.insert.insert = or disjoint i64 %.sroa.023.4.insert.shift, %.sroa.023.0.insert.ext %57 = add nsw i32 %.1147179, -1 %58 = icmp sgt i32 %57, %53 - br i1 %58, label %.lr.ph, label %._crit_edge.thread, !llvm.loop !35 + br i1 %58, label %.lr.ph, label %._crit_edge.thread, !llvm.loop !34 ._crit_edge: ; preds = %.preheader177 %59 = icmp eq i32 %.0.i, %53 @@ -4119,7 +4109,7 @@ _ZN5boost8charconv6detail10num_digitsIjEEiT_.exit: ; preds = %39, %41, %43, %45, %.sroa.023.0.extract.trunc43186 = phi i32 [ %70, %.lr.ph187 ], [ %.sroa.023.0.extract.trunc43183, %66 ] %.sroa.023.4185 = phi i64 [ %.sroa.023.4.insert.insert67, %.lr.ph187 ], [ %.sroa.023.2, %66 ] %.3184 = phi i32 [ %72, %.lr.ph187 ], [ %.2148, %66 ] - %70 = udiv i32 %.sroa.023.0.extract.trunc43186, 10 + %70 = udiv exact i32 %.sroa.023.0.extract.trunc43186, 10 %.sroa.023.0.insert.ext47 = zext nneg i32 %70 to i64 %71 = and i64 %.sroa.023.4185, -4294967296 %.sroa.023.4.insert.shift65 = add i64 %71, 4294967296 @@ -4127,7 +4117,7 @@ _ZN5boost8charconv6detail10num_digitsIjEEiT_.exit: ; preds = %39, %41, %43, %45, %72 = add nsw i32 %.3184, -1 %73 = urem i32 %70, 10 %74 = icmp eq i32 %73, 0 - br i1 %74, label %.lr.ph187, label %.loopexit, !llvm.loop !36 + br i1 %74, label %.lr.ph187, label %.loopexit, !llvm.loop !35 .loopexit: ; preds = %.lr.ph187, %66, %_ZN5boost8charconv6detail10num_digitsIjEEiT_.exit %.0146 = phi i32 [ %.2148, %66 ], [ %.0.i, %_ZN5boost8charconv6detail10num_digitsIjEEiT_.exit ], [ %72, %.lr.ph187 ] @@ -4145,7 +4135,7 @@ _ZN5boost8charconv6detail10num_digitsIjEEiT_.exit: ; preds = %39, %41, %43, %45, %77 = add nuw nsw i32 %.07.i.i, 1 %.046.off.i.i = add i32 %.046.i.i, 9 %.not.i.i = icmp ult i32 %.046.off.i.i, 19 - br i1 %.not.i.i, label %_ZN5boost8charconv6detail19total_buffer_lengthIiEEiiT_b.exit, label %.lr.ph.i.i, !llvm.loop !29 + br i1 %.not.i.i, label %_ZN5boost8charconv6detail19total_buffer_lengthIiEEiiT_b.exit, label %.lr.ph.i.i, !llvm.loop !28 _ZN5boost8charconv6detail19total_buffer_lengthIiEEiiT_b.exit: ; preds = %.lr.ph.i.i, %.loopexit %.0.lcssa.i.i = phi i32 [ 0, %.loopexit ], [ %77, %.lr.ph.i.i ] @@ -4255,7 +4245,7 @@ _ZN5boost8charconv6detail10num_digitsIjEEiT_.exit.i: ; preds = %117, %115, %111, %129 = mul nuw i64 %128, 100 %130 = add nuw nsw i64 %.010.i.i, 2 %131 = icmp samesign ult i64 %.010.i.i, 8 - br i1 %131, label %122, label %132, !llvm.loop !31 + br i1 %131, label %122, label %132, !llvm.loop !30 _ZN5boost8charconv6detail21to_chars_integer_implIjEENS0_15to_chars_resultEPcS4_T_.exit: ; preds = %_ZN5boost8charconv6detail10num_digitsIjEEiT_.exit.i call void @llvm.lifetime.end.p0(i64 10, ptr nonnull %6) #15 @@ -4340,7 +4330,7 @@ define linkonce_odr hidden { ptr, i32 } @_ZN5boost8charconv6detail5floffINS1_15m br i1 %.not1063, label %26, label %22 22: ; preds = %13 - store i8 45, ptr %2, align 1, !tbaa !23 + store i8 45, ptr %2, align 1, !tbaa !22 %23 = getelementptr inbounds nuw i8, ptr %2, i64 1 %24 = add i64 %16, -1 %25 = icmp eq i64 %24, 0 @@ -4418,7 +4408,7 @@ define linkonce_odr hidden { ptr, i32 } @_ZN5boost8charconv6detail5floffINS1_15m ] 53: ; preds = %52 - store i8 48, ptr %.0829, align 1, !tbaa !23 + store i8 48, ptr %.0829, align 1, !tbaa !22 %54 = getelementptr inbounds nuw i8, ptr %.0829, i64 1 br label %_ZN5boost8charconv6detail16print_zero_fixedEPcmi.exit @@ -4427,7 +4417,7 @@ define linkonce_odr hidden { ptr, i32 } @_ZN5boost8charconv6detail5floffINS1_15m br i1 %56, label %57, label %59 57: ; preds = %55 - store i8 48, ptr %.0829, align 1, !tbaa !23 + store i8 48, ptr %.0829, align 1, !tbaa !22 %58 = getelementptr inbounds nuw i8, ptr %.0829, i64 1 br label %_ZN5boost8charconv6detail16print_zero_fixedEPcmi.exit @@ -4484,7 +4474,7 @@ define linkonce_odr hidden { ptr, i32 } @_ZN5boost8charconv6detail5floffINS1_15m %85 = mul nsw i32 %.0835, 315653 %86 = ashr i32 %85, 20 %87 = sub nsw i32 2, %86 - store i32 %87, ptr %8, align 4, !tbaa !32 + store i32 %87, ptr %8, align 4, !tbaa !31 %88 = sub nsw i32 294, %86 %89 = zext nneg i32 %88 to i64 %90 = getelementptr inbounds nuw [619 x %"struct.boost::charconv::detail::uint128"], ptr @_ZN5boost8charconv6detail22main_cache_holder_implILb1EE5cacheE, i64 0, i64 %89 @@ -4521,7 +4511,7 @@ define linkonce_odr hidden { ptr, i32 } @_ZN5boost8charconv6detail5floffINS1_15m %113 = mul nuw nsw i64 %.09532412, 100 %114 = add nsw i32 %.09482413, -2 %115 = icmp samesign ult i64 %.09532412, 100000000000000 - br i1 %115, label %.lr.ph, label %._crit_edge, !llvm.loop !37 + br i1 %115, label %.lr.ph, label %._crit_edge, !llvm.loop !36 ._crit_edge: ; preds = %.lr.ph, %83 %.0953.lcssa = phi i64 [ %110, %83 ], [ %113, %.lr.ph ] @@ -4556,7 +4546,7 @@ define linkonce_odr hidden { ptr, i32 } @_ZN5boost8charconv6detail5floffINS1_15m br i1 %brmerge.not, label %133, label %135 133: ; preds = %121 - store i8 48, ptr %.0829, align 1, !tbaa !23 + store i8 48, ptr %.0829, align 1, !tbaa !22 %134 = getelementptr inbounds nuw i8, ptr %.0829, i64 1 br label %135 @@ -4580,7 +4570,7 @@ define linkonce_odr hidden { ptr, i32 } @_ZN5boost8charconv6detail5floffINS1_15m br i1 %brmerge1139.not, label %144, label %149 144: ; preds = %138 - store i8 48, ptr %.0829, align 1, !tbaa !23 + store i8 48, ptr %.0829, align 1, !tbaa !22 %145 = getelementptr inbounds nuw i8, ptr %.0829, i64 1 %146 = zext nneg i32 %120 to i64 %147 = getelementptr i8, ptr %.0829, i64 %146 @@ -4602,7 +4592,7 @@ define linkonce_odr hidden { ptr, i32 } @_ZN5boost8charconv6detail5floffINS1_15m br i1 %154, label %155, label %157 155: ; preds = %153 - store i8 48, ptr %.0829, align 1, !tbaa !23 + store i8 48, ptr %.0829, align 1, !tbaa !22 %156 = getelementptr inbounds nuw i8, ptr %.0829, i64 1 br label %.thread2004 @@ -4638,7 +4628,7 @@ define linkonce_odr hidden { ptr, i32 } @_ZN5boost8charconv6detail5floffINS1_15m br i1 %172, label %174, label %176 174: ; preds = %173 - store i8 48, ptr %.0829, align 1, !tbaa !23 + store i8 48, ptr %.0829, align 1, !tbaa !22 %175 = getelementptr inbounds nuw i8, ptr %.0829, i64 1 br label %.thread2004 @@ -4663,7 +4653,7 @@ define linkonce_odr hidden { ptr, i32 } @_ZN5boost8charconv6detail5floffINS1_15m br i1 %172, label %186, label %188 186: ; preds = %185 - store i8 49, ptr %.0829, align 1, !tbaa !23 + store i8 49, ptr %.0829, align 1, !tbaa !22 %187 = getelementptr inbounds nuw i8, ptr %.0829, i64 1 br label %.thread2004 @@ -4686,7 +4676,7 @@ define linkonce_odr hidden { ptr, i32 } @_ZN5boost8charconv6detail5floffINS1_15m %198 = sext i32 %1 to i64 %199 = getelementptr i8, ptr %.0829, i64 %198 %200 = getelementptr i8, ptr %199, i64 1 - store i8 49, ptr %200, align 1, !tbaa !23 + store i8 49, ptr %200, align 1, !tbaa !22 %201 = getelementptr inbounds nuw i8, ptr %195, i64 %189 br label %.thread2004 @@ -4707,7 +4697,7 @@ define linkonce_odr hidden { ptr, i32 } @_ZN5boost8charconv6detail5floffINS1_15m 211: ; preds = %._crit_edge %spec.store.select = tail call i32 @llvm.umax.i32(i32 %1, i32 1) - store i8 48, ptr %.0829, align 1, !tbaa !23 + store i8 48, ptr %.0829, align 1, !tbaa !22 %212 = getelementptr inbounds nuw i8, ptr %.0829, i64 1 %213 = icmp sgt i32 %120, 0 %214 = icmp slt i32 %120, %spec.store.select @@ -4753,7 +4743,7 @@ define linkonce_odr hidden { ptr, i32 } @_ZN5boost8charconv6detail5floffINS1_15m 237: ; preds = %232 %238 = trunc nuw nsw i64 %230 to i8 %239 = add nuw nsw i8 %238, 48 - store i8 %239, ptr %.4, align 1, !tbaa !23 + store i8 %239, ptr %.4, align 1, !tbaa !22 %240 = getelementptr inbounds nuw i8, ptr %.4, i64 1 br label %.thread2017 @@ -4864,7 +4854,7 @@ define linkonce_odr hidden { ptr, i32 } @_ZN5boost8charconv6detail5floffINS1_15m 303: ; preds = %294 %304 = trunc nuw i64 %296 to i8 %305 = or disjoint i8 %304, 48 - store i8 %305, ptr %300, align 1, !tbaa !23 + store i8 %305, ptr %300, align 1, !tbaa !22 br label %310 306: ; preds = %294 @@ -4907,7 +4897,7 @@ define linkonce_odr hidden { ptr, i32 } @_ZN5boost8charconv6detail5floffINS1_15m %322 = getelementptr inbounds nuw i8, ptr %.132424, i64 2 %323 = add nsw i32 %.19572423, -2 %324 = icmp samesign ugt i32 %.19572423, 2 - br i1 %324, label %.lr.ph2426, label %.loopexit2380, !llvm.loop !38 + br i1 %324, label %.lr.ph2426, label %.loopexit2380, !llvm.loop !37 ._crit_edge2419: ; preds = %.lr.ph2418, %.preheader2381 %.2963.lcssa = phi i64 [ %.0961, %.preheader2381 ], [ %327, %.lr.ph2418 ] @@ -4929,7 +4919,7 @@ define linkonce_odr hidden { ptr, i32 } @_ZN5boost8charconv6detail5floffINS1_15m %331 = getelementptr inbounds nuw i8, ptr %.142417, i64 2 %332 = add nuw nsw i32 %.09702415, 1 %exitcond.not = icmp eq i32 %332, %314 - br i1 %exitcond.not, label %._crit_edge2419, label %.lr.ph2418, !llvm.loop !39 + br i1 %exitcond.not, label %._crit_edge2419, label %.lr.ph2418, !llvm.loop !38 333: ; preds = %._crit_edge2419 %334 = and i32 %301, 1 @@ -4944,7 +4934,7 @@ define linkonce_odr hidden { ptr, i32 } @_ZN5boost8charconv6detail5floffINS1_15m %341 = add i32 %.0956, %340 %342 = sext i32 %341 to i64 %343 = getelementptr inbounds [8 x i32], ptr @_ZN5boost8charconv6detail34additional_static_data_holder_implILb1EE37fractional_part_rounding_thresholds32E, i64 0, i64 %342 - %344 = load i32, ptr %343, align 4, !tbaa !32 + %344 = load i32, ptr %343, align 4, !tbaa !31 %.not.i = icmp ugt i32 %344, %339 br i1 %.not.i, label %_ZN5boost8charconv6detailL42check_rounding_condition_inside_subsegmentIbJETnNSt9enable_ifIXsr3std7is_sameIT_bEE5valueEbE4typeELb1EEEbjjiS4_DpT0_.exit, label %_ZN5boost8charconv6detailL42check_rounding_condition_inside_subsegmentIbJETnNSt9enable_ifIXsr3std7is_sameIT_bEE5valueEbE4typeELb1EEEbjjiS4_DpT0_.exit.thread @@ -5134,7 +5124,7 @@ _ZN5boost8charconv6detailL65check_rounding_condition_subsegment_boundary_with_ne %440 = getelementptr inbounds nuw i8, ptr %.182437, i64 2 %441 = add nsw i32 %.49602436, -2 %442 = icmp samesign ugt i32 %.49602436, 2 - br i1 %442, label %.lr.ph2439, label %.loopexit2379, !llvm.loop !40 + br i1 %442, label %.lr.ph2439, label %.loopexit2379, !llvm.loop !39 ._crit_edge2432: ; preds = %.lr.ph2431, %.preheader %.7968.lcssa = phi i64 [ %.4965, %.preheader ], [ %445, %.lr.ph2431 ] @@ -5156,7 +5146,7 @@ _ZN5boost8charconv6detailL65check_rounding_condition_subsegment_boundary_with_ne %449 = getelementptr inbounds nuw i8, ptr %.192430, i64 2 %450 = add nuw nsw i32 %.09762428, 1 %exitcond2560.not = icmp eq i32 %450, %432 - br i1 %exitcond2560.not, label %._crit_edge2432, label %.lr.ph2431, !llvm.loop !41 + br i1 %exitcond2560.not, label %._crit_edge2432, label %.lr.ph2431, !llvm.loop !40 451: ; preds = %._crit_edge2432 %452 = and i32 %.6923, 1 @@ -5171,7 +5161,7 @@ _ZN5boost8charconv6detailL65check_rounding_condition_subsegment_boundary_with_ne %459 = add i32 %.2958, %458 %460 = sext i32 %459 to i64 %461 = getelementptr inbounds [8 x i32], ptr @_ZN5boost8charconv6detail34additional_static_data_holder_implILb1EE37fractional_part_rounding_thresholds32E, i64 0, i64 %460 - %462 = load i32, ptr %461, align 4, !tbaa !32 + %462 = load i32, ptr %461, align 4, !tbaa !31 %.not.i1143 = icmp ugt i32 %462, %457 br i1 %.not.i1143, label %_ZN5boost8charconv6detailL42check_rounding_condition_inside_subsegmentIbJETnNSt9enable_ifIXsr3std7is_sameIT_bEE5valueEbE4typeELb1EEEbjjiS4_DpT0_.exit1145, label %_ZN5boost8charconv6detailL42check_rounding_condition_inside_subsegmentIbJETnNSt9enable_ifIXsr3std7is_sameIT_bEE5valueEbE4typeELb1EEEbjjiS4_DpT0_.exit1145.thread @@ -5287,28 +5277,28 @@ _ZN5boost8charconv6detailL42check_rounding_condition_inside_subsegmentIbJETnNSt9 %.32045 = phi ptr [ %.3, %508 ], [ %487, %482 ], [ %.202645, %501 ] %.08722044 = phi i32 [ %.0872, %508 ], [ %.48762644, %482 ], [ %425, %501 ] %.09172043 = phi i32 [ %.0917, %508 ], [ %488, %482 ], [ 0, %501 ] - %509 = load i32, ptr %8, align 4, !tbaa !32 + %509 = load i32, ptr %8, align 4, !tbaa !31 %510 = add nsw i32 %509, 294 %511 = udiv i32 %510, 22 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #15 %512 = mul nuw nsw i32 %511, 22 %513 = add nsw i32 %512, -272 %514 = sub nsw i32 %513, %509 - store i32 %514, ptr %9, align 4, !tbaa !32 - store i32 %513, ptr %8, align 4, !tbaa !32 + store i32 %514, ptr %9, align 4, !tbaa !31 + store i32 %513, ptr %8, align 4, !tbaa !31 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #15 %515 = load i64, ptr %7, align 8, !tbaa !14 %516 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %515, i1 false) %517 = trunc nuw nsw i64 %516 to i32 %518 = add nsw i32 %.0835, %517 - store i32 %518, ptr %10, align 4, !tbaa !32 + store i32 %518, ptr %10, align 4, !tbaa !31 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11) #15 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(24) %11, i8 0, i64 24, i1 false) %519 = zext nneg i32 %511 to i64 %520 = getelementptr inbounds nuw [64 x %"struct.boost::charconv::detail::extended_cache_long_impl::multiplier_index_info"], ptr @_ZN5boost8charconv6detail24extended_cache_long_implILb1EE27multiplier_index_info_tableE, i64 0, i64 %519 - %.sroa.0.0.copyload.i = load i16, ptr %520, align 4, !tbaa !42 + %.sroa.0.0.copyload.i = load i16, ptr %520, align 4, !tbaa !41 %.sroa.4.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %520, i64 2 - %.sroa.4.0.copyload.i = load i16, ptr %.sroa.4.0..sroa_idx.i, align 2, !tbaa !42 + %.sroa.4.0.copyload.i = load i16, ptr %.sroa.4.0..sroa_idx.i, align 2, !tbaa !41 %521 = zext i16 %.sroa.4.0.copyload.i to i32 %522 = add nsw i32 %.0835, %521 %523 = add nsw i32 %522, -977 @@ -5317,7 +5307,7 @@ _ZN5boost8charconv6detailL42check_rounding_condition_inside_subsegmentIbJETnNSt9 %526 = add nuw nsw i32 %511, 1 %527 = zext nneg i32 %526 to i64 %528 = getelementptr inbounds nuw [64 x %"struct.boost::charconv::detail::extended_cache_long_impl::multiplier_index_info"], ptr @_ZN5boost8charconv6detail24extended_cache_long_implILb1EE27multiplier_index_info_tableE, i64 0, i64 %527 - %529 = load i16, ptr %528, align 4, !tbaa !44 + %529 = load i16, ptr %528, align 4, !tbaa !43 %530 = zext i16 %529 to i32 %531 = icmp slt i32 %523, %525 br i1 %531, label %532, label %558 @@ -5595,7 +5585,7 @@ _ZN5boost8charconv6detail22fixed_point_calculatorILm3EE26generate_and_discard_lo %712 = lshr i64 %711, 32 %713 = trunc nuw nsw i64 %712 to i8 %714 = or disjoint i8 %713, 48 - store i8 %714, ptr %.32045, align 1, !tbaa !23 + store i8 %714, ptr %.32045, align 1, !tbaa !22 %715 = getelementptr inbounds nuw i8, ptr %.32045, i64 1 br label %.loopexit @@ -5630,7 +5620,7 @@ _ZN5boost8charconv6detail22fixed_point_calculatorILm3EE26generate_and_discard_lo %730 = mul i64 %.0910.i, %.0910.i %731 = lshr i32 %.0811.i, 1 %.not13.i = icmp samesign ult i32 %.0811.i, 2 - br i1 %.not13.i, label %_ZN5boost8charconv6detail22fixed_point_calculatorILm3EE13discard_upperImEEvT_Pmm.exit1206, label %.lr.ph.i, !llvm.loop !46 + br i1 %.not13.i, label %_ZN5boost8charconv6detail22fixed_point_calculatorILm3EE13discard_upperImEEvT_Pmm.exit1206, label %.lr.ph.i, !llvm.loop !45 _ZN5boost8charconv6detail22fixed_point_calculatorILm3EE13discard_upperImEEvT_Pmm.exit1206: ; preds = %.lr.ph.i %732 = mul i64 %664, %spec.select.i @@ -5691,7 +5681,7 @@ _ZN5boost8charconv6detail22fixed_point_calculatorILm3EE26generate_and_discard_lo %778 = lshr i64 %777, 32 %779 = trunc nuw nsw i64 %778 to i8 %780 = add nuw nsw i8 %779, 48 - store i8 %780, ptr %.32045, align 1, !tbaa !23 + store i8 %780, ptr %.32045, align 1, !tbaa !22 br label %788 781: ; preds = %_ZN5boost8charconv6detail22fixed_point_calculatorILm3EE26generate_and_discard_lowerImEET_S5_Pmm.exit1220 @@ -5709,7 +5699,7 @@ _ZN5boost8charconv6detail22fixed_point_calculatorILm3EE26generate_and_discard_lo %.sink2741 = phi i64 [ 2, %781 ], [ 1, %774 ] %.0986 = phi i64 [ %784, %781 ], [ %777, %774 ] %789 = getelementptr inbounds nuw i8, ptr %.32045, i64 %.sink2741 - %.pr = load i32, ptr %9, align 4, !tbaa !32 + %.pr = load i32, ptr %9, align 4, !tbaa !31 %790 = icmp sgt i32 %.pr, 2 br i1 %790, label %.lr.ph2484, label %.loopexit @@ -5724,11 +5714,11 @@ _ZN5boost8charconv6detail22fixed_point_calculatorILm3EE26generate_and_discard_lo %795 = load i16, ptr %794, align 2 store i16 %795, ptr %.332482, align 1 %796 = getelementptr inbounds nuw i8, ptr %.332482, i64 2 - %797 = load i32, ptr %9, align 4, !tbaa !32 + %797 = load i32, ptr %9, align 4, !tbaa !31 %798 = add nsw i32 %797, -2 - store i32 %798, ptr %9, align 4, !tbaa !32 + store i32 %798, ptr %9, align 4, !tbaa !31 %799 = icmp sgt i32 %797, 4 - br i1 %799, label %.lr.ph2484, label %.loopexit, !llvm.loop !47 + br i1 %799, label %.lr.ph2484, label %.loopexit, !llvm.loop !46 _ZN5boost8charconv6detail22fixed_point_calculatorILm3EE26generate_and_discard_lowerImEET_S5_Pmm.exit1223: ; preds = %_ZN5boost8charconv6detail22fixed_point_calculatorILm3EE13discard_upperImEEvT_Pmm.exit1206 %800 = mul nuw nsw i128 %751, 10000000000000000 @@ -5770,7 +5760,7 @@ _ZN5boost8charconv6detail22fixed_point_calculatorILm3EE26generate_and_discard_lo store i16 %831, ptr %824, align 1 %832 = getelementptr inbounds nuw i8, ptr %.32045, i64 10 %833 = add nsw i32 %514, -10 - store i32 %833, ptr %9, align 4, !tbaa !32 + store i32 %833, ptr %9, align 4, !tbaa !31 %834 = icmp samesign ugt i32 %514, 11 br i1 %834, label %.lr.ph2476, label %._crit_edge2477 @@ -5785,11 +5775,11 @@ _ZN5boost8charconv6detail22fixed_point_calculatorILm3EE26generate_and_discard_lo %839 = load i16, ptr %838, align 2 store i16 %839, ptr %.342475, align 1 %840 = getelementptr inbounds nuw i8, ptr %.342475, i64 2 - %841 = load i32, ptr %9, align 4, !tbaa !32 + %841 = load i32, ptr %9, align 4, !tbaa !31 %842 = add nsw i32 %841, -2 - store i32 %842, ptr %9, align 4, !tbaa !32 + store i32 %842, ptr %9, align 4, !tbaa !31 %843 = icmp sgt i32 %841, 3 - br i1 %843, label %.lr.ph2476, label %._crit_edge2477, !llvm.loop !48 + br i1 %843, label %.lr.ph2476, label %._crit_edge2477, !llvm.loop !47 ._crit_edge2477: ; preds = %.lr.ph2476, %_ZN5boost8charconv6detail22fixed_point_calculatorILm3EE26generate_and_discard_lowerImEET_S5_Pmm.exit1223 %storemerge.lcssa = phi i32 [ %833, %_ZN5boost8charconv6detail22fixed_point_calculatorILm3EE26generate_and_discard_lowerImEET_S5_Pmm.exit1223 ], [ %842, %.lr.ph2476 ] @@ -5804,7 +5794,7 @@ _ZN5boost8charconv6detail22fixed_point_calculatorILm3EE26generate_and_discard_lo %847 = lshr i64 %846, 32 %848 = trunc nuw nsw i64 %847 to i8 %849 = or disjoint i8 %848, 48 - store i8 %849, ptr %.34.lcssa, align 1, !tbaa !23 + store i8 %849, ptr %.34.lcssa, align 1, !tbaa !22 %850 = getelementptr inbounds nuw i8, ptr %.34.lcssa, i64 1 br label %.loopexit @@ -5914,7 +5904,7 @@ _ZN5boost8charconv6detail22fixed_point_calculatorILm3EE26generate_and_discard_lo %923 = lshr i64 %922, 32 %924 = trunc nuw nsw i64 %923 to i8 %925 = or disjoint i8 %924, 48 - store i8 %925, ptr %.32045, align 1, !tbaa !23 + store i8 %925, ptr %.32045, align 1, !tbaa !22 %926 = getelementptr inbounds nuw i8, ptr %.32045, i64 1 br label %.lr.ph2471.preheader @@ -5931,7 +5921,7 @@ _ZN5boost8charconv6detail22fixed_point_calculatorILm3EE26generate_and_discard_lo %931 = lshr i64 %930, 32 %932 = trunc nuw nsw i64 %931 to i8 %933 = or disjoint i8 %932, 48 - store i8 %933, ptr %.32045, align 1, !tbaa !23 + store i8 %933, ptr %.32045, align 1, !tbaa !22 %934 = getelementptr inbounds nuw i8, ptr %.32045, i64 1 br label %._crit_edge2472 @@ -5949,7 +5939,7 @@ _ZN5boost8charconv6detail22fixed_point_calculatorILm3EE26generate_and_discard_lo %940 = getelementptr inbounds nuw i8, ptr %.372469, i64 2 %941 = add nsw i32 %.110122467, -2 %942 = icmp samesign ugt i32 %.110122467, 3 - br i1 %942, label %.lr.ph2471, label %._crit_edge2472, !llvm.loop !49 + br i1 %942, label %.lr.ph2471, label %._crit_edge2472, !llvm.loop !48 ._crit_edge2472: ; preds = %.lr.ph2471, %927 %.37.lcssa = phi ptr [ %934, %927 ], [ %940, %.lr.ph2471 ] @@ -6170,7 +6160,7 @@ _ZN5boost8charconv6detail18has_further_digitsILj0ELj0ENS1_24extended_cache_long_ %1070 = mul i64 %.0910.i1360, %.0910.i1360 %1071 = lshr i32 %.0811.i1359, 1 %.not13.i1363 = icmp samesign ult i32 %.0811.i1359, 2 - br i1 %.not13.i1363, label %_ZN5boost8charconv6detail22fixed_point_calculatorILm3EE26generate_and_discard_lowerImEET_S5_Pmm.exit1229, label %.lr.ph.i1357, !llvm.loop !46 + br i1 %.not13.i1363, label %_ZN5boost8charconv6detail22fixed_point_calculatorILm3EE26generate_and_discard_lowerImEET_S5_Pmm.exit1229, label %.lr.ph.i1357, !llvm.loop !45 _ZN5boost8charconv6detail22fixed_point_calculatorILm3EE26generate_and_discard_lowerImEET_S5_Pmm.exit1229: ; preds = %.lr.ph.i1357 %1072 = mul i64 %664, %spec.select.i1362 @@ -6218,7 +6208,7 @@ _ZN5boost8charconv6detail22fixed_point_calculatorILm3EE26generate_and_discard_lo %1111 = add nuw nsw i64 %1110, %1106 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #15 %1112 = sub nsw i32 %514, %.09172043 - store i32 %1112, ptr %9, align 4, !tbaa !32 + store i32 %1112, ptr %9, align 4, !tbaa !31 %1113 = and i32 %.09172043, 1 %.not1091 = icmp eq i32 %1113, 0 br i1 %.not1091, label %1123, label %1114 @@ -6235,7 +6225,7 @@ _ZN5boost8charconv6detail22fixed_point_calculatorILm3EE26generate_and_discard_lo 1120: ; preds = %1114 %1121 = trunc nuw nsw i64 %1118 to i8 %1122 = add nuw nsw i8 %1121, 48 - store i8 %1122, ptr %.32045, align 1, !tbaa !23 + store i8 %1122, ptr %.32045, align 1, !tbaa !22 br label %1139 1123: ; preds = %_ZN5boost8charconv6detail22fixed_point_calculatorILm3EE26generate_and_discard_lowerImEET_S5_Pmm.exit1229 @@ -6308,7 +6298,7 @@ _ZN5boost8charconv6detailL65check_rounding_condition_subsegment_boundary_with_ne ._crit_edge2465: ; preds = %.lr.ph2464, %1139 %.44.lcssa = phi ptr [ %1140, %1139 ], [ %1153, %.lr.ph2464 ] - %1144 = load i32, ptr %9, align 4, !tbaa !32 + %1144 = load i32, ptr %9, align 4, !tbaa !31 %.not1092 = icmp eq i32 %1144, 0 %1145 = load i64, ptr %12, align 8, !tbaa !14 %1146 = and i64 %1145, 4294967295 @@ -6329,14 +6319,14 @@ _ZN5boost8charconv6detailL65check_rounding_condition_subsegment_boundary_with_ne %1153 = getelementptr inbounds nuw i8, ptr %.442462, i64 2 %1154 = add nuw nsw i32 %.010132461, 1 %exitcond2563.not = icmp eq i32 %1154, %1143 - br i1 %exitcond2563.not, label %._crit_edge2465, label %.lr.ph2464, !llvm.loop !50 + br i1 %exitcond2563.not, label %._crit_edge2465, label %.lr.ph2464, !llvm.loop !49 1155: ; preds = %._crit_edge2465 %1156 = mul nuw nsw i64 %1146, 100 %1157 = lshr i64 %1156, 32 %.pre2582 = load i64, ptr %7, align 8, !tbaa !14 - %.pre2583 = load i32, ptr %10, align 4, !tbaa !32 - %.pre2584 = load i32, ptr %8, align 4, !tbaa !32 + %.pre2583 = load i32, ptr %10, align 4, !tbaa !31 + %.pre2584 = load i32, ptr %8, align 4, !tbaa !31 br label %1158 1158: ; preds = %1123, %1114, %1155 @@ -6371,7 +6361,7 @@ _ZN5boost8charconv6detail18has_further_digitsILj1ELj0ENS1_24extended_cache_long_ %1174 = add nsw i32 %1162, -1 %1175 = sext i32 %1174 to i64 %1176 = getelementptr inbounds [8 x i32], ptr @_ZN5boost8charconv6detail34additional_static_data_holder_implILb1EE37fractional_part_rounding_thresholds32E, i64 0, i64 %1175 - %1177 = load i32, ptr %1176, align 4, !tbaa !32 + %1177 = load i32, ptr %1176, align 4, !tbaa !31 %.not.i1152 = icmp ugt i32 %1177, %1164 br i1 %.not.i1152, label %_ZN5boost8charconv6detailL42check_rounding_condition_inside_subsegmentIbJETnNSt9enable_ifIXsr3std7is_sameIT_bEE5valueEbE4typeELb1EEEbjjiS4_DpT0_.exit1154, label %_ZN5boost8charconv6detailL42check_rounding_condition_inside_subsegmentIbJETnNSt9enable_ifIXsr3std7is_sameIT_bEE5valueEbE4typeELb1EEEbjjiS4_DpT0_.exit1154.thread @@ -6394,8 +6384,8 @@ _ZN5boost8charconv6detailL42check_rounding_condition_inside_subsegmentIbJETnNSt9 %1186 = icmp ne i32 %1185, 0 %1187 = lshr i32 %1184, 1 %1188 = load i64, ptr %7, align 8, !tbaa !14 - %1189 = load i32, ptr %10, align 4, !tbaa !32 - %1190 = load i32, ptr %8, align 4, !tbaa !32 + %1189 = load i32, ptr %10, align 4, !tbaa !31 + %1190 = load i32, ptr %8, align 4, !tbaa !31 %1191 = icmp slt i32 %1190, -8 %1192 = add nsw i32 %1190, %1189 %1193 = icmp slt i32 %1192, 1 @@ -6515,7 +6505,7 @@ _ZN5boost8charconv6detail22fixed_point_calculatorILm3EE8generateImEET_S5_Pmm.exi %1259 = mul i64 %.0910.i1390, %.0910.i1390 %1260 = lshr i32 %.0811.i1389, 1 %.not13.i1393 = icmp samesign ult i32 %.0811.i1389, 2 - br i1 %.not13.i1393, label %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1394, label %.lr.ph.i1387, !llvm.loop !46 + br i1 %.not13.i1393, label %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1394, label %.lr.ph.i1387, !llvm.loop !45 _ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1394: ; preds = %.lr.ph.i1387, %1251 %.0.lcssa.i1386 = phi i64 [ 1, %1251 ], [ %spec.select.i1392, %.lr.ph.i1387 ] @@ -6530,7 +6520,7 @@ _ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1394: ; preds = %.lr.p %1266 = lshr i64 %1265, 32 %1267 = trunc nuw nsw i64 %1266 to i8 %1268 = or disjoint i8 %1267, 48 - store i8 %1268, ptr %.32045, align 1, !tbaa !23 + store i8 %1268, ptr %.32045, align 1, !tbaa !22 %1269 = getelementptr inbounds nuw i8, ptr %.32045, i64 1 br label %1270 @@ -6560,7 +6550,7 @@ _ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1394: ; preds = %.lr.p %1277 = getelementptr inbounds nuw i8, ptr %.462443, i64 2 %1278 = add nsw i32 %.19892442, -2 %1279 = icmp samesign ugt i32 %.19892442, 3 - br i1 %1279, label %.lr.ph2445, label %_ZN5boost8charconv6detailL65check_rounding_condition_subsegment_boundary_with_next_subsegmentINS1_32uint_with_known_number_of_digitsILj7ELb1EEEbJETnNSt9enable_ifIXsr3std7is_sameIT0_bEE5valueEbE4typeELb1EEEbjT_S6_DpT1_.exit.thread, !llvm.loop !51 + br i1 %1279, label %.lr.ph2445, label %_ZN5boost8charconv6detailL65check_rounding_condition_subsegment_boundary_with_next_subsegmentINS1_32uint_with_known_number_of_digitsILj7ELb1EEEbJETnNSt9enable_ifIXsr3std7is_sameIT0_bEE5valueEbE4typeELb1EEEbjT_S6_DpT1_.exit.thread, !llvm.loop !50 1280: ; preds = %1239 %1281 = and i32 %.09172043, 1 @@ -6593,7 +6583,7 @@ _ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1394: ; preds = %.lr.p %1291 = mul i64 %.0910.i1399, %.0910.i1399 %1292 = lshr i32 %.0811.i1398, 1 %.not13.i1402 = icmp samesign ult i32 %.0811.i1398, 2 - br i1 %.not13.i1402, label %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1403, label %.lr.ph.i1396, !llvm.loop !46 + br i1 %.not13.i1402, label %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1403, label %.lr.ph.i1396, !llvm.loop !45 _ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1403: ; preds = %.lr.ph.i1396, %1287 %.0.lcssa.i1395 = phi i64 [ 1, %1287 ], [ %spec.select.i1401, %.lr.ph.i1396 ] @@ -6612,7 +6602,7 @@ _ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1403: ; preds = %.lr.p 1300: ; preds = %1296 %1301 = trunc nuw nsw i64 %1297 to i8 %1302 = add nuw nsw i8 %1301, 48 - store i8 %1302, ptr %.32045, align 1, !tbaa !23 + store i8 %1302, ptr %.32045, align 1, !tbaa !22 br label %1350 1303: ; preds = %1280 @@ -6681,7 +6671,7 @@ _ZN5boost8charconv6detailL65check_rounding_condition_subsegment_boundary_with_ne %1334 = mul i64 %.0910.i1410, %.0910.i1410 %1335 = lshr i32 %.0811.i1409, 1 %.not13.i1413 = icmp samesign ult i32 %.0811.i1409, 2 - br i1 %.not13.i1413, label %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1414, label %.lr.ph.i1407, !llvm.loop !46 + br i1 %.not13.i1413, label %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1414, label %.lr.ph.i1407, !llvm.loop !45 _ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1414: ; preds = %.lr.ph.i1407, %1326 %.0.lcssa.i1406 = phi i64 [ 1, %1326 ], [ %spec.select.i1412, %.lr.ph.i1407 ] @@ -6735,8 +6725,8 @@ _ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1414: ; preds = %.lr.p %1362 = mul nuw nsw i64 %1361, 100 %1363 = lshr i64 %1362, 32 %.pre.pre = load i64, ptr %7, align 8, !tbaa !14 - %.pre2570.pre = load i32, ptr %10, align 4, !tbaa !32 - %.pre2571.pre = load i32, ptr %8, align 4, !tbaa !32 + %.pre2570.pre = load i32, ptr %10, align 4, !tbaa !31 + %.pre2571.pre = load i32, ptr %8, align 4, !tbaa !31 br label %1364 1364: ; preds = %1341, %1296, %1360 @@ -6813,7 +6803,7 @@ _ZN5boost8charconv6detail18has_further_digitsILj1ELj16ENS1_24extended_cache_long %1396 = add nsw i32 %.4992, -1 %1397 = sext i32 %1396 to i64 %1398 = getelementptr inbounds [8 x i32], ptr @_ZN5boost8charconv6detail34additional_static_data_holder_implILb1EE37fractional_part_rounding_thresholds32E, i64 0, i64 %1397 - %1399 = load i32, ptr %1398, align 4, !tbaa !32 + %1399 = load i32, ptr %1398, align 4, !tbaa !31 %.not.i1155 = icmp ugt i32 %1399, %1386 br i1 %.not.i1155, label %_ZN5boost8charconv6detailL42check_rounding_condition_inside_subsegmentIbJETnNSt9enable_ifIXsr3std7is_sameIT_bEE5valueEbE4typeELb1EEEbjjiS4_DpT0_.exit1157, label %_ZN5boost8charconv6detailL65check_rounding_condition_subsegment_boundary_with_next_subsegmentINS1_32uint_with_known_number_of_digitsILj7ELb1EEEbJETnNSt9enable_ifIXsr3std7is_sameIT0_bEE5valueEbE4typeELb1EEEbjT_S6_DpT1_.exit.thread @@ -6870,7 +6860,7 @@ _ZN5boost8charconv6detailL65check_rounding_condition_subsegment_boundary_with_ne %1423 = lshr i64 %1422, 32 %1424 = trunc i64 %1423 to i8 %1425 = add i8 %1424, 48 - store i8 %1425, ptr %.5421382144, align 1, !tbaa !23 + store i8 %1425, ptr %.5421382144, align 1, !tbaa !22 %1426 = getelementptr inbounds nuw i8, ptr %.5421382144, i64 1 br label %.lr.ph2451.preheader @@ -6893,7 +6883,7 @@ _ZN5boost8charconv6detailL65check_rounding_condition_subsegment_boundary_with_ne %1431 = mul i64 %.0910.i1424, %.0910.i1424 %1432 = lshr i32 %.0811.i1423, 1 %.not13.i1427 = icmp samesign ult i32 %.0811.i1423, 2 - br i1 %.not13.i1427, label %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1428, label %.lr.ph.i1421, !llvm.loop !46 + br i1 %.not13.i1427, label %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1428, label %.lr.ph.i1421, !llvm.loop !45 _ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1428: ; preds = %.lr.ph.i1421 %1433 = mul i64 %spec.select.i1426, %1417 @@ -6907,7 +6897,7 @@ _ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1428: ; preds = %.lr.p %1438 = lshr i64 %1437, 32 %1439 = trunc nuw nsw i64 %1438 to i8 %1440 = or disjoint i8 %1439, 48 - store i8 %1440, ptr %.32045, align 1, !tbaa !23 + store i8 %1440, ptr %.32045, align 1, !tbaa !22 %1441 = getelementptr inbounds nuw i8, ptr %.32045, i64 1 br label %1442 @@ -6938,7 +6928,7 @@ _ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1428: ; preds = %.lr.p %1450 = getelementptr inbounds nuw i8, ptr %.562449, i64 2 %1451 = add nsw i32 %.210032447, -2 %1452 = icmp samesign ugt i32 %.210032447, 3 - br i1 %1452, label %.lr.ph2451, label %_ZN5boost8charconv6detail22fixed_point_calculatorILm3EE26generate_and_discard_lowerImEET_S5_Pmm.exit1232, !llvm.loop !52 + br i1 %1452, label %.lr.ph2451, label %_ZN5boost8charconv6detail22fixed_point_calculatorILm3EE26generate_and_discard_lowerImEET_S5_Pmm.exit1232, !llvm.loop !51 _ZN5boost8charconv6detail22fixed_point_calculatorILm3EE26generate_and_discard_lowerImEET_S5_Pmm.exit1232: ; preds = %.lr.ph2451, %1442 %1453 = phi i32 [ %1418, %1442 ], [ %1444, %.lr.ph2451 ] @@ -7021,7 +7011,7 @@ _ZN5boost8charconv6detail22fixed_point_calculatorILm3EE26generate_and_discard_lo %1502 = mul i64 %.0910.i1439, %.0910.i1439 %1503 = lshr i32 %.0811.i1438, 1 %.not13.i1442 = icmp samesign ult i32 %.0811.i1438, 2 - br i1 %.not13.i1442, label %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1443, label %.lr.ph.i1436, !llvm.loop !46 + br i1 %.not13.i1442, label %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1443, label %.lr.ph.i1436, !llvm.loop !45 _ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1443: ; preds = %.lr.ph.i1436, %1498 %.0.lcssa.i1435 = phi i64 [ 1, %1498 ], [ %spec.select.i1441, %.lr.ph.i1436 ] @@ -7043,7 +7033,7 @@ _ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1443: ; preds = %.lr.p 1511: ; preds = %1507 %1512 = trunc i64 %1508 to i8 %1513 = add i8 %1512, 48 - store i8 %1513, ptr %.54213921532167, align 1, !tbaa !23 + store i8 %1513, ptr %.54213921532167, align 1, !tbaa !22 %1514 = getelementptr inbounds nuw i8, ptr %.54213921532167, i64 1 br label %1567 @@ -7060,8 +7050,8 @@ _ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1443: ; preds = %.lr.p 1518: ; preds = %.thread2168 %1519 = load i64, ptr %7, align 8, !tbaa !14 - %1520 = load i32, ptr %10, align 4, !tbaa !32 - %1521 = load i32, ptr %8, align 4, !tbaa !32 + %1520 = load i32, ptr %10, align 4, !tbaa !31 + %1521 = load i32, ptr %8, align 4, !tbaa !31 %1522 = icmp slt i32 %1521, -8 %1523 = add nsw i32 %1521, %1520 %1524 = icmp slt i32 %1523, 10 @@ -7122,7 +7112,7 @@ _ZN5boost8charconv6detailL65check_rounding_condition_subsegment_boundary_with_ne %1550 = mul i64 %.0910.i1451, %.0910.i1451 %1551 = lshr i32 %.0811.i1450, 1 %.not13.i1454 = icmp samesign ult i32 %.0811.i1450, 2 - br i1 %.not13.i1454, label %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1455, label %.lr.ph.i1448, !llvm.loop !46 + br i1 %.not13.i1454, label %_ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1455, label %.lr.ph.i1448, !llvm.loop !45 _ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1455: ; preds = %.lr.ph.i1448, %1542 %.0.lcssa.i1447 = phi i64 [ 1, %1542 ], [ %spec.select.i1453, %.lr.ph.i1448 ] @@ -7190,8 +7180,8 @@ _ZN5boost8charconv6detail13compute_powerImiEET_S3_T0_.exit1455: ; preds = %.lr.p %.28900 = trunc nuw nsw i64 %.28900.in to i32 %1581 = icmp eq i32 %.31004, 0 %.pre2572 = load i64, ptr %7, align 8, !tbaa !14 - %.pre2573 = load i32, ptr %10, align 4, !tbaa !32 - %.pre2574 = load i32, ptr %8, align 4, !tbaa !32 + %.pre2573 = load i32, ptr %10, align 4, !tbaa !31 + %.pre2574 = load i32, ptr %8, align 4, !tbaa !31 br i1 %1581, label %1582, label %1595 1582: ; preds = %1580 @@ -7250,7 +7240,7 @@ _ZN5boost8charconv6detail18has_further_digitsILj1ELj9ENS1_24extended_cache_long_ %1609 = add nsw i32 %.51006, -1 %1610 = sext i32 %1609 to i64 %1611 = getelementptr inbounds [8 x i32], ptr @_ZN5boost8charconv6detail34additional_static_data_holder_implILb1EE37fractional_part_rounding_thresholds32E, i64 0, i64 %1610 - %1612 = load i32, ptr %1611, align 4, !tbaa !32 + %1612 = load i32, ptr %1611, align 4, !tbaa !31 %.not.i1158 = icmp ugt i32 %1612, %1599 br i1 %.not.i1158, label %_ZN5boost8charconv6detailL42check_rounding_condition_inside_subsegmentIbJETnNSt9enable_ifIXsr3std7is_sameIT_bEE5valueEbE4typeELb1EEEbjjiS4_DpT0_.exit1160, label %.thread2227 @@ -7273,8 +7263,8 @@ _ZN5boost8charconv6detailL42check_rounding_condition_inside_subsegmentIbJETnNSt9 1623: ; preds = %1616 %1624 = trunc i64 %1619 to i32 %1625 = load i64, ptr %7, align 8, !tbaa !14 - %1626 = load i32, ptr %10, align 4, !tbaa !32 - %1627 = load i32, ptr %8, align 4, !tbaa !32 + %1626 = load i32, ptr %10, align 4, !tbaa !31 + %1627 = load i32, ptr %8, align 4, !tbaa !31 %1628 = icmp slt i32 %1627, -8 %1629 = add nsw i32 %1627, %1626 %1630 = icmp slt i32 %1629, 1 @@ -7307,7 +7297,7 @@ _ZN5boost8charconv6detailL42check_rounding_condition_inside_subsegmentIbJETnNSt9 1640: ; preds = %1616 %1641 = trunc nuw nsw i64 %1620 to i8 %1642 = add nuw nsw i8 %1641, 48 - store i8 %1642, ptr %.56.lcssa, align 1, !tbaa !23 + store i8 %1642, ptr %.56.lcssa, align 1, !tbaa !22 br label %1654 1643: ; preds = %_ZN5boost8charconv6detail22fixed_point_calculatorILm3EE26generate_and_discard_lowerImEET_S5_Pmm.exit1232 @@ -7321,8 +7311,8 @@ _ZN5boost8charconv6detailL42check_rounding_condition_inside_subsegmentIbJETnNSt9 ._crit_edge2575: ; preds = %1643 %1649 = trunc nuw nsw i64 %1647 to i32 %.pre2576 = load i64, ptr %7, align 8, !tbaa !14 - %.pre2578 = load i32, ptr %10, align 4, !tbaa !32 - %.pre2580 = load i32, ptr %8, align 4, !tbaa !32 + %.pre2578 = load i32, ptr %10, align 4, !tbaa !31 + %.pre2580 = load i32, ptr %8, align 4, !tbaa !31 br label %1671 1650: ; preds = %1643 @@ -7353,8 +7343,8 @@ _ZN5boost8charconv6detailL42check_rounding_condition_inside_subsegmentIbJETnNSt9 %1662 = trunc nuw nsw i64 %1661 to i32 %1663 = icmp slt i32 %1453, 9 %.pre2577 = load i64, ptr %7, align 8, !tbaa !14 - %.pre2579 = load i32, ptr %10, align 4, !tbaa !32 - %.pre2581 = load i32, ptr %8, align 4, !tbaa !32 + %.pre2579 = load i32, ptr %10, align 4, !tbaa !31 + %.pre2581 = load i32, ptr %8, align 4, !tbaa !31 br i1 %1663, label %1671, label %1692 .lr.ph2457: ; preds = %.lr.ph2457.preheader, %.lr.ph2457 @@ -7371,7 +7361,7 @@ _ZN5boost8charconv6detailL42check_rounding_condition_inside_subsegmentIbJETnNSt9 %1669 = getelementptr inbounds nuw i8, ptr %.662455, i64 2 %1670 = add nuw nsw i32 %.09712454, 1 %exitcond2561.not = icmp eq i32 %1670, %1658 - br i1 %exitcond2561.not, label %._crit_edge2458, label %.lr.ph2457, !llvm.loop !53 + br i1 %exitcond2561.not, label %._crit_edge2458, label %.lr.ph2457, !llvm.loop !52 1671: ; preds = %._crit_edge2575, %._crit_edge2458 %1672 = phi i32 [ %.pre2581, %._crit_edge2458 ], [ %.pre2580, %._crit_edge2575 ] @@ -7402,7 +7392,7 @@ _ZN5boost8charconv6detail18has_further_digitsILj1ELj0ENS1_24extended_cache_long_ %1685 = sub i32 8, %1453 %1686 = zext nneg i32 %1685 to i64 %1687 = getelementptr inbounds nuw [8 x i32], ptr @_ZN5boost8charconv6detail34additional_static_data_holder_implILb1EE37fractional_part_rounding_thresholds32E, i64 0, i64 %1686 - %1688 = load i32, ptr %1687, align 4, !tbaa !32 + %1688 = load i32, ptr %1687, align 4, !tbaa !31 %.not.i1164 = icmp ugt i32 %1688, %1675 br i1 %.not.i1164, label %_ZN5boost8charconv6detailL42check_rounding_condition_inside_subsegmentIbJETnNSt9enable_ifIXsr3std7is_sameIT_bEE5valueEbE4typeELb1EEEbjjiS4_DpT0_.exit1166, label %.thread1988.sink.split @@ -7452,8 +7442,8 @@ _ZN5boost8charconv6detail18has_further_digitsILj0ELj0ENS1_24extended_cache_long_ %.28945 = phi i32 [ %2084, %2082 ], [ %667, %.loopexit ] %.68 = phi ptr [ %2083, %2082 ], [ %.38, %.loopexit ] %1708 = load i64, ptr %7, align 8, !tbaa !14 - %1709 = load i32, ptr %10, align 4, !tbaa !32 - %1710 = load i32, ptr %8, align 4, !tbaa !32 + %1709 = load i32, ptr %10, align 4, !tbaa !31 + %1710 = load i32, ptr %8, align 4, !tbaa !31 %1711 = icmp slt i32 %1710, -8 %1712 = add nsw i32 %1710, %1709 %1713 = icmp slt i32 %1712, 1 @@ -7470,19 +7460,19 @@ _ZN5boost8charconv6detail18has_further_digitsILj0ELj0ENS1_24extended_cache_long_ _ZN5boost8charconv6detail18has_further_digitsILj1ELj0ENS1_24extended_cache_long_implILb1EEEEEbmiRiNS1_6uconstIXT_EEENS6_IXT0_EEE.exit1472.thread: ; preds = %1714, %1707 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %1718 = add nsw i32 %1710, 22 - store i32 %1718, ptr %8, align 4, !tbaa !32 + store i32 %1718, ptr %8, align 4, !tbaa !31 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(24) %11, i8 0, i64 24, i1 false) %1719 = getelementptr inbounds nuw [64 x %"struct.boost::charconv::detail::extended_cache_long_impl::multiplier_index_info"], ptr @_ZN5boost8charconv6detail24extended_cache_long_implILb1EE27multiplier_index_info_tableE, i64 0, i64 %indvars.iv.next - %.sroa.0.0.copyload.i1189 = load i16, ptr %1719, align 4, !tbaa !42 + %.sroa.0.0.copyload.i1189 = load i16, ptr %1719, align 4, !tbaa !41 %.sroa.4.0..sroa_idx.i1190 = getelementptr inbounds nuw i8, ptr %1719, i64 2 - %.sroa.4.0.copyload.i1191 = load i16, ptr %.sroa.4.0..sroa_idx.i1190, align 2, !tbaa !42 + %.sroa.4.0.copyload.i1191 = load i16, ptr %.sroa.4.0..sroa_idx.i1190, align 2, !tbaa !41 %1720 = zext i16 %.sroa.4.0.copyload.i1191 to i32 %.reass = add nsw i32 %invariant.op, %1720 %.reass2487 = add nsw i32 %invariant.op2486, %1720 %1721 = zext i16 %.sroa.0.0.copyload.i1189 to i32 %1722 = add nuw nsw i64 %indvars.iv, 2 %1723 = getelementptr inbounds nuw [64 x %"struct.boost::charconv::detail::extended_cache_long_impl::multiplier_index_info"], ptr @_ZN5boost8charconv6detail24extended_cache_long_implILb1EE27multiplier_index_info_tableE, i64 0, i64 %1722 - %1724 = load i16, ptr %1723, align 4, !tbaa !44 + %1724 = load i16, ptr %1723, align 4, !tbaa !43 %1725 = zext i16 %1724 to i32 %1726 = icmp slt i32 %.reass, %1721 br i1 %1726, label %1727, label %1753 @@ -7762,7 +7752,7 @@ _ZN5boost8charconv6detail22fixed_point_calculatorILm3EE8generateImEET_S5_Pmm.exi store i16 %1899, ptr %1896, align 1 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, 3 - br i1 %exitcond.not.i, label %_ZN5boost8charconv6detail14print_8_digitsEjPc.exit, label %1892, !llvm.loop !54 + br i1 %exitcond.not.i, label %_ZN5boost8charconv6detail14print_8_digitsEjPc.exit, label %1892, !llvm.loop !53 _ZN5boost8charconv6detail14print_8_digitsEjPc.exit: ; preds = %1892 %1900 = add nuw nsw i64 %.neg1103, %1881 @@ -7793,7 +7783,7 @@ _ZN5boost8charconv6detail14print_8_digitsEjPc.exit: ; preds = %1892 store i16 %1917, ptr %1914, align 1 %indvars.iv.next.i1487 = add nuw nsw i64 %indvars.iv.i1484, 1 %exitcond.not.i1488 = icmp eq i64 %indvars.iv.next.i1487, 3 - br i1 %exitcond.not.i1488, label %_ZN5boost8charconv6detail14print_8_digitsEjPc.exit1489, label %1910, !llvm.loop !54 + br i1 %exitcond.not.i1488, label %_ZN5boost8charconv6detail14print_8_digitsEjPc.exit1489, label %1910, !llvm.loop !53 _ZN5boost8charconv6detail14print_8_digitsEjPc.exit1489: ; preds = %1910 %1918 = icmp sgt i32 %.28945, 22 @@ -7848,7 +7838,7 @@ _ZN5boost8charconv6detail22fixed_point_calculatorILm3EE26generate_and_discard_lo %1957 = getelementptr inbounds nuw i8, ptr @_ZN5boost8charconv6detail34additional_static_data_holder_implILb1EE15radix_100_tableE, i64 %1956 %1958 = load i16, ptr %1957, align 2 store i16 %1958, ptr %1955, align 1 - br i1 %1952, label %1951, label %2082, !llvm.loop !55 + br i1 %1952, label %1951, label %2082, !llvm.loop !54 _ZN5boost8charconv6detail22fixed_point_calculatorILm3EE26generate_and_discard_lowerImEET_S5_Pmm.exit1238: ; preds = %_ZN5boost8charconv6detail14print_8_digitsEjPc.exit1489 %1959 = getelementptr inbounds nuw i8, ptr %.68, i64 16 @@ -7897,8 +7887,8 @@ _ZN5boost8charconv6detail22fixed_point_calculatorILm3EE26generate_and_discard_lo 1997: ; preds = %1990 %1998 = trunc i64 %1993 to i32 %1999 = load i64, ptr %7, align 8, !tbaa !14 - %2000 = load i32, ptr %10, align 4, !tbaa !32 - %2001 = load i32, ptr %8, align 4, !tbaa !32 + %2000 = load i32, ptr %10, align 4, !tbaa !31 + %2001 = load i32, ptr %8, align 4, !tbaa !31 %2002 = icmp slt i32 %2001, -8 %2003 = add nsw i32 %2001, %2000 %2004 = icmp slt i32 %2003, 1 @@ -7931,7 +7921,7 @@ _ZN5boost8charconv6detailL42check_rounding_condition_inside_subsegmentIbJETnNSt9 2014: ; preds = %1990 %2015 = trunc nuw nsw i64 %1994 to i8 %2016 = add nuw nsw i8 %2015, 48 - store i8 %2016, ptr %1959, align 1, !tbaa !23 + store i8 %2016, ptr %1959, align 1, !tbaa !22 br label %2026 2017: ; preds = %_ZN5boost8charconv6detail22fixed_point_calculatorILm3EE26generate_and_discard_lowerImEET_S5_Pmm.exit1238 @@ -7973,8 +7963,8 @@ _ZN5boost8charconv6detailL42check_rounding_condition_inside_subsegmentIbJETnNSt9 %2040 = lshr i64 %2039, 32 %2041 = trunc nuw nsw i64 %2040 to i32 %2042 = load i64, ptr %7, align 8, !tbaa !14 - %2043 = load i32, ptr %10, align 4, !tbaa !32 - %2044 = load i32, ptr %8, align 4, !tbaa !32 + %2043 = load i32, ptr %10, align 4, !tbaa !31 + %2044 = load i32, ptr %8, align 4, !tbaa !31 %2045 = icmp slt i32 %2044, -8 %2046 = add nsw i32 %2044, %2043 %2047 = icmp slt i32 %2046, 0 @@ -8014,8 +8004,8 @@ _ZN5boost8charconv6detail18has_further_digitsILj0ELj0ENS1_24extended_cache_long_ %.37909 = trunc nuw nsw i64 %.37909.in to i32 %2062 = trunc i64 %.1951 to i32 %2063 = load i64, ptr %7, align 8, !tbaa !14 - %2064 = load i32, ptr %10, align 4, !tbaa !32 - %2065 = load i32, ptr %8, align 4, !tbaa !32 + %2064 = load i32, ptr %10, align 4, !tbaa !31 + %2065 = load i32, ptr %8, align 4, !tbaa !31 %2066 = icmp slt i32 %2065, -8 %2067 = add nsw i32 %2065, %2064 %2068 = icmp slt i32 %2067, 1 @@ -8037,7 +8027,7 @@ _ZN5boost8charconv6detail18has_further_digitsILj1ELj0ENS1_24extended_cache_long_ %2075 = sub nsw i32 21, %.28945 %2076 = zext nneg i32 %2075 to i64 %2077 = getelementptr inbounds nuw [8 x i32], ptr @_ZN5boost8charconv6detail34additional_static_data_holder_implILb1EE37fractional_part_rounding_thresholds32E, i64 0, i64 %2076 - %2078 = load i32, ptr %2077, align 4, !tbaa !32 + %2078 = load i32, ptr %2077, align 4, !tbaa !31 %.not.i1170 = icmp ugt i32 %2078, %2062 br i1 %.not.i1170, label %_ZN5boost8charconv6detailL42check_rounding_condition_inside_subsegmentIbJETnNSt9enable_ifIXsr3std7is_sameIT_bEE5valueEbE4typeELb1EEEbjjiS4_DpT0_.exit1172, label %.thread1988.sink.split @@ -8052,7 +8042,7 @@ _ZN5boost8charconv6detailL42check_rounding_condition_inside_subsegmentIbJETnNSt9 2082: ; preds = %1951 %2083 = getelementptr inbounds nuw i8, ptr %.68, i64 22 %2084 = add nsw i32 %.28945, -22 - br label %1707, !llvm.loop !56 + br label %1707, !llvm.loop !55 2085: ; preds = %_ZN5boost8charconv6detail22fixed_point_calculatorILm3EE13discard_upperImEEvT_Pmm.exit1215 %2086 = icmp sgt i32 %.28945, 8 @@ -8142,7 +8132,7 @@ _ZN5boost8charconv6detailL42check_rounding_condition_inside_subsegmentIbJETnNSt9 2142: ; preds = %2121 %2143 = trunc i64 %2125 to i8 %2144 = add i8 %2143, 48 - store i8 %2144, ptr %2117, align 1, !tbaa !23 + store i8 %2144, ptr %2117, align 1, !tbaa !22 br label %2156 2145: ; preds = %_ZN5boost8charconv6detail22fixed_point_calculatorILm3EE26generate_and_discard_lowerImEET_S5_Pmm.exit1241 @@ -8183,8 +8173,8 @@ _ZN5boost8charconv6detailL42check_rounding_condition_inside_subsegmentIbJETnNSt9 ._crit_edge2501: ; preds = %.lr.ph2500 %.pre2590.pre = load i64, ptr %7, align 8, !tbaa !14 - %.pre2591.pre = load i32, ptr %10, align 4, !tbaa !32 - %.pre2592.pre = load i32, ptr %8, align 4, !tbaa !32 + %.pre2591.pre = load i32, ptr %10, align 4, !tbaa !31 + %.pre2592.pre = load i32, ptr %8, align 4, !tbaa !31 %2164 = and i64 %2169, 4294967292 %2165 = mul nuw nsw i64 %2164, 100 %2166 = lshr i64 %2165, 32 @@ -8206,7 +8196,7 @@ _ZN5boost8charconv6detailL42check_rounding_condition_inside_subsegmentIbJETnNSt9 %2173 = getelementptr inbounds nuw i8, ptr %.772498, i64 2 %2174 = add nuw nsw i32 %.08362497, 1 %exitcond2567.not = icmp eq i32 %2174, %.zext - br i1 %exitcond2567.not, label %._crit_edge2501, label %.lr.ph2500, !llvm.loop !57 + br i1 %exitcond2567.not, label %._crit_edge2501, label %.lr.ph2500, !llvm.loop !56 2175: ; preds = %._crit_edge2501.thread, %._crit_edge2501, %2145 %2176 = phi i32 [ %.pre2592.pre, %._crit_edge2501 ], [ %1718, %2145 ], [ %1718, %._crit_edge2501.thread ] @@ -8237,7 +8227,7 @@ _ZN5boost8charconv6detail18has_further_digitsILj1ELj6ENS1_24extended_cache_long_ %2189 = sub nsw i32 15, %.28945 %2190 = sext i32 %2189 to i64 %2191 = getelementptr inbounds [8 x i32], ptr @_ZN5boost8charconv6detail34additional_static_data_holder_implILb1EE37fractional_part_rounding_thresholds32E, i64 0, i64 %2190 - %2192 = load i32, ptr %2191, align 4, !tbaa !32 + %2192 = load i32, ptr %2191, align 4, !tbaa !31 %.not.i1176 = icmp ugt i32 %2192, %2179 br i1 %.not.i1176, label %_ZN5boost8charconv6detailL42check_rounding_condition_inside_subsegmentIbJETnNSt9enable_ifIXsr3std7is_sameIT_bEE5valueEbE4typeELb1EEEbjjiS4_DpT0_.exit1178, label %.thread1988.sink.split @@ -8343,7 +8333,7 @@ _ZN5boost8charconv6detailL42check_rounding_condition_inside_subsegmentIbJETnNSt9 2253: ; preds = %2232 %2254 = trunc nuw nsw i64 %2236 to i8 %2255 = add nuw nsw i8 %2254, 48 - store i8 %2255, ptr %.68, align 1, !tbaa !23 + store i8 %2255, ptr %.68, align 1, !tbaa !22 br label %2267 2256: ; preds = %_ZN5boost8charconv6detail22fixed_point_calculatorILm3EE26generate_and_discard_lowerImEET_S5_Pmm.exit1244 @@ -8384,8 +8374,8 @@ _ZN5boost8charconv6detailL42check_rounding_condition_inside_subsegmentIbJETnNSt9 %2274 = trunc nuw nsw i64 %2273 to i32 %.not1099 = icmp eq i32 %.28945, 8 %.pre2587 = load i64, ptr %7, align 8, !tbaa !14 - %.pre2588 = load i32, ptr %10, align 4, !tbaa !32 - %.pre2589 = load i32, ptr %8, align 4, !tbaa !32 + %.pre2588 = load i32, ptr %10, align 4, !tbaa !31 + %.pre2589 = load i32, ptr %8, align 4, !tbaa !31 br i1 %.not1099, label %2303, label %2282 .lr.ph2492: ; preds = %.lr.ph2492.preheader, %.lr.ph2492 @@ -8402,7 +8392,7 @@ _ZN5boost8charconv6detailL42check_rounding_condition_inside_subsegmentIbJETnNSt9 %2280 = getelementptr inbounds nuw i8, ptr %.822490, i64 2 %2281 = add nuw nsw i32 %.08312489, 1 %exitcond2565.not = icmp eq i32 %2281, %.zext2679 - br i1 %exitcond2565.not, label %._crit_edge2493, label %.lr.ph2492, !llvm.loop !58 + br i1 %exitcond2565.not, label %._crit_edge2493, label %.lr.ph2492, !llvm.loop !57 2282: ; preds = %._crit_edge2493, %2256 %2283 = phi i32 [ %.pre2589, %._crit_edge2493 ], [ %1718, %2256 ] @@ -8433,7 +8423,7 @@ _ZN5boost8charconv6detail18has_further_digitsILj1ELj14ENS1_24extended_cache_long %2296 = sub i32 7, %.28945 %2297 = sext i32 %2296 to i64 %2298 = getelementptr inbounds [8 x i32], ptr @_ZN5boost8charconv6detail34additional_static_data_holder_implILb1EE37fractional_part_rounding_thresholds32E, i64 0, i64 %2297 - %2299 = load i32, ptr %2298, align 4, !tbaa !32 + %2299 = load i32, ptr %2298, align 4, !tbaa !31 %.not.i1182 = icmp ugt i32 %2299, %2286 br i1 %.not.i1182, label %_ZN5boost8charconv6detailL42check_rounding_condition_inside_subsegmentIbJETnNSt9enable_ifIXsr3std7is_sameIT_bEE5valueEbE4typeELb1EEEbjjiS4_DpT0_.exit1184, label %.thread1988.sink.split @@ -8544,7 +8534,7 @@ _ZN5boost8charconv6detail18has_further_digitsILj0ELj14ENS1_24extended_cache_long %2330 = ptrtoint ptr %.0829 to i64 %2331 = sub i64 %2329, %2330 call void @llvm.memmove.p0.p0.i64(ptr align 1 %.0829, ptr nonnull align 1 %2328, i64 %2331, i1 false) - store i8 46, ptr %2327, align 1, !tbaa !23 + store i8 46, ptr %2327, align 1, !tbaa !22 br label %2349 2332: ; preds = %2322 @@ -8568,9 +8558,9 @@ _ZN5boost8charconv6detail18has_further_digitsILj0ELj14ENS1_24extended_cache_long 2346: ; preds = %2319 %2347 = getelementptr inbounds nuw i8, ptr %.0829, i64 1 - %2348 = load i8, ptr %2347, align 1, !tbaa !23 - store i8 %2348, ptr %.0829, align 1, !tbaa !23 - store i8 46, ptr %2347, align 1, !tbaa !23 + %2348 = load i8, ptr %2347, align 1, !tbaa !22 + store i8 %2348, ptr %.0829, align 1, !tbaa !22 + store i8 46, ptr %2347, align 1, !tbaa !22 br label %2349 2349: ; preds = %2324, %2332, %2346 @@ -8581,7 +8571,7 @@ _ZN5boost8charconv6detail18has_further_digitsILj0ELj14ENS1_24extended_cache_long 2350: ; preds = %2350, %2349 %.86 = phi ptr [ %.85, %2349 ], [ %2351, %2350 ] %2351 = getelementptr inbounds i8, ptr %.86, i64 -1 - %2352 = load i8, ptr %2351, align 1, !tbaa !23 + %2352 = load i8, ptr %2351, align 1, !tbaa !22 switch i8 %2352, label %.thread2275 [ i8 46, label %.thread2275.loopexit i8 48, label %2350 @@ -8597,7 +8587,7 @@ _ZN5boost8charconv6detail18has_further_digitsILj0ELj14ENS1_24extended_cache_long %2357 = ptrtoint ptr %.0829 to i64 %2358 = sub i64 %2356, %2357 call void @llvm.memmove.p0.p0.i64(ptr align 1 %.0829, ptr nonnull align 1 %2355, i64 %2358, i1 false) - store i8 46, ptr %.51915, align 1, !tbaa !23 + store i8 46, ptr %.51915, align 1, !tbaa !22 br label %.thread2275 .thread2275.loopexit: ; preds = %2350 @@ -8632,7 +8622,7 @@ _ZN5boost8charconv6detail18has_further_digitsILj0ELj14ENS1_24extended_cache_long %2373 = getelementptr inbounds nuw i8, ptr %.88, i64 4 %2374 = trunc nuw nsw i32 %2367 to i8 %2375 = or disjoint i8 %2374, 48 - store i8 %2375, ptr %2373, align 1, !tbaa !23 + store i8 %2375, ptr %2373, align 1, !tbaa !22 %2376 = getelementptr inbounds nuw i8, ptr %.88, i64 5 br label %.thread2004 @@ -8707,7 +8697,7 @@ _ZN5boost8charconv6detail18has_further_digitsILj0ELj14ENS1_24extended_cache_long %.29 = phi ptr [ %.28, %2389 ], [ %.26, %.thread1961 ], [ %.202645, %_ZN5boost8charconv6detailL42check_rounding_condition_inside_subsegmentIbJETnNSt9enable_ifIXsr3std7is_sameIT_bEE5valueEbE4typeELb1EEEbjjiS4_DpT0_.exit1148 ], [ %.152638, %373 ], [ %.29.ph, %.thread2057.sink.split ] %2391 = trunc i32 %.11883 to i8 %2392 = add i8 %2391, 48 - store i8 %2392, ptr %.29, align 1, !tbaa !23 + store i8 %2392, ptr %.29, align 1, !tbaa !22 %2393 = getelementptr inbounds nuw i8, ptr %.29, i64 1 br label %.thread2017 @@ -8761,18 +8751,18 @@ _ZZN5boost8charconv6detail5floffINS1_15main_cache_fullENS1_24extended_cache_long 2415: ; preds = %_ZZN5boost8charconv6detail5floffINS1_15main_cache_fullENS1_24extended_cache_long_implILb1EEEEENS0_15to_chars_resultEdiPcS7_NS0_12chars_formatEENKUlvE1_clEv.exit %2416 = getelementptr inbounds i8, ptr %.90, i64 -1 - %2417 = load i8, ptr %2416, align 1, !tbaa !23 + %2417 = load i8, ptr %2416, align 1, !tbaa !22 %.not1108 = icmp eq i8 %2417, 57 br i1 %.not1108, label %.preheader2814, label %2418 2418: ; preds = %2415 %2419 = add i8 %2417, 1 - store i8 %2419, ptr %2416, align 1, !tbaa !23 + store i8 %2419, ptr %2416, align 1, !tbaa !22 %.not1114 = icmp eq i32 %2399, 0 br i1 %.not1114, label %2421, label %2420 2420: ; preds = %2418 - store i8 48, ptr %.90, align 1, !tbaa !23 + store i8 48, ptr %.90, align 1, !tbaa !22 br label %.thread2017 2421: ; preds = %2418 @@ -8788,11 +8778,11 @@ _ZZN5boost8charconv6detail5floffINS1_15main_cache_fullENS1_24extended_cache_long %2424 = getelementptr inbounds i8, ptr %.1, i64 -2 %bcmp = call i32 @bcmp(ptr noundef nonnull dereferenceable(2) %2424, ptr noundef nonnull dereferenceable(2) @.str.15, i64 2) %.not1111 = icmp eq i32 %bcmp, 0 - br i1 %.not1111, label %2422, label %2425, !llvm.loop !59 + br i1 %.not1111, label %2422, label %2425, !llvm.loop !58 2425: ; preds = %2423 %2426 = getelementptr inbounds i8, ptr %.1, i64 -1 - %2427 = load i8, ptr %2426, align 1, !tbaa !23 + %2427 = load i8, ptr %2426, align 1, !tbaa !22 %.not1112 = icmp eq i8 %2427, 57 br i1 %.not1112, label %2430, label %2428 @@ -8801,14 +8791,14 @@ _ZZN5boost8charconv6detail5floffINS1_15main_cache_fullENS1_24extended_cache_long br label %2433 2430: ; preds = %2425 - %2431 = load i8, ptr %2424, align 1, !tbaa !23 + %2431 = load i8, ptr %2424, align 1, !tbaa !22 %2432 = add i8 %2431, 1 - store i8 %2432, ptr %2424, align 1, !tbaa !23 + store i8 %2432, ptr %2424, align 1, !tbaa !22 br label %2433 2433: ; preds = %2430, %2428 %storemerge1113 = phi i8 [ 48, %2430 ], [ %2429, %2428 ] - store i8 %storemerge1113, ptr %2426, align 1, !tbaa !23 + store i8 %storemerge1113, ptr %2426, align 1, !tbaa !22 %2434 = ptrtoint ptr %2402 to i64 %2435 = ptrtoint ptr %.1 to i64 %2436 = sub i64 %2434, %2435 @@ -8844,7 +8834,7 @@ _ZZN5boost8charconv6detail5floffINS1_15main_cache_fullENS1_24extended_cache_long %.71916 = phi ptr [ %spec.select2325, %2443 ], [ %.21911, %2445 ], [ %.21911, %2437 ] %.92 = phi ptr [ %2444, %2443 ], [ %2402, %2445 ], [ %2402, %2437 ] %.0 = phi ptr [ %.0.i1541, %2443 ], [ %spec.select, %2445 ], [ %.0.i1541, %2437 ] - store i8 49, ptr %.0, align 1, !tbaa !23 + store i8 49, ptr %.0, align 1, !tbaa !22 %2448 = getelementptr inbounds nuw i8, ptr %.0, i64 1 %2449 = ptrtoint ptr %.92 to i64 %2450 = xor i64 %.pre-phi, -1 @@ -8950,7 +8940,7 @@ _ZN5boost8charconv6detail19total_buffer_lengthIjEEiiT_b.exit: ; preds = %31, %13 53: ; preds = %52 %54 = getelementptr inbounds nuw i8, ptr %0, i64 1 - store i8 45, ptr %0, align 1, !tbaa !23 + store i8 45, ptr %0, align 1, !tbaa !22 br label %55 55: ; preds = %53, %52 @@ -8958,22 +8948,22 @@ _ZN5boost8charconv6detail19total_buffer_lengthIjEEiiT_b.exit: ; preds = %31, %13 %56 = lshr i32 %.183, 24 %57 = zext nneg i32 %56 to i64 %58 = getelementptr inbounds nuw [36 x i8], ptr @_ZN5boost8charconv6detailL11digit_tableE, i64 0, i64 %57 - %59 = load i8, ptr %58, align 1, !tbaa !23 + %59 = load i8, ptr %58, align 1, !tbaa !22 %60 = getelementptr inbounds nuw i8, ptr %.078, i64 1 - store i8 %59, ptr %.078, align 1, !tbaa !23 + store i8 %59, ptr %.078, align 1, !tbaa !22 %61 = icmp sgt i32 %spec.select, 0 br i1 %61, label %62, label %.thread 62: ; preds = %55 %63 = and i32 %.183, 16777215 %64 = getelementptr inbounds nuw i8, ptr %.078, i64 2 - store i8 46, ptr %60, align 1, !tbaa !23 + store i8 46, ptr %60, align 1, !tbaa !22 %65 = lshr i32 %63, 20 %66 = zext nneg i32 %65 to i64 %67 = getelementptr inbounds nuw [36 x i8], ptr @_ZN5boost8charconv6detailL11digit_tableE, i64 0, i64 %66 - %68 = load i8, ptr %67, align 1, !tbaa !23 + %68 = load i8, ptr %67, align 1, !tbaa !22 %69 = getelementptr inbounds nuw i8, ptr %.078, i64 3 - store i8 %68, ptr %64, align 1, !tbaa !23 + store i8 %68, ptr %64, align 1, !tbaa !22 %70 = add nsw i32 %spec.select, -1 %71 = icmp eq i32 %70, 0 br i1 %71, label %.thread, label %.lr.ph @@ -9003,9 +8993,9 @@ _ZN5boost8charconv6detail19total_buffer_lengthIjEEiiT_b.exit: ; preds = %31, %13 %83 = lshr i32 %81, %82 %84 = zext nneg i32 %83 to i64 %85 = getelementptr inbounds nuw [36 x i8], ptr @_ZN5boost8charconv6detailL11digit_tableE, i64 0, i64 %84 - %86 = load i8, ptr %85, align 1, !tbaa !23 + %86 = load i8, ptr %85, align 1, !tbaa !22 %87 = getelementptr inbounds nuw i8, ptr %73, i64 1 - store i8 %86, ptr %73, align 1, !tbaa !23 + store i8 %86, ptr %73, align 1, !tbaa !22 %88 = add nsw i32 %72, -1 %89 = icmp eq i32 %88, 0 br i1 %89, label %.thread, label %.lr.ph @@ -9021,7 +9011,7 @@ _ZN5boost8charconv6detail19total_buffer_lengthIjEEiiT_b.exit: ; preds = %31, %13 .preheader: ; preds = %.preheader.preheader, %.preheader %.1.pn = phi ptr [ %.6, %.preheader ], [ %.1.pn.ph, %.preheader.preheader ] %.6 = getelementptr inbounds i8, ptr %.1.pn, i64 -1 - %90 = load i8, ptr %.6, align 1, !tbaa !23 + %90 = load i8, ptr %.6, align 1, !tbaa !22 switch i8 %90, label %.loopexit [ i8 48, label %.preheader i8 46, label %.loopexit.loopexit @@ -9033,10 +9023,10 @@ _ZN5boost8charconv6detail19total_buffer_lengthIjEEiiT_b.exit: ; preds = %31, %13 .loopexit: ; preds = %.preheader, %.loopexit.loopexit, %.thread.thread, %.thread %.5 = phi ptr [ %.1, %.thread ], [ %78, %.thread.thread ], [ %.6, %.loopexit.loopexit ], [ %.1.pn, %.preheader ] %91 = getelementptr inbounds nuw i8, ptr %.5, i64 1 - store i8 112, ptr %.5, align 1, !tbaa !23 + store i8 112, ptr %.5, align 1, !tbaa !22 %. = select i1 %25, i8 45, i8 43 %.7 = getelementptr inbounds nuw i8, ptr %.5, i64 2 - store i8 %., ptr %91, align 1, !tbaa !23 + store i8 %., ptr %91, align 1, !tbaa !22 call void @llvm.lifetime.start.p0(i64 10, ptr nonnull %5) #15 call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(10) %5, i8 0, i64 10, i1 false) %92 = icmp ugt ptr %.7, %1 @@ -9106,7 +9096,7 @@ _ZN5boost8charconv6detail10num_digitsIjEEiT_.exit.i.i: ; preds = %110, %108, %10 %122 = mul nuw i64 %121, 100 %123 = add nuw nsw i64 %.010.i.i.i, 2 %124 = icmp samesign ult i64 %.010.i.i.i, 8 - br i1 %124, label %115, label %_ZN5boost8charconv6detail11decompose32EjPc.exit.i.i, !llvm.loop !31 + br i1 %124, label %115, label %_ZN5boost8charconv6detail11decompose32EjPc.exit.i.i, !llvm.loop !30 _ZN5boost8charconv6detail11decompose32EjPc.exit.i.i: ; preds = %115 %125 = sub nuw nsw i64 10, %.0.i.i.i @@ -9140,9 +9130,9 @@ declare float @llvm.fabs.f32(float) #6 ; Function Attrs: inlinehint mustprogress nounwind uwtable define linkonce_odr hidden { i64, i8 } @_ZZN5boost8charconv6detail10to_decimalIfNS1_22dragonbox_float_traitsIfEEJEEEDaNS1_33dragonbox_signed_significand_bitsIT_T0_EEjDpT1_ENKUlNS1_11policy_impl26decimal_to_binary_rounding15nearest_to_evenEE_clESD_(ptr noundef nonnull align 4 dereferenceable(8) %0) local_unnamed_addr #3 comdat align 2 personality ptr @__gxx_personality_v0 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 4 - %3 = load i32, ptr %2, align 4, !tbaa !60 + %3 = load i32, ptr %2, align 4, !tbaa !59 %4 = shl i32 %3, 1 - %5 = load i32, ptr %0, align 4, !tbaa !62 + %5 = load i32, ptr %0, align 4, !tbaa !61 %.not = icmp eq i32 %5, 0 br i1 %.not, label %63, label %6 @@ -9434,7 +9424,7 @@ define linkonce_odr hidden { ptr, i32 } @_ZN5boost8charconv6detail15to_chars_det br i1 %13, label %15, label %17 15: ; preds = %14 - store i8 45, ptr %1, align 1, !tbaa !23 + store i8 45, ptr %1, align 1, !tbaa !22 %16 = getelementptr inbounds nuw i8, ptr %1, i64 1 br label %17 @@ -9491,7 +9481,7 @@ define linkonce_odr hidden { ptr, i32 } @_ZN5boost8charconv6detail15to_chars_det br i1 %13, label %36, label %38 36: ; preds = %35 - store i8 45, ptr %1, align 1, !tbaa !23 + store i8 45, ptr %1, align 1, !tbaa !22 %37 = getelementptr inbounds nuw i8, ptr %1, i64 1 br label %38 @@ -9562,9 +9552,9 @@ define linkonce_odr hidden { ptr, i32 } @_ZN5boost8charconv6detail15to_chars_det ; Function Attrs: inlinehint mustprogress nounwind uwtable define linkonce_odr hidden { i64, i8 } @_ZZN5boost8charconv6detail10to_decimalIfNS1_22dragonbox_float_traitsIfEEJNS1_11policy_impl4sign6ignoreENS5_13trailing_zero6ignoreENS5_26decimal_to_binary_rounding15nearest_to_evenENS5_26binary_to_decimal_rounding7to_evenENS5_5cache4fullEEEEDaNS1_33dragonbox_signed_significand_bitsIT_T0_EEjDpT1_ENKUlSB_E_clESB_(ptr noundef nonnull align 4 dereferenceable(8) %0) local_unnamed_addr #3 comdat align 2 personality ptr @__gxx_personality_v0 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 4 - %3 = load i32, ptr %2, align 4, !tbaa !60 + %3 = load i32, ptr %2, align 4, !tbaa !59 %4 = shl i32 %3, 1 - %5 = load i32, ptr %0, align 4, !tbaa !64 + %5 = load i32, ptr %0, align 4, !tbaa !63 %.not = icmp eq i32 %5, 0 br i1 %.not, label %63, label %6 @@ -9714,7 +9704,7 @@ define linkonce_odr hidden void @_ZN5boost8charconv6detail14print_8_digitsEjPc(i store i16 %19, ptr %16, align 1 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 3 - br i1 %exitcond.not, label %11, label %12, !llvm.loop !54 + br i1 %exitcond.not, label %11, label %12, !llvm.loop !53 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) @@ -9725,30 +9715,30 @@ declare i64 @llvm.cttz.i64(i64, i1 immarg) #6 ; Function Attrs: inlinehint mustprogress nounwind uwtable define linkonce_odr hidden noundef zeroext i1 @_ZZN5boost8charconv6detail5floffINS1_15main_cache_fullENS1_24extended_cache_long_implILb1EEEEENS0_15to_chars_resultEdiPcS7_NS0_12chars_formatEENKUlvE0_clEv(ptr noundef nonnull align 8 dereferenceable(40) %0) local_unnamed_addr #3 comdat align 2 { - %2 = load ptr, ptr %0, align 8, !tbaa !66 + %2 = load ptr, ptr %0, align 8, !tbaa !65 %3 = load i64, ptr %2, align 8, !tbaa !14 %4 = trunc i64 %3 to i32 %5 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %6 = load ptr, ptr %5, align 8, !tbaa !69 - %7 = load i32, ptr %6, align 4, !tbaa !32 + %6 = load ptr, ptr %5, align 8, !tbaa !68 + %7 = load i32, ptr %6, align 4, !tbaa !31 %8 = add nsw i32 %7, -3 %9 = sext i32 %8 to i64 %10 = getelementptr inbounds [8 x i32], ptr @_ZN5boost8charconv6detail34additional_static_data_holder_implILb1EE37fractional_part_rounding_thresholds32E, i64 0, i64 %9 - %11 = load i32, ptr %10, align 4, !tbaa !32 + %11 = load i32, ptr %10, align 4, !tbaa !31 %12 = and i32 %11, 2147483647 %.not = icmp ugt i32 %12, %4 br i1 %.not, label %13, label %_ZN5boost8charconv6detail18has_further_digitsILj1ELj0ENS1_24extended_cache_long_implILb1EEEEEbmiRiNS1_6uconstIXT_EEENS6_IXT0_EEE.exit 13: ; preds = %1 %14 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %15 = load ptr, ptr %14, align 8, !tbaa !70 + %15 = load ptr, ptr %14, align 8, !tbaa !69 %16 = load i64, ptr %15, align 8, !tbaa !14 %17 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %18 = load ptr, ptr %17, align 8, !tbaa !71 - %19 = load i32, ptr %18, align 4, !tbaa !32 + %18 = load ptr, ptr %17, align 8, !tbaa !70 + %19 = load i32, ptr %18, align 4, !tbaa !31 %20 = getelementptr inbounds nuw i8, ptr %0, i64 32 - %21 = load ptr, ptr %20, align 8, !tbaa !72 - %22 = load i32, ptr %21, align 4, !tbaa !32 + %21 = load ptr, ptr %20, align 8, !tbaa !71 + %22 = load i32, ptr %21, align 4, !tbaa !31 %23 = icmp slt i32 %22, -8 %24 = add nsw i32 %22, %19 %25 = icmp slt i32 %24, 1 @@ -9826,7 +9816,7 @@ _ZZN5boost8charconv6detail10to_decimalIdNS1_22dragonbox_float_traitsIdEEJEEEDaNS 36: ; preds = %_ZZN5boost8charconv6detail10to_decimalIdNS1_22dragonbox_float_traitsIdEEJEEEDaNS1_33dragonbox_signed_significand_bitsIT_T0_EEjDpT1_ENKUlNS1_11policy_impl26decimal_to_binary_rounding15nearest_to_evenEE_clESD_.exit %37 = getelementptr inbounds nuw i8, ptr %0, i64 1 - store i8 45, ptr %0, align 1, !tbaa !23 + store i8 45, ptr %0, align 1, !tbaa !22 br label %38 38: ; preds = %36, %_ZZN5boost8charconv6detail10to_decimalIdNS1_22dragonbox_float_traitsIdEEJEEEDaNS1_33dragonbox_signed_significand_bitsIT_T0_EEjDpT1_ENKUlNS1_11policy_impl26decimal_to_binary_rounding15nearest_to_evenEE_clESD_.exit @@ -9836,13 +9826,13 @@ _ZZN5boost8charconv6detail10to_decimalIdNS1_22dragonbox_float_traitsIdEEJEEEDaNS 40: ; preds = %38 %41 = getelementptr inbounds nuw i8, ptr %.0, i64 1 - store i8 48, ptr %.0, align 1, !tbaa !23 + store i8 48, ptr %.0, align 1, !tbaa !22 %42 = icmp sgt i32 %4, -1 br i1 %42, label %43, label %.thread 43: ; preds = %40 %44 = getelementptr inbounds nuw i8, ptr %.0, i64 2 - store i8 46, ptr %41, align 1, !tbaa !23 + store i8 46, ptr %41, align 1, !tbaa !22 %45 = zext nneg i32 %4 to i64 tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %44, i8 48, i64 %45, i1 false) %46 = getelementptr inbounds nuw i8, ptr %44, i64 %45 @@ -9949,7 +9939,7 @@ _ZN5boost8charconv6detail10num_digitsImEEiT_.exit: ; preds = %53, %55, %57, %59, %88 = add i64 %.sroa.1631.1139, 1 %89 = add nsw i32 %.1111138, -1 %90 = icmp sgt i32 %89, %85 - br i1 %90, label %.lr.ph, label %._crit_edge.thread, !llvm.loop !73 + br i1 %90, label %.lr.ph, label %._crit_edge.thread, !llvm.loop !72 ._crit_edge: ; preds = %.preheader135 %91 = icmp eq i32 %.0.i127, %85 @@ -9981,12 +9971,12 @@ _ZN5boost8charconv6detail10num_digitsImEEiT_.exit: ; preds = %53, %55, %57, %59, %.sroa.1631.3145 = phi i64 [ %103, %.lr.ph146 ], [ %.sroa.1631.2, %98 ] %.3144 = phi i32 [ %104, %.lr.ph146 ], [ %.2112, %98 ] %.sroa.022.4143 = phi i64 [ %102, %.lr.ph146 ], [ %.sroa.022.2, %98 ] - %102 = udiv i64 %.sroa.022.4143, 10 + %102 = udiv exact i64 %.sroa.022.4143, 10 %103 = add i64 %.sroa.1631.3145, 1 %104 = add nsw i32 %.3144, -1 %105 = urem i64 %102, 10 %106 = icmp eq i64 %105, 0 - br i1 %106, label %.lr.ph146, label %.loopexit, !llvm.loop !74 + br i1 %106, label %.lr.ph146, label %.loopexit, !llvm.loop !73 .loopexit: ; preds = %.lr.ph146, %98, %_ZN5boost8charconv6detail10num_digitsImEEiT_.exit %.sroa.022.0 = phi i64 [ %.sroa.022.2, %98 ], [ %35, %_ZN5boost8charconv6detail10num_digitsImEEiT_.exit ], [ %102, %.lr.ph146 ] @@ -10004,7 +9994,7 @@ _ZN5boost8charconv6detail10num_digitsImEEiT_.exit: ; preds = %53, %55, %57, %59, %109 = add nuw nsw i32 %.07.i.i, 1 %.046.off.i.i = add i32 %.046.i.i, 9 %.not.i.i = icmp ult i32 %.046.off.i.i, 19 - br i1 %.not.i.i, label %_ZN5boost8charconv6detail19total_buffer_lengthIiEEiiT_b.exit, label %.lr.ph.i.i, !llvm.loop !29 + br i1 %.not.i.i, label %_ZN5boost8charconv6detail19total_buffer_lengthIiEEiiT_b.exit, label %.lr.ph.i.i, !llvm.loop !28 _ZN5boost8charconv6detail19total_buffer_lengthIiEEiiT_b.exit: ; preds = %.lr.ph.i.i, %.loopexit %.0.lcssa.i.i = phi i32 [ 0, %.loopexit ], [ %109, %.lr.ph.i.i ] @@ -10174,28 +10164,28 @@ _ZN5boost8charconv6detail19total_buffer_lengthIjEEiiT_b.exit: ; preds = %13, %31 54: ; preds = %53 %55 = getelementptr inbounds nuw i8, ptr %0, i64 1 - store i8 45, ptr %0, align 1, !tbaa !23 + store i8 45, ptr %0, align 1, !tbaa !22 br label %56 56: ; preds = %54, %53 %.078 = phi ptr [ %55, %54 ], [ %0, %53 ] %57 = lshr i64 %.183, 52 %58 = getelementptr inbounds nuw [36 x i8], ptr @_ZN5boost8charconv6detailL11digit_tableE, i64 0, i64 %57 - %59 = load i8, ptr %58, align 1, !tbaa !23 + %59 = load i8, ptr %58, align 1, !tbaa !22 %60 = getelementptr inbounds nuw i8, ptr %.078, i64 1 - store i8 %59, ptr %.078, align 1, !tbaa !23 + store i8 %59, ptr %.078, align 1, !tbaa !22 %61 = icmp sgt i32 %spec.select, 0 br i1 %61, label %62, label %.thread 62: ; preds = %56 %63 = and i64 %.183, 4503599627370495 %64 = getelementptr inbounds nuw i8, ptr %.078, i64 2 - store i8 46, ptr %60, align 1, !tbaa !23 + store i8 46, ptr %60, align 1, !tbaa !22 %65 = lshr i64 %63, 48 %66 = getelementptr inbounds nuw [36 x i8], ptr @_ZN5boost8charconv6detailL11digit_tableE, i64 0, i64 %65 - %67 = load i8, ptr %66, align 1, !tbaa !23 + %67 = load i8, ptr %66, align 1, !tbaa !22 %68 = getelementptr inbounds nuw i8, ptr %.078, i64 3 - store i8 %67, ptr %64, align 1, !tbaa !23 + store i8 %67, ptr %64, align 1, !tbaa !22 %69 = add nsw i32 %spec.select, -1 %70 = icmp eq i32 %69, 0 br i1 %70, label %.thread, label %.lr.ph @@ -10226,9 +10216,9 @@ _ZN5boost8charconv6detail19total_buffer_lengthIjEEiiT_b.exit: ; preds = %13, %31 %81 = lshr i64 %79, %80 %82 = and i64 %81, 4294967295 %83 = getelementptr inbounds nuw [36 x i8], ptr @_ZN5boost8charconv6detailL11digit_tableE, i64 0, i64 %82 - %84 = load i8, ptr %83, align 1, !tbaa !23 + %84 = load i8, ptr %83, align 1, !tbaa !22 %85 = getelementptr inbounds nuw i8, ptr %72, i64 1 - store i8 %84, ptr %72, align 1, !tbaa !23 + store i8 %84, ptr %72, align 1, !tbaa !22 %86 = add nsw i32 %71, -1 %87 = icmp eq i32 %86, 0 br i1 %87, label %.thread, label %.lr.ph @@ -10244,7 +10234,7 @@ _ZN5boost8charconv6detail19total_buffer_lengthIjEEiiT_b.exit: ; preds = %13, %31 .preheader: ; preds = %.preheader.preheader, %.preheader %.1.pn = phi ptr [ %.6, %.preheader ], [ %.1.pn.ph, %.preheader.preheader ] %.6 = getelementptr inbounds i8, ptr %.1.pn, i64 -1 - %88 = load i8, ptr %.6, align 1, !tbaa !23 + %88 = load i8, ptr %.6, align 1, !tbaa !22 switch i8 %88, label %.loopexit [ i8 48, label %.preheader i8 46, label %.loopexit.loopexit @@ -10256,10 +10246,10 @@ _ZN5boost8charconv6detail19total_buffer_lengthIjEEiiT_b.exit: ; preds = %13, %31 .loopexit: ; preds = %.preheader, %.loopexit.loopexit, %.thread.thread, %.thread %.5 = phi ptr [ %.1, %.thread ], [ %76, %.thread.thread ], [ %.6, %.loopexit.loopexit ], [ %.1.pn, %.preheader ] %89 = getelementptr inbounds nuw i8, ptr %.5, i64 1 - store i8 112, ptr %.5, align 1, !tbaa !23 + store i8 112, ptr %.5, align 1, !tbaa !22 %. = select i1 %23, i8 45, i8 43 %.7 = getelementptr inbounds nuw i8, ptr %.5, i64 2 - store i8 %., ptr %89, align 1, !tbaa !23 + store i8 %., ptr %89, align 1, !tbaa !22 call void @llvm.lifetime.start.p0(i64 10, ptr nonnull %5) #15 call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(10) %5, i8 0, i64 10, i1 false) %90 = icmp ugt ptr %.7, %1 @@ -10329,7 +10319,7 @@ _ZN5boost8charconv6detail10num_digitsIjEEiT_.exit.i.i: ; preds = %108, %106, %10 %120 = mul nuw i64 %119, 100 %121 = add nuw nsw i64 %.010.i.i.i, 2 %122 = icmp samesign ult i64 %.010.i.i.i, 8 - br i1 %122, label %113, label %_ZN5boost8charconv6detail11decompose32EjPc.exit.i.i, !llvm.loop !31 + br i1 %122, label %113, label %_ZN5boost8charconv6detail11decompose32EjPc.exit.i.i, !llvm.loop !30 _ZN5boost8charconv6detail11decompose32EjPc.exit.i.i: ; preds = %113 %123 = sub nuw nsw i64 10, %.0.i.i.i @@ -10703,7 +10693,7 @@ define linkonce_odr hidden { ptr, i32 } @_ZN5boost8charconv6detail15to_chars_det br i1 %11, label %13, label %15 13: ; preds = %12 - store i8 45, ptr %1, align 1, !tbaa !23 + store i8 45, ptr %1, align 1, !tbaa !22 %14 = getelementptr inbounds nuw i8, ptr %1, i64 1 br label %15 @@ -10779,7 +10769,7 @@ _ZZN5boost8charconv6detail10to_decimalIdNS1_22dragonbox_float_traitsIdEEJNS1_11p br i1 %11, label %48, label %50 48: ; preds = %47 - store i8 45, ptr %1, align 1, !tbaa !23 + store i8 45, ptr %1, align 1, !tbaa !22 %49 = getelementptr inbounds nuw i8, ptr %1, i64 1 br label %50 @@ -10908,20 +10898,20 @@ attributes #17 = { nounwind willreturn memory(none) } !16 = distinct !{!16, !17} !17 = !{!"llvm.loop.mustprogress"} !18 = distinct !{!18, !17} -!19 = distinct !{!19, !17} -!20 = !{!7, !12, i64 20} -!21 = !{!8, !8, i64 0} -!22 = !{!12, !12, i64 0} -!23 = !{!9, !9, i64 0} -!24 = !{i8 0, i8 2} -!25 = !{} +!19 = !{!7, !12, i64 20} +!20 = !{!8, !8, i64 0} +!21 = !{!12, !12, i64 0} +!22 = !{!9, !9, i64 0} +!23 = !{i8 0, i8 2} +!24 = !{} +!25 = distinct !{!25, !17} !26 = distinct !{!26, !17} !27 = distinct !{!27, !17} !28 = distinct !{!28, !17} !29 = distinct !{!29, !17} !30 = distinct !{!30, !17} -!31 = distinct !{!31, !17} -!32 = !{!11, !11, i64 0} +!31 = !{!11, !11, i64 0} +!32 = distinct !{!32, !17} !33 = distinct !{!33, !17} !34 = distinct !{!34, !17} !35 = distinct !{!35, !17} @@ -10930,11 +10920,11 @@ attributes #17 = { nounwind willreturn memory(none) } !38 = distinct !{!38, !17} !39 = distinct !{!39, !17} !40 = distinct !{!40, !17} -!41 = distinct !{!41, !17} -!42 = !{!43, !43, i64 0} -!43 = !{!"short", !9, i64 0} -!44 = !{!45, !43, i64 0} -!45 = !{!"_ZTSN5boost8charconv6detail24extended_cache_long_implILb1EE21multiplier_index_infoE", !43, i64 0, !43, i64 2} +!41 = !{!42, !42, i64 0} +!42 = !{!"short", !9, i64 0} +!43 = !{!44, !42, i64 0} +!44 = !{!"_ZTSN5boost8charconv6detail24extended_cache_long_implILb1EE21multiplier_index_infoE", !42, i64 0, !42, i64 2} +!45 = distinct !{!45, !17} !46 = distinct !{!46, !17} !47 = distinct !{!47, !17} !48 = distinct !{!48, !17} @@ -10948,19 +10938,18 @@ attributes #17 = { nounwind willreturn memory(none) } !56 = distinct !{!56, !17} !57 = distinct !{!57, !17} !58 = distinct !{!58, !17} -!59 = distinct !{!59, !17} -!60 = !{!61, !11, i64 0} -!61 = !{!"_ZTSN5boost8charconv6detail33dragonbox_signed_significand_bitsIfNS1_22dragonbox_float_traitsIfEEEE", !11, i64 0} -!62 = !{!63, !11, i64 0} -!63 = !{!"_ZTSZN5boost8charconv6detail10to_decimalIfNS1_22dragonbox_float_traitsIfEEJEEEDaNS1_33dragonbox_signed_significand_bitsIT_T0_EEjDpT1_EUlNS1_11policy_impl26decimal_to_binary_rounding15nearest_to_evenEE_", !11, i64 0, !61, i64 4} -!64 = !{!65, !11, i64 0} -!65 = !{!"_ZTSZN5boost8charconv6detail10to_decimalIfNS1_22dragonbox_float_traitsIfEEJNS1_11policy_impl4sign6ignoreENS5_13trailing_zero6ignoreENS5_26decimal_to_binary_rounding15nearest_to_evenENS5_26binary_to_decimal_rounding7to_evenENS5_5cache4fullEEEEDaNS1_33dragonbox_signed_significand_bitsIT_T0_EEjDpT1_EUlSB_E_", !11, i64 0, !61, i64 4} -!66 = !{!67, !68, i64 0} -!67 = !{!"_ZTSZN5boost8charconv6detail5floffINS1_15main_cache_fullENS1_24extended_cache_long_implILb1EEEEENS0_15to_chars_resultEdiPcS7_NS0_12chars_formatEEUlvE0_", !68, i64 0, !68, i64 8, !68, i64 16, !68, i64 24, !68, i64 32} -!68 = !{!"any pointer", !9, i64 0} -!69 = !{!67, !68, i64 8} -!70 = !{!67, !68, i64 16} -!71 = !{!67, !68, i64 24} -!72 = !{!67, !68, i64 32} +!59 = !{!60, !11, i64 0} +!60 = !{!"_ZTSN5boost8charconv6detail33dragonbox_signed_significand_bitsIfNS1_22dragonbox_float_traitsIfEEEE", !11, i64 0} +!61 = !{!62, !11, i64 0} +!62 = !{!"_ZTSZN5boost8charconv6detail10to_decimalIfNS1_22dragonbox_float_traitsIfEEJEEEDaNS1_33dragonbox_signed_significand_bitsIT_T0_EEjDpT1_EUlNS1_11policy_impl26decimal_to_binary_rounding15nearest_to_evenEE_", !11, i64 0, !60, i64 4} +!63 = !{!64, !11, i64 0} +!64 = !{!"_ZTSZN5boost8charconv6detail10to_decimalIfNS1_22dragonbox_float_traitsIfEEJNS1_11policy_impl4sign6ignoreENS5_13trailing_zero6ignoreENS5_26decimal_to_binary_rounding15nearest_to_evenENS5_26binary_to_decimal_rounding7to_evenENS5_5cache4fullEEEEDaNS1_33dragonbox_signed_significand_bitsIT_T0_EEjDpT1_EUlSB_E_", !11, i64 0, !60, i64 4} +!65 = !{!66, !67, i64 0} +!66 = !{!"_ZTSZN5boost8charconv6detail5floffINS1_15main_cache_fullENS1_24extended_cache_long_implILb1EEEEENS0_15to_chars_resultEdiPcS7_NS0_12chars_formatEEUlvE0_", !67, i64 0, !67, i64 8, !67, i64 16, !67, i64 24, !67, i64 32} +!67 = !{!"any pointer", !9, i64 0} +!68 = !{!66, !67, i64 8} +!69 = !{!66, !67, i64 16} +!70 = !{!66, !67, i64 24} +!71 = !{!66, !67, i64 32} +!72 = distinct !{!72, !17} !73 = distinct !{!73, !17} -!74 = distinct !{!74, !17} diff --git a/bench/clamav/optimized/hwp.ll b/bench/clamav/optimized/hwp.ll index c8745b5fdb3..9c75f7b1cb4 100644 --- a/bench/clamav/optimized/hwp.ll +++ b/bench/clamav/optimized/hwp.ll @@ -1578,7 +1578,7 @@ thread-pre-split140.i: ; preds = %167 212: ; preds = %181 %213 = urem i32 %.0.126.i, 617 - %214 = udiv i32 %.0.126.i, 617 + %214 = udiv exact i32 %.0.126.i, 617 %.not112.i = icmp eq i32 %213, 0 br i1 %.not112.i, label %216, label %215 @@ -1599,11 +1599,12 @@ thread-pre-split140.i: ; preds = %167 br label %223 223: ; preds = %220, %216 - %.not143.i = icmp ult i32 %.0.126.i, 617 + %.not143.i = icmp eq i32 %.0.126.i, 0 br i1 %.not143.i, label %parsehwp3_infoblk_1.exit, label %.lr.ph.preheader.i .lr.ph.preheader.i: ; preds = %223 - %wide.trip.count.i = zext nneg i32 %214 to i64 + %wide.trip.count.i = call i32 @llvm.umax.i32(i32 %214, i32 1) + %wide.trip.count.i = zext nneg i32 %umax.i to i64 %invariant.op = add i64 %119, 296 br label %.lr.ph.i @@ -2818,6 +2819,9 @@ define internal i32 @hwpml_scan_cb(ptr readnone captures(none) %0, i32 noundef % ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umin.i64(i64, i64) #9 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.umax.i32(i32, i32) #9 + attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } 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" } diff --git a/bench/cpython/optimized/arraymodule.ll b/bench/cpython/optimized/arraymodule.ll index 28815ae1fa4..8e5bc10094d 100644 --- a/bench/cpython/optimized/arraymodule.ll +++ b/bench/cpython/optimized/arraymodule.ll @@ -730,7 +730,7 @@ Py_DECREF.exit.sink.split.i: ; preds = %70, %58 %76 = getelementptr [22 x %struct.mformatdescr], ptr @mformat_descriptors, i64 0, i64 %75 %77 = load i64, ptr %76, align 16, !tbaa !41 %78 = urem i64 %.val170, %77 - %79 = udiv i64 %.val170, %77 + %79 = udiv exact i64 %.val170, %77 %.not142 = icmp eq i64 %78, 0 br i1 %.not142, label %82, label %80 @@ -3082,7 +3082,7 @@ define internal ptr @array_array_frombytes(ptr noundef captures(none) %0, ptr no %16 = load i64, ptr %15, align 8, !tbaa !87 %17 = sext i32 %14 to i64 %18 = srem i64 %16, %17 - %19 = sdiv i64 %16, %17 + %19 = sdiv exact i64 %16, %17 %.not32.i.i = icmp eq i64 %18, 0 br i1 %.not32.i.i, label %22, label %20 @@ -3129,9 +3129,8 @@ define internal ptr @array_array_frombytes(ptr noundef captures(none) %0, ptr no %41 = mul i64 %.val.i.i, %17 %42 = getelementptr i8, ptr %40, i64 %41 %43 = load ptr, ptr %3, align 8, !tbaa !88 - %44 = mul i64 %19, %17 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %42, ptr align 1 %43, i64 %44, i1 false) - br label %45 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %42, ptr align 1 %43, i64 %16, i1 false) + br label %44 45: ; preds = %38, %22 call void @PyBuffer_Release(ptr noundef nonnull %3) #11 diff --git a/bench/cpython/optimized/mpdecimal.ll b/bench/cpython/optimized/mpdecimal.ll index f5a8b655a81..2aefb0851a4 100644 --- a/bench/cpython/optimized/mpdecimal.ll +++ b/bench/cpython/optimized/mpdecimal.ll @@ -1420,7 +1420,7 @@ define hidden i64 @mpd_trail_zeros(ptr noundef readonly captures(none) %0) local .lr.ph19: ; preds = %10, %.lr.ph19 %.118 = phi i64 [ %15, %.lr.ph19 ], [ %11, %10 ] %.01217 = phi i64 [ %14, %.lr.ph19 ], [ %9, %10 ] - %14 = udiv i64 %.01217, 10 + %14 = udiv exact i64 %.01217, 10 %15 = add i64 %.118, 1 %16 = urem i64 %14, 10 %17 = icmp eq i64 %16, 0 @@ -1474,7 +1474,7 @@ define hidden range(i32 0, 2) i32 @mpd_isinteger(ptr noundef readonly captures(n .lr.ph19.i.i: ; preds = %16, %.lr.ph19.i.i %.118.i.i = phi i64 [ %21, %.lr.ph19.i.i ], [ %17, %16 ] %.01217.i.i = phi i64 [ %20, %.lr.ph19.i.i ], [ %15, %16 ] - %20 = udiv i64 %.01217.i.i, 10 + %20 = udiv exact i64 %.01217.i.i, 10 %21 = add i64 %.118.i.i, 1 %22 = urem i64 %20, 10 %23 = icmp eq i64 %22, 0 @@ -1531,7 +1531,7 @@ define internal fastcc range(i32 0, 2) i32 @_mpd_isint(ptr noundef readonly capt .lr.ph19.i: ; preds = %13, %.lr.ph19.i %.118.i = phi i64 [ %18, %.lr.ph19.i ], [ %14, %13 ] %.01217.i = phi i64 [ %17, %.lr.ph19.i ], [ %12, %13 ] - %17 = udiv i64 %.01217.i, 10 + %17 = udiv exact i64 %.01217.i, 10 %18 = add i64 %.118.i, 1 %19 = urem i64 %17, 10 %20 = icmp eq i64 %19, 0 @@ -20869,7 +20869,7 @@ define hidden void @mpd_qpow(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr .lr.ph19.i.i.i: ; preds = %32, %.lr.ph19.i.i.i %.118.i.i.i = phi i64 [ %37, %.lr.ph19.i.i.i ], [ %33, %32 ] %.01217.i.i.i = phi i64 [ %36, %.lr.ph19.i.i.i ], [ %31, %32 ] - %36 = udiv i64 %.01217.i.i.i, 10 + %36 = udiv exact i64 %.01217.i.i.i, 10 %37 = add i64 %.118.i.i.i, 1 %38 = urem i64 %36, 10 %39 = icmp eq i64 %38, 0 @@ -21430,7 +21430,7 @@ _mpd_cmp_abs.exit.thread42: ; preds = %.preheader, %6, %_m .lr.ph19.i.i: ; preds = %62, %.lr.ph19.i.i %.118.i.i = phi i64 [ %67, %.lr.ph19.i.i ], [ %63, %62 ] %.01217.i.i = phi i64 [ %66, %.lr.ph19.i.i ], [ %61, %62 ] - %66 = udiv i64 %.01217.i.i, 10 + %66 = udiv exact i64 %.01217.i.i, 10 %67 = add i64 %.118.i.i, 1 %68 = urem i64 %66, 10 %69 = icmp eq i64 %68, 0 @@ -23356,7 +23356,7 @@ mpd_seterror.exit: ; preds = %111, %114, %126 .lr.ph19.i.i: ; preds = %145, %.lr.ph19.i.i %.118.i.i = phi i64 [ %150, %.lr.ph19.i.i ], [ %146, %145 ] %.01217.i.i = phi i64 [ %149, %.lr.ph19.i.i ], [ %144, %145 ] - %149 = udiv i64 %.01217.i.i, 10 + %149 = udiv exact i64 %.01217.i.i, 10 %150 = add i64 %.118.i.i, 1 %151 = urem i64 %149, 10 %152 = icmp eq i64 %151, 0 @@ -23406,7 +23406,7 @@ _mpd_isint.exit.thread: ; preds = %133, %_mpd_isint.ex .lr.ph19.i.i130: ; preds = %170, %.lr.ph19.i.i130 %.118.i.i131 = phi i64 [ %175, %.lr.ph19.i.i130 ], [ %171, %170 ] %.01217.i.i132 = phi i64 [ %174, %.lr.ph19.i.i130 ], [ %169, %170 ] - %174 = udiv i64 %.01217.i.i132, 10 + %174 = udiv exact i64 %.01217.i.i132, 10 %175 = add i64 %.118.i.i131, 1 %176 = urem i64 %174, 10 %177 = icmp eq i64 %176, 0 @@ -23456,7 +23456,7 @@ _mpd_isint.exit134.thread: ; preds = %_mpd_isint.exit.thr .lr.ph19.i.i142: ; preds = %195, %.lr.ph19.i.i142 %.118.i.i143 = phi i64 [ %200, %.lr.ph19.i.i142 ], [ %196, %195 ] %.01217.i.i144 = phi i64 [ %199, %.lr.ph19.i.i142 ], [ %194, %195 ] - %199 = udiv i64 %.01217.i.i144, 10 + %199 = udiv exact i64 %.01217.i.i144, 10 %200 = add i64 %.118.i.i143, 1 %201 = urem i64 %199, 10 %202 = icmp eq i64 %201, 0 @@ -25173,7 +25173,7 @@ mpd_iszero.exit: ; preds = %83 .lr.ph19.i: ; preds = %98, %.lr.ph19.i %.118.i = phi i64 [ %103, %.lr.ph19.i ], [ %99, %98 ] %.01217.i = phi i64 [ %102, %.lr.ph19.i ], [ %97, %98 ] - %102 = udiv i64 %.01217.i, 10 + %102 = udiv exact i64 %.01217.i, 10 %103 = add i64 %.118.i, 1 %104 = urem i64 %102, 10 %105 = icmp eq i64 %104, 0 @@ -27352,7 +27352,7 @@ mpd_qsub.exit.i: ; preds = %401, %397, %395 .lr.ph19.i.i: ; preds = %413, %.lr.ph19.i.i %.118.i108.i = phi i64 [ %418, %.lr.ph19.i.i ], [ %414, %413 ] %.01217.i.i = phi i64 [ %417, %.lr.ph19.i.i ], [ %412, %413 ] - %417 = udiv i64 %.01217.i.i, 10 + %417 = udiv exact i64 %.01217.i.i, 10 %418 = add i64 %.118.i108.i, 1 %419 = urem i64 %417, 10 %420 = icmp eq i64 %419, 0 @@ -28406,7 +28406,7 @@ define hidden i64 @mpd_qexport_u16(ptr noundef captures(none) %0, i64 noundef %1 .lr.ph19.i.i: ; preds = %27, %.lr.ph19.i.i %.118.i.i = phi i64 [ %32, %.lr.ph19.i.i ], [ %28, %27 ] %.01217.i.i = phi i64 [ %31, %.lr.ph19.i.i ], [ %26, %27 ] - %31 = udiv i64 %.01217.i.i, 10 + %31 = udiv exact i64 %.01217.i.i, 10 %32 = add i64 %.118.i.i, 1 %33 = urem i64 %31, 10 %34 = icmp eq i64 %33, 0 @@ -28677,7 +28677,7 @@ define hidden i64 @mpd_qexport_u32(ptr noundef captures(none) %0, i64 noundef %1 .lr.ph19.i.i: ; preds = %27, %.lr.ph19.i.i %.118.i.i = phi i64 [ %32, %.lr.ph19.i.i ], [ %28, %27 ] %.01217.i.i = phi i64 [ %31, %.lr.ph19.i.i ], [ %26, %27 ] - %31 = udiv i64 %.01217.i.i, 10 + %31 = udiv exact i64 %.01217.i.i, 10 %32 = add i64 %.118.i.i, 1 %33 = urem i64 %31, 10 %34 = icmp eq i64 %33, 0 diff --git a/bench/diesel-rs/optimized/2zzzvc1em6im74h3.ll b/bench/diesel-rs/optimized/2zzzvc1em6im74h3.ll index d6e22e3bb79..6ac535541ad 100644 --- a/bench/diesel-rs/optimized/2zzzvc1em6im74h3.ll +++ b/bench/diesel-rs/optimized/2zzzvc1em6im74h3.ll @@ -2296,7 +2296,7 @@ define hidden noundef zeroext i1 @"_ZN89_$LT$chrono..format..formatting..Delayed %163 = getelementptr inbounds nuw i8, ptr %32, i64 40 %164 = getelementptr inbounds nuw i8, ptr %32, i64 16 %165 = getelementptr inbounds nuw i8, ptr %32, i64 24 - %166 = udiv i32 %storemerge.i, 1000 + %166 = udiv exact i32 %storemerge.i, 1000 %167 = getelementptr inbounds nuw i8, ptr %35, i64 8 %.sroa.5114.0..sroa_idx.i73 = getelementptr inbounds nuw i8, ptr %33, i64 16 %.sroa.6115.0..sroa_idx.i74 = getelementptr inbounds nuw i8, ptr %33, i64 24 @@ -2309,7 +2309,7 @@ define hidden noundef zeroext i1 @"_ZN89_$LT$chrono..format..formatting..Delayed %170 = getelementptr inbounds nuw i8, ptr %36, i64 40 %171 = getelementptr inbounds nuw i8, ptr %36, i64 16 %172 = getelementptr inbounds nuw i8, ptr %36, i64 24 - %173 = udiv i32 %storemerge.i, 1000000 + %173 = udiv exact i32 %storemerge.i, 1000000 %174 = getelementptr inbounds nuw i8, ptr %39, i64 8 %.sroa.597.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %37, i64 16 %.sroa.698.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %37, i64 24 @@ -2454,7 +2454,7 @@ define hidden noundef zeroext i1 @"_ZN89_$LT$chrono..format..formatting..Delayed %280 = getelementptr inbounds nuw i8, ptr %7, i64 40 %281 = getelementptr inbounds nuw i8, ptr %7, i64 16 %282 = getelementptr inbounds nuw i8, ptr %7, i64 24 - %283 = udiv i32 %271, 1000 + %283 = udiv exact i32 %271, 1000 %284 = getelementptr inbounds nuw i8, ptr %10, i64 8 %.sroa.516.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %8, i64 16 %.sroa.617.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %8, i64 24 @@ -2467,7 +2467,7 @@ define hidden noundef zeroext i1 @"_ZN89_$LT$chrono..format..formatting..Delayed %287 = getelementptr inbounds nuw i8, ptr %11, i64 40 %288 = getelementptr inbounds nuw i8, ptr %11, i64 16 %289 = getelementptr inbounds nuw i8, ptr %11, i64 24 - %290 = udiv i32 %271, 1000000 + %290 = udiv exact i32 %271, 1000000 %291 = getelementptr inbounds nuw i8, ptr %14, i64 8 %.sroa.59.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %12, i64 16 %.sroa.6.0..sroa_idx.i170 = getelementptr inbounds nuw i8, ptr %12, i64 24 diff --git a/bench/flac/optimized/encode.ll b/bench/flac/optimized/encode.ll index d4247776127..21b8ba9dbc2 100644 --- a/bench/flac/optimized/encode.ll +++ b/bench/flac/optimized/encode.ll @@ -3385,7 +3385,7 @@ fread.inline.exit328: ; preds = %1411, %1409 %1423 = load i32, ptr %1393, align 8, !tbaa !48 %1424 = zext i32 %1423 to i64 %1425 = urem i64 %.0228, %1424 - %1426 = udiv i64 %.0228, %1424 + %1426 = udiv exact i64 %.0228, %1424 %.not307 = icmp eq i64 %1425, 0 br i1 %.not307, label %1430, label %1427 @@ -3516,7 +3516,7 @@ fread.inline.exit338: ; preds = %fread.inline.exit33 %.2225.ph556 = phi i64 [ %.2225.ph, %..thread554_crit_edge ], [ %1449, %1453 ] %1481 = zext i32 %1480 to i64 %1482 = urem i64 %.2225.ph556, %1481 - %1483 = udiv i64 %.2225.ph556, %1481 + %1483 = udiv exact i64 %.2225.ph556, %1481 %.not297 = icmp eq i64 %1482, 0 br i1 %.not297, label %1487, label %1484 @@ -3639,7 +3639,7 @@ fread.inline.exit343: ; preds = %fread.inline.exit34 %1536 = load i32, ptr %1505, align 8, !tbaa !48 %1537 = zext i32 %1536 to i64 %1538 = urem i64 %1515, %1537 - %1539 = udiv i64 %1515, %1537 + %1539 = udiv exact i64 %1515, %1537 %.not286 = icmp eq i64 %1538, 0 br i1 %.not286, label %1543, label %1540 diff --git a/bench/icu/optimized/number_decimalquantity.ll b/bench/icu/optimized/number_decimalquantity.ll index 9360db2b2b3..a95b17160b7 100644 --- a/bench/icu/optimized/number_decimalquantity.ll +++ b/bench/icu/optimized/number_decimalquantity.ll @@ -2591,20 +2591,17 @@ for.end.i106: ; preds = %for.body.i91, %_ZNK %cmp9.i108 = icmp eq i64 %result.0.lcssa.i107, 0 br i1 %cmp9.i108, label %return, label %land.rhs10.i -land.rhs10.i: ; preds = %for.end.i106, %while.body.i - %result.2.i = phi i64 [ %div.i, %while.body.i ], [ %result.0.lcssa.i107, %for.end.i106 ] +land.rhs10.i: ; preds = %for.end.i106, %land.rhs10.i + %result.2.i = phi i64 [ %div.i, %land.rhs10.i ], [ %result.0.lcssa.i107, %for.end.i106 ] %rem.i = urem i64 %result.2.i, 10 - %div.i = udiv i64 %result.2.i, 10 - %cmp11.i = icmp eq i64 %rem.i, 0 - br i1 %cmp11.i, label %while.body.i, label %_ZNK6icu_756number4impl15DecimalQuantity14toFractionLongEb.exit127.loopexit - -while.body.i: ; preds = %land.rhs10.i - %cmp9.old.not.i = icmp ult i64 %result.2.i, 10 - br i1 %cmp9.old.not.i, label %_ZNK6icu_756number4impl15DecimalQuantity14toFractionLongEb.exit127.loopexit, label %land.rhs10.i - -_ZNK6icu_756number4impl15DecimalQuantity14toFractionLongEb.exit127.loopexit: ; preds = %while.body.i, %land.rhs10.i - %result.1.i109.ph = phi i64 [ %result.2.i, %land.rhs10.i ], [ 0, %while.body.i ] - %40 = uitofp i64 %result.1.i109.ph to double + %div.i = icmp ne i64 %rem.i, 0 + %cmp11.i = udiv exact i64 %result.2.i, 10 + %cmp9.old.not.i = icmp eq i64 %result.2.i, 0 + %or.cond = or i1 %cmp11.i, %cmp9.old.not.i + br i1 %or.cond, label %_ZNK6icu_756number4impl15DecimalQuantity14toFractionLongEb.exit127.loopexit, label %land.rhs10.i + +_ZNK6icu_756number4impl15DecimalQuantity14toFractionLongEb.exit127.loopexit:; preds = %land.rhs10.i + %40 = uitofp i64 %result.2.i to double br label %return sw.bb10: ; preds = %entry @@ -2823,12 +2820,12 @@ for.end: ; preds = %for.body, %_ZNK6icu land.rhs10: ; preds = %for.end, %while.body %result.2 = phi i64 [ %div, %while.body ], [ %result.0.lcssa, %for.end ] %rem = urem i64 %result.2, 10 - %div = udiv i64 %result.2, 10 + %div = udiv exact i64 %result.2, 10 %cmp11 = icmp eq i64 %rem, 0 br i1 %cmp11, label %while.body, label %if.end13 while.body: ; preds = %land.rhs10 - %cmp9.old.not = icmp ult i64 %result.2, 10 + %cmp9.old.not = icmp eq i64 %result.2, 0 br i1 %cmp9.old.not, label %if.end13, label %land.rhs10 if.end13: ; preds = %land.rhs10, %while.body, %entry, %for.end diff --git a/bench/icu/optimized/plurrule.ll b/bench/icu/optimized/plurrule.ll index c2e1883298f..59f54430ac6 100644 --- a/bench/icu/optimized/plurrule.ll +++ b/bench/icu/optimized/plurrule.ll @@ -8078,7 +8078,7 @@ while.cond.preheader.i: ; preds = %if.end21.i while.body.i: ; preds = %while.cond.preheader.i, %while.body.i %fdwtz.013.i = phi i64 [ %div.i, %while.body.i ], [ %f, %while.cond.preheader.i ] - %div.i = sdiv i64 %fdwtz.013.i, 10 + %div.i = sdiv exact i64 %fdwtz.013.i, 10 %rem.i = srem i64 %div.i, 10 %cmp25.i = icmp eq i64 %rem.i, 0 br i1 %cmp25.i, label %while.body.i, label %invoke.cont, !llvm.loop !50 @@ -8159,7 +8159,7 @@ while.cond.preheader: ; preds = %if.end21 while.body: ; preds = %while.cond.preheader, %while.body %fdwtz.013 = phi i64 [ %div, %while.body ], [ %f, %while.cond.preheader ] - %div = sdiv i64 %fdwtz.013, 10 + %div = sdiv exact i64 %fdwtz.013, 10 %rem = srem i64 %div, 10 %cmp25 = icmp eq i64 %rem, 0 br i1 %cmp25, label %while.body, label %if.end27, !llvm.loop !50 @@ -8243,7 +8243,7 @@ while.cond.preheader.i.i: ; preds = %if.end21.i.i while.body.i.i: ; preds = %while.cond.preheader.i.i, %while.body.i.i %fdwtz.013.i.i = phi i64 [ %div.i.i, %while.body.i.i ], [ %f, %while.cond.preheader.i.i ] - %div.i.i = sdiv i64 %fdwtz.013.i.i, 10 + %div.i.i = sdiv exact i64 %fdwtz.013.i.i, 10 %rem.i.i = srem i64 %div.i.i, 10 %cmp25.i.i = icmp eq i64 %rem.i.i, 0 br i1 %cmp25.i.i, label %while.body.i.i, label %invoke.cont, !llvm.loop !50 @@ -8322,7 +8322,7 @@ while.cond.preheader.i: ; preds = %if.end21.i while.body.i: ; preds = %while.cond.preheader.i, %while.body.i %fdwtz.013.i = phi i64 [ %div.i, %while.body.i ], [ %f, %while.cond.preheader.i ] - %div.i = sdiv i64 %fdwtz.013.i, 10 + %div.i = sdiv exact i64 %fdwtz.013.i, 10 %rem.i = srem i64 %div.i, 10 %cmp25.i = icmp eq i64 %rem.i, 0 br i1 %cmp25.i, label %while.body.i, label %_ZN6icu_7512FixedDecimal4initEdilii.exit, !llvm.loop !50 @@ -8403,7 +8403,7 @@ while.cond.preheader.i.i.i: ; preds = %if.end21.i.i.i while.body.i.i.i: ; preds = %while.cond.preheader.i.i.i, %while.body.i.i.i %fdwtz.013.i.i.i = phi i64 [ %div.i.i.i, %while.body.i.i.i ], [ %f, %while.cond.preheader.i.i.i ] - %div.i.i.i = sdiv i64 %fdwtz.013.i.i.i, 10 + %div.i.i.i = sdiv exact i64 %fdwtz.013.i.i.i, 10 %rem.i.i.i = srem i64 %div.i.i.i, 10 %cmp25.i.i.i = icmp eq i64 %rem.i.i.i, 0 br i1 %cmp25.i.i.i, label %while.body.i.i.i, label %invoke.cont, !llvm.loop !50 @@ -8482,7 +8482,7 @@ while.cond.preheader.i.i: ; preds = %if.end21.i.i while.body.i.i: ; preds = %while.cond.preheader.i.i, %while.body.i.i %fdwtz.013.i.i = phi i64 [ %div.i.i, %while.body.i.i ], [ %f, %while.cond.preheader.i.i ] - %div.i.i = sdiv i64 %fdwtz.013.i.i, 10 + %div.i.i = sdiv exact i64 %fdwtz.013.i.i, 10 %rem.i.i = srem i64 %div.i.i, 10 %cmp25.i.i = icmp eq i64 %rem.i.i, 0 br i1 %cmp25.i.i, label %while.body.i.i, label %_ZN6icu_7512FixedDecimal4initEdili.exit, !llvm.loop !50 @@ -8624,7 +8624,7 @@ while.cond.preheader.i.i.i: ; preds = %if.end21.i.i.i while.body.i.i.i: ; preds = %while.cond.preheader.i.i.i, %while.body.i.i.i %fdwtz.013.i.i.i = phi i64 [ %div.i.i.i, %while.body.i.i.i ], [ %retval.0.i, %while.cond.preheader.i.i.i ] - %div.i.i.i = sdiv i64 %fdwtz.013.i.i.i, 10 + %div.i.i.i = sdiv exact i64 %fdwtz.013.i.i.i, 10 %rem.i.i.i = srem i64 %div.i.i.i, 10 %cmp25.i.i.i = icmp eq i64 %rem.i.i.i, 0 br i1 %cmp25.i.i.i, label %while.body.i.i.i, label %invoke.cont2, !llvm.loop !50 @@ -8889,7 +8889,7 @@ while.cond.preheader.i.i.i: ; preds = %if.end21.i.i.i while.body.i.i.i: ; preds = %while.cond.preheader.i.i.i, %while.body.i.i.i %fdwtz.013.i.i.i = phi i64 [ %div.i.i.i, %while.body.i.i.i ], [ %retval.0.i6, %while.cond.preheader.i.i.i ] - %div.i.i.i = sdiv i64 %fdwtz.013.i.i.i, 10 + %div.i.i.i = sdiv exact i64 %fdwtz.013.i.i.i, 10 %rem.i.i.i = srem i64 %div.i.i.i, 10 %cmp25.i.i.i = icmp eq i64 %rem.i.i.i, 0 br i1 %cmp25.i.i.i, label %while.body.i.i.i, label %_ZN6icu_7512FixedDecimal4initEdil.exit, !llvm.loop !50 @@ -9374,7 +9374,7 @@ while.cond.preheader.i.i: ; preds = %if.end21.i.i86 while.body.i.i: ; preds = %while.cond.preheader.i.i, %while.body.i.i %fdwtz.013.i.i = phi i64 [ %div.i.i, %while.body.i.i ], [ %retval.0.i, %while.cond.preheader.i.i ] - %div.i.i = sdiv i64 %fdwtz.013.i.i, 10 + %div.i.i = sdiv exact i64 %fdwtz.013.i.i, 10 %rem.i.i = srem i64 %div.i.i, 10 %cmp25.i.i = icmp eq i64 %rem.i.i, 0 br i1 %cmp25.i.i, label %while.body.i.i, label %_ZN6icu_7512FixedDecimal4initEdili.exit99, !llvm.loop !50 @@ -9741,7 +9741,7 @@ while.cond.preheader.i.i.i: ; preds = %if.end21.i.i.i while.body.i.i.i: ; preds = %while.cond.preheader.i.i.i, %while.body.i.i.i %fdwtz.013.i.i.i = phi i64 [ %div.i.i.i, %while.body.i.i.i ], [ %retval.0.i, %while.cond.preheader.i.i.i ] - %div.i.i.i = sdiv i64 %fdwtz.013.i.i.i, 10 + %div.i.i.i = sdiv exact i64 %fdwtz.013.i.i.i, 10 %rem.i.i.i = srem i64 %div.i.i.i, 10 %cmp25.i.i.i = icmp eq i64 %rem.i.i.i, 0 br i1 %cmp25.i.i.i, label %while.body.i.i.i, label %_ZN6icu_7512FixedDecimal4initEdil.exit, !llvm.loop !50 diff --git a/bench/image-rs/optimized/ptscn4jakoj4p9m.ll b/bench/image-rs/optimized/ptscn4jakoj4p9m.ll index 06a7a17cc68..deac1d1410a 100644 --- a/bench/image-rs/optimized/ptscn4jakoj4p9m.ll +++ b/bench/image-rs/optimized/ptscn4jakoj4p9m.ll @@ -21327,7 +21327,7 @@ define hidden void @_ZN5image5image12ImageDecoder24read_image_with_progress17h8f 82: ; preds = %.critedge.i.i.i %83 = urem i64 %71, 3 - %84 = udiv i64 %71, 3 + %84 = udiv exact i64 %71, 3 %85 = icmp eq i64 %83, 0 br i1 %switch2.i.i.i.i.i, label %89, label %167 @@ -21343,11 +21343,11 @@ define hidden void @_ZN5image5image12ImageDecoder24read_image_with_progress17h8f 90: ; preds = %89 call void @llvm.lifetime.start.p0(i64 768, ptr nonnull %32), !noalias !5722 call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(768) %32, i8 0, i64 768, i1 false), !noalias !5722 - %.not128.i.i.i.i.i.i = icmp ult i64 %71, 3 + %.not128.i.i.i.i.i.i = icmp eq i64 %67, 0 br i1 %.not128.i.i.i.i.i.i, label %._crit_edge.i.i.i.i.i.i, label %.lr.ph.i.i.i.i.i.i .lr.ph.i.i.i.i.i.i: ; preds = %90 - %91 = udiv i64 %71, 3 + %91 = udiv exact i64 %71, 3 %92 = getelementptr inbounds nuw i8, ptr %30, i64 1 %93 = getelementptr inbounds nuw i8, ptr %30, i64 2 br label %97 @@ -21606,7 +21606,7 @@ _ZN3qoi6decode18decode_impl_stream17h74a453a118f696f6E.exit.i.i.i.i.i: ; preds = 168: ; preds = %167 call void @llvm.lifetime.start.p0(i64 768, ptr nonnull %27), !noalias !5737 call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(768) %27, i8 0, i64 768, i1 false), !noalias !5737 - %.not144.i.i.i.i.i.i = icmp ult i64 %71, 3 + %.not144.i.i.i.i.i.i = icmp eq i64 %67, 0 br i1 %.not144.i.i.i.i.i.i, label %._crit_edge.i18.i.i.i.i.i, label %.lr.ph.i8.i.i.i.i.i .lr.ph.i8.i.i.i.i.i: ; preds = %168 @@ -22964,7 +22964,7 @@ define hidden void @_ZN5image5image12ImageDecoder24read_image_with_progress17hc9 86: ; preds = %.critedge.i.i.i %87 = urem i64 %77, 3 - %88 = udiv i64 %77, 3 + %88 = udiv exact i64 %77, 3 %89 = icmp eq i64 %87, 0 br i1 %switch.i.i, label %93, label %194 @@ -22980,11 +22980,11 @@ define hidden void @_ZN5image5image12ImageDecoder24read_image_with_progress17hc9 94: ; preds = %93 call void @llvm.lifetime.start.p0(i64 768, ptr nonnull %49), !noalias !5893 call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(768) %49, i8 0, i64 768, i1 false), !noalias !5893 - %.not147.i.i.i.i.i.i = icmp ult i64 %77, 3 + %.not147.i.i.i.i.i.i = icmp eq i64 %62, 0 br i1 %.not147.i.i.i.i.i.i, label %._crit_edge.i.i.i.i.i.i, label %.lr.ph.i.i.i.i.i.i .lr.ph.i.i.i.i.i.i: ; preds = %94 - %95 = udiv i64 %77, 3 + %95 = udiv exact i64 %77, 3 %.fca.1.gep.i68.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %43, i64 8 %.fca.1.gep.i71.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %42, i64 8 %96 = getelementptr inbounds nuw i8, ptr %47, i64 1 @@ -23286,7 +23286,7 @@ _ZN3qoi6decode18decode_impl_stream17h822e36dcbf89d2b9E.exit.i.i.i.i.i: ; preds = 195: ; preds = %194 call void @llvm.lifetime.start.p0(i64 768, ptr nonnull %40), !noalias !5928 call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(768) %40, i8 0, i64 768, i1 false), !noalias !5928 - %.not171.i.i.i.i.i.i = icmp ult i64 %77, 3 + %.not171.i.i.i.i.i.i = icmp eq i64 %62, 0 br i1 %.not171.i.i.i.i.i.i, label %._crit_edge.i18.i.i.i.i.i, label %.lr.ph.i8.i.i.i.i.i .lr.ph.i8.i.i.i.i.i: ; preds = %195 diff --git a/bench/lightgbm/optimized/boosting.ll b/bench/lightgbm/optimized/boosting.ll index 376dfda299b..6bc30a1a3dc 100644 --- a/bench/lightgbm/optimized/boosting.ll +++ b/bench/lightgbm/optimized/boosting.ll @@ -8363,8 +8363,8 @@ define internal fastcc noundef double @_ZN8LightGBM6CommonL3PowIdEEdT_i(double n %4 = icmp eq i32 %1, 0 br i1 %4, label %common.ret40, label %.lr.ph35 -common.ret40: ; preds = %.lr.ph.preheader, %tailrecurse.backedge, %19, %tailrecurse._crit_edge - %common.ret40.op = phi double [ %7, %tailrecurse._crit_edge ], [ %22, %19 ], [ 1.000000e+00, %tailrecurse.backedge ], [ 1.000000e+00, %.lr.ph.preheader ] +common.ret40: ; preds = %.lr.ph.preheader, %19, %tailrecurse._crit_edge + %common.ret40.op = phi double [ %7, %tailrecurse._crit_edge ], [ %22, %19 ], [ 1.000000e+00, %.lr.ph.preheader ] ret double %common.ret40.op tailrecurse._crit_edge: ; preds = %2 @@ -8388,12 +8388,11 @@ tailrecurse.backedge: ; preds = %10, %17 %.tr22.pn = phi double [ %.tr2234, %10 ], [ %18, %17 ] %.tr17.be = phi i32 [ %11, %10 ], [ %15, %17 ] %.tr.be = fmul double %.tr2234, %.tr22.pn - %12 = icmp eq i32 %.tr17.be, 0 - br i1 %12, label %common.ret40, label %.lr.ph35 + br label %.lr.ph35 13: ; preds = %.lr.ph35 %14 = urem i32 %.tr172333, 3 - %15 = udiv i32 %.tr172333, 3 + %15 = udiv exact i32 %.tr172333, 3 %16 = icmp eq i32 %14, 0 br i1 %16, label %17, label %19 diff --git a/bench/lightgbm/optimized/gbdt.ll b/bench/lightgbm/optimized/gbdt.ll index 4ca3571172c..24e810f3acb 100644 --- a/bench/lightgbm/optimized/gbdt.ll +++ b/bench/lightgbm/optimized/gbdt.ll @@ -10014,10 +10014,10 @@ _ZNSt6vectorIdN8LightGBM6Common18AlignmentAllocatorIdLm32EEEE6resizeEm.exit: ; p %31 = load i32, ptr %15, align 8 %32 = sext i32 %31 to i64 %33 = srem i64 %30, %32 - %34 = sdiv i64 %30, %32 + %34 = sdiv exact i64 %30, %32 %.not9 = icmp eq i64 %33, 0 %.not10 = icmp eq i64 %34, %17 - %or.cond = and i1 %.not9, %.not10 + %or.cond = select i1 %.not9, i1 %.not10, i1 false br i1 %or.cond, label %40, label %35 35: ; preds = %28 @@ -19443,8 +19443,8 @@ define internal fastcc noundef double @_ZN8LightGBM6CommonL3PowIdEEdT_i(double n %4 = icmp eq i32 %1, 0 br i1 %4, label %common.ret40, label %.lr.ph35 -common.ret40: ; preds = %.lr.ph.preheader, %tailrecurse.backedge, %19, %tailrecurse._crit_edge - %common.ret40.op = phi double [ %7, %tailrecurse._crit_edge ], [ %22, %19 ], [ 1.000000e+00, %tailrecurse.backedge ], [ 1.000000e+00, %.lr.ph.preheader ] +common.ret40: ; preds = %.lr.ph.preheader, %19, %tailrecurse._crit_edge + %common.ret40.op = phi double [ %7, %tailrecurse._crit_edge ], [ %22, %19 ], [ 1.000000e+00, %.lr.ph.preheader ] ret double %common.ret40.op tailrecurse._crit_edge: ; preds = %2 @@ -19468,12 +19468,11 @@ tailrecurse.backedge: ; preds = %10, %17 %.tr22.pn = phi double [ %.tr2234, %10 ], [ %18, %17 ] %.tr17.be = phi i32 [ %11, %10 ], [ %15, %17 ] %.tr.be = fmul double %.tr2234, %.tr22.pn - %12 = icmp eq i32 %.tr17.be, 0 - br i1 %12, label %common.ret40, label %.lr.ph35 + br label %.lr.ph35 13: ; preds = %.lr.ph35 %14 = urem i32 %.tr172333, 3 - %15 = udiv i32 %.tr172333, 3 + %15 = udiv exact i32 %.tr172333, 3 %16 = icmp eq i32 %14, 0 br i1 %16, label %17, label %19 diff --git a/bench/lightgbm/optimized/objective_function.ll b/bench/lightgbm/optimized/objective_function.ll index 34f525d8611..a2456254f57 100644 --- a/bench/lightgbm/optimized/objective_function.ll +++ b/bench/lightgbm/optimized/objective_function.ll @@ -23372,8 +23372,8 @@ define internal fastcc noundef double @_ZN8LightGBM6CommonL3PowIiEEdT_i(i32 noun %4 = icmp eq i32 %1, 0 br i1 %4, label %common.ret40, label %.lr.ph35 -common.ret40: ; preds = %.lr.ph.preheader, %tailrecurse.backedge, %19, %tailrecurse._crit_edge - %common.ret40.op = phi double [ %7, %tailrecurse._crit_edge ], [ %23, %19 ], [ 1.000000e+00, %tailrecurse.backedge ], [ 1.000000e+00, %.lr.ph.preheader ] +common.ret40: ; preds = %.lr.ph.preheader, %19, %tailrecurse._crit_edge + %common.ret40.op = phi double [ %7, %tailrecurse._crit_edge ], [ %23, %19 ], [ 1.000000e+00, %.lr.ph.preheader ] ret double %common.ret40.op tailrecurse._crit_edge: ; preds = %2 @@ -23397,12 +23397,11 @@ tailrecurse.backedge: ; preds = %10, %17 %.tr22.pn = phi i32 [ %.tr2234, %10 ], [ %18, %17 ] %.tr17.be = phi i32 [ %11, %10 ], [ %15, %17 ] %.tr.be = mul nuw nsw i32 %.tr22.pn, %.tr2234 - %12 = icmp eq i32 %.tr17.be, 0 - br i1 %12, label %common.ret40, label %.lr.ph35 + br label %.lr.ph35 13: ; preds = %.lr.ph35 %14 = urem i32 %.tr172333, 3 - %15 = udiv i32 %.tr172333, 3 + %15 = udiv exact i32 %.tr172333, 3 %16 = icmp eq i32 %14, 0 br i1 %16, label %17, label %19 @@ -35418,8 +35417,8 @@ define internal fastcc noundef double @_ZN8LightGBM6CommonL3PowIdEEdT_i(double n %4 = icmp eq i32 %1, 0 br i1 %4, label %common.ret40, label %.lr.ph35 -common.ret40: ; preds = %.lr.ph.preheader, %tailrecurse.backedge, %19, %tailrecurse._crit_edge - %common.ret40.op = phi double [ %7, %tailrecurse._crit_edge ], [ %22, %19 ], [ 1.000000e+00, %tailrecurse.backedge ], [ 1.000000e+00, %.lr.ph.preheader ] +common.ret40: ; preds = %.lr.ph.preheader, %19, %tailrecurse._crit_edge + %common.ret40.op = phi double [ %7, %tailrecurse._crit_edge ], [ %22, %19 ], [ 1.000000e+00, %.lr.ph.preheader ] ret double %common.ret40.op tailrecurse._crit_edge: ; preds = %2 @@ -35443,12 +35442,11 @@ tailrecurse.backedge: ; preds = %10, %17 %.tr22.pn = phi double [ %.tr2234, %10 ], [ %18, %17 ] %.tr17.be = phi i32 [ %11, %10 ], [ %15, %17 ] %.tr.be = fmul double %.tr2234, %.tr22.pn - %12 = icmp eq i32 %.tr17.be, 0 - br i1 %12, label %common.ret40, label %.lr.ph35 + br label %.lr.ph35 13: ; preds = %.lr.ph35 %14 = urem i32 %.tr172333, 3 - %15 = udiv i32 %.tr172333, 3 + %15 = udiv exact i32 %.tr172333, 3 %16 = icmp eq i32 %14, 0 br i1 %16, label %17, label %19 diff --git a/bench/llama.cpp/optimized/ggml.ll b/bench/llama.cpp/optimized/ggml.ll index 46b6d1e31e7..714e41d4065 100644 --- a/bench/llama.cpp/optimized/ggml.ll +++ b/bench/llama.cpp/optimized/ggml.ll @@ -15604,7 +15604,7 @@ if.then497: ; preds = %if.then480 %type_size.i.i515 = getelementptr inbounds nuw [19 x %struct.ggml_type_traits_t], ptr @type_traits, i64 0, i64 %idxprom.i.i514, i32 2 %127 = load i64, ptr %type_size.i.i515, align 8 %rem = urem i64 %offset481.0.copyload, %127 - %div = udiv i64 %offset481.0.copyload, %127 + %div = udiv exact i64 %offset481.0.copyload, %127 %cmp502 = icmp eq i64 %rem, 0 br i1 %cmp502, label %do.body509, label %if.then504 @@ -15619,7 +15619,7 @@ if.then504: ; preds = %if.then497 do.body509: ; preds = %if.then497 %rem510 = urem i64 %121, %127 - %div536 = udiv i64 %121, %127 + %div536 = udiv exact i64 %121, %127 %cmp511 = icmp eq i64 %rem510, 0 br i1 %cmp511, label %do.body518, label %if.then513 @@ -15634,7 +15634,7 @@ if.then513: ; preds = %do.body509 do.body518: ; preds = %do.body509 %rem519 = urem i64 %122, %127 - %div538 = udiv i64 %122, %127 + %div538 = udiv exact i64 %122, %127 %cmp520 = icmp eq i64 %rem519, 0 br i1 %cmp520, label %do.body527, label %if.then522 @@ -15649,7 +15649,7 @@ if.then522: ; preds = %do.body518 do.body527: ; preds = %do.body518 %rem528 = urem i64 %123, %127 - %div540 = udiv i64 %123, %127 + %div540 = udiv exact i64 %123, %127 %cmp529 = icmp eq i64 %rem528, 0 br i1 %cmp529, label %do.end535, label %if.then531 @@ -34091,7 +34091,7 @@ sw.bb: ; preds = %entry %ne1.i.i = getelementptr inbounds nuw i8, ptr %src1, i64 16 %2 = load i64, ptr %ne1.i.i, align 8 %rem.i.i = srem i64 %1, %2 - %div99.i = sdiv i64 %1, %2 + %div99.i = sdiv exact i64 %1, %2 %cmp.i.i = icmp eq i64 %rem.i.i, 0 br i1 %cmp.i.i, label %land.lhs.true.i.i, label %if.then.i @@ -37019,7 +37019,7 @@ sw.bb: ; preds = %do.end %ne1.i.i = getelementptr inbounds nuw i8, ptr %src1, i64 16 %5 = load i64, ptr %ne1.i.i, align 8 %rem.i.i = srem i64 %4, %5 - %div86.i = sdiv i64 %4, %5 + %div86.i = sdiv exact i64 %4, %5 %cmp.i.i = icmp eq i64 %rem.i.i, 0 br i1 %cmp.i.i, label %land.lhs.true.i.i, label %if.then.i @@ -37322,7 +37322,7 @@ sw.bb: ; preds = %entry %ne1.i.i = getelementptr inbounds nuw i8, ptr %src1, i64 16 %2 = load i64, ptr %ne1.i.i, align 8 %rem.i.i = srem i64 %1, %2 - %div86.i = sdiv i64 %1, %2 + %div86.i = sdiv exact i64 %1, %2 %cmp.i.i = icmp eq i64 %rem.i.i, 0 br i1 %cmp.i.i, label %land.lhs.true.i.i, label %if.then.i @@ -38701,7 +38701,7 @@ do.body2.i: ; preds = %sw.bb %ne1.i.i = getelementptr inbounds nuw i8, ptr %src0, i64 16 %5 = load i64, ptr %ne1.i.i, align 8 %rem.i.i = srem i64 %4, %5 - %div.i = sdiv i64 %4, %5 + %div.i = sdiv exact i64 %4, %5 %cmp.i.i = icmp eq i64 %rem.i.i, 0 br i1 %cmp.i.i, label %land.lhs.true.i.i, label %if.then4.i @@ -38711,7 +38711,7 @@ land.lhs.true.i.i: ; preds = %do.body2.i %arrayidx6.i.i = getelementptr inbounds nuw i8, ptr %src0, i64 24 %7 = load i64, ptr %arrayidx6.i.i, align 8 %rem7.i.i = srem i64 %6, %7 - %div43.i = sdiv i64 %6, %7 + %div43.i = sdiv exact i64 %6, %7 %cmp8.i.i = icmp eq i64 %rem7.i.i, 0 br i1 %cmp8.i.i, label %land.lhs.true9.i.i, label %if.then4.i @@ -38721,7 +38721,7 @@ land.lhs.true9.i.i: ; preds = %land.lhs.true.i.i %arrayidx13.i.i = getelementptr inbounds nuw i8, ptr %src0, i64 32 %9 = load i64, ptr %arrayidx13.i.i, align 8 %rem14.i.i = srem i64 %8, %9 - %div45.i = sdiv i64 %8, %9 + %div45.i = sdiv exact i64 %8, %9 %cmp15.i.i = icmp eq i64 %rem14.i.i, 0 br i1 %cmp15.i.i, label %ggml_can_repeat.exit.i, label %if.then4.i @@ -38731,7 +38731,7 @@ ggml_can_repeat.exit.i: ; preds = %land.lhs.true9.i.i %arrayidx19.i.i = getelementptr inbounds nuw i8, ptr %src0, i64 40 %11 = load i64, ptr %arrayidx19.i.i, align 8 %rem20.i.i = srem i64 %10, %11 - %div47.i = sdiv i64 %10, %11 + %div47.i = sdiv exact i64 %10, %11 %cmp21.i.i = icmp eq i64 %rem20.i.i, 0 br i1 %cmp21.i.i, label %do.end8.i, label %if.then4.i @@ -38803,11 +38803,11 @@ for.cond67.preheader.lr.ph.i: ; preds = %for.cond.preheader. %data113.i = getelementptr inbounds nuw i8, ptr %src0, i64 280 %cmp12554.i = icmp slt i64 %5, 1 %cmp73105.i = icmp slt i32 %conv46.i, 1 - %or.cond.not267.i = or i1 %cmp69135.i, %cmp73105.i + %or.cond.not267.i = select i1 %cmp69135.i, i1 true, i1 %cmp73105.i %brmerge.i = or i1 %cmp7884.i, %or.cond.not267.i - %brmerge263.i = or i1 %cmp8268.i, %brmerge.i + %brmerge263.i = select i1 %brmerge.i, i1 true, i1 %cmp8268.i %brmerge264.i = or i1 %cmp8759.i, %brmerge263.i - %brmerge265.i = or i1 %cmp9157.i, %brmerge264.i + %brmerge265.i = select i1 %brmerge264.i, i1 true, i1 %cmp9157.i %brmerge266.i = or i1 %cmp12554.i, %brmerge265.i br i1 %brmerge266.i, label %sw.epilog, label %for.cond67.preheader.us.us.us.us.us.us.us.preheader.i @@ -38943,7 +38943,7 @@ do.body2.i10: ; preds = %sw.bb1 %ne1.i.i12 = getelementptr inbounds nuw i8, ptr %src0, i64 16 %34 = load i64, ptr %ne1.i.i12, align 8 %rem.i.i13 = srem i64 %33, %34 - %div.i42 = sdiv i64 %33, %34 + %div.i42 = sdiv exact i64 %33, %34 %cmp.i.i14 = icmp eq i64 %rem.i.i13, 0 br i1 %cmp.i.i14, label %land.lhs.true.i.i18, label %if.then4.i15 @@ -38953,7 +38953,7 @@ land.lhs.true.i.i18: ; preds = %do.body2.i10 %arrayidx6.i.i20 = getelementptr inbounds nuw i8, ptr %src0, i64 24 %36 = load i64, ptr %arrayidx6.i.i20, align 8 %rem7.i.i21 = srem i64 %35, %36 - %div43.i44 = sdiv i64 %35, %36 + %div43.i44 = sdiv exact i64 %35, %36 %cmp8.i.i22 = icmp eq i64 %rem7.i.i21, 0 br i1 %cmp8.i.i22, label %land.lhs.true9.i.i23, label %if.then4.i15 @@ -38963,7 +38963,7 @@ land.lhs.true9.i.i23: ; preds = %land.lhs.true.i.i18 %arrayidx13.i.i25 = getelementptr inbounds nuw i8, ptr %src0, i64 32 %38 = load i64, ptr %arrayidx13.i.i25, align 8 %rem14.i.i26 = srem i64 %37, %38 - %div45.i46 = sdiv i64 %37, %38 + %div45.i46 = sdiv exact i64 %37, %38 %cmp15.i.i27 = icmp eq i64 %rem14.i.i26, 0 br i1 %cmp15.i.i27, label %ggml_can_repeat.exit.i28, label %if.then4.i15 @@ -38973,7 +38973,7 @@ ggml_can_repeat.exit.i28: ; preds = %land.lhs.true9.i.i2 %arrayidx19.i.i30 = getelementptr inbounds nuw i8, ptr %src0, i64 40 %40 = load i64, ptr %arrayidx19.i.i30, align 8 %rem20.i.i31 = srem i64 %39, %40 - %div47.i48 = sdiv i64 %39, %40 + %div47.i48 = sdiv exact i64 %39, %40 %cmp21.i.i32 = icmp eq i64 %rem20.i.i31, 0 br i1 %cmp21.i.i32, label %do.end8.i33, label %if.then4.i15 @@ -39047,11 +39047,11 @@ for.cond67.preheader.lr.ph.i61: ; preds = %for.cond.preheader. %cmp4.i.i = icmp slt i32 %conv94.i, 1 %wide.trip.count.i.i = and i64 %34, 2147483647 %cmp7399.i = icmp slt i32 %conv46.i47, 1 - %or.cond.not257.i = or i1 %cmp69129.i, %cmp7399.i + %or.cond.not257.i = select i1 %cmp69129.i, i1 true, i1 %cmp7399.i %brmerge.i63 = or i1 %cmp7878.i, %or.cond.not257.i - %brmerge253.i = or i1 %cmp8262.i, %brmerge.i63 + %brmerge253.i = select i1 %brmerge.i63, i1 true, i1 %cmp8262.i %brmerge254.i = or i1 %cmp8753.i, %brmerge253.i - %brmerge255.i = or i1 %cmp9151.i, %brmerge254.i + %brmerge255.i = select i1 %brmerge254.i, i1 true, i1 %cmp9151.i %brmerge256.i = or i1 %cmp4.i.i, %brmerge255.i br i1 %brmerge256.i, label %sw.epilog, label %for.cond67.preheader.us.us.us.us.us.us.us.preheader.i64 @@ -39207,7 +39207,7 @@ do.body2.i: ; preds = %sw.bb %ne1.i.i = getelementptr inbounds nuw i8, ptr %dst, i64 16 %5 = load i64, ptr %ne1.i.i, align 8 %rem.i.i = srem i64 %4, %5 - %div.i = sdiv i64 %4, %5 + %div.i = sdiv exact i64 %4, %5 %cmp.i.i = icmp eq i64 %rem.i.i, 0 br i1 %cmp.i.i, label %land.lhs.true.i.i, label %if.then4.i @@ -39217,7 +39217,7 @@ land.lhs.true.i.i: ; preds = %do.body2.i %arrayidx6.i.i = getelementptr inbounds nuw i8, ptr %dst, i64 24 %7 = load i64, ptr %arrayidx6.i.i, align 8 %rem7.i.i = srem i64 %6, %7 - %div43.i = sdiv i64 %6, %7 + %div43.i = sdiv exact i64 %6, %7 %cmp8.i.i = icmp eq i64 %rem7.i.i, 0 br i1 %cmp8.i.i, label %land.lhs.true9.i.i, label %if.then4.i @@ -39227,7 +39227,7 @@ land.lhs.true9.i.i: ; preds = %land.lhs.true.i.i %arrayidx13.i.i = getelementptr inbounds nuw i8, ptr %dst, i64 32 %9 = load i64, ptr %arrayidx13.i.i, align 8 %rem14.i.i = srem i64 %8, %9 - %div45.i = sdiv i64 %8, %9 + %div45.i = sdiv exact i64 %8, %9 %cmp15.i.i = icmp eq i64 %rem14.i.i, 0 br i1 %cmp15.i.i, label %ggml_can_repeat.exit.i, label %if.then4.i @@ -39237,7 +39237,7 @@ ggml_can_repeat.exit.i: ; preds = %land.lhs.true9.i.i %arrayidx19.i.i = getelementptr inbounds nuw i8, ptr %dst, i64 40 %11 = load i64, ptr %arrayidx19.i.i, align 8 %rem20.i.i = srem i64 %10, %11 - %div47.i = sdiv i64 %10, %11 + %div47.i = sdiv exact i64 %10, %11 %cmp21.i.i = icmp eq i64 %rem20.i.i, 0 br i1 %cmp21.i.i, label %do.end8.i, label %if.then4.i @@ -39410,11 +39410,11 @@ for.cond105.preheader.lr.ph.i: ; preds = %if.end99.i %cmp4.i.i = icmp slt i32 %conv134.i, 1 %wide.trip.count.i86.i = and i64 %5, 2147483647 %cmp111172.i = icmp slt i32 %conv46.i, 1 - %or.cond374.not381.i = or i1 %cmp107202.i, %cmp111172.i + %or.cond374.not381.i = select i1 %cmp107202.i, i1 true, i1 %cmp111172.i %brmerge375.i = or i1 %cmp117151.i, %or.cond374.not381.i - %brmerge376.i = or i1 %cmp121135.i, %brmerge375.i + %brmerge376.i = select i1 %brmerge375.i, i1 true, i1 %cmp121135.i %brmerge377.i = or i1 %cmp127126.i, %brmerge376.i - %brmerge378.i = or i1 %cmp131124.i, %brmerge377.i + %brmerge378.i = select i1 %brmerge377.i, i1 true, i1 %cmp131124.i %brmerge379.i = or i1 %cmp4.i.i, %brmerge378.i br i1 %brmerge379.i, label %ggml_compute_forward_repeat_back_f32.exit, label %for.cond105.preheader.us.us.us.us.us.us.us.preheader.i diff --git a/bench/llvm/optimized/CombinerHelper.ll b/bench/llvm/optimized/CombinerHelper.ll index 733dda919e1..6ec57173d61 100644 --- a/bench/llvm/optimized/CombinerHelper.ll +++ b/bench/llvm/optimized/CombinerHelper.ll @@ -2545,7 +2545,7 @@ _ZNK4llvm3LLT14getNumElementsEv.exit73: ; preds = %54, %56 %.lhs.trunc = trunc nuw i32 %49 to i16 %.rhs.trunc = trunc nuw i32 %61 to i16 %66 = urem i16 %.lhs.trunc, %.rhs.trunc - %67 = udiv i16 %.lhs.trunc, %.rhs.trunc + %67 = udiv exact i16 %.lhs.trunc, %.rhs.trunc %.not = icmp eq i16 %66, 0 br i1 %.not, label %68, label %144 @@ -2576,22 +2576,27 @@ _ZNK4llvm3LLT14getNumElementsEv.exit73: ; preds = %54, %56 br i1 %.not.i.i.i.i.i.i.i.i.i, label %_ZN4llvm11SmallVectorIiLj8EEC2EmRKi.exit, label %.lr.ph.i.i.i.i.i.i.i.i.i, !llvm.loop !257 _ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.i.i: ; preds = %68 - %.not.i74 = icmp samesign ugt i32 %61, %49 - br i1 %.not.i74, label %_ZN4llvm11SmallVectorIiLj8EEC2EmRKi.exit, label %78 + %.not.i74 = icmp eq i32 %49, 0 + br i1 %.not.i74, label %_ZN4llvm11SmallVectorIiLj8EEC2EmRKi.exit.thread, label %79 78: ; preds = %_ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.i.i - %79 = getelementptr inbounds nuw i32, ptr %70, i64 %69 + store i32 %.zext96, ptr %71, align 8, !tbaa !26 + %78 = load ptr, ptr %8, align 8, !tbaa !241 + br label %.critedge + +79: ; preds = %_ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.i.i + %80 = getelementptr inbounds nuw i32, ptr %70, i64 %69 br label %.lr.ph.i.i.i.i.i.i.i.i -.lr.ph.i.i.i.i.i.i.i.i: ; preds = %.lr.ph.i.i.i.i.i.i.i.i, %78 - %.06.i.i.i.i.i.i.i.i = phi ptr [ %80, %.lr.ph.i.i.i.i.i.i.i.i ], [ %70, %78 ] +.lr.ph.i.i.i.i.i.i.i.i: ; preds = %.lr.ph.i.i.i.i.i.i.i.i, %79 + %.06.i.i.i.i.i.i.i.i = phi ptr [ %80, %.lr.ph.i.i.i.i.i.i.i.i ], [ %70, %79 ] store i32 -1, ptr %.06.i.i.i.i.i.i.i.i, align 4, !tbaa !213 %80 = getelementptr inbounds nuw i8, ptr %.06.i.i.i.i.i.i.i.i, i64 4 - %.not.i.i.i.i.i.i.i.i = icmp eq ptr %80, %79 + %.not.i.i.i.i.i.i.i.i = icmp eq ptr %80, %80 br i1 %.not.i.i.i.i.i.i.i.i, label %_ZN4llvm11SmallVectorIiLj8EEC2EmRKi.exit, label %.lr.ph.i.i.i.i.i.i.i.i, !llvm.loop !257 -_ZN4llvm11SmallVectorIiLj8EEC2EmRKi.exit: ; preds = %.lr.ph.i.i.i.i.i.i.i.i, %.lr.ph.i.i.i.i.i.i.i.i.i, %_ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.i.i - %.pre = phi ptr [ %70, %_ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.i.i ], [ %75, %.lr.ph.i.i.i.i.i.i.i.i.i ], [ %70, %.lr.ph.i.i.i.i.i.i.i.i ] +_ZN4llvm11SmallVectorIiLj8EEC2EmRKi.exit: ; preds = %.lr.ph.i.i.i.i.i.i.i.i, %.lr.ph.i.i.i.i.i.i.i.i.i + %.pre = phi ptr [ %75, %.lr.ph.i.i.i.i.i.i.i.i.i ], [ %70, %.lr.ph.i.i.i.i.i.i.i.i ] store i32 %.zext96, ptr %71, align 8, !tbaa !26 %81 = load ptr, ptr %8, align 8, !tbaa !241 %82 = getelementptr inbounds nuw i8, ptr %81, i64 112 @@ -2608,29 +2613,29 @@ _ZN4llvm11SmallVectorIiLj8EEC2EmRKi.exit: ; preds = %.lr.ph.i.i.i.i.i.i. %85 = getelementptr inbounds nuw i32, ptr %.sroa.0.0.copyload.i, i64 %indvars.iv %86 = load i32, ptr %85, align 4, !tbaa !213 %87 = icmp slt i32 %86, 0 - br i1 %87, label %99, label %88 - -88: ; preds = %84 - %89 = urem i32 %86, %61 - %90 = udiv i32 %86, %61 - %91 = trunc nuw nsw i64 %indvars.iv to i32 - %92 = urem i32 %91, %61 - %93 = udiv i32 %91, %61 - %.not64 = icmp eq i32 %89, %92 - br i1 %.not64, label %94, label %.loopexit - -94: ; preds = %88 - %95 = zext i32 %93 to i64 - %96 = getelementptr inbounds nuw i32, ptr %.pre, i64 %95 - %97 = load i32, ptr %96, align 4, !tbaa !213 - %98 = icmp slt i32 %97, 0 - %.not65 = icmp eq i32 %97, %90 - %or.cond118 = or i1 %98, %.not65 - br i1 %or.cond118, label %._crit_edge, label %.loopexit - -._crit_edge: ; preds = %94 - store i32 %90, ptr %96, align 4, !tbaa !213 - br label %99 + br i1 %87, label %99, label %89 + +._crit_edge: ; preds = %84 + %90 = urem i32 %87, %61 + %91 = udiv i32 %87, %61 + %92 = trunc nuw nsw i64 %indvars.iv to i32 + %93 = urem i32 %92, %61 + %94 = udiv i32 %92, %61 + %.not64 = icmp eq i32 %90, %93 + br i1 %.not64, label %95, label %.loopexit + +95: ; preds = %89 + %96 = zext i32 %94 to i64 + %97 = getelementptr inbounds nuw i32, ptr %.pre, i64 %96 + %98 = load i32, ptr %97, align 4, !tbaa !213 + %99 = icmp slt i32 %98, 0 + %.not65 = icmp eq i32 %98, %91 + %or.cond122 = or i1 %99, %.not65 + br i1 %or.cond122, label %._crit_edge, label %.loopexit + +._crit_edge: ; preds = %95 + store i32 %91, ptr %97, align 4, !tbaa !213 + br label %100 99: ; preds = %._crit_edge, %84 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 @@ -2641,13 +2646,15 @@ _ZN4llvm11SmallVectorIiLj8EEC2EmRKi.exit: ; preds = %.lr.ph.i.i.i.i.i.i. %.pre112 = load i32, ptr %71, align 8, !tbaa !26 br label %.critedge -.critedge: ; preds = %.critedge.loopexit, %_ZN4llvm11SmallVectorIiLj8EEC2EmRKi.exit - %100 = phi i32 [ %.pre112, %.critedge.loopexit ], [ %.zext96, %_ZN4llvm11SmallVectorIiLj8EEC2EmRKi.exit ] - %101 = getelementptr inbounds nuw i8, ptr %81, i64 68 - %102 = load i32, ptr %101, align 4, !tbaa !204 - %103 = zext i32 %100 to i64 - %104 = getelementptr inbounds nuw i32, ptr %.pre, i64 %103 - %.not66104 = icmp eq i32 %100, 0 +.critedge: ; preds = %78, %.critedge.loopexit, %_ZN4llvm11SmallVectorIiLj8EEC2EmRKi.exit + %100 = phi ptr [ %82, %.critedge.loopexit ], [ %82, %_ZN4llvm11SmallVectorIiLj8EEC2EmRKi.exit ], [ %78, %78 ] + %101 = phi ptr [ %.pre, %.critedge.loopexit ], [ %.pre, %_ZN4llvm11SmallVectorIiLj8EEC2EmRKi.exit ], [ %70, %78 ] + %102 = phi i32 [ %.pre112, %.critedge.loopexit ], [ %.zext96, %_ZN4llvm11SmallVectorIiLj8EEC2EmRKi.exit ], [ %.zext96, %78 ] + %103 = getelementptr inbounds nuw i8, ptr %100, i64 68 + %104 = load i32, ptr %103, align 4, !tbaa !204 + %.not66104 = zext i32 %102 to i64 + %106 = getelementptr inbounds nuw i32, ptr %.pre119, i64 %105 + %.not66104 = icmp eq i32 %102, 0 br i1 %.not66104, label %.loopexit, label %.lr.ph107 .lr.ph107: ; preds = %.critedge @@ -2659,7 +2666,7 @@ _ZN4llvm11SmallVectorIiLj8EEC2EmRKi.exit: ; preds = %.lr.ph.i.i.i.i.i.i. br label %110 110: ; preds = %.lr.ph107, %_ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit - %.060106 = phi ptr [ %.pre, %.lr.ph107 ], [ %140, %_ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit ] + %.060106 = phi ptr [ %.pre119, %.lr.ph107 ], [ %140, %_ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit ] %.sroa.083.0105 = phi i32 [ 0, %.lr.ph107 ], [ %.sroa.083.2, %_ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit ] %111 = load i32, ptr %.060106, align 4, !tbaa !213 %112 = icmp slt i32 %111, 0 @@ -2701,7 +2708,7 @@ _ZN4llvm11SmallVectorIiLj8EEC2EmRKi.exit: ; preds = %.lr.ph.i.i.i.i.i.i. %131 = load i32, ptr %105, align 8, !tbaa !26 %132 = load i32, ptr %106, align 4, !tbaa !27 %.not.i.i.not.i76 = icmp ult i32 %131, %132 - %. = select i1 %130, i32 %25, i32 %102 + %. = select i1 %130, i32 %25, i32 %104 br i1 %.not.i.i.not.i76, label %_ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit, label %_ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit.sink.split, !prof !33 _ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit.sink.split: ; preds = %129, %126 @@ -2726,16 +2733,16 @@ _ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit: ; preds %139 = add i32 %138, 1 store i32 %139, ptr %105, align 8, !tbaa !26 %140 = getelementptr inbounds nuw i8, ptr %.060106, i64 4 - %.not66 = icmp eq ptr %140, %104 + %.not66 = icmp eq ptr %140, %106 br i1 %.not66, label %.loopexit.loopexit, label %110 .loopexit.loopexit: ; preds = %_ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit %.pre113 = load ptr, ptr %4, align 8, !tbaa !25 br label %.loopexit -.loopexit: ; preds = %88, %94, %.loopexit.loopexit, %.critedge - %141 = phi ptr [ %.pre, %.critedge ], [ %.pre113, %.loopexit.loopexit ], [ %.pre, %94 ], [ %.pre, %88 ] - %.not63100 = phi i1 [ true, %.critedge ], [ true, %.loopexit.loopexit ], [ false, %94 ], [ false, %88 ] +.loopexit: ; preds = %89, %95, %.loopexit.loopexit, %.critedge + %141 = phi ptr [ %.pre119, %.critedge ], [ %.pre113, %.loopexit.loopexit ], [ %.pre, %95 ], [ %.pre, %89 ] + %.not63100 = phi i1 [ true, %.critedge ], [ true, %.loopexit.loopexit ], [ false, %95 ], [ false, %89 ] %142 = icmp eq ptr %141, %70 br i1 %142, label %_ZN4llvm11SmallVectorIiLj8EED2Ev.exit, label %143 @@ -21544,7 +21551,7 @@ _ZN4llvm14MIPatternMatch8mi_matchINS_8RegisterENS0_18OneNonDBGUse_matchINS0_14Bi %.sroa.0.0.i = phi i32 [ %.sroa.015.0.copyload, %35 ], [ %.sroa.015.0.copyload, %40 ], [ %.sroa.015.0.copyload, %44 ], [ %.sroa.015.0.copyload, %38 ], [ %spec.select.i, %48 ] %.0.i = phi i64 [ 0, %35 ], [ 0, %40 ], [ 0, %44 ], [ 0, %38 ], [ %spec.select28.i, %48 ] %59 = srem i64 %.0.i, %32 - %60 = sdiv i64 %.0.i, %32 + %60 = sdiv exact i64 %.0.i, %32 %.not.i = icmp eq i64 %59, 0 br i1 %.not.i, label %61, label %.thread diff --git a/bench/llvm/optimized/DAGCombiner.ll b/bench/llvm/optimized/DAGCombiner.ll index facc4066ef0..bc1e37a2c6a 100644 --- a/bench/llvm/optimized/DAGCombiner.ll +++ b/bench/llvm/optimized/DAGCombiner.ll @@ -70703,7 +70703,7 @@ _ZN4llvm11SmallVectorIlLj8EEC2EmRKl.exit.i: ; preds = %.lr.ph.i.i.i.i.i.i. %.0.in.i.i.i.i.i.i = select i1 %575, ptr %572, ptr %576 %.0.i.i.i.i.i.i = load i64, ptr %.0.in.i.i.i.i.i.i, align 8, !tbaa !13 %577 = urem i64 %.0.i.i.i.i.i.i, %548 - %578 = udiv i64 %.0.i.i.i.i.i.i, %548 + %578 = udiv exact i64 %.0.i.i.i.i.i.i, %548 %.not142.i = icmp eq i64 %577, 0 br i1 %.not142.i, label %579, label %.thread434.i @@ -83735,7 +83735,7 @@ _ZNK4llvm7SDValue18getValueSizeInBitsEv.exit.i: ; preds = %684, %680 697: ; preds = %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit160.thread.i, %.lr.ph342.i %storemerge340.i = phi i32 [ %695, %.lr.ph342.i ], [ %745, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit160.thread.i ] %698 = urem i32 %607, %storemerge340.i - %699 = udiv i32 %607, %storemerge340.i + %699 = udiv exact i32 %607, %storemerge340.i %.not133.i = icmp eq i32 %698, 0 br i1 %.not133.i, label %700, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit160.thread.i @@ -85312,7 +85312,7 @@ _ZN12_GLOBAL__N_111DAGCombiner11isTypeLegalERKN4llvm3EVTE.exit.thread.i351: ; pr %1259 = trunc i64 %1258 to i32 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %34) #38 %1260 = urem i32 %1256, %1259 - %1261 = udiv i32 %1256, %1259 + %1261 = udiv exact i32 %1256, %1259 %.not94.i.i = icmp eq i32 %1260, 0 br i1 %.not94.i.i, label %1262, label %_ZL31reduceBuildVecToShuffleWithZeroPN4llvm6SDNodeERNS_12SelectionDAGE.exit.thread602.i @@ -85339,7 +85339,7 @@ _ZN12_GLOBAL__N_111DAGCombiner11isTypeLegalERKN4llvm3EVTE.exit.thread.i351: ; pr store i32 -1, ptr %36, align 4, !tbaa !72 call void @_ZN4llvm11SmallVectorIiLj32EEC2EmRKi(ptr noundef nonnull align 8 dereferenceable(144) %35, i64 noundef %1272, ptr noundef nonnull align 4 dereferenceable(4) %36) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #38 - %.not95137.i.i = icmp ugt i32 %1259, %1256 + %.not95137.i.i = icmp eq i32 %1256, 0 br i1 %.not95137.i.i, label %._crit_edge141.i.i, label %.lr.ph140.i.i .lr.ph140.i.i: ; preds = %1270 @@ -86732,7 +86732,7 @@ _ZNK4llvm3EVTneES0_.exit.i.i: ; preds = %1832 _ZNK4llvm3EVTneES0_.exit.thread.i.i: ; preds = %.thread.i390.i, %_ZNK4llvm3EVTneES0_.exit.i.i, %_ZNK4llvm3EVT18getFixedSizeInBitsEv.exit283.i.i %1837 = urem i64 %.pn.i.i.i.i, %.pn.i.i278.i.i - %1838 = udiv i64 %.pn.i.i.i.i, %.pn.i.i278.i.i + %1838 = udiv exact i64 %.pn.i.i.i.i, %.pn.i.i278.i.i %1839 = icmp eq i64 %1837, 0 %.not.i.i288.i.i = icmp eq i16 %1816, %1824 %or.cond400.i.i = and i1 %.not.i.i288.i.i, %1839 @@ -92855,7 +92855,7 @@ _ZNK4llvm3EVT23getVectorMinNumElementsEv.exit484: ; preds = %434, %440 %.sroa.0.0.extract.trunc.i483 = trunc i64 %.sroa.0.0.in.i.i482 to i32 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %58) #38 %442 = urem i32 %.sroa.0.0.extract.trunc.i470, %.sroa.0.0.extract.trunc.i483 - %443 = udiv i32 %.sroa.0.0.extract.trunc.i470, %.sroa.0.0.extract.trunc.i483 + %443 = udiv exact i32 %.sroa.0.0.extract.trunc.i470, %.sroa.0.0.extract.trunc.i483 %444 = icmp eq i32 %442, 0 br i1 %444, label %445, label %.critedge386 @@ -92916,7 +92916,7 @@ _ZNK4llvm18TargetLoweringBase24isOperationLegalOrCustomEjNS_3EVTEb.exit491: ; pr .critedge386: ; preds = %445, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.i489, %_ZNK4llvm18TargetLoweringBase24isOperationLegalOrCustomEjNS_3EVTEb.exit491, %_ZNK4llvm3EVT23getVectorMinNumElementsEv.exit484 %474 = urem i32 %.sroa.0.0.extract.trunc.i483, %.sroa.0.0.extract.trunc.i470 - %475 = udiv i32 %.sroa.0.0.extract.trunc.i483, %.sroa.0.0.extract.trunc.i470 + %475 = udiv exact i32 %.sroa.0.0.extract.trunc.i483, %.sroa.0.0.extract.trunc.i470 %476 = icmp eq i32 %474, 0 br i1 %476, label %477, label %.critedge389 @@ -92938,7 +92938,7 @@ _ZNK4llvm18TargetLoweringBase24isOperationLegalOrCustomEjNS_3EVTEb.exit491: ; pr %487 = extractvalue { i16, ptr } %485, 1 %488 = zext i32 %475 to i64 %489 = urem i64 %.0.i.i.i.i, %488 - %490 = udiv i64 %.0.i.i.i.i, %488 + %490 = udiv exact i64 %.0.i.i.i.i, %488 %491 = icmp eq i64 %489, 0 br i1 %491, label %492, label %.critedge389 @@ -94013,7 +94013,7 @@ _ZNK4llvm3EVT19getScalarSizeInBitsEv.exit: ; preds = %922, %926 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #38 %929 = trunc i64 %.pn.i.i to i32 %930 = urem i32 %902, %929 - %931 = udiv i32 %902, %929 + %931 = udiv exact i32 %902, %929 %932 = icmp eq i32 %930, 0 br i1 %932, label %933, label %_ZNK4llvm18TargetLoweringBase16isOperationLegalEjNS_3EVTE.exit585.thread @@ -94039,7 +94039,7 @@ _ZNK4llvm3EVT20getVectorElementTypeEv.exit: ; preds = %935, %942 %.fca.1.insert.merged.i = phi { i16, ptr } [ %941, %935 ], [ %943, %942 ] %944 = extractvalue { i16, ptr } %.fca.1.insert.merged.i, 0 %945 = extractvalue { i16, ptr } %.fca.1.insert.merged.i, 1 - %946 = icmp eq i32 %931, 1 + %946 = icmp eq i32 %902, %929 br i1 %946, label %.thread, label %947 947: ; preds = %_ZNK4llvm3EVT20getVectorElementTypeEv.exit @@ -94874,14 +94874,14 @@ _ZNK4llvm3EVT13getSizeInBitsEv.exit262.i: ; preds = %1280, %1276 %1283 = trunc i64 %1282 to i32 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #38 %1284 = urem i32 %1274, %1283 - %1285 = udiv i32 %1274, %1283 + %1285 = udiv exact i32 %1274, %1283 %.not236.i = icmp eq i32 %1284, 0 br i1 %.not236.i, label %1286, label %.sink.split.sink.split.sink.split 1286: ; preds = %_ZNK4llvm3EVT13getSizeInBitsEv.exit262.i %1287 = call noundef i32 @_ZNK4llvm3EVT20getVectorNumElementsEv(ptr noundef nonnull align 8 dereferenceable(16) %6) %1288 = urem i32 %1287, %1285 - %1289 = udiv i32 %1287, %1285 + %1289 = udiv exact i32 %1287, %1285 %.not237.i = icmp eq i32 %1288, 0 br i1 %.not237.i, label %1290, label %.sink.split.sink.split.sink.split @@ -102677,14 +102677,14 @@ _ZN4llvm5SDLocC2EPKNS_6SDNodeE.exit407: ; preds = %473, %476 %509 = trunc i64 %508 to i32 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %34) #38 %510 = urem i32 %.sroa.0482.sroa.0.0.extract.trunc, %509 - %511 = udiv i32 %.sroa.0482.sroa.0.0.extract.trunc, %509 + %511 = udiv exact i32 %.sroa.0482.sroa.0.0.extract.trunc, %509 %512 = icmp eq i32 %510, 0 br i1 %512, label %513, label %.thread693 513: ; preds = %505 %514 = and i64 %508, 4294967295 %515 = urem i64 %.0.i.i.i.i, %514 - %516 = udiv i64 %.0.i.i.i.i, %514 + %516 = udiv exact i64 %.0.i.i.i.i, %514 %517 = icmp eq i64 %515, 0 br i1 %517, label %518, label %.thread693 @@ -212142,7 +212142,7 @@ _ZNK4llvm3MVT20getVectorNumElementsEv.exit.i161: ; preds = %144, %142 _ZNK4llvm3EVT20getVectorNumElementsEv.exit166: ; preds = %_ZNK4llvm3MVT20getVectorNumElementsEv.exit.i161, %.thread.i163 %152 = phi i32 [ %150, %_ZNK4llvm3MVT20getVectorNumElementsEv.exit.i161 ], [ %151, %.thread.i163 ] %153 = srem i32 %152, %34 - %154 = sdiv i32 %152, %34 + %154 = sdiv exact i32 %152, %34 %155 = icmp eq i32 %153, 0 br i1 %155, label %156, label %158 @@ -212152,7 +212152,7 @@ _ZNK4llvm3EVT20getVectorNumElementsEv.exit166: ; preds = %_ZNK4llvm3MVT20getV 158: ; preds = %_ZNK4llvm3EVT20getVectorNumElementsEv.exit166 %159 = srem i32 %34, %152 - %160 = sdiv i32 %34, %152 + %160 = sdiv exact i32 %34, %152 %161 = icmp eq i32 %159, 0 br i1 %161, label %162, label %.thread250 @@ -215125,7 +215125,7 @@ _ZNK4llvm7SDValue24getScalarValueSizeInBitsEv.exit54: ; preds = %139, %143 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #38 %146 = trunc i64 %.pn.i.i.i52 to i32 %147 = urem i32 %146, %118 - %148 = udiv i32 %146, %118 + %148 = udiv exact i32 %146, %118 %.not = icmp eq i32 %147, 0 %149 = trunc i64 %.pn.i.i to i32 %.not25 = icmp eq i32 %149, %118 @@ -217646,7 +217646,7 @@ _ZNK4llvm3EVT20getVectorNumElementsEv.exit91: ; preds = %_ZNK4llvm3MVT20getV 98: ; preds = %_ZNK4llvm3EVT20getVectorNumElementsEv.exit91 %99 = srem i32 %79, %97 - %100 = sdiv i32 %79, %97 + %100 = sdiv exact i32 %79, %97 %.not69 = icmp eq i32 %99, 0 br i1 %.not69, label %101, label %.critedge @@ -220249,10 +220249,10 @@ define internal noundef zeroext i1 @"_ZNSt17_Function_handlerIFbjEZL36combineShu 8: ; preds = %.lr.ph.i.i.i %9 = trunc nuw i64 %indvars.iv.i.i.i to i32 %10 = urem i32 %9, %.val4 - %11 = udiv i32 %9, %.val4 + %11 = udiv exact i32 %9, %.val4 %12 = icmp eq i32 %10, 0 %13 = icmp eq i32 %6, %11 - %or.cond = and i1 %12, %13 + %or.cond = select i1 %12, i1 %13, i1 false br i1 %or.cond, label %14, label %"_ZSt10__invoke_rIbRZL36combineShuffleToAnyExtendVectorInregPN4llvm19ShuffleVectorSDNodeERNS0_12SelectionDAGERKNS0_14TargetLoweringEbE3$_0JjEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESB_E4typeEOSC_DpOSD_.exit" 14: ; preds = %8, %.lr.ph.i.i.i diff --git a/bench/llvm/optimized/LegalizeVectorTypes.ll b/bench/llvm/optimized/LegalizeVectorTypes.ll index 3bf02d0b326..0778894226d 100644 --- a/bench/llvm/optimized/LegalizeVectorTypes.ll +++ b/bench/llvm/optimized/LegalizeVectorTypes.ll @@ -34026,7 +34026,7 @@ _ZNK4llvm3EVT19getScalarSizeInBitsEv.exit: ; preds = %271, %275 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #15 %278 = trunc i64 %.pn.i.i280 to i32 %279 = urem i32 %242, %278 - %280 = udiv i32 %242, %278 + %280 = udiv exact i32 %242, %278 %281 = icmp eq i32 %279, 0 br i1 %281, label %282, label %_ZNK4llvm3EVTneES0_.exit @@ -34864,7 +34864,7 @@ _ZNK4llvm3EVT23getVectorMinNumElementsEv.exit183: ; preds = %72, %78 %.sroa.0.0.in.i.i181 = phi i64 [ %.sroa.0.0.insert.insert.i.i.i.i180, %72 ], [ %79, %78 ] %.sroa.0.0.extract.trunc.i182 = trunc i64 %.sroa.0.0.in.i.i181 to i32 %80 = urem i32 %.sroa.0.0.extract.trunc.i, %.sroa.0.0.extract.trunc.i182 - %81 = udiv i32 %.sroa.0.0.extract.trunc.i, %.sroa.0.0.extract.trunc.i182 + %81 = udiv exact i32 %.sroa.0.0.extract.trunc.i, %.sroa.0.0.extract.trunc.i182 %.not175 = icmp eq i32 %80, 0 br i1 %.not175, label %82, label %_ZNK4llvm3EVTeqES0_.exit.thread @@ -34894,7 +34894,7 @@ _ZN4llvm12SelectionDAG8getUNDEFENS_3EVTE.exit: ; preds = %82, %86 store i32 0, ptr %89, align 8, !tbaa !201 %90 = getelementptr inbounds nuw i8, ptr %14, i64 12 store i32 16, ptr %90, align 4, !tbaa !202 - %91 = icmp ugt i32 %.sroa.0.0.extract.trunc.i182, %.sroa.0.0.extract.trunc.i + %91 = icmp eq i32 %.sroa.0.0.extract.trunc.i, 0 br i1 %91, label %_ZN4llvm11SmallVectorINS_7SDValueELj16EEC2Em.exit, label %92 92: ; preds = %_ZN4llvm12SelectionDAG8getUNDEFENS_3EVTE.exit @@ -47028,7 +47028,7 @@ _ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit: ; preds = %362 368: ; preds = %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit %.sroa.0435.0.extract.trunc437 = trunc i64 %.sroa.0435.0.in to i32 %369 = urem i32 %.sroa.0442.sroa.0.0.extract.trunc, %.sroa.0435.0.extract.trunc437 - %370 = udiv i32 %.sroa.0442.sroa.0.0.extract.trunc, %.sroa.0435.0.extract.trunc437 + %370 = udiv exact i32 %.sroa.0442.sroa.0.0.extract.trunc, %.sroa.0435.0.extract.trunc437 %371 = icmp eq i32 %369, 0 br i1 %371, label %372, label %407 @@ -47079,7 +47079,7 @@ _ZN4llvm12SelectionDAG8getUNDEFENS_3EVTE.exit: ; preds = %372, %377 br i1 %.not.i.i.i.i.i.i392, label %_ZN4llvm11SmallVectorINS_7SDValueELj16EEC2EmRKS1_.exit, label %.lr.ph.i.i.i.i.i.i, !llvm.loop !504 _ZSt6fill_nIPN4llvm7SDValueEmS1_ET_S3_T0_RKT1_.exit.i.i: ; preds = %_ZN4llvm12SelectionDAG8getUNDEFENS_3EVTE.exit - %.not.i389 = icmp ugt i32 %.sroa.0435.0.extract.trunc437, %.sroa.0442.sroa.0.0.extract.trunc + %.not.i389 = icmp eq i32 %.sroa.0442.sroa.0.0.extract.trunc, 0 br i1 %.not.i389, label %_ZN4llvm11SmallVectorINS_7SDValueELj16EEC2EmRKS1_.exit, label %.lr.ph.i.i.i.i.i390 .lr.ph.i.i.i.i.i390: ; preds = %_ZSt6fill_nIPN4llvm7SDValueEmS1_ET_S3_T0_RKT1_.exit.i.i, %.lr.ph.i.i.i.i.i390 @@ -50916,7 +50916,7 @@ _ZNK4llvm7details23FixedOrScalableQuantityINS_12ElementCountEjE20hasKnownScalarF %.sroa.0184.0.extract.trunc = trunc i64 %.sroa.0.0.in.i136 to i32 %.sroa.0194.0.extract.trunc = trunc i64 %.sroa.0.0.in.i to i32 %57 = urem i32 %.sroa.0184.0.extract.trunc, %.sroa.0194.0.extract.trunc - %58 = udiv i32 %.sroa.0184.0.extract.trunc, %.sroa.0194.0.extract.trunc + %58 = udiv exact i32 %.sroa.0184.0.extract.trunc, %.sroa.0194.0.extract.trunc %59 = icmp eq i32 %57, 0 br i1 %59, label %60, label %_ZNK4llvm7details23FixedOrScalableQuantityINS_12ElementCountEjE20hasKnownScalarFactorERKS3_.exit142 @@ -50995,7 +50995,7 @@ _ZN4llvm12SelectionDAG8getUNDEFENS_3EVTE.exit: ; preds = %76, %79 store ptr %1, ptr %81, align 8, !tbaa !29 %.sroa.7.0..sroa_idx210 = getelementptr inbounds nuw i8, ptr %81, i64 8 store i32 %2, ptr %.sroa.7.0..sroa_idx210, align 8, !tbaa !23 - %.not224 = icmp eq i32 %58, 1 + %.not224 = icmp eq i32 %.sroa.0184.0.extract.trunc, %.sroa.0194.0.extract.trunc br i1 %.not224, label %._crit_edge228, label %.lr.ph227 ._crit_edge228: ; preds = %.lr.ph227, %80 @@ -55352,7 +55352,7 @@ _ZNK4llvm3EVT8isVectorEv.exit: ; preds = %_ZNK4llvm3EVT13getS _ZNK4llvm7details23FixedOrScalableQuantityINS_8TypeSizeEmE20hasKnownScalarFactorERKS3_.exit: ; preds = %.thread %80 = urem i64 %.fca.0.extract79, %.fca.0.extract75151156160.ph - %81 = udiv i64 %.fca.0.extract79, %.fca.0.extract75151156160.ph + %81 = udiv exact i64 %.fca.0.extract79, %.fca.0.extract75151156160.ph %82 = icmp eq i64 %80, 0 br i1 %82, label %83, label %_ZNK4llvm3EVTneES0_.exit @@ -65429,6 +65429,7 @@ _ZNK4llvm3EVT13getSizeInBitsEv.exit115..thread181_crit_edge: ; preds = %_ZNK4llv %.sroa.235.0..sroa_idx = getelementptr inbounds nuw i8, ptr %17, i64 8 %57 = and i64 %51, 4294967295 %58 = getelementptr inbounds nuw i8, ptr %1, i64 64 + %.not.i.i = icmp eq i32 %44, 0 %59 = add i32 %7, %3 %invariant.umin = call i32 @llvm.umin.i32(i32 %52, i32 %59) %invariant.umax = call i32 @llvm.umax.i32(i32 %3, i32 %invariant.umin) @@ -65517,12 +65518,11 @@ _ZNK4llvm3EVT13getSizeInBitsEv.exit134: ; preds = %72, %76 82: ; preds = %79 %83 = urem i32 %44, %70 - %84 = udiv i32 %44, %70 + %84 = udiv exact i32 %44, %70 %85 = icmp eq i32 %83, 0 br i1 %85, label %86, label %_ZN4llvm13isPowerOf2_32Ej.exit.thread 86: ; preds = %82 - %.not.i.i = icmp ugt i32 %70, %44 %87 = call range(i32 1, 33) i32 @llvm.ctpop.i32(i32 %84) %88 = icmp samesign ugt i32 %87, 1 %or.cond199.not227 = select i1 %.not.i.i, i1 true, i1 %88 @@ -65559,6 +65559,7 @@ _ZN4llvm13isPowerOf2_32Ej.exit.thread: ; preds = %86, %79, %82 %invariant.umin212.pre-phi = phi i32 [ %.pre218, %_ZNK4llvm3EVT13getSizeInBitsEv.exit115..thread181_crit_edge ], [ %invariant.umin, %.thread185 ], [ %invariant.umin, %_ZN4llvm13isPowerOf2_32Ej.exit.thread ] %95 = getelementptr inbounds nuw i8, ptr %18, i64 8 %96 = getelementptr inbounds nuw i8, ptr %1, i64 64 + %.not.i.i154 = icmp eq i32 %44, 0 %invariant.umax223 = call i32 @llvm.umax.i32(i32 %3, i32 %invariant.umin212.pre-phi) br label %97 @@ -65639,17 +65640,16 @@ _ZNK4llvm3EVT20getVectorElementTypeEv.exit152: ; preds = %113, %120 _ZNK4llvm3EVTeqES0_.exit.thread: ; preds = %124 %129 = urem i32 %44, %108 - %130 = udiv i32 %44, %108 + %130 = udiv exact i32 %44, %108 %131 = icmp eq i32 %129, 0 br i1 %131, label %132, label %_ZNK4llvm3EVTeqES0_.exit.thread190 132: ; preds = %_ZNK4llvm3EVTeqES0_.exit.thread - %.not.i.i154 = icmp ugt i32 %108, %44 %133 = call range(i32 1, 33) i32 @llvm.ctpop.i32(i32 %130) %134 = icmp samesign ugt i32 %133, 1 %or.cond203.not229 = select i1 %.not.i.i154, i1 true, i1 %134 %or.cond214 = icmp ult i32 %invariant.umax223, %108 - %or.cond225 = or i1 %or.cond203.not229, %or.cond214 + %or.cond225 = select i1 %or.cond203.not229, i1 true, i1 %or.cond214 br i1 %or.cond225, label %_ZNK4llvm3EVTeqES0_.exit.thread190, label %135 135: ; preds = %132 diff --git a/bench/llvm/optimized/Legalizer.ll b/bench/llvm/optimized/Legalizer.ll index 901b0a7e733..250281f65d3 100644 --- a/bench/llvm/optimized/Legalizer.ll +++ b/bench/llvm/optimized/Legalizer.ll @@ -6091,7 +6091,7 @@ _ZN4llvm28LegalizationArtifactCombiner14isArtifactCastEj.exit.thread297: ; preds 199: ; preds = %193 %200 = urem i32 %24, %197 - %201 = udiv i32 %24, %197 + %201 = udiv exact i32 %24, %197 %.not222 = icmp eq i32 %200, 0 br i1 %.not222, label %202, label %.thread @@ -6101,7 +6101,6 @@ _ZN4llvm28LegalizationArtifactCombiner14isArtifactCastEj.exit.thread297: ; preds %204 = getelementptr inbounds nuw i8, ptr %12, i64 16 %205 = getelementptr inbounds nuw i8, ptr %12, i64 8 %206 = getelementptr inbounds nuw i8, ptr %12, i64 12 - %.not350 = icmp ugt i32 %197, %24 %.not223 = icmp eq i32 %.0199301, 0 %207 = getelementptr inbounds nuw i8, ptr %13, i64 16 %208 = getelementptr inbounds nuw i8, ptr %.0197302, i64 32 @@ -6121,25 +6120,17 @@ _ZN4llvm28LegalizationArtifactCombiner14isArtifactCastEj.exit.thread297: ; preds store ptr %204, ptr %12, align 8, !tbaa !25 store i32 0, ptr %205, align 8, !tbaa !26 store i32 8, ptr %206, align 4, !tbaa !27 - br i1 %.not350, label %._crit_edge340, label %.lr.ph339.preheader - -.lr.ph339.preheader: ; preds = %215 - %216 = trunc nuw i64 %indvars.iv364 to i32 + %216 = trunc nuw i64 %indvars.iv356 to i32 %217 = mul i32 %201, %216 br label %.lr.ph339 -._crit_edge340.loopexit: ; preds = %_ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit - %218 = zext i32 %234 to i64 - br label %._crit_edge340 - -._crit_edge340: ; preds = %._crit_edge340.loopexit, %215 - %219 = phi i64 [ %218, %._crit_edge340.loopexit ], [ 0, %215 ] +._crit_edge340: ; preds = %_ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit br i1 %.not223, label %298, label %238 -.lr.ph339: ; preds = %.lr.ph339.preheader, %_ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit - %220 = phi i32 [ %234, %_ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit ], [ 0, %.lr.ph339.preheader ] - %.0202337 = phi i32 [ %235, %_ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit ], [ 0, %.lr.ph339.preheader ] - %.0203336 = phi i32 [ %236, %_ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit ], [ %217, %.lr.ph339.preheader ] +.lr.ph339: ; preds = %215, %_ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit + %220 = phi i32 [ 0, %215 ], [ %234, %_ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit ] + %.0202337 = phi i32 [ 0, %215 ], [ %235, %_ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit ] + %.0203336 = phi i32 [ %217, %215 ], [ %236, %_ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit ] %221 = load ptr, ptr %27, align 8, !tbaa !275 %222 = zext i32 %.0203336 to i64 %223 = getelementptr inbounds nuw %"class.llvm::MachineOperand", ptr %221, i64 %222, i32 1 @@ -6167,7 +6158,7 @@ _ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit: ; preds %235 = add nuw i32 %.0202337, 1 %236 = add i32 %.0203336, 1 %237 = icmp ult i32 %235, %201 - br i1 %237, label %.lr.ph339, label %._crit_edge340.loopexit, !llvm.loop !450 + br i1 %237, label %.lr.ph339, label %._crit_edge340, !llvm.loop !450 238: ; preds = %._crit_edge340 %239 = load ptr, ptr %32, align 8, !tbaa !270 @@ -6290,6 +6281,7 @@ _ZNK4llvm3LLT6divideEi.exit: ; preds = %_ZNK4llvm3LLT14getE 298: ; preds = %._crit_edge340 %299 = load ptr, ptr %0, align 8, !tbaa !271 %300 = load ptr, ptr %12, align 8, !tbaa !25 + %301 = zext i32 %234 to i64 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %16) #26 %301 = add nuw nsw i64 %indvars.iv364, 1 %302 = load ptr, ptr %208, align 8, !tbaa !275 @@ -6297,7 +6289,7 @@ _ZNK4llvm3LLT6divideEi.exit: ; preds = %_ZNK4llvm3LLT14getE %304 = load i32, ptr %303, align 4, !tbaa !276 store i32 %304, ptr %16, align 8, !tbaa !201 store i32 0, ptr %211, align 8, !tbaa !428 - %305 = call { ptr, ptr } @_ZN4llvm16MachineIRBuilder12buildUnmergeENS_8ArrayRefINS_8RegisterEEERKNS_5SrcOpE(ptr noundef nonnull align 8 dereferenceable(88) %299, ptr %300, i64 %219, ptr noundef nonnull align 8 dereferenceable(20) %16) #26 + %305 = call { ptr, ptr } @_ZN4llvm16MachineIRBuilder12buildUnmergeENS_8ArrayRefINS_8RegisterEEERKNS_5SrcOpE(ptr noundef nonnull align 8 dereferenceable(88) %299, ptr %300, i64 %301, ptr noundef nonnull align 8 dereferenceable(20) %16) #26 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #26 br label %306 @@ -6360,7 +6352,7 @@ _ZN4llvm11SmallVectorINS_8RegisterELj8EED2Ev.exit: ; preds = %_ZN4llvm15SmallVec 329: ; preds = %328 %330 = urem i32 %197, %24 - %331 = udiv i32 %197, %24 + %331 = udiv exact i32 %197, %24 %.not221 = icmp eq i32 %330, 0 br i1 %.not221, label %332, label %.thread @@ -6379,7 +6371,7 @@ _ZN4llvm11SmallVectorINS_8RegisterELj8EED2Ev.exit: ; preds = %_ZN4llvm15SmallVec %wide.trip.count362 = zext i32 %umax to i64 br label %.lr.ph333.preheader -.lr.ph333.preheader: ; preds = %_ZN4llvm11SmallVectorINS_8RegisterELj8EED2Ev.exit240, %332 +.lr.ph333.preheader: ; preds = %333, %_ZN4llvm11SmallVectorINS_8RegisterELj8EED2Ev.exit240 %indvars.iv359 = phi i64 [ 0, %332 ], [ %indvars.iv.next360, %_ZN4llvm11SmallVectorINS_8RegisterELj8EED2Ev.exit240 ] call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %17) #26 store ptr %334, ptr %17, align 8, !tbaa !25 @@ -6390,16 +6382,16 @@ _ZN4llvm11SmallVectorINS_8RegisterELj8EED2Ev.exit: ; preds = %_ZN4llvm15SmallVec br label %.lr.ph333 ._crit_edge334: ; preds = %_ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit243 - %.pre373 = load ptr, ptr %17, align 8, !tbaa !25 - %344 = load ptr, ptr %27, align 8, !tbaa !275 - %345 = getelementptr inbounds nuw %"class.llvm::MachineOperand", ptr %344, i64 %indvars.iv359, i32 1 - %346 = load i32, ptr %345, align 4, !tbaa !276 - %347 = load ptr, ptr %0, align 8, !tbaa !271 + %.pre373 = load ptr, ptr %27, align 8, !tbaa !275 + %344 = getelementptr inbounds nuw %"class.llvm::MachineOperand", ptr %347, i64 %indvars.iv351, i32 1 + %345 = load i32, ptr %344, align 4, !tbaa !276 + %346 = load ptr, ptr %0, align 8, !tbaa !271 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %18) #26 - store i32 %346, ptr %18, align 8, !tbaa !201 + store i32 %349, ptr %18, align 8, !tbaa !201 store i32 1, ptr %338, align 8, !tbaa !425 - %348 = zext i32 %378 to i64 - %349 = call { ptr, ptr } @_ZN4llvm16MachineIRBuilder19buildMergeLikeInstrERKNS_5DstOpENS_8ArrayRefINS_8RegisterEEE(ptr noundef nonnull align 8 dereferenceable(88) %347, ptr noundef nonnull align 8 dereferenceable(20) %18, ptr %.pre373, i64 %348) #26 + %348 = load ptr, ptr %17, align 8, !tbaa !25 + %349 = zext i32 %373 to i64 + %353 = call { ptr, ptr } @_ZN4llvm16MachineIRBuilder19buildMergeLikeInstrERKNS_5DstOpENS_8ArrayRefINS_8RegisterEEE(ptr noundef nonnull align 8 dereferenceable(88) %350, ptr noundef nonnull align 8 dereferenceable(20) %18, ptr %351, i64 %352) #26 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #26 %350 = load i32, ptr %339, align 8, !tbaa !26 %351 = load i32, ptr %340, align 4, !tbaa !27 @@ -6418,7 +6410,7 @@ _ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit239: ; pr %356 = load ptr, ptr %3, align 8, !tbaa !25 %357 = zext i32 %355 to i64 %358 = getelementptr inbounds nuw %"class.llvm::Register", ptr %356, i64 %357 - store i32 %346, ptr %358, align 1 + store i32 %349, ptr %358, align 1 %359 = load i32, ptr %339, align 8, !tbaa !26 %360 = add i32 %359, 1 store i32 %360, ptr %339, align 8, !tbaa !26 @@ -6437,9 +6429,9 @@ _ZN4llvm11SmallVectorINS_8RegisterELj8EED2Ev.exit240: ; preds = %_ZN4llvm23Small br i1 %exitcond363.not, label %.thread317, label %.lr.ph333.preheader, !llvm.loop !452 .lr.ph333: ; preds = %.lr.ph333.preheader, %_ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit243 - %364 = phi i32 [ %378, %_ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit243 ], [ 0, %.lr.ph333.preheader ] - %.0205331 = phi i32 [ %379, %_ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit243 ], [ 0, %.lr.ph333.preheader ] - %.0206.in330 = phi i32 [ %.0206, %_ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit243 ], [ %343, %.lr.ph333.preheader ] + %364 = phi i32 [ 0, %343 ], [ %378, %_ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit243 ] + %.0205331 = phi i32 [ 0, %343 ], [ %379, %_ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit243 ] + %.0206.in330 = phi i32 [ %345, %343 ], [ %.0206, %_ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit243 ] %.0206 = add i32 %.0206.in330, 1 %365 = load ptr, ptr %337, align 8, !tbaa !275 %366 = zext i32 %.0206 to i64 @@ -6476,26 +6468,26 @@ _ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit243: ; pr %385 = getelementptr inbounds nuw i8, ptr %384, i64 36 %386 = load i32, ptr %385, align 4, !tbaa !276 %387 = icmp slt i32 %386, 0 - br i1 %387, label %388, label %_ZNK4llvm19MachineRegisterInfo7getTypeENS_8RegisterE.exit245 - -388: ; preds = %381 - %389 = and i32 %386, 2147483647 - %390 = getelementptr inbounds nuw i8, ptr %382, i64 456 - %391 = load i32, ptr %390, align 8, !tbaa !26 - %392 = icmp ugt i32 %391, %389 br i1 %392, label %393, label %_ZNK4llvm19MachineRegisterInfo7getTypeENS_8RegisterE.exit245 -393: ; preds = %388 - %394 = getelementptr inbounds nuw i8, ptr %382, i64 448 - %395 = zext nneg i32 %389 to i64 - %396 = load ptr, ptr %394, align 8, !tbaa !25 - %397 = getelementptr inbounds nuw %"class.llvm::LLT", ptr %396, i64 %395 - %398 = load i64, ptr %397, align 8, !tbaa !276 - %399 = freeze i64 %398 +393: ; preds = %386 + %394 = and i32 %386, 2147483647 + %395 = getelementptr inbounds nuw i8, ptr %387, i64 456 + %396 = load i32, ptr %395, align 8, !tbaa !26 + %397 = icmp ugt i32 %396, %394 + br i1 %397, label %398, label %_ZNK4llvm19MachineRegisterInfo7getTypeENS_8RegisterE.exit245 + +398: ; preds = %393 + %399 = getelementptr inbounds nuw i8, ptr %387, i64 448 + %400 = zext nneg i32 %394 to i64 + %401 = load ptr, ptr %399, align 8, !tbaa !25 + %402 = getelementptr inbounds nuw %"class.llvm::LLT", ptr %401, i64 %400 + %403 = load i64, ptr %402, align 8, !tbaa !276 + %404 = freeze i64 %403 br label %_ZNK4llvm19MachineRegisterInfo7getTypeENS_8RegisterE.exit245 -_ZNK4llvm19MachineRegisterInfo7getTypeENS_8RegisterE.exit245: ; preds = %381, %388, %393 - %.sroa.04.0.i244 = phi i64 [ %399, %393 ], [ 0, %388 ], [ 0, %381 ] +_ZNK4llvm19MachineRegisterInfo7getTypeENS_8RegisterE.exit245: ; preds = %381, %393, %398 + %.sroa.04.0.i244 = phi i64 [ %404, %398 ], [ 0, %393 ], [ 0, %381 ] %.not218 = icmp eq i32 %.0199301, 0 br i1 %.not218, label %400, label %_ZNK4llvm3LLT9isPointerEv.exit253.thread @@ -6599,7 +6591,7 @@ _ZNK4llvm19MachineRegisterInfo9use_emptyENS_8RegisterE.exit: ; preds = %435, %43 %439 = load ptr, ptr %438, align 8, !tbaa !3 %440 = getelementptr inbounds nuw i8, ptr %439, i64 32 %441 = load ptr, ptr %440, align 8 - %442 = call { ptr, ptr } %441(ptr noundef nonnull align 8 dereferenceable(88) %438, i32 noundef %.1200.ph, ptr nonnull %19, i64 1, ptr nonnull %20, i64 1, i64 0) #26 + %442 = call { ptr, ptr } %446(ptr noundef nonnull align 8 dereferenceable(88) %438, i32 noundef %.1200.ph, ptr nonnull %19, i64 1, ptr nonnull %20, i64 1, i64 0) #26 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #26 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #26 %443 = load i32, ptr %411, align 8, !tbaa !26 @@ -8047,7 +8039,7 @@ _ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit163: ; pr 280: ; preds = %274 %281 = urem i32 %222, %240 - %282 = udiv i32 %222, %240 + %282 = udiv exact i32 %222, %240 %283 = icmp eq i32 %281, 0 br i1 %283, label %284, label %.thread @@ -8080,11 +8072,15 @@ _ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit163: ; pr call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %19) #26 %295 = zext i32 %282 to i64 call void @_ZN4llvm11SmallVectorINS_8RegisterELj8EEC2Em(ptr noundef nonnull align 8 dereferenceable(48) %19, i64 noundef %295) - %296 = load ptr, ptr %188, align 8, !tbaa !275 + %296 = icmp eq i32 %222, 0 %297 = load ptr, ptr %19, align 8, !tbaa !25 + br i1 %.not241, label %._crit_edge, label %.lr.ph + +.lr.ph: ; preds = %295 + %297 = load ptr, ptr %188, align 8, !tbaa !275 br label %308 -._crit_edge: ; preds = %308 +._crit_edge: ; preds = %308, %295 %298 = load ptr, ptr %0, align 8, !tbaa !271 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %20) #26 store i32 %91, ptr %20, align 8, !tbaa !201 @@ -8093,7 +8089,7 @@ _ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit163: ; pr %300 = getelementptr inbounds nuw i8, ptr %19, i64 8 %301 = load i32, ptr %300, align 8, !tbaa !26 %302 = zext i32 %301 to i64 - %303 = call { ptr, ptr } @_ZN4llvm16MachineIRBuilder16buildMergeValuesERKNS_5DstOpENS_8ArrayRefINS_8RegisterEEE(ptr noundef nonnull align 8 dereferenceable(88) %298, ptr noundef nonnull align 8 dereferenceable(20) %20, ptr nonnull %297, i64 %302) #26 + %303 = call { ptr, ptr } @_ZN4llvm16MachineIRBuilder16buildMergeValuesERKNS_5DstOpENS_8ArrayRefINS_8RegisterEEE(ptr noundef nonnull align 8 dereferenceable(88) %298, ptr noundef nonnull align 8 dereferenceable(20) %20, ptr %297, i64 %302) #26 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #26 call void @_ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_(ptr noundef nonnull align 8 dereferenceable(16) %3, i32 %91) %304 = load ptr, ptr %19, align 8, !tbaa !25 @@ -8112,7 +8108,7 @@ _ZN4llvm11SmallVectorINS_8RegisterELj8EED2Ev.exit: ; preds = %._crit_edge, %307 308: ; preds = %.lr.ph, %308 %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %308 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %309 = getelementptr inbounds nuw %"class.llvm::MachineOperand", ptr %296, i64 %indvars.iv.next, i32 1 + %309 = getelementptr inbounds nuw %"class.llvm::MachineOperand", ptr %297, i64 %indvars.iv.next, i32 1 %310 = load i32, ptr %309, align 4, !tbaa !276 %311 = getelementptr inbounds nuw %"class.llvm::Register", ptr %297, i64 %indvars.iv store i32 %310, ptr %311, align 4, !tbaa !201 @@ -10647,7 +10643,7 @@ _ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit: ; preds 232: ; preds = %228 %233 = urem i32 %92, %110 - %234 = udiv i32 %92, %110 + %234 = udiv exact i32 %92, %110 %.not = icmp eq i32 %233, 0 br i1 %.not, label %235, label %_ZN4llvm28LegalizationArtifactCombiner14isArtifactCastEj.exit @@ -10680,7 +10676,7 @@ _ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit: ; preds call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %17) #26 %247 = zext i32 %234 to i64 call void @_ZN4llvm11SmallVectorINS_8RegisterELj8EEC2Em(ptr noundef nonnull align 8 dereferenceable(48) %17, i64 noundef %247) - %.not193 = icmp ugt i32 %110, %92 + %.not193 = icmp eq i32 %92, 0 br i1 %.not193, label %._crit_edge, label %.lr.ph ._crit_edge: ; preds = %270, %246 @@ -11201,7 +11197,7 @@ _ZNK4llvm3LLT13getSizeInBitsEv.exit: ; preds = %33, %35 56: ; preds = %54 %57 = urem i32 %3, %44 - %58 = udiv i32 %3, %44 + %58 = udiv exact i32 %3, %44 %.not47 = icmp eq i32 %57, 0 br i1 %.not47, label %61, label %59 diff --git a/bench/llvm/optimized/LegalizerHelper.ll b/bench/llvm/optimized/LegalizerHelper.ll index 1d04a53af81..9f6bac1f657 100644 --- a/bench/llvm/optimized/LegalizerHelper.ll +++ b/bench/llvm/optimized/LegalizerHelper.ll @@ -3886,7 +3886,7 @@ _ZNK4llvm19MachineRegisterInfo7getTypeENS_8RegisterE.exit697: ; preds = %196, %2 br label %1600 236: ; preds = %_ZNK4llvm19MachineRegisterInfo7getTypeENS_8RegisterE.exit697 - %237 = udiv i64 %175, %193 + %237 = udiv exact i64 %175, %193 %238 = trunc i64 %237 to i32 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %27) #19 %239 = getelementptr inbounds nuw i8, ptr %27, i64 16 @@ -5158,7 +5158,7 @@ _ZN4llvm15LegalizerHelper15narrowScalarDstERNS_12MachineInstrENS_3LLTEjj.exit: ; br i1 %.not671, label %832, label %1600 832: ; preds = %830 - %833 = udiv i64 %175, %193 + %833 = udiv exact i64 %175, %193 %834 = trunc i64 %833 to i32 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %78) #19 %835 = and i64 %833, 4294967295 @@ -6229,7 +6229,7 @@ _ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb0EEppEv.exit: ; preds = br i1 %.not660, label %1315, label %1600 1315: ; preds = %1313 - %1316 = udiv i64 %175, %193 + %1316 = udiv exact i64 %175, %193 %1317 = trunc i64 %1316 to i32 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %123) #19 %1318 = getelementptr inbounds nuw i8, ptr %123, i64 16 @@ -6490,7 +6490,7 @@ _ZN4llvm11SmallVectorINS_8RegisterELj2EED2Ev.exit774: ; preds = %_ZN4llvm11Small 1443: ; preds = %_ZNK4llvm3LLT13getSizeInBitsEv.exit695, %_ZNK4llvm3LLT13getSizeInBitsEv.exit695 %1444 = urem i64 %175, %193 - %1445 = udiv i64 %175, %193 + %1445 = udiv exact i64 %175, %193 %.not658 = icmp eq i64 %1444, 0 br i1 %.not658, label %1446, label %1600 @@ -21964,7 +21964,7 @@ _ZNK4llvm3LLT13getSizeInBitsEv.exit48: ; preds = %58, %60 %69 = trunc i64 %68 to i32 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #19 %70 = urem i32 %51, %69 - %71 = udiv i32 %51, %69 + %71 = udiv exact i32 %51, %69 %.not = icmp eq i32 %70, 0 br i1 %.not, label %72, label %120 @@ -22216,7 +22216,7 @@ _ZNK4llvm3LLT13getSizeInBitsEv.exit99: ; preds = %59, %61 %69 = call noundef i64 @_ZNK4llvm8TypeSizecvmEv(ptr noundef nonnull align 8 dereferenceable(9) %6) #19 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #19 %70 = urem i64 %69, %34 - %71 = udiv i64 %69, %34 + %71 = udiv exact i64 %69, %34 %.not80 = icmp eq i64 %70, 0 br i1 %.not80, label %72, label %229 @@ -32014,14 +32014,14 @@ _ZNK4llvm3LLT13getSizeInBitsEv.exit120: ; preds = %103, %105 %.lhs.trunc = trunc nuw i32 %58 to i16 %.rhs.trunc = trunc i32 %63 to i16 %117 = urem i16 %.lhs.trunc, %.rhs.trunc - %118 = udiv i16 %.lhs.trunc, %.rhs.trunc + %118 = udiv exact i16 %.lhs.trunc, %.rhs.trunc %.not88 = icmp eq i16 %117, 0 br i1 %.not88, label %119, label %_ZN4llvm13isPowerOf2_32Ej.exit.thread 119: ; preds = %116 %.zext240 = zext i16 %118 to i32 %.sroa.0.0.insert.ext.i = zext i16 %118 to i64 - %.not4.not.i = icmp eq i16 %118, 1 + %.not4.not.i = icmp eq i16 %.lhs.trunc, %.rhs.trunc br i1 %.not4.not.i, label %_ZN4llvm3LLT14scalarOrVectorENS_12ElementCountES0_.exit, label %120 120: ; preds = %119 @@ -32069,7 +32069,7 @@ _ZN4llvm3LLT6vectorENS_12ElementCountES0_.exit.i: ; preds = %125, %124 %138 = or disjoint i64 %storemerge.i.i.i.i122, %137 br label %_ZN4llvm3LLT14scalarOrVectorENS_12ElementCountES0_.exit -_ZN4llvm3LLT14scalarOrVectorENS_12ElementCountES0_.exit: ; preds = %119, %_ZN4llvm3LLT6vectorENS_12ElementCountES0_.exit.i +_ZN4llvm3LLT14scalarOrVectorENS_12ElementCountES0_.exit: ; preds = %_ZN4llvm3LLT6vectorENS_12ElementCountES0_.exit.i, %119 %.sroa.03.0.i = phi i64 [ %138, %_ZN4llvm3LLT6vectorENS_12ElementCountES0_.exit.i ], [ %storemerge, %119 ] %139 = load ptr, ptr %0, align 8, !tbaa !139 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %20) #19 @@ -32088,39 +32088,32 @@ _ZN4llvm3LLT14scalarOrVectorENS_12ElementCountES0_.exit: ; preds = %119, %_ZN4ll store i32 0, ptr %145, align 8, !tbaa !190 %146 = getelementptr inbounds nuw i8, ptr %21, i64 12 store i32 8, ptr %146, align 4, !tbaa !194 - %147 = icmp ugt i16 %.rhs.trunc, %.lhs.trunc - br i1 %147, label %_ZN4llvm11SmallVectorINS_8RegisterELj8EEC2Em.exit, label %148 + %147 = icmp ugt i16 %118, 8 + br i1 %147, label %_ZN4llvm15SmallVectorImplINS_8RegisterEE7reserveEm.exit.i.i.i, label %.lr.ph.preheader.i.i.i 148: ; preds = %_ZN4llvm3LLT14scalarOrVectorENS_12ElementCountES0_.exit - %149 = icmp ugt i16 %118, 8 - br i1 %149, label %_ZN4llvm15SmallVectorImplINS_8RegisterEE7reserveEm.exit.i.i.i, label %.lr.ph.preheader.i.i.i - -_ZN4llvm15SmallVectorImplINS_8RegisterEE7reserveEm.exit.i.i.i: ; preds = %148 - call void @_ZN4llvm15SmallVectorBaseIjE8grow_podEPvmm(ptr noundef nonnull align 8 dereferenceable(48) %21, ptr noundef nonnull %144, i64 noundef %.sroa.0.0.insert.ext.i, i64 noundef 4) #19 - %.pre.i.i.i = load i32, ptr %145, align 8, !tbaa !190 + call void @_ZN4llvm15SmallVectorBaseIjE8grow_podEPvmm(ptr noundef nonnull align 8 dereferenceable(48) %21, ptr noundef nonnull %145, i64 noundef %.sroa.0.0.insert.ext.i, i64 noundef 4) #19 + %.pre.i.i.i = load i32, ptr %146, align 8, !tbaa !190 %.pre13.i.i.i = zext i32 %.pre.i.i.i to i64 %.not11.i.i.i = icmp samesign eq i64 %.sroa.0.0.insert.ext.i, %.pre13.i.i.i - br i1 %.not11.i.i.i, label %.sink.split.i.i.i, label %_ZN4llvm15SmallVectorImplINS_8RegisterEE7reserveEm.exit.i.i..lr.ph.preheader.i.i_crit_edge.i + br i1 %.not11.i.i.i, label %_ZN4llvm11SmallVectorINS_8RegisterELj8EEC2Em.exit, label %_ZN4llvm15SmallVectorImplINS_8RegisterEE7reserveEm.exit.i.i..lr.ph.preheader.i.i_crit_edge.i _ZN4llvm15SmallVectorImplINS_8RegisterEE7reserveEm.exit.i.i..lr.ph.preheader.i.i_crit_edge.i: ; preds = %_ZN4llvm15SmallVectorImplINS_8RegisterEE7reserveEm.exit.i.i.i %.pre.i123 = load ptr, ptr %21, align 8, !tbaa !191 br label %.lr.ph.preheader.i.i.i -.lr.ph.preheader.i.i.i: ; preds = %_ZN4llvm15SmallVectorImplINS_8RegisterEE7reserveEm.exit.i.i..lr.ph.preheader.i.i_crit_edge.i, %148 - %150 = phi ptr [ %.pre.i123, %_ZN4llvm15SmallVectorImplINS_8RegisterEE7reserveEm.exit.i.i..lr.ph.preheader.i.i_crit_edge.i ], [ %144, %148 ] - %.pre-phi.i.i3.i = phi i64 [ %.pre13.i.i.i, %_ZN4llvm15SmallVectorImplINS_8RegisterEE7reserveEm.exit.i.i..lr.ph.preheader.i.i_crit_edge.i ], [ 0, %148 ] +.lr.ph.preheader.i.i.i: ; preds = %_ZN4llvm15SmallVectorImplINS_8RegisterEE7reserveEm.exit.i.i..lr.ph.preheader.i.i_crit_edge.i, %139 + %150 = phi ptr [ %.pre.i123, %_ZN4llvm15SmallVectorImplINS_8RegisterEE7reserveEm.exit.i.i..lr.ph.preheader.i.i_crit_edge.i ], [ %144, %139 ] + %.pre-phi.i.i3.i = phi i64 [ %.pre13.i.i.i, %_ZN4llvm15SmallVectorImplINS_8RegisterEE7reserveEm.exit.i.i..lr.ph.preheader.i.i_crit_edge.i ], [ 0, %139 ] %151 = getelementptr %"class.llvm::Register", ptr %150, i64 %.pre-phi.i.i3.i %152 = sub nsw i64 %.sroa.0.0.insert.ext.i, %.pre-phi.i.i3.i %153 = shl nsw i64 %152, 2 call void @llvm.memset.p0.i64(ptr align 4 %151, i8 0, i64 %153, i1 false), !tbaa !250 - br label %.sink.split.i.i.i - -.sink.split.i.i.i: ; preds = %.lr.ph.preheader.i.i.i, %_ZN4llvm15SmallVectorImplINS_8RegisterEE7reserveEm.exit.i.i.i - store i32 %.zext240, ptr %145, align 8, !tbaa !190 br label %_ZN4llvm11SmallVectorINS_8RegisterELj8EEC2Em.exit -_ZN4llvm11SmallVectorINS_8RegisterELj8EEC2Em.exit: ; preds = %_ZN4llvm3LLT14scalarOrVectorENS_12ElementCountES0_.exit, %.sink.split.i.i.i - %154 = load ptr, ptr %0, align 8, !tbaa !139 +_ZN4llvm11SmallVectorINS_8RegisterELj8EEC2Em.exit: ; preds = %_ZN4llvm15SmallVectorImplINS_8RegisterEE7reserveEm.exit.i.i.i, %.lr.ph.preheader.i.i.i + store i32 %.zext240, ptr %146, align 8, !tbaa !190 + %153 = load ptr, ptr %0, align 8, !tbaa !139 %.sroa.028.0.copyload = load i64, ptr %17, align 8, !tbaa !173 %.sroa.027.0.copyload = load i32, ptr %37, align 8, !tbaa !193 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %13) #19 @@ -32137,22 +32130,15 @@ _ZN4llvm11SmallVectorINS_8RegisterELj8EEC2Em.exit: ; preds = %_ZN4llvm3LLT14scal store ptr %143, ptr %.sroa.0199.sroa.4.0..sroa_idx, align 8, !tbaa !173 %.sroa.4200.0..sroa_idx = getelementptr inbounds nuw i8, ptr %14, i64 40 store i32 1, ptr %.sroa.4200.0..sroa_idx, align 8, !tbaa !224 - %156 = load ptr, ptr %154, align 8, !tbaa !130 + %156 = load ptr, ptr %153, align 8, !tbaa !130 %157 = getelementptr inbounds nuw i8, ptr %156, i64 32 %158 = load ptr, ptr %157, align 8 - %159 = call { ptr, ptr } %158(ptr noundef nonnull align 8 dereferenceable(88) %154, i32 noundef 55, ptr nonnull %13, i64 1, ptr nonnull %14, i64 2, i64 0) #19 + %159 = call { ptr, ptr } %157(ptr noundef nonnull align 8 dereferenceable(88) %153, i32 noundef 55, ptr nonnull %13, i64 1, ptr nonnull %14, i64 2, i64 0) #19 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %14) #19 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #19 %160 = extractvalue { ptr, ptr } %159, 0 %161 = extractvalue { ptr, ptr } %159, 1 - br i1 %147, label %_ZN4llvm11SmallVectorINS_8RegisterELj8EEC2Em.exit.._crit_edge_crit_edge, label %.lr.ph - -_ZN4llvm11SmallVectorINS_8RegisterELj8EEC2Em.exit.._crit_edge_crit_edge: ; preds = %_ZN4llvm11SmallVectorINS_8RegisterELj8EEC2Em.exit - %.pre245 = load ptr, ptr %21, align 8, !tbaa !191 - br label %._crit_edge - -.lr.ph: ; preds = %_ZN4llvm11SmallVectorINS_8RegisterELj8EEC2Em.exit - %162 = getelementptr inbounds nuw i8, ptr %22, i64 16 + %161 = getelementptr inbounds nuw i8, ptr %22, i64 16 %.sroa.4190.0..sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 16 %.sroa.0185.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %10, i64 8 %.sroa.4186.0..sroa_idx = getelementptr inbounds nuw i8, ptr %10, i64 16 @@ -32166,16 +32152,15 @@ _ZN4llvm11SmallVectorINS_8RegisterELj8EEC2Em.exit.._crit_edge_crit_edge: ; preds %167 = zext i16 %118 to i64 br label %184 -._crit_edge: ; preds = %184, %_ZN4llvm11SmallVectorINS_8RegisterELj8EEC2Em.exit.._crit_edge_crit_edge - %168 = phi ptr [ %.pre245, %_ZN4llvm11SmallVectorINS_8RegisterELj8EEC2Em.exit.._crit_edge_crit_edge ], [ %203, %184 ] - %169 = load ptr, ptr %0, align 8, !tbaa !139 +._crit_edge: ; preds = %184 + %168 = load ptr, ptr %0, align 8, !tbaa !_ZN4llvm3LLT14scalarOrVectorENS_12ElementCountES0_.exit call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %26) #19 store i64 %.sroa.03.0.i, ptr %26, align 8, !tbaa !173 %170 = getelementptr inbounds nuw i8, ptr %26, i64 16 store i32 0, ptr %170, align 8, !tbaa !220 %171 = load i32, ptr %145, align 8, !tbaa !190 %172 = zext i32 %171 to i64 - %173 = call { ptr, ptr } @_ZN4llvm16MachineIRBuilder16buildBuildVectorERKNS_5DstOpENS_8ArrayRefINS_8RegisterEEE(ptr noundef nonnull align 8 dereferenceable(88) %169, ptr noundef nonnull align 8 dereferenceable(20) %26, ptr %168, i64 %172) #19 + %173 = call { ptr, ptr } @_ZN4llvm16MachineIRBuilder16buildBuildVectorERKNS_5DstOpENS_8ArrayRefINS_8RegisterEEE(ptr noundef nonnull align 8 dereferenceable(88) %168, ptr noundef nonnull align 8 dereferenceable(20) %26, ptr nonnull %202, i64 %172) #19 %174 = extractvalue { ptr, ptr } %173, 0 %175 = extractvalue { ptr, ptr } %173, 1 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #19 @@ -32194,7 +32179,7 @@ _ZN4llvm11SmallVectorINS_8RegisterELj8EEC2Em.exit.._crit_edge_crit_edge: ; preds %177 = load ptr, ptr %176, align 8, !tbaa !130 %178 = getelementptr inbounds nuw i8, ptr %177, i64 32 %179 = load ptr, ptr %178, align 8 - %180 = call { ptr, ptr } %179(ptr noundef nonnull align 8 dereferenceable(88) %176, i32 noundef 82, ptr nonnull %11, i64 1, ptr nonnull %12, i64 1, i64 0) #19 + %180 = call { ptr, ptr } %178(ptr noundef nonnull align 8 dereferenceable(88) %176, i32 noundef 82, ptr nonnull %11, i64 1, ptr nonnull %12, i64 1, i64 0) #19 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #19 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #19 call void @_ZN4llvm12MachineInstr15eraseFromParentEv(ptr noundef nonnull align 8 dereferenceable(70) %1) #19 @@ -32210,13 +32195,13 @@ _ZN4llvm11SmallVectorINS_8RegisterELj8EED2Ev.exit: ; preds = %._crit_edge, %183 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %21) #19 br label %_ZN4llvm13isPowerOf2_32Ej.exit.thread -184: ; preds = %.lr.ph, %184 - %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %184 ] +184: ; preds = %_ZN4llvm11SmallVectorINS_8RegisterELj8EEC2Em.exit, %184 + %indvars.iv = phi i64 [ 0, %_ZN4llvm11SmallVectorINS_8RegisterELj8EEC2Em.exit ], [ %indvars.iv.next, %184 ] %185 = load ptr, ptr %0, align 8, !tbaa !139 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %22) #19 %.sroa.022.0.copyload = load i64, ptr %17, align 8, !tbaa !173 store i64 %.sroa.022.0.copyload, ptr %22, align 8, !tbaa !173 - store i32 0, ptr %162, align 8, !tbaa !220 + store i32 0, ptr %161, align 8, !tbaa !220 %186 = call { ptr, ptr } @_ZN4llvm16MachineIRBuilder13buildConstantERKNS_5DstOpEl(ptr noundef nonnull align 8 dereferenceable(88) %185, ptr noundef nonnull align 8 dereferenceable(20) %22, i64 noundef %indvars.iv) #19 %187 = extractvalue { ptr, ptr } %186, 0 %188 = extractvalue { ptr, ptr } %186, 1 @@ -32236,7 +32221,7 @@ _ZN4llvm11SmallVectorINS_8RegisterELj8EED2Ev.exit: ; preds = %._crit_edge, %183 %190 = load ptr, ptr %189, align 8, !tbaa !130 %191 = getelementptr inbounds nuw i8, ptr %190, i64 32 %192 = load ptr, ptr %191, align 8 - %193 = call { ptr, ptr } %192(ptr noundef nonnull align 8 dereferenceable(88) %189, i32 noundef 53, ptr nonnull %9, i64 1, ptr nonnull %10, i64 2, i64 0) #19 + %193 = call { ptr, ptr } %191(ptr noundef nonnull align 8 dereferenceable(88) %189, i32 noundef 53, ptr nonnull %9, i64 1, ptr nonnull %10, i64 2, i64 0) #19 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %10) #19 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #19 %194 = extractvalue { ptr, ptr } %193, 0 @@ -32274,20 +32259,20 @@ _ZN4llvm11SmallVectorINS_8RegisterELj8EED2Ev.exit: ; preds = %._crit_edge, %183 208: ; preds = %206 %209 = urem i32 %96, %114 - %210 = udiv i32 %96, %114 + %210 = udiv exact i32 %96, %114 %.not87 = icmp eq i32 %209, 0 br i1 %.not87, label %211, label %_ZN4llvm13isPowerOf2_32Ej.exit.thread 211: ; preds = %208 - %.not.i.i = icmp ule i32 %114, %96 + %.not.i.i = icmp ne i32 %96, 0 %212 = call range(i32 1, 33) i32 @llvm.ctpop.i32(i32 %210) %213 = icmp samesign ult i32 %212, 2 %or.cond = select i1 %.not.i.i, i1 %213, i1 false br i1 %or.cond, label %214, label %_ZN4llvm13isPowerOf2_32Ej.exit.thread 214: ; preds = %211 - %215 = call noundef range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %210, i1 false) - %216 = sub nuw nsw i32 31, %215 + %215 = call noundef range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %210, i1 true) + %216 = xor i32 %215, 31 %217 = load ptr, ptr %0, align 8, !tbaa !139 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %27) #19 %.sroa.013.0.copyload = load i64, ptr %17, align 8, !tbaa !173 @@ -32319,7 +32304,7 @@ _ZN4llvm11SmallVectorINS_8RegisterELj8EED2Ev.exit: ; preds = %._crit_edge, %183 %225 = load ptr, ptr %223, align 8, !tbaa !130 %226 = getelementptr inbounds nuw i8, ptr %225, i64 32 %227 = load ptr, ptr %226, align 8 - %228 = call { ptr, ptr } %227(ptr noundef nonnull align 8 dereferenceable(88) %223, i32 noundef 141, ptr nonnull %7, i64 1, ptr nonnull %8, i64 2, i64 0) #19 + %228 = call { ptr, ptr } %226(ptr noundef nonnull align 8 dereferenceable(88) %223, i32 noundef 141, ptr nonnull %7, i64 1, ptr nonnull %8, i64 2, i64 0) #19 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %8) #19 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #19 br i1 %49, label %229, label %242 @@ -32374,7 +32359,7 @@ _ZN4llvm11SmallVectorINS_8RegisterELj8EED2Ev.exit: ; preds = %._crit_edge, %183 %247 = load ptr, ptr %245, align 8, !tbaa !130 %248 = getelementptr inbounds nuw i8, ptr %247, i64 32 %249 = load ptr, ptr %248, align 8 - %250 = call { ptr, ptr } %249(ptr noundef nonnull align 8 dereferenceable(88) %245, i32 noundef 141, ptr nonnull %5, i64 1, ptr nonnull %6, i64 2, i64 0) #19 + %250 = call { ptr, ptr } %248(ptr noundef nonnull align 8 dereferenceable(88) %245, i32 noundef 141, ptr nonnull %5, i64 1, ptr nonnull %6, i64 2, i64 0) #19 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %6) #19 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #19 %251 = extractvalue { ptr, ptr } %250, 0 @@ -32931,20 +32916,20 @@ _ZNK4llvm3LLT14getNumElementsEv.exit85: ; preds = %103, %106 121: ; preds = %_ZNK4llvm3LLT14getNumElementsEv.exit85 %122 = urem i32 %78, %96 - %123 = udiv i32 %78, %96 + %123 = udiv exact i32 %78, %96 %.not53 = icmp eq i32 %122, 0 br i1 %.not53, label %124, label %_ZN4llvm13isPowerOf2_32Ej.exit.thread 124: ; preds = %121 - %.not.i.i = icmp ule i32 %96, %78 + %.not.i.i = icmp ne i32 %78, 0 %125 = call range(i32 1, 33) i32 @llvm.ctpop.i32(i32 %123) %126 = icmp samesign ult i32 %125, 2 %or.cond = select i1 %.not.i.i, i1 %126, i1 false br i1 %or.cond, label %127, label %_ZN4llvm13isPowerOf2_32Ej.exit.thread 127: ; preds = %124 - %128 = call noundef range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %123, i1 false) - %129 = sub nuw nsw i32 31, %128 + %128 = call noundef range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %123, i1 true) + %129 = xor i32 %128, 31 %130 = load ptr, ptr %0, align 8, !tbaa !139 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %31) #19 %.sroa.020.0.copyload = load i64, ptr %28, align 8, !tbaa !173 @@ -34128,7 +34113,7 @@ _ZNK4llvm3LLT13getSizeInBitsEv.exit116: ; preds = %100, %102 %114 = udiv i32 %88, %111 %115 = zext i32 %114 to i64 %116 = urem i64 %25, %115 - %117 = udiv i64 %25, %115 + %117 = udiv exact i64 %25, %115 %.not51 = icmp eq i64 %116, 0 br i1 %.not51, label %118, label %148 @@ -34139,7 +34124,7 @@ _ZNK4llvm3LLT13getSizeInBitsEv.exit116: ; preds = %100, %102 120: ; preds = %118 %121 = urem i32 %.sroa.0142.0.extract.trunc, %114 - %122 = udiv i32 %.sroa.0142.0.extract.trunc, %114 + %122 = udiv exact i32 %.sroa.0142.0.extract.trunc, %114 %.not53 = icmp eq i32 %121, 0 br i1 %.not53, label %123, label %148 @@ -34481,7 +34466,7 @@ _ZNK4llvm3LLT13getSizeInBitsEv.exit140: ; preds = %123, %125 %137 = udiv i32 %111, %134 %138 = zext i32 %137 to i64 %139 = urem i64 %30, %138 - %140 = udiv i64 %30, %138 + %140 = udiv exact i64 %30, %138 %.not69 = icmp eq i64 %139, 0 br i1 %.not69, label %141, label %186 @@ -34492,13 +34477,13 @@ _ZNK4llvm3LLT13getSizeInBitsEv.exit140: ; preds = %123, %125 143: ; preds = %141 %144 = urem i32 %.sroa.0179.0.extract.trunc, %137 - %145 = udiv i32 %.sroa.0179.0.extract.trunc, %137 + %145 = udiv exact i32 %.sroa.0179.0.extract.trunc, %137 %.not71 = icmp eq i32 %144, 0 br i1 %.not71, label %146, label %186 146: ; preds = %143 %147 = urem i32 %.sroa.0176.0.extract.trunc, %137 - %148 = udiv i32 %.sroa.0176.0.extract.trunc, %137 + %148 = udiv exact i32 %.sroa.0176.0.extract.trunc, %137 %.not72 = icmp eq i32 %147, 0 br i1 %.not72, label %149, label %186 @@ -45414,7 +45399,7 @@ _ZNK4llvm3LLT13getSizeInBitsEv.exit107: ; preds = %50, %52 %61 = trunc i64 %60 to i32 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #19 %62 = urem i32 %29, %42 - %63 = udiv i32 %29, %42 + %63 = udiv exact i32 %29, %42 %64 = icmp eq i32 %62, 0 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #19 br i1 %64, label %65, label %.critedge @@ -45926,7 +45911,7 @@ _ZNK4llvm3LLT13getSizeInBitsEv.exit155: ; preds = %89, %90 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #19 %98 = and i64 %84, 4294967295 %99 = urem i64 %42, %98 - %100 = udiv i64 %42, %98 + %100 = udiv exact i64 %42, %98 %101 = icmp eq i64 %99, 0 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #19 br i1 %101, label %102, label %.critedge @@ -45989,7 +45974,7 @@ _ZNK4llvm3LLT13getSizeInBitsEv.exit170: ; preds = %111, %112 store i32 0, ptr %126, align 8, !tbaa !190 %127 = getelementptr inbounds nuw i8, ptr %16, i64 12 store i32 8, ptr %127, align 4, !tbaa !194 - %.not381 = icmp ugt i64 %98, %42 + %.not381 = icmp eq i64 %42, 0 br i1 %.not381, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %120 @@ -58358,7 +58343,7 @@ _ZNK4llvm3LLT13getSizeInBitsEv.exit42: ; preds = %31, %33 %.0.in.i = lshr i64 %0, %.0.in.v.i %.0.i = trunc nuw i64 %.0.in.i to i32 %52 = urem i32 %.recomposed, %.0.i - %53 = udiv i32 %.recomposed, %.0.i + %53 = udiv exact i32 %.recomposed, %.0.i %.not = icmp eq i32 %52, 0 br i1 %.not, label %54, label %109 @@ -58384,7 +58369,7 @@ _ZNK4llvm3LLT13getSizeInBitsEv.exit42: ; preds = %31, %33 _ZNK4llvm3LLT14getElementTypeEv.exit: ; preds = %55, %59 %.sroa.0.0.i = phi i64 [ %storemerge.i.i.i.i, %55 ], [ %storemerge.i.i.i6.i, %59 ] - %.not4.not.i = icmp eq i32 %53, 1 + %.not4.not.i = icmp eq i32 %.recomposed, %.0.i br i1 %.not4.not.i, label %.thread, label %60 60: ; preds = %_ZNK4llvm3LLT14getElementTypeEv.exit diff --git a/bench/llvm/optimized/SLPVectorizer.ll b/bench/llvm/optimized/SLPVectorizer.ll index 9e8c0ddc373..a9de84dd3ed 100644 --- a/bench/llvm/optimized/SLPVectorizer.ll +++ b/bench/llvm/optimized/SLPVectorizer.ll @@ -6037,7 +6037,7 @@ _ZL14getNumElementsPN4llvm4TypeE.exit.i: ; preds = %70 77: ; preds = %_ZL14getNumElementsPN4llvm4TypeE.exit.i %78 = urem i32 %76, %68 - %79 = udiv i32 %76, %68 + %79 = udiv exact i32 %76, %68 %.not18.i = icmp eq i32 %78, 0 br i1 %.not18.i, label %80, label %_ZN4llvmL16getNumberOfPartsERKNS_19TargetTransformInfoEPNS_10VectorTypeEj.exit @@ -6880,7 +6880,7 @@ _ZL14getNumElementsPN4llvm4TypeE.exit: ; preds = %6 13: ; preds = %_ZL14getNumElementsPN4llvm4TypeE.exit %14 = urem i32 %12, %4 - %15 = udiv i32 %12, %4 + %15 = udiv exact i32 %12, %4 %.not18 = icmp eq i32 %14, 0 br i1 %.not18, label %16, label %_ZL14getNumElementsPN4llvm4TypeE.exit.thread @@ -9610,16 +9610,16 @@ _ZL22computeCommonAlignmentIN4llvm8LoadInstEENS0_5AlignENS0_8ArrayRefIPNS0_5Valu 259: ; preds = %256 %260 = urem i32 %250, %86 - %261 = udiv i32 %250, %86 + %261 = udiv exact i32 %250, %86 %262 = icmp eq i32 %260, 0 - br i1 %262, label %263, label %_ZN4llvm14has_single_bitIjvEEbT_.exit.thread + br i1 %262, label %_ZN4llvm14has_single_bitIjvEEbT_.exit, label %267 263: ; preds = %259 %264 = tail call range(i32 1, 32) i32 @llvm.ctpop.i32(i32 %261) %265 = icmp samesign ult i32 %264, 2 %266 = sub nsw i32 1, %86 %267 = icmp eq i32 %266, %.sroa.0430.0.extract.trunc - %or.cond705 = or i1 %267, %265 + %or.cond705 = select i1 %264, i1 true, i1 %266 br i1 %or.cond705, label %268, label %"_ZN4llvm6all_ofIRNS_15SmallVectorImplIPNS_5ValueEEEZNKS_13slpvectorizer7BoUpSLP17canVectorizeLoadsENS_8ArrayRefIS3_EEPKS2_RNS1_IjEES5_PjbE3$_1EEbOT_T0_.exit.thread" _ZN4llvm14has_single_bitIjvEEbT_.exit.thread: ; preds = %259, %256, %251 @@ -9627,7 +9627,7 @@ _ZN4llvm14has_single_bitIjvEEbT_.exit.thread: ; preds = %259, %256, %251 %.old704 = icmp eq i32 %.old, %.sroa.0430.0.extract.trunc br i1 %.old704, label %268, label %"_ZN4llvm6all_ofIRNS_15SmallVectorImplIPNS_5ValueEEEZNKS_13slpvectorizer7BoUpSLP17canVectorizeLoadsENS_8ArrayRefIS3_EEPKS2_RNS1_IjEES5_PjbE3$_1EEbOT_T0_.exit.thread" -268: ; preds = %263, %_ZN4llvm14has_single_bitIjvEEbT_.exit.thread, %253, %248 +268: ; preds = %267, %_ZN4llvm14has_single_bitIjvEEbT_.exit, %253, %248 %269 = sdiv i32 %.sroa.0430.0.extract.trunc, %236 %270 = mul nsw i32 %269, %236 %271 = icmp eq i32 %270, %.sroa.0430.0.extract.trunc @@ -9744,7 +9744,7 @@ _ZN4llvm14has_single_bitIjvEEbT_.exit.thread: ; preds = %259, %256, %251 call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %31) #32 br i1 %.not162.not, label %.thread678, label %"_ZN4llvm6all_ofIRNS_15SmallVectorImplIPNS_5ValueEEEZNKS_13slpvectorizer7BoUpSLP17canVectorizeLoadsENS_8ArrayRefIS3_EEPKS2_RNS1_IjEES5_PjbE3$_1EEbOT_T0_.exit.thread" -"_ZN4llvm6all_ofIRNS_15SmallVectorImplIPNS_5ValueEEEZNKS_13slpvectorizer7BoUpSLP17canVectorizeLoadsENS_8ArrayRefIS3_EEPKS2_RNS1_IjEES5_PjbE3$_1EEbOT_T0_.exit.thread": ; preds = %245, %263, %279, %268, %_ZN4llvm14has_single_bitIjvEEbT_.exit.thread, %205, %._crit_edge.i.i.i.i.i, %.loopexit730, %"_ZN4llvm6all_ofIRNS_15SmallVectorImplIPNS_5ValueEEEZNKS_13slpvectorizer7BoUpSLP17canVectorizeLoadsENS_8ArrayRefIS3_EEPKS2_RNS1_IjEES5_PjbE3$_1EEbOT_T0_.exit" +"_ZN4llvm6all_ofIRNS_15SmallVectorImplIPNS_5ValueEEEZNKS_13slpvectorizer7BoUpSLP17canVectorizeLoadsENS_8ArrayRefIS3_EEPKS2_RNS1_IjEES5_PjbE3$_1EEbOT_T0_.exit.thread": ; preds = %245, %_ZN4llvm14has_single_bitIjvEEbT_.exit, %279, %268, %267, %205, %._crit_edge.i.i.i.i.i, %.loopexit730, %"_ZN4llvm6all_ofIRNS_15SmallVectorImplIPNS_5ValueEEEZNKS_13slpvectorizer7BoUpSLP17canVectorizeLoadsENS_8ArrayRefIS3_EEPKS2_RNS1_IjEES5_PjbE3$_1EEbOT_T0_.exit" %321 = getelementptr inbounds nuw i8, ptr %0, i64 2816 %322 = load ptr, ptr %321, align 8, !tbaa !310 %323 = getelementptr inbounds nuw i8, ptr %0, i64 2832 @@ -14038,7 +14038,7 @@ _ZL14getNumElementsPN4llvm4TypeE.exit.i: ; preds = %173 180: ; preds = %_ZL14getNumElementsPN4llvm4TypeE.exit.i %181 = urem i32 %179, %172 - %182 = udiv i32 %179, %172 + %182 = udiv exact i32 %179, %172 %.not18.i279 = icmp eq i32 %181, 0 br i1 %.not18.i279, label %183, label %_ZN4llvmL16getNumberOfPartsERKNS_19TargetTransformInfoEPNS_10VectorTypeEj.exit.thread @@ -41290,7 +41290,7 @@ _ZNSt8optionalIjEaSImEENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS0_NSt9remov %837 = sub nsw i64 %.sroa.7358.0622, %763 %838 = zext i32 %.sroa.0371.1608 to i64 %839 = urem i64 %837, %838 - %840 = udiv i64 %837, %838 + %840 = udiv exact i64 %837, %838 %.not152 = icmp ne i64 %839, 0 %841 = zext i32 %.1134610 to i64 %842 = icmp ult i64 %840, %841 @@ -63262,7 +63262,7 @@ _ZL14getNumElementsPN4llvm4TypeE.exit.i: ; preds = %345 352: ; preds = %_ZL14getNumElementsPN4llvm4TypeE.exit.i %353 = urem i32 %351, %344 - %354 = udiv i32 %351, %344 + %354 = udiv exact i32 %351, %344 %.not18.i340 = icmp eq i32 %353, 0 br i1 %.not18.i340, label %355, label %_ZN4llvm15SmallVectorImplISt4pairIjjEE12emplace_backIJRjmEEERS2_DpOT_.exit @@ -70804,7 +70804,7 @@ _ZL14getNumElementsPN4llvm4TypeE.exit.i: ; preds = %263 270: ; preds = %_ZL14getNumElementsPN4llvm4TypeE.exit.i %271 = urem i32 %269, %261 - %272 = udiv i32 %269, %261 + %272 = udiv exact i32 %269, %261 %.not18.i = icmp eq i32 %271, 0 br i1 %.not18.i, label %273, label %_ZN4llvmL16getNumberOfPartsERKNS_19TargetTransformInfoEPNS_10VectorTypeEj.exit @@ -72092,7 +72092,7 @@ _ZL14getNumElementsPN4llvm4TypeE.exit.i377: ; preds = %847 854: ; preds = %_ZL14getNumElementsPN4llvm4TypeE.exit.i377 %855 = urem i32 %853, %845 - %856 = udiv i32 %853, %845 + %856 = udiv exact i32 %853, %845 %.not18.i379 = icmp eq i32 %855, 0 br i1 %.not18.i379, label %857, label %_ZN4llvmL16getNumberOfPartsERKNS_19TargetTransformInfoEPNS_10VectorTypeEj.exit381 @@ -104868,7 +104868,7 @@ _ZL14getNumElementsPN4llvm4TypeE.exit.i: ; preds = %284 291: ; preds = %_ZL14getNumElementsPN4llvm4TypeE.exit.i %292 = urem i32 %290, %282 - %293 = udiv i32 %290, %282 + %293 = udiv exact i32 %290, %282 %.not18.i = icmp eq i32 %292, 0 br i1 %.not18.i, label %294, label %_ZN4llvmL16getNumberOfPartsERKNS_19TargetTransformInfoEPNS_10VectorTypeEj.exit @@ -106130,7 +106130,7 @@ _ZL14getNumElementsPN4llvm4TypeE.exit.i308: ; preds = %883 890: ; preds = %_ZL14getNumElementsPN4llvm4TypeE.exit.i308 %891 = urem i32 %889, %881 - %892 = udiv i32 %889, %881 + %892 = udiv exact i32 %889, %881 %.not18.i310 = icmp eq i32 %891, 0 br i1 %.not18.i310, label %893, label %_ZN4llvmL16getNumberOfPartsERKNS_19TargetTransformInfoEPNS_10VectorTypeEj.exit312 @@ -127810,7 +127810,7 @@ _ZL14getNumElementsPN4llvm4TypeE.exit.i185: ; preds = %526 533: ; preds = %_ZL14getNumElementsPN4llvm4TypeE.exit.i185 %534 = urem i32 %532, %525 - %535 = udiv i32 %532, %525 + %535 = udiv exact i32 %532, %525 %.not18.i187 = icmp eq i32 %534, 0 br i1 %.not18.i187, label %536, label %_ZN4llvmL16getNumberOfPartsERKNS_19TargetTransformInfoEPNS_10VectorTypeEj.exit189 @@ -127877,7 +127877,7 @@ _ZL14getNumElementsPN4llvm4TypeE.exit.i: ; preds = %558 565: ; preds = %_ZL14getNumElementsPN4llvm4TypeE.exit.i %566 = urem i32 %564, %557 - %567 = udiv i32 %564, %557 + %567 = udiv exact i32 %564, %557 %.not18.i = icmp eq i32 %566, 0 br i1 %.not18.i, label %568, label %_ZN4llvmL16getNumberOfPartsERKNS_19TargetTransformInfoEPNS_10VectorTypeEj.exit @@ -128250,7 +128250,7 @@ _ZL14getNumElementsPN4llvm4TypeE.exit.i217: ; preds = %731 738: ; preds = %_ZL14getNumElementsPN4llvm4TypeE.exit.i217 %739 = urem i32 %737, %730 - %740 = udiv i32 %737, %730 + %740 = udiv exact i32 %737, %730 %.not18.i219 = icmp eq i32 %739, 0 br i1 %.not18.i219, label %741, label %_ZN4llvmL16getNumberOfPartsERKNS_19TargetTransformInfoEPNS_10VectorTypeEj.exit221 @@ -128317,7 +128317,7 @@ _ZL14getNumElementsPN4llvm4TypeE.exit.i200: ; preds = %763 770: ; preds = %_ZL14getNumElementsPN4llvm4TypeE.exit.i200 %771 = urem i32 %769, %762 - %772 = udiv i32 %769, %762 + %772 = udiv exact i32 %769, %762 %.not18.i202 = icmp eq i32 %771, 0 br i1 %.not18.i202, label %773, label %_ZN4llvmL16getNumberOfPartsERKNS_19TargetTransformInfoEPNS_10VectorTypeEj.exit204 @@ -133769,7 +133769,7 @@ _ZL14getNumElementsPN4llvm4TypeE.exit.i: ; preds = %85 92: ; preds = %_ZL14getNumElementsPN4llvm4TypeE.exit.i %93 = urem i32 %91, %84 - %94 = udiv i32 %91, %84 + %94 = udiv exact i32 %91, %84 %.not18.i = icmp eq i32 %93, 0 br i1 %.not18.i, label %95, label %_ZN4llvmL16getNumberOfPartsERKNS_19TargetTransformInfoEPNS_10VectorTypeEj.exit @@ -133837,7 +133837,7 @@ _ZL14getNumElementsPN4llvm4TypeE.exit.i38: ; preds = %118 125: ; preds = %_ZL14getNumElementsPN4llvm4TypeE.exit.i38 %126 = urem i32 %124, %117 - %127 = udiv i32 %124, %117 + %127 = udiv exact i32 %124, %117 %.not18.i40 = icmp eq i32 %126, 0 br i1 %.not18.i40, label %128, label %_ZN4llvmL16getNumberOfPartsERKNS_19TargetTransformInfoEPNS_10VectorTypeEj.exit42 @@ -136022,7 +136022,7 @@ _ZL14getNumElementsPN4llvm4TypeE.exit.i.i: ; preds = %807 814: ; preds = %_ZL14getNumElementsPN4llvm4TypeE.exit.i.i %815 = urem i32 %813, %806 - %816 = udiv i32 %813, %806 + %816 = udiv exact i32 %813, %806 %.not18.i.i = icmp eq i32 %815, 0 br i1 %.not18.i.i, label %817, label %_ZN4llvmL16getNumberOfPartsERKNS_19TargetTransformInfoEPNS_10VectorTypeEj.exit.i @@ -136682,7 +136682,7 @@ _ZL14getNumElementsPN4llvm4TypeE.exit.i143.i: ; preds = %1126 1133: ; preds = %_ZL14getNumElementsPN4llvm4TypeE.exit.i143.i %1134 = urem i32 %1132, %1125 - %1135 = udiv i32 %1132, %1125 + %1135 = udiv exact i32 %1132, %1125 %.not18.i145.i = icmp eq i32 %1134, 0 br i1 %.not18.i145.i, label %1136, label %_ZN4llvmL16getNumberOfPartsERKNS_19TargetTransformInfoEPNS_10VectorTypeEj.exit147.i @@ -180089,9 +180089,9 @@ _ZN4llvm6all_ofIRNS_8ArrayRefIPNS_5ValueEEENS_6detail17IsaCheckPredicateIJNS_17S %58 = getelementptr inbounds nuw i8, ptr %51, i64 80 %59 = load i32, ptr %58, align 8, !tbaa !33 %60 = urem i32 %57, %59 - %61 = udiv i32 %57, %59 + %61 = udiv exact i32 %57, %59 %.not = icmp ne i32 %60, 0 - %62 = icmp ult i32 %57, %59 + %62 = icmp eq i32 %57, 0 %or.cond = or i1 %.not, %62 br i1 %or.cond, label %.loopexit, label %63 @@ -199984,7 +199984,7 @@ define internal fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_119BaseShuffleAnalysi 14: ; preds = %10 %15 = srem i32 %5, %.32.val - %16 = sdiv i32 %5, %.32.val + %16 = sdiv exact i32 %5, %.32.val %17 = icmp eq i32 %15, 0 br i1 %17, label %18, label %.critedge @@ -232514,7 +232514,7 @@ _ZL14getNumElementsPN4llvm4TypeE.exit.i: ; preds = %26 33: ; preds = %_ZL14getNumElementsPN4llvm4TypeE.exit.i %34 = urem i32 %32, %25 - %35 = udiv i32 %32, %25 + %35 = udiv exact i32 %32, %25 %.not18.i = icmp eq i32 %34, 0 br i1 %.not18.i, label %36, label %_ZN4llvmL16getNumberOfPartsERKNS_19TargetTransformInfoEPNS_10VectorTypeEj.exit @@ -232594,7 +232594,7 @@ _ZL14getNumElementsPN4llvm4TypeE.exit.i34: ; preds = %63 70: ; preds = %_ZL14getNumElementsPN4llvm4TypeE.exit.i34 %71 = urem i32 %69, %62 - %72 = udiv i32 %69, %62 + %72 = udiv exact i32 %69, %62 %.not18.i36 = icmp eq i32 %71, 0 br i1 %.not18.i36, label %73, label %_ZN4llvmL16getNumberOfPartsERKNS_19TargetTransformInfoEPNS_10VectorTypeEj.exit38 @@ -253399,7 +253399,7 @@ _ZL14getNumElementsPN4llvm4TypeE.exit.i: ; preds = %55 62: ; preds = %_ZL14getNumElementsPN4llvm4TypeE.exit.i %63 = urem i32 %61, %53 - %64 = udiv i32 %61, %53 + %64 = udiv exact i32 %61, %53 %.not18.i = icmp eq i32 %63, 0 br i1 %.not18.i, label %65, label %_ZN4llvmL16getNumberOfPartsERKNS_19TargetTransformInfoEPNS_10VectorTypeEj.exit @@ -255131,7 +255131,7 @@ _ZL14getNumElementsPN4llvm4TypeE.exit.i: ; preds = %59 66: ; preds = %_ZL14getNumElementsPN4llvm4TypeE.exit.i %67 = urem i32 %65, %57 - %68 = udiv i32 %65, %57 + %68 = udiv exact i32 %65, %57 %.not18.i = icmp eq i32 %67, 0 br i1 %.not18.i, label %69, label %_ZN4llvmL16getNumberOfPartsERKNS_19TargetTransformInfoEPNS_10VectorTypeEj.exit diff --git a/bench/llvm/optimized/SelectionDAG.ll b/bench/llvm/optimized/SelectionDAG.ll index 1504fd8404e..75485b7d062 100644 --- a/bench/llvm/optimized/SelectionDAG.ll +++ b/bench/llvm/optimized/SelectionDAG.ll @@ -31567,7 +31567,7 @@ _ZNK4llvm3EVT16isScalableVectorEv.exit1065: ; preds = %822 %854 = load i8, ptr %853, align 8, !tbaa !724, !range !50, !noundef !51 %855 = trunc nuw i8 %854 to i1 %856 = urem i32 %308, %841 - %857 = udiv i32 %308, %841 + %857 = udiv exact i32 %308, %841 %858 = icmp eq i32 %856, 0 br i1 %858, label %859, label %930 @@ -31635,7 +31635,7 @@ _ZN4llvm5APInt6setBitEj.exit.us: ; preds = %880, %870 br i1 %.not952.us, label %.preheader, label %870, !llvm.loop !975 .preheader: ; preds = %_ZN4llvm5APInt6setBitEj.exit, %_ZN4llvm5APInt6setBitEj.exit.us, %_ZN4llvm5APIntC2Ejmbb.exit1071 - %.not9531471 = icmp ugt i32 %841, %308 + %.not9531471 = icmp eq i32 %308, 0 br i1 %.not9531471, label %._crit_edge, label %.lr.ph1473 .lr.ph1473: ; preds = %.preheader @@ -31730,7 +31730,7 @@ _ZN4llvm5APIntD2Ev.exit1074: ; preds = %917, %921, %924 930: ; preds = %_ZN4llvm5APIntD2Ev.exit1073, %850 %931 = urem i32 %841, %308 - %932 = udiv i32 %841, %308 + %932 = udiv exact i32 %841, %308 %933 = icmp eq i32 %931, 0 br i1 %933, label %934, label %966 @@ -37193,7 +37193,7 @@ _ZNK4llvm3EVT8isVectorEv.exit: ; preds = %425 445: ; preds = %443 %446 = urem i32 %436, %434 - %447 = udiv i32 %436, %434 + %447 = udiv exact i32 %436, %434 %448 = icmp eq i32 %446, 0 br i1 %448, label %449, label %.thread276 @@ -37201,7 +37201,7 @@ _ZNK4llvm3EVT8isVectorEv.exit: ; preds = %425 %450 = call noundef i32 @_ZNK4llvm3EVT20getVectorNumElementsEv(ptr noundef nonnull align 8 dereferenceable(16) %28) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %29) #34 call void @_ZN4llvm8APIntOps12ScaleBitMaskERKNS_5APIntEjb(ptr dead_on_unwind nonnull writable sret(%"class.llvm::APInt") align 8 %29, ptr noundef nonnull align 8 dereferenceable(12) %3, i32 noundef %450, i1 noundef zeroext false) #34 - %.not288 = icmp ugt i32 %434, %436 + %.not288 = icmp eq i32 %436, 0 br i1 %.not288, label %.critedge134, label %.lr.ph .lr.ph: ; preds = %449 @@ -37303,7 +37303,7 @@ _ZN4llvm5APIntD2Ev.exit204: ; preds = %_ZN4llvm5APIntD2Ev. call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %30) #34 %491 = add i32 %.0122289, 1 %.not = icmp ne i32 %491, %447 - %or.cond334.not = and i1 %.not, %.0.i200 + %or.cond334.not = select i1 %.0.i200, i1 %.not, i1 false br i1 %or.cond334.not, label %455, label %.critedge134, !llvm.loop !1006 .critedge132: ; preds = %_ZN4llvm5APIntaNERKS0_.exit @@ -41455,7 +41455,7 @@ _ZNK4llvm3EVT16isScalableVectorEv.exit: ; preds = %297 %324 = load i8, ptr %323, align 8, !tbaa !724, !range !50, !noundef !51 %325 = trunc nuw i8 %324 to i1 %326 = urem i32 %311, %95 - %327 = udiv i32 %311, %95 + %327 = udiv exact i32 %311, %95 %.not1313 = icmp eq i32 %326, 0 br i1 %.not1313, label %328, label %.thread1173 diff --git a/bench/llvm/optimized/TargetLowering.ll b/bench/llvm/optimized/TargetLowering.ll index 90c8163b46e..c702852ecd2 100644 --- a/bench/llvm/optimized/TargetLowering.ll +++ b/bench/llvm/optimized/TargetLowering.ll @@ -14373,7 +14373,7 @@ _ZNK4llvm3EVT8isVectorEv.exit4523: ; preds = %_ZNK4llvm3EVTneES0_ %.not.i45215200 = phi i1 [ false, %_ZNK4llvm3EVTneES0_.exit.thread5166.thread ], [ true, %_ZNK4llvm3EVT8isVectorEv.exit4523 ] %4237 = phi i16 [ %4233, %_ZNK4llvm3EVTneES0_.exit.thread5166.thread ], [ 0, %_ZNK4llvm3EVT8isVectorEv.exit4523 ] %4238 = urem i32 %329, %4159 - %4239 = udiv i32 %329, %4159 + %4239 = udiv exact i32 %329, %4159 %4240 = icmp eq i32 %4238, 0 br i1 %4240, label %4241, label %4376 @@ -14409,7 +14409,7 @@ _ZN4llvm5APInt7getZeroEj.exit4524: ; preds = %4245, %4246 br label %_ZN4llvm5APInt7getZeroEj.exit4525 _ZN4llvm5APInt7getZeroEj.exit4525: ; preds = %4249, %4250 - %.not36745297 = icmp ult i32 %329, %4159 + %.not36745297 = icmp eq i32 %329, 0 br i1 %.not36745297, label %._crit_edge5304, label %.lr.ph5303 .lr.ph5303: ; preds = %_ZN4llvm5APInt7getZeroEj.exit4525 @@ -14689,7 +14689,7 @@ _ZN4llvm5APIntD2Ev.exit4534: ; preds = %_ZN4llvm5APIntD2Ev. 4378: ; preds = %4376 %4379 = urem i32 %4159, %329 - %4380 = udiv i32 %4159, %329 + %4380 = udiv exact i32 %4159, %329 %4381 = icmp eq i32 %4379, 0 br i1 %4381, label %4382, label %4483 @@ -16247,7 +16247,7 @@ _ZNK4llvm3EVT8isVectorEv.exit: ; preds = %.critedge375 122: ; preds = %119, %_ZNK4llvm3EVT8isVectorEv.exit %123 = urem i32 %111, %109 - %124 = udiv i32 %111, %109 + %124 = udiv exact i32 %111, %109 %125 = icmp eq i32 %123, 0 br i1 %125, label %126, label %254 @@ -16283,7 +16283,7 @@ _ZN4llvm5APInt7getZeroEj.exit: ; preds = %130, %131 br label %_ZN4llvm5APInt7getZeroEj.exit417 _ZN4llvm5APInt7getZeroEj.exit417: ; preds = %134, %135 - %.not371625 = icmp ugt i32 %109, %111 + %.not371625 = icmp eq i32 %111, 0 br i1 %.not371625, label %._crit_edge632, label %.lr.ph631 .lr.ph631: ; preds = %_ZN4llvm5APInt7getZeroEj.exit417 @@ -16551,7 +16551,7 @@ _ZN4llvm5APIntD2Ev.exit421: ; preds = %_ZN4llvm5APIntD2Ev. 255: ; preds = %254 %256 = urem i32 %109, %111 - %257 = udiv i32 %109, %111 + %257 = udiv exact i32 %109, %111 %258 = icmp eq i32 %256, 0 br i1 %258, label %259, label %335 @@ -22228,7 +22228,7 @@ _ZNK4llvm3EVT8isVectorEv.exit: ; preds = %420 store i32 1, ptr %441, align 8, !tbaa !411 store i64 0, ptr %29, align 8, !tbaa !350 %442 = urem i32 %162, %433 - %443 = udiv i32 %162, %433 + %443 = udiv exact i32 %162, %433 %444 = icmp eq i32 %442, 0 br i1 %444, label %445, label %.loopexit @@ -22299,8 +22299,7 @@ _ZN4llvm5APInt7getZeroEj.exit1125: ; preds = %464, %465 br i1 %471, label %.critedge1067, label %.preheader1524 .preheader1524: ; preds = %._crit_edge1568 - %.not10621576 = icmp ugt i32 %433, %162 - br i1 %.not10621576, label %._crit_edge1581, label %.lr.ph1580 + br i1 %.not10611565, label %._crit_edge1581, label %.lr.ph1580 .lr.ph1580: ; preds = %.preheader1524 %472 = getelementptr inbounds nuw i8, ptr %33, i64 8 @@ -22590,7 +22589,7 @@ _ZN4llvm5APIntD2Ev.exit1133: ; preds = %.critedge1067, %608 .loopexit: ; preds = %604, %438 %612 = urem i32 %433, %162 - %613 = udiv i32 %433, %162 + %613 = udiv exact i32 %433, %162 %614 = icmp eq i32 %612, 0 br i1 %614, label %615, label %.critedge1069 diff --git a/bench/llvm/optimized/X86FrameLowering.ll b/bench/llvm/optimized/X86FrameLowering.ll index 1a4fe0e3539..cc24bc937ed 100644 --- a/bench/llvm/optimized/X86FrameLowering.ll +++ b/bench/llvm/optimized/X86FrameLowering.ll @@ -25380,17 +25380,18 @@ define dso_local noundef zeroext i1 @_ZNK4llvm16X86FrameLowering19adjustStackWit %11 = getelementptr inbounds nuw i8, ptr %0, i64 48 %12 = load i32, ptr %11, align 8, !tbaa !154 %13 = urem i32 %4, %12 - %14 = udiv i32 %4, %12 + %14 = udiv exact i32 %4, %12 %.not = icmp eq i32 %13, 0 br i1 %.not, label %15, label %182 15: ; preds = %10 - %16 = add nsw i32 %14, -3 - %or.cond = icmp ult i32 %16, -2 - %17 = getelementptr inbounds nuw i8, ptr %1, i64 56 - %18 = load ptr, ptr %17, align 8 - %19 = icmp eq ptr %2, %18 - %or.cond98 = select i1 %or.cond, i1 true, i1 %19 + %16 = icmp ne i32 %4, %12 + %or.cond = icmp ne i32 %14, 2 + %17 = select i1 %16, i1 %17, i1 false + %18 = getelementptr inbounds nuw i8, ptr %1, i64 56 + %19 = load ptr, ptr %18, align 8 + %or.cond98 = icmp eq ptr %2, %19 + %or.cond98 = select i1 %or.cond, i1 true, i1 %20 br i1 %or.cond98, label %182, label %.lr.ph.i.i.i.preheader .lr.ph.i.i.i.preheader: ; preds = %15 @@ -25635,10 +25636,6 @@ _ZNK4llvm14MCRegisterInfo22isSuperOrSubRegisterEqENS_10MCRegisterES1_.exit._crit br label %157 .preheader: ; preds = %157, %.preheader103 - %152 = icmp sgt i32 %14, 0 - br i1 %152, label %.lr.ph117, label %.loopexit - -.lr.ph117: ; preds = %.preheader %153 = getelementptr inbounds nuw i8, ptr %7, i64 8 %154 = getelementptr inbounds nuw i8, ptr %0, i64 32 %155 = getelementptr inbounds nuw i8, ptr %0, i64 24 @@ -25714,8 +25711,8 @@ _ZN4llvm8DebugLocD2Ev.exit: ; preds = %_ZN4llvm10MIMetadat %180 = icmp samesign ult i64 %indvars.iv.next122, %156 br i1 %180, label %160, label %.loopexit, !llvm.loop !2023 -.loopexit: ; preds = %_ZN4llvm8DebugLocD2Ev.exit, %50, %.preheader, %_ZNK4llvm14MCRegisterInfo22isSuperOrSubRegisterEqENS_10MCRegisterES1_.exit._crit_edge - %181 = phi i1 [ true, %.preheader ], [ false, %_ZNK4llvm14MCRegisterInfo22isSuperOrSubRegisterEqENS_10MCRegisterES1_.exit._crit_edge ], [ false, %50 ], [ true, %_ZN4llvm8DebugLocD2Ev.exit ] +.loopexit: ; preds = %_ZN4llvm8DebugLocD2Ev.exit, %50, %_ZNK4llvm14MCRegisterInfo22isSuperOrSubRegisterEqENS_10MCRegisterES1_.exit._crit_edge + %181 = phi i1 [ false, %_ZNK4llvm14MCRegisterInfo22isSuperOrSubRegisterEqENS_10MCRegisterES1_.exit._crit_edge ], [ false, %50 ], [ true, %_ZN4llvm8DebugLocD2Ev.exit ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #24 br label %182 diff --git a/bench/llvm/optimized/X86TargetTransformInfo.ll b/bench/llvm/optimized/X86TargetTransformInfo.ll index fb954015b79..89afaedbd3f 100644 --- a/bench/llvm/optimized/X86TargetTransformInfo.ll +++ b/bench/llvm/optimized/X86TargetTransformInfo.ll @@ -19376,7 +19376,7 @@ _ZNK4llvm3MVT15isFloatingPointEv.exit.thread: ; preds = %_ZN4llvm15Instructi %126 = call noundef i64 @_ZNK4llvm8TypeSizecvmEv(ptr noundef nonnull align 8 dereferenceable(9) %11) #19 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #19 %127 = urem i32 128, %120 - %128 = udiv i32 128, %120 + %128 = udiv exact i32 128, %120 %.not153 = icmp eq i32 %127, 0 br i1 %.not153, label %131, label %129 @@ -19387,17 +19387,17 @@ _ZNK4llvm3MVT15isFloatingPointEv.exit.thread: ; preds = %_ZN4llvm15Instructi br label %.critedge159 131: ; preds = %113 - %132 = call noundef ptr @_ZN4llvm15FixedVectorType3getEPNS_4TypeEj(ptr noundef %116, i32 noundef %128) #19 - %133 = icmp slt i32 %122, 1 - br i1 %133, label %.critedge159, label %.lr.ph423 + %132 = icmp ne i64 %126, 0 + %133 = zext i1 %132 to i64 + %134 = sub i64 %126, %133 + %135 = lshr i64 %134, 3 + %136 = add nuw nsw i64 %135, %133 + %137 = trunc i64 %136 to i32 + %138 = call noundef ptr @_ZN4llvm15FixedVectorType3getEPNS_4TypeEj(ptr noundef %116, i32 noundef %128) #19 + %139 = icmp slt i32 %122, 1 + br i1 %139, label %.critedge159, label %.lr.ph423 .lr.ph423: ; preds = %131 - %134 = icmp ne i64 %126, 0 - %135 = zext i1 %134 to i64 - %136 = sub i64 %126, %135 - %137 = lshr i64 %136, 3 - %138 = add nuw nsw i64 %137, %135 - %139 = trunc i64 %138 to i32 %140 = getelementptr inbounds nuw i8, ptr %0, i64 16 %141 = add i32 %.sroa.0249.0.extract.trunc, -1 %spec.select.i193 = icmp ult i32 %141, 2 @@ -19406,59 +19406,115 @@ _ZNK4llvm3MVT15isFloatingPointEv.exit.thread: ; preds = %_ZN4llvm15Instructi %spec.select.i.i194 = icmp ult i16 %142, 53 %143 = getelementptr inbounds [241 x i16], ptr @_ZZNK4llvm3MVT23getVectorMinNumElementsEvE10NElemTable, i64 0, i64 %124 %144 = select i1 %114, i32 4, i32 5 - %145 = getelementptr inbounds nuw i8, ptr %13, i64 8 - %146 = xor i1 %114, true - br label %147 - -147: ; preds = %.lr.ph423, %._crit_edge - %.0141421 = phi i32 [ %139, %.lr.ph423 ], [ %262, %._crit_edge ] - %.0142420 = phi i32 [ 0, %.lr.ph423 ], [ %.1143.lcssa, %._crit_edge ] - %.sroa.7281.0419 = phi i8 [ %.sroa.7281.0.extract.trunc, %.lr.ph423 ], [ %.sroa.7281.1.lcssa, %._crit_edge ] - %.sroa.0273.0418 = phi i8 [ %.sroa.0273.0.extract.trunc, %.lr.ph423 ], [ %.sroa.0273.1.lcssa, %._crit_edge ] - %.sroa.18.1417 = phi i32 [ %.sroa.18.0, %.lr.ph423 ], [ %.sroa.18.3.lcssa, %._crit_edge ] - %.sroa.0223.1416 = phi i64 [ %.sroa.0223.0, %.lr.ph423 ], [ %.sroa.0223.3.lcssa, %._crit_edge ] - %.0415 = phi i32 [ %122, %.lr.ph423 ], [ %.1303.lcssa, %._crit_edge ] - %148 = shl nsw i32 %.0141421, 3 - %149 = srem i32 %148, %120 - %150 = sdiv i32 %148, %120 - %.not154 = icmp eq i32 %149, 0 - br i1 %.not154, label %153, label %151 - -151: ; preds = %147 - %.sroa.7281.0.insert.ext = zext i8 %.sroa.7281.0419 to i16 + %145 = add nsw i32 %128, -1 + %146 = getelementptr inbounds nuw i8, ptr %13, i64 8 + %147 = xor i1 %114, true + br i1 %or.cond327, label %.lr.ph423.split.us.split, label %.lr.ph423.split + +.lr.ph423.split.us.split:; preds = %.lr.ph423 + %.0142420 = trunc i16 %.sroa.7281.0.extract.shift to i1 + %.sroa.0273.0.extract.trunc.mask = and i16 %3, 255 + %.sroa.0273.0418 = zext nneg i16 %.sroa.0273.0.extract.trunc.mask to i64 + %.sroa.18.1417 = shl nuw i64 1, %.sroa.0273.0418 + %.sroa.0223.1416 = select i1 %148, i64 %.sroa.18.1417, i64 1 + %.0415 = shl nsw i32 %137, 3 + %148 = srem i32 %.0415, %120 + %149 = icmp eq i32 %148, 0 + br i1 %149, label %.lr.ph468, label %.split.us + +.lr.ph468:; preds = %.lr.ph423.split.us.split, %._crit_edge.split.us.us + %154 = phi i32 [ %170, %._crit_edge.split.us.us ], [ %152, %.lr.ph423.split.us.split ] + %.0141421.us467 = phi i32 [ %169, %._crit_edge.split.us.us ], [ %137, %.lr.ph423.split.us.split ] + %.sroa.7281.0.insert.ext = sdiv exact i32 %154, %120 + %156 = icmp sgt i32 %155, %128 + br i1 %156, label %157, label %159 + +157: ; preds = %.lr.ph468 + %158 = call noundef ptr @_ZN4llvm15FixedVectorType3getEPNS_4TypeEj(ptr noundef %116, i32 noundef %155) #19 + br label %159 + +159: ; preds = %157, %.lr.ph468 + %160 = phi ptr [ %158, %157 ], [ %138, %.lr.ph468 ] + %161 = icmp eq i32 %154, %120 + br i1 %161, label %.lr.ph.us, label %162 + +162: ; preds = %159 + %163 = load ptr, ptr %2, align 8, !tbaa !168 + %164 = call noundef ptr @_ZN4llvm11IntegerType3getERNS_11LLVMContextEj(ptr noundef nonnull align 8 dereferenceable(8) %163, i32 noundef %154) #19 + %165 = getelementptr inbounds nuw i8, ptr %160, i64 32 + %166 = load i32, ptr %165, align 8, !tbaa !155 + %167 = udiv i32 %166, %155 + %168 = call noundef ptr @_ZN4llvm15FixedVectorType3getEPNS_4TypeEj(ptr noundef %164, i32 noundef %167) #19 + br label %.lr.ph.us + +._crit_edge.split.us.us: ; preds = %.lr.ph.us + %169 = sdiv i32 %.0141421.us467, 2 + %170 = shl nsw i32 %169, 3 + %171 = srem i32 %170, %120 + %.not154.us = icmp eq i32 %171, 0 + br i1 %.not154.us, label %.lr.ph468, label %.split.us + +.lr.ph.us: ; preds = %159, %162 + %172 = sext i32 %.0141421.us467 to i64 + %173 = icmp slt i32 %122, %155 + %174 = icmp ult i64 %151, %172 + %or.cond = select i1 %173, i1 %174, i1 false + br i1 %or.cond, label %._crit_edge.split.us.us, label %.split431.us + +.split431.us: ; preds = %.lr.ph.us + %175 = icmp eq i32 %.0141421.us467, 32 + br i1 %175, label %203, label %201 + +.lr.ph423.split: ; preds = %.lr.ph423, %._crit_edge.split + %.0141421 = phi i32 [ %282, %._crit_edge.split ], [ %137, %.lr.ph423 ] + %.0142420 = phi i32 [ %.1143369, %._crit_edge.split ], [ 0, %.lr.ph423 ] + %.sroa.7281.0419 = phi i8 [ %.sroa.7281.1366, %._crit_edge.split ], [ %.sroa.7281.0.extract.trunc, %.lr.ph423 ] + %.sroa.0273.0418 = phi i8 [ %.sroa.0273.1363, %._crit_edge.split ], [ %.sroa.0273.0.extract.trunc, %.lr.ph423 ] + %.sroa.18.1417 = phi i32 [ %.sroa.18.3360, %._crit_edge.split ], [ %.sroa.18.0, %.lr.ph423 ] + %.sroa.0223.1416 = phi i64 [ %.sroa.0223.3359, %._crit_edge.split ], [ %.sroa.0223.0, %.lr.ph423 ] + %.0415 = phi i32 [ %.1303356, %._crit_edge.split ], [ %122, %.lr.ph423 ] + %176 = shl nsw i32 %.0141421, 3 + %177 = srem i32 %176, %120 + %178 = sdiv exact i32 %176, %120 + %.not154 = icmp eq i32 %177, 0 + br i1 %.not154, label %180, label %.split.us + +.split.us: ; preds = %.lr.ph423.split, %._crit_edge.split.us.us, %.lr.ph423.split.us.split + %.us-phi426 = phi i8 [ %.sroa.0273.0.extract.trunc, %.lr.ph423.split.us.split ], [ %.sroa.0273.0.extract.trunc, %._crit_edge.split.us.us ], [ %.sroa.0273.0418, %.lr.ph423.split ] + %.us-phi427 = phi i8 [ %.sroa.7281.0.extract.trunc, %.lr.ph423.split.us.split ], [ %.sroa.7281.0.extract.trunc, %._crit_edge.split.us.us ], [ %.sroa.7281.0419, %.lr.ph423.split ] + %.sroa.7281.0.insert.ext = zext i8 %.us-phi427 to i16 %.sroa.7281.0.insert.shift = shl nuw i16 %.sroa.7281.0.insert.ext, 8 - %.sroa.0273.0.insert.ext = zext i8 %.sroa.0273.0418 to i16 + %.sroa.0273.0.insert.ext = zext i8 %.us-phi426 to i16 %.sroa.0273.0.insert.insert = or disjoint i16 %.sroa.7281.0.insert.shift, %.sroa.0273.0.insert.ext %152 = call { i64, i32 } @_ZN4llvm16BasicTTIImplBaseINS_10X86TTIImplEE15getMemoryOpCostEjPNS_4TypeENS_10MaybeAlignEjNS_19TargetTransformInfo14TargetCostKindENS6_16OperandValueInfoEPKNS_11InstructionE(ptr noundef nonnull align 8 dereferenceable(16) %0, i32 noundef %1, ptr noundef nonnull %2, i16 %.sroa.0273.0.insert.insert, i32 noundef %4, i32 noundef 0, i64 %.fr, ptr noundef %7) %.fca.0.extract29 = extractvalue { i64, i32 } %152, 0 %.fca.1.extract30 = extractvalue { i64, i32 } %152, 1 br label %.critedge159 -153: ; preds = %147 - %154 = icmp sgt i32 %150, %128 +153: ; preds = %.lr.ph423.split + %154 = icmp sgt i32 %178, %128 br i1 %154, label %155, label %157 155: ; preds = %153 - %156 = call noundef ptr @_ZN4llvm15FixedVectorType3getEPNS_4TypeEj(ptr noundef %116, i32 noundef %150) #19 + %156 = call noundef ptr @_ZN4llvm15FixedVectorType3getEPNS_4TypeEj(ptr noundef %116, i32 noundef %178) #19 br label %157 157: ; preds = %153, %155 - %158 = phi ptr [ %156, %155 ], [ %132, %153 ] - %159 = icmp eq i32 %150, 1 + %158 = phi ptr [ %156, %155 ], [ %138, %153 ] + %159 = icmp eq i32 %176, %120 br i1 %159, label %.lr.ph, label %160 160: ; preds = %157 %161 = load ptr, ptr %2, align 8, !tbaa !168 - %162 = mul nsw i32 %150, %120 - %163 = call noundef ptr @_ZN4llvm11IntegerType3getERNS_11LLVMContextEj(ptr noundef nonnull align 8 dereferenceable(8) %161, i32 noundef %162) #19 - %164 = getelementptr inbounds nuw i8, ptr %158, i64 32 - %165 = load i32, ptr %164, align 8, !tbaa !155 - %166 = udiv i32 %165, %150 - %167 = call noundef ptr @_ZN4llvm15FixedVectorType3getEPNS_4TypeEj(ptr noundef %163, i32 noundef %166) #19 + %162 = call noundef ptr @_ZN4llvm11IntegerType3getERNS_11LLVMContextEj(ptr noundef nonnull align 8 dereferenceable(8) %188, i32 noundef %176) #19 + %163 = getelementptr inbounds nuw i8, ptr %185, i64 32 + %164 = load i32, ptr %190, align 8, !tbaa !155 + %165 = udiv i32 %164, %178 + %166 = call noundef ptr @_ZN4llvm15FixedVectorType3getEPNS_4TypeEj(ptr noundef %189, i32 noundef %165) #19 br label %.lr.ph .lr.ph: ; preds = %160, %157 - %168 = phi ptr [ %167, %160 ], [ %158, %157 ] + %168 = phi ptr [ %166, %160 ], [ %158, %157 ] %cond = icmp eq i32 %.0141421, 1 %169 = sext i32 %.0141421 to i64 %170 = icmp eq i32 %.0141421, 32 @@ -19466,97 +19522,83 @@ _ZNK4llvm3MVT15isFloatingPointEv.exit.thread: ; preds = %_ZN4llvm15Instructi %172 = getelementptr inbounds nuw i8, ptr %158, i64 32 %173 = icmp sgt i32 %.0141421, 4 %174 = getelementptr inbounds nuw i8, ptr %168, i64 32 - br i1 %or.cond327, label %.lr.ph.split.us, label %.lr.ph.split + br label %209 -.lr.ph.split.us: ; preds = %.lr.ph - %175 = icmp slt i32 %.0415, %150 - br i1 %175, label %176, label %182 +.lr.ph.split.us: ; preds = %.split431.us + %175 = icmp slt i32 %.0141421.us467, 4 + br i1 %175, label %176, label %183 176: ; preds = %.lr.ph.split.us - %177 = trunc nuw i8 %.sroa.7281.0419 to i1 - %178 = zext nneg i8 %.sroa.0273.0418 to i64 - %179 = shl nuw i64 1, %178 - %180 = select i1 %177, i64 %179, i64 1 - %181 = icmp ult i64 %180, %169 - br i1 %181, label %._crit_edge, label %182 + %177 = call i64 @llvm.sadd.sat.i64(i64 %.sroa.0223.0, i64 2) + br label %.critedge159 -182: ; preds = %176, %.lr.ph.split.us - br i1 %170, label %184, label %183 +182: ; preds = %.split431.us + %204 = load ptr, ptr %140, align 8, !tbaa !3 + %205 = getelementptr inbounds nuw i8, ptr %204, i64 483 + %206 = load i8, ptr %205, align 1, !tbaa !432, !range !149, !noundef !150 + %207 = trunc nuw i8 %206 to i1 + br i1 %207, label %208, label %.thread311.us -183: ; preds = %182 - br i1 %171, label %.thread310.us, label %.thread311.us +183: ; preds = %182, %201 + %.0.i.i192.us = call i64 @llvm.sadd.sat.i64(i64 %.sroa.0223.0, i64 1) + br label %.critedge159 -.thread310.us: ; preds = %183 - %.0.i.i191.us = call i64 @llvm.sadd.sat.i64(i64 %.sroa.0223.1416, i64 2) +.thread310.us: ; preds = %182 + %.0.i.i191.us = call i64 @llvm.sadd.sat.i64(i64 %.sroa.0223.0, i64 2) br label %.critedge159 -184: ; preds = %182 - %185 = load ptr, ptr %140, align 8, !tbaa !3 - %186 = getelementptr inbounds nuw i8, ptr %185, i64 483 - %187 = load i8, ptr %186, align 1, !tbaa !432, !range !149, !noundef !150 - %188 = trunc nuw i8 %187 to i1 - br i1 %188, label %189, label %.thread311.us +184: ; preds = %.lr.ph, %.thread312 + %185 = phi i32 [ %.0142420, %.lr.ph ], [ %269, %.thread312 ] + %186 = phi i8 [ %.sroa.7281.0419, %.lr.ph ], [ 1, %.thread312 ] + %187 = phi i8 [ %.sroa.0273.0418, %.lr.ph ], [ %280, %.thread312 ] + %188 = phi i32 [ %.sroa.18.1417, %.lr.ph ], [ %.sroa.18.5, %.thread312 ] + %.sroa.0223.3359 = phi i64 [ %.sroa.0223.1416, %.lr.ph ], [ %.sroa.0223.6, %.thread312 ] + %.1303356 = phi i32 [ %.0415, %.lr.ph ], [ %270, %.thread312 ] + %210 = icmp slt i32 %.1303356, %178 + br i1 %210, label %211, label %219 + +.thread311.us: ; preds = %184 + br i1 %114, label %212, label %218 + +189: ; preds = %211 + %.0.i.i190.us = trunc nuw i8 %.sroa.7281.1366 to i1 + %214 = zext nneg i8 %.sroa.0273.1363 to i64 + %215 = shl nuw i64 1, %214 + %216 = select i1 %213, i64 %215, i64 1 + %217 = icmp ult i64 %216, %195 + br i1 %217, label %._crit_edge.split, label %219 -.thread311.us: ; preds = %184, %183 - %.0.i.i192.us = call i64 @llvm.sadd.sat.i64(i64 %.sroa.0223.1416, i64 1) - br label %.critedge159 +218: ; preds = %211 + br i1 %cond, label %.thread310, label %._crit_edge.split -189: ; preds = %184 - %.0.i.i190.us = call i64 @llvm.sadd.sat.i64(i64 %.sroa.0223.1416, i64 2) - br label %.critedge159 +219: ; preds = %212, %209 + br i1 %196, label %220, label %226 -.lr.ph.split: ; preds = %.lr.ph, %.thread312 - %.1143369 = phi i32 [ %249, %.thread312 ], [ %.0142420, %.lr.ph ] - %.sroa.7281.1366 = phi i8 [ 1, %.thread312 ], [ %.sroa.7281.0419, %.lr.ph ] - %.sroa.0273.1363 = phi i8 [ %260, %.thread312 ], [ %.sroa.0273.0418, %.lr.ph ] - %.sroa.18.3360 = phi i32 [ %.sroa.18.5, %.thread312 ], [ %.sroa.18.1417, %.lr.ph ] - %.sroa.0223.3359 = phi i64 [ %.sroa.0223.6, %.thread312 ], [ %.sroa.0223.1416, %.lr.ph ] - %.1303356 = phi i32 [ %250, %.thread312 ], [ %.0415, %.lr.ph ] - %190 = icmp slt i32 %.1303356, %150 - br i1 %190, label %191, label %199 - -191: ; preds = %.lr.ph.split - br i1 %114, label %192, label %198 - -192: ; preds = %191 - %193 = trunc nuw i8 %.sroa.7281.1366 to i1 - %194 = zext nneg i8 %.sroa.0273.1363 to i64 - %195 = shl nuw i64 1, %194 - %196 = select i1 %193, i64 %195, i64 1 - %197 = icmp ult i64 %196, %169 - br i1 %197, label %._crit_edge, label %199 - -198: ; preds = %191 - br i1 %cond, label %.thread310, label %._crit_edge - -199: ; preds = %192, %.lr.ph.split - br i1 %170, label %200, label %206 - -200: ; preds = %199 - %201 = load ptr, ptr %140, align 8, !tbaa !3 - %202 = getelementptr inbounds nuw i8, ptr %201, i64 483 - %203 = load i8, ptr %202, align 1, !tbaa !432, !range !149, !noundef !150 - %204 = trunc nuw i8 %203 to i1 - br i1 %204, label %205, label %.thread311 - -205: ; preds = %200 +220: ; preds = %219 + %221 = load ptr, ptr %140, align 8, !tbaa !3 + %222 = getelementptr inbounds nuw i8, ptr %221, i64 483 + %223 = load i8, ptr %222, align 1, !tbaa !432, !range !149, !noundef !150 + %224 = trunc nuw i8 %223 to i1 + br i1 %224, label %225, label %.thread311 + +.lr.ph.split: ; preds = %220 %.0.i.i190 = call i64 @llvm.sadd.sat.i64(i64 %.sroa.0223.3359, i64 2) br label %207 -206: ; preds = %199 +206: ; preds = %219 br i1 %171, label %.thread310, label %.thread311 -.thread310: ; preds = %198, %206 +.thread310: ; preds = %218, %206 %.0.i.i191 = call i64 @llvm.sadd.sat.i64(i64 %.sroa.0223.3359, i64 2) br label %207 -.thread311: ; preds = %200, %206 +.thread311: ; preds = %220, %206 %.0.i.i192 = call i64 @llvm.sadd.sat.i64(i64 %.sroa.0223.3359, i64 1) br label %207 -207: ; preds = %.thread310, %.thread311, %205 - %.sroa.0223.4 = phi i64 [ %.0.i.i190, %205 ], [ %.0.i.i191, %.thread310 ], [ %.0.i.i192, %.thread311 ] - %208 = sub i32 %122, %.1303356 +207: ; preds = %.thread310, %.thread311, %225 + %.sroa.0223.4 = phi i64 [ %.0.i.i190, %225 ], [ %.0.i.i191, %.thread310 ], [ %.0.i.i192, %.thread311 ] + %208 = sub nsw i32 %122, %.1303356 br i1 %spec.select.i.i194, label %209, label %_ZNK4llvm3MVT20getVectorNumElementsEv.exit 209: ; preds = %207 @@ -19593,12 +19635,12 @@ _ZN4llvm15InstructionCostpLERKS0_.exit196: ; preds = %215 br i1 %brmerge, label %.thread312, label %220 220: ; preds = %219 - %221 = urem i32 %208, %128 - %222 = sdiv i32 %221, %150 + %221 = and i32 %208, %145 + %222 = sdiv i32 %221, %178 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #19 %223 = load i32, ptr %174, align 8, !tbaa !155 %224 = add nsw i32 %222, 1 - store i32 %223, ptr %145, align 8, !tbaa !230, !alias.scope !433 + store i32 %223, ptr %146, align 8, !tbaa !230, !alias.scope !433 %225 = icmp ult i32 %223, 65 br i1 %225, label %226, label %227 @@ -19617,7 +19659,7 @@ _ZN4llvm5APIntC2Ejmbb.exit.i: ; preds = %227, %226 228: ; preds = %_ZN4llvm5APIntC2Ejmbb.exit.i %229 = zext nneg i32 %222 to i64 %230 = shl nuw i64 1, %229 - %231 = load i32, ptr %145, align 8, !tbaa !230, !alias.scope !433 + %231 = load i32, ptr %146, align 8, !tbaa !230, !alias.scope !433 %232 = icmp ult i32 %231, 65 br i1 %232, label %233, label %236 @@ -19640,13 +19682,13 @@ _ZN4llvm5APIntC2Ejmbb.exit.i: ; preds = %227, %226 _ZN4llvm5APInt10getBitsSetEjjj.exit: ; preds = %233, %236, %240 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %14, i8 0, i64 16, i1 false) - %241 = call { i64, i32 } @_ZN4llvm10X86TTIImpl24getScalarizationOverheadEPNS_10VectorTypeERKNS_5APIntEbbNS_19TargetTransformInfo14TargetCostKindENS_8ArrayRefIPNS_5ValueEEE(ptr noundef nonnull align 8 dereferenceable(72) %0, ptr noundef nonnull %168, ptr noundef nonnull align 8 dereferenceable(12) %13, i1 noundef zeroext %114, i1 noundef zeroext %146, i32 noundef 0, ptr noundef nonnull byval(%"class.llvm::ArrayRef.121") align 8 %14) + %241 = call { i64, i32 } @_ZN4llvm10X86TTIImpl24getScalarizationOverheadEPNS_10VectorTypeERKNS_5APIntEbbNS_19TargetTransformInfo14TargetCostKindENS_8ArrayRefIPNS_5ValueEEE(ptr noundef nonnull align 8 dereferenceable(72) %0, ptr noundef nonnull %168, ptr noundef nonnull align 8 dereferenceable(12) %13, i1 noundef zeroext %114, i1 noundef zeroext %147, i32 noundef 0, ptr noundef nonnull byval(%"class.llvm::ArrayRef.121") align 8 %14) %.fca.0.extract = extractvalue { i64, i32 } %241, 0 %.fca.1.extract = extractvalue { i64, i32 } %241, 1 %242 = icmp eq i32 %.fca.1.extract, 1 %spec.select329 = select i1 %242, i32 1, i32 %.sroa.18.4 %.0.i198 = call i64 @llvm.sadd.sat.i64(i64 %.sroa.0223.5, i64 %.fca.0.extract) - %243 = load i32, ptr %145, align 8, !tbaa !230 + %243 = load i32, ptr %146, align 8, !tbaa !230 %244 = icmp ugt i32 %243, 64 br i1 %244, label %245, label %_ZN4llvm5APIntD2Ev.exit @@ -19667,8 +19709,8 @@ _ZN4llvm5APIntD2Ev.exit: ; preds = %_ZN4llvm5APInt10get %.2144322 = phi i32 [ %.2144, %219 ], [ %.2144, %_ZN4llvm5APIntD2Ev.exit ], [ %216, %215 ] %.sroa.0223.6 = phi i64 [ %.sroa.0223.5, %219 ], [ %.0.i198, %_ZN4llvm5APIntD2Ev.exit ], [ %.sroa.0223.4, %215 ] %.sroa.18.5 = phi i32 [ %.sroa.18.4, %219 ], [ %spec.select329, %_ZN4llvm5APIntD2Ev.exit ], [ %.sroa.18.3360, %215 ] - %249 = sub nsw i32 %.2144322, %150 - %250 = sub nsw i32 %.1303356, %150 + %249 = sub nsw i32 %.2144322, %178 + %250 = sub nsw i32 %.1303356, %178 %251 = trunc nuw i8 %.sroa.7281.1366 to i1 %252 = zext nneg i8 %.sroa.0273.1363 to i64 %253 = shl nuw i64 1, %252 @@ -19680,22 +19722,16 @@ _ZN4llvm5APIntD2Ev.exit: ; preds = %_ZN4llvm5APInt10get %259 = trunc nuw nsw i64 %258 to i8 %260 = sub nsw i8 63, %259 %261 = icmp sgt i32 %250, 0 - br i1 %261, label %.lr.ph.split, label %.critedge159, !llvm.loop !436 - -._crit_edge: ; preds = %192, %198, %176 - %.1303.lcssa = phi i32 [ %.0415, %176 ], [ %.1303356, %198 ], [ %.1303356, %192 ] - %.sroa.0223.3.lcssa = phi i64 [ %.sroa.0223.1416, %176 ], [ %.sroa.0223.3359, %198 ], [ %.sroa.0223.3359, %192 ] - %.sroa.18.3.lcssa = phi i32 [ %.sroa.18.1417, %176 ], [ %.sroa.18.3360, %198 ], [ %.sroa.18.3360, %192 ] - %.sroa.0273.1.lcssa = phi i8 [ %.sroa.0273.0418, %176 ], [ %.sroa.0273.1363, %198 ], [ %.sroa.0273.1363, %192 ] - %.sroa.7281.1.lcssa = phi i8 [ %.sroa.7281.0419, %176 ], [ %.sroa.7281.1366, %198 ], [ %.sroa.7281.1366, %192 ] - %.1143.lcssa = phi i32 [ %.0142420, %176 ], [ %.1143369, %198 ], [ %.1143369, %192 ] - %262 = sdiv i32 %.0141421, 2 - %263 = icmp slt i32 %.1303.lcssa, 1 - br i1 %263, label %.critedge159, label %147, !llvm.loop !437 - -.critedge159: ; preds = %._crit_edge, %.thread312, %131, %.thread310.us, %.thread311.us, %189, %_ZNK4llvm3MVT15isFloatingPointEv.exit.thread, %151, %129, %"_ZN4llvm6all_ofINS_14iterator_rangeIPKNS_3UseEEEZNS_10X86TTIImpl15getMemoryOpCostEjPNS_4TypeENS_10MaybeAlignEjNS_19TargetTransformInfo14TargetCostKindENSA_16OperandValueInfoEPKNS_11InstructionEE3$_0EEbOT_T0_.exit", %72, %_ZN4llvm16dyn_cast_or_nullINS_9StoreInstEKNS_11InstructionEEEDaPT0_.exit.thread - %.sroa.0293.1 = phi i64 [ %.fca.0.extract98, %72 ], [ 1, %_ZN4llvm16dyn_cast_or_nullINS_9StoreInstEKNS_11InstructionEEEDaPT0_.exit.thread ], [ 2, %"_ZN4llvm6all_ofINS_14iterator_rangeIPKNS_3UseEEEZNS_10X86TTIImpl15getMemoryOpCostEjPNS_4TypeENS_10MaybeAlignEjNS_19TargetTransformInfo14TargetCostKindENSA_16OperandValueInfoEPKNS_11InstructionEE3$_0EEbOT_T0_.exit" ], [ %.0.i.i184, %_ZNK4llvm3MVT15isFloatingPointEv.exit.thread ], [ %.fca.0.extract52, %129 ], [ %.fca.0.extract29, %151 ], [ %.0.i.i190.us, %189 ], [ %.0.i.i191.us, %.thread310.us ], [ %.0.i.i192.us, %.thread311.us ], [ %.sroa.0223.0, %131 ], [ %.sroa.0223.6, %.thread312 ], [ %.sroa.0223.3.lcssa, %._crit_edge ] - %.sroa.9.1 = phi i32 [ %.fca.1.extract99, %72 ], [ 0, %_ZN4llvm16dyn_cast_or_nullINS_9StoreInstEKNS_11InstructionEEEDaPT0_.exit.thread ], [ 0, %"_ZN4llvm6all_ofINS_14iterator_rangeIPKNS_3UseEEEZNS_10X86TTIImpl15getMemoryOpCostEjPNS_4TypeENS_10MaybeAlignEjNS_19TargetTransformInfo14TargetCostKindENSA_16OperandValueInfoEPKNS_11InstructionEE3$_0EEbOT_T0_.exit" ], [ %spec.select.i183, %_ZNK4llvm3MVT15isFloatingPointEv.exit.thread ], [ %.fca.1.extract53, %129 ], [ %.fca.1.extract30, %151 ], [ %.sroa.18.1417, %189 ], [ %.sroa.18.1417, %.thread310.us ], [ %.sroa.18.1417, %.thread311.us ], [ %.sroa.18.0, %131 ], [ %.sroa.18.5, %.thread312 ], [ %.sroa.18.3.lcssa, %._crit_edge ] + br i1 %261, label %209, label %.critedge159, !llvm.loop !436 + +._crit_edge: ; preds = %212, %218 + %.1303.lcssa = sdiv i32 %.0141421, 2 + %.sroa.0223.3.lcssa = icmp slt i32 %.1303356, 1 + br i1 %.sroa.0223.3.lcssa, label %.critedge159, label %.lr.ph423.split, !llvm.loop !437 + +.critedge159:; preds = %._crit_edge.split, %.thread312, %131, %176, %183, %208, %_ZNK4llvm3MVT15isFloatingPointEv.exit.thread, %.split.us, %129, %"_ZN4llvm6all_ofINS_14iterator_rangeIPKNS_3UseEEEZNS_10X86TTIImpl15getMemoryOpCostEjPNS_4TypeENS_10MaybeAlignEjNS_19TargetTransformInfo14TargetCostKindENSA_16OperandValueInfoEPKNS_11InstructionEE3$_0EEbOT_T0_.exit", %72, %_ZN4llvm16dyn_cast_or_nullINS_9StoreInstEKNS_11InstructionEEEDaPT0_.exit.thread + %.1143.lcssa = phi i64 [ %.fca.0.extract98, %72 ], [ 1, %_ZN4llvm16dyn_cast_or_nullINS_9StoreInstEKNS_11InstructionEEEDaPT0_.exit.thread ], [ 2, %"_ZN4llvm6all_ofINS_14iterator_rangeIPKNS_3UseEEEZNS_10X86TTIImpl15getMemoryOpCostEjPNS_4TypeENS_10MaybeAlignEjNS_19TargetTransformInfo14TargetCostKindENSA_16OperandValueInfoEPKNS_11InstructionEE3$_0EEbOT_T0_.exit" ], [ %.0.i.i184, %_ZNK4llvm3MVT15isFloatingPointEv.exit.thread ], [ %.fca.0.extract52, %129 ], [ %.fca.0.extract29, %.split.us ], [ %.0.i.i190.us, %208 ], [ %177, %176 ], [ %.0.i.i192.us, %183 ], [ %.sroa.0223.0, %131 ], [ %.sroa.0223.6, %.thread312 ], [ %.sroa.0223.3359, %._crit_edge ] + %262 = phi i32 [ %.fca.1.extract99, %72 ], [ 0, %_ZN4llvm16dyn_cast_or_nullINS_9StoreInstEKNS_11InstructionEEEDaPT0_.exit.thread ], [ 0, %"_ZN4llvm6all_ofINS_14iterator_rangeIPKNS_3UseEEEZNS_10X86TTIImpl15getMemoryOpCostEjPNS_4TypeENS_10MaybeAlignEjNS_19TargetTransformInfo14TargetCostKindENSA_16OperandValueInfoEPKNS_11InstructionEE3$_0EEbOT_T0_.exit" ], [ %spec.select.i183, %_ZNK4llvm3MVT15isFloatingPointEv.exit.thread ], [ %.fca.1.extract53, %129 ], [ %.fca.1.extract30, %.split.us ], [ %.sroa.18.0, %208 ], [ %.sroa.18.0, %176 ], [ %.sroa.18.0, %183 ], [ %.sroa.18.0, %131 ], [ %.sroa.18.5, %.thread312 ], [ %161, %._crit_edge ] %.fca.0.insert = insertvalue { i64, i32 } poison, i64 %.sroa.0293.1, 0 %.fca.1.insert = insertvalue { i64, i32 } %.fca.0.insert, i32 %.sroa.9.1, 1 ret { i64, i32 } %.fca.1.insert diff --git a/bench/meshlab/optimized/meshfilter.ll b/bench/meshlab/optimized/meshfilter.ll index 43cf81b7c16..e6199389f2d 100644 --- a/bench/meshlab/optimized/meshfilter.ll +++ b/bench/meshlab/optimized/meshfilter.ll @@ -70529,7 +70529,7 @@ _ZN3vcg3tri11UpdateFlagsI6CMeshOE16FaceBorderFromFFERS2_.exit: ; preds = %.loope 61: ; preds = %60 %62 = add nsw i32 %.0135297, 1 %63 = srem i32 %62, %.sroa.speculated - %64 = sdiv i32 %62, %.sroa.speculated + %64 = sdiv exact i32 %62, %.sroa.speculated %65 = icmp eq i32 %63, 0 br i1 %65, label %66, label %73 @@ -70813,7 +70813,7 @@ _ZN3vcg3tri9AllocatorI6CMeshOE11AddVerticesERS2_m.exit: ; preds = %197, %200 216: ; preds = %215 %217 = add nsw i32 %.3138309, 1 %218 = srem i32 %217, %.sroa.speculated - %219 = sdiv i32 %217, %.sroa.speculated + %219 = sdiv exact i32 %217, %.sroa.speculated %220 = icmp eq i32 %218, 0 br i1 %220, label %221, label %223 @@ -71072,7 +71072,7 @@ _ZN3vcg3tri9AllocatorI6CMeshOE8AddFacesERS2_m.exit: ; preds = %337, %340 362: ; preds = %361 %363 = add nsw i32 %.6329, 1 %364 = srem i32 %363, %.sroa.speculated - %365 = sdiv i32 %363, %.sroa.speculated + %365 = sdiv exact i32 %363, %.sroa.speculated %366 = icmp eq i32 %364, 0 br i1 %366, label %367, label %369 @@ -77319,7 +77319,7 @@ _ZN3vcg3tri11UpdateFlagsI6CMeshOE16FaceBorderFromFFERS2_.exit: ; preds = %.loope 61: ; preds = %60 %62 = add nsw i32 %.0135292, 1 %63 = srem i32 %62, %.sroa.speculated - %64 = sdiv i32 %62, %.sroa.speculated + %64 = sdiv exact i32 %62, %.sroa.speculated %65 = icmp eq i32 %63, 0 br i1 %65, label %66, label %73 @@ -77605,7 +77605,7 @@ _ZN3vcg3tri9AllocatorI6CMeshOE11AddVerticesERS2_m.exit: ; preds = %202, %205 221: ; preds = %220 %222 = add nsw i32 %.3138304, 1 %223 = srem i32 %222, %.sroa.speculated - %224 = sdiv i32 %222, %.sroa.speculated + %224 = sdiv exact i32 %222, %.sroa.speculated %225 = icmp eq i32 %223, 0 br i1 %225, label %226, label %228 @@ -77823,7 +77823,7 @@ _ZN3vcg3tri9AllocatorI6CMeshOE8AddFacesERS2_m.exit: ; preds = %314, %317 339: ; preds = %338 %340 = add nsw i32 %.6324, 1 %341 = srem i32 %340, %.sroa.speculated - %342 = sdiv i32 %340, %.sroa.speculated + %342 = sdiv exact i32 %340, %.sroa.speculated %343 = icmp eq i32 %341, 0 br i1 %343, label %344, label %346 @@ -80883,7 +80883,7 @@ _ZN3vcg3tri11UpdateFlagsI6CMeshOE16FaceBorderFromFFERS2_.exit: ; preds = %.loope 61: ; preds = %60 %62 = add nsw i32 %.0135292, 1 %63 = srem i32 %62, %.sroa.speculated - %64 = sdiv i32 %62, %.sroa.speculated + %64 = sdiv exact i32 %62, %.sroa.speculated %65 = icmp eq i32 %63, 0 br i1 %65, label %66, label %73 @@ -81169,7 +81169,7 @@ _ZN3vcg3tri9AllocatorI6CMeshOE11AddVerticesERS2_m.exit: ; preds = %202, %205 221: ; preds = %220 %222 = add nsw i32 %.3138304, 1 %223 = srem i32 %222, %.sroa.speculated - %224 = sdiv i32 %222, %.sroa.speculated + %224 = sdiv exact i32 %222, %.sroa.speculated %225 = icmp eq i32 %223, 0 br i1 %225, label %226, label %228 @@ -81387,7 +81387,7 @@ _ZN3vcg3tri9AllocatorI6CMeshOE8AddFacesERS2_m.exit: ; preds = %314, %317 339: ; preds = %338 %340 = add nsw i32 %.6324, 1 %341 = srem i32 %340, %.sroa.speculated - %342 = sdiv i32 %340, %.sroa.speculated + %342 = sdiv exact i32 %340, %.sroa.speculated %343 = icmp eq i32 %341, 0 br i1 %343, label %344, label %346 @@ -83486,7 +83486,7 @@ _ZN3vcg3tri11UpdateFlagsI6CMeshOE16FaceBorderFromFFERS2_.exit: ; preds = %.loope 61: ; preds = %60 %62 = add nsw i32 %.0135292, 1 %63 = srem i32 %62, %.sroa.speculated - %64 = sdiv i32 %62, %.sroa.speculated + %64 = sdiv exact i32 %62, %.sroa.speculated %65 = icmp eq i32 %63, 0 br i1 %65, label %66, label %73 @@ -83772,7 +83772,7 @@ _ZN3vcg3tri9AllocatorI6CMeshOE11AddVerticesERS2_m.exit: ; preds = %202, %205 221: ; preds = %220 %222 = add nsw i32 %.3138304, 1 %223 = srem i32 %222, %.sroa.speculated - %224 = sdiv i32 %222, %.sroa.speculated + %224 = sdiv exact i32 %222, %.sroa.speculated %225 = icmp eq i32 %223, 0 br i1 %225, label %226, label %228 @@ -83990,7 +83990,7 @@ _ZN3vcg3tri9AllocatorI6CMeshOE8AddFacesERS2_m.exit: ; preds = %314, %317 339: ; preds = %338 %340 = add nsw i32 %.6324, 1 %341 = srem i32 %340, %.sroa.speculated - %342 = sdiv i32 %340, %.sroa.speculated + %342 = sdiv exact i32 %340, %.sroa.speculated %343 = icmp eq i32 %341, 0 br i1 %343, label %344, label %346 @@ -85160,7 +85160,7 @@ _ZN3vcg3tri11UpdateFlagsI6CMeshOE16FaceBorderFromFFERS2_.exit: ; preds = %.loope 61: ; preds = %60 %62 = add nsw i32 %.0135292, 1 %63 = srem i32 %62, %.sroa.speculated - %64 = sdiv i32 %62, %.sroa.speculated + %64 = sdiv exact i32 %62, %.sroa.speculated %65 = icmp eq i32 %63, 0 br i1 %65, label %66, label %73 @@ -85446,7 +85446,7 @@ _ZN3vcg3tri9AllocatorI6CMeshOE11AddVerticesERS2_m.exit: ; preds = %202, %205 221: ; preds = %220 %222 = add nsw i32 %.3138304, 1 %223 = srem i32 %222, %.sroa.speculated - %224 = sdiv i32 %222, %.sroa.speculated + %224 = sdiv exact i32 %222, %.sroa.speculated %225 = icmp eq i32 %223, 0 br i1 %225, label %226, label %228 @@ -85664,7 +85664,7 @@ _ZN3vcg3tri9AllocatorI6CMeshOE8AddFacesERS2_m.exit: ; preds = %314, %317 339: ; preds = %338 %340 = add nsw i32 %.6324, 1 %341 = srem i32 %340, %.sroa.speculated - %342 = sdiv i32 %340, %.sroa.speculated + %342 = sdiv exact i32 %340, %.sroa.speculated %343 = icmp eq i32 %341, 0 br i1 %343, label %344, label %346 @@ -87122,7 +87122,7 @@ _ZN3vcg3tri11UpdateFlagsI6CMeshOE16FaceBorderFromFFERS2_.exit: ; preds = %.loope 61: ; preds = %60 %62 = add nsw i32 %.0135292, 1 %63 = srem i32 %62, %.sroa.speculated - %64 = sdiv i32 %62, %.sroa.speculated + %64 = sdiv exact i32 %62, %.sroa.speculated %65 = icmp eq i32 %63, 0 br i1 %65, label %66, label %73 @@ -87408,7 +87408,7 @@ _ZN3vcg3tri9AllocatorI6CMeshOE11AddVerticesERS2_m.exit: ; preds = %202, %205 221: ; preds = %220 %222 = add nsw i32 %.3138304, 1 %223 = srem i32 %222, %.sroa.speculated - %224 = sdiv i32 %222, %.sroa.speculated + %224 = sdiv exact i32 %222, %.sroa.speculated %225 = icmp eq i32 %223, 0 br i1 %225, label %226, label %228 @@ -87626,7 +87626,7 @@ _ZN3vcg3tri9AllocatorI6CMeshOE8AddFacesERS2_m.exit: ; preds = %314, %317 339: ; preds = %338 %340 = add nsw i32 %.6324, 1 %341 = srem i32 %340, %.sroa.speculated - %342 = sdiv i32 %340, %.sroa.speculated + %342 = sdiv exact i32 %340, %.sroa.speculated %343 = icmp eq i32 %341, 0 br i1 %343, label %344, label %346 @@ -89557,7 +89557,7 @@ _ZN3vcg3tri11UpdateFlagsI6CMeshOE16FaceBorderFromFFERS2_.exit: ; preds = %.loope 61: ; preds = %60 %62 = add nsw i32 %.0135292, 1 %63 = srem i32 %62, %.sroa.speculated - %64 = sdiv i32 %62, %.sroa.speculated + %64 = sdiv exact i32 %62, %.sroa.speculated %65 = icmp eq i32 %63, 0 br i1 %65, label %66, label %73 @@ -89843,7 +89843,7 @@ _ZN3vcg3tri9AllocatorI6CMeshOE11AddVerticesERS2_m.exit: ; preds = %202, %205 221: ; preds = %220 %222 = add nsw i32 %.3138304, 1 %223 = srem i32 %222, %.sroa.speculated - %224 = sdiv i32 %222, %.sroa.speculated + %224 = sdiv exact i32 %222, %.sroa.speculated %225 = icmp eq i32 %223, 0 br i1 %225, label %226, label %228 @@ -90061,7 +90061,7 @@ _ZN3vcg3tri9AllocatorI6CMeshOE8AddFacesERS2_m.exit: ; preds = %314, %317 339: ; preds = %338 %340 = add nsw i32 %.6324, 1 %341 = srem i32 %340, %.sroa.speculated - %342 = sdiv i32 %340, %.sroa.speculated + %342 = sdiv exact i32 %340, %.sroa.speculated %343 = icmp eq i32 %341, 0 br i1 %343, label %344, label %346 @@ -92589,7 +92589,7 @@ _ZN3vcg3tri11UpdateFlagsI6CMeshOE16FaceBorderFromFFERS2_.exit: ; preds = %.loope 61: ; preds = %60 %62 = add nsw i32 %.0135292, 1 %63 = srem i32 %62, %.sroa.speculated - %64 = sdiv i32 %62, %.sroa.speculated + %64 = sdiv exact i32 %62, %.sroa.speculated %65 = icmp eq i32 %63, 0 br i1 %65, label %66, label %73 @@ -92875,7 +92875,7 @@ _ZN3vcg3tri9AllocatorI6CMeshOE11AddVerticesERS2_m.exit: ; preds = %202, %205 221: ; preds = %220 %222 = add nsw i32 %.3138304, 1 %223 = srem i32 %222, %.sroa.speculated - %224 = sdiv i32 %222, %.sroa.speculated + %224 = sdiv exact i32 %222, %.sroa.speculated %225 = icmp eq i32 %223, 0 br i1 %225, label %226, label %228 @@ -93093,7 +93093,7 @@ _ZN3vcg3tri9AllocatorI6CMeshOE8AddFacesERS2_m.exit: ; preds = %314, %317 339: ; preds = %338 %340 = add nsw i32 %.6324, 1 %341 = srem i32 %340, %.sroa.speculated - %342 = sdiv i32 %340, %.sroa.speculated + %342 = sdiv exact i32 %340, %.sroa.speculated %343 = icmp eq i32 %341, 0 br i1 %343, label %344, label %346 @@ -95691,7 +95691,7 @@ _ZN3vcg3tri11UpdateFlagsI6CMeshOE16FaceBorderFromFFERS2_.exit: ; preds = %.loope 61: ; preds = %60 %62 = add nsw i32 %.0135292, 1 %63 = srem i32 %62, %.sroa.speculated - %64 = sdiv i32 %62, %.sroa.speculated + %64 = sdiv exact i32 %62, %.sroa.speculated %65 = icmp eq i32 %63, 0 br i1 %65, label %66, label %73 @@ -95977,7 +95977,7 @@ _ZN3vcg3tri9AllocatorI6CMeshOE11AddVerticesERS2_m.exit: ; preds = %202, %205 221: ; preds = %220 %222 = add nsw i32 %.3138304, 1 %223 = srem i32 %222, %.sroa.speculated - %224 = sdiv i32 %222, %.sroa.speculated + %224 = sdiv exact i32 %222, %.sroa.speculated %225 = icmp eq i32 %223, 0 br i1 %225, label %226, label %228 @@ -96195,7 +96195,7 @@ _ZN3vcg3tri9AllocatorI6CMeshOE8AddFacesERS2_m.exit: ; preds = %314, %317 339: ; preds = %338 %340 = add nsw i32 %.6324, 1 %341 = srem i32 %340, %.sroa.speculated - %342 = sdiv i32 %340, %.sroa.speculated + %342 = sdiv exact i32 %340, %.sroa.speculated %343 = icmp eq i32 %341, 0 br i1 %343, label %344, label %346 @@ -113613,7 +113613,7 @@ _ZN3vcg3tri11UpdateFlagsI6CMeshOE16FaceBorderFromFFERS2_.exit: ; preds = %.loope 64: ; preds = %63 %65 = add nsw i32 %.0136308, 1 %66 = srem i32 %65, %.sroa.speculated - %67 = sdiv i32 %65, %.sroa.speculated + %67 = sdiv exact i32 %65, %.sroa.speculated %68 = icmp eq i32 %66, 0 br i1 %68, label %69, label %76 @@ -113955,7 +113955,7 @@ _ZN3vcg3tri9AllocatorI6CMeshOE11AddVerticesERS2_m.exit: ; preds = %241, %244 260: ; preds = %259 %261 = add nsw i32 %.3139321, 1 %262 = srem i32 %261, %.sroa.speculated - %263 = sdiv i32 %261, %.sroa.speculated + %263 = sdiv exact i32 %261, %.sroa.speculated %264 = icmp eq i32 %262, 0 br i1 %264, label %265, label %267 @@ -114183,7 +114183,7 @@ _ZN3vcg3tri9AllocatorI6CMeshOE8AddFacesERS2_m.exit: ; preds = %356, %359 381: ; preds = %380 %382 = add nsw i32 %.6341, 1 %383 = srem i32 %382, %.sroa.speculated - %384 = sdiv i32 %382, %.sroa.speculated + %384 = sdiv exact i32 %382, %.sroa.speculated %385 = icmp eq i32 %383, 0 br i1 %385, label %386, label %388 @@ -114845,7 +114845,7 @@ _ZN3vcg3tri11UpdateFlagsI6CMeshOE16FaceBorderFromFFERS2_.exit: ; preds = %.loope 63: ; preds = %62 %64 = add nsw i32 %.0136308, 1 %65 = srem i32 %64, %.sroa.speculated - %66 = sdiv i32 %64, %.sroa.speculated + %66 = sdiv exact i32 %64, %.sroa.speculated %67 = icmp eq i32 %65, 0 br i1 %67, label %68, label %75 @@ -115157,7 +115157,7 @@ _ZN3vcg3tri9AllocatorI6CMeshOE11AddVerticesERS2_m.exit: ; preds = %218, %221 237: ; preds = %236 %238 = add nsw i32 %.3139321, 1 %239 = srem i32 %238, %.sroa.speculated - %240 = sdiv i32 %238, %.sroa.speculated + %240 = sdiv exact i32 %238, %.sroa.speculated %241 = icmp eq i32 %239, 0 br i1 %241, label %242, label %244 @@ -115385,7 +115385,7 @@ _ZN3vcg3tri9AllocatorI6CMeshOE8AddFacesERS2_m.exit: ; preds = %333, %336 358: ; preds = %357 %359 = add nsw i32 %.6341, 1 %360 = srem i32 %359, %.sroa.speculated - %361 = sdiv i32 %359, %.sroa.speculated + %361 = sdiv exact i32 %359, %.sroa.speculated %362 = icmp eq i32 %360, 0 br i1 %362, label %363, label %365 @@ -132484,7 +132484,7 @@ define linkonce_odr void @_ZN3vcg3tri16PointCloudNormalI6CMeshOE23ComputeUndirec 26: ; preds = %25 %27 = add nsw i32 %.047, 1 %28 = srem i32 %27, %.sroa.speculated - %29 = sdiv i32 %27, %.sroa.speculated + %29 = sdiv exact i32 %27, %.sroa.speculated %30 = icmp eq i32 %28, 0 br i1 %30, label %31, label %35 diff --git a/bench/mold/optimized/passes.cc.ALPHA.ll b/bench/mold/optimized/passes.cc.ALPHA.ll index 64c50e1f541..4c258c45ebc 100644 --- a/bench/mold/optimized/passes.cc.ALPHA.ll +++ b/bench/mold/optimized/passes.cc.ALPHA.ll @@ -185,8 +185,6 @@ target triple = "x86_64-unknown-linux-gnu" %"class.std::unordered_set.441" = type { %"class.std::_Hashtable.442" } %"class.std::_Hashtable.442" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr } %"struct.mold::elf::ElfShdr" = type { %"class.mold::LittleEndian", %"class.mold::LittleEndian", %"class.mold::LittleEndian.317", %"class.mold::LittleEndian.317", %"class.mold::LittleEndian.317", %"class.mold::LittleEndian.317", %"class.mold::LittleEndian", %"class.mold::LittleEndian", %"class.mold::LittleEndian.317", %"class.mold::LittleEndian.317" } -%"struct.mold::elf::ElfRel" = type { %"class.mold::LittleEndian.317", %"class.mold::LittleEndian", %"class.mold::LittleEndian", %"class.mold::LittleEndian.463" } -%"class.mold::LittleEndian.463" = type { [8 x i8] } %"struct.std::__detail::_AllocNode.1188" = type { ptr } %"class.std::unique_ptr.472" = type { %"struct.std::__uniq_ptr_data.473" } %"struct.std::__uniq_ptr_data.473" = type { %"class.std::__uniq_ptr_impl.474" } @@ -226,6 +224,8 @@ target triple = "x86_64-unknown-linux-gnu" %"struct.std::_Vector_base>>, std::allocator>>>>::_Vector_impl" = type { %"struct.std::_Vector_base>>, std::allocator>>>>::_Vector_impl_data" } %"struct.std::_Vector_base>>, std::allocator>>>>::_Vector_impl_data" = type { ptr, ptr, ptr } %"class.__gnu_cxx::__normal_iterator.1238" = type { ptr } +%"struct.mold::elf::ElfRel" = type { %"class.mold::LittleEndian.317", %"class.mold::LittleEndian", %"class.mold::LittleEndian", %"class.mold::LittleEndian.463" } +%"class.mold::LittleEndian.463" = type { [8 x i8] } %class.anon.551 = type { i8 } %class.anon.553 = type { ptr, ptr } %class.anon.554 = type { ptr } @@ -15009,7 +15009,6 @@ if.then.i.i: ; preds = %if.end.i _ZN4mold3elf9InputFileINS0_5ALPHAEE10get_stringERNS0_7ContextIS2_EERKNS0_7ElfShdrIS2_EE.exit.i: ; preds = %if.end.i call void @llvm.lifetime.end.p0(i64 400, ptr nonnull %ref.tmp.i.i) %rem.i = urem i64 %x.0.copyload.i6.i.i, 24 - %div.i = udiv i64 %x.0.copyload.i6.i.i, 24 %tobool.not.i57 = icmp eq i64 %rem.i, 0 br i1 %tobool.not.i57, label %_ZNK4mold3elf12InputSectionINS0_5ALPHAEE8get_relsERNS0_7ContextIS2_EE.exit, label %if.then.i58 @@ -15022,8 +15021,8 @@ if.then.i58: ; preds = %_ZN4mold3elf9InputF _ZNK4mold3elf12InputSectionINS0_5ALPHAEE8get_relsERNS0_7ContextIS2_EE.exit: ; preds = %_ZN4mold3elf9InputFileINS0_5ALPHAEE10get_stringERNS0_7ContextIS2_EERKNS0_7ElfShdrIS2_EE.exit.i call void @llvm.lifetime.end.p0(i64 400, ptr nonnull %ref.tmp.i) - %add.ptr.i38 = getelementptr inbounds nuw %"struct.mold::elf::ElfRel", ptr %add.ptr.i.i56, i64 %div.i - %cmp.i39101 = icmp ult i64 %x.0.copyload.i6.i.i, 24 + %add.ptr.i38 = getelementptr inbounds nuw i8, ptr %add.ptr.i.i56, i64 %x.0.copyload.i6.i.i + %cmp.i39101 = icmp eq i64 %x.0.copyload.i6.i.i, 0 br i1 %cmp.i39101, label %_ZNSt10_HashtableIPvS0_SaIS0_ENSt8__detail9_IdentityESt8equal_toIS0_ESt4hashIS0_ENS2_18_Mod_range_hashingENS2_20_Default_ranged_hashENS2_20_Prime_rehash_policyENS2_17_Hashtable_traitsILb0ELb1ELb1EEEE5clearEv.exit.i.i, label %for.body30 for.body30: ; preds = %_ZNK4mold3elf12InputSectionINS0_5ALPHAEE8get_relsERNS0_7ContextIS2_EE.exit, %for.inc @@ -19417,7 +19416,6 @@ if.then.i.i132: ; preds = %if.end.i89 _ZN4mold3elf9InputFileINS0_5ALPHAEE10get_stringERNS0_7ContextIS2_EERKNS0_7ElfShdrIS2_EE.exit.i: ; preds = %if.end.i89 call void @llvm.lifetime.end.p0(i64 400, ptr nonnull %ref.tmp.i.i) %rem.i = urem i64 %x.0.copyload.i6.i.i, 24 - %div.i = udiv i64 %x.0.copyload.i6.i.i, 24 %tobool.not.i125 = icmp eq i64 %rem.i, 0 br i1 %tobool.not.i125, label %_ZNK4mold3elf12InputSectionINS0_5ALPHAEE8get_relsERNS0_7ContextIS2_EE.exit, label %if.then.i126 @@ -19430,8 +19428,8 @@ if.then.i126: ; preds = %_ZN4mold3elf9InputF _ZNK4mold3elf12InputSectionINS0_5ALPHAEE8get_relsERNS0_7ContextIS2_EE.exit: ; preds = %_ZN4mold3elf9InputFileINS0_5ALPHAEE10get_stringERNS0_7ContextIS2_EERKNS0_7ElfShdrIS2_EE.exit.i call void @llvm.lifetime.end.p0(i64 400, ptr nonnull %ref.tmp.i121) - %add.ptr.i98 = getelementptr inbounds nuw %"struct.mold::elf::ElfRel", ptr %add.ptr.i.i123, i64 %div.i - %cmp.i99149 = icmp ult i64 %x.0.copyload.i6.i.i, 24 + %add.ptr.i98 = getelementptr inbounds nuw i8, ptr %add.ptr.i.i123, i64 %x.0.copyload.i6.i.i + %cmp.i99149 = icmp eq i64 %x.0.copyload.i6.i.i, 0 br i1 %cmp.i99149, label %for.inc66, label %for.body49 for.body49: ; preds = %_ZNK4mold3elf12InputSectionINS0_5ALPHAEE8get_relsERNS0_7ContextIS2_EE.exit, %for.body49 @@ -25516,7 +25514,7 @@ if.then.i.i: ; preds = %if.end.i52 _ZN4mold3elf9InputFileINS0_5ALPHAEE10get_stringERNS0_7ContextIS2_EERKNS0_7ElfShdrIS2_EE.exit.i: ; preds = %if.end.i52 call void @llvm.lifetime.end.p0(i64 400, ptr nonnull %ref.tmp.i.i) %rem.i = urem i64 %x.0.copyload.i6.i.i, 24 - %div.i = udiv i64 %x.0.copyload.i6.i.i, 24 + %div.i = udiv exact i64 %x.0.copyload.i6.i.i, 24 %tobool.not.i = icmp eq i64 %rem.i, 0 br i1 %tobool.not.i, label %_ZN4mold3elf9InputFileINS0_5ALPHAEE8get_dataINS0_6ElfRelIS2_EEEESt4spanIT_Lm18446744073709551615EERNS0_7ContextIS2_EERKNS0_7ElfShdrIS2_EE.exit, label %if.then.i266 @@ -25745,7 +25743,7 @@ if.then.i.i304: ; preds = %if.end.i66 _ZN4mold3elf9InputFileINS0_5ALPHAEE10get_stringERNS0_7ContextIS2_EERKNS0_7ElfShdrIS2_EE.exit.i295: ; preds = %if.end.i66 call void @llvm.lifetime.end.p0(i64 400, ptr nonnull %ref.tmp.i.i282) %rem.i296 = urem i64 %x.0.copyload.i6.i.i290, 24 - %div.i301 = udiv i64 %x.0.copyload.i6.i.i290, 24 + %div.i301 = udiv exact i64 %x.0.copyload.i6.i.i290, 24 %tobool.not.i297 = icmp eq i64 %rem.i296, 0 br i1 %tobool.not.i297, label %_ZN4mold3elf9InputFileINS0_5ALPHAEE8get_dataINS0_6ElfRelIS2_EEEESt4spanIT_Lm18446744073709551615EERNS0_7ContextIS2_EERKNS0_7ElfShdrIS2_EE.exit308, label %if.then.i298 @@ -50264,7 +50262,7 @@ if.then.i: ; preds = %entry _ZN4mold3elf9InputFileINS0_5ALPHAEE10get_stringERNS0_7ContextIS2_EERKNS0_7ElfShdrIS2_EE.exit: ; preds = %entry call void @llvm.lifetime.end.p0(i64 400, ptr nonnull %ref.tmp.i) %rem = urem i64 %x.0.copyload.i6.i, 24 - %div = udiv i64 %x.0.copyload.i6.i, 24 + %div = udiv exact i64 %x.0.copyload.i6.i, 24 %tobool.not = icmp eq i64 %rem, 0 br i1 %tobool.not, label %if.end, label %if.then diff --git a/bench/mold/optimized/passes.cc.SPARC64.ll b/bench/mold/optimized/passes.cc.SPARC64.ll index 383381aaa2a..78e14727f3f 100644 --- a/bench/mold/optimized/passes.cc.SPARC64.ll +++ b/bench/mold/optimized/passes.cc.SPARC64.ll @@ -185,9 +185,6 @@ target triple = "x86_64-unknown-linux-gnu" %"class.std::unordered_set.436" = type { %"class.std::_Hashtable.437" } %"class.std::_Hashtable.437" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr } %"struct.mold::elf::ElfShdr" = type { %"class.mold::BigEndian", %"class.mold::BigEndian", %"class.mold::BigEndian.317", %"class.mold::BigEndian.317", %"class.mold::BigEndian.317", %"class.mold::BigEndian.317", %"class.mold::BigEndian", %"class.mold::BigEndian", %"class.mold::BigEndian.317", %"class.mold::BigEndian.317" } -%"struct.mold::elf::ElfRel" = type { %"class.mold::BigEndian.317", %"class.mold::BigEndian", %"class.mold::BigEndian.458", i8, %"class.mold::BigEndian.459" } -%"class.mold::BigEndian.458" = type { [3 x i8] } -%"class.mold::BigEndian.459" = type { [8 x i8] } %"struct.std::__detail::_AllocNode.1181" = type { ptr } %"class.std::unique_ptr.468" = type { %"struct.std::__uniq_ptr_data.469" } %"struct.std::__uniq_ptr_data.469" = type { %"class.std::__uniq_ptr_impl.470" } @@ -227,6 +224,9 @@ target triple = "x86_64-unknown-linux-gnu" %"struct.std::_Vector_base>>, std::allocator>>>>::_Vector_impl" = type { %"struct.std::_Vector_base>>, std::allocator>>>>::_Vector_impl_data" } %"struct.std::_Vector_base>>, std::allocator>>>>::_Vector_impl_data" = type { ptr, ptr, ptr } %"class.__gnu_cxx::__normal_iterator.1231" = type { ptr } +%"struct.mold::elf::ElfRel" = type { %"class.mold::BigEndian.317", %"class.mold::BigEndian", %"class.mold::BigEndian.458", i8, %"class.mold::BigEndian.459" } +%"class.mold::BigEndian.458" = type { [3 x i8] } +%"class.mold::BigEndian.459" = type { [8 x i8] } %class.anon.547 = type { i8 } %class.anon.549 = type { ptr, ptr } %class.anon.550 = type { ptr } @@ -14894,7 +14894,6 @@ if.then.i.i: ; preds = %if.end.i _ZN4mold3elf9InputFileINS0_7SPARC64EE10get_stringERNS0_7ContextIS2_EERKNS0_7ElfShdrIS2_EE.exit.i: ; preds = %if.end.i call void @llvm.lifetime.end.p0(i64 400, ptr nonnull %ref.tmp.i.i) %rem.i = urem i64 %16, 24 - %div.i = udiv i64 %16, 24 %tobool.not.i56 = icmp eq i64 %rem.i, 0 br i1 %tobool.not.i56, label %_ZNK4mold3elf12InputSectionINS0_7SPARC64EE8get_relsERNS0_7ContextIS2_EE.exit, label %if.then.i57 @@ -14907,8 +14906,8 @@ if.then.i57: ; preds = %_ZN4mold3elf9InputF _ZNK4mold3elf12InputSectionINS0_7SPARC64EE8get_relsERNS0_7ContextIS2_EE.exit: ; preds = %_ZN4mold3elf9InputFileINS0_7SPARC64EE10get_stringERNS0_7ContextIS2_EERKNS0_7ElfShdrIS2_EE.exit.i call void @llvm.lifetime.end.p0(i64 400, ptr nonnull %ref.tmp.i) - %add.ptr.i38 = getelementptr inbounds nuw %"struct.mold::elf::ElfRel", ptr %add.ptr.i.i55, i64 %div.i - %cmp.i39100 = icmp ult i64 %16, 24 + %add.ptr.i38 = getelementptr inbounds nuw i8, ptr %add.ptr.i.i55, i64 %16 + %cmp.i39100 = icmp eq i64 %x.0.copyload.i6.i.i, 0 br i1 %cmp.i39100, label %_ZNSt10_HashtableIPvS0_SaIS0_ENSt8__detail9_IdentityESt8equal_toIS0_ESt4hashIS0_ENS2_18_Mod_range_hashingENS2_20_Default_ranged_hashENS2_20_Prime_rehash_policyENS2_17_Hashtable_traitsILb0ELb1ELb1EEEE5clearEv.exit.i.i, label %for.body30 for.body30: ; preds = %_ZNK4mold3elf12InputSectionINS0_7SPARC64EE8get_relsERNS0_7ContextIS2_EE.exit, %for.inc @@ -19311,7 +19310,6 @@ if.then.i.i131: ; preds = %if.end.i88 _ZN4mold3elf9InputFileINS0_7SPARC64EE10get_stringERNS0_7ContextIS2_EERKNS0_7ElfShdrIS2_EE.exit.i: ; preds = %if.end.i88 call void @llvm.lifetime.end.p0(i64 400, ptr nonnull %ref.tmp.i.i) %rem.i = urem i64 %55, 24 - %div.i = udiv i64 %55, 24 %tobool.not.i124 = icmp eq i64 %rem.i, 0 br i1 %tobool.not.i124, label %_ZNK4mold3elf12InputSectionINS0_7SPARC64EE8get_relsERNS0_7ContextIS2_EE.exit, label %if.then.i125 @@ -19324,8 +19322,8 @@ if.then.i125: ; preds = %_ZN4mold3elf9InputF _ZNK4mold3elf12InputSectionINS0_7SPARC64EE8get_relsERNS0_7ContextIS2_EE.exit: ; preds = %_ZN4mold3elf9InputFileINS0_7SPARC64EE10get_stringERNS0_7ContextIS2_EERKNS0_7ElfShdrIS2_EE.exit.i call void @llvm.lifetime.end.p0(i64 400, ptr nonnull %ref.tmp.i120) - %add.ptr.i97 = getelementptr inbounds nuw %"struct.mold::elf::ElfRel", ptr %add.ptr.i.i122, i64 %div.i - %cmp.i98148 = icmp ult i64 %55, 24 + %add.ptr.i97 = getelementptr inbounds nuw i8, ptr %add.ptr.i.i122, i64 %55 + %cmp.i98148 = icmp eq i64 %x.0.copyload.i6.i.i, 0 br i1 %cmp.i98148, label %for.inc66, label %for.body49 for.body49: ; preds = %_ZNK4mold3elf12InputSectionINS0_7SPARC64EE8get_relsERNS0_7ContextIS2_EE.exit, %for.body49 @@ -25481,7 +25479,7 @@ if.then.i.i: ; preds = %if.end.i52 _ZN4mold3elf9InputFileINS0_7SPARC64EE10get_stringERNS0_7ContextIS2_EERKNS0_7ElfShdrIS2_EE.exit.i: ; preds = %if.end.i52 call void @llvm.lifetime.end.p0(i64 400, ptr nonnull %ref.tmp.i.i) %rem.i = urem i64 %39, 24 - %div.i = udiv i64 %39, 24 + %div.i = udiv exact i64 %39, 24 %tobool.not.i = icmp eq i64 %rem.i, 0 br i1 %tobool.not.i, label %_ZN4mold3elf9InputFileINS0_7SPARC64EE8get_dataINS0_6ElfRelIS2_EEEESt4spanIT_Lm18446744073709551615EERNS0_7ContextIS2_EERKNS0_7ElfShdrIS2_EE.exit, label %if.then.i266 @@ -25712,7 +25710,7 @@ if.then.i.i304: ; preds = %if.end.i66 _ZN4mold3elf9InputFileINS0_7SPARC64EE10get_stringERNS0_7ContextIS2_EERKNS0_7ElfShdrIS2_EE.exit.i295: ; preds = %if.end.i66 call void @llvm.lifetime.end.p0(i64 400, ptr nonnull %ref.tmp.i.i282) %rem.i296 = urem i64 %75, 24 - %div.i301 = udiv i64 %75, 24 + %div.i301 = udiv exact i64 %75, 24 %tobool.not.i297 = icmp eq i64 %rem.i296, 0 br i1 %tobool.not.i297, label %_ZN4mold3elf9InputFileINS0_7SPARC64EE8get_dataINS0_6ElfRelIS2_EEEESt4spanIT_Lm18446744073709551615EERNS0_7ContextIS2_EERKNS0_7ElfShdrIS2_EE.exit308, label %if.then.i298 @@ -50317,7 +50315,7 @@ if.then.i: ; preds = %entry _ZN4mold3elf9InputFileINS0_7SPARC64EE10get_stringERNS0_7ContextIS2_EERKNS0_7ElfShdrIS2_EE.exit: ; preds = %entry call void @llvm.lifetime.end.p0(i64 400, ptr nonnull %ref.tmp.i) %rem = urem i64 %3, 24 - %div = udiv i64 %3, 24 + %div = udiv exact i64 %3, 24 %tobool.not = icmp eq i64 %rem, 0 br i1 %tobool.not, label %if.end, label %if.then diff --git a/bench/ncnn/optimized/deconvolution_x86_avx.ll b/bench/ncnn/optimized/deconvolution_x86_avx.ll index a9d55ea3287..55cc905439a 100644 --- a/bench/ncnn/optimized/deconvolution_x86_avx.ll +++ b/bench/ncnn/optimized/deconvolution_x86_avx.ll @@ -2824,7 +2824,7 @@ define hidden noundef i32 @_ZNK4ncnn21Deconvolution_x86_avx7forwardERKNS_3MatERS 792: ; preds = %788 %793 = srem i32 %790, %571 - %794 = sdiv i32 %790, %571 + %794 = sdiv exact i32 %790, %571 %.not1363.us.us.us.us.i = icmp eq i32 %793, 0 %.not1364.us.us.us.us.i = icmp slt i32 %794, %588 %or.cond1602 = select i1 %.not1363.us.us.us.us.i, i1 %.not1364.us.us.us.us.i, i1 false @@ -2843,7 +2843,7 @@ define hidden noundef i32 @_ZNK4ncnn21Deconvolution_x86_avx7forwardERKNS_3MatERS 799: ; preds = %795 %800 = srem i32 %797, %570 - %801 = sdiv i32 %797, %570 + %801 = sdiv exact i32 %797, %570 %.not1365.us.us.us.us.i = icmp eq i32 %800, 0 %.not1366.us.us.us.us.i = icmp slt i32 %801, %587 %or.cond1603 = select i1 %.not1365.us.us.us.us.i, i1 %.not1366.us.us.us.us.i, i1 false @@ -3293,7 +3293,7 @@ _ZN4ncnnL23deconvolution_pack8_avxERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6OptionE.e 1110: ; preds = %1106 %1111 = srem i32 %1108, %888 - %1112 = sdiv i32 %1108, %888 + %1112 = sdiv exact i32 %1108, %888 %.not1267.us.us.us.us.i = icmp eq i32 %1111, 0 %.not1268.us.us.us.us.i = icmp slt i32 %1112, %906 %or.cond1604 = select i1 %.not1267.us.us.us.us.i, i1 %.not1268.us.us.us.us.i, i1 false @@ -3312,7 +3312,7 @@ _ZN4ncnnL23deconvolution_pack8_avxERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6OptionE.e 1117: ; preds = %1113 %1118 = srem i32 %1115, %887 - %1119 = sdiv i32 %1115, %887 + %1119 = sdiv exact i32 %1115, %887 %.not1269.us.us.us.us.i = icmp eq i32 %1118, 0 %.not1270.us.us.us.us.i = icmp slt i32 %1119, %905 %or.cond1605 = select i1 %.not1269.us.us.us.us.i, i1 %.not1270.us.us.us.us.i, i1 false @@ -3733,7 +3733,7 @@ _ZN4ncnnL26deconvolution_pack4to8_avxERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6Option 1401: ; preds = %1397 %1402 = srem i32 %1399, %1174 - %1403 = sdiv i32 %1399, %1174 + %1403 = sdiv exact i32 %1399, %1174 %.not1097.us.us.us.us.i = icmp eq i32 %1402, 0 %.not1098.us.us.us.us.i = icmp slt i32 %1403, %1192 %or.cond1606 = select i1 %.not1097.us.us.us.us.i, i1 %.not1098.us.us.us.us.i, i1 false @@ -3752,7 +3752,7 @@ _ZN4ncnnL26deconvolution_pack4to8_avxERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6Option 1408: ; preds = %1404 %1409 = srem i32 %1406, %1173 - %1410 = sdiv i32 %1406, %1173 + %1410 = sdiv exact i32 %1406, %1173 %.not1099.us.us.us.us.i = icmp eq i32 %1409, 0 %.not1100.us.us.us.us.i = icmp slt i32 %1410, %1191 %or.cond1607 = select i1 %.not1099.us.us.us.us.i, i1 %.not1100.us.us.us.us.i, i1 false @@ -4202,7 +4202,7 @@ _ZN4ncnnL26deconvolution_pack8to4_avxERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6Option 1719: ; preds = %1715 %1720 = srem i32 %1717, %1497 - %1721 = sdiv i32 %1717, %1497 + %1721 = sdiv exact i32 %1717, %1497 %.not1203.us.us.us.us.i = icmp eq i32 %1720, 0 %.not1204.us.us.us.us.i = icmp slt i32 %1721, %1515 %or.cond1608 = select i1 %.not1203.us.us.us.us.i, i1 %.not1204.us.us.us.us.i, i1 false @@ -4228,7 +4228,7 @@ _ZN4ncnnL26deconvolution_pack8to4_avxERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6Option 1730: ; preds = %1726 %1731 = srem i32 %1728, %1496 - %1732 = sdiv i32 %1728, %1496 + %1732 = sdiv exact i32 %1728, %1496 %.not1205.us.us.us.us.i = icmp eq i32 %1731, 0 %.not1206.us.us.us.us.i = icmp slt i32 %1732, %1514 %or.cond1609 = select i1 %.not1205.us.us.us.us.i, i1 %.not1206.us.us.us.us.i, i1 false @@ -4503,7 +4503,7 @@ _ZN4ncnnL26deconvolution_pack1to8_avxERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6Option 1867: ; preds = %1863 %1868 = srem i32 %1865, %1758 - %1869 = sdiv i32 %1865, %1758 + %1869 = sdiv exact i32 %1865, %1758 %.not302.us.us.us.us.i = icmp eq i32 %1868, 0 %.not303.us.us.us.us.i = icmp slt i32 %1869, %1776 %or.cond1610 = select i1 %.not302.us.us.us.us.i, i1 %.not303.us.us.us.us.i, i1 false @@ -4522,7 +4522,7 @@ _ZN4ncnnL26deconvolution_pack1to8_avxERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6Option 1874: ; preds = %1870 %1875 = srem i32 %1872, %1757 - %1876 = sdiv i32 %1872, %1757 + %1876 = sdiv exact i32 %1872, %1757 %.not304.us.us.us.us.i = icmp eq i32 %1875, 0 %.not305.us.us.us.us.i = icmp slt i32 %1876, %1775 %or.cond1611 = select i1 %.not304.us.us.us.us.i, i1 %.not305.us.us.us.us.i, i1 false @@ -4916,7 +4916,7 @@ _ZN4ncnnL26deconvolution_pack8to1_avxERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6Option 2131: ; preds = %2127 %2132 = srem i32 %2129, %1904 - %2133 = sdiv i32 %2129, %1904 + %2133 = sdiv exact i32 %2129, %1904 %.not1017.us.us.us.us.i = icmp eq i32 %2132, 0 %.not1018.us.us.us.us.i = icmp slt i32 %2133, %1922 %or.cond1612 = select i1 %.not1017.us.us.us.us.i, i1 %.not1018.us.us.us.us.i, i1 false @@ -4935,7 +4935,7 @@ _ZN4ncnnL26deconvolution_pack8to1_avxERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6Option 2138: ; preds = %2134 %2139 = srem i32 %2136, %1903 - %2140 = sdiv i32 %2136, %1903 + %2140 = sdiv exact i32 %2136, %1903 %.not1019.us.us.us.us.i = icmp eq i32 %2139, 0 %.not1020.us.us.us.us.i = icmp slt i32 %2140, %1921 %or.cond1613 = select i1 %.not1019.us.us.us.us.i, i1 %.not1020.us.us.us.us.i, i1 false @@ -5355,7 +5355,7 @@ _ZN4ncnnL23deconvolution_pack4_sseERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6OptionE.e 2421: ; preds = %2417 %2422 = srem i32 %2419, %2194 - %2423 = sdiv i32 %2419, %2194 + %2423 = sdiv exact i32 %2419, %2194 %.not957.us.us.us.us.i = icmp eq i32 %2422, 0 %.not958.us.us.us.us.i = icmp slt i32 %2423, %2212 %or.cond1614 = select i1 %.not957.us.us.us.us.i, i1 %.not958.us.us.us.us.i, i1 false @@ -5381,7 +5381,7 @@ _ZN4ncnnL23deconvolution_pack4_sseERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6OptionE.e 2432: ; preds = %2428 %2433 = srem i32 %2430, %2193 - %2434 = sdiv i32 %2430, %2193 + %2434 = sdiv exact i32 %2430, %2193 %.not959.us.us.us.us.i = icmp eq i32 %2433, 0 %.not960.us.us.us.us.i = icmp slt i32 %2434, %2211 %or.cond1615 = select i1 %.not959.us.us.us.us.i, i1 %.not960.us.us.us.us.i, i1 false @@ -5652,7 +5652,7 @@ _ZN4ncnnL26deconvolution_pack1to4_sseERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6Option 2565: ; preds = %2561 %2566 = srem i32 %2563, %2459 - %2567 = sdiv i32 %2563, %2459 + %2567 = sdiv exact i32 %2563, %2459 %.not296.us.us.us.us.i = icmp eq i32 %2566, 0 %.not297.us.us.us.us.i = icmp slt i32 %2567, %2477 %or.cond1616 = select i1 %.not296.us.us.us.us.i, i1 %.not297.us.us.us.us.i, i1 false @@ -5671,7 +5671,7 @@ _ZN4ncnnL26deconvolution_pack1to4_sseERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6Option 2572: ; preds = %2568 %2573 = srem i32 %2570, %2458 - %2574 = sdiv i32 %2570, %2458 + %2574 = sdiv exact i32 %2570, %2458 %.not298.us.us.us.us.i = icmp eq i32 %2573, 0 %.not299.us.us.us.us.i = icmp slt i32 %2574, %2476 %or.cond1617 = select i1 %.not298.us.us.us.us.i, i1 %.not299.us.us.us.us.i, i1 false @@ -5934,7 +5934,7 @@ _ZN4ncnnL26deconvolution_pack4to1_sseERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6Option 2708: ; preds = %2703 %2709 = srem i32 %2706, %2692 - %2710 = sdiv i32 %2706, %2692 + %2710 = sdiv exact i32 %2706, %2692 %.not830.us.us.us.us = icmp eq i32 %2709, 0 %.not831.us.us.us.us = icmp slt i32 %2710, %2609 %or.cond1618 = select i1 %.not830.us.us.us.us, i1 %.not831.us.us.us.us, i1 false @@ -5959,7 +5959,7 @@ _ZN4ncnnL26deconvolution_pack4to1_sseERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6Option 2721: ; preds = %2716 %2722 = srem i32 %2719, %2699 - %2723 = sdiv i32 %2719, %2699 + %2723 = sdiv exact i32 %2719, %2699 %.not832.us.us.us.us = icmp eq i32 %2722, 0 %.not833.us.us.us.us = icmp slt i32 %2723, %2608 %or.cond1619 = select i1 %.not832.us.us.us.us, i1 %.not833.us.us.us.us, i1 false diff --git a/bench/ncnn/optimized/deconvolution_x86_avx512.ll b/bench/ncnn/optimized/deconvolution_x86_avx512.ll index 8925b580ba2..d155d0da21a 100644 --- a/bench/ncnn/optimized/deconvolution_x86_avx512.ll +++ b/bench/ncnn/optimized/deconvolution_x86_avx512.ll @@ -3055,7 +3055,7 @@ define hidden noundef i32 @_ZNK4ncnn24Deconvolution_x86_avx5127forwardERKNS_3Mat 895: ; preds = %891 %896 = srem i32 %893, %668 - %897 = sdiv i32 %893, %668 + %897 = sdiv exact i32 %893, %668 %.not1348.us.us.us.us.i = icmp eq i32 %896, 0 %.not1349.us.us.us.us.i = icmp slt i32 %897, %717 %or.cond2323 = select i1 %.not1348.us.us.us.us.i, i1 %.not1349.us.us.us.us.i, i1 false @@ -3074,7 +3074,7 @@ define hidden noundef i32 @_ZNK4ncnn24Deconvolution_x86_avx5127forwardERKNS_3Mat 902: ; preds = %898 %903 = srem i32 %900, %667 - %904 = sdiv i32 %900, %667 + %904 = sdiv exact i32 %900, %667 %.not1350.us.us.us.us.i = icmp eq i32 %903, 0 %.not1351.us.us.us.us.i = icmp slt i32 %904, %716 %or.cond2324 = select i1 %.not1350.us.us.us.us.i, i1 %.not1351.us.us.us.us.i, i1 false @@ -3573,7 +3573,7 @@ _ZN4ncnnL27deconvolution_pack16_avx512ERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6Optio 1267: ; preds = %1263 %1268 = srem i32 %1265, %1039 - %1269 = sdiv i32 %1265, %1039 + %1269 = sdiv exact i32 %1265, %1039 %.not1132.us.us.us.us.i = icmp eq i32 %1268, 0 %.not1133.us.us.us.us.i = icmp slt i32 %1269, %1089 %or.cond2325 = select i1 %.not1132.us.us.us.us.i, i1 %.not1133.us.us.us.us.i, i1 false @@ -3592,7 +3592,7 @@ _ZN4ncnnL27deconvolution_pack16_avx512ERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6Optio 1274: ; preds = %1270 %1275 = srem i32 %1272, %1038 - %1276 = sdiv i32 %1272, %1038 + %1276 = sdiv exact i32 %1272, %1038 %.not1134.us.us.us.us.i = icmp eq i32 %1275, 0 %.not1135.us.us.us.us.i = icmp slt i32 %1276, %1088 %or.cond2326 = select i1 %.not1134.us.us.us.us.i, i1 %.not1135.us.us.us.us.i, i1 false @@ -4008,7 +4008,7 @@ _ZN4ncnnL30deconvolution_pack8to16_avx512ERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6Op 1556: ; preds = %1552 %1557 = srem i32 %1554, %1355 - %1558 = sdiv i32 %1554, %1355 + %1558 = sdiv exact i32 %1554, %1355 %.not1355.us.us.us.us.i = icmp eq i32 %1557, 0 %.not1356.us.us.us.us.i = icmp slt i32 %1558, %1373 %or.cond2327 = select i1 %.not1355.us.us.us.us.i, i1 %.not1356.us.us.us.us.i, i1 false @@ -4027,7 +4027,7 @@ _ZN4ncnnL30deconvolution_pack8to16_avx512ERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6Op 1563: ; preds = %1559 %1564 = srem i32 %1561, %1354 - %1565 = sdiv i32 %1561, %1354 + %1565 = sdiv exact i32 %1561, %1354 %.not1357.us.us.us.us.i = icmp eq i32 %1564, 0 %.not1358.us.us.us.us.i = icmp slt i32 %1565, %1372 %or.cond2328 = select i1 %.not1357.us.us.us.us.i, i1 %.not1358.us.us.us.us.i, i1 false @@ -4526,7 +4526,7 @@ _ZN4ncnnL30deconvolution_pack16to8_avx512ERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6Op 1928: ; preds = %1924 %1929 = srem i32 %1926, %1700 - %1930 = sdiv i32 %1926, %1700 + %1930 = sdiv exact i32 %1926, %1700 %.not1024.us.us.us.us.i = icmp eq i32 %1929, 0 %.not1025.us.us.us.us.i = icmp slt i32 %1930, %1750 %or.cond2329 = select i1 %.not1024.us.us.us.us.i, i1 %.not1025.us.us.us.us.i, i1 false @@ -4545,7 +4545,7 @@ _ZN4ncnnL30deconvolution_pack16to8_avx512ERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6Op 1935: ; preds = %1931 %1936 = srem i32 %1933, %1699 - %1937 = sdiv i32 %1933, %1699 + %1937 = sdiv exact i32 %1933, %1699 %.not1026.us.us.us.us.i = icmp eq i32 %1936, 0 %.not1027.us.us.us.us.i = icmp slt i32 %1937, %1749 %or.cond2330 = select i1 %.not1026.us.us.us.us.i, i1 %.not1027.us.us.us.us.i, i1 false @@ -4940,7 +4940,7 @@ _ZN4ncnnL30deconvolution_pack4to16_avx512ERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6Op 2196: ; preds = %2192 %2197 = srem i32 %2194, %1988 - %2198 = sdiv i32 %2194, %1988 + %2198 = sdiv exact i32 %2194, %1988 %.not1158.us.us.us.us.i = icmp eq i32 %2197, 0 %.not1159.us.us.us.us.i = icmp slt i32 %2198, %2006 %or.cond2331 = select i1 %.not1158.us.us.us.us.i, i1 %.not1159.us.us.us.us.i, i1 false @@ -4959,7 +4959,7 @@ _ZN4ncnnL30deconvolution_pack4to16_avx512ERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6Op 2203: ; preds = %2199 %2204 = srem i32 %2201, %1987 - %2205 = sdiv i32 %2201, %1987 + %2205 = sdiv exact i32 %2201, %1987 %.not1160.us.us.us.us.i = icmp eq i32 %2204, 0 %.not1161.us.us.us.us.i = icmp slt i32 %2205, %2005 %or.cond2332 = select i1 %.not1160.us.us.us.us.i, i1 %.not1161.us.us.us.us.i, i1 false @@ -5458,7 +5458,7 @@ _ZN4ncnnL30deconvolution_pack16to4_avx512ERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6Op 2568: ; preds = %2564 %2569 = srem i32 %2566, %2340 - %2570 = sdiv i32 %2566, %2340 + %2570 = sdiv exact i32 %2566, %2340 %.not944.us.us.us.us.i = icmp eq i32 %2569, 0 %.not945.us.us.us.us.i = icmp slt i32 %2570, %2390 %or.cond2333 = select i1 %.not944.us.us.us.us.i, i1 %.not945.us.us.us.us.i, i1 false @@ -5484,7 +5484,7 @@ _ZN4ncnnL30deconvolution_pack16to4_avx512ERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6Op 2579: ; preds = %2575 %2580 = srem i32 %2577, %2339 - %2581 = sdiv i32 %2577, %2339 + %2581 = sdiv exact i32 %2577, %2339 %.not946.us.us.us.us.i = icmp eq i32 %2580, 0 %.not947.us.us.us.us.i = icmp slt i32 %2581, %2389 %or.cond2334 = select i1 %.not946.us.us.us.us.i, i1 %.not947.us.us.us.us.i, i1 false @@ -5761,7 +5761,7 @@ _ZN4ncnnL30deconvolution_pack1to16_avx512ERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6Op 2718: ; preds = %2714 %2719 = srem i32 %2716, %2606 - %2720 = sdiv i32 %2716, %2606 + %2720 = sdiv exact i32 %2716, %2606 %.not305.us.us.us.us.i = icmp eq i32 %2719, 0 %.not306.us.us.us.us.i = icmp slt i32 %2720, %2624 %or.cond2335 = select i1 %.not305.us.us.us.us.i, i1 %.not306.us.us.us.us.i, i1 false @@ -5780,7 +5780,7 @@ _ZN4ncnnL30deconvolution_pack1to16_avx512ERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6Op 2725: ; preds = %2721 %2726 = srem i32 %2723, %2605 - %2727 = sdiv i32 %2723, %2605 + %2727 = sdiv exact i32 %2723, %2605 %.not307.us.us.us.us.i = icmp eq i32 %2726, 0 %.not308.us.us.us.us.i = icmp slt i32 %2727, %2623 %or.cond2336 = select i1 %.not307.us.us.us.us.i, i1 %.not308.us.us.us.us.i, i1 false @@ -6144,7 +6144,7 @@ _ZN4ncnnL30deconvolution_pack16to1_avx512ERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6Op 2955: ; preds = %2951 %2956 = srem i32 %2953, %2754 - %2957 = sdiv i32 %2953, %2754 + %2957 = sdiv exact i32 %2953, %2754 %.not1219.us.us.us.us.i = icmp eq i32 %2956, 0 %.not1220.us.us.us.us.i = icmp slt i32 %2957, %2772 %or.cond2337 = select i1 %.not1219.us.us.us.us.i, i1 %.not1220.us.us.us.us.i, i1 false @@ -6163,7 +6163,7 @@ _ZN4ncnnL30deconvolution_pack16to1_avx512ERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6Op 2962: ; preds = %2958 %2963 = srem i32 %2960, %2753 - %2964 = sdiv i32 %2960, %2753 + %2964 = sdiv exact i32 %2960, %2753 %.not1221.us.us.us.us.i = icmp eq i32 %2963, 0 %.not1222.us.us.us.us.i = icmp slt i32 %2964, %2771 %or.cond2338 = select i1 %.not1221.us.us.us.us.i, i1 %.not1222.us.us.us.us.i, i1 false @@ -6578,7 +6578,7 @@ _ZN4ncnnL23deconvolution_pack8_avxERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6OptionE.e 3243: ; preds = %3239 %3244 = srem i32 %3241, %3042 - %3245 = sdiv i32 %3241, %3042 + %3245 = sdiv exact i32 %3241, %3042 %.not1127.us.us.us.us.i = icmp eq i32 %3244, 0 %.not1128.us.us.us.us.i = icmp slt i32 %3245, %3060 %or.cond2339 = select i1 %.not1127.us.us.us.us.i, i1 %.not1128.us.us.us.us.i, i1 false @@ -6597,7 +6597,7 @@ _ZN4ncnnL23deconvolution_pack8_avxERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6OptionE.e 3250: ; preds = %3246 %3251 = srem i32 %3248, %3041 - %3252 = sdiv i32 %3248, %3041 + %3252 = sdiv exact i32 %3248, %3041 %.not1129.us.us.us.us.i = icmp eq i32 %3251, 0 %.not1130.us.us.us.us.i = icmp slt i32 %3252, %3059 %or.cond2340 = select i1 %.not1129.us.us.us.us.i, i1 %.not1130.us.us.us.us.i, i1 false @@ -6991,7 +6991,7 @@ _ZN4ncnnL26deconvolution_pack4to8_avxERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6Option 3510: ; preds = %3506 %3511 = srem i32 %3508, %3302 - %3512 = sdiv i32 %3508, %3302 + %3512 = sdiv exact i32 %3508, %3302 %.not1054.us.us.us.us.i = icmp eq i32 %3511, 0 %.not1055.us.us.us.us.i = icmp slt i32 %3512, %3320 %or.cond2341 = select i1 %.not1054.us.us.us.us.i, i1 %.not1055.us.us.us.us.i, i1 false @@ -7010,7 +7010,7 @@ _ZN4ncnnL26deconvolution_pack4to8_avxERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6Option 3517: ; preds = %3513 %3518 = srem i32 %3515, %3301 - %3519 = sdiv i32 %3515, %3301 + %3519 = sdiv exact i32 %3515, %3301 %.not1056.us.us.us.us.i = icmp eq i32 %3518, 0 %.not1057.us.us.us.us.i = icmp slt i32 %3519, %3319 %or.cond2342 = select i1 %.not1056.us.us.us.us.i, i1 %.not1057.us.us.us.us.i, i1 false @@ -7425,7 +7425,7 @@ _ZN4ncnnL26deconvolution_pack8to4_avxERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6Option 3798: ; preds = %3794 %3799 = srem i32 %3796, %3597 - %3800 = sdiv i32 %3796, %3597 + %3800 = sdiv exact i32 %3796, %3597 %.not1066.us.us.us.us.i = icmp eq i32 %3799, 0 %.not1067.us.us.us.us.i = icmp slt i32 %3800, %3615 %or.cond2343 = select i1 %.not1066.us.us.us.us.i, i1 %.not1067.us.us.us.us.i, i1 false @@ -7451,7 +7451,7 @@ _ZN4ncnnL26deconvolution_pack8to4_avxERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6Option 3809: ; preds = %3805 %3810 = srem i32 %3807, %3596 - %3811 = sdiv i32 %3807, %3596 + %3811 = sdiv exact i32 %3807, %3596 %.not1068.us.us.us.us.i = icmp eq i32 %3810, 0 %.not1069.us.us.us.us.i = icmp slt i32 %3811, %3614 %or.cond2344 = select i1 %.not1068.us.us.us.us.i, i1 %.not1069.us.us.us.us.i, i1 false @@ -7724,7 +7724,7 @@ _ZN4ncnnL26deconvolution_pack1to8_avxERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6Option 3944: ; preds = %3940 %3945 = srem i32 %3942, %3835 - %3946 = sdiv i32 %3942, %3835 + %3946 = sdiv exact i32 %3942, %3835 %.not301.us.us.us.us.i = icmp eq i32 %3945, 0 %.not302.us.us.us.us.i = icmp slt i32 %3946, %3853 %or.cond2345 = select i1 %.not301.us.us.us.us.i, i1 %.not302.us.us.us.us.i, i1 false @@ -7743,7 +7743,7 @@ _ZN4ncnnL26deconvolution_pack1to8_avxERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6Option 3951: ; preds = %3947 %3952 = srem i32 %3949, %3834 - %3953 = sdiv i32 %3949, %3834 + %3953 = sdiv exact i32 %3949, %3834 %.not303.us.us.us.us.i = icmp eq i32 %3952, 0 %.not304.us.us.us.us.i = icmp slt i32 %3953, %3852 %or.cond2346 = select i1 %.not303.us.us.us.us.i, i1 %.not304.us.us.us.us.i, i1 false @@ -8114,7 +8114,7 @@ _ZN4ncnnL26deconvolution_pack8to1_avxERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6Option 4188: ; preds = %4184 %4189 = srem i32 %4186, %3980 - %4190 = sdiv i32 %4186, %3980 + %4190 = sdiv exact i32 %4186, %3980 %.not978.us.us.us.us.i = icmp eq i32 %4189, 0 %.not979.us.us.us.us.i = icmp slt i32 %4190, %3998 %or.cond2347 = select i1 %.not978.us.us.us.us.i, i1 %.not979.us.us.us.us.i, i1 false @@ -8133,7 +8133,7 @@ _ZN4ncnnL26deconvolution_pack8to1_avxERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6Option 4195: ; preds = %4191 %4196 = srem i32 %4193, %3979 - %4197 = sdiv i32 %4193, %3979 + %4197 = sdiv exact i32 %4193, %3979 %.not980.us.us.us.us.i = icmp eq i32 %4196, 0 %.not981.us.us.us.us.i = icmp slt i32 %4197, %3997 %or.cond2348 = select i1 %.not980.us.us.us.us.i, i1 %.not981.us.us.us.us.i, i1 false @@ -8527,7 +8527,7 @@ _ZN4ncnnL23deconvolution_pack4_sseERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6OptionE.e 4455: ; preds = %4451 %4456 = srem i32 %4453, %4247 - %4457 = sdiv i32 %4453, %4247 + %4457 = sdiv exact i32 %4453, %4247 %.not921.us.us.us.us.i = icmp eq i32 %4456, 0 %.not922.us.us.us.us.i = icmp slt i32 %4457, %4265 %or.cond2349 = select i1 %.not921.us.us.us.us.i, i1 %.not922.us.us.us.us.i, i1 false @@ -8553,7 +8553,7 @@ _ZN4ncnnL23deconvolution_pack4_sseERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6OptionE.e 4466: ; preds = %4462 %4467 = srem i32 %4464, %4246 - %4468 = sdiv i32 %4464, %4246 + %4468 = sdiv exact i32 %4464, %4246 %.not923.us.us.us.us.i = icmp eq i32 %4467, 0 %.not924.us.us.us.us.i = icmp slt i32 %4468, %4264 %or.cond2350 = select i1 %.not923.us.us.us.us.i, i1 %.not924.us.us.us.us.i, i1 false @@ -8823,7 +8823,7 @@ _ZN4ncnnL26deconvolution_pack1to4_sseERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6Option 4598: ; preds = %4594 %4599 = srem i32 %4596, %4492 - %4600 = sdiv i32 %4596, %4492 + %4600 = sdiv exact i32 %4596, %4492 %.not295.us.us.us.us.i = icmp eq i32 %4599, 0 %.not296.us.us.us.us.i = icmp slt i32 %4600, %4510 %or.cond2351 = select i1 %.not295.us.us.us.us.i, i1 %.not296.us.us.us.us.i, i1 false @@ -8842,7 +8842,7 @@ _ZN4ncnnL26deconvolution_pack1to4_sseERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6Option 4605: ; preds = %4601 %4606 = srem i32 %4603, %4491 - %4607 = sdiv i32 %4603, %4491 + %4607 = sdiv exact i32 %4603, %4491 %.not297.us.us.us.us.i = icmp eq i32 %4606, 0 %.not298.us.us.us.us.i = icmp slt i32 %4607, %4509 %or.cond2352 = select i1 %.not297.us.us.us.us.i, i1 %.not298.us.us.us.us.i, i1 false @@ -9104,7 +9104,7 @@ _ZN4ncnnL26deconvolution_pack4to1_sseERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6Option 4740: ; preds = %4735 %4741 = srem i32 %4738, %4724 - %4742 = sdiv i32 %4738, %4724 + %4742 = sdiv exact i32 %4738, %4724 %.not1012.us.us.us.us = icmp eq i32 %4741, 0 %.not1013.us.us.us.us = icmp slt i32 %4742, %4641 %or.cond2353 = select i1 %.not1012.us.us.us.us, i1 %.not1013.us.us.us.us, i1 false @@ -9129,7 +9129,7 @@ _ZN4ncnnL26deconvolution_pack4to1_sseERKNS_3MatERS0_S2_S2_iiiiiiiS2_RKNS_6Option 4753: ; preds = %4748 %4754 = srem i32 %4751, %4731 - %4755 = sdiv i32 %4751, %4731 + %4755 = sdiv exact i32 %4751, %4731 %.not1014.us.us.us.us = icmp eq i32 %4754, 0 %.not1015.us.us.us.us = icmp slt i32 %4755, %4640 %or.cond2354 = select i1 %.not1014.us.us.us.us, i1 %.not1015.us.us.us.us, i1 false diff --git a/bench/ncnn/optimized/deconvolutiondepthwise_x86_avx.ll b/bench/ncnn/optimized/deconvolutiondepthwise_x86_avx.ll index 72ba424b1a1..6f4451ff03f 100644 --- a/bench/ncnn/optimized/deconvolutiondepthwise_x86_avx.ll +++ b/bench/ncnn/optimized/deconvolutiondepthwise_x86_avx.ll @@ -2384,7 +2384,7 @@ define hidden noundef i32 @_ZNK4ncnn30DeconvolutionDepthWise_x86_avx7forwardERKN 388: ; preds = %.lr.ph2736.split.us.us.us %389 = srem i32 %386, %376 - %390 = sdiv i32 %386, %376 + %390 = sdiv exact i32 %386, %376 %.not2599.us.us.us = icmp eq i32 %389, 0 %.not2600.us.us.us = icmp slt i32 %390, %15 %or.cond2919 = select i1 %.not2599.us.us.us, i1 %.not2600.us.us.us, i1 false @@ -2401,7 +2401,7 @@ define hidden noundef i32 @_ZNK4ncnn30DeconvolutionDepthWise_x86_avx7forwardERKN 396: ; preds = %391 %397 = srem i32 %394, %380 - %398 = sdiv i32 %394, %380 + %398 = sdiv exact i32 %394, %380 %.not2601.us.us.us = icmp eq i32 %397, 0 %.not2602.us.us.us = icmp slt i32 %398, %13 %or.cond2920 = select i1 %.not2601.us.us.us, i1 %.not2602.us.us.us, i1 false @@ -2758,7 +2758,7 @@ define hidden noundef i32 @_ZNK4ncnn30DeconvolutionDepthWise_x86_avx7forwardERKN 646: ; preds = %.lr.ph2766.split.us.us.us %647 = srem i32 %644, %634 - %648 = sdiv i32 %644, %634 + %648 = sdiv exact i32 %644, %634 %.not2593.us.us.us = icmp eq i32 %647, 0 %.not2594.us.us.us = icmp slt i32 %648, %15 %or.cond2921 = select i1 %.not2593.us.us.us, i1 %.not2594.us.us.us, i1 false @@ -2775,7 +2775,7 @@ define hidden noundef i32 @_ZNK4ncnn30DeconvolutionDepthWise_x86_avx7forwardERKN 654: ; preds = %649 %655 = srem i32 %652, %638 - %656 = sdiv i32 %652, %638 + %656 = sdiv exact i32 %652, %638 %.not2595.us.us.us = icmp eq i32 %655, 0 %.not2596.us.us.us = icmp slt i32 %656, %13 %or.cond2922 = select i1 %.not2595.us.us.us, i1 %.not2596.us.us.us, i1 false @@ -3006,7 +3006,7 @@ define hidden noundef i32 @_ZNK4ncnn30DeconvolutionDepthWise_x86_avx7forwardERKN 776: ; preds = %.lr.ph2801.split.us.us %777 = srem i32 %774, %764 - %778 = sdiv i32 %774, %764 + %778 = sdiv exact i32 %774, %764 %.not2588.us.us = icmp eq i32 %777, 0 %.not2589.us.us = icmp slt i32 %778, %15 %or.cond2923 = select i1 %.not2588.us.us, i1 %.not2589.us.us, i1 false @@ -3031,7 +3031,7 @@ define hidden noundef i32 @_ZNK4ncnn30DeconvolutionDepthWise_x86_avx7forwardERKN 789: ; preds = %784 %790 = srem i32 %787, %768 - %791 = sdiv i32 %787, %768 + %791 = sdiv exact i32 %787, %768 %.not2590.us.us = icmp eq i32 %790, 0 %.not2591.us.us = icmp slt i32 %791, %13 %or.cond2924 = select i1 %.not2590.us.us, i1 %.not2591.us.us, i1 false diff --git a/bench/openblas/optimized/dsytrd_sb2st.ll b/bench/openblas/optimized/dsytrd_sb2st.ll index 125e672f740..75696faf1f1 100644 --- a/bench/openblas/optimized/dsytrd_sb2st.ll +++ b/bench/openblas/optimized/dsytrd_sb2st.ll @@ -371,15 +371,15 @@ define void @dsytrd_sb2st_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr n 224: ; preds = %.preheader %225 = srem i32 %222, 2 - %226 = sdiv i32 %222, 2 - %227 = add nsw i32 %225, 2 - store i32 %227, ptr %19, align 4, !tbaa !3 - %228 = icmp eq i32 %225, 0 - br i1 %228, label %229, label %235 + %226 = add nsw i32 %225, 2 + store i32 %226, ptr %19, align 4, !tbaa !3 + %227 = icmp eq i32 %225, 0 + br i1 %227, label %228, label %235 229: ; preds = %224 + %229 = ashr exact i32 %222, 1 %230 = load i32, ptr %4, align 4, !tbaa !3 - %231 = mul nsw i32 %230, %226 + %231 = mul nsw i32 %230, %229 %232 = add nsw i32 %231, %219 %reass.sub = sub i32 %232, %230 %233 = add i32 %reass.sub, 1 diff --git a/bench/opencc/optimized/louds-trie.ll b/bench/opencc/optimized/louds-trie.ll index 8eab86ba053..8bbabf3d6e8 100644 --- a/bench/opencc/optimized/louds-trie.ll +++ b/bench/opencc/optimized/louds-trie.ll @@ -7440,7 +7440,7 @@ define linkonce_odr void @_ZN6marisa8grimoire6vector6VectorINS1_9RankIndexEE4map %3 = tail call noundef ptr @_ZN6marisa8grimoire2io6Mapper8map_dataEm(ptr noundef nonnull align 8 dereferenceable(36) %1, i64 noundef 8) %4 = load i64, ptr %3, align 8 %5 = urem i64 %4, 12 - %6 = udiv i64 %4, 12 + %6 = udiv exact i64 %4, 12 %.not = icmp eq i64 %5, 0 br i1 %.not, label %13, label %7 @@ -7460,18 +7460,17 @@ define linkonce_odr void @_ZN6marisa8grimoire6vector6VectorINS1_9RankIndexEE4map 13: ; preds = %2 %14 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %15 = mul nuw i64 %6, 12 - %16 = tail call noundef ptr @_ZN6marisa8grimoire2io6Mapper8map_dataEm(ptr noundef nonnull align 8 dereferenceable(36) %1, i64 noundef %15) - store ptr %16, ptr %14, align 8 - %17 = sub i64 0, %4 - %18 = and i64 %17, 7 - tail call void @_ZN6marisa8grimoire2io6Mapper4seekEm(ptr noundef nonnull align 8 dereferenceable(36) %1, i64 noundef %18) - %19 = getelementptr inbounds nuw i8, ptr %0, i64 24 - store i64 %6, ptr %19, align 8 - %20 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %21 = load i8, ptr %20, align 8 - %22 = trunc i8 %21 to i1 - br i1 %22, label %23, label %_ZN6marisa8grimoire6vector6VectorINS1_9RankIndexEE3fixEv.exit + %15 = tail call noundef ptr @_ZN6marisa8grimoire2io6Mapper8map_dataEm(ptr noundef nonnull align 8 dereferenceable(36) %1, i64 noundef %4) + store ptr %15, ptr %14, align 8 + %16 = sub i64 0, %4 + %17 = and i64 %16, 7 + tail call void @_ZN6marisa8grimoire2io6Mapper4seekEm(ptr noundef nonnull align 8 dereferenceable(36) %1, i64 noundef %17) + %18 = getelementptr inbounds nuw i8, ptr %0, i64 24 + store i64 %6, ptr %18, align 8 + %19 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %20 = load i8, ptr %19, align 8 + %21 = trunc i8 %20 to i1 + br i1 %21, label %22, label %_ZN6marisa8grimoire6vector6VectorINS1_9RankIndexEE3fixEv.exit 23: ; preds = %13 %24 = tail call ptr @__cxa_allocate_exception(i64 32) #22 @@ -7488,7 +7487,7 @@ define linkonce_odr void @_ZN6marisa8grimoire6vector6VectorINS1_9RankIndexEE4map unreachable _ZN6marisa8grimoire6vector6VectorINS1_9RankIndexEE3fixEv.exit: ; preds = %13 - store i8 1, ptr %20, align 8 + store i8 1, ptr %19, align 8 ret void } @@ -8050,7 +8049,7 @@ define linkonce_odr void @_ZN6marisa8grimoire6vector6VectorINS1_9RankIndexEE5rea call void @_ZN6marisa8grimoire2io6Reader9read_dataEPvm(ptr noundef nonnull align 8 dereferenceable(25) %1, ptr noundef nonnull %3, i64 noundef 8) %4 = load i64, ptr %3, align 8 %5 = urem i64 %4, 12 - %6 = udiv i64 %4, 12 + %6 = udiv exact i64 %4, 12 %.not = icmp eq i64 %5, 0 br i1 %.not, label %13, label %7 @@ -8145,7 +8144,7 @@ _ZN6marisa8grimoire6vector6VectorINS1_9RankIndexEE6resizeEm.exit: ; preds = %40, %46 = getelementptr inbounds nuw i8, ptr %0, i64 8 %47 = load ptr, ptr %46, align 8 %48 = icmp eq ptr %47, null - %49 = icmp ugt i64 %4, 11 + %49 = icmp ne i64 %4, 0 %or.cond.i = and i1 %49, %48 br i1 %or.cond.i, label %50, label %_ZN6marisa8grimoire2io6Reader4readINS0_6vector9RankIndexEEEvPT_m.exit @@ -8164,12 +8163,11 @@ _ZN6marisa8grimoire6vector6VectorINS1_9RankIndexEE6resizeEm.exit: ; preds = %40, unreachable _ZN6marisa8grimoire2io6Reader4readINS0_6vector9RankIndexEEEvPT_m.exit: ; preds = %_ZN6marisa8grimoire6vector6VectorINS1_9RankIndexEE6resizeEm.exit - %56 = mul nuw i64 %6, 12 - call void @_ZN6marisa8grimoire2io6Reader9read_dataEPvm(ptr noundef nonnull align 8 dereferenceable(25) %1, ptr noundef %47, i64 noundef %56) - %57 = load i64, ptr %3, align 8 - %58 = sub i64 0, %57 - %59 = and i64 %58, 7 - call void @_ZN6marisa8grimoire2io6Reader4seekEm(ptr noundef nonnull align 8 dereferenceable(25) %1, i64 noundef %59) + call void @_ZN6marisa8grimoire2io6Reader9read_dataEPvm(ptr noundef nonnull align 8 dereferenceable(25) %1, ptr noundef %47, i64 noundef %4) + %56 = load i64, ptr %3, align 8 + %57 = sub i64 0, %56 + %58 = and i64 %57, 7 + call void @_ZN6marisa8grimoire2io6Reader4seekEm(ptr noundef nonnull align 8 dereferenceable(25) %1, i64 noundef %58) ret void } @@ -15777,7 +15775,7 @@ define linkonce_odr void @_ZN6marisa8grimoire6vector6VectorINS0_4trie5CacheEE4ma %3 = tail call noundef ptr @_ZN6marisa8grimoire2io6Mapper8map_dataEm(ptr noundef nonnull align 8 dereferenceable(36) %1, i64 noundef 8) %4 = load i64, ptr %3, align 8 %5 = urem i64 %4, 12 - %6 = udiv i64 %4, 12 + %6 = udiv exact i64 %4, 12 %.not = icmp eq i64 %5, 0 br i1 %.not, label %13, label %7 @@ -15797,18 +15795,17 @@ define linkonce_odr void @_ZN6marisa8grimoire6vector6VectorINS0_4trie5CacheEE4ma 13: ; preds = %2 %14 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %15 = mul nuw i64 %6, 12 - %16 = tail call noundef ptr @_ZN6marisa8grimoire2io6Mapper8map_dataEm(ptr noundef nonnull align 8 dereferenceable(36) %1, i64 noundef %15) - store ptr %16, ptr %14, align 8 - %17 = sub i64 0, %4 - %18 = and i64 %17, 7 - tail call void @_ZN6marisa8grimoire2io6Mapper4seekEm(ptr noundef nonnull align 8 dereferenceable(36) %1, i64 noundef %18) - %19 = getelementptr inbounds nuw i8, ptr %0, i64 24 - store i64 %6, ptr %19, align 8 - %20 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %21 = load i8, ptr %20, align 8 - %22 = trunc i8 %21 to i1 - br i1 %22, label %23, label %_ZN6marisa8grimoire6vector6VectorINS0_4trie5CacheEE3fixEv.exit + %15 = tail call noundef ptr @_ZN6marisa8grimoire2io6Mapper8map_dataEm(ptr noundef nonnull align 8 dereferenceable(36) %1, i64 noundef %4) + store ptr %15, ptr %14, align 8 + %16 = sub i64 0, %4 + %17 = and i64 %16, 7 + tail call void @_ZN6marisa8grimoire2io6Mapper4seekEm(ptr noundef nonnull align 8 dereferenceable(36) %1, i64 noundef %17) + %18 = getelementptr inbounds nuw i8, ptr %0, i64 24 + store i64 %6, ptr %18, align 8 + %19 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %20 = load i8, ptr %19, align 8 + %21 = trunc i8 %20 to i1 + br i1 %21, label %22, label %_ZN6marisa8grimoire6vector6VectorINS0_4trie5CacheEE3fixEv.exit 23: ; preds = %13 %24 = tail call ptr @__cxa_allocate_exception(i64 32) #22 @@ -15825,7 +15822,7 @@ define linkonce_odr void @_ZN6marisa8grimoire6vector6VectorINS0_4trie5CacheEE4ma unreachable _ZN6marisa8grimoire6vector6VectorINS0_4trie5CacheEE3fixEv.exit: ; preds = %13 - store i8 1, ptr %20, align 8 + store i8 1, ptr %19, align 8 ret void } @@ -15921,7 +15918,7 @@ define linkonce_odr void @_ZN6marisa8grimoire6vector6VectorINS0_4trie5CacheEE5re call void @_ZN6marisa8grimoire2io6Reader9read_dataEPvm(ptr noundef nonnull align 8 dereferenceable(25) %1, ptr noundef nonnull %3, i64 noundef 8) %4 = load i64, ptr %3, align 8 %5 = urem i64 %4, 12 - %6 = udiv i64 %4, 12 + %6 = udiv exact i64 %4, 12 %.not = icmp eq i64 %5, 0 br i1 %.not, label %13, label %7 @@ -15944,7 +15941,7 @@ define linkonce_odr void @_ZN6marisa8grimoire6vector6VectorINS0_4trie5CacheEE5re %14 = getelementptr inbounds nuw i8, ptr %0, i64 8 %15 = load ptr, ptr %14, align 8 %16 = icmp eq ptr %15, null - %17 = icmp ugt i64 %4, 11 + %17 = icmp ne i64 %4, 0 %or.cond.i = and i1 %17, %16 br i1 %or.cond.i, label %18, label %_ZN6marisa8grimoire2io6Reader4readINS0_4trie5CacheEEEvPT_m.exit @@ -15963,12 +15960,11 @@ define linkonce_odr void @_ZN6marisa8grimoire6vector6VectorINS0_4trie5CacheEE5re unreachable _ZN6marisa8grimoire2io6Reader4readINS0_4trie5CacheEEEvPT_m.exit: ; preds = %13 - %24 = mul nuw i64 %6, 12 - call void @_ZN6marisa8grimoire2io6Reader9read_dataEPvm(ptr noundef nonnull align 8 dereferenceable(25) %1, ptr noundef %15, i64 noundef %24) - %25 = load i64, ptr %3, align 8 - %26 = sub i64 0, %25 - %27 = and i64 %26, 7 - call void @_ZN6marisa8grimoire2io6Reader4seekEm(ptr noundef nonnull align 8 dereferenceable(25) %1, i64 noundef %27) + call void @_ZN6marisa8grimoire2io6Reader9read_dataEPvm(ptr noundef nonnull align 8 dereferenceable(25) %1, ptr noundef %15, i64 noundef %4) + %24 = load i64, ptr %3, align 8 + %25 = sub i64 0, %24 + %26 = and i64 %25, 7 + call void @_ZN6marisa8grimoire2io6Reader4seekEm(ptr noundef nonnull align 8 dereferenceable(25) %1, i64 noundef %26) ret void } diff --git a/bench/opencc/optimized/tail.ll b/bench/opencc/optimized/tail.ll index b4595e1d228..a9068edca73 100644 --- a/bench/opencc/optimized/tail.ll +++ b/bench/opencc/optimized/tail.ll @@ -3809,7 +3809,7 @@ define linkonce_odr void @_ZN6marisa8grimoire6vector6VectorINS1_9RankIndexEE4map %3 = tail call noundef ptr @_ZN6marisa8grimoire2io6Mapper8map_dataEm(ptr noundef nonnull align 8 dereferenceable(36) %1, i64 noundef 8) %4 = load i64, ptr %3, align 8 %5 = urem i64 %4, 12 - %6 = udiv i64 %4, 12 + %6 = udiv exact i64 %4, 12 %.not = icmp eq i64 %5, 0 br i1 %.not, label %13, label %7 @@ -3829,35 +3829,34 @@ define linkonce_odr void @_ZN6marisa8grimoire6vector6VectorINS1_9RankIndexEE4map 13: ; preds = %2 %14 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %15 = mul nuw i64 %6, 12 - %16 = tail call noundef ptr @_ZN6marisa8grimoire2io6Mapper8map_dataEm(ptr noundef nonnull align 8 dereferenceable(36) %1, i64 noundef %15) - store ptr %16, ptr %14, align 8 - %17 = sub i64 0, %4 - %18 = and i64 %17, 7 - tail call void @_ZN6marisa8grimoire2io6Mapper4seekEm(ptr noundef nonnull align 8 dereferenceable(36) %1, i64 noundef %18) - %19 = getelementptr inbounds nuw i8, ptr %0, i64 24 - store i64 %6, ptr %19, align 8 - %20 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %21 = load i8, ptr %20, align 8 - %22 = trunc i8 %21 to i1 - br i1 %22, label %23, label %_ZN6marisa8grimoire6vector6VectorINS1_9RankIndexEE3fixEv.exit - -23: ; preds = %13 - %24 = tail call ptr @__cxa_allocate_exception(i64 32) #15 - store ptr getelementptr inbounds nuw (i8, ptr @_ZTVN6marisa9ExceptionE, i64 16), ptr %24, align 8 - %25 = getelementptr inbounds nuw i8, ptr %24, i64 8 - store ptr @.str.8, ptr %25, align 8 - %26 = getelementptr inbounds nuw i8, ptr %24, i64 16 - store i32 107, ptr %26, align 8 - %27 = getelementptr inbounds nuw i8, ptr %24, i64 20 - store i32 1, ptr %27, align 4 - %28 = getelementptr inbounds nuw i8, ptr %24, i64 24 - store ptr @.str.15, ptr %28, align 8 - tail call void @__cxa_throw(ptr nonnull %24, ptr nonnull @_ZTIN6marisa9ExceptionE, ptr nonnull @_ZN6marisa9ExceptionD2Ev) #16 + %15 = tail call noundef ptr @_ZN6marisa8grimoire2io6Mapper8map_dataEm(ptr noundef nonnull align 8 dereferenceable(36) %1, i64 noundef %4) + store ptr %15, ptr %14, align 8 + %16 = sub i64 0, %4 + %17 = and i64 %16, 7 + tail call void @_ZN6marisa8grimoire2io6Mapper4seekEm(ptr noundef nonnull align 8 dereferenceable(36) %1, i64 noundef %17) + %18 = getelementptr inbounds nuw i8, ptr %0, i64 24 + store i64 %6, ptr %18, align 8 + %19 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %20 = load i8, ptr %19, align 8 + %21 = trunc i8 %20 to i1 + br i1 %21, label %22, label %_ZN6marisa8grimoire6vector6VectorINS1_9RankIndexEE3fixEv.exit + +22: ; preds = %13 + %23 = tail call ptr @__cxa_allocate_exception(i64 32) #15 + store ptr getelementptr inbounds nuw (i8, ptr @_ZTVN6marisa9ExceptionE, i64 16), ptr %23, align 8 + %24 = getelementptr inbounds nuw i8, ptr %23, i64 8 + store ptr @.str.8, ptr %24, align 8 + %25 = getelementptr inbounds nuw i8, ptr %23, i64 16 + store i32 107, ptr %25, align 8 + %26 = getelementptr inbounds nuw i8, ptr %23, i64 20 + store i32 1, ptr %26, align 4 + %27 = getelementptr inbounds nuw i8, ptr %23, i64 24 + store ptr @.str.15, ptr %27, align 8 + tail call void @__cxa_throw(ptr nonnull %23, ptr nonnull @_ZTIN6marisa9ExceptionE, ptr nonnull @_ZN6marisa9ExceptionD2Ev) #16 unreachable _ZN6marisa8grimoire6vector6VectorINS1_9RankIndexEE3fixEv.exit: ; preds = %13 - store i8 1, ptr %20, align 8 + store i8 1, ptr %19, align 8 ret void } @@ -4319,7 +4318,7 @@ define linkonce_odr void @_ZN6marisa8grimoire6vector6VectorINS1_9RankIndexEE5rea call void @_ZN6marisa8grimoire2io6Reader9read_dataEPvm(ptr noundef nonnull align 8 dereferenceable(25) %1, ptr noundef nonnull %3, i64 noundef 8) %4 = load i64, ptr %3, align 8 %5 = urem i64 %4, 12 - %6 = udiv i64 %4, 12 + %6 = udiv exact i64 %4, 12 %.not = icmp eq i64 %5, 0 br i1 %.not, label %13, label %7 @@ -4414,7 +4413,7 @@ _ZN6marisa8grimoire6vector6VectorINS1_9RankIndexEE6resizeEm.exit: ; preds = %40, %46 = getelementptr inbounds nuw i8, ptr %0, i64 8 %47 = load ptr, ptr %46, align 8 %48 = icmp eq ptr %47, null - %49 = icmp ugt i64 %4, 11 + %49 = icmp ne i64 %4, 0 %or.cond.i = and i1 %49, %48 br i1 %or.cond.i, label %50, label %_ZN6marisa8grimoire2io6Reader4readINS0_6vector9RankIndexEEEvPT_m.exit @@ -4433,12 +4432,11 @@ _ZN6marisa8grimoire6vector6VectorINS1_9RankIndexEE6resizeEm.exit: ; preds = %40, unreachable _ZN6marisa8grimoire2io6Reader4readINS0_6vector9RankIndexEEEvPT_m.exit: ; preds = %_ZN6marisa8grimoire6vector6VectorINS1_9RankIndexEE6resizeEm.exit - %56 = mul nuw i64 %6, 12 - call void @_ZN6marisa8grimoire2io6Reader9read_dataEPvm(ptr noundef nonnull align 8 dereferenceable(25) %1, ptr noundef %47, i64 noundef %56) - %57 = load i64, ptr %3, align 8 - %58 = sub i64 0, %57 - %59 = and i64 %58, 7 - call void @_ZN6marisa8grimoire2io6Reader4seekEm(ptr noundef nonnull align 8 dereferenceable(25) %1, i64 noundef %59) + call void @_ZN6marisa8grimoire2io6Reader9read_dataEPvm(ptr noundef nonnull align 8 dereferenceable(25) %1, ptr noundef %47, i64 noundef %4) + %56 = load i64, ptr %3, align 8 + %57 = sub i64 0, %56 + %58 = and i64 %57, 7 + call void @_ZN6marisa8grimoire2io6Reader4seekEm(ptr noundef nonnull align 8 dereferenceable(25) %1, i64 noundef %58) ret void } diff --git a/bench/opencv/optimized/persistence.ll b/bench/opencv/optimized/persistence.ll index cb17fcb22ed..923eee94bab 100644 --- a/bench/opencv/optimized/persistence.ll +++ b/bench/opencv/optimized/persistence.ll @@ -9305,7 +9305,7 @@ define void @_ZN2cv11FileStorage4Impl12writeRawDataERKNSt7__cxx1112basic_stringI 53: ; preds = %42 %54 = urem i64 %3, %45 - %55 = udiv i64 %3, %45 + %55 = udiv exact i64 %3, %45 %56 = icmp eq i64 %54, 0 br i1 %56, label %64, label %57 @@ -9339,7 +9339,7 @@ define void @_ZN2cv11FileStorage4Impl12writeRawDataERKNSt7__cxx1112basic_stringI call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(256) %14, i8 0, i64 256, i1 false) %68 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %1) #39 %69 = call noundef i32 @_ZN2cv2fs12decodeFormatEPKcPii(ptr noundef %68, ptr noundef nonnull %13, i32 noundef 128) - %.not81 = icmp ult i64 %3, %45 + %.not81 = icmp eq i64 %3, 0 br i1 %.not81, label %.loopexit, label %70 70: ; preds = %64 @@ -9383,14 +9383,12 @@ define void @_ZN2cv11FileStorage4Impl12writeRawDataERKNSt7__cxx1112basic_stringI br label %.preheader.us.preheader 85: ; preds = %78 - %.not85139 = icmp uge i64 %3, %45 %86 = icmp sgt i32 %69, 0 %87 = getelementptr inbounds nuw i8, ptr %14, i64 1 %88 = getelementptr inbounds nuw i8, ptr %14, i64 23 - %or.cond = and i1 %.not85139, %86 - br i1 %or.cond, label %.preheader.us.preheader, label %.loopexit + br i1 %86, label %.preheader.us.preheader, label %.loopexit -.preheader.us.preheader: ; preds = %85, %.preheader.lr.ph.thread +.preheader.us.preheader: ; preds = %.preheader.lr.ph.thread, %85 %89 = phi ptr [ %84, %.preheader.lr.ph.thread ], [ %88, %85 ] %90 = phi ptr [ %83, %.preheader.lr.ph.thread ], [ %87, %85 ] %.058156158 = phi i64 [ 1, %.preheader.lr.ph.thread ], [ %55, %85 ] @@ -17243,7 +17241,7 @@ define noundef nonnull align 8 dereferenceable(48) ptr @_ZN2cv16FileNodeIterator %39 = call noundef i32 @_ZN2cv2fs14calcStructSizeEPKci(ptr noundef %38, i32 noundef 0) %40 = sext i32 %39 to i64 %41 = urem i64 %3, %40 - %42 = udiv i64 %3, %40 + %42 = udiv exact i64 %3, %40 %43 = icmp eq i64 %41, 0 br i1 %43, label %51, label %44 @@ -17271,7 +17269,7 @@ define noundef nonnull align 8 dereferenceable(48) ptr @_ZN2cv16FileNodeIterator br label %common.resume 51: ; preds = %35 - %.not92160 = icmp ult i64 %3, %40 + %.not92160 = icmp eq i64 %3, 0 br i1 %.not92160, label %.loopexit, label %.preheader.lr.ph .preheader.lr.ph: ; preds = %51 diff --git a/bench/pbrt-v4/optimized/paramdict.ll b/bench/pbrt-v4/optimized/paramdict.ll index 669b4aaefc8..422057a0dd1 100644 --- a/bench/pbrt-v4/optimized/paramdict.ll +++ b/bench/pbrt-v4/optimized/paramdict.ll @@ -2104,7 +2104,7 @@ if.then.i: ; preds = %if.then if.end.i: ; preds = %if.then %rem.i = urem i64 %2, 3 - %div.i = udiv i64 %2, 3 + %div.i = udiv exact i64 %2, 3 %tobool.not.i = icmp eq i64 %rem.i, 0 br i1 %tobool.not.i, label %if.end5.i, label %if.then2.i @@ -2473,7 +2473,7 @@ if.end.i75: ; preds = %if.end24 %sext = shl i64 %33, 32 %conv.i = ashr exact i64 %sext, 32 %rem.i76 = urem i64 %37, %conv.i - %div.i83 = udiv i64 %37, %conv.i + %div.i83 = udiv exact i64 %37, %conv.i %tobool.not.i77 = icmp eq i64 %rem.i76, 0 br i1 %tobool.not.i77, label %if.end5.i81, label %if.then2.i78 @@ -3832,7 +3832,7 @@ if.then.i.i: ; preds = %if.then.i if.end.i.i: ; preds = %if.then.i %rem.i.i = urem i64 %5, 3 - %div.i.i = udiv i64 %5, 3 + %div.i.i = udiv exact i64 %5, 3 %tobool.not.i10.i = icmp eq i64 %rem.i.i, 0 br i1 %tobool.not.i10.i, label %if.end5.i.i, label %if.then2.i.i @@ -3844,7 +3844,7 @@ if.then2.i.i: ; preds = %if.end.i.i if.end5.i.i: ; preds = %if.end.i.i %lookedUp.i.i = getelementptr inbounds nuw i8, ptr %3, i64 216 store i8 1, ptr %lookedUp.i.i, align 8, !noalias !99 - %cmp.i.i.i.i = icmp ugt i64 %5, 2305843009213693952 + %cmp.i.i.i.i = icmp ugt i64 %5, 2305843009213693950 br i1 %cmp.i.i.i.i, label %if.then.i.i.i.i, label %_ZNSt6vectorIN4pbrt6Point3IfEESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.i if.then.i.i.i.i: ; preds = %if.end5.i.i @@ -3972,7 +3972,7 @@ if.then.i.i: ; preds = %if.then.i if.end.i.i: ; preds = %if.then.i %rem.i.i = urem i64 %5, 3 - %div.i.i = udiv i64 %5, 3 + %div.i.i = udiv exact i64 %5, 3 %tobool.not.i10.i = icmp eq i64 %rem.i.i, 0 br i1 %tobool.not.i10.i, label %if.end5.i.i, label %if.then2.i.i @@ -3984,7 +3984,7 @@ if.then2.i.i: ; preds = %if.end.i.i if.end5.i.i: ; preds = %if.end.i.i %lookedUp.i.i = getelementptr inbounds nuw i8, ptr %3, i64 216 store i8 1, ptr %lookedUp.i.i, align 8, !noalias !107 - %cmp.i.i.i.i = icmp ugt i64 %5, 2305843009213693952 + %cmp.i.i.i.i = icmp ugt i64 %5, 2305843009213693950 br i1 %cmp.i.i.i.i, label %if.then.i.i.i.i, label %_ZNSt6vectorIN4pbrt7Vector3IfEESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.i if.then.i.i.i.i: ; preds = %if.end5.i.i @@ -4112,7 +4112,7 @@ if.then.i.i: ; preds = %if.then.i if.end.i.i: ; preds = %if.then.i %rem.i.i = urem i64 %5, 3 - %div.i.i = udiv i64 %5, 3 + %div.i.i = udiv exact i64 %5, 3 %tobool.not.i10.i = icmp eq i64 %rem.i.i, 0 br i1 %tobool.not.i10.i, label %if.end5.i.i, label %if.then2.i.i @@ -4124,7 +4124,7 @@ if.then2.i.i: ; preds = %if.end.i.i if.end5.i.i: ; preds = %if.end.i.i %lookedUp.i.i = getelementptr inbounds nuw i8, ptr %3, i64 216 store i8 1, ptr %lookedUp.i.i, align 8, !noalias !115 - %cmp.i.i.i.i = icmp ugt i64 %5, 2305843009213693952 + %cmp.i.i.i.i = icmp ugt i64 %5, 2305843009213693950 br i1 %cmp.i.i.i.i, label %if.then.i.i.i.i, label %_ZNSt6vectorIN4pbrt7Normal3IfEESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.i if.then.i.i.i.i: ; preds = %if.end5.i.i @@ -4769,7 +4769,7 @@ if.then: ; preds = %land.lhs.true %nStored.i20 = getelementptr inbounds nuw i8, ptr %3, i64 112 %5 = load i64, ptr %nStored.i20, align 8 %rem = urem i64 %5, 3 - %div = udiv i64 %5, 3 + %div = udiv exact i64 %5, 3 %tobool.not = icmp eq i64 %rem, 0 br i1 %tobool.not, label %if.end, label %if.then7 @@ -4779,7 +4779,7 @@ if.then7: ; preds = %if.then unreachable if.end: ; preds = %if.then - %cmp.i.i22 = icmp ugt i64 %5, 2305843009213693952 + %cmp.i.i22 = icmp ugt i64 %5, 2305843009213693950 br i1 %cmp.i.i22, label %if.then.i.i, label %_ZNSt6vectorIN4pbrt3RGBESaIS1_EE17_S_check_init_lenEmRKS2_.exit.i if.then.i.i: ; preds = %if.end @@ -4788,7 +4788,7 @@ if.then.i.i: ; preds = %if.end _ZNSt6vectorIN4pbrt3RGBESaIS1_EE17_S_check_init_lenEmRKS2_.exit.i: ; preds = %if.end tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %agg.result, i8 0, i64 24, i1 false) - %cmp.not.i.i.i.i = icmp samesign ult i64 %5, 3 + %cmp.not.i.i.i.i = icmp eq i64 %5, 0 br i1 %cmp.not.i.i.i.i, label %invoke.cont.thread, label %for.body17.lr.ph invoke.cont.thread: ; preds = %_ZNSt6vectorIN4pbrt3RGBESaIS1_EE17_S_check_init_lenEmRKS2_.exit.i @@ -4806,6 +4806,10 @@ for.body17.lr.ph: ; preds = %_ZNSt6vectorIN4pbrt %6 = getelementptr inbounds nuw i8, ptr %agg.result, i64 16 store ptr %add.ptr.i.i.i, ptr %6, align 8 store ptr %scevgep.i.i.i.i.i, ptr %_M_finish.i.i7.i, align 8 + %cmp1635.not = icmp samesign ult i64 %5, 3 + br i1 %cmp1635.not, label %for.end, label %for.body17.lr.ph + +for.body17.lr.ph: ; preds = %invoke.cont %ptr.i25 = getelementptr inbounds nuw i8, ptr %3, i64 96 %.pre = load ptr, ptr %ptr.i25, align 8 br label %for.body17 @@ -4829,7 +4833,7 @@ for.body17: ; preds = %for.body17.lr.ph, % %cmp16 = icmp samesign ugt i64 %div, %indvars.iv.next br i1 %cmp16, label %for.body17, label %for.end, !llvm.loop !123 -for.end: ; preds = %for.body17, %invoke.cont.thread +for.end: ; preds = %for.body17, %invoke.cont.thread, %invoke.cont %lookedUp = getelementptr inbounds nuw i8, ptr %3, i64 216 store i8 1, ptr %lookedUp, align 8 br label %return diff --git a/bench/qemu/optimized/audio_audio.ll b/bench/qemu/optimized/audio_audio.ll index ca889b107a8..626e57a906e 100644 --- a/bench/qemu/optimized/audio_audio.ll +++ b/bench/qemu/optimized/audio_audio.ll @@ -3967,7 +3967,7 @@ while.body.lr.ph.i.i: ; preds = %if.end.i.i while.body.i50.i: ; preds = %audio_pcm_hw_conv_in.exit.i.i, %while.body.lr.ph.i.i %samples.addr.022.i.i = phi i64 [ %sub.i30, %while.body.lr.ph.i.i ], [ %sub.i53.i, %audio_pcm_hw_conv_in.exit.i.i ] - %conv.021.i.i = phi i64 [ 0, %while.body.lr.ph.i.i ], [ %add.i.i51, %audio_pcm_hw_conv_in.exit.i.i ] + %conv.021.i.i = phi i64 [ 0, %while.body.lr.ph.i.i ], [ %add.i.i50, %audio_pcm_hw_conv_in.exit.i.i ] %119 = load i32, ptr %bytes_per_frame.i.i32, align 8 %conv4.i.i34 = sext i32 %119 to i64 %mul.i.i35 = mul i64 %samples.addr.022.i.i, %conv4.i.i34 @@ -3980,7 +3980,7 @@ while.body.i50.i: ; preds = %audio_pcm_hw_conv_i %123 = load i32, ptr %bytes_per_frame.i.i32, align 8 %conv8.i.i = sext i32 %123 to i64 %rem.i.i37 = urem i64 %122, %conv8.i.i - %div.i.i40 = udiv i64 %122, %conv8.i.i + %div.i.i40 = udiv exact i64 %122, %conv8.i.i %cmp.i.i38 = icmp eq i64 %rem.i.i37, 0 br i1 %cmp.i.i38, label %if.end11.i.i, label %if.else.i.i @@ -3993,10 +3993,6 @@ if.end11.i.i: ; preds = %while.body.i50.i br i1 %cmp12.i.i, label %audio_pcm_hw_run_in.exit.i, label %if.end15.i.i if.end15.i.i: ; preds = %if.end11.i.i - %tobool.not18.i.i.i = icmp ult i64 %122, %conv8.i.i - br i1 %tobool.not18.i.i.i, label %audio_pcm_hw_conv_in.exit.i.i, label %while.body.lr.ph.i.i.i39 - -while.body.lr.ph.i.i.i39: ; preds = %if.end15.i.i %.pre.i.i.i41 = load i64, ptr %size.i26, align 8 %.pre21.i.i.i = load i64, ptr %conv_buf1.i.i.i, align 8 br label %while.body.i.i.i42 @@ -4029,25 +4025,20 @@ while.body.i.i.i42: ; preds = %while.body.i.i.i42, br i1 %tobool.not.i.i52.i, label %audio_pcm_hw_conv_in.exit.loopexit.i.i, label %while.body.i.i.i42, !llvm.loop !28 audio_pcm_hw_conv_in.exit.loopexit.i.i: ; preds = %while.body.i.i.i42 - %.pre.i.i50 = load i32, ptr %bytes_per_frame.i.i32, align 8 - %.pre24.i.i = sext i32 %.pre.i.i50 to i64 - br label %audio_pcm_hw_conv_in.exit.i.i - -audio_pcm_hw_conv_in.exit.i.i: ; preds = %audio_pcm_hw_conv_in.exit.loopexit.i.i, %if.end15.i.i - %conv23.pre-phi.i.i = phi i64 [ %.pre24.i.i, %audio_pcm_hw_conv_in.exit.loopexit.i.i ], [ %conv8.i.i, %if.end15.i.i ] - %conv.0.lcssa.i.i.i = phi i64 [ %add12.i.i.i, %audio_pcm_hw_conv_in.exit.loopexit.i.i ], [ 0, %if.end15.i.i ] - %sub.i53.i = sub i64 %samples.addr.022.i.i, %conv.0.lcssa.i.i.i - %add.i.i51 = add i64 %conv.0.lcssa.i.i.i, %conv.021.i.i + %.pre.i.i50 = sub i64 %samples.addr.022.i.i, %add12.i.i.i + %.pre24.i.i = add i64 %add12.i.i.i, %conv.021.i.i %132 = load ptr, ptr %pcm_ops.i.i31, align 8 %put_buffer_in.i.i = getelementptr inbounds nuw i8, ptr %132, i64 112 %133 = load ptr, ptr %put_buffer_in.i.i, align 8 - %mul24.i.i = mul i64 %conv.0.lcssa.i.i.i, %conv23.pre-phi.i.i + %mul24.i.i = load i32, ptr %bytes_per_frame.i.i32, align 8 + %conv23.i.i = sext i32 %134 to i64 + %mul24.i.i = mul i64 %add12.i.i.i, %conv23.i.i call void %133(ptr noundef nonnull %cond.i.i37.i, ptr noundef %call.i.i36, i64 noundef %mul24.i.i) #25 %tobool3.not.i.i52 = icmp eq i64 %sub.i53.i, 0 br i1 %tobool3.not.i.i52, label %audio_pcm_hw_run_in.exit.i, label %while.body.i50.i, !llvm.loop !29 audio_pcm_hw_run_in.exit.i: ; preds = %audio_pcm_hw_conv_in.exit.i.i, %if.end11.i.i, %if.end.i.i - %conv.0.lcssa.i.i = phi i64 [ 0, %if.end.i.i ], [ %conv.021.i.i, %if.end11.i.i ], [ %add.i.i51, %audio_pcm_hw_conv_in.exit.i.i ] + %conv.0.lcssa.i.i = phi i64 [ 0, %if.end.i.i ], [ %conv.021.i.i, %if.end11.i.i ], [ %add.i.i50, %audio_pcm_hw_conv_in.exit.i.i ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %size.i47.i) store i64 %conv.0.lcssa.i.i, ptr %captured.i, align 8 br label %if.end15.i @@ -4162,7 +4153,7 @@ if.then35.i: ; preds = %audio_get_avail.exi %152 = load i32, ptr %bytes_per_frame.i69, align 4 %153 = trunc nuw i64 %cond.i68 to i32 %conv44.i = mul i32 %152, %153 - call void %150(ptr noundef %151, i32 noundef %conv44.i) #25 + call void %151(ptr noundef %151, i32 noundef %conv44.i) #25 br label %for.inc.i70 for.inc.i70: ; preds = %if.then35.i, %audio_get_avail.exit.i, %for.body.i62 @@ -4207,7 +4198,7 @@ while.body.i82: ; preds = %for.end.i87, %while %157 = load ptr, ptr %clip.i, align 8 %158 = load ptr, ptr %buf.i, align 8 %conv.i85 = trunc i64 %cond.i84 to i32 - call void %157(ptr noundef %158, ptr noundef %add.ptr.i, i32 noundef %conv.i85) #25 + call void %158(ptr noundef %158, ptr noundef %add.ptr.i, i32 noundef %conv.i85) #25 call void @mixeng_clear(ptr noundef %add.ptr.i, i32 noundef %conv.i85) #25 %cb.040.i = load ptr, ptr %cb_head.i, align 8 %tobool8.not41.i = icmp eq ptr %cb.040.i, null @@ -4222,7 +4213,7 @@ for.body9.i: ; preds = %while.body.i82, %fo %161 = load ptr, ptr %buf.i, align 8 %162 = load i32, ptr %bytes_per_frame.i80, align 4 %conv12.i = mul i32 %162, %conv.i85 - call void %159(ptr noundef %160, ptr noundef %161, i32 noundef %conv12.i) #25 + call void %160(ptr noundef %160, ptr noundef %161, i32 noundef %conv12.i) #25 %entries.i86 = getelementptr inbounds nuw i8, ptr %cb.042.i, i64 32 %cb.0.i = load ptr, ptr %entries.i86, align 8 %tobool8.not.i = icmp eq ptr %cb.0.i, null @@ -4277,14 +4268,14 @@ if.then2.i.i96: ; preds = %if.then.i.i94 if.then28.i: ; preds = %if.then2.i.i96, %if.then.i.i94 call void (ptr, ptr, ...) @AUD_log(ptr noundef null, ptr noundef nonnull @.str.6) - %167 = load i64, ptr %total_hw_samples_mixed.i, align 8 - call void (ptr, ptr, ...) @AUD_log(ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.70, i64 noundef %captured.048.i, i64 noundef %167) %168 = load i64, ptr %total_hw_samples_mixed.i, align 8 + call void (ptr, ptr, ...) @AUD_log(ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.70, i64 noundef %captured.048.i, i64 noundef %168) + %169 = load i64, ptr %total_hw_samples_mixed.i, align 8 br label %if.end31.i if.end31.i: ; preds = %if.then28.i, %if.end.i91 - %169 = phi i64 [ %168, %if.then28.i ], [ %166, %if.end.i91 ] - %captured.2.i = phi i64 [ %168, %if.then28.i ], [ %captured.048.i, %if.end.i91 ] + %169 = phi i64 [ %169, %if.then28.i ], [ %166, %if.end.i91 ] + %captured.2.i = phi i64 [ %169, %if.then28.i ], [ %captured.048.i, %if.end.i91 ] %sub33.i = sub i64 %169, %captured.2.i store i64 %sub33.i, ptr %total_hw_samples_mixed.i, align 8 %cmp35.i = icmp eq i64 %169, %captured.2.i diff --git a/bench/velox/optimized/Sequence.ll b/bench/velox/optimized/Sequence.ll index 3c10a8b4c20..e8b68146af6 100644 --- a/bench/velox/optimized/Sequence.ll +++ b/bench/velox/optimized/Sequence.ll @@ -7171,7 +7171,7 @@ _ZNK8facebook5velox13DecodedVector7valueAtIiEET_i.exit.i.i.i.i.i.i.i: ; preds = if.end5.i.i.i.i.i.i.i: ; preds = %_ZNK8facebook5velox13DecodedVector7valueAtIiEET_i.exit.i.i.i.i.i.i.i %rem4.i.i.i.i.i.i.i = srem i32 %126, 86400000 - %div5.i.i.i.i.i.i.i = sdiv i32 %126, 86400000 + %div5.i.i.i.i.i.i.i = sdiv exact i32 %126, 86400000 %cmp6.not.i.i.i.i.i.i.i = icmp eq i32 %rem4.i.i.i.i.i.i.i, 0 br i1 %cmp6.not.i.i.i.i.i.i.i, label %_ZN8facebook5velox9functions12_GLOBAL__N_116SequenceFunctionIiiE7getStepEllPNS0_13DecodedVectorEibb.exit.i.i.i.i.i.i, label %if.then8.i.i.i.i.i.i.i @@ -9741,7 +9741,7 @@ _ZNK8facebook5velox13DecodedVector7valueAtIiEET_i.exit.i: ; preds = %if.end4.i.i if.end5.i: ; preds = %_ZNK8facebook5velox13DecodedVector7valueAtIiEET_i.exit.i %rem4.i = srem i32 %20, 86400000 - %div5.i = sdiv i32 %20, 86400000 + %div5.i = sdiv exact i32 %20, 86400000 %cmp6.not.i = icmp eq i32 %rem4.i, 0 br i1 %cmp6.not.i, label %_ZN8facebook5velox9functions12_GLOBAL__N_116SequenceFunctionIiiE7getStepEllPNS0_13DecodedVectorEibb.exit, label %if.then8.i @@ -10109,7 +10109,7 @@ _ZNK8facebook5velox13DecodedVector7valueAtIiEET_i.exit.i: ; preds = %if.end4.i.i if.end5.i: ; preds = %_ZNK8facebook5velox13DecodedVector7valueAtIiEET_i.exit.i %rem4.i = srem i32 %20, 86400000 - %div5.i = sdiv i32 %20, 86400000 + %div5.i = sdiv exact i32 %20, 86400000 %cmp6.not.i = icmp eq i32 %rem4.i, 0 br i1 %cmp6.not.i, label %_ZN8facebook5velox9functions12_GLOBAL__N_116SequenceFunctionIiiE7getStepEllPNS0_13DecodedVectorEibb.exit, label %if.then8.i @@ -14474,7 +14474,7 @@ _ZNK8facebook5velox13DecodedVector7valueAtIlEET_i.exit.i.i.i.i.i.i.i: ; preds = if.end5.i.i.i.i.i.i.i: ; preds = %_ZNK8facebook5velox13DecodedVector7valueAtIlEET_i.exit.i.i.i.i.i.i.i %rem.i.i.i.i.i.i.i = srem i64 %126, 86400000 - %div.i.i.i.i.i.i.i = sdiv i64 %126, 86400000 + %div.i.i.i.i.i.i.i = sdiv exact i64 %126, 86400000 %cmp6.not.i.i.i.i.i.i.i = icmp eq i64 %rem.i.i.i.i.i.i.i, 0 br i1 %cmp6.not.i.i.i.i.i.i.i, label %_ZN8facebook5velox9functions12_GLOBAL__N_116SequenceFunctionIilE7getStepEllPNS0_13DecodedVectorEibb.exit.i.i.i.i.i.i, label %if.then8.i.i.i.i.i.i.i @@ -15089,7 +15089,7 @@ _ZNK8facebook5velox13DecodedVector7valueAtIlEET_i.exit.i.i.i.i.i.i.i.i.i: ; pred if.end5.i.i.i.i.i.i.i.i.i: ; preds = %_ZNK8facebook5velox13DecodedVector7valueAtIlEET_i.exit.i.i.i.i.i.i.i.i.i %rem.i.i.i.i.i.i.i.i.i = srem i64 %220, 86400000 - %div.i.i.i.i.i.i.i.i.i = sdiv i64 %220, 86400000 + %div.i.i.i.i.i.i.i.i.i = sdiv exact i64 %220, 86400000 %cmp6.not.i.i.i.i.i.i.i.i.i = icmp eq i64 %rem.i.i.i.i.i.i.i.i.i, 0 br i1 %cmp6.not.i.i.i.i.i.i.i.i.i, label %_ZN8facebook5velox9functions12_GLOBAL__N_116SequenceFunctionIilE7getStepEllPNS0_13DecodedVectorEibb.exit.i.i.i.i.i.i.i.i, label %if.then8.i.i.i.i.i.i.i.i.i @@ -15263,7 +15263,7 @@ _ZNK8facebook5velox13DecodedVector7valueAtIlEET_i.exit.i.i.i.i.i.i.i.i: ; preds if.end5.i.i.i.i.i.i.i.i: ; preds = %_ZNK8facebook5velox13DecodedVector7valueAtIlEET_i.exit.i.i.i.i.i.i.i.i %rem.i.i.i.i.i.i.i.i = srem i64 %255, 86400000 - %div.i.i.i.i.i.i.i.i = sdiv i64 %255, 86400000 + %div.i.i.i.i.i.i.i.i = sdiv exact i64 %255, 86400000 %cmp6.not.i.i.i.i.i.i.i.i = icmp eq i64 %rem.i.i.i.i.i.i.i.i, 0 br i1 %cmp6.not.i.i.i.i.i.i.i.i, label %_ZN8facebook5velox9functions12_GLOBAL__N_116SequenceFunctionIilE7getStepEllPNS0_13DecodedVectorEibb.exit.i.i.i.i.i.i.i, label %if.then8.i.i.i.i.i.i.i.i @@ -15830,7 +15830,7 @@ _ZNK8facebook5velox13DecodedVector7valueAtIlEET_i.exit.i: ; preds = %if.end4.i.i if.end5.i: ; preds = %_ZNK8facebook5velox13DecodedVector7valueAtIlEET_i.exit.i %rem.i = srem i64 %20, 86400000 - %div.i = sdiv i64 %20, 86400000 + %div.i = sdiv exact i64 %20, 86400000 %cmp6.not.i = icmp eq i64 %rem.i, 0 br i1 %cmp6.not.i, label %_ZN8facebook5velox9functions12_GLOBAL__N_116SequenceFunctionIilE7getStepEllPNS0_13DecodedVectorEibb.exit, label %if.then8.i @@ -16043,7 +16043,7 @@ _ZNK8facebook5velox13DecodedVector7valueAtIlEET_i.exit.i.i: ; preds = %if.end4.i if.end5.i.i: ; preds = %_ZNK8facebook5velox13DecodedVector7valueAtIlEET_i.exit.i.i %rem.i.i = srem i64 %49, 86400000 - %div.i.i = sdiv i64 %49, 86400000 + %div.i.i = sdiv exact i64 %49, 86400000 %cmp6.not.i.i = icmp eq i64 %rem.i.i, 0 br i1 %cmp6.not.i.i, label %_ZN8facebook5velox9functions12_GLOBAL__N_116SequenceFunctionIilE7getStepEllPNS0_13DecodedVectorEibb.exit.i, label %if.then8.i.i @@ -16871,7 +16871,7 @@ _ZNK8facebook5velox13DecodedVector7valueAtIlEET_i.exit.i.i.i.i.i.i.i: ; preds = if.end5.i.i.i.i.i.i.i: ; preds = %_ZNK8facebook5velox13DecodedVector7valueAtIlEET_i.exit.i.i.i.i.i.i.i %rem.i.i.i.i.i.i.i = srem i64 %126, 86400000 - %div.i.i.i.i.i.i.i = sdiv i64 %126, 86400000 + %div.i.i.i.i.i.i.i = sdiv exact i64 %126, 86400000 %cmp6.not.i.i.i.i.i.i.i = icmp eq i64 %rem.i.i.i.i.i.i.i, 0 br i1 %cmp6.not.i.i.i.i.i.i.i, label %_ZN8facebook5velox9functions12_GLOBAL__N_116SequenceFunctionIllE7getStepEllPNS0_13DecodedVectorEibb.exit.i.i.i.i.i.i, label %if.then8.i.i.i.i.i.i.i @@ -17477,7 +17477,7 @@ _ZNK8facebook5velox13DecodedVector7valueAtIlEET_i.exit.i.i.i.i.i.i.i.i.i: ; pred if.end5.i.i.i.i.i.i.i.i.i: ; preds = %_ZNK8facebook5velox13DecodedVector7valueAtIlEET_i.exit.i.i.i.i.i.i.i.i.i %rem.i.i.i.i.i.i.i.i.i = srem i64 %219, 86400000 - %div.i.i.i.i.i.i.i.i.i = sdiv i64 %219, 86400000 + %div.i.i.i.i.i.i.i.i.i = sdiv exact i64 %219, 86400000 %cmp6.not.i.i.i.i.i.i.i.i.i = icmp eq i64 %rem.i.i.i.i.i.i.i.i.i, 0 br i1 %cmp6.not.i.i.i.i.i.i.i.i.i, label %_ZN8facebook5velox9functions12_GLOBAL__N_116SequenceFunctionIllE7getStepEllPNS0_13DecodedVectorEibb.exit.i.i.i.i.i.i.i.i, label %if.then8.i.i.i.i.i.i.i.i.i @@ -17644,7 +17644,7 @@ _ZNK8facebook5velox13DecodedVector7valueAtIlEET_i.exit.i.i.i94.i.i.i.i.i: ; pred if.end5.i.i.i.i.i.i.i.i: ; preds = %_ZNK8facebook5velox13DecodedVector7valueAtIlEET_i.exit.i.i.i94.i.i.i.i.i %rem.i.i.i.i.i.i.i.i = srem i64 %252, 86400000 - %div.i.i.i.i.i.i.i.i = sdiv i64 %252, 86400000 + %div.i.i.i.i.i.i.i.i = sdiv exact i64 %252, 86400000 %cmp6.not.i.i.i.i.i.i.i.i = icmp eq i64 %rem.i.i.i.i.i.i.i.i, 0 br i1 %cmp6.not.i.i.i.i.i.i.i.i, label %_ZN8facebook5velox9functions12_GLOBAL__N_116SequenceFunctionIllE7getStepEllPNS0_13DecodedVectorEibb.exit.i.i.i.i.i.i.i, label %if.then8.i.i.i.i.i.i.i.i @@ -18422,7 +18422,7 @@ _ZNK8facebook5velox13DecodedVector7valueAtIlEET_i.exit.i: ; preds = %if.end4.i.i if.end5.i: ; preds = %_ZNK8facebook5velox13DecodedVector7valueAtIlEET_i.exit.i %rem.i = srem i64 %20, 86400000 - %div.i = sdiv i64 %20, 86400000 + %div.i = sdiv exact i64 %20, 86400000 %cmp6.not.i = icmp eq i64 %rem.i, 0 br i1 %cmp6.not.i, label %_ZN8facebook5velox9functions12_GLOBAL__N_116SequenceFunctionIllE7getStepEllPNS0_13DecodedVectorEibb.exit, label %if.then8.i @@ -18626,7 +18626,7 @@ _ZNK8facebook5velox13DecodedVector7valueAtIlEET_i.exit.i.i: ; preds = %if.end4.i if.end5.i.i: ; preds = %_ZNK8facebook5velox13DecodedVector7valueAtIlEET_i.exit.i.i %rem.i.i = srem i64 %49, 86400000 - %div.i.i = sdiv i64 %49, 86400000 + %div.i.i = sdiv exact i64 %49, 86400000 %cmp6.not.i.i = icmp eq i64 %rem.i.i, 0 br i1 %cmp6.not.i.i, label %_ZN8facebook5velox9functions12_GLOBAL__N_116SequenceFunctionIllE7getStepEllPNS0_13DecodedVectorEibb.exit.i, label %if.then8.i.i @@ -19486,7 +19486,7 @@ _ZNK8facebook5velox13DecodedVector7valueAtIiEET_i.exit.i.i.i.i.i.i.i: ; preds = if.end5.i.i.i.i.i.i.i: ; preds = %_ZNK8facebook5velox13DecodedVector7valueAtIiEET_i.exit.i.i.i.i.i.i.i %rem4.i.i.i.i.i.i.i = srem i32 %126, 86400000 - %div5.i.i.i.i.i.i.i = sdiv i32 %126, 86400000 + %div5.i.i.i.i.i.i.i = sdiv exact i32 %126, 86400000 %cmp6.not.i.i.i.i.i.i.i = icmp eq i32 %rem4.i.i.i.i.i.i.i, 0 br i1 %cmp6.not.i.i.i.i.i.i.i, label %_ZN8facebook5velox9functions12_GLOBAL__N_116SequenceFunctionINS0_9TimestampEiE7getStepEllPNS0_13DecodedVectorEibb.exit.i.i.i.i.i.i, label %if.then8.i.i.i.i.i.i.i @@ -20871,7 +20871,7 @@ _ZNK8facebook5velox13DecodedVector7valueAtIiEET_i.exit.i: ; preds = %if.end4.i.i if.end5.i: ; preds = %_ZNK8facebook5velox13DecodedVector7valueAtIiEET_i.exit.i %rem4.i = srem i32 %20, 86400000 - %div5.i = sdiv i32 %20, 86400000 + %div5.i = sdiv exact i32 %20, 86400000 %cmp6.not.i = icmp eq i32 %rem4.i, 0 br i1 %cmp6.not.i, label %_ZN8facebook5velox9functions12_GLOBAL__N_116SequenceFunctionINS0_9TimestampEiE7getStepEllPNS0_13DecodedVectorEibb.exit, label %if.then8.i @@ -21352,7 +21352,7 @@ _ZNK8facebook5velox13DecodedVector7valueAtIiEET_i.exit.i: ; preds = %if.end4.i.i if.end5.i: ; preds = %_ZNK8facebook5velox13DecodedVector7valueAtIiEET_i.exit.i %rem4.i = srem i32 %20, 86400000 - %div5.i = sdiv i32 %20, 86400000 + %div5.i = sdiv exact i32 %20, 86400000 %cmp6.not.i = icmp eq i32 %rem4.i, 0 br i1 %cmp6.not.i, label %_ZN8facebook5velox9functions12_GLOBAL__N_116SequenceFunctionINS0_9TimestampEiE7getStepEllPNS0_13DecodedVectorEibb.exit, label %if.then8.i @@ -22472,7 +22472,7 @@ _ZNK8facebook5velox13DecodedVector7valueAtIlEET_i.exit.i.i.i.i.i.i.i: ; preds = if.end5.i.i.i.i.i.i.i: ; preds = %_ZNK8facebook5velox13DecodedVector7valueAtIlEET_i.exit.i.i.i.i.i.i.i %rem.i.i.i.i.i.i.i = srem i64 %126, 86400000 - %div.i.i.i.i.i.i.i = sdiv i64 %126, 86400000 + %div.i.i.i.i.i.i.i = sdiv exact i64 %126, 86400000 %cmp6.not.i.i.i.i.i.i.i = icmp eq i64 %rem.i.i.i.i.i.i.i, 0 br i1 %cmp6.not.i.i.i.i.i.i.i, label %_ZN8facebook5velox9functions12_GLOBAL__N_116SequenceFunctionINS0_9TimestampElE7getStepEllPNS0_13DecodedVectorEibb.exit.i.i.i.i.i.i, label %if.then8.i.i.i.i.i.i.i @@ -23638,7 +23638,7 @@ _ZNK8facebook5velox13DecodedVector7valueAtIlEET_i.exit.i: ; preds = %if.end4.i.i if.end5.i: ; preds = %_ZNK8facebook5velox13DecodedVector7valueAtIlEET_i.exit.i %rem.i = srem i64 %20, 86400000 - %div.i = sdiv i64 %20, 86400000 + %div.i = sdiv exact i64 %20, 86400000 %cmp6.not.i = icmp eq i64 %rem.i, 0 br i1 %cmp6.not.i, label %_ZN8facebook5velox9functions12_GLOBAL__N_116SequenceFunctionINS0_9TimestampElE7getStepEllPNS0_13DecodedVectorEibb.exit, label %if.then8.i @@ -23868,7 +23868,7 @@ _ZNK8facebook5velox13DecodedVector7valueAtIlEET_i.exit.i: ; preds = %if.end4.i.i if.end5.i: ; preds = %_ZNK8facebook5velox13DecodedVector7valueAtIlEET_i.exit.i %rem.i = srem i64 %20, 86400000 - %div.i = sdiv i64 %20, 86400000 + %div.i = sdiv exact i64 %20, 86400000 %cmp6.not.i = icmp eq i64 %rem.i, 0 br i1 %cmp6.not.i, label %_ZN8facebook5velox9functions12_GLOBAL__N_116SequenceFunctionINS0_9TimestampElE7getStepEllPNS0_13DecodedVectorEibb.exit, label %if.then8.i diff --git a/bench/wasmtime-rs/optimized/16qf4j2oevjc61uc.ll b/bench/wasmtime-rs/optimized/16qf4j2oevjc61uc.ll index bd3fbdb6018..61cabb04e75 100644 --- a/bench/wasmtime-rs/optimized/16qf4j2oevjc61uc.ll +++ b/bench/wasmtime-rs/optimized/16qf4j2oevjc61uc.ll @@ -21793,7 +21793,7 @@ define internal fastcc { i1, i8 } @_ZN17cranelift_codegen8machinst4isle26shuffle call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) %11 = load i8, ptr %1, align 1, !noundef !4 %12 = urem i8 %11, %0 - %13 = udiv i8 %11, %0 + %13 = udiv exact i8 %11, %0 %14 = icmp eq i8 %12, 0 br i1 %14, label %15, label %.loopexit @@ -37024,14 +37024,14 @@ _ZN17cranelift_codegen8machinst4isle26shuffle_imm_as_le_lane_idx17hf5a8ab5e74d14 br label %_ZN17cranelift_codegen8machinst4isle26shuffle_imm_as_le_lane_idx17hf5a8ab5e74d1491dE.exit.thread _ZN17cranelift_codegen8machinst4isle26shuffle_imm_as_le_lane_idx17hf5a8ab5e74d1491dE.exit.thread: ; preds = %24, %38, %32, %19, %_ZN17cranelift_codegen8machinst4isle26shuffle_imm_as_le_lane_idx17hf5a8ab5e74d1491dE.exit24 - %.sroa.4.0.i29 = phi i8 [ %29, %_ZN17cranelift_codegen8machinst4isle26shuffle_imm_as_le_lane_idx17hf5a8ab5e74d1491dE.exit24 ], [ undef, %19 ], [ %29, %32 ], [ %29, %38 ], [ undef, %24 ] - %.sroa.5.0 = phi i8 [ %42, %_ZN17cranelift_codegen8machinst4isle26shuffle_imm_as_le_lane_idx17hf5a8ab5e74d1491dE.exit24 ], [ undef, %19 ], [ undef, %32 ], [ undef, %38 ], [ undef, %24 ] + %.sroa.4.0.i29 = phi i8 [ %42, %_ZN17cranelift_codegen8machinst4isle26shuffle_imm_as_le_lane_idx17hf5a8ab5e74d1491dE.exit24 ], [ undef, %19 ], [ undef, %32 ], [ undef, %38 ], [ undef, %24 ] + %.sroa.5.0 = phi i8 [ %29, %_ZN17cranelift_codegen8machinst4isle26shuffle_imm_as_le_lane_idx17hf5a8ab5e74d1491dE.exit24 ], [ undef, %19 ], [ undef, %32 ], [ undef, %38 ], [ undef, %24 ] %.sroa.0.1 = phi i8 [ 1, %_ZN17cranelift_codegen8machinst4isle26shuffle_imm_as_le_lane_idx17hf5a8ab5e74d1491dE.exit24 ], [ 0, %19 ], [ 0, %32 ], [ 0, %38 ], [ 0, %24 ] %.sroa.5.0.insert.ext = zext i8 %.sroa.5.0 to i24 %.sroa.5.0.insert.shift = shl nuw i24 %.sroa.5.0.insert.ext, 16 - %.sroa.4.0.insert.ext = zext i8 %.sroa.4.0.i29 to i24 + %.sroa.4.0.insert.ext = zext i8 %.sroa.4.0 to i24 %.sroa.4.0.insert.shift = shl nuw nsw i24 %.sroa.4.0.insert.ext, 8 - %.sroa.4.0.insert.insert = or disjoint i24 %.sroa.5.0.insert.shift, %.sroa.4.0.insert.shift + %.sroa.4.0.insert.insert = or disjoint i24 %.sroa.4.0.insert.shift, %.sroa.5.0.insert.shift %.sroa.0.0.insert.ext = zext nneg i8 %.sroa.0.1 to i24 %.sroa.0.0.insert.insert = or disjoint i24 %.sroa.4.0.insert.insert, %.sroa.0.0.insert.ext ret i24 %.sroa.0.0.insert.insert diff --git a/bench/wireshark/optimized/packet-isakmp.ll b/bench/wireshark/optimized/packet-isakmp.ll index 8bdb380057b..2870cb2e6b5 100644 --- a/bench/wireshark/optimized/packet-isakmp.ll +++ b/bench/wireshark/optimized/packet-isakmp.ll @@ -4297,11 +4297,7 @@ dissect_notif.exit: ; preds = %.lr.ph.i161, %.lr.p br i1 %1048, label %.preheader169.i.i, label %.loopexit.i.i .preheader169.i.i: ; preds = %1046 - %1049 = udiv i32 %983, 17 - %.not239.i.i = icmp ult i32 %983, 17 - br i1 %.not239.i.i, label %.loopexit.i.i, label %.lr.ph217.i.i - -.lr.ph217.i.i: ; preds = %.preheader169.i.i + %1049 = udiv exact i32 %983, 17 %1050 = load ptr, ptr %20, align 8 br label %1051 @@ -4430,14 +4426,10 @@ dissect_notif.exit: ; preds = %.lr.ph.i161, %.lr.p 1116: ; preds = %989 %1117 = urem i32 %983, 17 %1118 = icmp eq i32 %1117, 0 - br i1 %1118, label %.preheader181.i.i, label %.loopexit.i.i - -.preheader181.i.i: ; preds = %1116 - %1119 = udiv i32 %983, 17 - %.not233.i.i = icmp ult i32 %983, 17 - br i1 %.not233.i.i, label %.loopexit.i.i, label %.lr.ph199.i.i + br i1 %1118, label %.lr.ph199.i.i, label %.loopexit.i.i -.lr.ph199.i.i: ; preds = %.preheader181.i.i +.lr.ph199.i.i: ; preds = %1116 + %1119 = udiv exact i32 %983, 17 %1120 = load ptr, ptr %20, align 8 br label %1121 @@ -4466,11 +4458,9 @@ dissect_notif.exit: ; preds = %.lr.ph.i161, %.lr.p 1137: ; preds = %989 %1138 = urem i32 %983, 17 - %1139 = udiv i32 %983, 17 - %1140 = icmp ne i32 %1138, 0 - %.not232.i.i = icmp ult i32 %983, 17 - %or.cond = or i1 %1140, %.not232.i.i - br i1 %or.cond, label %.loopexit.i.i, label %.lr.ph196.i.i + %1139 = udiv exact i32 %983, 17 + %1140 = icmp eq i32 %1138, 0 + br i1 %1140, label %.lr.ph196.i.i, label %.loopexit.i.i .lr.ph196.i.i: ; preds = %1137 %1141 = load ptr, ptr %20, align 8 @@ -4651,7 +4641,7 @@ dissect_notif.exit: ; preds = %.lr.ph.i161, %.lr.p call void (ptr, ptr, ...) @proto_item_append_text(ptr noundef %1254, ptr noundef nonnull @.str.846, ptr noundef %1255) #17 br label %.loopexit.i.i -.loopexit.i.i: ; preds = %1165, %1155, %1142, %1121, %1111, %1098, %1088, %1078, %1068, %1051, %1034, %1020, %1010, %996, %1249, %1242, %1235, %1228, %1220, %1213, %1206, %1199, %1192, %1185, %1178, %1170, %1160, %1150, %1137, %1129, %.preheader181.i.i, %1116, %1106, %1093, %1083, %1073, %1063, %1059, %.preheader169.i.i, %1046, %1039, %1029, %1025, %1015, %1005, %1001, %991, %989 +.loopexit.i.i: ; preds = %1165, %1155, %1142, %1121, %1111, %1098, %1088, %1078, %1068, %1051, %1034, %1020, %1010, %996, %1249, %1242, %1235, %1228, %1220, %1213, %1206, %1199, %1192, %1185, %1178, %1170, %1160, %1150, %1137, %1129, %1116, %1106, %1093, %1083, %1073, %1063, %1059, %1046, %1039, %1029, %1025, %1015, %1005, %1001, %991, %989 %1256 = add i32 %983, %981 br label %dissect_config_attribute.exit.i diff --git a/bench/xgboost/optimized/charconv.ll b/bench/xgboost/optimized/charconv.ll index 78be2d1cfa9..897659e80be 100644 --- a/bench/xgboost/optimized/charconv.ll +++ b/bench/xgboost/optimized/charconv.ll @@ -761,7 +761,7 @@ define { ptr, i32 } @_ZN7xgboost6detail17FromCharFloatImplEPKciPf(ptr noundef %0 .lr.ph.i.i: ; preds = %127, %.lr.ph.i.i %.09.i.i = phi i32 [ %129, %.lr.ph.i.i ], [ %.0161219275290, %127 ] %.068.i.i = phi i32 [ %130, %.lr.ph.i.i ], [ 0, %127 ] - %129 = udiv i32 %.09.i.i, 5 + %129 = udiv exact i32 %.09.i.i, 5 %130 = add i32 %.068.i.i, 1 %131 = urem i32 %129, 5 %.not.i.i = icmp eq i32 %131, 0 @@ -966,7 +966,7 @@ define linkonce_odr noundef zeroext i8 @_ZN7xgboost6detail17PowerBaseComputer13T .lr.ph.i.i: ; preds = %.thread, %.lr.ph.i.i %.09.i.i = phi i32 [ %76, %.lr.ph.i.i ], [ %.sroa.11.8.extract.trunc, %.thread ] %.068.i.i = phi i32 [ %77, %.lr.ph.i.i ], [ 0, %.thread ] - %76 = udiv i32 %.09.i.i, 5 + %76 = udiv exact i32 %.09.i.i, 5 %77 = add i32 %.068.i.i, 1 %78 = urem i32 %76, 5 %.not.i.i = icmp eq i32 %78, 0 @@ -989,7 +989,7 @@ _ZN7xgboost6detail14RyuPowLogUtils18MultipleOfPowerOf5Ejj.exit: ; preds = %.lr.p .lr.ph.i.i85: ; preds = %82, %.lr.ph.i.i85 %.09.i.i86 = phi i32 [ %84, %.lr.ph.i.i85 ], [ %.sroa.8.0.extract.trunc, %82 ] %.068.i.i87 = phi i32 [ %85, %.lr.ph.i.i85 ], [ 0, %82 ] - %84 = udiv i32 %.09.i.i86, 5 + %84 = udiv exact i32 %.09.i.i86, 5 %85 = add i32 %.068.i.i87, 1 %86 = urem i32 %84, 5 %.not.i.i88 = icmp eq i32 %86, 0 @@ -1010,7 +1010,7 @@ _ZN7xgboost6detail14RyuPowLogUtils18MultipleOfPowerOf5Ejj.exit89: ; preds = %.lr .lr.ph.i.i92: ; preds = %89, %.lr.ph.i.i92 %.09.i.i93 = phi i32 [ %91, %.lr.ph.i.i92 ], [ %.sroa.19.8.extract.trunc, %89 ] %.068.i.i94 = phi i32 [ %92, %.lr.ph.i.i92 ], [ 0, %89 ] - %91 = udiv i32 %.09.i.i93, 5 + %91 = udiv exact i32 %.09.i.i93, 5 %92 = add i32 %.068.i.i94, 1 %93 = urem i32 %91, 5 %.not.i.i95 = icmp eq i32 %93, 0 @@ -1206,7 +1206,7 @@ define linkonce_odr i64 @_ZN7xgboost6detail17PowerBaseComputer22ShortestRepresen %28 = urem i32 %.sroa.14.288, 10 %29 = trunc nuw nsw i32 %28 to i8 %30 = udiv i32 %.sroa.14.288, 10 - %31 = udiv i32 %.sroa.2.285, 10 + %31 = udiv exact i32 %.sroa.2.285, 10 %32 = add nuw nsw i32 %.289, 1 %33 = urem i32 %31, 10 %34 = icmp eq i32 %33, 0 diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c5409e09ef4..58359229518 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/126438 export COMPTIME_MODE=0 # Please rebase manually