diff --git a/bench/box2d/optimized/b2_collision.cpp.ll b/bench/box2d/optimized/b2_collision.cpp.ll index c1f3753b5ca..3773297c170 100644 --- a/bench/box2d/optimized/b2_collision.cpp.ll +++ b/bench/box2d/optimized/b2_collision.cpp.ll @@ -796,33 +796,32 @@ for.body65.preheader: ; preds = %for.body42 %arrayidx55 = getelementptr inbounds [8 x %struct.b2Vec2], ptr %ps, i64 0, i64 %idxprom54 %15 = load i64, ptr %arrayidx55, align 8 store i64 %15, ptr %arrayidx53, align 8 - %16 = trunc i64 %13 to i32 - %p1.sroa.0.0.vec.extract = bitcast i32 %16 to float + %p1.sroa.0.0.vec.extract = extractelement <2 x float> %14, i64 0 %p1.sroa.0.4.vec.extract = extractelement <2 x float> %14, i64 1 - %17 = load float, ptr %ps, align 16 - %sub.i.i76 = fsub float %p1.sroa.0.0.vec.extract, %17 - %18 = load float, ptr %y2.i.i68, align 4 - %sub3.i.i79 = fsub float %p1.sroa.0.4.vec.extract, %18 + %16 = load float, ptr %ps, align 16 + %sub.i.i76 = fsub float %p1.sroa.0.0.vec.extract, %16 + %17 = load float, ptr %y2.i.i68, align 4 + %sub3.i.i79 = fsub float %p1.sroa.0.4.vec.extract, %17 %mul3.i.i80 = fmul float %sub3.i.i79, %sub3.i.i79 - %19 = tail call noundef float @llvm.fmuladd.f32(float %sub.i.i76, float %sub.i.i76, float %mul3.i.i80) + %18 = tail call noundef float @llvm.fmuladd.f32(float %sub.i.i76, float %sub.i.i76, float %mul3.i.i80) br label %for.body65 for.body65: ; preds = %for.body65.preheader, %for.body65 %indvars.iv234 = phi i64 [ 1, %for.body65.preheader ], [ %indvars.iv.next235, %for.body65 ] %i2.0202 = phi i32 [ 0, %for.body65.preheader ], [ %i2.1, %for.body65 ] - %dsq2.0201 = phi float [ %19, %for.body65.preheader ], [ %dsq2.1, %for.body65 ] + %dsq2.0201 = phi float [ %18, %for.body65.preheader ], [ %dsq2.1, %for.body65 ] %arrayidx68 = getelementptr inbounds [8 x %struct.b2Vec2], ptr %ps, i64 0, i64 %indvars.iv234 - %20 = load float, ptr %arrayidx68, align 8 - %sub.i.i81 = fsub float %p1.sroa.0.0.vec.extract, %20 + %19 = load float, ptr %arrayidx68, align 8 + %sub.i.i81 = fsub float %p1.sroa.0.0.vec.extract, %19 %y2.i.i83 = getelementptr inbounds i8, ptr %arrayidx68, i64 4 - %21 = load float, ptr %y2.i.i83, align 4 - %sub3.i.i84 = fsub float %p1.sroa.0.4.vec.extract, %21 + %20 = load float, ptr %y2.i.i83, align 4 + %sub3.i.i84 = fsub float %p1.sroa.0.4.vec.extract, %20 %mul3.i.i85 = fmul float %sub3.i.i84, %sub3.i.i84 - %22 = tail call noundef float @llvm.fmuladd.f32(float %sub.i.i81, float %sub.i.i81, float %mul3.i.i85) - %cmp70 = fcmp ogt float %22, %dsq2.0201 - %dsq2.1 = select i1 %cmp70, float %22, float %dsq2.0201 - %23 = trunc nuw nsw i64 %indvars.iv234 to i32 - %i2.1 = select i1 %cmp70, i32 %23, i32 %i2.0202 + %21 = tail call noundef float @llvm.fmuladd.f32(float %sub.i.i81, float %sub.i.i81, float %mul3.i.i85) + %cmp70 = fcmp ogt float %21, %dsq2.0201 + %dsq2.1 = select i1 %cmp70, float %21, float %dsq2.0201 + %22 = trunc nuw nsw i64 %indvars.iv234 to i32 + %i2.1 = select i1 %cmp70, i32 %22, i32 %i2.0202 %indvars.iv.next235 = add nuw nsw i64 %indvars.iv234, 1 %exitcond238.not = icmp eq i64 %indvars.iv.next235, %idxprom54 br i1 %exitcond238.not, label %for.end75, label %for.body65, !llvm.loop !15 @@ -830,22 +829,21 @@ for.body65: ; preds = %for.body65.preheade for.end75: ; preds = %for.body65 %idxprom76 = zext nneg i32 %i2.1 to i64 %arrayidx77 = getelementptr inbounds [8 x %struct.b2Vec2], ptr %ps, i64 0, i64 %idxprom76 - %24 = load i64, ptr %arrayidx77, align 8 - %25 = bitcast i64 %24 to <2 x float> + %23 = load i64, ptr %arrayidx77, align 8 + %24 = bitcast i64 %23 to <2 x float> %sub78 = add nsw i32 %n.1, -2 %idxprom79 = zext nneg i32 %sub78 to i64 %arrayidx80 = getelementptr inbounds [8 x %struct.b2Vec2], ptr %ps, i64 0, i64 %idxprom79 - %26 = load i64, ptr %arrayidx80, align 8 - store i64 %26, ptr %arrayidx77, align 8 - %27 = trunc i64 %24 to i32 - %p2.sroa.0.0.vec.extract = bitcast i32 %27 to float - %sub.i = fsub float %p2.sroa.0.0.vec.extract, %p1.sroa.0.0.vec.extract - %28 = fsub <2 x float> %25, %14 - %sub3.i = extractelement <2 x float> %28, i64 1 - %retval.sroa.0.4.vec.insert.i89 = insertelement <2 x float> %28, float %sub.i, i64 0 + %25 = load i64, ptr %arrayidx80, align 8 + store i64 %25, ptr %arrayidx77, align 8 + %26 = fsub <2 x float> %24, %14 + %sub.i = extractelement <2 x float> %26, i64 0 + %27 = fsub <2 x float> %24, %14 + %sub3.i = extractelement <2 x float> %27, i64 1 + %retval.sroa.0.4.vec.insert.i89 = shufflevector <2 x float> %26, <2 x float> %27, <2 x i32> %mul4.i.i = fmul float %sub3.i, %sub3.i - %29 = tail call float @llvm.fmuladd.f32(float %sub.i, float %sub.i, float %mul4.i.i) - %sqrt.i.i = tail call noundef float @llvm.sqrt.f32(float %29) + %28 = tail call float @llvm.fmuladd.f32(float %sub.i, float %sub.i, float %mul4.i.i) + %sqrt.i.i = tail call noundef float @llvm.sqrt.f32(float %28) %cmp.i = fcmp olt float %sqrt.i.i, 0x3E80000000000000 br i1 %cmp.i, label %for.body89.lr.ph, label %if.end.i @@ -861,7 +859,7 @@ for.body89.lr.ph: ; preds = %if.end.i, %for.end7 %e.sroa.0.0 = phi <2 x float> [ %retval.sroa.0.4.vec.insert.i89, %for.end75 ], [ %e.sroa.0.4.vec.insert, %if.end.i ] %e.sroa.0.4.vec.extract146 = extractelement <2 x float> %e.sroa.0.0, i64 1 %e.sroa.0.0.vec.extract143 = extractelement <2 x float> %e.sroa.0.0, i64 0 - %30 = fneg float %e.sroa.0.0.vec.extract143 + %29 = fneg float %e.sroa.0.0.vec.extract143 %smax = tail call i32 @llvm.smax.i32(i32 %sub78, i32 1) %wide.trip.count242 = zext nneg i32 %smax to i64 br label %for.body89 @@ -871,14 +869,14 @@ for.body89: ; preds = %for.body89.lr.ph, % %leftCount.0206 = phi i32 [ 0, %for.body89.lr.ph ], [ %leftCount.1, %for.inc111 ] %rightCount.0205 = phi i32 [ 0, %for.body89.lr.ph ], [ %rightCount.1, %for.inc111 ] %arrayidx92 = getelementptr inbounds [8 x %struct.b2Vec2], ptr %ps, i64 0, i64 %indvars.iv239 - %31 = load float, ptr %arrayidx92, align 8 - %sub.i91 = fsub float %31, %p1.sroa.0.0.vec.extract + %30 = load float, ptr %arrayidx92, align 8 + %sub.i91 = fsub float %30, %p1.sroa.0.0.vec.extract %y.i92 = getelementptr inbounds i8, ptr %arrayidx92, i64 4 - %32 = load float, ptr %y.i92, align 4 - %sub3.i94 = fsub float %32, %p1.sroa.0.4.vec.extract - %neg.i = fmul float %sub3.i94, %30 - %33 = tail call noundef float @llvm.fmuladd.f32(float %sub.i91, float %e.sroa.0.4.vec.extract146, float %neg.i) - %cmp95 = fcmp ult float %33, 0x3F847AE140000000 + %31 = load float, ptr %y.i92, align 4 + %sub3.i94 = fsub float %31, %p1.sroa.0.4.vec.extract + %neg.i = fmul float %sub3.i94, %29 + %32 = tail call noundef float @llvm.fmuladd.f32(float %sub.i91, float %e.sroa.0.4.vec.extract146, float %neg.i) + %cmp95 = fcmp ult float %32, 0x3F847AE140000000 br i1 %cmp95, label %if.else, label %if.then96 if.then96: ; preds = %for.body89 @@ -886,7 +884,7 @@ if.then96: ; preds = %for.body89 br label %for.inc111.sink.split if.else: ; preds = %for.body89 - %cmp102 = fcmp ugt float %33, 0xBF847AE140000000 + %cmp102 = fcmp ugt float %32, 0xBF847AE140000000 br i1 %cmp102, label %for.inc111, label %if.then103 if.then103: ; preds = %if.else @@ -900,8 +898,8 @@ for.inc111.sink.split: ; preds = %if.then103, %if.the %leftCount.1.ph = phi i32 [ %leftCount.0206, %if.then96 ], [ %inc106, %if.then103 ] %idxprom100 = sext i32 %rightCount.0205.sink to i64 %arrayidx101 = getelementptr inbounds [6 x %struct.b2Vec2], ptr %rightPoints.sink, i64 0, i64 %idxprom100 - %34 = load i64, ptr %arrayidx92, align 8 - store i64 %34, ptr %arrayidx101, align 8 + %33 = load i64, ptr %arrayidx92, align 8 + store i64 %33, ptr %arrayidx101, align 8 br label %for.inc111 for.inc111: ; preds = %for.inc111.sink.split, %if.else @@ -912,37 +910,37 @@ for.inc111: ; preds = %for.inc111.sink.spl br i1 %exitcond243.not, label %for.end113, label %for.body89, !llvm.loop !16 for.end113: ; preds = %for.inc111 - call fastcc void @_ZL13b2RecurseHull6b2Vec2S_PS_i(ptr noalias align 4 %hull1, <2 x float> %14, <2 x float> %25, ptr noundef %rightPoints, i32 noundef %rightCount.1) - call fastcc void @_ZL13b2RecurseHull6b2Vec2S_PS_i(ptr noalias align 4 %hull2, <2 x float> %25, <2 x float> %14, ptr noundef %leftPoints, i32 noundef %leftCount.1) + call fastcc void @_ZL13b2RecurseHull6b2Vec2S_PS_i(ptr noalias align 4 %hull1, <2 x float> %14, <2 x float> %24, ptr noundef %rightPoints, i32 noundef %rightCount.1) + call fastcc void @_ZL13b2RecurseHull6b2Vec2S_PS_i(ptr noalias align 4 %hull2, <2 x float> %24, <2 x float> %14, ptr noundef %leftPoints, i32 noundef %leftCount.1) %count118 = getelementptr inbounds i8, ptr %hull1, i64 64 - %35 = load i32, ptr %count118, align 4 - %cmp119 = icmp eq i32 %35, 0 + %34 = load i32, ptr %count118, align 4 + %cmp119 = icmp eq i32 %34, 0 %count120 = getelementptr inbounds i8, ptr %hull2, i64 64 - %36 = load i32, ptr %count120, align 4 - %cmp121 = icmp eq i32 %36, 0 + %35 = load i32, ptr %count120, align 4 + %cmp121 = icmp eq i32 %35, 0 %or.cond1 = select i1 %cmp119, i1 %cmp121, i1 false br i1 %or.cond1, label %return, label %if.end123 if.end123: ; preds = %for.end113 store i32 1, ptr %count1, align 4 store i64 %13, ptr %agg.result, align 4 - %cmp132210 = icmp sgt i32 %35, 0 + %cmp132210 = icmp sgt i32 %34, 0 br i1 %cmp132210, label %for.body133.preheader, label %for.end144 for.body133.preheader: ; preds = %if.end123 - %wide.trip.count247 = zext nneg i32 %35 to i64 + %wide.trip.count247 = zext nneg i32 %34 to i64 br label %for.body133 for.body133: ; preds = %for.body133.preheader, %for.body133 %indvars.iv244 = phi i64 [ 0, %for.body133.preheader ], [ %indvars.iv.next245, %for.body133 ] %arrayidx136 = getelementptr inbounds [8 x %struct.b2Vec2], ptr %hull1, i64 0, i64 %indvars.iv244 - %37 = load i32, ptr %count1, align 4 - %inc139 = add nsw i32 %37, 1 + %36 = load i32, ptr %count1, align 4 + %inc139 = add nsw i32 %36, 1 store i32 %inc139, ptr %count1, align 4 - %idxprom140 = sext i32 %37 to i64 + %idxprom140 = sext i32 %36 to i64 %arrayidx141 = getelementptr inbounds [8 x %struct.b2Vec2], ptr %agg.result, i64 0, i64 %idxprom140 - %38 = load i64, ptr %arrayidx136, align 4 - store i64 %38, ptr %arrayidx141, align 4 + %37 = load i64, ptr %arrayidx136, align 4 + store i64 %37, ptr %arrayidx141, align 4 %indvars.iv.next245 = add nuw nsw i64 %indvars.iv244, 1 %exitcond248.not = icmp eq i64 %indvars.iv.next245, %wide.trip.count247 br i1 %exitcond248.not, label %for.end144.loopexit, label %for.body133, !llvm.loop !17 @@ -952,42 +950,42 @@ for.end144.loopexit: ; preds = %for.body133 br label %for.end144 for.end144: ; preds = %for.end144.loopexit, %if.end123 - %39 = phi i32 [ %.pre, %for.end144.loopexit ], [ 1, %if.end123 ] - %inc147 = add nsw i32 %39, 1 + %38 = phi i32 [ %.pre, %for.end144.loopexit ], [ 1, %if.end123 ] + %inc147 = add nsw i32 %38, 1 store i32 %inc147, ptr %count1, align 4 - %idxprom148 = sext i32 %39 to i64 + %idxprom148 = sext i32 %38 to i64 %arrayidx149 = getelementptr inbounds [8 x %struct.b2Vec2], ptr %agg.result, i64 0, i64 %idxprom148 - store i64 %24, ptr %arrayidx149, align 4 - %cmp153212 = icmp sgt i32 %36, 0 + store i64 %23, ptr %arrayidx149, align 4 + %cmp153212 = icmp sgt i32 %35, 0 br i1 %cmp153212, label %for.body154.preheader, label %while.cond.preheader for.body154.preheader: ; preds = %for.end144 - %wide.trip.count252 = zext nneg i32 %36 to i64 + %wide.trip.count252 = zext nneg i32 %35 to i64 br label %for.body154 while.cond.preheader: ; preds = %for.body154, %for.end144 - %40 = load i32, ptr %count1, align 4 - %cmp168218 = icmp sgt i32 %40, 2 + %39 = load i32, ptr %count1, align 4 + %cmp168218 = icmp sgt i32 %39, 2 br i1 %cmp168218, label %for.cond170.preheader, label %if.then224 for.body154: ; preds = %for.body154.preheader, %for.body154 %indvars.iv249 = phi i64 [ 0, %for.body154.preheader ], [ %indvars.iv.next250, %for.body154 ] %arrayidx157 = getelementptr inbounds [8 x %struct.b2Vec2], ptr %hull2, i64 0, i64 %indvars.iv249 - %41 = load i32, ptr %count1, align 4 - %inc160 = add nsw i32 %41, 1 + %40 = load i32, ptr %count1, align 4 + %inc160 = add nsw i32 %40, 1 store i32 %inc160, ptr %count1, align 4 - %idxprom161 = sext i32 %41 to i64 + %idxprom161 = sext i32 %40 to i64 %arrayidx162 = getelementptr inbounds [8 x %struct.b2Vec2], ptr %agg.result, i64 0, i64 %idxprom161 - %42 = load i64, ptr %arrayidx157, align 4 - store i64 %42, ptr %arrayidx162, align 4 + %41 = load i64, ptr %arrayidx157, align 4 + store i64 %41, ptr %arrayidx162, align 4 %indvars.iv.next250 = add nuw nsw i64 %indvars.iv249, 1 %exitcond253.not = icmp eq i64 %indvars.iv.next250, %wide.trip.count252 br i1 %exitcond253.not, label %while.cond.preheader, label %for.body154, !llvm.loop !18 for.cond170.preheader: ; preds = %while.cond.preheader, %for.end221 - %43 = phi i32 [ %62, %for.end221 ], [ %40, %while.cond.preheader ] - %44 = zext nneg i32 %43 to i64 - %wide.trip.count259 = zext nneg i32 %43 to i64 + %42 = phi i32 [ %61, %for.end221 ], [ %39, %while.cond.preheader ] + %43 = zext nneg i32 %42 to i64 + %wide.trip.count259 = zext nneg i32 %42 to i64 br label %for.cond170 for.cond170: ; preds = %for.cond170.preheader, %_ZN6b2Vec29NormalizeEv.exit113 @@ -998,32 +996,32 @@ for.cond170: ; preds = %for.cond170.prehead for.body173: ; preds = %for.cond170 %indvars.iv.next255 = add nuw nsw i64 %indvars.iv254, 1 - %45 = trunc nuw i64 %indvars.iv.next255 to i32 - %rem = urem i32 %45, %43 - %46 = trunc i64 %indvars.iv254 to i32 - %47 = add i32 %46, 2 - %rem179 = urem i32 %47, %43 + %44 = trunc nuw i64 %indvars.iv.next255 to i32 + %rem = urem i32 %44, %42 + %45 = trunc i64 %indvars.iv254 to i32 + %46 = add i32 %45, 2 + %rem179 = urem i32 %46, %42 %arrayidx183 = getelementptr inbounds [8 x %struct.b2Vec2], ptr %agg.result, i64 0, i64 %indvars.iv254 - %48 = load float, ptr %arrayidx183, align 4 + %47 = load float, ptr %arrayidx183, align 4 %arrayidx183.sroa_idx = getelementptr inbounds i8, ptr %arrayidx183, i64 4 - %49 = load float, ptr %arrayidx183.sroa_idx, align 4 + %48 = load float, ptr %arrayidx183.sroa_idx, align 4 %idxprom186 = zext nneg i32 %rem to i64 %arrayidx187 = getelementptr inbounds [8 x %struct.b2Vec2], ptr %agg.result, i64 0, i64 %idxprom186 - %50 = load float, ptr %arrayidx187, align 4 + %49 = load float, ptr %arrayidx187, align 4 %arrayidx187.sroa_idx = getelementptr inbounds i8, ptr %arrayidx187, i64 4 - %51 = load float, ptr %arrayidx187.sroa_idx, align 4 + %50 = load float, ptr %arrayidx187.sroa_idx, align 4 %idxprom189 = zext nneg i32 %rem179 to i64 %arrayidx190 = getelementptr inbounds [8 x %struct.b2Vec2], ptr %agg.result, i64 0, i64 %idxprom189 - %52 = load float, ptr %arrayidx190, align 4 + %51 = load float, ptr %arrayidx190, align 4 %arrayidx190.sroa_idx = getelementptr inbounds i8, ptr %arrayidx190, i64 4 - %53 = load float, ptr %arrayidx190.sroa_idx, align 4 - %sub.i98 = fsub float %52, %48 - %sub3.i101 = fsub float %53, %49 + %52 = load float, ptr %arrayidx190.sroa_idx, align 4 + %sub.i98 = fsub float %51, %47 + %sub3.i101 = fsub float %52, %48 %retval.sroa.0.0.vec.insert.i102 = insertelement <2 x float> poison, float %sub.i98, i64 0 %retval.sroa.0.4.vec.insert.i103 = insertelement <2 x float> %retval.sroa.0.0.vec.insert.i102, float %sub3.i101, i64 1 %mul4.i.i105 = fmul float %sub3.i101, %sub3.i101 - %54 = tail call float @llvm.fmuladd.f32(float %sub.i98, float %sub.i98, float %mul4.i.i105) - %sqrt.i.i106 = tail call noundef float @llvm.sqrt.f32(float %54) + %53 = tail call float @llvm.fmuladd.f32(float %sub.i98, float %sub.i98, float %mul4.i.i105) + %sqrt.i.i106 = tail call noundef float @llvm.sqrt.f32(float %53) %cmp.i107 = fcmp olt float %sqrt.i.i106, 0x3E80000000000000 br i1 %cmp.i107, label %_ZN6b2Vec29NormalizeEv.exit113, label %if.end.i108 @@ -1037,38 +1035,38 @@ if.end.i108: ; preds = %for.body173 _ZN6b2Vec29NormalizeEv.exit113: ; preds = %for.body173, %if.end.i108 %e191.sroa.0.0 = phi <2 x float> [ %retval.sroa.0.4.vec.insert.i103, %for.body173 ], [ %e191.sroa.0.4.vec.insert, %if.end.i108 ] - %sub.i114 = fsub float %50, %48 - %sub3.i117 = fsub float %51, %49 + %sub.i114 = fsub float %49, %47 + %sub3.i117 = fsub float %50, %48 %e191.sroa.0.4.vec.extract134 = extractelement <2 x float> %e191.sroa.0.0, i64 1 %e191.sroa.0.0.vec.extract131 = extractelement <2 x float> %e191.sroa.0.0, i64 0 - %55 = fneg float %e191.sroa.0.0.vec.extract131 - %neg.i128 = fmul float %sub3.i117, %55 - %56 = tail call noundef float @llvm.fmuladd.f32(float %sub.i114, float %e191.sroa.0.4.vec.extract134, float %neg.i128) - %cmp198 = fcmp ugt float %56, 0x3F847AE140000000 + %54 = fneg float %e191.sroa.0.0.vec.extract131 + %neg.i128 = fmul float %sub3.i117, %54 + %55 = tail call noundef float @llvm.fmuladd.f32(float %sub.i114, float %e191.sroa.0.4.vec.extract134, float %neg.i128) + %cmp198 = fcmp ugt float %55, 0x3F847AE140000000 %indvars.iv.next262 = add nuw nsw i64 %indvars.iv261, 1 br i1 %cmp198, label %for.cond170, label %for.cond201.preheader, !llvm.loop !19 for.cond201.preheader: ; preds = %_ZN6b2Vec29NormalizeEv.exit113 - %sub203214 = add nsw i32 %43, -1 + %sub203214 = add nsw i32 %42, -1 %cmp204215 = icmp slt i32 %rem, %sub203214 br i1 %cmp204215, label %for.body205.preheader, label %for.end215 for.body205.preheader: ; preds = %for.cond201.preheader - %57 = zext i32 %43 to i64 - %58 = urem i64 %indvars.iv261, %57 + %56 = zext i32 %42 to i64 + %57 = urem i64 %indvars.iv261, %56 br label %for.body205 for.body205: ; preds = %for.body205.preheader, %for.body205 - %indvars.iv264 = phi i64 [ %58, %for.body205.preheader ], [ %indvars.iv.next265, %for.body205 ] + %indvars.iv264 = phi i64 [ %57, %for.body205.preheader ], [ %indvars.iv.next265, %for.body205 ] %indvars.iv.next265 = add nuw nsw i64 %indvars.iv264, 1 %arrayidx209 = getelementptr inbounds [8 x %struct.b2Vec2], ptr %agg.result, i64 0, i64 %indvars.iv.next265 %arrayidx212 = getelementptr inbounds [8 x %struct.b2Vec2], ptr %agg.result, i64 0, i64 %indvars.iv264 - %59 = load i64, ptr %arrayidx209, align 4 - store i64 %59, ptr %arrayidx212, align 4 - %60 = load i32, ptr %count1, align 4 - %sub203 = add nsw i32 %60, -1 - %61 = trunc nuw i64 %indvars.iv.next265 to i32 - %cmp204 = icmp sgt i32 %sub203, %61 + %58 = load i64, ptr %arrayidx209, align 4 + store i64 %58, ptr %arrayidx212, align 4 + %59 = load i32, ptr %count1, align 4 + %sub203 = add nsw i32 %59, -1 + %60 = trunc nuw i64 %indvars.iv.next265 to i32 + %cmp204 = icmp sgt i32 %sub203, %60 br i1 %cmp204, label %for.body205, label %for.end215, !llvm.loop !20 for.end215: ; preds = %for.body205, %for.cond201.preheader @@ -1077,15 +1075,15 @@ for.end215: ; preds = %for.body205, %for.c br label %for.end221 for.end221: ; preds = %for.cond170, %for.end215 - %62 = phi i32 [ %sub203.lcssa, %for.end215 ], [ %43, %for.cond170 ] - %cmp172268 = icmp samesign ult i64 %indvars.iv254, %44 - %cmp168 = icmp sgt i32 %62, 2 - %63 = and i1 %cmp172268, %cmp168 - br i1 %63, label %for.cond170.preheader, label %while.end, !llvm.loop !21 + %61 = phi i32 [ %sub203.lcssa, %for.end215 ], [ %42, %for.cond170 ] + %cmp172268 = icmp samesign ult i64 %indvars.iv254, %43 + %cmp168 = icmp sgt i32 %61, 2 + %62 = and i1 %cmp172268, %cmp168 + br i1 %62, label %for.cond170.preheader, label %while.end, !llvm.loop !21 while.end: ; preds = %for.end221 - %64 = icmp slt i32 %62, 3 - br i1 %64, label %if.then224, label %return + %63 = icmp slt i32 %61, 3 + br i1 %63, label %if.then224, label %return if.then224: ; preds = %while.cond.preheader, %while.end store i32 0, ptr %count1, align 4 diff --git a/bench/image-rs/optimized/2ndzmzcdt55acj4k.ll b/bench/image-rs/optimized/2ndzmzcdt55acj4k.ll index b92476e93cc..c09561859af 100644 --- a/bench/image-rs/optimized/2ndzmzcdt55acj4k.ll +++ b/bench/image-rs/optimized/2ndzmzcdt55acj4k.ll @@ -31711,7 +31711,7 @@ define void @_ZN5image6codecs4webp7decoder13WebPRiffChunk11from_fourcc17hd2794e3 %.sroa.0.i = alloca { i8, [31 x i8] }, align 8 %.sroa.4 = alloca [39 x i8], align 1 %4 = bitcast i32 %1 to <4 x i8> - %.sroa.0.0.vec.extract = trunc i32 %1 to i8 + %.sroa.0.0.vec.extract = extractelement <4 x i8> %4, i64 0 switch i8 %.sroa.0.0.vec.extract, label %5 [ i8 82, label %14 i8 87, label %18 @@ -31780,30 +31780,33 @@ define void @_ZN5image6codecs4webp7decoder13WebPRiffChunk11from_fourcc17hd2794e3 br label %40 14: ; preds = %2 - %15 = icmp eq <4 x i8> %4, - %shift = shufflevector <4 x i1> %15, <4 x i1> poison, <4 x i32> - %16 = and <4 x i1> %15, %shift - %or.cond = extractelement <4 x i1> %16, i64 1 + %.sroa.0.1.vec.extract = extractelement <4 x i8> %4, i64 1 + %15 = icmp eq i8 %.sroa.0.1.vec.extract, 73 + %.sroa.0.2.vec.extract52 = extractelement <4 x i8> %4, i64 2 + %16 = icmp eq i8 %.sroa.0.2.vec.extract52, 70 + %or.cond = select i1 %15, i1 %16, i1 false %.sroa.0.3.vec.extract68 = extractelement <4 x i8> %4, i64 3 %17 = icmp eq i8 %.sroa.0.3.vec.extract68, 70 - %or.cond5 = and i1 %17, %or.cond + %or.cond5 = select i1 %or.cond, i1 %17, i1 false br i1 %or.cond5, label %38, label %5 18: ; preds = %2 - %19 = icmp eq <4 x i8> %4, - %shift80 = shufflevector <4 x i1> %19, <4 x i1> poison, <4 x i32> - %20 = and <4 x i1> %19, %shift80 - %or.cond8 = extractelement <4 x i1> %20, i64 1 + %.sroa.0.1.vec.extract38 = extractelement <4 x i8> %4, i64 1 + %19 = icmp eq i8 %.sroa.0.1.vec.extract38, 69 + %.sroa.0.2.vec.extract54 = extractelement <4 x i8> %4, i64 2 + %20 = icmp eq i8 %.sroa.0.2.vec.extract54, 66 + %or.cond8 = select i1 %19, i1 %20, i1 false %.sroa.0.3.vec.extract70 = extractelement <4 x i8> %4, i64 3 %21 = icmp eq i8 %.sroa.0.3.vec.extract70, 80 - %or.cond11 = and i1 %21, %or.cond8 + %or.cond11 = select i1 %or.cond8, i1 %21, i1 false br i1 %or.cond11, label %41, label %5 22: ; preds = %2 - %23 = icmp eq <4 x i8> %4, - %shift81 = shufflevector <4 x i1> %23, <4 x i1> poison, <4 x i32> - %24 = and <4 x i1> %23, %shift81 - %or.cond14 = extractelement <4 x i1> %24, i64 1 + %.sroa.0.1.vec.extract40 = extractelement <4 x i8> %4, i64 1 + %23 = icmp eq i8 %.sroa.0.1.vec.extract40, 80 + %.sroa.0.2.vec.extract56 = extractelement <4 x i8> %4, i64 2 + %24 = icmp eq i8 %.sroa.0.2.vec.extract56, 56 + %or.cond14 = select i1 %23, i1 %24, i1 false br i1 %or.cond14, label %43, label %5 25: ; preds = %2 @@ -31814,33 +31817,36 @@ define void @_ZN5image6codecs4webp7decoder13WebPRiffChunk11from_fourcc17hd2794e3 ] 26: ; preds = %2 - %27 = icmp eq <4 x i8> %4, - %shift82 = shufflevector <4 x i1> %27, <4 x i1> poison, <4 x i32> - %28 = and <4 x i1> %27, %shift82 - %or.cond20 = extractelement <4 x i1> %28, i64 1 + %.sroa.0.1.vec.extract44 = extractelement <4 x i8> %4, i64 1 + %27 = icmp eq i8 %.sroa.0.1.vec.extract44, 67 + %.sroa.0.2.vec.extract58 = extractelement <4 x i8> %4, i64 2 + %28 = icmp eq i8 %.sroa.0.2.vec.extract58, 67 + %or.cond20 = select i1 %27, i1 %28, i1 false %.sroa.0.3.vec.extract74 = extractelement <4 x i8> %4, i64 3 %29 = icmp eq i8 %.sroa.0.3.vec.extract74, 80 - %or.cond23 = and i1 %29, %or.cond20 + %or.cond23 = select i1 %or.cond20, i1 %29, i1 false br i1 %or.cond23, label %64, label %5 30: ; preds = %2 - %31 = icmp eq <4 x i8> %4, - %shift83 = shufflevector <4 x i1> %31, <4 x i1> poison, <4 x i32> - %32 = and <4 x i1> %31, %shift83 - %or.cond26 = extractelement <4 x i1> %32, i64 1 + %.sroa.0.1.vec.extract46 = extractelement <4 x i8> %4, i64 1 + %31 = icmp eq i8 %.sroa.0.1.vec.extract46, 88 + %.sroa.0.2.vec.extract60 = extractelement <4 x i8> %4, i64 2 + %32 = icmp eq i8 %.sroa.0.2.vec.extract60, 73 + %or.cond26 = select i1 %31, i1 %32, i1 false %.sroa.0.3.vec.extract76 = extractelement <4 x i8> %4, i64 3 %33 = icmp eq i8 %.sroa.0.3.vec.extract76, 70 - %or.cond29 = and i1 %33, %or.cond26 + %or.cond29 = select i1 %or.cond26, i1 %33, i1 false br i1 %or.cond29, label %66, label %5 34: ; preds = %2 - %35 = icmp eq <4 x i8> %4, - %shift84 = shufflevector <4 x i1> %35, <4 x i1> poison, <4 x i32> - %36 = and <4 x i1> %35, %shift84 - %or.cond32 = extractelement <4 x i1> %36, i64 1 + %.sroa.0.1.vec.extract48 = extractelement <4 x i8> %4, i64 1 + %35 = icmp eq i8 %.sroa.0.1.vec.extract48, 77 + %.sroa.0.2.vec.extract62 = extractelement <4 x i8> %4, i64 2 + %36 = icmp eq i8 %.sroa.0.2.vec.extract62, 80 + %or.cond32 = select i1 %35, i1 %36, i1 false %.sroa.0.3.vec.extract78 = extractelement <4 x i8> %4, i64 3 %37 = icmp eq i8 %.sroa.0.3.vec.extract78, 32 - %or.cond35 = and i1 %37, %or.cond32 + %or.cond35 = select i1 %or.cond32, i1 %37, i1 false br i1 %or.cond35, label %68, label %5 38: ; preds = %14 @@ -31892,10 +31898,11 @@ define void @_ZN5image6codecs4webp7decoder13WebPRiffChunk11from_fourcc17hd2794e3 ] 51: ; preds = %25 - %52 = icmp eq <4 x i8> %4, - %shift85 = shufflevector <4 x i1> %52, <4 x i1> poison, <4 x i32> - %53 = and <4 x i1> %52, %shift85 - %or.cond17 = extractelement <4 x i1> %53, i64 2 + %.sroa.0.2.vec.extract50 = extractelement <4 x i8> %4, i64 2 + %52 = icmp eq i8 %.sroa.0.2.vec.extract50, 80 + %.sroa.0.3.vec.extract72 = extractelement <4 x i8> %4, i64 3 + %53 = icmp eq i8 %.sroa.0.3.vec.extract72, 72 + %or.cond17 = select i1 %52, i1 %53, i1 false br i1 %or.cond17, label %62, label %5 54: ; preds = %50 diff --git a/bench/imgui/optimized/imgui_widgets.cpp.ll b/bench/imgui/optimized/imgui_widgets.cpp.ll index 5d128bff129..748ab191112 100644 --- a/bench/imgui/optimized/imgui_widgets.cpp.ll +++ b/bench/imgui/optimized/imgui_widgets.cpp.ll @@ -3148,8 +3148,9 @@ if.then38: ; preds = %if.end20 %cond.i = select i1 %cmp.i, float 1.000000e+00, float %conv39 %DrawList = getelementptr inbounds i8, ptr %2, i64 680 %16 = load ptr, ptr %DrawList, align 8 + %check_bb.sroa.0.0.vec.extract74 = extractelement <2 x float> %12, i64 0 %check_bb.sroa.0.4.vec.extract79 = extractelement <2 x float> %12, i64 1 - %add.i58 = fadd float %cond.i, %6 + %add.i58 = fadd float %cond.i, %check_bb.sroa.0.0.vec.extract74 %add3.i59 = fadd float %cond.i, %check_bb.sroa.0.4.vec.extract79 %retval.sroa.0.0.vec.insert.i60 = insertelement <2 x float> poison, float %add.i58, i64 0 %retval.sroa.0.4.vec.insert.i61 = insertelement <2 x float> %retval.sroa.0.0.vec.insert.i60, float %add3.i59, i64 1 @@ -3180,8 +3181,9 @@ if.then53: ; preds = %if.else %cond.i65 = select i1 %cmp.i64, float 1.000000e+00, float %conv57 %DrawList59 = getelementptr inbounds i8, ptr %2, i64 680 %19 = load ptr, ptr %DrawList59, align 8 + %check_bb.sroa.0.0.vec.extract = extractelement <2 x float> %12, i64 0 %check_bb.sroa.0.4.vec.extract77 = extractelement <2 x float> %12, i64 1 - %add.i67 = fadd float %cond.i65, %6 + %add.i67 = fadd float %cond.i65, %check_bb.sroa.0.0.vec.extract %add3.i68 = fadd float %cond.i65, %check_bb.sroa.0.4.vec.extract77 %retval.sroa.0.0.vec.insert.i69 = insertelement <2 x float> poison, float %add.i67, i64 0 %retval.sroa.0.4.vec.insert.i70 = insertelement <2 x float> %retval.sroa.0.0.vec.insert.i69, float %add3.i68, i64 1 diff --git a/bench/opencv/optimized/charuco_detector.cpp.ll b/bench/opencv/optimized/charuco_detector.cpp.ll index d7e6df607de..58248b2a4ea 100644 --- a/bench/opencv/optimized/charuco_detector.cpp.ll +++ b/bench/opencv/optimized/charuco_detector.cpp.ll @@ -1432,7 +1432,7 @@ _ZSt8_DestroyIPSt6vectorIiSaIiEES2_EvT_S4_RSaIT0_E.exitthread-pre-split.i: ; pre br label %_ZSt8_DestroyIPSt6vectorIiSaIiEES2_EvT_S4_RSaIT0_E.exit.i _ZSt8_DestroyIPSt6vectorIiSaIiEES2_EvT_S4_RSaIT0_E.exit.i: ; preds = %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i, %_ZSt8_DestroyIPSt6vectorIiSaIiEES2_EvT_S4_RSaIT0_E.exitthread-pre-split.i - %.sroa.0227.0273 = phi ptr [ %47, %_ZSt8_DestroyIPSt6vectorIiSaIiEES2_EvT_S4_RSaIT0_E.exitthread-pre-split.i ], [ null, %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i ] + %.sroa.0227.0272 = phi ptr [ %47, %_ZSt8_DestroyIPSt6vectorIiSaIiEES2_EvT_S4_RSaIT0_E.exitthread-pre-split.i ], [ null, %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i ] %53 = phi ptr [ %.pr.i, %_ZSt8_DestroyIPSt6vectorIiSaIiEES2_EvT_S4_RSaIT0_E.exitthread-pre-split.i ], [ %39, %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i ] %.not.i.i.i = icmp eq ptr %53, null br i1 %.not.i.i.i, label %_ZNSt6vectorIS_IiSaIiEESaIS1_EED2Ev.exit, label %54 @@ -1469,8 +1469,8 @@ _ZNSt6vectorIS_IiSaIiEESaIS1_EED2Ev.exit: ; preds = %_ZSt8_DestroyIPSt6v %.sroa_idx222 = getelementptr inbounds i8, ptr %69, i64 4 %71 = load float, ptr %.sroa_idx222, align 4 %72 = sext i32 %67 to i64 - %73 = getelementptr inbounds %"class.cv::Point_", ptr %.sroa.0227.0273, i64 %72, i32 1 - %74 = getelementptr inbounds %"class.cv::Point_", ptr %.sroa.0227.0273, i64 %72 + %73 = getelementptr inbounds %"class.cv::Point_", ptr %.sroa.0227.0272, i64 %72, i32 1 + %74 = getelementptr inbounds %"class.cv::Point_", ptr %.sroa.0227.0272, i64 %72 br label %75 75: ; preds = %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit.thread, %64 @@ -1511,13 +1511,13 @@ _ZNSt6vectorIS_IiSaIiEESaIS1_EED2Ev.exit: ; preds = %_ZSt8_DestroyIPSt6v %95 = getelementptr inbounds i8, ptr %.sroa.032.051.i.i.i, i64 4 %96 = load i32, ptr %95, align 4 %97 = icmp eq i32 %96, %82 - br i1 %97, label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit.loopexit.split.loop.exit286, label %98 + br i1 %97, label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit.loopexit.split.loop.exit285, label %98 98: ; preds = %94 %99 = getelementptr inbounds i8, ptr %.sroa.032.051.i.i.i, i64 8 %100 = load i32, ptr %99, align 4 %101 = icmp eq i32 %100, %82 - br i1 %101, label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit.loopexit.split.loop.exit284, label %102 + br i1 %101, label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit.loopexit.split.loop.exit283, label %102 102: ; preds = %98 %103 = getelementptr inbounds i8, ptr %.sroa.032.051.i.i.i, i64 12 @@ -1576,16 +1576,16 @@ _ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.e %122 = getelementptr inbounds i8, ptr %.sroa.032.051.i.i.i, i64 12 br label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit -_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit.loopexit.split.loop.exit284: ; preds = %98 +_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit.loopexit.split.loop.exit283: ; preds = %98 %123 = getelementptr inbounds i8, ptr %.sroa.032.051.i.i.i, i64 8 br label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit -_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit.loopexit.split.loop.exit286: ; preds = %94 +_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit.loopexit.split.loop.exit285: ; preds = %94 %124 = getelementptr inbounds i8, ptr %.sroa.032.051.i.i.i, i64 4 br label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit -_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit: ; preds = %91, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit.loopexit.split.loop.exit, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit.loopexit.split.loop.exit284, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit.loopexit.split.loop.exit286, %._crit_edge._crit_edge57.i.i.i, %._crit_edge._crit_edge.i.i.i, %111 - %.sroa.08.0.in.sroa.speculated.i.i.i = phi ptr [ %.sroa.032.0.lcssa.i.i.i, %111 ], [ %.sroa.032.1.i.i.i, %._crit_edge._crit_edge.i.i.i ], [ %spec.select.i.i.i, %._crit_edge._crit_edge57.i.i.i ], [ %122, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit.loopexit.split.loop.exit ], [ %123, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit.loopexit.split.loop.exit284 ], [ %124, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit.loopexit.split.loop.exit286 ], [ %.sroa.032.051.i.i.i, %91 ] +_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit: ; preds = %91, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit.loopexit.split.loop.exit, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit.loopexit.split.loop.exit283, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit.loopexit.split.loop.exit285, %._crit_edge._crit_edge57.i.i.i, %._crit_edge._crit_edge.i.i.i, %111 + %.sroa.08.0.in.sroa.speculated.i.i.i = phi ptr [ %.sroa.032.0.lcssa.i.i.i, %111 ], [ %.sroa.032.1.i.i.i, %._crit_edge._crit_edge.i.i.i ], [ %spec.select.i.i.i, %._crit_edge._crit_edge57.i.i.i ], [ %122, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit.loopexit.split.loop.exit ], [ %123, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit.loopexit.split.loop.exit283 ], [ %124, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit.loopexit.split.loop.exit285 ], [ %.sroa.032.051.i.i.i, %91 ] %125 = icmp eq ptr %.sroa.08.0.in.sroa.speculated.i.i.i, %84 br i1 %125, label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit.thread, label %138 @@ -1768,10 +1768,10 @@ _ZSt8_DestroyIPSt6vectorIiSaIiEES2_EvT_S4_RSaIT0_E.exit.i155: ; preds = %_ZSt8_D %206 = fsub float %204, %71 %207 = fmul float %206, %206 %208 = call noundef float @llvm.fmuladd.f32(float %205, float %205, float %207) - %sqrt248 = call float @llvm.sqrt.f32(float %208) + %sqrt247 = call float @llvm.sqrt.f32(float %208) %209 = load float, ptr %74, align 4 - %210 = fcmp olt float %209, %sqrt248 - %.sroa.speculated202 = select i1 %210, float %sqrt248, float %209 + %210 = fcmp olt float %209, %sqrt247 + %.sroa.speculated202 = select i1 %210, float %sqrt247, float %209 store float %.sroa.speculated202, ptr %74, align 4 %211 = load ptr, ptr %199, align 8 %212 = add nsw i32 %197, 1 @@ -1800,15 +1800,15 @@ _ZSt8_DestroyIPSt6vectorIiSaIiEES2_EvT_S4_RSaIT0_E.exit.i155: ; preds = %_ZSt8_D %231 = fsub float %220, %71 %232 = fmul float %231, %231 %233 = call noundef float @llvm.fmuladd.f32(float %230, float %230, float %232) - %sqrt247 = call float @llvm.sqrt.f32(float %233) + %sqrt246 = call float @llvm.sqrt.f32(float %233) %234 = fsub float %228, %70 %235 = fsub float %229, %71 %236 = fmul float %235, %235 %237 = call noundef float @llvm.fmuladd.f32(float %234, float %234, float %236) - %sqrt246 = call float @llvm.sqrt.f32(float %237) - %238 = fcmp olt float %sqrt246, %sqrt247 - %.sroa.speculated = select i1 %238, float %sqrt246, float %sqrt247 - %239 = fcmp olt float %.sroa.speculated, %sqrt248 + %sqrt245 = call float @llvm.sqrt.f32(float %237) + %238 = fcmp olt float %sqrt245, %sqrt246 + %.sroa.speculated = select i1 %238, float %sqrt245, float %sqrt246 + %239 = fcmp olt float %.sroa.speculated, %sqrt247 br i1 %239, label %.thread243, label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit.thread 240: ; preds = %177 @@ -1845,15 +1845,15 @@ _ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.e br label %61, !llvm.loop !24 256: ; preds = %63 - %.not.i.i.i174 = icmp eq ptr %.sroa.0227.0273, null + %.not.i.i.i174 = icmp eq ptr %.sroa.0227.0272, null br i1 %.not.i.i.i174, label %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EED2Ev.exit, label %.thread243 .thread243: ; preds = %249, %196, %256 - call void @_ZdlPv(ptr noundef nonnull %.sroa.0227.0273) #25 + call void @_ZdlPv(ptr noundef nonnull %.sroa.0227.0272) #25 br label %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EED2Ev.exit _ZNSt6vectorIN2cv6Point_IfEESaIS2_EED2Ev.exit: ; preds = %256, %.thread243 - %.not.not283 = phi i1 [ true, %256 ], [ %.not.not.not.not.not, %.thread243 ] + %.not.not282 = phi i1 [ true, %256 ], [ %.not.not.not.not.not, %.thread243 ] %257 = load ptr, ptr %10, align 8 %258 = getelementptr inbounds i8, ptr %10, i64 8 %259 = load ptr, ptr %258, align 8 @@ -1919,15 +1919,15 @@ _ZSt8_DestroyIPN2cv3MatES1_EvT_S3_RSaIT0_E.exit.i: ; preds = %_ZSt8_DestroyIPN2c br label %_ZNSt6vectorIN2cv3MatESaIS1_EED2Ev.exit _ZNSt6vectorIN2cv3MatESaIS1_EED2Ev.exit: ; preds = %_ZSt8_DestroyIPN2cv3MatES1_EvT_S3_RSaIT0_E.exit.i, %270 - ret i1 %.not.not283 + ret i1 %.not.not282 271: ; preds = %.loopexit, %.loopexit.split-lp, %240 %.pn = phi { ptr, i32 } [ %241, %240 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] - %.not.i.i.i192 = icmp eq ptr %.sroa.0227.0273, null + %.not.i.i.i192 = icmp eq ptr %.sroa.0227.0272, null br i1 %.not.i.i.i192, label %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EED2Ev.exit193, label %272 272: ; preds = %271 - call void @_ZdlPv(ptr noundef nonnull %.sroa.0227.0273) #25 + call void @_ZdlPv(ptr noundef nonnull %.sroa.0227.0272) #25 br label %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EED2Ev.exit193 _ZNSt6vectorIN2cv6Point_IfEESaIS2_EED2Ev.exit193: ; preds = %272, %271, %136, %134 @@ -6753,10 +6753,10 @@ _ZNSt6vectorIbSaIbEEC2EmRKbRKS0_.exit: ; preds = %_ZNSt6vectorIN2cv3M br label %129 129: ; preds = %.lr.ph, %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EED2Ev.exit - %.082400 = phi i64 [ 0, %.lr.ph ], [ %300, %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EED2Ev.exit ] + %.082399 = phi i64 [ 0, %.lr.ph ], [ %300, %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EED2Ev.exit ] call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %15, i8 0, i64 24, i1 false) %130 = invoke noundef i32 @_ZNK2cv11_InputArray4kindEv(ptr noundef nonnull align 8 dereferenceable(24) %2) - to label %.noexc117 unwind label %.loopexit.split-lp361 + to label %.noexc117 unwind label %.loopexit.split-lp360 .noexc117: ; preds = %129 %131 = icmp eq i32 %130, 65536 @@ -6765,14 +6765,14 @@ _ZNSt6vectorIbSaIbEEC2EmRKbRKS0_.exit: ; preds = %_ZNSt6vectorIN2cv3M 132: ; preds = %.noexc117 %133 = load ptr, ptr %111, align 8, !noalias !114 invoke void @_ZN2cv3MatC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(96) %16, ptr noundef nonnull align 8 dereferenceable(96) %133) - to label %_ZNK2cv11_InputArray6getMatEi.exit120 unwind label %.loopexit.split-lp361 + to label %_ZNK2cv11_InputArray6getMatEi.exit120 unwind label %.loopexit.split-lp360 134: ; preds = %.noexc117 invoke void @_ZNK2cv11_InputArray7getMat_Ei(ptr dead_on_unwind nonnull writable sret(%"class.cv::Mat") align 8 %16, ptr noundef nonnull align 8 dereferenceable(24) %2, i32 noundef -1) - to label %_ZNK2cv11_InputArray6getMatEi.exit120 unwind label %.loopexit.split-lp361 + to label %_ZNK2cv11_InputArray6getMatEi.exit120 unwind label %.loopexit.split-lp360 _ZNK2cv11_InputArray6getMatEi.exit120: ; preds = %132, %134 - %135 = trunc i64 %.082400 to i32 + %135 = trunc i64 %.082399 to i32 %136 = load i32, ptr %16, align 8 %137 = and i32 %136, 16384 %.not.i = icmp eq i32 %137, 0 @@ -6786,8 +6786,8 @@ _ZNK2cv11_InputArray6getMatEi.exit120: ; preds = %132, %134 142: ; preds = %138, %_ZNK2cv11_InputArray6getMatEi.exit120 %143 = load ptr, ptr %114, align 8 - %sext352 = shl i64 %.082400, 32 - %144 = ashr exact i64 %sext352, 30 + %sext351 = shl i64 %.082399, 32 + %144 = ashr exact i64 %sext351, 30 %145 = getelementptr inbounds i8, ptr %143, i64 %144 br label %_ZN2cv3Mat2atIiEERT_i.exit @@ -6801,8 +6801,8 @@ _ZNK2cv11_InputArray6getMatEi.exit120: ; preds = %132, %134 %151 = load ptr, ptr %114, align 8 %152 = load ptr, ptr %115, align 8 %153 = load i64, ptr %152, align 8 - %sext351 = shl i64 %.082400, 32 - %154 = ashr exact i64 %sext351, 32 + %sext350 = shl i64 %.082399, 32 + %154 = ashr exact i64 %sext350, 32 %155 = mul i64 %153, %154 %156 = getelementptr inbounds i8, ptr %151, i64 %155 br label %_ZN2cv3Mat2atIiEERT_i.exit @@ -6851,13 +6851,13 @@ _ZN2cv3Mat2atIiEERT_i.exit: ; preds = %142, %150, %157 %182 = getelementptr inbounds i8, ptr %.sroa.032.051.i.i.i, i64 4 %183 = load i32, ptr %182, align 4 %184 = icmp eq i32 %183, %169 - br i1 %184, label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit.loopexit.split.loop.exit470, label %185 + br i1 %184, label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit.loopexit.split.loop.exit469, label %185 185: ; preds = %181 %186 = getelementptr inbounds i8, ptr %.sroa.032.051.i.i.i, i64 8 %187 = load i32, ptr %186, align 4 %188 = icmp eq i32 %187, %169 - br i1 %188, label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit.loopexit.split.loop.exit468, label %189 + br i1 %188, label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit.loopexit.split.loop.exit467, label %189 189: ; preds = %185 %190 = getelementptr inbounds i8, ptr %.sroa.032.051.i.i.i, i64 12 @@ -6916,16 +6916,16 @@ _ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.e %209 = getelementptr inbounds i8, ptr %.sroa.032.051.i.i.i, i64 12 br label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit -_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit.loopexit.split.loop.exit468: ; preds = %185 +_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit.loopexit.split.loop.exit467: ; preds = %185 %210 = getelementptr inbounds i8, ptr %.sroa.032.051.i.i.i, i64 8 br label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit -_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit.loopexit.split.loop.exit470: ; preds = %181 +_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit.loopexit.split.loop.exit469: ; preds = %181 %211 = getelementptr inbounds i8, ptr %.sroa.032.051.i.i.i, i64 4 br label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit -_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit: ; preds = %178, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit.loopexit.split.loop.exit, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit.loopexit.split.loop.exit468, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit.loopexit.split.loop.exit470, %._crit_edge._crit_edge57.i.i.i, %._crit_edge._crit_edge.i.i.i, %198 - %.sroa.08.0.in.sroa.speculated.i.i.i = phi ptr [ %.sroa.032.0.lcssa.i.i.i, %198 ], [ %.sroa.032.1.i.i.i, %._crit_edge._crit_edge.i.i.i ], [ %spec.select.i.i.i, %._crit_edge._crit_edge57.i.i.i ], [ %209, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit.loopexit.split.loop.exit ], [ %210, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit.loopexit.split.loop.exit468 ], [ %211, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit.loopexit.split.loop.exit470 ], [ %.sroa.032.051.i.i.i, %178 ] +_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit: ; preds = %178, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit.loopexit.split.loop.exit, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit.loopexit.split.loop.exit467, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit.loopexit.split.loop.exit469, %._crit_edge._crit_edge57.i.i.i, %._crit_edge._crit_edge.i.i.i, %198 + %.sroa.08.0.in.sroa.speculated.i.i.i = phi ptr [ %.sroa.032.0.lcssa.i.i.i, %198 ], [ %.sroa.032.1.i.i.i, %._crit_edge._crit_edge.i.i.i ], [ %spec.select.i.i.i, %._crit_edge._crit_edge57.i.i.i ], [ %209, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit.loopexit.split.loop.exit ], [ %210, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit.loopexit.split.loop.exit467 ], [ %211, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.exit.loopexit.split.loop.exit469 ], [ %.sroa.032.051.i.i.i, %178 ] %212 = icmp eq ptr %.sroa.08.0.in.sroa.speculated.i.i.i, %171 br i1 %212, label %_ZNSt14_Bit_referenceaSEb.exit, label %217 @@ -6940,13 +6940,13 @@ _ZSt4findIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEEiET_S8_S8_RKT0_.e cleanup br label %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EED2Ev.exit130 -.loopexit360: ; preds = %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE6resizeEm.exit, %253 - %lpad.loopexit362 = landingpad { ptr, i32 } +.loopexit359: ; preds = %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE6resizeEm.exit, %253 + %lpad.loopexit361 = landingpad { ptr, i32 } cleanup br label %310 -.loopexit.split-lp361: ; preds = %129, %132, %134, %_ZNKSt6vectorIN2cv6Point_IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i - %lpad.loopexit.split-lp363 = landingpad { ptr, i32 } +.loopexit.split-lp360: ; preds = %129, %132, %134, %_ZNKSt6vectorIN2cv6Point_IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i + %lpad.loopexit.split-lp362 = landingpad { ptr, i32 } cleanup br label %310 @@ -6987,7 +6987,7 @@ _ZNKSt6vectorIN2cv6Point_IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i: ; preds = %22 %237 = add nuw nsw i64 %.sroa.speculated.i.i.i, %226 %238 = shl nuw nsw i64 %237, 3 %239 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %238) #24 - to label %.noexc122 unwind label %.loopexit.split-lp361 + to label %.noexc122 unwind label %.loopexit.split-lp360 .noexc122: ; preds = %_ZNKSt6vectorIN2cv6Point_IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i %240 = getelementptr inbounds i8, ptr %239, i64 %225 @@ -7025,8 +7025,8 @@ _ZNSt12_Vector_baseIN2cv6Point_IfEESaIS2_EE13_M_deallocateEPS2_m.exit36.i.i: ; p br label %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE6resizeEm.exit.preheader 248: ; preds = %217 - %.not353 = icmp eq i64 %225, 32 - br i1 %.not353, label %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE6resizeEm.exit.preheader, label %249 + %.not352 = icmp eq i64 %225, 32 + br i1 %.not352, label %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE6resizeEm.exit.preheader, label %249 249: ; preds = %248 %250 = getelementptr inbounds i8, ptr %222, i64 32 @@ -7041,31 +7041,31 @@ _ZNSt6vectorIN2cv6Point_IfEESaIS2_EE6resizeEm.exit.preheader: ; preds = %_ZSt27_ br label %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE6resizeEm.exit _ZNSt6vectorIN2cv6Point_IfEESaIS2_EE6resizeEm.exit: ; preds = %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE6resizeEm.exit.preheader, %260 - %.083399 = phi i64 [ %268, %260 ], [ 0, %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE6resizeEm.exit.preheader ] + %.083398 = phi i64 [ %268, %260 ], [ 0, %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE6resizeEm.exit.preheader ] %252 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK2cv5aruco5Board12getObjPointsEv(ptr noundef nonnull align 8 dereferenceable(16) %0) - to label %253 unwind label %.loopexit360 + to label %253 unwind label %.loopexit359 253: ; preds = %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE6resizeEm.exit %254 = load ptr, ptr %252, align 8 %255 = getelementptr inbounds %"class.std::vector.46", ptr %254, i64 %220 %256 = load ptr, ptr %255, align 8 - %257 = getelementptr inbounds %"class.cv::Point3_", ptr %256, i64 %.083399 + %257 = getelementptr inbounds %"class.cv::Point3_", ptr %256, i64 %.083398 %258 = load i32, ptr %257, align 4 %259 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK2cv5aruco5Board12getObjPointsEv(ptr noundef nonnull align 8 dereferenceable(16) %0) - to label %260 unwind label %.loopexit360 + to label %260 unwind label %.loopexit359 260: ; preds = %253 %261 = load ptr, ptr %259, align 8 %262 = getelementptr inbounds %"class.std::vector.46", ptr %261, i64 %220 %263 = load ptr, ptr %262, align 8 - %264 = getelementptr inbounds %"class.cv::Point3_", ptr %263, i64 %.083399, i32 1 + %264 = getelementptr inbounds %"class.cv::Point3_", ptr %263, i64 %.083398, i32 1 %265 = load i32, ptr %264, align 4 %266 = load ptr, ptr %15, align 8 - %267 = getelementptr inbounds %"class.cv::Point_", ptr %266, i64 %.083399 + %267 = getelementptr inbounds %"class.cv::Point_", ptr %266, i64 %.083398 store i32 %258, ptr %267, align 4 %.sroa_idx268 = getelementptr inbounds i8, ptr %267, i64 4 store i32 %265, ptr %.sroa_idx268, align 4 - %268 = add nuw nsw i64 %.083399, 1 + %268 = add nuw nsw i64 %.083398, 1 %exitcond.not = icmp eq i64 %268, 4 br i1 %exitcond.not, label %269, label %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE6resizeEm.exit, !llvm.loop !123 @@ -7101,7 +7101,7 @@ _ZNSt6vectorIN2cv6Point_IfEESaIS2_EE6resizeEm.exit: ; preds = %_ZNSt6vectorIN2cv to label %277 unwind label %303 277: ; preds = %276 - %278 = getelementptr inbounds %"class.cv::Mat", ptr %.sroa.0287.0313, i64 %.082400 + %278 = getelementptr inbounds %"class.cv::Mat", ptr %.sroa.0287.0313, i64 %.082399 %279 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN2cv3MataSEOS0_(ptr noundef nonnull align 8 dereferenceable(96) %278, ptr noundef nonnull align 8 dereferenceable(96) %17) to label %280 unwind label %305 @@ -7117,13 +7117,13 @@ _ZNSt6vectorIN2cv6Point_IfEESaIS2_EE6resizeEm.exit: ; preds = %_ZNSt6vectorIN2cv 282: ; preds = %280 %283 = call noundef double @llvm.fabs.f64(double %281) - %284 = sdiv i64 %.082400, 64 + %284 = sdiv i64 %.082399, 64 %285 = getelementptr inbounds i64, ptr %.sroa.0279.0, i64 %284 - %286 = and i64 %.082400, -9223372036854775745 + %286 = and i64 %.082399, -9223372036854775745 %287 = icmp ugt i64 %286, -9223372036854775808 %storemerge.idx.i.i.i.i.i127 = select i1 %287, i64 -8, i64 0 %storemerge.i.i.i.i.i128 = getelementptr inbounds i8, ptr %285, i64 %storemerge.idx.i.i.i.i.i127 - %288 = and i64 %.082400, 63 + %288 = and i64 %.082399, 63 %289 = shl nuw i64 1, %288 %290 = fcmp ogt double %283, 0x3EB0C6F7A0B5ED8D br i1 %290, label %291, label %294 @@ -7154,9 +7154,9 @@ _ZNSt14_Bit_referenceaSEb.exit: ; preds = %_ZNSt14_Bit_referen br label %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EED2Ev.exit _ZNSt6vectorIN2cv6Point_IfEESaIS2_EED2Ev.exit: ; preds = %_ZNSt14_Bit_referenceaSEb.exit, %299 - %300 = add nuw i64 %.082400, 1 - %exitcond436.not = icmp eq i64 %300, %95 - br i1 %exitcond436.not, label %._crit_edge, label %129, !llvm.loop !127 + %300 = add nuw i64 %.082399, 1 + %exitcond435.not = icmp eq i64 %300, %95 + br i1 %exitcond435.not, label %._crit_edge, label %129, !llvm.loop !127 301: ; preds = %275, %273, %269 %302 = landingpad { ptr, i32 } @@ -7184,8 +7184,8 @@ _ZNSt6vectorIN2cv6Point_IfEESaIS2_EED2Ev.exit: ; preds = %_ZNSt14_Bit_referen cleanup br label %310 -310: ; preds = %.loopexit360, %.loopexit.split-lp361, %301, %307, %308 - %.pn101 = phi { ptr, i32 } [ %309, %308 ], [ %.pn97.pn, %307 ], [ %302, %301 ], [ %lpad.loopexit362, %.loopexit360 ], [ %lpad.loopexit.split-lp363, %.loopexit.split-lp361 ] +310: ; preds = %.loopexit359, %.loopexit.split-lp360, %301, %307, %308 + %.pn101 = phi { ptr, i32 } [ %309, %308 ], [ %.pn97.pn, %307 ], [ %302, %301 ], [ %lpad.loopexit361, %.loopexit359 ], [ %lpad.loopexit.split-lp362, %.loopexit.split-lp360 ] %311 = load ptr, ptr %15, align 8 %.not.i.i.i129 = icmp eq ptr %311, null br i1 %.not.i.i.i129, label %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EED2Ev.exit130, label %312 @@ -7227,11 +7227,11 @@ _ZNSt6vectorIN2cv7Point3_IfEESaIS2_EED2Ev.exit: ; preds = %313, %321 _ZNSt6vectorIN2cv6Point_IfEESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i: ; preds = %_ZNSt6vectorIN2cv7Point3_IfEESaIS2_EED2Ev.exit call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %23, i8 0, i64 24, i1 false) %.not.i.i.i.i132 = icmp eq ptr %315, %316 - br i1 %.not.i.i.i.i132, label %.loopexit359.thread, label %_ZNSt12_Vector_baseIN2cv6Point_IfEESaIS2_EEC2EmRKS3_.exit.i + br i1 %.not.i.i.i.i132, label %.loopexit358.thread, label %_ZNSt12_Vector_baseIN2cv6Point_IfEESaIS2_EEC2EmRKS3_.exit.i -.loopexit359.thread: ; preds = %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i +.loopexit358.thread: ; preds = %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %23, i8 0, i64 24, i1 false) - br label %._crit_edge405 + br label %._crit_edge404 _ZNSt12_Vector_baseIN2cv6Point_IfEESaIS2_EEC2EmRKS3_.exit.i: ; preds = %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i %324 = shl nuw nsw i64 %320, 3 @@ -7255,9 +7255,9 @@ _ZNSt12_Vector_baseIN2cv6Point_IfEESaIS2_EEC2EmRKS3_.exit.i: ; preds = %_ZNSt6ve %329 = add i64 %.068.i.i.i.i.i.i, -1 %330 = getelementptr inbounds i8, ptr %.09.i.i.i.i.i.i, i64 8 %.not.i.i.i.i.i.i134 = icmp eq i64 %329, 0 - br i1 %.not.i.i.i.i.i.i134, label %.loopexit359, label %.lr.ph.i.i.i.i.i.i133, !llvm.loop !20 + br i1 %.not.i.i.i.i.i.i134, label %.loopexit358, label %.lr.ph.i.i.i.i.i.i133, !llvm.loop !20 -.loopexit359: ; preds = %.lr.ph.i.i.i.i.i.i133 +.loopexit358: ; preds = %.lr.ph.i.i.i.i.i.i133 store ptr %330, ptr %326, align 8 %331 = getelementptr inbounds i8, ptr %26, i64 8 %332 = getelementptr inbounds i8, ptr %27, i64 8 @@ -7279,21 +7279,21 @@ _ZNSt12_Vector_baseIN2cv6Point_IfEESaIS2_EEC2EmRKS3_.exit.i: ; preds = %_ZNSt6ve %umax = call i64 @llvm.umax.i64(i64 %320, i64 1) br label %348 -348: ; preds = %.loopexit359, %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EED2Ev.exit213 - %.080401 = phi i64 [ 0, %.loopexit359 ], [ %530, %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EED2Ev.exit213 ] +348: ; preds = %.loopexit358, %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EED2Ev.exit213 + %.080400 = phi i64 [ 0, %.loopexit358 ], [ %530, %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EED2Ev.exit213 ] invoke void @_ZNK2cv5aruco12CharucoBoard20getChessboardCornersEv(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.46") align 8 %24, ptr noundef nonnull align 8 dereferenceable(16) %0) to label %349 unwind label %444 349: ; preds = %348 %350 = load ptr, ptr %24, align 8 - %351 = getelementptr inbounds %"class.cv::Point3_", ptr %350, i64 %.080401 + %351 = getelementptr inbounds %"class.cv::Point3_", ptr %350, i64 %.080400 %352 = load float, ptr %351, align 4 invoke void @_ZNK2cv5aruco12CharucoBoard20getChessboardCornersEv(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.46") align 8 %25, ptr noundef nonnull align 8 dereferenceable(16) %0) to label %_ZNSt6vectorIN2cv7Point3_IfEESaIS2_EED2Ev.exit138 unwind label %446 _ZNSt6vectorIN2cv7Point3_IfEESaIS2_EED2Ev.exit138: ; preds = %349 %353 = load ptr, ptr %25, align 8 - %354 = getelementptr inbounds %"class.cv::Point3_", ptr %353, i64 %.080401, i32 1 + %354 = getelementptr inbounds %"class.cv::Point3_", ptr %353, i64 %.080400, i32 1 %355 = load float, ptr %354, align 4 call void @_ZdlPv(ptr noundef nonnull %353) #25 %356 = load ptr, ptr %24, align 8 @@ -7317,7 +7317,7 @@ _ZNSt6vectorIN2cv7Point3_IfEESaIS2_EED2Ev.exit140: ; preds = %_ZNSt6vectorIN2cv7 358: ; preds = %_ZNSt6vectorIN2cv7Point3_IfEESaIS2_EED2Ev.exit140 %359 = load ptr, ptr %26, align 8 - %360 = getelementptr inbounds %"class.std::vector.11", ptr %359, i64 %.080401 + %360 = getelementptr inbounds %"class.std::vector.11", ptr %359, i64 %.080400 %361 = getelementptr inbounds i8, ptr %360, i64 8 %362 = load ptr, ptr %361, align 8 %363 = load ptr, ptr %360, align 8 @@ -7368,7 +7368,7 @@ _ZNSt6vectorIS_IiSaIiEESaIS1_EED2Ev.exit: ; preds = %_ZSt8_DestroyIPSt6v 377: ; preds = %376 %378 = load ptr, ptr %27, align 8 - %379 = getelementptr inbounds %"class.std::vector.11", ptr %378, i64 %.080401 + %379 = getelementptr inbounds %"class.std::vector.11", ptr %378, i64 %.080400 %380 = load ptr, ptr %379, align 8 %381 = getelementptr inbounds i32, ptr %380, i64 %.079 %382 = load i32, ptr %381, align 4 @@ -7467,8 +7467,8 @@ _ZNK2cv11_InputArray6getMatEi.exit163: ; preds = %403, %405 413: ; preds = %409, %_ZNK2cv11_InputArray6getMatEi.exit163 %414 = load ptr, ptr %336, align 8 - %sext348 = shl i64 %.062, 32 - %415 = ashr exact i64 %sext348, 30 + %sext347 = shl i64 %.062, 32 + %415 = ashr exact i64 %sext347, 30 %416 = getelementptr inbounds i8, ptr %414, i64 %415 br label %_ZN2cv3Mat2atIiEERT_i.exit166 @@ -7492,14 +7492,14 @@ _ZNK2cv11_InputArray6getMatEi.exit163: ; preds = %403, %405 %429 = load i32, ptr %335, align 4 %430 = sdiv i32 %406, %429 %431 = mul nsw i32 %430, %429 - %.recomposed548 = srem i32 %406, %429 + %.recomposed547 = srem i32 %406, %429 %432 = load ptr, ptr %336, align 8 %433 = load ptr, ptr %337, align 8 %434 = load i64, ptr %433, align 8 %435 = sext i32 %430 to i64 %436 = mul i64 %434, %435 %437 = getelementptr inbounds i8, ptr %432, i64 %436 - %438 = sext i32 %.recomposed548 to i64 + %438 = sext i32 %.recomposed547 to i64 %439 = getelementptr inbounds i32, ptr %437, i64 %438 br label %_ZN2cv3Mat2atIiEERT_i.exit166 @@ -7556,8 +7556,8 @@ _ZN2cv3Mat2atIiEERT_i.exit166: ; preds = %413, %421, %428 br i1 %.not89, label %.critedge, label %455 455: ; preds = %454 - %sext349 = shl i64 %.062, 32 - %456 = ashr exact i64 %sext349, 32 + %sext348 = shl i64 %.062, 32 + %456 = ashr exact i64 %sext348, 32 %457 = sdiv i32 %406, 64 %.sext = sext i32 %457 to i64 %458 = getelementptr inbounds i64, ptr %.sroa.0279.0, i64 %.sext @@ -7569,14 +7569,14 @@ _ZN2cv3Mat2atIiEERT_i.exit166: ; preds = %413, %421, %428 %462 = shl nuw i64 1, %461 %463 = load i64, ptr %storemerge.i.i.i.i.i170, align 8 %464 = and i64 %463, %462 - %.not350 = icmp eq i64 %464, 0 - br i1 %.not350, label %.critedge, label %465 + %.not349 = icmp eq i64 %464, 0 + br i1 %.not349, label %.critedge, label %465 465: ; preds = %455 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %30, i8 0, i64 24, i1 false) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %31, i8 0, i64 24, i1 false) %466 = invoke noalias noundef nonnull dereferenceable(8) ptr @_Znwm(i64 noundef 8) #24 - to label %467 unwind label %.loopexit354 + to label %467 unwind label %.loopexit353 467: ; preds = %465 store float %352, ptr %466, align 4 @@ -7620,7 +7620,7 @@ _ZN2cv3Mat2atIiEERT_i.exit166: ; preds = %413, %421, %428 479: ; preds = %474 invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.15) #27 - to label %.noexc199 unwind label %.loopexit.split-lp355 + to label %.noexc199 unwind label %.loopexit.split-lp354 .noexc199: ; preds = %479 unreachable @@ -7638,7 +7638,7 @@ _ZNKSt6vectorIN2cv6Point_IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i186: ; preds = 485: ; preds = %_ZNKSt6vectorIN2cv6Point_IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i186 %486 = shl nuw nsw i64 %484, 3 %487 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %486) #24 - to label %_ZNSt12_Vector_baseIN2cv6Point_IfEESaIS2_EE11_M_allocateEm.exit.i.i189 unwind label %.loopexit354 + to label %_ZNSt12_Vector_baseIN2cv6Point_IfEESaIS2_EE11_M_allocateEm.exit.i.i189 unwind label %.loopexit353 _ZNSt12_Vector_baseIN2cv6Point_IfEESaIS2_EE11_M_allocateEm.exit.i.i189: ; preds = %485, %_ZNKSt6vectorIN2cv6Point_IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i186 %488 = phi ptr [ null, %_ZNKSt6vectorIN2cv6Point_IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i186 ], [ %487, %485 ] @@ -7695,13 +7695,13 @@ _ZNSt6vectorIN2cv6Point_IfEESaIS2_EED2Ev.exit203: ; preds = %_ZNSt6vectorIN2cv6P call void @_ZdlPv(ptr noundef nonnull %498) #25 br label %.critedge -.loopexit354: ; preds = %465, %485 - %lpad.loopexit356 = landingpad { ptr, i32 } +.loopexit353: ; preds = %465, %485 + %lpad.loopexit355 = landingpad { ptr, i32 } cleanup br label %502 -.loopexit.split-lp355: ; preds = %479 - %lpad.loopexit.split-lp357 = landingpad { ptr, i32 } +.loopexit.split-lp354: ; preds = %479 + %lpad.loopexit.split-lp356 = landingpad { ptr, i32 } cleanup br label %502 @@ -7710,8 +7710,8 @@ _ZNSt6vectorIN2cv6Point_IfEESaIS2_EED2Ev.exit203: ; preds = %_ZNSt6vectorIN2cv6P cleanup br label %502 -502: ; preds = %.loopexit354, %.loopexit.split-lp355, %500 - %.pn93 = phi { ptr, i32 } [ %501, %500 ], [ %lpad.loopexit356, %.loopexit354 ], [ %lpad.loopexit.split-lp357, %.loopexit.split-lp355 ] +502: ; preds = %.loopexit353, %.loopexit.split-lp354, %500 + %.pn93 = phi { ptr, i32 } [ %501, %500 ], [ %lpad.loopexit355, %.loopexit353 ], [ %lpad.loopexit.split-lp356, %.loopexit.split-lp354 ] %503 = load ptr, ptr %31, align 8 %.not.i.i.i206 = icmp eq ptr %503, null br i1 %.not.i.i.i206, label %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EED2Ev.exit207, label %504 @@ -7762,13 +7762,13 @@ _ZNSt6vectorIN2cv6Point_IfEESaIS2_EED2Ev.exit207: ; preds = %502, %504 %522 = fmul float %520, 5.000000e-01 %.sroa.0.4.vec.insert.i211 = insertelement <2 x float> %.sroa.0.0.vec.insert.i210, float %522, i64 1 %523 = load ptr, ptr %23, align 8 - %524 = getelementptr inbounds %"class.cv::Point_", ptr %523, i64 %.080401 + %524 = getelementptr inbounds %"class.cv::Point_", ptr %523, i64 %.080400 store <2 x float> %.sroa.0.4.vec.insert.i211, ptr %524, align 4 br label %.thread333 525: ; preds = %510 %526 = load ptr, ptr %23, align 8 - %527 = getelementptr inbounds %"class.cv::Point_", ptr %526, i64 %.080401 + %527 = getelementptr inbounds %"class.cv::Point_", ptr %526, i64 %.080400 %528 = load i64, ptr %.sroa.0246.1, align 4 store i64 %528, ptr %527, align 4 br label %.thread333 @@ -7782,9 +7782,9 @@ _ZNSt6vectorIN2cv6Point_IfEESaIS2_EED2Ev.exit207: ; preds = %502, %504 br label %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EED2Ev.exit213 _ZNSt6vectorIN2cv6Point_IfEESaIS2_EED2Ev.exit213: ; preds = %529, %.thread333 - %530 = add nuw i64 %.080401, 1 - %exitcond437.not = icmp eq i64 %530, %umax - br i1 %exitcond437.not, label %._crit_edge405, label %348, !llvm.loop !141 + %530 = add nuw i64 %.080400, 1 + %exitcond436.not = icmp eq i64 %530, %umax + br i1 %exitcond436.not, label %._crit_edge404, label %348, !llvm.loop !141 _ZNSt6vectorIN2cv6Point_IfEESaIS2_EED2Ev.exit209: ; preds = %.loopexit, %.loopexit.split-lp, %506, %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EED2Ev.exit207, %450 %.pn93.pn = phi { ptr, i32 } [ %451, %450 ], [ %.pn93, %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EED2Ev.exit207 ], [ %.pn93, %506 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] @@ -7795,7 +7795,7 @@ _ZNSt6vectorIN2cv6Point_IfEESaIS2_EED2Ev.exit209: ; preds = %.loopexit, %.loopex call void @_ZdlPv(ptr noundef nonnull %.sroa.0246.1) #25 br label %_ZNSt6vectorIN2cv7Point3_IfEESaIS2_EED2Ev.exit168 -._crit_edge405: ; preds = %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EED2Ev.exit213, %.loopexit359.thread +._crit_edge404: ; preds = %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EED2Ev.exit213, %.loopexit358.thread %532 = getelementptr inbounds i8, ptr %36, i64 16 store i32 0, ptr %532, align 8 %533 = getelementptr inbounds i8, ptr %36, i64 20 @@ -7806,7 +7806,7 @@ _ZNSt6vectorIN2cv6Point_IfEESaIS2_EED2Ev.exit209: ; preds = %.loopexit, %.loopex invoke void @_ZN2cv5aruco15CharucoDetector19CharucoDetectorImpl27getMaximumSubPixWindowSizesERKNS_11_InputArrayES5_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.51") align 8 %35, ptr noundef nonnull align 8 dereferenceable(240) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(24) %36) to label %535 unwind label %553 -535: ; preds = %._crit_edge405 +535: ; preds = %._crit_edge404 %536 = getelementptr inbounds i8, ptr %37, i64 16 store i32 0, ptr %536, align 8 %537 = getelementptr inbounds i8, ptr %37, i64 20 @@ -7871,7 +7871,7 @@ _ZSt8_DestroyIPN2cv3MatES1_EvT_S3_RSaIT0_E.exit.i: ; preds = %.lr.ph.i.i.i.i221, _ZNSt6vectorIN2cv3MatESaIS1_EED2Ev.exit: ; preds = %_ZSt8_DestroyIPN2cv3MatES1_EvT_S3_RSaIT0_E.exit.i, %552 ret void -553: ; preds = %._crit_edge405 +553: ; preds = %._crit_edge404 %554 = landingpad { ptr, i32 } cleanup br label %_ZNSt6vectorIN2cv7Point3_IfEESaIS2_EED2Ev.exit168 @@ -7917,30 +7917,30 @@ _ZNSt6vectorIN2cv6Point_IfEESaIS2_EED2Ev.exit130: ; preds = %560, %_ZNSt6vectorI br i1 %.not4.i.i.i.i235, label %_ZSt8_DestroyIPN2cv3MatES1_EvT_S3_RSaIT0_E.exit.i241, label %.lr.ph.i.i.i.i236.preheader .lr.ph.i.i.i.i236.preheader: ; preds = %.body.thread, %.body - %.pn101.pn.pn446 = phi { ptr, i32 } [ %109, %.body.thread ], [ %.pn101.pn, %.body ] - %.sroa.0287.0301444 = phi ptr [ %99, %.body.thread ], [ %.sroa.0287.0313, %.body ] - %.0.lcssa.i.i.i.i.i314443 = phi ptr [ %101, %.body.thread ], [ %.0.lcssa.i.i.i.i.i326, %.body ] + %.pn101.pn.pn445 = phi { ptr, i32 } [ %109, %.body.thread ], [ %.pn101.pn, %.body ] + %.sroa.0287.0301443 = phi ptr [ %99, %.body.thread ], [ %.sroa.0287.0313, %.body ] + %.0.lcssa.i.i.i.i.i314442 = phi ptr [ %101, %.body.thread ], [ %.0.lcssa.i.i.i.i.i326, %.body ] br label %.lr.ph.i.i.i.i236 .lr.ph.i.i.i.i236: ; preds = %.lr.ph.i.i.i.i236.preheader, %.lr.ph.i.i.i.i236 - %.05.i.i.i.i237 = phi ptr [ %568, %.lr.ph.i.i.i.i236 ], [ %.sroa.0287.0301444, %.lr.ph.i.i.i.i236.preheader ] + %.05.i.i.i.i237 = phi ptr [ %568, %.lr.ph.i.i.i.i236 ], [ %.sroa.0287.0301443, %.lr.ph.i.i.i.i236.preheader ] call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %.05.i.i.i.i237) #26 %568 = getelementptr inbounds i8, ptr %.05.i.i.i.i237, i64 96 - %.not.i.i.i.i238 = icmp eq ptr %568, %.0.lcssa.i.i.i.i.i314443 + %.not.i.i.i.i238 = icmp eq ptr %568, %.0.lcssa.i.i.i.i.i314442 br i1 %.not.i.i.i.i238, label %_ZSt8_DestroyIPN2cv3MatES1_EvT_S3_RSaIT0_E.exit.i241, label %.lr.ph.i.i.i.i236, !llvm.loop !25 _ZSt8_DestroyIPN2cv3MatES1_EvT_S3_RSaIT0_E.exit.i241: ; preds = %.lr.ph.i.i.i.i236, %.body - %.pn101.pn.pn447 = phi { ptr, i32 } [ %.pn101.pn, %.body ], [ %.pn101.pn.pn446, %.lr.ph.i.i.i.i236 ] - %.sroa.0287.0301445 = phi ptr [ %.sroa.0287.0313, %.body ], [ %.sroa.0287.0301444, %.lr.ph.i.i.i.i236 ] - %.not.i.i.i242 = icmp eq ptr %.sroa.0287.0301445, null + %.pn101.pn.pn446 = phi { ptr, i32 } [ %.pn101.pn, %.body ], [ %.pn101.pn.pn445, %.lr.ph.i.i.i.i236 ] + %.sroa.0287.0301444 = phi ptr [ %.sroa.0287.0313, %.body ], [ %.sroa.0287.0301443, %.lr.ph.i.i.i.i236 ] + %.not.i.i.i242 = icmp eq ptr %.sroa.0287.0301444, null br i1 %.not.i.i.i242, label %_ZNSt6vectorIN2cv3MatESaIS1_EED2Ev.exit243, label %569 569: ; preds = %_ZSt8_DestroyIPN2cv3MatES1_EvT_S3_RSaIT0_E.exit.i241 - call void @_ZdlPv(ptr noundef nonnull %.sroa.0287.0301445) #25 + call void @_ZdlPv(ptr noundef nonnull %.sroa.0287.0301444) #25 br label %_ZNSt6vectorIN2cv3MatESaIS1_EED2Ev.exit243 _ZNSt6vectorIN2cv3MatESaIS1_EED2Ev.exit243: ; preds = %569, %_ZSt8_DestroyIPN2cv3MatES1_EvT_S3_RSaIT0_E.exit.i241, %213, %87, %78, %66, %57 - %.pn101.pn.pn.pn = phi { ptr, i32 } [ %214, %213 ], [ %.pn85, %87 ], [ %79, %78 ], [ %.pn, %66 ], [ %58, %57 ], [ %.pn101.pn.pn447, %_ZSt8_DestroyIPN2cv3MatES1_EvT_S3_RSaIT0_E.exit.i241 ], [ %.pn101.pn.pn447, %569 ] + %.pn101.pn.pn.pn = phi { ptr, i32 } [ %214, %213 ], [ %.pn85, %87 ], [ %79, %78 ], [ %.pn, %66 ], [ %58, %57 ], [ %.pn101.pn.pn446, %_ZSt8_DestroyIPN2cv3MatES1_EvT_S3_RSaIT0_E.exit.i241 ], [ %.pn101.pn.pn446, %569 ] resume { ptr, i32 } %.pn101.pn.pn.pn } diff --git a/bench/opencv/optimized/intersection.cpp.ll b/bench/opencv/optimized/intersection.cpp.ll index 29d39b59851..e0b901922b7 100644 --- a/bench/opencv/optimized/intersection.cpp.ll +++ b/bench/opencv/optimized/intersection.cpp.ll @@ -164,9 +164,9 @@ _ZNSt12_Vector_baseIN2cv6Point_IfEESaIS2_EE11_M_allocateEm.exit.i: ; preds = %24 %74 = fsub float %71, %73 %75 = call noundef float @llvm.fabs.f32(float %74) %76 = fcmp ogt float %75, %67 - br i1 %76, label %.preheader191, label %77 + br i1 %76, label %.preheader190, label %77 -.preheader191: ; preds = %77, %69 +.preheader190: ; preds = %77, %69 br label %85 77: ; preds = %69 @@ -177,7 +177,7 @@ _ZNSt12_Vector_baseIN2cv6Point_IfEESaIS2_EE11_M_allocateEm.exit.i: ; preds = %24 %82 = fsub float %79, %81 %83 = call noundef float @llvm.fabs.f32(float %82) %84 = fcmp ogt float %83, %67 - br i1 %84, label %.preheader191, label %68 + br i1 %84, label %.preheader190, label %68 .loopexit402.i: ; preds = %280 %lpad.loopexit.i = landingpad { ptr, i32 } @@ -205,8 +205,8 @@ _ZSt27__uninitialized_default_n_aIPN2cv6Point_IfEEmS2_ET_S4_T0_RSaIT1_E.exit.i.i %scevgep.i.i.i.i.i42 = getelementptr inbounds i8, ptr %51, i64 32 br label %_ZN2cv10AutoBufferIfLm100EED2Ev.exit.i -85: ; preds = %.preheader191, %85 - %indvars.iv487.i = phi i64 [ %indvars.iv.next488.i, %85 ], [ 0, %.preheader191 ] +85: ; preds = %.preheader190, %85 + %indvars.iv487.i = phi i64 [ %indvars.iv.next488.i, %85 ], [ 0, %.preheader190 ] %indvars.iv.next488.i = add nuw nsw i64 %indvars.iv487.i, 1 %86 = and i64 %indvars.iv.next488.i, 3 %87 = getelementptr inbounds [4 x %"class.cv::Point_"], ptr %7, i64 0, i64 %86 @@ -835,9 +835,9 @@ _ZN2cv10AutoBufferIiLm264EEC2Em.exit.i: ; preds = %.noexc340.i, %_ZN2c br label %._crit_edge469.i .lr.ph468.preheader.i: ; preds = %410, %.preheader397.i - %.2235.lcssa.i142 = phi i32 [ %.1234.ph.lcssa.i, %.preheader397.i ], [ 8, %410 ] - %360 = add nsw i32 %.2235.lcssa.i142, -1 - %361 = zext nneg i32 %.2235.lcssa.i142 to i64 + %.2235.lcssa.i141 = phi i32 [ %.1234.ph.lcssa.i, %.preheader397.i ], [ 8, %410 ] + %360 = add nsw i32 %.2235.lcssa.i141, -1 + %361 = zext nneg i32 %.2235.lcssa.i141 to i64 %wide.trip.count557.i = zext nneg i32 %360 to i64 br label %.lr.ph468.i @@ -1227,8 +1227,8 @@ _ZN2cv10AutoBufferIfLm100EED2Ev.exit352.i: ; preds = %486, %_ZN2cv10AutoB %494 = ptrtoint ptr %.sroa.28.1 to i64 %495 = ptrtoint ptr %.sroa.0.5 to i64 %496 = sub i64 %494, %495 - %.not122 = icmp eq ptr %.sroa.28.1, %.sroa.0.5 - br i1 %.not122, label %._crit_edge, label %.lr.ph.preheader + %.not121 = icmp eq ptr %.sroa.28.1, %.sroa.0.5 + br i1 %.not121, label %._crit_edge, label %.lr.ph.preheader .lr.ph.preheader: ; preds = %.preheader %497 = ashr exact i64 %496, 3 @@ -1236,8 +1236,8 @@ _ZN2cv10AutoBufferIfLm100EED2Ev.exit352.i: ; preds = %486, %_ZN2cv10AutoB br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph - %.0121 = phi i64 [ %504, %.lr.ph ], [ 0, %.lr.ph.preheader ] - %498 = getelementptr inbounds %"class.cv::Point_", ptr %.sroa.0.5, i64 %.0121 + %.0120 = phi i64 [ %504, %.lr.ph ], [ 0, %.lr.ph.preheader ] + %498 = getelementptr inbounds %"class.cv::Point_", ptr %.sroa.0.5, i64 %.0120 %499 = load float, ptr %498, align 4 %500 = fadd float %39, %499 store float %500, ptr %498, align 4 @@ -1245,7 +1245,7 @@ _ZN2cv10AutoBufferIfLm100EED2Ev.exit352.i: ; preds = %486, %_ZN2cv10AutoB %502 = load float, ptr %501, align 4 %503 = fadd float %40, %502 store float %503, ptr %501, align 4 - %504 = add nuw i64 %.0121, 1 + %504 = add nuw i64 %.0120, 1 %exitcond.not = icmp eq i64 %504, %umax br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !42 diff --git a/bench/opencv/optimized/shapedescr.cpp.ll b/bench/opencv/optimized/shapedescr.cpp.ll index 29f82f1b603..721b61bcb59 100644 --- a/bench/opencv/optimized/shapedescr.cpp.ll +++ b/bench/opencv/optimized/shapedescr.cpp.ll @@ -4864,8 +4864,8 @@ define linkonce_odr hidden void @_ZN2cv15findSecondPointINS_6Point_IfEEEEvPKT_iR %64 = fsub float %51, %38 %65 = fmul float %64, %64 %66 = tail call float @llvm.fmuladd.f32(float %63, float %63, float %65) - %.sroa.0.0.vec.insert.i145.i = insertelement <2 x float> poison, float %50, i64 0 - %.sroa.0.4.vec.insert.i146.i = insertelement <2 x float> %.sroa.0.0.vec.insert.i145.i, float %53, i64 1 + %.sroa.0.0.vec.insert.i144.i = insertelement <2 x float> poison, float %50, i64 0 + %.sroa.0.4.vec.insert.i145.i = insertelement <2 x float> %.sroa.0.0.vec.insert.i144.i, float %53, i64 1 %67 = fmul float %55, %53 %68 = tail call float @llvm.fmuladd.f32(float %50, float %54, float %67) %69 = fneg float %55 @@ -4935,8 +4935,8 @@ define linkonce_odr hidden void @_ZN2cv15findSecondPointINS_6Point_IfEEEEvPKT_iR %113 = fadd float %51, %78 %114 = fmul float %112, 5.000000e-01 %115 = fmul float %113, 5.000000e-01 - %.sroa.0.0.vec.insert.i149.i = insertelement <2 x float> poison, float %114, i64 0 - %.sroa.0.4.vec.insert.i150.i = insertelement <2 x float> %.sroa.0.0.vec.insert.i149.i, float %115, i64 1 + %.sroa.0.0.vec.insert.i148.i = insertelement <2 x float> poison, float %114, i64 0 + %.sroa.0.4.vec.insert.i149.i = insertelement <2 x float> %.sroa.0.0.vec.insert.i148.i, float %115, i64 1 br label %_ZN2cvL14findCircle3ptsEPNS_6Point_IfEERS1_Rf.exit 116: ; preds = %108 @@ -4944,8 +4944,8 @@ define linkonce_odr hidden void @_ZN2cv15findSecondPointINS_6Point_IfEEEEvPKT_iR %118 = fadd float %38, %78 %119 = fmul float %117, 5.000000e-01 %120 = fmul float %118, 5.000000e-01 - %.sroa.0.0.vec.insert.i153.i = insertelement <2 x float> poison, float %119, i64 0 - %.sroa.0.4.vec.insert.i154.i = insertelement <2 x float> %.sroa.0.0.vec.insert.i153.i, float %120, i64 1 + %.sroa.0.0.vec.insert.i152.i = insertelement <2 x float> poison, float %119, i64 0 + %.sroa.0.4.vec.insert.i153.i = insertelement <2 x float> %.sroa.0.0.vec.insert.i152.i, float %120, i64 1 br label %_ZN2cvL14findCircle3ptsEPNS_6Point_IfEERS1_Rf.exit 121: ; preds = %.preheader.preheader.i @@ -4967,13 +4967,13 @@ define linkonce_odr hidden void @_ZN2cv15findSecondPointINS_6Point_IfEEEEvPKT_iR %135 = fsub float %133, %51 %136 = fmul float %135, %135 %137 = tail call float @llvm.fmuladd.f32(float %134, float %134, float %136) - %sqrt173.i = tail call float @llvm.sqrt.f32(float %137) - %138 = fadd float %sqrt173.i, 0x3F1A36E2E0000000 + %sqrt170.i = tail call float @llvm.sqrt.f32(float %137) + %138 = fadd float %sqrt170.i, 0x3F1A36E2E0000000 br label %_ZN2cvL14findCircle3ptsEPNS_6Point_IfEERS1_Rf.exit _ZN2cvL14findCircle3ptsEPNS_6Point_IfEERS1_Rf.exit: ; preds = %93, %111, %116, %121 %.063 = phi float [ %138, %121 ], [ %105, %116 ], [ %105, %111 ], [ %105, %93 ] - %.sroa.048.4 = phi <2 x float> [ %.sroa.048.4.vec.insert54, %121 ], [ %.sroa.0.4.vec.insert.i154.i, %116 ], [ %.sroa.0.4.vec.insert.i150.i, %111 ], [ %.sroa.0.4.vec.insert.i146.i, %93 ] + %.sroa.048.4 = phi <2 x float> [ %.sroa.048.4.vec.insert54, %121 ], [ %.sroa.0.4.vec.insert.i153.i, %116 ], [ %.sroa.0.4.vec.insert.i149.i, %111 ], [ %.sroa.0.4.vec.insert.i145.i, %93 ] %139 = fcmp ogt float %.063, 0.000000e+00 br i1 %139, label %140, label %141 @@ -5115,8 +5115,8 @@ define linkonce_odr hidden void @_ZN2cv15findSecondPointINS_6Point_IiEEEEvPKT_iR %82 = fadd float %44, %74 %83 = fmul float %81, 5.000000e-01 %84 = fmul float %82, 5.000000e-01 - %.sroa.0.0.vec.insert.i145.i.i = insertelement <2 x float> poison, float %83, i64 0 - %.sroa.0.4.vec.insert.i146.i.i = insertelement <2 x float> %.sroa.0.0.vec.insert.i145.i.i, float %84, i64 1 + %.sroa.0.0.vec.insert.i144.i.i = insertelement <2 x float> poison, float %83, i64 0 + %.sroa.0.4.vec.insert.i145.i.i = insertelement <2 x float> %.sroa.0.0.vec.insert.i144.i.i, float %84, i64 1 %85 = fmul float %76, %84 %86 = tail call float @llvm.fmuladd.f32(float %83, float %75, float %85) %87 = fneg float %76 @@ -5187,8 +5187,8 @@ define linkonce_odr hidden void @_ZN2cv15findSecondPointINS_6Point_IiEEEEvPKT_iR %133 = fadd float %74, %98 %134 = fmul float %132, 5.000000e-01 %135 = fmul float %133, 5.000000e-01 - %.sroa.0.0.vec.insert.i149.i.i = insertelement <2 x float> poison, float %134, i64 0 - %.sroa.0.4.vec.insert.i150.i.i = insertelement <2 x float> %.sroa.0.0.vec.insert.i149.i.i, float %135, i64 1 + %.sroa.0.0.vec.insert.i148.i.i = insertelement <2 x float> poison, float %134, i64 0 + %.sroa.0.4.vec.insert.i149.i.i = insertelement <2 x float> %.sroa.0.0.vec.insert.i148.i.i, float %135, i64 1 br label %_ZN2cvL14findCircle3ptsEPNS_6Point_IfEERS1_Rf.exit.i 136: ; preds = %128 @@ -5196,8 +5196,8 @@ define linkonce_odr hidden void @_ZN2cv15findSecondPointINS_6Point_IiEEEEvPKT_iR %138 = fadd float %44, %98 %139 = fmul float %137, 5.000000e-01 %140 = fmul float %138, 5.000000e-01 - %.sroa.0.0.vec.insert.i153.i.i = insertelement <2 x float> poison, float %139, i64 0 - %.sroa.0.4.vec.insert.i154.i.i = insertelement <2 x float> %.sroa.0.0.vec.insert.i153.i.i, float %140, i64 1 + %.sroa.0.0.vec.insert.i152.i.i = insertelement <2 x float> poison, float %139, i64 0 + %.sroa.0.4.vec.insert.i153.i.i = insertelement <2 x float> %.sroa.0.0.vec.insert.i152.i.i, float %140, i64 1 br label %_ZN2cvL14findCircle3ptsEPNS_6Point_IfEERS1_Rf.exit.i 141: ; preds = %.preheader.preheader.i @@ -5219,12 +5219,12 @@ define linkonce_odr hidden void @_ZN2cv15findSecondPointINS_6Point_IiEEEEvPKT_iR %155 = fsub float %153, %74 %156 = fmul float %155, %155 %157 = tail call float @llvm.fmuladd.f32(float %154, float %154, float %156) - %sqrt173.i.i = tail call float @llvm.sqrt.f32(float %157) - %158 = fadd float %sqrt173.i.i, 0x3F1A36E2E0000000 + %sqrt170.i.i = tail call float @llvm.sqrt.f32(float %157) + %158 = fadd float %sqrt170.i.i, 0x3F1A36E2E0000000 br label %_ZN2cvL14findCircle3ptsEPNS_6Point_IfEERS1_Rf.exit.i _ZN2cvL14findCircle3ptsEPNS_6Point_IfEERS1_Rf.exit.i: ; preds = %113, %141, %136, %131 - %.sroa.0.2.i = phi <2 x float> [ %.sroa.0.4.vec.insert57.i, %141 ], [ %.sroa.0.4.vec.insert.i154.i.i, %136 ], [ %.sroa.0.4.vec.insert.i150.i.i, %131 ], [ %.sroa.0.4.vec.insert.i146.i.i, %113 ] + %.sroa.0.2.i = phi <2 x float> [ %.sroa.0.4.vec.insert57.i, %141 ], [ %.sroa.0.4.vec.insert.i153.i.i, %136 ], [ %.sroa.0.4.vec.insert.i149.i.i, %131 ], [ %.sroa.0.4.vec.insert.i145.i.i, %113 ] %.061.i = phi float [ %158, %141 ], [ %125, %136 ], [ %125, %131 ], [ %125, %113 ] %159 = fcmp ogt float %.061.i, 0.000000e+00 br i1 %159, label %160, label %163 diff --git a/bench/opencv/optimized/warpPerspective_demo.cpp.ll b/bench/opencv/optimized/warpPerspective_demo.cpp.ll index fb06b1abe9c..e95c17e7d59 100644 --- a/bench/opencv/optimized/warpPerspective_demo.cpp.ll +++ b/bench/opencv/optimized/warpPerspective_demo.cpp.ll @@ -225,8 +225,8 @@ _ZNK2cv17CommandLineParser3getINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIc 80: ; preds = %65 store float %74, ptr %78, align 4 - %.sroa_idx272 = getelementptr inbounds i8, ptr %78, i64 4 - store float %77, ptr %.sroa_idx272, align 4 + %.sroa_idx269 = getelementptr inbounds i8, ptr %78, i64 4 + store float %77, ptr %.sroa_idx269, align 4 %81 = load ptr, ptr getelementptr inbounds (i8, ptr @roi_corners, i64 8), align 8 %82 = getelementptr inbounds i8, ptr %81, i64 8 store ptr %82, ptr getelementptr inbounds (i8, ptr @roi_corners, i64 8), align 8 @@ -267,8 +267,8 @@ _ZNSt12_Vector_baseIN2cv6Point_IfEESaIS2_EE11_M_allocateEm.exit.i.i.i: ; preds = %97 = phi ptr [ null, %_ZNKSt6vectorIN2cv6Point_IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i ], [ %96, %94 ] %98 = getelementptr inbounds %"class.cv::Point_", ptr %97, i64 %89 store float %74, ptr %98, align 4 - %.sroa_idx274 = getelementptr inbounds i8, ptr %98, i64 4 - store float %77, ptr %.sroa_idx274, align 4 + %.sroa_idx271 = getelementptr inbounds i8, ptr %98, i64 4 + store float %77, ptr %.sroa_idx271, align 4 %.not10.i.i.i.i.i.i.i = icmp eq ptr %84, %78 br i1 %.not10.i.i.i.i.i.i.i, label %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit22.i.i.i, label %.lr.ph.i.i.i.i.i.i.i @@ -317,12 +317,12 @@ _ZNSt6vectorIN2cv6Point_IfEESaIS2_EE9push_backEOS2_.exit: ; preds = %_ZNSt6vecto 115: ; preds = %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE9push_backEOS2_.exit store float %110, ptr %106, align 4 - %.sroa_idx265 = getelementptr inbounds i8, ptr %106, i64 4 - store float %114, ptr %.sroa_idx265, align 4 + %.sroa_idx262 = getelementptr inbounds i8, ptr %106, i64 4 + store float %114, ptr %.sroa_idx262, align 4 %116 = load ptr, ptr getelementptr inbounds (i8, ptr @roi_corners, i64 8), align 8 %117 = getelementptr inbounds i8, ptr %116, i64 8 store ptr %117, ptr getelementptr inbounds (i8, ptr @roi_corners, i64 8), align 8 - %.pre296 = load ptr, ptr getelementptr inbounds (i8, ptr @roi_corners, i64 16), align 8 + %.pre289 = load ptr, ptr getelementptr inbounds (i8, ptr @roi_corners, i64 16), align 8 br label %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE9push_backEOS2_.exit145 118: ; preds = %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE9push_backEOS2_.exit @@ -352,8 +352,8 @@ _ZNSt12_Vector_baseIN2cv6Point_IfEESaIS2_EE11_M_allocateEm.exit.i.i.i133: ; pred %132 = phi ptr [ null, %_ZNKSt6vectorIN2cv6Point_IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i130 ], [ %131, %129 ] %133 = getelementptr inbounds %"class.cv::Point_", ptr %132, i64 %124 store float %110, ptr %133, align 4 - %.sroa_idx267 = getelementptr inbounds i8, ptr %133, i64 4 - store float %114, ptr %.sroa_idx267, align 4 + %.sroa_idx264 = getelementptr inbounds i8, ptr %133, i64 4 + store float %114, ptr %.sroa_idx264, align 4 %.not10.i.i.i.i.i.i.i134 = icmp eq ptr %119, %105 br i1 %.not10.i.i.i.i.i.i.i134, label %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit22.i.i.i139, label %.lr.ph.i.i.i.i.i.i.i135 @@ -387,7 +387,7 @@ _ZNSt6vectorIN2cv6Point_IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__n br label %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE9push_backEOS2_.exit145 _ZNSt6vectorIN2cv6Point_IfEESaIS2_EE9push_backEOS2_.exit145: ; preds = %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i142, %115 - %140 = phi ptr [ %139, %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i142 ], [ %.pre296, %115 ] + %140 = phi ptr [ %139, %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i142 ], [ %.pre289, %115 ] %141 = phi ptr [ %137, %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i142 ], [ %117, %115 ] %142 = load i32, ptr %66, align 4 %143 = sitofp i32 %142 to double @@ -402,12 +402,12 @@ _ZNSt6vectorIN2cv6Point_IfEESaIS2_EE9push_backEOS2_.exit145: ; preds = %_ZNSt6ve 150: ; preds = %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE9push_backEOS2_.exit145 store float %145, ptr %141, align 4 - %.sroa_idx258 = getelementptr inbounds i8, ptr %141, i64 4 - store float %149, ptr %.sroa_idx258, align 4 + %.sroa_idx255 = getelementptr inbounds i8, ptr %141, i64 4 + store float %149, ptr %.sroa_idx255, align 4 %151 = load ptr, ptr getelementptr inbounds (i8, ptr @roi_corners, i64 8), align 8 %152 = getelementptr inbounds i8, ptr %151, i64 8 store ptr %152, ptr getelementptr inbounds (i8, ptr @roi_corners, i64 8), align 8 - %.pre297 = load ptr, ptr getelementptr inbounds (i8, ptr @roi_corners, i64 16), align 8 + %.pre290 = load ptr, ptr getelementptr inbounds (i8, ptr @roi_corners, i64 16), align 8 br label %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE9push_backEOS2_.exit162 153: ; preds = %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE9push_backEOS2_.exit145 @@ -437,8 +437,8 @@ _ZNSt12_Vector_baseIN2cv6Point_IfEESaIS2_EE11_M_allocateEm.exit.i.i.i150: ; pred %167 = phi ptr [ null, %_ZNKSt6vectorIN2cv6Point_IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i147 ], [ %166, %164 ] %168 = getelementptr inbounds %"class.cv::Point_", ptr %167, i64 %159 store float %145, ptr %168, align 4 - %.sroa_idx260 = getelementptr inbounds i8, ptr %168, i64 4 - store float %149, ptr %.sroa_idx260, align 4 + %.sroa_idx257 = getelementptr inbounds i8, ptr %168, i64 4 + store float %149, ptr %.sroa_idx257, align 4 %.not10.i.i.i.i.i.i.i151 = icmp eq ptr %154, %140 br i1 %.not10.i.i.i.i.i.i.i151, label %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit22.i.i.i156, label %.lr.ph.i.i.i.i.i.i.i152 @@ -472,7 +472,7 @@ _ZNSt6vectorIN2cv6Point_IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__n br label %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE9push_backEOS2_.exit162 _ZNSt6vectorIN2cv6Point_IfEESaIS2_EE9push_backEOS2_.exit162: ; preds = %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i159, %150 - %175 = phi ptr [ %174, %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i159 ], [ %.pre297, %150 ] + %175 = phi ptr [ %174, %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i159 ], [ %.pre290, %150 ] %176 = phi ptr [ %172, %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i159 ], [ %152, %150 ] %177 = load i32, ptr %66, align 4 %178 = sitofp i32 %177 to double @@ -487,8 +487,8 @@ _ZNSt6vectorIN2cv6Point_IfEESaIS2_EE9push_backEOS2_.exit162: ; preds = %_ZNSt6ve 185: ; preds = %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE9push_backEOS2_.exit162 store float %180, ptr %176, align 4 - %.sroa_idx252 = getelementptr inbounds i8, ptr %176, i64 4 - store float %184, ptr %.sroa_idx252, align 4 + %.sroa_idx249 = getelementptr inbounds i8, ptr %176, i64 4 + store float %184, ptr %.sroa_idx249, align 4 %186 = load ptr, ptr getelementptr inbounds (i8, ptr @roi_corners, i64 8), align 8 %187 = getelementptr inbounds i8, ptr %186, i64 8 store ptr %187, ptr getelementptr inbounds (i8, ptr @roi_corners, i64 8), align 8 @@ -521,8 +521,8 @@ _ZNSt12_Vector_baseIN2cv6Point_IfEESaIS2_EE11_M_allocateEm.exit.i.i.i167: ; pred %202 = phi ptr [ null, %_ZNKSt6vectorIN2cv6Point_IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i164 ], [ %201, %199 ] %203 = getelementptr inbounds %"class.cv::Point_", ptr %202, i64 %194 store float %180, ptr %203, align 4 - %.sroa_idx254 = getelementptr inbounds i8, ptr %203, i64 4 - store float %184, ptr %.sroa_idx254, align 4 + %.sroa_idx251 = getelementptr inbounds i8, ptr %203, i64 4 + store float %184, ptr %.sroa_idx251, align 4 %.not10.i.i.i.i.i.i.i168 = icmp eq ptr %189, %175 br i1 %.not10.i.i.i.i.i.i.i168, label %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit22.i.i.i173, label %.lr.ph.i.i.i.i.i.i.i169 @@ -667,16 +667,16 @@ _ZNSt6vectorIN2cv6Point_IfEESaIS2_EE9push_backEOS2_.exit179: ; preds = %_ZNSt6ve call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %16) #18 %278 = load ptr, ptr getelementptr inbounds (i8, ptr @roi_corners, i64 8), align 8 %279 = load ptr, ptr @roi_corners, align 8 - %.not290 = icmp eq ptr %278, %279 - br i1 %.not290, label %._crit_edge, label %.lr.ph + %.not283 = icmp eq ptr %278, %279 + br i1 %.not283, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %277, %367 %280 = phi ptr [ %370, %367 ], [ %279, %277 ] - %.066287 = phi i64 [ %368, %367 ], [ 0, %277 ] + %.066280 = phi i64 [ %368, %367 ], [ 0, %277 ] store i64 0, ptr %217, align 8 store i32 50397184, ptr %17, align 8 store ptr %11, ptr %216, align 8 - %281 = getelementptr inbounds %"class.cv::Point_", ptr %280, i64 %.066287 + %281 = getelementptr inbounds %"class.cv::Point_", ptr %280, i64 %.066280 %282 = load float, ptr %281, align 4 %283 = insertelement <4 x float> poison, float %282, i64 0 %284 = call noundef i32 @llvm.x86.sse.cvtss2si(<4 x float> %283) @@ -695,7 +695,7 @@ _ZNSt6vectorIN2cv6Point_IfEESaIS2_EE9push_backEOS2_.exit179: ; preds = %_ZNSt6ve to label %289 unwind label %356 289: ; preds = %.lr.ph - %.not90 = icmp eq i64 %.066287, 0 + %.not90 = icmp eq i64 %.066280, 0 br i1 %.not90, label %367, label %290 290: ; preds = %289 @@ -703,7 +703,7 @@ _ZNSt6vectorIN2cv6Point_IfEESaIS2_EE9push_backEOS2_.exit179: ; preds = %_ZNSt6ve store i32 50397184, ptr %19, align 8 store ptr %11, ptr %220, align 8 %291 = load ptr, ptr @roi_corners, align 8 - %292 = getelementptr %"class.cv::Point_", ptr %291, i64 %.066287 + %292 = getelementptr %"class.cv::Point_", ptr %291, i64 %.066280 %293 = getelementptr i8, ptr %292, i64 -8 %294 = load float, ptr %293, align 4 %295 = insertelement <4 x float> poison, float %294, i64 0 @@ -738,7 +738,7 @@ _ZNSt6vectorIN2cv6Point_IfEESaIS2_EE9push_backEOS2_.exit179: ; preds = %_ZNSt6ve store i32 50397184, ptr %21, align 8 store ptr %11, ptr %224, align 8 %309 = load ptr, ptr @roi_corners, align 8 - %310 = getelementptr inbounds %"class.cv::Point_", ptr %309, i64 %.066287 + %310 = getelementptr inbounds %"class.cv::Point_", ptr %309, i64 %.066280 %311 = load float, ptr %310, align 4 %312 = insertelement <4 x float> poison, float %311, i64 0 %313 = call noundef i32 @llvm.x86.sse.cvtss2si(<4 x float> %312) @@ -760,7 +760,7 @@ _ZNSt6vectorIN2cv6Point_IfEESaIS2_EE9push_backEOS2_.exit179: ; preds = %_ZNSt6ve store i64 0, ptr %229, align 8 store i32 50397184, ptr %23, align 8 store ptr %11, ptr %228, align 8 - %319 = getelementptr inbounds [4 x %"class.std::__cxx11::basic_string"], ptr @_Z6labelsB5cxx11, i64 0, i64 %.066287 + %319 = getelementptr inbounds [4 x %"class.std::__cxx11::basic_string"], ptr @_Z6labelsB5cxx11, i64 0, i64 %.066280 %320 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %319) #18 call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #18 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef %320, ptr noundef nonnull align 1 dereferenceable(1) %25) @@ -768,7 +768,7 @@ _ZNSt6vectorIN2cv6Point_IfEESaIS2_EE9push_backEOS2_.exit179: ; preds = %_ZNSt6ve 321: ; preds = %318 %322 = load ptr, ptr @roi_corners, align 8 - %323 = getelementptr inbounds %"class.cv::Point_", ptr %322, i64 %.066287 + %323 = getelementptr inbounds %"class.cv::Point_", ptr %322, i64 %.066280 %324 = load float, ptr %323, align 4 %325 = insertelement <4 x float> poison, float %324, i64 0 %326 = call noundef i32 @llvm.x86.sse.cvtss2si(<4 x float> %325) @@ -912,7 +912,7 @@ _ZNSt6vectorIN2cv6Point_IfEESaIS2_EE9push_backEOS2_.exit179: ; preds = %_ZNSt6ve br label %586 367: ; preds = %289, %331 - %368 = add nuw i64 %.066287, 1 + %368 = add nuw i64 %.066280, 1 %369 = load ptr, ptr getelementptr inbounds (i8, ptr @roi_corners, i64 8), align 8 %370 = load ptr, ptr @roi_corners, align 8 %371 = ptrtoint ptr %369 to i64 @@ -931,12 +931,12 @@ _ZNSt6vectorIN2cv6Point_IfEESaIS2_EE9push_backEOS2_.exit179: ; preds = %_ZNSt6ve to label %._crit_edge._crit_edge unwind label %376 ._crit_edge._crit_edge: ; preds = %._crit_edge - %.pre298 = load i8, ptr @validation_needed, align 1 - %.pre299 = load ptr, ptr getelementptr inbounds (i8, ptr @roi_corners, i64 8), align 8 - %.pre300 = load ptr, ptr @roi_corners, align 8 - %.pre302 = ptrtoint ptr %.pre299 to i64 - %.pre303 = ptrtoint ptr %.pre300 to i64 - %.pre305 = and i8 %.pre298, 1 + %.pre291 = load i8, ptr @validation_needed, align 1 + %.pre292 = load ptr, ptr getelementptr inbounds (i8, ptr @roi_corners, i64 8), align 8 + %.pre293 = load ptr, ptr @roi_corners, align 8 + %.pre295 = ptrtoint ptr %.pre292 to i64 + %.pre296 = ptrtoint ptr %.pre293 to i64 + %.pre298 = and i8 %.pre291, 1 br label %378 376: ; preds = %._crit_edge @@ -945,12 +945,12 @@ _ZNSt6vectorIN2cv6Point_IfEESaIS2_EE9push_backEOS2_.exit179: ; preds = %_ZNSt6ve br label %586 378: ; preds = %._crit_edge._crit_edge, %265 - %.pre-phi306 = phi i8 [ %.pre305, %._crit_edge._crit_edge ], [ %273, %265 ] - %.pre-phi304 = phi i64 [ %.pre303, %._crit_edge._crit_edge ], [ %270, %265 ] - %.pre-phi = phi i64 [ %.pre302, %._crit_edge._crit_edge ], [ %269, %265 ] - %379 = sub i64 %.pre-phi, %.pre-phi304 + %.pre-phi299 = phi i8 [ %.pre298, %._crit_edge._crit_edge ], [ %273, %265 ] + %.pre-phi297 = phi i64 [ %.pre296, %._crit_edge._crit_edge ], [ %270, %265 ] + %.pre-phi = phi i64 [ %.pre295, %._crit_edge._crit_edge ], [ %269, %265 ] + %379 = sub i64 %.pre-phi, %.pre-phi297 %380 = icmp ne i64 %379, 32 - %.not7778 = icmp eq i8 %.pre-phi306, 0 + %.not7778 = icmp eq i8 %.pre-phi299, 0 %.not77 = select i1 %380, i1 true, i1 %.not7778 br i1 %.not77, label %526, label %381 @@ -1133,10 +1133,10 @@ _ZNSt6vectorIN2cv6Point_IfEESaIS2_EE9push_backEOS2_.exit179: ; preds = %_ZNSt6ve %457 = fmul float %455, 5.000000e-01 %.sroa.0.0.vec.insert.i217 = insertelement <2 x float> poison, float %457, i64 0 %458 = fmul float %456, 5.000000e-01 - %.sroa.0.4.vec.insert.i220 = insertelement <2 x float> %.sroa.0.0.vec.insert.i217, float %458, i64 1 + %.sroa.0.4.vec.insert.i219 = insertelement <2 x float> %.sroa.0.0.vec.insert.i217, float %458, i64 1 %459 = load ptr, ptr @midpoints, align 8 %460 = getelementptr inbounds i8, ptr %459, i64 8 - store <2 x float> %.sroa.0.4.vec.insert.i220, ptr %460, align 4 + store <2 x float> %.sroa.0.4.vec.insert.i219, ptr %460, align 4 %461 = getelementptr inbounds i8, ptr %450, i64 24 %.val104 = load float, ptr %452, align 4 %.val105 = load float, ptr %454, align 4 @@ -1146,11 +1146,11 @@ _ZNSt6vectorIN2cv6Point_IfEESaIS2_EE9push_backEOS2_.exit179: ; preds = %_ZNSt6ve %463 = fadd float %.val104, %.val106 %464 = fadd float %.val105, %.val107 %465 = fmul float %463, 5.000000e-01 - %.sroa.0.0.vec.insert.i224 = insertelement <2 x float> poison, float %465, i64 0 + %.sroa.0.0.vec.insert.i223 = insertelement <2 x float> poison, float %465, i64 0 %466 = fmul float %464, 5.000000e-01 - %.sroa.0.4.vec.insert.i227 = insertelement <2 x float> %.sroa.0.0.vec.insert.i224, float %466, i64 1 + %.sroa.0.4.vec.insert.i225 = insertelement <2 x float> %.sroa.0.0.vec.insert.i223, float %466, i64 1 %467 = getelementptr inbounds i8, ptr %459, i64 16 - store <2 x float> %.sroa.0.4.vec.insert.i227, ptr %467, align 4 + store <2 x float> %.sroa.0.4.vec.insert.i225, ptr %467, align 4 %.val108 = load float, ptr %461, align 4 %.val109 = load float, ptr %462, align 4 %.val110 = load float, ptr %450, align 4 @@ -1159,11 +1159,11 @@ _ZNSt6vectorIN2cv6Point_IfEESaIS2_EE9push_backEOS2_.exit179: ; preds = %_ZNSt6ve %469 = fadd float %.val108, %.val110 %470 = fadd float %.val109, %.val111 %471 = fmul float %469, 5.000000e-01 - %.sroa.0.0.vec.insert.i231 = insertelement <2 x float> poison, float %471, i64 0 + %.sroa.0.0.vec.insert.i229 = insertelement <2 x float> poison, float %471, i64 0 %472 = fmul float %470, 5.000000e-01 - %.sroa.0.4.vec.insert.i234 = insertelement <2 x float> %.sroa.0.0.vec.insert.i231, float %472, i64 1 + %.sroa.0.4.vec.insert.i231 = insertelement <2 x float> %.sroa.0.0.vec.insert.i229, float %472, i64 1 %473 = getelementptr inbounds i8, ptr %459, i64 24 - store <2 x float> %.sroa.0.4.vec.insert.i234, ptr %473, align 4 + store <2 x float> %.sroa.0.4.vec.insert.i231, ptr %473, align 4 %474 = load ptr, ptr @dst_corners, align 8 store float 0.000000e+00, ptr %474, align 4 %475 = load ptr, ptr @dst_corners, align 8 @@ -1206,8 +1206,8 @@ _ZNSt6vectorIN2cv6Point_IfEESaIS2_EE9push_backEOS2_.exit179: ; preds = %_ZNSt6ve %499 = fpext float %497 to double %500 = fmul double %499, %499 %501 = call double @llvm.fmuladd.f64(double %498, double %498, double %500) - %sqrt.i239 = call noundef double @llvm.sqrt.f64(double %501) - %502 = fptrunc double %sqrt.i239 to float + %sqrt.i236 = call noundef double @llvm.sqrt.f64(double %501) + %502 = fptrunc double %sqrt.i236 to float %503 = getelementptr inbounds i8, ptr %489, i64 20 store float %502, ptr %503, align 4 %504 = getelementptr inbounds i8, ptr %489, i64 24 @@ -1244,10 +1244,10 @@ _ZNSt6vectorIN2cv6Point_IfEESaIS2_EE9push_backEOS2_.exit179: ; preds = %_ZNSt6ve store ptr %38, ptr %261, align 8 %.sroa.2.0.insert.ext = zext i32 %508 to i64 %.sroa.2.0.insert.shift = shl nuw i64 %.sroa.2.0.insert.ext, 32 - %.sroa.0245.0.insert.ext = zext i32 %510 to i64 - %.sroa.0245.0.insert.insert = or disjoint i64 %.sroa.2.0.insert.shift, %.sroa.0245.0.insert.ext + %.sroa.0242.0.insert.ext = zext i32 %510 to i64 + %.sroa.0242.0.insert.insert = or disjoint i64 %.sroa.2.0.insert.shift, %.sroa.0242.0.insert.ext call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %45, i8 0, i64 32, i1 false) - invoke void @_ZN2cv15warpPerspectiveERKNS_11_InputArrayERKNS_12_OutputArrayES2_NS_5Size_IiEEiiRKNS_7Scalar_IdEE(ptr noundef nonnull align 8 dereferenceable(24) %42, ptr noundef nonnull align 8 dereferenceable(24) %43, ptr noundef nonnull align 8 dereferenceable(24) %44, i64 %.sroa.0245.0.insert.insert, i32 noundef 1, i32 noundef 0, ptr noundef nonnull align 8 dereferenceable(32) %45) + invoke void @_ZN2cv15warpPerspectiveERKNS_11_InputArrayERKNS_12_OutputArrayES2_NS_5Size_IiEEiiRKNS_7Scalar_IdEE(ptr noundef nonnull align 8 dereferenceable(24) %42, ptr noundef nonnull align 8 dereferenceable(24) %43, ptr noundef nonnull align 8 dereferenceable(24) %44, i64 %.sroa.0242.0.insert.insert, i32 noundef 1, i32 noundef 0, ptr noundef nonnull align 8 dereferenceable(32) %45) to label %511 unwind label %518 511: ; preds = %506 @@ -1327,8 +1327,8 @@ _ZNSt6vectorIN2cv6Point_IfEESaIS2_EE9push_backEOS2_.exit179: ; preds = %_ZNSt6ve 533: ; preds = %528 %534 = load ptr, ptr @roi_corners, align 8 %535 = load ptr, ptr getelementptr inbounds (i8, ptr @roi_corners, i64 8), align 8 - %.not.i.i240 = icmp eq ptr %535, %534 - br i1 %.not.i.i240, label %.thread, label %536 + %.not.i.i237 = icmp eq ptr %535, %534 + br i1 %.not.i.i237, label %.thread, label %536 536: ; preds = %533 store ptr %534, ptr getelementptr inbounds (i8, ptr @roi_corners, i64 8), align 8 @@ -1347,7 +1347,7 @@ _ZNSt6vectorIN2cv6Point_IfEESaIS2_EE9push_backEOS2_.exit179: ; preds = %_ZNSt6ve %543 = load ptr, ptr getelementptr inbounds (i8, ptr @roi_corners, i64 8), align 8 %544 = getelementptr inbounds i8, ptr %543, i64 8 store ptr %544, ptr getelementptr inbounds (i8, ptr @roi_corners, i64 8), align 8 - %.pre301 = load ptr, ptr @roi_corners, align 8 + %.pre294 = load ptr, ptr @roi_corners, align 8 br label %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE9push_backERKS2_.exit 545: ; preds = %537 @@ -1404,10 +1404,10 @@ _ZNSt6vectorIN2cv6Point_IfEESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17_ _ZNSt6vectorIN2cv6Point_IfEESaIS2_EE9push_backERKS2_.exit: ; preds = %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i, %541 %566 = phi ptr [ %564, %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i ], [ %544, %541 ] - %567 = phi ptr [ %558, %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i ], [ %.pre301, %541 ] + %567 = phi ptr [ %558, %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i ], [ %.pre294, %541 ] %568 = getelementptr inbounds i8, ptr %567, i64 8 - %.not.i.i243 = icmp eq ptr %568, %566 - br i1 %.not.i.i243, label %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS2_S4_EE.exit, label %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN2cv6Point_IfEESt6vectorIS4_SaIS4_EEEES9_ET0_T_SB_SA_.exit.i.i + %.not.i.i240 = icmp eq ptr %568, %566 + br i1 %.not.i.i240, label %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS2_S4_EE.exit, label %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN2cv6Point_IfEESt6vectorIS4_SaIS4_EEEES9_ET0_T_SB_SA_.exit.i.i _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN2cv6Point_IfEESt6vectorIS4_SaIS4_EEEES9_ET0_T_SB_SA_.exit.i.i: ; preds = %_ZNSt6vectorIN2cv6Point_IfEESaIS2_EE9push_backERKS2_.exit %569 = ptrtoint ptr %566 to i64 diff --git a/bench/pbrt-v4/optimized/cameras.cpp.ll b/bench/pbrt-v4/optimized/cameras.cpp.ll index 85273117632..a482215cb00 100644 --- a/bench/pbrt-v4/optimized/cameras.cpp.ll +++ b/bench/pbrt-v4/optimized/cameras.cpp.ll @@ -5239,9 +5239,12 @@ entry: br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry - %t.sroa.0.0.vec.extract.i.i = extractelement <4 x float> %0, i64 2 + %bc = bitcast <4 x float> %0 to <2 x i64> + %8 = extractelement <2 x i64> %bc, i64 1 + %9 = bitcast i64 %8 to <2 x float> + %t.sroa.0.0.vec.extract.i.i = extractelement <2 x float> %9, i64 0 %mul.i.i.i = fmul float %t.sroa.0.0.vec.extract.i.i, 2.000000e+00 - %t.sroa.0.4.vec.extract.i.i = extractelement <4 x float> %0, i64 3 + %t.sroa.0.4.vec.extract.i.i = extractelement <2 x float> %9, i64 1 %mul3.i.i.i = fmul float %t.sroa.0.4.vec.extract.i.i, 2.000000e+00 %sub.i.i3 = fadd float %mul.i.i.i, -1.000000e+00 %sub4.i.i = fadd float %mul3.i.i.i, -1.000000e+00 @@ -5251,9 +5254,9 @@ if.then: ; preds = %entry br i1 %or.cond.i, label %_ZN4pbrt27SampleUniformDiskConcentricENS_6Point2IfEE.exit, label %if.end.i if.end.i: ; preds = %if.then - %8 = tail call noundef float @llvm.fabs.f32(float %sub.i.i3) - %9 = tail call noundef float @llvm.fabs.f32(float %sub4.i.i) - %cmp11.i = fcmp ogt float %8, %9 + %10 = tail call noundef float @llvm.fabs.f32(float %sub.i.i3) + %11 = tail call noundef float @llvm.fabs.f32(float %sub4.i.i) + %cmp11.i = fcmp ogt float %10, %11 br i1 %cmp11.i, label %if.then12.i, label %if.else.i if.then12.i: ; preds = %if.end.i @@ -5285,12 +5288,12 @@ _ZN4pbrt27SampleUniformDiskConcentricENS_6Point2IfEE.exit: ; preds = %if.then, % %t.sroa.0.4.vec.extract.i = extractelement <2 x float> %retval.sroa.0.0.i, i64 1 %mul2.i.i = fmul float %5, %t.sroa.0.4.vec.extract.i %focalDistance = getelementptr inbounds i8, ptr %this, i64 1412 - %10 = load float, ptr %focalDistance, align 4 - %mul.i.i5 = fmul float %10, 0.000000e+00 + %12 = load float, ptr %focalDistance, align 4 + %mul.i.i5 = fmul float %12, 0.000000e+00 %add.i.i7 = fadd float %mul.i.i5, %6 %y.i1.i = getelementptr inbounds i8, ptr %ray, i64 4 %add4.i.i = fadd float %mul.i.i5, %7 - %add6.i.i = fadd float %10, %call.fca.1.extract + %add6.i.i = fadd float %12, %call.fca.1.extract store float %mul.i.i4, ptr %ray, align 8 store float %mul2.i.i, ptr %y.i1.i, align 4 store float 0.000000e+00, ptr %o.sroa.2.0.o3.sroa_idx.i, align 8 @@ -5334,8 +5337,8 @@ _ZN4pbrt15SampledSpectrumC2Ef.exit: ; preds = %for.body.i.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(57) %agg.result, ptr noundef nonnull align 8 dereferenceable(56) %ref.tmp34, i64 28, i1 false) %medium.i.i.i = getelementptr inbounds i8, ptr %agg.result, i64 32 %medium3.i.i.i = getelementptr inbounds i8, ptr %ref.tmp34, i64 32 - %11 = load i64, ptr %medium3.i.i.i, align 8 - store i64 %11, ptr %medium.i.i.i, align 8 + %13 = load i64, ptr %medium3.i.i.i, align 8 + store i64 %13, ptr %medium.i.i.i, align 8 %weight.i.i = getelementptr inbounds i8, ptr %agg.result, i64 40 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %weight.i.i, ptr noundef nonnull align 8 dereferenceable(16) %weight, i64 16, i1 false) ret void @@ -5390,8 +5393,7 @@ entry: br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry - %10 = trunc i64 %6 to i32 - %t.sroa.0.0.vec.extract.i.i = bitcast i32 %10 to float + %t.sroa.0.0.vec.extract.i.i = extractelement <2 x float> %7, i64 0 %mul.i.i.i = fmul float %t.sroa.0.0.vec.extract.i.i, 2.000000e+00 %t.sroa.0.4.vec.extract.i.i = extractelement <2 x float> %7, i64 1 %mul3.i.i.i = fmul float %t.sroa.0.4.vec.extract.i.i, 2.000000e+00 @@ -5403,9 +5405,9 @@ if.then: ; preds = %entry br i1 %or.cond.i, label %_ZN4pbrt27SampleUniformDiskConcentricENS_6Point2IfEE.exit, label %if.end.i if.end.i: ; preds = %if.then - %11 = tail call noundef float @llvm.fabs.f32(float %sub.i.i9) - %12 = tail call noundef float @llvm.fabs.f32(float %sub4.i.i) - %cmp11.i = fcmp ogt float %11, %12 + %10 = tail call noundef float @llvm.fabs.f32(float %sub.i.i9) + %11 = tail call noundef float @llvm.fabs.f32(float %sub4.i.i) + %cmp11.i = fcmp ogt float %10, %11 br i1 %cmp11.i, label %if.then12.i, label %if.else.i if.then12.i: ; preds = %if.end.i @@ -5439,12 +5441,12 @@ _ZN4pbrt27SampleUniformDiskConcentricENS_6Point2IfEE.exit: ; preds = %if.then, % %t.sroa.0.4.vec.extract.i = extractelement <2 x float> %retval.sroa.0.0.i, i64 1 %mul2.i.i = fmul float %5, %t.sroa.0.4.vec.extract.i %focalDistance = getelementptr inbounds i8, ptr %this, i64 1412 - %13 = load float, ptr %focalDistance, align 4 - %mul.i.i11 = fmul float %13, 0.000000e+00 + %12 = load float, ptr %focalDistance, align 4 + %mul.i.i11 = fmul float %12, 0.000000e+00 %add.i.i13 = fadd float %mul.i.i11, %8 %y.i1.i = getelementptr inbounds i8, ptr %ray, i64 4 %add4.i.i = fadd float %mul.i.i11, %9 - %add6.i.i = fadd float %13, %call.fca.1.extract + %add6.i.i = fadd float %12, %call.fca.1.extract store float %mul.i.i10, ptr %ray, align 8 store float %mul2.i.i, ptr %y.i1.i, align 4 store float 0.000000e+00, ptr %o.sroa.2.0.o3.sroa_idx.i.i, align 8 @@ -5466,22 +5468,21 @@ _ZN4pbrt27SampleUniformDiskConcentricENS_6Point2IfEE.exit: ; preds = %if.then, % %retval.sroa.0.4.vec.insert.i.i18 = insertelement <2 x float> %retval.sroa.0.0.vec.insert.i.i17, float %div2.i.i, i64 1 store <2 x float> %retval.sroa.0.4.vec.insert.i.i18, ptr %d4.i.i, align 4 store float %div3.i.i, ptr %d.sroa.2.0.d4.sroa_idx.i.i, align 4 - %14 = extractelement <2 x float> %agg.tmp25.sroa.0.0.copyload, i64 0 - %15 = extractelement <2 x float> %agg.tmp25.sroa.0.0.copyload, i64 1 + %13 = extractelement <2 x float> %agg.tmp25.sroa.0.0.copyload, i64 0 + %14 = extractelement <2 x float> %agg.tmp25.sroa.0.0.copyload, i64 1 br label %if.end if.end: ; preds = %_ZN4pbrt27SampleUniformDiskConcentricENS_6Point2IfEE.exit, %entry - %16 = phi float [ %div3.i.i, %_ZN4pbrt27SampleUniformDiskConcentricENS_6Point2IfEE.exit ], [ 1.000000e+00, %entry ] - %17 = phi float [ 0.000000e+00, %_ZN4pbrt27SampleUniformDiskConcentricENS_6Point2IfEE.exit ], [ %call.fca.1.extract, %entry ] - %18 = phi float [ %15, %_ZN4pbrt27SampleUniformDiskConcentricENS_6Point2IfEE.exit ], [ %9, %entry ] - %19 = phi float [ %14, %_ZN4pbrt27SampleUniformDiskConcentricENS_6Point2IfEE.exit ], [ %8, %entry ] - %20 = phi float [ %.pr, %_ZN4pbrt27SampleUniformDiskConcentricENS_6Point2IfEE.exit ], [ %5, %entry ] - %cmp35 = fcmp ogt float %20, 0.000000e+00 + %15 = phi float [ %div3.i.i, %_ZN4pbrt27SampleUniformDiskConcentricENS_6Point2IfEE.exit ], [ 1.000000e+00, %entry ] + %16 = phi float [ 0.000000e+00, %_ZN4pbrt27SampleUniformDiskConcentricENS_6Point2IfEE.exit ], [ %call.fca.1.extract, %entry ] + %17 = phi float [ %14, %_ZN4pbrt27SampleUniformDiskConcentricENS_6Point2IfEE.exit ], [ %9, %entry ] + %18 = phi float [ %13, %_ZN4pbrt27SampleUniformDiskConcentricENS_6Point2IfEE.exit ], [ %8, %entry ] + %19 = phi float [ %.pr, %_ZN4pbrt27SampleUniformDiskConcentricENS_6Point2IfEE.exit ], [ %5, %entry ] + %cmp35 = fcmp ogt float %19, 0.000000e+00 br i1 %cmp35, label %if.then36, label %if.else if.then36: ; preds = %if.end - %21 = trunc i64 %6 to i32 - %t.sroa.0.0.vec.extract.i.i19 = bitcast i32 %21 to float + %t.sroa.0.0.vec.extract.i.i19 = extractelement <2 x float> %7, i64 0 %mul.i.i.i20 = fmul float %t.sroa.0.0.vec.extract.i.i19, 2.000000e+00 %t.sroa.0.4.vec.extract.i.i21 = extractelement <2 x float> %7, i64 1 %mul3.i.i.i22 = fmul float %t.sroa.0.4.vec.extract.i.i21, 2.000000e+00 @@ -5493,9 +5494,9 @@ if.then36: ; preds = %if.end br i1 %or.cond.i27, label %_ZN4pbrt27SampleUniformDiskConcentricENS_6Point2IfEE.exit47, label %if.end.i28 if.end.i28: ; preds = %if.then36 - %22 = tail call noundef float @llvm.fabs.f32(float %sub.i.i23) - %23 = tail call noundef float @llvm.fabs.f32(float %sub4.i.i24) - %cmp11.i29 = fcmp ogt float %22, %23 + %20 = tail call noundef float @llvm.fabs.f32(float %sub.i.i23) + %21 = tail call noundef float @llvm.fabs.f32(float %sub4.i.i24) + %cmp11.i29 = fcmp ogt float %20, %21 br i1 %cmp11.i29, label %if.then12.i44, label %if.else.i30 if.then12.i44: ; preds = %if.end.i28 @@ -5523,20 +5524,20 @@ if.end21.i34: ; preds = %if.else.i30, %if.th _ZN4pbrt27SampleUniformDiskConcentricENS_6Point2IfEE.exit47: ; preds = %if.then36, %if.end21.i34 %retval.sroa.0.0.i43 = phi <2 x float> [ %retval.sroa.0.4.vec.insert.i.i25.i42, %if.end21.i34 ], [ zeroinitializer, %if.then36 ] %t.sroa.0.0.vec.extract.i48 = extractelement <2 x float> %retval.sroa.0.0.i43, i64 0 - %mul.i.i49 = fmul float %20, %t.sroa.0.0.vec.extract.i48 + %mul.i.i49 = fmul float %19, %t.sroa.0.0.vec.extract.i48 %t.sroa.0.4.vec.extract.i50 = extractelement <2 x float> %retval.sroa.0.0.i43, i64 1 - %mul2.i.i51 = fmul float %20, %t.sroa.0.4.vec.extract.i50 + %mul2.i.i51 = fmul float %19, %t.sroa.0.4.vec.extract.i50 %focalDistance49 = getelementptr inbounds i8, ptr %this, i64 1412 - %24 = load float, ptr %focalDistance49, align 4 - %div52 = fdiv float %24, %16 + %22 = load float, ptr %focalDistance49, align 4 + %div52 = fdiv float %22, %15 %dxCamera = getelementptr inbounds i8, ptr %this, i64 1416 %agg.tmp55.sroa.0.0.copyload = load <2 x float>, ptr %dxCamera, align 8 %agg.tmp55.sroa.2.0.dxCamera.sroa_idx = getelementptr inbounds i8, ptr %this, i64 1424 %agg.tmp55.sroa.2.0.copyload = load float, ptr %agg.tmp55.sroa.2.0.dxCamera.sroa_idx, align 8 - %25 = fadd <2 x float> %call.fca.0.extract, %agg.tmp55.sroa.0.0.copyload - %add.i = extractelement <2 x float> %25, i64 0 - %26 = fadd <2 x float> %call.fca.0.extract, %agg.tmp55.sroa.0.0.copyload - %add4.i = extractelement <2 x float> %26, i64 1 + %23 = fadd <2 x float> %call.fca.0.extract, %agg.tmp55.sroa.0.0.copyload + %add.i = extractelement <2 x float> %23, i64 0 + %24 = fadd <2 x float> %call.fca.0.extract, %agg.tmp55.sroa.0.0.copyload + %add4.i = extractelement <2 x float> %24, i64 1 %add6.i = fadd float %call.fca.1.extract, %agg.tmp55.sroa.2.0.copyload %mul.i.i63 = fmul float %div52, 0.000000e+00 %add.i72 = fadd float %mul.i.i63, %add.i @@ -5571,10 +5572,10 @@ _ZN4pbrt27SampleUniformDiskConcentricENS_6Point2IfEE.exit47: ; preds = %if.then3 %agg.tmp83.sroa.0.0.copyload = load <2 x float>, ptr %dyCamera, align 4 %agg.tmp83.sroa.2.0.dyCamera.sroa_idx = getelementptr inbounds i8, ptr %this, i64 1436 %agg.tmp83.sroa.2.0.copyload = load float, ptr %agg.tmp83.sroa.2.0.dyCamera.sroa_idx, align 4 - %27 = fadd <2 x float> %call.fca.0.extract, %agg.tmp83.sroa.0.0.copyload - %add.i111 = extractelement <2 x float> %27, i64 0 - %28 = fadd <2 x float> %call.fca.0.extract, %agg.tmp83.sroa.0.0.copyload - %add4.i114 = extractelement <2 x float> %28, i64 1 + %25 = fadd <2 x float> %call.fca.0.extract, %agg.tmp83.sroa.0.0.copyload + %add.i111 = extractelement <2 x float> %25, i64 0 + %26 = fadd <2 x float> %call.fca.0.extract, %agg.tmp83.sroa.0.0.copyload + %add4.i114 = extractelement <2 x float> %26, i64 1 %add6.i116 = fadd float %call.fca.1.extract, %agg.tmp83.sroa.2.0.copyload %add.i133 = fadd float %mul.i.i63, %add.i111 %add4.i136 = fadd float %mul.i.i63, %add4.i114 @@ -5613,10 +5614,10 @@ if.else: ; preds = %if.end %agg.tmp111.sroa.2.0.dxCamera112.sroa_idx = getelementptr inbounds i8, ptr %this, i64 1424 %agg.tmp111.sroa.2.0.copyload = load float, ptr %agg.tmp111.sroa.2.0.dxCamera112.sroa_idx, align 8 %v.sroa.0.0.vec.extract.i171 = extractelement <2 x float> %agg.tmp111.sroa.0.0.copyload, i64 0 - %add.i172 = fadd float %v.sroa.0.0.vec.extract.i171, %19 + %add.i172 = fadd float %v.sroa.0.0.vec.extract.i171, %18 %v.sroa.0.4.vec.extract.i174 = extractelement <2 x float> %agg.tmp111.sroa.0.0.copyload, i64 1 - %add4.i175 = fadd float %v.sroa.0.4.vec.extract.i174, %18 - %add6.i177 = fadd float %agg.tmp111.sroa.2.0.copyload, %17 + %add4.i175 = fadd float %v.sroa.0.4.vec.extract.i174, %17 + %add6.i177 = fadd float %agg.tmp111.sroa.2.0.copyload, %16 %retval.sroa.0.0.vec.insert.i178 = insertelement <2 x float> poison, float %add.i172, i64 0 %retval.sroa.0.4.vec.insert.i179 = insertelement <2 x float> %retval.sroa.0.0.vec.insert.i178, float %add4.i175, i64 1 store <2 x float> %retval.sroa.0.4.vec.insert.i179, ptr %rxOrigin.i, align 4 @@ -5627,10 +5628,10 @@ if.else: ; preds = %if.end %agg.tmp119.sroa.2.0.dyCamera120.sroa_idx = getelementptr inbounds i8, ptr %this, i64 1436 %agg.tmp119.sroa.2.0.copyload = load float, ptr %agg.tmp119.sroa.2.0.dyCamera120.sroa_idx, align 4 %v.sroa.0.0.vec.extract.i182 = extractelement <2 x float> %agg.tmp119.sroa.0.0.copyload, i64 0 - %add.i183 = fadd float %19, %v.sroa.0.0.vec.extract.i182 + %add.i183 = fadd float %18, %v.sroa.0.0.vec.extract.i182 %v.sroa.0.4.vec.extract.i185 = extractelement <2 x float> %agg.tmp119.sroa.0.0.copyload, i64 1 - %add4.i186 = fadd float %18, %v.sroa.0.4.vec.extract.i185 - %add6.i188 = fadd float %17, %agg.tmp119.sroa.2.0.copyload + %add4.i186 = fadd float %17, %v.sroa.0.4.vec.extract.i185 + %add6.i188 = fadd float %16, %agg.tmp119.sroa.2.0.copyload %retval.sroa.0.0.vec.insert.i189 = insertelement <2 x float> poison, float %add.i183, i64 0 %retval.sroa.0.4.vec.insert.i190 = insertelement <2 x float> %retval.sroa.0.0.vec.insert.i189, float %add4.i186, i64 1 %ryOrigin124 = getelementptr inbounds i8, ptr %ray, i64 56 @@ -5664,8 +5665,8 @@ _ZN4pbrt15SampledSpectrumC2Ef.exit: ; preds = %for.body.i.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(113) %agg.result, ptr noundef nonnull align 8 dereferenceable(112) %ref.tmp129, i64 28, i1 false) %medium.i.i.i.i = getelementptr inbounds i8, ptr %agg.result, i64 32 %medium3.i.i.i.i = getelementptr inbounds i8, ptr %ref.tmp129, i64 32 - %29 = load i64, ptr %medium3.i.i.i.i, align 8 - store i64 %29, ptr %medium.i.i.i.i, align 8 + %27 = load i64, ptr %medium3.i.i.i.i, align 8 + store i64 %27, ptr %medium.i.i.i.i, align 8 %hasDifferentials.i.i.i = getelementptr inbounds i8, ptr %agg.result, i64 40 %hasDifferentials2.i.i.i = getelementptr inbounds i8, ptr %ref.tmp129, i64 40 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(52) %hasDifferentials.i.i.i, ptr noundef nonnull align 8 dereferenceable(52) %hasDifferentials2.i.i.i, i64 52, i1 false) @@ -5753,9 +5754,12 @@ entry: br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry - %t.sroa.0.0.vec.extract.i.i = extractelement <4 x float> %0, i64 2 + %bc = bitcast <4 x float> %0 to <2 x i64> + %7 = extractelement <2 x i64> %bc, i64 1 + %8 = bitcast i64 %7 to <2 x float> + %t.sroa.0.0.vec.extract.i.i = extractelement <2 x float> %8, i64 0 %mul.i.i.i = fmul float %t.sroa.0.0.vec.extract.i.i, 2.000000e+00 - %t.sroa.0.4.vec.extract.i.i = extractelement <4 x float> %0, i64 3 + %t.sroa.0.4.vec.extract.i.i = extractelement <2 x float> %8, i64 1 %mul3.i.i.i = fmul float %t.sroa.0.4.vec.extract.i.i, 2.000000e+00 %sub.i.i5 = fadd float %mul.i.i.i, -1.000000e+00 %sub4.i.i = fadd float %mul3.i.i.i, -1.000000e+00 @@ -5765,9 +5769,9 @@ if.then: ; preds = %entry br i1 %or.cond.i, label %_ZN4pbrt27SampleUniformDiskConcentricENS_6Point2IfEE.exit, label %if.end.i if.end.i: ; preds = %if.then - %7 = tail call noundef float @llvm.fabs.f32(float %sub.i.i5) - %8 = tail call noundef float @llvm.fabs.f32(float %sub4.i.i) - %cmp11.i = fcmp ogt float %7, %8 + %9 = tail call noundef float @llvm.fabs.f32(float %sub.i.i5) + %10 = tail call noundef float @llvm.fabs.f32(float %sub4.i.i) + %cmp11.i = fcmp ogt float %9, %10 br i1 %cmp11.i, label %if.then12.i, label %if.else.i if.then12.i: ; preds = %if.end.i @@ -5799,8 +5803,8 @@ _ZN4pbrt27SampleUniformDiskConcentricENS_6Point2IfEE.exit: ; preds = %if.then, % %t.sroa.0.4.vec.extract.i = extractelement <2 x float> %retval.sroa.0.0.i, i64 1 %mul2.i.i = fmul float %6, %t.sroa.0.4.vec.extract.i %focalDistance = getelementptr inbounds i8, ptr %this, i64 1412 - %9 = load float, ptr %focalDistance, align 4 - %div = fdiv float %9, %div3.i.i + %11 = load float, ptr %focalDistance, align 4 + %div = fdiv float %11, %div3.i.i %mul.i.i9 = fmul float %div, %div.i.i %mul2.i.i10 = fmul float %div, %div2.i.i %mul3.i.i = fmul float %div3.i.i, %div @@ -5851,8 +5855,8 @@ _ZN4pbrt15SampledSpectrumC2Ef.exit: ; preds = %for.body.i.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(57) %agg.result, ptr noundef nonnull align 8 dereferenceable(56) %ref.tmp39, i64 28, i1 false) %medium.i.i.i = getelementptr inbounds i8, ptr %agg.result, i64 32 %medium3.i.i.i = getelementptr inbounds i8, ptr %ref.tmp39, i64 32 - %10 = load i64, ptr %medium3.i.i.i, align 8 - store i64 %10, ptr %medium.i.i.i, align 8 + %12 = load i64, ptr %medium3.i.i.i, align 8 + store i64 %12, ptr %medium.i.i.i, align 8 %weight.i.i = getelementptr inbounds i8, ptr %agg.result, i64 40 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %weight.i.i, ptr noundef nonnull align 8 dereferenceable(16) %weight, i64 16, i1 false) ret void @@ -5919,8 +5923,7 @@ entry: br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry - %9 = trunc i64 %7 to i32 - %t.sroa.0.0.vec.extract.i.i = bitcast i32 %9 to float + %t.sroa.0.0.vec.extract.i.i = extractelement <2 x float> %8, i64 0 %mul.i.i.i = fmul float %t.sroa.0.0.vec.extract.i.i, 2.000000e+00 %t.sroa.0.4.vec.extract.i.i = extractelement <2 x float> %8, i64 1 %mul3.i.i.i = fmul float %t.sroa.0.4.vec.extract.i.i, 2.000000e+00 @@ -5932,9 +5935,9 @@ if.then: ; preds = %entry br i1 %or.cond.i, label %_ZN4pbrt27SampleUniformDiskConcentricENS_6Point2IfEE.exit, label %if.end.i if.end.i: ; preds = %if.then - %10 = tail call noundef float @llvm.fabs.f32(float %sub.i.i11) - %11 = tail call noundef float @llvm.fabs.f32(float %sub4.i.i) - %cmp11.i = fcmp ogt float %10, %11 + %9 = tail call noundef float @llvm.fabs.f32(float %sub.i.i11) + %10 = tail call noundef float @llvm.fabs.f32(float %sub4.i.i) + %cmp11.i = fcmp ogt float %9, %10 br i1 %cmp11.i, label %if.then12.i, label %if.else.i if.then12.i: ; preds = %if.end.i @@ -5968,8 +5971,8 @@ _ZN4pbrt27SampleUniformDiskConcentricENS_6Point2IfEE.exit: ; preds = %if.then, % %t.sroa.0.4.vec.extract.i = extractelement <2 x float> %retval.sroa.0.0.i, i64 1 %mul2.i.i = fmul float %6, %t.sroa.0.4.vec.extract.i %focalDistance = getelementptr inbounds i8, ptr %this, i64 1412 - %12 = load float, ptr %focalDistance, align 4 - %div = fdiv float %12, %div3.i.i + %11 = load float, ptr %focalDistance, align 4 + %div = fdiv float %11, %div3.i.i %mul.i.i15 = fmul float %div, %div.i.i %mul2.i.i16 = fmul float %div, %div2.i.i %mul3.i.i = fmul float %div3.i.i, %div @@ -6001,13 +6004,12 @@ _ZN4pbrt27SampleUniformDiskConcentricENS_6Point2IfEE.exit: ; preds = %if.then, % br label %if.end if.end: ; preds = %_ZN4pbrt27SampleUniformDiskConcentricENS_6Point2IfEE.exit, %entry - %13 = phi float [ %.pr, %_ZN4pbrt27SampleUniformDiskConcentricENS_6Point2IfEE.exit ], [ %6, %entry ] - %cmp42 = fcmp ogt float %13, 0.000000e+00 + %12 = phi float [ %.pr, %_ZN4pbrt27SampleUniformDiskConcentricENS_6Point2IfEE.exit ], [ %6, %entry ] + %cmp42 = fcmp ogt float %12, 0.000000e+00 br i1 %cmp42, label %if.then43, label %if.else if.then43: ; preds = %if.end - %14 = trunc i64 %7 to i32 - %t.sroa.0.0.vec.extract.i.i36 = bitcast i32 %14 to float + %t.sroa.0.0.vec.extract.i.i36 = extractelement <2 x float> %8, i64 0 %mul.i.i.i37 = fmul float %t.sroa.0.0.vec.extract.i.i36, 2.000000e+00 %t.sroa.0.4.vec.extract.i.i38 = extractelement <2 x float> %8, i64 1 %mul3.i.i.i39 = fmul float %t.sroa.0.4.vec.extract.i.i38, 2.000000e+00 @@ -6019,9 +6021,9 @@ if.then43: ; preds = %if.end br i1 %or.cond.i44, label %_ZN4pbrt27SampleUniformDiskConcentricENS_6Point2IfEE.exit64, label %if.end.i45 if.end.i45: ; preds = %if.then43 - %15 = tail call noundef float @llvm.fabs.f32(float %sub.i.i40) - %16 = tail call noundef float @llvm.fabs.f32(float %sub4.i.i41) - %cmp11.i46 = fcmp ogt float %15, %16 + %13 = tail call noundef float @llvm.fabs.f32(float %sub.i.i40) + %14 = tail call noundef float @llvm.fabs.f32(float %sub4.i.i41) + %cmp11.i46 = fcmp ogt float %13, %14 br i1 %cmp11.i46, label %if.then12.i61, label %if.else.i47 if.then12.i61: ; preds = %if.end.i45 @@ -6049,20 +6051,20 @@ if.end21.i51: ; preds = %if.else.i47, %if.th _ZN4pbrt27SampleUniformDiskConcentricENS_6Point2IfEE.exit64: ; preds = %if.then43, %if.end21.i51 %retval.sroa.0.0.i60 = phi <2 x float> [ %retval.sroa.0.4.vec.insert.i.i25.i59, %if.end21.i51 ], [ zeroinitializer, %if.then43 ] %t.sroa.0.0.vec.extract.i65 = extractelement <2 x float> %retval.sroa.0.0.i60, i64 0 - %mul.i.i66 = fmul float %13, %t.sroa.0.0.vec.extract.i65 + %mul.i.i66 = fmul float %12, %t.sroa.0.0.vec.extract.i65 %t.sroa.0.4.vec.extract.i67 = extractelement <2 x float> %retval.sroa.0.0.i60, i64 1 - %mul2.i.i68 = fmul float %13, %t.sroa.0.4.vec.extract.i67 + %mul2.i.i68 = fmul float %12, %t.sroa.0.4.vec.extract.i67 %dxCamera = getelementptr inbounds i8, ptr %this, i64 1416 %agg.tmp57.sroa.0.0.copyload = load <2 x float>, ptr %dxCamera, align 8 %agg.tmp57.sroa.2.0.dxCamera.sroa_idx = getelementptr inbounds i8, ptr %this, i64 1424 %agg.tmp57.sroa.2.0.copyload = load float, ptr %agg.tmp57.sroa.2.0.dxCamera.sroa_idx, align 8 - %17 = fadd <2 x float> %call.fca.0.extract, %agg.tmp57.sroa.0.0.copyload - %add.i = extractelement <2 x float> %17, i64 0 - %18 = fadd <2 x float> %call.fca.0.extract, %agg.tmp57.sroa.0.0.copyload - %add4.i = extractelement <2 x float> %18, i64 1 + %15 = fadd <2 x float> %call.fca.0.extract, %agg.tmp57.sroa.0.0.copyload + %add.i = extractelement <2 x float> %15, i64 0 + %16 = fadd <2 x float> %call.fca.0.extract, %agg.tmp57.sroa.0.0.copyload + %add4.i = extractelement <2 x float> %16, i64 1 %add6.i = fadd float %call.fca.1.extract, %agg.tmp57.sroa.2.0.copyload - %19 = fmul <2 x float> %17, %17 - %mul.i.i.i.i82 = extractelement <2 x float> %19, i64 0 + %17 = fmul <2 x float> %15, %15 + %mul.i.i.i.i82 = extractelement <2 x float> %17, i64 0 %mul.i1.i.i.i84 = fmul float %add4.i, %add4.i %add.i.i.i85 = fadd float %mul.i.i.i.i82, %mul.i1.i.i.i84 %mul.i2.i.i.i86 = fmul float %add6.i, %add6.i @@ -6072,8 +6074,8 @@ _ZN4pbrt27SampleUniformDiskConcentricENS_6Point2IfEE.exit64: ; preds = %if.then4 %div2.i.i90 = fdiv float %add4.i, %sqrt.i.i88 %div3.i.i91 = fdiv float %add6.i, %sqrt.i.i88 %focalDistance65 = getelementptr inbounds i8, ptr %this, i64 1412 - %20 = load float, ptr %focalDistance65, align 4 - %div67 = fdiv float %20, %div3.i.i91 + %18 = load float, ptr %focalDistance65, align 4 + %div67 = fdiv float %18, %div3.i.i91 %mul.i.i99 = fmul float %div.i.i89, %div67 %mul2.i.i101 = fmul float %div2.i.i90, %div67 %mul3.i.i102 = fmul float %div3.i.i91, %div67 @@ -6109,13 +6111,13 @@ _ZN4pbrt27SampleUniformDiskConcentricENS_6Point2IfEE.exit64: ; preds = %if.then4 %agg.tmp93.sroa.0.0.copyload = load <2 x float>, ptr %dyCamera, align 4 %agg.tmp93.sroa.2.0.dyCamera.sroa_idx = getelementptr inbounds i8, ptr %this, i64 1436 %agg.tmp93.sroa.2.0.copyload = load float, ptr %agg.tmp93.sroa.2.0.dyCamera.sroa_idx, align 4 - %21 = fadd <2 x float> %call.fca.0.extract, %agg.tmp93.sroa.0.0.copyload - %add.i147 = extractelement <2 x float> %21, i64 0 - %22 = fadd <2 x float> %call.fca.0.extract, %agg.tmp93.sroa.0.0.copyload - %add4.i150 = extractelement <2 x float> %22, i64 1 + %19 = fadd <2 x float> %call.fca.0.extract, %agg.tmp93.sroa.0.0.copyload + %add.i147 = extractelement <2 x float> %19, i64 0 + %20 = fadd <2 x float> %call.fca.0.extract, %agg.tmp93.sroa.0.0.copyload + %add4.i150 = extractelement <2 x float> %20, i64 1 %add6.i152 = fadd float %call.fca.1.extract, %agg.tmp93.sroa.2.0.copyload - %23 = fmul <2 x float> %21, %21 - %mul.i.i.i.i162 = extractelement <2 x float> %23, i64 0 + %21 = fmul <2 x float> %19, %19 + %mul.i.i.i.i162 = extractelement <2 x float> %21, i64 0 %mul.i1.i.i.i164 = fmul float %add4.i150, %add4.i150 %add.i.i.i165 = fadd float %mul.i.i.i.i162, %mul.i1.i.i.i164 %mul.i2.i.i.i166 = fmul float %add6.i152, %add6.i152 @@ -6124,7 +6126,7 @@ _ZN4pbrt27SampleUniformDiskConcentricENS_6Point2IfEE.exit64: ; preds = %if.then4 %div.i.i169 = fdiv float %add.i147, %sqrt.i.i168 %div2.i.i170 = fdiv float %add4.i150, %sqrt.i.i168 %div3.i.i171 = fdiv float %add6.i152, %sqrt.i.i168 - %div102 = fdiv float %20, %div3.i.i171 + %div102 = fdiv float %18, %div3.i.i171 %mul.i.i179 = fmul float %div.i.i169, %div102 %mul2.i.i181 = fmul float %div2.i.i170, %div102 %mul3.i.i182 = fmul float %div3.i.i171, %div102 @@ -6157,13 +6159,13 @@ if.else: ; preds = %if.end %agg.tmp133.sroa.0.0.copyload = load <2 x float>, ptr %dxCamera134, align 8 %agg.tmp133.sroa.2.0.dxCamera134.sroa_idx = getelementptr inbounds i8, ptr %this, i64 1424 %agg.tmp133.sroa.2.0.copyload = load float, ptr %agg.tmp133.sroa.2.0.dxCamera134.sroa_idx, align 8 - %24 = fadd <2 x float> %call.fca.0.extract, %agg.tmp133.sroa.0.0.copyload - %add.i230 = extractelement <2 x float> %24, i64 0 - %25 = fadd <2 x float> %call.fca.0.extract, %agg.tmp133.sroa.0.0.copyload - %add4.i232 = extractelement <2 x float> %25, i64 1 + %22 = fadd <2 x float> %call.fca.0.extract, %agg.tmp133.sroa.0.0.copyload + %add.i230 = extractelement <2 x float> %22, i64 0 + %23 = fadd <2 x float> %call.fca.0.extract, %agg.tmp133.sroa.0.0.copyload + %add4.i232 = extractelement <2 x float> %23, i64 1 %add6.i234 = fadd float %call.fca.1.extract, %agg.tmp133.sroa.2.0.copyload - %26 = fmul <2 x float> %24, %24 - %mul.i.i.i.i240 = extractelement <2 x float> %26, i64 0 + %24 = fmul <2 x float> %22, %22 + %mul.i.i.i.i240 = extractelement <2 x float> %24, i64 0 %mul.i1.i.i.i242 = fmul float %add4.i232, %add4.i232 %add.i.i.i243 = fadd float %mul.i.i.i.i240, %mul.i1.i.i.i242 %mul.i2.i.i.i244 = fmul float %add6.i234, %add6.i234 @@ -6182,13 +6184,13 @@ if.else: ; preds = %if.end %agg.tmp146.sroa.0.0.copyload = load <2 x float>, ptr %dyCamera147, align 4 %agg.tmp146.sroa.2.0.dyCamera147.sroa_idx = getelementptr inbounds i8, ptr %this, i64 1436 %agg.tmp146.sroa.2.0.copyload = load float, ptr %agg.tmp146.sroa.2.0.dyCamera147.sroa_idx, align 4 - %27 = fadd <2 x float> %call.fca.0.extract, %agg.tmp146.sroa.0.0.copyload - %add.i259 = extractelement <2 x float> %27, i64 0 - %28 = fadd <2 x float> %call.fca.0.extract, %agg.tmp146.sroa.0.0.copyload - %add4.i262 = extractelement <2 x float> %28, i64 1 + %25 = fadd <2 x float> %call.fca.0.extract, %agg.tmp146.sroa.0.0.copyload + %add.i259 = extractelement <2 x float> %25, i64 0 + %26 = fadd <2 x float> %call.fca.0.extract, %agg.tmp146.sroa.0.0.copyload + %add4.i262 = extractelement <2 x float> %26, i64 1 %add6.i264 = fadd float %call.fca.1.extract, %agg.tmp146.sroa.2.0.copyload - %29 = fmul <2 x float> %27, %27 - %mul.i.i.i.i270 = extractelement <2 x float> %29, i64 0 + %27 = fmul <2 x float> %25, %25 + %mul.i.i.i.i270 = extractelement <2 x float> %27, i64 0 %mul.i1.i.i.i272 = fmul float %add4.i262, %add4.i262 %add.i.i.i273 = fadd float %mul.i.i.i.i270, %mul.i1.i.i.i272 %mul.i2.i.i.i274 = fmul float %add6.i264, %add6.i264 @@ -6230,8 +6232,8 @@ _ZN4pbrt15SampledSpectrumC2Ef.exit: ; preds = %for.body.i.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(113) %agg.result, ptr noundef nonnull align 8 dereferenceable(112) %ref.tmp156, i64 28, i1 false) %medium.i.i.i.i = getelementptr inbounds i8, ptr %agg.result, i64 32 %medium3.i.i.i.i = getelementptr inbounds i8, ptr %ref.tmp156, i64 32 - %30 = load i64, ptr %medium3.i.i.i.i, align 8 - store i64 %30, ptr %medium.i.i.i.i, align 8 + %28 = load i64, ptr %medium3.i.i.i.i, align 8 + store i64 %28, ptr %medium.i.i.i.i, align 8 %hasDifferentials.i.i.i = getelementptr inbounds i8, ptr %agg.result, i64 40 %hasDifferentials2.i.i.i = getelementptr inbounds i8, ptr %ref.tmp156, i64 40 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(52) %hasDifferentials.i.i.i, ptr noundef nonnull align 8 dereferenceable(52) %hasDifferentials2.i.i.i, i64 52, i1 false) @@ -12485,9 +12487,12 @@ entry: br i1 %cmp.i, label %if.then.i, label %if.end.i if.then.i: ; preds = %entry - %t.sroa.0.0.vec.extract.i.i.i = extractelement <4 x float> %agg.tmp.sroa.0.0.copyload, i64 2 + %bc.i = bitcast <4 x float> %agg.tmp.sroa.0.0.copyload to <2 x i64> + %7 = extractelement <2 x i64> %bc.i, i64 1 + %8 = bitcast i64 %7 to <2 x float> + %t.sroa.0.0.vec.extract.i.i.i = extractelement <2 x float> %8, i64 0 %mul.i.i.i.i = fmul float %t.sroa.0.0.vec.extract.i.i.i, 2.000000e+00 - %t.sroa.0.4.vec.extract.i.i.i = extractelement <4 x float> %agg.tmp.sroa.0.0.copyload, i64 3 + %t.sroa.0.4.vec.extract.i.i.i = extractelement <2 x float> %8, i64 1 %mul3.i.i.i.i = fmul float %t.sroa.0.4.vec.extract.i.i.i, 2.000000e+00 %sub.i.i3.i = fadd float %mul.i.i.i.i, -1.000000e+00 %sub4.i.i.i = fadd float %mul3.i.i.i.i, -1.000000e+00 @@ -12497,9 +12502,9 @@ if.then.i: ; preds = %entry br i1 %or.cond.i.i, label %_ZN4pbrt27SampleUniformDiskConcentricENS_6Point2IfEE.exit.i, label %if.end.i.i if.end.i.i: ; preds = %if.then.i - %7 = tail call noundef float @llvm.fabs.f32(float %sub.i.i3.i) - %8 = tail call noundef float @llvm.fabs.f32(float %sub4.i.i.i) - %cmp11.i.i = fcmp ogt float %7, %8 + %9 = tail call noundef float @llvm.fabs.f32(float %sub.i.i3.i) + %10 = tail call noundef float @llvm.fabs.f32(float %sub4.i.i.i) + %cmp11.i.i = fcmp ogt float %9, %10 br i1 %cmp11.i.i, label %if.then12.i.i, label %if.else.i.i if.then12.i.i: ; preds = %if.end.i.i @@ -12531,12 +12536,12 @@ _ZN4pbrt27SampleUniformDiskConcentricENS_6Point2IfEE.exit.i: ; preds = %if.end21 %t.sroa.0.4.vec.extract.i.i = extractelement <2 x float> %retval.sroa.0.0.i.i, i64 1 %mul2.i.i.i = fmul float %4, %t.sroa.0.4.vec.extract.i.i %focalDistance.i = getelementptr inbounds i8, ptr %ptr, i64 1412 - %9 = load float, ptr %focalDistance.i, align 4, !noalias !173 - %mul.i.i5.i = fmul float %9, 0.000000e+00 + %11 = load float, ptr %focalDistance.i, align 4, !noalias !173 + %mul.i.i5.i = fmul float %11, 0.000000e+00 %add.i.i7.i = fadd float %5, %mul.i.i5.i %y.i1.i.i = getelementptr inbounds i8, ptr %ray.i, i64 4 %add4.i.i.i = fadd float %6, %mul.i.i5.i - %add6.i.i.i = fadd float %call.fca.1.extract.i, %9 + %add6.i.i.i = fadd float %call.fca.1.extract.i, %11 store float %mul.i.i4.i, ptr %ray.i, align 8, !noalias !173 store float %mul2.i.i.i, ptr %y.i1.i.i, align 4, !noalias !173 store float 0.000000e+00, ptr %o.sroa.2.0.o3.sroa_idx.i.i, align 8, !noalias !173 @@ -12580,8 +12585,8 @@ _ZNK4pbrt18OrthographicCamera11GenerateRayENS_12CameraSampleERNS_18SampledWavele call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(57) %agg.result, ptr noundef nonnull align 8 dereferenceable(56) %ref.tmp34.i, i64 28, i1 false) %medium.i.i.i.i = getelementptr inbounds i8, ptr %agg.result, i64 32 %medium3.i.i.i.i = getelementptr inbounds i8, ptr %ref.tmp34.i, i64 32 - %10 = load i64, ptr %medium3.i.i.i.i, align 8, !noalias !173 - store i64 %10, ptr %medium.i.i.i.i, align 8, !alias.scope !173 + %12 = load i64, ptr %medium3.i.i.i.i, align 8, !noalias !173 + store i64 %12, ptr %medium.i.i.i.i, align 8, !alias.scope !173 %weight.i.i.i = getelementptr inbounds i8, ptr %agg.result, i64 40 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %weight.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %weight.i, i64 16, i1 false) call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %ray.i) diff --git a/bench/raylib/optimized/rcore.c.ll b/bench/raylib/optimized/rcore.c.ll index afcb4c948f2..8d8cd3c2daa 100644 --- a/bench/raylib/optimized/rcore.c.ll +++ b/bench/raylib/optimized/rcore.c.ll @@ -28073,14 +28073,14 @@ define hidden void @ProcessGestureEvent(ptr nocapture noundef readonly byval(%st %2 = getelementptr inbounds i8, ptr %0, i64 4 %3 = load i32, ptr %2, align 4 store i32 %3, ptr getelementptr inbounds (i8, ptr @GESTURES, i64 12), align 4 - switch i32 %3, label %191 [ + switch i32 %3, label %190 [ i32 1, label %4 i32 2, label %106 ] 4: ; preds = %1 %5 = load i32, ptr %0, align 8 - switch i32 %5, label %191 [ + switch i32 %5, label %190 [ i32 1, label %6 i32 0, label %35 i32 2, label %83 @@ -28141,7 +28141,7 @@ define hidden void @ProcessGestureEvent(ptr nocapture noundef readonly byval(%st store double %34, ptr getelementptr inbounds (i8, ptr @GESTURES, i64 136), align 8 store float 0.000000e+00, ptr getelementptr inbounds (i8, ptr @GESTURES, i64 112), align 8 store float 0.000000e+00, ptr getelementptr inbounds (i8, ptr @GESTURES, i64 116), align 4 - br label %191 + br label %190 35: ; preds = %4 %36 = load i32, ptr @GESTURES, align 8 @@ -28234,7 +28234,7 @@ define hidden void @ProcessGestureEvent(ptr nocapture noundef readonly byval(%st store float 0.000000e+00, ptr getelementptr inbounds (i8, ptr @GESTURES, i64 48), align 8 store float 0.000000e+00, ptr getelementptr inbounds (i8, ptr @GESTURES, i64 52), align 4 store i32 0, ptr getelementptr inbounds (i8, ptr @GESTURES, i64 12), align 4 - br label %191 + br label %190 83: ; preds = %4 %84 = getelementptr inbounds i8, ptr %0, i64 40 @@ -28276,14 +28276,14 @@ define hidden void @ProcessGestureEvent(ptr nocapture noundef readonly byval(%st %104 = load float, ptr getelementptr inbounds (i8, ptr @GESTURES, i64 52), align 4 %105 = fsub float %103, %104 store float %105, ptr getelementptr inbounds (i8, ptr @GESTURES, i64 116), align 4 - br label %191 + br label %190 106: ; preds = %1 %107 = load i32, ptr %0, align 8 - switch i32 %107, label %191 [ + switch i32 %107, label %190 [ i32 1, label %108 i32 2, label %126 - i32 0, label %190 + i32 0, label %189 ] 108: ; preds = %106 @@ -28312,7 +28312,7 @@ define hidden void @ProcessGestureEvent(ptr nocapture noundef readonly byval(%st store i32 4, ptr @GESTURES, align 8 %125 = tail call double @glfwGetTime() #54 store double %125, ptr getelementptr inbounds (i8, ptr @GESTURES, i64 104), align 8 - br label %191 + br label %190 126: ; preds = %106 %127 = load <2 x float>, ptr getelementptr inbounds (i8, ptr @GESTURES, i64 56), align 8 @@ -28346,101 +28346,98 @@ define hidden void @ProcessGestureEvent(ptr nocapture noundef readonly byval(%st %150 = fsub float %146, %149 store float %150, ptr getelementptr inbounds (i8, ptr @GESTURES, i64 148), align 4 %151 = load <2 x float>, ptr getelementptr inbounds (i8, ptr @GESTURES, i64 72), align 8 - %152 = trunc i64 %136 to i32 - %.sroa.0.0.vec.extract.i38 = bitcast i32 %152 to float + %152 = bitcast i64 %136 to <2 x float> + %.sroa.0.0.vec.extract.i38 = extractelement <2 x float> %152, i64 0 %.sroa.05.0.vec.extract.i39 = extractelement <2 x float> %151, i64 0 - %153 = fsub float %.sroa.0.0.vec.extract.i38, %.sroa.05.0.vec.extract.i39 - %extelt.offset = lshr i64 %136, 32 - %154 = trunc nuw i64 %extelt.offset to i32 - %.sroa.0.4.vec.extract.i40 = bitcast i32 %154 to float + %153 = fsub <2 x float> %152, %151 + %154 = extractelement <2 x float> %153, i64 0 + %.sroa.0.4.vec.extract.i40 = extractelement <2 x float> %152, i64 1 %.sroa.05.4.vec.extract.i41 = extractelement <2 x float> %151, i64 1 %155 = fsub float %.sroa.0.4.vec.extract.i40, %.sroa.05.4.vec.extract.i41 %156 = fmul float %155, %155 - %157 = tail call float @llvm.fmuladd.f32(float %153, float %153, float %156) + %157 = tail call float @llvm.fmuladd.f32(float %154, float %154, float %156) %sqrt.i42 = tail call float @llvm.sqrt.f32(float %157) %158 = fcmp ult float %sqrt.i42, 0x3F747AE140000000 + %159 = bitcast i64 %138 to <2 x float> %.pre = load <2 x float>, ptr getelementptr inbounds (i8, ptr @GESTURES, i64 80), align 8 - %extelt.offset79 = lshr i64 %138, 32 - %159 = trunc nuw i64 %extelt.offset79 to i32 - %.sroa.0.4.vec.extract.i45 = bitcast i32 %159 to float - br i1 %158, label %161, label %._crit_edge74 + %.sroa.0.4.vec.extract.i45 = extractelement <2 x float> %159, i64 1 + br i1 %158, label %160, label %._crit_edge74 ._crit_edge74: ; preds = %126 %.pre75 = extractelement <2 x float> %.pre, i64 0 %.pre76 = extractelement <2 x float> %.pre, i64 1 - %160 = trunc i64 %138 to i32 - %.pre77 = bitcast i32 %160 to float - br label %168 + %.pre77 = extractelement <2 x float> %159, i64 0 + br label %167 -161: ; preds = %126 - %162 = trunc i64 %138 to i32 - %.sroa.0.0.vec.extract.i43 = bitcast i32 %162 to float +160: ; preds = %126 + %.sroa.0.0.vec.extract.i43 = extractelement <2 x float> %159, i64 0 %.sroa.05.0.vec.extract.i44 = extractelement <2 x float> %.pre, i64 0 - %163 = fsub float %.sroa.0.0.vec.extract.i43, %.sroa.05.0.vec.extract.i44 + %161 = fsub <2 x float> %159, %.pre + %162 = extractelement <2 x float> %161, i64 0 %.sroa.05.4.vec.extract.i46 = extractelement <2 x float> %.pre, i64 1 - %164 = fsub float %.sroa.0.4.vec.extract.i45, %.sroa.05.4.vec.extract.i46 - %165 = fmul float %164, %164 - %166 = tail call float @llvm.fmuladd.f32(float %163, float %163, float %165) - %sqrt.i47 = tail call float @llvm.sqrt.f32(float %166) - %167 = fcmp ult float %sqrt.i47, 0x3F747AE140000000 - br i1 %167, label %180, label %168 - -168: ; preds = %._crit_edge74, %161 - %.sroa.0.0.vec.extract.i53.pre-phi = phi float [ %.pre77, %._crit_edge74 ], [ %.sroa.0.0.vec.extract.i43, %161 ] - %.sroa.0.4.vec.extract.i50.pre-phi = phi float [ %.pre76, %._crit_edge74 ], [ %.sroa.05.4.vec.extract.i46, %161 ] - %.sroa.0.0.vec.extract.i48.pre-phi = phi float [ %.pre75, %._crit_edge74 ], [ %.sroa.05.0.vec.extract.i44, %161 ] - %169 = fsub float %.sroa.0.0.vec.extract.i48.pre-phi, %.sroa.05.0.vec.extract.i39 - %170 = fsub float %.sroa.0.4.vec.extract.i50.pre-phi, %.sroa.05.4.vec.extract.i41 - %171 = fmul float %170, %170 - %172 = tail call float @llvm.fmuladd.f32(float %169, float %169, float %171) - %sqrt.i52 = tail call float @llvm.sqrt.f32(float %172) - %173 = fsub float %.sroa.0.0.vec.extract.i53.pre-phi, %.sroa.0.0.vec.extract.i38 - %174 = fsub float %.sroa.0.4.vec.extract.i45, %.sroa.0.4.vec.extract.i40 - %175 = fmul float %174, %174 - %176 = tail call float @llvm.fmuladd.f32(float %173, float %173, float %175) - %sqrt.i57 = tail call float @llvm.sqrt.f32(float %176) - %177 = fcmp ogt float %sqrt.i52, %sqrt.i57 - br i1 %177, label %178, label %179 - -178: ; preds = %168 + %163 = fsub float %.sroa.0.4.vec.extract.i45, %.sroa.05.4.vec.extract.i46 + %164 = fmul float %163, %163 + %165 = tail call float @llvm.fmuladd.f32(float %162, float %162, float %164) + %sqrt.i47 = tail call float @llvm.sqrt.f32(float %165) + %166 = fcmp ult float %sqrt.i47, 0x3F747AE140000000 + br i1 %166, label %179, label %167 + +167: ; preds = %._crit_edge74, %160 + %.sroa.0.0.vec.extract.i53.pre-phi = phi float [ %.pre77, %._crit_edge74 ], [ %.sroa.0.0.vec.extract.i43, %160 ] + %.sroa.0.4.vec.extract.i50.pre-phi = phi float [ %.pre76, %._crit_edge74 ], [ %.sroa.05.4.vec.extract.i46, %160 ] + %.sroa.0.0.vec.extract.i48.pre-phi = phi float [ %.pre75, %._crit_edge74 ], [ %.sroa.05.0.vec.extract.i44, %160 ] + %168 = fsub float %.sroa.0.0.vec.extract.i48.pre-phi, %.sroa.05.0.vec.extract.i39 + %169 = fsub float %.sroa.0.4.vec.extract.i50.pre-phi, %.sroa.05.4.vec.extract.i41 + %170 = fmul float %169, %169 + %171 = tail call float @llvm.fmuladd.f32(float %168, float %168, float %170) + %sqrt.i52 = tail call float @llvm.sqrt.f32(float %171) + %172 = fsub float %.sroa.0.0.vec.extract.i53.pre-phi, %.sroa.0.0.vec.extract.i38 + %173 = fsub float %.sroa.0.4.vec.extract.i45, %.sroa.0.4.vec.extract.i40 + %174 = fmul float %173, %173 + %175 = tail call float @llvm.fmuladd.f32(float %172, float %172, float %174) + %sqrt.i57 = tail call float @llvm.sqrt.f32(float %175) + %176 = fcmp ogt float %sqrt.i52, %sqrt.i57 + br i1 %176, label %177, label %178 + +177: ; preds = %167 store i32 256, ptr @GESTURES, align 8 - br label %184 + br label %183 -179: ; preds = %168 +178: ; preds = %167 store i32 512, ptr @GESTURES, align 8 - br label %184 + br label %183 -180: ; preds = %161 +179: ; preds = %160 store i32 4, ptr @GESTURES, align 8 - %181 = tail call double @glfwGetTime() #54 - store double %181, ptr getelementptr inbounds (i8, ptr @GESTURES, i64 104), align 8 + %180 = tail call double @glfwGetTime() #54 + store double %180, ptr getelementptr inbounds (i8, ptr @GESTURES, i64 104), align 8 %.pre63 = load <2 x float>, ptr getelementptr inbounds (i8, ptr @GESTURES, i64 56), align 8 %.pre64 = load <2 x float>, ptr getelementptr inbounds (i8, ptr @GESTURES, i64 64), align 8 + %181 = fsub <2 x float> %.pre64, %.pre63 + %.pre69 = extractelement <2 x float> %181, i64 1 %182 = fsub <2 x float> %.pre64, %.pre63 - %.pre69 = extractelement <2 x float> %182, i64 1 - %183 = fsub <2 x float> %.pre64, %.pre63 - %.pre72 = extractelement <2 x float> %183, i64 0 - br label %184 - -184: ; preds = %178, %179, %180 - %.pre-phi73 = phi float [ %173, %178 ], [ %173, %179 ], [ %.pre72, %180 ] - %.pre-phi = phi float [ %174, %178 ], [ %174, %179 ], [ %.pre69, %180 ] - %185 = tail call float @atan2f(float noundef %.pre-phi, float noundef %.pre-phi73) #54 - %186 = fmul float %185, 0x404CA5DC00000000 - %187 = fcmp olt float %186, 0.000000e+00 - %188 = fadd float %186, 3.600000e+02 - %.0.i62 = select i1 %187, float %188, float %186 - %189 = fsub float 3.600000e+02, %.0.i62 - store float %189, ptr getelementptr inbounds (i8, ptr @GESTURES, i64 152), align 8 - br label %191 - -190: ; preds = %106 + %.pre72 = extractelement <2 x float> %182, i64 0 + br label %183 + +183: ; preds = %177, %178, %179 + %.pre-phi73 = phi float [ %172, %177 ], [ %172, %178 ], [ %.pre72, %179 ] + %.pre-phi = phi float [ %173, %177 ], [ %173, %178 ], [ %.pre69, %179 ] + %184 = tail call float @atan2f(float noundef %.pre-phi, float noundef %.pre-phi73) #54 + %185 = fmul float %184, 0x404CA5DC00000000 + %186 = fcmp olt float %185, 0.000000e+00 + %187 = fadd float %185, 3.600000e+02 + %.0.i62 = select i1 %186, float %187, float %185 + %188 = fsub float 3.600000e+02, %.0.i62 + store float %188, ptr getelementptr inbounds (i8, ptr @GESTURES, i64 152), align 8 + br label %190 + +189: ; preds = %106 store i32 0, ptr getelementptr inbounds (i8, ptr @GESTURES, i64 12), align 4 store i32 0, ptr @GESTURES, align 8 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) getelementptr inbounds (i8, ptr @GESTURES, i64 144), i8 0, i64 16, i1 false) - br label %191 + br label %190 -191: ; preds = %1, %106, %4, %184, %190, %108, %31, %99, %82 +190: ; preds = %1, %106, %4, %183, %189, %108, %31, %99, %82 ret void } diff --git a/bench/typst-rs/optimized/2i78fvbm4wocuesi.ll b/bench/typst-rs/optimized/2i78fvbm4wocuesi.ll index f3fb034a787..6ad61604cdb 100644 --- a/bench/typst-rs/optimized/2i78fvbm4wocuesi.ll +++ b/bench/typst-rs/optimized/2i78fvbm4wocuesi.ll @@ -28101,7 +28101,7 @@ define hidden void @_ZN4exif7isobmff13get_exif_attr17heb04c9cbdb70aefcE(ptr noal %.ph.i.i = phi i64 [ -1, %.noexc ], [ %104, %102 ], [ %100, %95 ] %106 = bitcast i32 %86 to <4 x i8> call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50), !noalias !5852 - %.sroa.025.0.vec.extract.i = trunc i64 %85 to i8 + %.sroa.025.0.vec.extract.i = extractelement <4 x i8> %106, i64 0 switch i8 %.sroa.025.0.vec.extract.i, label %107 [ i8 102, label %121 i8 109, label %125 diff --git a/bench/typst-rs/optimized/3lt7g0yvt7qzv13u.ll b/bench/typst-rs/optimized/3lt7g0yvt7qzv13u.ll index 5da37851e20..8c71b0bcf24 100644 --- a/bench/typst-rs/optimized/3lt7g0yvt7qzv13u.ll +++ b/bench/typst-rs/optimized/3lt7g0yvt7qzv13u.ll @@ -1584,7 +1584,8 @@ _ZN11parking_lot10raw_rwlock9RawRwLock20try_lock_shared_fast17hac4a5582ff04f5a0E br label %._crit_edge.i.i.i 378: ; preds = %374 - %379 = and i32 %370, 255 + %.sroa.05.0.vec.extract7.i.i = extractelement <4 x i8> %376, i64 0 + %379 = zext i8 %.sroa.05.0.vec.extract7.i.i to i32 %380 = zext i8 %.sroa.05.3.vec.extract.i.i to i32 %381 = mul nuw nsw i32 %379, %380 %382 = add nuw nsw i32 %381, 128 diff --git a/bench/wasmtime-rs/optimized/3flv1664rwe55t82.ll b/bench/wasmtime-rs/optimized/3flv1664rwe55t82.ll index a620459f031..cb9f0a733e9 100644 --- a/bench/wasmtime-rs/optimized/3flv1664rwe55t82.ll +++ b/bench/wasmtime-rs/optimized/3flv1664rwe55t82.ll @@ -10182,7 +10182,7 @@ define void @_ZN13wasmtime_wasi14ip_name_lookup16blocking_resolve17he6d5ff736819 %34 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 %35 = tail call noundef align 2 dereferenceable_or_null(18) ptr @__rust_alloc(i64 noundef 18, i64 noundef 2) #43 %36 = icmp eq ptr %35, null - br i1 %36, label %37, label %46 + br i1 %36, label %37, label %48 37: ; preds = %33 tail call void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef 2, i64 noundef 18) #42 @@ -10212,16 +10212,18 @@ define void @_ZN13wasmtime_wasi14ip_name_lookup16blocking_resolve17he6d5ff736819 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) br label %42 -42: ; preds = %46, %43, %39, %38 +42: ; preds = %48, %43, %39, %38 ret void 43: ; preds = %28 %44 = getelementptr inbounds i8, ptr %1, i64 8 - %.sroa.02.0.copyload = load i32, ptr %44, align 8 - %45 = bitcast i32 %.sroa.02.0.copyload to <4 x i8> - %.sroa.02.1.vec.extract.i = extractelement <4 x i8> %45, i64 1 - %.sroa.02.2.vec.extract.i = extractelement <4 x i8> %45, i64 2 - %.sroa.02.3.vec.extract.i = extractelement <4 x i8> %45, i64 3 + %.sroa.02.0.vec.extract.i = load i8, ptr %44, align 8 + %45 = getelementptr inbounds i8, ptr %1, i64 9 + %.sroa.02.1.vec.extract.i = load i8, ptr %45, align 1 + %46 = getelementptr inbounds i8, ptr %1, i64 10 + %.sroa.02.2.vec.extract.i = load i8, ptr %46, align 2 + %47 = getelementptr inbounds i8, ptr %1, i64 11 + %.sroa.02.3.vec.extract.i = load i8, ptr %47, align 1 %.sroa.4.0.insert.ext.i = zext i8 %.sroa.02.3.vec.extract.i to i32 %.sroa.4.0.insert.shift.i = shl nuw i32 %.sroa.4.0.insert.ext.i, 24 %.sroa.3.0.insert.ext.i = zext i8 %.sroa.02.2.vec.extract.i to i32 @@ -10230,7 +10232,7 @@ define void @_ZN13wasmtime_wasi14ip_name_lookup16blocking_resolve17he6d5ff736819 %.sroa.2.0.insert.ext.i = zext i8 %.sroa.02.1.vec.extract.i to i32 %.sroa.2.0.insert.shift.i = shl nuw nsw i32 %.sroa.2.0.insert.ext.i, 8 %.sroa.2.0.insert.insert.i = or disjoint i32 %.sroa.3.0.insert.insert.i, %.sroa.2.0.insert.shift.i - %.sroa.01.0.insert.ext.i = and i32 %.sroa.02.0.copyload, 255 + %.sroa.01.0.insert.ext.i = zext i8 %.sroa.02.0.vec.extract.i to i32 %.sroa.01.0.insert.insert.i = or disjoint i32 %.sroa.2.0.insert.insert.i, %.sroa.01.0.insert.ext.i store i8 0, ptr %30, align 2 %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %30, i64 1 @@ -10242,9 +10244,9 @@ define void @_ZN13wasmtime_wasi14ip_name_lookup16blocking_resolve17he6d5ff736819 store i64 1, ptr %.sroa.526.0..sroa_idx, align 8 br label %42 -46: ; preds = %33 - %47 = getelementptr inbounds i8, ptr %1, i64 8 - %.sroa.037.0.copyload = load i16, ptr %47, align 8 +48: ; preds = %33 + %49 = getelementptr inbounds i8, ptr %1, i64 8 + %.sroa.037.0.copyload = load i16, ptr %49, align 8 %.sroa.438.0..sroa_idx = getelementptr inbounds i8, ptr %1, i64 10 %.sroa.438.0.copyload = load i16, ptr %.sroa.438.0..sroa_idx, align 2 %.sroa.539.0..sroa_idx = getelementptr inbounds i8, ptr %1, i64 12 @@ -10259,31 +10261,31 @@ define void @_ZN13wasmtime_wasi14ip_name_lookup16blocking_resolve17he6d5ff736819 %.sroa.943.0.copyload = load i16, ptr %.sroa.943.0..sroa_idx, align 4 %.sroa.1044.0..sroa_idx = getelementptr inbounds i8, ptr %1, i64 22 %.sroa.1044.0.copyload = load i16, ptr %.sroa.1044.0..sroa_idx, align 2 - %48 = tail call i16 @llvm.bswap.i16(i16 %.sroa.037.0.copyload) - %49 = tail call i16 @llvm.bswap.i16(i16 %.sroa.438.0.copyload) - %50 = tail call i16 @llvm.bswap.i16(i16 %.sroa.539.0.copyload) - %51 = tail call i16 @llvm.bswap.i16(i16 %.sroa.640.0.copyload) - %52 = tail call i16 @llvm.bswap.i16(i16 %.sroa.741.0.copyload) - %53 = tail call i16 @llvm.bswap.i16(i16 %.sroa.842.0.copyload) - %54 = tail call i16 @llvm.bswap.i16(i16 %.sroa.943.0.copyload) - %55 = tail call i16 @llvm.bswap.i16(i16 %.sroa.1044.0.copyload) + %50 = tail call i16 @llvm.bswap.i16(i16 %.sroa.037.0.copyload) + %51 = tail call i16 @llvm.bswap.i16(i16 %.sroa.438.0.copyload) + %52 = tail call i16 @llvm.bswap.i16(i16 %.sroa.539.0.copyload) + %53 = tail call i16 @llvm.bswap.i16(i16 %.sroa.640.0.copyload) + %54 = tail call i16 @llvm.bswap.i16(i16 %.sroa.741.0.copyload) + %55 = tail call i16 @llvm.bswap.i16(i16 %.sroa.842.0.copyload) + %56 = tail call i16 @llvm.bswap.i16(i16 %.sroa.943.0.copyload) + %57 = tail call i16 @llvm.bswap.i16(i16 %.sroa.1044.0.copyload) store i8 1, ptr %35, align 2 %.sroa.44.sroa.3.0..sroa.44.0..sroa_idx.sroa_idx = getelementptr inbounds i8, ptr %35, i64 2 - store i16 %48, ptr %.sroa.44.sroa.3.0..sroa.44.0..sroa_idx.sroa_idx, align 2 + store i16 %50, ptr %.sroa.44.sroa.3.0..sroa.44.0..sroa_idx.sroa_idx, align 2 %.sroa.44.sroa.4.0..sroa.44.0..sroa_idx.sroa_idx = getelementptr inbounds i8, ptr %35, i64 4 - store i16 %49, ptr %.sroa.44.sroa.4.0..sroa.44.0..sroa_idx.sroa_idx, align 2 + store i16 %51, ptr %.sroa.44.sroa.4.0..sroa.44.0..sroa_idx.sroa_idx, align 2 %.sroa.44.sroa.5.0..sroa.44.0..sroa_idx.sroa_idx = getelementptr inbounds i8, ptr %35, i64 6 - store i16 %50, ptr %.sroa.44.sroa.5.0..sroa.44.0..sroa_idx.sroa_idx, align 2 + store i16 %52, ptr %.sroa.44.sroa.5.0..sroa.44.0..sroa_idx.sroa_idx, align 2 %.sroa.44.sroa.6.0..sroa.44.0..sroa_idx.sroa_idx = getelementptr inbounds i8, ptr %35, i64 8 - store i16 %51, ptr %.sroa.44.sroa.6.0..sroa.44.0..sroa_idx.sroa_idx, align 2 + store i16 %53, ptr %.sroa.44.sroa.6.0..sroa.44.0..sroa_idx.sroa_idx, align 2 %.sroa.44.sroa.7.0..sroa.44.0..sroa_idx.sroa_idx = getelementptr inbounds i8, ptr %35, i64 10 - store i16 %52, ptr %.sroa.44.sroa.7.0..sroa.44.0..sroa_idx.sroa_idx, align 2 + store i16 %54, ptr %.sroa.44.sroa.7.0..sroa.44.0..sroa_idx.sroa_idx, align 2 %.sroa.44.sroa.8.0..sroa.44.0..sroa_idx.sroa_idx = getelementptr inbounds i8, ptr %35, i64 12 - store i16 %53, ptr %.sroa.44.sroa.8.0..sroa.44.0..sroa_idx.sroa_idx, align 2 + store i16 %55, ptr %.sroa.44.sroa.8.0..sroa.44.0..sroa_idx.sroa_idx, align 2 %.sroa.44.sroa.9.0..sroa.44.0..sroa_idx.sroa_idx = getelementptr inbounds i8, ptr %35, i64 14 - store i16 %54, ptr %.sroa.44.sroa.9.0..sroa.44.0..sroa_idx.sroa_idx, align 2 + store i16 %56, ptr %.sroa.44.sroa.9.0..sroa.44.0..sroa_idx.sroa_idx, align 2 %.sroa.44.sroa.10.0..sroa.44.0..sroa_idx.sroa_idx = getelementptr inbounds i8, ptr %35, i64 16 - store i16 %55, ptr %.sroa.44.sroa.10.0..sroa.44.0..sroa_idx.sroa_idx, align 2 + store i16 %57, ptr %.sroa.44.sroa.10.0..sroa.44.0..sroa_idx.sroa_idx, align 2 store i64 1, ptr %0, align 8 %.sroa.429.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 store ptr %35, ptr %.sroa.429.0..sroa_idx, align 8 @@ -10388,6 +10390,7 @@ define hidden i32 @_ZN13wasmtime_wasi7network12to_ipv4_addr17hb73d0484ea20f2a0E( ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable define hidden i32 @_ZN13wasmtime_wasi7network14from_ipv4_addr17h06d2750c6add880aE(i32 %0) unnamed_addr #2 { %2 = bitcast i32 %0 to <4 x i8> + %.sroa.02.0.vec.extract = extractelement <4 x i8> %2, i64 0 %.sroa.02.1.vec.extract = extractelement <4 x i8> %2, i64 1 %.sroa.02.2.vec.extract = extractelement <4 x i8> %2, i64 2 %.sroa.02.3.vec.extract = extractelement <4 x i8> %2, i64 3 @@ -10399,7 +10402,7 @@ define hidden i32 @_ZN13wasmtime_wasi7network14from_ipv4_addr17h06d2750c6add880a %.sroa.2.0.insert.ext = zext i8 %.sroa.02.1.vec.extract to i32 %.sroa.2.0.insert.shift = shl nuw nsw i32 %.sroa.2.0.insert.ext, 8 %.sroa.2.0.insert.insert = or disjoint i32 %.sroa.3.0.insert.insert, %.sroa.2.0.insert.shift - %.sroa.01.0.insert.ext = and i32 %0, 255 + %.sroa.01.0.insert.ext = zext i8 %.sroa.02.0.vec.extract to i32 %.sroa.01.0.insert.insert = or disjoint i32 %.sroa.2.0.insert.insert, %.sroa.01.0.insert.ext ret i32 %.sroa.01.0.insert.insert } diff --git a/bench/wasmtime-rs/optimized/4z02b278nscq7j1a.ll b/bench/wasmtime-rs/optimized/4z02b278nscq7j1a.ll index 2ade7f678de..4de5c4a155d 100644 --- a/bench/wasmtime-rs/optimized/4z02b278nscq7j1a.ll +++ b/bench/wasmtime-rs/optimized/4z02b278nscq7j1a.ll @@ -5981,12 +5981,12 @@ define hidden void @"_ZN5alloc3vec16in_place_collect108_$LT$impl$u20$alloc..vec. "_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he955b66aa2651e8fE.exit.lr.ph.i.i.i.i.i.i": ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h7724ea807f63fd48E.exit.i.i.i" %44 = getelementptr inbounds i8, ptr %6, i64 1 %.sroa.63.4..sroa_idx.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %6, i64 3 - %.sroa.11.1..sroa_idx2.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %5, i64 4 + %.sroa.14.1..sroa_idx2.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %5, i64 4 %.sroa.6.8..sroa_idx.i.i.i.i.i.i = getelementptr inbounds i8, ptr %.sroa.6.i.i.i.i.i.i, i64 2 %.sroa.6.2..sroa_idx.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %4, i64 3 br label %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he955b66aa2651e8fE.exit.i.i.i.i.i.i" -45: ; preds = %56, %50 +45: ; preds = %56, %51 %46 = landingpad { ptr, i32 } cleanup store ptr %48, ptr %40, align 8, !alias.scope !805, !noalias !801 @@ -6012,49 +6012,59 @@ define hidden void @"_ZN5alloc3vec16in_place_collect108_$LT$impl$u20$alloc..vec. call void @llvm.lifetime.start.p0(i64 13, ptr nonnull %.sroa.6.i.i.i.i.i.i.i) call void @llvm.lifetime.start.p0(i64 17, ptr nonnull %6), !noalias !812 %trunc.i.i.i.i.i.i.i.i = trunc nuw i16 %.sroa.0.0.copyload6.i.i.i.i.i.i to i1 - br i1 %trunc.i.i.i.i.i.i.i.i, label %50, label %54 + br i1 %trunc.i.i.i.i.i.i.i.i, label %51, label %50 50: ; preds = %49 + %.sroa.6.sroa.7.0.extract.shift.i.i.i.i.i.i.i.i = lshr i32 %.sroa.7.sroa.0.0.copyload.i.i.i.i.i.i, 8 + %.sroa.6.sroa.8.0.extract.shift.i.i.i.i.i.i.i.i = lshr i32 %.sroa.7.sroa.0.0.copyload.i.i.i.i.i.i, 16 + %.sroa.6.sroa.9.0.extract.shift.i.i.i.i.i.i.i.i = lshr i32 %.sroa.7.sroa.0.0.copyload.i.i.i.i.i.i, 24 + br label %55 + +51: ; preds = %49 %.sroa.42.2.extract.shift.i.i.i.i.i.i.i = lshr i32 %.sroa.7.sroa.0.0.copyload.i.i.i.i.i.i, 16 %.sroa.42.2.extract.trunc.i.i.i.i.i.i.i = trunc nuw i32 %.sroa.42.2.extract.shift.i.i.i.i.i.i.i to i16 store i16 %.sroa.42.2.extract.trunc.i.i.i.i.i.i.i, ptr %44, align 1, !noalias !819 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(14) %.sroa.63.4..sroa_idx.i.i.i.i.i.i.i, ptr noundef nonnull align 2 dereferenceable(14) %.sroa.7.sroa.5.0..sroa.7.0..sroa_idx7.sroa_idx.i.i.i.i.i.i, i64 14, i1 false), !noalias !787 store i8 1, ptr %6, align 1, !noalias !812 - %51 = invoke i40 @_ZN4core3net7ip_addr8Ipv6Addr14to_ipv4_mapped17hc035d26dd61c98a4E.llvm.11181120138937278269(ptr noalias noundef nonnull readonly align 1 dereferenceable(16) %44) + %52 = invoke i40 @_ZN4core3net7ip_addr8Ipv6Addr14to_ipv4_mapped17hc035d26dd61c98a4E.llvm.11181120138937278269(ptr noalias noundef nonnull readonly align 1 dereferenceable(16) %44) to label %.noexc.i.i.i.i.i.i unwind label %45, !noalias !811 -.noexc.i.i.i.i.i.i: ; preds = %50 - %52 = trunc i40 %51 to i1 - br i1 %52, label %53, label %56 - -53: ; preds = %.noexc.i.i.i.i.i.i - %.sroa.46.0.extract.shift.i.i.i.i.i.i.i.i.i = lshr i40 %51, 8 - %.sroa.46.0.extract.trunc.i.i.i.i.i.i.i.i.i = trunc nuw i40 %.sroa.46.0.extract.shift.i.i.i.i.i.i.i.i.i to i32 - br label %54 - -54: ; preds = %53, %49 - %.sroa.6.0.ph.i.i.i.i.i.i.i.i = phi i32 [ %.sroa.46.0.extract.trunc.i.i.i.i.i.i.i.i.i, %53 ], [ %.sroa.7.sroa.0.0.copyload.i.i.i.i.i.i, %49 ] +.noexc.i.i.i.i.i.i: ; preds = %51 + %53 = trunc i40 %52 to i1 + br i1 %53, label %54, label %56 + +54: ; preds = %.noexc.i.i.i.i.i.i + %.sroa.46.0.extract.shift.i.i.i.i.i.i.i.i.i = lshr i40 %52, 8 + %.sroa.6.sroa.0.0.extract.trunc3.i.i.i.i.i.i.i.i = trunc nuw i40 %.sroa.46.0.extract.shift.i.i.i.i.i.i.i.i.i to i32 + %.sroa.6.sroa.7.0.extract.shift527.i.i.i.i.i.i.i.i = lshr i40 %52, 16 + %.sroa.6.sroa.7.0.extract.trunc6.i.i.i.i.i.i.i.i = trunc nuw nsw i40 %.sroa.6.sroa.7.0.extract.shift527.i.i.i.i.i.i.i.i to i32 + %.sroa.6.sroa.8.0.extract.shift928.i.i.i.i.i.i.i.i = lshr i40 %52, 24 + %.sroa.6.sroa.8.0.extract.trunc10.i.i.i.i.i.i.i.i = trunc nuw nsw i40 %.sroa.6.sroa.8.0.extract.shift928.i.i.i.i.i.i.i.i to i32 + %sum.shift.i.i.i.i.i.i.i.i = lshr i40 %52, 32 + %.sroa.6.sroa.9.0.extract.trunc14.i.i.i.i.i.i.i.i = trunc nuw nsw i40 %sum.shift.i.i.i.i.i.i.i.i to i32 + br label %55 + +55: ; preds = %54, %50 + %.sroa.6.sroa.9.0.ph.i.i.i.i.i.i.i.i = phi i32 [ %.sroa.6.sroa.9.0.extract.shift.i.i.i.i.i.i.i.i, %50 ], [ %.sroa.6.sroa.9.0.extract.trunc14.i.i.i.i.i.i.i.i, %54 ] + %.sroa.6.sroa.8.0.ph.i.i.i.i.i.i.i.i = phi i32 [ %.sroa.6.sroa.8.0.extract.shift.i.i.i.i.i.i.i.i, %50 ], [ %.sroa.6.sroa.8.0.extract.trunc10.i.i.i.i.i.i.i.i, %54 ] + %.sroa.6.sroa.7.0.ph.i.i.i.i.i.i.i.i = phi i32 [ %.sroa.6.sroa.7.0.extract.shift.i.i.i.i.i.i.i.i, %50 ], [ %.sroa.6.sroa.7.0.extract.trunc6.i.i.i.i.i.i.i.i, %54 ] + %.sroa.6.sroa.0.0.ph.i.i.i.i.i.i.i.i = phi i32 [ %.sroa.7.sroa.0.0.copyload.i.i.i.i.i.i, %50 ], [ %.sroa.6.sroa.0.0.extract.trunc3.i.i.i.i.i.i.i.i, %54 ] call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5), !noalias !812 - %55 = bitcast i32 %.sroa.6.0.ph.i.i.i.i.i.i.i.i to <4 x i8> - %.sroa.02.1.vec.extract.i.i.i.i.i.i.i.i.i.i = extractelement <4 x i8> %55, i64 1 - %.sroa.02.2.vec.extract.i.i.i.i.i.i.i.i.i.i = extractelement <4 x i8> %55, i64 2 - %.sroa.02.3.vec.extract.i.i.i.i.i.i.i.i.i.i = extractelement <4 x i8> %55, i64 3 - %.sroa.4.0.insert.ext.i.i.i.i.i.i.i.i.i.i = zext i8 %.sroa.02.3.vec.extract.i.i.i.i.i.i.i.i.i.i to i32 - %.sroa.4.0.insert.shift.i.i.i.i.i.i.i.i.i.i = shl nuw i32 %.sroa.4.0.insert.ext.i.i.i.i.i.i.i.i.i.i, 24 - %.sroa.3.0.insert.ext.i.i.i.i.i.i.i.i.i.i = zext i8 %.sroa.02.2.vec.extract.i.i.i.i.i.i.i.i.i.i to i32 - %.sroa.3.0.insert.shift.i.i.i.i.i.i.i.i.i.i = shl nuw nsw i32 %.sroa.3.0.insert.ext.i.i.i.i.i.i.i.i.i.i, 16 - %.sroa.3.0.insert.insert.i.i.i.i.i.i.i.i.i.i = or disjoint i32 %.sroa.4.0.insert.shift.i.i.i.i.i.i.i.i.i.i, %.sroa.3.0.insert.shift.i.i.i.i.i.i.i.i.i.i - %.sroa.2.0.insert.ext.i.i.i.i.i.i.i.i.i.i = zext i8 %.sroa.02.1.vec.extract.i.i.i.i.i.i.i.i.i.i to i32 - %.sroa.2.0.insert.shift.i.i.i.i.i.i.i.i.i.i = shl nuw nsw i32 %.sroa.2.0.insert.ext.i.i.i.i.i.i.i.i.i.i, 8 + %.sroa.4.0.insert.shift.i.i.i.i.i.i.i.i.i.i = shl nuw i32 %.sroa.6.sroa.9.0.ph.i.i.i.i.i.i.i.i, 24 + %.sroa.3.0.insert.ext.i.i.i.i.i.i.i.i.i.i = shl nuw i32 %.sroa.6.sroa.8.0.ph.i.i.i.i.i.i.i.i, 16 + %.sroa.3.0.insert.shift.i.i.i.i.i.i.i.i.i.i = and i32 %.sroa.3.0.insert.ext.i.i.i.i.i.i.i.i.i.i, 16711680 + %.sroa.3.0.insert.insert.i.i.i.i.i.i.i.i.i.i = or disjoint i32 %.sroa.3.0.insert.shift.i.i.i.i.i.i.i.i.i.i, %.sroa.4.0.insert.shift.i.i.i.i.i.i.i.i.i.i + %.sroa.2.0.insert.ext.i.i.i.i.i.i.i.i.i.i = shl nuw i32 %.sroa.6.sroa.7.0.ph.i.i.i.i.i.i.i.i, 8 + %.sroa.2.0.insert.shift.i.i.i.i.i.i.i.i.i.i = and i32 %.sroa.2.0.insert.ext.i.i.i.i.i.i.i.i.i.i, 65280 %.sroa.2.0.insert.insert.i.i.i.i.i.i.i.i.i.i = or disjoint i32 %.sroa.3.0.insert.insert.i.i.i.i.i.i.i.i.i.i, %.sroa.2.0.insert.shift.i.i.i.i.i.i.i.i.i.i - %.sroa.01.0.insert.ext.i.i.i.i.i.i.i.i.i.i = and i32 %.sroa.6.0.ph.i.i.i.i.i.i.i.i, 255 + %.sroa.01.0.insert.ext.i.i.i.i.i.i.i.i.i.i = and i32 %.sroa.6.sroa.0.0.ph.i.i.i.i.i.i.i.i, 255 %.sroa.01.0.insert.insert.i.i.i.i.i.i.i.i.i.i = or disjoint i32 %.sroa.2.0.insert.insert.i.i.i.i.i.i.i.i.i.i, %.sroa.01.0.insert.ext.i.i.i.i.i.i.i.i.i.i br label %57 56: ; preds = %.noexc.i.i.i.i.i.i %.sroa.6.1.copyload.i.i.i.i.i.i.i.i = load i32, ptr %44, align 1, !alias.scope !820, !noalias !812 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5), !noalias !812 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %.sroa.11.1..sroa_idx2.i.i.i.i.i.i.i.i, ptr noundef nonnull align 2 dereferenceable(12) %.sroa.6.8..sroa_idx.i.i.i.i.i.i, i64 12, i1 false), !noalias !824 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %.sroa.14.1..sroa_idx2.i.i.i.i.i.i.i.i, ptr noundef nonnull align 2 dereferenceable(12) %.sroa.6.8..sroa_idx.i.i.i.i.i.i, i64 12, i1 false), !noalias !824 store i32 %.sroa.6.1.copyload.i.i.i.i.i.i.i.i, ptr %5, align 4, !noalias !825 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4), !noalias !828 invoke void @_ZN13wasmtime_wasi7network14from_ipv6_addr17h51670100d7f9563eE(ptr noalias nocapture noundef nonnull sret({ i16, i16, i16, i16, i16, i16, i16, i16 }) align 2 dereferenceable(16) %4, ptr noalias nocapture noundef nonnull align 1 dereferenceable(16) %5) @@ -6068,9 +6078,9 @@ define hidden void @"_ZN5alloc3vec16in_place_collect108_$LT$impl$u20$alloc..vec. call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4), !noalias !828 br label %57 -57: ; preds = %.noexc5.i.i.i.i.i.i, %54 - %.sroa.4.0.i.i.i.i.i.i.i = phi i32 [ %.sroa.01.0.insert.insert.i.i.i.i.i.i.i.i.i.i, %54 ], [ %.sroa.4.1.insert.shift.i.i.i.i.i.i.i, %.noexc5.i.i.i.i.i.i ] - %.sink.i.i.i.i.i.i.i.i.i = phi i8 [ 0, %54 ], [ 1, %.noexc5.i.i.i.i.i.i ] +57: ; preds = %.noexc5.i.i.i.i.i.i, %55 + %.sroa.4.0.i.i.i.i.i.i.i = phi i32 [ %.sroa.01.0.insert.insert.i.i.i.i.i.i.i.i.i.i, %55 ], [ %.sroa.4.1.insert.shift.i.i.i.i.i.i.i, %.noexc5.i.i.i.i.i.i ] + %.sink.i.i.i.i.i.i.i.i.i = phi i8 [ 0, %55 ], [ 1, %.noexc5.i.i.i.i.i.i ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5), !noalias !812 call void @llvm.lifetime.end.p0(i64 17, ptr nonnull %6), !noalias !812 %58 = getelementptr inbounds { i8, [17 x i8] }, ptr %37, i64 %.val2.i.i.i.i.i.i diff --git a/bench/wasmtime-rs/optimized/v5prf101dn49s3v.ll b/bench/wasmtime-rs/optimized/v5prf101dn49s3v.ll index e66123734bf..0ab6fd65c89 100644 --- a/bench/wasmtime-rs/optimized/v5prf101dn49s3v.ll +++ b/bench/wasmtime-rs/optimized/v5prf101dn49s3v.ll @@ -9930,14 +9930,16 @@ define void @"_ZN13wasmtime_wasi4host7network152_$LT$impl$u20$core..convert..Fro %3 = load i8, ptr %1, align 1, !range !1478, !noundef !5 %trunc = trunc nuw i8 %3 to i1 %4 = getelementptr inbounds i8, ptr %1, i64 1 - br i1 %trunc, label %8, label %5 + br i1 %trunc, label %10, label %5 5: ; preds = %2 - %.sroa.0.0.copyload = load i32, ptr %4, align 1 - %6 = bitcast i32 %.sroa.0.0.copyload to <4 x i8> - %.sroa.02.1.vec.extract.i = extractelement <4 x i8> %6, i64 1 - %.sroa.02.2.vec.extract.i = extractelement <4 x i8> %6, i64 2 - %.sroa.02.3.vec.extract.i = extractelement <4 x i8> %6, i64 3 + %.sroa.02.0.vec.extract.i = load i8, ptr %4, align 1 + %6 = getelementptr inbounds i8, ptr %1, i64 2 + %.sroa.02.1.vec.extract.i = load i8, ptr %6, align 1 + %7 = getelementptr inbounds i8, ptr %1, i64 3 + %.sroa.02.2.vec.extract.i = load i8, ptr %7, align 1 + %8 = getelementptr inbounds i8, ptr %1, i64 4 + %.sroa.02.3.vec.extract.i = load i8, ptr %8, align 1 %.sroa.4.0.insert.ext.i = zext i8 %.sroa.02.3.vec.extract.i to i32 %.sroa.4.0.insert.shift.i = shl nuw i32 %.sroa.4.0.insert.ext.i, 24 %.sroa.3.0.insert.ext.i = zext i8 %.sroa.02.2.vec.extract.i to i32 @@ -9946,13 +9948,13 @@ define void @"_ZN13wasmtime_wasi4host7network152_$LT$impl$u20$core..convert..Fro %.sroa.2.0.insert.ext.i = zext i8 %.sroa.02.1.vec.extract.i to i32 %.sroa.2.0.insert.shift.i = shl nuw nsw i32 %.sroa.2.0.insert.ext.i, 8 %.sroa.2.0.insert.insert.i = or disjoint i32 %.sroa.3.0.insert.insert.i, %.sroa.2.0.insert.shift.i - %.sroa.01.0.insert.ext.i = and i32 %.sroa.0.0.copyload, 255 + %.sroa.01.0.insert.ext.i = zext i8 %.sroa.02.0.vec.extract.i to i32 %.sroa.01.0.insert.insert.i = or disjoint i32 %.sroa.2.0.insert.insert.i, %.sroa.01.0.insert.ext.i - %7 = getelementptr inbounds i8, ptr %0, i64 1 - store i32 %.sroa.01.0.insert.insert.i, ptr %7, align 1 - br label %18 + %9 = getelementptr inbounds i8, ptr %0, i64 1 + store i32 %.sroa.01.0.insert.insert.i, ptr %9, align 1 + br label %20 -8: ; preds = %2 +10: ; preds = %2 %.sroa.0.0.copyload2 = load i16, ptr %4, align 1 %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %1, i64 3 %.sroa.2.0.copyload = load i16, ptr %.sroa.2.0..sroa_idx, align 1 @@ -9968,34 +9970,34 @@ define void @"_ZN13wasmtime_wasi4host7network152_$LT$impl$u20$core..convert..Fro %.sroa.7.0.copyload = load i16, ptr %.sroa.7.0..sroa_idx, align 1 %.sroa.8.0..sroa_idx = getelementptr inbounds i8, ptr %1, i64 15 %.sroa.8.0.copyload = load i16, ptr %.sroa.8.0..sroa_idx, align 1 - %9 = tail call i16 @llvm.bswap.i16(i16 %.sroa.0.0.copyload2) - %10 = tail call i16 @llvm.bswap.i16(i16 %.sroa.2.0.copyload) - %11 = tail call i16 @llvm.bswap.i16(i16 %.sroa.3.0.copyload) - %12 = tail call i16 @llvm.bswap.i16(i16 %.sroa.4.0.copyload) - %13 = tail call i16 @llvm.bswap.i16(i16 %.sroa.5.0.copyload) - %14 = tail call i16 @llvm.bswap.i16(i16 %.sroa.6.0.copyload) - %15 = tail call i16 @llvm.bswap.i16(i16 %.sroa.7.0.copyload) - %16 = tail call i16 @llvm.bswap.i16(i16 %.sroa.8.0.copyload) - %17 = getelementptr inbounds i8, ptr %0, i64 2 - store i16 %9, ptr %17, align 2 + %11 = tail call i16 @llvm.bswap.i16(i16 %.sroa.0.0.copyload2) + %12 = tail call i16 @llvm.bswap.i16(i16 %.sroa.2.0.copyload) + %13 = tail call i16 @llvm.bswap.i16(i16 %.sroa.3.0.copyload) + %14 = tail call i16 @llvm.bswap.i16(i16 %.sroa.4.0.copyload) + %15 = tail call i16 @llvm.bswap.i16(i16 %.sroa.5.0.copyload) + %16 = tail call i16 @llvm.bswap.i16(i16 %.sroa.6.0.copyload) + %17 = tail call i16 @llvm.bswap.i16(i16 %.sroa.7.0.copyload) + %18 = tail call i16 @llvm.bswap.i16(i16 %.sroa.8.0.copyload) + %19 = getelementptr inbounds i8, ptr %0, i64 2 + store i16 %11, ptr %19, align 2 %.sroa.44.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4 - store i16 %10, ptr %.sroa.44.0..sroa_idx, align 2 + store i16 %12, ptr %.sroa.44.0..sroa_idx, align 2 %.sroa.55.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 6 - store i16 %11, ptr %.sroa.55.0..sroa_idx, align 2 + store i16 %13, ptr %.sroa.55.0..sroa_idx, align 2 %.sroa.66.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 - store i16 %12, ptr %.sroa.66.0..sroa_idx, align 2 + store i16 %14, ptr %.sroa.66.0..sroa_idx, align 2 %.sroa.77.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 10 - store i16 %13, ptr %.sroa.77.0..sroa_idx, align 2 + store i16 %15, ptr %.sroa.77.0..sroa_idx, align 2 %.sroa.88.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 12 - store i16 %14, ptr %.sroa.88.0..sroa_idx, align 2 + store i16 %16, ptr %.sroa.88.0..sroa_idx, align 2 %.sroa.9.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 14 - store i16 %15, ptr %.sroa.9.0..sroa_idx, align 2 + store i16 %17, ptr %.sroa.9.0..sroa_idx, align 2 %.sroa.10.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 - store i16 %16, ptr %.sroa.10.0..sroa_idx, align 2 - br label %18 + store i16 %18, ptr %.sroa.10.0..sroa_idx, align 2 + br label %20 -18: ; preds = %8, %5 - %storemerge = phi i8 [ 1, %8 ], [ 0, %5 ] +20: ; preds = %10, %5 + %storemerge = phi i8 [ 1, %10 ], [ 0, %5 ] store i8 %storemerge, ptr %0, align 2 ret void } @@ -10012,6 +10014,7 @@ define void @"_ZN13wasmtime_wasi4host7network166_$LT$impl$u20$core..convert..Fro %.sroa.02.0.extract.trunc.i = trunc i48 %.sroa.0.0.copyload to i32 %.sroa.4.0.extract.shift.i = and i48 %.sroa.0.0.copyload, -4294967296 %6 = bitcast i32 %.sroa.02.0.extract.trunc.i to <4 x i8> + %.sroa.02.0.vec.extract.i.i = extractelement <4 x i8> %6, i64 0 %.sroa.02.1.vec.extract.i.i = extractelement <4 x i8> %6, i64 1 %.sroa.02.2.vec.extract.i.i = extractelement <4 x i8> %6, i64 2 %.sroa.02.3.vec.extract.i.i = extractelement <4 x i8> %6, i64 3 @@ -10023,7 +10026,7 @@ define void @"_ZN13wasmtime_wasi4host7network166_$LT$impl$u20$core..convert..Fro %.sroa.2.0.insert.ext.i.i = zext i8 %.sroa.02.1.vec.extract.i.i to i32 %.sroa.2.0.insert.shift.i.i = shl nuw nsw i32 %.sroa.2.0.insert.ext.i.i, 8 %.sroa.2.0.insert.insert.i.i = or disjoint i32 %.sroa.3.0.insert.insert.i.i, %.sroa.2.0.insert.shift.i.i - %.sroa.01.0.insert.ext.i.i = and i32 %.sroa.02.0.extract.trunc.i, 255 + %.sroa.01.0.insert.ext.i.i = zext i8 %.sroa.02.0.vec.extract.i.i to i32 %.sroa.01.0.insert.insert.i.i = or disjoint i32 %.sroa.2.0.insert.insert.i.i, %.sroa.01.0.insert.ext.i.i %.sroa.03.0.insert.ext.i = zext i32 %.sroa.01.0.insert.insert.i.i to i48 %.sroa.03.0.insert.insert.i = or disjoint i48 %.sroa.4.0.extract.shift.i, %.sroa.03.0.insert.ext.i @@ -10097,6 +10100,7 @@ define i48 @"_ZN13wasmtime_wasi4host7network170_$LT$impl$u20$core..convert..From %.sroa.02.0.extract.trunc = trunc i48 %0 to i32 %.sroa.4.0.extract.shift = and i48 %0, -4294967296 %2 = bitcast i32 %.sroa.02.0.extract.trunc to <4 x i8> + %.sroa.02.0.vec.extract.i = extractelement <4 x i8> %2, i64 0 %.sroa.02.1.vec.extract.i = extractelement <4 x i8> %2, i64 1 %.sroa.02.2.vec.extract.i = extractelement <4 x i8> %2, i64 2 %.sroa.02.3.vec.extract.i = extractelement <4 x i8> %2, i64 3 @@ -10108,7 +10112,7 @@ define i48 @"_ZN13wasmtime_wasi4host7network170_$LT$impl$u20$core..convert..From %.sroa.2.0.insert.ext.i = zext i8 %.sroa.02.1.vec.extract.i to i32 %.sroa.2.0.insert.shift.i = shl nuw nsw i32 %.sroa.2.0.insert.ext.i, 8 %.sroa.2.0.insert.insert.i = or disjoint i32 %.sroa.3.0.insert.insert.i, %.sroa.2.0.insert.shift.i - %.sroa.01.0.insert.ext.i = and i32 %.sroa.02.0.extract.trunc, 255 + %.sroa.01.0.insert.ext.i = zext i8 %.sroa.02.0.vec.extract.i to i32 %.sroa.01.0.insert.insert.i = or disjoint i32 %.sroa.2.0.insert.insert.i, %.sroa.01.0.insert.ext.i %.sroa.03.0.insert.ext = zext i32 %.sroa.01.0.insert.insert.i to i48 %.sroa.03.0.insert.insert = or disjoint i48 %.sroa.4.0.extract.shift, %.sroa.03.0.insert.ext diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index 820278fb20a..134e63756e0 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/115627 # Please rebase manually # git fetch origin