From 303de49a606116ba598a700ffeb8b6954e98c82e Mon Sep 17 00:00:00 2001 From: Yingwei Zheng Date: Mon, 15 Jan 2024 01:22:20 +0800 Subject: [PATCH 1/2] pre-commit: test PR78107 PR Link: https://github.com/llvm/llvm-project/pull/78107 --- scripts/setup_pre_commit_patch.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index bba61ce1da6..06f4eb9e724 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/78107" # Please rebase manually # git fetch origin From 333bf597ea6081a209c43c905bd5898d4e621f6a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 15 Jan 2024 01:33:57 +0800 Subject: [PATCH 2/2] pre-commit: Update --- bench/luajit/optimized/buildvm_fold.ll | 214 +- .../openssl/optimized/libcrypto-lib-c_enc.ll | 196 +- .../optimized/libcrypto-shlib-c_enc.ll | 196 +- bench/pbrt-v4/optimized/aggregate.cpp.ll | 4651 ++++++++--------- bench/pbrt-v4/optimized/camera.cpp.ll | 308 +- bench/pbrt-v4/optimized/cameras.cpp.ll | 166 +- bench/pbrt-v4/optimized/filters.cpp.ll | 105 +- bench/pbrt-v4/optimized/imgtool.cpp.ll | 406 +- bench/pbrt-v4/optimized/interaction.cpp.ll | 122 +- bench/pbrt-v4/optimized/lightsamplers.cpp.ll | 29 +- bench/pbrt-v4/optimized/pspec.cpp.ll | 1745 +++---- bench/pbrt-v4/optimized/samplers.cpp.ll | 75 +- bench/pbrt-v4/optimized/samples.cpp.ll | 225 +- bench/pbrt-v4/optimized/stbimage.cpp.ll | 467 +- bench/pcg-cpp/optimized/codebook.cpp.ll | 78 +- bench/pcg-cpp/optimized/cppref-sample.cpp.ll | 253 +- .../pcg-cpp/optimized/make-partytrick.cpp.ll | 74 +- bench/pcg-cpp/optimized/pcg-demo.cpp.ll | 700 ++- bench/pcg-cpp/optimized/use-partytrick.cpp.ll | 148 +- bench/stb/optimized/stb_image.c.ll | 807 ++- 20 files changed, 5236 insertions(+), 5729 deletions(-) diff --git a/bench/luajit/optimized/buildvm_fold.ll b/bench/luajit/optimized/buildvm_fold.ll index 2e4b4571251..e87c59584bc 100644 --- a/bench/luajit/optimized/buildvm_fold.ll +++ b/bench/luajit/optimized/buildvm_fold.ll @@ -291,8 +291,8 @@ while.end: ; preds = %if.end79, %if.end15 call void @llvm.lifetime.start.p0(i64 32772, ptr nonnull %htab.i) %39 = load i32, ptr @nkeys, align 4 %or.i29 = or i32 %39, 1 - %cmp122.i = icmp ult i32 %or.i29, 8192 - br i1 %cmp122.i, label %for.cond1.preheader.lr.ph.i, label %for.end23.i + %cmp119.i = icmp ult i32 %or.i29, 8192 + br i1 %cmp119.i, label %for.cond1.preheader.lr.ph.i, label %for.end23.i for.cond1.preheader.lr.ph.i: ; preds = %while.end %invariant.gep.i.i = getelementptr inbounds i32, ptr %htab.i, i64 2 @@ -323,10 +323,10 @@ for.cond6.preheader.i: ; preds = %for.inc.i br label %for.body8.i for.body3.i: ; preds = %for.inc.i, %for.cond1.preheader.i - %r.0103.i = phi i32 [ 0, %for.cond1.preheader.i ], [ %inc.i31, %for.inc.i ] + %r.0100.i = phi i32 [ 0, %for.cond1.preheader.i ], [ %inc.i31, %for.inc.i ] call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1) %htab.i, i8 -1, i64 %mul.i.i, i1 false) - %shr6.i.i = lshr i32 %r.0103.i, 5 - %and34.i.i = and i32 %r.0103.i, 31 + %shr6.i.i = lshr i32 %r.0100.i, 5 + %and34.i.i = and i32 %r.0100.i, 31 br label %for.body.i.i for.body.i.i: ; preds = %for.inc.i.i, %for.body3.i @@ -389,12 +389,12 @@ if.then.loopexit.i: ; preds = %for.inc.i.i if.then.i35: ; preds = %if.then.loopexit.i, %for.cond1.preheader.us.i %50 = phi i32 [ -1, %for.cond1.preheader.us.i ], [ %.pre.i, %if.then.loopexit.i ] - %sz.0102.i = phi i32 [ 1, %for.cond1.preheader.us.i ], [ %43, %if.then.loopexit.i ] - %add.i91.i = phi i32 [ 2, %for.cond1.preheader.us.i ], [ %49, %if.then.loopexit.i ] - %conv.i89.i = phi i64 [ 2, %for.cond1.preheader.us.i ], [ %41, %if.then.loopexit.i ] - %r.087.i = phi i32 [ 0, %for.cond1.preheader.us.i ], [ %r.0103.i, %if.then.loopexit.i ] + %sz.099.i = phi i32 [ 1, %for.cond1.preheader.us.i ], [ %43, %if.then.loopexit.i ] + %add.i88.i = phi i32 [ 2, %for.cond1.preheader.us.i ], [ %49, %if.then.loopexit.i ] + %conv.i86.i = phi i64 [ 2, %for.cond1.preheader.us.i ], [ %41, %if.then.loopexit.i ] + %r.084.i = phi i32 [ 0, %for.cond1.preheader.us.i ], [ %r.0100.i, %if.then.loopexit.i ] %51 = load ptr, ptr %fp16, align 8 - %call.i.i36 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %51, ptr noundef nonnull @.str.22, i32 noundef %add.i91.i, i32 noundef %50) + %call.i.i36 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %51, ptr noundef nonnull @.str.22, i32 noundef %add.i88.i, i32 noundef %50) br label %for.body.i22.i for.body.i22.i: ; preds = %for.body.i22.i, %if.then.i35 @@ -404,124 +404,118 @@ for.body.i22.i: ; preds = %for.body.i22.i, %if %53 = load i32, ptr %arrayidx3.i.i, align 4 %call4.i.i = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %52, ptr noundef nonnull @.str.23, i32 noundef %53) %indvars.iv.next.i24.i = add nuw nsw i64 %indvars.iv.i23.i, 1 - %exitcond.not.i25.i = icmp eq i64 %indvars.iv.next.i24.i, %conv.i89.i + %exitcond.not.i25.i = icmp eq i64 %indvars.iv.next.i24.i, %conv.i86.i br i1 %exitcond.not.i25.i, label %printhash.exit.i, label %for.body.i22.i, !llvm.loop !9 printhash.exit.i: ; preds = %for.body.i22.i %54 = load ptr, ptr %fp16, align 8 %55 = call i64 @fwrite(ptr nonnull @.str.10, i64 5, i64 1, ptr %54) %56 = load ptr, ptr %fp16, align 8 - %shr.i = lshr i32 %r.087.i, 5 - %and.i37 = and i32 %r.087.i, 31 - %call5.i = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %56, ptr noundef nonnull @.str.19, i32 noundef %shr.i, i32 noundef %and.i37, i32 noundef %sz.0102.i) + %shr.i = lshr i32 %r.084.i, 5 + %and.i37 = and i32 %r.084.i, 31 + %call5.i = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %56, ptr noundef nonnull @.str.19, i32 noundef %shr.i, i32 noundef %and.i37, i32 noundef %sz.099.i) br label %makehash.exit for.inc.i: ; preds = %if.then56.i.i, %land.lhs.true50.i.i, %if.then46.i.i - %inc.i31 = add nuw nsw i32 %r.0103.i, 1 + %inc.i31 = add nuw nsw i32 %r.0100.i, 1 %exitcond.not.i = icmp eq i32 %inc.i31, 1024 br i1 %exitcond.not.i, label %for.cond6.preheader.i, label %for.body3.i, !llvm.loop !10 for.body8.i: ; preds = %for.inc19.i, %for.cond6.preheader.i - %r.1120.i = phi i32 [ 0, %for.cond6.preheader.i ], [ %inc20.i, %for.inc19.i ] - %and.i.i = and i32 %r.1120.i, 31 + %r.1117.i = phi i32 [ 0, %for.cond6.preheader.i ], [ %inc20.i, %for.inc19.i ] + %and.i.i = and i32 %r.1117.i, 31 %cmp.i.i = icmp eq i32 %and.i.i, 0 - %cmp1.i.i = icmp ult i32 %r.1120.i, 32 + %cmp1.i.i = icmp ult i32 %r.1117.i, 32 %or.cond.i.i = or i1 %cmp1.i.i, %cmp.i.i br i1 %or.cond.i.i, label %for.inc19.i, label %if.end.i.i32 if.end.i.i32: ; preds = %for.body8.i call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1) %htab.i, i8 -1, i64 %mul.i28.i, i1 false) - %shr6.i33.i = lshr i32 %r.1120.i, 5 - %sub.i34.i = sub nsw i32 0, %shr6.i33.i - %57 = and i32 %sub.i34.i, 31 - br label %for.body.i37.i - -for.body.i37.i: ; preds = %for.inc.i63.i, %if.end.i.i32 - %indvars.iv.i38.i = phi i64 [ 0, %if.end.i.i32 ], [ %indvars.iv.next.i65.i, %for.inc.i63.i ] - %arrayidx.i39.i = getelementptr inbounds [4096 x i32], ptr @foldkeys, i64 0, i64 %indvars.iv.i38.i - %58 = load i32, ptr %arrayidx.i39.i, align 4 - %and4.i40.i = and i32 %58, 16777215 - %shl32.i41.i = shl i32 %and4.i40.i, %shr6.i33.i - %shr10.i.i = lshr i32 %and4.i40.i, %57 - %or.i.i = or i32 %shl32.i41.i, %shr10.i.i - %sub11.i.i = sub i32 %or.i.i, %and4.i40.i - %or30.i.i = call i32 @llvm.fshl.i32(i32 %sub11.i.i, i32 %sub11.i.i, i32 %r.1120.i) - %rem.i42.i = urem i32 %or30.i.i, %43 - %idxprom36.i43.i = zext i32 %rem.i42.i to i64 - %arrayidx37.i44.i = getelementptr inbounds i32, ptr %htab.i, i64 %idxprom36.i43.i - %59 = load i32, ptr %arrayidx37.i44.i, align 4 - %cmp38.not.i45.i = icmp eq i32 %59, -1 - br i1 %cmp38.not.i45.i, label %for.inc.i63.i, label %if.then40.i46.i - -if.then40.i46.i: ; preds = %for.body.i37.i - %add41.i47.i = add nuw nsw i32 %rem.i42.i, 1 - %idxprom42.i48.i = zext nneg i32 %add41.i47.i to i64 - %arrayidx43.i49.i = getelementptr inbounds i32, ptr %htab.i, i64 %idxprom42.i48.i - %60 = load i32, ptr %arrayidx43.i49.i, align 4 - %cmp44.not.i50.i = icmp eq i32 %60, -1 - br i1 %cmp44.not.i50.i, label %for.inc.i63.i, label %if.then46.i51.i - -if.then46.i51.i: ; preds = %if.then40.i46.i - %cmp48.i52.i = icmp ugt i64 %42, %idxprom36.i43.i - br i1 %cmp48.i52.i, label %land.lhs.true50.i54.i, label %for.inc19.i - -land.lhs.true50.i54.i: ; preds = %if.then46.i51.i - %gep.i55.i = getelementptr i32, ptr %invariant.gep.i.i, i64 %idxprom36.i43.i - %61 = load i32, ptr %gep.i55.i, align 4 - %cmp54.i56.i = icmp eq i32 %61, -1 - br i1 %cmp54.i56.i, label %if.then56.i57.i, label %for.inc19.i - -if.then56.i57.i: ; preds = %land.lhs.true50.i54.i - %and60.i58.i = and i32 %60, 16777215 - %shl94.i59.i = shl i32 %and60.i58.i, %shr6.i33.i - %shr70.i.i = lshr i32 %and60.i58.i, %57 - %or71.i.i = or i32 %shl94.i59.i, %shr70.i.i - %sub72.i.i = sub i32 %or71.i.i, %and60.i58.i - %or91.i.i = call i32 @llvm.fshl.i32(i32 %sub72.i.i, i32 %sub72.i.i, i32 %r.1120.i) - %rem100.i60.i = urem i32 %or91.i.i, %43 - %cmp102.not.i61.i = icmp eq i32 %rem100.i60.i, %add41.i47.i - br i1 %cmp102.not.i61.i, label %if.end105.i62.i, label %for.inc19.i - -if.end105.i62.i: ; preds = %if.then56.i57.i - store i32 %60, ptr %gep.i55.i, align 4 - br label %for.inc.i63.i - -for.inc.i63.i: ; preds = %if.end105.i62.i, %if.then40.i46.i, %for.body.i37.i - %arrayidx43.sink.i64.i = phi ptr [ %arrayidx43.i49.i, %if.end105.i62.i ], [ %arrayidx43.i49.i, %if.then40.i46.i ], [ %arrayidx37.i44.i, %for.body.i37.i ] - store i32 %58, ptr %arrayidx43.sink.i64.i, align 4 - %indvars.iv.next.i65.i = add nuw nsw i64 %indvars.iv.i38.i, 1 - %exitcond.not.i66.i = icmp eq i64 %indvars.iv.next.i65.i, %wide.trip.count.i.i - br i1 %exitcond.not.i66.i, label %if.then12.i, label %for.body.i37.i, !llvm.loop !8 - -if.then12.i: ; preds = %for.inc.i63.i - %62 = load ptr, ptr %fp16, align 8 - %add.i69.i = add nuw nsw i32 %43, 1 - %63 = load i32, ptr %htab.i, align 16 - %call.i70.i = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %62, ptr noundef nonnull @.str.22, i32 noundef %add.i69.i, i32 noundef %63) - %wide.trip.count.i71.i = zext nneg i32 %add.i69.i to i64 - br label %for.body.i72.i - -for.body.i72.i: ; preds = %for.body.i72.i, %if.then12.i - %indvars.iv.i73.i = phi i64 [ 1, %if.then12.i ], [ %indvars.iv.next.i76.i, %for.body.i72.i ] - %64 = load ptr, ptr %fp16, align 8 - %arrayidx3.i74.i = getelementptr inbounds i32, ptr %htab.i, i64 %indvars.iv.i73.i - %65 = load i32, ptr %arrayidx3.i74.i, align 4 - %call4.i75.i = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %64, ptr noundef nonnull @.str.23, i32 noundef %65) - %indvars.iv.next.i76.i = add nuw nsw i64 %indvars.iv.i73.i, 1 - %exitcond.not.i77.i = icmp eq i64 %indvars.iv.next.i76.i, %wide.trip.count.i71.i - br i1 %exitcond.not.i77.i, label %printhash.exit78.i, label %for.body.i72.i, !llvm.loop !9 - -printhash.exit78.i: ; preds = %for.body.i72.i - %66 = load ptr, ptr %fp16, align 8 - %67 = call i64 @fwrite(ptr nonnull @.str.10, i64 5, i64 1, ptr %66) - %68 = load ptr, ptr %fp16, align 8 - %call17.i = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %68, ptr noundef nonnull @.str.20, i32 noundef %shr6.i33.i, i32 noundef %and.i.i, i32 noundef %43) + %shr6.i33.i = lshr i32 %r.1117.i, 5 + br label %for.body.i36.i + +for.body.i36.i: ; preds = %for.inc.i60.i, %if.end.i.i32 + %indvars.iv.i37.i = phi i64 [ 0, %if.end.i.i32 ], [ %indvars.iv.next.i62.i, %for.inc.i60.i ] + %arrayidx.i38.i = getelementptr inbounds [4096 x i32], ptr @foldkeys, i64 0, i64 %indvars.iv.i37.i + %57 = load i32, ptr %arrayidx.i38.i, align 4 + %and4.i39.i = and i32 %57, 16777215 + %or.i.i = call i32 @llvm.fshl.i32(i32 %and4.i39.i, i32 %and4.i39.i, i32 %shr6.i33.i) + %sub11.i.i = sub i32 %or.i.i, %and4.i39.i + %or30.i.i = call i32 @llvm.fshl.i32(i32 %sub11.i.i, i32 %sub11.i.i, i32 %r.1117.i) + %rem.i40.i = urem i32 %or30.i.i, %43 + %idxprom36.i41.i = zext i32 %rem.i40.i to i64 + %arrayidx37.i42.i = getelementptr inbounds i32, ptr %htab.i, i64 %idxprom36.i41.i + %58 = load i32, ptr %arrayidx37.i42.i, align 4 + %cmp38.not.i43.i = icmp eq i32 %58, -1 + br i1 %cmp38.not.i43.i, label %for.inc.i60.i, label %if.then40.i44.i + +if.then40.i44.i: ; preds = %for.body.i36.i + %add41.i45.i = add nuw nsw i32 %rem.i40.i, 1 + %idxprom42.i46.i = zext nneg i32 %add41.i45.i to i64 + %arrayidx43.i47.i = getelementptr inbounds i32, ptr %htab.i, i64 %idxprom42.i46.i + %59 = load i32, ptr %arrayidx43.i47.i, align 4 + %cmp44.not.i48.i = icmp eq i32 %59, -1 + br i1 %cmp44.not.i48.i, label %for.inc.i60.i, label %if.then46.i49.i + +if.then46.i49.i: ; preds = %if.then40.i44.i + %cmp48.i50.i = icmp ugt i64 %42, %idxprom36.i41.i + br i1 %cmp48.i50.i, label %land.lhs.true50.i52.i, label %for.inc19.i + +land.lhs.true50.i52.i: ; preds = %if.then46.i49.i + %gep.i53.i = getelementptr i32, ptr %invariant.gep.i.i, i64 %idxprom36.i41.i + %60 = load i32, ptr %gep.i53.i, align 4 + %cmp54.i54.i = icmp eq i32 %60, -1 + br i1 %cmp54.i54.i, label %if.then56.i55.i, label %for.inc19.i + +if.then56.i55.i: ; preds = %land.lhs.true50.i52.i + %and60.i56.i = and i32 %59, 16777215 + %or71.i.i = call i32 @llvm.fshl.i32(i32 %and60.i56.i, i32 %and60.i56.i, i32 %shr6.i33.i) + %sub72.i.i = sub i32 %or71.i.i, %and60.i56.i + %or91.i.i = call i32 @llvm.fshl.i32(i32 %sub72.i.i, i32 %sub72.i.i, i32 %r.1117.i) + %rem100.i57.i = urem i32 %or91.i.i, %43 + %cmp102.not.i58.i = icmp eq i32 %rem100.i57.i, %add41.i45.i + br i1 %cmp102.not.i58.i, label %if.end105.i59.i, label %for.inc19.i + +if.end105.i59.i: ; preds = %if.then56.i55.i + store i32 %59, ptr %gep.i53.i, align 4 + br label %for.inc.i60.i + +for.inc.i60.i: ; preds = %if.end105.i59.i, %if.then40.i44.i, %for.body.i36.i + %arrayidx43.sink.i61.i = phi ptr [ %arrayidx43.i47.i, %if.end105.i59.i ], [ %arrayidx43.i47.i, %if.then40.i44.i ], [ %arrayidx37.i42.i, %for.body.i36.i ] + store i32 %57, ptr %arrayidx43.sink.i61.i, align 4 + %indvars.iv.next.i62.i = add nuw nsw i64 %indvars.iv.i37.i, 1 + %exitcond.not.i63.i = icmp eq i64 %indvars.iv.next.i62.i, %wide.trip.count.i.i + br i1 %exitcond.not.i63.i, label %if.then12.i, label %for.body.i36.i, !llvm.loop !8 + +if.then12.i: ; preds = %for.inc.i60.i + %61 = load ptr, ptr %fp16, align 8 + %add.i66.i = add nuw nsw i32 %43, 1 + %62 = load i32, ptr %htab.i, align 16 + %call.i67.i = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %61, ptr noundef nonnull @.str.22, i32 noundef %add.i66.i, i32 noundef %62) + %wide.trip.count.i68.i = zext nneg i32 %add.i66.i to i64 + br label %for.body.i69.i + +for.body.i69.i: ; preds = %for.body.i69.i, %if.then12.i + %indvars.iv.i70.i = phi i64 [ 1, %if.then12.i ], [ %indvars.iv.next.i73.i, %for.body.i69.i ] + %63 = load ptr, ptr %fp16, align 8 + %arrayidx3.i71.i = getelementptr inbounds i32, ptr %htab.i, i64 %indvars.iv.i70.i + %64 = load i32, ptr %arrayidx3.i71.i, align 4 + %call4.i72.i = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %63, ptr noundef nonnull @.str.23, i32 noundef %64) + %indvars.iv.next.i73.i = add nuw nsw i64 %indvars.iv.i70.i, 1 + %exitcond.not.i74.i = icmp eq i64 %indvars.iv.next.i73.i, %wide.trip.count.i68.i + br i1 %exitcond.not.i74.i, label %printhash.exit75.i, label %for.body.i69.i, !llvm.loop !9 + +printhash.exit75.i: ; preds = %for.body.i69.i + %65 = load ptr, ptr %fp16, align 8 + %66 = call i64 @fwrite(ptr nonnull @.str.10, i64 5, i64 1, ptr %65) + %67 = load ptr, ptr %fp16, align 8 + %call17.i = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %67, ptr noundef nonnull @.str.20, i32 noundef %shr6.i33.i, i32 noundef %and.i.i, i32 noundef %43) br label %makehash.exit -for.inc19.i: ; preds = %if.then56.i57.i, %land.lhs.true50.i54.i, %if.then46.i51.i, %for.body8.i - %inc20.i = add nuw nsw i32 %r.1120.i, 1 - %exitcond136.not.i = icmp eq i32 %inc20.i, 1024 - br i1 %exitcond136.not.i, label %for.inc22.i, label %for.body8.i, !llvm.loop !11 +for.inc19.i: ; preds = %if.then56.i55.i, %land.lhs.true50.i52.i, %if.then46.i49.i, %for.body8.i + %inc20.i = add nuw nsw i32 %r.1117.i, 1 + %exitcond133.not.i = icmp eq i32 %inc20.i, 1024 + br i1 %exitcond133.not.i, label %for.inc22.i, label %for.body8.i, !llvm.loop !11 for.inc22.i: ; preds = %for.inc19.i %indvars.iv.next.i33 = add nuw nsw i64 %indvars.iv.i30, 2 @@ -529,12 +523,12 @@ for.inc22.i: ; preds = %for.inc19.i br i1 %cmp.i34, label %for.cond1.preheader.i, label %for.end23.i, !llvm.loop !12 for.end23.i: ; preds = %for.inc22.i, %while.end - %69 = load ptr, ptr @stderr, align 8 - %70 = call i64 @fwrite(ptr nonnull @.str.21, i64 38, i64 1, ptr %69) #11 + %68 = load ptr, ptr @stderr, align 8 + %69 = call i64 @fwrite(ptr nonnull @.str.21, i64 38, i64 1, ptr %68) #11 call void @exit(i32 noundef 1) #12 unreachable -makehash.exit: ; preds = %printhash.exit.i, %printhash.exit78.i +makehash.exit: ; preds = %printhash.exit.i, %printhash.exit75.i call void @llvm.lifetime.end.p0(i64 32772, ptr nonnull %htab.i) ret void } diff --git a/bench/openssl/optimized/libcrypto-lib-c_enc.ll b/bench/openssl/optimized/libcrypto-lib-c_enc.ll index 1bdfa845a6a..1386be9cfe5 100644 --- a/bench/openssl/optimized/libcrypto-lib-c_enc.ll +++ b/bench/openssl/optimized/libcrypto-lib-c_enc.ll @@ -20,11 +20,7 @@ entry: %add = add i32 %2, %1 %arrayidx5 = getelementptr inbounds i32, ptr %key, i64 1 %3 = load i32, ptr %arrayidx5, align 4 - %shl = shl i32 %add, %3 - %sub = sub i32 0, %3 - %and8 = and i32 %sub, 31 - %shr = lshr i32 %add, %and8 - %or179 = or i32 %shr, %shl + %or179 = tail call i32 @llvm.fshl.i32(i32 %add, i32 %add, i32 %3) %shr11 = lshr i32 %or179, 8 %and12 = and i32 %shr11, 255 %idxprom = zext nneg i32 %and12 to i64 @@ -52,11 +48,7 @@ entry: %xor41 = xor i32 %xor34180, %8 %arrayidx43 = getelementptr inbounds i32, ptr %key, i64 3 %9 = load i32, ptr %arrayidx43, align 4 - %shl44 = shl i32 %xor41, %9 - %sub48 = sub i32 0, %9 - %and49 = and i32 %sub48, 31 - %shr50 = lshr i32 %xor41, %and49 - %or52181 = or i32 %shl44, %shr50 + %or52181 = tail call i32 @llvm.fshl.i32(i32 %xor41, i32 %xor41, i32 %9) %shr54 = lshr i32 %or52181, 8 %and55 = and i32 %shr54, 255 %idxprom56 = zext nneg i32 %and55 to i64 @@ -84,11 +76,7 @@ entry: %sub86 = sub i32 %15, %xor79183 %arrayidx88 = getelementptr inbounds i32, ptr %key, i64 5 %16 = load i32, ptr %arrayidx88, align 4 - %shl89 = shl i32 %sub86, %16 - %sub93 = sub i32 0, %16 - %and94 = and i32 %sub93, 31 - %shr95 = lshr i32 %sub86, %and94 - %or97184 = or i32 %shl89, %shr95 + %or97184 = tail call i32 @llvm.fshl.i32(i32 %sub86, i32 %sub86, i32 %16) %shr99 = lshr i32 %or97184, 8 %and100 = and i32 %shr99, 255 %idxprom101 = zext nneg i32 %and100 to i64 @@ -116,11 +104,7 @@ entry: %add131 = add i32 %xor124186, %21 %arrayidx133 = getelementptr inbounds i32, ptr %key, i64 7 %22 = load i32, ptr %arrayidx133, align 4 - %shl134 = shl i32 %add131, %22 - %sub138 = sub i32 0, %22 - %and139 = and i32 %sub138, 31 - %shr140 = lshr i32 %add131, %and139 - %or142187 = or i32 %shl134, %shr140 + %or142187 = tail call i32 @llvm.fshl.i32(i32 %add131, i32 %add131, i32 %22) %shr144 = lshr i32 %or142187, 8 %and145 = and i32 %shr144, 255 %idxprom146 = zext nneg i32 %and145 to i64 @@ -148,11 +132,7 @@ entry: %xor176 = xor i32 %xor169188, %27 %arrayidx178 = getelementptr inbounds i32, ptr %key, i64 9 %28 = load i32, ptr %arrayidx178, align 4 - %shl179 = shl i32 %xor176, %28 - %sub183 = sub i32 0, %28 - %and184 = and i32 %sub183, 31 - %shr185 = lshr i32 %xor176, %and184 - %or187189 = or i32 %shl179, %shr185 + %or187189 = tail call i32 @llvm.fshl.i32(i32 %xor176, i32 %xor176, i32 %28) %shr189 = lshr i32 %or187189, 8 %and190 = and i32 %shr189, 255 %idxprom191 = zext nneg i32 %and190 to i64 @@ -180,11 +160,7 @@ entry: %sub221 = sub i32 %34, %xor214191 %arrayidx223 = getelementptr inbounds i32, ptr %key, i64 11 %35 = load i32, ptr %arrayidx223, align 4 - %shl224 = shl i32 %sub221, %35 - %sub228 = sub i32 0, %35 - %and229 = and i32 %sub228, 31 - %shr230 = lshr i32 %sub221, %and229 - %or232192 = or i32 %shl224, %shr230 + %or232192 = tail call i32 @llvm.fshl.i32(i32 %sub221, i32 %sub221, i32 %35) %shr234 = lshr i32 %or232192, 8 %and235 = and i32 %shr234, 255 %idxprom236 = zext nneg i32 %and235 to i64 @@ -212,11 +188,7 @@ entry: %add266 = add i32 %xor259194, %40 %arrayidx268 = getelementptr inbounds i32, ptr %key, i64 13 %41 = load i32, ptr %arrayidx268, align 4 - %shl269 = shl i32 %add266, %41 - %sub273 = sub i32 0, %41 - %and274 = and i32 %sub273, 31 - %shr275 = lshr i32 %add266, %and274 - %or277195 = or i32 %shl269, %shr275 + %or277195 = tail call i32 @llvm.fshl.i32(i32 %add266, i32 %add266, i32 %41) %shr279 = lshr i32 %or277195, 8 %and280 = and i32 %shr279, 255 %idxprom281 = zext nneg i32 %and280 to i64 @@ -244,11 +216,7 @@ entry: %xor311 = xor i32 %xor304196, %46 %arrayidx313 = getelementptr inbounds i32, ptr %key, i64 15 %47 = load i32, ptr %arrayidx313, align 4 - %shl314 = shl i32 %xor311, %47 - %sub318 = sub i32 0, %47 - %and319 = and i32 %sub318, 31 - %shr320 = lshr i32 %xor311, %and319 - %or322197 = or i32 %shl314, %shr320 + %or322197 = tail call i32 @llvm.fshl.i32(i32 %xor311, i32 %xor311, i32 %47) %shr324 = lshr i32 %or322197, 8 %and325 = and i32 %shr324, 255 %idxprom326 = zext nneg i32 %and325 to i64 @@ -276,11 +244,7 @@ entry: %sub356 = sub i32 %53, %xor349199 %arrayidx358 = getelementptr inbounds i32, ptr %key, i64 17 %54 = load i32, ptr %arrayidx358, align 4 - %shl359 = shl i32 %sub356, %54 - %sub363 = sub i32 0, %54 - %and364 = and i32 %sub363, 31 - %shr365 = lshr i32 %sub356, %and364 - %or367200 = or i32 %shl359, %shr365 + %or367200 = tail call i32 @llvm.fshl.i32(i32 %sub356, i32 %sub356, i32 %54) %shr369 = lshr i32 %or367200, 8 %and370 = and i32 %shr369, 255 %idxprom371 = zext nneg i32 %and370 to i64 @@ -308,11 +272,7 @@ entry: %add401 = add i32 %xor394202, %59 %arrayidx403 = getelementptr inbounds i32, ptr %key, i64 19 %60 = load i32, ptr %arrayidx403, align 4 - %shl404 = shl i32 %add401, %60 - %sub408 = sub i32 0, %60 - %and409 = and i32 %sub408, 31 - %shr410 = lshr i32 %add401, %and409 - %or412203 = or i32 %shl404, %shr410 + %or412203 = tail call i32 @llvm.fshl.i32(i32 %add401, i32 %add401, i32 %60) %shr414 = lshr i32 %or412203, 8 %and415 = and i32 %shr414, 255 %idxprom416 = zext nneg i32 %and415 to i64 @@ -340,11 +300,7 @@ entry: %xor446 = xor i32 %xor439204, %65 %arrayidx448 = getelementptr inbounds i32, ptr %key, i64 21 %66 = load i32, ptr %arrayidx448, align 4 - %shl449 = shl i32 %xor446, %66 - %sub453 = sub i32 0, %66 - %and454 = and i32 %sub453, 31 - %shr455 = lshr i32 %xor446, %and454 - %or457205 = or i32 %shl449, %shr455 + %or457205 = tail call i32 @llvm.fshl.i32(i32 %xor446, i32 %xor446, i32 %66) %shr459 = lshr i32 %or457205, 8 %and460 = and i32 %shr459, 255 %idxprom461 = zext nneg i32 %and460 to i64 @@ -372,11 +328,7 @@ entry: %sub491 = sub i32 %72, %xor484207 %arrayidx493 = getelementptr inbounds i32, ptr %key, i64 23 %73 = load i32, ptr %arrayidx493, align 4 - %shl494 = shl i32 %sub491, %73 - %sub498 = sub i32 0, %73 - %and499 = and i32 %sub498, 31 - %shr500 = lshr i32 %sub491, %and499 - %or502208 = or i32 %shl494, %shr500 + %or502208 = tail call i32 @llvm.fshl.i32(i32 %sub491, i32 %sub491, i32 %73) %shr504 = lshr i32 %or502208, 8 %and505 = and i32 %shr504, 255 %idxprom506 = zext nneg i32 %and505 to i64 @@ -410,11 +362,7 @@ if.then: ; preds = %entry %add536 = add i32 %79, %xor529210 %arrayidx538 = getelementptr inbounds i32, ptr %key, i64 25 %80 = load i32, ptr %arrayidx538, align 4 - %shl539 = shl i32 %add536, %80 - %sub543 = sub i32 0, %80 - %and544 = and i32 %sub543, 31 - %shr545 = lshr i32 %add536, %and544 - %or547211 = or i32 %shr545, %shl539 + %or547211 = tail call i32 @llvm.fshl.i32(i32 %add536, i32 %add536, i32 %80) %shr549 = lshr i32 %or547211, 8 %and550 = and i32 %shr549, 255 %idxprom551 = zext nneg i32 %and550 to i64 @@ -442,11 +390,7 @@ if.then: ; preds = %entry %xor581 = xor i32 %xor574212, %85 %arrayidx583 = getelementptr inbounds i32, ptr %key, i64 27 %86 = load i32, ptr %arrayidx583, align 4 - %shl584 = shl i32 %xor581, %86 - %sub588 = sub i32 0, %86 - %and589 = and i32 %sub588, 31 - %shr590 = lshr i32 %xor581, %and589 - %or592213 = or i32 %shl584, %shr590 + %or592213 = tail call i32 @llvm.fshl.i32(i32 %xor581, i32 %xor581, i32 %86) %shr594 = lshr i32 %or592213, 8 %and595 = and i32 %shr594, 255 %idxprom596 = zext nneg i32 %and595 to i64 @@ -474,11 +418,7 @@ if.then: ; preds = %entry %sub626 = sub i32 %92, %xor619215 %arrayidx628 = getelementptr inbounds i32, ptr %key, i64 29 %93 = load i32, ptr %arrayidx628, align 4 - %shl629 = shl i32 %sub626, %93 - %sub633 = sub i32 0, %93 - %and634 = and i32 %sub633, 31 - %shr635 = lshr i32 %sub626, %and634 - %or637216 = or i32 %shl629, %shr635 + %or637216 = tail call i32 @llvm.fshl.i32(i32 %sub626, i32 %sub626, i32 %93) %shr639 = lshr i32 %or637216, 8 %and640 = and i32 %shr639, 255 %idxprom641 = zext nneg i32 %and640 to i64 @@ -506,11 +446,7 @@ if.then: ; preds = %entry %add671 = add i32 %xor664218, %98 %arrayidx673 = getelementptr inbounds i32, ptr %key, i64 31 %99 = load i32, ptr %arrayidx673, align 4 - %shl674 = shl i32 %add671, %99 - %sub678 = sub i32 0, %99 - %and679 = and i32 %sub678, 31 - %shr680 = lshr i32 %add671, %and679 - %or682219 = or i32 %shl674, %shr680 + %or682219 = tail call i32 @llvm.fshl.i32(i32 %add671, i32 %add671, i32 %99) %shr684 = lshr i32 %or682219, 8 %and685 = and i32 %shr684, 255 %idxprom686 = zext nneg i32 %and685 to i64 @@ -560,11 +496,7 @@ if.then: ; preds = %entry %add = add i32 %3, %1 %arrayidx5 = getelementptr inbounds i32, ptr %key, i64 31 %4 = load i32, ptr %arrayidx5, align 4 - %shl = shl i32 %add, %4 - %sub = sub i32 0, %4 - %and8 = and i32 %sub, 31 - %shr = lshr i32 %add, %and8 - %or179 = or i32 %shr, %shl + %or179 = tail call i32 @llvm.fshl.i32(i32 %add, i32 %add, i32 %4) %shr11 = lshr i32 %or179, 8 %and12 = and i32 %shr11, 255 %idxprom = zext nneg i32 %and12 to i64 @@ -592,11 +524,7 @@ if.then: ; preds = %entry %sub41 = sub i32 %9, %xor34180 %arrayidx43 = getelementptr inbounds i32, ptr %key, i64 29 %10 = load i32, ptr %arrayidx43, align 4 - %shl44 = shl i32 %sub41, %10 - %sub48 = sub i32 0, %10 - %and49 = and i32 %sub48, 31 - %shr50 = lshr i32 %sub41, %and49 - %or52181 = or i32 %shl44, %shr50 + %or52181 = tail call i32 @llvm.fshl.i32(i32 %sub41, i32 %sub41, i32 %10) %shr54 = lshr i32 %or52181, 8 %and55 = and i32 %shr54, 255 %idxprom56 = zext nneg i32 %and55 to i64 @@ -624,11 +552,7 @@ if.then: ; preds = %entry %xor86 = xor i32 %xor79183, %15 %arrayidx88 = getelementptr inbounds i32, ptr %key, i64 27 %16 = load i32, ptr %arrayidx88, align 4 - %shl89 = shl i32 %xor86, %16 - %sub93 = sub i32 0, %16 - %and94 = and i32 %sub93, 31 - %shr95 = lshr i32 %xor86, %and94 - %or97184 = or i32 %shl89, %shr95 + %or97184 = tail call i32 @llvm.fshl.i32(i32 %xor86, i32 %xor86, i32 %16) %shr99 = lshr i32 %or97184, 8 %and100 = and i32 %shr99, 255 %idxprom101 = zext nneg i32 %and100 to i64 @@ -656,11 +580,7 @@ if.then: ; preds = %entry %add131 = add i32 %xor124186, %22 %arrayidx133 = getelementptr inbounds i32, ptr %key, i64 25 %23 = load i32, ptr %arrayidx133, align 4 - %shl134 = shl i32 %add131, %23 - %sub138 = sub i32 0, %23 - %and139 = and i32 %sub138, 31 - %shr140 = lshr i32 %add131, %and139 - %or142187 = or i32 %shl134, %shr140 + %or142187 = tail call i32 @llvm.fshl.i32(i32 %add131, i32 %add131, i32 %23) %shr144 = lshr i32 %or142187, 8 %and145 = and i32 %shr144, 255 %idxprom146 = zext nneg i32 %and145 to i64 @@ -693,11 +613,7 @@ if.end: ; preds = %if.then, %entry %sub176 = sub i32 %28, %r.0 %arrayidx178 = getelementptr inbounds i32, ptr %key, i64 23 %29 = load i32, ptr %arrayidx178, align 4 - %shl179 = shl i32 %sub176, %29 - %sub183 = sub i32 0, %29 - %and184 = and i32 %sub183, 31 - %shr185 = lshr i32 %sub176, %and184 - %or187189 = or i32 %shr185, %shl179 + %or187189 = tail call i32 @llvm.fshl.i32(i32 %sub176, i32 %sub176, i32 %29) %shr189 = lshr i32 %or187189, 8 %and190 = and i32 %shr189, 255 %idxprom191 = zext nneg i32 %and190 to i64 @@ -725,11 +641,7 @@ if.end: ; preds = %if.then, %entry %xor221 = xor i32 %xor214191, %34 %arrayidx223 = getelementptr inbounds i32, ptr %key, i64 21 %35 = load i32, ptr %arrayidx223, align 4 - %shl224 = shl i32 %xor221, %35 - %sub228 = sub i32 0, %35 - %and229 = and i32 %sub228, 31 - %shr230 = lshr i32 %xor221, %and229 - %or232192 = or i32 %shl224, %shr230 + %or232192 = tail call i32 @llvm.fshl.i32(i32 %xor221, i32 %xor221, i32 %35) %shr234 = lshr i32 %or232192, 8 %and235 = and i32 %shr234, 255 %idxprom236 = zext nneg i32 %and235 to i64 @@ -757,11 +669,7 @@ if.end: ; preds = %if.then, %entry %add266 = add i32 %xor259194, %41 %arrayidx268 = getelementptr inbounds i32, ptr %key, i64 19 %42 = load i32, ptr %arrayidx268, align 4 - %shl269 = shl i32 %add266, %42 - %sub273 = sub i32 0, %42 - %and274 = and i32 %sub273, 31 - %shr275 = lshr i32 %add266, %and274 - %or277195 = or i32 %shl269, %shr275 + %or277195 = tail call i32 @llvm.fshl.i32(i32 %add266, i32 %add266, i32 %42) %shr279 = lshr i32 %or277195, 8 %and280 = and i32 %shr279, 255 %idxprom281 = zext nneg i32 %and280 to i64 @@ -789,11 +697,7 @@ if.end: ; preds = %if.then, %entry %sub311 = sub i32 %47, %xor304196 %arrayidx313 = getelementptr inbounds i32, ptr %key, i64 17 %48 = load i32, ptr %arrayidx313, align 4 - %shl314 = shl i32 %sub311, %48 - %sub318 = sub i32 0, %48 - %and319 = and i32 %sub318, 31 - %shr320 = lshr i32 %sub311, %and319 - %or322197 = or i32 %shl314, %shr320 + %or322197 = tail call i32 @llvm.fshl.i32(i32 %sub311, i32 %sub311, i32 %48) %shr324 = lshr i32 %or322197, 8 %and325 = and i32 %shr324, 255 %idxprom326 = zext nneg i32 %and325 to i64 @@ -821,11 +725,7 @@ if.end: ; preds = %if.then, %entry %xor356 = xor i32 %xor349199, %53 %arrayidx358 = getelementptr inbounds i32, ptr %key, i64 15 %54 = load i32, ptr %arrayidx358, align 4 - %shl359 = shl i32 %xor356, %54 - %sub363 = sub i32 0, %54 - %and364 = and i32 %sub363, 31 - %shr365 = lshr i32 %xor356, %and364 - %or367200 = or i32 %shl359, %shr365 + %or367200 = tail call i32 @llvm.fshl.i32(i32 %xor356, i32 %xor356, i32 %54) %shr369 = lshr i32 %or367200, 8 %and370 = and i32 %shr369, 255 %idxprom371 = zext nneg i32 %and370 to i64 @@ -853,11 +753,7 @@ if.end: ; preds = %if.then, %entry %add401 = add i32 %xor394202, %60 %arrayidx403 = getelementptr inbounds i32, ptr %key, i64 13 %61 = load i32, ptr %arrayidx403, align 4 - %shl404 = shl i32 %add401, %61 - %sub408 = sub i32 0, %61 - %and409 = and i32 %sub408, 31 - %shr410 = lshr i32 %add401, %and409 - %or412203 = or i32 %shl404, %shr410 + %or412203 = tail call i32 @llvm.fshl.i32(i32 %add401, i32 %add401, i32 %61) %shr414 = lshr i32 %or412203, 8 %and415 = and i32 %shr414, 255 %idxprom416 = zext nneg i32 %and415 to i64 @@ -885,11 +781,7 @@ if.end: ; preds = %if.then, %entry %sub446 = sub i32 %66, %xor439204 %arrayidx448 = getelementptr inbounds i32, ptr %key, i64 11 %67 = load i32, ptr %arrayidx448, align 4 - %shl449 = shl i32 %sub446, %67 - %sub453 = sub i32 0, %67 - %and454 = and i32 %sub453, 31 - %shr455 = lshr i32 %sub446, %and454 - %or457205 = or i32 %shl449, %shr455 + %or457205 = tail call i32 @llvm.fshl.i32(i32 %sub446, i32 %sub446, i32 %67) %shr459 = lshr i32 %or457205, 8 %and460 = and i32 %shr459, 255 %idxprom461 = zext nneg i32 %and460 to i64 @@ -917,11 +809,7 @@ if.end: ; preds = %if.then, %entry %xor491 = xor i32 %xor484207, %72 %arrayidx493 = getelementptr inbounds i32, ptr %key, i64 9 %73 = load i32, ptr %arrayidx493, align 4 - %shl494 = shl i32 %xor491, %73 - %sub498 = sub i32 0, %73 - %and499 = and i32 %sub498, 31 - %shr500 = lshr i32 %xor491, %and499 - %or502208 = or i32 %shl494, %shr500 + %or502208 = tail call i32 @llvm.fshl.i32(i32 %xor491, i32 %xor491, i32 %73) %shr504 = lshr i32 %or502208, 8 %and505 = and i32 %shr504, 255 %idxprom506 = zext nneg i32 %and505 to i64 @@ -949,11 +837,7 @@ if.end: ; preds = %if.then, %entry %add536 = add i32 %xor529210, %79 %arrayidx538 = getelementptr inbounds i32, ptr %key, i64 7 %80 = load i32, ptr %arrayidx538, align 4 - %shl539 = shl i32 %add536, %80 - %sub543 = sub i32 0, %80 - %and544 = and i32 %sub543, 31 - %shr545 = lshr i32 %add536, %and544 - %or547211 = or i32 %shl539, %shr545 + %or547211 = tail call i32 @llvm.fshl.i32(i32 %add536, i32 %add536, i32 %80) %shr549 = lshr i32 %or547211, 8 %and550 = and i32 %shr549, 255 %idxprom551 = zext nneg i32 %and550 to i64 @@ -981,11 +865,7 @@ if.end: ; preds = %if.then, %entry %sub581 = sub i32 %85, %xor574212 %arrayidx583 = getelementptr inbounds i32, ptr %key, i64 5 %86 = load i32, ptr %arrayidx583, align 4 - %shl584 = shl i32 %sub581, %86 - %sub588 = sub i32 0, %86 - %and589 = and i32 %sub588, 31 - %shr590 = lshr i32 %sub581, %and589 - %or592213 = or i32 %shl584, %shr590 + %or592213 = tail call i32 @llvm.fshl.i32(i32 %sub581, i32 %sub581, i32 %86) %shr594 = lshr i32 %or592213, 8 %and595 = and i32 %shr594, 255 %idxprom596 = zext nneg i32 %and595 to i64 @@ -1013,11 +893,7 @@ if.end: ; preds = %if.then, %entry %xor626 = xor i32 %xor619215, %91 %arrayidx628 = getelementptr inbounds i32, ptr %key, i64 3 %92 = load i32, ptr %arrayidx628, align 4 - %shl629 = shl i32 %xor626, %92 - %sub633 = sub i32 0, %92 - %and634 = and i32 %sub633, 31 - %shr635 = lshr i32 %xor626, %and634 - %or637216 = or i32 %shl629, %shr635 + %or637216 = tail call i32 @llvm.fshl.i32(i32 %xor626, i32 %xor626, i32 %92) %shr639 = lshr i32 %or637216, 8 %and640 = and i32 %shr639, 255 %idxprom641 = zext nneg i32 %and640 to i64 @@ -1044,11 +920,7 @@ if.end: ; preds = %if.then, %entry %add671 = add i32 %xor664218, %98 %arrayidx673 = getelementptr inbounds i32, ptr %key, i64 1 %99 = load i32, ptr %arrayidx673, align 4 - %shl674 = shl i32 %add671, %99 - %sub678 = sub i32 0, %99 - %and679 = and i32 %sub678, 31 - %shr680 = lshr i32 %add671, %and679 - %or682219 = or i32 %shl674, %shr680 + %or682219 = tail call i32 @llvm.fshl.i32(i32 %add671, i32 %add671, i32 %99) %shr684 = lshr i32 %or682219, 8 %and685 = and i32 %shr684, 255 %idxprom686 = zext nneg i32 %and685 to i64 @@ -1615,8 +1487,12 @@ if.end491: ; preds = %if.end460, %if.end ret void } +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.fshl.i32(i32, i32, i32) #2 + attributes #0 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #2 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/openssl/optimized/libcrypto-shlib-c_enc.ll b/bench/openssl/optimized/libcrypto-shlib-c_enc.ll index 27179e2bee3..d7bc4697cd7 100644 --- a/bench/openssl/optimized/libcrypto-shlib-c_enc.ll +++ b/bench/openssl/optimized/libcrypto-shlib-c_enc.ll @@ -20,11 +20,7 @@ entry: %add = add i32 %2, %1 %arrayidx5 = getelementptr inbounds i32, ptr %key, i64 1 %3 = load i32, ptr %arrayidx5, align 4 - %shl = shl i32 %add, %3 - %sub = sub i32 0, %3 - %and8 = and i32 %sub, 31 - %shr = lshr i32 %add, %and8 - %or179 = or i32 %shr, %shl + %or179 = tail call i32 @llvm.fshl.i32(i32 %add, i32 %add, i32 %3) %shr11 = lshr i32 %or179, 8 %and12 = and i32 %shr11, 255 %idxprom = zext nneg i32 %and12 to i64 @@ -52,11 +48,7 @@ entry: %xor41 = xor i32 %xor34180, %8 %arrayidx43 = getelementptr inbounds i32, ptr %key, i64 3 %9 = load i32, ptr %arrayidx43, align 4 - %shl44 = shl i32 %xor41, %9 - %sub48 = sub i32 0, %9 - %and49 = and i32 %sub48, 31 - %shr50 = lshr i32 %xor41, %and49 - %or52181 = or i32 %shl44, %shr50 + %or52181 = tail call i32 @llvm.fshl.i32(i32 %xor41, i32 %xor41, i32 %9) %shr54 = lshr i32 %or52181, 8 %and55 = and i32 %shr54, 255 %idxprom56 = zext nneg i32 %and55 to i64 @@ -84,11 +76,7 @@ entry: %sub86 = sub i32 %15, %xor79183 %arrayidx88 = getelementptr inbounds i32, ptr %key, i64 5 %16 = load i32, ptr %arrayidx88, align 4 - %shl89 = shl i32 %sub86, %16 - %sub93 = sub i32 0, %16 - %and94 = and i32 %sub93, 31 - %shr95 = lshr i32 %sub86, %and94 - %or97184 = or i32 %shl89, %shr95 + %or97184 = tail call i32 @llvm.fshl.i32(i32 %sub86, i32 %sub86, i32 %16) %shr99 = lshr i32 %or97184, 8 %and100 = and i32 %shr99, 255 %idxprom101 = zext nneg i32 %and100 to i64 @@ -116,11 +104,7 @@ entry: %add131 = add i32 %xor124186, %21 %arrayidx133 = getelementptr inbounds i32, ptr %key, i64 7 %22 = load i32, ptr %arrayidx133, align 4 - %shl134 = shl i32 %add131, %22 - %sub138 = sub i32 0, %22 - %and139 = and i32 %sub138, 31 - %shr140 = lshr i32 %add131, %and139 - %or142187 = or i32 %shl134, %shr140 + %or142187 = tail call i32 @llvm.fshl.i32(i32 %add131, i32 %add131, i32 %22) %shr144 = lshr i32 %or142187, 8 %and145 = and i32 %shr144, 255 %idxprom146 = zext nneg i32 %and145 to i64 @@ -148,11 +132,7 @@ entry: %xor176 = xor i32 %xor169188, %27 %arrayidx178 = getelementptr inbounds i32, ptr %key, i64 9 %28 = load i32, ptr %arrayidx178, align 4 - %shl179 = shl i32 %xor176, %28 - %sub183 = sub i32 0, %28 - %and184 = and i32 %sub183, 31 - %shr185 = lshr i32 %xor176, %and184 - %or187189 = or i32 %shl179, %shr185 + %or187189 = tail call i32 @llvm.fshl.i32(i32 %xor176, i32 %xor176, i32 %28) %shr189 = lshr i32 %or187189, 8 %and190 = and i32 %shr189, 255 %idxprom191 = zext nneg i32 %and190 to i64 @@ -180,11 +160,7 @@ entry: %sub221 = sub i32 %34, %xor214191 %arrayidx223 = getelementptr inbounds i32, ptr %key, i64 11 %35 = load i32, ptr %arrayidx223, align 4 - %shl224 = shl i32 %sub221, %35 - %sub228 = sub i32 0, %35 - %and229 = and i32 %sub228, 31 - %shr230 = lshr i32 %sub221, %and229 - %or232192 = or i32 %shl224, %shr230 + %or232192 = tail call i32 @llvm.fshl.i32(i32 %sub221, i32 %sub221, i32 %35) %shr234 = lshr i32 %or232192, 8 %and235 = and i32 %shr234, 255 %idxprom236 = zext nneg i32 %and235 to i64 @@ -212,11 +188,7 @@ entry: %add266 = add i32 %xor259194, %40 %arrayidx268 = getelementptr inbounds i32, ptr %key, i64 13 %41 = load i32, ptr %arrayidx268, align 4 - %shl269 = shl i32 %add266, %41 - %sub273 = sub i32 0, %41 - %and274 = and i32 %sub273, 31 - %shr275 = lshr i32 %add266, %and274 - %or277195 = or i32 %shl269, %shr275 + %or277195 = tail call i32 @llvm.fshl.i32(i32 %add266, i32 %add266, i32 %41) %shr279 = lshr i32 %or277195, 8 %and280 = and i32 %shr279, 255 %idxprom281 = zext nneg i32 %and280 to i64 @@ -244,11 +216,7 @@ entry: %xor311 = xor i32 %xor304196, %46 %arrayidx313 = getelementptr inbounds i32, ptr %key, i64 15 %47 = load i32, ptr %arrayidx313, align 4 - %shl314 = shl i32 %xor311, %47 - %sub318 = sub i32 0, %47 - %and319 = and i32 %sub318, 31 - %shr320 = lshr i32 %xor311, %and319 - %or322197 = or i32 %shl314, %shr320 + %or322197 = tail call i32 @llvm.fshl.i32(i32 %xor311, i32 %xor311, i32 %47) %shr324 = lshr i32 %or322197, 8 %and325 = and i32 %shr324, 255 %idxprom326 = zext nneg i32 %and325 to i64 @@ -276,11 +244,7 @@ entry: %sub356 = sub i32 %53, %xor349199 %arrayidx358 = getelementptr inbounds i32, ptr %key, i64 17 %54 = load i32, ptr %arrayidx358, align 4 - %shl359 = shl i32 %sub356, %54 - %sub363 = sub i32 0, %54 - %and364 = and i32 %sub363, 31 - %shr365 = lshr i32 %sub356, %and364 - %or367200 = or i32 %shl359, %shr365 + %or367200 = tail call i32 @llvm.fshl.i32(i32 %sub356, i32 %sub356, i32 %54) %shr369 = lshr i32 %or367200, 8 %and370 = and i32 %shr369, 255 %idxprom371 = zext nneg i32 %and370 to i64 @@ -308,11 +272,7 @@ entry: %add401 = add i32 %xor394202, %59 %arrayidx403 = getelementptr inbounds i32, ptr %key, i64 19 %60 = load i32, ptr %arrayidx403, align 4 - %shl404 = shl i32 %add401, %60 - %sub408 = sub i32 0, %60 - %and409 = and i32 %sub408, 31 - %shr410 = lshr i32 %add401, %and409 - %or412203 = or i32 %shl404, %shr410 + %or412203 = tail call i32 @llvm.fshl.i32(i32 %add401, i32 %add401, i32 %60) %shr414 = lshr i32 %or412203, 8 %and415 = and i32 %shr414, 255 %idxprom416 = zext nneg i32 %and415 to i64 @@ -340,11 +300,7 @@ entry: %xor446 = xor i32 %xor439204, %65 %arrayidx448 = getelementptr inbounds i32, ptr %key, i64 21 %66 = load i32, ptr %arrayidx448, align 4 - %shl449 = shl i32 %xor446, %66 - %sub453 = sub i32 0, %66 - %and454 = and i32 %sub453, 31 - %shr455 = lshr i32 %xor446, %and454 - %or457205 = or i32 %shl449, %shr455 + %or457205 = tail call i32 @llvm.fshl.i32(i32 %xor446, i32 %xor446, i32 %66) %shr459 = lshr i32 %or457205, 8 %and460 = and i32 %shr459, 255 %idxprom461 = zext nneg i32 %and460 to i64 @@ -372,11 +328,7 @@ entry: %sub491 = sub i32 %72, %xor484207 %arrayidx493 = getelementptr inbounds i32, ptr %key, i64 23 %73 = load i32, ptr %arrayidx493, align 4 - %shl494 = shl i32 %sub491, %73 - %sub498 = sub i32 0, %73 - %and499 = and i32 %sub498, 31 - %shr500 = lshr i32 %sub491, %and499 - %or502208 = or i32 %shl494, %shr500 + %or502208 = tail call i32 @llvm.fshl.i32(i32 %sub491, i32 %sub491, i32 %73) %shr504 = lshr i32 %or502208, 8 %and505 = and i32 %shr504, 255 %idxprom506 = zext nneg i32 %and505 to i64 @@ -410,11 +362,7 @@ if.then: ; preds = %entry %add536 = add i32 %79, %xor529210 %arrayidx538 = getelementptr inbounds i32, ptr %key, i64 25 %80 = load i32, ptr %arrayidx538, align 4 - %shl539 = shl i32 %add536, %80 - %sub543 = sub i32 0, %80 - %and544 = and i32 %sub543, 31 - %shr545 = lshr i32 %add536, %and544 - %or547211 = or i32 %shr545, %shl539 + %or547211 = tail call i32 @llvm.fshl.i32(i32 %add536, i32 %add536, i32 %80) %shr549 = lshr i32 %or547211, 8 %and550 = and i32 %shr549, 255 %idxprom551 = zext nneg i32 %and550 to i64 @@ -442,11 +390,7 @@ if.then: ; preds = %entry %xor581 = xor i32 %xor574212, %85 %arrayidx583 = getelementptr inbounds i32, ptr %key, i64 27 %86 = load i32, ptr %arrayidx583, align 4 - %shl584 = shl i32 %xor581, %86 - %sub588 = sub i32 0, %86 - %and589 = and i32 %sub588, 31 - %shr590 = lshr i32 %xor581, %and589 - %or592213 = or i32 %shl584, %shr590 + %or592213 = tail call i32 @llvm.fshl.i32(i32 %xor581, i32 %xor581, i32 %86) %shr594 = lshr i32 %or592213, 8 %and595 = and i32 %shr594, 255 %idxprom596 = zext nneg i32 %and595 to i64 @@ -474,11 +418,7 @@ if.then: ; preds = %entry %sub626 = sub i32 %92, %xor619215 %arrayidx628 = getelementptr inbounds i32, ptr %key, i64 29 %93 = load i32, ptr %arrayidx628, align 4 - %shl629 = shl i32 %sub626, %93 - %sub633 = sub i32 0, %93 - %and634 = and i32 %sub633, 31 - %shr635 = lshr i32 %sub626, %and634 - %or637216 = or i32 %shl629, %shr635 + %or637216 = tail call i32 @llvm.fshl.i32(i32 %sub626, i32 %sub626, i32 %93) %shr639 = lshr i32 %or637216, 8 %and640 = and i32 %shr639, 255 %idxprom641 = zext nneg i32 %and640 to i64 @@ -506,11 +446,7 @@ if.then: ; preds = %entry %add671 = add i32 %xor664218, %98 %arrayidx673 = getelementptr inbounds i32, ptr %key, i64 31 %99 = load i32, ptr %arrayidx673, align 4 - %shl674 = shl i32 %add671, %99 - %sub678 = sub i32 0, %99 - %and679 = and i32 %sub678, 31 - %shr680 = lshr i32 %add671, %and679 - %or682219 = or i32 %shl674, %shr680 + %or682219 = tail call i32 @llvm.fshl.i32(i32 %add671, i32 %add671, i32 %99) %shr684 = lshr i32 %or682219, 8 %and685 = and i32 %shr684, 255 %idxprom686 = zext nneg i32 %and685 to i64 @@ -560,11 +496,7 @@ if.then: ; preds = %entry %add = add i32 %3, %1 %arrayidx5 = getelementptr inbounds i32, ptr %key, i64 31 %4 = load i32, ptr %arrayidx5, align 4 - %shl = shl i32 %add, %4 - %sub = sub i32 0, %4 - %and8 = and i32 %sub, 31 - %shr = lshr i32 %add, %and8 - %or179 = or i32 %shr, %shl + %or179 = tail call i32 @llvm.fshl.i32(i32 %add, i32 %add, i32 %4) %shr11 = lshr i32 %or179, 8 %and12 = and i32 %shr11, 255 %idxprom = zext nneg i32 %and12 to i64 @@ -592,11 +524,7 @@ if.then: ; preds = %entry %sub41 = sub i32 %9, %xor34180 %arrayidx43 = getelementptr inbounds i32, ptr %key, i64 29 %10 = load i32, ptr %arrayidx43, align 4 - %shl44 = shl i32 %sub41, %10 - %sub48 = sub i32 0, %10 - %and49 = and i32 %sub48, 31 - %shr50 = lshr i32 %sub41, %and49 - %or52181 = or i32 %shl44, %shr50 + %or52181 = tail call i32 @llvm.fshl.i32(i32 %sub41, i32 %sub41, i32 %10) %shr54 = lshr i32 %or52181, 8 %and55 = and i32 %shr54, 255 %idxprom56 = zext nneg i32 %and55 to i64 @@ -624,11 +552,7 @@ if.then: ; preds = %entry %xor86 = xor i32 %xor79183, %15 %arrayidx88 = getelementptr inbounds i32, ptr %key, i64 27 %16 = load i32, ptr %arrayidx88, align 4 - %shl89 = shl i32 %xor86, %16 - %sub93 = sub i32 0, %16 - %and94 = and i32 %sub93, 31 - %shr95 = lshr i32 %xor86, %and94 - %or97184 = or i32 %shl89, %shr95 + %or97184 = tail call i32 @llvm.fshl.i32(i32 %xor86, i32 %xor86, i32 %16) %shr99 = lshr i32 %or97184, 8 %and100 = and i32 %shr99, 255 %idxprom101 = zext nneg i32 %and100 to i64 @@ -656,11 +580,7 @@ if.then: ; preds = %entry %add131 = add i32 %xor124186, %22 %arrayidx133 = getelementptr inbounds i32, ptr %key, i64 25 %23 = load i32, ptr %arrayidx133, align 4 - %shl134 = shl i32 %add131, %23 - %sub138 = sub i32 0, %23 - %and139 = and i32 %sub138, 31 - %shr140 = lshr i32 %add131, %and139 - %or142187 = or i32 %shl134, %shr140 + %or142187 = tail call i32 @llvm.fshl.i32(i32 %add131, i32 %add131, i32 %23) %shr144 = lshr i32 %or142187, 8 %and145 = and i32 %shr144, 255 %idxprom146 = zext nneg i32 %and145 to i64 @@ -693,11 +613,7 @@ if.end: ; preds = %if.then, %entry %sub176 = sub i32 %28, %r.0 %arrayidx178 = getelementptr inbounds i32, ptr %key, i64 23 %29 = load i32, ptr %arrayidx178, align 4 - %shl179 = shl i32 %sub176, %29 - %sub183 = sub i32 0, %29 - %and184 = and i32 %sub183, 31 - %shr185 = lshr i32 %sub176, %and184 - %or187189 = or i32 %shr185, %shl179 + %or187189 = tail call i32 @llvm.fshl.i32(i32 %sub176, i32 %sub176, i32 %29) %shr189 = lshr i32 %or187189, 8 %and190 = and i32 %shr189, 255 %idxprom191 = zext nneg i32 %and190 to i64 @@ -725,11 +641,7 @@ if.end: ; preds = %if.then, %entry %xor221 = xor i32 %xor214191, %34 %arrayidx223 = getelementptr inbounds i32, ptr %key, i64 21 %35 = load i32, ptr %arrayidx223, align 4 - %shl224 = shl i32 %xor221, %35 - %sub228 = sub i32 0, %35 - %and229 = and i32 %sub228, 31 - %shr230 = lshr i32 %xor221, %and229 - %or232192 = or i32 %shl224, %shr230 + %or232192 = tail call i32 @llvm.fshl.i32(i32 %xor221, i32 %xor221, i32 %35) %shr234 = lshr i32 %or232192, 8 %and235 = and i32 %shr234, 255 %idxprom236 = zext nneg i32 %and235 to i64 @@ -757,11 +669,7 @@ if.end: ; preds = %if.then, %entry %add266 = add i32 %xor259194, %41 %arrayidx268 = getelementptr inbounds i32, ptr %key, i64 19 %42 = load i32, ptr %arrayidx268, align 4 - %shl269 = shl i32 %add266, %42 - %sub273 = sub i32 0, %42 - %and274 = and i32 %sub273, 31 - %shr275 = lshr i32 %add266, %and274 - %or277195 = or i32 %shl269, %shr275 + %or277195 = tail call i32 @llvm.fshl.i32(i32 %add266, i32 %add266, i32 %42) %shr279 = lshr i32 %or277195, 8 %and280 = and i32 %shr279, 255 %idxprom281 = zext nneg i32 %and280 to i64 @@ -789,11 +697,7 @@ if.end: ; preds = %if.then, %entry %sub311 = sub i32 %47, %xor304196 %arrayidx313 = getelementptr inbounds i32, ptr %key, i64 17 %48 = load i32, ptr %arrayidx313, align 4 - %shl314 = shl i32 %sub311, %48 - %sub318 = sub i32 0, %48 - %and319 = and i32 %sub318, 31 - %shr320 = lshr i32 %sub311, %and319 - %or322197 = or i32 %shl314, %shr320 + %or322197 = tail call i32 @llvm.fshl.i32(i32 %sub311, i32 %sub311, i32 %48) %shr324 = lshr i32 %or322197, 8 %and325 = and i32 %shr324, 255 %idxprom326 = zext nneg i32 %and325 to i64 @@ -821,11 +725,7 @@ if.end: ; preds = %if.then, %entry %xor356 = xor i32 %xor349199, %53 %arrayidx358 = getelementptr inbounds i32, ptr %key, i64 15 %54 = load i32, ptr %arrayidx358, align 4 - %shl359 = shl i32 %xor356, %54 - %sub363 = sub i32 0, %54 - %and364 = and i32 %sub363, 31 - %shr365 = lshr i32 %xor356, %and364 - %or367200 = or i32 %shl359, %shr365 + %or367200 = tail call i32 @llvm.fshl.i32(i32 %xor356, i32 %xor356, i32 %54) %shr369 = lshr i32 %or367200, 8 %and370 = and i32 %shr369, 255 %idxprom371 = zext nneg i32 %and370 to i64 @@ -853,11 +753,7 @@ if.end: ; preds = %if.then, %entry %add401 = add i32 %xor394202, %60 %arrayidx403 = getelementptr inbounds i32, ptr %key, i64 13 %61 = load i32, ptr %arrayidx403, align 4 - %shl404 = shl i32 %add401, %61 - %sub408 = sub i32 0, %61 - %and409 = and i32 %sub408, 31 - %shr410 = lshr i32 %add401, %and409 - %or412203 = or i32 %shl404, %shr410 + %or412203 = tail call i32 @llvm.fshl.i32(i32 %add401, i32 %add401, i32 %61) %shr414 = lshr i32 %or412203, 8 %and415 = and i32 %shr414, 255 %idxprom416 = zext nneg i32 %and415 to i64 @@ -885,11 +781,7 @@ if.end: ; preds = %if.then, %entry %sub446 = sub i32 %66, %xor439204 %arrayidx448 = getelementptr inbounds i32, ptr %key, i64 11 %67 = load i32, ptr %arrayidx448, align 4 - %shl449 = shl i32 %sub446, %67 - %sub453 = sub i32 0, %67 - %and454 = and i32 %sub453, 31 - %shr455 = lshr i32 %sub446, %and454 - %or457205 = or i32 %shl449, %shr455 + %or457205 = tail call i32 @llvm.fshl.i32(i32 %sub446, i32 %sub446, i32 %67) %shr459 = lshr i32 %or457205, 8 %and460 = and i32 %shr459, 255 %idxprom461 = zext nneg i32 %and460 to i64 @@ -917,11 +809,7 @@ if.end: ; preds = %if.then, %entry %xor491 = xor i32 %xor484207, %72 %arrayidx493 = getelementptr inbounds i32, ptr %key, i64 9 %73 = load i32, ptr %arrayidx493, align 4 - %shl494 = shl i32 %xor491, %73 - %sub498 = sub i32 0, %73 - %and499 = and i32 %sub498, 31 - %shr500 = lshr i32 %xor491, %and499 - %or502208 = or i32 %shl494, %shr500 + %or502208 = tail call i32 @llvm.fshl.i32(i32 %xor491, i32 %xor491, i32 %73) %shr504 = lshr i32 %or502208, 8 %and505 = and i32 %shr504, 255 %idxprom506 = zext nneg i32 %and505 to i64 @@ -949,11 +837,7 @@ if.end: ; preds = %if.then, %entry %add536 = add i32 %xor529210, %79 %arrayidx538 = getelementptr inbounds i32, ptr %key, i64 7 %80 = load i32, ptr %arrayidx538, align 4 - %shl539 = shl i32 %add536, %80 - %sub543 = sub i32 0, %80 - %and544 = and i32 %sub543, 31 - %shr545 = lshr i32 %add536, %and544 - %or547211 = or i32 %shl539, %shr545 + %or547211 = tail call i32 @llvm.fshl.i32(i32 %add536, i32 %add536, i32 %80) %shr549 = lshr i32 %or547211, 8 %and550 = and i32 %shr549, 255 %idxprom551 = zext nneg i32 %and550 to i64 @@ -981,11 +865,7 @@ if.end: ; preds = %if.then, %entry %sub581 = sub i32 %85, %xor574212 %arrayidx583 = getelementptr inbounds i32, ptr %key, i64 5 %86 = load i32, ptr %arrayidx583, align 4 - %shl584 = shl i32 %sub581, %86 - %sub588 = sub i32 0, %86 - %and589 = and i32 %sub588, 31 - %shr590 = lshr i32 %sub581, %and589 - %or592213 = or i32 %shl584, %shr590 + %or592213 = tail call i32 @llvm.fshl.i32(i32 %sub581, i32 %sub581, i32 %86) %shr594 = lshr i32 %or592213, 8 %and595 = and i32 %shr594, 255 %idxprom596 = zext nneg i32 %and595 to i64 @@ -1013,11 +893,7 @@ if.end: ; preds = %if.then, %entry %xor626 = xor i32 %xor619215, %91 %arrayidx628 = getelementptr inbounds i32, ptr %key, i64 3 %92 = load i32, ptr %arrayidx628, align 4 - %shl629 = shl i32 %xor626, %92 - %sub633 = sub i32 0, %92 - %and634 = and i32 %sub633, 31 - %shr635 = lshr i32 %xor626, %and634 - %or637216 = or i32 %shl629, %shr635 + %or637216 = tail call i32 @llvm.fshl.i32(i32 %xor626, i32 %xor626, i32 %92) %shr639 = lshr i32 %or637216, 8 %and640 = and i32 %shr639, 255 %idxprom641 = zext nneg i32 %and640 to i64 @@ -1044,11 +920,7 @@ if.end: ; preds = %if.then, %entry %add671 = add i32 %xor664218, %98 %arrayidx673 = getelementptr inbounds i32, ptr %key, i64 1 %99 = load i32, ptr %arrayidx673, align 4 - %shl674 = shl i32 %add671, %99 - %sub678 = sub i32 0, %99 - %and679 = and i32 %sub678, 31 - %shr680 = lshr i32 %add671, %and679 - %or682219 = or i32 %shl674, %shr680 + %or682219 = tail call i32 @llvm.fshl.i32(i32 %add671, i32 %add671, i32 %99) %shr684 = lshr i32 %or682219, 8 %and685 = and i32 %shr684, 255 %idxprom686 = zext nneg i32 %and685 to i64 @@ -1615,8 +1487,12 @@ if.end491: ; preds = %if.end460, %if.end ret void } +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.fshl.i32(i32, i32, i32) #2 + attributes #0 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #2 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/pbrt-v4/optimized/aggregate.cpp.ll b/bench/pbrt-v4/optimized/aggregate.cpp.ll index 365f983b8ff..730cae2501b 100644 --- a/bench/pbrt-v4/optimized/aggregate.cpp.ll +++ b/bench/pbrt-v4/optimized/aggregate.cpp.ll @@ -10721,83 +10721,83 @@ declare noundef zeroext i1 @_ZNK4pbrt9Primitive10IntersectPERKNS_3RayEf(ptr noun ; Function Attrs: mustprogress uwtable define internal void @"_ZNSt17_Function_handlerIFvlEZNK4pbrt12CPUAggregate17IntersectShadowTrEiPNS1_9WorkQueueINS1_17ShadowRayWorkItemEEEPNS1_3SOAINS1_16PixelSampleStateEEEE3$_0E9_M_invokeERKSt9_Any_dataOl"(ptr nocapture noundef nonnull readonly align 8 dereferenceable(16) %__functor, ptr nocapture noundef nonnull readonly align 8 dereferenceable(8) %__args) #9 align 2 personality ptr @__gxx_personality_v0 { entry: - %ret.i195.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %ret.i172.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %ret.i154.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %ret.i140.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %ret.i128.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %ret.i81.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %ret.i60.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %ret.i194.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %ret.i171.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %ret.i153.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %ret.i139.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %ret.i127.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %ret.i80.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %ret.i59.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 %ret.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %retval.i173.i.i786.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %retval.i.i160.i.i787.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %retval.i85.i.i788.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %retval.i.i72.i.i789.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %retval.i.i.i790.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %retval.i.i.i.i791.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %retval.i.i792.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %iter.i.i793.i.i.i.i.i.i.i = alloca %"class.pbrt::DDAMajorantIterator", align 8 - %agg.tmp7.i.i794.i.i.i.i.i.i.i = alloca %"class.pbrt::Ray", align 8 - %T_maj.i.i795.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %seg.i.i796.i.i.i.i.i.i.i = alloca %"class.pstd::optional.223", align 4 - %ref.tmp22.i.i797.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %ref.tmp23.i.i798.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %ref.tmp57.i.i799.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %ref.tmp58.i.i800.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %mp.i.i801.i.i.i.i.i.i.i = alloca %"struct.pbrt::MediumProperties", align 8 - %agg.tmp85.i.i802.i.i.i.i.i.i.i = alloca %"struct.pbrt::MediumProperties", align 8 - %ref.tmp96.i.i803.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 4 - %ref.tmp108.i.i804.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %ref.tmp109.i.i805.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %agg.tmp21.i806.i.i.i.i.i.i.i = alloca %class.anon.221, align 8 - %retval.i173.i.i513.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %retval.i.i160.i.i514.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %retval.i85.i.i515.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %retval.i.i72.i.i516.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %retval.i.i.i517.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %retval.i.i.i.i518.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %retval.i.i519.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %iter.i.i520.i.i.i.i.i.i.i = alloca %"class.pbrt::HomogeneousMajorantIterator", align 4 - %agg.tmp7.i.i521.i.i.i.i.i.i.i = alloca %"class.pbrt::Ray", align 8 - %T_maj.i.i522.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %ref.tmp22.i.i523.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %ref.tmp23.i.i524.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %ref.tmp57.i.i525.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %ref.tmp58.i.i526.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %mp.i.i527.i.i.i.i.i.i.i = alloca %"struct.pbrt::MediumProperties", align 8 - %agg.tmp85.i.i528.i.i.i.i.i.i.i = alloca %"struct.pbrt::MediumProperties", align 8 - %ref.tmp96.i.i529.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 4 - %ref.tmp108.i.i530.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %ref.tmp109.i.i531.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %agg.tmp21.i532.i.i.i.i.i.i.i = alloca %class.anon.221, align 8 + %retval.i170.i.i774.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %retval.i.i157.i.i775.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %retval.i82.i.i776.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %retval.i.i69.i.i777.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %retval.i.i.i778.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %retval.i.i.i.i779.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %retval.i.i780.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %iter.i.i781.i.i.i.i.i.i.i = alloca %"class.pbrt::DDAMajorantIterator", align 8 + %agg.tmp7.i.i782.i.i.i.i.i.i.i = alloca %"class.pbrt::Ray", align 8 + %T_maj.i.i783.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %seg.i.i784.i.i.i.i.i.i.i = alloca %"class.pstd::optional.223", align 4 + %ref.tmp22.i.i785.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %ref.tmp23.i.i786.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %ref.tmp57.i.i787.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %ref.tmp58.i.i788.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %mp.i.i789.i.i.i.i.i.i.i = alloca %"struct.pbrt::MediumProperties", align 8 + %agg.tmp85.i.i790.i.i.i.i.i.i.i = alloca %"struct.pbrt::MediumProperties", align 8 + %ref.tmp96.i.i791.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 4 + %ref.tmp108.i.i792.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %ref.tmp109.i.i793.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %agg.tmp21.i794.i.i.i.i.i.i.i = alloca %class.anon.221, align 8 + %retval.i170.i.i505.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %retval.i.i157.i.i506.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %retval.i82.i.i507.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %retval.i.i69.i.i508.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %retval.i.i.i509.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %retval.i.i.i.i510.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %retval.i.i511.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %iter.i.i512.i.i.i.i.i.i.i = alloca %"class.pbrt::HomogeneousMajorantIterator", align 4 + %agg.tmp7.i.i513.i.i.i.i.i.i.i = alloca %"class.pbrt::Ray", align 8 + %T_maj.i.i514.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %ref.tmp22.i.i515.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %ref.tmp23.i.i516.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %ref.tmp57.i.i517.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %ref.tmp58.i.i518.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %mp.i.i519.i.i.i.i.i.i.i = alloca %"struct.pbrt::MediumProperties", align 8 + %agg.tmp85.i.i520.i.i.i.i.i.i.i = alloca %"struct.pbrt::MediumProperties", align 8 + %ref.tmp96.i.i521.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 4 + %ref.tmp108.i.i522.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %ref.tmp109.i.i523.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %agg.tmp21.i524.i.i.i.i.i.i.i = alloca %class.anon.221, align 8 %retval.i.i46.i.i.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 %convert.sroa.0.i.i.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledWavelengths", align 8 %ref.tmp8.i.i.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 %ref.tmp21.i.i.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %retval.i173.i.i236.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %retval.i.i160.i.i237.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %retval.i85.i.i238.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %retval.i.i72.i.i239.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %retval.i.i.i240.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %retval.i.i.i.i241.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %retval.i.i242.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %iter.i.i243.i.i.i.i.i.i.i = alloca %"class.pbrt::DDAMajorantIterator", align 8 - %agg.tmp7.i.i244.i.i.i.i.i.i.i = alloca %"class.pbrt::Ray", align 8 - %T_maj.i.i245.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %seg.i.i246.i.i.i.i.i.i.i = alloca %"class.pstd::optional.223", align 4 - %ref.tmp22.i.i247.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %ref.tmp23.i.i248.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %ref.tmp57.i.i249.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %ref.tmp58.i.i250.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %agg.tmp85.i.i251.i.i.i.i.i.i.i = alloca %"struct.pbrt::MediumProperties", align 8 - %ref.tmp96.i.i252.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 4 - %ref.tmp108.i.i253.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %ref.tmp109.i.i254.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %agg.tmp21.i255.i.i.i.i.i.i.i = alloca %class.anon.221, align 8 - %retval.i173.i.i10.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %retval.i.i160.i.i11.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %retval.i85.i.i12.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %retval.i.i72.i.i13.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %retval.i170.i.i232.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %retval.i.i157.i.i233.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %retval.i82.i.i234.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %retval.i.i69.i.i235.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %retval.i.i.i236.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %retval.i.i.i.i237.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %retval.i.i238.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %iter.i.i239.i.i.i.i.i.i.i = alloca %"class.pbrt::DDAMajorantIterator", align 8 + %agg.tmp7.i.i240.i.i.i.i.i.i.i = alloca %"class.pbrt::Ray", align 8 + %T_maj.i.i241.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %seg.i.i242.i.i.i.i.i.i.i = alloca %"class.pstd::optional.223", align 4 + %ref.tmp22.i.i243.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %ref.tmp23.i.i244.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %ref.tmp57.i.i245.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %ref.tmp58.i.i246.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %agg.tmp85.i.i247.i.i.i.i.i.i.i = alloca %"struct.pbrt::MediumProperties", align 8 + %ref.tmp96.i.i248.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 4 + %ref.tmp108.i.i249.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %ref.tmp109.i.i250.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %agg.tmp21.i251.i.i.i.i.i.i.i = alloca %class.anon.221, align 8 + %retval.i170.i.i10.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %retval.i.i157.i.i11.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %retval.i82.i.i12.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %retval.i.i69.i.i13.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 %retval.i.i.i14.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 %retval.i.i.i.i15.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 %retval.i.i16.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 @@ -10815,10 +10815,10 @@ entry: %ref.tmp108.i.i.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 %ref.tmp109.i.i23.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 %agg.tmp21.i24.i.i.i.i.i.i.i = alloca %class.anon.221, align 8 - %retval.i173.i.i.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %retval.i.i160.i.i.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %retval.i85.i.i.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 - %retval.i.i72.i.i.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %retval.i170.i.i.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %retval.i.i157.i.i.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %retval.i82.i.i.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 + %retval.i.i69.i.i.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 %retval.i.i.i.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 %retval.i.i.i.i.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 %retval.i.i.i.i.i.i.i.i.i = alloca %"class.pbrt::SampledSpectrum", align 8 @@ -11045,12 +11045,12 @@ while.cond.preheader.i.i.i.i: ; preds = %for.body.i.i25.i.i. %43 = fadd <2 x float> %42, %40 %mul3.i.i.i.i.i.i = fmul float %14, %20 %add6.i.i.i.i.i.i = fadd float %8, %mul3.i.i.i.i.i.i - %cmp.i341.i.i.i.i = fcmp une float %10, 0.000000e+00 - %cmp4.i343.i.i.i.i = fcmp une float %12, 0.000000e+00 - %or.cond.i344.i.i.i.i = select i1 %cmp.i341.i.i.i.i, i1 true, i1 %cmp4.i343.i.i.i.i - %cmp6.i345.i.i.i.i = fcmp une float %14, 0.000000e+00 - %or.cond346.i.i.i.i = select i1 %or.cond.i344.i.i.i.i, i1 true, i1 %cmp6.i345.i.i.i.i - br i1 %or.cond346.i.i.i.i, label %while.body.lr.ph.i.i.i.i, label %while.end.ithread-pre-split.i.i.i + %cmp.i340.i.i.i.i = fcmp une float %10, 0.000000e+00 + %cmp4.i342.i.i.i.i = fcmp une float %12, 0.000000e+00 + %or.cond.i343.i.i.i.i = select i1 %cmp.i340.i.i.i.i, i1 true, i1 %cmp4.i342.i.i.i.i + %cmp6.i344.i.i.i.i = fcmp une float %14, 0.000000e+00 + %or.cond345.i.i.i.i = select i1 %or.cond.i343.i.i.i.i, i1 true, i1 %cmp6.i344.i.i.i.i + br i1 %or.cond345.i.i.i.i, label %while.body.lr.ph.i.i.i.i, label %while.end.ithread-pre-split.i.i.i while.body.lr.ph.i.i.i.i: ; preds = %while.cond.preheader.i.i.i.i %ray.sroa.9.0.agg.tmp12.sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp12.i.i.i.i, i64 8 @@ -11075,74 +11075,74 @@ while.body.lr.ph.i.i.i.i: ; preds = %while.cond.preheade %agg.tmp.sroa.0.sroa.4.0.this.sroa_idx.i.i.i.i.i.i = getelementptr inbounds i8, ptr %si.i.i.i, i64 12 %agg.tmp.sroa.0.sroa.5.0.this.sroa_idx.i.i.i.i.i.i = getelementptr inbounds i8, ptr %si.i.i.i, i64 16 %agg.tmp.sroa.0.sroa.6.0.this.sroa_idx.i.i.i.i.i.i = getelementptr inbounds i8, ptr %si.i.i.i, i64 20 - %agg.tmp2751.sroa.8.0.agg.tmp21.i532.i.i.i.sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp21.i532.i.i.i.i.i.i.i, i64 8 - %agg.tmp2751.sroa.9.0.agg.tmp21.i532.i.i.i.sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp21.i532.i.i.i.i.i.i.i, i64 16 - %agg.tmp2751.sroa.10.0.agg.tmp21.i532.i.i.i.sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp21.i532.i.i.i.i.i.i.i, i64 24 - %agg.tmp.sroa.6.0.agg.tmp7.i.sroa_idx.i561.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp7.i.i521.i.i.i.i.i.i.i, i64 8 - %agg.tmp.sroa.8.0.agg.tmp7.i.sroa_idx.i562.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp7.i.i521.i.i.i.i.i.i.i, i64 12 - %agg.tmp.sroa.14.0.agg.tmp7.i.sroa_idx.i563.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp7.i.i521.i.i.i.i.i.i.i, i64 20 - %agg.tmp.sroa.18.0.agg.tmp7.i.sroa_idx.i564.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp7.i.i521.i.i.i.i.i.i.i, i64 24 - %medium.i.i.i565.i.i.i.i.i.i.i = getelementptr inbounds %"class.pbrt::Ray", ptr %agg.tmp7.i.i521.i.i.i.i.i.i.i, i64 0, i32 3 - %called.i.i.i572.i.i.i.i.i.i.i = getelementptr inbounds %"class.pbrt::HomogeneousMajorantIterator", ptr %iter.i.i520.i.i.i.i.i.i.i, i64 0, i32 1 - %seg.sroa.4.0.iter.sroa_idx.i.i573.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %iter.i.i520.i.i.i.i.i.i.i, i64 4 - %seg.sroa.7.0.iter.sroa_idx.i.i574.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %iter.i.i520.i.i.i.i.i.i.i, i64 8 - %seg.sroa.13.0.iter.sroa_idx.i.i575.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %iter.i.i520.i.i.i.i.i.i.i, i64 16 - %seg.sroa.13.8.retval.i.i72.sroa_idx.i.i577.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %retval.i.i72.i.i516.i.i.i.i.i.i.i, i64 8 - %44 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp58.i.i526.i.i.i.i.i.i.i, i64 0, i32 1 - %.fca.1.gep.i110.i.i578.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i85.i.i515.i.i.i.i.i.i.i, i64 0, i32 1 - %45 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp57.i.i525.i.i.i.i.i.i.i, i64 0, i32 1 - %phase.i.i.i579.i.i.i.i.i.i.i = getelementptr inbounds %"struct.pbrt::MediumProperties", ptr %agg.tmp85.i.i528.i.i.i.i.i.i.i, i64 0, i32 2 - %phase3.i.i.i580.i.i.i.i.i.i.i = getelementptr inbounds %"struct.pbrt::MediumProperties", ptr %mp.i.i527.i.i.i.i.i.i.i, i64 0, i32 2 - %Le.i.i.i581.i.i.i.i.i.i.i = getelementptr inbounds %"struct.pbrt::MediumProperties", ptr %agg.tmp85.i.i528.i.i.i.i.i.i.i, i64 0, i32 3 - %Le4.i.i.i582.i.i.i.i.i.i.i = getelementptr inbounds %"struct.pbrt::MediumProperties", ptr %mp.i.i527.i.i.i.i.i.i.i, i64 0, i32 3 - %agg.tmp91.sroa.2.0.T_maj.sroa_idx.i.i583.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %T_maj.i.i522.i.i.i.i.i.i.i, i64 8 - %seg.sroa.13.8.retval.i.i160.sroa_idx.i.i584.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %retval.i.i160.i.i514.i.i.i.i.i.i.i, i64 8 - %46 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp109.i.i531.i.i.i.i.i.i.i, i64 0, i32 1 - %.fca.1.gep.i198.i.i585.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i173.i.i513.i.i.i.i.i.i.i, i64 0, i32 1 - %47 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp108.i.i530.i.i.i.i.i.i.i, i64 0, i32 1 - %seg.sroa.13.8.retval.i.i.sroa_idx.i.i586.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %retval.i.i.i.i518.i.i.i.i.i.i.i, i64 8 - %48 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp23.i.i524.i.i.i.i.i.i.i, i64 0, i32 1 - %.fca.1.gep.i.i.i587.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i.i.i517.i.i.i.i.i.i.i, i64 0, i32 1 - %49 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp22.i.i523.i.i.i.i.i.i.i, i64 0, i32 1 - %.fca.1.gep.i.i592.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i.i519.i.i.i.i.i.i.i, i64 0, i32 1 - %agg.tmp2751.sroa.8.0.agg.tmp21.i255.i.i.i.sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp21.i255.i.i.i.i.i.i.i, i64 8 - %agg.tmp2751.sroa.9.0.agg.tmp21.i255.i.i.i.sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp21.i255.i.i.i.i.i.i.i, i64 16 - %agg.tmp2751.sroa.10.0.agg.tmp21.i255.i.i.i.sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp21.i255.i.i.i.i.i.i.i, i64 24 - %agg.tmp.sroa.6.0.agg.tmp7.i.sroa_idx.i284.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp7.i.i244.i.i.i.i.i.i.i, i64 8 - %agg.tmp.sroa.8.0.agg.tmp7.i.sroa_idx.i285.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp7.i.i244.i.i.i.i.i.i.i, i64 12 - %agg.tmp.sroa.14.0.agg.tmp7.i.sroa_idx.i286.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp7.i.i244.i.i.i.i.i.i.i, i64 20 - %agg.tmp.sroa.18.0.agg.tmp7.i.sroa_idx.i287.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp7.i.i244.i.i.i.i.i.i.i, i64 24 - %medium.i.i.i288.i.i.i.i.i.i.i = getelementptr inbounds %"class.pbrt::Ray", ptr %agg.tmp7.i.i244.i.i.i.i.i.i.i, i64 0, i32 3 - %set.i.i.i295.i.i.i.i.i.i.i = getelementptr inbounds %"class.pstd::optional.223", ptr %seg.i.i246.i.i.i.i.i.i.i, i64 0, i32 1 - %sigma_maj.i.i296.i.i.i.i.i.i.i = getelementptr inbounds %"struct.pbrt::RayMajorantSegment", ptr %seg.i.i246.i.i.i.i.i.i.i, i64 0, i32 2 - %tMax54.i.i298.i.i.i.i.i.i.i = getelementptr inbounds %"struct.pbrt::RayMajorantSegment", ptr %seg.i.i246.i.i.i.i.i.i.i, i64 0, i32 1 - %.fca.1.gep.i.i81.i.i299.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i.i72.i.i239.i.i.i.i.i.i.i, i64 0, i32 1 - %50 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp58.i.i250.i.i.i.i.i.i.i, i64 0, i32 1 - %.fca.1.gep.i110.i.i300.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i85.i.i238.i.i.i.i.i.i.i, i64 0, i32 1 - %51 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp57.i.i249.i.i.i.i.i.i.i, i64 0, i32 1 - %phase.i.i.i301.i.i.i.i.i.i.i = getelementptr inbounds %"struct.pbrt::MediumProperties", ptr %agg.tmp85.i.i251.i.i.i.i.i.i.i, i64 0, i32 2 - %Le.i.i.i302.i.i.i.i.i.i.i = getelementptr inbounds %"struct.pbrt::MediumProperties", ptr %agg.tmp85.i.i251.i.i.i.i.i.i.i, i64 0, i32 3 - %agg.tmp87.sroa.2.0.sigma_maj90.sroa_idx.i.i303.i.i.i.i.i.i.i = getelementptr inbounds %"struct.pbrt::RayMajorantSegment", ptr %seg.i.i246.i.i.i.i.i.i.i, i64 0, i32 2, i32 0, i32 0, i64 2 - %agg.tmp91.sroa.2.0.T_maj.sroa_idx.i.i304.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %T_maj.i.i245.i.i.i.i.i.i.i, i64 8 - %.fca.1.gep.i.i169.i.i305.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i.i160.i.i237.i.i.i.i.i.i.i, i64 0, i32 1 - %52 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp109.i.i254.i.i.i.i.i.i.i, i64 0, i32 1 - %.fca.1.gep.i198.i.i306.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i173.i.i236.i.i.i.i.i.i.i, i64 0, i32 1 - %53 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp108.i.i253.i.i.i.i.i.i.i, i64 0, i32 1 - %.fca.1.gep.i.i.i.i307.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i.i.i.i241.i.i.i.i.i.i.i, i64 0, i32 1 - %54 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp23.i.i248.i.i.i.i.i.i.i, i64 0, i32 1 - %.fca.1.gep.i.i.i308.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i.i.i240.i.i.i.i.i.i.i, i64 0, i32 1 - %55 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp22.i.i247.i.i.i.i.i.i.i, i64 0, i32 1 + %agg.tmp2750.sroa.8.0.agg.tmp21.i524.i.i.i.sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp21.i524.i.i.i.i.i.i.i, i64 8 + %agg.tmp2750.sroa.9.0.agg.tmp21.i524.i.i.i.sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp21.i524.i.i.i.i.i.i.i, i64 16 + %agg.tmp2750.sroa.10.0.agg.tmp21.i524.i.i.i.sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp21.i524.i.i.i.i.i.i.i, i64 24 + %agg.tmp.sroa.6.0.agg.tmp7.i.sroa_idx.i553.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp7.i.i513.i.i.i.i.i.i.i, i64 8 + %agg.tmp.sroa.8.0.agg.tmp7.i.sroa_idx.i554.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp7.i.i513.i.i.i.i.i.i.i, i64 12 + %agg.tmp.sroa.14.0.agg.tmp7.i.sroa_idx.i555.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp7.i.i513.i.i.i.i.i.i.i, i64 20 + %agg.tmp.sroa.18.0.agg.tmp7.i.sroa_idx.i556.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp7.i.i513.i.i.i.i.i.i.i, i64 24 + %medium.i.i.i557.i.i.i.i.i.i.i = getelementptr inbounds %"class.pbrt::Ray", ptr %agg.tmp7.i.i513.i.i.i.i.i.i.i, i64 0, i32 3 + %called.i.i.i564.i.i.i.i.i.i.i = getelementptr inbounds %"class.pbrt::HomogeneousMajorantIterator", ptr %iter.i.i512.i.i.i.i.i.i.i, i64 0, i32 1 + %seg.sroa.4.0.iter.sroa_idx.i.i565.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %iter.i.i512.i.i.i.i.i.i.i, i64 4 + %seg.sroa.7.0.iter.sroa_idx.i.i566.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %iter.i.i512.i.i.i.i.i.i.i, i64 8 + %seg.sroa.13.0.iter.sroa_idx.i.i567.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %iter.i.i512.i.i.i.i.i.i.i, i64 16 + %seg.sroa.13.8.retval.i.i69.sroa_idx.i.i569.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %retval.i.i69.i.i508.i.i.i.i.i.i.i, i64 8 + %44 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp58.i.i518.i.i.i.i.i.i.i, i64 0, i32 1 + %.fca.1.gep.i107.i.i570.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i82.i.i507.i.i.i.i.i.i.i, i64 0, i32 1 + %45 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp57.i.i517.i.i.i.i.i.i.i, i64 0, i32 1 + %phase.i.i.i571.i.i.i.i.i.i.i = getelementptr inbounds %"struct.pbrt::MediumProperties", ptr %agg.tmp85.i.i520.i.i.i.i.i.i.i, i64 0, i32 2 + %phase3.i.i.i572.i.i.i.i.i.i.i = getelementptr inbounds %"struct.pbrt::MediumProperties", ptr %mp.i.i519.i.i.i.i.i.i.i, i64 0, i32 2 + %Le.i.i.i573.i.i.i.i.i.i.i = getelementptr inbounds %"struct.pbrt::MediumProperties", ptr %agg.tmp85.i.i520.i.i.i.i.i.i.i, i64 0, i32 3 + %Le4.i.i.i574.i.i.i.i.i.i.i = getelementptr inbounds %"struct.pbrt::MediumProperties", ptr %mp.i.i519.i.i.i.i.i.i.i, i64 0, i32 3 + %agg.tmp91.sroa.2.0.T_maj.sroa_idx.i.i575.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %T_maj.i.i514.i.i.i.i.i.i.i, i64 8 + %seg.sroa.13.8.retval.i.i157.sroa_idx.i.i576.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %retval.i.i157.i.i506.i.i.i.i.i.i.i, i64 8 + %46 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp109.i.i523.i.i.i.i.i.i.i, i64 0, i32 1 + %.fca.1.gep.i195.i.i577.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i170.i.i505.i.i.i.i.i.i.i, i64 0, i32 1 + %47 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp108.i.i522.i.i.i.i.i.i.i, i64 0, i32 1 + %seg.sroa.13.8.retval.i.i.sroa_idx.i.i578.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %retval.i.i.i.i510.i.i.i.i.i.i.i, i64 8 + %48 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp23.i.i516.i.i.i.i.i.i.i, i64 0, i32 1 + %.fca.1.gep.i.i.i579.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i.i.i509.i.i.i.i.i.i.i, i64 0, i32 1 + %49 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp22.i.i515.i.i.i.i.i.i.i, i64 0, i32 1 + %.fca.1.gep.i.i584.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i.i511.i.i.i.i.i.i.i, i64 0, i32 1 + %agg.tmp2750.sroa.8.0.agg.tmp21.i251.i.i.i.sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp21.i251.i.i.i.i.i.i.i, i64 8 + %agg.tmp2750.sroa.9.0.agg.tmp21.i251.i.i.i.sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp21.i251.i.i.i.i.i.i.i, i64 16 + %agg.tmp2750.sroa.10.0.agg.tmp21.i251.i.i.i.sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp21.i251.i.i.i.i.i.i.i, i64 24 + %agg.tmp.sroa.6.0.agg.tmp7.i.sroa_idx.i280.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp7.i.i240.i.i.i.i.i.i.i, i64 8 + %agg.tmp.sroa.8.0.agg.tmp7.i.sroa_idx.i281.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp7.i.i240.i.i.i.i.i.i.i, i64 12 + %agg.tmp.sroa.14.0.agg.tmp7.i.sroa_idx.i282.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp7.i.i240.i.i.i.i.i.i.i, i64 20 + %agg.tmp.sroa.18.0.agg.tmp7.i.sroa_idx.i283.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp7.i.i240.i.i.i.i.i.i.i, i64 24 + %medium.i.i.i284.i.i.i.i.i.i.i = getelementptr inbounds %"class.pbrt::Ray", ptr %agg.tmp7.i.i240.i.i.i.i.i.i.i, i64 0, i32 3 + %set.i.i.i291.i.i.i.i.i.i.i = getelementptr inbounds %"class.pstd::optional.223", ptr %seg.i.i242.i.i.i.i.i.i.i, i64 0, i32 1 + %sigma_maj.i.i292.i.i.i.i.i.i.i = getelementptr inbounds %"struct.pbrt::RayMajorantSegment", ptr %seg.i.i242.i.i.i.i.i.i.i, i64 0, i32 2 + %tMax54.i.i294.i.i.i.i.i.i.i = getelementptr inbounds %"struct.pbrt::RayMajorantSegment", ptr %seg.i.i242.i.i.i.i.i.i.i, i64 0, i32 1 + %.fca.1.gep.i.i78.i.i295.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i.i69.i.i235.i.i.i.i.i.i.i, i64 0, i32 1 + %50 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp58.i.i246.i.i.i.i.i.i.i, i64 0, i32 1 + %.fca.1.gep.i107.i.i296.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i82.i.i234.i.i.i.i.i.i.i, i64 0, i32 1 + %51 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp57.i.i245.i.i.i.i.i.i.i, i64 0, i32 1 + %phase.i.i.i297.i.i.i.i.i.i.i = getelementptr inbounds %"struct.pbrt::MediumProperties", ptr %agg.tmp85.i.i247.i.i.i.i.i.i.i, i64 0, i32 2 + %Le.i.i.i298.i.i.i.i.i.i.i = getelementptr inbounds %"struct.pbrt::MediumProperties", ptr %agg.tmp85.i.i247.i.i.i.i.i.i.i, i64 0, i32 3 + %agg.tmp87.sroa.2.0.sigma_maj90.sroa_idx.i.i299.i.i.i.i.i.i.i = getelementptr inbounds %"struct.pbrt::RayMajorantSegment", ptr %seg.i.i242.i.i.i.i.i.i.i, i64 0, i32 2, i32 0, i32 0, i64 2 + %agg.tmp91.sroa.2.0.T_maj.sroa_idx.i.i300.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %T_maj.i.i241.i.i.i.i.i.i.i, i64 8 + %.fca.1.gep.i.i166.i.i301.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i.i157.i.i233.i.i.i.i.i.i.i, i64 0, i32 1 + %52 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp109.i.i250.i.i.i.i.i.i.i, i64 0, i32 1 + %.fca.1.gep.i195.i.i302.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i170.i.i232.i.i.i.i.i.i.i, i64 0, i32 1 + %53 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp108.i.i249.i.i.i.i.i.i.i, i64 0, i32 1 + %.fca.1.gep.i.i.i.i303.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i.i.i.i237.i.i.i.i.i.i.i, i64 0, i32 1 + %54 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp23.i.i244.i.i.i.i.i.i.i, i64 0, i32 1 + %.fca.1.gep.i.i.i304.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i.i.i236.i.i.i.i.i.i.i, i64 0, i32 1 + %55 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp22.i.i243.i.i.i.i.i.i.i, i64 0, i32 1 %56 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp8.i.i.i.i.i.i.i.i.i, i64 0, i32 1 %57 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp21.i.i.i.i.i.i.i.i.i, i64 0, i32 1 %ref.tmp40.sroa.2.0.retval.i.i46.sroa_idx.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %retval.i.i46.i.i.i.i.i.i.i.i.i, i64 8 - %mp.i.sroa.4.0.agg.tmp85.i.sroa_idx.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp85.i.i251.i.i.i.i.i.i.i, i64 8 - %mp.i.sroa.5.0.agg.tmp85.i.sroa_idx.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp85.i.i251.i.i.i.i.i.i.i, i64 16 - %mp.i.sroa.6.0.agg.tmp85.i.sroa_idx.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp85.i.i251.i.i.i.i.i.i.i, i64 24 - %mp.i.sroa.11.40.Le.i.i.sroa_idx.i.i.i.i.i.i.i.i = getelementptr inbounds %"struct.pbrt::MediumProperties", ptr %agg.tmp85.i.i251.i.i.i.i.i.i.i, i64 0, i32 3, i32 0, i32 0, i64 2 - %.fca.1.gep.i.i454.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i.i242.i.i.i.i.i.i.i, i64 0, i32 1 - %agg.tmp2751.sroa.8.0.agg.tmp21.i24.i.i.i.sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp21.i24.i.i.i.i.i.i.i, i64 8 - %agg.tmp2751.sroa.9.0.agg.tmp21.i24.i.i.i.sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp21.i24.i.i.i.i.i.i.i, i64 16 - %agg.tmp2751.sroa.10.0.agg.tmp21.i24.i.i.i.sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp21.i24.i.i.i.i.i.i.i, i64 24 + %mp.i.sroa.4.0.agg.tmp85.i.sroa_idx.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp85.i.i247.i.i.i.i.i.i.i, i64 8 + %mp.i.sroa.5.0.agg.tmp85.i.sroa_idx.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp85.i.i247.i.i.i.i.i.i.i, i64 16 + %mp.i.sroa.6.0.agg.tmp85.i.sroa_idx.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp85.i.i247.i.i.i.i.i.i.i, i64 24 + %mp.i.sroa.11.40.Le.i.i.sroa_idx.i.i.i.i.i.i.i.i = getelementptr inbounds %"struct.pbrt::MediumProperties", ptr %agg.tmp85.i.i247.i.i.i.i.i.i.i, i64 0, i32 3, i32 0, i32 0, i64 2 + %.fca.1.gep.i.i446.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i.i238.i.i.i.i.i.i.i, i64 0, i32 1 + %agg.tmp2750.sroa.8.0.agg.tmp21.i24.i.i.i.sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp21.i24.i.i.i.i.i.i.i, i64 8 + %agg.tmp2750.sroa.9.0.agg.tmp21.i24.i.i.i.sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp21.i24.i.i.i.i.i.i.i, i64 16 + %agg.tmp2750.sroa.10.0.agg.tmp21.i24.i.i.i.sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp21.i24.i.i.i.i.i.i.i, i64 24 %agg.tmp.sroa.6.0.agg.tmp7.i.sroa_idx.i53.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp7.i.i18.i.i.i.i.i.i.i, i64 8 %agg.tmp.sroa.8.0.agg.tmp7.i.sroa_idx.i54.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp7.i.i18.i.i.i.i.i.i.i, i64 12 %agg.tmp.sroa.14.0.agg.tmp7.i.sroa_idx.i55.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp7.i.i18.i.i.i.i.i.i.i, i64 20 @@ -11151,9 +11151,9 @@ while.body.lr.ph.i.i.i.i: ; preds = %while.cond.preheade %set.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds %"class.pstd::optional.223", ptr %seg.i.i.i.i.i.i.i.i.i, i64 0, i32 1 %sigma_maj.i.i.i.i.i.i.i.i.i = getelementptr inbounds %"struct.pbrt::RayMajorantSegment", ptr %seg.i.i.i.i.i.i.i.i.i, i64 0, i32 2 %tMax54.i.i.i.i.i.i.i.i.i = getelementptr inbounds %"struct.pbrt::RayMajorantSegment", ptr %seg.i.i.i.i.i.i.i.i.i, i64 0, i32 1 - %.fca.1.gep.i.i81.i.i.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i.i72.i.i13.i.i.i.i.i.i.i, i64 0, i32 1 + %.fca.1.gep.i.i78.i.i.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i.i69.i.i13.i.i.i.i.i.i.i, i64 0, i32 1 %58 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp58.i.i21.i.i.i.i.i.i.i, i64 0, i32 1 - %.fca.1.gep.i110.i.i65.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i85.i.i12.i.i.i.i.i.i.i, i64 0, i32 1 + %.fca.1.gep.i107.i.i65.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i82.i.i12.i.i.i.i.i.i.i, i64 0, i32 1 %59 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp57.i.i.i.i.i.i.i.i.i, i64 0, i32 1 %phase.i.i.i66.i.i.i.i.i.i.i = getelementptr inbounds %"struct.pbrt::MediumProperties", ptr %agg.tmp85.i.i.i.i.i.i.i.i.i, i64 0, i32 2 %phase3.i.i.i67.i.i.i.i.i.i.i = getelementptr inbounds %"struct.pbrt::MediumProperties", ptr %mp.i.i22.i.i.i.i.i.i.i, i64 0, i32 2 @@ -11161,18 +11161,18 @@ while.body.lr.ph.i.i.i.i: ; preds = %while.cond.preheade %Le4.i.i.i69.i.i.i.i.i.i.i = getelementptr inbounds %"struct.pbrt::MediumProperties", ptr %mp.i.i22.i.i.i.i.i.i.i, i64 0, i32 3 %agg.tmp87.sroa.2.0.sigma_maj90.sroa_idx.i.i.i.i.i.i.i.i.i = getelementptr inbounds %"struct.pbrt::RayMajorantSegment", ptr %seg.i.i.i.i.i.i.i.i.i, i64 0, i32 2, i32 0, i32 0, i64 2 %agg.tmp91.sroa.2.0.T_maj.sroa_idx.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %T_maj.i.i19.i.i.i.i.i.i.i, i64 8 - %.fca.1.gep.i.i169.i.i.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i.i160.i.i11.i.i.i.i.i.i.i, i64 0, i32 1 + %.fca.1.gep.i.i166.i.i.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i.i157.i.i11.i.i.i.i.i.i.i, i64 0, i32 1 %60 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp109.i.i23.i.i.i.i.i.i.i, i64 0, i32 1 - %.fca.1.gep.i198.i.i70.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i173.i.i10.i.i.i.i.i.i.i, i64 0, i32 1 + %.fca.1.gep.i195.i.i70.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i170.i.i10.i.i.i.i.i.i.i, i64 0, i32 1 %61 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp108.i.i.i.i.i.i.i.i.i, i64 0, i32 1 %.fca.1.gep.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i.i.i.i15.i.i.i.i.i.i.i, i64 0, i32 1 %62 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp23.i.i20.i.i.i.i.i.i.i, i64 0, i32 1 %.fca.1.gep.i.i.i71.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i.i.i14.i.i.i.i.i.i.i, i64 0, i32 1 %63 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp22.i.i.i.i.i.i.i.i.i, i64 0, i32 1 - %.fca.1.gep.i.i185.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i.i16.i.i.i.i.i.i.i, i64 0, i32 1 - %agg.tmp2751.sroa.8.0.agg.tmp21.i.i.i.i.sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp21.i.i.i.i.i.i.i.i, i64 8 - %agg.tmp2751.sroa.9.0.agg.tmp21.i.i.i.i.sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp21.i.i.i.i.i.i.i.i, i64 16 - %agg.tmp2751.sroa.10.0.agg.tmp21.i.i.i.i.sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp21.i.i.i.i.i.i.i.i, i64 24 + %.fca.1.gep.i.i181.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i.i16.i.i.i.i.i.i.i, i64 0, i32 1 + %agg.tmp2750.sroa.8.0.agg.tmp21.i.i.i.i.sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp21.i.i.i.i.i.i.i.i, i64 8 + %agg.tmp2750.sroa.9.0.agg.tmp21.i.i.i.i.sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp21.i.i.i.i.i.i.i.i, i64 16 + %agg.tmp2750.sroa.10.0.agg.tmp21.i.i.i.i.sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp21.i.i.i.i.i.i.i.i, i64 24 %agg.tmp.sroa.6.0.agg.tmp7.i.sroa_idx.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp7.i.i.i.i.i.i.i.i.i, i64 8 %agg.tmp.sroa.8.0.agg.tmp7.i.sroa_idx.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp7.i.i.i.i.i.i.i.i.i, i64 12 %agg.tmp.sroa.14.0.agg.tmp7.i.sroa_idx.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp7.i.i.i.i.i.i.i.i.i, i64 20 @@ -11182,59 +11182,59 @@ while.body.lr.ph.i.i.i.i: ; preds = %while.cond.preheade %seg.sroa.4.0.iter.sroa_idx.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %iter.i.i.i.i.i.i.i.i.i, i64 4 %seg.sroa.7.0.iter.sroa_idx.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %iter.i.i.i.i.i.i.i.i.i, i64 8 %seg.sroa.13.0.iter.sroa_idx.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %iter.i.i.i.i.i.i.i.i.i, i64 16 - %seg.sroa.13.8.retval.i.i72.sroa_idx.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %retval.i.i72.i.i.i.i.i.i.i.i.i, i64 8 + %seg.sroa.13.8.retval.i.i69.sroa_idx.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %retval.i.i69.i.i.i.i.i.i.i.i.i, i64 8 %64 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp59.i.i.i.i.i.i.i.i.i, i64 0, i32 1 - %.fca.1.gep.i110.i.i.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i85.i.i.i.i.i.i.i.i.i, i64 0, i32 1 + %.fca.1.gep.i107.i.i.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i82.i.i.i.i.i.i.i.i.i, i64 0, i32 1 %65 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp58.i.i.i.i.i.i.i.i.i, i64 0, i32 1 %phase.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds %"struct.pbrt::MediumProperties", ptr %agg.tmp86.i.i.i.i.i.i.i.i.i, i64 0, i32 2 %phase3.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds %"struct.pbrt::MediumProperties", ptr %mp.i.i.i.i.i.i.i.i.i, i64 0, i32 2 %Le.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds %"struct.pbrt::MediumProperties", ptr %agg.tmp86.i.i.i.i.i.i.i.i.i, i64 0, i32 3 %Le4.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds %"struct.pbrt::MediumProperties", ptr %mp.i.i.i.i.i.i.i.i.i, i64 0, i32 3 %agg.tmp92.sroa.2.0.T_maj.sroa_idx.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %T_maj.i.i.i.i.i.i.i.i.i, i64 8 - %seg.sroa.13.8.retval.i.i160.sroa_idx.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %retval.i.i160.i.i.i.i.i.i.i.i.i, i64 8 + %seg.sroa.13.8.retval.i.i157.sroa_idx.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %retval.i.i157.i.i.i.i.i.i.i.i.i, i64 8 %66 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp110.i.i.i.i.i.i.i.i.i, i64 0, i32 1 - %.fca.1.gep.i198.i.i.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i173.i.i.i.i.i.i.i.i.i, i64 0, i32 1 + %.fca.1.gep.i195.i.i.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i170.i.i.i.i.i.i.i.i.i, i64 0, i32 1 %67 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp109.i.i.i.i.i.i.i.i.i, i64 0, i32 1 %seg.sroa.13.8.retval.i.i.sroa_idx.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %retval.i.i.i.i.i.i.i.i.i.i.i, i64 8 %68 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp24.i.i.i.i.i.i.i.i.i, i64 0, i32 1 %.fca.1.gep.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i.i.i.i.i.i.i.i.i.i, i64 0, i32 1 %69 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp23.i.i.i.i.i.i.i.i.i, i64 0, i32 1 %.fca.1.gep.i.i.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i.i.i.i.i.i.i.i.i, i64 0, i32 1 - %agg.tmp2751.sroa.8.0.agg.tmp21.i806.i.i.i.sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp21.i806.i.i.i.i.i.i.i, i64 8 - %agg.tmp2751.sroa.9.0.agg.tmp21.i806.i.i.i.sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp21.i806.i.i.i.i.i.i.i, i64 16 - %agg.tmp2751.sroa.10.0.agg.tmp21.i806.i.i.i.sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp21.i806.i.i.i.i.i.i.i, i64 24 - %agg.tmp.sroa.6.0.agg.tmp7.i.sroa_idx.i835.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp7.i.i794.i.i.i.i.i.i.i, i64 8 - %agg.tmp.sroa.8.0.agg.tmp7.i.sroa_idx.i836.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp7.i.i794.i.i.i.i.i.i.i, i64 12 - %agg.tmp.sroa.14.0.agg.tmp7.i.sroa_idx.i837.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp7.i.i794.i.i.i.i.i.i.i, i64 20 - %agg.tmp.sroa.18.0.agg.tmp7.i.sroa_idx.i838.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp7.i.i794.i.i.i.i.i.i.i, i64 24 - %medium.i.i.i839.i.i.i.i.i.i.i = getelementptr inbounds %"class.pbrt::Ray", ptr %agg.tmp7.i.i794.i.i.i.i.i.i.i, i64 0, i32 3 - %set.i.i.i846.i.i.i.i.i.i.i = getelementptr inbounds %"class.pstd::optional.223", ptr %seg.i.i796.i.i.i.i.i.i.i, i64 0, i32 1 - %sigma_maj.i.i847.i.i.i.i.i.i.i = getelementptr inbounds %"struct.pbrt::RayMajorantSegment", ptr %seg.i.i796.i.i.i.i.i.i.i, i64 0, i32 2 - %tMax54.i.i849.i.i.i.i.i.i.i = getelementptr inbounds %"struct.pbrt::RayMajorantSegment", ptr %seg.i.i796.i.i.i.i.i.i.i, i64 0, i32 1 - %.fca.1.gep.i.i81.i.i850.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i.i72.i.i789.i.i.i.i.i.i.i, i64 0, i32 1 - %70 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp58.i.i800.i.i.i.i.i.i.i, i64 0, i32 1 - %.fca.1.gep.i110.i.i851.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i85.i.i788.i.i.i.i.i.i.i, i64 0, i32 1 - %71 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp57.i.i799.i.i.i.i.i.i.i, i64 0, i32 1 - %phase.i.i.i852.i.i.i.i.i.i.i = getelementptr inbounds %"struct.pbrt::MediumProperties", ptr %agg.tmp85.i.i802.i.i.i.i.i.i.i, i64 0, i32 2 - %phase3.i.i.i853.i.i.i.i.i.i.i = getelementptr inbounds %"struct.pbrt::MediumProperties", ptr %mp.i.i801.i.i.i.i.i.i.i, i64 0, i32 2 - %Le.i.i.i854.i.i.i.i.i.i.i = getelementptr inbounds %"struct.pbrt::MediumProperties", ptr %agg.tmp85.i.i802.i.i.i.i.i.i.i, i64 0, i32 3 - %Le4.i.i.i855.i.i.i.i.i.i.i = getelementptr inbounds %"struct.pbrt::MediumProperties", ptr %mp.i.i801.i.i.i.i.i.i.i, i64 0, i32 3 - %agg.tmp87.sroa.2.0.sigma_maj90.sroa_idx.i.i856.i.i.i.i.i.i.i = getelementptr inbounds %"struct.pbrt::RayMajorantSegment", ptr %seg.i.i796.i.i.i.i.i.i.i, i64 0, i32 2, i32 0, i32 0, i64 2 - %agg.tmp91.sroa.2.0.T_maj.sroa_idx.i.i857.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %T_maj.i.i795.i.i.i.i.i.i.i, i64 8 - %.fca.1.gep.i.i169.i.i858.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i.i160.i.i787.i.i.i.i.i.i.i, i64 0, i32 1 - %72 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp109.i.i805.i.i.i.i.i.i.i, i64 0, i32 1 - %.fca.1.gep.i198.i.i859.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i173.i.i786.i.i.i.i.i.i.i, i64 0, i32 1 - %73 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp108.i.i804.i.i.i.i.i.i.i, i64 0, i32 1 - %.fca.1.gep.i.i.i.i860.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i.i.i.i791.i.i.i.i.i.i.i, i64 0, i32 1 - %74 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp23.i.i798.i.i.i.i.i.i.i, i64 0, i32 1 - %.fca.1.gep.i.i.i861.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i.i.i790.i.i.i.i.i.i.i, i64 0, i32 1 - %75 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp22.i.i797.i.i.i.i.i.i.i, i64 0, i32 1 - %.fca.1.gep.i.i1007.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i.i792.i.i.i.i.i.i.i, i64 0, i32 1 + %agg.tmp2750.sroa.8.0.agg.tmp21.i794.i.i.i.sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp21.i794.i.i.i.i.i.i.i, i64 8 + %agg.tmp2750.sroa.9.0.agg.tmp21.i794.i.i.i.sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp21.i794.i.i.i.i.i.i.i, i64 16 + %agg.tmp2750.sroa.10.0.agg.tmp21.i794.i.i.i.sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp21.i794.i.i.i.i.i.i.i, i64 24 + %agg.tmp.sroa.6.0.agg.tmp7.i.sroa_idx.i823.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp7.i.i782.i.i.i.i.i.i.i, i64 8 + %agg.tmp.sroa.8.0.agg.tmp7.i.sroa_idx.i824.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp7.i.i782.i.i.i.i.i.i.i, i64 12 + %agg.tmp.sroa.14.0.agg.tmp7.i.sroa_idx.i825.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp7.i.i782.i.i.i.i.i.i.i, i64 20 + %agg.tmp.sroa.18.0.agg.tmp7.i.sroa_idx.i826.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp7.i.i782.i.i.i.i.i.i.i, i64 24 + %medium.i.i.i827.i.i.i.i.i.i.i = getelementptr inbounds %"class.pbrt::Ray", ptr %agg.tmp7.i.i782.i.i.i.i.i.i.i, i64 0, i32 3 + %set.i.i.i834.i.i.i.i.i.i.i = getelementptr inbounds %"class.pstd::optional.223", ptr %seg.i.i784.i.i.i.i.i.i.i, i64 0, i32 1 + %sigma_maj.i.i835.i.i.i.i.i.i.i = getelementptr inbounds %"struct.pbrt::RayMajorantSegment", ptr %seg.i.i784.i.i.i.i.i.i.i, i64 0, i32 2 + %tMax54.i.i837.i.i.i.i.i.i.i = getelementptr inbounds %"struct.pbrt::RayMajorantSegment", ptr %seg.i.i784.i.i.i.i.i.i.i, i64 0, i32 1 + %.fca.1.gep.i.i78.i.i838.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i.i69.i.i777.i.i.i.i.i.i.i, i64 0, i32 1 + %70 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp58.i.i788.i.i.i.i.i.i.i, i64 0, i32 1 + %.fca.1.gep.i107.i.i839.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i82.i.i776.i.i.i.i.i.i.i, i64 0, i32 1 + %71 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp57.i.i787.i.i.i.i.i.i.i, i64 0, i32 1 + %phase.i.i.i840.i.i.i.i.i.i.i = getelementptr inbounds %"struct.pbrt::MediumProperties", ptr %agg.tmp85.i.i790.i.i.i.i.i.i.i, i64 0, i32 2 + %phase3.i.i.i841.i.i.i.i.i.i.i = getelementptr inbounds %"struct.pbrt::MediumProperties", ptr %mp.i.i789.i.i.i.i.i.i.i, i64 0, i32 2 + %Le.i.i.i842.i.i.i.i.i.i.i = getelementptr inbounds %"struct.pbrt::MediumProperties", ptr %agg.tmp85.i.i790.i.i.i.i.i.i.i, i64 0, i32 3 + %Le4.i.i.i843.i.i.i.i.i.i.i = getelementptr inbounds %"struct.pbrt::MediumProperties", ptr %mp.i.i789.i.i.i.i.i.i.i, i64 0, i32 3 + %agg.tmp87.sroa.2.0.sigma_maj90.sroa_idx.i.i844.i.i.i.i.i.i.i = getelementptr inbounds %"struct.pbrt::RayMajorantSegment", ptr %seg.i.i784.i.i.i.i.i.i.i, i64 0, i32 2, i32 0, i32 0, i64 2 + %agg.tmp91.sroa.2.0.T_maj.sroa_idx.i.i845.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %T_maj.i.i783.i.i.i.i.i.i.i, i64 8 + %.fca.1.gep.i.i166.i.i846.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i.i157.i.i775.i.i.i.i.i.i.i, i64 0, i32 1 + %72 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp109.i.i793.i.i.i.i.i.i.i, i64 0, i32 1 + %.fca.1.gep.i195.i.i847.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i170.i.i774.i.i.i.i.i.i.i, i64 0, i32 1 + %73 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp108.i.i792.i.i.i.i.i.i.i, i64 0, i32 1 + %.fca.1.gep.i.i.i.i848.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i.i.i.i779.i.i.i.i.i.i.i, i64 0, i32 1 + %74 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp23.i.i786.i.i.i.i.i.i.i, i64 0, i32 1 + %.fca.1.gep.i.i.i849.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i.i.i778.i.i.i.i.i.i.i, i64 0, i32 1 + %75 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp22.i.i785.i.i.i.i.i.i.i, i64 0, i32 1 + %.fca.1.gep.i.i991.i.i.i.i.i.i.i = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %retval.i.i780.i.i.i.i.i.i.i, i64 0, i32 1 %T_maj.sroa.7.0.ret.i.sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %ret.i.i.i.i.i, i64 8 %76 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp31.i.i.i.i, i64 0, i32 1 - %T_maj.sroa.7.0.ret.i60.sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %ret.i60.i.i.i.i, i64 8 + %T_maj.sroa.7.0.ret.i59.sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %ret.i59.i.i.i.i, i64 8 %77 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp37.i.i.i.i, i64 0, i32 1 - %T_maj.sroa.7.0.ret.i81.sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %ret.i81.i.i.i.i, i64 8 + %T_maj.sroa.7.0.ret.i80.sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %ret.i80.i.i.i.i, i64 8 %78 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp43.i.i.i.i, i64 0, i32 1 %n.i.i.i.i.i.i = getelementptr inbounds %"class.pbrt::Interaction", ptr %si.i.i.i, i64 0, i32 3 %agg.tmp2.sroa.2.0.n.sroa_idx.i.i.i.i.i.i = getelementptr inbounds %"class.pbrt::Interaction", ptr %si.i.i.i, i64 0, i32 3, i32 0, i32 2 @@ -11243,18 +11243,18 @@ while.body.lr.ph.i.i.i.i: ; preds = %while.cond.preheade br label %while.body.i.i.i.i while.body.i.i.i.i: ; preds = %"_ZZZNK4pbrt12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiENKUlNS_6Point3IfEEE_clESB_.exit.i.i.i.i", %while.body.lr.ph.i.i.i.i - %ray.sroa.30.0352.i.i.i.i = phi i64 [ %18, %while.body.lr.ph.i.i.i.i ], [ %storemerge.i.i.i.i.i.i.i, %"_ZZZNK4pbrt12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiENKUlNS_6Point3IfEEE_clESB_.exit.i.i.i.i" ] - %ray.sroa.28.0351.i.i.i.i = phi float [ %16, %while.body.lr.ph.i.i.i.i ], [ %452, %"_ZZZNK4pbrt12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiENKUlNS_6Point3IfEEE_clESB_.exit.i.i.i.i" ] - %ray.sroa.22.0350.i.i.i.i = phi float [ %14, %while.body.lr.ph.i.i.i.i ], [ %sub6.i.i.i.i.i.i.i.i, %"_ZZZNK4pbrt12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiENKUlNS_6Point3IfEEE_clESB_.exit.i.i.i.i" ] - %ray.sroa.14.0349.i.i.i.i = phi <2 x float> [ %retval.sroa.0.4.vec.insert.i12.i.i.i.i.i, %while.body.lr.ph.i.i.i.i ], [ %457, %"_ZZZNK4pbrt12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiENKUlNS_6Point3IfEEE_clESB_.exit.i.i.i.i" ] - %ray.sroa.9.0348.i.i.i.i = phi float [ %8, %while.body.lr.ph.i.i.i.i ], [ %call.fca.1.extract.i.i.i.i.i.i.i.i, %"_ZZZNK4pbrt12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiENKUlNS_6Point3IfEEE_clESB_.exit.i.i.i.i" ] - %ray.sroa.0.0347.i.i.i.i = phi <2 x float> [ %retval.sroa.0.4.vec.insert.i.i.i.i.i.i, %while.body.lr.ph.i.i.i.i ], [ %call.fca.0.extract.i.i.i.i.i.i.i.i, %"_ZZZNK4pbrt12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiENKUlNS_6Point3IfEEE_clESB_.exit.i.i.i.i" ] - store <2 x float> %ray.sroa.0.0347.i.i.i.i, ptr %agg.tmp12.i.i.i.i, align 8 - store float %ray.sroa.9.0348.i.i.i.i, ptr %ray.sroa.9.0.agg.tmp12.sroa_idx.i.i.i.i, align 8 - store <2 x float> %ray.sroa.14.0349.i.i.i.i, ptr %ray.sroa.14.0.agg.tmp12.sroa_idx.i.i.i.i, align 4 - store float %ray.sroa.22.0350.i.i.i.i, ptr %ray.sroa.22.0.agg.tmp12.sroa_idx.i.i.i.i, align 4 - store float %ray.sroa.28.0351.i.i.i.i, ptr %ray.sroa.28.0.agg.tmp12.sroa_idx.i.i.i.i, align 8 - store i64 %ray.sroa.30.0352.i.i.i.i, ptr %medium.i31.i.i.i.i, align 8 + %ray.sroa.30.0351.i.i.i.i = phi i64 [ %18, %while.body.lr.ph.i.i.i.i ], [ %storemerge.i.i.i.i.i.i.i, %"_ZZZNK4pbrt12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiENKUlNS_6Point3IfEEE_clESB_.exit.i.i.i.i" ] + %ray.sroa.28.0350.i.i.i.i = phi float [ %16, %while.body.lr.ph.i.i.i.i ], [ %452, %"_ZZZNK4pbrt12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiENKUlNS_6Point3IfEEE_clESB_.exit.i.i.i.i" ] + %ray.sroa.22.0349.i.i.i.i = phi float [ %14, %while.body.lr.ph.i.i.i.i ], [ %sub6.i.i.i.i.i.i.i.i, %"_ZZZNK4pbrt12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiENKUlNS_6Point3IfEEE_clESB_.exit.i.i.i.i" ] + %ray.sroa.14.0348.i.i.i.i = phi <2 x float> [ %retval.sroa.0.4.vec.insert.i12.i.i.i.i.i, %while.body.lr.ph.i.i.i.i ], [ %457, %"_ZZZNK4pbrt12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiENKUlNS_6Point3IfEEE_clESB_.exit.i.i.i.i" ] + %ray.sroa.9.0347.i.i.i.i = phi float [ %8, %while.body.lr.ph.i.i.i.i ], [ %call.fca.1.extract.i.i.i.i.i.i.i.i, %"_ZZZNK4pbrt12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiENKUlNS_6Point3IfEEE_clESB_.exit.i.i.i.i" ] + %ray.sroa.0.0346.i.i.i.i = phi <2 x float> [ %retval.sroa.0.4.vec.insert.i.i.i.i.i.i, %while.body.lr.ph.i.i.i.i ], [ %call.fca.0.extract.i.i.i.i.i.i.i.i, %"_ZZZNK4pbrt12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiENKUlNS_6Point3IfEEE_clESB_.exit.i.i.i.i" ] + store <2 x float> %ray.sroa.0.0346.i.i.i.i, ptr %agg.tmp12.i.i.i.i, align 8 + store float %ray.sroa.9.0347.i.i.i.i, ptr %ray.sroa.9.0.agg.tmp12.sroa_idx.i.i.i.i, align 8 + store <2 x float> %ray.sroa.14.0348.i.i.i.i, ptr %ray.sroa.14.0.agg.tmp12.sroa_idx.i.i.i.i, align 4 + store float %ray.sroa.22.0349.i.i.i.i, ptr %ray.sroa.22.0.agg.tmp12.sroa_idx.i.i.i.i, align 4 + store float %ray.sroa.28.0350.i.i.i.i, ptr %ray.sroa.28.0.agg.tmp12.sroa_idx.i.i.i.i, align 8 + store i64 %ray.sroa.30.0351.i.i.i.i, ptr %medium.i31.i.i.i.i, align 8 call void @llvm.lifetime.start.p0(i64 264, ptr nonnull %ref.tmp.i.i.i.i.i) call void @_ZNK4pbrt9Primitive9IntersectERKNS_3RayEf(ptr nonnull sret(%"class.pstd::optional") align 8 %ref.tmp.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(8) %aggregate.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(40) %agg.tmp12.i.i.i.i, float noundef %20) %79 = load i8, ptr %set.i.i.i.i, align 16, !noalias !104 @@ -11317,33 +11317,33 @@ land.lhs.true.i.i.i.i: ; preds = %_ZN4pstd8optionalIN if.then.i.i.i.i: ; preds = %land.lhs.true.i.i.i.i call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %T_ray.i.i.i.i, i8 0, i64 16, i1 false) - br label %for.cond.i122.i.i.i.i.preheader + br label %for.cond.i121.i.i.i.i.preheader if.end.i.i.i.i: ; preds = %_ZN4pstd8optionalIN4pbrt17ShapeIntersectionEED2Ev.exit.i.i.i.i.i call void @llvm.lifetime.end.p0(i64 264, ptr nonnull %ref.tmp.i.i.i.i.i) - %and.i40.i.i.i.i = and i64 %ray.sroa.30.0352.i.i.i.i, 144115188075855871 + %and.i40.i.i.i.i = and i64 %ray.sroa.30.0351.i.i.i.i, 144115188075855871 %cmp.i41.not.i.i.i.i = icmp eq i64 %and.i40.i.i.i.i, 0 br i1 %cmp.i41.not.i.i.i.i, label %while.end.ithread-pre-split.i.i.i, label %cond.end.i.i.i.i if.end.thread.i.i.i.i: ; preds = %land.lhs.true.i.i.i.i - %and.i40273.i.i.i.i = and i64 %ray.sroa.30.0352.i.i.i.i, 144115188075855871 - %cmp.i41274.not.i.i.i.i = icmp eq i64 %and.i40273.i.i.i.i, 0 - br i1 %cmp.i41274.not.i.i.i.i, label %lor.lhs.false.i.i.i.i, label %cond.false.i.i.i.i + %and.i40272.i.i.i.i = and i64 %ray.sroa.30.0351.i.i.i.i, 144115188075855871 + %cmp.i41273.not.i.i.i.i = icmp eq i64 %and.i40272.i.i.i.i, 0 + br i1 %cmp.i41273.not.i.i.i.i, label %lor.lhs.false.i.i.i.i, label %cond.false.i.i.i.i cond.false.i.i.i.i: ; preds = %if.end.thread.i.i.i.i - %90 = extractelement <2 x float> %ray.sroa.0.0347.i.i.i.i, i64 0 + %90 = extractelement <2 x float> %ray.sroa.0.0346.i.i.i.i, i64 0 %sub.i.i.i.i.i.i = fsub float %90, %div.i.i.i.i.i.i.i.i.i - %91 = extractelement <2 x float> %ray.sroa.0.0347.i.i.i.i, i64 1 + %91 = extractelement <2 x float> %ray.sroa.0.0346.i.i.i.i, i64 1 %sub4.i.i.i.i.i.i = fsub float %91, %div.i.i3.i.i.i.i.i.i.i - %sub6.i.i.i.i.i.i = fsub float %ray.sroa.9.0348.i.i.i.i, %div.i.i6.i.i.i.i.i.i.i - %92 = shufflevector <2 x float> %ray.sroa.14.0349.i.i.i.i, <2 x float> poison, <2 x i32> + %sub6.i.i.i.i.i.i = fsub float %ray.sroa.9.0347.i.i.i.i, %div.i.i6.i.i.i.i.i.i.i + %92 = shufflevector <2 x float> %ray.sroa.14.0348.i.i.i.i, <2 x float> poison, <2 x i32> %93 = insertelement <2 x float> %92, float %sub.i.i.i.i.i.i, i64 0 %94 = fmul <2 x float> %93, %93 - %95 = insertelement <2 x float> %ray.sroa.14.0349.i.i.i.i, float %sub4.i.i.i.i.i.i, i64 0 + %95 = insertelement <2 x float> %ray.sroa.14.0348.i.i.i.i, float %sub4.i.i.i.i.i.i, i64 0 %96 = fmul <2 x float> %95, %95 %97 = fadd <2 x float> %94, %96 %98 = insertelement <2 x float> poison, float %sub6.i.i.i.i.i.i, i64 0 - %99 = insertelement <2 x float> %98, float %ray.sroa.22.0350.i.i.i.i, i64 1 + %99 = insertelement <2 x float> %98, float %ray.sroa.22.0349.i.i.i.i, i64 1 %100 = fmul <2 x float> %99, %99 %101 = fadd <2 x float> %97, %100 %102 = call <2 x float> @llvm.sqrt.v2f32(<2 x float> %101) @@ -11353,8 +11353,8 @@ cond.false.i.i.i.i: ; preds = %if.end.thread.i.i.i br label %cond.end.i.i.i.i cond.end.i.i.i.i: ; preds = %if.end.i.i.i.i, %cond.false.i.i.i.i - %tobool.i.not.i399.i.i.i.i = phi i1 [ false, %cond.false.i.i.i.i ], [ true, %if.end.i.i.i.i ] - %and.i40280286.i.i.i.i = phi i64 [ %and.i40273.i.i.i.i, %cond.false.i.i.i.i ], [ %and.i40.i.i.i.i, %if.end.i.i.i.i ] + %tobool.i.not.i398.i.i.i.i = phi i1 [ false, %cond.false.i.i.i.i ], [ true, %if.end.i.i.i.i ] + %and.i40279285.i.i.i.i = phi i64 [ %and.i40272.i.i.i.i, %cond.false.i.i.i.i ], [ %and.i40.i.i.i.i, %if.end.i.i.i.i ] %cond.i.i.i.i = phi float [ %div.i.i.i.i, %cond.false.i.i.i.i ], [ %20, %if.end.i.i.i.i ] %104 = load i64, ptr %rng.i.i.i.i, align 8 %mul.i.i46.i.i.i.i = mul i64 %104, 6364136223846793005 @@ -11367,16 +11367,12 @@ cond.end.i.i.i.i: ; preds = %if.end.i.i.i.i, %co %conv.i.i.i.i.i.i = trunc i64 %shr3.i.i.i.i.i.i to i32 %shr4.i.i.i.i.i.i = lshr i64 %104, 59 %conv5.i.i.i.i.i.i = trunc i64 %shr4.i.i.i.i.i.i to i32 - %shr6.i.i.i.i.i.i = lshr i32 %conv.i.i.i.i.i.i, %conv5.i.i.i.i.i.i - %add7.i.i.i.i.i.i = sub nsw i32 0, %conv5.i.i.i.i.i.i - %and.i.i.i.i.i.i = and i32 %add7.i.i.i.i.i.i, 31 - %shl.i.i49.i.i.i.i = shl i32 %conv.i.i.i.i.i.i, %and.i.i.i.i.i.i - %or.i.i50.i.i.i.i = or i32 %shr6.i.i.i.i.i.i, %shl.i.i49.i.i.i.i - %conv.i.i.i.i.i = uitofp i32 %or.i.i50.i.i.i.i to float + %or.i.i49.i.i.i.i = call noundef i32 @llvm.fshr.i32(i32 %conv.i.i.i.i.i.i, i32 %conv.i.i.i.i.i.i, i32 %conv5.i.i.i.i.i.i) + %conv.i.i.i.i.i = uitofp i32 %or.i.i49.i.i.i.i to float %mul.i.i.i.i.i = fmul float %conv.i.i.i.i.i, 0x3DF0000000000000 %cmp.i.i.i.i.i.i = fcmp olt float %mul.i.i.i.i.i, 0x3FEFFFFFE0000000 %.sroa.speculated.i.i.i.i.i = select i1 %cmp.i.i.i.i.i.i, float %mul.i.i.i.i.i, float 0x3FEFFFFFE0000000 - %shr.i.i.i.i.i.i.i = lshr i64 %ray.sroa.30.0352.i.i.i.i, 57 + %shr.i.i.i.i.i.i.i = lshr i64 %ray.sroa.30.0351.i.i.i.i, 57 %conv.i.i.i.i.i.i.i = trunc i64 %shr.i.i.i.i.i.i.i to i32 switch i32 %conv.i.i.i.i.i.i.i, label %sw.default.i.i.i.i.i.i.i [ i32 1, label %sw.bb.i.i.i.i.i.i.i @@ -11388,9 +11384,9 @@ cond.end.i.i.i.i: ; preds = %if.end.i.i.i.i, %co sw.bb.i.i.i.i.i.i.i: ; preds = %cond.end.i.i.i.i call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %agg.tmp21.i.i.i.i.i.i.i.i) store ptr %T_ray.i.i.i.i, ptr %agg.tmp21.i.i.i.i.i.i.i.i, align 8 - store ptr %r_l.i.i.i.i, ptr %agg.tmp2751.sroa.8.0.agg.tmp21.i.i.i.i.sroa_idx.i.i.i.i, align 8 - store ptr %r_u.i.i.i.i, ptr %agg.tmp2751.sroa.9.0.agg.tmp21.i.i.i.i.sroa_idx.i.i.i.i, align 8 - store ptr %rng.i.i.i.i, ptr %agg.tmp2751.sroa.10.0.agg.tmp21.i.i.i.i.sroa_idx.i.i.i.i, align 8 + store ptr %r_l.i.i.i.i, ptr %agg.tmp2750.sroa.8.0.agg.tmp21.i.i.i.i.sroa_idx.i.i.i.i, align 8 + store ptr %r_u.i.i.i.i, ptr %agg.tmp2750.sroa.9.0.agg.tmp21.i.i.i.i.sroa_idx.i.i.i.i, align 8 + store ptr %rng.i.i.i.i, ptr %agg.tmp2750.sroa.10.0.agg.tmp21.i.i.i.i.sroa_idx.i.i.i.i, align 8 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i.i.i.i.i.i.i.i.i) call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %iter.i.i.i.i.i.i.i.i.i) call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %agg.tmp7.i.i.i.i.i.i.i.i.i) @@ -11404,25 +11400,25 @@ sw.bb.i.i.i.i.i.i.i: ; preds = %cond.end.i.i.i.i call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp97.i.i.i.i.i.i.i.i.i) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp109.i.i.i.i.i.i.i.i.i) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp110.i.i.i.i.i.i.i.i.i) - %108 = fmul <2 x float> %ray.sroa.14.0349.i.i.i.i, %ray.sroa.14.0349.i.i.i.i + %108 = fmul <2 x float> %ray.sroa.14.0348.i.i.i.i, %ray.sroa.14.0348.i.i.i.i %shift181 = shufflevector <2 x float> %108, <2 x float> poison, <2 x i32> %109 = fadd <2 x float> %108, %shift181 %add.i.i.i.i.i.i.i.i.i.i.i = extractelement <2 x float> %109, i64 0 - %mul.i2.i.i.i.i.i.i.i.i.i.i.i = fmul float %ray.sroa.22.0350.i.i.i.i, %ray.sroa.22.0350.i.i.i.i + %mul.i2.i.i.i.i.i.i.i.i.i.i.i = fmul float %ray.sroa.22.0349.i.i.i.i, %ray.sroa.22.0349.i.i.i.i %add3.i.i.i.i.i.i.i.i.i.i.i = fadd float %mul.i2.i.i.i.i.i.i.i.i.i.i.i, %add.i.i.i.i.i.i.i.i.i.i.i %sqrt.i.i.i.i.i.i.i.i.i.i = call noundef float @llvm.sqrt.f32(float %add3.i.i.i.i.i.i.i.i.i.i.i) %mul.i.i.i.i.i.i.i.i.i = fmul float %sqrt.i.i.i.i.i.i.i.i.i.i, %cond.i.i.i.i %110 = insertelement <2 x float> poison, float %sqrt.i.i.i.i.i.i.i.i.i.i, i64 0 %111 = shufflevector <2 x float> %110, <2 x float> poison, <2 x i32> zeroinitializer - %112 = fdiv <2 x float> %ray.sroa.14.0349.i.i.i.i, %111 - %div3.i.i.i.i.i.i.i.i.i.i.i = fdiv float %ray.sroa.22.0350.i.i.i.i, %sqrt.i.i.i.i.i.i.i.i.i.i - %113 = inttoptr i64 %and.i40280286.i.i.i.i to ptr - store <2 x float> %ray.sroa.0.0347.i.i.i.i, ptr %agg.tmp7.i.i.i.i.i.i.i.i.i, align 8 - store float %ray.sroa.9.0348.i.i.i.i, ptr %agg.tmp.sroa.6.0.agg.tmp7.i.sroa_idx.i.i.i.i.i.i.i.i, align 8 + %112 = fdiv <2 x float> %ray.sroa.14.0348.i.i.i.i, %111 + %div3.i.i.i.i.i.i.i.i.i.i.i = fdiv float %ray.sroa.22.0349.i.i.i.i, %sqrt.i.i.i.i.i.i.i.i.i.i + %113 = inttoptr i64 %and.i40279285.i.i.i.i to ptr + store <2 x float> %ray.sroa.0.0346.i.i.i.i, ptr %agg.tmp7.i.i.i.i.i.i.i.i.i, align 8 + store float %ray.sroa.9.0347.i.i.i.i, ptr %agg.tmp.sroa.6.0.agg.tmp7.i.sroa_idx.i.i.i.i.i.i.i.i, align 8 store <2 x float> %112, ptr %agg.tmp.sroa.8.0.agg.tmp7.i.sroa_idx.i.i.i.i.i.i.i.i, align 4 store float %div3.i.i.i.i.i.i.i.i.i.i.i, ptr %agg.tmp.sroa.14.0.agg.tmp7.i.sroa_idx.i.i.i.i.i.i.i.i, align 4 - store float %ray.sroa.28.0351.i.i.i.i, ptr %agg.tmp.sroa.18.0.agg.tmp7.i.sroa_idx.i.i.i.i.i.i.i.i, align 8 - store i64 %ray.sroa.30.0352.i.i.i.i, ptr %medium.i.i.i.i.i.i.i.i.i.i, align 8 + store float %ray.sroa.28.0350.i.i.i.i, ptr %agg.tmp.sroa.18.0.agg.tmp7.i.sroa_idx.i.i.i.i.i.i.i.i, align 8 + store i64 %ray.sroa.30.0351.i.i.i.i, ptr %medium.i.i.i.i.i.i.i.i.i.i, align 8 call void @_ZNK4pbrt17HomogeneousMedium9SampleRayENS_3RayEfRKNS_18SampledWavelengthsE(ptr nonnull sret(%"class.pbrt::HomogeneousMajorantIterator") align 4 %iter.i.i.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(124) %113, ptr noundef nonnull %agg.tmp7.i.i.i.i.i.i.i.i.i, float noundef %mul.i.i.i.i.i.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(32) %lambda.i.i.i.i) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %T_maj.i.i.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) br label %for.body.i.i.i.i.i.i.i.i.i.i.i @@ -11439,10 +11435,10 @@ while.cond.preheader.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i. %114 = load i8, ptr %called.i.i.i.i.i.i.i.i.i.i, align 4, !noalias !107 %115 = and i8 %114, 1 %tobool.not.i.i19.i.i.i.i.i.i.i.i = icmp eq i8 %115, 0 - br i1 %tobool.not.i.i19.i.i.i.i.i.i.i.i, label %invoke.cont9.i.i.i.i.i.i.i.i.i, label %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.thread.i.i.i.i.i.i.i.i.i + br i1 %tobool.not.i.i19.i.i.i.i.i.i.i.i, label %invoke.cont9.i.i.i.i.i.i.i.i.i, label %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.thread.i.i.i.i.i.i.i.i.i -invoke.cont9.i.i.i.i.i.i.i.i.i: ; preds = %while.cond.preheader.i.i.i.i.i.i.i.i.i, %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.i.i.i.i.i.i.i.i.i - %u.addr.0295.i20.i.i.i.i.i.i.i.i = phi float [ %.sroa.speculated.i.i.i.i.i.i.i.i.i.i, %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.i.i.i.i.i.i.i.i.i ], [ %.sroa.speculated.i.i.i.i.i, %while.cond.preheader.i.i.i.i.i.i.i.i.i ] +invoke.cont9.i.i.i.i.i.i.i.i.i: ; preds = %while.cond.preheader.i.i.i.i.i.i.i.i.i, %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.i.i.i.i.i.i.i.i.i + %u.addr.0292.i20.i.i.i.i.i.i.i.i = phi float [ %.sroa.speculated.i.i.i.i.i.i.i.i.i.i, %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.i.i.i.i.i.i.i.i.i ], [ %.sroa.speculated.i.i.i.i.i, %while.cond.preheader.i.i.i.i.i.i.i.i.i ] store i8 1, ptr %called.i.i.i.i.i.i.i.i.i.i, align 4, !noalias !107 %seg.sroa.0.0.copyload.i.i.i.i.i.i.i.i.i = load float, ptr %iter.i.i.i.i.i.i.i.i.i, align 4 %seg.sroa.4.0.copyload.i.i.i.i.i.i.i.i.i = load float, ptr %seg.sroa.4.0.iter.sroa_idx.i.i.i.i.i.i.i.i.i, align 4 @@ -11539,15 +11535,15 @@ for.body.i39.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i39.i.i.i. store float %mul.i.i.i.i.i.i.i.i.i.i, ptr %arrayidx.i4.i.i.i.i.i.i.i.i.i.i, align 4 %indvars.iv.next.i42.i.i.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i40.i.i.i.i.i.i.i.i.i, 1 %exitcond.not.i43.i.i.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i42.i.i.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i43.i.i.i.i.i.i.i.i.i, label %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.thread.i.i.i.i.i.i.i.i.i, label %for.body.i39.i.i.i.i.i.i.i.i.i, !llvm.loop !112 + br i1 %exitcond.not.i43.i.i.i.i.i.i.i.i.i, label %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.thread.i.i.i.i.i.i.i.i.i, label %for.body.i39.i.i.i.i.i.i.i.i.i, !llvm.loop !112 invoke.cont53.i.i.i.i.i.i.i.i.i: ; preds = %invoke.cont9.i.i.i.i.i.i.i.i.i, %invoke.cont98.i.i.i.i.i.i.i.i.i - %tMin39.0.i.i.i.i.i.i.i.i.i = phi float [ %add.i.i.i.i.i53.i.i.i.i, %invoke.cont98.i.i.i.i.i.i.i.i.i ], [ %seg.sroa.0.0.copyload.i.i.i.i.i.i.i.i.i, %invoke.cont9.i.i.i.i.i.i.i.i.i ] - %u.addr.1.i.i.i.i.i.i.i.i.i = phi float [ %.sroa.speculated.i.i.i.i.i.i.i.i.i.i, %invoke.cont98.i.i.i.i.i.i.i.i.i ], [ %u.addr.0295.i20.i.i.i.i.i.i.i.i, %invoke.cont9.i.i.i.i.i.i.i.i.i ] + %tMin39.0.i.i.i.i.i.i.i.i.i = phi float [ %add.i.i.i.i.i52.i.i.i.i, %invoke.cont98.i.i.i.i.i.i.i.i.i ], [ %seg.sroa.0.0.copyload.i.i.i.i.i.i.i.i.i, %invoke.cont9.i.i.i.i.i.i.i.i.i ] + %u.addr.1.i.i.i.i.i.i.i.i.i = phi float [ %.sroa.speculated.i.i.i.i.i.i.i.i.i.i, %invoke.cont98.i.i.i.i.i.i.i.i.i ], [ %u.addr.0292.i20.i.i.i.i.i.i.i.i, %invoke.cont9.i.i.i.i.i.i.i.i.i ] %sub.i.i.i.i.i.i.i.i.i.i = fsub float 1.000000e+00, %u.addr.1.i.i.i.i.i.i.i.i.i %call.i.i.i.i.i.i.i.i.i.i.i = call noundef float @logf(float noundef %sub.i.i.i.i.i.i.i.i.i.i) #25 %128 = fdiv float %call.i.i.i.i.i.i.i.i.i.i.i, %seg.sroa.7.8.vec.extract.i.i.i.i.i.i.i.i.i - %add.i.i.i.i.i53.i.i.i.i = fsub float %tMin39.0.i.i.i.i.i.i.i.i.i, %128 + %add.i.i.i.i.i52.i.i.i.i = fsub float %tMin39.0.i.i.i.i.i.i.i.i.i, %128 %129 = load i64, ptr %rng.i.i.i.i, align 8 %mul.i.i54.i.i.i.i.i.i.i.i.i = mul i64 %129, 6364136223846793005 %130 = load i64, ptr %inc.i.i.i.i.i.i, align 8 @@ -11559,111 +11555,107 @@ invoke.cont53.i.i.i.i.i.i.i.i.i: ; preds = %invoke.cont9.i.i.i. %conv.i.i.i.i.i.i.i.i.i.i.i = trunc i64 %shr3.i.i.i.i.i.i.i.i.i.i.i to i32 %shr4.i.i.i.i.i.i.i.i.i.i.i = lshr i64 %129, 59 %conv5.i.i.i.i.i.i.i.i.i.i.i = trunc i64 %shr4.i.i.i.i.i.i.i.i.i.i.i to i32 - %shr6.i.i.i.i.i.i.i.i.i.i.i = lshr i32 %conv.i.i.i.i.i.i.i.i.i.i.i, %conv5.i.i.i.i.i.i.i.i.i.i.i - %add7.i.i56.i.i.i.i.i.i.i.i.i = sub nsw i32 0, %conv5.i.i.i.i.i.i.i.i.i.i.i - %and.i.i57.i.i.i.i.i.i.i.i.i = and i32 %add7.i.i56.i.i.i.i.i.i.i.i.i, 31 - %shl.i.i58.i.i.i.i.i.i.i.i.i = shl i32 %conv.i.i.i.i.i.i.i.i.i.i.i, %and.i.i57.i.i.i.i.i.i.i.i.i - %or.i.i59.i.i.i.i.i.i.i.i.i = or i32 %shr6.i.i.i.i.i.i.i.i.i.i.i, %shl.i.i58.i.i.i.i.i.i.i.i.i - %conv.i.i.i.i.i.i.i.i.i.i = uitofp i32 %or.i.i59.i.i.i.i.i.i.i.i.i to float - %mul.i60.i.i.i.i.i.i.i.i.i = fmul float %conv.i.i.i.i.i.i.i.i.i.i, 0x3DF0000000000000 - %cmp.i.i61.i.i.i.i.i.i.i.i.i = fcmp olt float %mul.i60.i.i.i.i.i.i.i.i.i, 0x3FEFFFFFE0000000 - %.sroa.speculated.i.i.i.i.i.i.i.i.i.i = select i1 %cmp.i.i61.i.i.i.i.i.i.i.i.i, float %mul.i60.i.i.i.i.i.i.i.i.i, float 0x3FEFFFFFE0000000 - %cmp56.i.i.i.i.i.i.i.i.i = fcmp olt float %add.i.i.i.i.i53.i.i.i.i, %seg.sroa.4.0.copyload.i.i.i.i.i.i.i.i.i + %or.i.i56.i.i.i.i.i.i.i.i.i = call noundef i32 @llvm.fshr.i32(i32 %conv.i.i.i.i.i.i.i.i.i.i.i, i32 %conv.i.i.i.i.i.i.i.i.i.i.i, i32 %conv5.i.i.i.i.i.i.i.i.i.i.i) + %conv.i.i.i.i.i.i.i.i.i.i = uitofp i32 %or.i.i56.i.i.i.i.i.i.i.i.i to float + %mul.i57.i.i.i.i.i.i.i.i.i = fmul float %conv.i.i.i.i.i.i.i.i.i.i, 0x3DF0000000000000 + %cmp.i.i58.i.i.i.i.i.i.i.i.i = fcmp olt float %mul.i57.i.i.i.i.i.i.i.i.i, 0x3FEFFFFFE0000000 + %.sroa.speculated.i.i.i.i.i.i.i.i.i.i = select i1 %cmp.i.i58.i.i.i.i.i.i.i.i.i, float %mul.i57.i.i.i.i.i.i.i.i.i, float 0x3FEFFFFFE0000000 + %cmp56.i.i.i.i.i.i.i.i.i = fcmp olt float %add.i.i.i.i.i52.i.i.i.i, %seg.sroa.4.0.copyload.i.i.i.i.i.i.i.i.i br i1 %cmp56.i.i.i.i.i.i.i.i.i, label %invoke.cont62.i.i.i.i.i.i.i.i.i, label %invoke.cont104.i.i.i.i.i.i.i.i.i invoke.cont62.i.i.i.i.i.i.i.i.i: ; preds = %invoke.cont53.i.i.i.i.i.i.i.i.i - %sub60.i.i.i.i.i.i.i.i.i = fsub float %add.i.i.i.i.i53.i.i.i.i, %tMin39.0.i.i.i.i.i.i.i.i.i + %sub60.i.i.i.i.i.i.i.i.i = fsub float %add.i.i.i.i.i52.i.i.i.i, %tMin39.0.i.i.i.i.i.i.i.i.i %fneg61.i.i.i.i.i.i.i.i.i = fneg float %sub60.i.i.i.i.i.i.i.i.i - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i.i72.i.i.i.i.i.i.i.i.i) - store <2 x float> %seg.sroa.7.0.copyload.i.i.i.i.i.i.i.i.i, ptr %retval.i.i72.i.i.i.i.i.i.i.i.i, align 8 - store <2 x float> %seg.sroa.13.0.copyload.i.i.i.i.i.i.i.i.i, ptr %seg.sroa.13.8.retval.i.i72.sroa_idx.i.i.i.i.i.i.i.i.i, align 8 - br label %for.body.i.i73.i.i.i.i.i.i.i.i.i - -for.body.i.i73.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i73.i.i.i.i.i.i.i.i.i, %invoke.cont62.i.i.i.i.i.i.i.i.i - %indvars.iv.i.i74.i.i.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont62.i.i.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i77.i.i.i.i.i.i.i.i.i, %for.body.i.i73.i.i.i.i.i.i.i.i.i ] - %arrayidx.i.i.i75.i.i.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i72.i.i.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i74.i.i.i.i.i.i.i.i.i - %133 = load float, ptr %arrayidx.i.i.i75.i.i.i.i.i.i.i.i.i, align 4 - %mul.i.i76.i.i.i.i.i.i.i.i.i = fmul float %133, %fneg61.i.i.i.i.i.i.i.i.i - store float %mul.i.i76.i.i.i.i.i.i.i.i.i, ptr %arrayidx.i.i.i75.i.i.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i.i77.i.i.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i74.i.i.i.i.i.i.i.i.i, 1 - %exitcond.not.i.i78.i.i.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i77.i.i.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i.i78.i.i.i.i.i.i.i.i.i, label %invoke.cont65.i.i.i.i.i.i.i.i.i, label %for.body.i.i73.i.i.i.i.i.i.i.i.i, !llvm.loop !110 - -invoke.cont65.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i73.i.i.i.i.i.i.i.i.i - %.fca.0.load.i.i79.i.i.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i.i72.i.i.i.i.i.i.i.i.i, align 8 - %.fca.1.load.i.i82.i.i.i.i.i.i.i.i.i = load <2 x float>, ptr %seg.sroa.13.8.retval.i.i72.sroa_idx.i.i.i.i.i.i.i.i.i, align 8 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i.i72.i.i.i.i.i.i.i.i.i) - store <2 x float> %.fca.0.load.i.i79.i.i.i.i.i.i.i.i.i, ptr %ref.tmp59.i.i.i.i.i.i.i.i.i, align 8 - store <2 x float> %.fca.1.load.i.i82.i.i.i.i.i.i.i.i.i, ptr %64, align 8 - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i85.i.i.i.i.i.i.i.i.i) - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i85.i.i.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) - br label %for.body.i86.i.i.i.i.i.i.i.i.i - -for.body.i86.i.i.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i103.i.i.i.i.i.i.i.i.i, %invoke.cont65.i.i.i.i.i.i.i.i.i - %indvars.iv.i87.i.i.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont65.i.i.i.i.i.i.i.i.i ], [ %indvars.iv.next.i106.i.i.i.i.i.i.i.i.i, %_ZN4pbrt7FastExpEf.exit.i103.i.i.i.i.i.i.i.i.i ] - %arrayidx.i.i.i88.i.i.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp59.i.i.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i87.i.i.i.i.i.i.i.i.i - %134 = load float, ptr %arrayidx.i.i.i88.i.i.i.i.i.i.i.i.i, align 4 - %mul.i.i89.i.i.i.i.i.i.i.i.i = fmul float %134, 0x3FF7154760000000 - %135 = call noundef float @llvm.floor.f32(float %mul.i.i89.i.i.i.i.i.i.i.i.i) - %sub.i.i90.i.i.i.i.i.i.i.i.i = fsub float %mul.i.i89.i.i.i.i.i.i.i.i.i, %135 - %conv.i4.i91.i.i.i.i.i.i.i.i.i = fptosi float %135 to i32 - %136 = call noundef float @llvm.fma.f32(float %sub.i.i90.i.i.i.i.i.i.i.i.i, float 0x3FB4015920000000, float 0x3FCCF34160000000) - %137 = call noundef float @llvm.fma.f32(float %sub.i.i90.i.i.i.i.i.i.i.i.i, float %136, float 0x3FE6420080000000) - %138 = call noundef float @llvm.fma.f32(float %sub.i.i90.i.i.i.i.i.i.i.i.i, float %137, float 1.000000e+00) + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i.i69.i.i.i.i.i.i.i.i.i) + store <2 x float> %seg.sroa.7.0.copyload.i.i.i.i.i.i.i.i.i, ptr %retval.i.i69.i.i.i.i.i.i.i.i.i, align 8 + store <2 x float> %seg.sroa.13.0.copyload.i.i.i.i.i.i.i.i.i, ptr %seg.sroa.13.8.retval.i.i69.sroa_idx.i.i.i.i.i.i.i.i.i, align 8 + br label %for.body.i.i70.i.i.i.i.i.i.i.i.i + +for.body.i.i70.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i70.i.i.i.i.i.i.i.i.i, %invoke.cont62.i.i.i.i.i.i.i.i.i + %indvars.iv.i.i71.i.i.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont62.i.i.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i74.i.i.i.i.i.i.i.i.i, %for.body.i.i70.i.i.i.i.i.i.i.i.i ] + %arrayidx.i.i.i72.i.i.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i69.i.i.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i71.i.i.i.i.i.i.i.i.i + %133 = load float, ptr %arrayidx.i.i.i72.i.i.i.i.i.i.i.i.i, align 4 + %mul.i.i73.i.i.i.i.i.i.i.i.i = fmul float %133, %fneg61.i.i.i.i.i.i.i.i.i + store float %mul.i.i73.i.i.i.i.i.i.i.i.i, ptr %arrayidx.i.i.i72.i.i.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i.i74.i.i.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i71.i.i.i.i.i.i.i.i.i, 1 + %exitcond.not.i.i75.i.i.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i74.i.i.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i.i75.i.i.i.i.i.i.i.i.i, label %invoke.cont65.i.i.i.i.i.i.i.i.i, label %for.body.i.i70.i.i.i.i.i.i.i.i.i, !llvm.loop !110 + +invoke.cont65.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i70.i.i.i.i.i.i.i.i.i + %.fca.0.load.i.i76.i.i.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i.i69.i.i.i.i.i.i.i.i.i, align 8 + %.fca.1.load.i.i79.i.i.i.i.i.i.i.i.i = load <2 x float>, ptr %seg.sroa.13.8.retval.i.i69.sroa_idx.i.i.i.i.i.i.i.i.i, align 8 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i.i69.i.i.i.i.i.i.i.i.i) + store <2 x float> %.fca.0.load.i.i76.i.i.i.i.i.i.i.i.i, ptr %ref.tmp59.i.i.i.i.i.i.i.i.i, align 8 + store <2 x float> %.fca.1.load.i.i79.i.i.i.i.i.i.i.i.i, ptr %64, align 8 + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i82.i.i.i.i.i.i.i.i.i) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i82.i.i.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) + br label %for.body.i83.i.i.i.i.i.i.i.i.i + +for.body.i83.i.i.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i100.i.i.i.i.i.i.i.i.i, %invoke.cont65.i.i.i.i.i.i.i.i.i + %indvars.iv.i84.i.i.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont65.i.i.i.i.i.i.i.i.i ], [ %indvars.iv.next.i103.i.i.i.i.i.i.i.i.i, %_ZN4pbrt7FastExpEf.exit.i100.i.i.i.i.i.i.i.i.i ] + %arrayidx.i.i.i85.i.i.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp59.i.i.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i84.i.i.i.i.i.i.i.i.i + %134 = load float, ptr %arrayidx.i.i.i85.i.i.i.i.i.i.i.i.i, align 4 + %mul.i.i86.i.i.i.i.i.i.i.i.i = fmul float %134, 0x3FF7154760000000 + %135 = call noundef float @llvm.floor.f32(float %mul.i.i86.i.i.i.i.i.i.i.i.i) + %sub.i.i87.i.i.i.i.i.i.i.i.i = fsub float %mul.i.i86.i.i.i.i.i.i.i.i.i, %135 + %conv.i4.i88.i.i.i.i.i.i.i.i.i = fptosi float %135 to i32 + %136 = call noundef float @llvm.fma.f32(float %sub.i.i87.i.i.i.i.i.i.i.i.i, float 0x3FB4015920000000, float 0x3FCCF34160000000) + %137 = call noundef float @llvm.fma.f32(float %sub.i.i87.i.i.i.i.i.i.i.i.i, float %136, float 0x3FE6420080000000) + %138 = call noundef float @llvm.fma.f32(float %sub.i.i87.i.i.i.i.i.i.i.i.i, float %137, float 1.000000e+00) %139 = bitcast float %138 to i32 - %shr.i.i.i92.i.i.i.i.i.i.i.i.i = lshr i32 %139, 23 - %sub.i.i.i93.i.i.i.i.i.i.i.i.i = add i32 %conv.i4.i91.i.i.i.i.i.i.i.i.i, -127 - %add.i.i94.i.i.i.i.i.i.i.i.i = add i32 %sub.i.i.i93.i.i.i.i.i.i.i.i.i, %shr.i.i.i92.i.i.i.i.i.i.i.i.i - %cmp.i.i95.i.i.i.i.i.i.i.i.i = icmp slt i32 %add.i.i94.i.i.i.i.i.i.i.i.i, -126 - br i1 %cmp.i.i95.i.i.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i103.i.i.i.i.i.i.i.i.i, label %if.end.i.i96.i.i.i.i.i.i.i.i.i - -if.end.i.i96.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i86.i.i.i.i.i.i.i.i.i - %cmp3.i.i97.i.i.i.i.i.i.i.i.i = icmp sgt i32 %add.i.i94.i.i.i.i.i.i.i.i.i, 127 - br i1 %cmp3.i.i97.i.i.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i103.i.i.i.i.i.i.i.i.i, label %if.end5.i.i98.i.i.i.i.i.i.i.i.i - -if.end5.i.i98.i.i.i.i.i.i.i.i.i: ; preds = %if.end.i.i96.i.i.i.i.i.i.i.i.i - %and.i.i99.i.i.i.i.i.i.i.i.i = and i32 %139, -2139095041 - %add7.i.i100.i.i.i.i.i.i.i.i.i = shl nsw i32 %add.i.i94.i.i.i.i.i.i.i.i.i, 23 - %shl.i.i101.i.i.i.i.i.i.i.i.i = add i32 %add7.i.i100.i.i.i.i.i.i.i.i.i, 1065353216 - %or.i.i102.i.i.i.i.i.i.i.i.i = or i32 %shl.i.i101.i.i.i.i.i.i.i.i.i, %and.i.i99.i.i.i.i.i.i.i.i.i - %140 = bitcast i32 %or.i.i102.i.i.i.i.i.i.i.i.i to float - br label %_ZN4pbrt7FastExpEf.exit.i103.i.i.i.i.i.i.i.i.i - -_ZN4pbrt7FastExpEf.exit.i103.i.i.i.i.i.i.i.i.i: ; preds = %if.end5.i.i98.i.i.i.i.i.i.i.i.i, %if.end.i.i96.i.i.i.i.i.i.i.i.i, %for.body.i86.i.i.i.i.i.i.i.i.i - %retval.0.i.i104.i.i.i.i.i.i.i.i.i = phi float [ %140, %if.end5.i.i98.i.i.i.i.i.i.i.i.i ], [ 0.000000e+00, %for.body.i86.i.i.i.i.i.i.i.i.i ], [ 0x7FF0000000000000, %if.end.i.i96.i.i.i.i.i.i.i.i.i ] - %arrayidx.i.i6.i105.i.i.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i85.i.i.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i87.i.i.i.i.i.i.i.i.i - store float %retval.0.i.i104.i.i.i.i.i.i.i.i.i, ptr %arrayidx.i.i6.i105.i.i.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i106.i.i.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i87.i.i.i.i.i.i.i.i.i, 1 - %exitcond.not.i107.i.i.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i106.i.i.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i107.i.i.i.i.i.i.i.i.i, label %invoke.cont69.i.i.i.i.i.i.i.i.i, label %for.body.i86.i.i.i.i.i.i.i.i.i, !llvm.loop !111 - -invoke.cont69.i.i.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i103.i.i.i.i.i.i.i.i.i - %.fca.0.load.i108.i.i.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i85.i.i.i.i.i.i.i.i.i, align 8 - %.fca.1.load.i111.i.i.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i110.i.i.i.i.i.i.i.i.i, align 8 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i85.i.i.i.i.i.i.i.i.i) - store <2 x float> %.fca.0.load.i108.i.i.i.i.i.i.i.i.i, ptr %ref.tmp58.i.i.i.i.i.i.i.i.i, align 8 - store <2 x float> %.fca.1.load.i111.i.i.i.i.i.i.i.i.i, ptr %65, align 8 - br label %for.body.i114.i.i.i.i.i.i.i.i.i - -for.body.i114.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i114.i.i.i.i.i.i.i.i.i, %invoke.cont69.i.i.i.i.i.i.i.i.i - %indvars.iv.i115.i.i.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont69.i.i.i.i.i.i.i.i.i ], [ %indvars.iv.next.i119.i.i.i.i.i.i.i.i.i, %for.body.i114.i.i.i.i.i.i.i.i.i ] - %arrayidx.i.i116.i.i.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp58.i.i.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i115.i.i.i.i.i.i.i.i.i - %141 = load float, ptr %arrayidx.i.i116.i.i.i.i.i.i.i.i.i, align 4 - %arrayidx.i4.i117.i.i.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %T_maj.i.i.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i115.i.i.i.i.i.i.i.i.i - %142 = load float, ptr %arrayidx.i4.i117.i.i.i.i.i.i.i.i.i, align 4 - %mul.i118.i.i.i.i.i.i.i.i.i = fmul float %141, %142 - store float %mul.i118.i.i.i.i.i.i.i.i.i, ptr %arrayidx.i4.i117.i.i.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i119.i.i.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i115.i.i.i.i.i.i.i.i.i, 1 - %exitcond.not.i120.i.i.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i119.i.i.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i120.i.i.i.i.i.i.i.i.i, label %invoke.cont76.i.i.i.i.i.i.i.i.i, label %for.body.i114.i.i.i.i.i.i.i.i.i, !llvm.loop !112 - -invoke.cont76.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i114.i.i.i.i.i.i.i.i.i - %143 = insertelement <2 x float> poison, float %add.i.i.i.i.i53.i.i.i.i, i64 0 + %shr.i.i.i89.i.i.i.i.i.i.i.i.i = lshr i32 %139, 23 + %sub.i.i.i90.i.i.i.i.i.i.i.i.i = add i32 %conv.i4.i88.i.i.i.i.i.i.i.i.i, -127 + %add.i.i91.i.i.i.i.i.i.i.i.i = add i32 %sub.i.i.i90.i.i.i.i.i.i.i.i.i, %shr.i.i.i89.i.i.i.i.i.i.i.i.i + %cmp.i.i92.i.i.i.i.i.i.i.i.i = icmp slt i32 %add.i.i91.i.i.i.i.i.i.i.i.i, -126 + br i1 %cmp.i.i92.i.i.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i100.i.i.i.i.i.i.i.i.i, label %if.end.i.i93.i.i.i.i.i.i.i.i.i + +if.end.i.i93.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i83.i.i.i.i.i.i.i.i.i + %cmp3.i.i94.i.i.i.i.i.i.i.i.i = icmp sgt i32 %add.i.i91.i.i.i.i.i.i.i.i.i, 127 + br i1 %cmp3.i.i94.i.i.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i100.i.i.i.i.i.i.i.i.i, label %if.end5.i.i95.i.i.i.i.i.i.i.i.i + +if.end5.i.i95.i.i.i.i.i.i.i.i.i: ; preds = %if.end.i.i93.i.i.i.i.i.i.i.i.i + %and.i.i96.i.i.i.i.i.i.i.i.i = and i32 %139, -2139095041 + %add7.i.i97.i.i.i.i.i.i.i.i.i = shl nsw i32 %add.i.i91.i.i.i.i.i.i.i.i.i, 23 + %shl.i.i98.i.i.i.i.i.i.i.i.i = add i32 %add7.i.i97.i.i.i.i.i.i.i.i.i, 1065353216 + %or.i.i99.i.i.i.i.i.i.i.i.i = or i32 %shl.i.i98.i.i.i.i.i.i.i.i.i, %and.i.i96.i.i.i.i.i.i.i.i.i + %140 = bitcast i32 %or.i.i99.i.i.i.i.i.i.i.i.i to float + br label %_ZN4pbrt7FastExpEf.exit.i100.i.i.i.i.i.i.i.i.i + +_ZN4pbrt7FastExpEf.exit.i100.i.i.i.i.i.i.i.i.i: ; preds = %if.end5.i.i95.i.i.i.i.i.i.i.i.i, %if.end.i.i93.i.i.i.i.i.i.i.i.i, %for.body.i83.i.i.i.i.i.i.i.i.i + %retval.0.i.i101.i.i.i.i.i.i.i.i.i = phi float [ %140, %if.end5.i.i95.i.i.i.i.i.i.i.i.i ], [ 0.000000e+00, %for.body.i83.i.i.i.i.i.i.i.i.i ], [ 0x7FF0000000000000, %if.end.i.i93.i.i.i.i.i.i.i.i.i ] + %arrayidx.i.i6.i102.i.i.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i82.i.i.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i84.i.i.i.i.i.i.i.i.i + store float %retval.0.i.i101.i.i.i.i.i.i.i.i.i, ptr %arrayidx.i.i6.i102.i.i.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i103.i.i.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i84.i.i.i.i.i.i.i.i.i, 1 + %exitcond.not.i104.i.i.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i103.i.i.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i104.i.i.i.i.i.i.i.i.i, label %invoke.cont69.i.i.i.i.i.i.i.i.i, label %for.body.i83.i.i.i.i.i.i.i.i.i, !llvm.loop !111 + +invoke.cont69.i.i.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i100.i.i.i.i.i.i.i.i.i + %.fca.0.load.i105.i.i.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i82.i.i.i.i.i.i.i.i.i, align 8 + %.fca.1.load.i108.i.i.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i107.i.i.i.i.i.i.i.i.i, align 8 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i82.i.i.i.i.i.i.i.i.i) + store <2 x float> %.fca.0.load.i105.i.i.i.i.i.i.i.i.i, ptr %ref.tmp58.i.i.i.i.i.i.i.i.i, align 8 + store <2 x float> %.fca.1.load.i108.i.i.i.i.i.i.i.i.i, ptr %65, align 8 + br label %for.body.i111.i.i.i.i.i.i.i.i.i + +for.body.i111.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i111.i.i.i.i.i.i.i.i.i, %invoke.cont69.i.i.i.i.i.i.i.i.i + %indvars.iv.i112.i.i.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont69.i.i.i.i.i.i.i.i.i ], [ %indvars.iv.next.i116.i.i.i.i.i.i.i.i.i, %for.body.i111.i.i.i.i.i.i.i.i.i ] + %arrayidx.i.i113.i.i.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp58.i.i.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i112.i.i.i.i.i.i.i.i.i + %141 = load float, ptr %arrayidx.i.i113.i.i.i.i.i.i.i.i.i, align 4 + %arrayidx.i4.i114.i.i.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %T_maj.i.i.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i112.i.i.i.i.i.i.i.i.i + %142 = load float, ptr %arrayidx.i4.i114.i.i.i.i.i.i.i.i.i, align 4 + %mul.i115.i.i.i.i.i.i.i.i.i = fmul float %141, %142 + store float %mul.i115.i.i.i.i.i.i.i.i.i, ptr %arrayidx.i4.i114.i.i.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i116.i.i.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i112.i.i.i.i.i.i.i.i.i, 1 + %exitcond.not.i117.i.i.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i116.i.i.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i117.i.i.i.i.i.i.i.i.i, label %invoke.cont76.i.i.i.i.i.i.i.i.i, label %for.body.i111.i.i.i.i.i.i.i.i.i, !llvm.loop !112 + +invoke.cont76.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i111.i.i.i.i.i.i.i.i.i + %143 = insertelement <2 x float> poison, float %add.i.i.i.i.i52.i.i.i.i, i64 0 %144 = shufflevector <2 x float> %143, <2 x float> poison, <2 x i32> zeroinitializer %145 = fmul <2 x float> %112, %144 - %mul3.i.i.i.i.i.i.i.i.i.i.i = fmul float %div3.i.i.i.i.i.i.i.i.i.i.i, %add.i.i.i.i.i53.i.i.i.i - %146 = fadd <2 x float> %ray.sroa.0.0347.i.i.i.i, %145 - %add6.i.i.i.i.i.i.i.i.i.i.i = fadd float %ray.sroa.9.0348.i.i.i.i, %mul3.i.i.i.i.i.i.i.i.i.i.i + %mul3.i.i.i.i.i.i.i.i.i.i.i = fmul float %div3.i.i.i.i.i.i.i.i.i.i.i, %add.i.i.i.i.i52.i.i.i.i + %146 = fadd <2 x float> %ray.sroa.0.0346.i.i.i.i, %145 + %add6.i.i.i.i.i.i.i.i.i.i.i = fadd float %ray.sroa.9.0347.i.i.i.i, %mul3.i.i.i.i.i.i.i.i.i.i.i call void @_ZNK4pbrt17HomogeneousMedium11SamplePointENS_6Point3IfEERKNS_18SampledWavelengthsE(ptr nonnull sret(%"struct.pbrt::MediumProperties") align 8 %mp.i.i.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(124) %113, <2 x float> %146, float %add6.i.i.i.i.i.i.i.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(32) %lambda.i.i.i.i) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp86.i.i.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(32) %mp.i.i.i.i.i.i.i.i.i, i64 32, i1 false) %147 = load i64, ptr %phase3.i.i.i.i.i.i.i.i.i.i, align 8 @@ -11676,17 +11668,17 @@ invoke.cont76.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i114.i.i.i if.end96.i.i.i.i.i.i.i.i.i: ; preds = %invoke.cont76.i.i.i.i.i.i.i.i.i call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %ref.tmp97.i.i.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) - br label %for.body.i.i144.i.i.i.i.i.i.i.i.i + br label %for.body.i.i141.i.i.i.i.i.i.i.i.i -for.body.i.i144.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i144.i.i.i.i.i.i.i.i.i, %if.end96.i.i.i.i.i.i.i.i.i - %indvars.iv.i.i145.i.i.i.i.i.i.i.i.i = phi i64 [ 0, %if.end96.i.i.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i147.i.i.i.i.i.i.i.i.i, %for.body.i.i144.i.i.i.i.i.i.i.i.i ] - %arrayidx.i.i146.i.i.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp97.i.i.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i145.i.i.i.i.i.i.i.i.i - store float 1.000000e+00, ptr %arrayidx.i.i146.i.i.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i.i147.i.i.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i145.i.i.i.i.i.i.i.i.i, 1 - %exitcond.not.i.i148.i.i.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i147.i.i.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i.i148.i.i.i.i.i.i.i.i.i, label %invoke.cont98.i.i.i.i.i.i.i.i.i, label %for.body.i.i144.i.i.i.i.i.i.i.i.i, !llvm.loop !103 +for.body.i.i141.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i141.i.i.i.i.i.i.i.i.i, %if.end96.i.i.i.i.i.i.i.i.i + %indvars.iv.i.i142.i.i.i.i.i.i.i.i.i = phi i64 [ 0, %if.end96.i.i.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i144.i.i.i.i.i.i.i.i.i, %for.body.i.i141.i.i.i.i.i.i.i.i.i ] + %arrayidx.i.i143.i.i.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp97.i.i.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i142.i.i.i.i.i.i.i.i.i + store float 1.000000e+00, ptr %arrayidx.i.i143.i.i.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i.i144.i.i.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i142.i.i.i.i.i.i.i.i.i, 1 + %exitcond.not.i.i145.i.i.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i144.i.i.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i.i145.i.i.i.i.i.i.i.i.i, label %invoke.cont98.i.i.i.i.i.i.i.i.i, label %for.body.i.i141.i.i.i.i.i.i.i.i.i, !llvm.loop !103 -invoke.cont98.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i144.i.i.i.i.i.i.i.i.i +invoke.cont98.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i141.i.i.i.i.i.i.i.i.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %T_maj.i.i.i.i.i.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(16) %ref.tmp97.i.i.i.i.i.i.i.i.i, i64 16, i1 false) br label %invoke.cont53.i.i.i.i.i.i.i.i.i, !llvm.loop !113 @@ -11696,112 +11688,112 @@ invoke.cont104.i.i.i.i.i.i.i.i.i: ; preds = %invoke.cont53.i.i.i %149 = fcmp oeq float %148, 0x7FF0000000000000 %dt99.0.i.i.i.i.i.i.i.i.i = select i1 %149, float 0x47EFFFFFE0000000, float %sub103.i.i.i.i.i.i.i.i.i %fneg111.i.i.i.i.i.i.i.i.i = fneg float %dt99.0.i.i.i.i.i.i.i.i.i - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i.i160.i.i.i.i.i.i.i.i.i) - store <2 x float> %seg.sroa.7.0.copyload.i.i.i.i.i.i.i.i.i, ptr %retval.i.i160.i.i.i.i.i.i.i.i.i, align 8 - store <2 x float> %seg.sroa.13.0.copyload.i.i.i.i.i.i.i.i.i, ptr %seg.sroa.13.8.retval.i.i160.sroa_idx.i.i.i.i.i.i.i.i.i, align 8 - br label %for.body.i.i161.i.i.i.i.i.i.i.i.i - -for.body.i.i161.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i161.i.i.i.i.i.i.i.i.i, %invoke.cont104.i.i.i.i.i.i.i.i.i - %indvars.iv.i.i162.i.i.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont104.i.i.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i165.i.i.i.i.i.i.i.i.i, %for.body.i.i161.i.i.i.i.i.i.i.i.i ] - %arrayidx.i.i.i163.i.i.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i160.i.i.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i162.i.i.i.i.i.i.i.i.i - %150 = load float, ptr %arrayidx.i.i.i163.i.i.i.i.i.i.i.i.i, align 4 - %mul.i.i164.i.i.i.i.i.i.i.i.i = fmul float %150, %fneg111.i.i.i.i.i.i.i.i.i - store float %mul.i.i164.i.i.i.i.i.i.i.i.i, ptr %arrayidx.i.i.i163.i.i.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i.i165.i.i.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i162.i.i.i.i.i.i.i.i.i, 1 - %exitcond.not.i.i166.i.i.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i165.i.i.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i.i166.i.i.i.i.i.i.i.i.i, label %invoke.cont115.i.i.i.i.i.i.i.i.i, label %for.body.i.i161.i.i.i.i.i.i.i.i.i, !llvm.loop !110 - -invoke.cont115.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i161.i.i.i.i.i.i.i.i.i - %.fca.0.load.i.i167.i.i.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i.i160.i.i.i.i.i.i.i.i.i, align 8 - %.fca.1.load.i.i170.i.i.i.i.i.i.i.i.i = load <2 x float>, ptr %seg.sroa.13.8.retval.i.i160.sroa_idx.i.i.i.i.i.i.i.i.i, align 8 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i.i160.i.i.i.i.i.i.i.i.i) - store <2 x float> %.fca.0.load.i.i167.i.i.i.i.i.i.i.i.i, ptr %ref.tmp110.i.i.i.i.i.i.i.i.i, align 8 - store <2 x float> %.fca.1.load.i.i170.i.i.i.i.i.i.i.i.i, ptr %66, align 8 - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i173.i.i.i.i.i.i.i.i.i) - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i173.i.i.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) - br label %for.body.i174.i.i.i.i.i.i.i.i.i - -for.body.i174.i.i.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i191.i.i.i.i.i.i.i.i.i, %invoke.cont115.i.i.i.i.i.i.i.i.i - %indvars.iv.i175.i.i.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont115.i.i.i.i.i.i.i.i.i ], [ %indvars.iv.next.i194.i.i.i.i.i.i.i.i.i, %_ZN4pbrt7FastExpEf.exit.i191.i.i.i.i.i.i.i.i.i ] - %arrayidx.i.i.i176.i.i.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp110.i.i.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i175.i.i.i.i.i.i.i.i.i - %151 = load float, ptr %arrayidx.i.i.i176.i.i.i.i.i.i.i.i.i, align 4 - %mul.i.i177.i.i.i.i.i.i.i.i.i = fmul float %151, 0x3FF7154760000000 - %152 = call noundef float @llvm.floor.f32(float %mul.i.i177.i.i.i.i.i.i.i.i.i) - %sub.i.i178.i.i.i.i.i.i.i.i.i = fsub float %mul.i.i177.i.i.i.i.i.i.i.i.i, %152 - %conv.i4.i179.i.i.i.i.i.i.i.i.i = fptosi float %152 to i32 - %153 = call noundef float @llvm.fma.f32(float %sub.i.i178.i.i.i.i.i.i.i.i.i, float 0x3FB4015920000000, float 0x3FCCF34160000000) - %154 = call noundef float @llvm.fma.f32(float %sub.i.i178.i.i.i.i.i.i.i.i.i, float %153, float 0x3FE6420080000000) - %155 = call noundef float @llvm.fma.f32(float %sub.i.i178.i.i.i.i.i.i.i.i.i, float %154, float 1.000000e+00) + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i.i157.i.i.i.i.i.i.i.i.i) + store <2 x float> %seg.sroa.7.0.copyload.i.i.i.i.i.i.i.i.i, ptr %retval.i.i157.i.i.i.i.i.i.i.i.i, align 8 + store <2 x float> %seg.sroa.13.0.copyload.i.i.i.i.i.i.i.i.i, ptr %seg.sroa.13.8.retval.i.i157.sroa_idx.i.i.i.i.i.i.i.i.i, align 8 + br label %for.body.i.i158.i.i.i.i.i.i.i.i.i + +for.body.i.i158.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i158.i.i.i.i.i.i.i.i.i, %invoke.cont104.i.i.i.i.i.i.i.i.i + %indvars.iv.i.i159.i.i.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont104.i.i.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i162.i.i.i.i.i.i.i.i.i, %for.body.i.i158.i.i.i.i.i.i.i.i.i ] + %arrayidx.i.i.i160.i.i.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i157.i.i.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i159.i.i.i.i.i.i.i.i.i + %150 = load float, ptr %arrayidx.i.i.i160.i.i.i.i.i.i.i.i.i, align 4 + %mul.i.i161.i.i.i.i.i.i.i.i.i = fmul float %150, %fneg111.i.i.i.i.i.i.i.i.i + store float %mul.i.i161.i.i.i.i.i.i.i.i.i, ptr %arrayidx.i.i.i160.i.i.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i.i162.i.i.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i159.i.i.i.i.i.i.i.i.i, 1 + %exitcond.not.i.i163.i.i.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i162.i.i.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i.i163.i.i.i.i.i.i.i.i.i, label %invoke.cont115.i.i.i.i.i.i.i.i.i, label %for.body.i.i158.i.i.i.i.i.i.i.i.i, !llvm.loop !110 + +invoke.cont115.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i158.i.i.i.i.i.i.i.i.i + %.fca.0.load.i.i164.i.i.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i.i157.i.i.i.i.i.i.i.i.i, align 8 + %.fca.1.load.i.i167.i.i.i.i.i.i.i.i.i = load <2 x float>, ptr %seg.sroa.13.8.retval.i.i157.sroa_idx.i.i.i.i.i.i.i.i.i, align 8 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i.i157.i.i.i.i.i.i.i.i.i) + store <2 x float> %.fca.0.load.i.i164.i.i.i.i.i.i.i.i.i, ptr %ref.tmp110.i.i.i.i.i.i.i.i.i, align 8 + store <2 x float> %.fca.1.load.i.i167.i.i.i.i.i.i.i.i.i, ptr %66, align 8 + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i170.i.i.i.i.i.i.i.i.i) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i170.i.i.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) + br label %for.body.i171.i.i.i.i.i.i.i.i.i + +for.body.i171.i.i.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i188.i.i.i.i.i.i.i.i.i, %invoke.cont115.i.i.i.i.i.i.i.i.i + %indvars.iv.i172.i.i.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont115.i.i.i.i.i.i.i.i.i ], [ %indvars.iv.next.i191.i.i.i.i.i.i.i.i.i, %_ZN4pbrt7FastExpEf.exit.i188.i.i.i.i.i.i.i.i.i ] + %arrayidx.i.i.i173.i.i.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp110.i.i.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i172.i.i.i.i.i.i.i.i.i + %151 = load float, ptr %arrayidx.i.i.i173.i.i.i.i.i.i.i.i.i, align 4 + %mul.i.i174.i.i.i.i.i.i.i.i.i = fmul float %151, 0x3FF7154760000000 + %152 = call noundef float @llvm.floor.f32(float %mul.i.i174.i.i.i.i.i.i.i.i.i) + %sub.i.i175.i.i.i.i.i.i.i.i.i = fsub float %mul.i.i174.i.i.i.i.i.i.i.i.i, %152 + %conv.i4.i176.i.i.i.i.i.i.i.i.i = fptosi float %152 to i32 + %153 = call noundef float @llvm.fma.f32(float %sub.i.i175.i.i.i.i.i.i.i.i.i, float 0x3FB4015920000000, float 0x3FCCF34160000000) + %154 = call noundef float @llvm.fma.f32(float %sub.i.i175.i.i.i.i.i.i.i.i.i, float %153, float 0x3FE6420080000000) + %155 = call noundef float @llvm.fma.f32(float %sub.i.i175.i.i.i.i.i.i.i.i.i, float %154, float 1.000000e+00) %156 = bitcast float %155 to i32 - %shr.i.i.i180.i.i.i.i.i.i.i.i.i = lshr i32 %156, 23 - %sub.i.i.i181.i.i.i.i.i.i.i.i.i = add i32 %conv.i4.i179.i.i.i.i.i.i.i.i.i, -127 - %add.i.i182.i.i.i.i.i.i.i.i.i = add i32 %sub.i.i.i181.i.i.i.i.i.i.i.i.i, %shr.i.i.i180.i.i.i.i.i.i.i.i.i - %cmp.i.i183.i.i.i.i.i.i.i.i.i = icmp slt i32 %add.i.i182.i.i.i.i.i.i.i.i.i, -126 - br i1 %cmp.i.i183.i.i.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i191.i.i.i.i.i.i.i.i.i, label %if.end.i.i184.i.i.i.i.i.i.i.i.i - -if.end.i.i184.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i174.i.i.i.i.i.i.i.i.i - %cmp3.i.i185.i.i.i.i.i.i.i.i.i = icmp sgt i32 %add.i.i182.i.i.i.i.i.i.i.i.i, 127 - br i1 %cmp3.i.i185.i.i.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i191.i.i.i.i.i.i.i.i.i, label %if.end5.i.i186.i.i.i.i.i.i.i.i.i - -if.end5.i.i186.i.i.i.i.i.i.i.i.i: ; preds = %if.end.i.i184.i.i.i.i.i.i.i.i.i - %and.i.i187.i.i.i.i.i.i.i.i.i = and i32 %156, -2139095041 - %add7.i.i188.i.i.i.i.i.i.i.i.i = shl nsw i32 %add.i.i182.i.i.i.i.i.i.i.i.i, 23 - %shl.i.i189.i.i.i.i.i.i.i.i.i = add i32 %add7.i.i188.i.i.i.i.i.i.i.i.i, 1065353216 - %or.i.i190.i.i.i.i.i.i.i.i.i = or i32 %shl.i.i189.i.i.i.i.i.i.i.i.i, %and.i.i187.i.i.i.i.i.i.i.i.i - %157 = bitcast i32 %or.i.i190.i.i.i.i.i.i.i.i.i to float - br label %_ZN4pbrt7FastExpEf.exit.i191.i.i.i.i.i.i.i.i.i - -_ZN4pbrt7FastExpEf.exit.i191.i.i.i.i.i.i.i.i.i: ; preds = %if.end5.i.i186.i.i.i.i.i.i.i.i.i, %if.end.i.i184.i.i.i.i.i.i.i.i.i, %for.body.i174.i.i.i.i.i.i.i.i.i - %retval.0.i.i192.i.i.i.i.i.i.i.i.i = phi float [ %157, %if.end5.i.i186.i.i.i.i.i.i.i.i.i ], [ 0.000000e+00, %for.body.i174.i.i.i.i.i.i.i.i.i ], [ 0x7FF0000000000000, %if.end.i.i184.i.i.i.i.i.i.i.i.i ] - %arrayidx.i.i6.i193.i.i.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i173.i.i.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i175.i.i.i.i.i.i.i.i.i - store float %retval.0.i.i192.i.i.i.i.i.i.i.i.i, ptr %arrayidx.i.i6.i193.i.i.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i194.i.i.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i175.i.i.i.i.i.i.i.i.i, 1 - %exitcond.not.i195.i.i.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i194.i.i.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i195.i.i.i.i.i.i.i.i.i, label %invoke.cont119.i.i.i.i.i.i.i.i.i, label %for.body.i174.i.i.i.i.i.i.i.i.i, !llvm.loop !111 - -invoke.cont119.i.i.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i191.i.i.i.i.i.i.i.i.i - %.fca.0.load.i196.i.i.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i173.i.i.i.i.i.i.i.i.i, align 8 - %.fca.1.load.i199.i.i.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i198.i.i.i.i.i.i.i.i.i, align 8 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i173.i.i.i.i.i.i.i.i.i) - store <2 x float> %.fca.0.load.i196.i.i.i.i.i.i.i.i.i, ptr %ref.tmp109.i.i.i.i.i.i.i.i.i, align 8 - store <2 x float> %.fca.1.load.i199.i.i.i.i.i.i.i.i.i, ptr %67, align 8 - br label %for.body.i202.i.i.i.i.i.i.i.i.i - -for.body.i202.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i202.i.i.i.i.i.i.i.i.i, %invoke.cont119.i.i.i.i.i.i.i.i.i - %indvars.iv.i203.i.i.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont119.i.i.i.i.i.i.i.i.i ], [ %indvars.iv.next.i207.i.i.i.i.i.i.i.i.i, %for.body.i202.i.i.i.i.i.i.i.i.i ] - %arrayidx.i.i204.i.i.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp109.i.i.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i203.i.i.i.i.i.i.i.i.i - %158 = load float, ptr %arrayidx.i.i204.i.i.i.i.i.i.i.i.i, align 4 - %arrayidx.i4.i205.i.i.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %T_maj.i.i.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i203.i.i.i.i.i.i.i.i.i - %159 = load float, ptr %arrayidx.i4.i205.i.i.i.i.i.i.i.i.i, align 4 - %mul.i206.i.i.i.i.i.i.i.i.i = fmul float %158, %159 - store float %mul.i206.i.i.i.i.i.i.i.i.i, ptr %arrayidx.i4.i205.i.i.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i207.i.i.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i203.i.i.i.i.i.i.i.i.i, 1 - %exitcond.not.i208.i.i.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i207.i.i.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i208.i.i.i.i.i.i.i.i.i, label %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.i.i.i.i.i.i.i.i.i, label %for.body.i202.i.i.i.i.i.i.i.i.i, !llvm.loop !112 - -_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.thread.i.i.i.i.i.i.i.i.i: ; preds = %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.i.i.i.i.i.i.i.i.i, %for.body.i39.i.i.i.i.i.i.i.i.i, %while.cond.preheader.i.i.i.i.i.i.i.i.i + %shr.i.i.i177.i.i.i.i.i.i.i.i.i = lshr i32 %156, 23 + %sub.i.i.i178.i.i.i.i.i.i.i.i.i = add i32 %conv.i4.i176.i.i.i.i.i.i.i.i.i, -127 + %add.i.i179.i.i.i.i.i.i.i.i.i = add i32 %sub.i.i.i178.i.i.i.i.i.i.i.i.i, %shr.i.i.i177.i.i.i.i.i.i.i.i.i + %cmp.i.i180.i.i.i.i.i.i.i.i.i = icmp slt i32 %add.i.i179.i.i.i.i.i.i.i.i.i, -126 + br i1 %cmp.i.i180.i.i.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i188.i.i.i.i.i.i.i.i.i, label %if.end.i.i181.i.i.i.i.i.i.i.i.i + +if.end.i.i181.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i171.i.i.i.i.i.i.i.i.i + %cmp3.i.i182.i.i.i.i.i.i.i.i.i = icmp sgt i32 %add.i.i179.i.i.i.i.i.i.i.i.i, 127 + br i1 %cmp3.i.i182.i.i.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i188.i.i.i.i.i.i.i.i.i, label %if.end5.i.i183.i.i.i.i.i.i.i.i.i + +if.end5.i.i183.i.i.i.i.i.i.i.i.i: ; preds = %if.end.i.i181.i.i.i.i.i.i.i.i.i + %and.i.i184.i.i.i.i.i.i.i.i.i = and i32 %156, -2139095041 + %add7.i.i185.i.i.i.i.i.i.i.i.i = shl nsw i32 %add.i.i179.i.i.i.i.i.i.i.i.i, 23 + %shl.i.i186.i.i.i.i.i.i.i.i.i = add i32 %add7.i.i185.i.i.i.i.i.i.i.i.i, 1065353216 + %or.i.i187.i.i.i.i.i.i.i.i.i = or i32 %shl.i.i186.i.i.i.i.i.i.i.i.i, %and.i.i184.i.i.i.i.i.i.i.i.i + %157 = bitcast i32 %or.i.i187.i.i.i.i.i.i.i.i.i to float + br label %_ZN4pbrt7FastExpEf.exit.i188.i.i.i.i.i.i.i.i.i + +_ZN4pbrt7FastExpEf.exit.i188.i.i.i.i.i.i.i.i.i: ; preds = %if.end5.i.i183.i.i.i.i.i.i.i.i.i, %if.end.i.i181.i.i.i.i.i.i.i.i.i, %for.body.i171.i.i.i.i.i.i.i.i.i + %retval.0.i.i189.i.i.i.i.i.i.i.i.i = phi float [ %157, %if.end5.i.i183.i.i.i.i.i.i.i.i.i ], [ 0.000000e+00, %for.body.i171.i.i.i.i.i.i.i.i.i ], [ 0x7FF0000000000000, %if.end.i.i181.i.i.i.i.i.i.i.i.i ] + %arrayidx.i.i6.i190.i.i.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i170.i.i.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i172.i.i.i.i.i.i.i.i.i + store float %retval.0.i.i189.i.i.i.i.i.i.i.i.i, ptr %arrayidx.i.i6.i190.i.i.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i191.i.i.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i172.i.i.i.i.i.i.i.i.i, 1 + %exitcond.not.i192.i.i.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i191.i.i.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i192.i.i.i.i.i.i.i.i.i, label %invoke.cont119.i.i.i.i.i.i.i.i.i, label %for.body.i171.i.i.i.i.i.i.i.i.i, !llvm.loop !111 + +invoke.cont119.i.i.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i188.i.i.i.i.i.i.i.i.i + %.fca.0.load.i193.i.i.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i170.i.i.i.i.i.i.i.i.i, align 8 + %.fca.1.load.i196.i.i.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i195.i.i.i.i.i.i.i.i.i, align 8 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i170.i.i.i.i.i.i.i.i.i) + store <2 x float> %.fca.0.load.i193.i.i.i.i.i.i.i.i.i, ptr %ref.tmp109.i.i.i.i.i.i.i.i.i, align 8 + store <2 x float> %.fca.1.load.i196.i.i.i.i.i.i.i.i.i, ptr %67, align 8 + br label %for.body.i199.i.i.i.i.i.i.i.i.i + +for.body.i199.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i199.i.i.i.i.i.i.i.i.i, %invoke.cont119.i.i.i.i.i.i.i.i.i + %indvars.iv.i200.i.i.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont119.i.i.i.i.i.i.i.i.i ], [ %indvars.iv.next.i204.i.i.i.i.i.i.i.i.i, %for.body.i199.i.i.i.i.i.i.i.i.i ] + %arrayidx.i.i201.i.i.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp109.i.i.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i200.i.i.i.i.i.i.i.i.i + %158 = load float, ptr %arrayidx.i.i201.i.i.i.i.i.i.i.i.i, align 4 + %arrayidx.i4.i202.i.i.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %T_maj.i.i.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i200.i.i.i.i.i.i.i.i.i + %159 = load float, ptr %arrayidx.i4.i202.i.i.i.i.i.i.i.i.i, align 4 + %mul.i203.i.i.i.i.i.i.i.i.i = fmul float %158, %159 + store float %mul.i203.i.i.i.i.i.i.i.i.i, ptr %arrayidx.i4.i202.i.i.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i204.i.i.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i200.i.i.i.i.i.i.i.i.i, 1 + %exitcond.not.i205.i.i.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i204.i.i.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i205.i.i.i.i.i.i.i.i.i, label %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.i.i.i.i.i.i.i.i.i, label %for.body.i199.i.i.i.i.i.i.i.i.i, !llvm.loop !112 + +_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.thread.i.i.i.i.i.i.i.i.i: ; preds = %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.i.i.i.i.i.i.i.i.i, %for.body.i39.i.i.i.i.i.i.i.i.i, %while.cond.preheader.i.i.i.i.i.i.i.i.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i.i.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %T_maj.i.i.i.i.i.i.i.i.i, i64 16, i1 false) br label %"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_17HomogeneousMediumEEEDaSH_.exit.i.i.i.i.i.i.i" -_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i202.i.i.i.i.i.i.i.i.i +_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i199.i.i.i.i.i.i.i.i.i %.pre.i.i.i.i.i.i.i.i = load i8, ptr %called.i.i.i.i.i.i.i.i.i.i, align 4, !noalias !107 %160 = and i8 %.pre.i.i.i.i.i.i.i.i, 1 %tobool.not.i.i.i.i.i.i.i.i.i.i = icmp eq i8 %160, 0 - br i1 %tobool.not.i.i.i.i.i.i.i.i.i.i, label %invoke.cont9.i.i.i.i.i.i.i.i.i, label %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.thread.i.i.i.i.i.i.i.i.i + br i1 %tobool.not.i.i.i.i.i.i.i.i.i.i, label %invoke.cont9.i.i.i.i.i.i.i.i.i, label %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.thread.i.i.i.i.i.i.i.i.i while.end126.i.i.i.i.i.i.i.i.i: ; preds = %invoke.cont76.i.i.i.i.i.i.i.i.i call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i.i.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) - br label %for.body.i.i214.i.i.i.i.i.i.i.i.i + br label %for.body.i.i211.i.i.i.i.i.i.i.i.i -for.body.i.i214.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i214.i.i.i.i.i.i.i.i.i, %while.end126.i.i.i.i.i.i.i.i.i - %indvars.iv.i.i215.i.i.i.i.i.i.i.i.i = phi i64 [ 0, %while.end126.i.i.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i217.i.i.i.i.i.i.i.i.i, %for.body.i.i214.i.i.i.i.i.i.i.i.i ] - %arrayidx.i.i216.i.i.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i215.i.i.i.i.i.i.i.i.i - store float 1.000000e+00, ptr %arrayidx.i.i216.i.i.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i.i217.i.i.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i215.i.i.i.i.i.i.i.i.i, 1 - %exitcond.not.i.i218.i.i.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i217.i.i.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i.i218.i.i.i.i.i.i.i.i.i, label %"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_17HomogeneousMediumEEEDaSH_.exit.i.i.i.i.i.i.i", label %for.body.i.i214.i.i.i.i.i.i.i.i.i, !llvm.loop !103 +for.body.i.i211.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i211.i.i.i.i.i.i.i.i.i, %while.end126.i.i.i.i.i.i.i.i.i + %indvars.iv.i.i212.i.i.i.i.i.i.i.i.i = phi i64 [ 0, %while.end126.i.i.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i214.i.i.i.i.i.i.i.i.i, %for.body.i.i211.i.i.i.i.i.i.i.i.i ] + %arrayidx.i.i213.i.i.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i212.i.i.i.i.i.i.i.i.i + store float 1.000000e+00, ptr %arrayidx.i.i213.i.i.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i.i214.i.i.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i212.i.i.i.i.i.i.i.i.i, 1 + %exitcond.not.i.i215.i.i.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i214.i.i.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i.i215.i.i.i.i.i.i.i.i.i, label %"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_17HomogeneousMediumEEEDaSH_.exit.i.i.i.i.i.i.i", label %for.body.i.i211.i.i.i.i.i.i.i.i.i, !llvm.loop !103 -"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_17HomogeneousMediumEEEDaSH_.exit.i.i.i.i.i.i.i": ; preds = %for.body.i.i214.i.i.i.i.i.i.i.i.i, %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.thread.i.i.i.i.i.i.i.i.i +"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_17HomogeneousMediumEEEDaSH_.exit.i.i.i.i.i.i.i": ; preds = %for.body.i.i211.i.i.i.i.i.i.i.i.i, %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.thread.i.i.i.i.i.i.i.i.i %.fca.0.load.i.i.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i.i.i.i.i.i.i.i.i, align 8 %.fca.1.load.i.i.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i.i.i.i.i.i.i.i.i, align 8 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %agg.tmp21.i.i.i.i.i.i.i.i) @@ -11823,9 +11815,9 @@ for.body.i.i214.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i214.i.i sw.bb4.i.i.i.i.i.i.i: ; preds = %cond.end.i.i.i.i call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %agg.tmp21.i24.i.i.i.i.i.i.i) store ptr %T_ray.i.i.i.i, ptr %agg.tmp21.i24.i.i.i.i.i.i.i, align 8 - store ptr %r_l.i.i.i.i, ptr %agg.tmp2751.sroa.8.0.agg.tmp21.i24.i.i.i.sroa_idx.i.i.i.i, align 8 - store ptr %r_u.i.i.i.i, ptr %agg.tmp2751.sroa.9.0.agg.tmp21.i24.i.i.i.sroa_idx.i.i.i.i, align 8 - store ptr %rng.i.i.i.i, ptr %agg.tmp2751.sroa.10.0.agg.tmp21.i24.i.i.i.sroa_idx.i.i.i.i, align 8 + store ptr %r_l.i.i.i.i, ptr %agg.tmp2750.sroa.8.0.agg.tmp21.i24.i.i.i.sroa_idx.i.i.i.i, align 8 + store ptr %r_u.i.i.i.i, ptr %agg.tmp2750.sroa.9.0.agg.tmp21.i24.i.i.i.sroa_idx.i.i.i.i, align 8 + store ptr %rng.i.i.i.i, ptr %agg.tmp2750.sroa.10.0.agg.tmp21.i24.i.i.i.sroa_idx.i.i.i.i, align 8 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i.i16.i.i.i.i.i.i.i) call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %iter.i.i17.i.i.i.i.i.i.i) call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %agg.tmp7.i.i18.i.i.i.i.i.i.i) @@ -11840,25 +11832,25 @@ sw.bb4.i.i.i.i.i.i.i: ; preds = %cond.end.i.i.i.i call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp96.i.i.i.i.i.i.i.i.i) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp108.i.i.i.i.i.i.i.i.i) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp109.i.i23.i.i.i.i.i.i.i) - %161 = fmul <2 x float> %ray.sroa.14.0349.i.i.i.i, %ray.sroa.14.0349.i.i.i.i + %161 = fmul <2 x float> %ray.sroa.14.0348.i.i.i.i, %ray.sroa.14.0348.i.i.i.i %shift182 = shufflevector <2 x float> %161, <2 x float> poison, <2 x i32> %162 = fadd <2 x float> %161, %shift182 %add.i.i.i.i41.i.i.i.i.i.i.i = extractelement <2 x float> %162, i64 0 - %mul.i2.i.i.i.i42.i.i.i.i.i.i.i = fmul float %ray.sroa.22.0350.i.i.i.i, %ray.sroa.22.0350.i.i.i.i + %mul.i2.i.i.i.i42.i.i.i.i.i.i.i = fmul float %ray.sroa.22.0349.i.i.i.i, %ray.sroa.22.0349.i.i.i.i %add3.i.i.i.i43.i.i.i.i.i.i.i = fadd float %mul.i2.i.i.i.i42.i.i.i.i.i.i.i, %add.i.i.i.i41.i.i.i.i.i.i.i %sqrt.i.i.i44.i.i.i.i.i.i.i = call noundef float @llvm.sqrt.f32(float %add3.i.i.i.i43.i.i.i.i.i.i.i) %mul.i.i45.i.i.i.i.i.i.i = fmul float %sqrt.i.i.i44.i.i.i.i.i.i.i, %cond.i.i.i.i %163 = insertelement <2 x float> poison, float %sqrt.i.i.i44.i.i.i.i.i.i.i, i64 0 %164 = shufflevector <2 x float> %163, <2 x float> poison, <2 x i32> zeroinitializer - %165 = fdiv <2 x float> %ray.sroa.14.0349.i.i.i.i, %164 - %div3.i.i.i.i48.i.i.i.i.i.i.i = fdiv float %ray.sroa.22.0350.i.i.i.i, %sqrt.i.i.i44.i.i.i.i.i.i.i - %166 = inttoptr i64 %and.i40280286.i.i.i.i to ptr - store <2 x float> %ray.sroa.0.0347.i.i.i.i, ptr %agg.tmp7.i.i18.i.i.i.i.i.i.i, align 8 - store float %ray.sroa.9.0348.i.i.i.i, ptr %agg.tmp.sroa.6.0.agg.tmp7.i.sroa_idx.i53.i.i.i.i.i.i.i, align 8 + %165 = fdiv <2 x float> %ray.sroa.14.0348.i.i.i.i, %164 + %div3.i.i.i.i48.i.i.i.i.i.i.i = fdiv float %ray.sroa.22.0349.i.i.i.i, %sqrt.i.i.i44.i.i.i.i.i.i.i + %166 = inttoptr i64 %and.i40279285.i.i.i.i to ptr + store <2 x float> %ray.sroa.0.0346.i.i.i.i, ptr %agg.tmp7.i.i18.i.i.i.i.i.i.i, align 8 + store float %ray.sroa.9.0347.i.i.i.i, ptr %agg.tmp.sroa.6.0.agg.tmp7.i.sroa_idx.i53.i.i.i.i.i.i.i, align 8 store <2 x float> %165, ptr %agg.tmp.sroa.8.0.agg.tmp7.i.sroa_idx.i54.i.i.i.i.i.i.i, align 4 store float %div3.i.i.i.i48.i.i.i.i.i.i.i, ptr %agg.tmp.sroa.14.0.agg.tmp7.i.sroa_idx.i55.i.i.i.i.i.i.i, align 4 - store float %ray.sroa.28.0351.i.i.i.i, ptr %agg.tmp.sroa.18.0.agg.tmp7.i.sroa_idx.i56.i.i.i.i.i.i.i, align 8 - store i64 %ray.sroa.30.0352.i.i.i.i, ptr %medium.i.i.i57.i.i.i.i.i.i.i, align 8 + store float %ray.sroa.28.0350.i.i.i.i, ptr %agg.tmp.sroa.18.0.agg.tmp7.i.sroa_idx.i56.i.i.i.i.i.i.i, align 8 + store i64 %ray.sroa.30.0351.i.i.i.i, ptr %medium.i.i.i57.i.i.i.i.i.i.i, align 8 call void @_ZNK4pbrt10GridMedium9SampleRayENS_3RayEfRKNS_18SampledWavelengthsE(ptr nonnull sret(%"class.pbrt::DDAMajorantIterator") align 8 %iter.i.i17.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(520) %166, ptr noundef nonnull %agg.tmp7.i.i18.i.i.i.i.i.i.i, float noundef %mul.i.i45.i.i.i.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(32) %lambda.i.i.i.i) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %T_maj.i.i19.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) br label %for.body.i.i.i.i58.i.i.i.i.i.i.i @@ -11876,14 +11868,14 @@ while.cond.preheader.i.i63.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i58. %167 = load i8, ptr %set.i.i.i.i.i.i.i.i.i.i, align 4 %168 = and i8 %167, 1 %tobool.i.not.i.i42.i.i.i.i.i.i.i = icmp eq i8 %168, 0 - br i1 %tobool.i.not.i.i42.i.i.i.i.i.i.i, label %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.thread.i.i235.i.i.i.i.i.i.i, label %invoke.cont.i.i.i.i.i.i.i.i.i + br i1 %tobool.i.not.i.i42.i.i.i.i.i.i.i, label %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.thread.i.i231.i.i.i.i.i.i.i, label %invoke.cont.i.i.i.i.i.i.i.i.i -_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.thread.i.i235.i.i.i.i.i.i.i: ; preds = %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.i.i130.i.i.i.i.i.i.i, %while.cond.preheader.i.i63.i.i.i.i.i.i.i +_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.thread.i.i231.i.i.i.i.i.i.i: ; preds = %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.i.i126.i.i.i.i.i.i.i, %while.cond.preheader.i.i63.i.i.i.i.i.i.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i.i16.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %T_maj.i.i19.i.i.i.i.i.i.i, i64 16, i1 false) br label %"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_10GridMediumEEEDaSH_.exit.i.i.i.i.i.i.i" -invoke.cont.i.i.i.i.i.i.i.i.i: ; preds = %while.cond.preheader.i.i63.i.i.i.i.i.i.i, %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.i.i130.i.i.i.i.i.i.i - %u.addr.0.i23.i43.i.i.i.i.i.i.i = phi float [ %u.addr.2270.i.i.i.i.i.i.i.i.i, %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.i.i130.i.i.i.i.i.i.i ], [ %.sroa.speculated.i.i.i.i.i, %while.cond.preheader.i.i63.i.i.i.i.i.i.i ] +invoke.cont.i.i.i.i.i.i.i.i.i: ; preds = %while.cond.preheader.i.i63.i.i.i.i.i.i.i, %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.i.i126.i.i.i.i.i.i.i + %u.addr.0.i23.i43.i.i.i.i.i.i.i = phi float [ %u.addr.2267.i.i.i.i.i.i.i.i.i, %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.i.i126.i.i.i.i.i.i.i ], [ %.sroa.speculated.i.i.i.i.i, %while.cond.preheader.i.i63.i.i.i.i.i.i.i ] %169 = load float, ptr %sigma_maj.i.i.i.i.i.i.i.i.i, align 4 %cmp.i.i72.i.i.i.i.i.i.i = fcmp oeq float %169, 0.000000e+00 br i1 %cmp.i.i72.i.i.i.i.i.i.i, label %invoke.cont17.i.i.i.i.i.i.i.i.i, label %invoke.cont48.preheader.i.i.i.i.i.i.i.i.i @@ -11891,112 +11883,112 @@ invoke.cont.i.i.i.i.i.i.i.i.i: ; preds = %while.cond.preheade invoke.cont17.i.i.i.i.i.i.i.i.i: ; preds = %invoke.cont.i.i.i.i.i.i.i.i.i %170 = load float, ptr %tMax54.i.i.i.i.i.i.i.i.i, align 4 %171 = load float, ptr %seg.i.i.i.i.i.i.i.i.i, align 4 - %sub.i.i193.i.i.i.i.i.i.i = fsub float %170, %171 - %172 = call float @llvm.fabs.f32(float %sub.i.i193.i.i.i.i.i.i.i) + %sub.i.i189.i.i.i.i.i.i.i = fsub float %170, %171 + %172 = call float @llvm.fabs.f32(float %sub.i.i189.i.i.i.i.i.i.i) %173 = fcmp oeq float %172, 0x7FF0000000000000 - %dt.0.i.i194.i.i.i.i.i.i.i = select i1 %173, float 0x47EFFFFFE0000000, float %sub.i.i193.i.i.i.i.i.i.i - %fneg.i.i195.i.i.i.i.i.i.i = fneg float %dt.0.i.i194.i.i.i.i.i.i.i + %dt.0.i.i190.i.i.i.i.i.i.i = select i1 %173, float 0x47EFFFFFE0000000, float %sub.i.i189.i.i.i.i.i.i.i + %fneg.i.i191.i.i.i.i.i.i.i = fneg float %dt.0.i.i190.i.i.i.i.i.i.i call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i.i.i.i15.i.i.i.i.i.i.i) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i.i.i.i15.i.i.i.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(16) %sigma_maj.i.i.i.i.i.i.i.i.i, i64 16, i1 false) - br label %for.body.i.i29.i.i196.i.i.i.i.i.i.i - -for.body.i.i29.i.i196.i.i.i.i.i.i.i: ; preds = %for.body.i.i29.i.i196.i.i.i.i.i.i.i, %invoke.cont17.i.i.i.i.i.i.i.i.i - %indvars.iv.i.i30.i.i197.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont17.i.i.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i31.i.i200.i.i.i.i.i.i.i, %for.body.i.i29.i.i196.i.i.i.i.i.i.i ] - %arrayidx.i.i.i.i.i198.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i.i.i15.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i30.i.i197.i.i.i.i.i.i.i - %174 = load float, ptr %arrayidx.i.i.i.i.i198.i.i.i.i.i.i.i, align 4 - %mul.i.i.i.i199.i.i.i.i.i.i.i = fmul float %174, %fneg.i.i195.i.i.i.i.i.i.i - store float %mul.i.i.i.i199.i.i.i.i.i.i.i, ptr %arrayidx.i.i.i.i.i198.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i.i31.i.i200.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i30.i.i197.i.i.i.i.i.i.i, 1 - %exitcond.not.i.i32.i.i201.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i31.i.i200.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i.i32.i.i201.i.i.i.i.i.i.i, label %invoke.cont27.i.i.i.i.i.i.i.i.i, label %for.body.i.i29.i.i196.i.i.i.i.i.i.i, !llvm.loop !110 - -invoke.cont27.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i29.i.i196.i.i.i.i.i.i.i - %.fca.0.load.i.i.i.i202.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i.i.i.i15.i.i.i.i.i.i.i, align 8 - %.fca.1.load.i.i.i.i203.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i.i.i.i.i.i.i.i.i.i.i, align 8 + br label %for.body.i.i29.i.i192.i.i.i.i.i.i.i + +for.body.i.i29.i.i192.i.i.i.i.i.i.i: ; preds = %for.body.i.i29.i.i192.i.i.i.i.i.i.i, %invoke.cont17.i.i.i.i.i.i.i.i.i + %indvars.iv.i.i30.i.i193.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont17.i.i.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i31.i.i196.i.i.i.i.i.i.i, %for.body.i.i29.i.i192.i.i.i.i.i.i.i ] + %arrayidx.i.i.i.i.i194.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i.i.i15.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i30.i.i193.i.i.i.i.i.i.i + %174 = load float, ptr %arrayidx.i.i.i.i.i194.i.i.i.i.i.i.i, align 4 + %mul.i.i.i.i195.i.i.i.i.i.i.i = fmul float %174, %fneg.i.i191.i.i.i.i.i.i.i + store float %mul.i.i.i.i195.i.i.i.i.i.i.i, ptr %arrayidx.i.i.i.i.i194.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i.i31.i.i196.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i30.i.i193.i.i.i.i.i.i.i, 1 + %exitcond.not.i.i32.i.i197.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i31.i.i196.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i.i32.i.i197.i.i.i.i.i.i.i, label %invoke.cont27.i.i.i.i.i.i.i.i.i, label %for.body.i.i29.i.i192.i.i.i.i.i.i.i, !llvm.loop !110 + +invoke.cont27.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i29.i.i192.i.i.i.i.i.i.i + %.fca.0.load.i.i.i.i198.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i.i.i.i15.i.i.i.i.i.i.i, align 8 + %.fca.1.load.i.i.i.i199.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i.i.i.i.i.i.i.i.i.i.i, align 8 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i.i.i.i15.i.i.i.i.i.i.i) - store <2 x float> %.fca.0.load.i.i.i.i202.i.i.i.i.i.i.i, ptr %ref.tmp23.i.i20.i.i.i.i.i.i.i, align 8 - store <2 x float> %.fca.1.load.i.i.i.i203.i.i.i.i.i.i.i, ptr %62, align 8 + store <2 x float> %.fca.0.load.i.i.i.i198.i.i.i.i.i.i.i, ptr %ref.tmp23.i.i20.i.i.i.i.i.i.i, align 8 + store <2 x float> %.fca.1.load.i.i.i.i199.i.i.i.i.i.i.i, ptr %62, align 8 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i.i.i14.i.i.i.i.i.i.i) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i.i.i14.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) - br label %for.body.i.i.i204.i.i.i.i.i.i.i - -for.body.i.i.i204.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i.i.i221.i.i.i.i.i.i.i, %invoke.cont27.i.i.i.i.i.i.i.i.i - %indvars.iv.i.i.i205.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont27.i.i.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i.i224.i.i.i.i.i.i.i, %_ZN4pbrt7FastExpEf.exit.i.i.i221.i.i.i.i.i.i.i ] - %arrayidx.i.i.i35.i.i206.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp23.i.i20.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i.i205.i.i.i.i.i.i.i - %175 = load float, ptr %arrayidx.i.i.i35.i.i206.i.i.i.i.i.i.i, align 4 - %mul.i.i36.i.i207.i.i.i.i.i.i.i = fmul float %175, 0x3FF7154760000000 - %176 = call noundef float @llvm.floor.f32(float %mul.i.i36.i.i207.i.i.i.i.i.i.i) - %sub.i.i.i.i208.i.i.i.i.i.i.i = fsub float %mul.i.i36.i.i207.i.i.i.i.i.i.i, %176 - %conv.i4.i.i.i209.i.i.i.i.i.i.i = fptosi float %176 to i32 - %177 = call noundef float @llvm.fma.f32(float %sub.i.i.i.i208.i.i.i.i.i.i.i, float 0x3FB4015920000000, float 0x3FCCF34160000000) - %178 = call noundef float @llvm.fma.f32(float %sub.i.i.i.i208.i.i.i.i.i.i.i, float %177, float 0x3FE6420080000000) - %179 = call noundef float @llvm.fma.f32(float %sub.i.i.i.i208.i.i.i.i.i.i.i, float %178, float 1.000000e+00) + br label %for.body.i.i.i200.i.i.i.i.i.i.i + +for.body.i.i.i200.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i.i.i217.i.i.i.i.i.i.i, %invoke.cont27.i.i.i.i.i.i.i.i.i + %indvars.iv.i.i.i201.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont27.i.i.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i.i220.i.i.i.i.i.i.i, %_ZN4pbrt7FastExpEf.exit.i.i.i217.i.i.i.i.i.i.i ] + %arrayidx.i.i.i35.i.i202.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp23.i.i20.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i.i201.i.i.i.i.i.i.i + %175 = load float, ptr %arrayidx.i.i.i35.i.i202.i.i.i.i.i.i.i, align 4 + %mul.i.i36.i.i203.i.i.i.i.i.i.i = fmul float %175, 0x3FF7154760000000 + %176 = call noundef float @llvm.floor.f32(float %mul.i.i36.i.i203.i.i.i.i.i.i.i) + %sub.i.i.i.i204.i.i.i.i.i.i.i = fsub float %mul.i.i36.i.i203.i.i.i.i.i.i.i, %176 + %conv.i4.i.i.i205.i.i.i.i.i.i.i = fptosi float %176 to i32 + %177 = call noundef float @llvm.fma.f32(float %sub.i.i.i.i204.i.i.i.i.i.i.i, float 0x3FB4015920000000, float 0x3FCCF34160000000) + %178 = call noundef float @llvm.fma.f32(float %sub.i.i.i.i204.i.i.i.i.i.i.i, float %177, float 0x3FE6420080000000) + %179 = call noundef float @llvm.fma.f32(float %sub.i.i.i.i204.i.i.i.i.i.i.i, float %178, float 1.000000e+00) %180 = bitcast float %179 to i32 - %shr.i.i.i.i.i210.i.i.i.i.i.i.i = lshr i32 %180, 23 - %sub.i.i.i.i.i211.i.i.i.i.i.i.i = add i32 %conv.i4.i.i.i209.i.i.i.i.i.i.i, -127 - %add.i.i37.i.i212.i.i.i.i.i.i.i = add i32 %sub.i.i.i.i.i211.i.i.i.i.i.i.i, %shr.i.i.i.i.i210.i.i.i.i.i.i.i - %cmp.i.i.i.i213.i.i.i.i.i.i.i = icmp slt i32 %add.i.i37.i.i212.i.i.i.i.i.i.i, -126 - br i1 %cmp.i.i.i.i213.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i.i.i221.i.i.i.i.i.i.i, label %if.end.i.i.i.i214.i.i.i.i.i.i.i - -if.end.i.i.i.i214.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i204.i.i.i.i.i.i.i - %cmp3.i.i.i.i215.i.i.i.i.i.i.i = icmp sgt i32 %add.i.i37.i.i212.i.i.i.i.i.i.i, 127 - br i1 %cmp3.i.i.i.i215.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i.i.i221.i.i.i.i.i.i.i, label %if.end5.i.i.i.i216.i.i.i.i.i.i.i - -if.end5.i.i.i.i216.i.i.i.i.i.i.i: ; preds = %if.end.i.i.i.i214.i.i.i.i.i.i.i - %and.i.i38.i.i217.i.i.i.i.i.i.i = and i32 %180, -2139095041 - %add7.i.i.i.i218.i.i.i.i.i.i.i = shl nsw i32 %add.i.i37.i.i212.i.i.i.i.i.i.i, 23 - %shl.i.i.i.i219.i.i.i.i.i.i.i = add i32 %add7.i.i.i.i218.i.i.i.i.i.i.i, 1065353216 - %or.i.i.i.i220.i.i.i.i.i.i.i = or i32 %shl.i.i.i.i219.i.i.i.i.i.i.i, %and.i.i38.i.i217.i.i.i.i.i.i.i - %181 = bitcast i32 %or.i.i.i.i220.i.i.i.i.i.i.i to float - br label %_ZN4pbrt7FastExpEf.exit.i.i.i221.i.i.i.i.i.i.i - -_ZN4pbrt7FastExpEf.exit.i.i.i221.i.i.i.i.i.i.i: ; preds = %if.end5.i.i.i.i216.i.i.i.i.i.i.i, %if.end.i.i.i.i214.i.i.i.i.i.i.i, %for.body.i.i.i204.i.i.i.i.i.i.i - %retval.0.i.i.i.i222.i.i.i.i.i.i.i = phi float [ %181, %if.end5.i.i.i.i216.i.i.i.i.i.i.i ], [ 0.000000e+00, %for.body.i.i.i204.i.i.i.i.i.i.i ], [ 0x7FF0000000000000, %if.end.i.i.i.i214.i.i.i.i.i.i.i ] - %arrayidx.i.i6.i.i.i223.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i.i14.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i.i205.i.i.i.i.i.i.i - store float %retval.0.i.i.i.i222.i.i.i.i.i.i.i, ptr %arrayidx.i.i6.i.i.i223.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i.i.i224.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i.i205.i.i.i.i.i.i.i, 1 - %exitcond.not.i.i.i225.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i.i224.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i.i.i225.i.i.i.i.i.i.i, label %invoke.cont31.i.i.i.i.i.i.i.i.i, label %for.body.i.i.i204.i.i.i.i.i.i.i, !llvm.loop !111 - -invoke.cont31.i.i.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i.i.i221.i.i.i.i.i.i.i - %.fca.0.load.i.i.i226.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i.i.i14.i.i.i.i.i.i.i, align 8 - %.fca.1.load.i.i.i227.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i.i.i71.i.i.i.i.i.i.i, align 8 + %shr.i.i.i.i.i206.i.i.i.i.i.i.i = lshr i32 %180, 23 + %sub.i.i.i.i.i207.i.i.i.i.i.i.i = add i32 %conv.i4.i.i.i205.i.i.i.i.i.i.i, -127 + %add.i.i37.i.i208.i.i.i.i.i.i.i = add i32 %sub.i.i.i.i.i207.i.i.i.i.i.i.i, %shr.i.i.i.i.i206.i.i.i.i.i.i.i + %cmp.i.i.i.i209.i.i.i.i.i.i.i = icmp slt i32 %add.i.i37.i.i208.i.i.i.i.i.i.i, -126 + br i1 %cmp.i.i.i.i209.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i.i.i217.i.i.i.i.i.i.i, label %if.end.i.i.i.i210.i.i.i.i.i.i.i + +if.end.i.i.i.i210.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i200.i.i.i.i.i.i.i + %cmp3.i.i.i.i211.i.i.i.i.i.i.i = icmp sgt i32 %add.i.i37.i.i208.i.i.i.i.i.i.i, 127 + br i1 %cmp3.i.i.i.i211.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i.i.i217.i.i.i.i.i.i.i, label %if.end5.i.i.i.i212.i.i.i.i.i.i.i + +if.end5.i.i.i.i212.i.i.i.i.i.i.i: ; preds = %if.end.i.i.i.i210.i.i.i.i.i.i.i + %and.i.i38.i.i213.i.i.i.i.i.i.i = and i32 %180, -2139095041 + %add7.i.i.i.i214.i.i.i.i.i.i.i = shl nsw i32 %add.i.i37.i.i208.i.i.i.i.i.i.i, 23 + %shl.i.i.i.i215.i.i.i.i.i.i.i = add i32 %add7.i.i.i.i214.i.i.i.i.i.i.i, 1065353216 + %or.i.i.i.i216.i.i.i.i.i.i.i = or i32 %shl.i.i.i.i215.i.i.i.i.i.i.i, %and.i.i38.i.i213.i.i.i.i.i.i.i + %181 = bitcast i32 %or.i.i.i.i216.i.i.i.i.i.i.i to float + br label %_ZN4pbrt7FastExpEf.exit.i.i.i217.i.i.i.i.i.i.i + +_ZN4pbrt7FastExpEf.exit.i.i.i217.i.i.i.i.i.i.i: ; preds = %if.end5.i.i.i.i212.i.i.i.i.i.i.i, %if.end.i.i.i.i210.i.i.i.i.i.i.i, %for.body.i.i.i200.i.i.i.i.i.i.i + %retval.0.i.i.i.i218.i.i.i.i.i.i.i = phi float [ %181, %if.end5.i.i.i.i212.i.i.i.i.i.i.i ], [ 0.000000e+00, %for.body.i.i.i200.i.i.i.i.i.i.i ], [ 0x7FF0000000000000, %if.end.i.i.i.i210.i.i.i.i.i.i.i ] + %arrayidx.i.i6.i.i.i219.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i.i14.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i.i201.i.i.i.i.i.i.i + store float %retval.0.i.i.i.i218.i.i.i.i.i.i.i, ptr %arrayidx.i.i6.i.i.i219.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i.i.i220.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i.i201.i.i.i.i.i.i.i, 1 + %exitcond.not.i.i.i221.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i.i220.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i.i.i221.i.i.i.i.i.i.i, label %invoke.cont31.i.i.i.i.i.i.i.i.i, label %for.body.i.i.i200.i.i.i.i.i.i.i, !llvm.loop !111 + +invoke.cont31.i.i.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i.i.i217.i.i.i.i.i.i.i + %.fca.0.load.i.i.i222.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i.i.i14.i.i.i.i.i.i.i, align 8 + %.fca.1.load.i.i.i223.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i.i.i71.i.i.i.i.i.i.i, align 8 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i.i.i14.i.i.i.i.i.i.i) - store <2 x float> %.fca.0.load.i.i.i226.i.i.i.i.i.i.i, ptr %ref.tmp22.i.i.i.i.i.i.i.i.i, align 8 - store <2 x float> %.fca.1.load.i.i.i227.i.i.i.i.i.i.i, ptr %63, align 8 - br label %for.body.i39.i.i228.i.i.i.i.i.i.i - -for.body.i39.i.i228.i.i.i.i.i.i.i: ; preds = %for.body.i39.i.i228.i.i.i.i.i.i.i, %invoke.cont31.i.i.i.i.i.i.i.i.i - %indvars.iv.i40.i.i229.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont31.i.i.i.i.i.i.i.i.i ], [ %indvars.iv.next.i42.i.i233.i.i.i.i.i.i.i, %for.body.i39.i.i228.i.i.i.i.i.i.i ] - %arrayidx.i.i41.i.i230.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp22.i.i.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i40.i.i229.i.i.i.i.i.i.i - %182 = load float, ptr %arrayidx.i.i41.i.i230.i.i.i.i.i.i.i, align 4 - %arrayidx.i4.i.i.i231.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %T_maj.i.i19.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i40.i.i229.i.i.i.i.i.i.i - %183 = load float, ptr %arrayidx.i4.i.i.i231.i.i.i.i.i.i.i, align 4 - %mul.i.i.i232.i.i.i.i.i.i.i = fmul float %182, %183 - store float %mul.i.i.i232.i.i.i.i.i.i.i, ptr %arrayidx.i4.i.i.i231.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i42.i.i233.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i40.i.i229.i.i.i.i.i.i.i, 1 - %exitcond.not.i43.i.i234.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i42.i.i233.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i43.i.i234.i.i.i.i.i.i.i, label %_ZN4pbrt15SampledSpectrummLERKS0_.exit.i.i.i.i.i.i.i.i.i, label %for.body.i39.i.i228.i.i.i.i.i.i.i, !llvm.loop !112 - -_ZN4pbrt15SampledSpectrummLERKS0_.exit.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i39.i.i228.i.i.i.i.i.i.i - br label %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.i.i130.i.i.i.i.i.i.i, !llvm.loop !114 + store <2 x float> %.fca.0.load.i.i.i222.i.i.i.i.i.i.i, ptr %ref.tmp22.i.i.i.i.i.i.i.i.i, align 8 + store <2 x float> %.fca.1.load.i.i.i223.i.i.i.i.i.i.i, ptr %63, align 8 + br label %for.body.i39.i.i224.i.i.i.i.i.i.i + +for.body.i39.i.i224.i.i.i.i.i.i.i: ; preds = %for.body.i39.i.i224.i.i.i.i.i.i.i, %invoke.cont31.i.i.i.i.i.i.i.i.i + %indvars.iv.i40.i.i225.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont31.i.i.i.i.i.i.i.i.i ], [ %indvars.iv.next.i42.i.i229.i.i.i.i.i.i.i, %for.body.i39.i.i224.i.i.i.i.i.i.i ] + %arrayidx.i.i41.i.i226.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp22.i.i.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i40.i.i225.i.i.i.i.i.i.i + %182 = load float, ptr %arrayidx.i.i41.i.i226.i.i.i.i.i.i.i, align 4 + %arrayidx.i4.i.i.i227.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %T_maj.i.i19.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i40.i.i225.i.i.i.i.i.i.i + %183 = load float, ptr %arrayidx.i4.i.i.i227.i.i.i.i.i.i.i, align 4 + %mul.i.i.i228.i.i.i.i.i.i.i = fmul float %182, %183 + store float %mul.i.i.i228.i.i.i.i.i.i.i, ptr %arrayidx.i4.i.i.i227.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i42.i.i229.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i40.i.i225.i.i.i.i.i.i.i, 1 + %exitcond.not.i43.i.i230.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i42.i.i229.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i43.i.i230.i.i.i.i.i.i.i, label %_ZN4pbrt15SampledSpectrummLERKS0_.exit.i.i.i.i.i.i.i.i.i, label %for.body.i39.i.i224.i.i.i.i.i.i.i, !llvm.loop !112 + +_ZN4pbrt15SampledSpectrummLERKS0_.exit.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i39.i.i224.i.i.i.i.i.i.i + br label %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.i.i126.i.i.i.i.i.i.i, !llvm.loop !114 invoke.cont48.preheader.i.i.i.i.i.i.i.i.i: ; preds = %invoke.cont.i.i.i.i.i.i.i.i.i %184 = load float, ptr %seg.i.i.i.i.i.i.i.i.i, align 4 br label %invoke.cont48.i.i.i.i.i.i.i.i.i -land.rhs.i.i51.invoke.i.i.i.i.i.i.invoke.i.i.i: ; preds = %if.end54.i.i.i.i, %invoke.cont97.i.i463.i.i.i.i.i.i.i, %invoke.cont86.i.i.i.i.i.i.i.i.i, %invoke.cont48.i.i315.i.i.i.i.i.i.i, %invoke.cont97.i.i.i.i.i.i.i.i.i, %invoke.cont75.i.i.i.i.i.i.i.i.i, %invoke.cont48.i.i.i.i.i.i.i.i.i, %invoke.cont97.i.i1016.i.i.i.i.i.i.i, %invoke.cont75.i.i983.i.i.i.i.i.i.i, %invoke.cont48.i.i868.i.i.i.i.i.i.i +land.rhs.i.i51.invoke.i.i.i.i.i.i.invoke.i.i.i: ; preds = %if.end54.i.i.i.i, %invoke.cont97.i.i455.i.i.i.i.i.i.i, %invoke.cont86.i.i.i.i.i.i.i.i.i, %invoke.cont48.i.i311.i.i.i.i.i.i.i, %invoke.cont97.i.i.i.i.i.i.i.i.i, %invoke.cont75.i.i.i.i.i.i.i.i.i, %invoke.cont48.i.i.i.i.i.i.i.i.i, %invoke.cont97.i.i1000.i.i.i.i.i.i.i, %invoke.cont75.i.i967.i.i.i.i.i.i.i, %invoke.cont48.i.i856.i.i.i.i.i.i.i call void @_ZN4pbrt8LogFatalIJRA4_KcEEEvNS_8LogLevelEPS1_iS5_DpOT_(i32 noundef 2, ptr noundef nonnull @.str.17, i32 noundef 235, ptr noundef nonnull @.str.18, ptr noundef nonnull align 1 dereferenceable(4) @.str.19) #24 unreachable invoke.cont48.i.i.i.i.i.i.i.i.i: ; preds = %invoke.cont97.i.i.i.i.i.i.i.i.i, %invoke.cont48.preheader.i.i.i.i.i.i.i.i.i - %u.addr.1244.i.i.i.i.i.i.i.i.i = phi float [ %.sroa.speculated.i.i.i90.i.i.i.i.i.i.i, %invoke.cont97.i.i.i.i.i.i.i.i.i ], [ %u.addr.0.i23.i43.i.i.i.i.i.i.i, %invoke.cont48.preheader.i.i.i.i.i.i.i.i.i ] - %tMin38.0243.i.i.i.i.i.i.i.i.i = phi float [ %add.i.i75.i.i.i.i.i.i.i, %invoke.cont97.i.i.i.i.i.i.i.i.i ], [ %184, %invoke.cont48.preheader.i.i.i.i.i.i.i.i.i ] + %u.addr.1241.i.i.i.i.i.i.i.i.i = phi float [ %.sroa.speculated.i.i.i86.i.i.i.i.i.i.i, %invoke.cont97.i.i.i.i.i.i.i.i.i ], [ %u.addr.0.i23.i43.i.i.i.i.i.i.i, %invoke.cont48.preheader.i.i.i.i.i.i.i.i.i ] + %tMin38.0240.i.i.i.i.i.i.i.i.i = phi float [ %add.i.i75.i.i.i.i.i.i.i, %invoke.cont97.i.i.i.i.i.i.i.i.i ], [ %184, %invoke.cont48.preheader.i.i.i.i.i.i.i.i.i ] %185 = load float, ptr %sigma_maj.i.i.i.i.i.i.i.i.i, align 4 - %sub.i.i.i73.i.i.i.i.i.i.i = fsub float 1.000000e+00, %u.addr.1244.i.i.i.i.i.i.i.i.i + %sub.i.i.i73.i.i.i.i.i.i.i = fsub float 1.000000e+00, %u.addr.1241.i.i.i.i.i.i.i.i.i %call.i.i.i.i74.i.i.i.i.i.i.i = call noundef float @logf(float noundef %sub.i.i.i73.i.i.i.i.i.i.i) #25 %186 = fdiv float %call.i.i.i.i74.i.i.i.i.i.i.i, %185 - %add.i.i75.i.i.i.i.i.i.i = fsub float %tMin38.0243.i.i.i.i.i.i.i.i.i, %186 + %add.i.i75.i.i.i.i.i.i.i = fsub float %tMin38.0240.i.i.i.i.i.i.i.i.i, %186 %187 = load i64, ptr %rng.i.i.i.i, align 8 %mul.i.i54.i.i76.i.i.i.i.i.i.i = mul i64 %187, 6364136223846793005 %188 = load i64, ptr %inc.i.i.i.i.i.i, align 8 @@ -12008,19 +12000,15 @@ invoke.cont48.i.i.i.i.i.i.i.i.i: ; preds = %invoke.cont97.i.i.i %conv.i.i.i.i79.i.i.i.i.i.i.i = trunc i64 %shr3.i.i.i.i78.i.i.i.i.i.i.i to i32 %shr4.i.i.i.i80.i.i.i.i.i.i.i = lshr i64 %187, 59 %conv5.i.i.i.i81.i.i.i.i.i.i.i = trunc i64 %shr4.i.i.i.i80.i.i.i.i.i.i.i to i32 - %shr6.i.i.i.i82.i.i.i.i.i.i.i = lshr i32 %conv.i.i.i.i79.i.i.i.i.i.i.i, %conv5.i.i.i.i81.i.i.i.i.i.i.i - %add7.i.i56.i.i83.i.i.i.i.i.i.i = sub nsw i32 0, %conv5.i.i.i.i81.i.i.i.i.i.i.i - %and.i.i57.i.i84.i.i.i.i.i.i.i = and i32 %add7.i.i56.i.i83.i.i.i.i.i.i.i, 31 - %shl.i.i58.i.i85.i.i.i.i.i.i.i = shl i32 %conv.i.i.i.i79.i.i.i.i.i.i.i, %and.i.i57.i.i84.i.i.i.i.i.i.i - %or.i.i59.i.i86.i.i.i.i.i.i.i = or i32 %shr6.i.i.i.i82.i.i.i.i.i.i.i, %shl.i.i58.i.i85.i.i.i.i.i.i.i - %conv.i.i.i87.i.i.i.i.i.i.i = uitofp i32 %or.i.i59.i.i86.i.i.i.i.i.i.i to float - %mul.i60.i.i88.i.i.i.i.i.i.i = fmul float %conv.i.i.i87.i.i.i.i.i.i.i, 0x3DF0000000000000 - %cmp.i.i61.i.i89.i.i.i.i.i.i.i = fcmp olt float %mul.i60.i.i88.i.i.i.i.i.i.i, 0x3FEFFFFFE0000000 - %.sroa.speculated.i.i.i90.i.i.i.i.i.i.i = select i1 %cmp.i.i61.i.i89.i.i.i.i.i.i.i, float %mul.i60.i.i88.i.i.i.i.i.i.i, float 0x3FEFFFFFE0000000 + %or.i.i56.i.i82.i.i.i.i.i.i.i = call noundef i32 @llvm.fshr.i32(i32 %conv.i.i.i.i79.i.i.i.i.i.i.i, i32 %conv.i.i.i.i79.i.i.i.i.i.i.i, i32 %conv5.i.i.i.i81.i.i.i.i.i.i.i) + %conv.i.i.i83.i.i.i.i.i.i.i = uitofp i32 %or.i.i56.i.i82.i.i.i.i.i.i.i to float + %mul.i57.i.i84.i.i.i.i.i.i.i = fmul float %conv.i.i.i83.i.i.i.i.i.i.i, 0x3DF0000000000000 + %cmp.i.i58.i.i85.i.i.i.i.i.i.i = fcmp olt float %mul.i57.i.i84.i.i.i.i.i.i.i, 0x3FEFFFFFE0000000 + %.sroa.speculated.i.i.i86.i.i.i.i.i.i.i = select i1 %cmp.i.i58.i.i85.i.i.i.i.i.i.i, float %mul.i57.i.i84.i.i.i.i.i.i.i, float 0x3FEFFFFFE0000000 %191 = load i8, ptr %set.i.i.i.i.i.i.i.i.i.i, align 4 %192 = and i8 %191, 1 - %tobool.not.i.i63.i.i.i.i.i.i.i.i.i = icmp eq i8 %192, 0 - br i1 %tobool.not.i.i63.i.i.i.i.i.i.i.i.i, label %land.rhs.i.i51.invoke.i.i.i.i.i.i.invoke.i.i.i, label %invoke.cont52.i.i.i.i.i.i.i.i.i + %tobool.not.i.i60.i.i.i.i.i.i.i.i.i = icmp eq i8 %192, 0 + br i1 %tobool.not.i.i60.i.i.i.i.i.i.i.i.i, label %land.rhs.i.i51.invoke.i.i.i.i.i.i.invoke.i.i.i, label %invoke.cont52.i.i.i.i.i.i.i.i.i invoke.cont52.i.i.i.i.i.i.i.i.i: ; preds = %invoke.cont48.i.i.i.i.i.i.i.i.i %193 = load float, ptr %tMax54.i.i.i.i.i.i.i.i.i, align 4 @@ -12028,106 +12016,106 @@ invoke.cont52.i.i.i.i.i.i.i.i.i: ; preds = %invoke.cont48.i.i.i br i1 %cmp55.i.i.i.i.i.i.i.i.i, label %invoke.cont61.i.i.i.i.i.i.i.i.i, label %invoke.cont103.i.i.i.i.i.i.i.i.i invoke.cont61.i.i.i.i.i.i.i.i.i: ; preds = %invoke.cont52.i.i.i.i.i.i.i.i.i - %sub59.i.i.i.i.i.i.i.i.i = fsub float %add.i.i75.i.i.i.i.i.i.i, %tMin38.0243.i.i.i.i.i.i.i.i.i + %sub59.i.i.i.i.i.i.i.i.i = fsub float %add.i.i75.i.i.i.i.i.i.i, %tMin38.0240.i.i.i.i.i.i.i.i.i %fneg60.i.i.i.i.i.i.i.i.i = fneg float %sub59.i.i.i.i.i.i.i.i.i - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i.i72.i.i13.i.i.i.i.i.i.i) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i.i72.i.i13.i.i.i.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(16) %sigma_maj.i.i.i.i.i.i.i.i.i, i64 16, i1 false) - br label %for.body.i.i73.i.i131.i.i.i.i.i.i.i - -for.body.i.i73.i.i131.i.i.i.i.i.i.i: ; preds = %for.body.i.i73.i.i131.i.i.i.i.i.i.i, %invoke.cont61.i.i.i.i.i.i.i.i.i - %indvars.iv.i.i74.i.i132.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont61.i.i.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i77.i.i135.i.i.i.i.i.i.i, %for.body.i.i73.i.i131.i.i.i.i.i.i.i ] - %arrayidx.i.i.i75.i.i133.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i72.i.i13.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i74.i.i132.i.i.i.i.i.i.i - %194 = load float, ptr %arrayidx.i.i.i75.i.i133.i.i.i.i.i.i.i, align 4 - %mul.i.i76.i.i134.i.i.i.i.i.i.i = fmul float %194, %fneg60.i.i.i.i.i.i.i.i.i - store float %mul.i.i76.i.i134.i.i.i.i.i.i.i, ptr %arrayidx.i.i.i75.i.i133.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i.i77.i.i135.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i74.i.i132.i.i.i.i.i.i.i, 1 - %exitcond.not.i.i78.i.i136.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i77.i.i135.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i.i78.i.i136.i.i.i.i.i.i.i, label %invoke.cont64.i.i.i.i.i.i.i.i.i, label %for.body.i.i73.i.i131.i.i.i.i.i.i.i, !llvm.loop !110 - -invoke.cont64.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i73.i.i131.i.i.i.i.i.i.i - %.fca.0.load.i.i79.i.i137.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i.i72.i.i13.i.i.i.i.i.i.i, align 8 - %.fca.1.load.i.i82.i.i138.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i.i81.i.i.i.i.i.i.i.i.i, align 8 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i.i72.i.i13.i.i.i.i.i.i.i) - store <2 x float> %.fca.0.load.i.i79.i.i137.i.i.i.i.i.i.i, ptr %ref.tmp58.i.i21.i.i.i.i.i.i.i, align 8 - store <2 x float> %.fca.1.load.i.i82.i.i138.i.i.i.i.i.i.i, ptr %58, align 8 - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i85.i.i12.i.i.i.i.i.i.i) - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i85.i.i12.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) - br label %for.body.i86.i.i139.i.i.i.i.i.i.i - -for.body.i86.i.i139.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i103.i.i156.i.i.i.i.i.i.i, %invoke.cont64.i.i.i.i.i.i.i.i.i - %indvars.iv.i87.i.i140.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont64.i.i.i.i.i.i.i.i.i ], [ %indvars.iv.next.i106.i.i159.i.i.i.i.i.i.i, %_ZN4pbrt7FastExpEf.exit.i103.i.i156.i.i.i.i.i.i.i ] - %arrayidx.i.i.i88.i.i141.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp58.i.i21.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i87.i.i140.i.i.i.i.i.i.i - %195 = load float, ptr %arrayidx.i.i.i88.i.i141.i.i.i.i.i.i.i, align 4 - %mul.i.i89.i.i142.i.i.i.i.i.i.i = fmul float %195, 0x3FF7154760000000 - %196 = call noundef float @llvm.floor.f32(float %mul.i.i89.i.i142.i.i.i.i.i.i.i) - %sub.i.i90.i.i143.i.i.i.i.i.i.i = fsub float %mul.i.i89.i.i142.i.i.i.i.i.i.i, %196 - %conv.i4.i91.i.i144.i.i.i.i.i.i.i = fptosi float %196 to i32 - %197 = call noundef float @llvm.fma.f32(float %sub.i.i90.i.i143.i.i.i.i.i.i.i, float 0x3FB4015920000000, float 0x3FCCF34160000000) - %198 = call noundef float @llvm.fma.f32(float %sub.i.i90.i.i143.i.i.i.i.i.i.i, float %197, float 0x3FE6420080000000) - %199 = call noundef float @llvm.fma.f32(float %sub.i.i90.i.i143.i.i.i.i.i.i.i, float %198, float 1.000000e+00) + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i.i69.i.i13.i.i.i.i.i.i.i) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i.i69.i.i13.i.i.i.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(16) %sigma_maj.i.i.i.i.i.i.i.i.i, i64 16, i1 false) + br label %for.body.i.i70.i.i127.i.i.i.i.i.i.i + +for.body.i.i70.i.i127.i.i.i.i.i.i.i: ; preds = %for.body.i.i70.i.i127.i.i.i.i.i.i.i, %invoke.cont61.i.i.i.i.i.i.i.i.i + %indvars.iv.i.i71.i.i128.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont61.i.i.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i74.i.i131.i.i.i.i.i.i.i, %for.body.i.i70.i.i127.i.i.i.i.i.i.i ] + %arrayidx.i.i.i72.i.i129.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i69.i.i13.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i71.i.i128.i.i.i.i.i.i.i + %194 = load float, ptr %arrayidx.i.i.i72.i.i129.i.i.i.i.i.i.i, align 4 + %mul.i.i73.i.i130.i.i.i.i.i.i.i = fmul float %194, %fneg60.i.i.i.i.i.i.i.i.i + store float %mul.i.i73.i.i130.i.i.i.i.i.i.i, ptr %arrayidx.i.i.i72.i.i129.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i.i74.i.i131.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i71.i.i128.i.i.i.i.i.i.i, 1 + %exitcond.not.i.i75.i.i132.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i74.i.i131.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i.i75.i.i132.i.i.i.i.i.i.i, label %invoke.cont64.i.i.i.i.i.i.i.i.i, label %for.body.i.i70.i.i127.i.i.i.i.i.i.i, !llvm.loop !110 + +invoke.cont64.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i70.i.i127.i.i.i.i.i.i.i + %.fca.0.load.i.i76.i.i133.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i.i69.i.i13.i.i.i.i.i.i.i, align 8 + %.fca.1.load.i.i79.i.i134.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i.i78.i.i.i.i.i.i.i.i.i, align 8 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i.i69.i.i13.i.i.i.i.i.i.i) + store <2 x float> %.fca.0.load.i.i76.i.i133.i.i.i.i.i.i.i, ptr %ref.tmp58.i.i21.i.i.i.i.i.i.i, align 8 + store <2 x float> %.fca.1.load.i.i79.i.i134.i.i.i.i.i.i.i, ptr %58, align 8 + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i82.i.i12.i.i.i.i.i.i.i) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i82.i.i12.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) + br label %for.body.i83.i.i135.i.i.i.i.i.i.i + +for.body.i83.i.i135.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i100.i.i152.i.i.i.i.i.i.i, %invoke.cont64.i.i.i.i.i.i.i.i.i + %indvars.iv.i84.i.i136.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont64.i.i.i.i.i.i.i.i.i ], [ %indvars.iv.next.i103.i.i155.i.i.i.i.i.i.i, %_ZN4pbrt7FastExpEf.exit.i100.i.i152.i.i.i.i.i.i.i ] + %arrayidx.i.i.i85.i.i137.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp58.i.i21.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i84.i.i136.i.i.i.i.i.i.i + %195 = load float, ptr %arrayidx.i.i.i85.i.i137.i.i.i.i.i.i.i, align 4 + %mul.i.i86.i.i138.i.i.i.i.i.i.i = fmul float %195, 0x3FF7154760000000 + %196 = call noundef float @llvm.floor.f32(float %mul.i.i86.i.i138.i.i.i.i.i.i.i) + %sub.i.i87.i.i139.i.i.i.i.i.i.i = fsub float %mul.i.i86.i.i138.i.i.i.i.i.i.i, %196 + %conv.i4.i88.i.i140.i.i.i.i.i.i.i = fptosi float %196 to i32 + %197 = call noundef float @llvm.fma.f32(float %sub.i.i87.i.i139.i.i.i.i.i.i.i, float 0x3FB4015920000000, float 0x3FCCF34160000000) + %198 = call noundef float @llvm.fma.f32(float %sub.i.i87.i.i139.i.i.i.i.i.i.i, float %197, float 0x3FE6420080000000) + %199 = call noundef float @llvm.fma.f32(float %sub.i.i87.i.i139.i.i.i.i.i.i.i, float %198, float 1.000000e+00) %200 = bitcast float %199 to i32 - %shr.i.i.i92.i.i145.i.i.i.i.i.i.i = lshr i32 %200, 23 - %sub.i.i.i93.i.i146.i.i.i.i.i.i.i = add i32 %conv.i4.i91.i.i144.i.i.i.i.i.i.i, -127 - %add.i.i94.i.i147.i.i.i.i.i.i.i = add i32 %sub.i.i.i93.i.i146.i.i.i.i.i.i.i, %shr.i.i.i92.i.i145.i.i.i.i.i.i.i - %cmp.i.i95.i.i148.i.i.i.i.i.i.i = icmp slt i32 %add.i.i94.i.i147.i.i.i.i.i.i.i, -126 - br i1 %cmp.i.i95.i.i148.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i103.i.i156.i.i.i.i.i.i.i, label %if.end.i.i96.i.i149.i.i.i.i.i.i.i - -if.end.i.i96.i.i149.i.i.i.i.i.i.i: ; preds = %for.body.i86.i.i139.i.i.i.i.i.i.i - %cmp3.i.i97.i.i150.i.i.i.i.i.i.i = icmp sgt i32 %add.i.i94.i.i147.i.i.i.i.i.i.i, 127 - br i1 %cmp3.i.i97.i.i150.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i103.i.i156.i.i.i.i.i.i.i, label %if.end5.i.i98.i.i151.i.i.i.i.i.i.i - -if.end5.i.i98.i.i151.i.i.i.i.i.i.i: ; preds = %if.end.i.i96.i.i149.i.i.i.i.i.i.i - %and.i.i99.i.i152.i.i.i.i.i.i.i = and i32 %200, -2139095041 - %add7.i.i100.i.i153.i.i.i.i.i.i.i = shl nsw i32 %add.i.i94.i.i147.i.i.i.i.i.i.i, 23 - %shl.i.i101.i.i154.i.i.i.i.i.i.i = add i32 %add7.i.i100.i.i153.i.i.i.i.i.i.i, 1065353216 - %or.i.i102.i.i155.i.i.i.i.i.i.i = or i32 %shl.i.i101.i.i154.i.i.i.i.i.i.i, %and.i.i99.i.i152.i.i.i.i.i.i.i - %201 = bitcast i32 %or.i.i102.i.i155.i.i.i.i.i.i.i to float - br label %_ZN4pbrt7FastExpEf.exit.i103.i.i156.i.i.i.i.i.i.i - -_ZN4pbrt7FastExpEf.exit.i103.i.i156.i.i.i.i.i.i.i: ; preds = %if.end5.i.i98.i.i151.i.i.i.i.i.i.i, %if.end.i.i96.i.i149.i.i.i.i.i.i.i, %for.body.i86.i.i139.i.i.i.i.i.i.i - %retval.0.i.i104.i.i157.i.i.i.i.i.i.i = phi float [ %201, %if.end5.i.i98.i.i151.i.i.i.i.i.i.i ], [ 0.000000e+00, %for.body.i86.i.i139.i.i.i.i.i.i.i ], [ 0x7FF0000000000000, %if.end.i.i96.i.i149.i.i.i.i.i.i.i ] - %arrayidx.i.i6.i105.i.i158.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i85.i.i12.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i87.i.i140.i.i.i.i.i.i.i - store float %retval.0.i.i104.i.i157.i.i.i.i.i.i.i, ptr %arrayidx.i.i6.i105.i.i158.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i106.i.i159.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i87.i.i140.i.i.i.i.i.i.i, 1 - %exitcond.not.i107.i.i160.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i106.i.i159.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i107.i.i160.i.i.i.i.i.i.i, label %invoke.cont68.i.i.i.i.i.i.i.i.i, label %for.body.i86.i.i139.i.i.i.i.i.i.i, !llvm.loop !111 - -invoke.cont68.i.i.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i103.i.i156.i.i.i.i.i.i.i - %.fca.0.load.i108.i.i161.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i85.i.i12.i.i.i.i.i.i.i, align 8 - %.fca.1.load.i111.i.i162.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i110.i.i65.i.i.i.i.i.i.i, align 8 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i85.i.i12.i.i.i.i.i.i.i) - store <2 x float> %.fca.0.load.i108.i.i161.i.i.i.i.i.i.i, ptr %ref.tmp57.i.i.i.i.i.i.i.i.i, align 8 - store <2 x float> %.fca.1.load.i111.i.i162.i.i.i.i.i.i.i, ptr %59, align 8 - br label %for.body.i114.i.i163.i.i.i.i.i.i.i - -for.body.i114.i.i163.i.i.i.i.i.i.i: ; preds = %for.body.i114.i.i163.i.i.i.i.i.i.i, %invoke.cont68.i.i.i.i.i.i.i.i.i - %indvars.iv.i115.i.i164.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont68.i.i.i.i.i.i.i.i.i ], [ %indvars.iv.next.i119.i.i168.i.i.i.i.i.i.i, %for.body.i114.i.i163.i.i.i.i.i.i.i ] - %arrayidx.i.i116.i.i165.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp57.i.i.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i115.i.i164.i.i.i.i.i.i.i - %202 = load float, ptr %arrayidx.i.i116.i.i165.i.i.i.i.i.i.i, align 4 - %arrayidx.i4.i117.i.i166.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %T_maj.i.i19.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i115.i.i164.i.i.i.i.i.i.i - %203 = load float, ptr %arrayidx.i4.i117.i.i166.i.i.i.i.i.i.i, align 4 - %mul.i118.i.i167.i.i.i.i.i.i.i = fmul float %202, %203 - store float %mul.i118.i.i167.i.i.i.i.i.i.i, ptr %arrayidx.i4.i117.i.i166.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i119.i.i168.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i115.i.i164.i.i.i.i.i.i.i, 1 - %exitcond.not.i120.i.i169.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i119.i.i168.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i120.i.i169.i.i.i.i.i.i.i, label %invoke.cont75.i.i.i.i.i.i.i.i.i, label %for.body.i114.i.i163.i.i.i.i.i.i.i, !llvm.loop !112 - -invoke.cont75.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i114.i.i163.i.i.i.i.i.i.i + %shr.i.i.i89.i.i141.i.i.i.i.i.i.i = lshr i32 %200, 23 + %sub.i.i.i90.i.i142.i.i.i.i.i.i.i = add i32 %conv.i4.i88.i.i140.i.i.i.i.i.i.i, -127 + %add.i.i91.i.i143.i.i.i.i.i.i.i = add i32 %sub.i.i.i90.i.i142.i.i.i.i.i.i.i, %shr.i.i.i89.i.i141.i.i.i.i.i.i.i + %cmp.i.i92.i.i144.i.i.i.i.i.i.i = icmp slt i32 %add.i.i91.i.i143.i.i.i.i.i.i.i, -126 + br i1 %cmp.i.i92.i.i144.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i100.i.i152.i.i.i.i.i.i.i, label %if.end.i.i93.i.i145.i.i.i.i.i.i.i + +if.end.i.i93.i.i145.i.i.i.i.i.i.i: ; preds = %for.body.i83.i.i135.i.i.i.i.i.i.i + %cmp3.i.i94.i.i146.i.i.i.i.i.i.i = icmp sgt i32 %add.i.i91.i.i143.i.i.i.i.i.i.i, 127 + br i1 %cmp3.i.i94.i.i146.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i100.i.i152.i.i.i.i.i.i.i, label %if.end5.i.i95.i.i147.i.i.i.i.i.i.i + +if.end5.i.i95.i.i147.i.i.i.i.i.i.i: ; preds = %if.end.i.i93.i.i145.i.i.i.i.i.i.i + %and.i.i96.i.i148.i.i.i.i.i.i.i = and i32 %200, -2139095041 + %add7.i.i97.i.i149.i.i.i.i.i.i.i = shl nsw i32 %add.i.i91.i.i143.i.i.i.i.i.i.i, 23 + %shl.i.i98.i.i150.i.i.i.i.i.i.i = add i32 %add7.i.i97.i.i149.i.i.i.i.i.i.i, 1065353216 + %or.i.i99.i.i151.i.i.i.i.i.i.i = or i32 %shl.i.i98.i.i150.i.i.i.i.i.i.i, %and.i.i96.i.i148.i.i.i.i.i.i.i + %201 = bitcast i32 %or.i.i99.i.i151.i.i.i.i.i.i.i to float + br label %_ZN4pbrt7FastExpEf.exit.i100.i.i152.i.i.i.i.i.i.i + +_ZN4pbrt7FastExpEf.exit.i100.i.i152.i.i.i.i.i.i.i: ; preds = %if.end5.i.i95.i.i147.i.i.i.i.i.i.i, %if.end.i.i93.i.i145.i.i.i.i.i.i.i, %for.body.i83.i.i135.i.i.i.i.i.i.i + %retval.0.i.i101.i.i153.i.i.i.i.i.i.i = phi float [ %201, %if.end5.i.i95.i.i147.i.i.i.i.i.i.i ], [ 0.000000e+00, %for.body.i83.i.i135.i.i.i.i.i.i.i ], [ 0x7FF0000000000000, %if.end.i.i93.i.i145.i.i.i.i.i.i.i ] + %arrayidx.i.i6.i102.i.i154.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i82.i.i12.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i84.i.i136.i.i.i.i.i.i.i + store float %retval.0.i.i101.i.i153.i.i.i.i.i.i.i, ptr %arrayidx.i.i6.i102.i.i154.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i103.i.i155.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i84.i.i136.i.i.i.i.i.i.i, 1 + %exitcond.not.i104.i.i156.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i103.i.i155.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i104.i.i156.i.i.i.i.i.i.i, label %invoke.cont68.i.i.i.i.i.i.i.i.i, label %for.body.i83.i.i135.i.i.i.i.i.i.i, !llvm.loop !111 + +invoke.cont68.i.i.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i100.i.i152.i.i.i.i.i.i.i + %.fca.0.load.i105.i.i157.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i82.i.i12.i.i.i.i.i.i.i, align 8 + %.fca.1.load.i108.i.i158.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i107.i.i65.i.i.i.i.i.i.i, align 8 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i82.i.i12.i.i.i.i.i.i.i) + store <2 x float> %.fca.0.load.i105.i.i157.i.i.i.i.i.i.i, ptr %ref.tmp57.i.i.i.i.i.i.i.i.i, align 8 + store <2 x float> %.fca.1.load.i108.i.i158.i.i.i.i.i.i.i, ptr %59, align 8 + br label %for.body.i111.i.i159.i.i.i.i.i.i.i + +for.body.i111.i.i159.i.i.i.i.i.i.i: ; preds = %for.body.i111.i.i159.i.i.i.i.i.i.i, %invoke.cont68.i.i.i.i.i.i.i.i.i + %indvars.iv.i112.i.i160.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont68.i.i.i.i.i.i.i.i.i ], [ %indvars.iv.next.i116.i.i164.i.i.i.i.i.i.i, %for.body.i111.i.i159.i.i.i.i.i.i.i ] + %arrayidx.i.i113.i.i161.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp57.i.i.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i112.i.i160.i.i.i.i.i.i.i + %202 = load float, ptr %arrayidx.i.i113.i.i161.i.i.i.i.i.i.i, align 4 + %arrayidx.i4.i114.i.i162.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %T_maj.i.i19.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i112.i.i160.i.i.i.i.i.i.i + %203 = load float, ptr %arrayidx.i4.i114.i.i162.i.i.i.i.i.i.i, align 4 + %mul.i115.i.i163.i.i.i.i.i.i.i = fmul float %202, %203 + store float %mul.i115.i.i163.i.i.i.i.i.i.i, ptr %arrayidx.i4.i114.i.i162.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i116.i.i164.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i112.i.i160.i.i.i.i.i.i.i, 1 + %exitcond.not.i117.i.i165.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i116.i.i164.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i117.i.i165.i.i.i.i.i.i.i, label %invoke.cont75.i.i.i.i.i.i.i.i.i, label %for.body.i111.i.i159.i.i.i.i.i.i.i, !llvm.loop !112 + +invoke.cont75.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i111.i.i159.i.i.i.i.i.i.i %204 = insertelement <2 x float> poison, float %add.i.i75.i.i.i.i.i.i.i, i64 0 %205 = shufflevector <2 x float> %204, <2 x float> poison, <2 x i32> zeroinitializer %206 = fmul <2 x float> %165, %205 - %mul3.i.i.i.i172.i.i.i.i.i.i.i = fmul float %div3.i.i.i.i48.i.i.i.i.i.i.i, %add.i.i75.i.i.i.i.i.i.i - %207 = fadd <2 x float> %ray.sroa.0.0347.i.i.i.i, %206 - %add6.i.i.i.i175.i.i.i.i.i.i.i = fadd float %ray.sroa.9.0348.i.i.i.i, %mul3.i.i.i.i172.i.i.i.i.i.i.i - call void @_ZNK4pbrt10GridMedium11SamplePointENS_6Point3IfEERKNS_18SampledWavelengthsE(ptr nonnull sret(%"struct.pbrt::MediumProperties") align 8 %mp.i.i22.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(520) %166, <2 x float> %207, float %add6.i.i.i.i175.i.i.i.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(32) %lambda.i.i.i.i) + %mul3.i.i.i.i168.i.i.i.i.i.i.i = fmul float %div3.i.i.i.i48.i.i.i.i.i.i.i, %add.i.i75.i.i.i.i.i.i.i + %207 = fadd <2 x float> %ray.sroa.0.0346.i.i.i.i, %206 + %add6.i.i.i.i171.i.i.i.i.i.i.i = fadd float %ray.sroa.9.0347.i.i.i.i, %mul3.i.i.i.i168.i.i.i.i.i.i.i + call void @_ZNK4pbrt10GridMedium11SamplePointENS_6Point3IfEERKNS_18SampledWavelengthsE(ptr nonnull sret(%"struct.pbrt::MediumProperties") align 8 %mp.i.i22.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(520) %166, <2 x float> %207, float %add6.i.i.i.i171.i.i.i.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(32) %lambda.i.i.i.i) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp85.i.i.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(32) %mp.i.i22.i.i.i.i.i.i.i, i64 32, i1 false) %208 = load i64, ptr %phase3.i.i.i67.i.i.i.i.i.i.i, align 8 store i64 %208, ptr %phase.i.i.i66.i.i.i.i.i.i.i, align 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %Le.i.i.i68.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %Le4.i.i.i69.i.i.i.i.i.i.i, i64 16, i1 false) %209 = load i8, ptr %set.i.i.i.i.i.i.i.i.i.i, align 4 %210 = and i8 %209, 1 - %tobool.not.i.i140.i.i.i.i.i.i.i.i.i = icmp eq i8 %210, 0 - br i1 %tobool.not.i.i140.i.i.i.i.i.i.i.i.i, label %land.rhs.i.i51.invoke.i.i.i.i.i.i.invoke.i.i.i, label %invoke.cont88.i.i.i.i.i.i.i.i.i + %tobool.not.i.i137.i.i.i.i.i.i.i.i.i = icmp eq i8 %210, 0 + br i1 %tobool.not.i.i137.i.i.i.i.i.i.i.i.i, label %land.rhs.i.i51.invoke.i.i.i.i.i.i.invoke.i.i.i, label %invoke.cont88.i.i.i.i.i.i.i.i.i invoke.cont88.i.i.i.i.i.i.i.i.i: ; preds = %invoke.cont75.i.i.i.i.i.i.i.i.i %agg.tmp87.sroa.0.0.copyload.i.i.i.i.i.i.i.i.i = load <2 x float>, ptr %sigma_maj.i.i.i.i.i.i.i.i.i, align 4 @@ -12139,17 +12127,17 @@ invoke.cont88.i.i.i.i.i.i.i.i.i: ; preds = %invoke.cont75.i.i.i if.end95.i.i.i.i.i.i.i.i.i: ; preds = %invoke.cont88.i.i.i.i.i.i.i.i.i call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %ref.tmp96.i.i.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) - br label %for.body.i.i144.i.i188.i.i.i.i.i.i.i + br label %for.body.i.i141.i.i184.i.i.i.i.i.i.i -for.body.i.i144.i.i188.i.i.i.i.i.i.i: ; preds = %for.body.i.i144.i.i188.i.i.i.i.i.i.i, %if.end95.i.i.i.i.i.i.i.i.i - %indvars.iv.i.i145.i.i189.i.i.i.i.i.i.i = phi i64 [ 0, %if.end95.i.i.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i147.i.i191.i.i.i.i.i.i.i, %for.body.i.i144.i.i188.i.i.i.i.i.i.i ] - %arrayidx.i.i146.i.i190.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp96.i.i.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i145.i.i189.i.i.i.i.i.i.i - store float 1.000000e+00, ptr %arrayidx.i.i146.i.i190.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i.i147.i.i191.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i145.i.i189.i.i.i.i.i.i.i, 1 - %exitcond.not.i.i148.i.i192.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i147.i.i191.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i.i148.i.i192.i.i.i.i.i.i.i, label %invoke.cont97.i.i.i.i.i.i.i.i.i, label %for.body.i.i144.i.i188.i.i.i.i.i.i.i, !llvm.loop !103 +for.body.i.i141.i.i184.i.i.i.i.i.i.i: ; preds = %for.body.i.i141.i.i184.i.i.i.i.i.i.i, %if.end95.i.i.i.i.i.i.i.i.i + %indvars.iv.i.i142.i.i185.i.i.i.i.i.i.i = phi i64 [ 0, %if.end95.i.i.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i144.i.i187.i.i.i.i.i.i.i, %for.body.i.i141.i.i184.i.i.i.i.i.i.i ] + %arrayidx.i.i143.i.i186.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp96.i.i.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i142.i.i185.i.i.i.i.i.i.i + store float 1.000000e+00, ptr %arrayidx.i.i143.i.i186.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i.i144.i.i187.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i142.i.i185.i.i.i.i.i.i.i, 1 + %exitcond.not.i.i145.i.i188.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i144.i.i187.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i.i145.i.i188.i.i.i.i.i.i.i, label %invoke.cont97.i.i.i.i.i.i.i.i.i, label %for.body.i.i141.i.i184.i.i.i.i.i.i.i, !llvm.loop !103 -invoke.cont97.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i144.i.i188.i.i.i.i.i.i.i +invoke.cont97.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i141.i.i184.i.i.i.i.i.i.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %T_maj.i.i19.i.i.i.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(16) %ref.tmp96.i.i.i.i.i.i.i.i.i, i64 16, i1 false) %211 = load i8, ptr %set.i.i.i.i.i.i.i.i.i.i, align 4 %212 = and i8 %211, 1 @@ -12157,117 +12145,117 @@ invoke.cont97.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i144.i.i br i1 %tobool.not.i.i50.i.i.i.i.i.i.i.i.i, label %land.rhs.i.i51.invoke.i.i.i.i.i.i.invoke.i.i.i, label %invoke.cont48.i.i.i.i.i.i.i.i.i, !llvm.loop !115 invoke.cont103.i.i.i.i.i.i.i.i.i: ; preds = %invoke.cont52.i.i.i.i.i.i.i.i.i - %sub102.i.i.i.i.i.i.i.i.i = fsub float %193, %tMin38.0243.i.i.i.i.i.i.i.i.i + %sub102.i.i.i.i.i.i.i.i.i = fsub float %193, %tMin38.0240.i.i.i.i.i.i.i.i.i %213 = call float @llvm.fabs.f32(float %sub102.i.i.i.i.i.i.i.i.i) %214 = fcmp oeq float %213, 0x7FF0000000000000 %dt98.0.i.i.i.i.i.i.i.i.i = select i1 %214, float 0x47EFFFFFE0000000, float %sub102.i.i.i.i.i.i.i.i.i %fneg110.i.i.i.i.i.i.i.i.i = fneg float %dt98.0.i.i.i.i.i.i.i.i.i - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i.i160.i.i11.i.i.i.i.i.i.i) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i.i160.i.i11.i.i.i.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(16) %sigma_maj.i.i.i.i.i.i.i.i.i, i64 16, i1 false) - br label %for.body.i.i161.i.i91.i.i.i.i.i.i.i - -for.body.i.i161.i.i91.i.i.i.i.i.i.i: ; preds = %for.body.i.i161.i.i91.i.i.i.i.i.i.i, %invoke.cont103.i.i.i.i.i.i.i.i.i - %indvars.iv.i.i162.i.i92.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont103.i.i.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i165.i.i95.i.i.i.i.i.i.i, %for.body.i.i161.i.i91.i.i.i.i.i.i.i ] - %arrayidx.i.i.i163.i.i93.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i160.i.i11.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i162.i.i92.i.i.i.i.i.i.i - %215 = load float, ptr %arrayidx.i.i.i163.i.i93.i.i.i.i.i.i.i, align 4 - %mul.i.i164.i.i94.i.i.i.i.i.i.i = fmul float %215, %fneg110.i.i.i.i.i.i.i.i.i - store float %mul.i.i164.i.i94.i.i.i.i.i.i.i, ptr %arrayidx.i.i.i163.i.i93.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i.i165.i.i95.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i162.i.i92.i.i.i.i.i.i.i, 1 - %exitcond.not.i.i166.i.i96.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i165.i.i95.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i.i166.i.i96.i.i.i.i.i.i.i, label %invoke.cont114.i.i.i.i.i.i.i.i.i, label %for.body.i.i161.i.i91.i.i.i.i.i.i.i, !llvm.loop !110 - -invoke.cont114.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i161.i.i91.i.i.i.i.i.i.i - %.fca.0.load.i.i167.i.i97.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i.i160.i.i11.i.i.i.i.i.i.i, align 8 - %.fca.1.load.i.i170.i.i98.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i.i169.i.i.i.i.i.i.i.i.i, align 8 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i.i160.i.i11.i.i.i.i.i.i.i) - store <2 x float> %.fca.0.load.i.i167.i.i97.i.i.i.i.i.i.i, ptr %ref.tmp109.i.i23.i.i.i.i.i.i.i, align 8 - store <2 x float> %.fca.1.load.i.i170.i.i98.i.i.i.i.i.i.i, ptr %60, align 8 - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i173.i.i10.i.i.i.i.i.i.i) - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i173.i.i10.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) - br label %for.body.i174.i.i99.i.i.i.i.i.i.i - -for.body.i174.i.i99.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i191.i.i116.i.i.i.i.i.i.i, %invoke.cont114.i.i.i.i.i.i.i.i.i - %indvars.iv.i175.i.i100.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont114.i.i.i.i.i.i.i.i.i ], [ %indvars.iv.next.i194.i.i119.i.i.i.i.i.i.i, %_ZN4pbrt7FastExpEf.exit.i191.i.i116.i.i.i.i.i.i.i ] - %arrayidx.i.i.i176.i.i101.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp109.i.i23.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i175.i.i100.i.i.i.i.i.i.i - %216 = load float, ptr %arrayidx.i.i.i176.i.i101.i.i.i.i.i.i.i, align 4 - %mul.i.i177.i.i102.i.i.i.i.i.i.i = fmul float %216, 0x3FF7154760000000 - %217 = call noundef float @llvm.floor.f32(float %mul.i.i177.i.i102.i.i.i.i.i.i.i) - %sub.i.i178.i.i103.i.i.i.i.i.i.i = fsub float %mul.i.i177.i.i102.i.i.i.i.i.i.i, %217 - %conv.i4.i179.i.i104.i.i.i.i.i.i.i = fptosi float %217 to i32 - %218 = call noundef float @llvm.fma.f32(float %sub.i.i178.i.i103.i.i.i.i.i.i.i, float 0x3FB4015920000000, float 0x3FCCF34160000000) - %219 = call noundef float @llvm.fma.f32(float %sub.i.i178.i.i103.i.i.i.i.i.i.i, float %218, float 0x3FE6420080000000) - %220 = call noundef float @llvm.fma.f32(float %sub.i.i178.i.i103.i.i.i.i.i.i.i, float %219, float 1.000000e+00) + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i.i157.i.i11.i.i.i.i.i.i.i) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i.i157.i.i11.i.i.i.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(16) %sigma_maj.i.i.i.i.i.i.i.i.i, i64 16, i1 false) + br label %for.body.i.i158.i.i87.i.i.i.i.i.i.i + +for.body.i.i158.i.i87.i.i.i.i.i.i.i: ; preds = %for.body.i.i158.i.i87.i.i.i.i.i.i.i, %invoke.cont103.i.i.i.i.i.i.i.i.i + %indvars.iv.i.i159.i.i88.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont103.i.i.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i162.i.i91.i.i.i.i.i.i.i, %for.body.i.i158.i.i87.i.i.i.i.i.i.i ] + %arrayidx.i.i.i160.i.i89.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i157.i.i11.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i159.i.i88.i.i.i.i.i.i.i + %215 = load float, ptr %arrayidx.i.i.i160.i.i89.i.i.i.i.i.i.i, align 4 + %mul.i.i161.i.i90.i.i.i.i.i.i.i = fmul float %215, %fneg110.i.i.i.i.i.i.i.i.i + store float %mul.i.i161.i.i90.i.i.i.i.i.i.i, ptr %arrayidx.i.i.i160.i.i89.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i.i162.i.i91.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i159.i.i88.i.i.i.i.i.i.i, 1 + %exitcond.not.i.i163.i.i92.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i162.i.i91.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i.i163.i.i92.i.i.i.i.i.i.i, label %invoke.cont114.i.i.i.i.i.i.i.i.i, label %for.body.i.i158.i.i87.i.i.i.i.i.i.i, !llvm.loop !110 + +invoke.cont114.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i158.i.i87.i.i.i.i.i.i.i + %.fca.0.load.i.i164.i.i93.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i.i157.i.i11.i.i.i.i.i.i.i, align 8 + %.fca.1.load.i.i167.i.i94.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i.i166.i.i.i.i.i.i.i.i.i, align 8 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i.i157.i.i11.i.i.i.i.i.i.i) + store <2 x float> %.fca.0.load.i.i164.i.i93.i.i.i.i.i.i.i, ptr %ref.tmp109.i.i23.i.i.i.i.i.i.i, align 8 + store <2 x float> %.fca.1.load.i.i167.i.i94.i.i.i.i.i.i.i, ptr %60, align 8 + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i170.i.i10.i.i.i.i.i.i.i) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i170.i.i10.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) + br label %for.body.i171.i.i95.i.i.i.i.i.i.i + +for.body.i171.i.i95.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i188.i.i112.i.i.i.i.i.i.i, %invoke.cont114.i.i.i.i.i.i.i.i.i + %indvars.iv.i172.i.i96.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont114.i.i.i.i.i.i.i.i.i ], [ %indvars.iv.next.i191.i.i115.i.i.i.i.i.i.i, %_ZN4pbrt7FastExpEf.exit.i188.i.i112.i.i.i.i.i.i.i ] + %arrayidx.i.i.i173.i.i97.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp109.i.i23.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i172.i.i96.i.i.i.i.i.i.i + %216 = load float, ptr %arrayidx.i.i.i173.i.i97.i.i.i.i.i.i.i, align 4 + %mul.i.i174.i.i98.i.i.i.i.i.i.i = fmul float %216, 0x3FF7154760000000 + %217 = call noundef float @llvm.floor.f32(float %mul.i.i174.i.i98.i.i.i.i.i.i.i) + %sub.i.i175.i.i99.i.i.i.i.i.i.i = fsub float %mul.i.i174.i.i98.i.i.i.i.i.i.i, %217 + %conv.i4.i176.i.i100.i.i.i.i.i.i.i = fptosi float %217 to i32 + %218 = call noundef float @llvm.fma.f32(float %sub.i.i175.i.i99.i.i.i.i.i.i.i, float 0x3FB4015920000000, float 0x3FCCF34160000000) + %219 = call noundef float @llvm.fma.f32(float %sub.i.i175.i.i99.i.i.i.i.i.i.i, float %218, float 0x3FE6420080000000) + %220 = call noundef float @llvm.fma.f32(float %sub.i.i175.i.i99.i.i.i.i.i.i.i, float %219, float 1.000000e+00) %221 = bitcast float %220 to i32 - %shr.i.i.i180.i.i105.i.i.i.i.i.i.i = lshr i32 %221, 23 - %sub.i.i.i181.i.i106.i.i.i.i.i.i.i = add i32 %conv.i4.i179.i.i104.i.i.i.i.i.i.i, -127 - %add.i.i182.i.i107.i.i.i.i.i.i.i = add i32 %sub.i.i.i181.i.i106.i.i.i.i.i.i.i, %shr.i.i.i180.i.i105.i.i.i.i.i.i.i - %cmp.i.i183.i.i108.i.i.i.i.i.i.i = icmp slt i32 %add.i.i182.i.i107.i.i.i.i.i.i.i, -126 - br i1 %cmp.i.i183.i.i108.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i191.i.i116.i.i.i.i.i.i.i, label %if.end.i.i184.i.i109.i.i.i.i.i.i.i - -if.end.i.i184.i.i109.i.i.i.i.i.i.i: ; preds = %for.body.i174.i.i99.i.i.i.i.i.i.i - %cmp3.i.i185.i.i110.i.i.i.i.i.i.i = icmp sgt i32 %add.i.i182.i.i107.i.i.i.i.i.i.i, 127 - br i1 %cmp3.i.i185.i.i110.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i191.i.i116.i.i.i.i.i.i.i, label %if.end5.i.i186.i.i111.i.i.i.i.i.i.i - -if.end5.i.i186.i.i111.i.i.i.i.i.i.i: ; preds = %if.end.i.i184.i.i109.i.i.i.i.i.i.i - %and.i.i187.i.i112.i.i.i.i.i.i.i = and i32 %221, -2139095041 - %add7.i.i188.i.i113.i.i.i.i.i.i.i = shl nsw i32 %add.i.i182.i.i107.i.i.i.i.i.i.i, 23 - %shl.i.i189.i.i114.i.i.i.i.i.i.i = add i32 %add7.i.i188.i.i113.i.i.i.i.i.i.i, 1065353216 - %or.i.i190.i.i115.i.i.i.i.i.i.i = or i32 %shl.i.i189.i.i114.i.i.i.i.i.i.i, %and.i.i187.i.i112.i.i.i.i.i.i.i - %222 = bitcast i32 %or.i.i190.i.i115.i.i.i.i.i.i.i to float - br label %_ZN4pbrt7FastExpEf.exit.i191.i.i116.i.i.i.i.i.i.i - -_ZN4pbrt7FastExpEf.exit.i191.i.i116.i.i.i.i.i.i.i: ; preds = %if.end5.i.i186.i.i111.i.i.i.i.i.i.i, %if.end.i.i184.i.i109.i.i.i.i.i.i.i, %for.body.i174.i.i99.i.i.i.i.i.i.i - %retval.0.i.i192.i.i117.i.i.i.i.i.i.i = phi float [ %222, %if.end5.i.i186.i.i111.i.i.i.i.i.i.i ], [ 0.000000e+00, %for.body.i174.i.i99.i.i.i.i.i.i.i ], [ 0x7FF0000000000000, %if.end.i.i184.i.i109.i.i.i.i.i.i.i ] - %arrayidx.i.i6.i193.i.i118.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i173.i.i10.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i175.i.i100.i.i.i.i.i.i.i - store float %retval.0.i.i192.i.i117.i.i.i.i.i.i.i, ptr %arrayidx.i.i6.i193.i.i118.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i194.i.i119.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i175.i.i100.i.i.i.i.i.i.i, 1 - %exitcond.not.i195.i.i120.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i194.i.i119.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i195.i.i120.i.i.i.i.i.i.i, label %invoke.cont118.i.i.i.i.i.i.i.i.i, label %for.body.i174.i.i99.i.i.i.i.i.i.i, !llvm.loop !111 - -invoke.cont118.i.i.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i191.i.i116.i.i.i.i.i.i.i - %.fca.0.load.i196.i.i121.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i173.i.i10.i.i.i.i.i.i.i, align 8 - %.fca.1.load.i199.i.i122.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i198.i.i70.i.i.i.i.i.i.i, align 8 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i173.i.i10.i.i.i.i.i.i.i) - store <2 x float> %.fca.0.load.i196.i.i121.i.i.i.i.i.i.i, ptr %ref.tmp108.i.i.i.i.i.i.i.i.i, align 8 - store <2 x float> %.fca.1.load.i199.i.i122.i.i.i.i.i.i.i, ptr %61, align 8 - br label %for.body.i202.i.i123.i.i.i.i.i.i.i - -for.body.i202.i.i123.i.i.i.i.i.i.i: ; preds = %for.body.i202.i.i123.i.i.i.i.i.i.i, %invoke.cont118.i.i.i.i.i.i.i.i.i - %indvars.iv.i203.i.i124.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont118.i.i.i.i.i.i.i.i.i ], [ %indvars.iv.next.i207.i.i128.i.i.i.i.i.i.i, %for.body.i202.i.i123.i.i.i.i.i.i.i ] - %arrayidx.i.i204.i.i125.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp108.i.i.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i203.i.i124.i.i.i.i.i.i.i - %223 = load float, ptr %arrayidx.i.i204.i.i125.i.i.i.i.i.i.i, align 4 - %arrayidx.i4.i205.i.i126.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %T_maj.i.i19.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i203.i.i124.i.i.i.i.i.i.i - %224 = load float, ptr %arrayidx.i4.i205.i.i126.i.i.i.i.i.i.i, align 4 - %mul.i206.i.i127.i.i.i.i.i.i.i = fmul float %223, %224 - store float %mul.i206.i.i127.i.i.i.i.i.i.i, ptr %arrayidx.i4.i205.i.i126.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i207.i.i128.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i203.i.i124.i.i.i.i.i.i.i, 1 - %exitcond.not.i208.i.i129.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i207.i.i128.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i208.i.i129.i.i.i.i.i.i.i, label %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.i.i130.i.i.i.i.i.i.i, label %for.body.i202.i.i123.i.i.i.i.i.i.i, !llvm.loop !112 - -_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.i.i130.i.i.i.i.i.i.i: ; preds = %for.body.i202.i.i123.i.i.i.i.i.i.i, %_ZN4pbrt15SampledSpectrummLERKS0_.exit.i.i.i.i.i.i.i.i.i - %u.addr.2270.i.i.i.i.i.i.i.i.i = phi float [ %u.addr.0.i23.i43.i.i.i.i.i.i.i, %_ZN4pbrt15SampledSpectrummLERKS0_.exit.i.i.i.i.i.i.i.i.i ], [ %.sroa.speculated.i.i.i90.i.i.i.i.i.i.i, %for.body.i202.i.i123.i.i.i.i.i.i.i ] + %shr.i.i.i177.i.i101.i.i.i.i.i.i.i = lshr i32 %221, 23 + %sub.i.i.i178.i.i102.i.i.i.i.i.i.i = add i32 %conv.i4.i176.i.i100.i.i.i.i.i.i.i, -127 + %add.i.i179.i.i103.i.i.i.i.i.i.i = add i32 %sub.i.i.i178.i.i102.i.i.i.i.i.i.i, %shr.i.i.i177.i.i101.i.i.i.i.i.i.i + %cmp.i.i180.i.i104.i.i.i.i.i.i.i = icmp slt i32 %add.i.i179.i.i103.i.i.i.i.i.i.i, -126 + br i1 %cmp.i.i180.i.i104.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i188.i.i112.i.i.i.i.i.i.i, label %if.end.i.i181.i.i105.i.i.i.i.i.i.i + +if.end.i.i181.i.i105.i.i.i.i.i.i.i: ; preds = %for.body.i171.i.i95.i.i.i.i.i.i.i + %cmp3.i.i182.i.i106.i.i.i.i.i.i.i = icmp sgt i32 %add.i.i179.i.i103.i.i.i.i.i.i.i, 127 + br i1 %cmp3.i.i182.i.i106.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i188.i.i112.i.i.i.i.i.i.i, label %if.end5.i.i183.i.i107.i.i.i.i.i.i.i + +if.end5.i.i183.i.i107.i.i.i.i.i.i.i: ; preds = %if.end.i.i181.i.i105.i.i.i.i.i.i.i + %and.i.i184.i.i108.i.i.i.i.i.i.i = and i32 %221, -2139095041 + %add7.i.i185.i.i109.i.i.i.i.i.i.i = shl nsw i32 %add.i.i179.i.i103.i.i.i.i.i.i.i, 23 + %shl.i.i186.i.i110.i.i.i.i.i.i.i = add i32 %add7.i.i185.i.i109.i.i.i.i.i.i.i, 1065353216 + %or.i.i187.i.i111.i.i.i.i.i.i.i = or i32 %shl.i.i186.i.i110.i.i.i.i.i.i.i, %and.i.i184.i.i108.i.i.i.i.i.i.i + %222 = bitcast i32 %or.i.i187.i.i111.i.i.i.i.i.i.i to float + br label %_ZN4pbrt7FastExpEf.exit.i188.i.i112.i.i.i.i.i.i.i + +_ZN4pbrt7FastExpEf.exit.i188.i.i112.i.i.i.i.i.i.i: ; preds = %if.end5.i.i183.i.i107.i.i.i.i.i.i.i, %if.end.i.i181.i.i105.i.i.i.i.i.i.i, %for.body.i171.i.i95.i.i.i.i.i.i.i + %retval.0.i.i189.i.i113.i.i.i.i.i.i.i = phi float [ %222, %if.end5.i.i183.i.i107.i.i.i.i.i.i.i ], [ 0.000000e+00, %for.body.i171.i.i95.i.i.i.i.i.i.i ], [ 0x7FF0000000000000, %if.end.i.i181.i.i105.i.i.i.i.i.i.i ] + %arrayidx.i.i6.i190.i.i114.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i170.i.i10.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i172.i.i96.i.i.i.i.i.i.i + store float %retval.0.i.i189.i.i113.i.i.i.i.i.i.i, ptr %arrayidx.i.i6.i190.i.i114.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i191.i.i115.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i172.i.i96.i.i.i.i.i.i.i, 1 + %exitcond.not.i192.i.i116.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i191.i.i115.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i192.i.i116.i.i.i.i.i.i.i, label %invoke.cont118.i.i.i.i.i.i.i.i.i, label %for.body.i171.i.i95.i.i.i.i.i.i.i, !llvm.loop !111 + +invoke.cont118.i.i.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i188.i.i112.i.i.i.i.i.i.i + %.fca.0.load.i193.i.i117.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i170.i.i10.i.i.i.i.i.i.i, align 8 + %.fca.1.load.i196.i.i118.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i195.i.i70.i.i.i.i.i.i.i, align 8 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i170.i.i10.i.i.i.i.i.i.i) + store <2 x float> %.fca.0.load.i193.i.i117.i.i.i.i.i.i.i, ptr %ref.tmp108.i.i.i.i.i.i.i.i.i, align 8 + store <2 x float> %.fca.1.load.i196.i.i118.i.i.i.i.i.i.i, ptr %61, align 8 + br label %for.body.i199.i.i119.i.i.i.i.i.i.i + +for.body.i199.i.i119.i.i.i.i.i.i.i: ; preds = %for.body.i199.i.i119.i.i.i.i.i.i.i, %invoke.cont118.i.i.i.i.i.i.i.i.i + %indvars.iv.i200.i.i120.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont118.i.i.i.i.i.i.i.i.i ], [ %indvars.iv.next.i204.i.i124.i.i.i.i.i.i.i, %for.body.i199.i.i119.i.i.i.i.i.i.i ] + %arrayidx.i.i201.i.i121.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp108.i.i.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i200.i.i120.i.i.i.i.i.i.i + %223 = load float, ptr %arrayidx.i.i201.i.i121.i.i.i.i.i.i.i, align 4 + %arrayidx.i4.i202.i.i122.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %T_maj.i.i19.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i200.i.i120.i.i.i.i.i.i.i + %224 = load float, ptr %arrayidx.i4.i202.i.i122.i.i.i.i.i.i.i, align 4 + %mul.i203.i.i123.i.i.i.i.i.i.i = fmul float %223, %224 + store float %mul.i203.i.i123.i.i.i.i.i.i.i, ptr %arrayidx.i4.i202.i.i122.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i204.i.i124.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i200.i.i120.i.i.i.i.i.i.i, 1 + %exitcond.not.i205.i.i125.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i204.i.i124.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i205.i.i125.i.i.i.i.i.i.i, label %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.i.i126.i.i.i.i.i.i.i, label %for.body.i199.i.i119.i.i.i.i.i.i.i, !llvm.loop !112 + +_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.i.i126.i.i.i.i.i.i.i: ; preds = %for.body.i199.i.i119.i.i.i.i.i.i.i, %_ZN4pbrt15SampledSpectrummLERKS0_.exit.i.i.i.i.i.i.i.i.i + %u.addr.2267.i.i.i.i.i.i.i.i.i = phi float [ %u.addr.0.i23.i43.i.i.i.i.i.i.i, %_ZN4pbrt15SampledSpectrummLERKS0_.exit.i.i.i.i.i.i.i.i.i ], [ %.sroa.speculated.i.i.i86.i.i.i.i.i.i.i, %for.body.i199.i.i119.i.i.i.i.i.i.i ] store i8 0, ptr %set.i.i.i.i.i.i.i.i.i.i, align 4 call void @_ZN4pbrt19DDAMajorantIterator4NextEv(ptr nonnull sret(%"class.pstd::optional.223") align 4 %seg.i.i.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(92) %iter.i.i17.i.i.i.i.i.i.i) %225 = load i8, ptr %set.i.i.i.i.i.i.i.i.i.i, align 4 %226 = and i8 %225, 1 %tobool.i.not.i.i.i.i.i.i.i.i.i = icmp eq i8 %226, 0 - br i1 %tobool.i.not.i.i.i.i.i.i.i.i.i, label %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.thread.i.i235.i.i.i.i.i.i.i, label %invoke.cont.i.i.i.i.i.i.i.i.i + br i1 %tobool.i.not.i.i.i.i.i.i.i.i.i, label %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.thread.i.i231.i.i.i.i.i.i.i, label %invoke.cont.i.i.i.i.i.i.i.i.i while.end125.i.i.i.i.i.i.i.i.i: ; preds = %invoke.cont88.i.i.i.i.i.i.i.i.i call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i.i16.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) - br label %for.body.i.i214.i.i178.i.i.i.i.i.i.i - -for.body.i.i214.i.i178.i.i.i.i.i.i.i: ; preds = %for.body.i.i214.i.i178.i.i.i.i.i.i.i, %while.end125.i.i.i.i.i.i.i.i.i - %indvars.iv.i.i215.i.i179.i.i.i.i.i.i.i = phi i64 [ 0, %while.end125.i.i.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i217.i.i181.i.i.i.i.i.i.i, %for.body.i.i214.i.i178.i.i.i.i.i.i.i ] - %arrayidx.i.i216.i.i180.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i16.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i215.i.i179.i.i.i.i.i.i.i - store float 1.000000e+00, ptr %arrayidx.i.i216.i.i180.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i.i217.i.i181.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i215.i.i179.i.i.i.i.i.i.i, 1 - %exitcond.not.i.i218.i.i182.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i217.i.i181.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i.i218.i.i182.i.i.i.i.i.i.i, label %"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_10GridMediumEEEDaSH_.exit.i.i.i.i.i.i.i", label %for.body.i.i214.i.i178.i.i.i.i.i.i.i, !llvm.loop !103 - -"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_10GridMediumEEEDaSH_.exit.i.i.i.i.i.i.i": ; preds = %for.body.i.i214.i.i178.i.i.i.i.i.i.i, %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.thread.i.i235.i.i.i.i.i.i.i - %.fca.0.load.i.i183.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i.i16.i.i.i.i.i.i.i, align 8 - %.fca.1.load.i.i186.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i.i185.i.i.i.i.i.i.i, align 8 + br label %for.body.i.i211.i.i174.i.i.i.i.i.i.i + +for.body.i.i211.i.i174.i.i.i.i.i.i.i: ; preds = %for.body.i.i211.i.i174.i.i.i.i.i.i.i, %while.end125.i.i.i.i.i.i.i.i.i + %indvars.iv.i.i212.i.i175.i.i.i.i.i.i.i = phi i64 [ 0, %while.end125.i.i.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i214.i.i177.i.i.i.i.i.i.i, %for.body.i.i211.i.i174.i.i.i.i.i.i.i ] + %arrayidx.i.i213.i.i176.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i16.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i212.i.i175.i.i.i.i.i.i.i + store float 1.000000e+00, ptr %arrayidx.i.i213.i.i176.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i.i214.i.i177.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i212.i.i175.i.i.i.i.i.i.i, 1 + %exitcond.not.i.i215.i.i178.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i214.i.i177.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i.i215.i.i178.i.i.i.i.i.i.i, label %"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_10GridMediumEEEDaSH_.exit.i.i.i.i.i.i.i", label %for.body.i.i211.i.i174.i.i.i.i.i.i.i, !llvm.loop !103 + +"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_10GridMediumEEEDaSH_.exit.i.i.i.i.i.i.i": ; preds = %for.body.i.i211.i.i174.i.i.i.i.i.i.i, %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.thread.i.i231.i.i.i.i.i.i.i + %.fca.0.load.i.i179.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i.i16.i.i.i.i.i.i.i, align 8 + %.fca.1.load.i.i182.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i.i181.i.i.i.i.i.i.i, align 8 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %agg.tmp21.i24.i.i.i.i.i.i.i) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i.i16.i.i.i.i.i.i.i) call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %iter.i.i17.i.i.i.i.i.i.i) @@ -12286,56 +12274,56 @@ for.body.i.i214.i.i178.i.i.i.i.i.i.i: ; preds = %for.body.i.i214.i.i br label %"_ZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_.exit.i.i.i.i" sw.bb8.i.i.i.i.i.i.i: ; preds = %cond.end.i.i.i.i - call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %agg.tmp21.i255.i.i.i.i.i.i.i) - store ptr %T_ray.i.i.i.i, ptr %agg.tmp21.i255.i.i.i.i.i.i.i, align 8 - store ptr %r_l.i.i.i.i, ptr %agg.tmp2751.sroa.8.0.agg.tmp21.i255.i.i.i.sroa_idx.i.i.i.i, align 8 - store ptr %r_u.i.i.i.i, ptr %agg.tmp2751.sroa.9.0.agg.tmp21.i255.i.i.i.sroa_idx.i.i.i.i, align 8 - store ptr %rng.i.i.i.i, ptr %agg.tmp2751.sroa.10.0.agg.tmp21.i255.i.i.i.sroa_idx.i.i.i.i, align 8 - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i.i242.i.i.i.i.i.i.i) - call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %iter.i.i243.i.i.i.i.i.i.i) - call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %agg.tmp7.i.i244.i.i.i.i.i.i.i) - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %T_maj.i.i245.i.i.i.i.i.i.i) - call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %seg.i.i246.i.i.i.i.i.i.i) - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp22.i.i247.i.i.i.i.i.i.i) - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp23.i.i248.i.i.i.i.i.i.i) - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp57.i.i249.i.i.i.i.i.i.i) - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp58.i.i250.i.i.i.i.i.i.i) - call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %agg.tmp85.i.i251.i.i.i.i.i.i.i) - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp96.i.i252.i.i.i.i.i.i.i) - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp108.i.i253.i.i.i.i.i.i.i) - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp109.i.i254.i.i.i.i.i.i.i) - %227 = fmul <2 x float> %ray.sroa.14.0349.i.i.i.i, %ray.sroa.14.0349.i.i.i.i + call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %agg.tmp21.i251.i.i.i.i.i.i.i) + store ptr %T_ray.i.i.i.i, ptr %agg.tmp21.i251.i.i.i.i.i.i.i, align 8 + store ptr %r_l.i.i.i.i, ptr %agg.tmp2750.sroa.8.0.agg.tmp21.i251.i.i.i.sroa_idx.i.i.i.i, align 8 + store ptr %r_u.i.i.i.i, ptr %agg.tmp2750.sroa.9.0.agg.tmp21.i251.i.i.i.sroa_idx.i.i.i.i, align 8 + store ptr %rng.i.i.i.i, ptr %agg.tmp2750.sroa.10.0.agg.tmp21.i251.i.i.i.sroa_idx.i.i.i.i, align 8 + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i.i238.i.i.i.i.i.i.i) + call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %iter.i.i239.i.i.i.i.i.i.i) + call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %agg.tmp7.i.i240.i.i.i.i.i.i.i) + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %T_maj.i.i241.i.i.i.i.i.i.i) + call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %seg.i.i242.i.i.i.i.i.i.i) + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp22.i.i243.i.i.i.i.i.i.i) + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp23.i.i244.i.i.i.i.i.i.i) + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp57.i.i245.i.i.i.i.i.i.i) + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp58.i.i246.i.i.i.i.i.i.i) + call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %agg.tmp85.i.i247.i.i.i.i.i.i.i) + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp96.i.i248.i.i.i.i.i.i.i) + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp108.i.i249.i.i.i.i.i.i.i) + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp109.i.i250.i.i.i.i.i.i.i) + %227 = fmul <2 x float> %ray.sroa.14.0348.i.i.i.i, %ray.sroa.14.0348.i.i.i.i %shift183 = shufflevector <2 x float> %227, <2 x float> poison, <2 x i32> %228 = fadd <2 x float> %227, %shift183 - %add.i.i.i.i272.i.i.i.i.i.i.i = extractelement <2 x float> %228, i64 0 - %mul.i2.i.i.i.i273.i.i.i.i.i.i.i = fmul float %ray.sroa.22.0350.i.i.i.i, %ray.sroa.22.0350.i.i.i.i - %add3.i.i.i.i274.i.i.i.i.i.i.i = fadd float %mul.i2.i.i.i.i273.i.i.i.i.i.i.i, %add.i.i.i.i272.i.i.i.i.i.i.i - %sqrt.i.i.i275.i.i.i.i.i.i.i = call noundef float @llvm.sqrt.f32(float %add3.i.i.i.i274.i.i.i.i.i.i.i) - %mul.i.i276.i.i.i.i.i.i.i = fmul float %sqrt.i.i.i275.i.i.i.i.i.i.i, %cond.i.i.i.i - %229 = insertelement <2 x float> poison, float %sqrt.i.i.i275.i.i.i.i.i.i.i, i64 0 + %add.i.i.i.i268.i.i.i.i.i.i.i = extractelement <2 x float> %228, i64 0 + %mul.i2.i.i.i.i269.i.i.i.i.i.i.i = fmul float %ray.sroa.22.0349.i.i.i.i, %ray.sroa.22.0349.i.i.i.i + %add3.i.i.i.i270.i.i.i.i.i.i.i = fadd float %mul.i2.i.i.i.i269.i.i.i.i.i.i.i, %add.i.i.i.i268.i.i.i.i.i.i.i + %sqrt.i.i.i271.i.i.i.i.i.i.i = call noundef float @llvm.sqrt.f32(float %add3.i.i.i.i270.i.i.i.i.i.i.i) + %mul.i.i272.i.i.i.i.i.i.i = fmul float %sqrt.i.i.i271.i.i.i.i.i.i.i, %cond.i.i.i.i + %229 = insertelement <2 x float> poison, float %sqrt.i.i.i271.i.i.i.i.i.i.i, i64 0 %230 = shufflevector <2 x float> %229, <2 x float> poison, <2 x i32> zeroinitializer - %231 = fdiv <2 x float> %ray.sroa.14.0349.i.i.i.i, %230 - %div3.i.i.i.i279.i.i.i.i.i.i.i = fdiv float %ray.sroa.22.0350.i.i.i.i, %sqrt.i.i.i275.i.i.i.i.i.i.i - %232 = inttoptr i64 %and.i40280286.i.i.i.i to ptr - store <2 x float> %ray.sroa.0.0347.i.i.i.i, ptr %agg.tmp7.i.i244.i.i.i.i.i.i.i, align 8 - store float %ray.sroa.9.0348.i.i.i.i, ptr %agg.tmp.sroa.6.0.agg.tmp7.i.sroa_idx.i284.i.i.i.i.i.i.i, align 8 - store <2 x float> %231, ptr %agg.tmp.sroa.8.0.agg.tmp7.i.sroa_idx.i285.i.i.i.i.i.i.i, align 4 - store float %div3.i.i.i.i279.i.i.i.i.i.i.i, ptr %agg.tmp.sroa.14.0.agg.tmp7.i.sroa_idx.i286.i.i.i.i.i.i.i, align 4 - store float %ray.sroa.28.0351.i.i.i.i, ptr %agg.tmp.sroa.18.0.agg.tmp7.i.sroa_idx.i287.i.i.i.i.i.i.i, align 8 - store i64 %ray.sroa.30.0352.i.i.i.i, ptr %medium.i.i.i288.i.i.i.i.i.i.i, align 8 - call void @_ZNK4pbrt13RGBGridMedium9SampleRayENS_3RayEfRKNS_18SampledWavelengthsE(ptr nonnull sret(%"class.pbrt::DDAMajorantIterator") align 8 %iter.i.i243.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(408) %232, ptr noundef nonnull %agg.tmp7.i.i244.i.i.i.i.i.i.i, float noundef %mul.i.i276.i.i.i.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(32) %lambda.i.i.i.i) - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %T_maj.i.i245.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) - br label %for.body.i.i.i.i289.i.i.i.i.i.i.i - -for.body.i.i.i.i289.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i289.i.i.i.i.i.i.i, %sw.bb8.i.i.i.i.i.i.i - %indvars.iv.i.i.i.i290.i.i.i.i.i.i.i = phi i64 [ 0, %sw.bb8.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i.i.i292.i.i.i.i.i.i.i, %for.body.i.i.i.i289.i.i.i.i.i.i.i ] - %arrayidx.i.i.i.i291.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %T_maj.i.i245.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i.i.i290.i.i.i.i.i.i.i - store float 1.000000e+00, ptr %arrayidx.i.i.i.i291.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i.i.i.i292.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i.i.i290.i.i.i.i.i.i.i, 1 - %exitcond.not.i.i.i.i293.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i.i.i292.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i.i.i.i293.i.i.i.i.i.i.i, label %while.cond.preheader.i.i294.i.i.i.i.i.i.i, label %for.body.i.i.i.i289.i.i.i.i.i.i.i, !llvm.loop !103 - -while.cond.preheader.i.i294.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i289.i.i.i.i.i.i.i + %231 = fdiv <2 x float> %ray.sroa.14.0348.i.i.i.i, %230 + %div3.i.i.i.i275.i.i.i.i.i.i.i = fdiv float %ray.sroa.22.0349.i.i.i.i, %sqrt.i.i.i271.i.i.i.i.i.i.i + %232 = inttoptr i64 %and.i40279285.i.i.i.i to ptr + store <2 x float> %ray.sroa.0.0346.i.i.i.i, ptr %agg.tmp7.i.i240.i.i.i.i.i.i.i, align 8 + store float %ray.sroa.9.0347.i.i.i.i, ptr %agg.tmp.sroa.6.0.agg.tmp7.i.sroa_idx.i280.i.i.i.i.i.i.i, align 8 + store <2 x float> %231, ptr %agg.tmp.sroa.8.0.agg.tmp7.i.sroa_idx.i281.i.i.i.i.i.i.i, align 4 + store float %div3.i.i.i.i275.i.i.i.i.i.i.i, ptr %agg.tmp.sroa.14.0.agg.tmp7.i.sroa_idx.i282.i.i.i.i.i.i.i, align 4 + store float %ray.sroa.28.0350.i.i.i.i, ptr %agg.tmp.sroa.18.0.agg.tmp7.i.sroa_idx.i283.i.i.i.i.i.i.i, align 8 + store i64 %ray.sroa.30.0351.i.i.i.i, ptr %medium.i.i.i284.i.i.i.i.i.i.i, align 8 + call void @_ZNK4pbrt13RGBGridMedium9SampleRayENS_3RayEfRKNS_18SampledWavelengthsE(ptr nonnull sret(%"class.pbrt::DDAMajorantIterator") align 8 %iter.i.i239.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(408) %232, ptr noundef nonnull %agg.tmp7.i.i240.i.i.i.i.i.i.i, float noundef %mul.i.i272.i.i.i.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(32) %lambda.i.i.i.i) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %T_maj.i.i241.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) + br label %for.body.i.i.i.i285.i.i.i.i.i.i.i + +for.body.i.i.i.i285.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i285.i.i.i.i.i.i.i, %sw.bb8.i.i.i.i.i.i.i + %indvars.iv.i.i.i.i286.i.i.i.i.i.i.i = phi i64 [ 0, %sw.bb8.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i.i.i288.i.i.i.i.i.i.i, %for.body.i.i.i.i285.i.i.i.i.i.i.i ] + %arrayidx.i.i.i.i287.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %T_maj.i.i241.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i.i.i286.i.i.i.i.i.i.i + store float 1.000000e+00, ptr %arrayidx.i.i.i.i287.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i.i.i.i288.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i.i.i286.i.i.i.i.i.i.i, 1 + %exitcond.not.i.i.i.i289.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i.i.i288.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i.i.i.i289.i.i.i.i.i.i.i, label %while.cond.preheader.i.i290.i.i.i.i.i.i.i, label %for.body.i.i.i.i285.i.i.i.i.i.i.i, !llvm.loop !103 + +while.cond.preheader.i.i290.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i285.i.i.i.i.i.i.i %renderFromMedium.i.i.i.i.i.i.i.i.i = getelementptr inbounds %"class.pbrt::RGBGridMedium", ptr %232, i64 0, i32 1 %agg.tmp.sroa.2.0.pMin.sroa_idx.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %232, i64 8 %pMax.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds %"class.pbrt::Bounds3", ptr %232, i64 0, i32 1 @@ -12352,253 +12340,249 @@ while.cond.preheader.i.i294.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i289 %phase53.i.i.i.i.i.i.i.i.i = getelementptr inbounds %"class.pbrt::RGBGridMedium", ptr %232, i64 0, i32 4 %233 = ptrtoint ptr %phase53.i.i.i.i.i.i.i.i.i to i64 %or.i.i.i14.i.i.i.i.i.i.i.i = or i64 %233, 144115188075855872 - call void @_ZN4pbrt19DDAMajorantIterator4NextEv(ptr nonnull sret(%"class.pstd::optional.223") align 4 %seg.i.i246.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(92) %iter.i.i243.i.i.i.i.i.i.i) - %234 = load i8, ptr %set.i.i.i295.i.i.i.i.i.i.i, align 4 + call void @_ZN4pbrt19DDAMajorantIterator4NextEv(ptr nonnull sret(%"class.pstd::optional.223") align 4 %seg.i.i242.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(92) %iter.i.i239.i.i.i.i.i.i.i) + %234 = load i8, ptr %set.i.i.i291.i.i.i.i.i.i.i, align 4 %235 = and i8 %234, 1 - %tobool.i.not.i.i31140.i.i.i.i.i.i.i = icmp eq i8 %235, 0 - br i1 %tobool.i.not.i.i31140.i.i.i.i.i.i.i, label %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.thread.i.i512.i.i.i.i.i.i.i, label %invoke.cont.i.i312.i.i.i.i.i.i.i + %tobool.i.not.i.i30740.i.i.i.i.i.i.i = icmp eq i8 %235, 0 + br i1 %tobool.i.not.i.i30740.i.i.i.i.i.i.i, label %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.thread.i.i504.i.i.i.i.i.i.i, label %invoke.cont.i.i308.i.i.i.i.i.i.i -_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.thread.i.i512.i.i.i.i.i.i.i: ; preds = %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.i.i384.i.i.i.i.i.i.i, %while.cond.preheader.i.i294.i.i.i.i.i.i.i - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i.i242.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %T_maj.i.i245.i.i.i.i.i.i.i, i64 16, i1 false) +_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.thread.i.i504.i.i.i.i.i.i.i: ; preds = %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.i.i376.i.i.i.i.i.i.i, %while.cond.preheader.i.i290.i.i.i.i.i.i.i + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i.i238.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %T_maj.i.i241.i.i.i.i.i.i.i, i64 16, i1 false) br label %"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_13RGBGridMediumEEEDaSH_.exit.i.i.i.i.i.i.i" -invoke.cont.i.i312.i.i.i.i.i.i.i: ; preds = %while.cond.preheader.i.i294.i.i.i.i.i.i.i, %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.i.i384.i.i.i.i.i.i.i - %u.addr.0.i23.i31041.i.i.i.i.i.i.i = phi float [ %u.addr.2270.i.i385.i.i.i.i.i.i.i, %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.i.i384.i.i.i.i.i.i.i ], [ %.sroa.speculated.i.i.i.i.i, %while.cond.preheader.i.i294.i.i.i.i.i.i.i ] - %236 = load float, ptr %sigma_maj.i.i296.i.i.i.i.i.i.i, align 4 - %cmp.i.i313.i.i.i.i.i.i.i = fcmp oeq float %236, 0.000000e+00 - br i1 %cmp.i.i313.i.i.i.i.i.i.i, label %invoke.cont17.i.i466.i.i.i.i.i.i.i, label %invoke.cont48.preheader.i.i314.i.i.i.i.i.i.i - -invoke.cont17.i.i466.i.i.i.i.i.i.i: ; preds = %invoke.cont.i.i312.i.i.i.i.i.i.i - %237 = load float, ptr %tMax54.i.i298.i.i.i.i.i.i.i, align 4 - %238 = load float, ptr %seg.i.i246.i.i.i.i.i.i.i, align 4 - %sub.i.i467.i.i.i.i.i.i.i = fsub float %237, %238 - %239 = call float @llvm.fabs.f32(float %sub.i.i467.i.i.i.i.i.i.i) +invoke.cont.i.i308.i.i.i.i.i.i.i: ; preds = %while.cond.preheader.i.i290.i.i.i.i.i.i.i, %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.i.i376.i.i.i.i.i.i.i + %u.addr.0.i23.i30641.i.i.i.i.i.i.i = phi float [ %u.addr.2267.i.i377.i.i.i.i.i.i.i, %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.i.i376.i.i.i.i.i.i.i ], [ %.sroa.speculated.i.i.i.i.i, %while.cond.preheader.i.i290.i.i.i.i.i.i.i ] + %236 = load float, ptr %sigma_maj.i.i292.i.i.i.i.i.i.i, align 4 + %cmp.i.i309.i.i.i.i.i.i.i = fcmp oeq float %236, 0.000000e+00 + br i1 %cmp.i.i309.i.i.i.i.i.i.i, label %invoke.cont17.i.i458.i.i.i.i.i.i.i, label %invoke.cont48.preheader.i.i310.i.i.i.i.i.i.i + +invoke.cont17.i.i458.i.i.i.i.i.i.i: ; preds = %invoke.cont.i.i308.i.i.i.i.i.i.i + %237 = load float, ptr %tMax54.i.i294.i.i.i.i.i.i.i, align 4 + %238 = load float, ptr %seg.i.i242.i.i.i.i.i.i.i, align 4 + %sub.i.i459.i.i.i.i.i.i.i = fsub float %237, %238 + %239 = call float @llvm.fabs.f32(float %sub.i.i459.i.i.i.i.i.i.i) %240 = fcmp oeq float %239, 0x7FF0000000000000 - %dt.0.i.i468.i.i.i.i.i.i.i = select i1 %240, float 0x47EFFFFFE0000000, float %sub.i.i467.i.i.i.i.i.i.i - %fneg.i.i469.i.i.i.i.i.i.i = fneg float %dt.0.i.i468.i.i.i.i.i.i.i - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i.i.i.i241.i.i.i.i.i.i.i) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i.i.i.i241.i.i.i.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(16) %sigma_maj.i.i296.i.i.i.i.i.i.i, i64 16, i1 false) - br label %for.body.i.i29.i.i470.i.i.i.i.i.i.i - -for.body.i.i29.i.i470.i.i.i.i.i.i.i: ; preds = %for.body.i.i29.i.i470.i.i.i.i.i.i.i, %invoke.cont17.i.i466.i.i.i.i.i.i.i - %indvars.iv.i.i30.i.i471.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont17.i.i466.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i31.i.i474.i.i.i.i.i.i.i, %for.body.i.i29.i.i470.i.i.i.i.i.i.i ] - %arrayidx.i.i.i.i.i472.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i.i.i241.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i30.i.i471.i.i.i.i.i.i.i - %241 = load float, ptr %arrayidx.i.i.i.i.i472.i.i.i.i.i.i.i, align 4 - %mul.i.i.i.i473.i.i.i.i.i.i.i = fmul float %241, %fneg.i.i469.i.i.i.i.i.i.i - store float %mul.i.i.i.i473.i.i.i.i.i.i.i, ptr %arrayidx.i.i.i.i.i472.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i.i31.i.i474.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i30.i.i471.i.i.i.i.i.i.i, 1 - %exitcond.not.i.i32.i.i475.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i31.i.i474.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i.i32.i.i475.i.i.i.i.i.i.i, label %invoke.cont27.i.i476.i.i.i.i.i.i.i, label %for.body.i.i29.i.i470.i.i.i.i.i.i.i, !llvm.loop !110 - -invoke.cont27.i.i476.i.i.i.i.i.i.i: ; preds = %for.body.i.i29.i.i470.i.i.i.i.i.i.i - %.fca.0.load.i.i.i.i477.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i.i.i.i241.i.i.i.i.i.i.i, align 8 - %.fca.1.load.i.i.i.i478.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i.i.i.i307.i.i.i.i.i.i.i, align 8 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i.i.i.i241.i.i.i.i.i.i.i) - store <2 x float> %.fca.0.load.i.i.i.i477.i.i.i.i.i.i.i, ptr %ref.tmp23.i.i248.i.i.i.i.i.i.i, align 8 - store <2 x float> %.fca.1.load.i.i.i.i478.i.i.i.i.i.i.i, ptr %54, align 8 - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i.i.i240.i.i.i.i.i.i.i) - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i.i.i240.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) - br label %for.body.i.i.i479.i.i.i.i.i.i.i - -for.body.i.i.i479.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i.i.i496.i.i.i.i.i.i.i, %invoke.cont27.i.i476.i.i.i.i.i.i.i - %indvars.iv.i.i.i480.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont27.i.i476.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i.i499.i.i.i.i.i.i.i, %_ZN4pbrt7FastExpEf.exit.i.i.i496.i.i.i.i.i.i.i ] - %arrayidx.i.i.i35.i.i481.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp23.i.i248.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i.i480.i.i.i.i.i.i.i - %242 = load float, ptr %arrayidx.i.i.i35.i.i481.i.i.i.i.i.i.i, align 4 - %mul.i.i36.i.i482.i.i.i.i.i.i.i = fmul float %242, 0x3FF7154760000000 - %243 = call noundef float @llvm.floor.f32(float %mul.i.i36.i.i482.i.i.i.i.i.i.i) - %sub.i.i.i.i483.i.i.i.i.i.i.i = fsub float %mul.i.i36.i.i482.i.i.i.i.i.i.i, %243 - %conv.i4.i.i.i484.i.i.i.i.i.i.i = fptosi float %243 to i32 - %244 = call noundef float @llvm.fma.f32(float %sub.i.i.i.i483.i.i.i.i.i.i.i, float 0x3FB4015920000000, float 0x3FCCF34160000000) - %245 = call noundef float @llvm.fma.f32(float %sub.i.i.i.i483.i.i.i.i.i.i.i, float %244, float 0x3FE6420080000000) - %246 = call noundef float @llvm.fma.f32(float %sub.i.i.i.i483.i.i.i.i.i.i.i, float %245, float 1.000000e+00) + %dt.0.i.i460.i.i.i.i.i.i.i = select i1 %240, float 0x47EFFFFFE0000000, float %sub.i.i459.i.i.i.i.i.i.i + %fneg.i.i461.i.i.i.i.i.i.i = fneg float %dt.0.i.i460.i.i.i.i.i.i.i + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i.i.i.i237.i.i.i.i.i.i.i) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i.i.i.i237.i.i.i.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(16) %sigma_maj.i.i292.i.i.i.i.i.i.i, i64 16, i1 false) + br label %for.body.i.i29.i.i462.i.i.i.i.i.i.i + +for.body.i.i29.i.i462.i.i.i.i.i.i.i: ; preds = %for.body.i.i29.i.i462.i.i.i.i.i.i.i, %invoke.cont17.i.i458.i.i.i.i.i.i.i + %indvars.iv.i.i30.i.i463.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont17.i.i458.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i31.i.i466.i.i.i.i.i.i.i, %for.body.i.i29.i.i462.i.i.i.i.i.i.i ] + %arrayidx.i.i.i.i.i464.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i.i.i237.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i30.i.i463.i.i.i.i.i.i.i + %241 = load float, ptr %arrayidx.i.i.i.i.i464.i.i.i.i.i.i.i, align 4 + %mul.i.i.i.i465.i.i.i.i.i.i.i = fmul float %241, %fneg.i.i461.i.i.i.i.i.i.i + store float %mul.i.i.i.i465.i.i.i.i.i.i.i, ptr %arrayidx.i.i.i.i.i464.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i.i31.i.i466.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i30.i.i463.i.i.i.i.i.i.i, 1 + %exitcond.not.i.i32.i.i467.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i31.i.i466.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i.i32.i.i467.i.i.i.i.i.i.i, label %invoke.cont27.i.i468.i.i.i.i.i.i.i, label %for.body.i.i29.i.i462.i.i.i.i.i.i.i, !llvm.loop !110 + +invoke.cont27.i.i468.i.i.i.i.i.i.i: ; preds = %for.body.i.i29.i.i462.i.i.i.i.i.i.i + %.fca.0.load.i.i.i.i469.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i.i.i.i237.i.i.i.i.i.i.i, align 8 + %.fca.1.load.i.i.i.i470.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i.i.i.i303.i.i.i.i.i.i.i, align 8 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i.i.i.i237.i.i.i.i.i.i.i) + store <2 x float> %.fca.0.load.i.i.i.i469.i.i.i.i.i.i.i, ptr %ref.tmp23.i.i244.i.i.i.i.i.i.i, align 8 + store <2 x float> %.fca.1.load.i.i.i.i470.i.i.i.i.i.i.i, ptr %54, align 8 + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i.i.i236.i.i.i.i.i.i.i) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i.i.i236.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) + br label %for.body.i.i.i471.i.i.i.i.i.i.i + +for.body.i.i.i471.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i.i.i488.i.i.i.i.i.i.i, %invoke.cont27.i.i468.i.i.i.i.i.i.i + %indvars.iv.i.i.i472.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont27.i.i468.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i.i491.i.i.i.i.i.i.i, %_ZN4pbrt7FastExpEf.exit.i.i.i488.i.i.i.i.i.i.i ] + %arrayidx.i.i.i35.i.i473.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp23.i.i244.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i.i472.i.i.i.i.i.i.i + %242 = load float, ptr %arrayidx.i.i.i35.i.i473.i.i.i.i.i.i.i, align 4 + %mul.i.i36.i.i474.i.i.i.i.i.i.i = fmul float %242, 0x3FF7154760000000 + %243 = call noundef float @llvm.floor.f32(float %mul.i.i36.i.i474.i.i.i.i.i.i.i) + %sub.i.i.i.i475.i.i.i.i.i.i.i = fsub float %mul.i.i36.i.i474.i.i.i.i.i.i.i, %243 + %conv.i4.i.i.i476.i.i.i.i.i.i.i = fptosi float %243 to i32 + %244 = call noundef float @llvm.fma.f32(float %sub.i.i.i.i475.i.i.i.i.i.i.i, float 0x3FB4015920000000, float 0x3FCCF34160000000) + %245 = call noundef float @llvm.fma.f32(float %sub.i.i.i.i475.i.i.i.i.i.i.i, float %244, float 0x3FE6420080000000) + %246 = call noundef float @llvm.fma.f32(float %sub.i.i.i.i475.i.i.i.i.i.i.i, float %245, float 1.000000e+00) %247 = bitcast float %246 to i32 - %shr.i.i.i.i.i485.i.i.i.i.i.i.i = lshr i32 %247, 23 - %sub.i.i.i.i.i486.i.i.i.i.i.i.i = add i32 %conv.i4.i.i.i484.i.i.i.i.i.i.i, -127 - %add.i.i37.i.i487.i.i.i.i.i.i.i = add i32 %sub.i.i.i.i.i486.i.i.i.i.i.i.i, %shr.i.i.i.i.i485.i.i.i.i.i.i.i - %cmp.i.i.i.i488.i.i.i.i.i.i.i = icmp slt i32 %add.i.i37.i.i487.i.i.i.i.i.i.i, -126 - br i1 %cmp.i.i.i.i488.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i.i.i496.i.i.i.i.i.i.i, label %if.end.i.i.i.i489.i.i.i.i.i.i.i - -if.end.i.i.i.i489.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i479.i.i.i.i.i.i.i - %cmp3.i.i.i.i490.i.i.i.i.i.i.i = icmp sgt i32 %add.i.i37.i.i487.i.i.i.i.i.i.i, 127 - br i1 %cmp3.i.i.i.i490.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i.i.i496.i.i.i.i.i.i.i, label %if.end5.i.i.i.i491.i.i.i.i.i.i.i - -if.end5.i.i.i.i491.i.i.i.i.i.i.i: ; preds = %if.end.i.i.i.i489.i.i.i.i.i.i.i - %and.i.i38.i.i492.i.i.i.i.i.i.i = and i32 %247, -2139095041 - %add7.i.i.i.i493.i.i.i.i.i.i.i = shl nsw i32 %add.i.i37.i.i487.i.i.i.i.i.i.i, 23 - %shl.i.i.i.i494.i.i.i.i.i.i.i = add i32 %add7.i.i.i.i493.i.i.i.i.i.i.i, 1065353216 - %or.i.i.i.i495.i.i.i.i.i.i.i = or i32 %shl.i.i.i.i494.i.i.i.i.i.i.i, %and.i.i38.i.i492.i.i.i.i.i.i.i - %248 = bitcast i32 %or.i.i.i.i495.i.i.i.i.i.i.i to float - br label %_ZN4pbrt7FastExpEf.exit.i.i.i496.i.i.i.i.i.i.i - -_ZN4pbrt7FastExpEf.exit.i.i.i496.i.i.i.i.i.i.i: ; preds = %if.end5.i.i.i.i491.i.i.i.i.i.i.i, %if.end.i.i.i.i489.i.i.i.i.i.i.i, %for.body.i.i.i479.i.i.i.i.i.i.i - %retval.0.i.i.i.i497.i.i.i.i.i.i.i = phi float [ %248, %if.end5.i.i.i.i491.i.i.i.i.i.i.i ], [ 0.000000e+00, %for.body.i.i.i479.i.i.i.i.i.i.i ], [ 0x7FF0000000000000, %if.end.i.i.i.i489.i.i.i.i.i.i.i ] - %arrayidx.i.i6.i.i.i498.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i.i240.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i.i480.i.i.i.i.i.i.i - store float %retval.0.i.i.i.i497.i.i.i.i.i.i.i, ptr %arrayidx.i.i6.i.i.i498.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i.i.i499.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i.i480.i.i.i.i.i.i.i, 1 - %exitcond.not.i.i.i500.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i.i499.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i.i.i500.i.i.i.i.i.i.i, label %invoke.cont31.i.i501.i.i.i.i.i.i.i, label %for.body.i.i.i479.i.i.i.i.i.i.i, !llvm.loop !111 - -invoke.cont31.i.i501.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i.i.i496.i.i.i.i.i.i.i - %.fca.0.load.i.i.i502.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i.i.i240.i.i.i.i.i.i.i, align 8 - %.fca.1.load.i.i.i503.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i.i.i308.i.i.i.i.i.i.i, align 8 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i.i.i240.i.i.i.i.i.i.i) - store <2 x float> %.fca.0.load.i.i.i502.i.i.i.i.i.i.i, ptr %ref.tmp22.i.i247.i.i.i.i.i.i.i, align 8 - store <2 x float> %.fca.1.load.i.i.i503.i.i.i.i.i.i.i, ptr %55, align 8 - br label %for.body.i39.i.i504.i.i.i.i.i.i.i - -for.body.i39.i.i504.i.i.i.i.i.i.i: ; preds = %for.body.i39.i.i504.i.i.i.i.i.i.i, %invoke.cont31.i.i501.i.i.i.i.i.i.i - %indvars.iv.i40.i.i505.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont31.i.i501.i.i.i.i.i.i.i ], [ %indvars.iv.next.i42.i.i509.i.i.i.i.i.i.i, %for.body.i39.i.i504.i.i.i.i.i.i.i ] - %arrayidx.i.i41.i.i506.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp22.i.i247.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i40.i.i505.i.i.i.i.i.i.i - %249 = load float, ptr %arrayidx.i.i41.i.i506.i.i.i.i.i.i.i, align 4 - %arrayidx.i4.i.i.i507.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %T_maj.i.i245.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i40.i.i505.i.i.i.i.i.i.i - %250 = load float, ptr %arrayidx.i4.i.i.i507.i.i.i.i.i.i.i, align 4 - %mul.i.i.i508.i.i.i.i.i.i.i = fmul float %249, %250 - store float %mul.i.i.i508.i.i.i.i.i.i.i, ptr %arrayidx.i4.i.i.i507.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i42.i.i509.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i40.i.i505.i.i.i.i.i.i.i, 1 - %exitcond.not.i43.i.i510.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i42.i.i509.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i43.i.i510.i.i.i.i.i.i.i, label %_ZN4pbrt15SampledSpectrummLERKS0_.exit.i.i511.i.i.i.i.i.i.i, label %for.body.i39.i.i504.i.i.i.i.i.i.i, !llvm.loop !112 - -_ZN4pbrt15SampledSpectrummLERKS0_.exit.i.i511.i.i.i.i.i.i.i: ; preds = %for.body.i39.i.i504.i.i.i.i.i.i.i - br label %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.i.i384.i.i.i.i.i.i.i, !llvm.loop !116 - -invoke.cont48.preheader.i.i314.i.i.i.i.i.i.i: ; preds = %invoke.cont.i.i312.i.i.i.i.i.i.i - %251 = load float, ptr %seg.i.i246.i.i.i.i.i.i.i, align 4 - br label %invoke.cont48.i.i315.i.i.i.i.i.i.i - -invoke.cont48.i.i315.i.i.i.i.i.i.i: ; preds = %invoke.cont97.i.i463.i.i.i.i.i.i.i, %invoke.cont48.preheader.i.i314.i.i.i.i.i.i.i - %u.addr.1244.i.i316.i.i.i.i.i.i.i = phi float [ %.sroa.speculated.i.i.i335.i.i.i.i.i.i.i, %invoke.cont97.i.i463.i.i.i.i.i.i.i ], [ %u.addr.0.i23.i31041.i.i.i.i.i.i.i, %invoke.cont48.preheader.i.i314.i.i.i.i.i.i.i ] - %tMin38.0243.i.i317.i.i.i.i.i.i.i = phi float [ %add.i.i320.i.i.i.i.i.i.i, %invoke.cont97.i.i463.i.i.i.i.i.i.i ], [ %251, %invoke.cont48.preheader.i.i314.i.i.i.i.i.i.i ] - %252 = load float, ptr %sigma_maj.i.i296.i.i.i.i.i.i.i, align 4 - %sub.i.i.i318.i.i.i.i.i.i.i = fsub float 1.000000e+00, %u.addr.1244.i.i316.i.i.i.i.i.i.i - %call.i.i.i.i319.i.i.i.i.i.i.i = call noundef float @logf(float noundef %sub.i.i.i318.i.i.i.i.i.i.i) #25 - %253 = fdiv float %call.i.i.i.i319.i.i.i.i.i.i.i, %252 - %add.i.i320.i.i.i.i.i.i.i = fsub float %tMin38.0243.i.i317.i.i.i.i.i.i.i, %253 + %shr.i.i.i.i.i477.i.i.i.i.i.i.i = lshr i32 %247, 23 + %sub.i.i.i.i.i478.i.i.i.i.i.i.i = add i32 %conv.i4.i.i.i476.i.i.i.i.i.i.i, -127 + %add.i.i37.i.i479.i.i.i.i.i.i.i = add i32 %sub.i.i.i.i.i478.i.i.i.i.i.i.i, %shr.i.i.i.i.i477.i.i.i.i.i.i.i + %cmp.i.i.i.i480.i.i.i.i.i.i.i = icmp slt i32 %add.i.i37.i.i479.i.i.i.i.i.i.i, -126 + br i1 %cmp.i.i.i.i480.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i.i.i488.i.i.i.i.i.i.i, label %if.end.i.i.i.i481.i.i.i.i.i.i.i + +if.end.i.i.i.i481.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i471.i.i.i.i.i.i.i + %cmp3.i.i.i.i482.i.i.i.i.i.i.i = icmp sgt i32 %add.i.i37.i.i479.i.i.i.i.i.i.i, 127 + br i1 %cmp3.i.i.i.i482.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i.i.i488.i.i.i.i.i.i.i, label %if.end5.i.i.i.i483.i.i.i.i.i.i.i + +if.end5.i.i.i.i483.i.i.i.i.i.i.i: ; preds = %if.end.i.i.i.i481.i.i.i.i.i.i.i + %and.i.i38.i.i484.i.i.i.i.i.i.i = and i32 %247, -2139095041 + %add7.i.i.i.i485.i.i.i.i.i.i.i = shl nsw i32 %add.i.i37.i.i479.i.i.i.i.i.i.i, 23 + %shl.i.i.i.i486.i.i.i.i.i.i.i = add i32 %add7.i.i.i.i485.i.i.i.i.i.i.i, 1065353216 + %or.i.i.i.i487.i.i.i.i.i.i.i = or i32 %shl.i.i.i.i486.i.i.i.i.i.i.i, %and.i.i38.i.i484.i.i.i.i.i.i.i + %248 = bitcast i32 %or.i.i.i.i487.i.i.i.i.i.i.i to float + br label %_ZN4pbrt7FastExpEf.exit.i.i.i488.i.i.i.i.i.i.i + +_ZN4pbrt7FastExpEf.exit.i.i.i488.i.i.i.i.i.i.i: ; preds = %if.end5.i.i.i.i483.i.i.i.i.i.i.i, %if.end.i.i.i.i481.i.i.i.i.i.i.i, %for.body.i.i.i471.i.i.i.i.i.i.i + %retval.0.i.i.i.i489.i.i.i.i.i.i.i = phi float [ %248, %if.end5.i.i.i.i483.i.i.i.i.i.i.i ], [ 0.000000e+00, %for.body.i.i.i471.i.i.i.i.i.i.i ], [ 0x7FF0000000000000, %if.end.i.i.i.i481.i.i.i.i.i.i.i ] + %arrayidx.i.i6.i.i.i490.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i.i236.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i.i472.i.i.i.i.i.i.i + store float %retval.0.i.i.i.i489.i.i.i.i.i.i.i, ptr %arrayidx.i.i6.i.i.i490.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i.i.i491.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i.i472.i.i.i.i.i.i.i, 1 + %exitcond.not.i.i.i492.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i.i491.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i.i.i492.i.i.i.i.i.i.i, label %invoke.cont31.i.i493.i.i.i.i.i.i.i, label %for.body.i.i.i471.i.i.i.i.i.i.i, !llvm.loop !111 + +invoke.cont31.i.i493.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i.i.i488.i.i.i.i.i.i.i + %.fca.0.load.i.i.i494.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i.i.i236.i.i.i.i.i.i.i, align 8 + %.fca.1.load.i.i.i495.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i.i.i304.i.i.i.i.i.i.i, align 8 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i.i.i236.i.i.i.i.i.i.i) + store <2 x float> %.fca.0.load.i.i.i494.i.i.i.i.i.i.i, ptr %ref.tmp22.i.i243.i.i.i.i.i.i.i, align 8 + store <2 x float> %.fca.1.load.i.i.i495.i.i.i.i.i.i.i, ptr %55, align 8 + br label %for.body.i39.i.i496.i.i.i.i.i.i.i + +for.body.i39.i.i496.i.i.i.i.i.i.i: ; preds = %for.body.i39.i.i496.i.i.i.i.i.i.i, %invoke.cont31.i.i493.i.i.i.i.i.i.i + %indvars.iv.i40.i.i497.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont31.i.i493.i.i.i.i.i.i.i ], [ %indvars.iv.next.i42.i.i501.i.i.i.i.i.i.i, %for.body.i39.i.i496.i.i.i.i.i.i.i ] + %arrayidx.i.i41.i.i498.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp22.i.i243.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i40.i.i497.i.i.i.i.i.i.i + %249 = load float, ptr %arrayidx.i.i41.i.i498.i.i.i.i.i.i.i, align 4 + %arrayidx.i4.i.i.i499.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %T_maj.i.i241.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i40.i.i497.i.i.i.i.i.i.i + %250 = load float, ptr %arrayidx.i4.i.i.i499.i.i.i.i.i.i.i, align 4 + %mul.i.i.i500.i.i.i.i.i.i.i = fmul float %249, %250 + store float %mul.i.i.i500.i.i.i.i.i.i.i, ptr %arrayidx.i4.i.i.i499.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i42.i.i501.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i40.i.i497.i.i.i.i.i.i.i, 1 + %exitcond.not.i43.i.i502.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i42.i.i501.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i43.i.i502.i.i.i.i.i.i.i, label %_ZN4pbrt15SampledSpectrummLERKS0_.exit.i.i503.i.i.i.i.i.i.i, label %for.body.i39.i.i496.i.i.i.i.i.i.i, !llvm.loop !112 + +_ZN4pbrt15SampledSpectrummLERKS0_.exit.i.i503.i.i.i.i.i.i.i: ; preds = %for.body.i39.i.i496.i.i.i.i.i.i.i + br label %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.i.i376.i.i.i.i.i.i.i, !llvm.loop !116 + +invoke.cont48.preheader.i.i310.i.i.i.i.i.i.i: ; preds = %invoke.cont.i.i308.i.i.i.i.i.i.i + %251 = load float, ptr %seg.i.i242.i.i.i.i.i.i.i, align 4 + br label %invoke.cont48.i.i311.i.i.i.i.i.i.i + +invoke.cont48.i.i311.i.i.i.i.i.i.i: ; preds = %invoke.cont97.i.i455.i.i.i.i.i.i.i, %invoke.cont48.preheader.i.i310.i.i.i.i.i.i.i + %u.addr.1241.i.i312.i.i.i.i.i.i.i = phi float [ %.sroa.speculated.i.i.i327.i.i.i.i.i.i.i, %invoke.cont97.i.i455.i.i.i.i.i.i.i ], [ %u.addr.0.i23.i30641.i.i.i.i.i.i.i, %invoke.cont48.preheader.i.i310.i.i.i.i.i.i.i ] + %tMin38.0240.i.i313.i.i.i.i.i.i.i = phi float [ %add.i.i316.i.i.i.i.i.i.i, %invoke.cont97.i.i455.i.i.i.i.i.i.i ], [ %251, %invoke.cont48.preheader.i.i310.i.i.i.i.i.i.i ] + %252 = load float, ptr %sigma_maj.i.i292.i.i.i.i.i.i.i, align 4 + %sub.i.i.i314.i.i.i.i.i.i.i = fsub float 1.000000e+00, %u.addr.1241.i.i312.i.i.i.i.i.i.i + %call.i.i.i.i315.i.i.i.i.i.i.i = call noundef float @logf(float noundef %sub.i.i.i314.i.i.i.i.i.i.i) #25 + %253 = fdiv float %call.i.i.i.i315.i.i.i.i.i.i.i, %252 + %add.i.i316.i.i.i.i.i.i.i = fsub float %tMin38.0240.i.i313.i.i.i.i.i.i.i, %253 %254 = load i64, ptr %rng.i.i.i.i, align 8 - %mul.i.i54.i.i321.i.i.i.i.i.i.i = mul i64 %254, 6364136223846793005 + %mul.i.i54.i.i317.i.i.i.i.i.i.i = mul i64 %254, 6364136223846793005 %255 = load i64, ptr %inc.i.i.i.i.i.i, align 8 - %add.i.i55.i.i322.i.i.i.i.i.i.i = add i64 %mul.i.i54.i.i321.i.i.i.i.i.i.i, %255 - store i64 %add.i.i55.i.i322.i.i.i.i.i.i.i, ptr %rng.i.i.i.i, align 8 + %add.i.i55.i.i318.i.i.i.i.i.i.i = add i64 %mul.i.i54.i.i317.i.i.i.i.i.i.i, %255 + store i64 %add.i.i55.i.i318.i.i.i.i.i.i.i, ptr %rng.i.i.i.i, align 8 %256 = lshr i64 %254, 45 %257 = lshr i64 %254, 27 - %shr3.i.i.i.i323.i.i.i.i.i.i.i = xor i64 %256, %257 - %conv.i.i.i.i324.i.i.i.i.i.i.i = trunc i64 %shr3.i.i.i.i323.i.i.i.i.i.i.i to i32 - %shr4.i.i.i.i325.i.i.i.i.i.i.i = lshr i64 %254, 59 - %conv5.i.i.i.i326.i.i.i.i.i.i.i = trunc i64 %shr4.i.i.i.i325.i.i.i.i.i.i.i to i32 - %shr6.i.i.i.i327.i.i.i.i.i.i.i = lshr i32 %conv.i.i.i.i324.i.i.i.i.i.i.i, %conv5.i.i.i.i326.i.i.i.i.i.i.i - %add7.i.i56.i.i328.i.i.i.i.i.i.i = sub nsw i32 0, %conv5.i.i.i.i326.i.i.i.i.i.i.i - %and.i.i57.i.i329.i.i.i.i.i.i.i = and i32 %add7.i.i56.i.i328.i.i.i.i.i.i.i, 31 - %shl.i.i58.i.i330.i.i.i.i.i.i.i = shl i32 %conv.i.i.i.i324.i.i.i.i.i.i.i, %and.i.i57.i.i329.i.i.i.i.i.i.i - %or.i.i59.i.i331.i.i.i.i.i.i.i = or i32 %shr6.i.i.i.i327.i.i.i.i.i.i.i, %shl.i.i58.i.i330.i.i.i.i.i.i.i - %conv.i.i.i332.i.i.i.i.i.i.i = uitofp i32 %or.i.i59.i.i331.i.i.i.i.i.i.i to float - %mul.i60.i.i333.i.i.i.i.i.i.i = fmul float %conv.i.i.i332.i.i.i.i.i.i.i, 0x3DF0000000000000 - %cmp.i.i61.i.i334.i.i.i.i.i.i.i = fcmp olt float %mul.i60.i.i333.i.i.i.i.i.i.i, 0x3FEFFFFFE0000000 - %.sroa.speculated.i.i.i335.i.i.i.i.i.i.i = select i1 %cmp.i.i61.i.i334.i.i.i.i.i.i.i, float %mul.i60.i.i333.i.i.i.i.i.i.i, float 0x3FEFFFFFE0000000 - %258 = load i8, ptr %set.i.i.i295.i.i.i.i.i.i.i, align 4 + %shr3.i.i.i.i319.i.i.i.i.i.i.i = xor i64 %256, %257 + %conv.i.i.i.i320.i.i.i.i.i.i.i = trunc i64 %shr3.i.i.i.i319.i.i.i.i.i.i.i to i32 + %shr4.i.i.i.i321.i.i.i.i.i.i.i = lshr i64 %254, 59 + %conv5.i.i.i.i322.i.i.i.i.i.i.i = trunc i64 %shr4.i.i.i.i321.i.i.i.i.i.i.i to i32 + %or.i.i56.i.i323.i.i.i.i.i.i.i = call noundef i32 @llvm.fshr.i32(i32 %conv.i.i.i.i320.i.i.i.i.i.i.i, i32 %conv.i.i.i.i320.i.i.i.i.i.i.i, i32 %conv5.i.i.i.i322.i.i.i.i.i.i.i) + %conv.i.i.i324.i.i.i.i.i.i.i = uitofp i32 %or.i.i56.i.i323.i.i.i.i.i.i.i to float + %mul.i57.i.i325.i.i.i.i.i.i.i = fmul float %conv.i.i.i324.i.i.i.i.i.i.i, 0x3DF0000000000000 + %cmp.i.i58.i.i326.i.i.i.i.i.i.i = fcmp olt float %mul.i57.i.i325.i.i.i.i.i.i.i, 0x3FEFFFFFE0000000 + %.sroa.speculated.i.i.i327.i.i.i.i.i.i.i = select i1 %cmp.i.i58.i.i326.i.i.i.i.i.i.i, float %mul.i57.i.i325.i.i.i.i.i.i.i, float 0x3FEFFFFFE0000000 + %258 = load i8, ptr %set.i.i.i291.i.i.i.i.i.i.i, align 4 %259 = and i8 %258, 1 - %tobool.not.i.i63.i.i336.i.i.i.i.i.i.i = icmp eq i8 %259, 0 - br i1 %tobool.not.i.i63.i.i336.i.i.i.i.i.i.i, label %land.rhs.i.i51.invoke.i.i.i.i.i.i.invoke.i.i.i, label %invoke.cont52.i.i337.i.i.i.i.i.i.i - -invoke.cont52.i.i337.i.i.i.i.i.i.i: ; preds = %invoke.cont48.i.i315.i.i.i.i.i.i.i - %260 = load float, ptr %tMax54.i.i298.i.i.i.i.i.i.i, align 4 - %cmp55.i.i338.i.i.i.i.i.i.i = fcmp olt float %add.i.i320.i.i.i.i.i.i.i, %260 - br i1 %cmp55.i.i338.i.i.i.i.i.i.i, label %invoke.cont61.i.i386.i.i.i.i.i.i.i, label %invoke.cont103.i.i339.i.i.i.i.i.i.i - -invoke.cont61.i.i386.i.i.i.i.i.i.i: ; preds = %invoke.cont52.i.i337.i.i.i.i.i.i.i - %sub59.i.i387.i.i.i.i.i.i.i = fsub float %add.i.i320.i.i.i.i.i.i.i, %tMin38.0243.i.i317.i.i.i.i.i.i.i - %fneg60.i.i388.i.i.i.i.i.i.i = fneg float %sub59.i.i387.i.i.i.i.i.i.i - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i.i72.i.i239.i.i.i.i.i.i.i) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i.i72.i.i239.i.i.i.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(16) %sigma_maj.i.i296.i.i.i.i.i.i.i, i64 16, i1 false) - br label %for.body.i.i73.i.i389.i.i.i.i.i.i.i - -for.body.i.i73.i.i389.i.i.i.i.i.i.i: ; preds = %for.body.i.i73.i.i389.i.i.i.i.i.i.i, %invoke.cont61.i.i386.i.i.i.i.i.i.i - %indvars.iv.i.i74.i.i390.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont61.i.i386.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i77.i.i393.i.i.i.i.i.i.i, %for.body.i.i73.i.i389.i.i.i.i.i.i.i ] - %arrayidx.i.i.i75.i.i391.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i72.i.i239.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i74.i.i390.i.i.i.i.i.i.i - %261 = load float, ptr %arrayidx.i.i.i75.i.i391.i.i.i.i.i.i.i, align 4 - %mul.i.i76.i.i392.i.i.i.i.i.i.i = fmul float %261, %fneg60.i.i388.i.i.i.i.i.i.i - store float %mul.i.i76.i.i392.i.i.i.i.i.i.i, ptr %arrayidx.i.i.i75.i.i391.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i.i77.i.i393.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i74.i.i390.i.i.i.i.i.i.i, 1 - %exitcond.not.i.i78.i.i394.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i77.i.i393.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i.i78.i.i394.i.i.i.i.i.i.i, label %invoke.cont64.i.i395.i.i.i.i.i.i.i, label %for.body.i.i73.i.i389.i.i.i.i.i.i.i, !llvm.loop !110 - -invoke.cont64.i.i395.i.i.i.i.i.i.i: ; preds = %for.body.i.i73.i.i389.i.i.i.i.i.i.i - %.fca.0.load.i.i79.i.i396.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i.i72.i.i239.i.i.i.i.i.i.i, align 8 - %.fca.1.load.i.i82.i.i397.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i.i81.i.i299.i.i.i.i.i.i.i, align 8 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i.i72.i.i239.i.i.i.i.i.i.i) - store <2 x float> %.fca.0.load.i.i79.i.i396.i.i.i.i.i.i.i, ptr %ref.tmp58.i.i250.i.i.i.i.i.i.i, align 8 - store <2 x float> %.fca.1.load.i.i82.i.i397.i.i.i.i.i.i.i, ptr %50, align 8 - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i85.i.i238.i.i.i.i.i.i.i) - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i85.i.i238.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) - br label %for.body.i86.i.i398.i.i.i.i.i.i.i - -for.body.i86.i.i398.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i103.i.i415.i.i.i.i.i.i.i, %invoke.cont64.i.i395.i.i.i.i.i.i.i - %indvars.iv.i87.i.i399.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont64.i.i395.i.i.i.i.i.i.i ], [ %indvars.iv.next.i106.i.i418.i.i.i.i.i.i.i, %_ZN4pbrt7FastExpEf.exit.i103.i.i415.i.i.i.i.i.i.i ] - %arrayidx.i.i.i88.i.i400.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp58.i.i250.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i87.i.i399.i.i.i.i.i.i.i - %262 = load float, ptr %arrayidx.i.i.i88.i.i400.i.i.i.i.i.i.i, align 4 - %mul.i.i89.i.i401.i.i.i.i.i.i.i = fmul float %262, 0x3FF7154760000000 - %263 = call noundef float @llvm.floor.f32(float %mul.i.i89.i.i401.i.i.i.i.i.i.i) - %sub.i.i90.i.i402.i.i.i.i.i.i.i = fsub float %mul.i.i89.i.i401.i.i.i.i.i.i.i, %263 - %conv.i4.i91.i.i403.i.i.i.i.i.i.i = fptosi float %263 to i32 - %264 = call noundef float @llvm.fma.f32(float %sub.i.i90.i.i402.i.i.i.i.i.i.i, float 0x3FB4015920000000, float 0x3FCCF34160000000) - %265 = call noundef float @llvm.fma.f32(float %sub.i.i90.i.i402.i.i.i.i.i.i.i, float %264, float 0x3FE6420080000000) - %266 = call noundef float @llvm.fma.f32(float %sub.i.i90.i.i402.i.i.i.i.i.i.i, float %265, float 1.000000e+00) + %tobool.not.i.i60.i.i328.i.i.i.i.i.i.i = icmp eq i8 %259, 0 + br i1 %tobool.not.i.i60.i.i328.i.i.i.i.i.i.i, label %land.rhs.i.i51.invoke.i.i.i.i.i.i.invoke.i.i.i, label %invoke.cont52.i.i329.i.i.i.i.i.i.i + +invoke.cont52.i.i329.i.i.i.i.i.i.i: ; preds = %invoke.cont48.i.i311.i.i.i.i.i.i.i + %260 = load float, ptr %tMax54.i.i294.i.i.i.i.i.i.i, align 4 + %cmp55.i.i330.i.i.i.i.i.i.i = fcmp olt float %add.i.i316.i.i.i.i.i.i.i, %260 + br i1 %cmp55.i.i330.i.i.i.i.i.i.i, label %invoke.cont61.i.i378.i.i.i.i.i.i.i, label %invoke.cont103.i.i331.i.i.i.i.i.i.i + +invoke.cont61.i.i378.i.i.i.i.i.i.i: ; preds = %invoke.cont52.i.i329.i.i.i.i.i.i.i + %sub59.i.i379.i.i.i.i.i.i.i = fsub float %add.i.i316.i.i.i.i.i.i.i, %tMin38.0240.i.i313.i.i.i.i.i.i.i + %fneg60.i.i380.i.i.i.i.i.i.i = fneg float %sub59.i.i379.i.i.i.i.i.i.i + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i.i69.i.i235.i.i.i.i.i.i.i) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i.i69.i.i235.i.i.i.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(16) %sigma_maj.i.i292.i.i.i.i.i.i.i, i64 16, i1 false) + br label %for.body.i.i70.i.i381.i.i.i.i.i.i.i + +for.body.i.i70.i.i381.i.i.i.i.i.i.i: ; preds = %for.body.i.i70.i.i381.i.i.i.i.i.i.i, %invoke.cont61.i.i378.i.i.i.i.i.i.i + %indvars.iv.i.i71.i.i382.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont61.i.i378.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i74.i.i385.i.i.i.i.i.i.i, %for.body.i.i70.i.i381.i.i.i.i.i.i.i ] + %arrayidx.i.i.i72.i.i383.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i69.i.i235.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i71.i.i382.i.i.i.i.i.i.i + %261 = load float, ptr %arrayidx.i.i.i72.i.i383.i.i.i.i.i.i.i, align 4 + %mul.i.i73.i.i384.i.i.i.i.i.i.i = fmul float %261, %fneg60.i.i380.i.i.i.i.i.i.i + store float %mul.i.i73.i.i384.i.i.i.i.i.i.i, ptr %arrayidx.i.i.i72.i.i383.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i.i74.i.i385.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i71.i.i382.i.i.i.i.i.i.i, 1 + %exitcond.not.i.i75.i.i386.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i74.i.i385.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i.i75.i.i386.i.i.i.i.i.i.i, label %invoke.cont64.i.i387.i.i.i.i.i.i.i, label %for.body.i.i70.i.i381.i.i.i.i.i.i.i, !llvm.loop !110 + +invoke.cont64.i.i387.i.i.i.i.i.i.i: ; preds = %for.body.i.i70.i.i381.i.i.i.i.i.i.i + %.fca.0.load.i.i76.i.i388.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i.i69.i.i235.i.i.i.i.i.i.i, align 8 + %.fca.1.load.i.i79.i.i389.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i.i78.i.i295.i.i.i.i.i.i.i, align 8 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i.i69.i.i235.i.i.i.i.i.i.i) + store <2 x float> %.fca.0.load.i.i76.i.i388.i.i.i.i.i.i.i, ptr %ref.tmp58.i.i246.i.i.i.i.i.i.i, align 8 + store <2 x float> %.fca.1.load.i.i79.i.i389.i.i.i.i.i.i.i, ptr %50, align 8 + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i82.i.i234.i.i.i.i.i.i.i) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i82.i.i234.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) + br label %for.body.i83.i.i390.i.i.i.i.i.i.i + +for.body.i83.i.i390.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i100.i.i407.i.i.i.i.i.i.i, %invoke.cont64.i.i387.i.i.i.i.i.i.i + %indvars.iv.i84.i.i391.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont64.i.i387.i.i.i.i.i.i.i ], [ %indvars.iv.next.i103.i.i410.i.i.i.i.i.i.i, %_ZN4pbrt7FastExpEf.exit.i100.i.i407.i.i.i.i.i.i.i ] + %arrayidx.i.i.i85.i.i392.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp58.i.i246.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i84.i.i391.i.i.i.i.i.i.i + %262 = load float, ptr %arrayidx.i.i.i85.i.i392.i.i.i.i.i.i.i, align 4 + %mul.i.i86.i.i393.i.i.i.i.i.i.i = fmul float %262, 0x3FF7154760000000 + %263 = call noundef float @llvm.floor.f32(float %mul.i.i86.i.i393.i.i.i.i.i.i.i) + %sub.i.i87.i.i394.i.i.i.i.i.i.i = fsub float %mul.i.i86.i.i393.i.i.i.i.i.i.i, %263 + %conv.i4.i88.i.i395.i.i.i.i.i.i.i = fptosi float %263 to i32 + %264 = call noundef float @llvm.fma.f32(float %sub.i.i87.i.i394.i.i.i.i.i.i.i, float 0x3FB4015920000000, float 0x3FCCF34160000000) + %265 = call noundef float @llvm.fma.f32(float %sub.i.i87.i.i394.i.i.i.i.i.i.i, float %264, float 0x3FE6420080000000) + %266 = call noundef float @llvm.fma.f32(float %sub.i.i87.i.i394.i.i.i.i.i.i.i, float %265, float 1.000000e+00) %267 = bitcast float %266 to i32 - %shr.i.i.i92.i.i404.i.i.i.i.i.i.i = lshr i32 %267, 23 - %sub.i.i.i93.i.i405.i.i.i.i.i.i.i = add i32 %conv.i4.i91.i.i403.i.i.i.i.i.i.i, -127 - %add.i.i94.i.i406.i.i.i.i.i.i.i = add i32 %sub.i.i.i93.i.i405.i.i.i.i.i.i.i, %shr.i.i.i92.i.i404.i.i.i.i.i.i.i - %cmp.i.i95.i.i407.i.i.i.i.i.i.i = icmp slt i32 %add.i.i94.i.i406.i.i.i.i.i.i.i, -126 - br i1 %cmp.i.i95.i.i407.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i103.i.i415.i.i.i.i.i.i.i, label %if.end.i.i96.i.i408.i.i.i.i.i.i.i - -if.end.i.i96.i.i408.i.i.i.i.i.i.i: ; preds = %for.body.i86.i.i398.i.i.i.i.i.i.i - %cmp3.i.i97.i.i409.i.i.i.i.i.i.i = icmp sgt i32 %add.i.i94.i.i406.i.i.i.i.i.i.i, 127 - br i1 %cmp3.i.i97.i.i409.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i103.i.i415.i.i.i.i.i.i.i, label %if.end5.i.i98.i.i410.i.i.i.i.i.i.i - -if.end5.i.i98.i.i410.i.i.i.i.i.i.i: ; preds = %if.end.i.i96.i.i408.i.i.i.i.i.i.i - %and.i.i99.i.i411.i.i.i.i.i.i.i = and i32 %267, -2139095041 - %add7.i.i100.i.i412.i.i.i.i.i.i.i = shl nsw i32 %add.i.i94.i.i406.i.i.i.i.i.i.i, 23 - %shl.i.i101.i.i413.i.i.i.i.i.i.i = add i32 %add7.i.i100.i.i412.i.i.i.i.i.i.i, 1065353216 - %or.i.i102.i.i414.i.i.i.i.i.i.i = or i32 %shl.i.i101.i.i413.i.i.i.i.i.i.i, %and.i.i99.i.i411.i.i.i.i.i.i.i - %268 = bitcast i32 %or.i.i102.i.i414.i.i.i.i.i.i.i to float - br label %_ZN4pbrt7FastExpEf.exit.i103.i.i415.i.i.i.i.i.i.i - -_ZN4pbrt7FastExpEf.exit.i103.i.i415.i.i.i.i.i.i.i: ; preds = %if.end5.i.i98.i.i410.i.i.i.i.i.i.i, %if.end.i.i96.i.i408.i.i.i.i.i.i.i, %for.body.i86.i.i398.i.i.i.i.i.i.i - %retval.0.i.i104.i.i416.i.i.i.i.i.i.i = phi float [ %268, %if.end5.i.i98.i.i410.i.i.i.i.i.i.i ], [ 0.000000e+00, %for.body.i86.i.i398.i.i.i.i.i.i.i ], [ 0x7FF0000000000000, %if.end.i.i96.i.i408.i.i.i.i.i.i.i ] - %arrayidx.i.i6.i105.i.i417.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i85.i.i238.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i87.i.i399.i.i.i.i.i.i.i - store float %retval.0.i.i104.i.i416.i.i.i.i.i.i.i, ptr %arrayidx.i.i6.i105.i.i417.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i106.i.i418.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i87.i.i399.i.i.i.i.i.i.i, 1 - %exitcond.not.i107.i.i419.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i106.i.i418.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i107.i.i419.i.i.i.i.i.i.i, label %invoke.cont68.i.i420.i.i.i.i.i.i.i, label %for.body.i86.i.i398.i.i.i.i.i.i.i, !llvm.loop !111 - -invoke.cont68.i.i420.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i103.i.i415.i.i.i.i.i.i.i - %.fca.0.load.i108.i.i421.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i85.i.i238.i.i.i.i.i.i.i, align 8 - %.fca.1.load.i111.i.i422.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i110.i.i300.i.i.i.i.i.i.i, align 8 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i85.i.i238.i.i.i.i.i.i.i) - store <2 x float> %.fca.0.load.i108.i.i421.i.i.i.i.i.i.i, ptr %ref.tmp57.i.i249.i.i.i.i.i.i.i, align 8 - store <2 x float> %.fca.1.load.i111.i.i422.i.i.i.i.i.i.i, ptr %51, align 8 - br label %for.body.i114.i.i423.i.i.i.i.i.i.i - -for.body.i114.i.i423.i.i.i.i.i.i.i: ; preds = %for.body.i114.i.i423.i.i.i.i.i.i.i, %invoke.cont68.i.i420.i.i.i.i.i.i.i - %indvars.iv.i115.i.i424.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont68.i.i420.i.i.i.i.i.i.i ], [ %indvars.iv.next.i119.i.i428.i.i.i.i.i.i.i, %for.body.i114.i.i423.i.i.i.i.i.i.i ] - %arrayidx.i.i116.i.i425.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp57.i.i249.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i115.i.i424.i.i.i.i.i.i.i - %269 = load float, ptr %arrayidx.i.i116.i.i425.i.i.i.i.i.i.i, align 4 - %arrayidx.i4.i117.i.i426.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %T_maj.i.i245.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i115.i.i424.i.i.i.i.i.i.i - %270 = load float, ptr %arrayidx.i4.i117.i.i426.i.i.i.i.i.i.i, align 4 - %mul.i118.i.i427.i.i.i.i.i.i.i = fmul float %269, %270 - store float %mul.i118.i.i427.i.i.i.i.i.i.i, ptr %arrayidx.i4.i117.i.i426.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i119.i.i428.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i115.i.i424.i.i.i.i.i.i.i, 1 - %exitcond.not.i120.i.i429.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i119.i.i428.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i120.i.i429.i.i.i.i.i.i.i, label %invoke.cont75.i.i430.i.i.i.i.i.i.i, label %for.body.i114.i.i423.i.i.i.i.i.i.i, !llvm.loop !112 - -invoke.cont75.i.i430.i.i.i.i.i.i.i: ; preds = %for.body.i114.i.i423.i.i.i.i.i.i.i - %271 = insertelement <2 x float> poison, float %add.i.i320.i.i.i.i.i.i.i, i64 0 + %shr.i.i.i89.i.i396.i.i.i.i.i.i.i = lshr i32 %267, 23 + %sub.i.i.i90.i.i397.i.i.i.i.i.i.i = add i32 %conv.i4.i88.i.i395.i.i.i.i.i.i.i, -127 + %add.i.i91.i.i398.i.i.i.i.i.i.i = add i32 %sub.i.i.i90.i.i397.i.i.i.i.i.i.i, %shr.i.i.i89.i.i396.i.i.i.i.i.i.i + %cmp.i.i92.i.i399.i.i.i.i.i.i.i = icmp slt i32 %add.i.i91.i.i398.i.i.i.i.i.i.i, -126 + br i1 %cmp.i.i92.i.i399.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i100.i.i407.i.i.i.i.i.i.i, label %if.end.i.i93.i.i400.i.i.i.i.i.i.i + +if.end.i.i93.i.i400.i.i.i.i.i.i.i: ; preds = %for.body.i83.i.i390.i.i.i.i.i.i.i + %cmp3.i.i94.i.i401.i.i.i.i.i.i.i = icmp sgt i32 %add.i.i91.i.i398.i.i.i.i.i.i.i, 127 + br i1 %cmp3.i.i94.i.i401.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i100.i.i407.i.i.i.i.i.i.i, label %if.end5.i.i95.i.i402.i.i.i.i.i.i.i + +if.end5.i.i95.i.i402.i.i.i.i.i.i.i: ; preds = %if.end.i.i93.i.i400.i.i.i.i.i.i.i + %and.i.i96.i.i403.i.i.i.i.i.i.i = and i32 %267, -2139095041 + %add7.i.i97.i.i404.i.i.i.i.i.i.i = shl nsw i32 %add.i.i91.i.i398.i.i.i.i.i.i.i, 23 + %shl.i.i98.i.i405.i.i.i.i.i.i.i = add i32 %add7.i.i97.i.i404.i.i.i.i.i.i.i, 1065353216 + %or.i.i99.i.i406.i.i.i.i.i.i.i = or i32 %shl.i.i98.i.i405.i.i.i.i.i.i.i, %and.i.i96.i.i403.i.i.i.i.i.i.i + %268 = bitcast i32 %or.i.i99.i.i406.i.i.i.i.i.i.i to float + br label %_ZN4pbrt7FastExpEf.exit.i100.i.i407.i.i.i.i.i.i.i + +_ZN4pbrt7FastExpEf.exit.i100.i.i407.i.i.i.i.i.i.i: ; preds = %if.end5.i.i95.i.i402.i.i.i.i.i.i.i, %if.end.i.i93.i.i400.i.i.i.i.i.i.i, %for.body.i83.i.i390.i.i.i.i.i.i.i + %retval.0.i.i101.i.i408.i.i.i.i.i.i.i = phi float [ %268, %if.end5.i.i95.i.i402.i.i.i.i.i.i.i ], [ 0.000000e+00, %for.body.i83.i.i390.i.i.i.i.i.i.i ], [ 0x7FF0000000000000, %if.end.i.i93.i.i400.i.i.i.i.i.i.i ] + %arrayidx.i.i6.i102.i.i409.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i82.i.i234.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i84.i.i391.i.i.i.i.i.i.i + store float %retval.0.i.i101.i.i408.i.i.i.i.i.i.i, ptr %arrayidx.i.i6.i102.i.i409.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i103.i.i410.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i84.i.i391.i.i.i.i.i.i.i, 1 + %exitcond.not.i104.i.i411.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i103.i.i410.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i104.i.i411.i.i.i.i.i.i.i, label %invoke.cont68.i.i412.i.i.i.i.i.i.i, label %for.body.i83.i.i390.i.i.i.i.i.i.i, !llvm.loop !111 + +invoke.cont68.i.i412.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i100.i.i407.i.i.i.i.i.i.i + %.fca.0.load.i105.i.i413.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i82.i.i234.i.i.i.i.i.i.i, align 8 + %.fca.1.load.i108.i.i414.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i107.i.i296.i.i.i.i.i.i.i, align 8 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i82.i.i234.i.i.i.i.i.i.i) + store <2 x float> %.fca.0.load.i105.i.i413.i.i.i.i.i.i.i, ptr %ref.tmp57.i.i245.i.i.i.i.i.i.i, align 8 + store <2 x float> %.fca.1.load.i108.i.i414.i.i.i.i.i.i.i, ptr %51, align 8 + br label %for.body.i111.i.i415.i.i.i.i.i.i.i + +for.body.i111.i.i415.i.i.i.i.i.i.i: ; preds = %for.body.i111.i.i415.i.i.i.i.i.i.i, %invoke.cont68.i.i412.i.i.i.i.i.i.i + %indvars.iv.i112.i.i416.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont68.i.i412.i.i.i.i.i.i.i ], [ %indvars.iv.next.i116.i.i420.i.i.i.i.i.i.i, %for.body.i111.i.i415.i.i.i.i.i.i.i ] + %arrayidx.i.i113.i.i417.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp57.i.i245.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i112.i.i416.i.i.i.i.i.i.i + %269 = load float, ptr %arrayidx.i.i113.i.i417.i.i.i.i.i.i.i, align 4 + %arrayidx.i4.i114.i.i418.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %T_maj.i.i241.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i112.i.i416.i.i.i.i.i.i.i + %270 = load float, ptr %arrayidx.i4.i114.i.i418.i.i.i.i.i.i.i, align 4 + %mul.i115.i.i419.i.i.i.i.i.i.i = fmul float %269, %270 + store float %mul.i115.i.i419.i.i.i.i.i.i.i, ptr %arrayidx.i4.i114.i.i418.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i116.i.i420.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i112.i.i416.i.i.i.i.i.i.i, 1 + %exitcond.not.i117.i.i421.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i116.i.i420.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i117.i.i421.i.i.i.i.i.i.i, label %invoke.cont75.i.i422.i.i.i.i.i.i.i, label %for.body.i111.i.i415.i.i.i.i.i.i.i, !llvm.loop !112 + +invoke.cont75.i.i422.i.i.i.i.i.i.i: ; preds = %for.body.i111.i.i415.i.i.i.i.i.i.i + %271 = insertelement <2 x float> poison, float %add.i.i316.i.i.i.i.i.i.i, i64 0 %272 = shufflevector <2 x float> %271, <2 x float> poison, <2 x i32> zeroinitializer %273 = fmul <2 x float> %231, %272 - %mul3.i.i.i.i433.i.i.i.i.i.i.i = fmul float %div3.i.i.i.i279.i.i.i.i.i.i.i, %add.i.i320.i.i.i.i.i.i.i - %274 = fadd <2 x float> %ray.sroa.0.0347.i.i.i.i, %273 - %add6.i.i.i.i436.i.i.i.i.i.i.i = fadd float %ray.sroa.9.0348.i.i.i.i, %mul3.i.i.i.i433.i.i.i.i.i.i.i + %mul3.i.i.i.i425.i.i.i.i.i.i.i = fmul float %div3.i.i.i.i275.i.i.i.i.i.i.i, %add.i.i316.i.i.i.i.i.i.i + %274 = fadd <2 x float> %ray.sroa.0.0346.i.i.i.i, %273 + %add6.i.i.i.i428.i.i.i.i.i.i.i = fadd float %ray.sroa.9.0347.i.i.i.i, %mul3.i.i.i.i425.i.i.i.i.i.i.i call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %convert.sroa.0.i.i.i.i.i.i.i.i.i) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp8.i.i.i.i.i.i.i.i.i) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp21.i.i.i.i.i.i.i.i.i) - %call.i20.i.i.i.i.i21.i.i.i = call { <2 x float>, float } @_ZNK4pbrt9Transform12ApplyInverseIfEENS_6Point3IT_EES4_(ptr noundef nonnull align 4 dereferenceable(128) %renderFromMedium.i.i.i.i.i.i.i.i.i, <2 x float> %274, float %add6.i.i.i.i436.i.i.i.i.i.i.i) + %call.i20.i.i.i.i.i21.i.i.i = call { <2 x float>, float } @_ZNK4pbrt9Transform12ApplyInverseIfEENS_6Point3IT_EES4_(ptr noundef nonnull align 4 dereferenceable(128) %renderFromMedium.i.i.i.i.i.i.i.i.i, <2 x float> %274, float %add6.i.i.i.i428.i.i.i.i.i.i.i) %call.fca.0.extract.i.i.i.i.i.i.i.i.i = extractvalue { <2 x float>, float } %call.i20.i.i.i.i.i21.i.i.i, 0 %call.fca.1.extract.i.i.i.i.i.i.i.i.i = extractvalue { <2 x float>, float } %call.i20.i.i.i.i.i21.i.i.i, 1 %agg.tmp.sroa.0.0.copyload.i.i.i.i.i.i.i.i.i.i = load <2 x float>, ptr %232, align 4, !noalias !117 @@ -12633,7 +12617,7 @@ invoke.cont75.i.i430.i.i.i.i.i.i.i: ; preds = %for.body.i114.i.i42 %tobool.i.not.i7.i.i.i.i.i.i.i.i = icmp eq i8 %284, 0 br i1 %tobool.i.not.i7.i.i.i.i.i.i.i.i, label %cond.false.i.i.i.i.i.i.i.i.i, label %_ZNK4pstd8optionalIN4pbrt11SampledGridINS1_20RGBUnboundedSpectrumEEEEptEv.exit.i.i.i.i.i.i.i.i.i -_ZNK4pstd8optionalIN4pbrt11SampledGridINS1_20RGBUnboundedSpectrumEEEEptEv.exit.i.i.i.i.i.i.i.i.i: ; preds = %invoke.cont75.i.i430.i.i.i.i.i.i.i +_ZNK4pstd8optionalIN4pbrt11SampledGridINS1_20RGBUnboundedSpectrumEEEEptEv.exit.i.i.i.i.i.i.i.i.i: ; preds = %invoke.cont75.i.i422.i.i.i.i.i.i.i %call14.i21.i.i.i.i.i22.i.i.i = call { <2 x float>, <2 x float> } @_ZNK4pbrt11SampledGridINS_20RGBUnboundedSpectrumEE6LookupIZNKS_13RGBGridMedium11SamplePointENS_6Point3IfEERKNS_18SampledWavelengthsEEUlS1_E_EEDaS6_T_(ptr noundef nonnull align 8 dereferenceable(44) %sigma_aGrid.i.i.i.i.i.i.i.i.i, <2 x float> %retval.sroa.0.1.i.i.i.i.i.i.i.i.i.i, float %retval.sroa.6.0.i.i.i.i.i.i.i.i.i.i, ptr noundef nonnull byval(%class.anon.239) align 8 %lambda.i.i.i.i) %285 = extractvalue { <2 x float>, <2 x float> } %call14.i21.i.i.i.i.i22.i.i.i, 0 store <2 x float> %285, ptr %ref.tmp8.i.i.i.i.i.i.i.i.i, align 8, !noalias !117 @@ -12641,7 +12625,7 @@ _ZNK4pstd8optionalIN4pbrt11SampledGridINS1_20RGBUnboundedSpectrumEEEEptEv.exit.i store <2 x float> %286, ptr %56, align 8, !noalias !117 br label %for.body.i.i6.i.i.i.i.i.i.i.i.i.preheader -cond.false.i.i.i.i.i.i.i.i.i: ; preds = %invoke.cont75.i.i430.i.i.i.i.i.i.i +cond.false.i.i.i.i.i.i.i.i.i: ; preds = %invoke.cont75.i.i422.i.i.i.i.i.i.i call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp8.i.i.i.i.i.i.i.i.i, i8 0, i64 16, i1 false), !noalias !117 br label %for.body.i.i.i15.i.i.i.i.i.i.i.i @@ -12752,1089 +12736,1081 @@ invoke.cont86.i.i.i.i.i.i.i.i.i: ; preds = %_ZN4pbrtmlEfRKNS_15 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %convert.sroa.0.i.i.i.i.i.i.i.i.i) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp8.i.i.i.i.i.i.i.i.i) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp21.i.i.i.i.i.i.i.i.i) - store <2 x float> %.fca.0.load.i.i.i10.i.i.i.i.i.i.i.i, ptr %agg.tmp85.i.i251.i.i.i.i.i.i.i, align 8 + store <2 x float> %.fca.0.load.i.i.i10.i.i.i.i.i.i.i.i, ptr %agg.tmp85.i.i247.i.i.i.i.i.i.i, align 8 store <2 x float> %.fca.1.load.i.i.i12.i.i.i.i.i.i.i.i, ptr %mp.i.sroa.4.0.agg.tmp85.i.sroa_idx.i.i.i.i.i.i.i.i, align 8 store <2 x float> %.fca.0.load.i.i29.i.i.i.i.i.i.i.i.i, ptr %mp.i.sroa.5.0.agg.tmp85.i.sroa_idx.i.i.i.i.i.i.i.i, align 8 store <2 x float> %.fca.1.load.i.i32.i.i.i.i.i.i.i.i.i, ptr %mp.i.sroa.6.0.agg.tmp85.i.sroa_idx.i.i.i.i.i.i.i.i, align 8 - store i64 %or.i.i.i14.i.i.i.i.i.i.i.i, ptr %phase.i.i.i301.i.i.i.i.i.i.i, align 8 - store <2 x float> %Le.sroa.0.0.i.i.i.i.i.i.i.i.i, ptr %Le.i.i.i302.i.i.i.i.i.i.i, align 8 + store i64 %or.i.i.i14.i.i.i.i.i.i.i.i, ptr %phase.i.i.i297.i.i.i.i.i.i.i, align 8 + store <2 x float> %Le.sroa.0.0.i.i.i.i.i.i.i.i.i, ptr %Le.i.i.i298.i.i.i.i.i.i.i, align 8 store <2 x float> %Le.sroa.4.0.i.i.i.i.i.i.i.i.i, ptr %mp.i.sroa.11.40.Le.i.i.sroa_idx.i.i.i.i.i.i.i.i, align 8 - %300 = load i8, ptr %set.i.i.i295.i.i.i.i.i.i.i, align 4 + %300 = load i8, ptr %set.i.i.i291.i.i.i.i.i.i.i, align 4 %301 = and i8 %300, 1 - %tobool.not.i.i140.i.i439.i.i.i.i.i.i.i = icmp eq i8 %301, 0 - br i1 %tobool.not.i.i140.i.i439.i.i.i.i.i.i.i, label %land.rhs.i.i51.invoke.i.i.i.i.i.i.invoke.i.i.i, label %invoke.cont88.i.i440.i.i.i.i.i.i.i - -invoke.cont88.i.i440.i.i.i.i.i.i.i: ; preds = %invoke.cont86.i.i.i.i.i.i.i.i.i - %agg.tmp87.sroa.0.0.copyload.i.i441.i.i.i.i.i.i.i = load <2 x float>, ptr %sigma_maj.i.i296.i.i.i.i.i.i.i, align 4 - %agg.tmp87.sroa.2.0.copyload.i.i442.i.i.i.i.i.i.i = load <2 x float>, ptr %agg.tmp87.sroa.2.0.sigma_maj90.sroa_idx.i.i303.i.i.i.i.i.i.i, align 4 - %agg.tmp91.sroa.0.0.copyload.i.i443.i.i.i.i.i.i.i = load <2 x float>, ptr %T_maj.i.i245.i.i.i.i.i.i.i, align 8 - %agg.tmp91.sroa.2.0.copyload.i.i444.i.i.i.i.i.i.i = load <2 x float>, ptr %agg.tmp91.sroa.2.0.T_maj.sroa_idx.i.i304.i.i.i.i.i.i.i, align 8 - %call93.i.i445.i.i.i.i.i.i.i = call fastcc noundef zeroext i1 @"_ZZN4pbrt18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS1_17IntersectShadowTrEiS5_S9_ENKSA_clEiEUlNS_6Point3IfEEE_EEvS3_S9_T_T0_ENKUlSE_NS_16MediumPropertiesENS_15SampledSpectrumESJ_E_clESE_SI_SJ_SJ_"(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp21.i255.i.i.i.i.i.i.i, ptr noundef nonnull %agg.tmp85.i.i251.i.i.i.i.i.i.i, <2 x float> %agg.tmp87.sroa.0.0.copyload.i.i441.i.i.i.i.i.i.i, <2 x float> %agg.tmp87.sroa.2.0.copyload.i.i442.i.i.i.i.i.i.i, <2 x float> %agg.tmp91.sroa.0.0.copyload.i.i443.i.i.i.i.i.i.i, <2 x float> %agg.tmp91.sroa.2.0.copyload.i.i444.i.i.i.i.i.i.i) - br i1 %call93.i.i445.i.i.i.i.i.i.i, label %if.end95.i.i457.i.i.i.i.i.i.i, label %while.end125.i.i446.i.i.i.i.i.i.i - -if.end95.i.i457.i.i.i.i.i.i.i: ; preds = %invoke.cont88.i.i440.i.i.i.i.i.i.i - call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %ref.tmp96.i.i252.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) - br label %for.body.i.i144.i.i458.i.i.i.i.i.i.i - -for.body.i.i144.i.i458.i.i.i.i.i.i.i: ; preds = %for.body.i.i144.i.i458.i.i.i.i.i.i.i, %if.end95.i.i457.i.i.i.i.i.i.i - %indvars.iv.i.i145.i.i459.i.i.i.i.i.i.i = phi i64 [ 0, %if.end95.i.i457.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i147.i.i461.i.i.i.i.i.i.i, %for.body.i.i144.i.i458.i.i.i.i.i.i.i ] - %arrayidx.i.i146.i.i460.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp96.i.i252.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i145.i.i459.i.i.i.i.i.i.i - store float 1.000000e+00, ptr %arrayidx.i.i146.i.i460.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i.i147.i.i461.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i145.i.i459.i.i.i.i.i.i.i, 1 - %exitcond.not.i.i148.i.i462.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i147.i.i461.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i.i148.i.i462.i.i.i.i.i.i.i, label %invoke.cont97.i.i463.i.i.i.i.i.i.i, label %for.body.i.i144.i.i458.i.i.i.i.i.i.i, !llvm.loop !103 - -invoke.cont97.i.i463.i.i.i.i.i.i.i: ; preds = %for.body.i.i144.i.i458.i.i.i.i.i.i.i - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %T_maj.i.i245.i.i.i.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(16) %ref.tmp96.i.i252.i.i.i.i.i.i.i, i64 16, i1 false) - %302 = load i8, ptr %set.i.i.i295.i.i.i.i.i.i.i, align 4 + %tobool.not.i.i137.i.i431.i.i.i.i.i.i.i = icmp eq i8 %301, 0 + br i1 %tobool.not.i.i137.i.i431.i.i.i.i.i.i.i, label %land.rhs.i.i51.invoke.i.i.i.i.i.i.invoke.i.i.i, label %invoke.cont88.i.i432.i.i.i.i.i.i.i + +invoke.cont88.i.i432.i.i.i.i.i.i.i: ; preds = %invoke.cont86.i.i.i.i.i.i.i.i.i + %agg.tmp87.sroa.0.0.copyload.i.i433.i.i.i.i.i.i.i = load <2 x float>, ptr %sigma_maj.i.i292.i.i.i.i.i.i.i, align 4 + %agg.tmp87.sroa.2.0.copyload.i.i434.i.i.i.i.i.i.i = load <2 x float>, ptr %agg.tmp87.sroa.2.0.sigma_maj90.sroa_idx.i.i299.i.i.i.i.i.i.i, align 4 + %agg.tmp91.sroa.0.0.copyload.i.i435.i.i.i.i.i.i.i = load <2 x float>, ptr %T_maj.i.i241.i.i.i.i.i.i.i, align 8 + %agg.tmp91.sroa.2.0.copyload.i.i436.i.i.i.i.i.i.i = load <2 x float>, ptr %agg.tmp91.sroa.2.0.T_maj.sroa_idx.i.i300.i.i.i.i.i.i.i, align 8 + %call93.i.i437.i.i.i.i.i.i.i = call fastcc noundef zeroext i1 @"_ZZN4pbrt18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS1_17IntersectShadowTrEiS5_S9_ENKSA_clEiEUlNS_6Point3IfEEE_EEvS3_S9_T_T0_ENKUlSE_NS_16MediumPropertiesENS_15SampledSpectrumESJ_E_clESE_SI_SJ_SJ_"(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp21.i251.i.i.i.i.i.i.i, ptr noundef nonnull %agg.tmp85.i.i247.i.i.i.i.i.i.i, <2 x float> %agg.tmp87.sroa.0.0.copyload.i.i433.i.i.i.i.i.i.i, <2 x float> %agg.tmp87.sroa.2.0.copyload.i.i434.i.i.i.i.i.i.i, <2 x float> %agg.tmp91.sroa.0.0.copyload.i.i435.i.i.i.i.i.i.i, <2 x float> %agg.tmp91.sroa.2.0.copyload.i.i436.i.i.i.i.i.i.i) + br i1 %call93.i.i437.i.i.i.i.i.i.i, label %if.end95.i.i449.i.i.i.i.i.i.i, label %while.end125.i.i438.i.i.i.i.i.i.i + +if.end95.i.i449.i.i.i.i.i.i.i: ; preds = %invoke.cont88.i.i432.i.i.i.i.i.i.i + call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %ref.tmp96.i.i248.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) + br label %for.body.i.i141.i.i450.i.i.i.i.i.i.i + +for.body.i.i141.i.i450.i.i.i.i.i.i.i: ; preds = %for.body.i.i141.i.i450.i.i.i.i.i.i.i, %if.end95.i.i449.i.i.i.i.i.i.i + %indvars.iv.i.i142.i.i451.i.i.i.i.i.i.i = phi i64 [ 0, %if.end95.i.i449.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i144.i.i453.i.i.i.i.i.i.i, %for.body.i.i141.i.i450.i.i.i.i.i.i.i ] + %arrayidx.i.i143.i.i452.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp96.i.i248.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i142.i.i451.i.i.i.i.i.i.i + store float 1.000000e+00, ptr %arrayidx.i.i143.i.i452.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i.i144.i.i453.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i142.i.i451.i.i.i.i.i.i.i, 1 + %exitcond.not.i.i145.i.i454.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i144.i.i453.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i.i145.i.i454.i.i.i.i.i.i.i, label %invoke.cont97.i.i455.i.i.i.i.i.i.i, label %for.body.i.i141.i.i450.i.i.i.i.i.i.i, !llvm.loop !103 + +invoke.cont97.i.i455.i.i.i.i.i.i.i: ; preds = %for.body.i.i141.i.i450.i.i.i.i.i.i.i + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %T_maj.i.i241.i.i.i.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(16) %ref.tmp96.i.i248.i.i.i.i.i.i.i, i64 16, i1 false) + %302 = load i8, ptr %set.i.i.i291.i.i.i.i.i.i.i, align 4 %303 = and i8 %302, 1 - %tobool.not.i.i50.i.i464.i.i.i.i.i.i.i = icmp eq i8 %303, 0 - br i1 %tobool.not.i.i50.i.i464.i.i.i.i.i.i.i, label %land.rhs.i.i51.invoke.i.i.i.i.i.i.invoke.i.i.i, label %invoke.cont48.i.i315.i.i.i.i.i.i.i, !llvm.loop !120 + %tobool.not.i.i50.i.i456.i.i.i.i.i.i.i = icmp eq i8 %303, 0 + br i1 %tobool.not.i.i50.i.i456.i.i.i.i.i.i.i, label %land.rhs.i.i51.invoke.i.i.i.i.i.i.invoke.i.i.i, label %invoke.cont48.i.i311.i.i.i.i.i.i.i, !llvm.loop !120 -invoke.cont103.i.i339.i.i.i.i.i.i.i: ; preds = %invoke.cont52.i.i337.i.i.i.i.i.i.i - %sub102.i.i340.i.i.i.i.i.i.i = fsub float %260, %tMin38.0243.i.i317.i.i.i.i.i.i.i - %304 = call float @llvm.fabs.f32(float %sub102.i.i340.i.i.i.i.i.i.i) +invoke.cont103.i.i331.i.i.i.i.i.i.i: ; preds = %invoke.cont52.i.i329.i.i.i.i.i.i.i + %sub102.i.i332.i.i.i.i.i.i.i = fsub float %260, %tMin38.0240.i.i313.i.i.i.i.i.i.i + %304 = call float @llvm.fabs.f32(float %sub102.i.i332.i.i.i.i.i.i.i) %305 = fcmp oeq float %304, 0x7FF0000000000000 - %dt98.0.i.i341.i.i.i.i.i.i.i = select i1 %305, float 0x47EFFFFFE0000000, float %sub102.i.i340.i.i.i.i.i.i.i - %fneg110.i.i342.i.i.i.i.i.i.i = fneg float %dt98.0.i.i341.i.i.i.i.i.i.i - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i.i160.i.i237.i.i.i.i.i.i.i) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i.i160.i.i237.i.i.i.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(16) %sigma_maj.i.i296.i.i.i.i.i.i.i, i64 16, i1 false) - br label %for.body.i.i161.i.i343.i.i.i.i.i.i.i - -for.body.i.i161.i.i343.i.i.i.i.i.i.i: ; preds = %for.body.i.i161.i.i343.i.i.i.i.i.i.i, %invoke.cont103.i.i339.i.i.i.i.i.i.i - %indvars.iv.i.i162.i.i344.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont103.i.i339.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i165.i.i347.i.i.i.i.i.i.i, %for.body.i.i161.i.i343.i.i.i.i.i.i.i ] - %arrayidx.i.i.i163.i.i345.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i160.i.i237.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i162.i.i344.i.i.i.i.i.i.i - %306 = load float, ptr %arrayidx.i.i.i163.i.i345.i.i.i.i.i.i.i, align 4 - %mul.i.i164.i.i346.i.i.i.i.i.i.i = fmul float %306, %fneg110.i.i342.i.i.i.i.i.i.i - store float %mul.i.i164.i.i346.i.i.i.i.i.i.i, ptr %arrayidx.i.i.i163.i.i345.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i.i165.i.i347.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i162.i.i344.i.i.i.i.i.i.i, 1 - %exitcond.not.i.i166.i.i348.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i165.i.i347.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i.i166.i.i348.i.i.i.i.i.i.i, label %invoke.cont114.i.i349.i.i.i.i.i.i.i, label %for.body.i.i161.i.i343.i.i.i.i.i.i.i, !llvm.loop !110 - -invoke.cont114.i.i349.i.i.i.i.i.i.i: ; preds = %for.body.i.i161.i.i343.i.i.i.i.i.i.i - %.fca.0.load.i.i167.i.i350.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i.i160.i.i237.i.i.i.i.i.i.i, align 8 - %.fca.1.load.i.i170.i.i351.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i.i169.i.i305.i.i.i.i.i.i.i, align 8 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i.i160.i.i237.i.i.i.i.i.i.i) - store <2 x float> %.fca.0.load.i.i167.i.i350.i.i.i.i.i.i.i, ptr %ref.tmp109.i.i254.i.i.i.i.i.i.i, align 8 - store <2 x float> %.fca.1.load.i.i170.i.i351.i.i.i.i.i.i.i, ptr %52, align 8 - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i173.i.i236.i.i.i.i.i.i.i) - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i173.i.i236.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) - br label %for.body.i174.i.i352.i.i.i.i.i.i.i - -for.body.i174.i.i352.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i191.i.i369.i.i.i.i.i.i.i, %invoke.cont114.i.i349.i.i.i.i.i.i.i - %indvars.iv.i175.i.i353.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont114.i.i349.i.i.i.i.i.i.i ], [ %indvars.iv.next.i194.i.i372.i.i.i.i.i.i.i, %_ZN4pbrt7FastExpEf.exit.i191.i.i369.i.i.i.i.i.i.i ] - %arrayidx.i.i.i176.i.i354.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp109.i.i254.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i175.i.i353.i.i.i.i.i.i.i - %307 = load float, ptr %arrayidx.i.i.i176.i.i354.i.i.i.i.i.i.i, align 4 - %mul.i.i177.i.i355.i.i.i.i.i.i.i = fmul float %307, 0x3FF7154760000000 - %308 = call noundef float @llvm.floor.f32(float %mul.i.i177.i.i355.i.i.i.i.i.i.i) - %sub.i.i178.i.i356.i.i.i.i.i.i.i = fsub float %mul.i.i177.i.i355.i.i.i.i.i.i.i, %308 - %conv.i4.i179.i.i357.i.i.i.i.i.i.i = fptosi float %308 to i32 - %309 = call noundef float @llvm.fma.f32(float %sub.i.i178.i.i356.i.i.i.i.i.i.i, float 0x3FB4015920000000, float 0x3FCCF34160000000) - %310 = call noundef float @llvm.fma.f32(float %sub.i.i178.i.i356.i.i.i.i.i.i.i, float %309, float 0x3FE6420080000000) - %311 = call noundef float @llvm.fma.f32(float %sub.i.i178.i.i356.i.i.i.i.i.i.i, float %310, float 1.000000e+00) + %dt98.0.i.i333.i.i.i.i.i.i.i = select i1 %305, float 0x47EFFFFFE0000000, float %sub102.i.i332.i.i.i.i.i.i.i + %fneg110.i.i334.i.i.i.i.i.i.i = fneg float %dt98.0.i.i333.i.i.i.i.i.i.i + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i.i157.i.i233.i.i.i.i.i.i.i) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i.i157.i.i233.i.i.i.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(16) %sigma_maj.i.i292.i.i.i.i.i.i.i, i64 16, i1 false) + br label %for.body.i.i158.i.i335.i.i.i.i.i.i.i + +for.body.i.i158.i.i335.i.i.i.i.i.i.i: ; preds = %for.body.i.i158.i.i335.i.i.i.i.i.i.i, %invoke.cont103.i.i331.i.i.i.i.i.i.i + %indvars.iv.i.i159.i.i336.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont103.i.i331.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i162.i.i339.i.i.i.i.i.i.i, %for.body.i.i158.i.i335.i.i.i.i.i.i.i ] + %arrayidx.i.i.i160.i.i337.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i157.i.i233.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i159.i.i336.i.i.i.i.i.i.i + %306 = load float, ptr %arrayidx.i.i.i160.i.i337.i.i.i.i.i.i.i, align 4 + %mul.i.i161.i.i338.i.i.i.i.i.i.i = fmul float %306, %fneg110.i.i334.i.i.i.i.i.i.i + store float %mul.i.i161.i.i338.i.i.i.i.i.i.i, ptr %arrayidx.i.i.i160.i.i337.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i.i162.i.i339.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i159.i.i336.i.i.i.i.i.i.i, 1 + %exitcond.not.i.i163.i.i340.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i162.i.i339.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i.i163.i.i340.i.i.i.i.i.i.i, label %invoke.cont114.i.i341.i.i.i.i.i.i.i, label %for.body.i.i158.i.i335.i.i.i.i.i.i.i, !llvm.loop !110 + +invoke.cont114.i.i341.i.i.i.i.i.i.i: ; preds = %for.body.i.i158.i.i335.i.i.i.i.i.i.i + %.fca.0.load.i.i164.i.i342.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i.i157.i.i233.i.i.i.i.i.i.i, align 8 + %.fca.1.load.i.i167.i.i343.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i.i166.i.i301.i.i.i.i.i.i.i, align 8 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i.i157.i.i233.i.i.i.i.i.i.i) + store <2 x float> %.fca.0.load.i.i164.i.i342.i.i.i.i.i.i.i, ptr %ref.tmp109.i.i250.i.i.i.i.i.i.i, align 8 + store <2 x float> %.fca.1.load.i.i167.i.i343.i.i.i.i.i.i.i, ptr %52, align 8 + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i170.i.i232.i.i.i.i.i.i.i) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i170.i.i232.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) + br label %for.body.i171.i.i344.i.i.i.i.i.i.i + +for.body.i171.i.i344.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i188.i.i361.i.i.i.i.i.i.i, %invoke.cont114.i.i341.i.i.i.i.i.i.i + %indvars.iv.i172.i.i345.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont114.i.i341.i.i.i.i.i.i.i ], [ %indvars.iv.next.i191.i.i364.i.i.i.i.i.i.i, %_ZN4pbrt7FastExpEf.exit.i188.i.i361.i.i.i.i.i.i.i ] + %arrayidx.i.i.i173.i.i346.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp109.i.i250.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i172.i.i345.i.i.i.i.i.i.i + %307 = load float, ptr %arrayidx.i.i.i173.i.i346.i.i.i.i.i.i.i, align 4 + %mul.i.i174.i.i347.i.i.i.i.i.i.i = fmul float %307, 0x3FF7154760000000 + %308 = call noundef float @llvm.floor.f32(float %mul.i.i174.i.i347.i.i.i.i.i.i.i) + %sub.i.i175.i.i348.i.i.i.i.i.i.i = fsub float %mul.i.i174.i.i347.i.i.i.i.i.i.i, %308 + %conv.i4.i176.i.i349.i.i.i.i.i.i.i = fptosi float %308 to i32 + %309 = call noundef float @llvm.fma.f32(float %sub.i.i175.i.i348.i.i.i.i.i.i.i, float 0x3FB4015920000000, float 0x3FCCF34160000000) + %310 = call noundef float @llvm.fma.f32(float %sub.i.i175.i.i348.i.i.i.i.i.i.i, float %309, float 0x3FE6420080000000) + %311 = call noundef float @llvm.fma.f32(float %sub.i.i175.i.i348.i.i.i.i.i.i.i, float %310, float 1.000000e+00) %312 = bitcast float %311 to i32 - %shr.i.i.i180.i.i358.i.i.i.i.i.i.i = lshr i32 %312, 23 - %sub.i.i.i181.i.i359.i.i.i.i.i.i.i = add i32 %conv.i4.i179.i.i357.i.i.i.i.i.i.i, -127 - %add.i.i182.i.i360.i.i.i.i.i.i.i = add i32 %sub.i.i.i181.i.i359.i.i.i.i.i.i.i, %shr.i.i.i180.i.i358.i.i.i.i.i.i.i - %cmp.i.i183.i.i361.i.i.i.i.i.i.i = icmp slt i32 %add.i.i182.i.i360.i.i.i.i.i.i.i, -126 - br i1 %cmp.i.i183.i.i361.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i191.i.i369.i.i.i.i.i.i.i, label %if.end.i.i184.i.i362.i.i.i.i.i.i.i - -if.end.i.i184.i.i362.i.i.i.i.i.i.i: ; preds = %for.body.i174.i.i352.i.i.i.i.i.i.i - %cmp3.i.i185.i.i363.i.i.i.i.i.i.i = icmp sgt i32 %add.i.i182.i.i360.i.i.i.i.i.i.i, 127 - br i1 %cmp3.i.i185.i.i363.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i191.i.i369.i.i.i.i.i.i.i, label %if.end5.i.i186.i.i364.i.i.i.i.i.i.i - -if.end5.i.i186.i.i364.i.i.i.i.i.i.i: ; preds = %if.end.i.i184.i.i362.i.i.i.i.i.i.i - %and.i.i187.i.i365.i.i.i.i.i.i.i = and i32 %312, -2139095041 - %add7.i.i188.i.i366.i.i.i.i.i.i.i = shl nsw i32 %add.i.i182.i.i360.i.i.i.i.i.i.i, 23 - %shl.i.i189.i.i367.i.i.i.i.i.i.i = add i32 %add7.i.i188.i.i366.i.i.i.i.i.i.i, 1065353216 - %or.i.i190.i.i368.i.i.i.i.i.i.i = or i32 %shl.i.i189.i.i367.i.i.i.i.i.i.i, %and.i.i187.i.i365.i.i.i.i.i.i.i - %313 = bitcast i32 %or.i.i190.i.i368.i.i.i.i.i.i.i to float - br label %_ZN4pbrt7FastExpEf.exit.i191.i.i369.i.i.i.i.i.i.i - -_ZN4pbrt7FastExpEf.exit.i191.i.i369.i.i.i.i.i.i.i: ; preds = %if.end5.i.i186.i.i364.i.i.i.i.i.i.i, %if.end.i.i184.i.i362.i.i.i.i.i.i.i, %for.body.i174.i.i352.i.i.i.i.i.i.i - %retval.0.i.i192.i.i370.i.i.i.i.i.i.i = phi float [ %313, %if.end5.i.i186.i.i364.i.i.i.i.i.i.i ], [ 0.000000e+00, %for.body.i174.i.i352.i.i.i.i.i.i.i ], [ 0x7FF0000000000000, %if.end.i.i184.i.i362.i.i.i.i.i.i.i ] - %arrayidx.i.i6.i193.i.i371.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i173.i.i236.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i175.i.i353.i.i.i.i.i.i.i - store float %retval.0.i.i192.i.i370.i.i.i.i.i.i.i, ptr %arrayidx.i.i6.i193.i.i371.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i194.i.i372.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i175.i.i353.i.i.i.i.i.i.i, 1 - %exitcond.not.i195.i.i373.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i194.i.i372.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i195.i.i373.i.i.i.i.i.i.i, label %invoke.cont118.i.i374.i.i.i.i.i.i.i, label %for.body.i174.i.i352.i.i.i.i.i.i.i, !llvm.loop !111 - -invoke.cont118.i.i374.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i191.i.i369.i.i.i.i.i.i.i - %.fca.0.load.i196.i.i375.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i173.i.i236.i.i.i.i.i.i.i, align 8 - %.fca.1.load.i199.i.i376.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i198.i.i306.i.i.i.i.i.i.i, align 8 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i173.i.i236.i.i.i.i.i.i.i) - store <2 x float> %.fca.0.load.i196.i.i375.i.i.i.i.i.i.i, ptr %ref.tmp108.i.i253.i.i.i.i.i.i.i, align 8 - store <2 x float> %.fca.1.load.i199.i.i376.i.i.i.i.i.i.i, ptr %53, align 8 - br label %for.body.i202.i.i377.i.i.i.i.i.i.i - -for.body.i202.i.i377.i.i.i.i.i.i.i: ; preds = %for.body.i202.i.i377.i.i.i.i.i.i.i, %invoke.cont118.i.i374.i.i.i.i.i.i.i - %indvars.iv.i203.i.i378.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont118.i.i374.i.i.i.i.i.i.i ], [ %indvars.iv.next.i207.i.i382.i.i.i.i.i.i.i, %for.body.i202.i.i377.i.i.i.i.i.i.i ] - %arrayidx.i.i204.i.i379.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp108.i.i253.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i203.i.i378.i.i.i.i.i.i.i - %314 = load float, ptr %arrayidx.i.i204.i.i379.i.i.i.i.i.i.i, align 4 - %arrayidx.i4.i205.i.i380.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %T_maj.i.i245.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i203.i.i378.i.i.i.i.i.i.i - %315 = load float, ptr %arrayidx.i4.i205.i.i380.i.i.i.i.i.i.i, align 4 - %mul.i206.i.i381.i.i.i.i.i.i.i = fmul float %314, %315 - store float %mul.i206.i.i381.i.i.i.i.i.i.i, ptr %arrayidx.i4.i205.i.i380.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i207.i.i382.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i203.i.i378.i.i.i.i.i.i.i, 1 - %exitcond.not.i208.i.i383.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i207.i.i382.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i208.i.i383.i.i.i.i.i.i.i, label %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.i.i384.i.i.i.i.i.i.i, label %for.body.i202.i.i377.i.i.i.i.i.i.i, !llvm.loop !112 - -_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.i.i384.i.i.i.i.i.i.i: ; preds = %for.body.i202.i.i377.i.i.i.i.i.i.i, %_ZN4pbrt15SampledSpectrummLERKS0_.exit.i.i511.i.i.i.i.i.i.i - %u.addr.2270.i.i385.i.i.i.i.i.i.i = phi float [ %u.addr.0.i23.i31041.i.i.i.i.i.i.i, %_ZN4pbrt15SampledSpectrummLERKS0_.exit.i.i511.i.i.i.i.i.i.i ], [ %.sroa.speculated.i.i.i335.i.i.i.i.i.i.i, %for.body.i202.i.i377.i.i.i.i.i.i.i ] - store i8 0, ptr %set.i.i.i295.i.i.i.i.i.i.i, align 4 - call void @_ZN4pbrt19DDAMajorantIterator4NextEv(ptr nonnull sret(%"class.pstd::optional.223") align 4 %seg.i.i246.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(92) %iter.i.i243.i.i.i.i.i.i.i) - %316 = load i8, ptr %set.i.i.i295.i.i.i.i.i.i.i, align 4 + %shr.i.i.i177.i.i350.i.i.i.i.i.i.i = lshr i32 %312, 23 + %sub.i.i.i178.i.i351.i.i.i.i.i.i.i = add i32 %conv.i4.i176.i.i349.i.i.i.i.i.i.i, -127 + %add.i.i179.i.i352.i.i.i.i.i.i.i = add i32 %sub.i.i.i178.i.i351.i.i.i.i.i.i.i, %shr.i.i.i177.i.i350.i.i.i.i.i.i.i + %cmp.i.i180.i.i353.i.i.i.i.i.i.i = icmp slt i32 %add.i.i179.i.i352.i.i.i.i.i.i.i, -126 + br i1 %cmp.i.i180.i.i353.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i188.i.i361.i.i.i.i.i.i.i, label %if.end.i.i181.i.i354.i.i.i.i.i.i.i + +if.end.i.i181.i.i354.i.i.i.i.i.i.i: ; preds = %for.body.i171.i.i344.i.i.i.i.i.i.i + %cmp3.i.i182.i.i355.i.i.i.i.i.i.i = icmp sgt i32 %add.i.i179.i.i352.i.i.i.i.i.i.i, 127 + br i1 %cmp3.i.i182.i.i355.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i188.i.i361.i.i.i.i.i.i.i, label %if.end5.i.i183.i.i356.i.i.i.i.i.i.i + +if.end5.i.i183.i.i356.i.i.i.i.i.i.i: ; preds = %if.end.i.i181.i.i354.i.i.i.i.i.i.i + %and.i.i184.i.i357.i.i.i.i.i.i.i = and i32 %312, -2139095041 + %add7.i.i185.i.i358.i.i.i.i.i.i.i = shl nsw i32 %add.i.i179.i.i352.i.i.i.i.i.i.i, 23 + %shl.i.i186.i.i359.i.i.i.i.i.i.i = add i32 %add7.i.i185.i.i358.i.i.i.i.i.i.i, 1065353216 + %or.i.i187.i.i360.i.i.i.i.i.i.i = or i32 %shl.i.i186.i.i359.i.i.i.i.i.i.i, %and.i.i184.i.i357.i.i.i.i.i.i.i + %313 = bitcast i32 %or.i.i187.i.i360.i.i.i.i.i.i.i to float + br label %_ZN4pbrt7FastExpEf.exit.i188.i.i361.i.i.i.i.i.i.i + +_ZN4pbrt7FastExpEf.exit.i188.i.i361.i.i.i.i.i.i.i: ; preds = %if.end5.i.i183.i.i356.i.i.i.i.i.i.i, %if.end.i.i181.i.i354.i.i.i.i.i.i.i, %for.body.i171.i.i344.i.i.i.i.i.i.i + %retval.0.i.i189.i.i362.i.i.i.i.i.i.i = phi float [ %313, %if.end5.i.i183.i.i356.i.i.i.i.i.i.i ], [ 0.000000e+00, %for.body.i171.i.i344.i.i.i.i.i.i.i ], [ 0x7FF0000000000000, %if.end.i.i181.i.i354.i.i.i.i.i.i.i ] + %arrayidx.i.i6.i190.i.i363.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i170.i.i232.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i172.i.i345.i.i.i.i.i.i.i + store float %retval.0.i.i189.i.i362.i.i.i.i.i.i.i, ptr %arrayidx.i.i6.i190.i.i363.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i191.i.i364.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i172.i.i345.i.i.i.i.i.i.i, 1 + %exitcond.not.i192.i.i365.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i191.i.i364.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i192.i.i365.i.i.i.i.i.i.i, label %invoke.cont118.i.i366.i.i.i.i.i.i.i, label %for.body.i171.i.i344.i.i.i.i.i.i.i, !llvm.loop !111 + +invoke.cont118.i.i366.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i188.i.i361.i.i.i.i.i.i.i + %.fca.0.load.i193.i.i367.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i170.i.i232.i.i.i.i.i.i.i, align 8 + %.fca.1.load.i196.i.i368.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i195.i.i302.i.i.i.i.i.i.i, align 8 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i170.i.i232.i.i.i.i.i.i.i) + store <2 x float> %.fca.0.load.i193.i.i367.i.i.i.i.i.i.i, ptr %ref.tmp108.i.i249.i.i.i.i.i.i.i, align 8 + store <2 x float> %.fca.1.load.i196.i.i368.i.i.i.i.i.i.i, ptr %53, align 8 + br label %for.body.i199.i.i369.i.i.i.i.i.i.i + +for.body.i199.i.i369.i.i.i.i.i.i.i: ; preds = %for.body.i199.i.i369.i.i.i.i.i.i.i, %invoke.cont118.i.i366.i.i.i.i.i.i.i + %indvars.iv.i200.i.i370.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont118.i.i366.i.i.i.i.i.i.i ], [ %indvars.iv.next.i204.i.i374.i.i.i.i.i.i.i, %for.body.i199.i.i369.i.i.i.i.i.i.i ] + %arrayidx.i.i201.i.i371.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp108.i.i249.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i200.i.i370.i.i.i.i.i.i.i + %314 = load float, ptr %arrayidx.i.i201.i.i371.i.i.i.i.i.i.i, align 4 + %arrayidx.i4.i202.i.i372.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %T_maj.i.i241.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i200.i.i370.i.i.i.i.i.i.i + %315 = load float, ptr %arrayidx.i4.i202.i.i372.i.i.i.i.i.i.i, align 4 + %mul.i203.i.i373.i.i.i.i.i.i.i = fmul float %314, %315 + store float %mul.i203.i.i373.i.i.i.i.i.i.i, ptr %arrayidx.i4.i202.i.i372.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i204.i.i374.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i200.i.i370.i.i.i.i.i.i.i, 1 + %exitcond.not.i205.i.i375.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i204.i.i374.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i205.i.i375.i.i.i.i.i.i.i, label %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.i.i376.i.i.i.i.i.i.i, label %for.body.i199.i.i369.i.i.i.i.i.i.i, !llvm.loop !112 + +_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.i.i376.i.i.i.i.i.i.i: ; preds = %for.body.i199.i.i369.i.i.i.i.i.i.i, %_ZN4pbrt15SampledSpectrummLERKS0_.exit.i.i503.i.i.i.i.i.i.i + %u.addr.2267.i.i377.i.i.i.i.i.i.i = phi float [ %u.addr.0.i23.i30641.i.i.i.i.i.i.i, %_ZN4pbrt15SampledSpectrummLERKS0_.exit.i.i503.i.i.i.i.i.i.i ], [ %.sroa.speculated.i.i.i327.i.i.i.i.i.i.i, %for.body.i199.i.i369.i.i.i.i.i.i.i ] + store i8 0, ptr %set.i.i.i291.i.i.i.i.i.i.i, align 4 + call void @_ZN4pbrt19DDAMajorantIterator4NextEv(ptr nonnull sret(%"class.pstd::optional.223") align 4 %seg.i.i242.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(92) %iter.i.i239.i.i.i.i.i.i.i) + %316 = load i8, ptr %set.i.i.i291.i.i.i.i.i.i.i, align 4 %317 = and i8 %316, 1 - %tobool.i.not.i.i311.i.i.i.i.i.i.i = icmp eq i8 %317, 0 - br i1 %tobool.i.not.i.i311.i.i.i.i.i.i.i, label %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.thread.i.i512.i.i.i.i.i.i.i, label %invoke.cont.i.i312.i.i.i.i.i.i.i - -while.end125.i.i446.i.i.i.i.i.i.i: ; preds = %invoke.cont88.i.i440.i.i.i.i.i.i.i - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i.i242.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) - br label %for.body.i.i214.i.i447.i.i.i.i.i.i.i - -for.body.i.i214.i.i447.i.i.i.i.i.i.i: ; preds = %for.body.i.i214.i.i447.i.i.i.i.i.i.i, %while.end125.i.i446.i.i.i.i.i.i.i - %indvars.iv.i.i215.i.i448.i.i.i.i.i.i.i = phi i64 [ 0, %while.end125.i.i446.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i217.i.i450.i.i.i.i.i.i.i, %for.body.i.i214.i.i447.i.i.i.i.i.i.i ] - %arrayidx.i.i216.i.i449.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i242.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i215.i.i448.i.i.i.i.i.i.i - store float 1.000000e+00, ptr %arrayidx.i.i216.i.i449.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i.i217.i.i450.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i215.i.i448.i.i.i.i.i.i.i, 1 - %exitcond.not.i.i218.i.i451.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i217.i.i450.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i.i218.i.i451.i.i.i.i.i.i.i, label %"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_13RGBGridMediumEEEDaSH_.exit.i.i.i.i.i.i.i", label %for.body.i.i214.i.i447.i.i.i.i.i.i.i, !llvm.loop !103 - -"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_13RGBGridMediumEEEDaSH_.exit.i.i.i.i.i.i.i": ; preds = %for.body.i.i214.i.i447.i.i.i.i.i.i.i, %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.thread.i.i512.i.i.i.i.i.i.i - %.fca.0.load.i.i452.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i.i242.i.i.i.i.i.i.i, align 8 - %.fca.1.load.i.i455.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i.i454.i.i.i.i.i.i.i, align 8 - call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %agg.tmp21.i255.i.i.i.i.i.i.i) - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i.i242.i.i.i.i.i.i.i) - call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %iter.i.i243.i.i.i.i.i.i.i) - call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %agg.tmp7.i.i244.i.i.i.i.i.i.i) - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %T_maj.i.i245.i.i.i.i.i.i.i) - call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %seg.i.i246.i.i.i.i.i.i.i) - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp22.i.i247.i.i.i.i.i.i.i) - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp23.i.i248.i.i.i.i.i.i.i) - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp57.i.i249.i.i.i.i.i.i.i) - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp58.i.i250.i.i.i.i.i.i.i) - call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %agg.tmp85.i.i251.i.i.i.i.i.i.i) - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp96.i.i252.i.i.i.i.i.i.i) - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp108.i.i253.i.i.i.i.i.i.i) - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp109.i.i254.i.i.i.i.i.i.i) + %tobool.i.not.i.i307.i.i.i.i.i.i.i = icmp eq i8 %317, 0 + br i1 %tobool.i.not.i.i307.i.i.i.i.i.i.i, label %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.thread.i.i504.i.i.i.i.i.i.i, label %invoke.cont.i.i308.i.i.i.i.i.i.i + +while.end125.i.i438.i.i.i.i.i.i.i: ; preds = %invoke.cont88.i.i432.i.i.i.i.i.i.i + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i.i238.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) + br label %for.body.i.i211.i.i439.i.i.i.i.i.i.i + +for.body.i.i211.i.i439.i.i.i.i.i.i.i: ; preds = %for.body.i.i211.i.i439.i.i.i.i.i.i.i, %while.end125.i.i438.i.i.i.i.i.i.i + %indvars.iv.i.i212.i.i440.i.i.i.i.i.i.i = phi i64 [ 0, %while.end125.i.i438.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i214.i.i442.i.i.i.i.i.i.i, %for.body.i.i211.i.i439.i.i.i.i.i.i.i ] + %arrayidx.i.i213.i.i441.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i238.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i212.i.i440.i.i.i.i.i.i.i + store float 1.000000e+00, ptr %arrayidx.i.i213.i.i441.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i.i214.i.i442.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i212.i.i440.i.i.i.i.i.i.i, 1 + %exitcond.not.i.i215.i.i443.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i214.i.i442.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i.i215.i.i443.i.i.i.i.i.i.i, label %"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_13RGBGridMediumEEEDaSH_.exit.i.i.i.i.i.i.i", label %for.body.i.i211.i.i439.i.i.i.i.i.i.i, !llvm.loop !103 + +"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_13RGBGridMediumEEEDaSH_.exit.i.i.i.i.i.i.i": ; preds = %for.body.i.i211.i.i439.i.i.i.i.i.i.i, %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.thread.i.i504.i.i.i.i.i.i.i + %.fca.0.load.i.i444.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i.i238.i.i.i.i.i.i.i, align 8 + %.fca.1.load.i.i447.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i.i446.i.i.i.i.i.i.i, align 8 + call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %agg.tmp21.i251.i.i.i.i.i.i.i) + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i.i238.i.i.i.i.i.i.i) + call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %iter.i.i239.i.i.i.i.i.i.i) + call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %agg.tmp7.i.i240.i.i.i.i.i.i.i) + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %T_maj.i.i241.i.i.i.i.i.i.i) + call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %seg.i.i242.i.i.i.i.i.i.i) + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp22.i.i243.i.i.i.i.i.i.i) + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp23.i.i244.i.i.i.i.i.i.i) + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp57.i.i245.i.i.i.i.i.i.i) + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp58.i.i246.i.i.i.i.i.i.i) + call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %agg.tmp85.i.i247.i.i.i.i.i.i.i) + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp96.i.i248.i.i.i.i.i.i.i) + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp108.i.i249.i.i.i.i.i.i.i) + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp109.i.i250.i.i.i.i.i.i.i) br label %"_ZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_.exit.i.i.i.i" sw.bb12.i.i.i.i.i.i.i: ; preds = %cond.end.i.i.i.i - call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %agg.tmp21.i532.i.i.i.i.i.i.i) - store ptr %T_ray.i.i.i.i, ptr %agg.tmp21.i532.i.i.i.i.i.i.i, align 8 - store ptr %r_l.i.i.i.i, ptr %agg.tmp2751.sroa.8.0.agg.tmp21.i532.i.i.i.sroa_idx.i.i.i.i, align 8 - store ptr %r_u.i.i.i.i, ptr %agg.tmp2751.sroa.9.0.agg.tmp21.i532.i.i.i.sroa_idx.i.i.i.i, align 8 - store ptr %rng.i.i.i.i, ptr %agg.tmp2751.sroa.10.0.agg.tmp21.i532.i.i.i.sroa_idx.i.i.i.i, align 8 - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i.i519.i.i.i.i.i.i.i) - call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %iter.i.i520.i.i.i.i.i.i.i) - call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %agg.tmp7.i.i521.i.i.i.i.i.i.i) - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %T_maj.i.i522.i.i.i.i.i.i.i) - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp22.i.i523.i.i.i.i.i.i.i) - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp23.i.i524.i.i.i.i.i.i.i) - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp57.i.i525.i.i.i.i.i.i.i) - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp58.i.i526.i.i.i.i.i.i.i) - call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %mp.i.i527.i.i.i.i.i.i.i) - call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %agg.tmp85.i.i528.i.i.i.i.i.i.i) - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp96.i.i529.i.i.i.i.i.i.i) - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp108.i.i530.i.i.i.i.i.i.i) - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp109.i.i531.i.i.i.i.i.i.i) - %318 = fmul <2 x float> %ray.sroa.14.0349.i.i.i.i, %ray.sroa.14.0349.i.i.i.i + call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %agg.tmp21.i524.i.i.i.i.i.i.i) + store ptr %T_ray.i.i.i.i, ptr %agg.tmp21.i524.i.i.i.i.i.i.i, align 8 + store ptr %r_l.i.i.i.i, ptr %agg.tmp2750.sroa.8.0.agg.tmp21.i524.i.i.i.sroa_idx.i.i.i.i, align 8 + store ptr %r_u.i.i.i.i, ptr %agg.tmp2750.sroa.9.0.agg.tmp21.i524.i.i.i.sroa_idx.i.i.i.i, align 8 + store ptr %rng.i.i.i.i, ptr %agg.tmp2750.sroa.10.0.agg.tmp21.i524.i.i.i.sroa_idx.i.i.i.i, align 8 + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i.i511.i.i.i.i.i.i.i) + call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %iter.i.i512.i.i.i.i.i.i.i) + call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %agg.tmp7.i.i513.i.i.i.i.i.i.i) + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %T_maj.i.i514.i.i.i.i.i.i.i) + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp22.i.i515.i.i.i.i.i.i.i) + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp23.i.i516.i.i.i.i.i.i.i) + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp57.i.i517.i.i.i.i.i.i.i) + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp58.i.i518.i.i.i.i.i.i.i) + call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %mp.i.i519.i.i.i.i.i.i.i) + call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %agg.tmp85.i.i520.i.i.i.i.i.i.i) + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp96.i.i521.i.i.i.i.i.i.i) + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp108.i.i522.i.i.i.i.i.i.i) + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp109.i.i523.i.i.i.i.i.i.i) + %318 = fmul <2 x float> %ray.sroa.14.0348.i.i.i.i, %ray.sroa.14.0348.i.i.i.i %shift184 = shufflevector <2 x float> %318, <2 x float> poison, <2 x i32> %319 = fadd <2 x float> %318, %shift184 - %add.i.i.i.i549.i.i.i.i.i.i.i = extractelement <2 x float> %319, i64 0 - %mul.i2.i.i.i.i550.i.i.i.i.i.i.i = fmul float %ray.sroa.22.0350.i.i.i.i, %ray.sroa.22.0350.i.i.i.i - %add3.i.i.i.i551.i.i.i.i.i.i.i = fadd float %mul.i2.i.i.i.i550.i.i.i.i.i.i.i, %add.i.i.i.i549.i.i.i.i.i.i.i - %sqrt.i.i.i552.i.i.i.i.i.i.i = call noundef float @llvm.sqrt.f32(float %add3.i.i.i.i551.i.i.i.i.i.i.i) - %mul.i.i553.i.i.i.i.i.i.i = fmul float %sqrt.i.i.i552.i.i.i.i.i.i.i, %cond.i.i.i.i - %320 = insertelement <2 x float> poison, float %sqrt.i.i.i552.i.i.i.i.i.i.i, i64 0 + %add.i.i.i.i541.i.i.i.i.i.i.i = extractelement <2 x float> %319, i64 0 + %mul.i2.i.i.i.i542.i.i.i.i.i.i.i = fmul float %ray.sroa.22.0349.i.i.i.i, %ray.sroa.22.0349.i.i.i.i + %add3.i.i.i.i543.i.i.i.i.i.i.i = fadd float %mul.i2.i.i.i.i542.i.i.i.i.i.i.i, %add.i.i.i.i541.i.i.i.i.i.i.i + %sqrt.i.i.i544.i.i.i.i.i.i.i = call noundef float @llvm.sqrt.f32(float %add3.i.i.i.i543.i.i.i.i.i.i.i) + %mul.i.i545.i.i.i.i.i.i.i = fmul float %sqrt.i.i.i544.i.i.i.i.i.i.i, %cond.i.i.i.i + %320 = insertelement <2 x float> poison, float %sqrt.i.i.i544.i.i.i.i.i.i.i, i64 0 %321 = shufflevector <2 x float> %320, <2 x float> poison, <2 x i32> zeroinitializer - %322 = fdiv <2 x float> %ray.sroa.14.0349.i.i.i.i, %321 - %div3.i.i.i.i556.i.i.i.i.i.i.i = fdiv float %ray.sroa.22.0350.i.i.i.i, %sqrt.i.i.i552.i.i.i.i.i.i.i - %323 = inttoptr i64 %and.i40280286.i.i.i.i to ptr - store <2 x float> %ray.sroa.0.0347.i.i.i.i, ptr %agg.tmp7.i.i521.i.i.i.i.i.i.i, align 8 - store float %ray.sroa.9.0348.i.i.i.i, ptr %agg.tmp.sroa.6.0.agg.tmp7.i.sroa_idx.i561.i.i.i.i.i.i.i, align 8 - store <2 x float> %322, ptr %agg.tmp.sroa.8.0.agg.tmp7.i.sroa_idx.i562.i.i.i.i.i.i.i, align 4 - store float %div3.i.i.i.i556.i.i.i.i.i.i.i, ptr %agg.tmp.sroa.14.0.agg.tmp7.i.sroa_idx.i563.i.i.i.i.i.i.i, align 4 - store float %ray.sroa.28.0351.i.i.i.i, ptr %agg.tmp.sroa.18.0.agg.tmp7.i.sroa_idx.i564.i.i.i.i.i.i.i, align 8 - store i64 %ray.sroa.30.0352.i.i.i.i, ptr %medium.i.i.i565.i.i.i.i.i.i.i, align 8 - call void @_ZNK4pbrt11CloudMedium9SampleRayENS_3RayEfRKNS_18SampledWavelengthsE(ptr nonnull sret(%"class.pbrt::HomogeneousMajorantIterator") align 4 %iter.i.i520.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(252) %323, ptr noundef nonnull %agg.tmp7.i.i521.i.i.i.i.i.i.i, float noundef %mul.i.i553.i.i.i.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(32) %lambda.i.i.i.i) - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %T_maj.i.i522.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) - br label %for.body.i.i.i.i566.i.i.i.i.i.i.i - -for.body.i.i.i.i566.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i566.i.i.i.i.i.i.i, %sw.bb12.i.i.i.i.i.i.i - %indvars.iv.i.i.i.i567.i.i.i.i.i.i.i = phi i64 [ 0, %sw.bb12.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i.i.i569.i.i.i.i.i.i.i, %for.body.i.i.i.i566.i.i.i.i.i.i.i ] - %arrayidx.i.i.i.i568.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %T_maj.i.i522.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i.i.i567.i.i.i.i.i.i.i - store float 1.000000e+00, ptr %arrayidx.i.i.i.i568.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i.i.i.i569.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i.i.i567.i.i.i.i.i.i.i, 1 - %exitcond.not.i.i.i.i570.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i.i.i569.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i.i.i.i570.i.i.i.i.i.i.i, label %while.cond.preheader.i.i571.i.i.i.i.i.i.i, label %for.body.i.i.i.i566.i.i.i.i.i.i.i, !llvm.loop !103 - -while.cond.preheader.i.i571.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i566.i.i.i.i.i.i.i - %324 = load i8, ptr %called.i.i.i572.i.i.i.i.i.i.i, align 4, !noalias !121 + %322 = fdiv <2 x float> %ray.sroa.14.0348.i.i.i.i, %321 + %div3.i.i.i.i548.i.i.i.i.i.i.i = fdiv float %ray.sroa.22.0349.i.i.i.i, %sqrt.i.i.i544.i.i.i.i.i.i.i + %323 = inttoptr i64 %and.i40279285.i.i.i.i to ptr + store <2 x float> %ray.sroa.0.0346.i.i.i.i, ptr %agg.tmp7.i.i513.i.i.i.i.i.i.i, align 8 + store float %ray.sroa.9.0347.i.i.i.i, ptr %agg.tmp.sroa.6.0.agg.tmp7.i.sroa_idx.i553.i.i.i.i.i.i.i, align 8 + store <2 x float> %322, ptr %agg.tmp.sroa.8.0.agg.tmp7.i.sroa_idx.i554.i.i.i.i.i.i.i, align 4 + store float %div3.i.i.i.i548.i.i.i.i.i.i.i, ptr %agg.tmp.sroa.14.0.agg.tmp7.i.sroa_idx.i555.i.i.i.i.i.i.i, align 4 + store float %ray.sroa.28.0350.i.i.i.i, ptr %agg.tmp.sroa.18.0.agg.tmp7.i.sroa_idx.i556.i.i.i.i.i.i.i, align 8 + store i64 %ray.sroa.30.0351.i.i.i.i, ptr %medium.i.i.i557.i.i.i.i.i.i.i, align 8 + call void @_ZNK4pbrt11CloudMedium9SampleRayENS_3RayEfRKNS_18SampledWavelengthsE(ptr nonnull sret(%"class.pbrt::HomogeneousMajorantIterator") align 4 %iter.i.i512.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(252) %323, ptr noundef nonnull %agg.tmp7.i.i513.i.i.i.i.i.i.i, float noundef %mul.i.i545.i.i.i.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(32) %lambda.i.i.i.i) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %T_maj.i.i514.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) + br label %for.body.i.i.i.i558.i.i.i.i.i.i.i + +for.body.i.i.i.i558.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i558.i.i.i.i.i.i.i, %sw.bb12.i.i.i.i.i.i.i + %indvars.iv.i.i.i.i559.i.i.i.i.i.i.i = phi i64 [ 0, %sw.bb12.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i.i.i561.i.i.i.i.i.i.i, %for.body.i.i.i.i558.i.i.i.i.i.i.i ] + %arrayidx.i.i.i.i560.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %T_maj.i.i514.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i.i.i559.i.i.i.i.i.i.i + store float 1.000000e+00, ptr %arrayidx.i.i.i.i560.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i.i.i.i561.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i.i.i559.i.i.i.i.i.i.i, 1 + %exitcond.not.i.i.i.i562.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i.i.i561.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i.i.i.i562.i.i.i.i.i.i.i, label %while.cond.preheader.i.i563.i.i.i.i.i.i.i, label %for.body.i.i.i.i558.i.i.i.i.i.i.i, !llvm.loop !103 + +while.cond.preheader.i.i563.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i558.i.i.i.i.i.i.i + %324 = load i8, ptr %called.i.i.i564.i.i.i.i.i.i.i, align 4, !noalias !121 %325 = and i8 %324, 1 - %tobool.not.i.i19.i588.i.i.i.i.i.i.i = icmp eq i8 %325, 0 - br i1 %tobool.not.i.i19.i588.i.i.i.i.i.i.i, label %invoke.cont.i.i595.i.i.i.i.i.i.i, label %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.thread.i.i589.i.i.i.i.i.i.i - -invoke.cont.i.i595.i.i.i.i.i.i.i: ; preds = %while.cond.preheader.i.i571.i.i.i.i.i.i.i, %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.i.i669.i.i.i.i.i.i.i - %u.addr.0295.i20.i596.i.i.i.i.i.i.i = phi float [ %.sroa.speculated.i.i.i622.i.i.i.i.i.i.i, %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.i.i669.i.i.i.i.i.i.i ], [ %.sroa.speculated.i.i.i.i.i, %while.cond.preheader.i.i571.i.i.i.i.i.i.i ] - store i8 1, ptr %called.i.i.i572.i.i.i.i.i.i.i, align 4, !noalias !121 - %seg.sroa.0.0.copyload.i.i597.i.i.i.i.i.i.i = load float, ptr %iter.i.i520.i.i.i.i.i.i.i, align 4 - %seg.sroa.4.0.copyload.i.i598.i.i.i.i.i.i.i = load float, ptr %seg.sroa.4.0.iter.sroa_idx.i.i573.i.i.i.i.i.i.i, align 4 - %seg.sroa.7.0.copyload.i.i599.i.i.i.i.i.i.i = load <2 x float>, ptr %seg.sroa.7.0.iter.sroa_idx.i.i574.i.i.i.i.i.i.i, align 4 - %seg.sroa.13.0.copyload.i.i600.i.i.i.i.i.i.i = load <2 x float>, ptr %seg.sroa.13.0.iter.sroa_idx.i.i575.i.i.i.i.i.i.i, align 4 - %seg.sroa.7.8.vec.extract.i.i601.i.i.i.i.i.i.i = extractelement <2 x float> %seg.sroa.7.0.copyload.i.i599.i.i.i.i.i.i.i, i64 0 - %cmp.i.i602.i.i.i.i.i.i.i = fcmp oeq float %seg.sroa.7.8.vec.extract.i.i601.i.i.i.i.i.i.i, 0.000000e+00 - br i1 %cmp.i.i602.i.i.i.i.i.i.i, label %invoke.cont17.i.i741.i.i.i.i.i.i.i, label %invoke.cont52.i.i603.i.i.i.i.i.i.i - -invoke.cont17.i.i741.i.i.i.i.i.i.i: ; preds = %invoke.cont.i.i595.i.i.i.i.i.i.i - %sub.i.i742.i.i.i.i.i.i.i = fsub float %seg.sroa.4.0.copyload.i.i598.i.i.i.i.i.i.i, %seg.sroa.0.0.copyload.i.i597.i.i.i.i.i.i.i - %326 = call float @llvm.fabs.f32(float %sub.i.i742.i.i.i.i.i.i.i) + %tobool.not.i.i19.i580.i.i.i.i.i.i.i = icmp eq i8 %325, 0 + br i1 %tobool.not.i.i19.i580.i.i.i.i.i.i.i, label %invoke.cont.i.i587.i.i.i.i.i.i.i, label %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.thread.i.i581.i.i.i.i.i.i.i + +invoke.cont.i.i587.i.i.i.i.i.i.i: ; preds = %while.cond.preheader.i.i563.i.i.i.i.i.i.i, %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.i.i657.i.i.i.i.i.i.i + %u.addr.0292.i20.i588.i.i.i.i.i.i.i = phi float [ %.sroa.speculated.i.i.i610.i.i.i.i.i.i.i, %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.i.i657.i.i.i.i.i.i.i ], [ %.sroa.speculated.i.i.i.i.i, %while.cond.preheader.i.i563.i.i.i.i.i.i.i ] + store i8 1, ptr %called.i.i.i564.i.i.i.i.i.i.i, align 4, !noalias !121 + %seg.sroa.0.0.copyload.i.i589.i.i.i.i.i.i.i = load float, ptr %iter.i.i512.i.i.i.i.i.i.i, align 4 + %seg.sroa.4.0.copyload.i.i590.i.i.i.i.i.i.i = load float, ptr %seg.sroa.4.0.iter.sroa_idx.i.i565.i.i.i.i.i.i.i, align 4 + %seg.sroa.7.0.copyload.i.i591.i.i.i.i.i.i.i = load <2 x float>, ptr %seg.sroa.7.0.iter.sroa_idx.i.i566.i.i.i.i.i.i.i, align 4 + %seg.sroa.13.0.copyload.i.i592.i.i.i.i.i.i.i = load <2 x float>, ptr %seg.sroa.13.0.iter.sroa_idx.i.i567.i.i.i.i.i.i.i, align 4 + %seg.sroa.7.8.vec.extract.i.i593.i.i.i.i.i.i.i = extractelement <2 x float> %seg.sroa.7.0.copyload.i.i591.i.i.i.i.i.i.i, i64 0 + %cmp.i.i594.i.i.i.i.i.i.i = fcmp oeq float %seg.sroa.7.8.vec.extract.i.i593.i.i.i.i.i.i.i, 0.000000e+00 + br i1 %cmp.i.i594.i.i.i.i.i.i.i, label %invoke.cont17.i.i729.i.i.i.i.i.i.i, label %invoke.cont52.i.i595.i.i.i.i.i.i.i + +invoke.cont17.i.i729.i.i.i.i.i.i.i: ; preds = %invoke.cont.i.i587.i.i.i.i.i.i.i + %sub.i.i730.i.i.i.i.i.i.i = fsub float %seg.sroa.4.0.copyload.i.i590.i.i.i.i.i.i.i, %seg.sroa.0.0.copyload.i.i589.i.i.i.i.i.i.i + %326 = call float @llvm.fabs.f32(float %sub.i.i730.i.i.i.i.i.i.i) %327 = fcmp oeq float %326, 0x7FF0000000000000 - %dt.0.i.i743.i.i.i.i.i.i.i = select i1 %327, float 0x47EFFFFFE0000000, float %sub.i.i742.i.i.i.i.i.i.i - %fneg.i.i744.i.i.i.i.i.i.i = fneg float %dt.0.i.i743.i.i.i.i.i.i.i - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i.i.i.i518.i.i.i.i.i.i.i) - store <2 x float> %seg.sroa.7.0.copyload.i.i599.i.i.i.i.i.i.i, ptr %retval.i.i.i.i518.i.i.i.i.i.i.i, align 8 - store <2 x float> %seg.sroa.13.0.copyload.i.i600.i.i.i.i.i.i.i, ptr %seg.sroa.13.8.retval.i.i.sroa_idx.i.i586.i.i.i.i.i.i.i, align 8 - br label %for.body.i.i29.i.i745.i.i.i.i.i.i.i - -for.body.i.i29.i.i745.i.i.i.i.i.i.i: ; preds = %for.body.i.i29.i.i745.i.i.i.i.i.i.i, %invoke.cont17.i.i741.i.i.i.i.i.i.i - %indvars.iv.i.i30.i.i746.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont17.i.i741.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i31.i.i749.i.i.i.i.i.i.i, %for.body.i.i29.i.i745.i.i.i.i.i.i.i ] - %arrayidx.i.i.i.i.i747.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i.i.i518.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i30.i.i746.i.i.i.i.i.i.i - %328 = load float, ptr %arrayidx.i.i.i.i.i747.i.i.i.i.i.i.i, align 4 - %mul.i.i.i.i748.i.i.i.i.i.i.i = fmul float %328, %fneg.i.i744.i.i.i.i.i.i.i - store float %mul.i.i.i.i748.i.i.i.i.i.i.i, ptr %arrayidx.i.i.i.i.i747.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i.i31.i.i749.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i30.i.i746.i.i.i.i.i.i.i, 1 - %exitcond.not.i.i32.i.i750.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i31.i.i749.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i.i32.i.i750.i.i.i.i.i.i.i, label %invoke.cont27.i.i751.i.i.i.i.i.i.i, label %for.body.i.i29.i.i745.i.i.i.i.i.i.i, !llvm.loop !110 - -invoke.cont27.i.i751.i.i.i.i.i.i.i: ; preds = %for.body.i.i29.i.i745.i.i.i.i.i.i.i - %.fca.0.load.i.i.i.i752.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i.i.i.i518.i.i.i.i.i.i.i, align 8 - %.fca.1.load.i.i.i.i753.i.i.i.i.i.i.i = load <2 x float>, ptr %seg.sroa.13.8.retval.i.i.sroa_idx.i.i586.i.i.i.i.i.i.i, align 8 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i.i.i.i518.i.i.i.i.i.i.i) - store <2 x float> %.fca.0.load.i.i.i.i752.i.i.i.i.i.i.i, ptr %ref.tmp23.i.i524.i.i.i.i.i.i.i, align 8 - store <2 x float> %.fca.1.load.i.i.i.i753.i.i.i.i.i.i.i, ptr %48, align 8 - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i.i.i517.i.i.i.i.i.i.i) - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i.i.i517.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) - br label %for.body.i.i.i754.i.i.i.i.i.i.i - -for.body.i.i.i754.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i.i.i771.i.i.i.i.i.i.i, %invoke.cont27.i.i751.i.i.i.i.i.i.i - %indvars.iv.i.i.i755.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont27.i.i751.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i.i774.i.i.i.i.i.i.i, %_ZN4pbrt7FastExpEf.exit.i.i.i771.i.i.i.i.i.i.i ] - %arrayidx.i.i.i35.i.i756.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp23.i.i524.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i.i755.i.i.i.i.i.i.i - %329 = load float, ptr %arrayidx.i.i.i35.i.i756.i.i.i.i.i.i.i, align 4 - %mul.i.i36.i.i757.i.i.i.i.i.i.i = fmul float %329, 0x3FF7154760000000 - %330 = call noundef float @llvm.floor.f32(float %mul.i.i36.i.i757.i.i.i.i.i.i.i) - %sub.i.i.i.i758.i.i.i.i.i.i.i = fsub float %mul.i.i36.i.i757.i.i.i.i.i.i.i, %330 - %conv.i4.i.i.i759.i.i.i.i.i.i.i = fptosi float %330 to i32 - %331 = call noundef float @llvm.fma.f32(float %sub.i.i.i.i758.i.i.i.i.i.i.i, float 0x3FB4015920000000, float 0x3FCCF34160000000) - %332 = call noundef float @llvm.fma.f32(float %sub.i.i.i.i758.i.i.i.i.i.i.i, float %331, float 0x3FE6420080000000) - %333 = call noundef float @llvm.fma.f32(float %sub.i.i.i.i758.i.i.i.i.i.i.i, float %332, float 1.000000e+00) + %dt.0.i.i731.i.i.i.i.i.i.i = select i1 %327, float 0x47EFFFFFE0000000, float %sub.i.i730.i.i.i.i.i.i.i + %fneg.i.i732.i.i.i.i.i.i.i = fneg float %dt.0.i.i731.i.i.i.i.i.i.i + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i.i.i.i510.i.i.i.i.i.i.i) + store <2 x float> %seg.sroa.7.0.copyload.i.i591.i.i.i.i.i.i.i, ptr %retval.i.i.i.i510.i.i.i.i.i.i.i, align 8 + store <2 x float> %seg.sroa.13.0.copyload.i.i592.i.i.i.i.i.i.i, ptr %seg.sroa.13.8.retval.i.i.sroa_idx.i.i578.i.i.i.i.i.i.i, align 8 + br label %for.body.i.i29.i.i733.i.i.i.i.i.i.i + +for.body.i.i29.i.i733.i.i.i.i.i.i.i: ; preds = %for.body.i.i29.i.i733.i.i.i.i.i.i.i, %invoke.cont17.i.i729.i.i.i.i.i.i.i + %indvars.iv.i.i30.i.i734.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont17.i.i729.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i31.i.i737.i.i.i.i.i.i.i, %for.body.i.i29.i.i733.i.i.i.i.i.i.i ] + %arrayidx.i.i.i.i.i735.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i.i.i510.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i30.i.i734.i.i.i.i.i.i.i + %328 = load float, ptr %arrayidx.i.i.i.i.i735.i.i.i.i.i.i.i, align 4 + %mul.i.i.i.i736.i.i.i.i.i.i.i = fmul float %328, %fneg.i.i732.i.i.i.i.i.i.i + store float %mul.i.i.i.i736.i.i.i.i.i.i.i, ptr %arrayidx.i.i.i.i.i735.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i.i31.i.i737.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i30.i.i734.i.i.i.i.i.i.i, 1 + %exitcond.not.i.i32.i.i738.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i31.i.i737.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i.i32.i.i738.i.i.i.i.i.i.i, label %invoke.cont27.i.i739.i.i.i.i.i.i.i, label %for.body.i.i29.i.i733.i.i.i.i.i.i.i, !llvm.loop !110 + +invoke.cont27.i.i739.i.i.i.i.i.i.i: ; preds = %for.body.i.i29.i.i733.i.i.i.i.i.i.i + %.fca.0.load.i.i.i.i740.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i.i.i.i510.i.i.i.i.i.i.i, align 8 + %.fca.1.load.i.i.i.i741.i.i.i.i.i.i.i = load <2 x float>, ptr %seg.sroa.13.8.retval.i.i.sroa_idx.i.i578.i.i.i.i.i.i.i, align 8 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i.i.i.i510.i.i.i.i.i.i.i) + store <2 x float> %.fca.0.load.i.i.i.i740.i.i.i.i.i.i.i, ptr %ref.tmp23.i.i516.i.i.i.i.i.i.i, align 8 + store <2 x float> %.fca.1.load.i.i.i.i741.i.i.i.i.i.i.i, ptr %48, align 8 + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i.i.i509.i.i.i.i.i.i.i) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i.i.i509.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) + br label %for.body.i.i.i742.i.i.i.i.i.i.i + +for.body.i.i.i742.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i.i.i759.i.i.i.i.i.i.i, %invoke.cont27.i.i739.i.i.i.i.i.i.i + %indvars.iv.i.i.i743.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont27.i.i739.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i.i762.i.i.i.i.i.i.i, %_ZN4pbrt7FastExpEf.exit.i.i.i759.i.i.i.i.i.i.i ] + %arrayidx.i.i.i35.i.i744.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp23.i.i516.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i.i743.i.i.i.i.i.i.i + %329 = load float, ptr %arrayidx.i.i.i35.i.i744.i.i.i.i.i.i.i, align 4 + %mul.i.i36.i.i745.i.i.i.i.i.i.i = fmul float %329, 0x3FF7154760000000 + %330 = call noundef float @llvm.floor.f32(float %mul.i.i36.i.i745.i.i.i.i.i.i.i) + %sub.i.i.i.i746.i.i.i.i.i.i.i = fsub float %mul.i.i36.i.i745.i.i.i.i.i.i.i, %330 + %conv.i4.i.i.i747.i.i.i.i.i.i.i = fptosi float %330 to i32 + %331 = call noundef float @llvm.fma.f32(float %sub.i.i.i.i746.i.i.i.i.i.i.i, float 0x3FB4015920000000, float 0x3FCCF34160000000) + %332 = call noundef float @llvm.fma.f32(float %sub.i.i.i.i746.i.i.i.i.i.i.i, float %331, float 0x3FE6420080000000) + %333 = call noundef float @llvm.fma.f32(float %sub.i.i.i.i746.i.i.i.i.i.i.i, float %332, float 1.000000e+00) %334 = bitcast float %333 to i32 - %shr.i.i.i.i.i760.i.i.i.i.i.i.i = lshr i32 %334, 23 - %sub.i.i.i.i.i761.i.i.i.i.i.i.i = add i32 %conv.i4.i.i.i759.i.i.i.i.i.i.i, -127 - %add.i.i37.i.i762.i.i.i.i.i.i.i = add i32 %sub.i.i.i.i.i761.i.i.i.i.i.i.i, %shr.i.i.i.i.i760.i.i.i.i.i.i.i - %cmp.i.i.i.i763.i.i.i.i.i.i.i = icmp slt i32 %add.i.i37.i.i762.i.i.i.i.i.i.i, -126 - br i1 %cmp.i.i.i.i763.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i.i.i771.i.i.i.i.i.i.i, label %if.end.i.i.i.i764.i.i.i.i.i.i.i - -if.end.i.i.i.i764.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i754.i.i.i.i.i.i.i - %cmp3.i.i.i.i765.i.i.i.i.i.i.i = icmp sgt i32 %add.i.i37.i.i762.i.i.i.i.i.i.i, 127 - br i1 %cmp3.i.i.i.i765.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i.i.i771.i.i.i.i.i.i.i, label %if.end5.i.i.i.i766.i.i.i.i.i.i.i - -if.end5.i.i.i.i766.i.i.i.i.i.i.i: ; preds = %if.end.i.i.i.i764.i.i.i.i.i.i.i - %and.i.i38.i.i767.i.i.i.i.i.i.i = and i32 %334, -2139095041 - %add7.i.i.i.i768.i.i.i.i.i.i.i = shl nsw i32 %add.i.i37.i.i762.i.i.i.i.i.i.i, 23 - %shl.i.i.i.i769.i.i.i.i.i.i.i = add i32 %add7.i.i.i.i768.i.i.i.i.i.i.i, 1065353216 - %or.i.i.i.i770.i.i.i.i.i.i.i = or i32 %shl.i.i.i.i769.i.i.i.i.i.i.i, %and.i.i38.i.i767.i.i.i.i.i.i.i - %335 = bitcast i32 %or.i.i.i.i770.i.i.i.i.i.i.i to float - br label %_ZN4pbrt7FastExpEf.exit.i.i.i771.i.i.i.i.i.i.i - -_ZN4pbrt7FastExpEf.exit.i.i.i771.i.i.i.i.i.i.i: ; preds = %if.end5.i.i.i.i766.i.i.i.i.i.i.i, %if.end.i.i.i.i764.i.i.i.i.i.i.i, %for.body.i.i.i754.i.i.i.i.i.i.i - %retval.0.i.i.i.i772.i.i.i.i.i.i.i = phi float [ %335, %if.end5.i.i.i.i766.i.i.i.i.i.i.i ], [ 0.000000e+00, %for.body.i.i.i754.i.i.i.i.i.i.i ], [ 0x7FF0000000000000, %if.end.i.i.i.i764.i.i.i.i.i.i.i ] - %arrayidx.i.i6.i.i.i773.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i.i517.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i.i755.i.i.i.i.i.i.i - store float %retval.0.i.i.i.i772.i.i.i.i.i.i.i, ptr %arrayidx.i.i6.i.i.i773.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i.i.i774.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i.i755.i.i.i.i.i.i.i, 1 - %exitcond.not.i.i.i775.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i.i774.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i.i.i775.i.i.i.i.i.i.i, label %invoke.cont31.i.i776.i.i.i.i.i.i.i, label %for.body.i.i.i754.i.i.i.i.i.i.i, !llvm.loop !111 - -invoke.cont31.i.i776.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i.i.i771.i.i.i.i.i.i.i - %.fca.0.load.i.i.i777.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i.i.i517.i.i.i.i.i.i.i, align 8 - %.fca.1.load.i.i.i778.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i.i.i587.i.i.i.i.i.i.i, align 8 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i.i.i517.i.i.i.i.i.i.i) - store <2 x float> %.fca.0.load.i.i.i777.i.i.i.i.i.i.i, ptr %ref.tmp22.i.i523.i.i.i.i.i.i.i, align 8 - store <2 x float> %.fca.1.load.i.i.i778.i.i.i.i.i.i.i, ptr %49, align 8 - br label %for.body.i39.i.i779.i.i.i.i.i.i.i - -for.body.i39.i.i779.i.i.i.i.i.i.i: ; preds = %for.body.i39.i.i779.i.i.i.i.i.i.i, %invoke.cont31.i.i776.i.i.i.i.i.i.i - %indvars.iv.i40.i.i780.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont31.i.i776.i.i.i.i.i.i.i ], [ %indvars.iv.next.i42.i.i784.i.i.i.i.i.i.i, %for.body.i39.i.i779.i.i.i.i.i.i.i ] - %arrayidx.i.i41.i.i781.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp22.i.i523.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i40.i.i780.i.i.i.i.i.i.i - %336 = load float, ptr %arrayidx.i.i41.i.i781.i.i.i.i.i.i.i, align 4 - %arrayidx.i4.i.i.i782.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %T_maj.i.i522.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i40.i.i780.i.i.i.i.i.i.i - %337 = load float, ptr %arrayidx.i4.i.i.i782.i.i.i.i.i.i.i, align 4 - %mul.i.i.i783.i.i.i.i.i.i.i = fmul float %336, %337 - store float %mul.i.i.i783.i.i.i.i.i.i.i, ptr %arrayidx.i4.i.i.i782.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i42.i.i784.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i40.i.i780.i.i.i.i.i.i.i, 1 - %exitcond.not.i43.i.i785.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i42.i.i784.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i43.i.i785.i.i.i.i.i.i.i, label %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.thread.i.i589.i.i.i.i.i.i.i, label %for.body.i39.i.i779.i.i.i.i.i.i.i, !llvm.loop !112 - -invoke.cont52.i.i603.i.i.i.i.i.i.i: ; preds = %invoke.cont.i.i595.i.i.i.i.i.i.i, %invoke.cont97.i.i740.i.i.i.i.i.i.i - %tMin38.0.i.i.i.i.i.i.i.i.i = phi float [ %add.i.i607.i.i.i.i.i.i.i, %invoke.cont97.i.i740.i.i.i.i.i.i.i ], [ %seg.sroa.0.0.copyload.i.i597.i.i.i.i.i.i.i, %invoke.cont.i.i595.i.i.i.i.i.i.i ] - %u.addr.1.i.i604.i.i.i.i.i.i.i = phi float [ %.sroa.speculated.i.i.i622.i.i.i.i.i.i.i, %invoke.cont97.i.i740.i.i.i.i.i.i.i ], [ %u.addr.0295.i20.i596.i.i.i.i.i.i.i, %invoke.cont.i.i595.i.i.i.i.i.i.i ] - %sub.i.i.i605.i.i.i.i.i.i.i = fsub float 1.000000e+00, %u.addr.1.i.i604.i.i.i.i.i.i.i - %call.i.i.i.i606.i.i.i.i.i.i.i = call noundef float @logf(float noundef %sub.i.i.i605.i.i.i.i.i.i.i) #25 - %338 = fdiv float %call.i.i.i.i606.i.i.i.i.i.i.i, %seg.sroa.7.8.vec.extract.i.i601.i.i.i.i.i.i.i - %add.i.i607.i.i.i.i.i.i.i = fsub float %tMin38.0.i.i.i.i.i.i.i.i.i, %338 + %shr.i.i.i.i.i748.i.i.i.i.i.i.i = lshr i32 %334, 23 + %sub.i.i.i.i.i749.i.i.i.i.i.i.i = add i32 %conv.i4.i.i.i747.i.i.i.i.i.i.i, -127 + %add.i.i37.i.i750.i.i.i.i.i.i.i = add i32 %sub.i.i.i.i.i749.i.i.i.i.i.i.i, %shr.i.i.i.i.i748.i.i.i.i.i.i.i + %cmp.i.i.i.i751.i.i.i.i.i.i.i = icmp slt i32 %add.i.i37.i.i750.i.i.i.i.i.i.i, -126 + br i1 %cmp.i.i.i.i751.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i.i.i759.i.i.i.i.i.i.i, label %if.end.i.i.i.i752.i.i.i.i.i.i.i + +if.end.i.i.i.i752.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i742.i.i.i.i.i.i.i + %cmp3.i.i.i.i753.i.i.i.i.i.i.i = icmp sgt i32 %add.i.i37.i.i750.i.i.i.i.i.i.i, 127 + br i1 %cmp3.i.i.i.i753.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i.i.i759.i.i.i.i.i.i.i, label %if.end5.i.i.i.i754.i.i.i.i.i.i.i + +if.end5.i.i.i.i754.i.i.i.i.i.i.i: ; preds = %if.end.i.i.i.i752.i.i.i.i.i.i.i + %and.i.i38.i.i755.i.i.i.i.i.i.i = and i32 %334, -2139095041 + %add7.i.i.i.i756.i.i.i.i.i.i.i = shl nsw i32 %add.i.i37.i.i750.i.i.i.i.i.i.i, 23 + %shl.i.i.i.i757.i.i.i.i.i.i.i = add i32 %add7.i.i.i.i756.i.i.i.i.i.i.i, 1065353216 + %or.i.i.i.i758.i.i.i.i.i.i.i = or i32 %shl.i.i.i.i757.i.i.i.i.i.i.i, %and.i.i38.i.i755.i.i.i.i.i.i.i + %335 = bitcast i32 %or.i.i.i.i758.i.i.i.i.i.i.i to float + br label %_ZN4pbrt7FastExpEf.exit.i.i.i759.i.i.i.i.i.i.i + +_ZN4pbrt7FastExpEf.exit.i.i.i759.i.i.i.i.i.i.i: ; preds = %if.end5.i.i.i.i754.i.i.i.i.i.i.i, %if.end.i.i.i.i752.i.i.i.i.i.i.i, %for.body.i.i.i742.i.i.i.i.i.i.i + %retval.0.i.i.i.i760.i.i.i.i.i.i.i = phi float [ %335, %if.end5.i.i.i.i754.i.i.i.i.i.i.i ], [ 0.000000e+00, %for.body.i.i.i742.i.i.i.i.i.i.i ], [ 0x7FF0000000000000, %if.end.i.i.i.i752.i.i.i.i.i.i.i ] + %arrayidx.i.i6.i.i.i761.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i.i509.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i.i743.i.i.i.i.i.i.i + store float %retval.0.i.i.i.i760.i.i.i.i.i.i.i, ptr %arrayidx.i.i6.i.i.i761.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i.i.i762.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i.i743.i.i.i.i.i.i.i, 1 + %exitcond.not.i.i.i763.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i.i762.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i.i.i763.i.i.i.i.i.i.i, label %invoke.cont31.i.i764.i.i.i.i.i.i.i, label %for.body.i.i.i742.i.i.i.i.i.i.i, !llvm.loop !111 + +invoke.cont31.i.i764.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i.i.i759.i.i.i.i.i.i.i + %.fca.0.load.i.i.i765.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i.i.i509.i.i.i.i.i.i.i, align 8 + %.fca.1.load.i.i.i766.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i.i.i579.i.i.i.i.i.i.i, align 8 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i.i.i509.i.i.i.i.i.i.i) + store <2 x float> %.fca.0.load.i.i.i765.i.i.i.i.i.i.i, ptr %ref.tmp22.i.i515.i.i.i.i.i.i.i, align 8 + store <2 x float> %.fca.1.load.i.i.i766.i.i.i.i.i.i.i, ptr %49, align 8 + br label %for.body.i39.i.i767.i.i.i.i.i.i.i + +for.body.i39.i.i767.i.i.i.i.i.i.i: ; preds = %for.body.i39.i.i767.i.i.i.i.i.i.i, %invoke.cont31.i.i764.i.i.i.i.i.i.i + %indvars.iv.i40.i.i768.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont31.i.i764.i.i.i.i.i.i.i ], [ %indvars.iv.next.i42.i.i772.i.i.i.i.i.i.i, %for.body.i39.i.i767.i.i.i.i.i.i.i ] + %arrayidx.i.i41.i.i769.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp22.i.i515.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i40.i.i768.i.i.i.i.i.i.i + %336 = load float, ptr %arrayidx.i.i41.i.i769.i.i.i.i.i.i.i, align 4 + %arrayidx.i4.i.i.i770.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %T_maj.i.i514.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i40.i.i768.i.i.i.i.i.i.i + %337 = load float, ptr %arrayidx.i4.i.i.i770.i.i.i.i.i.i.i, align 4 + %mul.i.i.i771.i.i.i.i.i.i.i = fmul float %336, %337 + store float %mul.i.i.i771.i.i.i.i.i.i.i, ptr %arrayidx.i4.i.i.i770.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i42.i.i772.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i40.i.i768.i.i.i.i.i.i.i, 1 + %exitcond.not.i43.i.i773.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i42.i.i772.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i43.i.i773.i.i.i.i.i.i.i, label %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.thread.i.i581.i.i.i.i.i.i.i, label %for.body.i39.i.i767.i.i.i.i.i.i.i, !llvm.loop !112 + +invoke.cont52.i.i595.i.i.i.i.i.i.i: ; preds = %invoke.cont.i.i587.i.i.i.i.i.i.i, %invoke.cont97.i.i728.i.i.i.i.i.i.i + %tMin38.0.i.i.i.i.i.i.i.i.i = phi float [ %add.i.i599.i.i.i.i.i.i.i, %invoke.cont97.i.i728.i.i.i.i.i.i.i ], [ %seg.sroa.0.0.copyload.i.i589.i.i.i.i.i.i.i, %invoke.cont.i.i587.i.i.i.i.i.i.i ] + %u.addr.1.i.i596.i.i.i.i.i.i.i = phi float [ %.sroa.speculated.i.i.i610.i.i.i.i.i.i.i, %invoke.cont97.i.i728.i.i.i.i.i.i.i ], [ %u.addr.0292.i20.i588.i.i.i.i.i.i.i, %invoke.cont.i.i587.i.i.i.i.i.i.i ] + %sub.i.i.i597.i.i.i.i.i.i.i = fsub float 1.000000e+00, %u.addr.1.i.i596.i.i.i.i.i.i.i + %call.i.i.i.i598.i.i.i.i.i.i.i = call noundef float @logf(float noundef %sub.i.i.i597.i.i.i.i.i.i.i) #25 + %338 = fdiv float %call.i.i.i.i598.i.i.i.i.i.i.i, %seg.sroa.7.8.vec.extract.i.i593.i.i.i.i.i.i.i + %add.i.i599.i.i.i.i.i.i.i = fsub float %tMin38.0.i.i.i.i.i.i.i.i.i, %338 %339 = load i64, ptr %rng.i.i.i.i, align 8 - %mul.i.i54.i.i608.i.i.i.i.i.i.i = mul i64 %339, 6364136223846793005 + %mul.i.i54.i.i600.i.i.i.i.i.i.i = mul i64 %339, 6364136223846793005 %340 = load i64, ptr %inc.i.i.i.i.i.i, align 8 - %add.i.i55.i.i609.i.i.i.i.i.i.i = add i64 %mul.i.i54.i.i608.i.i.i.i.i.i.i, %340 - store i64 %add.i.i55.i.i609.i.i.i.i.i.i.i, ptr %rng.i.i.i.i, align 8 + %add.i.i55.i.i601.i.i.i.i.i.i.i = add i64 %mul.i.i54.i.i600.i.i.i.i.i.i.i, %340 + store i64 %add.i.i55.i.i601.i.i.i.i.i.i.i, ptr %rng.i.i.i.i, align 8 %341 = lshr i64 %339, 45 %342 = lshr i64 %339, 27 - %shr3.i.i.i.i610.i.i.i.i.i.i.i = xor i64 %341, %342 - %conv.i.i.i.i611.i.i.i.i.i.i.i = trunc i64 %shr3.i.i.i.i610.i.i.i.i.i.i.i to i32 - %shr4.i.i.i.i612.i.i.i.i.i.i.i = lshr i64 %339, 59 - %conv5.i.i.i.i613.i.i.i.i.i.i.i = trunc i64 %shr4.i.i.i.i612.i.i.i.i.i.i.i to i32 - %shr6.i.i.i.i614.i.i.i.i.i.i.i = lshr i32 %conv.i.i.i.i611.i.i.i.i.i.i.i, %conv5.i.i.i.i613.i.i.i.i.i.i.i - %add7.i.i56.i.i615.i.i.i.i.i.i.i = sub nsw i32 0, %conv5.i.i.i.i613.i.i.i.i.i.i.i - %and.i.i57.i.i616.i.i.i.i.i.i.i = and i32 %add7.i.i56.i.i615.i.i.i.i.i.i.i, 31 - %shl.i.i58.i.i617.i.i.i.i.i.i.i = shl i32 %conv.i.i.i.i611.i.i.i.i.i.i.i, %and.i.i57.i.i616.i.i.i.i.i.i.i - %or.i.i59.i.i618.i.i.i.i.i.i.i = or i32 %shr6.i.i.i.i614.i.i.i.i.i.i.i, %shl.i.i58.i.i617.i.i.i.i.i.i.i - %conv.i.i.i619.i.i.i.i.i.i.i = uitofp i32 %or.i.i59.i.i618.i.i.i.i.i.i.i to float - %mul.i60.i.i620.i.i.i.i.i.i.i = fmul float %conv.i.i.i619.i.i.i.i.i.i.i, 0x3DF0000000000000 - %cmp.i.i61.i.i621.i.i.i.i.i.i.i = fcmp olt float %mul.i60.i.i620.i.i.i.i.i.i.i, 0x3FEFFFFFE0000000 - %.sroa.speculated.i.i.i622.i.i.i.i.i.i.i = select i1 %cmp.i.i61.i.i621.i.i.i.i.i.i.i, float %mul.i60.i.i620.i.i.i.i.i.i.i, float 0x3FEFFFFFE0000000 - %cmp55.i.i623.i.i.i.i.i.i.i = fcmp olt float %add.i.i607.i.i.i.i.i.i.i, %seg.sroa.4.0.copyload.i.i598.i.i.i.i.i.i.i - br i1 %cmp55.i.i623.i.i.i.i.i.i.i, label %invoke.cont61.i.i672.i.i.i.i.i.i.i, label %invoke.cont103.i.i624.i.i.i.i.i.i.i - -invoke.cont61.i.i672.i.i.i.i.i.i.i: ; preds = %invoke.cont52.i.i603.i.i.i.i.i.i.i - %sub59.i.i673.i.i.i.i.i.i.i = fsub float %add.i.i607.i.i.i.i.i.i.i, %tMin38.0.i.i.i.i.i.i.i.i.i - %fneg60.i.i674.i.i.i.i.i.i.i = fneg float %sub59.i.i673.i.i.i.i.i.i.i - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i.i72.i.i516.i.i.i.i.i.i.i) - store <2 x float> %seg.sroa.7.0.copyload.i.i599.i.i.i.i.i.i.i, ptr %retval.i.i72.i.i516.i.i.i.i.i.i.i, align 8 - store <2 x float> %seg.sroa.13.0.copyload.i.i600.i.i.i.i.i.i.i, ptr %seg.sroa.13.8.retval.i.i72.sroa_idx.i.i577.i.i.i.i.i.i.i, align 8 - br label %for.body.i.i73.i.i675.i.i.i.i.i.i.i - -for.body.i.i73.i.i675.i.i.i.i.i.i.i: ; preds = %for.body.i.i73.i.i675.i.i.i.i.i.i.i, %invoke.cont61.i.i672.i.i.i.i.i.i.i - %indvars.iv.i.i74.i.i676.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont61.i.i672.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i77.i.i679.i.i.i.i.i.i.i, %for.body.i.i73.i.i675.i.i.i.i.i.i.i ] - %arrayidx.i.i.i75.i.i677.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i72.i.i516.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i74.i.i676.i.i.i.i.i.i.i - %343 = load float, ptr %arrayidx.i.i.i75.i.i677.i.i.i.i.i.i.i, align 4 - %mul.i.i76.i.i678.i.i.i.i.i.i.i = fmul float %343, %fneg60.i.i674.i.i.i.i.i.i.i - store float %mul.i.i76.i.i678.i.i.i.i.i.i.i, ptr %arrayidx.i.i.i75.i.i677.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i.i77.i.i679.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i74.i.i676.i.i.i.i.i.i.i, 1 - %exitcond.not.i.i78.i.i680.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i77.i.i679.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i.i78.i.i680.i.i.i.i.i.i.i, label %invoke.cont64.i.i681.i.i.i.i.i.i.i, label %for.body.i.i73.i.i675.i.i.i.i.i.i.i, !llvm.loop !110 - -invoke.cont64.i.i681.i.i.i.i.i.i.i: ; preds = %for.body.i.i73.i.i675.i.i.i.i.i.i.i - %.fca.0.load.i.i79.i.i682.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i.i72.i.i516.i.i.i.i.i.i.i, align 8 - %.fca.1.load.i.i82.i.i683.i.i.i.i.i.i.i = load <2 x float>, ptr %seg.sroa.13.8.retval.i.i72.sroa_idx.i.i577.i.i.i.i.i.i.i, align 8 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i.i72.i.i516.i.i.i.i.i.i.i) - store <2 x float> %.fca.0.load.i.i79.i.i682.i.i.i.i.i.i.i, ptr %ref.tmp58.i.i526.i.i.i.i.i.i.i, align 8 - store <2 x float> %.fca.1.load.i.i82.i.i683.i.i.i.i.i.i.i, ptr %44, align 8 - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i85.i.i515.i.i.i.i.i.i.i) - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i85.i.i515.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) - br label %for.body.i86.i.i684.i.i.i.i.i.i.i - -for.body.i86.i.i684.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i103.i.i701.i.i.i.i.i.i.i, %invoke.cont64.i.i681.i.i.i.i.i.i.i - %indvars.iv.i87.i.i685.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont64.i.i681.i.i.i.i.i.i.i ], [ %indvars.iv.next.i106.i.i704.i.i.i.i.i.i.i, %_ZN4pbrt7FastExpEf.exit.i103.i.i701.i.i.i.i.i.i.i ] - %arrayidx.i.i.i88.i.i686.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp58.i.i526.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i87.i.i685.i.i.i.i.i.i.i - %344 = load float, ptr %arrayidx.i.i.i88.i.i686.i.i.i.i.i.i.i, align 4 - %mul.i.i89.i.i687.i.i.i.i.i.i.i = fmul float %344, 0x3FF7154760000000 - %345 = call noundef float @llvm.floor.f32(float %mul.i.i89.i.i687.i.i.i.i.i.i.i) - %sub.i.i90.i.i688.i.i.i.i.i.i.i = fsub float %mul.i.i89.i.i687.i.i.i.i.i.i.i, %345 - %conv.i4.i91.i.i689.i.i.i.i.i.i.i = fptosi float %345 to i32 - %346 = call noundef float @llvm.fma.f32(float %sub.i.i90.i.i688.i.i.i.i.i.i.i, float 0x3FB4015920000000, float 0x3FCCF34160000000) - %347 = call noundef float @llvm.fma.f32(float %sub.i.i90.i.i688.i.i.i.i.i.i.i, float %346, float 0x3FE6420080000000) - %348 = call noundef float @llvm.fma.f32(float %sub.i.i90.i.i688.i.i.i.i.i.i.i, float %347, float 1.000000e+00) + %shr3.i.i.i.i602.i.i.i.i.i.i.i = xor i64 %341, %342 + %conv.i.i.i.i603.i.i.i.i.i.i.i = trunc i64 %shr3.i.i.i.i602.i.i.i.i.i.i.i to i32 + %shr4.i.i.i.i604.i.i.i.i.i.i.i = lshr i64 %339, 59 + %conv5.i.i.i.i605.i.i.i.i.i.i.i = trunc i64 %shr4.i.i.i.i604.i.i.i.i.i.i.i to i32 + %or.i.i56.i.i606.i.i.i.i.i.i.i = call noundef i32 @llvm.fshr.i32(i32 %conv.i.i.i.i603.i.i.i.i.i.i.i, i32 %conv.i.i.i.i603.i.i.i.i.i.i.i, i32 %conv5.i.i.i.i605.i.i.i.i.i.i.i) + %conv.i.i.i607.i.i.i.i.i.i.i = uitofp i32 %or.i.i56.i.i606.i.i.i.i.i.i.i to float + %mul.i57.i.i608.i.i.i.i.i.i.i = fmul float %conv.i.i.i607.i.i.i.i.i.i.i, 0x3DF0000000000000 + %cmp.i.i58.i.i609.i.i.i.i.i.i.i = fcmp olt float %mul.i57.i.i608.i.i.i.i.i.i.i, 0x3FEFFFFFE0000000 + %.sroa.speculated.i.i.i610.i.i.i.i.i.i.i = select i1 %cmp.i.i58.i.i609.i.i.i.i.i.i.i, float %mul.i57.i.i608.i.i.i.i.i.i.i, float 0x3FEFFFFFE0000000 + %cmp55.i.i611.i.i.i.i.i.i.i = fcmp olt float %add.i.i599.i.i.i.i.i.i.i, %seg.sroa.4.0.copyload.i.i590.i.i.i.i.i.i.i + br i1 %cmp55.i.i611.i.i.i.i.i.i.i, label %invoke.cont61.i.i660.i.i.i.i.i.i.i, label %invoke.cont103.i.i612.i.i.i.i.i.i.i + +invoke.cont61.i.i660.i.i.i.i.i.i.i: ; preds = %invoke.cont52.i.i595.i.i.i.i.i.i.i + %sub59.i.i661.i.i.i.i.i.i.i = fsub float %add.i.i599.i.i.i.i.i.i.i, %tMin38.0.i.i.i.i.i.i.i.i.i + %fneg60.i.i662.i.i.i.i.i.i.i = fneg float %sub59.i.i661.i.i.i.i.i.i.i + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i.i69.i.i508.i.i.i.i.i.i.i) + store <2 x float> %seg.sroa.7.0.copyload.i.i591.i.i.i.i.i.i.i, ptr %retval.i.i69.i.i508.i.i.i.i.i.i.i, align 8 + store <2 x float> %seg.sroa.13.0.copyload.i.i592.i.i.i.i.i.i.i, ptr %seg.sroa.13.8.retval.i.i69.sroa_idx.i.i569.i.i.i.i.i.i.i, align 8 + br label %for.body.i.i70.i.i663.i.i.i.i.i.i.i + +for.body.i.i70.i.i663.i.i.i.i.i.i.i: ; preds = %for.body.i.i70.i.i663.i.i.i.i.i.i.i, %invoke.cont61.i.i660.i.i.i.i.i.i.i + %indvars.iv.i.i71.i.i664.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont61.i.i660.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i74.i.i667.i.i.i.i.i.i.i, %for.body.i.i70.i.i663.i.i.i.i.i.i.i ] + %arrayidx.i.i.i72.i.i665.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i69.i.i508.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i71.i.i664.i.i.i.i.i.i.i + %343 = load float, ptr %arrayidx.i.i.i72.i.i665.i.i.i.i.i.i.i, align 4 + %mul.i.i73.i.i666.i.i.i.i.i.i.i = fmul float %343, %fneg60.i.i662.i.i.i.i.i.i.i + store float %mul.i.i73.i.i666.i.i.i.i.i.i.i, ptr %arrayidx.i.i.i72.i.i665.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i.i74.i.i667.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i71.i.i664.i.i.i.i.i.i.i, 1 + %exitcond.not.i.i75.i.i668.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i74.i.i667.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i.i75.i.i668.i.i.i.i.i.i.i, label %invoke.cont64.i.i669.i.i.i.i.i.i.i, label %for.body.i.i70.i.i663.i.i.i.i.i.i.i, !llvm.loop !110 + +invoke.cont64.i.i669.i.i.i.i.i.i.i: ; preds = %for.body.i.i70.i.i663.i.i.i.i.i.i.i + %.fca.0.load.i.i76.i.i670.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i.i69.i.i508.i.i.i.i.i.i.i, align 8 + %.fca.1.load.i.i79.i.i671.i.i.i.i.i.i.i = load <2 x float>, ptr %seg.sroa.13.8.retval.i.i69.sroa_idx.i.i569.i.i.i.i.i.i.i, align 8 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i.i69.i.i508.i.i.i.i.i.i.i) + store <2 x float> %.fca.0.load.i.i76.i.i670.i.i.i.i.i.i.i, ptr %ref.tmp58.i.i518.i.i.i.i.i.i.i, align 8 + store <2 x float> %.fca.1.load.i.i79.i.i671.i.i.i.i.i.i.i, ptr %44, align 8 + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i82.i.i507.i.i.i.i.i.i.i) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i82.i.i507.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) + br label %for.body.i83.i.i672.i.i.i.i.i.i.i + +for.body.i83.i.i672.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i100.i.i689.i.i.i.i.i.i.i, %invoke.cont64.i.i669.i.i.i.i.i.i.i + %indvars.iv.i84.i.i673.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont64.i.i669.i.i.i.i.i.i.i ], [ %indvars.iv.next.i103.i.i692.i.i.i.i.i.i.i, %_ZN4pbrt7FastExpEf.exit.i100.i.i689.i.i.i.i.i.i.i ] + %arrayidx.i.i.i85.i.i674.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp58.i.i518.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i84.i.i673.i.i.i.i.i.i.i + %344 = load float, ptr %arrayidx.i.i.i85.i.i674.i.i.i.i.i.i.i, align 4 + %mul.i.i86.i.i675.i.i.i.i.i.i.i = fmul float %344, 0x3FF7154760000000 + %345 = call noundef float @llvm.floor.f32(float %mul.i.i86.i.i675.i.i.i.i.i.i.i) + %sub.i.i87.i.i676.i.i.i.i.i.i.i = fsub float %mul.i.i86.i.i675.i.i.i.i.i.i.i, %345 + %conv.i4.i88.i.i677.i.i.i.i.i.i.i = fptosi float %345 to i32 + %346 = call noundef float @llvm.fma.f32(float %sub.i.i87.i.i676.i.i.i.i.i.i.i, float 0x3FB4015920000000, float 0x3FCCF34160000000) + %347 = call noundef float @llvm.fma.f32(float %sub.i.i87.i.i676.i.i.i.i.i.i.i, float %346, float 0x3FE6420080000000) + %348 = call noundef float @llvm.fma.f32(float %sub.i.i87.i.i676.i.i.i.i.i.i.i, float %347, float 1.000000e+00) %349 = bitcast float %348 to i32 - %shr.i.i.i92.i.i690.i.i.i.i.i.i.i = lshr i32 %349, 23 - %sub.i.i.i93.i.i691.i.i.i.i.i.i.i = add i32 %conv.i4.i91.i.i689.i.i.i.i.i.i.i, -127 - %add.i.i94.i.i692.i.i.i.i.i.i.i = add i32 %sub.i.i.i93.i.i691.i.i.i.i.i.i.i, %shr.i.i.i92.i.i690.i.i.i.i.i.i.i - %cmp.i.i95.i.i693.i.i.i.i.i.i.i = icmp slt i32 %add.i.i94.i.i692.i.i.i.i.i.i.i, -126 - br i1 %cmp.i.i95.i.i693.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i103.i.i701.i.i.i.i.i.i.i, label %if.end.i.i96.i.i694.i.i.i.i.i.i.i - -if.end.i.i96.i.i694.i.i.i.i.i.i.i: ; preds = %for.body.i86.i.i684.i.i.i.i.i.i.i - %cmp3.i.i97.i.i695.i.i.i.i.i.i.i = icmp sgt i32 %add.i.i94.i.i692.i.i.i.i.i.i.i, 127 - br i1 %cmp3.i.i97.i.i695.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i103.i.i701.i.i.i.i.i.i.i, label %if.end5.i.i98.i.i696.i.i.i.i.i.i.i - -if.end5.i.i98.i.i696.i.i.i.i.i.i.i: ; preds = %if.end.i.i96.i.i694.i.i.i.i.i.i.i - %and.i.i99.i.i697.i.i.i.i.i.i.i = and i32 %349, -2139095041 - %add7.i.i100.i.i698.i.i.i.i.i.i.i = shl nsw i32 %add.i.i94.i.i692.i.i.i.i.i.i.i, 23 - %shl.i.i101.i.i699.i.i.i.i.i.i.i = add i32 %add7.i.i100.i.i698.i.i.i.i.i.i.i, 1065353216 - %or.i.i102.i.i700.i.i.i.i.i.i.i = or i32 %shl.i.i101.i.i699.i.i.i.i.i.i.i, %and.i.i99.i.i697.i.i.i.i.i.i.i - %350 = bitcast i32 %or.i.i102.i.i700.i.i.i.i.i.i.i to float - br label %_ZN4pbrt7FastExpEf.exit.i103.i.i701.i.i.i.i.i.i.i - -_ZN4pbrt7FastExpEf.exit.i103.i.i701.i.i.i.i.i.i.i: ; preds = %if.end5.i.i98.i.i696.i.i.i.i.i.i.i, %if.end.i.i96.i.i694.i.i.i.i.i.i.i, %for.body.i86.i.i684.i.i.i.i.i.i.i - %retval.0.i.i104.i.i702.i.i.i.i.i.i.i = phi float [ %350, %if.end5.i.i98.i.i696.i.i.i.i.i.i.i ], [ 0.000000e+00, %for.body.i86.i.i684.i.i.i.i.i.i.i ], [ 0x7FF0000000000000, %if.end.i.i96.i.i694.i.i.i.i.i.i.i ] - %arrayidx.i.i6.i105.i.i703.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i85.i.i515.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i87.i.i685.i.i.i.i.i.i.i - store float %retval.0.i.i104.i.i702.i.i.i.i.i.i.i, ptr %arrayidx.i.i6.i105.i.i703.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i106.i.i704.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i87.i.i685.i.i.i.i.i.i.i, 1 - %exitcond.not.i107.i.i705.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i106.i.i704.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i107.i.i705.i.i.i.i.i.i.i, label %invoke.cont68.i.i706.i.i.i.i.i.i.i, label %for.body.i86.i.i684.i.i.i.i.i.i.i, !llvm.loop !111 - -invoke.cont68.i.i706.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i103.i.i701.i.i.i.i.i.i.i - %.fca.0.load.i108.i.i707.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i85.i.i515.i.i.i.i.i.i.i, align 8 - %.fca.1.load.i111.i.i708.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i110.i.i578.i.i.i.i.i.i.i, align 8 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i85.i.i515.i.i.i.i.i.i.i) - store <2 x float> %.fca.0.load.i108.i.i707.i.i.i.i.i.i.i, ptr %ref.tmp57.i.i525.i.i.i.i.i.i.i, align 8 - store <2 x float> %.fca.1.load.i111.i.i708.i.i.i.i.i.i.i, ptr %45, align 8 - br label %for.body.i114.i.i709.i.i.i.i.i.i.i - -for.body.i114.i.i709.i.i.i.i.i.i.i: ; preds = %for.body.i114.i.i709.i.i.i.i.i.i.i, %invoke.cont68.i.i706.i.i.i.i.i.i.i - %indvars.iv.i115.i.i710.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont68.i.i706.i.i.i.i.i.i.i ], [ %indvars.iv.next.i119.i.i714.i.i.i.i.i.i.i, %for.body.i114.i.i709.i.i.i.i.i.i.i ] - %arrayidx.i.i116.i.i711.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp57.i.i525.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i115.i.i710.i.i.i.i.i.i.i - %351 = load float, ptr %arrayidx.i.i116.i.i711.i.i.i.i.i.i.i, align 4 - %arrayidx.i4.i117.i.i712.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %T_maj.i.i522.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i115.i.i710.i.i.i.i.i.i.i - %352 = load float, ptr %arrayidx.i4.i117.i.i712.i.i.i.i.i.i.i, align 4 - %mul.i118.i.i713.i.i.i.i.i.i.i = fmul float %351, %352 - store float %mul.i118.i.i713.i.i.i.i.i.i.i, ptr %arrayidx.i4.i117.i.i712.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i119.i.i714.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i115.i.i710.i.i.i.i.i.i.i, 1 - %exitcond.not.i120.i.i715.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i119.i.i714.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i120.i.i715.i.i.i.i.i.i.i, label %invoke.cont75.i.i716.i.i.i.i.i.i.i, label %for.body.i114.i.i709.i.i.i.i.i.i.i, !llvm.loop !112 - -invoke.cont75.i.i716.i.i.i.i.i.i.i: ; preds = %for.body.i114.i.i709.i.i.i.i.i.i.i - %353 = insertelement <2 x float> poison, float %add.i.i607.i.i.i.i.i.i.i, i64 0 + %shr.i.i.i89.i.i678.i.i.i.i.i.i.i = lshr i32 %349, 23 + %sub.i.i.i90.i.i679.i.i.i.i.i.i.i = add i32 %conv.i4.i88.i.i677.i.i.i.i.i.i.i, -127 + %add.i.i91.i.i680.i.i.i.i.i.i.i = add i32 %sub.i.i.i90.i.i679.i.i.i.i.i.i.i, %shr.i.i.i89.i.i678.i.i.i.i.i.i.i + %cmp.i.i92.i.i681.i.i.i.i.i.i.i = icmp slt i32 %add.i.i91.i.i680.i.i.i.i.i.i.i, -126 + br i1 %cmp.i.i92.i.i681.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i100.i.i689.i.i.i.i.i.i.i, label %if.end.i.i93.i.i682.i.i.i.i.i.i.i + +if.end.i.i93.i.i682.i.i.i.i.i.i.i: ; preds = %for.body.i83.i.i672.i.i.i.i.i.i.i + %cmp3.i.i94.i.i683.i.i.i.i.i.i.i = icmp sgt i32 %add.i.i91.i.i680.i.i.i.i.i.i.i, 127 + br i1 %cmp3.i.i94.i.i683.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i100.i.i689.i.i.i.i.i.i.i, label %if.end5.i.i95.i.i684.i.i.i.i.i.i.i + +if.end5.i.i95.i.i684.i.i.i.i.i.i.i: ; preds = %if.end.i.i93.i.i682.i.i.i.i.i.i.i + %and.i.i96.i.i685.i.i.i.i.i.i.i = and i32 %349, -2139095041 + %add7.i.i97.i.i686.i.i.i.i.i.i.i = shl nsw i32 %add.i.i91.i.i680.i.i.i.i.i.i.i, 23 + %shl.i.i98.i.i687.i.i.i.i.i.i.i = add i32 %add7.i.i97.i.i686.i.i.i.i.i.i.i, 1065353216 + %or.i.i99.i.i688.i.i.i.i.i.i.i = or i32 %shl.i.i98.i.i687.i.i.i.i.i.i.i, %and.i.i96.i.i685.i.i.i.i.i.i.i + %350 = bitcast i32 %or.i.i99.i.i688.i.i.i.i.i.i.i to float + br label %_ZN4pbrt7FastExpEf.exit.i100.i.i689.i.i.i.i.i.i.i + +_ZN4pbrt7FastExpEf.exit.i100.i.i689.i.i.i.i.i.i.i: ; preds = %if.end5.i.i95.i.i684.i.i.i.i.i.i.i, %if.end.i.i93.i.i682.i.i.i.i.i.i.i, %for.body.i83.i.i672.i.i.i.i.i.i.i + %retval.0.i.i101.i.i690.i.i.i.i.i.i.i = phi float [ %350, %if.end5.i.i95.i.i684.i.i.i.i.i.i.i ], [ 0.000000e+00, %for.body.i83.i.i672.i.i.i.i.i.i.i ], [ 0x7FF0000000000000, %if.end.i.i93.i.i682.i.i.i.i.i.i.i ] + %arrayidx.i.i6.i102.i.i691.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i82.i.i507.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i84.i.i673.i.i.i.i.i.i.i + store float %retval.0.i.i101.i.i690.i.i.i.i.i.i.i, ptr %arrayidx.i.i6.i102.i.i691.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i103.i.i692.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i84.i.i673.i.i.i.i.i.i.i, 1 + %exitcond.not.i104.i.i693.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i103.i.i692.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i104.i.i693.i.i.i.i.i.i.i, label %invoke.cont68.i.i694.i.i.i.i.i.i.i, label %for.body.i83.i.i672.i.i.i.i.i.i.i, !llvm.loop !111 + +invoke.cont68.i.i694.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i100.i.i689.i.i.i.i.i.i.i + %.fca.0.load.i105.i.i695.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i82.i.i507.i.i.i.i.i.i.i, align 8 + %.fca.1.load.i108.i.i696.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i107.i.i570.i.i.i.i.i.i.i, align 8 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i82.i.i507.i.i.i.i.i.i.i) + store <2 x float> %.fca.0.load.i105.i.i695.i.i.i.i.i.i.i, ptr %ref.tmp57.i.i517.i.i.i.i.i.i.i, align 8 + store <2 x float> %.fca.1.load.i108.i.i696.i.i.i.i.i.i.i, ptr %45, align 8 + br label %for.body.i111.i.i697.i.i.i.i.i.i.i + +for.body.i111.i.i697.i.i.i.i.i.i.i: ; preds = %for.body.i111.i.i697.i.i.i.i.i.i.i, %invoke.cont68.i.i694.i.i.i.i.i.i.i + %indvars.iv.i112.i.i698.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont68.i.i694.i.i.i.i.i.i.i ], [ %indvars.iv.next.i116.i.i702.i.i.i.i.i.i.i, %for.body.i111.i.i697.i.i.i.i.i.i.i ] + %arrayidx.i.i113.i.i699.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp57.i.i517.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i112.i.i698.i.i.i.i.i.i.i + %351 = load float, ptr %arrayidx.i.i113.i.i699.i.i.i.i.i.i.i, align 4 + %arrayidx.i4.i114.i.i700.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %T_maj.i.i514.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i112.i.i698.i.i.i.i.i.i.i + %352 = load float, ptr %arrayidx.i4.i114.i.i700.i.i.i.i.i.i.i, align 4 + %mul.i115.i.i701.i.i.i.i.i.i.i = fmul float %351, %352 + store float %mul.i115.i.i701.i.i.i.i.i.i.i, ptr %arrayidx.i4.i114.i.i700.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i116.i.i702.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i112.i.i698.i.i.i.i.i.i.i, 1 + %exitcond.not.i117.i.i703.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i116.i.i702.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i117.i.i703.i.i.i.i.i.i.i, label %invoke.cont75.i.i704.i.i.i.i.i.i.i, label %for.body.i111.i.i697.i.i.i.i.i.i.i, !llvm.loop !112 + +invoke.cont75.i.i704.i.i.i.i.i.i.i: ; preds = %for.body.i111.i.i697.i.i.i.i.i.i.i + %353 = insertelement <2 x float> poison, float %add.i.i599.i.i.i.i.i.i.i, i64 0 %354 = shufflevector <2 x float> %353, <2 x float> poison, <2 x i32> zeroinitializer %355 = fmul <2 x float> %322, %354 - %mul3.i.i.i.i719.i.i.i.i.i.i.i = fmul float %div3.i.i.i.i556.i.i.i.i.i.i.i, %add.i.i607.i.i.i.i.i.i.i - %356 = fadd <2 x float> %ray.sroa.0.0347.i.i.i.i, %355 - %add6.i.i.i.i722.i.i.i.i.i.i.i = fadd float %ray.sroa.9.0348.i.i.i.i, %mul3.i.i.i.i719.i.i.i.i.i.i.i - call void @_ZNK4pbrt11CloudMedium11SamplePointENS_6Point3IfEERKNS_18SampledWavelengthsE(ptr nonnull sret(%"struct.pbrt::MediumProperties") align 8 %mp.i.i527.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(252) %323, <2 x float> %356, float %add6.i.i.i.i722.i.i.i.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(32) %lambda.i.i.i.i) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp85.i.i528.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(32) %mp.i.i527.i.i.i.i.i.i.i, i64 32, i1 false) - %357 = load i64, ptr %phase3.i.i.i580.i.i.i.i.i.i.i, align 8 - store i64 %357, ptr %phase.i.i.i579.i.i.i.i.i.i.i, align 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %Le.i.i.i581.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %Le4.i.i.i582.i.i.i.i.i.i.i, i64 16, i1 false) - %agg.tmp91.sroa.0.0.copyload.i.i725.i.i.i.i.i.i.i = load <2 x float>, ptr %T_maj.i.i522.i.i.i.i.i.i.i, align 8 - %agg.tmp91.sroa.2.0.copyload.i.i726.i.i.i.i.i.i.i = load <2 x float>, ptr %agg.tmp91.sroa.2.0.T_maj.sroa_idx.i.i583.i.i.i.i.i.i.i, align 8 - %call93.i.i727.i.i.i.i.i.i.i = call fastcc noundef zeroext i1 @"_ZZN4pbrt18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS1_17IntersectShadowTrEiS5_S9_ENKSA_clEiEUlNS_6Point3IfEEE_EEvS3_S9_T_T0_ENKUlSE_NS_16MediumPropertiesENS_15SampledSpectrumESJ_E_clESE_SI_SJ_SJ_"(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp21.i532.i.i.i.i.i.i.i, ptr noundef nonnull %agg.tmp85.i.i528.i.i.i.i.i.i.i, <2 x float> %seg.sroa.7.0.copyload.i.i599.i.i.i.i.i.i.i, <2 x float> %seg.sroa.13.0.copyload.i.i600.i.i.i.i.i.i.i, <2 x float> %agg.tmp91.sroa.0.0.copyload.i.i725.i.i.i.i.i.i.i, <2 x float> %agg.tmp91.sroa.2.0.copyload.i.i726.i.i.i.i.i.i.i) - br i1 %call93.i.i727.i.i.i.i.i.i.i, label %if.end95.i.i734.i.i.i.i.i.i.i, label %while.end125.i.i728.i.i.i.i.i.i.i - -if.end95.i.i734.i.i.i.i.i.i.i: ; preds = %invoke.cont75.i.i716.i.i.i.i.i.i.i - call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %ref.tmp96.i.i529.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) - br label %for.body.i.i144.i.i735.i.i.i.i.i.i.i - -for.body.i.i144.i.i735.i.i.i.i.i.i.i: ; preds = %for.body.i.i144.i.i735.i.i.i.i.i.i.i, %if.end95.i.i734.i.i.i.i.i.i.i - %indvars.iv.i.i145.i.i736.i.i.i.i.i.i.i = phi i64 [ 0, %if.end95.i.i734.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i147.i.i738.i.i.i.i.i.i.i, %for.body.i.i144.i.i735.i.i.i.i.i.i.i ] - %arrayidx.i.i146.i.i737.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp96.i.i529.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i145.i.i736.i.i.i.i.i.i.i - store float 1.000000e+00, ptr %arrayidx.i.i146.i.i737.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i.i147.i.i738.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i145.i.i736.i.i.i.i.i.i.i, 1 - %exitcond.not.i.i148.i.i739.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i147.i.i738.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i.i148.i.i739.i.i.i.i.i.i.i, label %invoke.cont97.i.i740.i.i.i.i.i.i.i, label %for.body.i.i144.i.i735.i.i.i.i.i.i.i, !llvm.loop !103 - -invoke.cont97.i.i740.i.i.i.i.i.i.i: ; preds = %for.body.i.i144.i.i735.i.i.i.i.i.i.i - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %T_maj.i.i522.i.i.i.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(16) %ref.tmp96.i.i529.i.i.i.i.i.i.i, i64 16, i1 false) - br label %invoke.cont52.i.i603.i.i.i.i.i.i.i, !llvm.loop !124 - -invoke.cont103.i.i624.i.i.i.i.i.i.i: ; preds = %invoke.cont52.i.i603.i.i.i.i.i.i.i - %sub102.i.i625.i.i.i.i.i.i.i = fsub float %seg.sroa.4.0.copyload.i.i598.i.i.i.i.i.i.i, %tMin38.0.i.i.i.i.i.i.i.i.i - %358 = call float @llvm.fabs.f32(float %sub102.i.i625.i.i.i.i.i.i.i) + %mul3.i.i.i.i707.i.i.i.i.i.i.i = fmul float %div3.i.i.i.i548.i.i.i.i.i.i.i, %add.i.i599.i.i.i.i.i.i.i + %356 = fadd <2 x float> %ray.sroa.0.0346.i.i.i.i, %355 + %add6.i.i.i.i710.i.i.i.i.i.i.i = fadd float %ray.sroa.9.0347.i.i.i.i, %mul3.i.i.i.i707.i.i.i.i.i.i.i + call void @_ZNK4pbrt11CloudMedium11SamplePointENS_6Point3IfEERKNS_18SampledWavelengthsE(ptr nonnull sret(%"struct.pbrt::MediumProperties") align 8 %mp.i.i519.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(252) %323, <2 x float> %356, float %add6.i.i.i.i710.i.i.i.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(32) %lambda.i.i.i.i) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp85.i.i520.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(32) %mp.i.i519.i.i.i.i.i.i.i, i64 32, i1 false) + %357 = load i64, ptr %phase3.i.i.i572.i.i.i.i.i.i.i, align 8 + store i64 %357, ptr %phase.i.i.i571.i.i.i.i.i.i.i, align 8 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %Le.i.i.i573.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %Le4.i.i.i574.i.i.i.i.i.i.i, i64 16, i1 false) + %agg.tmp91.sroa.0.0.copyload.i.i713.i.i.i.i.i.i.i = load <2 x float>, ptr %T_maj.i.i514.i.i.i.i.i.i.i, align 8 + %agg.tmp91.sroa.2.0.copyload.i.i714.i.i.i.i.i.i.i = load <2 x float>, ptr %agg.tmp91.sroa.2.0.T_maj.sroa_idx.i.i575.i.i.i.i.i.i.i, align 8 + %call93.i.i715.i.i.i.i.i.i.i = call fastcc noundef zeroext i1 @"_ZZN4pbrt18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS1_17IntersectShadowTrEiS5_S9_ENKSA_clEiEUlNS_6Point3IfEEE_EEvS3_S9_T_T0_ENKUlSE_NS_16MediumPropertiesENS_15SampledSpectrumESJ_E_clESE_SI_SJ_SJ_"(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp21.i524.i.i.i.i.i.i.i, ptr noundef nonnull %agg.tmp85.i.i520.i.i.i.i.i.i.i, <2 x float> %seg.sroa.7.0.copyload.i.i591.i.i.i.i.i.i.i, <2 x float> %seg.sroa.13.0.copyload.i.i592.i.i.i.i.i.i.i, <2 x float> %agg.tmp91.sroa.0.0.copyload.i.i713.i.i.i.i.i.i.i, <2 x float> %agg.tmp91.sroa.2.0.copyload.i.i714.i.i.i.i.i.i.i) + br i1 %call93.i.i715.i.i.i.i.i.i.i, label %if.end95.i.i722.i.i.i.i.i.i.i, label %while.end125.i.i716.i.i.i.i.i.i.i + +if.end95.i.i722.i.i.i.i.i.i.i: ; preds = %invoke.cont75.i.i704.i.i.i.i.i.i.i + call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %ref.tmp96.i.i521.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) + br label %for.body.i.i141.i.i723.i.i.i.i.i.i.i + +for.body.i.i141.i.i723.i.i.i.i.i.i.i: ; preds = %for.body.i.i141.i.i723.i.i.i.i.i.i.i, %if.end95.i.i722.i.i.i.i.i.i.i + %indvars.iv.i.i142.i.i724.i.i.i.i.i.i.i = phi i64 [ 0, %if.end95.i.i722.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i144.i.i726.i.i.i.i.i.i.i, %for.body.i.i141.i.i723.i.i.i.i.i.i.i ] + %arrayidx.i.i143.i.i725.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp96.i.i521.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i142.i.i724.i.i.i.i.i.i.i + store float 1.000000e+00, ptr %arrayidx.i.i143.i.i725.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i.i144.i.i726.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i142.i.i724.i.i.i.i.i.i.i, 1 + %exitcond.not.i.i145.i.i727.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i144.i.i726.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i.i145.i.i727.i.i.i.i.i.i.i, label %invoke.cont97.i.i728.i.i.i.i.i.i.i, label %for.body.i.i141.i.i723.i.i.i.i.i.i.i, !llvm.loop !103 + +invoke.cont97.i.i728.i.i.i.i.i.i.i: ; preds = %for.body.i.i141.i.i723.i.i.i.i.i.i.i + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %T_maj.i.i514.i.i.i.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(16) %ref.tmp96.i.i521.i.i.i.i.i.i.i, i64 16, i1 false) + br label %invoke.cont52.i.i595.i.i.i.i.i.i.i, !llvm.loop !124 + +invoke.cont103.i.i612.i.i.i.i.i.i.i: ; preds = %invoke.cont52.i.i595.i.i.i.i.i.i.i + %sub102.i.i613.i.i.i.i.i.i.i = fsub float %seg.sroa.4.0.copyload.i.i590.i.i.i.i.i.i.i, %tMin38.0.i.i.i.i.i.i.i.i.i + %358 = call float @llvm.fabs.f32(float %sub102.i.i613.i.i.i.i.i.i.i) %359 = fcmp oeq float %358, 0x7FF0000000000000 - %dt98.0.i.i626.i.i.i.i.i.i.i = select i1 %359, float 0x47EFFFFFE0000000, float %sub102.i.i625.i.i.i.i.i.i.i - %fneg110.i.i627.i.i.i.i.i.i.i = fneg float %dt98.0.i.i626.i.i.i.i.i.i.i - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i.i160.i.i514.i.i.i.i.i.i.i) - store <2 x float> %seg.sroa.7.0.copyload.i.i599.i.i.i.i.i.i.i, ptr %retval.i.i160.i.i514.i.i.i.i.i.i.i, align 8 - store <2 x float> %seg.sroa.13.0.copyload.i.i600.i.i.i.i.i.i.i, ptr %seg.sroa.13.8.retval.i.i160.sroa_idx.i.i584.i.i.i.i.i.i.i, align 8 - br label %for.body.i.i161.i.i628.i.i.i.i.i.i.i - -for.body.i.i161.i.i628.i.i.i.i.i.i.i: ; preds = %for.body.i.i161.i.i628.i.i.i.i.i.i.i, %invoke.cont103.i.i624.i.i.i.i.i.i.i - %indvars.iv.i.i162.i.i629.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont103.i.i624.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i165.i.i632.i.i.i.i.i.i.i, %for.body.i.i161.i.i628.i.i.i.i.i.i.i ] - %arrayidx.i.i.i163.i.i630.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i160.i.i514.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i162.i.i629.i.i.i.i.i.i.i - %360 = load float, ptr %arrayidx.i.i.i163.i.i630.i.i.i.i.i.i.i, align 4 - %mul.i.i164.i.i631.i.i.i.i.i.i.i = fmul float %360, %fneg110.i.i627.i.i.i.i.i.i.i - store float %mul.i.i164.i.i631.i.i.i.i.i.i.i, ptr %arrayidx.i.i.i163.i.i630.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i.i165.i.i632.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i162.i.i629.i.i.i.i.i.i.i, 1 - %exitcond.not.i.i166.i.i633.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i165.i.i632.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i.i166.i.i633.i.i.i.i.i.i.i, label %invoke.cont114.i.i634.i.i.i.i.i.i.i, label %for.body.i.i161.i.i628.i.i.i.i.i.i.i, !llvm.loop !110 - -invoke.cont114.i.i634.i.i.i.i.i.i.i: ; preds = %for.body.i.i161.i.i628.i.i.i.i.i.i.i - %.fca.0.load.i.i167.i.i635.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i.i160.i.i514.i.i.i.i.i.i.i, align 8 - %.fca.1.load.i.i170.i.i636.i.i.i.i.i.i.i = load <2 x float>, ptr %seg.sroa.13.8.retval.i.i160.sroa_idx.i.i584.i.i.i.i.i.i.i, align 8 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i.i160.i.i514.i.i.i.i.i.i.i) - store <2 x float> %.fca.0.load.i.i167.i.i635.i.i.i.i.i.i.i, ptr %ref.tmp109.i.i531.i.i.i.i.i.i.i, align 8 - store <2 x float> %.fca.1.load.i.i170.i.i636.i.i.i.i.i.i.i, ptr %46, align 8 - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i173.i.i513.i.i.i.i.i.i.i) - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i173.i.i513.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) - br label %for.body.i174.i.i637.i.i.i.i.i.i.i - -for.body.i174.i.i637.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i191.i.i654.i.i.i.i.i.i.i, %invoke.cont114.i.i634.i.i.i.i.i.i.i - %indvars.iv.i175.i.i638.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont114.i.i634.i.i.i.i.i.i.i ], [ %indvars.iv.next.i194.i.i657.i.i.i.i.i.i.i, %_ZN4pbrt7FastExpEf.exit.i191.i.i654.i.i.i.i.i.i.i ] - %arrayidx.i.i.i176.i.i639.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp109.i.i531.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i175.i.i638.i.i.i.i.i.i.i - %361 = load float, ptr %arrayidx.i.i.i176.i.i639.i.i.i.i.i.i.i, align 4 - %mul.i.i177.i.i640.i.i.i.i.i.i.i = fmul float %361, 0x3FF7154760000000 - %362 = call noundef float @llvm.floor.f32(float %mul.i.i177.i.i640.i.i.i.i.i.i.i) - %sub.i.i178.i.i641.i.i.i.i.i.i.i = fsub float %mul.i.i177.i.i640.i.i.i.i.i.i.i, %362 - %conv.i4.i179.i.i642.i.i.i.i.i.i.i = fptosi float %362 to i32 - %363 = call noundef float @llvm.fma.f32(float %sub.i.i178.i.i641.i.i.i.i.i.i.i, float 0x3FB4015920000000, float 0x3FCCF34160000000) - %364 = call noundef float @llvm.fma.f32(float %sub.i.i178.i.i641.i.i.i.i.i.i.i, float %363, float 0x3FE6420080000000) - %365 = call noundef float @llvm.fma.f32(float %sub.i.i178.i.i641.i.i.i.i.i.i.i, float %364, float 1.000000e+00) + %dt98.0.i.i614.i.i.i.i.i.i.i = select i1 %359, float 0x47EFFFFFE0000000, float %sub102.i.i613.i.i.i.i.i.i.i + %fneg110.i.i615.i.i.i.i.i.i.i = fneg float %dt98.0.i.i614.i.i.i.i.i.i.i + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i.i157.i.i506.i.i.i.i.i.i.i) + store <2 x float> %seg.sroa.7.0.copyload.i.i591.i.i.i.i.i.i.i, ptr %retval.i.i157.i.i506.i.i.i.i.i.i.i, align 8 + store <2 x float> %seg.sroa.13.0.copyload.i.i592.i.i.i.i.i.i.i, ptr %seg.sroa.13.8.retval.i.i157.sroa_idx.i.i576.i.i.i.i.i.i.i, align 8 + br label %for.body.i.i158.i.i616.i.i.i.i.i.i.i + +for.body.i.i158.i.i616.i.i.i.i.i.i.i: ; preds = %for.body.i.i158.i.i616.i.i.i.i.i.i.i, %invoke.cont103.i.i612.i.i.i.i.i.i.i + %indvars.iv.i.i159.i.i617.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont103.i.i612.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i162.i.i620.i.i.i.i.i.i.i, %for.body.i.i158.i.i616.i.i.i.i.i.i.i ] + %arrayidx.i.i.i160.i.i618.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i157.i.i506.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i159.i.i617.i.i.i.i.i.i.i + %360 = load float, ptr %arrayidx.i.i.i160.i.i618.i.i.i.i.i.i.i, align 4 + %mul.i.i161.i.i619.i.i.i.i.i.i.i = fmul float %360, %fneg110.i.i615.i.i.i.i.i.i.i + store float %mul.i.i161.i.i619.i.i.i.i.i.i.i, ptr %arrayidx.i.i.i160.i.i618.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i.i162.i.i620.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i159.i.i617.i.i.i.i.i.i.i, 1 + %exitcond.not.i.i163.i.i621.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i162.i.i620.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i.i163.i.i621.i.i.i.i.i.i.i, label %invoke.cont114.i.i622.i.i.i.i.i.i.i, label %for.body.i.i158.i.i616.i.i.i.i.i.i.i, !llvm.loop !110 + +invoke.cont114.i.i622.i.i.i.i.i.i.i: ; preds = %for.body.i.i158.i.i616.i.i.i.i.i.i.i + %.fca.0.load.i.i164.i.i623.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i.i157.i.i506.i.i.i.i.i.i.i, align 8 + %.fca.1.load.i.i167.i.i624.i.i.i.i.i.i.i = load <2 x float>, ptr %seg.sroa.13.8.retval.i.i157.sroa_idx.i.i576.i.i.i.i.i.i.i, align 8 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i.i157.i.i506.i.i.i.i.i.i.i) + store <2 x float> %.fca.0.load.i.i164.i.i623.i.i.i.i.i.i.i, ptr %ref.tmp109.i.i523.i.i.i.i.i.i.i, align 8 + store <2 x float> %.fca.1.load.i.i167.i.i624.i.i.i.i.i.i.i, ptr %46, align 8 + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i170.i.i505.i.i.i.i.i.i.i) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i170.i.i505.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) + br label %for.body.i171.i.i625.i.i.i.i.i.i.i + +for.body.i171.i.i625.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i188.i.i642.i.i.i.i.i.i.i, %invoke.cont114.i.i622.i.i.i.i.i.i.i + %indvars.iv.i172.i.i626.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont114.i.i622.i.i.i.i.i.i.i ], [ %indvars.iv.next.i191.i.i645.i.i.i.i.i.i.i, %_ZN4pbrt7FastExpEf.exit.i188.i.i642.i.i.i.i.i.i.i ] + %arrayidx.i.i.i173.i.i627.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp109.i.i523.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i172.i.i626.i.i.i.i.i.i.i + %361 = load float, ptr %arrayidx.i.i.i173.i.i627.i.i.i.i.i.i.i, align 4 + %mul.i.i174.i.i628.i.i.i.i.i.i.i = fmul float %361, 0x3FF7154760000000 + %362 = call noundef float @llvm.floor.f32(float %mul.i.i174.i.i628.i.i.i.i.i.i.i) + %sub.i.i175.i.i629.i.i.i.i.i.i.i = fsub float %mul.i.i174.i.i628.i.i.i.i.i.i.i, %362 + %conv.i4.i176.i.i630.i.i.i.i.i.i.i = fptosi float %362 to i32 + %363 = call noundef float @llvm.fma.f32(float %sub.i.i175.i.i629.i.i.i.i.i.i.i, float 0x3FB4015920000000, float 0x3FCCF34160000000) + %364 = call noundef float @llvm.fma.f32(float %sub.i.i175.i.i629.i.i.i.i.i.i.i, float %363, float 0x3FE6420080000000) + %365 = call noundef float @llvm.fma.f32(float %sub.i.i175.i.i629.i.i.i.i.i.i.i, float %364, float 1.000000e+00) %366 = bitcast float %365 to i32 - %shr.i.i.i180.i.i643.i.i.i.i.i.i.i = lshr i32 %366, 23 - %sub.i.i.i181.i.i644.i.i.i.i.i.i.i = add i32 %conv.i4.i179.i.i642.i.i.i.i.i.i.i, -127 - %add.i.i182.i.i645.i.i.i.i.i.i.i = add i32 %sub.i.i.i181.i.i644.i.i.i.i.i.i.i, %shr.i.i.i180.i.i643.i.i.i.i.i.i.i - %cmp.i.i183.i.i646.i.i.i.i.i.i.i = icmp slt i32 %add.i.i182.i.i645.i.i.i.i.i.i.i, -126 - br i1 %cmp.i.i183.i.i646.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i191.i.i654.i.i.i.i.i.i.i, label %if.end.i.i184.i.i647.i.i.i.i.i.i.i - -if.end.i.i184.i.i647.i.i.i.i.i.i.i: ; preds = %for.body.i174.i.i637.i.i.i.i.i.i.i - %cmp3.i.i185.i.i648.i.i.i.i.i.i.i = icmp sgt i32 %add.i.i182.i.i645.i.i.i.i.i.i.i, 127 - br i1 %cmp3.i.i185.i.i648.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i191.i.i654.i.i.i.i.i.i.i, label %if.end5.i.i186.i.i649.i.i.i.i.i.i.i - -if.end5.i.i186.i.i649.i.i.i.i.i.i.i: ; preds = %if.end.i.i184.i.i647.i.i.i.i.i.i.i - %and.i.i187.i.i650.i.i.i.i.i.i.i = and i32 %366, -2139095041 - %add7.i.i188.i.i651.i.i.i.i.i.i.i = shl nsw i32 %add.i.i182.i.i645.i.i.i.i.i.i.i, 23 - %shl.i.i189.i.i652.i.i.i.i.i.i.i = add i32 %add7.i.i188.i.i651.i.i.i.i.i.i.i, 1065353216 - %or.i.i190.i.i653.i.i.i.i.i.i.i = or i32 %shl.i.i189.i.i652.i.i.i.i.i.i.i, %and.i.i187.i.i650.i.i.i.i.i.i.i - %367 = bitcast i32 %or.i.i190.i.i653.i.i.i.i.i.i.i to float - br label %_ZN4pbrt7FastExpEf.exit.i191.i.i654.i.i.i.i.i.i.i - -_ZN4pbrt7FastExpEf.exit.i191.i.i654.i.i.i.i.i.i.i: ; preds = %if.end5.i.i186.i.i649.i.i.i.i.i.i.i, %if.end.i.i184.i.i647.i.i.i.i.i.i.i, %for.body.i174.i.i637.i.i.i.i.i.i.i - %retval.0.i.i192.i.i655.i.i.i.i.i.i.i = phi float [ %367, %if.end5.i.i186.i.i649.i.i.i.i.i.i.i ], [ 0.000000e+00, %for.body.i174.i.i637.i.i.i.i.i.i.i ], [ 0x7FF0000000000000, %if.end.i.i184.i.i647.i.i.i.i.i.i.i ] - %arrayidx.i.i6.i193.i.i656.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i173.i.i513.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i175.i.i638.i.i.i.i.i.i.i - store float %retval.0.i.i192.i.i655.i.i.i.i.i.i.i, ptr %arrayidx.i.i6.i193.i.i656.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i194.i.i657.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i175.i.i638.i.i.i.i.i.i.i, 1 - %exitcond.not.i195.i.i658.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i194.i.i657.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i195.i.i658.i.i.i.i.i.i.i, label %invoke.cont118.i.i659.i.i.i.i.i.i.i, label %for.body.i174.i.i637.i.i.i.i.i.i.i, !llvm.loop !111 - -invoke.cont118.i.i659.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i191.i.i654.i.i.i.i.i.i.i - %.fca.0.load.i196.i.i660.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i173.i.i513.i.i.i.i.i.i.i, align 8 - %.fca.1.load.i199.i.i661.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i198.i.i585.i.i.i.i.i.i.i, align 8 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i173.i.i513.i.i.i.i.i.i.i) - store <2 x float> %.fca.0.load.i196.i.i660.i.i.i.i.i.i.i, ptr %ref.tmp108.i.i530.i.i.i.i.i.i.i, align 8 - store <2 x float> %.fca.1.load.i199.i.i661.i.i.i.i.i.i.i, ptr %47, align 8 - br label %for.body.i202.i.i662.i.i.i.i.i.i.i - -for.body.i202.i.i662.i.i.i.i.i.i.i: ; preds = %for.body.i202.i.i662.i.i.i.i.i.i.i, %invoke.cont118.i.i659.i.i.i.i.i.i.i - %indvars.iv.i203.i.i663.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont118.i.i659.i.i.i.i.i.i.i ], [ %indvars.iv.next.i207.i.i667.i.i.i.i.i.i.i, %for.body.i202.i.i662.i.i.i.i.i.i.i ] - %arrayidx.i.i204.i.i664.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp108.i.i530.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i203.i.i663.i.i.i.i.i.i.i - %368 = load float, ptr %arrayidx.i.i204.i.i664.i.i.i.i.i.i.i, align 4 - %arrayidx.i4.i205.i.i665.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %T_maj.i.i522.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i203.i.i663.i.i.i.i.i.i.i - %369 = load float, ptr %arrayidx.i4.i205.i.i665.i.i.i.i.i.i.i, align 4 - %mul.i206.i.i666.i.i.i.i.i.i.i = fmul float %368, %369 - store float %mul.i206.i.i666.i.i.i.i.i.i.i, ptr %arrayidx.i4.i205.i.i665.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i207.i.i667.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i203.i.i663.i.i.i.i.i.i.i, 1 - %exitcond.not.i208.i.i668.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i207.i.i667.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i208.i.i668.i.i.i.i.i.i.i, label %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.i.i669.i.i.i.i.i.i.i, label %for.body.i202.i.i662.i.i.i.i.i.i.i, !llvm.loop !112 - -_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.thread.i.i589.i.i.i.i.i.i.i: ; preds = %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.i.i669.i.i.i.i.i.i.i, %for.body.i39.i.i779.i.i.i.i.i.i.i, %while.cond.preheader.i.i571.i.i.i.i.i.i.i - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i.i519.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %T_maj.i.i522.i.i.i.i.i.i.i, i64 16, i1 false) + %shr.i.i.i177.i.i631.i.i.i.i.i.i.i = lshr i32 %366, 23 + %sub.i.i.i178.i.i632.i.i.i.i.i.i.i = add i32 %conv.i4.i176.i.i630.i.i.i.i.i.i.i, -127 + %add.i.i179.i.i633.i.i.i.i.i.i.i = add i32 %sub.i.i.i178.i.i632.i.i.i.i.i.i.i, %shr.i.i.i177.i.i631.i.i.i.i.i.i.i + %cmp.i.i180.i.i634.i.i.i.i.i.i.i = icmp slt i32 %add.i.i179.i.i633.i.i.i.i.i.i.i, -126 + br i1 %cmp.i.i180.i.i634.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i188.i.i642.i.i.i.i.i.i.i, label %if.end.i.i181.i.i635.i.i.i.i.i.i.i + +if.end.i.i181.i.i635.i.i.i.i.i.i.i: ; preds = %for.body.i171.i.i625.i.i.i.i.i.i.i + %cmp3.i.i182.i.i636.i.i.i.i.i.i.i = icmp sgt i32 %add.i.i179.i.i633.i.i.i.i.i.i.i, 127 + br i1 %cmp3.i.i182.i.i636.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i188.i.i642.i.i.i.i.i.i.i, label %if.end5.i.i183.i.i637.i.i.i.i.i.i.i + +if.end5.i.i183.i.i637.i.i.i.i.i.i.i: ; preds = %if.end.i.i181.i.i635.i.i.i.i.i.i.i + %and.i.i184.i.i638.i.i.i.i.i.i.i = and i32 %366, -2139095041 + %add7.i.i185.i.i639.i.i.i.i.i.i.i = shl nsw i32 %add.i.i179.i.i633.i.i.i.i.i.i.i, 23 + %shl.i.i186.i.i640.i.i.i.i.i.i.i = add i32 %add7.i.i185.i.i639.i.i.i.i.i.i.i, 1065353216 + %or.i.i187.i.i641.i.i.i.i.i.i.i = or i32 %shl.i.i186.i.i640.i.i.i.i.i.i.i, %and.i.i184.i.i638.i.i.i.i.i.i.i + %367 = bitcast i32 %or.i.i187.i.i641.i.i.i.i.i.i.i to float + br label %_ZN4pbrt7FastExpEf.exit.i188.i.i642.i.i.i.i.i.i.i + +_ZN4pbrt7FastExpEf.exit.i188.i.i642.i.i.i.i.i.i.i: ; preds = %if.end5.i.i183.i.i637.i.i.i.i.i.i.i, %if.end.i.i181.i.i635.i.i.i.i.i.i.i, %for.body.i171.i.i625.i.i.i.i.i.i.i + %retval.0.i.i189.i.i643.i.i.i.i.i.i.i = phi float [ %367, %if.end5.i.i183.i.i637.i.i.i.i.i.i.i ], [ 0.000000e+00, %for.body.i171.i.i625.i.i.i.i.i.i.i ], [ 0x7FF0000000000000, %if.end.i.i181.i.i635.i.i.i.i.i.i.i ] + %arrayidx.i.i6.i190.i.i644.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i170.i.i505.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i172.i.i626.i.i.i.i.i.i.i + store float %retval.0.i.i189.i.i643.i.i.i.i.i.i.i, ptr %arrayidx.i.i6.i190.i.i644.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i191.i.i645.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i172.i.i626.i.i.i.i.i.i.i, 1 + %exitcond.not.i192.i.i646.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i191.i.i645.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i192.i.i646.i.i.i.i.i.i.i, label %invoke.cont118.i.i647.i.i.i.i.i.i.i, label %for.body.i171.i.i625.i.i.i.i.i.i.i, !llvm.loop !111 + +invoke.cont118.i.i647.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i188.i.i642.i.i.i.i.i.i.i + %.fca.0.load.i193.i.i648.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i170.i.i505.i.i.i.i.i.i.i, align 8 + %.fca.1.load.i196.i.i649.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i195.i.i577.i.i.i.i.i.i.i, align 8 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i170.i.i505.i.i.i.i.i.i.i) + store <2 x float> %.fca.0.load.i193.i.i648.i.i.i.i.i.i.i, ptr %ref.tmp108.i.i522.i.i.i.i.i.i.i, align 8 + store <2 x float> %.fca.1.load.i196.i.i649.i.i.i.i.i.i.i, ptr %47, align 8 + br label %for.body.i199.i.i650.i.i.i.i.i.i.i + +for.body.i199.i.i650.i.i.i.i.i.i.i: ; preds = %for.body.i199.i.i650.i.i.i.i.i.i.i, %invoke.cont118.i.i647.i.i.i.i.i.i.i + %indvars.iv.i200.i.i651.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont118.i.i647.i.i.i.i.i.i.i ], [ %indvars.iv.next.i204.i.i655.i.i.i.i.i.i.i, %for.body.i199.i.i650.i.i.i.i.i.i.i ] + %arrayidx.i.i201.i.i652.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp108.i.i522.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i200.i.i651.i.i.i.i.i.i.i + %368 = load float, ptr %arrayidx.i.i201.i.i652.i.i.i.i.i.i.i, align 4 + %arrayidx.i4.i202.i.i653.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %T_maj.i.i514.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i200.i.i651.i.i.i.i.i.i.i + %369 = load float, ptr %arrayidx.i4.i202.i.i653.i.i.i.i.i.i.i, align 4 + %mul.i203.i.i654.i.i.i.i.i.i.i = fmul float %368, %369 + store float %mul.i203.i.i654.i.i.i.i.i.i.i, ptr %arrayidx.i4.i202.i.i653.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i204.i.i655.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i200.i.i651.i.i.i.i.i.i.i, 1 + %exitcond.not.i205.i.i656.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i204.i.i655.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i205.i.i656.i.i.i.i.i.i.i, label %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.i.i657.i.i.i.i.i.i.i, label %for.body.i199.i.i650.i.i.i.i.i.i.i, !llvm.loop !112 + +_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.thread.i.i581.i.i.i.i.i.i.i: ; preds = %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.i.i657.i.i.i.i.i.i.i, %for.body.i39.i.i767.i.i.i.i.i.i.i, %while.cond.preheader.i.i563.i.i.i.i.i.i.i + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i.i511.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %T_maj.i.i514.i.i.i.i.i.i.i, i64 16, i1 false) br label %"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_11CloudMediumEEEDaSH_.exit.i.i.i.i.i.i.i" -_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.i.i669.i.i.i.i.i.i.i: ; preds = %for.body.i202.i.i662.i.i.i.i.i.i.i - %.pre.i670.i.i.i.i.i.i.i = load i8, ptr %called.i.i.i572.i.i.i.i.i.i.i, align 4, !noalias !121 - %370 = and i8 %.pre.i670.i.i.i.i.i.i.i, 1 - %tobool.not.i.i.i671.i.i.i.i.i.i.i = icmp eq i8 %370, 0 - br i1 %tobool.not.i.i.i671.i.i.i.i.i.i.i, label %invoke.cont.i.i595.i.i.i.i.i.i.i, label %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.thread.i.i589.i.i.i.i.i.i.i - -while.end125.i.i728.i.i.i.i.i.i.i: ; preds = %invoke.cont75.i.i716.i.i.i.i.i.i.i - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i.i519.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) - br label %for.body.i.i214.i.i729.i.i.i.i.i.i.i - -for.body.i.i214.i.i729.i.i.i.i.i.i.i: ; preds = %for.body.i.i214.i.i729.i.i.i.i.i.i.i, %while.end125.i.i728.i.i.i.i.i.i.i - %indvars.iv.i.i215.i.i730.i.i.i.i.i.i.i = phi i64 [ 0, %while.end125.i.i728.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i217.i.i732.i.i.i.i.i.i.i, %for.body.i.i214.i.i729.i.i.i.i.i.i.i ] - %arrayidx.i.i216.i.i731.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i519.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i215.i.i730.i.i.i.i.i.i.i - store float 1.000000e+00, ptr %arrayidx.i.i216.i.i731.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i.i217.i.i732.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i215.i.i730.i.i.i.i.i.i.i, 1 - %exitcond.not.i.i218.i.i733.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i217.i.i732.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i.i218.i.i733.i.i.i.i.i.i.i, label %"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_11CloudMediumEEEDaSH_.exit.i.i.i.i.i.i.i", label %for.body.i.i214.i.i729.i.i.i.i.i.i.i, !llvm.loop !103 - -"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_11CloudMediumEEEDaSH_.exit.i.i.i.i.i.i.i": ; preds = %for.body.i.i214.i.i729.i.i.i.i.i.i.i, %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.thread.i.i589.i.i.i.i.i.i.i - %.fca.0.load.i.i590.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i.i519.i.i.i.i.i.i.i, align 8 - %.fca.1.load.i.i593.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i.i592.i.i.i.i.i.i.i, align 8 - call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %agg.tmp21.i532.i.i.i.i.i.i.i) - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i.i519.i.i.i.i.i.i.i) - call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %iter.i.i520.i.i.i.i.i.i.i) - call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %agg.tmp7.i.i521.i.i.i.i.i.i.i) - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %T_maj.i.i522.i.i.i.i.i.i.i) - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp22.i.i523.i.i.i.i.i.i.i) - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp23.i.i524.i.i.i.i.i.i.i) - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp57.i.i525.i.i.i.i.i.i.i) - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp58.i.i526.i.i.i.i.i.i.i) - call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %mp.i.i527.i.i.i.i.i.i.i) - call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %agg.tmp85.i.i528.i.i.i.i.i.i.i) - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp96.i.i529.i.i.i.i.i.i.i) - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp108.i.i530.i.i.i.i.i.i.i) - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp109.i.i531.i.i.i.i.i.i.i) +_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.i.i657.i.i.i.i.i.i.i: ; preds = %for.body.i199.i.i650.i.i.i.i.i.i.i + %.pre.i658.i.i.i.i.i.i.i = load i8, ptr %called.i.i.i564.i.i.i.i.i.i.i, align 4, !noalias !121 + %370 = and i8 %.pre.i658.i.i.i.i.i.i.i, 1 + %tobool.not.i.i.i659.i.i.i.i.i.i.i = icmp eq i8 %370, 0 + br i1 %tobool.not.i.i.i659.i.i.i.i.i.i.i, label %invoke.cont.i.i587.i.i.i.i.i.i.i, label %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.thread.i.i581.i.i.i.i.i.i.i + +while.end125.i.i716.i.i.i.i.i.i.i: ; preds = %invoke.cont75.i.i704.i.i.i.i.i.i.i + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i.i511.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) + br label %for.body.i.i211.i.i717.i.i.i.i.i.i.i + +for.body.i.i211.i.i717.i.i.i.i.i.i.i: ; preds = %for.body.i.i211.i.i717.i.i.i.i.i.i.i, %while.end125.i.i716.i.i.i.i.i.i.i + %indvars.iv.i.i212.i.i718.i.i.i.i.i.i.i = phi i64 [ 0, %while.end125.i.i716.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i214.i.i720.i.i.i.i.i.i.i, %for.body.i.i211.i.i717.i.i.i.i.i.i.i ] + %arrayidx.i.i213.i.i719.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i511.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i212.i.i718.i.i.i.i.i.i.i + store float 1.000000e+00, ptr %arrayidx.i.i213.i.i719.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i.i214.i.i720.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i212.i.i718.i.i.i.i.i.i.i, 1 + %exitcond.not.i.i215.i.i721.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i214.i.i720.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i.i215.i.i721.i.i.i.i.i.i.i, label %"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_11CloudMediumEEEDaSH_.exit.i.i.i.i.i.i.i", label %for.body.i.i211.i.i717.i.i.i.i.i.i.i, !llvm.loop !103 + +"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_11CloudMediumEEEDaSH_.exit.i.i.i.i.i.i.i": ; preds = %for.body.i.i211.i.i717.i.i.i.i.i.i.i, %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.thread.i.i581.i.i.i.i.i.i.i + %.fca.0.load.i.i582.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i.i511.i.i.i.i.i.i.i, align 8 + %.fca.1.load.i.i585.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i.i584.i.i.i.i.i.i.i, align 8 + call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %agg.tmp21.i524.i.i.i.i.i.i.i) + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i.i511.i.i.i.i.i.i.i) + call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %iter.i.i512.i.i.i.i.i.i.i) + call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %agg.tmp7.i.i513.i.i.i.i.i.i.i) + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %T_maj.i.i514.i.i.i.i.i.i.i) + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp22.i.i515.i.i.i.i.i.i.i) + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp23.i.i516.i.i.i.i.i.i.i) + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp57.i.i517.i.i.i.i.i.i.i) + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp58.i.i518.i.i.i.i.i.i.i) + call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %mp.i.i519.i.i.i.i.i.i.i) + call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %agg.tmp85.i.i520.i.i.i.i.i.i.i) + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp96.i.i521.i.i.i.i.i.i.i) + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp108.i.i522.i.i.i.i.i.i.i) + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp109.i.i523.i.i.i.i.i.i.i) br label %"_ZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_.exit.i.i.i.i" sw.default.i.i.i.i.i.i.i: ; preds = %cond.end.i.i.i.i - call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %agg.tmp21.i806.i.i.i.i.i.i.i) - store ptr %T_ray.i.i.i.i, ptr %agg.tmp21.i806.i.i.i.i.i.i.i, align 8 - store ptr %r_l.i.i.i.i, ptr %agg.tmp2751.sroa.8.0.agg.tmp21.i806.i.i.i.sroa_idx.i.i.i.i, align 8 - store ptr %r_u.i.i.i.i, ptr %agg.tmp2751.sroa.9.0.agg.tmp21.i806.i.i.i.sroa_idx.i.i.i.i, align 8 - store ptr %rng.i.i.i.i, ptr %agg.tmp2751.sroa.10.0.agg.tmp21.i806.i.i.i.sroa_idx.i.i.i.i, align 8 - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i.i792.i.i.i.i.i.i.i) - call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %iter.i.i793.i.i.i.i.i.i.i) - call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %agg.tmp7.i.i794.i.i.i.i.i.i.i) - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %T_maj.i.i795.i.i.i.i.i.i.i) - call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %seg.i.i796.i.i.i.i.i.i.i) - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp22.i.i797.i.i.i.i.i.i.i) - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp23.i.i798.i.i.i.i.i.i.i) - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp57.i.i799.i.i.i.i.i.i.i) - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp58.i.i800.i.i.i.i.i.i.i) - call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %mp.i.i801.i.i.i.i.i.i.i) - call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %agg.tmp85.i.i802.i.i.i.i.i.i.i) - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp96.i.i803.i.i.i.i.i.i.i) - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp108.i.i804.i.i.i.i.i.i.i) - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp109.i.i805.i.i.i.i.i.i.i) - %371 = fmul <2 x float> %ray.sroa.14.0349.i.i.i.i, %ray.sroa.14.0349.i.i.i.i + call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %agg.tmp21.i794.i.i.i.i.i.i.i) + store ptr %T_ray.i.i.i.i, ptr %agg.tmp21.i794.i.i.i.i.i.i.i, align 8 + store ptr %r_l.i.i.i.i, ptr %agg.tmp2750.sroa.8.0.agg.tmp21.i794.i.i.i.sroa_idx.i.i.i.i, align 8 + store ptr %r_u.i.i.i.i, ptr %agg.tmp2750.sroa.9.0.agg.tmp21.i794.i.i.i.sroa_idx.i.i.i.i, align 8 + store ptr %rng.i.i.i.i, ptr %agg.tmp2750.sroa.10.0.agg.tmp21.i794.i.i.i.sroa_idx.i.i.i.i, align 8 + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i.i780.i.i.i.i.i.i.i) + call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %iter.i.i781.i.i.i.i.i.i.i) + call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %agg.tmp7.i.i782.i.i.i.i.i.i.i) + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %T_maj.i.i783.i.i.i.i.i.i.i) + call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %seg.i.i784.i.i.i.i.i.i.i) + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp22.i.i785.i.i.i.i.i.i.i) + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp23.i.i786.i.i.i.i.i.i.i) + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp57.i.i787.i.i.i.i.i.i.i) + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp58.i.i788.i.i.i.i.i.i.i) + call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %mp.i.i789.i.i.i.i.i.i.i) + call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %agg.tmp85.i.i790.i.i.i.i.i.i.i) + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp96.i.i791.i.i.i.i.i.i.i) + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp108.i.i792.i.i.i.i.i.i.i) + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp109.i.i793.i.i.i.i.i.i.i) + %371 = fmul <2 x float> %ray.sroa.14.0348.i.i.i.i, %ray.sroa.14.0348.i.i.i.i %shift185 = shufflevector <2 x float> %371, <2 x float> poison, <2 x i32> %372 = fadd <2 x float> %371, %shift185 - %add.i.i.i.i823.i.i.i.i.i.i.i = extractelement <2 x float> %372, i64 0 - %mul.i2.i.i.i.i824.i.i.i.i.i.i.i = fmul float %ray.sroa.22.0350.i.i.i.i, %ray.sroa.22.0350.i.i.i.i - %add3.i.i.i.i825.i.i.i.i.i.i.i = fadd float %mul.i2.i.i.i.i824.i.i.i.i.i.i.i, %add.i.i.i.i823.i.i.i.i.i.i.i - %sqrt.i.i.i826.i.i.i.i.i.i.i = call noundef float @llvm.sqrt.f32(float %add3.i.i.i.i825.i.i.i.i.i.i.i) - %mul.i.i827.i.i.i.i.i.i.i = fmul float %sqrt.i.i.i826.i.i.i.i.i.i.i, %cond.i.i.i.i - %373 = insertelement <2 x float> poison, float %sqrt.i.i.i826.i.i.i.i.i.i.i, i64 0 + %add.i.i.i.i811.i.i.i.i.i.i.i = extractelement <2 x float> %372, i64 0 + %mul.i2.i.i.i.i812.i.i.i.i.i.i.i = fmul float %ray.sroa.22.0349.i.i.i.i, %ray.sroa.22.0349.i.i.i.i + %add3.i.i.i.i813.i.i.i.i.i.i.i = fadd float %mul.i2.i.i.i.i812.i.i.i.i.i.i.i, %add.i.i.i.i811.i.i.i.i.i.i.i + %sqrt.i.i.i814.i.i.i.i.i.i.i = call noundef float @llvm.sqrt.f32(float %add3.i.i.i.i813.i.i.i.i.i.i.i) + %mul.i.i815.i.i.i.i.i.i.i = fmul float %sqrt.i.i.i814.i.i.i.i.i.i.i, %cond.i.i.i.i + %373 = insertelement <2 x float> poison, float %sqrt.i.i.i814.i.i.i.i.i.i.i, i64 0 %374 = shufflevector <2 x float> %373, <2 x float> poison, <2 x i32> zeroinitializer - %375 = fdiv <2 x float> %ray.sroa.14.0349.i.i.i.i, %374 - %div3.i.i.i.i830.i.i.i.i.i.i.i = fdiv float %ray.sroa.22.0350.i.i.i.i, %sqrt.i.i.i826.i.i.i.i.i.i.i - %376 = inttoptr i64 %and.i40280286.i.i.i.i to ptr - store <2 x float> %ray.sroa.0.0347.i.i.i.i, ptr %agg.tmp7.i.i794.i.i.i.i.i.i.i, align 8 - store float %ray.sroa.9.0348.i.i.i.i, ptr %agg.tmp.sroa.6.0.agg.tmp7.i.sroa_idx.i835.i.i.i.i.i.i.i, align 8 - store <2 x float> %375, ptr %agg.tmp.sroa.8.0.agg.tmp7.i.sroa_idx.i836.i.i.i.i.i.i.i, align 4 - store float %div3.i.i.i.i830.i.i.i.i.i.i.i, ptr %agg.tmp.sroa.14.0.agg.tmp7.i.sroa_idx.i837.i.i.i.i.i.i.i, align 4 - store float %ray.sroa.28.0351.i.i.i.i, ptr %agg.tmp.sroa.18.0.agg.tmp7.i.sroa_idx.i838.i.i.i.i.i.i.i, align 8 - store i64 %ray.sroa.30.0352.i.i.i.i, ptr %medium.i.i.i839.i.i.i.i.i.i.i, align 8 - call void @_ZNK4pbrt13NanoVDBMedium9SampleRayENS_3RayEfRKNS_18SampledWavelengthsE(ptr nonnull sret(%"class.pbrt::DDAMajorantIterator") align 8 %iter.i.i793.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(404) %376, ptr noundef nonnull %agg.tmp7.i.i794.i.i.i.i.i.i.i, float noundef %mul.i.i827.i.i.i.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(32) %lambda.i.i.i.i) - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %T_maj.i.i795.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) - br label %for.body.i.i.i.i840.i.i.i.i.i.i.i - -for.body.i.i.i.i840.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i840.i.i.i.i.i.i.i, %sw.default.i.i.i.i.i.i.i - %indvars.iv.i.i.i.i841.i.i.i.i.i.i.i = phi i64 [ 0, %sw.default.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i.i.i843.i.i.i.i.i.i.i, %for.body.i.i.i.i840.i.i.i.i.i.i.i ] - %arrayidx.i.i.i.i842.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %T_maj.i.i795.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i.i.i841.i.i.i.i.i.i.i - store float 1.000000e+00, ptr %arrayidx.i.i.i.i842.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i.i.i.i843.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i.i.i841.i.i.i.i.i.i.i, 1 - %exitcond.not.i.i.i.i844.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i.i.i843.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i.i.i.i844.i.i.i.i.i.i.i, label %while.cond.preheader.i.i845.i.i.i.i.i.i.i, label %for.body.i.i.i.i840.i.i.i.i.i.i.i, !llvm.loop !103 - -while.cond.preheader.i.i845.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i840.i.i.i.i.i.i.i - call void @_ZN4pbrt19DDAMajorantIterator4NextEv(ptr nonnull sret(%"class.pstd::optional.223") align 4 %seg.i.i796.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(92) %iter.i.i793.i.i.i.i.i.i.i) - %377 = load i8, ptr %set.i.i.i846.i.i.i.i.i.i.i, align 4 + %375 = fdiv <2 x float> %ray.sroa.14.0348.i.i.i.i, %374 + %div3.i.i.i.i818.i.i.i.i.i.i.i = fdiv float %ray.sroa.22.0349.i.i.i.i, %sqrt.i.i.i814.i.i.i.i.i.i.i + %376 = inttoptr i64 %and.i40279285.i.i.i.i to ptr + store <2 x float> %ray.sroa.0.0346.i.i.i.i, ptr %agg.tmp7.i.i782.i.i.i.i.i.i.i, align 8 + store float %ray.sroa.9.0347.i.i.i.i, ptr %agg.tmp.sroa.6.0.agg.tmp7.i.sroa_idx.i823.i.i.i.i.i.i.i, align 8 + store <2 x float> %375, ptr %agg.tmp.sroa.8.0.agg.tmp7.i.sroa_idx.i824.i.i.i.i.i.i.i, align 4 + store float %div3.i.i.i.i818.i.i.i.i.i.i.i, ptr %agg.tmp.sroa.14.0.agg.tmp7.i.sroa_idx.i825.i.i.i.i.i.i.i, align 4 + store float %ray.sroa.28.0350.i.i.i.i, ptr %agg.tmp.sroa.18.0.agg.tmp7.i.sroa_idx.i826.i.i.i.i.i.i.i, align 8 + store i64 %ray.sroa.30.0351.i.i.i.i, ptr %medium.i.i.i827.i.i.i.i.i.i.i, align 8 + call void @_ZNK4pbrt13NanoVDBMedium9SampleRayENS_3RayEfRKNS_18SampledWavelengthsE(ptr nonnull sret(%"class.pbrt::DDAMajorantIterator") align 8 %iter.i.i781.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(404) %376, ptr noundef nonnull %agg.tmp7.i.i782.i.i.i.i.i.i.i, float noundef %mul.i.i815.i.i.i.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(32) %lambda.i.i.i.i) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %T_maj.i.i783.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) + br label %for.body.i.i.i.i828.i.i.i.i.i.i.i + +for.body.i.i.i.i828.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i828.i.i.i.i.i.i.i, %sw.default.i.i.i.i.i.i.i + %indvars.iv.i.i.i.i829.i.i.i.i.i.i.i = phi i64 [ 0, %sw.default.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i.i.i831.i.i.i.i.i.i.i, %for.body.i.i.i.i828.i.i.i.i.i.i.i ] + %arrayidx.i.i.i.i830.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %T_maj.i.i783.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i.i.i829.i.i.i.i.i.i.i + store float 1.000000e+00, ptr %arrayidx.i.i.i.i830.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i.i.i.i831.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i.i.i829.i.i.i.i.i.i.i, 1 + %exitcond.not.i.i.i.i832.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i.i.i831.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i.i.i.i832.i.i.i.i.i.i.i, label %while.cond.preheader.i.i833.i.i.i.i.i.i.i, label %for.body.i.i.i.i828.i.i.i.i.i.i.i, !llvm.loop !103 + +while.cond.preheader.i.i833.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i828.i.i.i.i.i.i.i + call void @_ZN4pbrt19DDAMajorantIterator4NextEv(ptr nonnull sret(%"class.pstd::optional.223") align 4 %seg.i.i784.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(92) %iter.i.i781.i.i.i.i.i.i.i) + %377 = load i8, ptr %set.i.i.i834.i.i.i.i.i.i.i, align 4 %378 = and i8 %377, 1 - %tobool.i.not.i.i86444.i.i.i.i.i.i.i = icmp eq i8 %378, 0 - br i1 %tobool.i.not.i.i86444.i.i.i.i.i.i.i, label %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.thread.i.i1065.i.i.i.i.i.i.i, label %invoke.cont.i.i865.i.i.i.i.i.i.i + %tobool.i.not.i.i85244.i.i.i.i.i.i.i = icmp eq i8 %378, 0 + br i1 %tobool.i.not.i.i85244.i.i.i.i.i.i.i, label %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.thread.i.i1049.i.i.i.i.i.i.i, label %invoke.cont.i.i853.i.i.i.i.i.i.i -_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.thread.i.i1065.i.i.i.i.i.i.i: ; preds = %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.i.i937.i.i.i.i.i.i.i, %while.cond.preheader.i.i845.i.i.i.i.i.i.i - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i.i792.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %T_maj.i.i795.i.i.i.i.i.i.i, i64 16, i1 false) +_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.thread.i.i1049.i.i.i.i.i.i.i: ; preds = %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.i.i921.i.i.i.i.i.i.i, %while.cond.preheader.i.i833.i.i.i.i.i.i.i + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i.i780.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %T_maj.i.i783.i.i.i.i.i.i.i, i64 16, i1 false) br label %"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_13NanoVDBMediumEEEDaSH_.exit.i.i.i.i.i.i.i" -invoke.cont.i.i865.i.i.i.i.i.i.i: ; preds = %while.cond.preheader.i.i845.i.i.i.i.i.i.i, %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.i.i937.i.i.i.i.i.i.i - %u.addr.0.i23.i86345.i.i.i.i.i.i.i = phi float [ %u.addr.2270.i.i938.i.i.i.i.i.i.i, %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.i.i937.i.i.i.i.i.i.i ], [ %.sroa.speculated.i.i.i.i.i, %while.cond.preheader.i.i845.i.i.i.i.i.i.i ] - %379 = load float, ptr %sigma_maj.i.i847.i.i.i.i.i.i.i, align 4 - %cmp.i.i866.i.i.i.i.i.i.i = fcmp oeq float %379, 0.000000e+00 - br i1 %cmp.i.i866.i.i.i.i.i.i.i, label %invoke.cont17.i.i1019.i.i.i.i.i.i.i, label %invoke.cont48.preheader.i.i867.i.i.i.i.i.i.i - -invoke.cont17.i.i1019.i.i.i.i.i.i.i: ; preds = %invoke.cont.i.i865.i.i.i.i.i.i.i - %380 = load float, ptr %tMax54.i.i849.i.i.i.i.i.i.i, align 4 - %381 = load float, ptr %seg.i.i796.i.i.i.i.i.i.i, align 4 - %sub.i.i1020.i.i.i.i.i.i.i = fsub float %380, %381 - %382 = call float @llvm.fabs.f32(float %sub.i.i1020.i.i.i.i.i.i.i) +invoke.cont.i.i853.i.i.i.i.i.i.i: ; preds = %while.cond.preheader.i.i833.i.i.i.i.i.i.i, %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.i.i921.i.i.i.i.i.i.i + %u.addr.0.i23.i85145.i.i.i.i.i.i.i = phi float [ %u.addr.2267.i.i922.i.i.i.i.i.i.i, %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.i.i921.i.i.i.i.i.i.i ], [ %.sroa.speculated.i.i.i.i.i, %while.cond.preheader.i.i833.i.i.i.i.i.i.i ] + %379 = load float, ptr %sigma_maj.i.i835.i.i.i.i.i.i.i, align 4 + %cmp.i.i854.i.i.i.i.i.i.i = fcmp oeq float %379, 0.000000e+00 + br i1 %cmp.i.i854.i.i.i.i.i.i.i, label %invoke.cont17.i.i1003.i.i.i.i.i.i.i, label %invoke.cont48.preheader.i.i855.i.i.i.i.i.i.i + +invoke.cont17.i.i1003.i.i.i.i.i.i.i: ; preds = %invoke.cont.i.i853.i.i.i.i.i.i.i + %380 = load float, ptr %tMax54.i.i837.i.i.i.i.i.i.i, align 4 + %381 = load float, ptr %seg.i.i784.i.i.i.i.i.i.i, align 4 + %sub.i.i1004.i.i.i.i.i.i.i = fsub float %380, %381 + %382 = call float @llvm.fabs.f32(float %sub.i.i1004.i.i.i.i.i.i.i) %383 = fcmp oeq float %382, 0x7FF0000000000000 - %dt.0.i.i1021.i.i.i.i.i.i.i = select i1 %383, float 0x47EFFFFFE0000000, float %sub.i.i1020.i.i.i.i.i.i.i - %fneg.i.i1022.i.i.i.i.i.i.i = fneg float %dt.0.i.i1021.i.i.i.i.i.i.i - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i.i.i.i791.i.i.i.i.i.i.i) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i.i.i.i791.i.i.i.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(16) %sigma_maj.i.i847.i.i.i.i.i.i.i, i64 16, i1 false) - br label %for.body.i.i29.i.i1023.i.i.i.i.i.i.i - -for.body.i.i29.i.i1023.i.i.i.i.i.i.i: ; preds = %for.body.i.i29.i.i1023.i.i.i.i.i.i.i, %invoke.cont17.i.i1019.i.i.i.i.i.i.i - %indvars.iv.i.i30.i.i1024.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont17.i.i1019.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i31.i.i1027.i.i.i.i.i.i.i, %for.body.i.i29.i.i1023.i.i.i.i.i.i.i ] - %arrayidx.i.i.i.i.i1025.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i.i.i791.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i30.i.i1024.i.i.i.i.i.i.i - %384 = load float, ptr %arrayidx.i.i.i.i.i1025.i.i.i.i.i.i.i, align 4 - %mul.i.i.i.i1026.i.i.i.i.i.i.i = fmul float %384, %fneg.i.i1022.i.i.i.i.i.i.i - store float %mul.i.i.i.i1026.i.i.i.i.i.i.i, ptr %arrayidx.i.i.i.i.i1025.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i.i31.i.i1027.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i30.i.i1024.i.i.i.i.i.i.i, 1 - %exitcond.not.i.i32.i.i1028.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i31.i.i1027.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i.i32.i.i1028.i.i.i.i.i.i.i, label %invoke.cont27.i.i1029.i.i.i.i.i.i.i, label %for.body.i.i29.i.i1023.i.i.i.i.i.i.i, !llvm.loop !110 - -invoke.cont27.i.i1029.i.i.i.i.i.i.i: ; preds = %for.body.i.i29.i.i1023.i.i.i.i.i.i.i - %.fca.0.load.i.i.i.i1030.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i.i.i.i791.i.i.i.i.i.i.i, align 8 - %.fca.1.load.i.i.i.i1031.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i.i.i.i860.i.i.i.i.i.i.i, align 8 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i.i.i.i791.i.i.i.i.i.i.i) - store <2 x float> %.fca.0.load.i.i.i.i1030.i.i.i.i.i.i.i, ptr %ref.tmp23.i.i798.i.i.i.i.i.i.i, align 8 - store <2 x float> %.fca.1.load.i.i.i.i1031.i.i.i.i.i.i.i, ptr %74, align 8 - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i.i.i790.i.i.i.i.i.i.i) - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i.i.i790.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) - br label %for.body.i.i.i1032.i.i.i.i.i.i.i - -for.body.i.i.i1032.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i.i.i1049.i.i.i.i.i.i.i, %invoke.cont27.i.i1029.i.i.i.i.i.i.i - %indvars.iv.i.i.i1033.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont27.i.i1029.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i.i1052.i.i.i.i.i.i.i, %_ZN4pbrt7FastExpEf.exit.i.i.i1049.i.i.i.i.i.i.i ] - %arrayidx.i.i.i35.i.i1034.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp23.i.i798.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i.i1033.i.i.i.i.i.i.i - %385 = load float, ptr %arrayidx.i.i.i35.i.i1034.i.i.i.i.i.i.i, align 4 - %mul.i.i36.i.i1035.i.i.i.i.i.i.i = fmul float %385, 0x3FF7154760000000 - %386 = call noundef float @llvm.floor.f32(float %mul.i.i36.i.i1035.i.i.i.i.i.i.i) - %sub.i.i.i.i1036.i.i.i.i.i.i.i = fsub float %mul.i.i36.i.i1035.i.i.i.i.i.i.i, %386 - %conv.i4.i.i.i1037.i.i.i.i.i.i.i = fptosi float %386 to i32 - %387 = call noundef float @llvm.fma.f32(float %sub.i.i.i.i1036.i.i.i.i.i.i.i, float 0x3FB4015920000000, float 0x3FCCF34160000000) - %388 = call noundef float @llvm.fma.f32(float %sub.i.i.i.i1036.i.i.i.i.i.i.i, float %387, float 0x3FE6420080000000) - %389 = call noundef float @llvm.fma.f32(float %sub.i.i.i.i1036.i.i.i.i.i.i.i, float %388, float 1.000000e+00) + %dt.0.i.i1005.i.i.i.i.i.i.i = select i1 %383, float 0x47EFFFFFE0000000, float %sub.i.i1004.i.i.i.i.i.i.i + %fneg.i.i1006.i.i.i.i.i.i.i = fneg float %dt.0.i.i1005.i.i.i.i.i.i.i + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i.i.i.i779.i.i.i.i.i.i.i) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i.i.i.i779.i.i.i.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(16) %sigma_maj.i.i835.i.i.i.i.i.i.i, i64 16, i1 false) + br label %for.body.i.i29.i.i1007.i.i.i.i.i.i.i + +for.body.i.i29.i.i1007.i.i.i.i.i.i.i: ; preds = %for.body.i.i29.i.i1007.i.i.i.i.i.i.i, %invoke.cont17.i.i1003.i.i.i.i.i.i.i + %indvars.iv.i.i30.i.i1008.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont17.i.i1003.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i31.i.i1011.i.i.i.i.i.i.i, %for.body.i.i29.i.i1007.i.i.i.i.i.i.i ] + %arrayidx.i.i.i.i.i1009.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i.i.i779.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i30.i.i1008.i.i.i.i.i.i.i + %384 = load float, ptr %arrayidx.i.i.i.i.i1009.i.i.i.i.i.i.i, align 4 + %mul.i.i.i.i1010.i.i.i.i.i.i.i = fmul float %384, %fneg.i.i1006.i.i.i.i.i.i.i + store float %mul.i.i.i.i1010.i.i.i.i.i.i.i, ptr %arrayidx.i.i.i.i.i1009.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i.i31.i.i1011.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i30.i.i1008.i.i.i.i.i.i.i, 1 + %exitcond.not.i.i32.i.i1012.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i31.i.i1011.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i.i32.i.i1012.i.i.i.i.i.i.i, label %invoke.cont27.i.i1013.i.i.i.i.i.i.i, label %for.body.i.i29.i.i1007.i.i.i.i.i.i.i, !llvm.loop !110 + +invoke.cont27.i.i1013.i.i.i.i.i.i.i: ; preds = %for.body.i.i29.i.i1007.i.i.i.i.i.i.i + %.fca.0.load.i.i.i.i1014.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i.i.i.i779.i.i.i.i.i.i.i, align 8 + %.fca.1.load.i.i.i.i1015.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i.i.i.i848.i.i.i.i.i.i.i, align 8 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i.i.i.i779.i.i.i.i.i.i.i) + store <2 x float> %.fca.0.load.i.i.i.i1014.i.i.i.i.i.i.i, ptr %ref.tmp23.i.i786.i.i.i.i.i.i.i, align 8 + store <2 x float> %.fca.1.load.i.i.i.i1015.i.i.i.i.i.i.i, ptr %74, align 8 + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i.i.i778.i.i.i.i.i.i.i) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i.i.i778.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) + br label %for.body.i.i.i1016.i.i.i.i.i.i.i + +for.body.i.i.i1016.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i.i.i1033.i.i.i.i.i.i.i, %invoke.cont27.i.i1013.i.i.i.i.i.i.i + %indvars.iv.i.i.i1017.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont27.i.i1013.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i.i1036.i.i.i.i.i.i.i, %_ZN4pbrt7FastExpEf.exit.i.i.i1033.i.i.i.i.i.i.i ] + %arrayidx.i.i.i35.i.i1018.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp23.i.i786.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i.i1017.i.i.i.i.i.i.i + %385 = load float, ptr %arrayidx.i.i.i35.i.i1018.i.i.i.i.i.i.i, align 4 + %mul.i.i36.i.i1019.i.i.i.i.i.i.i = fmul float %385, 0x3FF7154760000000 + %386 = call noundef float @llvm.floor.f32(float %mul.i.i36.i.i1019.i.i.i.i.i.i.i) + %sub.i.i.i.i1020.i.i.i.i.i.i.i = fsub float %mul.i.i36.i.i1019.i.i.i.i.i.i.i, %386 + %conv.i4.i.i.i1021.i.i.i.i.i.i.i = fptosi float %386 to i32 + %387 = call noundef float @llvm.fma.f32(float %sub.i.i.i.i1020.i.i.i.i.i.i.i, float 0x3FB4015920000000, float 0x3FCCF34160000000) + %388 = call noundef float @llvm.fma.f32(float %sub.i.i.i.i1020.i.i.i.i.i.i.i, float %387, float 0x3FE6420080000000) + %389 = call noundef float @llvm.fma.f32(float %sub.i.i.i.i1020.i.i.i.i.i.i.i, float %388, float 1.000000e+00) %390 = bitcast float %389 to i32 - %shr.i.i.i.i.i1038.i.i.i.i.i.i.i = lshr i32 %390, 23 - %sub.i.i.i.i.i1039.i.i.i.i.i.i.i = add i32 %conv.i4.i.i.i1037.i.i.i.i.i.i.i, -127 - %add.i.i37.i.i1040.i.i.i.i.i.i.i = add i32 %sub.i.i.i.i.i1039.i.i.i.i.i.i.i, %shr.i.i.i.i.i1038.i.i.i.i.i.i.i - %cmp.i.i.i.i1041.i.i.i.i.i.i.i = icmp slt i32 %add.i.i37.i.i1040.i.i.i.i.i.i.i, -126 - br i1 %cmp.i.i.i.i1041.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i.i.i1049.i.i.i.i.i.i.i, label %if.end.i.i.i.i1042.i.i.i.i.i.i.i - -if.end.i.i.i.i1042.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i1032.i.i.i.i.i.i.i - %cmp3.i.i.i.i1043.i.i.i.i.i.i.i = icmp sgt i32 %add.i.i37.i.i1040.i.i.i.i.i.i.i, 127 - br i1 %cmp3.i.i.i.i1043.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i.i.i1049.i.i.i.i.i.i.i, label %if.end5.i.i.i.i1044.i.i.i.i.i.i.i - -if.end5.i.i.i.i1044.i.i.i.i.i.i.i: ; preds = %if.end.i.i.i.i1042.i.i.i.i.i.i.i - %and.i.i38.i.i1045.i.i.i.i.i.i.i = and i32 %390, -2139095041 - %add7.i.i.i.i1046.i.i.i.i.i.i.i = shl nsw i32 %add.i.i37.i.i1040.i.i.i.i.i.i.i, 23 - %shl.i.i.i.i1047.i.i.i.i.i.i.i = add i32 %add7.i.i.i.i1046.i.i.i.i.i.i.i, 1065353216 - %or.i.i.i.i1048.i.i.i.i.i.i.i = or i32 %shl.i.i.i.i1047.i.i.i.i.i.i.i, %and.i.i38.i.i1045.i.i.i.i.i.i.i - %391 = bitcast i32 %or.i.i.i.i1048.i.i.i.i.i.i.i to float - br label %_ZN4pbrt7FastExpEf.exit.i.i.i1049.i.i.i.i.i.i.i - -_ZN4pbrt7FastExpEf.exit.i.i.i1049.i.i.i.i.i.i.i: ; preds = %if.end5.i.i.i.i1044.i.i.i.i.i.i.i, %if.end.i.i.i.i1042.i.i.i.i.i.i.i, %for.body.i.i.i1032.i.i.i.i.i.i.i - %retval.0.i.i.i.i1050.i.i.i.i.i.i.i = phi float [ %391, %if.end5.i.i.i.i1044.i.i.i.i.i.i.i ], [ 0.000000e+00, %for.body.i.i.i1032.i.i.i.i.i.i.i ], [ 0x7FF0000000000000, %if.end.i.i.i.i1042.i.i.i.i.i.i.i ] - %arrayidx.i.i6.i.i.i1051.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i.i790.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i.i1033.i.i.i.i.i.i.i - store float %retval.0.i.i.i.i1050.i.i.i.i.i.i.i, ptr %arrayidx.i.i6.i.i.i1051.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i.i.i1052.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i.i1033.i.i.i.i.i.i.i, 1 - %exitcond.not.i.i.i1053.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i.i1052.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i.i.i1053.i.i.i.i.i.i.i, label %invoke.cont31.i.i1054.i.i.i.i.i.i.i, label %for.body.i.i.i1032.i.i.i.i.i.i.i, !llvm.loop !111 - -invoke.cont31.i.i1054.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i.i.i1049.i.i.i.i.i.i.i - %.fca.0.load.i.i.i1055.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i.i.i790.i.i.i.i.i.i.i, align 8 - %.fca.1.load.i.i.i1056.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i.i.i861.i.i.i.i.i.i.i, align 8 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i.i.i790.i.i.i.i.i.i.i) - store <2 x float> %.fca.0.load.i.i.i1055.i.i.i.i.i.i.i, ptr %ref.tmp22.i.i797.i.i.i.i.i.i.i, align 8 - store <2 x float> %.fca.1.load.i.i.i1056.i.i.i.i.i.i.i, ptr %75, align 8 - br label %for.body.i39.i.i1057.i.i.i.i.i.i.i - -for.body.i39.i.i1057.i.i.i.i.i.i.i: ; preds = %for.body.i39.i.i1057.i.i.i.i.i.i.i, %invoke.cont31.i.i1054.i.i.i.i.i.i.i - %indvars.iv.i40.i.i1058.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont31.i.i1054.i.i.i.i.i.i.i ], [ %indvars.iv.next.i42.i.i1062.i.i.i.i.i.i.i, %for.body.i39.i.i1057.i.i.i.i.i.i.i ] - %arrayidx.i.i41.i.i1059.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp22.i.i797.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i40.i.i1058.i.i.i.i.i.i.i - %392 = load float, ptr %arrayidx.i.i41.i.i1059.i.i.i.i.i.i.i, align 4 - %arrayidx.i4.i.i.i1060.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %T_maj.i.i795.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i40.i.i1058.i.i.i.i.i.i.i - %393 = load float, ptr %arrayidx.i4.i.i.i1060.i.i.i.i.i.i.i, align 4 - %mul.i.i.i1061.i.i.i.i.i.i.i = fmul float %392, %393 - store float %mul.i.i.i1061.i.i.i.i.i.i.i, ptr %arrayidx.i4.i.i.i1060.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i42.i.i1062.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i40.i.i1058.i.i.i.i.i.i.i, 1 - %exitcond.not.i43.i.i1063.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i42.i.i1062.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i43.i.i1063.i.i.i.i.i.i.i, label %_ZN4pbrt15SampledSpectrummLERKS0_.exit.i.i1064.i.i.i.i.i.i.i, label %for.body.i39.i.i1057.i.i.i.i.i.i.i, !llvm.loop !112 - -_ZN4pbrt15SampledSpectrummLERKS0_.exit.i.i1064.i.i.i.i.i.i.i: ; preds = %for.body.i39.i.i1057.i.i.i.i.i.i.i - br label %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.i.i937.i.i.i.i.i.i.i, !llvm.loop !125 - -invoke.cont48.preheader.i.i867.i.i.i.i.i.i.i: ; preds = %invoke.cont.i.i865.i.i.i.i.i.i.i - %394 = load float, ptr %seg.i.i796.i.i.i.i.i.i.i, align 4 - br label %invoke.cont48.i.i868.i.i.i.i.i.i.i - -invoke.cont48.i.i868.i.i.i.i.i.i.i: ; preds = %invoke.cont97.i.i1016.i.i.i.i.i.i.i, %invoke.cont48.preheader.i.i867.i.i.i.i.i.i.i - %u.addr.1244.i.i869.i.i.i.i.i.i.i = phi float [ %.sroa.speculated.i.i.i888.i.i.i.i.i.i.i, %invoke.cont97.i.i1016.i.i.i.i.i.i.i ], [ %u.addr.0.i23.i86345.i.i.i.i.i.i.i, %invoke.cont48.preheader.i.i867.i.i.i.i.i.i.i ] - %tMin38.0243.i.i870.i.i.i.i.i.i.i = phi float [ %add.i.i873.i.i.i.i.i.i.i, %invoke.cont97.i.i1016.i.i.i.i.i.i.i ], [ %394, %invoke.cont48.preheader.i.i867.i.i.i.i.i.i.i ] - %395 = load float, ptr %sigma_maj.i.i847.i.i.i.i.i.i.i, align 4 - %sub.i.i.i871.i.i.i.i.i.i.i = fsub float 1.000000e+00, %u.addr.1244.i.i869.i.i.i.i.i.i.i - %call.i.i.i.i872.i.i.i.i.i.i.i = call noundef float @logf(float noundef %sub.i.i.i871.i.i.i.i.i.i.i) #25 - %396 = fdiv float %call.i.i.i.i872.i.i.i.i.i.i.i, %395 - %add.i.i873.i.i.i.i.i.i.i = fsub float %tMin38.0243.i.i870.i.i.i.i.i.i.i, %396 + %shr.i.i.i.i.i1022.i.i.i.i.i.i.i = lshr i32 %390, 23 + %sub.i.i.i.i.i1023.i.i.i.i.i.i.i = add i32 %conv.i4.i.i.i1021.i.i.i.i.i.i.i, -127 + %add.i.i37.i.i1024.i.i.i.i.i.i.i = add i32 %sub.i.i.i.i.i1023.i.i.i.i.i.i.i, %shr.i.i.i.i.i1022.i.i.i.i.i.i.i + %cmp.i.i.i.i1025.i.i.i.i.i.i.i = icmp slt i32 %add.i.i37.i.i1024.i.i.i.i.i.i.i, -126 + br i1 %cmp.i.i.i.i1025.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i.i.i1033.i.i.i.i.i.i.i, label %if.end.i.i.i.i1026.i.i.i.i.i.i.i + +if.end.i.i.i.i1026.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i1016.i.i.i.i.i.i.i + %cmp3.i.i.i.i1027.i.i.i.i.i.i.i = icmp sgt i32 %add.i.i37.i.i1024.i.i.i.i.i.i.i, 127 + br i1 %cmp3.i.i.i.i1027.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i.i.i1033.i.i.i.i.i.i.i, label %if.end5.i.i.i.i1028.i.i.i.i.i.i.i + +if.end5.i.i.i.i1028.i.i.i.i.i.i.i: ; preds = %if.end.i.i.i.i1026.i.i.i.i.i.i.i + %and.i.i38.i.i1029.i.i.i.i.i.i.i = and i32 %390, -2139095041 + %add7.i.i.i.i1030.i.i.i.i.i.i.i = shl nsw i32 %add.i.i37.i.i1024.i.i.i.i.i.i.i, 23 + %shl.i.i.i.i1031.i.i.i.i.i.i.i = add i32 %add7.i.i.i.i1030.i.i.i.i.i.i.i, 1065353216 + %or.i.i.i.i1032.i.i.i.i.i.i.i = or i32 %shl.i.i.i.i1031.i.i.i.i.i.i.i, %and.i.i38.i.i1029.i.i.i.i.i.i.i + %391 = bitcast i32 %or.i.i.i.i1032.i.i.i.i.i.i.i to float + br label %_ZN4pbrt7FastExpEf.exit.i.i.i1033.i.i.i.i.i.i.i + +_ZN4pbrt7FastExpEf.exit.i.i.i1033.i.i.i.i.i.i.i: ; preds = %if.end5.i.i.i.i1028.i.i.i.i.i.i.i, %if.end.i.i.i.i1026.i.i.i.i.i.i.i, %for.body.i.i.i1016.i.i.i.i.i.i.i + %retval.0.i.i.i.i1034.i.i.i.i.i.i.i = phi float [ %391, %if.end5.i.i.i.i1028.i.i.i.i.i.i.i ], [ 0.000000e+00, %for.body.i.i.i1016.i.i.i.i.i.i.i ], [ 0x7FF0000000000000, %if.end.i.i.i.i1026.i.i.i.i.i.i.i ] + %arrayidx.i.i6.i.i.i1035.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i.i778.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i.i1017.i.i.i.i.i.i.i + store float %retval.0.i.i.i.i1034.i.i.i.i.i.i.i, ptr %arrayidx.i.i6.i.i.i1035.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i.i.i1036.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i.i1017.i.i.i.i.i.i.i, 1 + %exitcond.not.i.i.i1037.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i.i1036.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i.i.i1037.i.i.i.i.i.i.i, label %invoke.cont31.i.i1038.i.i.i.i.i.i.i, label %for.body.i.i.i1016.i.i.i.i.i.i.i, !llvm.loop !111 + +invoke.cont31.i.i1038.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i.i.i1033.i.i.i.i.i.i.i + %.fca.0.load.i.i.i1039.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i.i.i778.i.i.i.i.i.i.i, align 8 + %.fca.1.load.i.i.i1040.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i.i.i849.i.i.i.i.i.i.i, align 8 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i.i.i778.i.i.i.i.i.i.i) + store <2 x float> %.fca.0.load.i.i.i1039.i.i.i.i.i.i.i, ptr %ref.tmp22.i.i785.i.i.i.i.i.i.i, align 8 + store <2 x float> %.fca.1.load.i.i.i1040.i.i.i.i.i.i.i, ptr %75, align 8 + br label %for.body.i39.i.i1041.i.i.i.i.i.i.i + +for.body.i39.i.i1041.i.i.i.i.i.i.i: ; preds = %for.body.i39.i.i1041.i.i.i.i.i.i.i, %invoke.cont31.i.i1038.i.i.i.i.i.i.i + %indvars.iv.i40.i.i1042.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont31.i.i1038.i.i.i.i.i.i.i ], [ %indvars.iv.next.i42.i.i1046.i.i.i.i.i.i.i, %for.body.i39.i.i1041.i.i.i.i.i.i.i ] + %arrayidx.i.i41.i.i1043.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp22.i.i785.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i40.i.i1042.i.i.i.i.i.i.i + %392 = load float, ptr %arrayidx.i.i41.i.i1043.i.i.i.i.i.i.i, align 4 + %arrayidx.i4.i.i.i1044.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %T_maj.i.i783.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i40.i.i1042.i.i.i.i.i.i.i + %393 = load float, ptr %arrayidx.i4.i.i.i1044.i.i.i.i.i.i.i, align 4 + %mul.i.i.i1045.i.i.i.i.i.i.i = fmul float %392, %393 + store float %mul.i.i.i1045.i.i.i.i.i.i.i, ptr %arrayidx.i4.i.i.i1044.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i42.i.i1046.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i40.i.i1042.i.i.i.i.i.i.i, 1 + %exitcond.not.i43.i.i1047.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i42.i.i1046.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i43.i.i1047.i.i.i.i.i.i.i, label %_ZN4pbrt15SampledSpectrummLERKS0_.exit.i.i1048.i.i.i.i.i.i.i, label %for.body.i39.i.i1041.i.i.i.i.i.i.i, !llvm.loop !112 + +_ZN4pbrt15SampledSpectrummLERKS0_.exit.i.i1048.i.i.i.i.i.i.i: ; preds = %for.body.i39.i.i1041.i.i.i.i.i.i.i + br label %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.i.i921.i.i.i.i.i.i.i, !llvm.loop !125 + +invoke.cont48.preheader.i.i855.i.i.i.i.i.i.i: ; preds = %invoke.cont.i.i853.i.i.i.i.i.i.i + %394 = load float, ptr %seg.i.i784.i.i.i.i.i.i.i, align 4 + br label %invoke.cont48.i.i856.i.i.i.i.i.i.i + +invoke.cont48.i.i856.i.i.i.i.i.i.i: ; preds = %invoke.cont97.i.i1000.i.i.i.i.i.i.i, %invoke.cont48.preheader.i.i855.i.i.i.i.i.i.i + %u.addr.1241.i.i857.i.i.i.i.i.i.i = phi float [ %.sroa.speculated.i.i.i872.i.i.i.i.i.i.i, %invoke.cont97.i.i1000.i.i.i.i.i.i.i ], [ %u.addr.0.i23.i85145.i.i.i.i.i.i.i, %invoke.cont48.preheader.i.i855.i.i.i.i.i.i.i ] + %tMin38.0240.i.i858.i.i.i.i.i.i.i = phi float [ %add.i.i861.i.i.i.i.i.i.i, %invoke.cont97.i.i1000.i.i.i.i.i.i.i ], [ %394, %invoke.cont48.preheader.i.i855.i.i.i.i.i.i.i ] + %395 = load float, ptr %sigma_maj.i.i835.i.i.i.i.i.i.i, align 4 + %sub.i.i.i859.i.i.i.i.i.i.i = fsub float 1.000000e+00, %u.addr.1241.i.i857.i.i.i.i.i.i.i + %call.i.i.i.i860.i.i.i.i.i.i.i = call noundef float @logf(float noundef %sub.i.i.i859.i.i.i.i.i.i.i) #25 + %396 = fdiv float %call.i.i.i.i860.i.i.i.i.i.i.i, %395 + %add.i.i861.i.i.i.i.i.i.i = fsub float %tMin38.0240.i.i858.i.i.i.i.i.i.i, %396 %397 = load i64, ptr %rng.i.i.i.i, align 8 - %mul.i.i54.i.i874.i.i.i.i.i.i.i = mul i64 %397, 6364136223846793005 + %mul.i.i54.i.i862.i.i.i.i.i.i.i = mul i64 %397, 6364136223846793005 %398 = load i64, ptr %inc.i.i.i.i.i.i, align 8 - %add.i.i55.i.i875.i.i.i.i.i.i.i = add i64 %mul.i.i54.i.i874.i.i.i.i.i.i.i, %398 - store i64 %add.i.i55.i.i875.i.i.i.i.i.i.i, ptr %rng.i.i.i.i, align 8 + %add.i.i55.i.i863.i.i.i.i.i.i.i = add i64 %mul.i.i54.i.i862.i.i.i.i.i.i.i, %398 + store i64 %add.i.i55.i.i863.i.i.i.i.i.i.i, ptr %rng.i.i.i.i, align 8 %399 = lshr i64 %397, 45 %400 = lshr i64 %397, 27 - %shr3.i.i.i.i876.i.i.i.i.i.i.i = xor i64 %399, %400 - %conv.i.i.i.i877.i.i.i.i.i.i.i = trunc i64 %shr3.i.i.i.i876.i.i.i.i.i.i.i to i32 - %shr4.i.i.i.i878.i.i.i.i.i.i.i = lshr i64 %397, 59 - %conv5.i.i.i.i879.i.i.i.i.i.i.i = trunc i64 %shr4.i.i.i.i878.i.i.i.i.i.i.i to i32 - %shr6.i.i.i.i880.i.i.i.i.i.i.i = lshr i32 %conv.i.i.i.i877.i.i.i.i.i.i.i, %conv5.i.i.i.i879.i.i.i.i.i.i.i - %add7.i.i56.i.i881.i.i.i.i.i.i.i = sub nsw i32 0, %conv5.i.i.i.i879.i.i.i.i.i.i.i - %and.i.i57.i.i882.i.i.i.i.i.i.i = and i32 %add7.i.i56.i.i881.i.i.i.i.i.i.i, 31 - %shl.i.i58.i.i883.i.i.i.i.i.i.i = shl i32 %conv.i.i.i.i877.i.i.i.i.i.i.i, %and.i.i57.i.i882.i.i.i.i.i.i.i - %or.i.i59.i.i884.i.i.i.i.i.i.i = or i32 %shr6.i.i.i.i880.i.i.i.i.i.i.i, %shl.i.i58.i.i883.i.i.i.i.i.i.i - %conv.i.i.i885.i.i.i.i.i.i.i = uitofp i32 %or.i.i59.i.i884.i.i.i.i.i.i.i to float - %mul.i60.i.i886.i.i.i.i.i.i.i = fmul float %conv.i.i.i885.i.i.i.i.i.i.i, 0x3DF0000000000000 - %cmp.i.i61.i.i887.i.i.i.i.i.i.i = fcmp olt float %mul.i60.i.i886.i.i.i.i.i.i.i, 0x3FEFFFFFE0000000 - %.sroa.speculated.i.i.i888.i.i.i.i.i.i.i = select i1 %cmp.i.i61.i.i887.i.i.i.i.i.i.i, float %mul.i60.i.i886.i.i.i.i.i.i.i, float 0x3FEFFFFFE0000000 - %401 = load i8, ptr %set.i.i.i846.i.i.i.i.i.i.i, align 4 + %shr3.i.i.i.i864.i.i.i.i.i.i.i = xor i64 %399, %400 + %conv.i.i.i.i865.i.i.i.i.i.i.i = trunc i64 %shr3.i.i.i.i864.i.i.i.i.i.i.i to i32 + %shr4.i.i.i.i866.i.i.i.i.i.i.i = lshr i64 %397, 59 + %conv5.i.i.i.i867.i.i.i.i.i.i.i = trunc i64 %shr4.i.i.i.i866.i.i.i.i.i.i.i to i32 + %or.i.i56.i.i868.i.i.i.i.i.i.i = call noundef i32 @llvm.fshr.i32(i32 %conv.i.i.i.i865.i.i.i.i.i.i.i, i32 %conv.i.i.i.i865.i.i.i.i.i.i.i, i32 %conv5.i.i.i.i867.i.i.i.i.i.i.i) + %conv.i.i.i869.i.i.i.i.i.i.i = uitofp i32 %or.i.i56.i.i868.i.i.i.i.i.i.i to float + %mul.i57.i.i870.i.i.i.i.i.i.i = fmul float %conv.i.i.i869.i.i.i.i.i.i.i, 0x3DF0000000000000 + %cmp.i.i58.i.i871.i.i.i.i.i.i.i = fcmp olt float %mul.i57.i.i870.i.i.i.i.i.i.i, 0x3FEFFFFFE0000000 + %.sroa.speculated.i.i.i872.i.i.i.i.i.i.i = select i1 %cmp.i.i58.i.i871.i.i.i.i.i.i.i, float %mul.i57.i.i870.i.i.i.i.i.i.i, float 0x3FEFFFFFE0000000 + %401 = load i8, ptr %set.i.i.i834.i.i.i.i.i.i.i, align 4 %402 = and i8 %401, 1 - %tobool.not.i.i63.i.i889.i.i.i.i.i.i.i = icmp eq i8 %402, 0 - br i1 %tobool.not.i.i63.i.i889.i.i.i.i.i.i.i, label %land.rhs.i.i51.invoke.i.i.i.i.i.i.invoke.i.i.i, label %invoke.cont52.i.i890.i.i.i.i.i.i.i - -invoke.cont52.i.i890.i.i.i.i.i.i.i: ; preds = %invoke.cont48.i.i868.i.i.i.i.i.i.i - %403 = load float, ptr %tMax54.i.i849.i.i.i.i.i.i.i, align 4 - %cmp55.i.i891.i.i.i.i.i.i.i = fcmp olt float %add.i.i873.i.i.i.i.i.i.i, %403 - br i1 %cmp55.i.i891.i.i.i.i.i.i.i, label %invoke.cont61.i.i939.i.i.i.i.i.i.i, label %invoke.cont103.i.i892.i.i.i.i.i.i.i - -invoke.cont61.i.i939.i.i.i.i.i.i.i: ; preds = %invoke.cont52.i.i890.i.i.i.i.i.i.i - %sub59.i.i940.i.i.i.i.i.i.i = fsub float %add.i.i873.i.i.i.i.i.i.i, %tMin38.0243.i.i870.i.i.i.i.i.i.i - %fneg60.i.i941.i.i.i.i.i.i.i = fneg float %sub59.i.i940.i.i.i.i.i.i.i - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i.i72.i.i789.i.i.i.i.i.i.i) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i.i72.i.i789.i.i.i.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(16) %sigma_maj.i.i847.i.i.i.i.i.i.i, i64 16, i1 false) - br label %for.body.i.i73.i.i942.i.i.i.i.i.i.i - -for.body.i.i73.i.i942.i.i.i.i.i.i.i: ; preds = %for.body.i.i73.i.i942.i.i.i.i.i.i.i, %invoke.cont61.i.i939.i.i.i.i.i.i.i - %indvars.iv.i.i74.i.i943.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont61.i.i939.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i77.i.i946.i.i.i.i.i.i.i, %for.body.i.i73.i.i942.i.i.i.i.i.i.i ] - %arrayidx.i.i.i75.i.i944.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i72.i.i789.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i74.i.i943.i.i.i.i.i.i.i - %404 = load float, ptr %arrayidx.i.i.i75.i.i944.i.i.i.i.i.i.i, align 4 - %mul.i.i76.i.i945.i.i.i.i.i.i.i = fmul float %404, %fneg60.i.i941.i.i.i.i.i.i.i - store float %mul.i.i76.i.i945.i.i.i.i.i.i.i, ptr %arrayidx.i.i.i75.i.i944.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i.i77.i.i946.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i74.i.i943.i.i.i.i.i.i.i, 1 - %exitcond.not.i.i78.i.i947.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i77.i.i946.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i.i78.i.i947.i.i.i.i.i.i.i, label %invoke.cont64.i.i948.i.i.i.i.i.i.i, label %for.body.i.i73.i.i942.i.i.i.i.i.i.i, !llvm.loop !110 - -invoke.cont64.i.i948.i.i.i.i.i.i.i: ; preds = %for.body.i.i73.i.i942.i.i.i.i.i.i.i - %.fca.0.load.i.i79.i.i949.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i.i72.i.i789.i.i.i.i.i.i.i, align 8 - %.fca.1.load.i.i82.i.i950.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i.i81.i.i850.i.i.i.i.i.i.i, align 8 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i.i72.i.i789.i.i.i.i.i.i.i) - store <2 x float> %.fca.0.load.i.i79.i.i949.i.i.i.i.i.i.i, ptr %ref.tmp58.i.i800.i.i.i.i.i.i.i, align 8 - store <2 x float> %.fca.1.load.i.i82.i.i950.i.i.i.i.i.i.i, ptr %70, align 8 - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i85.i.i788.i.i.i.i.i.i.i) - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i85.i.i788.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) - br label %for.body.i86.i.i951.i.i.i.i.i.i.i - -for.body.i86.i.i951.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i103.i.i968.i.i.i.i.i.i.i, %invoke.cont64.i.i948.i.i.i.i.i.i.i - %indvars.iv.i87.i.i952.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont64.i.i948.i.i.i.i.i.i.i ], [ %indvars.iv.next.i106.i.i971.i.i.i.i.i.i.i, %_ZN4pbrt7FastExpEf.exit.i103.i.i968.i.i.i.i.i.i.i ] - %arrayidx.i.i.i88.i.i953.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp58.i.i800.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i87.i.i952.i.i.i.i.i.i.i - %405 = load float, ptr %arrayidx.i.i.i88.i.i953.i.i.i.i.i.i.i, align 4 - %mul.i.i89.i.i954.i.i.i.i.i.i.i = fmul float %405, 0x3FF7154760000000 - %406 = call noundef float @llvm.floor.f32(float %mul.i.i89.i.i954.i.i.i.i.i.i.i) - %sub.i.i90.i.i955.i.i.i.i.i.i.i = fsub float %mul.i.i89.i.i954.i.i.i.i.i.i.i, %406 - %conv.i4.i91.i.i956.i.i.i.i.i.i.i = fptosi float %406 to i32 - %407 = call noundef float @llvm.fma.f32(float %sub.i.i90.i.i955.i.i.i.i.i.i.i, float 0x3FB4015920000000, float 0x3FCCF34160000000) - %408 = call noundef float @llvm.fma.f32(float %sub.i.i90.i.i955.i.i.i.i.i.i.i, float %407, float 0x3FE6420080000000) - %409 = call noundef float @llvm.fma.f32(float %sub.i.i90.i.i955.i.i.i.i.i.i.i, float %408, float 1.000000e+00) + %tobool.not.i.i60.i.i873.i.i.i.i.i.i.i = icmp eq i8 %402, 0 + br i1 %tobool.not.i.i60.i.i873.i.i.i.i.i.i.i, label %land.rhs.i.i51.invoke.i.i.i.i.i.i.invoke.i.i.i, label %invoke.cont52.i.i874.i.i.i.i.i.i.i + +invoke.cont52.i.i874.i.i.i.i.i.i.i: ; preds = %invoke.cont48.i.i856.i.i.i.i.i.i.i + %403 = load float, ptr %tMax54.i.i837.i.i.i.i.i.i.i, align 4 + %cmp55.i.i875.i.i.i.i.i.i.i = fcmp olt float %add.i.i861.i.i.i.i.i.i.i, %403 + br i1 %cmp55.i.i875.i.i.i.i.i.i.i, label %invoke.cont61.i.i923.i.i.i.i.i.i.i, label %invoke.cont103.i.i876.i.i.i.i.i.i.i + +invoke.cont61.i.i923.i.i.i.i.i.i.i: ; preds = %invoke.cont52.i.i874.i.i.i.i.i.i.i + %sub59.i.i924.i.i.i.i.i.i.i = fsub float %add.i.i861.i.i.i.i.i.i.i, %tMin38.0240.i.i858.i.i.i.i.i.i.i + %fneg60.i.i925.i.i.i.i.i.i.i = fneg float %sub59.i.i924.i.i.i.i.i.i.i + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i.i69.i.i777.i.i.i.i.i.i.i) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i.i69.i.i777.i.i.i.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(16) %sigma_maj.i.i835.i.i.i.i.i.i.i, i64 16, i1 false) + br label %for.body.i.i70.i.i926.i.i.i.i.i.i.i + +for.body.i.i70.i.i926.i.i.i.i.i.i.i: ; preds = %for.body.i.i70.i.i926.i.i.i.i.i.i.i, %invoke.cont61.i.i923.i.i.i.i.i.i.i + %indvars.iv.i.i71.i.i927.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont61.i.i923.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i74.i.i930.i.i.i.i.i.i.i, %for.body.i.i70.i.i926.i.i.i.i.i.i.i ] + %arrayidx.i.i.i72.i.i928.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i69.i.i777.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i71.i.i927.i.i.i.i.i.i.i + %404 = load float, ptr %arrayidx.i.i.i72.i.i928.i.i.i.i.i.i.i, align 4 + %mul.i.i73.i.i929.i.i.i.i.i.i.i = fmul float %404, %fneg60.i.i925.i.i.i.i.i.i.i + store float %mul.i.i73.i.i929.i.i.i.i.i.i.i, ptr %arrayidx.i.i.i72.i.i928.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i.i74.i.i930.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i71.i.i927.i.i.i.i.i.i.i, 1 + %exitcond.not.i.i75.i.i931.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i74.i.i930.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i.i75.i.i931.i.i.i.i.i.i.i, label %invoke.cont64.i.i932.i.i.i.i.i.i.i, label %for.body.i.i70.i.i926.i.i.i.i.i.i.i, !llvm.loop !110 + +invoke.cont64.i.i932.i.i.i.i.i.i.i: ; preds = %for.body.i.i70.i.i926.i.i.i.i.i.i.i + %.fca.0.load.i.i76.i.i933.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i.i69.i.i777.i.i.i.i.i.i.i, align 8 + %.fca.1.load.i.i79.i.i934.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i.i78.i.i838.i.i.i.i.i.i.i, align 8 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i.i69.i.i777.i.i.i.i.i.i.i) + store <2 x float> %.fca.0.load.i.i76.i.i933.i.i.i.i.i.i.i, ptr %ref.tmp58.i.i788.i.i.i.i.i.i.i, align 8 + store <2 x float> %.fca.1.load.i.i79.i.i934.i.i.i.i.i.i.i, ptr %70, align 8 + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i82.i.i776.i.i.i.i.i.i.i) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i82.i.i776.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) + br label %for.body.i83.i.i935.i.i.i.i.i.i.i + +for.body.i83.i.i935.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i100.i.i952.i.i.i.i.i.i.i, %invoke.cont64.i.i932.i.i.i.i.i.i.i + %indvars.iv.i84.i.i936.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont64.i.i932.i.i.i.i.i.i.i ], [ %indvars.iv.next.i103.i.i955.i.i.i.i.i.i.i, %_ZN4pbrt7FastExpEf.exit.i100.i.i952.i.i.i.i.i.i.i ] + %arrayidx.i.i.i85.i.i937.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp58.i.i788.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i84.i.i936.i.i.i.i.i.i.i + %405 = load float, ptr %arrayidx.i.i.i85.i.i937.i.i.i.i.i.i.i, align 4 + %mul.i.i86.i.i938.i.i.i.i.i.i.i = fmul float %405, 0x3FF7154760000000 + %406 = call noundef float @llvm.floor.f32(float %mul.i.i86.i.i938.i.i.i.i.i.i.i) + %sub.i.i87.i.i939.i.i.i.i.i.i.i = fsub float %mul.i.i86.i.i938.i.i.i.i.i.i.i, %406 + %conv.i4.i88.i.i940.i.i.i.i.i.i.i = fptosi float %406 to i32 + %407 = call noundef float @llvm.fma.f32(float %sub.i.i87.i.i939.i.i.i.i.i.i.i, float 0x3FB4015920000000, float 0x3FCCF34160000000) + %408 = call noundef float @llvm.fma.f32(float %sub.i.i87.i.i939.i.i.i.i.i.i.i, float %407, float 0x3FE6420080000000) + %409 = call noundef float @llvm.fma.f32(float %sub.i.i87.i.i939.i.i.i.i.i.i.i, float %408, float 1.000000e+00) %410 = bitcast float %409 to i32 - %shr.i.i.i92.i.i957.i.i.i.i.i.i.i = lshr i32 %410, 23 - %sub.i.i.i93.i.i958.i.i.i.i.i.i.i = add i32 %conv.i4.i91.i.i956.i.i.i.i.i.i.i, -127 - %add.i.i94.i.i959.i.i.i.i.i.i.i = add i32 %sub.i.i.i93.i.i958.i.i.i.i.i.i.i, %shr.i.i.i92.i.i957.i.i.i.i.i.i.i - %cmp.i.i95.i.i960.i.i.i.i.i.i.i = icmp slt i32 %add.i.i94.i.i959.i.i.i.i.i.i.i, -126 - br i1 %cmp.i.i95.i.i960.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i103.i.i968.i.i.i.i.i.i.i, label %if.end.i.i96.i.i961.i.i.i.i.i.i.i - -if.end.i.i96.i.i961.i.i.i.i.i.i.i: ; preds = %for.body.i86.i.i951.i.i.i.i.i.i.i - %cmp3.i.i97.i.i962.i.i.i.i.i.i.i = icmp sgt i32 %add.i.i94.i.i959.i.i.i.i.i.i.i, 127 - br i1 %cmp3.i.i97.i.i962.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i103.i.i968.i.i.i.i.i.i.i, label %if.end5.i.i98.i.i963.i.i.i.i.i.i.i - -if.end5.i.i98.i.i963.i.i.i.i.i.i.i: ; preds = %if.end.i.i96.i.i961.i.i.i.i.i.i.i - %and.i.i99.i.i964.i.i.i.i.i.i.i = and i32 %410, -2139095041 - %add7.i.i100.i.i965.i.i.i.i.i.i.i = shl nsw i32 %add.i.i94.i.i959.i.i.i.i.i.i.i, 23 - %shl.i.i101.i.i966.i.i.i.i.i.i.i = add i32 %add7.i.i100.i.i965.i.i.i.i.i.i.i, 1065353216 - %or.i.i102.i.i967.i.i.i.i.i.i.i = or i32 %shl.i.i101.i.i966.i.i.i.i.i.i.i, %and.i.i99.i.i964.i.i.i.i.i.i.i - %411 = bitcast i32 %or.i.i102.i.i967.i.i.i.i.i.i.i to float - br label %_ZN4pbrt7FastExpEf.exit.i103.i.i968.i.i.i.i.i.i.i - -_ZN4pbrt7FastExpEf.exit.i103.i.i968.i.i.i.i.i.i.i: ; preds = %if.end5.i.i98.i.i963.i.i.i.i.i.i.i, %if.end.i.i96.i.i961.i.i.i.i.i.i.i, %for.body.i86.i.i951.i.i.i.i.i.i.i - %retval.0.i.i104.i.i969.i.i.i.i.i.i.i = phi float [ %411, %if.end5.i.i98.i.i963.i.i.i.i.i.i.i ], [ 0.000000e+00, %for.body.i86.i.i951.i.i.i.i.i.i.i ], [ 0x7FF0000000000000, %if.end.i.i96.i.i961.i.i.i.i.i.i.i ] - %arrayidx.i.i6.i105.i.i970.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i85.i.i788.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i87.i.i952.i.i.i.i.i.i.i - store float %retval.0.i.i104.i.i969.i.i.i.i.i.i.i, ptr %arrayidx.i.i6.i105.i.i970.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i106.i.i971.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i87.i.i952.i.i.i.i.i.i.i, 1 - %exitcond.not.i107.i.i972.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i106.i.i971.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i107.i.i972.i.i.i.i.i.i.i, label %invoke.cont68.i.i973.i.i.i.i.i.i.i, label %for.body.i86.i.i951.i.i.i.i.i.i.i, !llvm.loop !111 - -invoke.cont68.i.i973.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i103.i.i968.i.i.i.i.i.i.i - %.fca.0.load.i108.i.i974.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i85.i.i788.i.i.i.i.i.i.i, align 8 - %.fca.1.load.i111.i.i975.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i110.i.i851.i.i.i.i.i.i.i, align 8 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i85.i.i788.i.i.i.i.i.i.i) - store <2 x float> %.fca.0.load.i108.i.i974.i.i.i.i.i.i.i, ptr %ref.tmp57.i.i799.i.i.i.i.i.i.i, align 8 - store <2 x float> %.fca.1.load.i111.i.i975.i.i.i.i.i.i.i, ptr %71, align 8 - br label %for.body.i114.i.i976.i.i.i.i.i.i.i - -for.body.i114.i.i976.i.i.i.i.i.i.i: ; preds = %for.body.i114.i.i976.i.i.i.i.i.i.i, %invoke.cont68.i.i973.i.i.i.i.i.i.i - %indvars.iv.i115.i.i977.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont68.i.i973.i.i.i.i.i.i.i ], [ %indvars.iv.next.i119.i.i981.i.i.i.i.i.i.i, %for.body.i114.i.i976.i.i.i.i.i.i.i ] - %arrayidx.i.i116.i.i978.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp57.i.i799.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i115.i.i977.i.i.i.i.i.i.i - %412 = load float, ptr %arrayidx.i.i116.i.i978.i.i.i.i.i.i.i, align 4 - %arrayidx.i4.i117.i.i979.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %T_maj.i.i795.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i115.i.i977.i.i.i.i.i.i.i - %413 = load float, ptr %arrayidx.i4.i117.i.i979.i.i.i.i.i.i.i, align 4 - %mul.i118.i.i980.i.i.i.i.i.i.i = fmul float %412, %413 - store float %mul.i118.i.i980.i.i.i.i.i.i.i, ptr %arrayidx.i4.i117.i.i979.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i119.i.i981.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i115.i.i977.i.i.i.i.i.i.i, 1 - %exitcond.not.i120.i.i982.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i119.i.i981.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i120.i.i982.i.i.i.i.i.i.i, label %invoke.cont75.i.i983.i.i.i.i.i.i.i, label %for.body.i114.i.i976.i.i.i.i.i.i.i, !llvm.loop !112 - -invoke.cont75.i.i983.i.i.i.i.i.i.i: ; preds = %for.body.i114.i.i976.i.i.i.i.i.i.i - %414 = insertelement <2 x float> poison, float %add.i.i873.i.i.i.i.i.i.i, i64 0 + %shr.i.i.i89.i.i941.i.i.i.i.i.i.i = lshr i32 %410, 23 + %sub.i.i.i90.i.i942.i.i.i.i.i.i.i = add i32 %conv.i4.i88.i.i940.i.i.i.i.i.i.i, -127 + %add.i.i91.i.i943.i.i.i.i.i.i.i = add i32 %sub.i.i.i90.i.i942.i.i.i.i.i.i.i, %shr.i.i.i89.i.i941.i.i.i.i.i.i.i + %cmp.i.i92.i.i944.i.i.i.i.i.i.i = icmp slt i32 %add.i.i91.i.i943.i.i.i.i.i.i.i, -126 + br i1 %cmp.i.i92.i.i944.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i100.i.i952.i.i.i.i.i.i.i, label %if.end.i.i93.i.i945.i.i.i.i.i.i.i + +if.end.i.i93.i.i945.i.i.i.i.i.i.i: ; preds = %for.body.i83.i.i935.i.i.i.i.i.i.i + %cmp3.i.i94.i.i946.i.i.i.i.i.i.i = icmp sgt i32 %add.i.i91.i.i943.i.i.i.i.i.i.i, 127 + br i1 %cmp3.i.i94.i.i946.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i100.i.i952.i.i.i.i.i.i.i, label %if.end5.i.i95.i.i947.i.i.i.i.i.i.i + +if.end5.i.i95.i.i947.i.i.i.i.i.i.i: ; preds = %if.end.i.i93.i.i945.i.i.i.i.i.i.i + %and.i.i96.i.i948.i.i.i.i.i.i.i = and i32 %410, -2139095041 + %add7.i.i97.i.i949.i.i.i.i.i.i.i = shl nsw i32 %add.i.i91.i.i943.i.i.i.i.i.i.i, 23 + %shl.i.i98.i.i950.i.i.i.i.i.i.i = add i32 %add7.i.i97.i.i949.i.i.i.i.i.i.i, 1065353216 + %or.i.i99.i.i951.i.i.i.i.i.i.i = or i32 %shl.i.i98.i.i950.i.i.i.i.i.i.i, %and.i.i96.i.i948.i.i.i.i.i.i.i + %411 = bitcast i32 %or.i.i99.i.i951.i.i.i.i.i.i.i to float + br label %_ZN4pbrt7FastExpEf.exit.i100.i.i952.i.i.i.i.i.i.i + +_ZN4pbrt7FastExpEf.exit.i100.i.i952.i.i.i.i.i.i.i: ; preds = %if.end5.i.i95.i.i947.i.i.i.i.i.i.i, %if.end.i.i93.i.i945.i.i.i.i.i.i.i, %for.body.i83.i.i935.i.i.i.i.i.i.i + %retval.0.i.i101.i.i953.i.i.i.i.i.i.i = phi float [ %411, %if.end5.i.i95.i.i947.i.i.i.i.i.i.i ], [ 0.000000e+00, %for.body.i83.i.i935.i.i.i.i.i.i.i ], [ 0x7FF0000000000000, %if.end.i.i93.i.i945.i.i.i.i.i.i.i ] + %arrayidx.i.i6.i102.i.i954.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i82.i.i776.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i84.i.i936.i.i.i.i.i.i.i + store float %retval.0.i.i101.i.i953.i.i.i.i.i.i.i, ptr %arrayidx.i.i6.i102.i.i954.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i103.i.i955.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i84.i.i936.i.i.i.i.i.i.i, 1 + %exitcond.not.i104.i.i956.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i103.i.i955.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i104.i.i956.i.i.i.i.i.i.i, label %invoke.cont68.i.i957.i.i.i.i.i.i.i, label %for.body.i83.i.i935.i.i.i.i.i.i.i, !llvm.loop !111 + +invoke.cont68.i.i957.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i100.i.i952.i.i.i.i.i.i.i + %.fca.0.load.i105.i.i958.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i82.i.i776.i.i.i.i.i.i.i, align 8 + %.fca.1.load.i108.i.i959.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i107.i.i839.i.i.i.i.i.i.i, align 8 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i82.i.i776.i.i.i.i.i.i.i) + store <2 x float> %.fca.0.load.i105.i.i958.i.i.i.i.i.i.i, ptr %ref.tmp57.i.i787.i.i.i.i.i.i.i, align 8 + store <2 x float> %.fca.1.load.i108.i.i959.i.i.i.i.i.i.i, ptr %71, align 8 + br label %for.body.i111.i.i960.i.i.i.i.i.i.i + +for.body.i111.i.i960.i.i.i.i.i.i.i: ; preds = %for.body.i111.i.i960.i.i.i.i.i.i.i, %invoke.cont68.i.i957.i.i.i.i.i.i.i + %indvars.iv.i112.i.i961.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont68.i.i957.i.i.i.i.i.i.i ], [ %indvars.iv.next.i116.i.i965.i.i.i.i.i.i.i, %for.body.i111.i.i960.i.i.i.i.i.i.i ] + %arrayidx.i.i113.i.i962.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp57.i.i787.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i112.i.i961.i.i.i.i.i.i.i + %412 = load float, ptr %arrayidx.i.i113.i.i962.i.i.i.i.i.i.i, align 4 + %arrayidx.i4.i114.i.i963.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %T_maj.i.i783.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i112.i.i961.i.i.i.i.i.i.i + %413 = load float, ptr %arrayidx.i4.i114.i.i963.i.i.i.i.i.i.i, align 4 + %mul.i115.i.i964.i.i.i.i.i.i.i = fmul float %412, %413 + store float %mul.i115.i.i964.i.i.i.i.i.i.i, ptr %arrayidx.i4.i114.i.i963.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i116.i.i965.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i112.i.i961.i.i.i.i.i.i.i, 1 + %exitcond.not.i117.i.i966.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i116.i.i965.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i117.i.i966.i.i.i.i.i.i.i, label %invoke.cont75.i.i967.i.i.i.i.i.i.i, label %for.body.i111.i.i960.i.i.i.i.i.i.i, !llvm.loop !112 + +invoke.cont75.i.i967.i.i.i.i.i.i.i: ; preds = %for.body.i111.i.i960.i.i.i.i.i.i.i + %414 = insertelement <2 x float> poison, float %add.i.i861.i.i.i.i.i.i.i, i64 0 %415 = shufflevector <2 x float> %414, <2 x float> poison, <2 x i32> zeroinitializer %416 = fmul <2 x float> %375, %415 - %mul3.i.i.i.i986.i.i.i.i.i.i.i = fmul float %div3.i.i.i.i830.i.i.i.i.i.i.i, %add.i.i873.i.i.i.i.i.i.i - %417 = fadd <2 x float> %ray.sroa.0.0347.i.i.i.i, %416 - %add6.i.i.i.i989.i.i.i.i.i.i.i = fadd float %ray.sroa.9.0348.i.i.i.i, %mul3.i.i.i.i986.i.i.i.i.i.i.i - call void @_ZNK4pbrt13NanoVDBMedium11SamplePointENS_6Point3IfEERKNS_18SampledWavelengthsE(ptr nonnull sret(%"struct.pbrt::MediumProperties") align 8 %mp.i.i801.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(404) %376, <2 x float> %417, float %add6.i.i.i.i989.i.i.i.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(32) %lambda.i.i.i.i) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp85.i.i802.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(32) %mp.i.i801.i.i.i.i.i.i.i, i64 32, i1 false) - %418 = load i64, ptr %phase3.i.i.i853.i.i.i.i.i.i.i, align 8 - store i64 %418, ptr %phase.i.i.i852.i.i.i.i.i.i.i, align 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %Le.i.i.i854.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %Le4.i.i.i855.i.i.i.i.i.i.i, i64 16, i1 false) - %419 = load i8, ptr %set.i.i.i846.i.i.i.i.i.i.i, align 4 + %mul3.i.i.i.i970.i.i.i.i.i.i.i = fmul float %div3.i.i.i.i818.i.i.i.i.i.i.i, %add.i.i861.i.i.i.i.i.i.i + %417 = fadd <2 x float> %ray.sroa.0.0346.i.i.i.i, %416 + %add6.i.i.i.i973.i.i.i.i.i.i.i = fadd float %ray.sroa.9.0347.i.i.i.i, %mul3.i.i.i.i970.i.i.i.i.i.i.i + call void @_ZNK4pbrt13NanoVDBMedium11SamplePointENS_6Point3IfEERKNS_18SampledWavelengthsE(ptr nonnull sret(%"struct.pbrt::MediumProperties") align 8 %mp.i.i789.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(404) %376, <2 x float> %417, float %add6.i.i.i.i973.i.i.i.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(32) %lambda.i.i.i.i) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp85.i.i790.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(32) %mp.i.i789.i.i.i.i.i.i.i, i64 32, i1 false) + %418 = load i64, ptr %phase3.i.i.i841.i.i.i.i.i.i.i, align 8 + store i64 %418, ptr %phase.i.i.i840.i.i.i.i.i.i.i, align 8 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %Le.i.i.i842.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %Le4.i.i.i843.i.i.i.i.i.i.i, i64 16, i1 false) + %419 = load i8, ptr %set.i.i.i834.i.i.i.i.i.i.i, align 4 %420 = and i8 %419, 1 - %tobool.not.i.i140.i.i992.i.i.i.i.i.i.i = icmp eq i8 %420, 0 - br i1 %tobool.not.i.i140.i.i992.i.i.i.i.i.i.i, label %land.rhs.i.i51.invoke.i.i.i.i.i.i.invoke.i.i.i, label %invoke.cont88.i.i993.i.i.i.i.i.i.i - -invoke.cont88.i.i993.i.i.i.i.i.i.i: ; preds = %invoke.cont75.i.i983.i.i.i.i.i.i.i - %agg.tmp87.sroa.0.0.copyload.i.i994.i.i.i.i.i.i.i = load <2 x float>, ptr %sigma_maj.i.i847.i.i.i.i.i.i.i, align 4 - %agg.tmp87.sroa.2.0.copyload.i.i995.i.i.i.i.i.i.i = load <2 x float>, ptr %agg.tmp87.sroa.2.0.sigma_maj90.sroa_idx.i.i856.i.i.i.i.i.i.i, align 4 - %agg.tmp91.sroa.0.0.copyload.i.i996.i.i.i.i.i.i.i = load <2 x float>, ptr %T_maj.i.i795.i.i.i.i.i.i.i, align 8 - %agg.tmp91.sroa.2.0.copyload.i.i997.i.i.i.i.i.i.i = load <2 x float>, ptr %agg.tmp91.sroa.2.0.T_maj.sroa_idx.i.i857.i.i.i.i.i.i.i, align 8 - %call93.i.i998.i.i.i.i.i.i.i = call fastcc noundef zeroext i1 @"_ZZN4pbrt18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS1_17IntersectShadowTrEiS5_S9_ENKSA_clEiEUlNS_6Point3IfEEE_EEvS3_S9_T_T0_ENKUlSE_NS_16MediumPropertiesENS_15SampledSpectrumESJ_E_clESE_SI_SJ_SJ_"(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp21.i806.i.i.i.i.i.i.i, ptr noundef nonnull %agg.tmp85.i.i802.i.i.i.i.i.i.i, <2 x float> %agg.tmp87.sroa.0.0.copyload.i.i994.i.i.i.i.i.i.i, <2 x float> %agg.tmp87.sroa.2.0.copyload.i.i995.i.i.i.i.i.i.i, <2 x float> %agg.tmp91.sroa.0.0.copyload.i.i996.i.i.i.i.i.i.i, <2 x float> %agg.tmp91.sroa.2.0.copyload.i.i997.i.i.i.i.i.i.i) - br i1 %call93.i.i998.i.i.i.i.i.i.i, label %if.end95.i.i1010.i.i.i.i.i.i.i, label %while.end125.i.i999.i.i.i.i.i.i.i - -if.end95.i.i1010.i.i.i.i.i.i.i: ; preds = %invoke.cont88.i.i993.i.i.i.i.i.i.i - call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %ref.tmp96.i.i803.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) - br label %for.body.i.i144.i.i1011.i.i.i.i.i.i.i - -for.body.i.i144.i.i1011.i.i.i.i.i.i.i: ; preds = %for.body.i.i144.i.i1011.i.i.i.i.i.i.i, %if.end95.i.i1010.i.i.i.i.i.i.i - %indvars.iv.i.i145.i.i1012.i.i.i.i.i.i.i = phi i64 [ 0, %if.end95.i.i1010.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i147.i.i1014.i.i.i.i.i.i.i, %for.body.i.i144.i.i1011.i.i.i.i.i.i.i ] - %arrayidx.i.i146.i.i1013.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp96.i.i803.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i145.i.i1012.i.i.i.i.i.i.i - store float 1.000000e+00, ptr %arrayidx.i.i146.i.i1013.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i.i147.i.i1014.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i145.i.i1012.i.i.i.i.i.i.i, 1 - %exitcond.not.i.i148.i.i1015.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i147.i.i1014.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i.i148.i.i1015.i.i.i.i.i.i.i, label %invoke.cont97.i.i1016.i.i.i.i.i.i.i, label %for.body.i.i144.i.i1011.i.i.i.i.i.i.i, !llvm.loop !103 - -invoke.cont97.i.i1016.i.i.i.i.i.i.i: ; preds = %for.body.i.i144.i.i1011.i.i.i.i.i.i.i - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %T_maj.i.i795.i.i.i.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(16) %ref.tmp96.i.i803.i.i.i.i.i.i.i, i64 16, i1 false) - %421 = load i8, ptr %set.i.i.i846.i.i.i.i.i.i.i, align 4 + %tobool.not.i.i137.i.i976.i.i.i.i.i.i.i = icmp eq i8 %420, 0 + br i1 %tobool.not.i.i137.i.i976.i.i.i.i.i.i.i, label %land.rhs.i.i51.invoke.i.i.i.i.i.i.invoke.i.i.i, label %invoke.cont88.i.i977.i.i.i.i.i.i.i + +invoke.cont88.i.i977.i.i.i.i.i.i.i: ; preds = %invoke.cont75.i.i967.i.i.i.i.i.i.i + %agg.tmp87.sroa.0.0.copyload.i.i978.i.i.i.i.i.i.i = load <2 x float>, ptr %sigma_maj.i.i835.i.i.i.i.i.i.i, align 4 + %agg.tmp87.sroa.2.0.copyload.i.i979.i.i.i.i.i.i.i = load <2 x float>, ptr %agg.tmp87.sroa.2.0.sigma_maj90.sroa_idx.i.i844.i.i.i.i.i.i.i, align 4 + %agg.tmp91.sroa.0.0.copyload.i.i980.i.i.i.i.i.i.i = load <2 x float>, ptr %T_maj.i.i783.i.i.i.i.i.i.i, align 8 + %agg.tmp91.sroa.2.0.copyload.i.i981.i.i.i.i.i.i.i = load <2 x float>, ptr %agg.tmp91.sroa.2.0.T_maj.sroa_idx.i.i845.i.i.i.i.i.i.i, align 8 + %call93.i.i982.i.i.i.i.i.i.i = call fastcc noundef zeroext i1 @"_ZZN4pbrt18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS1_17IntersectShadowTrEiS5_S9_ENKSA_clEiEUlNS_6Point3IfEEE_EEvS3_S9_T_T0_ENKUlSE_NS_16MediumPropertiesENS_15SampledSpectrumESJ_E_clESE_SI_SJ_SJ_"(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp21.i794.i.i.i.i.i.i.i, ptr noundef nonnull %agg.tmp85.i.i790.i.i.i.i.i.i.i, <2 x float> %agg.tmp87.sroa.0.0.copyload.i.i978.i.i.i.i.i.i.i, <2 x float> %agg.tmp87.sroa.2.0.copyload.i.i979.i.i.i.i.i.i.i, <2 x float> %agg.tmp91.sroa.0.0.copyload.i.i980.i.i.i.i.i.i.i, <2 x float> %agg.tmp91.sroa.2.0.copyload.i.i981.i.i.i.i.i.i.i) + br i1 %call93.i.i982.i.i.i.i.i.i.i, label %if.end95.i.i994.i.i.i.i.i.i.i, label %while.end125.i.i983.i.i.i.i.i.i.i + +if.end95.i.i994.i.i.i.i.i.i.i: ; preds = %invoke.cont88.i.i977.i.i.i.i.i.i.i + call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %ref.tmp96.i.i791.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) + br label %for.body.i.i141.i.i995.i.i.i.i.i.i.i + +for.body.i.i141.i.i995.i.i.i.i.i.i.i: ; preds = %for.body.i.i141.i.i995.i.i.i.i.i.i.i, %if.end95.i.i994.i.i.i.i.i.i.i + %indvars.iv.i.i142.i.i996.i.i.i.i.i.i.i = phi i64 [ 0, %if.end95.i.i994.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i144.i.i998.i.i.i.i.i.i.i, %for.body.i.i141.i.i995.i.i.i.i.i.i.i ] + %arrayidx.i.i143.i.i997.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp96.i.i791.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i142.i.i996.i.i.i.i.i.i.i + store float 1.000000e+00, ptr %arrayidx.i.i143.i.i997.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i.i144.i.i998.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i142.i.i996.i.i.i.i.i.i.i, 1 + %exitcond.not.i.i145.i.i999.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i144.i.i998.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i.i145.i.i999.i.i.i.i.i.i.i, label %invoke.cont97.i.i1000.i.i.i.i.i.i.i, label %for.body.i.i141.i.i995.i.i.i.i.i.i.i, !llvm.loop !103 + +invoke.cont97.i.i1000.i.i.i.i.i.i.i: ; preds = %for.body.i.i141.i.i995.i.i.i.i.i.i.i + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %T_maj.i.i783.i.i.i.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(16) %ref.tmp96.i.i791.i.i.i.i.i.i.i, i64 16, i1 false) + %421 = load i8, ptr %set.i.i.i834.i.i.i.i.i.i.i, align 4 %422 = and i8 %421, 1 - %tobool.not.i.i50.i.i1017.i.i.i.i.i.i.i = icmp eq i8 %422, 0 - br i1 %tobool.not.i.i50.i.i1017.i.i.i.i.i.i.i, label %land.rhs.i.i51.invoke.i.i.i.i.i.i.invoke.i.i.i, label %invoke.cont48.i.i868.i.i.i.i.i.i.i, !llvm.loop !126 + %tobool.not.i.i50.i.i1001.i.i.i.i.i.i.i = icmp eq i8 %422, 0 + br i1 %tobool.not.i.i50.i.i1001.i.i.i.i.i.i.i, label %land.rhs.i.i51.invoke.i.i.i.i.i.i.invoke.i.i.i, label %invoke.cont48.i.i856.i.i.i.i.i.i.i, !llvm.loop !126 -invoke.cont103.i.i892.i.i.i.i.i.i.i: ; preds = %invoke.cont52.i.i890.i.i.i.i.i.i.i - %sub102.i.i893.i.i.i.i.i.i.i = fsub float %403, %tMin38.0243.i.i870.i.i.i.i.i.i.i - %423 = call float @llvm.fabs.f32(float %sub102.i.i893.i.i.i.i.i.i.i) +invoke.cont103.i.i876.i.i.i.i.i.i.i: ; preds = %invoke.cont52.i.i874.i.i.i.i.i.i.i + %sub102.i.i877.i.i.i.i.i.i.i = fsub float %403, %tMin38.0240.i.i858.i.i.i.i.i.i.i + %423 = call float @llvm.fabs.f32(float %sub102.i.i877.i.i.i.i.i.i.i) %424 = fcmp oeq float %423, 0x7FF0000000000000 - %dt98.0.i.i894.i.i.i.i.i.i.i = select i1 %424, float 0x47EFFFFFE0000000, float %sub102.i.i893.i.i.i.i.i.i.i - %fneg110.i.i895.i.i.i.i.i.i.i = fneg float %dt98.0.i.i894.i.i.i.i.i.i.i - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i.i160.i.i787.i.i.i.i.i.i.i) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i.i160.i.i787.i.i.i.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(16) %sigma_maj.i.i847.i.i.i.i.i.i.i, i64 16, i1 false) - br label %for.body.i.i161.i.i896.i.i.i.i.i.i.i - -for.body.i.i161.i.i896.i.i.i.i.i.i.i: ; preds = %for.body.i.i161.i.i896.i.i.i.i.i.i.i, %invoke.cont103.i.i892.i.i.i.i.i.i.i - %indvars.iv.i.i162.i.i897.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont103.i.i892.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i165.i.i900.i.i.i.i.i.i.i, %for.body.i.i161.i.i896.i.i.i.i.i.i.i ] - %arrayidx.i.i.i163.i.i898.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i160.i.i787.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i162.i.i897.i.i.i.i.i.i.i - %425 = load float, ptr %arrayidx.i.i.i163.i.i898.i.i.i.i.i.i.i, align 4 - %mul.i.i164.i.i899.i.i.i.i.i.i.i = fmul float %425, %fneg110.i.i895.i.i.i.i.i.i.i - store float %mul.i.i164.i.i899.i.i.i.i.i.i.i, ptr %arrayidx.i.i.i163.i.i898.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i.i165.i.i900.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i162.i.i897.i.i.i.i.i.i.i, 1 - %exitcond.not.i.i166.i.i901.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i165.i.i900.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i.i166.i.i901.i.i.i.i.i.i.i, label %invoke.cont114.i.i902.i.i.i.i.i.i.i, label %for.body.i.i161.i.i896.i.i.i.i.i.i.i, !llvm.loop !110 - -invoke.cont114.i.i902.i.i.i.i.i.i.i: ; preds = %for.body.i.i161.i.i896.i.i.i.i.i.i.i - %.fca.0.load.i.i167.i.i903.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i.i160.i.i787.i.i.i.i.i.i.i, align 8 - %.fca.1.load.i.i170.i.i904.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i.i169.i.i858.i.i.i.i.i.i.i, align 8 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i.i160.i.i787.i.i.i.i.i.i.i) - store <2 x float> %.fca.0.load.i.i167.i.i903.i.i.i.i.i.i.i, ptr %ref.tmp109.i.i805.i.i.i.i.i.i.i, align 8 - store <2 x float> %.fca.1.load.i.i170.i.i904.i.i.i.i.i.i.i, ptr %72, align 8 - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i173.i.i786.i.i.i.i.i.i.i) - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i173.i.i786.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) - br label %for.body.i174.i.i905.i.i.i.i.i.i.i - -for.body.i174.i.i905.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i191.i.i922.i.i.i.i.i.i.i, %invoke.cont114.i.i902.i.i.i.i.i.i.i - %indvars.iv.i175.i.i906.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont114.i.i902.i.i.i.i.i.i.i ], [ %indvars.iv.next.i194.i.i925.i.i.i.i.i.i.i, %_ZN4pbrt7FastExpEf.exit.i191.i.i922.i.i.i.i.i.i.i ] - %arrayidx.i.i.i176.i.i907.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp109.i.i805.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i175.i.i906.i.i.i.i.i.i.i - %426 = load float, ptr %arrayidx.i.i.i176.i.i907.i.i.i.i.i.i.i, align 4 - %mul.i.i177.i.i908.i.i.i.i.i.i.i = fmul float %426, 0x3FF7154760000000 - %427 = call noundef float @llvm.floor.f32(float %mul.i.i177.i.i908.i.i.i.i.i.i.i) - %sub.i.i178.i.i909.i.i.i.i.i.i.i = fsub float %mul.i.i177.i.i908.i.i.i.i.i.i.i, %427 - %conv.i4.i179.i.i910.i.i.i.i.i.i.i = fptosi float %427 to i32 - %428 = call noundef float @llvm.fma.f32(float %sub.i.i178.i.i909.i.i.i.i.i.i.i, float 0x3FB4015920000000, float 0x3FCCF34160000000) - %429 = call noundef float @llvm.fma.f32(float %sub.i.i178.i.i909.i.i.i.i.i.i.i, float %428, float 0x3FE6420080000000) - %430 = call noundef float @llvm.fma.f32(float %sub.i.i178.i.i909.i.i.i.i.i.i.i, float %429, float 1.000000e+00) + %dt98.0.i.i878.i.i.i.i.i.i.i = select i1 %424, float 0x47EFFFFFE0000000, float %sub102.i.i877.i.i.i.i.i.i.i + %fneg110.i.i879.i.i.i.i.i.i.i = fneg float %dt98.0.i.i878.i.i.i.i.i.i.i + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i.i157.i.i775.i.i.i.i.i.i.i) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i.i157.i.i775.i.i.i.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(16) %sigma_maj.i.i835.i.i.i.i.i.i.i, i64 16, i1 false) + br label %for.body.i.i158.i.i880.i.i.i.i.i.i.i + +for.body.i.i158.i.i880.i.i.i.i.i.i.i: ; preds = %for.body.i.i158.i.i880.i.i.i.i.i.i.i, %invoke.cont103.i.i876.i.i.i.i.i.i.i + %indvars.iv.i.i159.i.i881.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont103.i.i876.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i162.i.i884.i.i.i.i.i.i.i, %for.body.i.i158.i.i880.i.i.i.i.i.i.i ] + %arrayidx.i.i.i160.i.i882.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i157.i.i775.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i159.i.i881.i.i.i.i.i.i.i + %425 = load float, ptr %arrayidx.i.i.i160.i.i882.i.i.i.i.i.i.i, align 4 + %mul.i.i161.i.i883.i.i.i.i.i.i.i = fmul float %425, %fneg110.i.i879.i.i.i.i.i.i.i + store float %mul.i.i161.i.i883.i.i.i.i.i.i.i, ptr %arrayidx.i.i.i160.i.i882.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i.i162.i.i884.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i159.i.i881.i.i.i.i.i.i.i, 1 + %exitcond.not.i.i163.i.i885.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i162.i.i884.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i.i163.i.i885.i.i.i.i.i.i.i, label %invoke.cont114.i.i886.i.i.i.i.i.i.i, label %for.body.i.i158.i.i880.i.i.i.i.i.i.i, !llvm.loop !110 + +invoke.cont114.i.i886.i.i.i.i.i.i.i: ; preds = %for.body.i.i158.i.i880.i.i.i.i.i.i.i + %.fca.0.load.i.i164.i.i887.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i.i157.i.i775.i.i.i.i.i.i.i, align 8 + %.fca.1.load.i.i167.i.i888.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i.i166.i.i846.i.i.i.i.i.i.i, align 8 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i.i157.i.i775.i.i.i.i.i.i.i) + store <2 x float> %.fca.0.load.i.i164.i.i887.i.i.i.i.i.i.i, ptr %ref.tmp109.i.i793.i.i.i.i.i.i.i, align 8 + store <2 x float> %.fca.1.load.i.i167.i.i888.i.i.i.i.i.i.i, ptr %72, align 8 + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %retval.i170.i.i774.i.i.i.i.i.i.i) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i170.i.i774.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) + br label %for.body.i171.i.i889.i.i.i.i.i.i.i + +for.body.i171.i.i889.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i188.i.i906.i.i.i.i.i.i.i, %invoke.cont114.i.i886.i.i.i.i.i.i.i + %indvars.iv.i172.i.i890.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont114.i.i886.i.i.i.i.i.i.i ], [ %indvars.iv.next.i191.i.i909.i.i.i.i.i.i.i, %_ZN4pbrt7FastExpEf.exit.i188.i.i906.i.i.i.i.i.i.i ] + %arrayidx.i.i.i173.i.i891.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp109.i.i793.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i172.i.i890.i.i.i.i.i.i.i + %426 = load float, ptr %arrayidx.i.i.i173.i.i891.i.i.i.i.i.i.i, align 4 + %mul.i.i174.i.i892.i.i.i.i.i.i.i = fmul float %426, 0x3FF7154760000000 + %427 = call noundef float @llvm.floor.f32(float %mul.i.i174.i.i892.i.i.i.i.i.i.i) + %sub.i.i175.i.i893.i.i.i.i.i.i.i = fsub float %mul.i.i174.i.i892.i.i.i.i.i.i.i, %427 + %conv.i4.i176.i.i894.i.i.i.i.i.i.i = fptosi float %427 to i32 + %428 = call noundef float @llvm.fma.f32(float %sub.i.i175.i.i893.i.i.i.i.i.i.i, float 0x3FB4015920000000, float 0x3FCCF34160000000) + %429 = call noundef float @llvm.fma.f32(float %sub.i.i175.i.i893.i.i.i.i.i.i.i, float %428, float 0x3FE6420080000000) + %430 = call noundef float @llvm.fma.f32(float %sub.i.i175.i.i893.i.i.i.i.i.i.i, float %429, float 1.000000e+00) %431 = bitcast float %430 to i32 - %shr.i.i.i180.i.i911.i.i.i.i.i.i.i = lshr i32 %431, 23 - %sub.i.i.i181.i.i912.i.i.i.i.i.i.i = add i32 %conv.i4.i179.i.i910.i.i.i.i.i.i.i, -127 - %add.i.i182.i.i913.i.i.i.i.i.i.i = add i32 %sub.i.i.i181.i.i912.i.i.i.i.i.i.i, %shr.i.i.i180.i.i911.i.i.i.i.i.i.i - %cmp.i.i183.i.i914.i.i.i.i.i.i.i = icmp slt i32 %add.i.i182.i.i913.i.i.i.i.i.i.i, -126 - br i1 %cmp.i.i183.i.i914.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i191.i.i922.i.i.i.i.i.i.i, label %if.end.i.i184.i.i915.i.i.i.i.i.i.i - -if.end.i.i184.i.i915.i.i.i.i.i.i.i: ; preds = %for.body.i174.i.i905.i.i.i.i.i.i.i - %cmp3.i.i185.i.i916.i.i.i.i.i.i.i = icmp sgt i32 %add.i.i182.i.i913.i.i.i.i.i.i.i, 127 - br i1 %cmp3.i.i185.i.i916.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i191.i.i922.i.i.i.i.i.i.i, label %if.end5.i.i186.i.i917.i.i.i.i.i.i.i - -if.end5.i.i186.i.i917.i.i.i.i.i.i.i: ; preds = %if.end.i.i184.i.i915.i.i.i.i.i.i.i - %and.i.i187.i.i918.i.i.i.i.i.i.i = and i32 %431, -2139095041 - %add7.i.i188.i.i919.i.i.i.i.i.i.i = shl nsw i32 %add.i.i182.i.i913.i.i.i.i.i.i.i, 23 - %shl.i.i189.i.i920.i.i.i.i.i.i.i = add i32 %add7.i.i188.i.i919.i.i.i.i.i.i.i, 1065353216 - %or.i.i190.i.i921.i.i.i.i.i.i.i = or i32 %shl.i.i189.i.i920.i.i.i.i.i.i.i, %and.i.i187.i.i918.i.i.i.i.i.i.i - %432 = bitcast i32 %or.i.i190.i.i921.i.i.i.i.i.i.i to float - br label %_ZN4pbrt7FastExpEf.exit.i191.i.i922.i.i.i.i.i.i.i - -_ZN4pbrt7FastExpEf.exit.i191.i.i922.i.i.i.i.i.i.i: ; preds = %if.end5.i.i186.i.i917.i.i.i.i.i.i.i, %if.end.i.i184.i.i915.i.i.i.i.i.i.i, %for.body.i174.i.i905.i.i.i.i.i.i.i - %retval.0.i.i192.i.i923.i.i.i.i.i.i.i = phi float [ %432, %if.end5.i.i186.i.i917.i.i.i.i.i.i.i ], [ 0.000000e+00, %for.body.i174.i.i905.i.i.i.i.i.i.i ], [ 0x7FF0000000000000, %if.end.i.i184.i.i915.i.i.i.i.i.i.i ] - %arrayidx.i.i6.i193.i.i924.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i173.i.i786.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i175.i.i906.i.i.i.i.i.i.i - store float %retval.0.i.i192.i.i923.i.i.i.i.i.i.i, ptr %arrayidx.i.i6.i193.i.i924.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i194.i.i925.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i175.i.i906.i.i.i.i.i.i.i, 1 - %exitcond.not.i195.i.i926.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i194.i.i925.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i195.i.i926.i.i.i.i.i.i.i, label %invoke.cont118.i.i927.i.i.i.i.i.i.i, label %for.body.i174.i.i905.i.i.i.i.i.i.i, !llvm.loop !111 - -invoke.cont118.i.i927.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i191.i.i922.i.i.i.i.i.i.i - %.fca.0.load.i196.i.i928.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i173.i.i786.i.i.i.i.i.i.i, align 8 - %.fca.1.load.i199.i.i929.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i198.i.i859.i.i.i.i.i.i.i, align 8 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i173.i.i786.i.i.i.i.i.i.i) - store <2 x float> %.fca.0.load.i196.i.i928.i.i.i.i.i.i.i, ptr %ref.tmp108.i.i804.i.i.i.i.i.i.i, align 8 - store <2 x float> %.fca.1.load.i199.i.i929.i.i.i.i.i.i.i, ptr %73, align 8 - br label %for.body.i202.i.i930.i.i.i.i.i.i.i - -for.body.i202.i.i930.i.i.i.i.i.i.i: ; preds = %for.body.i202.i.i930.i.i.i.i.i.i.i, %invoke.cont118.i.i927.i.i.i.i.i.i.i - %indvars.iv.i203.i.i931.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont118.i.i927.i.i.i.i.i.i.i ], [ %indvars.iv.next.i207.i.i935.i.i.i.i.i.i.i, %for.body.i202.i.i930.i.i.i.i.i.i.i ] - %arrayidx.i.i204.i.i932.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp108.i.i804.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i203.i.i931.i.i.i.i.i.i.i - %433 = load float, ptr %arrayidx.i.i204.i.i932.i.i.i.i.i.i.i, align 4 - %arrayidx.i4.i205.i.i933.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %T_maj.i.i795.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i203.i.i931.i.i.i.i.i.i.i - %434 = load float, ptr %arrayidx.i4.i205.i.i933.i.i.i.i.i.i.i, align 4 - %mul.i206.i.i934.i.i.i.i.i.i.i = fmul float %433, %434 - store float %mul.i206.i.i934.i.i.i.i.i.i.i, ptr %arrayidx.i4.i205.i.i933.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i207.i.i935.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i203.i.i931.i.i.i.i.i.i.i, 1 - %exitcond.not.i208.i.i936.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i207.i.i935.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i208.i.i936.i.i.i.i.i.i.i, label %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.i.i937.i.i.i.i.i.i.i, label %for.body.i202.i.i930.i.i.i.i.i.i.i, !llvm.loop !112 - -_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.i.i937.i.i.i.i.i.i.i: ; preds = %for.body.i202.i.i930.i.i.i.i.i.i.i, %_ZN4pbrt15SampledSpectrummLERKS0_.exit.i.i1064.i.i.i.i.i.i.i - %u.addr.2270.i.i938.i.i.i.i.i.i.i = phi float [ %u.addr.0.i23.i86345.i.i.i.i.i.i.i, %_ZN4pbrt15SampledSpectrummLERKS0_.exit.i.i1064.i.i.i.i.i.i.i ], [ %.sroa.speculated.i.i.i888.i.i.i.i.i.i.i, %for.body.i202.i.i930.i.i.i.i.i.i.i ] - store i8 0, ptr %set.i.i.i846.i.i.i.i.i.i.i, align 4 - call void @_ZN4pbrt19DDAMajorantIterator4NextEv(ptr nonnull sret(%"class.pstd::optional.223") align 4 %seg.i.i796.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(92) %iter.i.i793.i.i.i.i.i.i.i) - %435 = load i8, ptr %set.i.i.i846.i.i.i.i.i.i.i, align 4 + %shr.i.i.i177.i.i895.i.i.i.i.i.i.i = lshr i32 %431, 23 + %sub.i.i.i178.i.i896.i.i.i.i.i.i.i = add i32 %conv.i4.i176.i.i894.i.i.i.i.i.i.i, -127 + %add.i.i179.i.i897.i.i.i.i.i.i.i = add i32 %sub.i.i.i178.i.i896.i.i.i.i.i.i.i, %shr.i.i.i177.i.i895.i.i.i.i.i.i.i + %cmp.i.i180.i.i898.i.i.i.i.i.i.i = icmp slt i32 %add.i.i179.i.i897.i.i.i.i.i.i.i, -126 + br i1 %cmp.i.i180.i.i898.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i188.i.i906.i.i.i.i.i.i.i, label %if.end.i.i181.i.i899.i.i.i.i.i.i.i + +if.end.i.i181.i.i899.i.i.i.i.i.i.i: ; preds = %for.body.i171.i.i889.i.i.i.i.i.i.i + %cmp3.i.i182.i.i900.i.i.i.i.i.i.i = icmp sgt i32 %add.i.i179.i.i897.i.i.i.i.i.i.i, 127 + br i1 %cmp3.i.i182.i.i900.i.i.i.i.i.i.i, label %_ZN4pbrt7FastExpEf.exit.i188.i.i906.i.i.i.i.i.i.i, label %if.end5.i.i183.i.i901.i.i.i.i.i.i.i + +if.end5.i.i183.i.i901.i.i.i.i.i.i.i: ; preds = %if.end.i.i181.i.i899.i.i.i.i.i.i.i + %and.i.i184.i.i902.i.i.i.i.i.i.i = and i32 %431, -2139095041 + %add7.i.i185.i.i903.i.i.i.i.i.i.i = shl nsw i32 %add.i.i179.i.i897.i.i.i.i.i.i.i, 23 + %shl.i.i186.i.i904.i.i.i.i.i.i.i = add i32 %add7.i.i185.i.i903.i.i.i.i.i.i.i, 1065353216 + %or.i.i187.i.i905.i.i.i.i.i.i.i = or i32 %shl.i.i186.i.i904.i.i.i.i.i.i.i, %and.i.i184.i.i902.i.i.i.i.i.i.i + %432 = bitcast i32 %or.i.i187.i.i905.i.i.i.i.i.i.i to float + br label %_ZN4pbrt7FastExpEf.exit.i188.i.i906.i.i.i.i.i.i.i + +_ZN4pbrt7FastExpEf.exit.i188.i.i906.i.i.i.i.i.i.i: ; preds = %if.end5.i.i183.i.i901.i.i.i.i.i.i.i, %if.end.i.i181.i.i899.i.i.i.i.i.i.i, %for.body.i171.i.i889.i.i.i.i.i.i.i + %retval.0.i.i189.i.i907.i.i.i.i.i.i.i = phi float [ %432, %if.end5.i.i183.i.i901.i.i.i.i.i.i.i ], [ 0.000000e+00, %for.body.i171.i.i889.i.i.i.i.i.i.i ], [ 0x7FF0000000000000, %if.end.i.i181.i.i899.i.i.i.i.i.i.i ] + %arrayidx.i.i6.i190.i.i908.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i170.i.i774.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i172.i.i890.i.i.i.i.i.i.i + store float %retval.0.i.i189.i.i907.i.i.i.i.i.i.i, ptr %arrayidx.i.i6.i190.i.i908.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i191.i.i909.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i172.i.i890.i.i.i.i.i.i.i, 1 + %exitcond.not.i192.i.i910.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i191.i.i909.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i192.i.i910.i.i.i.i.i.i.i, label %invoke.cont118.i.i911.i.i.i.i.i.i.i, label %for.body.i171.i.i889.i.i.i.i.i.i.i, !llvm.loop !111 + +invoke.cont118.i.i911.i.i.i.i.i.i.i: ; preds = %_ZN4pbrt7FastExpEf.exit.i188.i.i906.i.i.i.i.i.i.i + %.fca.0.load.i193.i.i912.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i170.i.i774.i.i.i.i.i.i.i, align 8 + %.fca.1.load.i196.i.i913.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i195.i.i847.i.i.i.i.i.i.i, align 8 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i170.i.i774.i.i.i.i.i.i.i) + store <2 x float> %.fca.0.load.i193.i.i912.i.i.i.i.i.i.i, ptr %ref.tmp108.i.i792.i.i.i.i.i.i.i, align 8 + store <2 x float> %.fca.1.load.i196.i.i913.i.i.i.i.i.i.i, ptr %73, align 8 + br label %for.body.i199.i.i914.i.i.i.i.i.i.i + +for.body.i199.i.i914.i.i.i.i.i.i.i: ; preds = %for.body.i199.i.i914.i.i.i.i.i.i.i, %invoke.cont118.i.i911.i.i.i.i.i.i.i + %indvars.iv.i200.i.i915.i.i.i.i.i.i.i = phi i64 [ 0, %invoke.cont118.i.i911.i.i.i.i.i.i.i ], [ %indvars.iv.next.i204.i.i919.i.i.i.i.i.i.i, %for.body.i199.i.i914.i.i.i.i.i.i.i ] + %arrayidx.i.i201.i.i916.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp108.i.i792.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i200.i.i915.i.i.i.i.i.i.i + %433 = load float, ptr %arrayidx.i.i201.i.i916.i.i.i.i.i.i.i, align 4 + %arrayidx.i4.i202.i.i917.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %T_maj.i.i783.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i200.i.i915.i.i.i.i.i.i.i + %434 = load float, ptr %arrayidx.i4.i202.i.i917.i.i.i.i.i.i.i, align 4 + %mul.i203.i.i918.i.i.i.i.i.i.i = fmul float %433, %434 + store float %mul.i203.i.i918.i.i.i.i.i.i.i, ptr %arrayidx.i4.i202.i.i917.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i204.i.i919.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i200.i.i915.i.i.i.i.i.i.i, 1 + %exitcond.not.i205.i.i920.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i204.i.i919.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i205.i.i920.i.i.i.i.i.i.i, label %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.i.i921.i.i.i.i.i.i.i, label %for.body.i199.i.i914.i.i.i.i.i.i.i, !llvm.loop !112 + +_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.i.i921.i.i.i.i.i.i.i: ; preds = %for.body.i199.i.i914.i.i.i.i.i.i.i, %_ZN4pbrt15SampledSpectrummLERKS0_.exit.i.i1048.i.i.i.i.i.i.i + %u.addr.2267.i.i922.i.i.i.i.i.i.i = phi float [ %u.addr.0.i23.i85145.i.i.i.i.i.i.i, %_ZN4pbrt15SampledSpectrummLERKS0_.exit.i.i1048.i.i.i.i.i.i.i ], [ %.sroa.speculated.i.i.i872.i.i.i.i.i.i.i, %for.body.i199.i.i914.i.i.i.i.i.i.i ] + store i8 0, ptr %set.i.i.i834.i.i.i.i.i.i.i, align 4 + call void @_ZN4pbrt19DDAMajorantIterator4NextEv(ptr nonnull sret(%"class.pstd::optional.223") align 4 %seg.i.i784.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(92) %iter.i.i781.i.i.i.i.i.i.i) + %435 = load i8, ptr %set.i.i.i834.i.i.i.i.i.i.i, align 4 %436 = and i8 %435, 1 - %tobool.i.not.i.i864.i.i.i.i.i.i.i = icmp eq i8 %436, 0 - br i1 %tobool.i.not.i.i864.i.i.i.i.i.i.i, label %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.thread.i.i1065.i.i.i.i.i.i.i, label %invoke.cont.i.i865.i.i.i.i.i.i.i - -while.end125.i.i999.i.i.i.i.i.i.i: ; preds = %invoke.cont88.i.i993.i.i.i.i.i.i.i - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i.i792.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) - br label %for.body.i.i214.i.i1000.i.i.i.i.i.i.i - -for.body.i.i214.i.i1000.i.i.i.i.i.i.i: ; preds = %for.body.i.i214.i.i1000.i.i.i.i.i.i.i, %while.end125.i.i999.i.i.i.i.i.i.i - %indvars.iv.i.i215.i.i1001.i.i.i.i.i.i.i = phi i64 [ 0, %while.end125.i.i999.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i217.i.i1003.i.i.i.i.i.i.i, %for.body.i.i214.i.i1000.i.i.i.i.i.i.i ] - %arrayidx.i.i216.i.i1002.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i792.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i215.i.i1001.i.i.i.i.i.i.i - store float 1.000000e+00, ptr %arrayidx.i.i216.i.i1002.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i.i217.i.i1003.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i215.i.i1001.i.i.i.i.i.i.i, 1 - %exitcond.not.i.i218.i.i1004.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i217.i.i1003.i.i.i.i.i.i.i, 4 - br i1 %exitcond.not.i.i218.i.i1004.i.i.i.i.i.i.i, label %"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_13NanoVDBMediumEEEDaSH_.exit.i.i.i.i.i.i.i", label %for.body.i.i214.i.i1000.i.i.i.i.i.i.i, !llvm.loop !103 - -"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_13NanoVDBMediumEEEDaSH_.exit.i.i.i.i.i.i.i": ; preds = %for.body.i.i214.i.i1000.i.i.i.i.i.i.i, %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit213.thread.i.i1065.i.i.i.i.i.i.i - %.fca.0.load.i.i1005.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i.i792.i.i.i.i.i.i.i, align 8 - %.fca.1.load.i.i1008.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i.i1007.i.i.i.i.i.i.i, align 8 - call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %agg.tmp21.i806.i.i.i.i.i.i.i) - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i.i792.i.i.i.i.i.i.i) - call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %iter.i.i793.i.i.i.i.i.i.i) - call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %agg.tmp7.i.i794.i.i.i.i.i.i.i) - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %T_maj.i.i795.i.i.i.i.i.i.i) - call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %seg.i.i796.i.i.i.i.i.i.i) - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp22.i.i797.i.i.i.i.i.i.i) - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp23.i.i798.i.i.i.i.i.i.i) - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp57.i.i799.i.i.i.i.i.i.i) - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp58.i.i800.i.i.i.i.i.i.i) - call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %mp.i.i801.i.i.i.i.i.i.i) - call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %agg.tmp85.i.i802.i.i.i.i.i.i.i) - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp96.i.i803.i.i.i.i.i.i.i) - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp108.i.i804.i.i.i.i.i.i.i) - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp109.i.i805.i.i.i.i.i.i.i) + %tobool.i.not.i.i852.i.i.i.i.i.i.i = icmp eq i8 %436, 0 + br i1 %tobool.i.not.i.i852.i.i.i.i.i.i.i, label %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.thread.i.i1049.i.i.i.i.i.i.i, label %invoke.cont.i.i853.i.i.i.i.i.i.i + +while.end125.i.i983.i.i.i.i.i.i.i: ; preds = %invoke.cont88.i.i977.i.i.i.i.i.i.i + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %retval.i.i780.i.i.i.i.i.i.i, i8 0, i64 16, i1 false) + br label %for.body.i.i211.i.i984.i.i.i.i.i.i.i + +for.body.i.i211.i.i984.i.i.i.i.i.i.i: ; preds = %for.body.i.i211.i.i984.i.i.i.i.i.i.i, %while.end125.i.i983.i.i.i.i.i.i.i + %indvars.iv.i.i212.i.i985.i.i.i.i.i.i.i = phi i64 [ 0, %while.end125.i.i983.i.i.i.i.i.i.i ], [ %indvars.iv.next.i.i214.i.i987.i.i.i.i.i.i.i, %for.body.i.i211.i.i984.i.i.i.i.i.i.i ] + %arrayidx.i.i213.i.i986.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %retval.i.i780.i.i.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i212.i.i985.i.i.i.i.i.i.i + store float 1.000000e+00, ptr %arrayidx.i.i213.i.i986.i.i.i.i.i.i.i, align 4 + %indvars.iv.next.i.i214.i.i987.i.i.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i212.i.i985.i.i.i.i.i.i.i, 1 + %exitcond.not.i.i215.i.i988.i.i.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i214.i.i987.i.i.i.i.i.i.i, 4 + br i1 %exitcond.not.i.i215.i.i988.i.i.i.i.i.i.i, label %"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_13NanoVDBMediumEEEDaSH_.exit.i.i.i.i.i.i.i", label %for.body.i.i211.i.i984.i.i.i.i.i.i.i, !llvm.loop !103 + +"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_13NanoVDBMediumEEEDaSH_.exit.i.i.i.i.i.i.i": ; preds = %for.body.i.i211.i.i984.i.i.i.i.i.i.i, %_ZN4pstd8optionalIN4pbrt18RayMajorantSegmentEED2Ev.exit210.thread.i.i1049.i.i.i.i.i.i.i + %.fca.0.load.i.i989.i.i.i.i.i.i.i = load <2 x float>, ptr %retval.i.i780.i.i.i.i.i.i.i, align 8 + %.fca.1.load.i.i992.i.i.i.i.i.i.i = load <2 x float>, ptr %.fca.1.gep.i.i991.i.i.i.i.i.i.i, align 8 + call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %agg.tmp21.i794.i.i.i.i.i.i.i) + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i.i780.i.i.i.i.i.i.i) + call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %iter.i.i781.i.i.i.i.i.i.i) + call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %agg.tmp7.i.i782.i.i.i.i.i.i.i) + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %T_maj.i.i783.i.i.i.i.i.i.i) + call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %seg.i.i784.i.i.i.i.i.i.i) + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp22.i.i785.i.i.i.i.i.i.i) + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp23.i.i786.i.i.i.i.i.i.i) + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp57.i.i787.i.i.i.i.i.i.i) + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp58.i.i788.i.i.i.i.i.i.i) + call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %mp.i.i789.i.i.i.i.i.i.i) + call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %agg.tmp85.i.i790.i.i.i.i.i.i.i) + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp96.i.i791.i.i.i.i.i.i.i) + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp108.i.i792.i.i.i.i.i.i.i) + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp109.i.i793.i.i.i.i.i.i.i) br label %"_ZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_.exit.i.i.i.i" "_ZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_.exit.i.i.i.i": ; preds = %"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_13NanoVDBMediumEEEDaSH_.exit.i.i.i.i.i.i.i", %"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_11CloudMediumEEEDaSH_.exit.i.i.i.i.i.i.i", %"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_13RGBGridMediumEEEDaSH_.exit.i.i.i.i.i.i.i", %"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_10GridMediumEEEDaSH_.exit.i.i.i.i.i.i.i", %"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_17HomogeneousMediumEEEDaSH_.exit.i.i.i.i.i.i.i" - %.fca.0.load.i.i1005.pn.i.i.i.i.i.i.i = phi <2 x float> [ %.fca.0.load.i.i1005.i.i.i.i.i.i.i, %"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_13NanoVDBMediumEEEDaSH_.exit.i.i.i.i.i.i.i" ], [ %.fca.0.load.i.i590.i.i.i.i.i.i.i, %"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_11CloudMediumEEEDaSH_.exit.i.i.i.i.i.i.i" ], [ %.fca.0.load.i.i452.i.i.i.i.i.i.i, %"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_13RGBGridMediumEEEDaSH_.exit.i.i.i.i.i.i.i" ], [ %.fca.0.load.i.i183.i.i.i.i.i.i.i, %"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_10GridMediumEEEDaSH_.exit.i.i.i.i.i.i.i" ], [ %.fca.0.load.i.i.i.i.i.i.i.i.i, %"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_17HomogeneousMediumEEEDaSH_.exit.i.i.i.i.i.i.i" ] - %.fca.1.load.i.i1008.pn.i.i.i.i.i.i.i = phi <2 x float> [ %.fca.1.load.i.i1008.i.i.i.i.i.i.i, %"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_13NanoVDBMediumEEEDaSH_.exit.i.i.i.i.i.i.i" ], [ %.fca.1.load.i.i593.i.i.i.i.i.i.i, %"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_11CloudMediumEEEDaSH_.exit.i.i.i.i.i.i.i" ], [ %.fca.1.load.i.i455.i.i.i.i.i.i.i, %"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_13RGBGridMediumEEEDaSH_.exit.i.i.i.i.i.i.i" ], [ %.fca.1.load.i.i186.i.i.i.i.i.i.i, %"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_10GridMediumEEEDaSH_.exit.i.i.i.i.i.i.i" ], [ %.fca.1.load.i.i.i.i.i.i.i.i.i, %"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_17HomogeneousMediumEEEDaSH_.exit.i.i.i.i.i.i.i" ] - %T_maj.sroa.0.0.vec.extract.i.i.i.i = extractelement <2 x float> %.fca.0.load.i.i1005.pn.i.i.i.i.i.i.i, i64 0 + %.fca.0.load.i.i989.pn.i.i.i.i.i.i.i = phi <2 x float> [ %.fca.0.load.i.i989.i.i.i.i.i.i.i, %"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_13NanoVDBMediumEEEDaSH_.exit.i.i.i.i.i.i.i" ], [ %.fca.0.load.i.i582.i.i.i.i.i.i.i, %"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_11CloudMediumEEEDaSH_.exit.i.i.i.i.i.i.i" ], [ %.fca.0.load.i.i444.i.i.i.i.i.i.i, %"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_13RGBGridMediumEEEDaSH_.exit.i.i.i.i.i.i.i" ], [ %.fca.0.load.i.i179.i.i.i.i.i.i.i, %"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_10GridMediumEEEDaSH_.exit.i.i.i.i.i.i.i" ], [ %.fca.0.load.i.i.i.i.i.i.i.i.i, %"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_17HomogeneousMediumEEEDaSH_.exit.i.i.i.i.i.i.i" ] + %.fca.1.load.i.i992.pn.i.i.i.i.i.i.i = phi <2 x float> [ %.fca.1.load.i.i992.i.i.i.i.i.i.i, %"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_13NanoVDBMediumEEEDaSH_.exit.i.i.i.i.i.i.i" ], [ %.fca.1.load.i.i585.i.i.i.i.i.i.i, %"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_11CloudMediumEEEDaSH_.exit.i.i.i.i.i.i.i" ], [ %.fca.1.load.i.i447.i.i.i.i.i.i.i, %"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_13RGBGridMediumEEEDaSH_.exit.i.i.i.i.i.i.i" ], [ %.fca.1.load.i.i182.i.i.i.i.i.i.i, %"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_10GridMediumEEEDaSH_.exit.i.i.i.i.i.i.i" ], [ %.fca.1.load.i.i.i.i.i.i.i.i.i, %"_ZZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_ENKUlSH_E_clIPNS_17HomogeneousMediumEEEDaSH_.exit.i.i.i.i.i.i.i" ] + %T_maj.sroa.0.0.vec.extract.i.i.i.i = extractelement <2 x float> %.fca.0.load.i.i989.pn.i.i.i.i.i.i.i, i64 0 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ret.i.i.i.i.i) - store <2 x float> %.fca.0.load.i.i1005.pn.i.i.i.i.i.i.i, ptr %ret.i.i.i.i.i, align 8 - store <2 x float> %.fca.1.load.i.i1008.pn.i.i.i.i.i.i.i, ptr %T_maj.sroa.7.0.ret.i.sroa_idx.i.i.i.i, align 8 - br label %for.body.i.i54.i.i.i.i + store <2 x float> %.fca.0.load.i.i989.pn.i.i.i.i.i.i.i, ptr %ret.i.i.i.i.i, align 8 + store <2 x float> %.fca.1.load.i.i992.pn.i.i.i.i.i.i.i, ptr %T_maj.sroa.7.0.ret.i.sroa_idx.i.i.i.i, align 8 + br label %for.body.i.i53.i.i.i.i -for.body.i.i54.i.i.i.i: ; preds = %for.body.i.i54.i.i.i.i, %"_ZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_.exit.i.i.i.i" - %indvars.iv.i.i55.i.i.i.i = phi i64 [ 0, %"_ZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_.exit.i.i.i.i" ], [ %indvars.iv.next.i.i56.i.i.i.i, %for.body.i.i54.i.i.i.i ] - %arrayidx.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ret.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i55.i.i.i.i +for.body.i.i53.i.i.i.i: ; preds = %for.body.i.i53.i.i.i.i, %"_ZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_.exit.i.i.i.i" + %indvars.iv.i.i54.i.i.i.i = phi i64 [ 0, %"_ZN4pbrt11SampleT_majIZNS_18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS2_17IntersectShadowTrEiS6_SA_ENKSB_clEiEUlNS_6Point3IfEEE_EEvS4_SA_T_T0_EUlSF_NS_16MediumPropertiesENS_15SampledSpectrumESK_E_EESK_SC_ffRNS_3RNGERKNS_18SampledWavelengthsESH_.exit.i.i.i.i" ], [ %indvars.iv.next.i.i55.i.i.i.i, %for.body.i.i53.i.i.i.i ] + %arrayidx.i.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ret.i.i.i.i.i, i64 0, i64 %indvars.iv.i.i54.i.i.i.i %437 = load float, ptr %arrayidx.i.i.i.i.i.i.i, align 4 %div.i.i.i.i.i.i = fdiv float %437, %T_maj.sroa.0.0.vec.extract.i.i.i.i store float %div.i.i.i.i.i.i, ptr %arrayidx.i.i.i.i.i.i.i, align 4 - %indvars.iv.next.i.i56.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i55.i.i.i.i, 1 - %exitcond.not.i.i57.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i56.i.i.i.i, 4 - br i1 %exitcond.not.i.i57.i.i.i.i, label %_ZNK4pbrt15SampledSpectrumdvEf.exit.i.i.i.i, label %for.body.i.i54.i.i.i.i, !llvm.loop !89 + %indvars.iv.next.i.i55.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i54.i.i.i.i, 1 + %exitcond.not.i.i56.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i55.i.i.i.i, 4 + br i1 %exitcond.not.i.i56.i.i.i.i, label %_ZNK4pbrt15SampledSpectrumdvEf.exit.i.i.i.i, label %for.body.i.i53.i.i.i.i, !llvm.loop !89 -_ZNK4pbrt15SampledSpectrumdvEf.exit.i.i.i.i: ; preds = %for.body.i.i54.i.i.i.i +_ZNK4pbrt15SampledSpectrumdvEf.exit.i.i.i.i: ; preds = %for.body.i.i53.i.i.i.i %retval.sroa.0.0.copyload.i.i.i.i.i = load <2 x float>, ptr %ret.i.i.i.i.i, align 8 %retval.sroa.2.0.copyload.i.i.i.i.i = load <2 x float>, ptr %T_maj.sroa.7.0.ret.i.sroa_idx.i.i.i.i, align 8 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ret.i.i.i.i.i) @@ -13844,117 +13820,117 @@ _ZNK4pbrt15SampledSpectrumdvEf.exit.i.i.i.i: ; preds = %for.body.i.i54.i.i. for.body.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i, %_ZNK4pbrt15SampledSpectrumdvEf.exit.i.i.i.i %indvars.iv.i.i.i.i.i = phi i64 [ 0, %_ZNK4pbrt15SampledSpectrumdvEf.exit.i.i.i.i ], [ %indvars.iv.next.i.i.i.i.i, %for.body.i.i.i.i.i ] - %arrayidx.i.i58.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp31.i.i.i.i, i64 0, i64 %indvars.iv.i.i.i.i.i - %438 = load float, ptr %arrayidx.i.i58.i.i.i.i, align 4 + %arrayidx.i.i57.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp31.i.i.i.i, i64 0, i64 %indvars.iv.i.i.i.i.i + %438 = load float, ptr %arrayidx.i.i57.i.i.i.i, align 4 %arrayidx.i4.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %T_ray.i.i.i.i, i64 0, i64 %indvars.iv.i.i.i.i.i %439 = load float, ptr %arrayidx.i4.i.i.i.i.i, align 4 - %mul.i59.i.i.i.i = fmul float %438, %439 - store float %mul.i59.i.i.i.i, ptr %arrayidx.i4.i.i.i.i.i, align 4 + %mul.i58.i.i.i.i = fmul float %438, %439 + store float %mul.i58.i.i.i.i, ptr %arrayidx.i4.i.i.i.i.i, align 4 %indvars.iv.next.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i.i.i.i, 1 %exitcond.not.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i.i.i.i, 4 br i1 %exitcond.not.i.i.i.i.i, label %_ZN4pbrt15SampledSpectrummLERKS0_.exit.i.i.i.i, label %for.body.i.i.i.i.i, !llvm.loop !112 _ZN4pbrt15SampledSpectrummLERKS0_.exit.i.i.i.i: ; preds = %for.body.i.i.i.i.i - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ret.i60.i.i.i.i) - store <2 x float> %.fca.0.load.i.i1005.pn.i.i.i.i.i.i.i, ptr %ret.i60.i.i.i.i, align 8 - store <2 x float> %.fca.1.load.i.i1008.pn.i.i.i.i.i.i.i, ptr %T_maj.sroa.7.0.ret.i60.sroa_idx.i.i.i.i, align 8 - br label %for.body.i.i61.i.i.i.i - -for.body.i.i61.i.i.i.i: ; preds = %for.body.i.i61.i.i.i.i, %_ZN4pbrt15SampledSpectrummLERKS0_.exit.i.i.i.i - %indvars.iv.i.i62.i.i.i.i = phi i64 [ 0, %_ZN4pbrt15SampledSpectrummLERKS0_.exit.i.i.i.i ], [ %indvars.iv.next.i.i65.i.i.i.i, %for.body.i.i61.i.i.i.i ] - %arrayidx.i.i.i63.i.i.i.i = getelementptr inbounds [4 x float], ptr %ret.i60.i.i.i.i, i64 0, i64 %indvars.iv.i.i62.i.i.i.i - %440 = load float, ptr %arrayidx.i.i.i63.i.i.i.i, align 4 - %div.i.i64.i.i.i.i = fdiv float %440, %T_maj.sroa.0.0.vec.extract.i.i.i.i - store float %div.i.i64.i.i.i.i, ptr %arrayidx.i.i.i63.i.i.i.i, align 4 - %indvars.iv.next.i.i65.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i62.i.i.i.i, 1 - %exitcond.not.i.i66.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i65.i.i.i.i, 4 - br i1 %exitcond.not.i.i66.i.i.i.i, label %_ZNK4pbrt15SampledSpectrumdvEf.exit72.i.i.i.i, label %for.body.i.i61.i.i.i.i, !llvm.loop !89 - -_ZNK4pbrt15SampledSpectrumdvEf.exit72.i.i.i.i: ; preds = %for.body.i.i61.i.i.i.i - %retval.sroa.0.0.copyload.i67.i.i.i.i = load <2 x float>, ptr %ret.i60.i.i.i.i, align 8 - %retval.sroa.2.0.copyload.i69.i.i.i.i = load <2 x float>, ptr %T_maj.sroa.7.0.ret.i60.sroa_idx.i.i.i.i, align 8 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ret.i60.i.i.i.i) - store <2 x float> %retval.sroa.0.0.copyload.i67.i.i.i.i, ptr %ref.tmp37.i.i.i.i, align 8 - store <2 x float> %retval.sroa.2.0.copyload.i69.i.i.i.i, ptr %77, align 8 - br label %for.body.i73.i.i.i.i - -for.body.i73.i.i.i.i: ; preds = %for.body.i73.i.i.i.i, %_ZNK4pbrt15SampledSpectrumdvEf.exit72.i.i.i.i - %indvars.iv.i74.i.i.i.i = phi i64 [ 0, %_ZNK4pbrt15SampledSpectrumdvEf.exit72.i.i.i.i ], [ %indvars.iv.next.i78.i.i.i.i, %for.body.i73.i.i.i.i ] - %arrayidx.i.i75.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp37.i.i.i.i, i64 0, i64 %indvars.iv.i74.i.i.i.i - %441 = load float, ptr %arrayidx.i.i75.i.i.i.i, align 4 - %arrayidx.i4.i76.i.i.i.i = getelementptr inbounds [4 x float], ptr %r_l.i.i.i.i, i64 0, i64 %indvars.iv.i74.i.i.i.i - %442 = load float, ptr %arrayidx.i4.i76.i.i.i.i, align 4 - %mul.i77.i.i.i.i = fmul float %441, %442 - store float %mul.i77.i.i.i.i, ptr %arrayidx.i4.i76.i.i.i.i, align 4 - %indvars.iv.next.i78.i.i.i.i = add nuw nsw i64 %indvars.iv.i74.i.i.i.i, 1 - %exitcond.not.i79.i.i.i.i = icmp eq i64 %indvars.iv.next.i78.i.i.i.i, 4 - br i1 %exitcond.not.i79.i.i.i.i, label %_ZN4pbrt15SampledSpectrummLERKS0_.exit80.i.i.i.i, label %for.body.i73.i.i.i.i, !llvm.loop !112 - -_ZN4pbrt15SampledSpectrummLERKS0_.exit80.i.i.i.i: ; preds = %for.body.i73.i.i.i.i - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ret.i81.i.i.i.i) - store <2 x float> %.fca.0.load.i.i1005.pn.i.i.i.i.i.i.i, ptr %ret.i81.i.i.i.i, align 8 - store <2 x float> %.fca.1.load.i.i1008.pn.i.i.i.i.i.i.i, ptr %T_maj.sroa.7.0.ret.i81.sroa_idx.i.i.i.i, align 8 - br label %for.body.i.i82.i.i.i.i - -for.body.i.i82.i.i.i.i: ; preds = %for.body.i.i82.i.i.i.i, %_ZN4pbrt15SampledSpectrummLERKS0_.exit80.i.i.i.i - %indvars.iv.i.i83.i.i.i.i = phi i64 [ 0, %_ZN4pbrt15SampledSpectrummLERKS0_.exit80.i.i.i.i ], [ %indvars.iv.next.i.i86.i.i.i.i, %for.body.i.i82.i.i.i.i ] - %arrayidx.i.i.i84.i.i.i.i = getelementptr inbounds [4 x float], ptr %ret.i81.i.i.i.i, i64 0, i64 %indvars.iv.i.i83.i.i.i.i - %443 = load float, ptr %arrayidx.i.i.i84.i.i.i.i, align 4 - %div.i.i85.i.i.i.i = fdiv float %443, %T_maj.sroa.0.0.vec.extract.i.i.i.i - store float %div.i.i85.i.i.i.i, ptr %arrayidx.i.i.i84.i.i.i.i, align 4 - %indvars.iv.next.i.i86.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i83.i.i.i.i, 1 - %exitcond.not.i.i87.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i86.i.i.i.i, 4 - br i1 %exitcond.not.i.i87.i.i.i.i, label %_ZNK4pbrt15SampledSpectrumdvEf.exit93.i.i.i.i, label %for.body.i.i82.i.i.i.i, !llvm.loop !89 - -_ZNK4pbrt15SampledSpectrumdvEf.exit93.i.i.i.i: ; preds = %for.body.i.i82.i.i.i.i - %retval.sroa.0.0.copyload.i88.i.i.i.i = load <2 x float>, ptr %ret.i81.i.i.i.i, align 8 - %retval.sroa.2.0.copyload.i90.i.i.i.i = load <2 x float>, ptr %T_maj.sroa.7.0.ret.i81.sroa_idx.i.i.i.i, align 8 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ret.i81.i.i.i.i) - store <2 x float> %retval.sroa.0.0.copyload.i88.i.i.i.i, ptr %ref.tmp43.i.i.i.i, align 8 - store <2 x float> %retval.sroa.2.0.copyload.i90.i.i.i.i, ptr %78, align 8 - br label %for.body.i94.i.i.i.i - -for.body.i94.i.i.i.i: ; preds = %for.body.i94.i.i.i.i, %_ZNK4pbrt15SampledSpectrumdvEf.exit93.i.i.i.i - %indvars.iv.i95.i.i.i.i = phi i64 [ 0, %_ZNK4pbrt15SampledSpectrumdvEf.exit93.i.i.i.i ], [ %indvars.iv.next.i99.i.i.i.i, %for.body.i94.i.i.i.i ] - %arrayidx.i.i96.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp43.i.i.i.i, i64 0, i64 %indvars.iv.i95.i.i.i.i - %444 = load float, ptr %arrayidx.i.i96.i.i.i.i, align 4 - %arrayidx.i4.i97.i.i.i.i = getelementptr inbounds [4 x float], ptr %r_u.i.i.i.i, i64 0, i64 %indvars.iv.i95.i.i.i.i - %445 = load float, ptr %arrayidx.i4.i97.i.i.i.i, align 4 - %mul.i98.i.i.i.i = fmul float %444, %445 - store float %mul.i98.i.i.i.i, ptr %arrayidx.i4.i97.i.i.i.i, align 4 - %indvars.iv.next.i99.i.i.i.i = add nuw nsw i64 %indvars.iv.i95.i.i.i.i, 1 - %exitcond.not.i100.i.i.i.i = icmp eq i64 %indvars.iv.next.i99.i.i.i.i, 4 - br i1 %exitcond.not.i100.i.i.i.i, label %if.end49.i.i.i.i, label %for.body.i94.i.i.i.i, !llvm.loop !112 - -if.end49.i.i.i.i: ; preds = %for.body.i94.i.i.i.i - br i1 %tobool.i.not.i399.i.i.i.i, label %while.end.ithread-pre-split.i.i.i, label %lor.lhs.false.i.i.i.i + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ret.i59.i.i.i.i) + store <2 x float> %.fca.0.load.i.i989.pn.i.i.i.i.i.i.i, ptr %ret.i59.i.i.i.i, align 8 + store <2 x float> %.fca.1.load.i.i992.pn.i.i.i.i.i.i.i, ptr %T_maj.sroa.7.0.ret.i59.sroa_idx.i.i.i.i, align 8 + br label %for.body.i.i60.i.i.i.i + +for.body.i.i60.i.i.i.i: ; preds = %for.body.i.i60.i.i.i.i, %_ZN4pbrt15SampledSpectrummLERKS0_.exit.i.i.i.i + %indvars.iv.i.i61.i.i.i.i = phi i64 [ 0, %_ZN4pbrt15SampledSpectrummLERKS0_.exit.i.i.i.i ], [ %indvars.iv.next.i.i64.i.i.i.i, %for.body.i.i60.i.i.i.i ] + %arrayidx.i.i.i62.i.i.i.i = getelementptr inbounds [4 x float], ptr %ret.i59.i.i.i.i, i64 0, i64 %indvars.iv.i.i61.i.i.i.i + %440 = load float, ptr %arrayidx.i.i.i62.i.i.i.i, align 4 + %div.i.i63.i.i.i.i = fdiv float %440, %T_maj.sroa.0.0.vec.extract.i.i.i.i + store float %div.i.i63.i.i.i.i, ptr %arrayidx.i.i.i62.i.i.i.i, align 4 + %indvars.iv.next.i.i64.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i61.i.i.i.i, 1 + %exitcond.not.i.i65.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i64.i.i.i.i, 4 + br i1 %exitcond.not.i.i65.i.i.i.i, label %_ZNK4pbrt15SampledSpectrumdvEf.exit71.i.i.i.i, label %for.body.i.i60.i.i.i.i, !llvm.loop !89 + +_ZNK4pbrt15SampledSpectrumdvEf.exit71.i.i.i.i: ; preds = %for.body.i.i60.i.i.i.i + %retval.sroa.0.0.copyload.i66.i.i.i.i = load <2 x float>, ptr %ret.i59.i.i.i.i, align 8 + %retval.sroa.2.0.copyload.i68.i.i.i.i = load <2 x float>, ptr %T_maj.sroa.7.0.ret.i59.sroa_idx.i.i.i.i, align 8 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ret.i59.i.i.i.i) + store <2 x float> %retval.sroa.0.0.copyload.i66.i.i.i.i, ptr %ref.tmp37.i.i.i.i, align 8 + store <2 x float> %retval.sroa.2.0.copyload.i68.i.i.i.i, ptr %77, align 8 + br label %for.body.i72.i.i.i.i + +for.body.i72.i.i.i.i: ; preds = %for.body.i72.i.i.i.i, %_ZNK4pbrt15SampledSpectrumdvEf.exit71.i.i.i.i + %indvars.iv.i73.i.i.i.i = phi i64 [ 0, %_ZNK4pbrt15SampledSpectrumdvEf.exit71.i.i.i.i ], [ %indvars.iv.next.i77.i.i.i.i, %for.body.i72.i.i.i.i ] + %arrayidx.i.i74.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp37.i.i.i.i, i64 0, i64 %indvars.iv.i73.i.i.i.i + %441 = load float, ptr %arrayidx.i.i74.i.i.i.i, align 4 + %arrayidx.i4.i75.i.i.i.i = getelementptr inbounds [4 x float], ptr %r_l.i.i.i.i, i64 0, i64 %indvars.iv.i73.i.i.i.i + %442 = load float, ptr %arrayidx.i4.i75.i.i.i.i, align 4 + %mul.i76.i.i.i.i = fmul float %441, %442 + store float %mul.i76.i.i.i.i, ptr %arrayidx.i4.i75.i.i.i.i, align 4 + %indvars.iv.next.i77.i.i.i.i = add nuw nsw i64 %indvars.iv.i73.i.i.i.i, 1 + %exitcond.not.i78.i.i.i.i = icmp eq i64 %indvars.iv.next.i77.i.i.i.i, 4 + br i1 %exitcond.not.i78.i.i.i.i, label %_ZN4pbrt15SampledSpectrummLERKS0_.exit79.i.i.i.i, label %for.body.i72.i.i.i.i, !llvm.loop !112 + +_ZN4pbrt15SampledSpectrummLERKS0_.exit79.i.i.i.i: ; preds = %for.body.i72.i.i.i.i + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ret.i80.i.i.i.i) + store <2 x float> %.fca.0.load.i.i989.pn.i.i.i.i.i.i.i, ptr %ret.i80.i.i.i.i, align 8 + store <2 x float> %.fca.1.load.i.i992.pn.i.i.i.i.i.i.i, ptr %T_maj.sroa.7.0.ret.i80.sroa_idx.i.i.i.i, align 8 + br label %for.body.i.i81.i.i.i.i + +for.body.i.i81.i.i.i.i: ; preds = %for.body.i.i81.i.i.i.i, %_ZN4pbrt15SampledSpectrummLERKS0_.exit79.i.i.i.i + %indvars.iv.i.i82.i.i.i.i = phi i64 [ 0, %_ZN4pbrt15SampledSpectrummLERKS0_.exit79.i.i.i.i ], [ %indvars.iv.next.i.i85.i.i.i.i, %for.body.i.i81.i.i.i.i ] + %arrayidx.i.i.i83.i.i.i.i = getelementptr inbounds [4 x float], ptr %ret.i80.i.i.i.i, i64 0, i64 %indvars.iv.i.i82.i.i.i.i + %443 = load float, ptr %arrayidx.i.i.i83.i.i.i.i, align 4 + %div.i.i84.i.i.i.i = fdiv float %443, %T_maj.sroa.0.0.vec.extract.i.i.i.i + store float %div.i.i84.i.i.i.i, ptr %arrayidx.i.i.i83.i.i.i.i, align 4 + %indvars.iv.next.i.i85.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i82.i.i.i.i, 1 + %exitcond.not.i.i86.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i85.i.i.i.i, 4 + br i1 %exitcond.not.i.i86.i.i.i.i, label %_ZNK4pbrt15SampledSpectrumdvEf.exit92.i.i.i.i, label %for.body.i.i81.i.i.i.i, !llvm.loop !89 + +_ZNK4pbrt15SampledSpectrumdvEf.exit92.i.i.i.i: ; preds = %for.body.i.i81.i.i.i.i + %retval.sroa.0.0.copyload.i87.i.i.i.i = load <2 x float>, ptr %ret.i80.i.i.i.i, align 8 + %retval.sroa.2.0.copyload.i89.i.i.i.i = load <2 x float>, ptr %T_maj.sroa.7.0.ret.i80.sroa_idx.i.i.i.i, align 8 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ret.i80.i.i.i.i) + store <2 x float> %retval.sroa.0.0.copyload.i87.i.i.i.i, ptr %ref.tmp43.i.i.i.i, align 8 + store <2 x float> %retval.sroa.2.0.copyload.i89.i.i.i.i, ptr %78, align 8 + br label %for.body.i93.i.i.i.i + +for.body.i93.i.i.i.i: ; preds = %for.body.i93.i.i.i.i, %_ZNK4pbrt15SampledSpectrumdvEf.exit92.i.i.i.i + %indvars.iv.i94.i.i.i.i = phi i64 [ 0, %_ZNK4pbrt15SampledSpectrumdvEf.exit92.i.i.i.i ], [ %indvars.iv.next.i98.i.i.i.i, %for.body.i93.i.i.i.i ] + %arrayidx.i.i95.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp43.i.i.i.i, i64 0, i64 %indvars.iv.i94.i.i.i.i + %444 = load float, ptr %arrayidx.i.i95.i.i.i.i, align 4 + %arrayidx.i4.i96.i.i.i.i = getelementptr inbounds [4 x float], ptr %r_u.i.i.i.i, i64 0, i64 %indvars.iv.i94.i.i.i.i + %445 = load float, ptr %arrayidx.i4.i96.i.i.i.i, align 4 + %mul.i97.i.i.i.i = fmul float %444, %445 + store float %mul.i97.i.i.i.i, ptr %arrayidx.i4.i96.i.i.i.i, align 4 + %indvars.iv.next.i98.i.i.i.i = add nuw nsw i64 %indvars.iv.i94.i.i.i.i, 1 + %exitcond.not.i99.i.i.i.i = icmp eq i64 %indvars.iv.next.i98.i.i.i.i, 4 + br i1 %exitcond.not.i99.i.i.i.i, label %if.end49.i.i.i.i, label %for.body.i93.i.i.i.i, !llvm.loop !112 + +if.end49.i.i.i.i: ; preds = %for.body.i93.i.i.i.i + br i1 %tobool.i.not.i398.i.i.i.i, label %while.end.ithread-pre-split.i.i.i, label %lor.lhs.false.i.i.i.i lor.lhs.false.i.i.i.i: ; preds = %if.end49.i.i.i.i, %if.end.thread.i.i.i.i %446 = load float, ptr %T_ray.i.i.i.i, align 4 - %cmp2.i337.i.i.i.i = fcmp une float %446, 0.000000e+00 - br i1 %cmp2.i337.i.i.i.i, label %if.end54.i.i.i.i, label %for.cond.i.i.i.i.i - -for.cond.i.i.i.i.i: ; preds = %lor.lhs.false.i.i.i.i, %for.body.i102.i.i.i.i - %indvars.iv.i103338.i.i.i.i = phi i64 [ %indvars.iv.next.i106.i.i.i.i, %for.body.i102.i.i.i.i ], [ 0, %lor.lhs.false.i.i.i.i ] - %indvars.iv.next.i106.i.i.i.i = add nuw nsw i64 %indvars.iv.i103338.i.i.i.i, 1 - %exitcond.not.i108.i.i.i.i = icmp eq i64 %indvars.iv.next.i106.i.i.i.i, 4 - br i1 %exitcond.not.i108.i.i.i.i, label %while.end.ithread-pre-split.i.i.i, label %for.body.i102.i.i.i.i, !llvm.loop !127 - -for.body.i102.i.i.i.i: ; preds = %for.cond.i.i.i.i.i - %arrayidx.i.i105.i.i.i.i = getelementptr inbounds [4 x float], ptr %T_ray.i.i.i.i, i64 0, i64 %indvars.iv.next.i106.i.i.i.i - %447 = load float, ptr %arrayidx.i.i105.i.i.i.i, align 4 + %cmp2.i336.i.i.i.i = fcmp une float %446, 0.000000e+00 + br i1 %cmp2.i336.i.i.i.i, label %if.end54.i.i.i.i, label %for.cond.i.i.i.i.i + +for.cond.i.i.i.i.i: ; preds = %lor.lhs.false.i.i.i.i, %for.body.i101.i.i.i.i + %indvars.iv.i102337.i.i.i.i = phi i64 [ %indvars.iv.next.i105.i.i.i.i, %for.body.i101.i.i.i.i ], [ 0, %lor.lhs.false.i.i.i.i ] + %indvars.iv.next.i105.i.i.i.i = add nuw nsw i64 %indvars.iv.i102337.i.i.i.i, 1 + %exitcond.not.i107.i.i.i.i = icmp eq i64 %indvars.iv.next.i105.i.i.i.i, 4 + br i1 %exitcond.not.i107.i.i.i.i, label %while.end.ithread-pre-split.i.i.i, label %for.body.i101.i.i.i.i, !llvm.loop !127 + +for.body.i101.i.i.i.i: ; preds = %for.cond.i.i.i.i.i + %arrayidx.i.i104.i.i.i.i = getelementptr inbounds [4 x float], ptr %T_ray.i.i.i.i, i64 0, i64 %indvars.iv.next.i105.i.i.i.i + %447 = load float, ptr %arrayidx.i.i104.i.i.i.i, align 4 %cmp2.i.i.i.i.i = fcmp une float %447, 0.000000e+00 br i1 %cmp2.i.i.i.i.i, label %_ZNK4pbrt15SampledSpectrumcvbEv.exit.i.i.i.i, label %for.cond.i.i.i.i.i, !llvm.loop !127 -_ZNK4pbrt15SampledSpectrumcvbEv.exit.i.i.i.i: ; preds = %for.body.i102.i.i.i.i - %cmp.i107.le.i.i.i.i = icmp ult i64 %indvars.iv.i103338.i.i.i.i, 3 - br i1 %cmp.i107.le.i.i.i.i, label %if.end54.i.i.i.i, label %while.end.ithread-pre-split.i.i.i +_ZNK4pbrt15SampledSpectrumcvbEv.exit.i.i.i.i: ; preds = %for.body.i101.i.i.i.i + %cmp.i106.le.i.i.i.i = icmp ult i64 %indvars.iv.i102337.i.i.i.i, 3 + br i1 %cmp.i106.le.i.i.i.i, label %if.end54.i.i.i.i, label %while.end.ithread-pre-split.i.i.i if.end54.i.i.i.i: ; preds = %_ZNK4pbrt15SampledSpectrumcvbEv.exit.i.i.i.i, %lor.lhs.false.i.i.i.i %448 = load i8, ptr %set.i.i.i.i, align 16, !noalias !128 %449 = and i8 %448, 1 - %tobool.not.i.i.i110.i.i.i.i = icmp eq i8 %449, 0 - br i1 %tobool.not.i.i.i110.i.i.i.i, label %land.rhs.i.i51.invoke.i.i.i.i.i.i.invoke.i.i.i, label %_ZN4pstd8optionalIN4pbrt17ShapeIntersectionEEptEv.exit.i.i.i.i.i + %tobool.not.i.i.i109.i.i.i.i = icmp eq i8 %449, 0 + br i1 %tobool.not.i.i.i109.i.i.i.i, label %land.rhs.i.i51.invoke.i.i.i.i.i.i.invoke.i.i.i, label %_ZN4pstd8optionalIN4pbrt17ShapeIntersectionEEptEv.exit.i.i.i.i.i _ZN4pstd8optionalIN4pbrt17ShapeIntersectionEEptEv.exit.i.i.i.i.i: ; preds = %if.end54.i.i.i.i %450 = load <4 x float>, ptr %si.i.i.i, align 16 @@ -13985,14 +13961,14 @@ if.then.i.i.i.i.i.i.i: ; preds = %_ZN4pstd8optionalIN %agg.tmp2.sroa.2.0.copyload.i.i.i.i.i.i.i = load float, ptr %agg.tmp2.sroa.2.0.n.sroa_idx.i.i.i.i.i.i, align 16, !noalias !134 %n.sroa.0.0.vec.extract.i.i.i.i.i.i.i.i = extractelement <2 x float> %agg.tmp2.sroa.0.0.copyload.i.i.i.i.i.i.i, i64 0 %n.sroa.0.4.vec.extract.i.i.i.i.i.i.i.i = extractelement <2 x float> %agg.tmp2.sroa.0.0.copyload.i.i.i.i.i.i.i, i64 1 - %mul.i.i.i.i.i112.i.i.i.i = fmul float %sub6.i.i.i.i.i.i.i.i, %agg.tmp2.sroa.2.0.copyload.i.i.i.i.i.i.i + %mul.i.i.i.i.i111.i.i.i.i = fmul float %sub6.i.i.i.i.i.i.i.i, %agg.tmp2.sroa.2.0.copyload.i.i.i.i.i.i.i %459 = extractelement <2 x float> %457, i64 1 - %460 = call noundef float @llvm.fma.f32(float %n.sroa.0.4.vec.extract.i.i.i.i.i.i.i.i, float %459, float %mul.i.i.i.i.i112.i.i.i.i) - %fneg.i.i.i.i.i113.i.i.i.i = fneg float %mul.i.i.i.i.i112.i.i.i.i - %461 = call noundef float @llvm.fma.f32(float %agg.tmp2.sroa.2.0.copyload.i.i.i.i.i.i.i, float %sub6.i.i.i.i.i.i.i.i, float %fneg.i.i.i.i.i113.i.i.i.i) - %add.i.i.i.i.i114.i.i.i.i = fadd float %460, %461 + %460 = call noundef float @llvm.fma.f32(float %n.sroa.0.4.vec.extract.i.i.i.i.i.i.i.i, float %459, float %mul.i.i.i.i.i111.i.i.i.i) + %fneg.i.i.i.i.i112.i.i.i.i = fneg float %mul.i.i.i.i.i111.i.i.i.i + %461 = call noundef float @llvm.fma.f32(float %agg.tmp2.sroa.2.0.copyload.i.i.i.i.i.i.i, float %sub6.i.i.i.i.i.i.i.i, float %fneg.i.i.i.i.i112.i.i.i.i) + %add.i.i.i.i.i113.i.i.i.i = fadd float %460, %461 %462 = extractelement <2 x float> %457, i64 0 - %463 = call noundef float @llvm.fma.f32(float %n.sroa.0.0.vec.extract.i.i.i.i.i.i.i.i, float %462, float %add.i.i.i.i.i114.i.i.i.i) + %463 = call noundef float @llvm.fma.f32(float %n.sroa.0.0.vec.extract.i.i.i.i.i.i.i.i, float %462, float %add.i.i.i.i.i113.i.i.i.i) %cmp.i.i.i.i.i.i.i = fcmp ogt float %463, 0.000000e+00 %outside.i.i.i.i.i.i.i = getelementptr inbounds %"struct.pbrt::MediumInterface", ptr %458, i64 0, i32 1 %cond-lvalue.i.i.i.i.i.i.i = select i1 %cmp.i.i.i.i.i.i.i, ptr %outside.i.i.i.i.i.i.i, ptr %458 @@ -14013,152 +13989,152 @@ if.then.i.i.i.i.i.i.i: ; preds = %_ZN4pstd8optionalIN while.end.ithread-pre-split.i.i.i: ; preds = %"_ZZZNK4pbrt12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiENKUlNS_6Point3IfEEE_clESB_.exit.i.i.i.i", %_ZNK4pbrt15SampledSpectrumcvbEv.exit.i.i.i.i, %if.end49.i.i.i.i, %if.end.i.i.i.i, %for.cond.i.i.i.i.i, %while.cond.preheader.i.i.i.i %.pr.i.i.i = load float, ptr %T_ray.i.i.i.i, align 4 %466 = fcmp une float %.pr.i.i.i, 0.000000e+00 - br i1 %466, label %if.then59.i.i.i.i, label %for.cond.i122.i.i.i.i.preheader - -for.cond.i122.i.i.i.i.preheader: ; preds = %while.end.ithread-pre-split.i.i.i, %if.then.i.i.i.i - br label %for.cond.i122.i.i.i.i - -for.cond.i122.i.i.i.i: ; preds = %for.cond.i122.i.i.i.i.preheader, %for.body.i117.i.i.i.i - %indvars.iv.i118354.i.i.i.i = phi i64 [ %indvars.iv.next.i123.i.i.i.i, %for.body.i117.i.i.i.i ], [ 0, %for.cond.i122.i.i.i.i.preheader ] - %indvars.iv.next.i123.i.i.i.i = add nuw nsw i64 %indvars.iv.i118354.i.i.i.i, 1 - %exitcond.not.i125.i.i.i.i = icmp eq i64 %indvars.iv.next.i123.i.i.i.i, 4 - br i1 %exitcond.not.i125.i.i.i.i, label %"_ZSt10__invoke_rIvRZNK4pbrt12CPUAggregate17IntersectShadowTrEiPNS0_9WorkQueueINS0_17ShadowRayWorkItemEEEPNS0_3SOAINS0_16PixelSampleStateEEEE3$_0JlEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESD_E4typeEOSE_DpOSF_.exit", label %for.body.i117.i.i.i.i, !llvm.loop !127 - -for.body.i117.i.i.i.i: ; preds = %for.cond.i122.i.i.i.i - %arrayidx.i.i120.i.i.i.i = getelementptr inbounds [4 x float], ptr %T_ray.i.i.i.i, i64 0, i64 %indvars.iv.next.i123.i.i.i.i - %467 = load float, ptr %arrayidx.i.i120.i.i.i.i, align 4 - %cmp2.i121.i.i.i.i = fcmp une float %467, 0.000000e+00 - br i1 %cmp2.i121.i.i.i.i, label %_ZNK4pbrt15SampledSpectrumcvbEv.exit127.i.i.i.i, label %for.cond.i122.i.i.i.i, !llvm.loop !127 - -_ZNK4pbrt15SampledSpectrumcvbEv.exit127.i.i.i.i: ; preds = %for.body.i117.i.i.i.i - %cmp.i124.le.i.i.i.i = icmp ult i64 %indvars.iv.i118354.i.i.i.i, 3 - br i1 %cmp.i124.le.i.i.i.i, label %if.then59.i.i.i.i, label %"_ZSt10__invoke_rIvRZNK4pbrt12CPUAggregate17IntersectShadowTrEiPNS0_9WorkQueueINS0_17ShadowRayWorkItemEEEPNS0_3SOAINS0_16PixelSampleStateEEEE3$_0JlEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESD_E4typeEOSE_DpOSF_.exit" - -if.then59.i.i.i.i: ; preds = %_ZNK4pbrt15SampledSpectrumcvbEv.exit127.i.i.i.i, %while.end.ithread-pre-split.i.i.i - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ret.i128.i.i.i.i) - store <2 x float> %retval.sroa.0.0.copyload.i.i.i.i19.i.i.i.i, ptr %ret.i128.i.i.i.i, align 8 - %agg.tmp.sroa.13.sroa.2.0.ret.i128.i.sroa_idx.i.i.i = getelementptr inbounds i8, ptr %ret.i128.i.i.i.i, i64 8 - store <2 x float> %retval.sroa.2.0.copyload.i.i.i.i21.i.i.i.i, ptr %agg.tmp.sroa.13.sroa.2.0.ret.i128.i.sroa_idx.i.i.i, align 8 - br label %for.body.i.i129.i.i.i.i - -for.body.i.i129.i.i.i.i: ; preds = %for.body.i.i129.i.i.i.i, %if.then59.i.i.i.i - %indvars.iv.i.i130.i.i.i.i = phi i64 [ 0, %if.then59.i.i.i.i ], [ %indvars.iv.next.i.i133.i.i.i.i, %for.body.i.i129.i.i.i.i ] - %arrayidx.i.i.i131.i.i.i.i = getelementptr inbounds [4 x float], ptr %r_u.i.i.i.i, i64 0, i64 %indvars.iv.i.i130.i.i.i.i - %468 = load float, ptr %arrayidx.i.i.i131.i.i.i.i, align 4 - %arrayidx.i4.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ret.i128.i.i.i.i, i64 0, i64 %indvars.iv.i.i130.i.i.i.i + br i1 %466, label %if.then59.i.i.i.i, label %for.cond.i121.i.i.i.i.preheader + +for.cond.i121.i.i.i.i.preheader: ; preds = %while.end.ithread-pre-split.i.i.i, %if.then.i.i.i.i + br label %for.cond.i121.i.i.i.i + +for.cond.i121.i.i.i.i: ; preds = %for.cond.i121.i.i.i.i.preheader, %for.body.i116.i.i.i.i + %indvars.iv.i117353.i.i.i.i = phi i64 [ %indvars.iv.next.i122.i.i.i.i, %for.body.i116.i.i.i.i ], [ 0, %for.cond.i121.i.i.i.i.preheader ] + %indvars.iv.next.i122.i.i.i.i = add nuw nsw i64 %indvars.iv.i117353.i.i.i.i, 1 + %exitcond.not.i124.i.i.i.i = icmp eq i64 %indvars.iv.next.i122.i.i.i.i, 4 + br i1 %exitcond.not.i124.i.i.i.i, label %"_ZSt10__invoke_rIvRZNK4pbrt12CPUAggregate17IntersectShadowTrEiPNS0_9WorkQueueINS0_17ShadowRayWorkItemEEEPNS0_3SOAINS0_16PixelSampleStateEEEE3$_0JlEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESD_E4typeEOSE_DpOSF_.exit", label %for.body.i116.i.i.i.i, !llvm.loop !127 + +for.body.i116.i.i.i.i: ; preds = %for.cond.i121.i.i.i.i + %arrayidx.i.i119.i.i.i.i = getelementptr inbounds [4 x float], ptr %T_ray.i.i.i.i, i64 0, i64 %indvars.iv.next.i122.i.i.i.i + %467 = load float, ptr %arrayidx.i.i119.i.i.i.i, align 4 + %cmp2.i120.i.i.i.i = fcmp une float %467, 0.000000e+00 + br i1 %cmp2.i120.i.i.i.i, label %_ZNK4pbrt15SampledSpectrumcvbEv.exit126.i.i.i.i, label %for.cond.i121.i.i.i.i, !llvm.loop !127 + +_ZNK4pbrt15SampledSpectrumcvbEv.exit126.i.i.i.i: ; preds = %for.body.i116.i.i.i.i + %cmp.i123.le.i.i.i.i = icmp ult i64 %indvars.iv.i117353.i.i.i.i, 3 + br i1 %cmp.i123.le.i.i.i.i, label %if.then59.i.i.i.i, label %"_ZSt10__invoke_rIvRZNK4pbrt12CPUAggregate17IntersectShadowTrEiPNS0_9WorkQueueINS0_17ShadowRayWorkItemEEEPNS0_3SOAINS0_16PixelSampleStateEEEE3$_0JlEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESD_E4typeEOSE_DpOSF_.exit" + +if.then59.i.i.i.i: ; preds = %_ZNK4pbrt15SampledSpectrumcvbEv.exit126.i.i.i.i, %while.end.ithread-pre-split.i.i.i + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ret.i127.i.i.i.i) + store <2 x float> %retval.sroa.0.0.copyload.i.i.i.i19.i.i.i.i, ptr %ret.i127.i.i.i.i, align 8 + %agg.tmp.sroa.13.sroa.2.0.ret.i127.i.sroa_idx.i.i.i = getelementptr inbounds i8, ptr %ret.i127.i.i.i.i, i64 8 + store <2 x float> %retval.sroa.2.0.copyload.i.i.i.i21.i.i.i.i, ptr %agg.tmp.sroa.13.sroa.2.0.ret.i127.i.sroa_idx.i.i.i, align 8 + br label %for.body.i.i128.i.i.i.i + +for.body.i.i128.i.i.i.i: ; preds = %for.body.i.i128.i.i.i.i, %if.then59.i.i.i.i + %indvars.iv.i.i129.i.i.i.i = phi i64 [ 0, %if.then59.i.i.i.i ], [ %indvars.iv.next.i.i132.i.i.i.i, %for.body.i.i128.i.i.i.i ] + %arrayidx.i.i.i130.i.i.i.i = getelementptr inbounds [4 x float], ptr %r_u.i.i.i.i, i64 0, i64 %indvars.iv.i.i129.i.i.i.i + %468 = load float, ptr %arrayidx.i.i.i130.i.i.i.i, align 4 + %arrayidx.i4.i.i.i.i.i.i = getelementptr inbounds [4 x float], ptr %ret.i127.i.i.i.i, i64 0, i64 %indvars.iv.i.i129.i.i.i.i %469 = load float, ptr %arrayidx.i4.i.i.i.i.i.i, align 4 - %mul.i.i132.i.i.i.i = fmul float %468, %469 - store float %mul.i.i132.i.i.i.i, ptr %arrayidx.i4.i.i.i.i.i.i, align 4 - %indvars.iv.next.i.i133.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i130.i.i.i.i, 1 - %exitcond.not.i.i134.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i133.i.i.i.i, 4 - br i1 %exitcond.not.i.i134.i.i.i.i, label %_ZNK4pbrt15SampledSpectrummlERKS0_.exit.i.i.i.i, label %for.body.i.i129.i.i.i.i, !llvm.loop !112 - -_ZNK4pbrt15SampledSpectrummlERKS0_.exit.i.i.i.i: ; preds = %for.body.i.i129.i.i.i.i - %retval.sroa.0.0.copyload.i135.i.i.i.i = load <2 x float>, ptr %ret.i128.i.i.i.i, align 8 - %retval.sroa.2.0.copyload.i137.i.i.i.i = load <2 x float>, ptr %agg.tmp.sroa.13.sroa.2.0.ret.i128.i.sroa_idx.i.i.i, align 8 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ret.i128.i.i.i.i) - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ret.i140.i.i.i.i) - store <2 x float> %retval.sroa.0.0.copyload.i.i.i.i30.i.i.i.i, ptr %ret.i140.i.i.i.i, align 8 - %agg.tmp.sroa.14.sroa.2.0.ret.i140.i.sroa_idx.i.i.i = getelementptr inbounds i8, ptr %ret.i140.i.i.i.i, i64 8 - store <2 x float> %retval.sroa.2.0.copyload.i.i.i.i32.i.i.i.i, ptr %agg.tmp.sroa.14.sroa.2.0.ret.i140.i.sroa_idx.i.i.i, align 8 - br label %for.body.i.i141.i.i.i.i - -for.body.i.i141.i.i.i.i: ; preds = %for.body.i.i141.i.i.i.i, %_ZNK4pbrt15SampledSpectrummlERKS0_.exit.i.i.i.i - %indvars.iv.i.i142.i.i.i.i = phi i64 [ 0, %_ZNK4pbrt15SampledSpectrummlERKS0_.exit.i.i.i.i ], [ %indvars.iv.next.i.i146.i.i.i.i, %for.body.i.i141.i.i.i.i ] - %arrayidx.i.i.i143.i.i.i.i = getelementptr inbounds [4 x float], ptr %r_l.i.i.i.i, i64 0, i64 %indvars.iv.i.i142.i.i.i.i - %470 = load float, ptr %arrayidx.i.i.i143.i.i.i.i, align 4 - %arrayidx.i4.i.i144.i.i.i.i = getelementptr inbounds [4 x float], ptr %ret.i140.i.i.i.i, i64 0, i64 %indvars.iv.i.i142.i.i.i.i - %471 = load float, ptr %arrayidx.i4.i.i144.i.i.i.i, align 4 - %mul.i.i145.i.i.i.i = fmul float %470, %471 - store float %mul.i.i145.i.i.i.i, ptr %arrayidx.i4.i.i144.i.i.i.i, align 4 - %indvars.iv.next.i.i146.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i142.i.i.i.i, 1 - %exitcond.not.i.i147.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i146.i.i.i.i, 4 - br i1 %exitcond.not.i.i147.i.i.i.i, label %_ZNK4pbrt15SampledSpectrummlERKS0_.exit153.i.i.i.i, label %for.body.i.i141.i.i.i.i, !llvm.loop !112 - -_ZNK4pbrt15SampledSpectrummlERKS0_.exit153.i.i.i.i: ; preds = %for.body.i.i141.i.i.i.i - %retval.sroa.0.0.copyload.i148.i.i.i.i = load <2 x float>, ptr %ret.i140.i.i.i.i, align 8 - %retval.sroa.2.0.copyload.i150.i.i.i.i = load <2 x float>, ptr %agg.tmp.sroa.14.sroa.2.0.ret.i140.i.sroa_idx.i.i.i, align 8 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ret.i140.i.i.i.i) - store <2 x float> %retval.sroa.0.0.copyload.i148.i.i.i.i, ptr %ref.tmp67.i.i.i.i, align 8 + %mul.i.i131.i.i.i.i = fmul float %468, %469 + store float %mul.i.i131.i.i.i.i, ptr %arrayidx.i4.i.i.i.i.i.i, align 4 + %indvars.iv.next.i.i132.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i129.i.i.i.i, 1 + %exitcond.not.i.i133.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i132.i.i.i.i, 4 + br i1 %exitcond.not.i.i133.i.i.i.i, label %_ZNK4pbrt15SampledSpectrummlERKS0_.exit.i.i.i.i, label %for.body.i.i128.i.i.i.i, !llvm.loop !112 + +_ZNK4pbrt15SampledSpectrummlERKS0_.exit.i.i.i.i: ; preds = %for.body.i.i128.i.i.i.i + %retval.sroa.0.0.copyload.i134.i.i.i.i = load <2 x float>, ptr %ret.i127.i.i.i.i, align 8 + %retval.sroa.2.0.copyload.i136.i.i.i.i = load <2 x float>, ptr %agg.tmp.sroa.13.sroa.2.0.ret.i127.i.sroa_idx.i.i.i, align 8 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ret.i127.i.i.i.i) + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ret.i139.i.i.i.i) + store <2 x float> %retval.sroa.0.0.copyload.i.i.i.i30.i.i.i.i, ptr %ret.i139.i.i.i.i, align 8 + %agg.tmp.sroa.14.sroa.2.0.ret.i139.i.sroa_idx.i.i.i = getelementptr inbounds i8, ptr %ret.i139.i.i.i.i, i64 8 + store <2 x float> %retval.sroa.2.0.copyload.i.i.i.i32.i.i.i.i, ptr %agg.tmp.sroa.14.sroa.2.0.ret.i139.i.sroa_idx.i.i.i, align 8 + br label %for.body.i.i140.i.i.i.i + +for.body.i.i140.i.i.i.i: ; preds = %for.body.i.i140.i.i.i.i, %_ZNK4pbrt15SampledSpectrummlERKS0_.exit.i.i.i.i + %indvars.iv.i.i141.i.i.i.i = phi i64 [ 0, %_ZNK4pbrt15SampledSpectrummlERKS0_.exit.i.i.i.i ], [ %indvars.iv.next.i.i145.i.i.i.i, %for.body.i.i140.i.i.i.i ] + %arrayidx.i.i.i142.i.i.i.i = getelementptr inbounds [4 x float], ptr %r_l.i.i.i.i, i64 0, i64 %indvars.iv.i.i141.i.i.i.i + %470 = load float, ptr %arrayidx.i.i.i142.i.i.i.i, align 4 + %arrayidx.i4.i.i143.i.i.i.i = getelementptr inbounds [4 x float], ptr %ret.i139.i.i.i.i, i64 0, i64 %indvars.iv.i.i141.i.i.i.i + %471 = load float, ptr %arrayidx.i4.i.i143.i.i.i.i, align 4 + %mul.i.i144.i.i.i.i = fmul float %470, %471 + store float %mul.i.i144.i.i.i.i, ptr %arrayidx.i4.i.i143.i.i.i.i, align 4 + %indvars.iv.next.i.i145.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i141.i.i.i.i, 1 + %exitcond.not.i.i146.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i145.i.i.i.i, 4 + br i1 %exitcond.not.i.i146.i.i.i.i, label %_ZNK4pbrt15SampledSpectrummlERKS0_.exit152.i.i.i.i, label %for.body.i.i140.i.i.i.i, !llvm.loop !112 + +_ZNK4pbrt15SampledSpectrummlERKS0_.exit152.i.i.i.i: ; preds = %for.body.i.i140.i.i.i.i + %retval.sroa.0.0.copyload.i147.i.i.i.i = load <2 x float>, ptr %ret.i139.i.i.i.i, align 8 + %retval.sroa.2.0.copyload.i149.i.i.i.i = load <2 x float>, ptr %agg.tmp.sroa.14.sroa.2.0.ret.i139.i.sroa_idx.i.i.i, align 8 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ret.i139.i.i.i.i) + store <2 x float> %retval.sroa.0.0.copyload.i147.i.i.i.i, ptr %ref.tmp67.i.i.i.i, align 8 %472 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp67.i.i.i.i, i64 0, i32 1 - store <2 x float> %retval.sroa.2.0.copyload.i150.i.i.i.i, ptr %472, align 8 - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ret.i154.i.i.i.i) - store <2 x float> %retval.sroa.0.0.copyload.i135.i.i.i.i, ptr %ret.i154.i.i.i.i, align 8 - %ref.tmp62.sroa.2.0.ret.i154.sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %ret.i154.i.i.i.i, i64 8 - store <2 x float> %retval.sroa.2.0.copyload.i137.i.i.i.i, ptr %ref.tmp62.sroa.2.0.ret.i154.sroa_idx.i.i.i.i, align 8 - br label %for.body.i.i155.i.i.i.i - -for.body.i.i155.i.i.i.i: ; preds = %for.body.i.i155.i.i.i.i, %_ZNK4pbrt15SampledSpectrummlERKS0_.exit153.i.i.i.i - %indvars.iv.i.i156.i.i.i.i = phi i64 [ 0, %_ZNK4pbrt15SampledSpectrummlERKS0_.exit153.i.i.i.i ], [ %indvars.iv.next.i.i160.i.i.i.i, %for.body.i.i155.i.i.i.i ] - %arrayidx.i.i.i157.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp67.i.i.i.i, i64 0, i64 %indvars.iv.i.i156.i.i.i.i - %473 = load float, ptr %arrayidx.i.i.i157.i.i.i.i, align 4 - %arrayidx.i4.i.i158.i.i.i.i = getelementptr inbounds [4 x float], ptr %ret.i154.i.i.i.i, i64 0, i64 %indvars.iv.i.i156.i.i.i.i - %474 = load float, ptr %arrayidx.i4.i.i158.i.i.i.i, align 4 - %add.i.i159.i.i.i.i = fadd float %473, %474 - store float %add.i.i159.i.i.i.i, ptr %arrayidx.i4.i.i158.i.i.i.i, align 4 - %indvars.iv.next.i.i160.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i156.i.i.i.i, 1 - %exitcond.not.i.i161.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i160.i.i.i.i, 4 - br i1 %exitcond.not.i.i161.i.i.i.i, label %_ZNK4pbrt15SampledSpectrumplERKS0_.exit.i.i.i.i, label %for.body.i.i155.i.i.i.i, !llvm.loop !87 - -_ZNK4pbrt15SampledSpectrumplERKS0_.exit.i.i.i.i: ; preds = %for.body.i.i155.i.i.i.i - %retval.sroa.0.0.copyload.i162.i.i.i.i = load <2 x float>, ptr %ret.i154.i.i.i.i, align 8 - %retval.sroa.2.0.copyload.i164.i.i.i.i = load <2 x float>, ptr %ref.tmp62.sroa.2.0.ret.i154.sroa_idx.i.i.i.i, align 8 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ret.i154.i.i.i.i) - store <2 x float> %retval.sroa.0.0.copyload.i162.i.i.i.i, ptr %ref.tmp61.i.i.i.i, align 8 + store <2 x float> %retval.sroa.2.0.copyload.i149.i.i.i.i, ptr %472, align 8 + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ret.i153.i.i.i.i) + store <2 x float> %retval.sroa.0.0.copyload.i134.i.i.i.i, ptr %ret.i153.i.i.i.i, align 8 + %ref.tmp62.sroa.2.0.ret.i153.sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %ret.i153.i.i.i.i, i64 8 + store <2 x float> %retval.sroa.2.0.copyload.i136.i.i.i.i, ptr %ref.tmp62.sroa.2.0.ret.i153.sroa_idx.i.i.i.i, align 8 + br label %for.body.i.i154.i.i.i.i + +for.body.i.i154.i.i.i.i: ; preds = %for.body.i.i154.i.i.i.i, %_ZNK4pbrt15SampledSpectrummlERKS0_.exit152.i.i.i.i + %indvars.iv.i.i155.i.i.i.i = phi i64 [ 0, %_ZNK4pbrt15SampledSpectrummlERKS0_.exit152.i.i.i.i ], [ %indvars.iv.next.i.i159.i.i.i.i, %for.body.i.i154.i.i.i.i ] + %arrayidx.i.i.i156.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp67.i.i.i.i, i64 0, i64 %indvars.iv.i.i155.i.i.i.i + %473 = load float, ptr %arrayidx.i.i.i156.i.i.i.i, align 4 + %arrayidx.i4.i.i157.i.i.i.i = getelementptr inbounds [4 x float], ptr %ret.i153.i.i.i.i, i64 0, i64 %indvars.iv.i.i155.i.i.i.i + %474 = load float, ptr %arrayidx.i4.i.i157.i.i.i.i, align 4 + %add.i.i158.i.i.i.i = fadd float %473, %474 + store float %add.i.i158.i.i.i.i, ptr %arrayidx.i4.i.i157.i.i.i.i, align 4 + %indvars.iv.next.i.i159.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i155.i.i.i.i, 1 + %exitcond.not.i.i160.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i159.i.i.i.i, 4 + br i1 %exitcond.not.i.i160.i.i.i.i, label %_ZNK4pbrt15SampledSpectrumplERKS0_.exit.i.i.i.i, label %for.body.i.i154.i.i.i.i, !llvm.loop !87 + +_ZNK4pbrt15SampledSpectrumplERKS0_.exit.i.i.i.i: ; preds = %for.body.i.i154.i.i.i.i + %retval.sroa.0.0.copyload.i161.i.i.i.i = load <2 x float>, ptr %ret.i153.i.i.i.i, align 8 + %retval.sroa.2.0.copyload.i163.i.i.i.i = load <2 x float>, ptr %ref.tmp62.sroa.2.0.ret.i153.sroa_idx.i.i.i.i, align 8 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ret.i153.i.i.i.i) + store <2 x float> %retval.sroa.0.0.copyload.i161.i.i.i.i, ptr %ref.tmp61.i.i.i.i, align 8 %475 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp61.i.i.i.i, i64 0, i32 1 - store <2 x float> %retval.sroa.2.0.copyload.i164.i.i.i.i, ptr %475, align 8 - %476 = extractelement <2 x float> %retval.sroa.0.0.copyload.i162.i.i.i.i, i64 0 - br label %for.body.i167.i.i.i.i - -for.body.i167.i.i.i.i: ; preds = %for.body.i167.i.i.i.i, %_ZNK4pbrt15SampledSpectrumplERKS0_.exit.i.i.i.i - %indvars.iv.i168.i.i.i.i = phi i64 [ 1, %_ZNK4pbrt15SampledSpectrumplERKS0_.exit.i.i.i.i ], [ %indvars.iv.next.i170.i.i.i.i, %for.body.i167.i.i.i.i ] - %sum.04.i.i.i.i.i = phi float [ %476, %_ZNK4pbrt15SampledSpectrumplERKS0_.exit.i.i.i.i ], [ %add.i.i.i.i.i, %for.body.i167.i.i.i.i ] - %arrayidx.i.i169.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp61.i.i.i.i, i64 0, i64 %indvars.iv.i168.i.i.i.i - %477 = load float, ptr %arrayidx.i.i169.i.i.i.i, align 4 + store <2 x float> %retval.sroa.2.0.copyload.i163.i.i.i.i, ptr %475, align 8 + %476 = extractelement <2 x float> %retval.sroa.0.0.copyload.i161.i.i.i.i, i64 0 + br label %for.body.i166.i.i.i.i + +for.body.i166.i.i.i.i: ; preds = %for.body.i166.i.i.i.i, %_ZNK4pbrt15SampledSpectrumplERKS0_.exit.i.i.i.i + %indvars.iv.i167.i.i.i.i = phi i64 [ 1, %_ZNK4pbrt15SampledSpectrumplERKS0_.exit.i.i.i.i ], [ %indvars.iv.next.i169.i.i.i.i, %for.body.i166.i.i.i.i ] + %sum.04.i.i.i.i.i = phi float [ %476, %_ZNK4pbrt15SampledSpectrumplERKS0_.exit.i.i.i.i ], [ %add.i.i.i.i.i, %for.body.i166.i.i.i.i ] + %arrayidx.i.i168.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp61.i.i.i.i, i64 0, i64 %indvars.iv.i167.i.i.i.i + %477 = load float, ptr %arrayidx.i.i168.i.i.i.i, align 4 %add.i.i.i.i.i = fadd float %sum.04.i.i.i.i.i, %477 - %indvars.iv.next.i170.i.i.i.i = add nuw nsw i64 %indvars.iv.i168.i.i.i.i, 1 - %exitcond.not.i171.i.i.i.i = icmp eq i64 %indvars.iv.next.i170.i.i.i.i, 4 - br i1 %exitcond.not.i171.i.i.i.i, label %_ZNK4pbrt15SampledSpectrum7AverageEv.exit.i.i.i.i, label %for.body.i167.i.i.i.i, !llvm.loop !88 + %indvars.iv.next.i169.i.i.i.i = add nuw nsw i64 %indvars.iv.i167.i.i.i.i, 1 + %exitcond.not.i170.i.i.i.i = icmp eq i64 %indvars.iv.next.i169.i.i.i.i, 4 + br i1 %exitcond.not.i170.i.i.i.i, label %_ZNK4pbrt15SampledSpectrum7AverageEv.exit.i.i.i.i, label %for.body.i166.i.i.i.i, !llvm.loop !88 -_ZNK4pbrt15SampledSpectrum7AverageEv.exit.i.i.i.i: ; preds = %for.body.i167.i.i.i.i +_ZNK4pbrt15SampledSpectrum7AverageEv.exit.i.i.i.i: ; preds = %for.body.i166.i.i.i.i %div.i.i.i.i.i = fmul float %add.i.i.i.i.i, 2.500000e-01 - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ret.i172.i.i.i.i) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %ret.i172.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(16) %T_ray.i.i.i.i, i64 16, i1 false) - br label %for.body.i.i173.i.i.i.i - -for.body.i.i173.i.i.i.i: ; preds = %for.body.i.i173.i.i.i.i, %_ZNK4pbrt15SampledSpectrum7AverageEv.exit.i.i.i.i - %indvars.iv.i.i174.i.i.i.i = phi i64 [ 0, %_ZNK4pbrt15SampledSpectrum7AverageEv.exit.i.i.i.i ], [ %indvars.iv.next.i.i177.i.i.i.i, %for.body.i.i173.i.i.i.i ] - %arrayidx.i.i.i175.i.i.i.i = getelementptr inbounds [4 x float], ptr %ret.i172.i.i.i.i, i64 0, i64 %indvars.iv.i.i174.i.i.i.i - %478 = load float, ptr %arrayidx.i.i.i175.i.i.i.i, align 4 - %div.i.i176.i.i.i.i = fdiv float %478, %div.i.i.i.i.i - store float %div.i.i176.i.i.i.i, ptr %arrayidx.i.i.i175.i.i.i.i, align 4 - %indvars.iv.next.i.i177.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i174.i.i.i.i, 1 - %exitcond.not.i.i178.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i177.i.i.i.i, 4 - br i1 %exitcond.not.i.i178.i.i.i.i, label %_ZNK4pbrt15SampledSpectrumdvEf.exit184.i.i.i.i, label %for.body.i.i173.i.i.i.i, !llvm.loop !89 - -_ZNK4pbrt15SampledSpectrumdvEf.exit184.i.i.i.i: ; preds = %for.body.i.i173.i.i.i.i - %retval.sroa.0.0.copyload.i179.i.i.i.i = load <2 x float>, ptr %ret.i172.i.i.i.i, align 8 - %retval.sroa.2.0.call.sroa_idx.i180.i.i.i.i = getelementptr inbounds i8, ptr %ret.i172.i.i.i.i, i64 8 - %retval.sroa.2.0.copyload.i181.i.i.i.i = load <2 x float>, ptr %retval.sroa.2.0.call.sroa_idx.i180.i.i.i.i, align 8 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ret.i172.i.i.i.i) - store <2 x float> %retval.sroa.0.0.copyload.i179.i.i.i.i, ptr %ref.tmp60.i.i.i.i, align 8 + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ret.i171.i.i.i.i) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %ret.i171.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(16) %T_ray.i.i.i.i, i64 16, i1 false) + br label %for.body.i.i172.i.i.i.i + +for.body.i.i172.i.i.i.i: ; preds = %for.body.i.i172.i.i.i.i, %_ZNK4pbrt15SampledSpectrum7AverageEv.exit.i.i.i.i + %indvars.iv.i.i173.i.i.i.i = phi i64 [ 0, %_ZNK4pbrt15SampledSpectrum7AverageEv.exit.i.i.i.i ], [ %indvars.iv.next.i.i176.i.i.i.i, %for.body.i.i172.i.i.i.i ] + %arrayidx.i.i.i174.i.i.i.i = getelementptr inbounds [4 x float], ptr %ret.i171.i.i.i.i, i64 0, i64 %indvars.iv.i.i173.i.i.i.i + %478 = load float, ptr %arrayidx.i.i.i174.i.i.i.i, align 4 + %div.i.i175.i.i.i.i = fdiv float %478, %div.i.i.i.i.i + store float %div.i.i175.i.i.i.i, ptr %arrayidx.i.i.i174.i.i.i.i, align 4 + %indvars.iv.next.i.i176.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i173.i.i.i.i, 1 + %exitcond.not.i.i177.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i176.i.i.i.i, 4 + br i1 %exitcond.not.i.i177.i.i.i.i, label %_ZNK4pbrt15SampledSpectrumdvEf.exit183.i.i.i.i, label %for.body.i.i172.i.i.i.i, !llvm.loop !89 + +_ZNK4pbrt15SampledSpectrumdvEf.exit183.i.i.i.i: ; preds = %for.body.i.i172.i.i.i.i + %retval.sroa.0.0.copyload.i178.i.i.i.i = load <2 x float>, ptr %ret.i171.i.i.i.i, align 8 + %retval.sroa.2.0.call.sroa_idx.i179.i.i.i.i = getelementptr inbounds i8, ptr %ret.i171.i.i.i.i, i64 8 + %retval.sroa.2.0.copyload.i180.i.i.i.i = load <2 x float>, ptr %retval.sroa.2.0.call.sroa_idx.i179.i.i.i.i, align 8 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ret.i171.i.i.i.i) + store <2 x float> %retval.sroa.0.0.copyload.i178.i.i.i.i, ptr %ref.tmp60.i.i.i.i, align 8 %479 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %ref.tmp60.i.i.i.i, i64 0, i32 1 - store <2 x float> %retval.sroa.2.0.copyload.i181.i.i.i.i, ptr %479, align 8 - br label %for.body.i185.i.i.i.i - -for.body.i185.i.i.i.i: ; preds = %for.body.i185.i.i.i.i, %_ZNK4pbrt15SampledSpectrumdvEf.exit184.i.i.i.i - %indvars.iv.i186.i.i.i.i = phi i64 [ 0, %_ZNK4pbrt15SampledSpectrumdvEf.exit184.i.i.i.i ], [ %indvars.iv.next.i190.i.i.i.i, %for.body.i185.i.i.i.i ] - %arrayidx.i.i187.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp60.i.i.i.i, i64 0, i64 %indvars.iv.i186.i.i.i.i - %480 = load float, ptr %arrayidx.i.i187.i.i.i.i, align 4 - %arrayidx.i4.i188.i.i.i.i = getelementptr inbounds [4 x float], ptr %Ld.i.i.i.i, i64 0, i64 %indvars.iv.i186.i.i.i.i - %481 = load float, ptr %arrayidx.i4.i188.i.i.i.i, align 4 - %mul.i189.i.i.i.i = fmul float %480, %481 - store float %mul.i189.i.i.i.i, ptr %arrayidx.i4.i188.i.i.i.i, align 4 - %indvars.iv.next.i190.i.i.i.i = add nuw nsw i64 %indvars.iv.i186.i.i.i.i, 1 - %exitcond.not.i191.i.i.i.i = icmp eq i64 %indvars.iv.next.i190.i.i.i.i, 4 - br i1 %exitcond.not.i191.i.i.i.i, label %_ZN4pbrt15SampledSpectrummLERKS0_.exit192.i.i.i.i, label %for.body.i185.i.i.i.i, !llvm.loop !112 - -_ZN4pbrt15SampledSpectrummLERKS0_.exit192.i.i.i.i: ; preds = %for.body.i185.i.i.i.i + store <2 x float> %retval.sroa.2.0.copyload.i180.i.i.i.i, ptr %479, align 8 + br label %for.body.i184.i.i.i.i + +for.body.i184.i.i.i.i: ; preds = %for.body.i184.i.i.i.i, %_ZNK4pbrt15SampledSpectrumdvEf.exit183.i.i.i.i + %indvars.iv.i185.i.i.i.i = phi i64 [ 0, %_ZNK4pbrt15SampledSpectrumdvEf.exit183.i.i.i.i ], [ %indvars.iv.next.i189.i.i.i.i, %for.body.i184.i.i.i.i ] + %arrayidx.i.i186.i.i.i.i = getelementptr inbounds [4 x float], ptr %ref.tmp60.i.i.i.i, i64 0, i64 %indvars.iv.i185.i.i.i.i + %480 = load float, ptr %arrayidx.i.i186.i.i.i.i, align 4 + %arrayidx.i4.i187.i.i.i.i = getelementptr inbounds [4 x float], ptr %Ld.i.i.i.i, i64 0, i64 %indvars.iv.i185.i.i.i.i + %481 = load float, ptr %arrayidx.i4.i187.i.i.i.i, align 4 + %mul.i188.i.i.i.i = fmul float %480, %481 + store float %mul.i188.i.i.i.i, ptr %arrayidx.i4.i187.i.i.i.i, align 4 + %indvars.iv.next.i189.i.i.i.i = add nuw nsw i64 %indvars.iv.i185.i.i.i.i, 1 + %exitcond.not.i190.i.i.i.i = icmp eq i64 %indvars.iv.next.i189.i.i.i.i, 4 + br i1 %exitcond.not.i190.i.i.i.i, label %_ZN4pbrt15SampledSpectrummLERKS0_.exit191.i.i.i.i, label %for.body.i184.i.i.i.i, !llvm.loop !112 + +_ZN4pbrt15SampledSpectrummLERKS0_.exit191.i.i.i.i: ; preds = %for.body.i184.i.i.i.i %ptr4.i.i.i.i6.i.i.i = getelementptr inbounds %"struct.pbrt::SOA.215", ptr %29, i64 0, i32 4, i32 1 %482 = load ptr, ptr %ptr4.i.i.i.i6.i.i.i, align 8 %idx.ext.i.i.i.i.i.i.i = sext i32 %27 to i64 @@ -14166,33 +14142,33 @@ _ZN4pbrt15SampledSpectrummLERKS0_.exit192.i.i.i.i: ; preds = %for.body.i185.i.i. %retval.sroa.0.0.copyload.i.i.i.i.i8.i.i.i = load <2 x float>, ptr %add.ptr.i.i.i.i7.i.i.i, align 16 %retval.sroa.2.0.p.addr.0..sroa_idx.i.i.i.i.i9.i.i.i = getelementptr inbounds i8, ptr %add.ptr.i.i.i.i7.i.i.i, i64 8 %retval.sroa.2.0.copyload.i.i.i.i.i10.i.i.i = load <2 x float>, ptr %retval.sroa.2.0.p.addr.0..sroa_idx.i.i.i.i.i9.i.i.i, align 8 - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ret.i195.i.i.i.i) - store <2 x float> %retval.sroa.0.0.copyload.i.i.i.i.i8.i.i.i, ptr %ret.i195.i.i.i.i, align 8 - %Lpixel.sroa.2.0.ret.i195.sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %ret.i195.i.i.i.i, i64 8 - store <2 x float> %retval.sroa.2.0.copyload.i.i.i.i.i10.i.i.i, ptr %Lpixel.sroa.2.0.ret.i195.sroa_idx.i.i.i.i, align 8 - br label %for.body.i.i196.i.i.i.i - -for.body.i.i196.i.i.i.i: ; preds = %for.body.i.i196.i.i.i.i, %_ZN4pbrt15SampledSpectrummLERKS0_.exit192.i.i.i.i - %indvars.iv.i.i197.i.i.i.i = phi i64 [ 0, %_ZN4pbrt15SampledSpectrummLERKS0_.exit192.i.i.i.i ], [ %indvars.iv.next.i.i201.i.i.i.i, %for.body.i.i196.i.i.i.i ] - %arrayidx.i.i.i198.i.i.i.i = getelementptr inbounds [4 x float], ptr %Ld.i.i.i.i, i64 0, i64 %indvars.iv.i.i197.i.i.i.i - %483 = load float, ptr %arrayidx.i.i.i198.i.i.i.i, align 4 - %arrayidx.i4.i.i199.i.i.i.i = getelementptr inbounds [4 x float], ptr %ret.i195.i.i.i.i, i64 0, i64 %indvars.iv.i.i197.i.i.i.i - %484 = load float, ptr %arrayidx.i4.i.i199.i.i.i.i, align 4 - %add.i.i200.i.i.i.i = fadd float %483, %484 - store float %add.i.i200.i.i.i.i, ptr %arrayidx.i4.i.i199.i.i.i.i, align 4 - %indvars.iv.next.i.i201.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i197.i.i.i.i, 1 - %exitcond.not.i.i202.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i201.i.i.i.i, 4 - br i1 %exitcond.not.i.i202.i.i.i.i, label %_ZNK4pbrt15SampledSpectrumplERKS0_.exit208.i.i.i.i, label %for.body.i.i196.i.i.i.i, !llvm.loop !87 - -_ZNK4pbrt15SampledSpectrumplERKS0_.exit208.i.i.i.i: ; preds = %for.body.i.i196.i.i.i.i - %retval.sroa.0.0.copyload.i203.i.i.i.i = load <2 x float>, ptr %ret.i195.i.i.i.i, align 8 - %retval.sroa.2.0.copyload.i205.i.i.i.i = load <2 x float>, ptr %Lpixel.sroa.2.0.ret.i195.sroa_idx.i.i.i.i, align 8 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ret.i195.i.i.i.i) - store <2 x float> %retval.sroa.0.0.copyload.i203.i.i.i.i, ptr %add.ptr.i.i.i.i7.i.i.i, align 16 - store <2 x float> %retval.sroa.2.0.copyload.i205.i.i.i.i, ptr %retval.sroa.2.0.p.addr.0..sroa_idx.i.i.i.i.i9.i.i.i, align 8 + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ret.i194.i.i.i.i) + store <2 x float> %retval.sroa.0.0.copyload.i.i.i.i.i8.i.i.i, ptr %ret.i194.i.i.i.i, align 8 + %Lpixel.sroa.2.0.ret.i194.sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %ret.i194.i.i.i.i, i64 8 + store <2 x float> %retval.sroa.2.0.copyload.i.i.i.i.i10.i.i.i, ptr %Lpixel.sroa.2.0.ret.i194.sroa_idx.i.i.i.i, align 8 + br label %for.body.i.i195.i.i.i.i + +for.body.i.i195.i.i.i.i: ; preds = %for.body.i.i195.i.i.i.i, %_ZN4pbrt15SampledSpectrummLERKS0_.exit191.i.i.i.i + %indvars.iv.i.i196.i.i.i.i = phi i64 [ 0, %_ZN4pbrt15SampledSpectrummLERKS0_.exit191.i.i.i.i ], [ %indvars.iv.next.i.i200.i.i.i.i, %for.body.i.i195.i.i.i.i ] + %arrayidx.i.i.i197.i.i.i.i = getelementptr inbounds [4 x float], ptr %Ld.i.i.i.i, i64 0, i64 %indvars.iv.i.i196.i.i.i.i + %483 = load float, ptr %arrayidx.i.i.i197.i.i.i.i, align 4 + %arrayidx.i4.i.i198.i.i.i.i = getelementptr inbounds [4 x float], ptr %ret.i194.i.i.i.i, i64 0, i64 %indvars.iv.i.i196.i.i.i.i + %484 = load float, ptr %arrayidx.i4.i.i198.i.i.i.i, align 4 + %add.i.i199.i.i.i.i = fadd float %483, %484 + store float %add.i.i199.i.i.i.i, ptr %arrayidx.i4.i.i198.i.i.i.i, align 4 + %indvars.iv.next.i.i200.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i196.i.i.i.i, 1 + %exitcond.not.i.i201.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i200.i.i.i.i, 4 + br i1 %exitcond.not.i.i201.i.i.i.i, label %_ZNK4pbrt15SampledSpectrumplERKS0_.exit207.i.i.i.i, label %for.body.i.i195.i.i.i.i, !llvm.loop !87 + +_ZNK4pbrt15SampledSpectrumplERKS0_.exit207.i.i.i.i: ; preds = %for.body.i.i195.i.i.i.i + %retval.sroa.0.0.copyload.i202.i.i.i.i = load <2 x float>, ptr %ret.i194.i.i.i.i, align 8 + %retval.sroa.2.0.copyload.i204.i.i.i.i = load <2 x float>, ptr %Lpixel.sroa.2.0.ret.i194.sroa_idx.i.i.i.i, align 8 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ret.i194.i.i.i.i) + store <2 x float> %retval.sroa.0.0.copyload.i202.i.i.i.i, ptr %add.ptr.i.i.i.i7.i.i.i, align 16 + store <2 x float> %retval.sroa.2.0.copyload.i204.i.i.i.i, ptr %retval.sroa.2.0.p.addr.0..sroa_idx.i.i.i.i.i9.i.i.i, align 8 br label %"_ZSt10__invoke_rIvRZNK4pbrt12CPUAggregate17IntersectShadowTrEiPNS0_9WorkQueueINS0_17ShadowRayWorkItemEEEPNS0_3SOAINS0_16PixelSampleStateEEEE3$_0JlEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESD_E4typeEOSE_DpOSF_.exit" -"_ZSt10__invoke_rIvRZNK4pbrt12CPUAggregate17IntersectShadowTrEiPNS0_9WorkQueueINS0_17ShadowRayWorkItemEEEPNS0_3SOAINS0_16PixelSampleStateEEEE3$_0JlEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESD_E4typeEOSE_DpOSF_.exit": ; preds = %for.cond.i122.i.i.i.i, %_ZNK4pbrt15SampledSpectrumcvbEv.exit127.i.i.i.i, %_ZNK4pbrt15SampledSpectrumplERKS0_.exit208.i.i.i.i +"_ZSt10__invoke_rIvRZNK4pbrt12CPUAggregate17IntersectShadowTrEiPNS0_9WorkQueueINS0_17ShadowRayWorkItemEEEPNS0_3SOAINS0_16PixelSampleStateEEEE3$_0JlEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESD_E4typeEOSE_DpOSF_.exit": ; preds = %for.cond.i121.i.i.i.i, %_ZNK4pbrt15SampledSpectrumcvbEv.exit126.i.i.i.i, %_ZNK4pbrt15SampledSpectrumplERKS0_.exit207.i.i.i.i call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %lambda.i.i.i.i) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %Ld.i.i.i.i) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %rng.i.i.i.i) @@ -14531,7 +14507,7 @@ _ZNK4pbrt22DenselySampledSpectrum6SampleERKNS_18SampledWavelengthsE.exit52: ; pr ret void } -; Function Attrs: mustprogress nofree nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable +; Function Attrs: mustprogress nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable define internal fastcc noundef zeroext i1 @"_ZZN4pbrt18TraceTransmittanceIZZNKS_12CPUAggregate17IntersectShadowTrEiPNS_9WorkQueueINS_17ShadowRayWorkItemEEEPNS_3SOAINS_16PixelSampleStateEEEENK3$_0clEiEUlNS_3RayEfE_ZZNKS1_17IntersectShadowTrEiS5_S9_ENKSA_clEiEUlNS_6Point3IfEEE_EEvS3_S9_T_T0_ENKUlSE_NS_16MediumPropertiesENS_15SampledSpectrumESJ_E_clESE_SI_SJ_SJ_"(ptr nocapture noundef nonnull readonly align 8 dereferenceable(32) %this, ptr nocapture noundef readonly %mp, <2 x float> %sigma_maj.coerce0, <2 x float> %sigma_maj.coerce1, <2 x float> %T_maj.coerce0, <2 x float> %T_maj.coerce1) unnamed_addr #15 align 2 { entry: %ret.i135 = alloca %"class.pbrt::SampledSpectrum", align 8 @@ -14911,11 +14887,7 @@ if.then: ; preds = %_ZNK4pbrt15SampledS %conv.i.i = trunc i64 %shr3.i.i to i32 %shr4.i.i = lshr i64 %46, 59 %conv5.i.i = trunc i64 %shr4.i.i to i32 - %shr6.i.i = lshr i32 %conv.i.i, %conv5.i.i - %add7.i.i = sub nsw i32 0, %conv5.i.i - %and.i.i = and i32 %add7.i.i, 31 - %shl.i.i = shl i32 %conv.i.i, %and.i.i - %or.i.i = or i32 %shr6.i.i, %shl.i.i + %or.i.i = tail call noundef i32 @llvm.fshr.i32(i32 %conv.i.i, i32 %conv.i.i, i32 %conv5.i.i) %conv.i = uitofp i32 %or.i.i to float %mul.i157 = fmul float %conv.i, 0x3DF0000000000000 %cmp.i.i158 = fcmp olt float %mul.i157, 0x3FEFFFFFE0000000 @@ -22413,11 +22385,7 @@ invoke.cont26.i.i.i: ; preds = %invoke.cont18.i.i.i %conv.i.i.i.i.i.i = trunc i64 %shr3.i.i.i.i.i.i to i32 %shr4.i.i.i.i.i.i = lshr i64 %wrs.sroa.0.0.i.i.i, 59 %conv5.i.i.i.i.i.i = trunc i64 %shr4.i.i.i.i.i.i to i32 - %shr6.i.i.i.i.i.i = lshr i32 %conv.i.i.i.i.i.i, %conv5.i.i.i.i.i.i - %add7.i.i.i.i.i.i = sub nsw i32 0, %conv5.i.i.i.i.i.i - %and.i.i.i.i.i.i = and i32 %add7.i.i.i.i.i.i, 31 - %shl.i.i.i.i.i.i = shl i32 %conv.i.i.i.i.i.i, %and.i.i.i.i.i.i - %or.i.i.i.i.i.i = or i32 %shr6.i.i.i.i.i.i, %shl.i.i.i.i.i.i + %or.i.i.i.i.i.i = call noundef i32 @llvm.fshr.i32(i32 %conv.i.i.i.i.i.i, i32 %conv.i.i.i.i.i.i, i32 %conv5.i.i.i.i.i.i) %conv.i.i.i.i.i = uitofp i32 %or.i.i.i.i.i.i to float %mul.i.i.i.i.i = fmul float %conv.i.i.i.i.i, 0x3DF0000000000000 %cmp.i.i.i.i.i.i = fcmp olt float %mul.i.i.i.i.i, 0x3FEFFFFFE0000000 @@ -22626,7 +22594,7 @@ if.else.i.i.i: ; preds = %while.end.i.i.i ret void } -; Function Attrs: mustprogress nofree nosync nounwind willreturn memory(argmem: readwrite) uwtable +; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable define internal noundef zeroext i1 @"_ZNSt17_Function_handlerIFvlEZNK4pbrt12CPUAggregate18IntersectOneRandomEiPNS1_22SubsurfaceScatterQueueEE3$_0E10_M_managerERSt9_Any_dataRKS7_St18_Manager_operation"(ptr nocapture noundef nonnull writeonly align 8 dereferenceable(16) %__dest, ptr noundef nonnull align 8 dereferenceable(16) %__source, i32 noundef %__op) #16 align 2 personality ptr @__gxx_personality_v0 { entry: switch i32 %__op, label %sw.epilog [ @@ -23024,35 +22992,38 @@ entry: ret void } +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.fshr.i32(i32, i32, i32) #18 + ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) -declare void @llvm.experimental.noalias.scope.decl(metadata) #18 +declare void @llvm.experimental.noalias.scope.decl(metadata) #19 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #19 +declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #20 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #19 +declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #20 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare float @llvm.sqrt.f32(float) #20 +declare float @llvm.sqrt.f32(float) #18 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smin.i32(i32, i32) #20 +declare i32 @llvm.smin.i32(i32, i32) #18 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smax.i32(i32, i32) #20 +declare i32 @llvm.smax.i32(i32, i32) #18 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare <2 x float> @llvm.sqrt.v2f32(<2 x float>) #20 +declare <2 x float> @llvm.sqrt.v2f32(<2 x float>) #18 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare <2 x float> @llvm.fabs.v2f32(<2 x float>) #20 +declare <2 x float> @llvm.fabs.v2f32(<2 x float>) #18 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare <2 x i32> @llvm.smin.v2i32(<2 x i32>, <2 x i32>) #20 +declare <2 x i32> @llvm.smin.v2i32(<2 x i32>, <2 x i32>) #18 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare <2 x float> @llvm.floor.v2f32(<2 x float>) #20 +declare <2 x float> @llvm.floor.v2f32(<2 x float>) #18 attributes #0 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #1 = { mustprogress uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } @@ -23069,12 +23040,12 @@ attributes #11 = { mustprogress noreturn uwtable "frame-pointer"="all" "min-lega attributes #12 = { mustprogress nofree nounwind willreturn memory(write) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #13 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #14 = { nofree nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } -attributes #15 = { mustprogress nofree nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="64" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } -attributes #16 = { mustprogress nofree nosync nounwind willreturn memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } +attributes #15 = { mustprogress nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="64" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } +attributes #16 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #17 = { uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } -attributes #18 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } -attributes #19 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #20 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #18 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #19 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } +attributes #20 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } attributes #21 = { builtin allocsize(0) } attributes #22 = { noreturn nounwind } attributes #23 = { builtin nounwind } diff --git a/bench/pbrt-v4/optimized/camera.cpp.ll b/bench/pbrt-v4/optimized/camera.cpp.ll index 7d84385273b..5e1df126cdc 100644 --- a/bench/pbrt-v4/optimized/camera.cpp.ll +++ b/bench/pbrt-v4/optimized/camera.cpp.ll @@ -4231,10 +4231,10 @@ entry: %6 = load ptr, ptr %y4.i, align 8 %arrayidx7.i = getelementptr inbounds i32, ptr %6, i64 %idxprom.i store i32 %add5, ptr %arrayidx7.i, align 4 - %pPixel.sroa.5.0.insert.ext169 = zext i32 %add5 to i64 - %pPixel.sroa.5.0.insert.shift170 = shl nuw i64 %pPixel.sroa.5.0.insert.ext169, 32 - %pPixel.sroa.0.0.insert.ext162 = zext i32 %add to i64 - %pPixel.sroa.0.0.insert.insert164 = or disjoint i64 %pPixel.sroa.5.0.insert.shift170, %pPixel.sroa.0.0.insert.ext162 + %pPixel.sroa.5.0.insert.ext167 = zext i32 %add5 to i64 + %pPixel.sroa.5.0.insert.shift168 = shl nuw i64 %pPixel.sroa.5.0.insert.ext167, 32 + %pPixel.sroa.0.0.insert.ext160 = zext i32 %add to i64 + %pPixel.sroa.0.0.insert.insert162 = or disjoint i64 %pPixel.sroa.5.0.insert.shift168, %pPixel.sroa.0.0.insert.ext160 %cmp.not.i = icmp slt i32 %rem, 0 %cmp4.i = icmp sge i32 %add, %pixelBounds.sroa.4.8.extract.trunc %or.cond.not7.i = select i1 %cmp.not.i, i1 true, i1 %cmp4.i @@ -4252,7 +4252,7 @@ if.end: ; preds = %entry %9 = load <2 x i32>, ptr %8, align 8 %10 = getelementptr inbounds %class.anon.73, ptr %this, i64 0, i32 2 %11 = load i32, ptr %10, align 4 - %mul3.i.i.i = mul i64 %pPixel.sroa.0.0.insert.insert164, -4132994306676758123 + %mul3.i.i.i = mul i64 %pPixel.sroa.0.0.insert.insert162, -4132994306676758123 %shr.i.i.i = lshr i64 %mul3.i.i.i, 47 %xor4.i.i.i = xor i64 %shr.i.i.i, %mul3.i.i.i %mul5.i.i.i = mul i64 %xor4.i.i.i, -4132994306676758123 @@ -4327,15 +4327,11 @@ _ZN4pbrt18IndependentSampler16StartPixelSampleENS_6Point2IiEEii.exit: ; preds = %conv.i.i.i = trunc i64 %shr3.i.i.i to i32 %shr4.i.i.i16 = lshr i64 %add7.i.i, 59 %conv5.i.i.i = trunc i64 %shr4.i.i.i16 to i32 - %shr6.i.i.i = lshr i32 %conv.i.i.i, %conv5.i.i.i - %add7.i.i.i = sub nsw i32 0, %conv5.i.i.i - %and.i.i.i17 = and i32 %add7.i.i.i, 31 - %shl.i.i.i18 = shl i32 %conv.i.i.i, %and.i.i.i17 - %or.i.i.i19 = or i32 %shr6.i.i.i, %shl.i.i.i18 - %conv.i.i = uitofp i32 %or.i.i.i19 to float - %mul.i.i20 = fmul float %conv.i.i, 0x3DF0000000000000 - %cmp.i.i.i = fcmp olt float %mul.i.i20, 0x3FEFFFFFE0000000 - %.sroa.speculated.i.i = select i1 %cmp.i.i.i, float %mul.i.i20, float 0x3FEFFFFFE0000000 + %or.i.i.i17 = tail call noundef i32 @llvm.fshr.i32(i32 %conv.i.i.i, i32 %conv.i.i.i, i32 %conv5.i.i.i) + %conv.i.i = uitofp i32 %or.i.i.i17 to float + %mul.i.i18 = fmul float %conv.i.i, 0x3DF0000000000000 + %cmp.i.i.i = fcmp olt float %mul.i.i18, 0x3FEFFFFFE0000000 + %.sroa.speculated.i.i = select i1 %cmp.i.i.i, float %mul.i.i18, float 0x3FEFFFFFE0000000 %16 = load ptr, ptr @_ZN4pbrt7OptionsE, align 8 %disableWavelengthJitter = getelementptr inbounds %"struct.pbrt::BasicPBRTOptions", ptr %16, i64 0, i32 3 %17 = load i8, ptr %disableWavelengthJitter, align 2 @@ -4347,11 +4343,11 @@ _ZN4pbrt18IndependentSampler16StartPixelSampleENS_6Point2IiEEii.exit: ; preds = store float %spec.select, ptr %u.addr.i, align 4, !noalias !63 store ptr %u.addr.i, ptr %sample.i, align 8, !noalias !63 %19 = load i64, ptr %film, align 8, !noalias !66 - %and.i.i.i21 = and i64 %19, 144115188075855871 - %20 = inttoptr i64 %and.i.i.i21 to ptr - %shr.i.i.i22 = lshr i64 %19, 57 - %conv.i.i.i23 = trunc i64 %shr.i.i.i22 to i32 - %sub.i.i = add nsw i32 %conv.i.i.i23, -1 + %and.i.i.i19 = and i64 %19, 144115188075855871 + %20 = inttoptr i64 %and.i.i.i19 to ptr + %shr.i.i.i20 = lshr i64 %19, 57 + %conv.i.i.i21 = trunc i64 %shr.i.i.i20 to i32 + %sub.i.i = add nsw i32 %conv.i.i.i21, -1 call void @_ZN4pbrt6detail8DispatchIRZNKS_4Film17SampleWavelengthsEfEUlT_E_NS_18SampledWavelengthsENS_7RGBFilmENS_11GBufferFilmENS_12SpectralFilmEEET0_OS3_PKvi(ptr nonnull sret(%"class.pbrt::SampledWavelengths") align 4 %lambda, ptr noundef nonnull align 8 dereferenceable(8) %sample.i, ptr noundef %20, i32 noundef %sub.i.i) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %u.addr.i) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %sample.i) @@ -4363,14 +4359,14 @@ _ZN4pbrt18IndependentSampler16StartPixelSampleENS_6Point2IiEEii.exit: ; preds = %filter = getelementptr inbounds %"class.pbrt::WavefrontPathIntegrator", ptr %0, i64 0, i32 7 %21 = load i64, ptr %filter, align 8 store i64 %21, ptr %agg.tmp19, align 8 - call void @_ZN4pbrt15GetCameraSampleINS_18IndependentSamplerEEENS_12CameraSampleET_NS_6Point2IiEENS_6FilterE(ptr nonnull sret(%"struct.pbrt::CameraSample") align 4 %cameraSample, ptr noundef nonnull byval(%"class.pbrt::IndependentSampler") align 8 %agg.tmp17, i64 %pPixel.sroa.0.0.insert.insert164, ptr noundef nonnull %agg.tmp19) + call void @_ZN4pbrt15GetCameraSampleINS_18IndependentSamplerEEENS_12CameraSampleET_NS_6Point2IiEENS_6FilterE(ptr nonnull sret(%"struct.pbrt::CameraSample") align 4 %cameraSample, ptr noundef nonnull byval(%"class.pbrt::IndependentSampler") align 8 %agg.tmp17, i64 %pPixel.sroa.0.0.insert.insert162, ptr noundef nonnull %agg.tmp19) %camera = getelementptr inbounds %"class.pbrt::WavefrontPathIntegrator", ptr %0, i64 0, i32 10 %22 = load i64, ptr %camera, align 8, !noalias !69 - %and.i.i.i25 = and i64 %22, 144115188075855871 - %23 = inttoptr i64 %and.i.i.i25 to ptr - %shr.i.i.i26 = lshr i64 %22, 57 - %conv.i.i.i27 = trunc i64 %shr.i.i.i26 to i32 - switch i32 %conv.i.i.i27, label %sw.default.i.i [ + %and.i.i.i23 = and i64 %22, 144115188075855871 + %23 = inttoptr i64 %and.i.i.i23 to ptr + %shr.i.i.i24 = lshr i64 %22, 57 + %conv.i.i.i25 = trunc i64 %shr.i.i.i24 to i32 + switch i32 %conv.i.i.i25, label %sw.default.i.i [ i32 1, label %sw.bb.i.i i32 2, label %sw.bb3.i.i i32 3, label %sw.bb4.i.i @@ -4421,16 +4417,16 @@ invoke.cont: ; preds = %_ZNK4pbrt6Camera11G %agg.tmp.sroa.0.0.copyload.i = load <2 x float>, ptr %d3.i, align 4, !noalias !74 %agg.tmp.sroa.2.0.d3.sroa_idx.i = getelementptr inbounds %"class.pbrt::Ray", ptr %cameraRay, i64 0, i32 1, i32 0, i32 2 %agg.tmp.sroa.2.0.copyload.i = load float, ptr %agg.tmp.sroa.2.0.d3.sroa_idx.i, align 4, !noalias !74 - %call.i38 = call { <2 x float>, float } @_ZNK4pbrt9TransformclIfEENS_7Vector3IT_EES4_(ptr noundef nonnull align 4 dereferenceable(128) %26, <2 x float> %agg.tmp.sroa.0.0.copyload.i, float %agg.tmp.sroa.2.0.copyload.i) - %call.fca.0.extract.i = extractvalue { <2 x float>, float } %call.i38, 0 - %call.fca.1.extract.i = extractvalue { <2 x float>, float } %call.i38, 1 + %call.i36 = call { <2 x float>, float } @_ZNK4pbrt9TransformclIfEENS_7Vector3IT_EES4_(ptr noundef nonnull align 4 dereferenceable(128) %26, <2 x float> %agg.tmp.sroa.0.0.copyload.i, float %agg.tmp.sroa.2.0.copyload.i) + %call.fca.0.extract.i = extractvalue { <2 x float>, float } %call.i36, 0 + %call.fca.1.extract.i = extractvalue { <2 x float>, float } %call.i36, 1 %30 = fmul <2 x float> %call.fca.0.extract.i, %call.fca.0.extract.i %shift = shufflevector <2 x float> %30, <2 x float> poison, <2 x i32> %31 = fadd <2 x float> %30, %shift - %add.i.i30 = extractelement <2 x float> %31, i64 0 + %add.i.i28 = extractelement <2 x float> %31, i64 0 %mul.i2.i.i = fmul float %call.fca.1.extract.i, %call.fca.1.extract.i - %add3.i.i31 = fadd float %mul.i2.i.i, %add.i.i30 - %cmp.i = fcmp ogt float %add3.i.i31, 0.000000e+00 + %add3.i.i29 = fadd float %mul.i2.i.i, %add.i.i28 + %cmp.i = fcmp ogt float %add3.i.i29, 0.000000e+00 br i1 %cmp.i, label %if.then.i, label %invoke.cont26 if.then.i: ; preds = %invoke.cont @@ -4453,22 +4449,22 @@ if.then.i: ; preds = %invoke.cont %high.i3.i.i = getelementptr inbounds %"class.pbrt::Tuple3.72", ptr %o.i, i64 0, i32 2, i32 1 %42 = load float, ptr %high.i3.i.i, align 4, !noalias !74 %43 = load float, ptr %z.i8.i, align 16, !noalias !74 - %mul4.i.i33 = fmul float %35, %div3.i.i + %mul4.i.i31 = fmul float %35, %div3.i.i %44 = insertelement <2 x float> %37, float %42, i64 1 %45 = insertelement <2 x float> %39, float %43, i64 1 %46 = fsub <2 x float> %44, %45 %47 = fmul <2 x float> %46, %48 = fmul <2 x float> %33, %47 %49 = extractelement <2 x float> %48, i64 0 - %add.i15.i = fadd float %49, %mul4.i.i33 + %add.i15.i = fadd float %49, %mul4.i.i31 %50 = extractelement <2 x float> %48, i64 1 - %add7.i.i35 = fadd float %add.i15.i, %50 - %div.i = fdiv float %add7.i.i35, %add3.i.i31 + %add7.i.i33 = fadd float %add.i15.i, %50 + %div.i = fdiv float %add7.i.i33, %add3.i.i29 %51 = insertelement <2 x float> poison, float %div.i, i64 0 %52 = shufflevector <2 x float> %51, <2 x float> poison, <2 x i32> zeroinitializer %53 = fmul <2 x float> %call.fca.0.extract.i, %52 %mul3.i.i = fmul float %call.fca.1.extract.i, %div.i - %call20.i39 = call noundef nonnull align 4 dereferenceable(24) ptr @_ZN4pbrt8Point3fipLIfEERS0_NS_7Vector3IT_EE(ptr noundef nonnull align 4 dereferenceable(24) %o.i, <2 x float> %53, float %mul3.i.i) + %call20.i37 = call noundef nonnull align 4 dereferenceable(24) ptr @_ZN4pbrt8Point3fipLIfEERS0_NS_7Vector3IT_EE(ptr noundef nonnull align 4 dereferenceable(24) %o.i, <2 x float> %53, float %mul3.i.i) br label %invoke.cont26 invoke.cont26: ; preds = %if.then.i, %invoke.cont @@ -4485,8 +4481,8 @@ invoke.cont26: ; preds = %if.then.i, %invoke. call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %ref.tmp.i) %56 = load i8, ptr %set.i, align 8 %57 = and i8 %56, 1 - %tobool.not.i.i41 = icmp eq i8 %57, 0 - br i1 %tobool.not.i.i41, label %land.rhs.i.i85.invoke, label %invoke.cont27 + %tobool.not.i.i39 = icmp eq i8 %57, 0 + br i1 %tobool.not.i.i39, label %land.rhs.i.i83.invoke, label %invoke.cont27 invoke.cont27: ; preds = %invoke.cont26 %58 = shufflevector <4 x float> %54, <4 x float> poison, <2 x i32> @@ -4510,14 +4506,14 @@ if.end32: ; preds = %invoke.cont27, %_ZN %lambda4.i = getelementptr inbounds %"class.pbrt::WavefrontPathIntegrator", ptr %0, i64 0, i32 18, i32 3, i32 1 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %add.ptr.i, i8 0, i64 16, i1 false) %63 = load ptr, ptr %lambda4.i, align 8 - %add.ptr.i54 = getelementptr inbounds %"struct.pbrt::Float4", ptr %63, i64 %idxprom.i + %add.ptr.i52 = getelementptr inbounds %"struct.pbrt::Float4", ptr %63, i64 %idxprom.i %64 = load <4 x float>, ptr %lambda, align 16 - %agg.tmp.sroa.0.4.vec.insert.i55 = shufflevector <4 x float> %64, <4 x float> poison, <2 x i32> + %agg.tmp.sroa.0.4.vec.insert.i53 = shufflevector <4 x float> %64, <4 x float> poison, <2 x i32> %65 = load <4 x float>, ptr %arrayidx.i23.i, align 8 - %agg.tmp.sroa.3.12.vec.insert.i56 = shufflevector <4 x float> %65, <4 x float> poison, <2 x i32> - store <2 x float> %agg.tmp.sroa.0.4.vec.insert.i55, ptr %add.ptr.i54, align 16 - %v.sroa.2.0.p.addr.0..sroa_idx.i.i57 = getelementptr inbounds i8, ptr %add.ptr.i54, i64 8 - store <2 x float> %agg.tmp.sroa.3.12.vec.insert.i56, ptr %v.sroa.2.0.p.addr.0..sroa_idx.i.i57, align 8 + %agg.tmp.sroa.3.12.vec.insert.i54 = shufflevector <4 x float> %65, <4 x float> poison, <2 x i32> + store <2 x float> %agg.tmp.sroa.0.4.vec.insert.i53, ptr %add.ptr.i52, align 16 + %v.sroa.2.0.p.addr.0..sroa_idx.i.i55 = getelementptr inbounds i8, ptr %add.ptr.i52, i64 8 + store <2 x float> %agg.tmp.sroa.3.12.vec.insert.i54, ptr %v.sroa.2.0.p.addr.0..sroa_idx.i.i55, align 8 %pdf4.i = getelementptr inbounds %"class.pbrt::WavefrontPathIntegrator", ptr %0, i64 0, i32 18, i32 3, i32 2 %66 = load ptr, ptr %pdf4.i, align 8 %add.ptr21.i = getelementptr inbounds %"struct.pbrt::Float4", ptr %66, i64 %idxprom.i @@ -4541,12 +4537,12 @@ if.end32: ; preds = %invoke.cont27, %_ZN invoke.cont48: ; preds = %if.end32 %set2.i = getelementptr inbounds %"class.pbrt::WavefrontPathIntegrator", ptr %0, i64 0, i32 18, i32 6, i32 1 %72 = load ptr, ptr %set2.i, align 8 - %arrayidx.i63 = getelementptr inbounds i8, ptr %72, i64 %idxprom.i - store i8 0, ptr %arrayidx.i63, align 1 + %arrayidx.i61 = getelementptr inbounds i8, ptr %72, i64 %idxprom.i + store i8 0, ptr %arrayidx.i61, align 1 %x2.i.i = getelementptr inbounds %"class.pbrt::WavefrontPathIntegrator", ptr %0, i64 0, i32 18, i32 6, i32 2, i32 1 %73 = load ptr, ptr %x2.i.i, align 8 - %arrayidx.i.i64 = getelementptr inbounds float, ptr %73, i64 %idxprom.i - store float 0.000000e+00, ptr %arrayidx.i.i64, align 4 + %arrayidx.i.i62 = getelementptr inbounds float, ptr %73, i64 %idxprom.i + store float 0.000000e+00, ptr %arrayidx.i.i62, align 4 %y4.i.i = getelementptr inbounds %"class.pbrt::WavefrontPathIntegrator", ptr %0, i64 0, i32 18, i32 6, i32 2, i32 2 %74 = load ptr, ptr %y4.i.i, align 8 %arrayidx7.i.i = getelementptr inbounds float, ptr %74, i64 %idxprom.i @@ -4624,8 +4620,8 @@ invoke.cont48: ; preds = %if.end32 if.end53: ; preds = %invoke.cont48, %if.end32 %92 = load i8, ptr %set.i, align 8 %93 = and i8 %92, 1 - %tobool.i70.not = icmp eq i8 %93, 0 - br i1 %tobool.i70.not, label %if.else, label %invoke.cont56 + %tobool.i68.not = icmp eq i8 %93, 0 + br i1 %tobool.i68.not, label %if.else, label %invoke.cont56 invoke.cont56: ; preds = %if.end53 %94 = getelementptr inbounds %class.anon.73, ptr %this, i64 0, i32 4 @@ -4675,8 +4671,8 @@ invoke.cont56: ; preds = %if.end53 %109 = load float, ptr %time.i.i, align 8 %time9.i.i = getelementptr inbounds %"struct.pbrt::SOA.39", ptr %95, i64 0, i32 1, i32 3 %110 = load ptr, ptr %time9.i.i, align 8 - %arrayidx.i.i76 = getelementptr inbounds float, ptr %110, i64 %idxprom.i.i.i - store float %109, ptr %arrayidx.i.i76, align 4 + %arrayidx.i.i74 = getelementptr inbounds float, ptr %110, i64 %idxprom.i.i.i + store float %109, ptr %arrayidx.i.i74, align 4 %medium.i.i = getelementptr inbounds %"class.pbrt::Ray", ptr %cameraRay, i64 0, i32 3 %medium12.i.i = getelementptr inbounds %"struct.pbrt::SOA.39", ptr %95, i64 0, i32 1, i32 4 %111 = load ptr, ptr %medium12.i.i, align 8 @@ -4685,22 +4681,22 @@ invoke.cont56: ; preds = %if.end53 store i64 %112, ptr %arrayidx15.i.i, align 8 %depth.i = getelementptr inbounds %"struct.pbrt::SOA.39", ptr %95, i64 0, i32 2 %113 = load ptr, ptr %depth.i, align 8 - %arrayidx.i77 = getelementptr inbounds i32, ptr %113, i64 %idxprom.i.i.i - store i32 0, ptr %arrayidx.i77, align 4 + %arrayidx.i75 = getelementptr inbounds i32, ptr %113, i64 %idxprom.i.i.i + store i32 0, ptr %arrayidx.i75, align 4 %pixelIndex4.i = getelementptr inbounds %"struct.pbrt::SOA.39", ptr %95, i64 0, i32 3 %114 = load ptr, ptr %pixelIndex4.i, align 8 %arrayidx6.i = getelementptr inbounds i32, ptr %114, i64 %idxprom.i.i.i store i32 %pixelIndex, ptr %arrayidx6.i, align 4 %lambda4.i.i = getelementptr inbounds %"struct.pbrt::SOA.39", ptr %95, i64 0, i32 4, i32 1 %115 = load ptr, ptr %lambda4.i.i, align 8 - %add.ptr.i.i78 = getelementptr inbounds %"struct.pbrt::Float4", ptr %115, i64 %idxprom.i.i.i + %add.ptr.i.i76 = getelementptr inbounds %"struct.pbrt::Float4", ptr %115, i64 %idxprom.i.i.i %116 = load <4 x float>, ptr %lambda, align 16 - %agg.tmp.sroa.0.4.vec.insert.i.i79 = shufflevector <4 x float> %116, <4 x float> poison, <2 x i32> + %agg.tmp.sroa.0.4.vec.insert.i.i77 = shufflevector <4 x float> %116, <4 x float> poison, <2 x i32> %117 = load <4 x float>, ptr %arrayidx.i23.i, align 8 - %agg.tmp.sroa.3.12.vec.insert.i.i80 = shufflevector <4 x float> %117, <4 x float> poison, <2 x i32> - store <2 x float> %agg.tmp.sroa.0.4.vec.insert.i.i79, ptr %add.ptr.i.i78, align 16 - %v.sroa.2.0.p.addr.0..sroa_idx.i.i.i81 = getelementptr inbounds i8, ptr %add.ptr.i.i78, i64 8 - store <2 x float> %agg.tmp.sroa.3.12.vec.insert.i.i80, ptr %v.sroa.2.0.p.addr.0..sroa_idx.i.i.i81, align 8 + %agg.tmp.sroa.3.12.vec.insert.i.i78 = shufflevector <4 x float> %117, <4 x float> poison, <2 x i32> + store <2 x float> %agg.tmp.sroa.0.4.vec.insert.i.i77, ptr %add.ptr.i.i76, align 16 + %v.sroa.2.0.p.addr.0..sroa_idx.i.i.i79 = getelementptr inbounds i8, ptr %add.ptr.i.i76, i64 8 + store <2 x float> %agg.tmp.sroa.3.12.vec.insert.i.i78, ptr %v.sroa.2.0.p.addr.0..sroa_idx.i.i.i79, align 8 %pdf4.i.i = getelementptr inbounds %"struct.pbrt::SOA.39", ptr %95, i64 0, i32 4, i32 2 %118 = load ptr, ptr %pdf4.i.i, align 8 %add.ptr21.i.i = getelementptr inbounds %"struct.pbrt::Float4", ptr %118, i64 %idxprom.i.i.i @@ -4722,8 +4718,8 @@ for.body.i.i.i: ; preds = %for.body.i.i.i, %in br i1 %exitcond.not.i.i.i, label %_ZN4pbrt15SampledSpectrumC2Ef.exit.i, label %for.body.i.i.i, !llvm.loop !24 _ZN4pbrt15SampledSpectrumC2Ef.exit.i: ; preds = %for.body.i.i.i - %ptr4.i.i82 = getelementptr inbounds %"struct.pbrt::SOA.39", ptr %95, i64 0, i32 5, i32 1 - %120 = load ptr, ptr %ptr4.i.i82, align 8 + %ptr4.i.i80 = getelementptr inbounds %"struct.pbrt::SOA.39", ptr %95, i64 0, i32 5, i32 1 + %120 = load ptr, ptr %ptr4.i.i80, align 8 %add.ptr.i18.i = getelementptr inbounds %"struct.pbrt::Float4", ptr %120, i64 %idxprom.i.i.i %121 = load <4 x float>, ptr %ref.tmp10.i, align 16 %agg.tmp.sroa.0.4.vec.insert.i19.i = shufflevector <4 x float> %121, <4 x float> poison, <2 x i32> @@ -4790,31 +4786,31 @@ invoke.cont59: ; preds = %for.body.i.i37.i call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp20.i) %129 = load i8, ptr %set.i, align 8 %130 = and i8 %129, 1 - %tobool.not.i.i84 = icmp eq i8 %130, 0 - br i1 %tobool.not.i.i84, label %land.rhs.i.i85.invoke, label %invoke.cont61 + %tobool.not.i.i82 = icmp eq i8 %130, 0 + br i1 %tobool.not.i.i82, label %land.rhs.i.i83.invoke, label %invoke.cont61 -land.rhs.i.i85.invoke: ; preds = %invoke.cont26, %invoke.cont59 +land.rhs.i.i83.invoke: ; preds = %invoke.cont26, %invoke.cont59 call void @_ZN4pbrt8LogFatalIJRA4_KcEEEvNS_8LogLevelEPS1_iS5_DpOT_(i32 noundef 2, ptr noundef nonnull @.str.15, i32 noundef 235, ptr noundef nonnull @.str.9, ptr noundef nonnull align 1 dereferenceable(4) @.str.16) #19 unreachable invoke.cont61: ; preds = %invoke.cont59 %weight = getelementptr inbounds %"struct.pbrt::CameraRay", ptr %cameraRay, i64 0, i32 1 - %ptr4.i91 = getelementptr inbounds %"class.pbrt::WavefrontPathIntegrator", ptr %0, i64 0, i32 18, i32 5, i32 1 - %131 = load ptr, ptr %ptr4.i91, align 8 - %add.ptr.i93 = getelementptr inbounds %"struct.pbrt::Float4", ptr %131, i64 %idxprom.i + %ptr4.i89 = getelementptr inbounds %"class.pbrt::WavefrontPathIntegrator", ptr %0, i64 0, i32 18, i32 5, i32 1 + %131 = load ptr, ptr %ptr4.i89, align 8 + %add.ptr.i91 = getelementptr inbounds %"struct.pbrt::Float4", ptr %131, i64 %idxprom.i %132 = load <4 x float>, ptr %weight, align 8 - %agg.tmp.sroa.0.4.vec.insert.i94 = shufflevector <4 x float> %132, <4 x float> poison, <2 x i32> - %agg.tmp.sroa.3.12.vec.insert.i95 = shufflevector <4 x float> %132, <4 x float> poison, <2 x i32> - store <2 x float> %agg.tmp.sroa.0.4.vec.insert.i94, ptr %add.ptr.i93, align 16 - %v.sroa.2.0.p.addr.0..sroa_idx.i.i96 = getelementptr inbounds i8, ptr %add.ptr.i93, i64 8 - store <2 x float> %agg.tmp.sroa.3.12.vec.insert.i95, ptr %v.sroa.2.0.p.addr.0..sroa_idx.i.i96, align 8 + %agg.tmp.sroa.0.4.vec.insert.i92 = shufflevector <4 x float> %132, <4 x float> poison, <2 x i32> + %agg.tmp.sroa.3.12.vec.insert.i93 = shufflevector <4 x float> %132, <4 x float> poison, <2 x i32> + store <2 x float> %agg.tmp.sroa.0.4.vec.insert.i92, ptr %add.ptr.i91, align 16 + %v.sroa.2.0.p.addr.0..sroa_idx.i.i94 = getelementptr inbounds i8, ptr %add.ptr.i91, i64 8 + store <2 x float> %agg.tmp.sroa.3.12.vec.insert.i93, ptr %v.sroa.2.0.p.addr.0..sroa_idx.i.i94, align 8 br label %return if.else: ; preds = %if.end53 - %ptr4.i106 = getelementptr inbounds %"class.pbrt::WavefrontPathIntegrator", ptr %0, i64 0, i32 18, i32 5, i32 1 - %133 = load ptr, ptr %ptr4.i106, align 8 - %add.ptr.i108 = getelementptr inbounds %"struct.pbrt::Float4", ptr %133, i64 %idxprom.i - call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %add.ptr.i108, i8 0, i64 16, i1 false) + %ptr4.i104 = getelementptr inbounds %"class.pbrt::WavefrontPathIntegrator", ptr %0, i64 0, i32 18, i32 5, i32 1 + %133 = load ptr, ptr %ptr4.i104, align 8 + %add.ptr.i106 = getelementptr inbounds %"struct.pbrt::Float4", ptr %133, i64 %idxprom.i + call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %add.ptr.i106, i8 0, i64 16, i1 false) br label %return return: ; preds = %invoke.cont61, %if.else, %entry @@ -4843,50 +4839,42 @@ entry: %7 = trunc <2 x i64> %6 to <2 x i32> %8 = lshr <2 x i64> %3, %9 = trunc <2 x i64> %8 to <2 x i32> - %10 = lshr <2 x i32> %7, %9 - %11 = sub nsw <2 x i32> zeroinitializer, %9 - %12 = and <2 x i32> %11, - %13 = shl <2 x i32> %7, %12 - %14 = or <2 x i32> %10, %13 - %15 = uitofp <2 x i32> %14 to <2 x float> - %16 = fmul <2 x float> %15, - %17 = fcmp olt <2 x float> %16, - %18 = select <2 x i1> %17, <2 x float> %16, <2 x float> + %10 = tail call <2 x i32> @llvm.fshr.v2i32(<2 x i32> %7, <2 x i32> %7, <2 x i32> %9) + %11 = uitofp <2 x i32> %10 to <2 x float> + %12 = fmul <2 x float> %11, + %13 = fcmp olt <2 x float> %12, + %14 = select <2 x i1> %13, <2 x float> %12, <2 x float> call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %u.i) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %sample.i) - store <2 x float> %18, ptr %u.i, align 8 + store <2 x float> %14, ptr %u.i, align 8 store ptr %u.i, ptr %sample.i, align 8 - %19 = load i64, ptr %filter, align 8 - %and.i.i.i = and i64 %19, 144115188075855871 - %20 = inttoptr i64 %and.i.i.i to ptr - %shr.i.i.i = lshr i64 %19, 57 + %15 = load i64, ptr %filter, align 8 + %and.i.i.i = and i64 %15, 144115188075855871 + %16 = inttoptr i64 %and.i.i.i to ptr + %shr.i.i.i = lshr i64 %15, 57 %conv.i.i.i1 = trunc i64 %shr.i.i.i to i32 %sub.i.i = add nsw i32 %conv.i.i.i1, -1 - %call3.i.i = call { <2 x float>, float } @_ZN4pbrt6detail8DispatchIRZNKS_6Filter6SampleENS_6Point2IfEEEUlT_E_NS_12FilterSampleENS_9BoxFilterENS_14GaussianFilterENS_14MitchellFilterENS_17LanczosSincFilterENS_14TriangleFilterEEET0_OS5_PKvi(ptr noundef nonnull align 8 dereferenceable(8) %sample.i, ptr noundef %20, i32 noundef %sub.i.i) + %call3.i.i = call { <2 x float>, float } @_ZN4pbrt6detail8DispatchIRZNKS_6Filter6SampleENS_6Point2IfEEEUlT_E_NS_12FilterSampleENS_9BoxFilterENS_14GaussianFilterENS_14MitchellFilterENS_17LanczosSincFilterENS_14TriangleFilterEEET0_OS5_PKvi(ptr noundef nonnull align 8 dereferenceable(8) %sample.i, ptr noundef %16, i32 noundef %sub.i.i) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %u.i) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %sample.i) %call3.fca.0.extract = extractvalue { <2 x float>, float } %call3.i.i, 0 %call3.fca.1.extract = extractvalue { <2 x float>, float } %call3.i.i, 1 %filterWeight.i = getelementptr inbounds %"struct.pbrt::CameraSample", ptr %agg.result, i64 0, i32 3 - %21 = insertelement <2 x i64> poison, i64 %pPixel.coerce, i64 0 - %22 = insertelement <2 x i64> %21, i64 %pPixel.sroa.3.0.extract.shift, i64 1 - %23 = trunc <2 x i64> %22 to <2 x i32> - %24 = sitofp <2 x i32> %23 to <2 x float> - %25 = fadd <2 x float> %call3.fca.0.extract, %24 - %26 = fadd <2 x float> %25, - store <2 x float> %26, ptr %agg.result, align 4 + %17 = insertelement <2 x i64> poison, i64 %pPixel.coerce, i64 0 + %18 = insertelement <2 x i64> %17, i64 %pPixel.sroa.3.0.extract.shift, i64 1 + %19 = trunc <2 x i64> %18 to <2 x i32> + %20 = sitofp <2 x i32> %19 to <2 x float> + %21 = fadd <2 x float> %call3.fca.0.extract, %20 + %22 = fadd <2 x float> %21, + store <2 x float> %22, ptr %agg.result, align 4 %mul.i.i.i6 = mul i64 %add.i.i3.i.i, 6364136223846793005 - %27 = lshr i64 %add.i.i3.i.i, 45 - %28 = lshr i64 %add.i.i3.i.i, 27 - %shr3.i.i.i = xor i64 %27, %28 + %23 = lshr i64 %add.i.i3.i.i, 45 + %24 = lshr i64 %add.i.i3.i.i, 27 + %shr3.i.i.i = xor i64 %23, %24 %conv.i.i.i7 = trunc i64 %shr3.i.i.i to i32 %shr4.i.i.i = lshr i64 %add.i.i3.i.i, 59 %conv5.i.i.i = trunc i64 %shr4.i.i.i to i32 - %shr6.i.i.i = lshr i32 %conv.i.i.i7, %conv5.i.i.i - %add7.i.i.i = sub nsw i32 0, %conv5.i.i.i - %and.i.i.i8 = and i32 %add7.i.i.i, 31 - %shl.i.i.i = shl i32 %conv.i.i.i7, %and.i.i.i8 - %or.i.i.i = or i32 %shr6.i.i.i, %shl.i.i.i + %or.i.i.i = call noundef i32 @llvm.fshr.i32(i32 %conv.i.i.i7, i32 %conv.i.i.i7, i32 %conv5.i.i.i) %conv.i.i = uitofp i32 %or.i.i.i to float %mul.i.i = fmul float %conv.i.i, 0x3DF0000000000000 %cmp.i.i.i = fcmp olt float %mul.i.i, 0x3FEFFFFFE0000000 @@ -4894,43 +4882,39 @@ entry: %time = getelementptr inbounds %"struct.pbrt::CameraSample", ptr %agg.result, i64 0, i32 2 store float %.sroa.speculated.i.i, ptr %time, align 4 %add.i.i.i = add i64 %mul.i.i.i6, %1 - %mul.i.i.i10 = mul i64 %add.i.i.i, 6364136223846793005 - %add.i.i.i12 = add i64 %mul.i.i.i10, %1 - %29 = insertelement <2 x i64> poison, i64 %add.i.i.i, i64 0 - %30 = insertelement <2 x i64> %29, i64 %add.i.i.i12, i64 1 - %31 = lshr <2 x i64> %30, - %32 = lshr <2 x i64> %30, - %33 = xor <2 x i64> %31, %32 - %34 = trunc <2 x i64> %33 to <2 x i32> - %35 = lshr <2 x i64> %30, - %36 = trunc <2 x i64> %35 to <2 x i32> - %37 = lshr <2 x i32> %34, %36 - %38 = sub nsw <2 x i32> zeroinitializer, %36 - %39 = and <2 x i32> %38, - %40 = shl <2 x i32> %34, %39 - %41 = or <2 x i32> %37, %40 - %42 = uitofp <2 x i32> %41 to <2 x float> - %43 = fmul <2 x float> %42, - %44 = fcmp olt <2 x float> %43, - %45 = select <2 x i1> %44, <2 x float> %43, <2 x float> + %mul.i.i.i9 = mul i64 %add.i.i.i, 6364136223846793005 + %add.i.i.i11 = add i64 %mul.i.i.i9, %1 + %25 = insertelement <2 x i64> poison, i64 %add.i.i.i, i64 0 + %26 = insertelement <2 x i64> %25, i64 %add.i.i.i11, i64 1 + %27 = lshr <2 x i64> %26, + %28 = lshr <2 x i64> %26, + %29 = xor <2 x i64> %27, %28 + %30 = trunc <2 x i64> %29 to <2 x i32> + %31 = lshr <2 x i64> %26, + %32 = trunc <2 x i64> %31 to <2 x i32> + %33 = call <2 x i32> @llvm.fshr.v2i32(<2 x i32> %30, <2 x i32> %30, <2 x i32> %32) + %34 = uitofp <2 x i32> %33 to <2 x float> + %35 = fmul <2 x float> %34, + %36 = fcmp olt <2 x float> %35, + %37 = select <2 x i1> %36, <2 x float> %35, <2 x float> %pLens = getelementptr inbounds %"struct.pbrt::CameraSample", ptr %agg.result, i64 0, i32 1 - store <2 x float> %45, ptr %pLens, align 4 + store <2 x float> %37, ptr %pLens, align 4 store float %call3.fca.1.extract, ptr %filterWeight.i, align 4 - %46 = load ptr, ptr @_ZN4pbrt7OptionsE, align 8 - %disablePixelJitter = getelementptr inbounds %"struct.pbrt::BasicPBRTOptions", ptr %46, i64 0, i32 2 - %47 = load i8, ptr %disablePixelJitter, align 1 - %48 = and i8 %47, 1 - %tobool.not = icmp eq i8 %48, 0 + %38 = load ptr, ptr @_ZN4pbrt7OptionsE, align 8 + %disablePixelJitter = getelementptr inbounds %"struct.pbrt::BasicPBRTOptions", ptr %38, i64 0, i32 2 + %39 = load i8, ptr %disablePixelJitter, align 1 + %40 = and i8 %39, 1 + %tobool.not = icmp eq i8 %40, 0 br i1 %tobool.not, label %if.end, label %if.then if.then: ; preds = %entry - %49 = extractelement <2 x float> %24, i64 0 - %add.i31 = fadd float %49, 5.000000e-01 - %50 = extractelement <2 x float> %24, i64 1 - %add5.i35 = fadd float %50, 5.000000e-01 - %retval.sroa.0.0.vec.insert.i36 = insertelement <2 x float> poison, float %add.i31, i64 0 - %retval.sroa.0.4.vec.insert.i37 = insertelement <2 x float> %retval.sroa.0.0.vec.insert.i36, float %add5.i35, i64 1 - store <2 x float> %retval.sroa.0.4.vec.insert.i37, ptr %agg.result, align 4 + %41 = extractelement <2 x float> %20, i64 0 + %add.i26 = fadd float %41, 5.000000e-01 + %42 = extractelement <2 x float> %20, i64 1 + %add5.i30 = fadd float %42, 5.000000e-01 + %retval.sroa.0.0.vec.insert.i31 = insertelement <2 x float> poison, float %add.i26, i64 0 + %retval.sroa.0.4.vec.insert.i32 = insertelement <2 x float> %retval.sroa.0.0.vec.insert.i31, float %add5.i30, i64 1 + store <2 x float> %retval.sroa.0.4.vec.insert.i32, ptr %agg.result, align 4 store i32 1056964608, ptr %pLens, align 4 %pLens.sroa_idx = getelementptr inbounds %"struct.pbrt::CameraSample", ptr %agg.result, i64 0, i32 1, i32 0, i32 1 store i32 1056964608, ptr %pLens.sroa_idx, align 4 @@ -5907,11 +5891,7 @@ cond.true: ; preds = %_ZN4pbrt18Permutati %conv.i.i = trunc i64 %shr3.i.i to i32 %shr4.i.i = lshr i64 %8, 59 %conv5.i.i = trunc i64 %shr4.i.i to i32 - %shr6.i.i = lshr i32 %conv.i.i, %conv5.i.i - %add7.i.i = sub nsw i32 0, %conv5.i.i - %and.i.i = and i32 %add7.i.i, 31 - %shl.i.i = shl i32 %conv.i.i, %and.i.i - %or.i.i = or i32 %shr6.i.i, %shl.i.i + %or.i.i = tail call noundef i32 @llvm.fshr.i32(i32 %conv.i.i, i32 %conv.i.i, i32 %conv5.i.i) %conv.i = uitofp i32 %or.i.i to float %mul.i2 = fmul float %conv.i, 0x3DF0000000000000 %cmp.i.i = fcmp olt float %mul.i2, 0x3FEFFFFFE0000000 @@ -6055,30 +6035,26 @@ cond.true9: ; preds = %_ZN4pbrt18Permutati %16 = trunc <2 x i64> %15 to <2 x i32> %17 = lshr <2 x i64> %12, %18 = trunc <2 x i64> %17 to <2 x i32> - %19 = lshr <2 x i32> %16, %18 - %20 = sub nsw <2 x i32> zeroinitializer, %18 - %21 = and <2 x i32> %20, - %22 = shl <2 x i32> %16, %21 - %23 = or <2 x i32> %19, %22 - %24 = uitofp <2 x i32> %23 to <2 x float> - %25 = fmul <2 x float> %24, - %26 = fcmp olt <2 x float> %25, - %27 = select <2 x i1> %26, <2 x float> %25, <2 x float> + %19 = tail call <2 x i32> @llvm.fshr.v2i32(<2 x i32> %16, <2 x i32> %16, <2 x i32> %18) + %20 = uitofp <2 x i32> %19 to <2 x float> + %21 = fmul <2 x float> %20, + %22 = fcmp olt <2 x float> %21, + %23 = select <2 x i1> %22, <2 x float> %21, <2 x float> br label %cond.end13 cond.end13: ; preds = %_ZN4pbrt18PermutationElementEjjj.exit, %cond.true9 - %28 = phi <2 x float> [ %27, %cond.true9 ], [ , %_ZN4pbrt18PermutationElementEjjj.exit ] + %24 = phi <2 x float> [ %23, %cond.true9 ], [ , %_ZN4pbrt18PermutationElementEjjj.exit ] %add.i = add i32 %xor39.i, %conv %rem.i = urem i32 %add.i, %mul.i %div = sdiv i32 %rem.i, %4 %rem = srem i32 %rem.i, %4 - %29 = sitofp <2 x i32> %3 to <2 x float> - %30 = insertelement <2 x i32> poison, i32 %rem, i64 0 - %31 = insertelement <2 x i32> %30, i32 %div, i64 1 - %32 = sitofp <2 x i32> %31 to <2 x float> - %33 = fadd <2 x float> %28, %32 - %34 = fdiv <2 x float> %33, %29 - ret <2 x float> %34 + %25 = sitofp <2 x i32> %3 to <2 x float> + %26 = insertelement <2 x i32> poison, i32 %rem, i64 0 + %27 = insertelement <2 x i32> %26, i32 %div, i64 1 + %28 = sitofp <2 x i32> %27 to <2 x float> + %29 = fadd <2 x float> %24, %28 + %30 = fdiv <2 x float> %29, %25 + ret <2 x float> %30 } ; Function Attrs: mustprogress uwtable @@ -10585,7 +10561,7 @@ for.body.lr.ph.i: ; preds = %entry %3 = load i32, ptr %dimension.i, align 8 %mul10.i = mul i32 %3, 1431655765 %conv11.i = zext i32 %mul10.i to i64 - %4 = zext i32 %1 to i64 + %4 = zext nneg i32 %1 to i64 %5 = zext nneg i32 %and.i to i64 br label %for.body.i @@ -10875,7 +10851,7 @@ for.body.lr.ph.i: ; preds = %entry %3 = load i32, ptr %dimension.i, align 8 %mul10.i = mul i32 %3, 1431655765 %conv11.i = zext i32 %mul10.i to i64 - %4 = zext i32 %1 to i64 + %4 = zext nneg i32 %1 to i64 %5 = zext nneg i32 %and.i to i64 br label %for.body.i @@ -11330,6 +11306,9 @@ entry: ret void } +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.fshr.i32(i32, i32, i32) #16 + ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.bitreverse.i32(i32) #16 @@ -11351,6 +11330,9 @@ declare i64 @llvm.umin.i64(i64, i64) #16 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare <2 x float> @llvm.fabs.v2f32(<2 x float>) #16 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare <2 x i32> @llvm.fshr.v2i32(<2 x i32>, <2 x i32>, <2 x i32>) #16 + attributes #0 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #1 = { mustprogress uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #2 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } diff --git a/bench/pbrt-v4/optimized/cameras.cpp.ll b/bench/pbrt-v4/optimized/cameras.cpp.ll index baf5717d3f0..aad68bc337a 100644 --- a/bench/pbrt-v4/optimized/cameras.cpp.ll +++ b/bench/pbrt-v4/optimized/cameras.cpp.ll @@ -9019,7 +9019,7 @@ return: ; preds = %if.then39, %_ZN4pbr ret { <2 x float>, <2 x float> } %.fca.1.insert } -; Function Attrs: mustprogress nofree nosync nounwind willreturn memory(read, argmem: readwrite, inaccessiblemem: none) uwtable +; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(read, argmem: readwrite, inaccessiblemem: none) uwtable define dso_local void @_ZNK4pbrt15RealisticCamera15SampleExitPupilENS_6Point2IfEES2_(ptr noalias nocapture writeonly sret(%"class.pstd::optional.67") align 4 %agg.result, ptr nocapture noundef nonnull readonly align 8 dereferenceable(1128) %this, <2 x float> %pFilm.coerce, <2 x float> %uLens.coerce) local_unnamed_addr #10 align 2 { entry: %0 = fmul <2 x float> %pFilm.coerce, %pFilm.coerce @@ -11282,8 +11282,8 @@ init: ; preds = %init.check init.end: ; preds = %init, %init.check, %entry %4 = load i64, ptr @_ZZNK4pbrt15RealisticCamera19TestExitPupilBoundsEvE3rng.0, align 8 %mul.i.i = mul i64 %4, 6364136223846793005 - %.b97 = load i1, ptr @_ZZNK4pbrt15RealisticCamera19TestExitPupilBoundsEvE3rng.1, align 8 - %5 = select i1 %.b97, i64 -2720673578348880933, i64 0 + %.b89 = load i1, ptr @_ZZNK4pbrt15RealisticCamera19TestExitPupilBoundsEvE3rng.1, align 8 + %5 = select i1 %.b89, i64 -2720673578348880933, i64 0 %add.i.i = add i64 %mul.i.i, %5 store i64 %add.i.i, ptr @_ZZNK4pbrt15RealisticCamera19TestExitPupilBoundsEvE3rng.0, align 8 %6 = lshr i64 %4, 45 @@ -11292,11 +11292,7 @@ init.end: ; preds = %init, %init.check, %conv.i.i = trunc i64 %shr3.i.i to i32 %shr4.i.i = lshr i64 %4, 59 %conv5.i.i = trunc i64 %shr4.i.i to i32 - %shr6.i.i = lshr i32 %conv.i.i, %conv5.i.i - %add7.i.i = sub nsw i32 0, %conv5.i.i - %and.i.i = and i32 %add7.i.i, 31 - %shl.i.i = shl i32 %conv.i.i, %and.i.i - %or.i.i = or i32 %shr6.i.i, %shl.i.i + %or.i.i = tail call noundef i32 @llvm.fshr.i32(i32 %conv.i.i, i32 %conv.i.i, i32 %conv5.i.i) %conv.i = uitofp i32 %or.i.i to float %mul.i = fmul float %conv.i, 0x3DF0000000000000 %cmp.i.i = fcmp olt float %mul.i, 0x3FEFFFFFE0000000 @@ -11350,21 +11346,21 @@ if.end: ; preds = %if.then, %init.end %medium6.i = getelementptr inbounds %"class.pbrt::Ray", ptr %testRay, i64 0, i32 3 %medium.i = getelementptr inbounds %"class.pbrt::Ray", ptr %testOut, i64 0, i32 3 %pupilBounds.sroa.0.0.vec.extract = extractelement <2 x float> %pupilBounds.sroa.0.0, i64 0 - %pupilBounds.sroa.7.8.vec.extract81 = extractelement <2 x float> %pupilBounds.sroa.7.0, i64 0 + %pupilBounds.sroa.7.8.vec.extract73 = extractelement <2 x float> %pupilBounds.sroa.7.0, i64 0 %pupilBounds.sroa.0.4.vec.extract = extractelement <2 x float> %pupilBounds.sroa.0.0, i64 1 - %pupilBounds.sroa.7.12.vec.extract83 = extractelement <2 x float> %pupilBounds.sroa.7.0, i64 1 + %pupilBounds.sroa.7.12.vec.extract75 = extractelement <2 x float> %pupilBounds.sroa.7.0, i64 1 br label %for.body for.body: ; preds = %if.end, %for.inc - %i.092 = phi i32 [ 0, %if.end ], [ %inc, %for.inc ] + %i.084 = phi i32 [ 0, %if.end ], [ %inc, %for.inc ] %16 = load i64, ptr @_ZZNK4pbrt15RealisticCamera19TestExitPupilBoundsEvE3rng.0, align 8 %mul.i.i13 = mul i64 %16, 6364136223846793005 %.b = load i1, ptr @_ZZNK4pbrt15RealisticCamera19TestExitPupilBoundsEvE3rng.1, align 8 %17 = select i1 %.b, i64 -2720673578348880933, i64 0 %add.i.i14 = add i64 %mul.i.i13, %17 - %mul.i.i28 = mul i64 %add.i.i14, 6364136223846793005 - %add.i.i29 = add i64 %mul.i.i28, %17 - store i64 %add.i.i29, ptr @_ZZNK4pbrt15RealisticCamera19TestExitPupilBoundsEvE3rng.0, align 8 + %mul.i.i24 = mul i64 %add.i.i14, 6364136223846793005 + %add.i.i25 = add i64 %mul.i.i24, %17 + store i64 %add.i.i25, ptr @_ZZNK4pbrt15RealisticCamera19TestExitPupilBoundsEvE3rng.0, align 8 %18 = insertelement <2 x i64> poison, i64 %16, i64 0 %19 = insertelement <2 x i64> %18, i64 %add.i.i14, i64 1 %20 = lshr <2 x i64> %19, @@ -11373,45 +11369,41 @@ for.body: ; preds = %if.end, %for.inc %23 = trunc <2 x i64> %22 to <2 x i32> %24 = lshr <2 x i64> %19, %25 = trunc <2 x i64> %24 to <2 x i32> - %26 = lshr <2 x i32> %23, %25 - %27 = sub nsw <2 x i32> zeroinitializer, %25 - %28 = and <2 x i32> %27, - %29 = shl <2 x i32> %23, %28 - %30 = or <2 x i32> %26, %29 - %31 = uitofp <2 x i32> %30 to <2 x float> - %32 = fmul <2 x float> %31, - %33 = fcmp olt <2 x float> %32, - %34 = select <2 x i1> %33, <2 x float> %32, <2 x float> - %35 = fmul <2 x float> %34, - %36 = fadd <2 x float> %35, - %37 = extractelement <2 x float> %36, i64 0 - %cmp.i44 = fcmp oeq float %37, 0.000000e+00 - %38 = extractelement <2 x float> %36, i64 1 - %cmp6.i = fcmp oeq float %38, 0.000000e+00 - %or.cond.i = select i1 %cmp.i44, i1 %cmp6.i, i1 false + %26 = call <2 x i32> @llvm.fshr.v2i32(<2 x i32> %23, <2 x i32> %23, <2 x i32> %25) + %27 = uitofp <2 x i32> %26 to <2 x float> + %28 = fmul <2 x float> %27, + %29 = fcmp olt <2 x float> %28, + %30 = select <2 x i1> %29, <2 x float> %28, <2 x float> + %31 = fmul <2 x float> %30, + %32 = fadd <2 x float> %31, + %33 = extractelement <2 x float> %32, i64 0 + %cmp.i36 = fcmp oeq float %33, 0.000000e+00 + %34 = extractelement <2 x float> %32, i64 1 + %cmp6.i = fcmp oeq float %34, 0.000000e+00 + %or.cond.i = and i1 %cmp.i36, %cmp6.i br i1 %or.cond.i, label %_ZN4pbrt27SampleUniformDiskConcentricENS_6Point2IfEE.exit, label %if.end.i if.end.i: ; preds = %for.body - %39 = call <2 x float> @llvm.fabs.v2f32(<2 x float> %36) - %shift = shufflevector <2 x float> %39, <2 x float> poison, <2 x i32> - %40 = fcmp ogt <2 x float> %39, %shift - %cmp11.i = extractelement <2 x i1> %40, i64 0 + %35 = call <2 x float> @llvm.fabs.v2f32(<2 x float> %32) + %shift = shufflevector <2 x float> %35, <2 x float> poison, <2 x i32> + %36 = fcmp ogt <2 x float> %35, %shift + %cmp11.i = extractelement <2 x i1> %36, i64 0 br i1 %cmp11.i, label %if.then12.i, label %if.else.i if.then12.i: ; preds = %if.end.i - %div.i = fdiv float %38, %37 - %mul.i45 = fmul float %div.i, 0x3FE921FB60000000 + %div.i = fdiv float %34, %33 + %mul.i37 = fmul float %div.i, 0x3FE921FB60000000 br label %if.end21.i if.else.i: ; preds = %if.end.i - %div19.i = fdiv float %37, %38 + %div19.i = fdiv float %33, %34 %mul20.i = fmul float %div19.i, 0x3FE921FB60000000 %sub.i = fsub float 0x3FF921FB60000000, %mul20.i br label %if.end21.i if.end21.i: ; preds = %if.else.i, %if.then12.i - %r.0.i = phi float [ %37, %if.then12.i ], [ %38, %if.else.i ] - %theta.0.i = phi float [ %mul.i45, %if.then12.i ], [ %sub.i, %if.else.i ] + %r.0.i = phi float [ %33, %if.then12.i ], [ %34, %if.else.i ] + %theta.0.i = phi float [ %mul.i37, %if.then12.i ], [ %sub.i, %if.else.i ] %call.i.i = call noundef float @cosf(float noundef %theta.0.i) #25 %call.i19.i = call noundef float @sinf(float noundef %theta.0.i) #25 %mul.i.i22.i = fmul float %r.0.i, %call.i.i @@ -11422,17 +11414,17 @@ if.end21.i: ; preds = %if.else.i, %if.then _ZN4pbrt27SampleUniformDiskConcentricENS_6Point2IfEE.exit: ; preds = %for.body, %if.end21.i %retval.sroa.0.0.i = phi <2 x float> [ %retval.sroa.0.4.vec.insert.i.i25.i, %if.end21.i ], [ zeroinitializer, %for.body ] - %41 = load ptr, ptr %ptr.i.i, align 8 - %42 = load i64, ptr %nStored.i.i, align 8 - %43 = getelementptr %"struct.pbrt::RealisticCamera::LensElementInterface", ptr %41, i64 %42 - %apertureRadius.i = getelementptr %"struct.pbrt::RealisticCamera::LensElementInterface", ptr %43, i64 -1, i32 3 - %44 = load float, ptr %apertureRadius.i, align 4 - %pd.sroa.0.0.vec.extract66 = extractelement <2 x float> %retval.sroa.0.0.i, i64 0 - %mul.i46 = fmul float %pd.sroa.0.0.vec.extract66, %44 - %pd.sroa.0.4.vec.extract71 = extractelement <2 x float> %retval.sroa.0.0.i, i64 1 - %mul2.i = fmul float %pd.sroa.0.4.vec.extract71, %44 - %sub.i49 = fsub float %mul.i46, %div - %retval.sroa.0.0.vec.insert.i = insertelement <2 x float> poison, float %sub.i49, i64 0 + %37 = load ptr, ptr %ptr.i.i, align 8 + %38 = load i64, ptr %nStored.i.i, align 8 + %39 = getelementptr %"struct.pbrt::RealisticCamera::LensElementInterface", ptr %37, i64 %38 + %apertureRadius.i = getelementptr %"struct.pbrt::RealisticCamera::LensElementInterface", ptr %39, i64 -1, i32 3 + %40 = load float, ptr %apertureRadius.i, align 4 + %pd.sroa.0.0.vec.extract58 = extractelement <2 x float> %retval.sroa.0.0.i, i64 0 + %mul.i38 = fmul float %pd.sroa.0.0.vec.extract58, %40 + %pd.sroa.0.4.vec.extract63 = extractelement <2 x float> %retval.sroa.0.0.i, i64 1 + %mul2.i = fmul float %pd.sroa.0.4.vec.extract63, %40 + %sub.i41 = fsub float %mul.i38, %div + %retval.sroa.0.0.vec.insert.i = insertelement <2 x float> poison, float %sub.i41, i64 0 %retval.sroa.0.4.vec.insert.i = insertelement <2 x float> %retval.sroa.0.0.vec.insert.i, float %mul2.i, i64 1 store <2 x float> %pFilm.sroa.0.4.vec.insert, ptr %testRay, align 8 store float 0.000000e+00, ptr %o.sroa.2.0.o3.sroa_idx.i, align 8 @@ -11446,34 +11438,34 @@ _ZN4pbrt27SampleUniformDiskConcentricENS_6Point2IfEE.exit: ; preds = %for.body, br i1 %tobool43, label %if.end45, label %for.inc if.end45: ; preds = %_ZN4pbrt27SampleUniformDiskConcentricENS_6Point2IfEE.exit - %cmp.i53 = fcmp oge float %mul.i46, %pupilBounds.sroa.0.0.vec.extract - %cmp4.i = fcmp ole float %mul.i46, %pupilBounds.sroa.7.8.vec.extract81 - %or.cond.i55.not = select i1 %cmp.i53, i1 %cmp4.i, i1 false + %cmp.i45 = fcmp oge float %mul.i38, %pupilBounds.sroa.0.0.vec.extract + %cmp4.i = fcmp ole float %mul.i38, %pupilBounds.sroa.7.8.vec.extract73 + %or.cond.i47.not = select i1 %cmp.i45, i1 %cmp4.i, i1 false %cmp8.i = fcmp oge float %mul2.i, %pupilBounds.sroa.0.4.vec.extract - %or.cond = select i1 %or.cond.i55.not, i1 %cmp8.i, i1 false - %cmp12.i = fcmp ole float %mul2.i, %pupilBounds.sroa.7.12.vec.extract83 - %or.cond91 = select i1 %or.cond, i1 %cmp12.i, i1 false - br i1 %or.cond91, label %for.inc, label %if.then49 + %or.cond = select i1 %or.cond.i47.not, i1 %cmp8.i, i1 false + %cmp12.i = fcmp ole float %mul2.i, %pupilBounds.sroa.7.12.vec.extract75 + %or.cond83 = select i1 %or.cond, i1 %cmp12.i, i1 false + br i1 %or.cond83, label %for.inc, label %if.then49 if.then49: ; preds = %if.end45 - %45 = load ptr, ptr @stderr, align 8 - %conv51 = fpext float %mul.i46 to double + %41 = load ptr, ptr @stderr, align 8 + %conv51 = fpext float %mul.i38 to double %conv53 = fpext float %mul2.i to double %conv55 = fpext float %pupilBounds.sroa.0.0.vec.extract to double %conv58 = fpext float %pupilBounds.sroa.0.4.vec.extract to double - %conv60 = fpext float %pupilBounds.sroa.7.8.vec.extract81 to double - %conv63 = fpext float %pupilBounds.sroa.7.12.vec.extract83 to double - %call64 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %45, ptr noundef nonnull @.str.73, double noundef %conv51, double noundef %conv53, double noundef %conv55, double noundef %conv58, double noundef %conv60, double noundef %conv63) #28 + %conv60 = fpext float %pupilBounds.sroa.7.8.vec.extract73 to double + %conv63 = fpext float %pupilBounds.sroa.7.12.vec.extract75 to double + %call64 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %41, ptr noundef nonnull @.str.73, double noundef %conv51, double noundef %conv53, double noundef %conv55, double noundef %conv58, double noundef %conv60, double noundef %conv63) #28 %conv65 = sitofp i32 %.sroa.speculated to float - %46 = load i64, ptr %nStored.i, align 8 - %conv68 = uitofp i64 %46 to float + %42 = load i64, ptr %nStored.i, align 8 + %conv68 = uitofp i64 %42 to float %div69 = fdiv float %conv65, %conv68 %mul70 = fmul float %retval.0.i.i.i, %div69 %div71 = fmul float %mul70, 5.000000e-01 call void @_ZNK4pbrt15RealisticCamera15RenderExitPupilEffPKc(ptr noundef nonnull align 8 dereferenceable(1128) %this, float noundef %div71, float noundef 0.000000e+00, ptr noundef nonnull @.str.74) %conv73 = sitofp i32 %add to float - %47 = load i64, ptr %nStored.i, align 8 - %conv76 = uitofp i64 %47 to float + %43 = load i64, ptr %nStored.i, align 8 + %conv76 = uitofp i64 %43 to float %div77 = fdiv float %conv73, %conv76 %mul78 = fmul float %retval.0.i.i.i, %div77 %div79 = fmul float %mul78, 5.000000e-01 @@ -11483,13 +11475,13 @@ if.then49: ; preds = %if.end45 unreachable for.inc: ; preds = %if.end45, %_ZN4pbrt27SampleUniformDiskConcentricENS_6Point2IfEE.exit - %inc = add nuw nsw i32 %i.092, 1 + %inc = add nuw nsw i32 %i.084, 1 %exitcond.not = icmp eq i32 %inc, 1000 br i1 %exitcond.not, label %for.end, label %for.body, !llvm.loop !157 for.end: ; preds = %for.inc - %48 = load ptr, ptr @stderr, align 8 - %fputc = call i32 @fputc(i32 46, ptr %48) + %44 = load ptr, ptr @stderr, align 8 + %fputc = call i32 @fputc(i32 46, ptr %44) ret void } @@ -22809,7 +22801,7 @@ entry: ret void } -; Function Attrs: mustprogress nofree nosync nounwind willreturn memory(argmem: readwrite) uwtable +; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable define internal noundef zeroext i1 @"_ZNSt17_Function_handlerIFvlEZN4pbrt15RealisticCameraC1ENS1_20CameraBaseParametersERSt6vectorIfSaIfEEffNS1_5ImageEN4pstd3pmr21polymorphic_allocatorISt4byteEEE3$_0E10_M_managerERSt9_Any_dataRKSG_St18_Manager_operation"(ptr nocapture noundef nonnull writeonly align 8 dereferenceable(16) %__dest, ptr noundef nonnull align 8 dereferenceable(16) %__source, i32 noundef %__op) #19 align 2 personality ptr @__gxx_personality_v0 { entry: switch i32 %__op, label %sw.epilog [ @@ -26924,32 +26916,38 @@ declare noundef i32 @putchar(i32 noundef) local_unnamed_addr #12 ; Function Attrs: nofree nounwind declare noundef i32 @fputc(i32 noundef, ptr nocapture noundef) local_unnamed_addr #12 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.fshr.i32(i32, i32, i32) #21 + ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) -declare void @llvm.experimental.noalias.scope.decl(metadata) #21 +declare void @llvm.experimental.noalias.scope.decl(metadata) #22 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #22 +declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #23 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #22 +declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #23 + +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare float @llvm.sqrt.f32(float) #21 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare float @llvm.sqrt.f32(float) #23 +declare i32 @llvm.smin.i32(i32, i32) #21 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smin.i32(i32, i32) #23 +declare <2 x float> @llvm.sqrt.v2f32(<2 x float>) #21 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare <2 x float> @llvm.sqrt.v2f32(<2 x float>) #23 +declare <2 x float> @llvm.fabs.v2f32(<2 x float>) #21 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare <2 x float> @llvm.fabs.v2f32(<2 x float>) #23 +declare <2 x float> @llvm.fma.v2f32(<2 x float>, <2 x float>, <2 x float>) #21 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare <2 x float> @llvm.fma.v2f32(<2 x float>, <2 x float>, <2 x float>) #23 +declare <2 x float> @llvm.floor.v2f32(<2 x float>) #21 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare <2 x float> @llvm.floor.v2f32(<2 x float>) #23 +declare <2 x i32> @llvm.fshr.v2i32(<2 x i32>, <2 x i32>, <2 x i32>) #21 attributes #0 = { mustprogress uwtable "frame-pointer"="all" "min-legal-vector-width"="64" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } @@ -26961,7 +26959,7 @@ attributes #6 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stac attributes #7 = { mustprogress noreturn uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #8 = { mustprogress nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #9 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="64" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } -attributes #10 = { mustprogress nofree nosync nounwind willreturn memory(read, argmem: readwrite, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="64" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } +attributes #10 = { mustprogress nofree norecurse nosync nounwind willreturn memory(read, argmem: readwrite, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="64" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #11 = { nofree nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #12 = { nofree nounwind } attributes #13 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } @@ -26970,11 +26968,11 @@ attributes #15 = { mustprogress nocallback nofree nosync nounwind speculatable w attributes #16 = { noreturn nounwind uwtable "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #17 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #18 = { mustprogress nofree nounwind willreturn memory(argmem: read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } -attributes #19 = { mustprogress nofree nosync nounwind willreturn memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } +attributes #19 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #20 = { uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } -attributes #21 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } -attributes #22 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #23 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #21 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #22 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } +attributes #23 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } attributes #24 = { noreturn } attributes #25 = { nounwind } attributes #26 = { builtin nounwind } diff --git a/bench/pbrt-v4/optimized/filters.cpp.ll b/bench/pbrt-v4/optimized/filters.cpp.ll index e290ec264de..fc6a8d7f505 100644 --- a/bench/pbrt-v4/optimized/filters.cpp.ll +++ b/bench/pbrt-v4/optimized/filters.cpp.ll @@ -903,61 +903,57 @@ entry: br label %for.cond8.preheader for.cond8.preheader: ; preds = %entry, %for.inc32 - %sum.044 = phi float [ 0.000000e+00, %entry ], [ %add31, %for.inc32 ] - %y6.043 = phi i32 [ 0, %entry ], [ %inc33, %for.inc32 ] - %rng.sroa.0.042 = phi i64 [ -8846114313915602277, %entry ], [ %add.i.i13, %for.inc32 ] - %conv12 = sitofp i32 %y6.043 to float + %sum.040 = phi float [ 0.000000e+00, %entry ], [ %add31, %for.inc32 ] + %y6.039 = phi i32 [ 0, %entry ], [ %inc33, %for.inc32 ] + %rng.sroa.0.038 = phi i64 [ -8846114313915602277, %entry ], [ %add.i.i13, %for.inc32 ] + %conv12 = sitofp i32 %y6.039 to float br label %for.body10 for.body10: ; preds = %for.cond8.preheader, %_ZNK4pbrt17LanczosSincFilter8EvaluateENS_6Point2IfEE.exit - %sum.141 = phi float [ %sum.044, %for.cond8.preheader ], [ %add31, %_ZNK4pbrt17LanczosSincFilter8EvaluateENS_6Point2IfEE.exit ] - %x7.040 = phi i32 [ 0, %for.cond8.preheader ], [ %inc, %_ZNK4pbrt17LanczosSincFilter8EvaluateENS_6Point2IfEE.exit ] - %rng.sroa.0.139 = phi i64 [ %rng.sroa.0.042, %for.cond8.preheader ], [ %add.i.i13, %_ZNK4pbrt17LanczosSincFilter8EvaluateENS_6Point2IfEE.exit ] - %conv = sitofp i32 %x7.040 to float - %mul.i.i = mul i64 %rng.sroa.0.139, 6364136223846793005 + %sum.137 = phi float [ %sum.040, %for.cond8.preheader ], [ %add31, %_ZNK4pbrt17LanczosSincFilter8EvaluateENS_6Point2IfEE.exit ] + %x7.036 = phi i32 [ 0, %for.cond8.preheader ], [ %inc, %_ZNK4pbrt17LanczosSincFilter8EvaluateENS_6Point2IfEE.exit ] + %rng.sroa.0.135 = phi i64 [ %rng.sroa.0.038, %for.cond8.preheader ], [ %add.i.i13, %_ZNK4pbrt17LanczosSincFilter8EvaluateENS_6Point2IfEE.exit ] + %conv = sitofp i32 %x7.036 to float + %mul.i.i = mul i64 %rng.sroa.0.135, 6364136223846793005 %add.i.i = add i64 %mul.i.i, -2720673578348880933 %mul.i.i11 = mul i64 %add.i.i, 6364136223846793005 %add.i.i13 = add i64 %mul.i.i11, -2720673578348880933 %2 = insertelement <2 x i64> poison, i64 %add.i.i, i64 0 - %3 = insertelement <2 x i64> %2, i64 %rng.sroa.0.139, i64 1 + %3 = insertelement <2 x i64> %2, i64 %rng.sroa.0.135, i64 1 %4 = lshr <2 x i64> %3, %5 = lshr <2 x i64> %3, %6 = xor <2 x i64> %5, %4 %7 = trunc <2 x i64> %6 to <2 x i32> %8 = lshr <2 x i64> %3, %9 = trunc <2 x i64> %8 to <2 x i32> - %10 = lshr <2 x i32> %7, %9 - %11 = sub nsw <2 x i32> zeroinitializer, %9 - %12 = and <2 x i32> %11, - %13 = shl <2 x i32> %7, %12 - %14 = or <2 x i32> %10, %13 - %15 = uitofp <2 x i32> %14 to <2 x float> - %16 = fmul <2 x float> %15, - %17 = fcmp olt <2 x float> %16, - %18 = extractelement <2 x i1> %17, i64 1 - %19 = extractelement <2 x float> %16, i64 1 - %.sroa.speculated.i = select i1 %18, float %19, float 0x3FEFFFFFE0000000 + %10 = tail call <2 x i32> @llvm.fshr.v2i32(<2 x i32> %7, <2 x i32> %7, <2 x i32> %9) + %11 = uitofp <2 x i32> %10 to <2 x float> + %12 = fmul <2 x float> %11, + %13 = fcmp olt <2 x float> %12, + %14 = extractelement <2 x i1> %13, i64 1 + %15 = extractelement <2 x float> %12, i64 1 + %.sroa.speculated.i = select i1 %14, float %15, float 0x3FEFFFFFE0000000 %add = fadd float %.sroa.speculated.i, %conv %div = fmul float %add, 1.562500e-02 - %20 = extractelement <2 x i1> %17, i64 0 - %21 = extractelement <2 x float> %16, i64 0 - %.sroa.speculated.i26 = select i1 %20, float %21, float 0x3FEFFFFFE0000000 - %add14 = fadd float %.sroa.speculated.i26, %conv12 + %16 = extractelement <2 x i1> %13, i64 0 + %17 = extractelement <2 x float> %12, i64 0 + %.sroa.speculated.i22 = select i1 %16, float %17, float 0x3FEFFFFFE0000000 + %add14 = fadd float %.sroa.speculated.i22, %conv12 %div16 = fmul float %add14, 1.562500e-02 - %22 = load float, ptr %this, align 8 + %18 = load float, ptr %this, align 8 %sub.i = fsub float 1.000000e+00, %div - %mul1.i = fmul float %div, %22 - %23 = fmul float %sub.i, %22 - %add.i = fsub float %mul1.i, %23 - %24 = load float, ptr %y, align 4 - %sub.i28 = fsub float 1.000000e+00, %div16 - %mul1.i30 = fmul float %div16, %24 - %25 = fmul float %sub.i28, %24 - %add.i31 = fsub float %mul1.i30, %25 - %26 = load float, ptr %tau.i, align 8 - %27 = tail call noundef float @llvm.fabs.f32(float %add.i) - %cmp.i.i33 = fcmp ogt float %27, %22 - br i1 %cmp.i.i33, label %_ZN4pbrt12WindowedSincEfff.exit.i, label %if.end.i.i + %mul1.i = fmul float %div, %18 + %19 = fmul float %sub.i, %18 + %add.i = fsub float %mul1.i, %19 + %20 = load float, ptr %y, align 4 + %sub.i24 = fsub float 1.000000e+00, %div16 + %mul1.i26 = fmul float %div16, %20 + %21 = fmul float %sub.i24, %20 + %add.i27 = fsub float %mul1.i26, %21 + %22 = load float, ptr %tau.i, align 8 + %23 = tail call noundef float @llvm.fabs.f32(float %add.i) + %cmp.i.i29 = fcmp ogt float %23, %18 + br i1 %cmp.i.i29, label %_ZN4pbrt12WindowedSincEfff.exit.i, label %if.end.i.i if.end.i.i: ; preds = %for.body10 %mul.i.i.i = fmul float %add.i, 0x400921FB60000000 @@ -973,7 +969,7 @@ if.end.i.i.i.i: ; preds = %if.end.i.i _ZN4pbrt4SincEf.exit.i.i: ; preds = %if.end.i.i.i.i, %if.end.i.i %retval.0.i.i.i.i = phi float [ %div.i.i.i.i, %if.end.i.i.i.i ], [ 1.000000e+00, %if.end.i.i ] - %div.i.i = fdiv float %add.i, %26 + %div.i.i = fdiv float %add.i, %22 %mul.i3.i.i = fmul float %div.i.i, 0x400921FB60000000 %mul.i.i4.i.i = fmul float %mul.i3.i.i, %mul.i3.i.i %sub.i.i5.i.i = fsub float 1.000000e+00, %mul.i.i4.i.i @@ -987,21 +983,21 @@ if.end.i.i7.i.i: ; preds = %_ZN4pbrt4SincEf.exi _ZN4pbrt4SincEf.exit11.i.i: ; preds = %if.end.i.i7.i.i, %_ZN4pbrt4SincEf.exit.i.i %retval.0.i.i10.i.i = phi float [ %div.i.i9.i.i, %if.end.i.i7.i.i ], [ 1.000000e+00, %_ZN4pbrt4SincEf.exit.i.i ] - %mul.i.i34 = fmul float %retval.0.i.i.i.i, %retval.0.i.i10.i.i + %mul.i.i30 = fmul float %retval.0.i.i.i.i, %retval.0.i.i10.i.i %.pre.i = load float, ptr %tau.i, align 8 %.pre = load float, ptr %y, align 4 br label %_ZN4pbrt12WindowedSincEfff.exit.i _ZN4pbrt12WindowedSincEfff.exit.i: ; preds = %_ZN4pbrt4SincEf.exit11.i.i, %for.body10 - %28 = phi float [ %.pre, %_ZN4pbrt4SincEf.exit11.i.i ], [ %24, %for.body10 ] - %29 = phi float [ %.pre.i, %_ZN4pbrt4SincEf.exit11.i.i ], [ %26, %for.body10 ] - %retval.0.i.i = phi float [ %mul.i.i34, %_ZN4pbrt4SincEf.exit11.i.i ], [ 0.000000e+00, %for.body10 ] - %30 = tail call noundef float @llvm.fabs.f32(float %add.i31) - %cmp.i1.i = fcmp ogt float %30, %28 + %24 = phi float [ %.pre, %_ZN4pbrt4SincEf.exit11.i.i ], [ %20, %for.body10 ] + %25 = phi float [ %.pre.i, %_ZN4pbrt4SincEf.exit11.i.i ], [ %22, %for.body10 ] + %retval.0.i.i = phi float [ %mul.i.i30, %_ZN4pbrt4SincEf.exit11.i.i ], [ 0.000000e+00, %for.body10 ] + %26 = tail call noundef float @llvm.fabs.f32(float %add.i27) + %cmp.i1.i = fcmp ogt float %26, %24 br i1 %cmp.i1.i, label %_ZNK4pbrt17LanczosSincFilter8EvaluateENS_6Point2IfEE.exit, label %if.end.i2.i if.end.i2.i: ; preds = %_ZN4pbrt12WindowedSincEfff.exit.i - %mul.i.i3.i = fmul float %add.i31, 0x400921FB60000000 + %mul.i.i3.i = fmul float %add.i27, 0x400921FB60000000 %mul.i.i.i4.i = fmul float %mul.i.i3.i, %mul.i.i3.i %sub.i.i.i5.i = fsub float 1.000000e+00, %mul.i.i.i4.i %cmp.i.i.i6.i = fcmp oeq float %sub.i.i.i5.i, 1.000000e+00 @@ -1014,7 +1010,7 @@ if.end.i.i.i7.i: ; preds = %if.end.i2.i _ZN4pbrt4SincEf.exit.i10.i: ; preds = %if.end.i.i.i7.i, %if.end.i2.i %retval.0.i.i.i11.i = phi float [ %div.i.i.i9.i, %if.end.i.i.i7.i ], [ 1.000000e+00, %if.end.i2.i ] - %div.i12.i = fdiv float %add.i31, %29 + %div.i12.i = fdiv float %add.i27, %25 %mul.i3.i13.i = fmul float %div.i12.i, 0x400921FB60000000 %mul.i.i4.i14.i = fmul float %mul.i3.i13.i, %mul.i3.i13.i %sub.i.i5.i15.i = fsub float 1.000000e+00, %mul.i.i4.i14.i @@ -1033,16 +1029,16 @@ _ZN4pbrt4SincEf.exit11.i20.i: ; preds = %if.end.i.i7.i17.i, _ZNK4pbrt17LanczosSincFilter8EvaluateENS_6Point2IfEE.exit: ; preds = %_ZN4pbrt12WindowedSincEfff.exit.i, %_ZN4pbrt4SincEf.exit11.i20.i %retval.0.i23.i = phi float [ %mul.i22.i, %_ZN4pbrt4SincEf.exit11.i20.i ], [ 0.000000e+00, %_ZN4pbrt12WindowedSincEfff.exit.i ] - %mul.i35 = fmul float %retval.0.i.i, %retval.0.i23.i - %add31 = fadd float %sum.141, %mul.i35 - %inc = add nuw nsw i32 %x7.040, 1 + %mul.i31 = fmul float %retval.0.i.i, %retval.0.i23.i + %add31 = fadd float %sum.137, %mul.i31 + %inc = add nuw nsw i32 %x7.036, 1 %exitcond.not = icmp eq i32 %inc, 64 br i1 %exitcond.not, label %for.inc32, label %for.body10, !llvm.loop !5 for.inc32: ; preds = %_ZNK4pbrt17LanczosSincFilter8EvaluateENS_6Point2IfEE.exit - %inc33 = add nuw nsw i32 %y6.043, 1 - %exitcond45.not = icmp eq i32 %inc33, 64 - br i1 %exitcond45.not, label %for.end34, label %for.cond8.preheader, !llvm.loop !7 + %inc33 = add nuw nsw i32 %y6.039, 1 + %exitcond41.not = icmp eq i32 %inc33, 64 + br i1 %exitcond41.not, label %for.end34, label %for.cond8.preheader, !llvm.loop !7 for.end34: ; preds = %for.inc32 %mul2 = fmul float %0, 2.000000e+00 @@ -10943,6 +10939,9 @@ declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #1 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umin.i64(i64, i64) #14 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare <2 x i32> @llvm.fshr.v2i32(<2 x i32>, <2 x i32>, <2 x i32>) #14 + ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare <2 x float> @llvm.fabs.v2f32(<2 x float>) #14 diff --git a/bench/pbrt-v4/optimized/imgtool.cpp.ll b/bench/pbrt-v4/optimized/imgtool.cpp.ll index f53c51b7b6d..a504c1ac1d4 100644 --- a/bench/pbrt-v4/optimized/imgtool.cpp.ll +++ b/bench/pbrt-v4/optimized/imgtool.cpp.ll @@ -41869,11 +41869,7 @@ invoke.cont433: ; preds = %invoke.cont433.preh %conv.i.i = trunc i64 %shr3.i.i to i32 %shr4.i.i = lshr i64 %rng.sroa.0.3262, 59 %conv5.i.i = trunc i64 %shr4.i.i to i32 - %shr6.i.i = lshr i32 %conv.i.i, %conv5.i.i - %add7.i.i = sub nsw i32 0, %conv5.i.i - %and.i.i = and i32 %add7.i.i, 31 - %shl.i.i = shl i32 %conv.i.i, %and.i.i - %or.i.i = or i32 %shr6.i.i, %shl.i.i + %or.i.i = call noundef i32 @llvm.fshr.i32(i32 %conv.i.i, i32 %conv.i.i, i32 %conv5.i.i) %conv.i = uitofp i32 %or.i.i to float %mul.i180 = fmul float %conv.i, 0x3DF0000000000000 %cmp.i.i = fcmp olt float %mul.i180, 0x3FEFFFFFE0000000 @@ -71406,10 +71402,10 @@ entry: call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %values.i.i.i) %shl.i.i.i.i.i.i = shl i64 %__args.val, 1 %or.i.i.i.i.i.i = or disjoint i64 %shl.i.i.i.i.i.i, 1 - %sext188.i.i.i = shl i64 %__args.val, 32 - %conv2181.i.i.i = ashr exact i64 %sext188.i.i.i, 32 - %cmp182.i.i.i = icmp slt i64 %conv2181.i.i.i, %__args1.val - br i1 %cmp182.i.i.i, label %for.cond3.preheader.lr.ph.i.i.i, label %"_ZSt10__invoke_rIvRZ12makeequiareaSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EEE3$_1JllEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESC_E4typeEOSD_DpOSE_.exit" + %sext184.i.i.i = shl i64 %__args.val, 32 + %conv2177.i.i.i = ashr exact i64 %sext184.i.i.i, 32 + %cmp178.i.i.i = icmp slt i64 %conv2177.i.i.i, %__args1.val + br i1 %cmp178.i.i.i, label %for.cond3.preheader.lr.ph.i.i.i, label %"_ZSt10__invoke_rIvRZ12makeequiareaSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EEE3$_1JllEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESC_E4typeEOSD_DpOSE_.exit" for.cond3.preheader.lr.ph.i.i.i: ; preds = %entry %0 = getelementptr inbounds %class.anon.186, ptr %__functor.val, i64 0, i32 1 @@ -71421,9 +71417,9 @@ for.cond3.preheader.lr.ph.i.i.i: ; preds = %entry %3 = getelementptr inbounds %class.anon.186, ptr %__functor.val, i64 0, i32 3 %4 = getelementptr inbounds %class.anon.186, ptr %__functor.val, i64 0, i32 4 %nStored.i.i.i.i = getelementptr inbounds %"class.pbrt::InlinedVector.81", ptr %values.i.i.i, i64 0, i32 4 - %ptr.i.i49.i.i.i = getelementptr inbounds %"class.pbrt::InlinedVector.81", ptr %values.i.i.i, i64 0, i32 1 + %ptr.i.i45.i.i.i = getelementptr inbounds %"class.pbrt::InlinedVector.81", ptr %values.i.i.i, i64 0, i32 1 %5 = getelementptr inbounds %"class.pbrt::InlinedVector.81", ptr %values.i.i.i, i64 0, i32 2 - %nAlloc.i.i61.i.i.i = getelementptr inbounds %"class.pbrt::InlinedVector.81", ptr %values.i.i.i, i64 0, i32 3 + %nAlloc.i.i57.i.i.i = getelementptr inbounds %"class.pbrt::InlinedVector.81", ptr %values.i.i.i, i64 0, i32 3 %6 = getelementptr inbounds %class.anon.186, ptr %__functor.val, i64 0, i32 5 %7 = load ptr, ptr %__functor.val, align 8 %8 = load i32, ptr %7, align 4 @@ -71445,22 +71441,22 @@ for.cond3.preheader.preheader.i.i.i: ; preds = %for.cond3.preheader br label %for.cond3.preheader.i.i.i for.cond3.preheader.i.i.i: ; preds = %for.inc100.i.i.i, %for.cond3.preheader.preheader.i.i.i - %10 = phi i32 [ %8, %for.cond3.preheader.preheader.i.i.i ], [ %100, %for.inc100.i.i.i ] - %indvars.iv208.i.i.i = phi i64 [ %conv2181.i.i.i, %for.cond3.preheader.preheader.i.i.i ], [ %indvars.iv.next209.i.i.i, %for.inc100.i.i.i ] - %rng.sroa.0.0186.i.i.i = phi i64 [ %add.i3.i.i.i.i.i.i, %for.cond3.preheader.preheader.i.i.i ], [ %rng.sroa.0.1.lcssa.i.i.i, %for.inc100.i.i.i ] - %cmp4171.i.i.i = icmp sgt i32 %10, 0 - br i1 %cmp4171.i.i.i, label %for.body5.lr.ph.i.i.i, label %for.inc100.i.i.i + %10 = phi i32 [ %8, %for.cond3.preheader.preheader.i.i.i ], [ %96, %for.inc100.i.i.i ] + %indvars.iv204.i.i.i = phi i64 [ %conv2177.i.i.i, %for.cond3.preheader.preheader.i.i.i ], [ %indvars.iv.next205.i.i.i, %for.inc100.i.i.i ] + %rng.sroa.0.0182.i.i.i = phi i64 [ %add.i3.i.i.i.i.i.i, %for.cond3.preheader.preheader.i.i.i ], [ %rng.sroa.0.1.lcssa.i.i.i, %for.inc100.i.i.i ] + %cmp4167.i.i.i = icmp sgt i32 %10, 0 + br i1 %cmp4167.i.i.i, label %for.body5.lr.ph.i.i.i, label %for.inc100.i.i.i for.body5.lr.ph.i.i.i: ; preds = %for.cond3.preheader.i.i.i - %11 = trunc i64 %indvars.iv208.i.i.i to i32 + %11 = trunc i64 %indvars.iv204.i.i.i to i32 %conv30.i.i.i = sitofp i32 %11 to float %add31.i.i.i = fadd float %conv30.i.i.i, 5.000000e-01 - %agg.tmp93.sroa.2.0.insert.ext.i.i.i = shl i64 %indvars.iv208.i.i.i, 32 + %agg.tmp93.sroa.2.0.insert.ext.i.i.i = shl i64 %indvars.iv204.i.i.i, 32 br label %for.body5.i.i.i -for.body5.i.i.i: ; preds = %_ZN4pbrt18ImageChannelValuesD2Ev.exit87.i.i.i, %for.body5.lr.ph.i.i.i - %indvars.iv.i.i.i = phi i64 [ 0, %for.body5.lr.ph.i.i.i ], [ %indvars.iv.next.i.i.i, %_ZN4pbrt18ImageChannelValuesD2Ev.exit87.i.i.i ] - %rng.sroa.0.1175.i.i.i = phi i64 [ %rng.sroa.0.0186.i.i.i, %for.body5.lr.ph.i.i.i ], [ %rng.sroa.0.2.lcssa.i.i.i, %_ZN4pbrt18ImageChannelValuesD2Ev.exit87.i.i.i ] +for.body5.i.i.i: ; preds = %_ZN4pbrt18ImageChannelValuesD2Ev.exit83.i.i.i, %for.body5.lr.ph.i.i.i + %indvars.iv.i.i.i = phi i64 [ 0, %for.body5.lr.ph.i.i.i ], [ %indvars.iv.next.i.i.i, %_ZN4pbrt18ImageChannelValuesD2Ev.exit83.i.i.i ] + %rng.sroa.0.1171.i.i.i = phi i64 [ %rng.sroa.0.0182.i.i.i, %for.body5.lr.ph.i.i.i ], [ %rng.sroa.0.2.lcssa.i.i.i, %_ZN4pbrt18ImageChannelValuesD2Ev.exit83.i.i.i ] %12 = load ptr, ptr %0, align 8 %nStored.i.i.i.i.i = getelementptr inbounds %"class.pbrt::Image", ptr %12, i64 0, i32 2, i32 3 %13 = load i64, ptr %nStored.i.i.i.i.i, align 8 @@ -71518,9 +71514,9 @@ if.end.i.i.i14.i.i.i.i.i.i: ; preds = %for.end.i.i.i.i.i.i br label %_ZN4pstd3pmr21polymorphic_allocatorIfE17deallocate_objectIfEEvPT_m.exit.i.i.i.i.i.i _ZN4pstd3pmr21polymorphic_allocatorIfE17deallocate_objectIfEEvPT_m.exit.i.i.i.i.i.i: ; preds = %if.end.i.i.i14.i.i.i.i.i.i, %for.end.i.i.i.i.i.i, %if.end.i.i.i.i.i.i - %retval.0.i.i.i.i7.i.i213.i.i.i = phi ptr [ %call.i.i.i.i.i.i.i.i.i, %if.end.i.i.i14.i.i.i.i.i.i ], [ %call.i.i.i.i.i.i.i.i.i, %for.end.i.i.i.i.i.i ], [ null, %if.end.i.i.i.i.i.i ] + %retval.0.i.i.i.i7.i.i209.i.i.i = phi ptr [ %call.i.i.i.i.i.i.i.i.i, %if.end.i.i.i14.i.i.i.i.i.i ], [ %call.i.i.i.i.i.i.i.i.i, %for.end.i.i.i.i.i.i ], [ null, %if.end.i.i.i.i.i.i ] store i64 %conv6.i.i.i, ptr %nAlloc.i.i.i.i.i, align 8 - store ptr %retval.0.i.i.i.i7.i.i213.i.i.i, ptr %ptr.i.i.i.i.i, align 8 + store ptr %retval.0.i.i.i.i7.i.i209.i.i.i, ptr %ptr.i.i.i.i.i, align 8 br label %_ZN4pbrt13InlinedVectorIfLi4EN4pstd3pmr21polymorphic_allocatorIfEEE7reserveEm.exit.i.i.i.i.i _ZN4pbrt13InlinedVectorIfLi4EN4pstd3pmr21polymorphic_allocatorIfEEE7reserveEm.exit.i.i.i.i.i: ; preds = %_ZN4pstd3pmr21polymorphic_allocatorIfE17deallocate_objectIfEEvPT_m.exit.i.i.i.i.i.i, %for.body5.i.i.i @@ -71542,8 +71538,8 @@ _ZN4pbrt18ImageChannelValuesC2Emf.exit.i.i.i: ; preds = %for.body.i.i.i.i.i, store i64 %conv6.i.i.i, ptr %nStored.i.i21.i.i.i, align 8 %23 = load ptr, ptr %2, align 8 %24 = load i32, ptr %23, align 4 - %cmp8153.i.i.i = icmp sgt i32 %24, 0 - br i1 %cmp8153.i.i.i, label %for.cond10.preheader.preheader.i.i.i, label %for.cond80.preheader.i.i.i + %cmp8149.i.i.i = icmp sgt i32 %24, 0 + br i1 %cmp8149.i.i.i, label %for.cond10.preheader.preheader.i.i.i, label %for.cond80.preheader.i.i.i for.cond10.preheader.preheader.i.i.i: ; preds = %_ZN4pbrt18ImageChannelValuesC2Emf.exit.i.i.i %25 = trunc i64 %indvars.iv.i.i.i to i32 @@ -71557,35 +71553,35 @@ for.cond80.preheader.loopexit.i.i.i: ; preds = %for.inc76.i.i.i for.cond80.preheader.i.i.i: ; preds = %for.cond80.preheader.loopexit.i.i.i, %_ZN4pbrt18ImageChannelValuesC2Emf.exit.i.i.i %26 = phi i64 [ %conv6.i.i.i, %_ZN4pbrt18ImageChannelValuesC2Emf.exit.i.i.i ], [ %.pre.i.i.i, %for.cond80.preheader.loopexit.i.i.i ] - %rng.sroa.0.2.lcssa.i.i.i = phi i64 [ %rng.sroa.0.1175.i.i.i, %_ZN4pbrt18ImageChannelValuesC2Emf.exit.i.i.i ], [ %rng.sroa.0.3.lcssa.i.i.i, %for.cond80.preheader.loopexit.i.i.i ] + %rng.sroa.0.2.lcssa.i.i.i = phi i64 [ %rng.sroa.0.1171.i.i.i, %_ZN4pbrt18ImageChannelValuesC2Emf.exit.i.i.i ], [ %rng.sroa.0.3.lcssa.i.i.i, %for.cond80.preheader.loopexit.i.i.i ] %sumWeight.0.lcssa.i.i.i = phi float [ 0.000000e+00, %_ZN4pbrt18ImageChannelValuesC2Emf.exit.i.i.i ], [ %sumWeight.1.lcssa.i.i.i, %for.cond80.preheader.loopexit.i.i.i ] - %cmp82169.not.i.i.i = icmp eq i64 %26, 0 - br i1 %cmp82169.not.i.i.i, label %invoke.cont94.i.i.i, label %for.body83.i.i.i + %cmp82165.not.i.i.i = icmp eq i64 %26, 0 + br i1 %cmp82165.not.i.i.i, label %invoke.cont94.i.i.i, label %for.body83.i.i.i for.cond10.preheader.i.i.i: ; preds = %for.inc76.i.i.i, %for.cond10.preheader.preheader.i.i.i - %27 = phi i32 [ %86, %for.inc76.i.i.i ], [ %24, %for.cond10.preheader.preheader.i.i.i ] - %sumWeight.0159.i.i.i = phi float [ %sumWeight.1.lcssa.i.i.i, %for.inc76.i.i.i ], [ 0.000000e+00, %for.cond10.preheader.preheader.i.i.i ] - %dv.0158.i.i.i = phi i32 [ %inc77.i.i.i, %for.inc76.i.i.i ], [ 0, %for.cond10.preheader.preheader.i.i.i ] - %rng.sroa.0.2157.i.i.i = phi i64 [ %rng.sroa.0.3.lcssa.i.i.i, %for.inc76.i.i.i ], [ %rng.sroa.0.1175.i.i.i, %for.cond10.preheader.preheader.i.i.i ] - %cmp11145.i.i.i = icmp sgt i32 %27, 0 - br i1 %cmp11145.i.i.i, label %invoke.cont22.lr.ph.i.i.i, label %for.inc76.i.i.i + %27 = phi i32 [ %82, %for.inc76.i.i.i ], [ %24, %for.cond10.preheader.preheader.i.i.i ] + %sumWeight.0155.i.i.i = phi float [ %sumWeight.1.lcssa.i.i.i, %for.inc76.i.i.i ], [ 0.000000e+00, %for.cond10.preheader.preheader.i.i.i ] + %dv.0154.i.i.i = phi i32 [ %inc77.i.i.i, %for.inc76.i.i.i ], [ 0, %for.cond10.preheader.preheader.i.i.i ] + %rng.sroa.0.2153.i.i.i = phi i64 [ %rng.sroa.0.3.lcssa.i.i.i, %for.inc76.i.i.i ], [ %rng.sroa.0.1171.i.i.i, %for.cond10.preheader.preheader.i.i.i ] + %cmp11141.i.i.i = icmp sgt i32 %27, 0 + br i1 %cmp11141.i.i.i, label %invoke.cont22.lr.ph.i.i.i, label %for.inc76.i.i.i invoke.cont22.lr.ph.i.i.i: ; preds = %for.cond10.preheader.i.i.i - %conv16.i.i.i = sitofp i32 %dv.0158.i.i.i to float + %conv16.i.i.i = sitofp i32 %dv.0154.i.i.i to float br label %invoke.cont22.i.i.i -invoke.cont22.i.i.i: ; preds = %_ZN4pbrt18ImageChannelValuesD2Ev.exit66.i.i.i, %invoke.cont22.lr.ph.i.i.i - %28 = phi i32 [ %27, %invoke.cont22.lr.ph.i.i.i ], [ %85, %_ZN4pbrt18ImageChannelValuesD2Ev.exit66.i.i.i ] - %sumWeight.1148.i.i.i = phi float [ %sumWeight.0159.i.i.i, %invoke.cont22.lr.ph.i.i.i ], [ %add72.i.i.i, %_ZN4pbrt18ImageChannelValuesD2Ev.exit66.i.i.i ] - %du.0147.i.i.i = phi i32 [ 0, %invoke.cont22.lr.ph.i.i.i ], [ %inc74.i.i.i, %_ZN4pbrt18ImageChannelValuesD2Ev.exit66.i.i.i ] - %rng.sroa.0.3146.i.i.i = phi i64 [ %rng.sroa.0.2157.i.i.i, %invoke.cont22.lr.ph.i.i.i ], [ %add.i.i26.i.i.i, %_ZN4pbrt18ImageChannelValuesD2Ev.exit66.i.i.i ] - %mul.i.i.i.i.i = mul i64 %rng.sroa.0.3146.i.i.i, 6364136223846793005 +invoke.cont22.i.i.i: ; preds = %_ZN4pbrt18ImageChannelValuesD2Ev.exit62.i.i.i, %invoke.cont22.lr.ph.i.i.i + %28 = phi i32 [ %27, %invoke.cont22.lr.ph.i.i.i ], [ %81, %_ZN4pbrt18ImageChannelValuesD2Ev.exit62.i.i.i ] + %sumWeight.1144.i.i.i = phi float [ %sumWeight.0155.i.i.i, %invoke.cont22.lr.ph.i.i.i ], [ %add72.i.i.i, %_ZN4pbrt18ImageChannelValuesD2Ev.exit62.i.i.i ] + %du.0143.i.i.i = phi i32 [ 0, %invoke.cont22.lr.ph.i.i.i ], [ %inc74.i.i.i, %_ZN4pbrt18ImageChannelValuesD2Ev.exit62.i.i.i ] + %rng.sroa.0.3142.i.i.i = phi i64 [ %rng.sroa.0.2153.i.i.i, %invoke.cont22.lr.ph.i.i.i ], [ %add.i.i26.i.i.i, %_ZN4pbrt18ImageChannelValuesD2Ev.exit62.i.i.i ] + %mul.i.i.i.i.i = mul i64 %rng.sroa.0.3142.i.i.i, 6364136223846793005 %add.i.i.i.i.i = add i64 %mul.i.i.i.i.i, %or.i.i.i.i.i.i %mul.i.i24.i.i.i = mul i64 %add.i.i.i.i.i, 6364136223846793005 %add.i.i26.i.i.i = add i64 %mul.i.i24.i.i.i, %or.i.i.i.i.i.i - %conv13.i.i.i = sitofp i32 %du.0147.i.i.i to float + %conv13.i.i.i = sitofp i32 %du.0143.i.i.i to float %conv15.i.i.i = sitofp i32 %28 to float - %29 = insertelement <2 x i64> poison, i64 %rng.sroa.0.3146.i.i.i, i64 0 + %29 = insertelement <2 x i64> poison, i64 %rng.sroa.0.3142.i.i.i, i64 0 %30 = insertelement <2 x i64> %29, i64 %add.i.i.i.i.i, i64 1 %31 = lshr <2 x i64> %30, %32 = lshr <2 x i64> %30, @@ -71593,61 +71589,57 @@ invoke.cont22.i.i.i: ; preds = %_ZN4pbrt18ImageChan %34 = trunc <2 x i64> %33 to <2 x i32> %35 = lshr <2 x i64> %30, %36 = trunc <2 x i64> %35 to <2 x i32> - %37 = lshr <2 x i32> %34, %36 - %38 = sub nsw <2 x i32> zeroinitializer, %36 - %39 = and <2 x i32> %38, - %40 = shl <2 x i32> %34, %39 - %41 = or <2 x i32> %37, %40 - %42 = uitofp <2 x i32> %41 to <2 x float> - %43 = fmul <2 x float> %42, - %44 = fcmp olt <2 x float> %43, - %45 = select <2 x i1> %44, <2 x float> %43, <2 x float> - %46 = insertelement <2 x float> poison, float %conv13.i.i.i, i64 0 - %47 = insertelement <2 x float> %46, float %conv16.i.i.i, i64 1 - %48 = fadd <2 x float> %45, %47 - %49 = insertelement <2 x float> poison, float %conv15.i.i.i, i64 0 - %50 = shufflevector <2 x float> %49, <2 x float> poison, <2 x i32> zeroinitializer - %51 = fdiv <2 x float> %48, %50 - %52 = load ptr, ptr %3, align 8 + %37 = call <2 x i32> @llvm.fshr.v2i32(<2 x i32> %34, <2 x i32> %34, <2 x i32> %36) + %38 = uitofp <2 x i32> %37 to <2 x float> + %39 = fmul <2 x float> %38, + %40 = fcmp olt <2 x float> %39, + %41 = select <2 x i1> %40, <2 x float> %39, <2 x float> + %42 = insertelement <2 x float> poison, float %conv13.i.i.i, i64 0 + %43 = insertelement <2 x float> %42, float %conv16.i.i.i, i64 1 + %44 = fadd <2 x float> %41, %43 + %45 = insertelement <2 x float> poison, float %conv15.i.i.i, i64 0 + %46 = shufflevector <2 x float> %45, <2 x float> poison, <2 x i32> zeroinitializer + %47 = fdiv <2 x float> %44, %46 + %48 = load ptr, ptr %3, align 8 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %pdf.i.i.i.i.i) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %pi.i.i.i.i.i) store i64 0, ptr %pi.i.i.i.i.i, align 8 - %distrib.i.i.i.i.i = getelementptr inbounds %"class.pbrt::GaussianFilter", ptr %52, i64 0, i32 4, i32 2 - %call.i.i4044.i.i.i = invoke <2 x float> @_ZNK4pbrt19PiecewiseConstant2D6SampleENS_6Point2IfEEPfPNS1_IiEE(ptr noundef nonnull align 8 dereferenceable(128) %distrib.i.i.i.i.i, <2 x float> %51, ptr noundef nonnull %pdf.i.i.i.i.i, ptr noundef nonnull %pi.i.i.i.i.i) + %distrib.i.i.i.i.i = getelementptr inbounds %"class.pbrt::GaussianFilter", ptr %48, i64 0, i32 4, i32 2 + %call.i.i3640.i.i.i = invoke <2 x float> @_ZNK4pbrt19PiecewiseConstant2D6SampleENS_6Point2IfEEPfPNS1_IiEE(ptr noundef nonnull align 8 dereferenceable(128) %distrib.i.i.i.i.i, <2 x float> %47, ptr noundef nonnull %pdf.i.i.i.i.i, ptr noundef nonnull %pi.i.i.i.i.i) to label %invoke.cont36.i.i.i unwind label %lpad.loopexit.i.i.i invoke.cont36.i.i.i: ; preds = %invoke.cont22.i.i.i - %f.i.i.i.i.i = getelementptr inbounds %"class.pbrt::GaussianFilter", ptr %52, i64 0, i32 4, i32 1 + %f.i.i.i.i.i = getelementptr inbounds %"class.pbrt::GaussianFilter", ptr %48, i64 0, i32 4, i32 1 %agg.tmp5.sroa.0.0.copyload.i.i.i.i.i = load i64, ptr %pi.i.i.i.i.i, align 8 %p.sroa.0.0.extract.trunc.i.i.i.i.i.i = trunc i64 %agg.tmp5.sroa.0.0.copyload.i.i.i.i.i to i32 %p.sroa.4.0.extract.shift.i.i.i.i.i.i = lshr i64 %agg.tmp5.sroa.0.0.copyload.i.i.i.i.i, 32 %p.sroa.4.0.extract.trunc.i.i.i.i.i.i = trunc i64 %p.sroa.4.0.extract.shift.i.i.i.i.i.i to i32 - %53 = load i32, ptr %f.i.i.i.i.i, align 8 - %sub.i.i.i.i.i.i = sub i32 %p.sroa.0.0.extract.trunc.i.i.i.i.i.i, %53 - %y.i.i.i.i.i.i = getelementptr inbounds %"class.pbrt::GaussianFilter", ptr %52, i64 0, i32 4, i32 1, i32 0, i32 0, i32 0, i32 1 - %54 = load i32, ptr %y.i.i.i.i.i.i, align 4 - %sub6.i.i.i.i.i.i = sub nsw i32 %p.sroa.4.0.extract.trunc.i.i.i.i.i.i, %54 - %values.i.i.i.i.i.i = getelementptr inbounds %"class.pbrt::GaussianFilter", ptr %52, i64 0, i32 4, i32 1, i32 2 - %55 = load ptr, ptr %values.i.i.i.i.i.i, align 8 - %pMax.i.i.i.i.i.i = getelementptr inbounds %"class.pbrt::GaussianFilter", ptr %52, i64 0, i32 4, i32 1, i32 0, i32 1 - %56 = load i32, ptr %pMax.i.i.i.i.i.i, align 8 - %sub13.i.i.i.i.i.i = sub nsw i32 %56, %53 - %mul.i.i.i41.i.i.i = mul nsw i32 %sub13.i.i.i.i.i.i, %sub6.i.i.i.i.i.i - %add.i.i.i42.i.i.i = add nsw i32 %sub.i.i.i.i.i.i, %mul.i.i.i41.i.i.i - %idxprom.i.i.i.i.i.i = sext i32 %add.i.i.i42.i.i.i to i64 - %arrayidx.i.i.i43.i.i.i = getelementptr inbounds float, ptr %55, i64 %idxprom.i.i.i.i.i.i - %57 = load float, ptr %arrayidx.i.i.i43.i.i.i, align 4 - %58 = load float, ptr %pdf.i.i.i.i.i, align 4 - %div.i.i.i.i.i = fdiv float %57, %58 + %49 = load i32, ptr %f.i.i.i.i.i, align 8 + %sub.i.i.i.i.i.i = sub i32 %p.sroa.0.0.extract.trunc.i.i.i.i.i.i, %49 + %y.i.i.i.i.i.i = getelementptr inbounds %"class.pbrt::GaussianFilter", ptr %48, i64 0, i32 4, i32 1, i32 0, i32 0, i32 0, i32 1 + %50 = load i32, ptr %y.i.i.i.i.i.i, align 4 + %sub6.i.i.i.i.i.i = sub nsw i32 %p.sroa.4.0.extract.trunc.i.i.i.i.i.i, %50 + %values.i.i.i.i.i.i = getelementptr inbounds %"class.pbrt::GaussianFilter", ptr %48, i64 0, i32 4, i32 1, i32 2 + %51 = load ptr, ptr %values.i.i.i.i.i.i, align 8 + %pMax.i.i.i.i.i.i = getelementptr inbounds %"class.pbrt::GaussianFilter", ptr %48, i64 0, i32 4, i32 1, i32 0, i32 1 + %52 = load i32, ptr %pMax.i.i.i.i.i.i, align 8 + %sub13.i.i.i.i.i.i = sub nsw i32 %52, %49 + %mul.i.i.i37.i.i.i = mul nsw i32 %sub13.i.i.i.i.i.i, %sub6.i.i.i.i.i.i + %add.i.i.i38.i.i.i = add nsw i32 %sub.i.i.i.i.i.i, %mul.i.i.i37.i.i.i + %idxprom.i.i.i.i.i.i = sext i32 %add.i.i.i38.i.i.i to i64 + %arrayidx.i.i.i39.i.i.i = getelementptr inbounds float, ptr %51, i64 %idxprom.i.i.i.i.i.i + %53 = load float, ptr %arrayidx.i.i.i39.i.i.i, align 4 + %54 = load float, ptr %pdf.i.i.i.i.i, align 4 + %div.i.i.i.i.i = fdiv float %53, %54 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %pdf.i.i.i.i.i) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %pi.i.i.i.i.i) - %fs.sroa.0.0.vec.extract.i.i.i = extractelement <2 x float> %call.i.i4044.i.i.i, i64 0 + %fs.sroa.0.0.vec.extract.i.i.i = extractelement <2 x float> %call.i.i3640.i.i.i, i64 0 %add27.i.i.i = fadd float %add26.i.i.i, %fs.sroa.0.0.vec.extract.i.i.i - %59 = load ptr, ptr %__functor.val, align 8 - %60 = load i32, ptr %59, align 4 - %conv28.i.i.i = sitofp i32 %60 to float + %55 = load ptr, ptr %__functor.val, align 8 + %56 = load i32, ptr %55, align 4 + %conv28.i.i.i = sitofp i32 %56 to float %div29.i.i.i = fdiv float %add27.i.i.i, %conv28.i.i.i - %fs.sroa.0.4.vec.extract.i.i.i = extractelement <2 x float> %call.i.i4044.i.i.i, i64 1 + %fs.sroa.0.4.vec.extract.i.i.i = extractelement <2 x float> %call.i.i3640.i.i.i, i64 1 %add33.i.i.i = fadd float %add31.i.i.i, %fs.sroa.0.4.vec.extract.i.i.i %div35.i.i.i = fdiv float %add33.i.i.i, %conv28.i.i.i %pSquare.sroa.0.0.vec.insert.i.i.i = insertelement <2 x float> poison, float %div29.i.i.i, i64 0 @@ -71663,184 +71655,184 @@ invoke.cont57.i.i.i: ; preds = %invoke.cont39.i.i.i %call45.fca.0.extract.i.i.i = extractvalue { <2 x float>, float } %call45.i.i.i, 0 %call45.fca.1.extract.i.i.i = extractvalue { <2 x float>, float } %call45.i.i.i, 1 %cmp.i.i.i.i.i.i = fcmp olt float %call45.fca.1.extract.i.i.i, -1.000000e+00 - %cmp3.i.i.i46.i.i.i = fcmp ogt float %call45.fca.1.extract.i.i.i, 1.000000e+00 - %conv2.val.i.i.i.i.i.i = select i1 %cmp3.i.i.i46.i.i.i, float 1.000000e+00, float %call45.fca.1.extract.i.i.i + %cmp3.i.i.i42.i.i.i = fcmp ogt float %call45.fca.1.extract.i.i.i, 1.000000e+00 + %conv2.val.i.i.i.i.i.i = select i1 %cmp3.i.i.i42.i.i.i, float 1.000000e+00, float %call45.fca.1.extract.i.i.i %retval.0.i.i.i.i.i.i = select i1 %cmp.i.i.i.i.i.i, float -1.000000e+00, float %conv2.val.i.i.i.i.i.i %call.i.i.i.i.i.i = call noundef float @acosf(float noundef %retval.0.i.i.i.i.i.i) #32 %v.sroa.0.4.vec.extract.i.i.i.i = extractelement <2 x float> %call45.fca.0.extract.i.i.i, i64 1 %v.sroa.0.0.vec.extract.i.i.i.i = extractelement <2 x float> %call45.fca.0.extract.i.i.i, i64 0 - %call.i.i47.i.i.i = call noundef float @atan2f(float noundef %v.sroa.0.4.vec.extract.i.i.i.i, float noundef %v.sroa.0.0.vec.extract.i.i.i.i) #32 - %cmp.i.i.i.i = fcmp olt float %call.i.i47.i.i.i, 0.000000e+00 - %add.i.i.i.i = fadd float %call.i.i47.i.i.i, 0x401921FB60000000 - %cond.i.i.i.i = select i1 %cmp.i.i.i.i, float %add.i.i.i.i, float %call.i.i47.i.i.i - %61 = insertelement <2 x float> poison, float %cond.i.i.i.i, i64 0 - %62 = insertelement <2 x float> %61, float %call.i.i.i.i.i.i, i64 1 - %63 = fdiv <2 x float> %62, - %64 = load ptr, ptr %0, align 8 - %65 = load ptr, ptr %4, align 8 - %agg.tmp59.sroa.0.0.copyload.i.i.i = load i64, ptr %65, align 4 - invoke void @_ZNK4pbrt5Image6BilerpENS_6Point2IfEENS_10WrapMode2DE(ptr nonnull sret(%"struct.pbrt::ImageChannelValues") align 8 %values.i.i.i, ptr noundef nonnull align 8 dereferenceable(152) %64, <2 x float> %63, i64 %agg.tmp59.sroa.0.0.copyload.i.i.i) + %call.i.i43.i.i.i = call noundef float @atan2f(float noundef %v.sroa.0.4.vec.extract.i.i.i.i, float noundef %v.sroa.0.0.vec.extract.i.i.i.i) #32 + %cmp.i.i.i.i = fcmp olt float %call.i.i43.i.i.i, 0.000000e+00 + %add.i.i.i.i = fadd float %call.i.i43.i.i.i, 0x401921FB60000000 + %cond.i.i.i.i = select i1 %cmp.i.i.i.i, float %add.i.i.i.i, float %call.i.i43.i.i.i + %57 = insertelement <2 x float> poison, float %cond.i.i.i.i, i64 0 + %58 = insertelement <2 x float> %57, float %call.i.i.i.i.i.i, i64 1 + %59 = fdiv <2 x float> %58, + %60 = load ptr, ptr %0, align 8 + %61 = load ptr, ptr %4, align 8 + %agg.tmp59.sroa.0.0.copyload.i.i.i = load i64, ptr %61, align 4 + invoke void @_ZNK4pbrt5Image6BilerpENS_6Point2IfEENS_10WrapMode2DE(ptr nonnull sret(%"struct.pbrt::ImageChannelValues") align 8 %values.i.i.i, ptr noundef nonnull align 8 dereferenceable(152) %60, <2 x float> %59, i64 %agg.tmp59.sroa.0.0.copyload.i.i.i) to label %for.cond64.preheader.i.i.i unwind label %lpad.loopexit.i.i.i for.cond64.preheader.i.i.i: ; preds = %invoke.cont57.i.i.i - %66 = load i64, ptr %nStored.i.i.i.i, align 8 - %cmp66143.not.i.i.i = icmp eq i64 %66, 0 - br i1 %cmp66143.not.i.i.i, label %for.end.i.i.i, label %for.body67.i.i.i + %62 = load i64, ptr %nStored.i.i.i.i, align 8 + %cmp66139.not.i.i.i = icmp eq i64 %62, 0 + br i1 %cmp66139.not.i.i.i, label %for.end.i.i.i, label %for.body67.i.i.i for.body67.i.i.i: ; preds = %for.cond64.preheader.i.i.i, %for.body67.i.i.i - %i.0144.i.i.i = phi i64 [ %inc.i.i.i, %for.body67.i.i.i ], [ 0, %for.cond64.preheader.i.i.i ] - %67 = load ptr, ptr %ptr.i.i49.i.i.i, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %67, null - %cond.i.i.i.i.i = select i1 %tobool.not.i.i.i.i.i, ptr %5, ptr %67 - %arrayidx.i.i.i.i = getelementptr inbounds float, ptr %cond.i.i.i.i.i, i64 %i.0144.i.i.i - %68 = load float, ptr %arrayidx.i.i.i.i, align 4 - %mul.i.i.i = fmul float %div.i.i.i.i.i, %68 - %69 = load ptr, ptr %ptr.i.i.i.i.i, align 8 - %tobool.not.i.i51.i.i.i = icmp eq ptr %69, null - %cond.i.i52.i.i.i = select i1 %tobool.not.i.i51.i.i.i, ptr %1, ptr %69 - %arrayidx.i53.i.i.i = getelementptr inbounds float, ptr %cond.i.i52.i.i.i, i64 %i.0144.i.i.i - %70 = load float, ptr %arrayidx.i53.i.i.i, align 4 - %add70.i.i.i = fadd float %mul.i.i.i, %70 - store float %add70.i.i.i, ptr %arrayidx.i53.i.i.i, align 4 - %inc.i.i.i = add nuw i64 %i.0144.i.i.i, 1 - %71 = load i64, ptr %nStored.i.i.i.i, align 8 - %cmp66.i.i.i = icmp ult i64 %inc.i.i.i, %71 + %i.0140.i.i.i = phi i64 [ %inc.i.i.i, %for.body67.i.i.i ], [ 0, %for.cond64.preheader.i.i.i ] + %63 = load ptr, ptr %ptr.i.i45.i.i.i, align 8 + %tobool.not.i.i.i.i.i = icmp eq ptr %63, null + %cond.i.i.i.i.i = select i1 %tobool.not.i.i.i.i.i, ptr %5, ptr %63 + %arrayidx.i.i.i.i = getelementptr inbounds float, ptr %cond.i.i.i.i.i, i64 %i.0140.i.i.i + %64 = load float, ptr %arrayidx.i.i.i.i, align 4 + %mul.i.i.i = fmul float %div.i.i.i.i.i, %64 + %65 = load ptr, ptr %ptr.i.i.i.i.i, align 8 + %tobool.not.i.i47.i.i.i = icmp eq ptr %65, null + %cond.i.i48.i.i.i = select i1 %tobool.not.i.i47.i.i.i, ptr %1, ptr %65 + %arrayidx.i49.i.i.i = getelementptr inbounds float, ptr %cond.i.i48.i.i.i, i64 %i.0140.i.i.i + %66 = load float, ptr %arrayidx.i49.i.i.i, align 4 + %add70.i.i.i = fadd float %mul.i.i.i, %66 + store float %add70.i.i.i, ptr %arrayidx.i49.i.i.i, align 4 + %inc.i.i.i = add nuw i64 %i.0140.i.i.i, 1 + %67 = load i64, ptr %nStored.i.i.i.i, align 8 + %cmp66.i.i.i = icmp ult i64 %inc.i.i.i, %67 br i1 %cmp66.i.i.i, label %for.body67.i.i.i, label %for.end.i.i.i, !llvm.loop !369 lpad.loopexit.i.i.i: ; preds = %invoke.cont57.i.i.i, %invoke.cont39.i.i.i, %invoke.cont36.i.i.i, %invoke.cont22.i.i.i - %lpad.loopexit93.i.i.i = landingpad { ptr, i32 } + %lpad.loopexit89.i.i.i = landingpad { ptr, i32 } cleanup br label %lpad.i.i.i lpad.loopexit.split-lp.i.i.i: ; preds = %invoke.cont94.i.i.i - %lpad.loopexit.split-lp94.i.i.i = landingpad { ptr, i32 } + %lpad.loopexit.split-lp90.i.i.i = landingpad { ptr, i32 } cleanup br label %lpad.i.i.i lpad.i.i.i: ; preds = %lpad.loopexit.split-lp.i.i.i, %lpad.loopexit.i.i.i - %lpad.phi.i.i.i = phi { ptr, i32 } [ %lpad.loopexit93.i.i.i, %lpad.loopexit.i.i.i ], [ %lpad.loopexit.split-lp94.i.i.i, %lpad.loopexit.split-lp.i.i.i ] + %lpad.phi.i.i.i = phi { ptr, i32 } [ %lpad.loopexit89.i.i.i, %lpad.loopexit.i.i.i ], [ %lpad.loopexit.split-lp90.i.i.i, %lpad.loopexit.split-lp.i.i.i ] store i64 0, ptr %nStored.i.i21.i.i.i, align 8 - %72 = load ptr, ptr %ptr.i.i.i.i.i, align 8 - %tobool.not.i.i.i.i.i.i.i.i = icmp eq ptr %72, null + %68 = load ptr, ptr %ptr.i.i.i.i.i, align 8 + %tobool.not.i.i.i.i.i.i.i.i = icmp eq ptr %68, null br i1 %tobool.not.i.i.i.i.i.i.i.i, label %_ZN4pbrt18ImageChannelValuesD2Ev.exit.i.i.i, label %if.end.i.i.i.i.i.i.i.i if.end.i.i.i.i.i.i.i.i: ; preds = %lpad.i.i.i - %73 = load i64, ptr %nAlloc.i.i.i.i.i, align 8 - %mul.i.i.i56.i.i.i = shl i64 %73, 2 - %74 = load ptr, ptr %sumSamples.i.i.i, align 8 - %vtable.i.i.i.i.i.i.i.i = load ptr, ptr %74, align 8 + %69 = load i64, ptr %nAlloc.i.i.i.i.i, align 8 + %mul.i.i.i52.i.i.i = shl i64 %69, 2 + %70 = load ptr, ptr %sumSamples.i.i.i, align 8 + %vtable.i.i.i.i.i.i.i.i = load ptr, ptr %70, align 8 %vfn.i.i.i.i.i.i.i.i = getelementptr inbounds ptr, ptr %vtable.i.i.i.i.i.i.i.i, i64 3 - %75 = load ptr, ptr %vfn.i.i.i.i.i.i.i.i, align 8 - invoke void %75(ptr noundef nonnull align 8 dereferenceable(8) %74, ptr noundef nonnull %72, i64 noundef %mul.i.i.i56.i.i.i, i64 noundef 4) + %71 = load ptr, ptr %vfn.i.i.i.i.i.i.i.i, align 8 + invoke void %71(ptr noundef nonnull align 8 dereferenceable(8) %70, ptr noundef nonnull %68, i64 noundef %mul.i.i.i52.i.i.i, i64 noundef 4) to label %_ZN4pbrt18ImageChannelValuesD2Ev.exit.i.i.i unwind label %terminate.lpad.i.i.i.i.i terminate.lpad.i.i.i.i.i: ; preds = %if.end.i.i.i.i.i.i.i.i - %76 = landingpad { ptr, i32 } + %72 = landingpad { ptr, i32 } catch ptr null - %77 = extractvalue { ptr, i32 } %76, 0 - call void @__clang_call_terminate(ptr %77) #34 + %73 = extractvalue { ptr, i32 } %72, 0 + call void @__clang_call_terminate(ptr %73) #34 unreachable _ZN4pbrt18ImageChannelValuesD2Ev.exit.i.i.i: ; preds = %if.end.i.i.i.i.i.i.i.i, %lpad.i.i.i resume { ptr, i32 } %lpad.phi.i.i.i for.end.i.i.i: ; preds = %for.body67.i.i.i, %for.cond64.preheader.i.i.i - %add72.i.i.i = fadd float %sumWeight.1148.i.i.i, %div.i.i.i.i.i + %add72.i.i.i = fadd float %sumWeight.1144.i.i.i, %div.i.i.i.i.i store i64 0, ptr %nStored.i.i.i.i, align 8 - %78 = load ptr, ptr %ptr.i.i49.i.i.i, align 8 - %tobool.not.i.i.i.i.i59.i.i.i = icmp eq ptr %78, null - br i1 %tobool.not.i.i.i.i.i59.i.i.i, label %_ZN4pbrt18ImageChannelValuesD2Ev.exit66.i.i.i, label %if.end.i.i.i.i.i60.i.i.i - -if.end.i.i.i.i.i60.i.i.i: ; preds = %for.end.i.i.i - %79 = load i64, ptr %nAlloc.i.i61.i.i.i, align 8 - %mul.i.i.i62.i.i.i = shl i64 %79, 2 - %80 = load ptr, ptr %values.i.i.i, align 8 - %vtable.i.i.i.i.i63.i.i.i = load ptr, ptr %80, align 8 - %vfn.i.i.i.i.i64.i.i.i = getelementptr inbounds ptr, ptr %vtable.i.i.i.i.i63.i.i.i, i64 3 - %81 = load ptr, ptr %vfn.i.i.i.i.i64.i.i.i, align 8 - invoke void %81(ptr noundef nonnull align 8 dereferenceable(8) %80, ptr noundef nonnull %78, i64 noundef %mul.i.i.i62.i.i.i, i64 noundef 4) - to label %_ZN4pbrt18ImageChannelValuesD2Ev.exit66.i.i.i unwind label %terminate.lpad.i.i65.i.i.i - -terminate.lpad.i.i65.i.i.i: ; preds = %if.end.i.i.i.i.i60.i.i.i - %82 = landingpad { ptr, i32 } + %74 = load ptr, ptr %ptr.i.i45.i.i.i, align 8 + %tobool.not.i.i.i.i.i55.i.i.i = icmp eq ptr %74, null + br i1 %tobool.not.i.i.i.i.i55.i.i.i, label %_ZN4pbrt18ImageChannelValuesD2Ev.exit62.i.i.i, label %if.end.i.i.i.i.i56.i.i.i + +if.end.i.i.i.i.i56.i.i.i: ; preds = %for.end.i.i.i + %75 = load i64, ptr %nAlloc.i.i57.i.i.i, align 8 + %mul.i.i.i58.i.i.i = shl i64 %75, 2 + %76 = load ptr, ptr %values.i.i.i, align 8 + %vtable.i.i.i.i.i59.i.i.i = load ptr, ptr %76, align 8 + %vfn.i.i.i.i.i60.i.i.i = getelementptr inbounds ptr, ptr %vtable.i.i.i.i.i59.i.i.i, i64 3 + %77 = load ptr, ptr %vfn.i.i.i.i.i60.i.i.i, align 8 + invoke void %77(ptr noundef nonnull align 8 dereferenceable(8) %76, ptr noundef nonnull %74, i64 noundef %mul.i.i.i58.i.i.i, i64 noundef 4) + to label %_ZN4pbrt18ImageChannelValuesD2Ev.exit62.i.i.i unwind label %terminate.lpad.i.i61.i.i.i + +terminate.lpad.i.i61.i.i.i: ; preds = %if.end.i.i.i.i.i56.i.i.i + %78 = landingpad { ptr, i32 } catch ptr null - %83 = extractvalue { ptr, i32 } %82, 0 - call void @__clang_call_terminate(ptr %83) #34 + %79 = extractvalue { ptr, i32 } %78, 0 + call void @__clang_call_terminate(ptr %79) #34 unreachable -_ZN4pbrt18ImageChannelValuesD2Ev.exit66.i.i.i: ; preds = %if.end.i.i.i.i.i60.i.i.i, %for.end.i.i.i - %inc74.i.i.i = add nuw nsw i32 %du.0147.i.i.i, 1 - %84 = load ptr, ptr %2, align 8 - %85 = load i32, ptr %84, align 4 - %cmp11.i.i.i = icmp slt i32 %inc74.i.i.i, %85 +_ZN4pbrt18ImageChannelValuesD2Ev.exit62.i.i.i: ; preds = %if.end.i.i.i.i.i56.i.i.i, %for.end.i.i.i + %inc74.i.i.i = add nuw nsw i32 %du.0143.i.i.i, 1 + %80 = load ptr, ptr %2, align 8 + %81 = load i32, ptr %80, align 4 + %cmp11.i.i.i = icmp slt i32 %inc74.i.i.i, %81 br i1 %cmp11.i.i.i, label %invoke.cont22.i.i.i, label %for.inc76.i.i.i, !llvm.loop !370 -for.inc76.i.i.i: ; preds = %_ZN4pbrt18ImageChannelValuesD2Ev.exit66.i.i.i, %for.cond10.preheader.i.i.i - %86 = phi i32 [ %27, %for.cond10.preheader.i.i.i ], [ %85, %_ZN4pbrt18ImageChannelValuesD2Ev.exit66.i.i.i ] - %rng.sroa.0.3.lcssa.i.i.i = phi i64 [ %rng.sroa.0.2157.i.i.i, %for.cond10.preheader.i.i.i ], [ %add.i.i26.i.i.i, %_ZN4pbrt18ImageChannelValuesD2Ev.exit66.i.i.i ] - %sumWeight.1.lcssa.i.i.i = phi float [ %sumWeight.0159.i.i.i, %for.cond10.preheader.i.i.i ], [ %add72.i.i.i, %_ZN4pbrt18ImageChannelValuesD2Ev.exit66.i.i.i ] - %inc77.i.i.i = add nuw nsw i32 %dv.0158.i.i.i, 1 - %cmp8.i.i.i = icmp slt i32 %inc77.i.i.i, %86 +for.inc76.i.i.i: ; preds = %_ZN4pbrt18ImageChannelValuesD2Ev.exit62.i.i.i, %for.cond10.preheader.i.i.i + %82 = phi i32 [ %27, %for.cond10.preheader.i.i.i ], [ %81, %_ZN4pbrt18ImageChannelValuesD2Ev.exit62.i.i.i ] + %rng.sroa.0.3.lcssa.i.i.i = phi i64 [ %rng.sroa.0.2153.i.i.i, %for.cond10.preheader.i.i.i ], [ %add.i.i26.i.i.i, %_ZN4pbrt18ImageChannelValuesD2Ev.exit62.i.i.i ] + %sumWeight.1.lcssa.i.i.i = phi float [ %sumWeight.0155.i.i.i, %for.cond10.preheader.i.i.i ], [ %add72.i.i.i, %_ZN4pbrt18ImageChannelValuesD2Ev.exit62.i.i.i ] + %inc77.i.i.i = add nuw nsw i32 %dv.0154.i.i.i, 1 + %cmp8.i.i.i = icmp slt i32 %inc77.i.i.i, %82 br i1 %cmp8.i.i.i, label %for.cond10.preheader.i.i.i, label %for.cond80.preheader.loopexit.i.i.i, !llvm.loop !371 for.body83.i.i.i: ; preds = %for.cond80.preheader.i.i.i, %for.body83.i.i.i - %i79.0170.i.i.i = phi i64 [ %inc91.i.i.i, %for.body83.i.i.i ], [ 0, %for.cond80.preheader.i.i.i ] - %87 = load ptr, ptr %ptr.i.i.i.i.i, align 8 - %tobool.not.i.i69.i.i.i = icmp eq ptr %87, null - %cond.i.i70.i.i.i = select i1 %tobool.not.i.i69.i.i.i, ptr %1, ptr %87 - %arrayidx.i71.i.i.i = getelementptr inbounds float, ptr %cond.i.i70.i.i.i, i64 %i79.0170.i.i.i - %88 = load float, ptr %arrayidx.i71.i.i.i, align 4 - %div87.i.i.i = fdiv float %88, %sumWeight.0.lcssa.i.i.i - %cmp.i72.i.i.i = fcmp ogt float %div87.i.i.i, 0.000000e+00 - %.sroa.speculated.i.i.i = select i1 %cmp.i72.i.i.i, float %div87.i.i.i, float 0.000000e+00 - store float %.sroa.speculated.i.i.i, ptr %arrayidx.i71.i.i.i, align 4 - %inc91.i.i.i = add nuw i64 %i79.0170.i.i.i, 1 - %89 = load i64, ptr %nStored.i.i21.i.i.i, align 8 - %cmp82.i.i.i = icmp ult i64 %inc91.i.i.i, %89 + %i79.0166.i.i.i = phi i64 [ %inc91.i.i.i, %for.body83.i.i.i ], [ 0, %for.cond80.preheader.i.i.i ] + %83 = load ptr, ptr %ptr.i.i.i.i.i, align 8 + %tobool.not.i.i65.i.i.i = icmp eq ptr %83, null + %cond.i.i66.i.i.i = select i1 %tobool.not.i.i65.i.i.i, ptr %1, ptr %83 + %arrayidx.i67.i.i.i = getelementptr inbounds float, ptr %cond.i.i66.i.i.i, i64 %i79.0166.i.i.i + %84 = load float, ptr %arrayidx.i67.i.i.i, align 4 + %div87.i.i.i = fdiv float %84, %sumWeight.0.lcssa.i.i.i + %cmp.i68.i.i.i = fcmp ogt float %div87.i.i.i, 0.000000e+00 + %.sroa.speculated.i.i.i = select i1 %cmp.i68.i.i.i, float %div87.i.i.i, float 0.000000e+00 + store float %.sroa.speculated.i.i.i, ptr %arrayidx.i67.i.i.i, align 4 + %inc91.i.i.i = add nuw i64 %i79.0166.i.i.i, 1 + %85 = load i64, ptr %nStored.i.i21.i.i.i, align 8 + %cmp82.i.i.i = icmp ult i64 %inc91.i.i.i, %85 br i1 %cmp82.i.i.i, label %for.body83.i.i.i, label %invoke.cont94.i.i.i, !llvm.loop !372 invoke.cont94.i.i.i: ; preds = %for.body83.i.i.i, %for.cond80.preheader.i.i.i - %90 = load ptr, ptr %6, align 8 + %86 = load ptr, ptr %6, align 8 %agg.tmp93.sroa.0.0.insert.insert.i.i.i = add nuw nsw i64 %indvars.iv.i.i.i, %agg.tmp93.sroa.2.0.insert.ext.i.i.i - invoke void @_ZN4pbrt5Image11SetChannelsENS_6Point2IiEERKNS_18ImageChannelValuesE(ptr noundef nonnull align 8 dereferenceable(152) %90, i64 %agg.tmp93.sroa.0.0.insert.insert.i.i.i, ptr noundef nonnull align 8 dereferenceable(48) %sumSamples.i.i.i) + invoke void @_ZN4pbrt5Image11SetChannelsENS_6Point2IiEERKNS_18ImageChannelValuesE(ptr noundef nonnull align 8 dereferenceable(152) %86, i64 %agg.tmp93.sroa.0.0.insert.insert.i.i.i, ptr noundef nonnull align 8 dereferenceable(48) %sumSamples.i.i.i) to label %invoke.cont96.i.i.i unwind label %lpad.loopexit.split-lp.i.i.i invoke.cont96.i.i.i: ; preds = %invoke.cont94.i.i.i store i64 0, ptr %nStored.i.i21.i.i.i, align 8 - %91 = load ptr, ptr %ptr.i.i.i.i.i, align 8 - %tobool.not.i.i.i.i.i80.i.i.i = icmp eq ptr %91, null - br i1 %tobool.not.i.i.i.i.i80.i.i.i, label %_ZN4pbrt18ImageChannelValuesD2Ev.exit87.i.i.i, label %if.end.i.i.i.i.i81.i.i.i - -if.end.i.i.i.i.i81.i.i.i: ; preds = %invoke.cont96.i.i.i - %92 = load i64, ptr %nAlloc.i.i.i.i.i, align 8 - %mul.i.i.i83.i.i.i = shl i64 %92, 2 - %93 = load ptr, ptr %sumSamples.i.i.i, align 8 - %vtable.i.i.i.i.i84.i.i.i = load ptr, ptr %93, align 8 - %vfn.i.i.i.i.i85.i.i.i = getelementptr inbounds ptr, ptr %vtable.i.i.i.i.i84.i.i.i, i64 3 - %94 = load ptr, ptr %vfn.i.i.i.i.i85.i.i.i, align 8 - invoke void %94(ptr noundef nonnull align 8 dereferenceable(8) %93, ptr noundef nonnull %91, i64 noundef %mul.i.i.i83.i.i.i, i64 noundef 4) - to label %_ZN4pbrt18ImageChannelValuesD2Ev.exit87.i.i.i unwind label %terminate.lpad.i.i86.i.i.i - -terminate.lpad.i.i86.i.i.i: ; preds = %if.end.i.i.i.i.i81.i.i.i - %95 = landingpad { ptr, i32 } + %87 = load ptr, ptr %ptr.i.i.i.i.i, align 8 + %tobool.not.i.i.i.i.i76.i.i.i = icmp eq ptr %87, null + br i1 %tobool.not.i.i.i.i.i76.i.i.i, label %_ZN4pbrt18ImageChannelValuesD2Ev.exit83.i.i.i, label %if.end.i.i.i.i.i77.i.i.i + +if.end.i.i.i.i.i77.i.i.i: ; preds = %invoke.cont96.i.i.i + %88 = load i64, ptr %nAlloc.i.i.i.i.i, align 8 + %mul.i.i.i79.i.i.i = shl i64 %88, 2 + %89 = load ptr, ptr %sumSamples.i.i.i, align 8 + %vtable.i.i.i.i.i80.i.i.i = load ptr, ptr %89, align 8 + %vfn.i.i.i.i.i81.i.i.i = getelementptr inbounds ptr, ptr %vtable.i.i.i.i.i80.i.i.i, i64 3 + %90 = load ptr, ptr %vfn.i.i.i.i.i81.i.i.i, align 8 + invoke void %90(ptr noundef nonnull align 8 dereferenceable(8) %89, ptr noundef nonnull %87, i64 noundef %mul.i.i.i79.i.i.i, i64 noundef 4) + to label %_ZN4pbrt18ImageChannelValuesD2Ev.exit83.i.i.i unwind label %terminate.lpad.i.i82.i.i.i + +terminate.lpad.i.i82.i.i.i: ; preds = %if.end.i.i.i.i.i77.i.i.i + %91 = landingpad { ptr, i32 } catch ptr null - %96 = extractvalue { ptr, i32 } %95, 0 - call void @__clang_call_terminate(ptr %96) #34 + %92 = extractvalue { ptr, i32 } %91, 0 + call void @__clang_call_terminate(ptr %92) #34 unreachable -_ZN4pbrt18ImageChannelValuesD2Ev.exit87.i.i.i: ; preds = %if.end.i.i.i.i.i81.i.i.i, %invoke.cont96.i.i.i +_ZN4pbrt18ImageChannelValuesD2Ev.exit83.i.i.i: ; preds = %if.end.i.i.i.i.i77.i.i.i, %invoke.cont96.i.i.i %indvars.iv.next.i.i.i = add nuw nsw i64 %indvars.iv.i.i.i, 1 - %97 = load ptr, ptr %__functor.val, align 8 - %98 = load i32, ptr %97, align 4 - %99 = sext i32 %98 to i64 - %cmp4.i.i.i = icmp slt i64 %indvars.iv.next.i.i.i, %99 + %93 = load ptr, ptr %__functor.val, align 8 + %94 = load i32, ptr %93, align 4 + %95 = sext i32 %94 to i64 + %cmp4.i.i.i = icmp slt i64 %indvars.iv.next.i.i.i, %95 br i1 %cmp4.i.i.i, label %for.body5.i.i.i, label %for.inc100.i.i.i, !llvm.loop !373 -for.inc100.i.i.i: ; preds = %_ZN4pbrt18ImageChannelValuesD2Ev.exit87.i.i.i, %for.cond3.preheader.i.i.i - %100 = phi i32 [ %10, %for.cond3.preheader.i.i.i ], [ %98, %_ZN4pbrt18ImageChannelValuesD2Ev.exit87.i.i.i ] - %rng.sroa.0.1.lcssa.i.i.i = phi i64 [ %rng.sroa.0.0186.i.i.i, %for.cond3.preheader.i.i.i ], [ %rng.sroa.0.2.lcssa.i.i.i, %_ZN4pbrt18ImageChannelValuesD2Ev.exit87.i.i.i ] - %indvars.iv.next209.i.i.i = add i64 %indvars.iv208.i.i.i, 1 - %exitcond.not.i.i = icmp eq i64 %indvars.iv.next209.i.i.i, %__args1.val +for.inc100.i.i.i: ; preds = %_ZN4pbrt18ImageChannelValuesD2Ev.exit83.i.i.i, %for.cond3.preheader.i.i.i + %96 = phi i32 [ %10, %for.cond3.preheader.i.i.i ], [ %94, %_ZN4pbrt18ImageChannelValuesD2Ev.exit83.i.i.i ] + %rng.sroa.0.1.lcssa.i.i.i = phi i64 [ %rng.sroa.0.0182.i.i.i, %for.cond3.preheader.i.i.i ], [ %rng.sroa.0.2.lcssa.i.i.i, %_ZN4pbrt18ImageChannelValuesD2Ev.exit83.i.i.i ] + %indvars.iv.next205.i.i.i = add i64 %indvars.iv204.i.i.i, 1 + %exitcond.not.i.i = icmp eq i64 %indvars.iv.next205.i.i.i, %__args1.val br i1 %exitcond.not.i.i, label %"_ZSt10__invoke_rIvRZ12makeequiareaSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EEE3$_1JllEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESC_E4typeEOSD_DpOSE_.exit", label %for.cond3.preheader.i.i.i, !llvm.loop !374 "_ZSt10__invoke_rIvRZ12makeequiareaSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EEE3$_1JllEENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESC_E4typeEOSD_DpOSE_.exit": ; preds = %for.inc100.i.i.i, %entry, %for.cond3.preheader.lr.ph.i.i.i @@ -73675,6 +73667,9 @@ declare noundef i32 @putchar(i32 noundef) local_unnamed_addr #4 ; Function Attrs: nofree nounwind declare noundef i32 @puts(ptr nocapture noundef readonly) local_unnamed_addr #4 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.fshr.i32(i32, i32, i32) #28 + ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #29 @@ -73699,6 +73694,9 @@ declare i32 @llvm.smin.i32(i32, i32) #28 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare float @llvm.sqrt.f32(float) #28 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare <2 x i32> @llvm.fshr.v2i32(<2 x i32>, <2 x i32>, <2 x i32>) #28 + attributes #0 = { uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #1 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #2 = { mustprogress uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } diff --git a/bench/pbrt-v4/optimized/interaction.cpp.ll b/bench/pbrt-v4/optimized/interaction.cpp.ll index e295ba3f401..e9bb381d820 100644 --- a/bench/pbrt-v4/optimized/interaction.cpp.ll +++ b/bench/pbrt-v4/optimized/interaction.cpp.ll @@ -6139,11 +6139,7 @@ sw.bb1: ; preds = %entry %conv.i.i.i.i = trunc i64 %shr3.i.i.i.i to i32 %shr4.i.i.i.i = lshr i64 %0, 59 %conv5.i.i.i.i = trunc i64 %shr4.i.i.i.i to i32 - %shr6.i.i.i.i = lshr i32 %conv.i.i.i.i, %conv5.i.i.i.i - %add7.i.i.i.i = sub nsw i32 0, %conv5.i.i.i.i - %and.i.i.i.i = and i32 %add7.i.i.i.i, 31 - %shl.i.i.i.i = shl i32 %conv.i.i.i.i, %and.i.i.i.i - %or.i.i.i.i = or i32 %shr6.i.i.i.i, %shl.i.i.i.i + %or.i.i.i.i = tail call noundef i32 @llvm.fshr.i32(i32 %conv.i.i.i.i, i32 %conv.i.i.i.i, i32 %conv5.i.i.i.i) %conv.i.i.i = uitofp i32 %or.i.i.i.i to float %mul.i.i.i = fmul float %conv.i.i.i, 0x3DF0000000000000 %cmp.i.i.i.i = fcmp olt float %mul.i.i.i, 0x3FEFFFFFE0000000 @@ -6655,11 +6651,7 @@ cond.true: ; preds = %_ZN4pbrt18Permutati %conv.i.i = trunc i64 %shr3.i.i to i32 %shr4.i.i = lshr i64 %8, 59 %conv5.i.i = trunc i64 %shr4.i.i to i32 - %shr6.i.i = lshr i32 %conv.i.i, %conv5.i.i - %add7.i.i = sub nsw i32 0, %conv5.i.i - %and.i.i = and i32 %add7.i.i, 31 - %shl.i.i = shl i32 %conv.i.i, %and.i.i - %or.i.i = or i32 %shr6.i.i, %shl.i.i + %or.i.i = tail call noundef i32 @llvm.fshr.i32(i32 %conv.i.i, i32 %conv.i.i, i32 %conv5.i.i) %conv.i = uitofp i32 %or.i.i to float %mul.i2 = fmul float %conv.i, 0x3DF0000000000000 %cmp.i.i = fcmp olt float %mul.i2, 0x3FEFFFFFE0000000 @@ -7483,7 +7475,7 @@ for.body.lr.ph.i: ; preds = %entry %3 = load i32, ptr %dimension.i, align 8 %mul10.i = mul i32 %3, 1431655765 %conv11.i = zext i32 %mul10.i to i64 - %4 = zext i32 %1 to i64 + %4 = zext nneg i32 %1 to i64 %5 = zext nneg i32 %and.i to i64 br label %for.body.i @@ -7792,15 +7784,11 @@ sw.bb1: ; preds = %entry %7 = trunc <2 x i64> %6 to <2 x i32> %8 = lshr <2 x i64> %3, %9 = trunc <2 x i64> %8 to <2 x i32> - %10 = lshr <2 x i32> %7, %9 - %11 = sub nsw <2 x i32> zeroinitializer, %9 - %12 = and <2 x i32> %11, - %13 = shl <2 x i32> %7, %12 - %14 = or <2 x i32> %10, %13 - %15 = uitofp <2 x i32> %14 to <2 x float> - %16 = fmul <2 x float> %15, - %17 = fcmp olt <2 x float> %16, - %18 = select <2 x i1> %17, <2 x float> %16, <2 x float> + %10 = tail call <2 x i32> @llvm.fshr.v2i32(<2 x i32> %7, <2 x i32> %7, <2 x i32> %9) + %11 = uitofp <2 x i32> %10 to <2 x float> + %12 = fmul <2 x float> %11, + %13 = fcmp olt <2 x float> %12, + %14 = select <2 x i1> %13, <2 x float> %12, <2 x float> br label %return sw.bb4: ; preds = %entry @@ -7809,9 +7797,9 @@ sw.bb4: ; preds = %entry sw.bb7: ; preds = %entry %dimension.i.i = getelementptr inbounds %"class.pbrt::HaltonSampler", ptr %ptr, i64 0, i32 7 - %19 = load i32, ptr %dimension.i.i, align 8 - %cmp.i.i = icmp sgt i32 %19, 998 - %spec.select.i.i = select i1 %cmp.i.i, i32 2, i32 %19 + %15 = load i32, ptr %dimension.i.i, align 8 + %cmp.i.i = icmp sgt i32 %15, 998 + %spec.select.i.i = select i1 %cmp.i.i, i32 2, i32 %15 %add5.i.i = add nsw i32 %spec.select.i.i, 2 store i32 %add5.i.i, ptr %dimension.i.i, align 8 %call.i.i = tail call noundef float @_ZNK4pbrt13HaltonSampler15SampleDimensionEi(ptr noundef nonnull align 8 dereferenceable(52) %ptr, i32 noundef %spec.select.i.i) @@ -7827,8 +7815,8 @@ sw.bb10: ; preds = %entry sw.bb13: ; preds = %entry %dimension.i.i22 = getelementptr inbounds %"class.pbrt::SobolSampler", ptr %ptr, i64 0, i32 5 - %20 = load i32, ptr %dimension.i.i22, align 8 - %cmp.i.i23 = icmp sgt i32 %20, 1022 + %16 = load i32, ptr %dimension.i.i22, align 8 + %cmp.i.i23 = icmp sgt i32 %16, 1022 br i1 %cmp.i.i23, label %if.then.i.i, label %_ZZN4pbrt7Sampler5Get2DEvENKUlT_E_clIPNS_12SobolSamplerEEEDaS1_.exit if.then.i.i: ; preds = %sw.bb13 @@ -7836,15 +7824,15 @@ if.then.i.i: ; preds = %sw.bb13 br label %_ZZN4pbrt7Sampler5Get2DEvENKUlT_E_clIPNS_12SobolSamplerEEEDaS1_.exit _ZZN4pbrt7Sampler5Get2DEvENKUlT_E_clIPNS_12SobolSamplerEEEDaS1_.exit: ; preds = %sw.bb13, %if.then.i.i - %21 = phi i32 [ 2, %if.then.i.i ], [ %20, %sw.bb13 ] - %call.i.i24 = tail call noundef float @_ZNK4pbrt12SobolSampler15SampleDimensionEi(ptr noundef nonnull align 8 dereferenceable(40) %ptr, i32 noundef %21) - %22 = load i32, ptr %dimension.i.i22, align 8 - %add5.i.i25 = add nsw i32 %22, 1 + %17 = phi i32 [ 2, %if.then.i.i ], [ %16, %sw.bb13 ] + %call.i.i24 = tail call noundef float @_ZNK4pbrt12SobolSampler15SampleDimensionEi(ptr noundef nonnull align 8 dereferenceable(40) %ptr, i32 noundef %17) + %18 = load i32, ptr %dimension.i.i22, align 8 + %add5.i.i25 = add nsw i32 %18, 1 %call6.i.i = tail call noundef float @_ZNK4pbrt12SobolSampler15SampleDimensionEi(ptr noundef nonnull align 8 dereferenceable(40) %ptr, i32 noundef %add5.i.i25) %retval.sroa.0.0.vec.insert.i.i26 = insertelement <2 x float> poison, float %call.i.i24, i64 0 %retval.sroa.0.4.vec.insert.i.i27 = insertelement <2 x float> %retval.sroa.0.0.vec.insert.i.i26, float %call6.i.i, i64 1 - %23 = load i32, ptr %dimension.i.i22, align 8 - %add8.i.i = add nsw i32 %23, 2 + %19 = load i32, ptr %dimension.i.i22, align 8 + %add8.i.i = add nsw i32 %19, 2 store i32 %add8.i.i, ptr %dimension.i.i22, align 8 br label %return @@ -7858,33 +7846,33 @@ sw.bb19: ; preds = %entry sw.default: ; preds = %entry %streamIndex.i.i.i.i.i = getelementptr inbounds %"class.pbrt::MLTSampler", ptr %ptr, i64 0, i32 9 - %24 = load i32, ptr %streamIndex.i.i.i.i.i, align 8 + %20 = load i32, ptr %streamIndex.i.i.i.i.i, align 8 %streamCount.i.i.i.i.i = getelementptr inbounds %"class.pbrt::MLTSampler", ptr %ptr, i64 0, i32 4 - %25 = load i32, ptr %streamCount.i.i.i.i.i, align 8 + %21 = load i32, ptr %streamCount.i.i.i.i.i, align 8 %sampleIndex.i.i.i.i.i = getelementptr inbounds %"class.pbrt::MLTSampler", ptr %ptr, i64 0, i32 10 - %26 = load i32, ptr %sampleIndex.i.i.i.i.i, align 4 - %inc.i.i.i.i.i = add nsw i32 %26, 1 + %22 = load i32, ptr %sampleIndex.i.i.i.i.i, align 4 + %inc.i.i.i.i.i = add nsw i32 %22, 1 store i32 %inc.i.i.i.i.i, ptr %sampleIndex.i.i.i.i.i, align 4 - %mul.i.i.i.i.i = mul nsw i32 %26, %25 - %add.i.i.i.i.i = add nsw i32 %mul.i.i.i.i.i, %24 + %mul.i.i.i.i.i = mul nsw i32 %22, %21 + %add.i.i.i.i.i = add nsw i32 %mul.i.i.i.i.i, %20 %u.i.i.i.i = getelementptr inbounds %"class.pbrt::DebugMLTSampler", ptr %ptr, i64 0, i32 1 %conv.i.i.i.i30 = sext i32 %add.i.i.i.i.i to i64 - %27 = load ptr, ptr %u.i.i.i.i, align 8 - %add.ptr.i.i.i.i.i = getelementptr inbounds float, ptr %27, i64 %conv.i.i.i.i30 - %28 = load float, ptr %add.ptr.i.i.i.i.i, align 4 - %inc.i.i4.i.i.i = add nsw i32 %26, 2 + %23 = load ptr, ptr %u.i.i.i.i, align 8 + %add.ptr.i.i.i.i.i = getelementptr inbounds float, ptr %23, i64 %conv.i.i.i.i30 + %24 = load float, ptr %add.ptr.i.i.i.i.i, align 4 + %inc.i.i4.i.i.i = add nsw i32 %22, 2 store i32 %inc.i.i4.i.i.i, ptr %sampleIndex.i.i.i.i.i, align 4 - %mul.i.i5.i.i.i = mul nsw i32 %inc.i.i.i.i.i, %25 - %add.i.i6.i.i.i = add nsw i32 %mul.i.i5.i.i.i, %24 + %mul.i.i5.i.i.i = mul nsw i32 %inc.i.i.i.i.i, %21 + %add.i.i6.i.i.i = add nsw i32 %mul.i.i5.i.i.i, %20 %conv.i8.i.i.i = sext i32 %add.i.i6.i.i.i to i64 - %add.ptr.i.i9.i.i.i = getelementptr inbounds float, ptr %27, i64 %conv.i8.i.i.i - %29 = load float, ptr %add.ptr.i.i9.i.i.i, align 4 - %retval.sroa.0.0.vec.insert.i.i.i = insertelement <2 x float> poison, float %28, i64 0 - %retval.sroa.0.4.vec.insert.i.i.i = insertelement <2 x float> %retval.sroa.0.0.vec.insert.i.i.i, float %29, i64 1 + %add.ptr.i.i9.i.i.i = getelementptr inbounds float, ptr %23, i64 %conv.i8.i.i.i + %25 = load float, ptr %add.ptr.i.i9.i.i.i, align 4 + %retval.sroa.0.0.vec.insert.i.i.i = insertelement <2 x float> poison, float %24, i64 0 + %retval.sroa.0.4.vec.insert.i.i.i = insertelement <2 x float> %retval.sroa.0.0.vec.insert.i.i.i, float %25, i64 1 br label %return return: ; preds = %sw.default, %sw.bb19, %sw.bb16, %_ZZN4pbrt7Sampler5Get2DEvENKUlT_E_clIPNS_12SobolSamplerEEEDaS1_.exit, %sw.bb10, %sw.bb7, %sw.bb4, %sw.bb1, %sw.bb - %retval.sroa.0.0 = phi <2 x float> [ %retval.sroa.0.4.vec.insert.i.i.i, %sw.default ], [ %call.i29, %sw.bb19 ], [ %call.i28, %sw.bb16 ], [ %retval.sroa.0.4.vec.insert.i.i27, %_ZZN4pbrt7Sampler5Get2DEvENKUlT_E_clIPNS_12SobolSamplerEEEDaS1_.exit ], [ %call.i21, %sw.bb10 ], [ %retval.sroa.0.4.vec.insert.i.i20, %sw.bb7 ], [ %call.i18, %sw.bb4 ], [ %18, %sw.bb1 ], [ %call.i, %sw.bb ] + %retval.sroa.0.0 = phi <2 x float> [ %retval.sroa.0.4.vec.insert.i.i.i, %sw.default ], [ %call.i29, %sw.bb19 ], [ %call.i28, %sw.bb16 ], [ %retval.sroa.0.4.vec.insert.i.i27, %_ZZN4pbrt7Sampler5Get2DEvENKUlT_E_clIPNS_12SobolSamplerEEEDaS1_.exit ], [ %call.i21, %sw.bb10 ], [ %retval.sroa.0.4.vec.insert.i.i20, %sw.bb7 ], [ %call.i18, %sw.bb4 ], [ %14, %sw.bb1 ], [ %call.i, %sw.bb ] ret <2 x float> %retval.sroa.0.0 } @@ -8178,30 +8166,26 @@ cond.true9: ; preds = %_ZN4pbrt18Permutati %16 = trunc <2 x i64> %15 to <2 x i32> %17 = lshr <2 x i64> %12, %18 = trunc <2 x i64> %17 to <2 x i32> - %19 = lshr <2 x i32> %16, %18 - %20 = sub nsw <2 x i32> zeroinitializer, %18 - %21 = and <2 x i32> %20, - %22 = shl <2 x i32> %16, %21 - %23 = or <2 x i32> %19, %22 - %24 = uitofp <2 x i32> %23 to <2 x float> - %25 = fmul <2 x float> %24, - %26 = fcmp olt <2 x float> %25, - %27 = select <2 x i1> %26, <2 x float> %25, <2 x float> + %19 = tail call <2 x i32> @llvm.fshr.v2i32(<2 x i32> %16, <2 x i32> %16, <2 x i32> %18) + %20 = uitofp <2 x i32> %19 to <2 x float> + %21 = fmul <2 x float> %20, + %22 = fcmp olt <2 x float> %21, + %23 = select <2 x i1> %22, <2 x float> %21, <2 x float> br label %cond.end13 cond.end13: ; preds = %_ZN4pbrt18PermutationElementEjjj.exit, %cond.true9 - %28 = phi <2 x float> [ %27, %cond.true9 ], [ , %_ZN4pbrt18PermutationElementEjjj.exit ] + %24 = phi <2 x float> [ %23, %cond.true9 ], [ , %_ZN4pbrt18PermutationElementEjjj.exit ] %add.i = add i32 %xor39.i, %conv %rem.i = urem i32 %add.i, %mul.i %div = sdiv i32 %rem.i, %4 %rem = srem i32 %rem.i, %4 - %29 = sitofp <2 x i32> %3 to <2 x float> - %30 = insertelement <2 x i32> poison, i32 %rem, i64 0 - %31 = insertelement <2 x i32> %30, i32 %div, i64 1 - %32 = sitofp <2 x i32> %31 to <2 x float> - %33 = fadd <2 x float> %28, %32 - %34 = fdiv <2 x float> %33, %29 - ret <2 x float> %34 + %25 = sitofp <2 x i32> %3 to <2 x float> + %26 = insertelement <2 x i32> poison, i32 %rem, i64 0 + %27 = insertelement <2 x i32> %26, i32 %div, i64 1 + %28 = sitofp <2 x i32> %27 to <2 x float> + %29 = fadd <2 x float> %24, %28 + %30 = fdiv <2 x float> %29, %25 + ret <2 x float> %30 } ; Function Attrs: mustprogress uwtable @@ -8333,7 +8317,7 @@ for.body.lr.ph.i: ; preds = %entry %3 = load i32, ptr %dimension.i, align 8 %mul10.i = mul i32 %3, 1431655765 %conv11.i = zext i32 %mul10.i to i64 - %4 = zext i32 %1 to i64 + %4 = zext nneg i32 %1 to i64 %5 = zext nneg i32 %and.i to i64 br label %for.body.i @@ -18957,6 +18941,9 @@ entry: ret void } +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.fshr.i32(i32, i32, i32) #13 + ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.bitreverse.i32(i32) #13 @@ -18993,6 +18980,9 @@ declare <2 x float> @llvm.floor.v2f32(<2 x float>) #13 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare <2 x float> @llvm.fabs.v2f32(<2 x float>) #13 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare <2 x i32> @llvm.fshr.v2i32(<2 x i32>, <2 x i32>, <2 x i32>) #13 + attributes #0 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #1 = { mustprogress uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #2 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } diff --git a/bench/pbrt-v4/optimized/lightsamplers.cpp.ll b/bench/pbrt-v4/optimized/lightsamplers.cpp.ll index 9d25b06cf90..e4e06e91dd4 100644 --- a/bench/pbrt-v4/optimized/lightsamplers.cpp.ll +++ b/bench/pbrt-v4/optimized/lightsamplers.cpp.ll @@ -1994,7 +1994,7 @@ if.then.i.i.i.i: ; preds = %if.else.i.i _ZNKSt6vectorISt4pairIiN4pbrt11LightBoundsEESaIS3_EE12_M_check_lenEmPKc.exit.i.i.i: ; preds = %if.else.i.i %sub.ptr.div.i.i.i.i.i = sdiv exact i64 %sub.ptr.sub.i.i.i.i.i, 56 %.sroa.speculated.i.i.i.i = call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i.i.i.i, i64 1) - %add.i.i.i.i = add i64 %.sroa.speculated.i.i.i.i, %sub.ptr.div.i.i.i.i.i + %add.i.i.i.i = add nsw i64 %.sroa.speculated.i.i.i.i, %sub.ptr.div.i.i.i.i.i %cmp7.i.i.i.i = icmp ult i64 %add.i.i.i.i, %sub.ptr.div.i.i.i.i.i %36 = call i64 @llvm.umin.i64(i64 %add.i.i.i.i, i64 164703072086692425) %cond.i.i.i.i = select i1 %cmp7.i.i.i.i, i64 164703072086692425, i64 %36 @@ -4743,11 +4743,7 @@ for.body: ; preds = %for.body.lr.ph, %_Z %conv.i.i.i = trunc i64 %shr3.i.i.i to i32 %shr4.i.i.i = lshr i64 %wrs.sroa.0.052, 59 %conv5.i.i.i = trunc i64 %shr4.i.i.i to i32 - %shr6.i.i.i = lshr i32 %conv.i.i.i, %conv5.i.i.i - %add7.i.i.i = sub nsw i32 0, %conv5.i.i.i - %and.i.i.i = and i32 %add7.i.i.i, 31 - %shl.i.i.i = shl i32 %conv.i.i.i, %and.i.i.i - %or.i.i.i = or i32 %shr6.i.i.i, %shl.i.i.i + %or.i.i.i = tail call noundef i32 @llvm.fshr.i32(i32 %conv.i.i.i, i32 %conv.i.i.i, i32 %conv5.i.i.i) %conv.i.i = uitofp i32 %or.i.i.i to float %mul.i.i = fmul float %conv.i.i, 0x3DF0000000000000 %cmp.i.i.i = fcmp olt float %mul.i.i, 0x3FEFFFFFE0000000 @@ -12560,11 +12556,14 @@ entry: ret void } +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.fshr.i32(i32, i32, i32) #16 + ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) -declare void @llvm.experimental.noalias.scope.decl(metadata) #16 +declare void @llvm.experimental.noalias.scope.decl(metadata) #17 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare float @llvm.sqrt.f32(float) #17 +declare float @llvm.sqrt.f32(float) #16 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #18 @@ -12573,22 +12572,22 @@ declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #18 declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #18 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umax.i64(i64, i64) #17 +declare i64 @llvm.umax.i64(i64, i64) #16 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umin.i64(i64, i64) #17 +declare i64 @llvm.umin.i64(i64, i64) #16 ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #19 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smin.i32(i32, i32) #17 +declare i32 @llvm.smin.i32(i32, i32) #16 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare <2 x float> @llvm.copysign.v2f32(<2 x float>, <2 x float>) #17 +declare <2 x float> @llvm.copysign.v2f32(<2 x float>, <2 x float>) #16 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare <2 x float> @llvm.fabs.v2f32(<2 x float>) #17 +declare <2 x float> @llvm.fabs.v2f32(<2 x float>) #16 attributes #0 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #1 = { mustprogress uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } @@ -12606,8 +12605,8 @@ attributes #12 = { nofree nounwind "frame-pointer"="all" "no-trapping-math"="tru attributes #13 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #14 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #15 = { uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } -attributes #16 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } -attributes #17 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #16 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #17 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } attributes #18 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } attributes #19 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } attributes #20 = { nounwind } diff --git a/bench/pbrt-v4/optimized/pspec.cpp.ll b/bench/pbrt-v4/optimized/pspec.cpp.ll index 455054002ff..a4adb9b5470 100644 --- a/bench/pbrt-v4/optimized/pspec.cpp.ll +++ b/bench/pbrt-v4/optimized/pspec.cpp.ll @@ -1146,25 +1146,25 @@ invoke.cont208: ; preds = %invoke.cont205 %log2SamplesPerPixel.i.i = getelementptr inbounds %"class.pbrt::ZSobolSampler", ptr %sampler.i, i64 0, i32 2 %mortonIndex.i.i = getelementptr inbounds %"class.pbrt::ZSobolSampler", ptr %sampler.i, i64 0, i32 4 %86 = load i32, ptr @_ZN4pbrt6PrimesE, align 16 - %conv.i381.i = zext i32 %86 to i64 - %conv2.i384.i = uitofp i32 %86 to float - %div3.i385.i = fdiv float 1.000000e+00, %conv2.i384.i + %conv.i368.i = zext i32 %86 to i64 + %conv2.i371.i = uitofp i32 %86 to float + %div3.i372.i = fdiv float 1.000000e+00, %conv2.i371.i %sub4.i.i = add i32 %86, -1 - %conv5.i386.i = uitofp i32 %sub4.i.i to float - %sub614.i.i = fsub float 1.000000e+00, %conv5.i386.i + %conv5.i373.i = uitofp i32 %sub4.i.i to float + %sub614.i.i = fsub float 1.000000e+00, %conv5.i373.i %cmp15.i.i = fcmp olt float %sub614.i.i, 1.000000e+00 %permutations.i.i.i = getelementptr inbounds %"class.pbrt::DigitPermutation", ptr %perm2.i, i64 0, i32 2 %87 = load i32, ptr getelementptr inbounds ([1000 x i32], ptr @_ZN4pbrt6PrimesE, i64 0, i64 1), align 4 - %conv.i397.i = zext i32 %87 to i64 - %conv2.i400.i = uitofp i32 %87 to float - %div3.i401.i = fdiv float 1.000000e+00, %conv2.i400.i - %sub4.i402.i = add i32 %87, -1 - %conv5.i403.i = uitofp i32 %sub4.i402.i to float - %sub614.i404.i = fsub float 1.000000e+00, %conv5.i403.i - %cmp15.i405.i = fcmp olt float %sub614.i404.i, 1.000000e+00 - %permutations.i.i410.i = getelementptr inbounds %"class.pbrt::DigitPermutation", ptr %perm3.i, i64 0, i32 2 + %conv.i384.i = zext i32 %87 to i64 + %conv2.i387.i = uitofp i32 %87 to float + %div3.i388.i = fdiv float 1.000000e+00, %conv2.i387.i + %sub4.i389.i = add i32 %87, -1 + %conv5.i390.i = uitofp i32 %sub4.i389.i to float + %sub614.i391.i = fsub float 1.000000e+00, %conv5.i390.i + %cmp15.i392.i = fcmp olt float %sub614.i391.i, 1.000000e+00 + %permutations.i.i397.i = getelementptr inbounds %"class.pbrt::DigitPermutation", ptr %perm3.i, i64 0, i32 2 %arrayidx82.i = getelementptr inbounds [2 x float], ptr %s79.i, i64 0, i64 1 - %set.i630.i = getelementptr inbounds %"class.pstd::optional.15", ptr %points, i64 0, i32 1 + %set.i607.i = getelementptr inbounds %"class.pstd::optional.15", ptr %points, i64 0, i32 1 %_M_finish.i.i.i.i.i.i = getelementptr inbounds %"struct.std::_Vector_base, std::allocator>>::_Vector_impl_data", ptr %points, i64 0, i32 1 %_M_end_of_storage.i.i.i.i.i.i = getelementptr inbounds %"struct.std::_Vector_base, std::allocator>>::_Vector_impl_data", ptr %points, i64 0, i32 2 %_M_manager.i.i186 = getelementptr inbounds %"class.std::_Function_base", ptr %agg.tmp228, i64 0, i32 1 @@ -1247,17 +1247,17 @@ for.body.lr.ph.i: ; preds = %invoke.cont.i178.th br label %for.body.i for.body.i: ; preds = %for.inc.i, %for.body.lr.ph.i - %.pre1091.i = phi i32 [ 0, %for.body.lr.ph.i ], [ %inc.i, %for.inc.i ] - %points.sroa.0.11002.i = phi ptr [ %call5.i.i.i.i53.i, %for.body.lr.ph.i ], [ %points.sroa.0.4.i, %for.inc.i ] - %points.sroa.30.11001.i = phi ptr [ %call5.i.i.i.i53.i, %for.body.lr.ph.i ], [ %points.sroa.30.2.i, %for.inc.i ] - %points.sroa.75.11000.i = phi ptr [ %add.ptr21.i.i, %for.body.lr.ph.i ], [ %points.sroa.75.2.i, %for.inc.i ] + %.pre1068.i = phi i32 [ 0, %for.body.lr.ph.i ], [ %inc.i, %for.inc.i ] + %points.sroa.0.1979.i = phi ptr [ %call5.i.i.i.i53.i, %for.body.lr.ph.i ], [ %points.sroa.0.4.i, %for.inc.i ] + %points.sroa.30.1978.i = phi ptr [ %call5.i.i.i.i53.i, %for.body.lr.ph.i ], [ %points.sroa.30.2.i, %for.inc.i ] + %points.sroa.75.1977.i = phi ptr [ %add.ptr21.i.i, %for.body.lr.ph.i ], [ %points.sroa.75.2.i, %for.inc.i ] %94 = load ptr, ptr @stdin, align 8, !noalias !7 %call3.i182 = call i64 @fread(ptr noundef nonnull %s.i, i64 noundef 4, i64 noundef 2, ptr noundef %94), !noalias !7 %cmp4.not.i = icmp eq i64 %call3.i182, 2 br i1 %cmp4.not.i, label %invoke.cont11.i, label %if.then5.i if.then5.i: ; preds = %for.body.i - %cmp6.i = icmp ugt i32 %.pre1091.i, 1 + %cmp6.i = icmp ugt i32 %.pre1068.i, 1 br i1 %cmp6.i, label %if.then7.i, label %cleanup.i if.then7.i: ; preds = %if.then5.i @@ -1268,42 +1268,42 @@ invoke.cont8.i: ; preds = %if.then7.i unreachable lpad.loopexit.i: ; preds = %cond.true.i.i.i.i.i - %lpad.loopexit738.i = landingpad { ptr, i32 } + %lpad.loopexit715.i = landingpad { ptr, i32 } cleanup br label %ehcleanup360.i lpad.loopexit.split-lp.loopexit.i: ; preds = %cond.true.i.i.i.i82.i - %lpad.loopexit741.i = landingpad { ptr, i32 } + %lpad.loopexit718.i = landingpad { ptr, i32 } cleanup br label %ehcleanup360.i lpad.loopexit.split-lp.loopexit.split-lp.loopexit.i: ; preds = %cond.true.i.i.i.i133.i, %for.body78.i - %lpad.loopexit744.i = landingpad { ptr, i32 } + %lpad.loopexit721.i = landingpad { ptr, i32 } cleanup br label %ehcleanup360.i -lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i: ; preds = %cond.true.i.i.i.i245.i - %lpad.loopexit752.i = landingpad { ptr, i32 } +lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i: ; preds = %cond.true.i.i.i.i240.i + %lpad.loopexit729.i = landingpad { ptr, i32 } cleanup br label %ehcleanup360.i -lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i: ; preds = %cond.true.i.i.i.i332.i - %lpad.loopexit756.i = landingpad { ptr, i32 } +lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i: ; preds = %cond.true.i.i.i.i323.i + %lpad.loopexit733.i = landingpad { ptr, i32 } cleanup br label %ehcleanup360.i -lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i: ; preds = %cond.true.i.i.i.i453.i - %lpad.loopexit760.i = landingpad { ptr, i32 } +lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i: ; preds = %cond.true.i.i.i.i440.i + %lpad.loopexit737.i = landingpad { ptr, i32 } cleanup br label %ehcleanup360.i -lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i: ; preds = %cond.true.i.i.i.i537.i - %lpad.loopexit764.i = landingpad { ptr, i32 } +lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i: ; preds = %cond.true.i.i.i.i515.i + %lpad.loopexit741.i = landingpad { ptr, i32 } cleanup br label %ehcleanup360.i lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i: ; preds = %cond.true.i.i.i.i, %invoke.cont340.i, %invoke.cont338.i - %lpad.loopexit771.i = landingpad { ptr, i32 } + %lpad.loopexit748.i = landingpad { ptr, i32 } cleanup br label %ehcleanup360.i @@ -1313,24 +1313,24 @@ lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loo cleanup br label %ehcleanup360.i -lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i.loopexit.split-lp: ; preds = %if.then.i.i184, %if.then7.i, %if.then.i.i.i.i.i, %if.then29.i, %if.then.i.i.i.i101.i, %if.then70.i, %if.then.i.i.i.i152.i, %if.then.i.i.i.i197.i, %if.then.i.i.i.i264.i, %if.then.i.i.i.i351.i, %if.then.i.i.i.i472.i, %if.then.i.i.i.i556.i, %if.then272.invoke.i, %if.then.i.i.i.i610.i, %if.then.i.i.i.i, %if.else46.i - %points.sroa.0.2.ph.ph.ph.ph.ph.ph.ph.ph.ph.ph.i.ph455 = phi ptr [ %points.sroa.30.0.i413424, %if.else46.i ], [ %points.sroa.30.0.i413424, %if.then272.invoke.i ], [ %points.sroa.0.25879.i, %if.then.i.i.i.i ], [ %points.sroa.0.23886.us.i, %if.then.i.i.i.i610.i ], [ %points.sroa.0.19912.i, %if.then.i.i.i.i556.i ], [ %points.sroa.0.17920.i, %if.then.i.i.i.i472.i ], [ %points.sroa.0.15928.i, %if.then.i.i.i.i351.i ], [ %points.sroa.0.13938.i, %if.then.i.i.i.i264.i ], [ %points.sroa.0.11951.us.i, %if.then.i.i.i.i197.i ], [ %points.sroa.0.8973.i, %if.then.i.i.i.i152.i ], [ %points.sroa.0.7989.i, %if.then70.i ], [ %points.sroa.0.6.i, %if.then29.i ], [ %points.sroa.0.5995.i642, %if.then.i.i.i.i101.i ], [ %points.sroa.0.11002.i, %if.then7.i ], [ %points.sroa.0.11002.i, %if.then.i.i.i.i.i ], [ null, %if.then.i.i184 ] +lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i.loopexit.split-lp: ; preds = %if.then.i.i184, %if.then7.i, %if.then.i.i.i.i.i, %if.then29.i, %if.then.i.i.i.i101.i, %if.then70.i, %if.then.i.i.i.i152.i, %if.then.i.i.i.i197.i, %if.then.i.i.i.i259.i, %if.then.i.i.i.i342.i, %if.then.i.i.i.i459.i, %if.then.i.i.i.i534.i, %if.then272.invoke.i, %if.then.i.i.i.i587.i, %if.then.i.i.i.i, %if.else46.i + %points.sroa.0.2.ph.ph.ph.ph.ph.ph.ph.ph.ph.ph.i.ph455 = phi ptr [ %points.sroa.30.0.i413424, %if.else46.i ], [ %points.sroa.30.0.i413424, %if.then272.invoke.i ], [ %points.sroa.0.25856.i, %if.then.i.i.i.i ], [ %points.sroa.0.23863.us.i, %if.then.i.i.i.i587.i ], [ %points.sroa.0.19889.i, %if.then.i.i.i.i534.i ], [ %points.sroa.0.17897.i, %if.then.i.i.i.i459.i ], [ %points.sroa.0.15905.i, %if.then.i.i.i.i342.i ], [ %points.sroa.0.13915.i, %if.then.i.i.i.i259.i ], [ %points.sroa.0.11928.us.i, %if.then.i.i.i.i197.i ], [ %points.sroa.0.8950.i, %if.then.i.i.i.i152.i ], [ %points.sroa.0.7966.i, %if.then70.i ], [ %points.sroa.0.6.i, %if.then29.i ], [ %points.sroa.0.5972.i642, %if.then.i.i.i.i101.i ], [ %points.sroa.0.1979.i, %if.then7.i ], [ %points.sroa.0.1979.i, %if.then.i.i.i.i.i ], [ null, %if.then.i.i184 ] %lpad.loopexit.split-lp457 = landingpad { ptr, i32 } cleanup br label %ehcleanup360.i invoke.cont11.i: ; preds = %for.body.i %95 = load <2 x float>, ptr %s.i, align 8, !noalias !7 - %cmp.not.i.i.i = icmp eq ptr %points.sroa.30.11001.i, %points.sroa.75.11000.i + %cmp.not.i.i.i = icmp eq ptr %points.sroa.30.1978.i, %points.sroa.75.1977.i br i1 %cmp.not.i.i.i, label %if.else.i.i.i, label %if.then.i.i57.i if.then.i.i57.i: ; preds = %invoke.cont11.i - store <2 x float> %95, ptr %points.sroa.30.11001.i, align 4, !noalias !7 + store <2 x float> %95, ptr %points.sroa.30.1978.i, align 4, !noalias !7 br label %for.inc.i if.else.i.i.i: ; preds = %invoke.cont11.i - %sub.ptr.lhs.cast.i.i.i.i.i.i = ptrtoint ptr %points.sroa.30.11001.i to i64 - %sub.ptr.rhs.cast.i.i.i.i.i.i = ptrtoint ptr %points.sroa.0.11002.i to i64 + %sub.ptr.lhs.cast.i.i.i.i.i.i = ptrtoint ptr %points.sroa.30.1978.i to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i = ptrtoint ptr %points.sroa.0.1979.i to i64 %sub.ptr.sub.i.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i, %sub.ptr.rhs.cast.i.i.i.i.i.i %cmp.i.i.i.i.i = icmp eq i64 %sub.ptr.sub.i.i.i.i.i.i, 9223372036854775800 br i1 %cmp.i.i.i.i.i, label %if.then.i.i.i.i.i, label %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i.i @@ -1345,7 +1345,7 @@ if.then.i.i.i.i.i: ; preds = %if.else.i.i.i _ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i.i: ; preds = %if.else.i.i.i %sub.ptr.div.i.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i.i, 3 %.sroa.speculated.i.i.i.i.i = call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i.i.i.i.i, i64 1) - %add.i.i.i.i.i = add i64 %.sroa.speculated.i.i.i.i.i, %sub.ptr.div.i.i.i.i.i.i + %add.i.i.i.i.i = add nsw i64 %.sroa.speculated.i.i.i.i.i, %sub.ptr.div.i.i.i.i.i.i %cmp7.i.i.i.i.i = icmp ult i64 %add.i.i.i.i.i, %sub.ptr.div.i.i.i.i.i.i %96 = call i64 @llvm.umin.i64(i64 %add.i.i.i.i.i, i64 1152921504606846975) %cond.i.i.i.i.i = select i1 %cmp7.i.i.i.i.i, i64 1152921504606846975, i64 %96 @@ -1361,28 +1361,28 @@ _ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i.i: ; pre %cond.i10.i.i.i.i = phi ptr [ null, %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i.i ], [ %call5.i.i.i.i.i.i60.i, %cond.true.i.i.i.i.i ] %add.ptr.i.i.i.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %cond.i10.i.i.i.i, i64 %sub.ptr.div.i.i.i.i.i.i store <2 x float> %95, ptr %add.ptr.i.i.i.i, align 4, !noalias !7 - %cmp.not5.i.i.i.i.i.i.i = icmp eq ptr %points.sroa.0.11002.i, %points.sroa.30.11001.i + %cmp.not5.i.i.i.i.i.i.i = icmp eq ptr %points.sroa.0.1979.i, %points.sroa.30.1978.i br i1 %cmp.not5.i.i.i.i.i.i.i, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i.i, label %for.body.i.i.i.i.i.i.i for.body.i.i.i.i.i.i.i: ; preds = %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i.i, %for.body.i.i.i.i.i.i.i %__cur.07.i.i.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i.i.i, %for.body.i.i.i.i.i.i.i ], [ %cond.i10.i.i.i.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i.i ] - %__first.addr.06.i.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i.i, %for.body.i.i.i.i.i.i.i ], [ %points.sroa.0.11002.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i.i ] + %__first.addr.06.i.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i.i, %for.body.i.i.i.i.i.i.i ], [ %points.sroa.0.1979.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i.i ] call void @llvm.experimental.noalias.scope.decl(metadata !10) call void @llvm.experimental.noalias.scope.decl(metadata !13) %97 = load i64, ptr %__first.addr.06.i.i.i.i.i.i.i, align 4, !alias.scope !13, !noalias !15 store i64 %97, ptr %__cur.07.i.i.i.i.i.i.i, align 4, !alias.scope !10, !noalias !16 %incdec.ptr.i.i.i.i.i.i.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %__first.addr.06.i.i.i.i.i.i.i, i64 1 %incdec.ptr1.i.i.i.i.i.i.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %__cur.07.i.i.i.i.i.i.i, i64 1 - %cmp.not.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i, %points.sroa.30.11001.i + %cmp.not.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i, %points.sroa.30.1978.i br i1 %cmp.not.i.i.i.i.i.i.i, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i.i, label %for.body.i.i.i.i.i.i.i, !llvm.loop !17 _ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i.i: ; preds = %for.body.i.i.i.i.i.i.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i.i %__cur.0.lcssa.i.i.i.i.i.i.i = phi ptr [ %cond.i10.i.i.i.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i.i ], [ %incdec.ptr1.i.i.i.i.i.i.i, %for.body.i.i.i.i.i.i.i ] - %tobool.not.i.i.i.i.i = icmp eq ptr %points.sroa.0.11002.i, null + %tobool.not.i.i.i.i.i = icmp eq ptr %points.sroa.0.1979.i, null br i1 %tobool.not.i.i.i.i.i, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i.i, label %if.then.i20.i.i.i.i if.then.i20.i.i.i.i: ; preds = %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i.i - call void @_ZdlPv(ptr noundef nonnull %points.sroa.0.11002.i) #34, !noalias !7 + call void @_ZdlPv(ptr noundef nonnull %points.sroa.0.1979.i) #34, !noalias !7 br label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i.i _ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i.i: ; preds = %if.then.i20.i.i.i.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i.i @@ -1390,11 +1390,11 @@ _ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17_ br label %for.inc.i for.inc.i: ; preds = %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i.i, %if.then.i.i57.i - %points.sroa.75.2.i = phi ptr [ %add.ptr19.i.i.i.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i.i ], [ %points.sroa.75.11000.i, %if.then.i.i57.i ] - %__cur.0.lcssa.i.i.i.i.i.i.pn.i = phi ptr [ %__cur.0.lcssa.i.i.i.i.i.i.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i.i ], [ %points.sroa.30.11001.i, %if.then.i.i57.i ] - %points.sroa.0.4.i = phi ptr [ %cond.i10.i.i.i.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i.i ], [ %points.sroa.0.11002.i, %if.then.i.i57.i ] + %points.sroa.75.2.i = phi ptr [ %add.ptr19.i.i.i.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i.i ], [ %points.sroa.75.1977.i, %if.then.i.i57.i ] + %__cur.0.lcssa.i.i.i.i.i.i.pn.i = phi ptr [ %__cur.0.lcssa.i.i.i.i.i.i.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i.i ], [ %points.sroa.30.1978.i, %if.then.i.i57.i ] + %points.sroa.0.4.i = phi ptr [ %cond.i10.i.i.i.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i.i ], [ %points.sroa.0.1979.i, %if.then.i.i57.i ] %points.sroa.30.2.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %__cur.0.lcssa.i.i.i.i.i.i.pn.i, i64 1 - %inc.i = add nuw nsw i32 %.pre1091.i, 1 + %inc.i = add nuw nsw i32 %.pre1068.i, 1 store i32 %inc.i, ptr %i.i, align 4, !noalias !7 %98 = load i32, ptr %nPoints.addr.i, align 4, !noalias !7 %cmp.i183 = icmp slt i32 %inc.i, %98 @@ -1422,7 +1422,7 @@ for.body19.lr.ph.i: ; preds = %if.else.i.thread cleanup.i.thread: ; preds = %for.body19.lr.ph.i call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %points, i8 0, i64 32, i1 false), !alias.scope !7 - br label %if.then.i.i.i632.i + br label %if.then.i.i.i609.i do.body.preheader.i: ; preds = %for.inc38.i, %for.cond17.preheader.i %points.sroa.75.3.lcssa.i = phi ptr [ null, %for.cond17.preheader.i ], [ %points.sroa.75.4.i, %for.inc38.i ] @@ -1448,20 +1448,20 @@ invoke.cont30.i: ; preds = %if.then29.i invoke.cont36.i: ; preds = %for.body19.lr.ph.i, %for.body19.i %99 = phi i32 [ %inc39.i, %for.body19.i ], [ 0, %for.body19.lr.ph.i ] - %points.sroa.75.3993.i644 = phi ptr [ %points.sroa.75.4.i, %for.body19.i ], [ %add.ptr21.i.i, %for.body19.lr.ph.i ] - %points.sroa.30.3994.i643 = phi ptr [ %points.sroa.30.4.i, %for.body19.i ], [ %call5.i.i.i.i53.i, %for.body19.lr.ph.i ] - %points.sroa.0.5995.i642 = phi ptr [ %points.sroa.0.6.i, %for.body19.i ], [ %call5.i.i.i.i53.i, %for.body19.lr.ph.i ] + %points.sroa.75.3970.i644 = phi ptr [ %points.sroa.75.4.i, %for.body19.i ], [ %add.ptr21.i.i, %for.body19.lr.ph.i ] + %points.sroa.30.3971.i643 = phi ptr [ %points.sroa.30.4.i, %for.body19.i ], [ %call5.i.i.i.i53.i, %for.body19.lr.ph.i ] + %points.sroa.0.5972.i642 = phi ptr [ %points.sroa.0.6.i, %for.body19.i ], [ %call5.i.i.i.i53.i, %for.body19.lr.ph.i ] %100 = load <2 x float>, ptr %s20.i, align 8, !noalias !7 - %cmp.not.i.i67.i = icmp eq ptr %points.sroa.30.3994.i643, %points.sroa.75.3993.i644 + %cmp.not.i.i67.i = icmp eq ptr %points.sroa.30.3971.i643, %points.sroa.75.3970.i644 br i1 %cmp.not.i.i67.i, label %if.else.i.i70.i, label %if.then.i.i68.i if.then.i.i68.i: ; preds = %invoke.cont36.i - store <2 x float> %100, ptr %points.sroa.30.3994.i643, align 4, !noalias !7 + store <2 x float> %100, ptr %points.sroa.30.3971.i643, align 4, !noalias !7 br label %for.inc38.i if.else.i.i70.i: ; preds = %invoke.cont36.i - %sub.ptr.lhs.cast.i.i.i.i.i71.i = ptrtoint ptr %points.sroa.75.3993.i644 to i64 - %sub.ptr.rhs.cast.i.i.i.i.i72.i = ptrtoint ptr %points.sroa.0.5995.i642 to i64 + %sub.ptr.lhs.cast.i.i.i.i.i71.i = ptrtoint ptr %points.sroa.75.3970.i644 to i64 + %sub.ptr.rhs.cast.i.i.i.i.i72.i = ptrtoint ptr %points.sroa.0.5972.i642 to i64 %sub.ptr.sub.i.i.i.i.i73.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i71.i, %sub.ptr.rhs.cast.i.i.i.i.i72.i %cmp.i.i.i.i74.i = icmp eq i64 %sub.ptr.sub.i.i.i.i.i73.i, 9223372036854775800 br i1 %cmp.i.i.i.i74.i, label %if.then.i.i.i.i101.i, label %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i75.i @@ -1476,7 +1476,7 @@ if.then.i.i.i.i101.i: ; preds = %if.else.i.i70.i _ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i75.i: ; preds = %if.else.i.i70.i %sub.ptr.div.i.i.i.i.i76.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i73.i, 3 %.sroa.speculated.i.i.i.i77.i = call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i.i.i.i76.i, i64 1) - %add.i.i.i.i78.i = add i64 %.sroa.speculated.i.i.i.i77.i, %sub.ptr.div.i.i.i.i.i76.i + %add.i.i.i.i78.i = add nsw i64 %.sroa.speculated.i.i.i.i77.i, %sub.ptr.div.i.i.i.i.i76.i %cmp7.i.i.i.i79.i = icmp ult i64 %add.i.i.i.i78.i, %sub.ptr.div.i.i.i.i.i76.i %101 = call i64 @llvm.umin.i64(i64 %add.i.i.i.i78.i, i64 1152921504606846975) %cond.i.i.i.i80.i = select i1 %cmp7.i.i.i.i79.i, i64 1152921504606846975, i64 %101 @@ -1492,28 +1492,28 @@ _ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i84.i: ; p %cond.i10.i.i.i85.i = phi ptr [ null, %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i75.i ], [ %call5.i.i.i.i.i.i104.i, %cond.true.i.i.i.i82.i ] %add.ptr.i.i.i86.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %cond.i10.i.i.i85.i, i64 %sub.ptr.div.i.i.i.i.i76.i store <2 x float> %100, ptr %add.ptr.i.i.i86.i, align 4, !noalias !7 - %cmp.not5.i.i.i.i.i.i87.i = icmp eq ptr %points.sroa.0.5995.i642, %points.sroa.75.3993.i644 + %cmp.not5.i.i.i.i.i.i87.i = icmp eq ptr %points.sroa.0.5972.i642, %points.sroa.75.3970.i644 br i1 %cmp.not5.i.i.i.i.i.i87.i, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i94.i, label %for.body.i.i.i.i.i.i88.i for.body.i.i.i.i.i.i88.i: ; preds = %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i84.i, %for.body.i.i.i.i.i.i88.i %__cur.07.i.i.i.i.i.i89.i = phi ptr [ %incdec.ptr1.i.i.i.i.i.i92.i, %for.body.i.i.i.i.i.i88.i ], [ %cond.i10.i.i.i85.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i84.i ] - %__first.addr.06.i.i.i.i.i.i90.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i91.i, %for.body.i.i.i.i.i.i88.i ], [ %points.sroa.0.5995.i642, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i84.i ] + %__first.addr.06.i.i.i.i.i.i90.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i91.i, %for.body.i.i.i.i.i.i88.i ], [ %points.sroa.0.5972.i642, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i84.i ] call void @llvm.experimental.noalias.scope.decl(metadata !20) call void @llvm.experimental.noalias.scope.decl(metadata !23) %102 = load i64, ptr %__first.addr.06.i.i.i.i.i.i90.i, align 4, !alias.scope !23, !noalias !25 store i64 %102, ptr %__cur.07.i.i.i.i.i.i89.i, align 4, !alias.scope !20, !noalias !26 %incdec.ptr.i.i.i.i.i.i91.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %__first.addr.06.i.i.i.i.i.i90.i, i64 1 %incdec.ptr1.i.i.i.i.i.i92.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %__cur.07.i.i.i.i.i.i89.i, i64 1 - %cmp.not.i.i.i.i.i.i93.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i91.i, %points.sroa.75.3993.i644 + %cmp.not.i.i.i.i.i.i93.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i91.i, %points.sroa.75.3970.i644 br i1 %cmp.not.i.i.i.i.i.i93.i, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i94.i, label %for.body.i.i.i.i.i.i88.i, !llvm.loop !17 _ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i94.i: ; preds = %for.body.i.i.i.i.i.i88.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i84.i %__cur.0.lcssa.i.i.i.i.i.i95.i = phi ptr [ %cond.i10.i.i.i85.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i84.i ], [ %incdec.ptr1.i.i.i.i.i.i92.i, %for.body.i.i.i.i.i.i88.i ] - %tobool.not.i.i.i.i97.i = icmp eq ptr %points.sroa.0.5995.i642, null + %tobool.not.i.i.i.i97.i = icmp eq ptr %points.sroa.0.5972.i642, null br i1 %tobool.not.i.i.i.i97.i, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i99.i, label %if.then.i20.i.i.i98.i if.then.i20.i.i.i98.i: ; preds = %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i94.i - call void @_ZdlPv(ptr noundef nonnull %points.sroa.0.5995.i642) #34, !noalias !7 + call void @_ZdlPv(ptr noundef nonnull %points.sroa.0.5972.i642) #34, !noalias !7 %.pre.pre = load i32, ptr %i16.i, align 4, !noalias !7 br label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i99.i @@ -1524,9 +1524,9 @@ _ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17_ for.inc38.i: ; preds = %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i99.i, %if.then.i.i68.i %103 = phi i32 [ %.pre, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i99.i ], [ %99, %if.then.i.i68.i ] - %points.sroa.75.4.i = phi ptr [ %add.ptr19.i.i.i100.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i99.i ], [ %points.sroa.75.3993.i644, %if.then.i.i68.i ] - %__cur.0.lcssa.i.i.i.i.i.i95.pn.i = phi ptr [ %__cur.0.lcssa.i.i.i.i.i.i95.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i99.i ], [ %points.sroa.30.3994.i643, %if.then.i.i68.i ] - %points.sroa.0.6.i = phi ptr [ %cond.i10.i.i.i85.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i99.i ], [ %points.sroa.0.5995.i642, %if.then.i.i68.i ] + %points.sroa.75.4.i = phi ptr [ %add.ptr19.i.i.i100.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i99.i ], [ %points.sroa.75.3970.i644, %if.then.i.i68.i ] + %__cur.0.lcssa.i.i.i.i.i.i95.pn.i = phi ptr [ %__cur.0.lcssa.i.i.i.i.i.i95.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i99.i ], [ %points.sroa.30.3971.i643, %if.then.i.i68.i ] + %points.sroa.0.6.i = phi ptr [ %cond.i10.i.i.i85.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i99.i ], [ %points.sroa.0.5972.i642, %if.then.i.i68.i ] %points.sroa.30.4.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %__cur.0.lcssa.i.i.i.i.i.i95.pn.i, i64 1 %inc39.i = add nsw i32 %103, 1 store i32 %inc39.i, ptr %i16.i, align 4, !noalias !7 @@ -1582,13 +1582,13 @@ init.end.i: ; preds = %invoke.cont53.i, %i retry.preheader.i: ; preds = %init.end.i %110 = load i32, ptr @_ZZL15GenerateSamplesNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiE6offset, align 4, !noalias !7 - %conv59982.i = sext i32 %110 to i64 - %sub.ptr.lhs.cast.i983.i = ptrtoint ptr %109 to i64 - %sub.ptr.rhs.cast.i984.i = ptrtoint ptr %108 to i64 - %sub.ptr.sub.i985.i = sub i64 %sub.ptr.lhs.cast.i983.i, %sub.ptr.rhs.cast.i984.i - %sub.ptr.div.i986.i = ashr exact i64 %sub.ptr.sub.i985.i, 5 - %cmp61987.i = icmp eq i64 %sub.ptr.div.i986.i, %conv59982.i - br i1 %cmp61987.i, label %cleanup.i, label %if.end63.lr.ph.i + %conv59959.i = sext i32 %110 to i64 + %sub.ptr.lhs.cast.i960.i = ptrtoint ptr %109 to i64 + %sub.ptr.rhs.cast.i961.i = ptrtoint ptr %108 to i64 + %sub.ptr.sub.i962.i = sub i64 %sub.ptr.lhs.cast.i960.i, %sub.ptr.rhs.cast.i961.i + %sub.ptr.div.i963.i = ashr exact i64 %sub.ptr.sub.i962.i, 5 + %cmp61964.i = icmp eq i64 %sub.ptr.div.i963.i, %conv59959.i + br i1 %cmp61964.i, label %cleanup.i, label %if.end63.lr.ph.i if.end63.lr.ph.i: ; preds = %retry.preheader.i %conv87.i = sext i32 %93 to i64 @@ -1613,10 +1613,10 @@ ehcleanup.i: ; preds = %lpad52.i, %lpad50.i if.end63.i: ; preds = %invoke.cont89.i, %if.end63.lr.ph.i %113 = phi ptr [ %108, %if.end63.lr.ph.i ], [ %123, %invoke.cont89.i ] - %conv59990.i = phi i64 [ %conv59982.i, %if.end63.lr.ph.i ], [ %conv59.i, %invoke.cont89.i ] - %points.sroa.0.7989.i = phi ptr [ %points.sroa.30.0.i413424, %if.end63.lr.ph.i ], [ %points.sroa.0.8973.i, %invoke.cont89.i ] - %points.sroa.75.5988.i = phi ptr [ %points.sroa.75.0.i411426, %if.end63.lr.ph.i ], [ %points.sroa.75.6971.i, %invoke.cont89.i ] - %add.ptr.i109.i = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %113, i64 %conv59990.i + %conv59967.i = phi i64 [ %conv59959.i, %if.end63.lr.ph.i ], [ %conv59.i, %invoke.cont89.i ] + %points.sroa.0.7966.i = phi ptr [ %points.sroa.30.0.i413424, %if.end63.lr.ph.i ], [ %points.sroa.0.8950.i, %invoke.cont89.i ] + %points.sroa.75.5965.i = phi ptr [ %points.sroa.75.0.i411426, %if.end63.lr.ph.i ], [ %points.sroa.75.6948.i, %invoke.cont89.i ] + %add.ptr.i109.i = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %113, i64 %conv59967.i %call66.i = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %add.ptr.i109.i) #29, !noalias !7 %call68.i = call noalias ptr @fopen(ptr noundef %call66.i, ptr noundef nonnull @.str.25), !noalias !7 %tobool69.not.i = icmp eq ptr %call68.i, null @@ -1625,8 +1625,8 @@ if.end63.i: ; preds = %invoke.cont89.i, %i for.cond76.preheader.i: ; preds = %if.end63.i store i32 0, ptr %i75.i, align 4, !noalias !7 %114 = load i32, ptr %nPoints.addr.i, align 4, !noalias !7 - %cmp77970.i = icmp sgt i32 %114, 0 - br i1 %cmp77970.i, label %for.body78.i, label %for.end101.i + %cmp77947.i = icmp sgt i32 %114, 0 + br i1 %cmp77947.i, label %for.body78.i, label %for.end101.i if.then70.i: ; preds = %if.end63.i %115 = load i32, ptr @_ZZL15GenerateSamplesNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiE6offset, align 4, !noalias !7 @@ -1640,9 +1640,9 @@ invoke.cont73.i: ; preds = %if.then70.i unreachable for.body78.i: ; preds = %for.cond76.preheader.i, %for.inc99.i - %points.sroa.0.8973.i = phi ptr [ %points.sroa.0.9.i, %for.inc99.i ], [ %points.sroa.0.7989.i, %for.cond76.preheader.i ] - %points.sroa.30.6972.i = phi ptr [ %points.sroa.30.8.i, %for.inc99.i ], [ %points.sroa.0.7989.i, %for.cond76.preheader.i ] - %points.sroa.75.6971.i = phi ptr [ %points.sroa.75.7.i, %for.inc99.i ], [ %points.sroa.75.5988.i, %for.cond76.preheader.i ] + %points.sroa.0.8950.i = phi ptr [ %points.sroa.0.9.i, %for.inc99.i ], [ %points.sroa.0.7966.i, %for.cond76.preheader.i ] + %points.sroa.30.6949.i = phi ptr [ %points.sroa.30.8.i, %for.inc99.i ], [ %points.sroa.0.7966.i, %for.cond76.preheader.i ] + %points.sroa.75.6948.i = phi ptr [ %points.sroa.75.7.i, %for.inc99.i ], [ %points.sroa.75.5965.i, %for.cond76.preheader.i ] %call84.i = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef nonnull %call68.i, ptr noundef nonnull @.str.21, ptr noundef nonnull %s79.i, ptr noundef nonnull %arrayidx82.i) to label %invoke.cont83.i unwind label %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.i, !noalias !7 @@ -1698,16 +1698,16 @@ invoke.cont89.i: ; preds = %_ZN4pbrt12StringPri invoke.cont97.i: ; preds = %invoke.cont83.i %124 = load <2 x float>, ptr %s79.i, align 8, !noalias !7 - %cmp.not.i.i118.i = icmp eq ptr %points.sroa.30.6972.i, %points.sroa.75.6971.i + %cmp.not.i.i118.i = icmp eq ptr %points.sroa.30.6949.i, %points.sroa.75.6948.i br i1 %cmp.not.i.i118.i, label %if.else.i.i121.i, label %if.then.i.i119.i if.then.i.i119.i: ; preds = %invoke.cont97.i - store <2 x float> %124, ptr %points.sroa.30.6972.i, align 4, !noalias !7 + store <2 x float> %124, ptr %points.sroa.30.6949.i, align 4, !noalias !7 br label %for.inc99.i if.else.i.i121.i: ; preds = %invoke.cont97.i - %sub.ptr.lhs.cast.i.i.i.i.i122.i = ptrtoint ptr %points.sroa.30.6972.i to i64 - %sub.ptr.rhs.cast.i.i.i.i.i123.i = ptrtoint ptr %points.sroa.0.8973.i to i64 + %sub.ptr.lhs.cast.i.i.i.i.i122.i = ptrtoint ptr %points.sroa.30.6949.i to i64 + %sub.ptr.rhs.cast.i.i.i.i.i123.i = ptrtoint ptr %points.sroa.0.8950.i to i64 %sub.ptr.sub.i.i.i.i.i124.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i122.i, %sub.ptr.rhs.cast.i.i.i.i.i123.i %cmp.i.i.i.i125.i = icmp eq i64 %sub.ptr.sub.i.i.i.i.i124.i, 9223372036854775800 br i1 %cmp.i.i.i.i125.i, label %if.then.i.i.i.i152.i, label %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i126.i @@ -1722,7 +1722,7 @@ if.then.i.i.i.i152.i: ; preds = %if.else.i.i121.i _ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i126.i: ; preds = %if.else.i.i121.i %sub.ptr.div.i.i.i.i.i127.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i124.i, 3 %.sroa.speculated.i.i.i.i128.i = call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i.i.i.i127.i, i64 1) - %add.i.i.i.i129.i = add i64 %.sroa.speculated.i.i.i.i128.i, %sub.ptr.div.i.i.i.i.i127.i + %add.i.i.i.i129.i = add nsw i64 %.sroa.speculated.i.i.i.i128.i, %sub.ptr.div.i.i.i.i.i127.i %cmp7.i.i.i.i130.i = icmp ult i64 %add.i.i.i.i129.i, %sub.ptr.div.i.i.i.i.i127.i %125 = call i64 @llvm.umin.i64(i64 %add.i.i.i.i129.i, i64 1152921504606846975) %cond.i.i.i.i131.i = select i1 %cmp7.i.i.i.i130.i, i64 1152921504606846975, i64 %125 @@ -1738,28 +1738,28 @@ _ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i135.i: ; %cond.i10.i.i.i136.i = phi ptr [ null, %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i126.i ], [ %call5.i.i.i.i.i.i155.i, %cond.true.i.i.i.i133.i ] %add.ptr.i.i.i137.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %cond.i10.i.i.i136.i, i64 %sub.ptr.div.i.i.i.i.i127.i store <2 x float> %124, ptr %add.ptr.i.i.i137.i, align 4, !noalias !7 - %cmp.not5.i.i.i.i.i.i138.i = icmp eq ptr %points.sroa.0.8973.i, %points.sroa.30.6972.i + %cmp.not5.i.i.i.i.i.i138.i = icmp eq ptr %points.sroa.0.8950.i, %points.sroa.30.6949.i br i1 %cmp.not5.i.i.i.i.i.i138.i, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i145.i, label %for.body.i.i.i.i.i.i139.i for.body.i.i.i.i.i.i139.i: ; preds = %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i135.i, %for.body.i.i.i.i.i.i139.i %__cur.07.i.i.i.i.i.i140.i = phi ptr [ %incdec.ptr1.i.i.i.i.i.i143.i, %for.body.i.i.i.i.i.i139.i ], [ %cond.i10.i.i.i136.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i135.i ] - %__first.addr.06.i.i.i.i.i.i141.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i142.i, %for.body.i.i.i.i.i.i139.i ], [ %points.sroa.0.8973.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i135.i ] + %__first.addr.06.i.i.i.i.i.i141.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i142.i, %for.body.i.i.i.i.i.i139.i ], [ %points.sroa.0.8950.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i135.i ] call void @llvm.experimental.noalias.scope.decl(metadata !28) call void @llvm.experimental.noalias.scope.decl(metadata !31) %126 = load i64, ptr %__first.addr.06.i.i.i.i.i.i141.i, align 4, !alias.scope !31, !noalias !33 store i64 %126, ptr %__cur.07.i.i.i.i.i.i140.i, align 4, !alias.scope !28, !noalias !34 %incdec.ptr.i.i.i.i.i.i142.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %__first.addr.06.i.i.i.i.i.i141.i, i64 1 %incdec.ptr1.i.i.i.i.i.i143.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %__cur.07.i.i.i.i.i.i140.i, i64 1 - %cmp.not.i.i.i.i.i.i144.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i142.i, %points.sroa.30.6972.i + %cmp.not.i.i.i.i.i.i144.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i142.i, %points.sroa.30.6949.i br i1 %cmp.not.i.i.i.i.i.i144.i, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i145.i, label %for.body.i.i.i.i.i.i139.i, !llvm.loop !17 _ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i145.i: ; preds = %for.body.i.i.i.i.i.i139.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i135.i %__cur.0.lcssa.i.i.i.i.i.i146.i = phi ptr [ %cond.i10.i.i.i136.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i135.i ], [ %incdec.ptr1.i.i.i.i.i.i143.i, %for.body.i.i.i.i.i.i139.i ] - %tobool.not.i.i.i.i148.i = icmp eq ptr %points.sroa.0.8973.i, null + %tobool.not.i.i.i.i148.i = icmp eq ptr %points.sroa.0.8950.i, null br i1 %tobool.not.i.i.i.i148.i, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i150.i, label %if.then.i20.i.i.i149.i if.then.i20.i.i.i149.i: ; preds = %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i145.i - call void @_ZdlPv(ptr noundef nonnull %points.sroa.0.8973.i) #34, !noalias !7 + call void @_ZdlPv(ptr noundef nonnull %points.sroa.0.8950.i) #34, !noalias !7 br label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i150.i _ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i150.i: ; preds = %if.then.i20.i.i.i149.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i145.i @@ -1767,9 +1767,9 @@ _ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17_ br label %for.inc99.i for.inc99.i: ; preds = %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i150.i, %if.then.i.i119.i - %points.sroa.75.7.i = phi ptr [ %add.ptr19.i.i.i151.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i150.i ], [ %points.sroa.75.6971.i, %if.then.i.i119.i ] - %__cur.0.lcssa.i.i.i.i.i.i146.pn.i = phi ptr [ %__cur.0.lcssa.i.i.i.i.i.i146.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i150.i ], [ %points.sroa.30.6972.i, %if.then.i.i119.i ] - %points.sroa.0.9.i = phi ptr [ %cond.i10.i.i.i136.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i150.i ], [ %points.sroa.0.8973.i, %if.then.i.i119.i ] + %points.sroa.75.7.i = phi ptr [ %add.ptr19.i.i.i151.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i150.i ], [ %points.sroa.75.6948.i, %if.then.i.i119.i ] + %__cur.0.lcssa.i.i.i.i.i.i146.pn.i = phi ptr [ %__cur.0.lcssa.i.i.i.i.i.i146.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i150.i ], [ %points.sroa.30.6949.i, %if.then.i.i119.i ] + %points.sroa.0.9.i = phi ptr [ %cond.i10.i.i.i136.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i150.i ], [ %points.sroa.0.8950.i, %if.then.i.i119.i ] %points.sroa.30.8.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %__cur.0.lcssa.i.i.i.i.i.i146.pn.i, i64 1 %127 = load i32, ptr %i75.i, align 4, !noalias !7 %inc100.i = add nsw i32 %127, 1 @@ -1779,9 +1779,9 @@ for.inc99.i: ; preds = %_ZNSt6vectorIN4pbrt br i1 %cmp77.i, label %for.body78.i, label %for.end101.i, !llvm.loop !35 for.end101.i: ; preds = %for.cond76.preheader.i, %for.inc99.i - %points.sroa.75.6.lcssa.i = phi ptr [ %points.sroa.75.7.i, %for.inc99.i ], [ %points.sroa.75.5988.i, %for.cond76.preheader.i ] - %points.sroa.30.6.lcssa.i = phi ptr [ %points.sroa.30.8.i, %for.inc99.i ], [ %points.sroa.0.7989.i, %for.cond76.preheader.i ] - %points.sroa.0.8.lcssa.i = phi ptr [ %points.sroa.0.9.i, %for.inc99.i ], [ %points.sroa.0.7989.i, %for.cond76.preheader.i ] + %points.sroa.75.6.lcssa.i = phi ptr [ %points.sroa.75.7.i, %for.inc99.i ], [ %points.sroa.75.5965.i, %for.cond76.preheader.i ] + %points.sroa.30.6.lcssa.i = phi ptr [ %points.sroa.30.8.i, %for.inc99.i ], [ %points.sroa.0.7966.i, %for.cond76.preheader.i ] + %points.sroa.0.8.lcssa.i = phi ptr [ %points.sroa.0.9.i, %for.inc99.i ], [ %points.sroa.0.7966.i, %for.cond76.preheader.i ] %129 = load i32, ptr @_ZZL15GenerateSamplesNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiE6offset, align 4, !noalias !7 %inc102.i = add nsw i32 %129, 1 store i32 %inc102.i, ptr @_ZZL15GenerateSamplesNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiE6offset, align 4, !noalias !7 @@ -1799,41 +1799,41 @@ if.then108.i: ; preds = %if.else105.i %conv111.i = fptosi double %call.i159.i to i32 %mul.i.i = mul nsw i32 %conv111.i, %conv111.i store i32 %mul.i.i, ptr %nPoints.addr.i, align 4, !noalias !7 - %cmp116956.i = icmp sgt i32 %conv111.i, 0 - br i1 %cmp116956.i, label %for.cond118.preheader.lr.ph.i, label %cleanup.thread.i + %cmp116933.i = icmp sgt i32 %conv111.i, 0 + br i1 %cmp116933.i, label %for.cond118.preheader.lr.ph.i, label %cleanup.thread.i for.cond118.preheader.lr.ph.i: ; preds = %if.then108.i %conv123.i = sitofp i32 %conv111.i to float br label %for.cond118.preheader.us.i for.cond118.preheader.us.i: ; preds = %for.cond118.for.inc132_crit_edge.us.i, %for.cond118.preheader.lr.ph.i - %i114.0960.us.i = phi i32 [ 0, %for.cond118.preheader.lr.ph.i ], [ %inc133.us.i, %for.cond118.for.inc132_crit_edge.us.i ] - %points.sroa.0.10959.us.i = phi ptr [ %points.sroa.30.0.i413424, %for.cond118.preheader.lr.ph.i ], [ %points.sroa.0.12.us.i, %for.cond118.for.inc132_crit_edge.us.i ] - %points.sroa.30.9958.us.i = phi ptr [ %points.sroa.30.0.i413424, %for.cond118.preheader.lr.ph.i ], [ %points.sroa.30.11.us.i, %for.cond118.for.inc132_crit_edge.us.i ] - %points.sroa.75.8957.us.i = phi ptr [ %points.sroa.75.0.i411426, %for.cond118.preheader.lr.ph.i ], [ %points.sroa.75.10.us.i, %for.cond118.for.inc132_crit_edge.us.i ] - %conv122.us.i = sitofp i32 %i114.0960.us.i to float + %i114.0937.us.i = phi i32 [ 0, %for.cond118.preheader.lr.ph.i ], [ %inc133.us.i, %for.cond118.for.inc132_crit_edge.us.i ] + %points.sroa.0.10936.us.i = phi ptr [ %points.sroa.30.0.i413424, %for.cond118.preheader.lr.ph.i ], [ %points.sroa.0.12.us.i, %for.cond118.for.inc132_crit_edge.us.i ] + %points.sroa.30.9935.us.i = phi ptr [ %points.sroa.30.0.i413424, %for.cond118.preheader.lr.ph.i ], [ %points.sroa.30.11.us.i, %for.cond118.for.inc132_crit_edge.us.i ] + %points.sroa.75.8934.us.i = phi ptr [ %points.sroa.75.0.i411426, %for.cond118.preheader.lr.ph.i ], [ %points.sroa.75.10.us.i, %for.cond118.for.inc132_crit_edge.us.i ] + %conv122.us.i = sitofp i32 %i114.0937.us.i to float %div.us.i = fdiv float %conv122.us.i, %conv123.i br label %invoke.cont127.us.i invoke.cont127.us.i: ; preds = %for.inc129.us.i, %for.cond118.preheader.us.i - %j.0952.us.i = phi i32 [ 0, %for.cond118.preheader.us.i ], [ %inc130.us.i, %for.inc129.us.i ] - %points.sroa.0.11951.us.i = phi ptr [ %points.sroa.0.10959.us.i, %for.cond118.preheader.us.i ], [ %points.sroa.0.12.us.i, %for.inc129.us.i ] - %points.sroa.30.10950.us.i = phi ptr [ %points.sroa.30.9958.us.i, %for.cond118.preheader.us.i ], [ %points.sroa.30.11.us.i, %for.inc129.us.i ] - %points.sroa.75.9949.us.i = phi ptr [ %points.sroa.75.8957.us.i, %for.cond118.preheader.us.i ], [ %points.sroa.75.10.us.i, %for.inc129.us.i ] - %conv124.us.i = sitofp i32 %j.0952.us.i to float + %j.0929.us.i = phi i32 [ 0, %for.cond118.preheader.us.i ], [ %inc130.us.i, %for.inc129.us.i ] + %points.sroa.0.11928.us.i = phi ptr [ %points.sroa.0.10936.us.i, %for.cond118.preheader.us.i ], [ %points.sroa.0.12.us.i, %for.inc129.us.i ] + %points.sroa.30.10927.us.i = phi ptr [ %points.sroa.30.9935.us.i, %for.cond118.preheader.us.i ], [ %points.sroa.30.11.us.i, %for.inc129.us.i ] + %points.sroa.75.9926.us.i = phi ptr [ %points.sroa.75.8934.us.i, %for.cond118.preheader.us.i ], [ %points.sroa.75.10.us.i, %for.inc129.us.i ] + %conv124.us.i = sitofp i32 %j.0929.us.i to float %div126.us.i = fdiv float %conv124.us.i, %conv123.i - %cmp.not.i.i163.us.i = icmp eq ptr %points.sroa.30.10950.us.i, %points.sroa.75.9949.us.i + %cmp.not.i.i163.us.i = icmp eq ptr %points.sroa.30.10927.us.i, %points.sroa.75.9926.us.i br i1 %cmp.not.i.i163.us.i, label %if.else.i.i166.us.i, label %if.then.i.i164.us.i if.then.i.i164.us.i: ; preds = %invoke.cont127.us.i - store float %div.us.i, ptr %points.sroa.30.10950.us.i, align 4, !noalias !7 - %.sroa_idx664.us.i = getelementptr inbounds i8, ptr %points.sroa.30.10950.us.i, i64 4 - store float %div126.us.i, ptr %.sroa_idx664.us.i, align 4, !noalias !7 + store float %div.us.i, ptr %points.sroa.30.10927.us.i, align 4, !noalias !7 + %.sroa_idx641.us.i = getelementptr inbounds i8, ptr %points.sroa.30.10927.us.i, i64 4 + store float %div126.us.i, ptr %.sroa_idx641.us.i, align 4, !noalias !7 br label %for.inc129.us.i if.else.i.i166.us.i: ; preds = %invoke.cont127.us.i - %sub.ptr.lhs.cast.i.i.i.i.i167.us.i = ptrtoint ptr %points.sroa.30.10950.us.i to i64 - %sub.ptr.rhs.cast.i.i.i.i.i168.us.i = ptrtoint ptr %points.sroa.0.11951.us.i to i64 + %sub.ptr.lhs.cast.i.i.i.i.i167.us.i = ptrtoint ptr %points.sroa.30.10927.us.i to i64 + %sub.ptr.rhs.cast.i.i.i.i.i168.us.i = ptrtoint ptr %points.sroa.0.11928.us.i to i64 %sub.ptr.sub.i.i.i.i.i169.us.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i167.us.i, %sub.ptr.rhs.cast.i.i.i.i.i168.us.i %cmp.i.i.i.i170.us.i = icmp eq i64 %sub.ptr.sub.i.i.i.i.i169.us.i, 9223372036854775800 br i1 %cmp.i.i.i.i170.us.i, label %if.then.i.i.i.i197.i, label %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i171.us.i @@ -1841,7 +1841,7 @@ if.else.i.i166.us.i: ; preds = %invoke.cont127.us.i _ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i171.us.i: ; preds = %if.else.i.i166.us.i %sub.ptr.div.i.i.i.i.i172.us.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i169.us.i, 3 %.sroa.speculated.i.i.i.i173.us.i = call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i.i.i.i172.us.i, i64 1) - %add.i.i.i.i174.us.i = add i64 %.sroa.speculated.i.i.i.i173.us.i, %sub.ptr.div.i.i.i.i.i172.us.i + %add.i.i.i.i174.us.i = add nsw i64 %.sroa.speculated.i.i.i.i173.us.i, %sub.ptr.div.i.i.i.i.i172.us.i %cmp7.i.i.i.i175.us.i = icmp ult i64 %add.i.i.i.i174.us.i, %sub.ptr.div.i.i.i.i.i172.us.i %130 = call i64 @llvm.umin.i64(i64 %add.i.i.i.i174.us.i, i64 1152921504606846975) %cond.i.i.i.i176.us.i = select i1 %cmp7.i.i.i.i175.us.i, i64 1152921504606846975, i64 %130 @@ -1859,28 +1859,28 @@ _ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i180.us.i: store float %div.us.i, ptr %add.ptr.i.i.i182.us.i, align 4, !noalias !7 %add.ptr.i.i.i182.sroa_idx.us.i = getelementptr inbounds i8, ptr %add.ptr.i.i.i182.us.i, i64 4 store float %div126.us.i, ptr %add.ptr.i.i.i182.sroa_idx.us.i, align 4, !noalias !7 - %cmp.not5.i.i.i.i.i.i183.us.i = icmp eq ptr %points.sroa.0.11951.us.i, %points.sroa.30.10950.us.i + %cmp.not5.i.i.i.i.i.i183.us.i = icmp eq ptr %points.sroa.0.11928.us.i, %points.sroa.30.10927.us.i br i1 %cmp.not5.i.i.i.i.i.i183.us.i, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i190.us.i, label %for.body.i.i.i.i.i.i184.us.i for.body.i.i.i.i.i.i184.us.i: ; preds = %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i180.us.i, %for.body.i.i.i.i.i.i184.us.i %__cur.07.i.i.i.i.i.i185.us.i = phi ptr [ %incdec.ptr1.i.i.i.i.i.i188.us.i, %for.body.i.i.i.i.i.i184.us.i ], [ %cond.i10.i.i.i181.us.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i180.us.i ] - %__first.addr.06.i.i.i.i.i.i186.us.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i187.us.i, %for.body.i.i.i.i.i.i184.us.i ], [ %points.sroa.0.11951.us.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i180.us.i ] + %__first.addr.06.i.i.i.i.i.i186.us.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i187.us.i, %for.body.i.i.i.i.i.i184.us.i ], [ %points.sroa.0.11928.us.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i180.us.i ] call void @llvm.experimental.noalias.scope.decl(metadata !36) call void @llvm.experimental.noalias.scope.decl(metadata !39) %131 = load i64, ptr %__first.addr.06.i.i.i.i.i.i186.us.i, align 4, !alias.scope !39, !noalias !41 store i64 %131, ptr %__cur.07.i.i.i.i.i.i185.us.i, align 4, !alias.scope !36, !noalias !42 %incdec.ptr.i.i.i.i.i.i187.us.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %__first.addr.06.i.i.i.i.i.i186.us.i, i64 1 %incdec.ptr1.i.i.i.i.i.i188.us.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %__cur.07.i.i.i.i.i.i185.us.i, i64 1 - %cmp.not.i.i.i.i.i.i189.us.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i187.us.i, %points.sroa.30.10950.us.i + %cmp.not.i.i.i.i.i.i189.us.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i187.us.i, %points.sroa.30.10927.us.i br i1 %cmp.not.i.i.i.i.i.i189.us.i, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i190.us.i, label %for.body.i.i.i.i.i.i184.us.i, !llvm.loop !17 _ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i190.us.i: ; preds = %for.body.i.i.i.i.i.i184.us.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i180.us.i %__cur.0.lcssa.i.i.i.i.i.i191.us.i = phi ptr [ %cond.i10.i.i.i181.us.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i180.us.i ], [ %incdec.ptr1.i.i.i.i.i.i188.us.i, %for.body.i.i.i.i.i.i184.us.i ] - %tobool.not.i.i.i.i193.us.i = icmp eq ptr %points.sroa.0.11951.us.i, null + %tobool.not.i.i.i.i193.us.i = icmp eq ptr %points.sroa.0.11928.us.i, null br i1 %tobool.not.i.i.i.i193.us.i, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i195.us.i, label %if.then.i20.i.i.i194.us.i if.then.i20.i.i.i194.us.i: ; preds = %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i190.us.i - call void @_ZdlPv(ptr noundef nonnull %points.sroa.0.11951.us.i) #34, !noalias !7 + call void @_ZdlPv(ptr noundef nonnull %points.sroa.0.11928.us.i) #34, !noalias !7 br label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i195.us.i _ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i195.us.i: ; preds = %if.then.i20.i.i.i194.us.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i190.us.i @@ -1888,21 +1888,21 @@ _ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17_ br label %for.inc129.us.i for.inc129.us.i: ; preds = %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i195.us.i, %if.then.i.i164.us.i - %points.sroa.75.10.us.i = phi ptr [ %add.ptr19.i.i.i196.us.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i195.us.i ], [ %points.sroa.75.9949.us.i, %if.then.i.i164.us.i ] - %__cur.0.lcssa.i.i.i.i.i.i191.pn.us.i = phi ptr [ %__cur.0.lcssa.i.i.i.i.i.i191.us.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i195.us.i ], [ %points.sroa.30.10950.us.i, %if.then.i.i164.us.i ] - %points.sroa.0.12.us.i = phi ptr [ %cond.i10.i.i.i181.us.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i195.us.i ], [ %points.sroa.0.11951.us.i, %if.then.i.i164.us.i ] + %points.sroa.75.10.us.i = phi ptr [ %add.ptr19.i.i.i196.us.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i195.us.i ], [ %points.sroa.75.9926.us.i, %if.then.i.i164.us.i ] + %__cur.0.lcssa.i.i.i.i.i.i191.pn.us.i = phi ptr [ %__cur.0.lcssa.i.i.i.i.i.i191.us.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i195.us.i ], [ %points.sroa.30.10927.us.i, %if.then.i.i164.us.i ] + %points.sroa.0.12.us.i = phi ptr [ %cond.i10.i.i.i181.us.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i195.us.i ], [ %points.sroa.0.11928.us.i, %if.then.i.i164.us.i ] %points.sroa.30.11.us.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %__cur.0.lcssa.i.i.i.i.i.i191.pn.us.i, i64 1 - %inc130.us.i = add nuw nsw i32 %j.0952.us.i, 1 - %exitcond1087.not.i = icmp eq i32 %inc130.us.i, %conv111.i - br i1 %exitcond1087.not.i, label %for.cond118.for.inc132_crit_edge.us.i, label %invoke.cont127.us.i, !llvm.loop !43 + %inc130.us.i = add nuw nsw i32 %j.0929.us.i, 1 + %exitcond1064.not.i = icmp eq i32 %inc130.us.i, %conv111.i + br i1 %exitcond1064.not.i, label %for.cond118.for.inc132_crit_edge.us.i, label %invoke.cont127.us.i, !llvm.loop !43 for.cond118.for.inc132_crit_edge.us.i: ; preds = %for.inc129.us.i - %inc133.us.i = add nuw nsw i32 %i114.0960.us.i, 1 - %exitcond1088.not.i = icmp eq i32 %inc133.us.i, %conv111.i - br i1 %exitcond1088.not.i, label %cleanup.thread.i, label %for.cond118.preheader.us.i, !llvm.loop !44 + %inc133.us.i = add nuw nsw i32 %i114.0937.us.i, 1 + %exitcond1065.not.i = icmp eq i32 %inc133.us.i, %conv111.i + br i1 %exitcond1065.not.i, label %cleanup.thread.i, label %for.cond118.preheader.us.i, !llvm.loop !44 lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split.us.i: ; preds = %cond.true.i.i.i.i178.us.i - %lpad.loopexit747.us.i = landingpad { ptr, i32 } + %lpad.loopexit724.us.i = landingpad { ptr, i32 } cleanup br label %ehcleanup360.i @@ -1929,647 +1929,619 @@ if.then138.i: ; preds = %if.else135.i invoke.cont158.i.preheader: ; preds = %if.then138.i %conv140.i = sext i32 %93 to i64 %add.i.i.i = add nsw i64 %or.i.i.i, %conv140.i - %mul.i1.i.i.pn933.i = mul i64 %add.i.i.i, 6364136223846793005 - %rng.sroa.0.0934.i = add i64 %mul.i1.i.i.pn933.i, %or.i.i.i + %mul.i1.i.i.pn910.i = mul i64 %add.i.i.i, 6364136223846793005 + %rng.sroa.0.0911.i = add i64 %mul.i1.i.i.pn910.i, %or.i.i.i br label %invoke.cont158.i for.cond164.preheader.i: ; preds = %for.inc160.i - %cmp165945.i = icmp sgt i32 %141, 0 - br i1 %cmp165945.i, label %for.body166.i, label %cleanup.thread.i + %cmp165922.i = icmp sgt i32 %141, 0 + br i1 %cmp165922.i, label %for.body166.i, label %cleanup.thread.i invoke.cont158.i: ; preds = %invoke.cont158.i.preheader, %for.inc160.i %134 = phi i32 [ %141, %for.inc160.i ], [ %92, %invoke.cont158.i.preheader ] - %rng.sroa.0.0940.i = phi i64 [ %rng.sroa.0.0.i, %for.inc160.i ], [ %rng.sroa.0.0934.i, %invoke.cont158.i.preheader ] - %i142.0939.i = phi i32 [ %inc161.i, %for.inc160.i ], [ 0, %invoke.cont158.i.preheader ] - %points.sroa.0.13938.i = phi ptr [ %points.sroa.0.14.i, %for.inc160.i ], [ %points.sroa.30.0.i413424, %invoke.cont158.i.preheader ] - %points.sroa.30.12937.i = phi ptr [ %points.sroa.30.13.i, %for.inc160.i ], [ %points.sroa.30.0.i413424, %invoke.cont158.i.preheader ] - %points.sroa.75.11936.i = phi ptr [ %points.sroa.75.12.i, %for.inc160.i ], [ %points.sroa.75.0.i411426, %invoke.cont158.i.preheader ] - %conv147.i = sitofp i32 %i142.0939.i to float - %mul.i.i.i = mul i64 %rng.sroa.0.0940.i, 6364136223846793005 + %rng.sroa.0.0917.i = phi i64 [ %rng.sroa.0.0.i, %for.inc160.i ], [ %rng.sroa.0.0911.i, %invoke.cont158.i.preheader ] + %i142.0916.i = phi i32 [ %inc161.i, %for.inc160.i ], [ 0, %invoke.cont158.i.preheader ] + %points.sroa.0.13915.i = phi ptr [ %points.sroa.0.14.i, %for.inc160.i ], [ %points.sroa.30.0.i413424, %invoke.cont158.i.preheader ] + %points.sroa.30.12914.i = phi ptr [ %points.sroa.30.13.i, %for.inc160.i ], [ %points.sroa.30.0.i413424, %invoke.cont158.i.preheader ] + %points.sroa.75.11913.i = phi ptr [ %points.sroa.75.12.i, %for.inc160.i ], [ %points.sroa.75.0.i411426, %invoke.cont158.i.preheader ] + %conv147.i = sitofp i32 %i142.0916.i to float + %mul.i.i.i = mul i64 %rng.sroa.0.0917.i, 6364136223846793005 %add.i.i205.i = add i64 %mul.i.i.i, %or.i.i.i - %135 = lshr i64 %rng.sroa.0.0940.i, 45 - %136 = lshr i64 %rng.sroa.0.0940.i, 27 + %135 = lshr i64 %rng.sroa.0.0917.i, 45 + %136 = lshr i64 %rng.sroa.0.0917.i, 27 %shr3.i.i.i = xor i64 %135, %136 %conv.i.i.i = trunc i64 %shr3.i.i.i to i32 - %shr4.i.i.i = lshr i64 %rng.sroa.0.0940.i, 59 + %shr4.i.i.i = lshr i64 %rng.sroa.0.0917.i, 59 %conv5.i.i.i = trunc i64 %shr4.i.i.i to i32 - %shr6.i.i.i = lshr i32 %conv.i.i.i, %conv5.i.i.i - %add7.i.i.i = sub nsw i32 0, %conv5.i.i.i - %and.i.i.i = and i32 %add7.i.i.i, 31 - %shl.i.i206.i = shl i32 %conv.i.i.i, %and.i.i.i - %or.i.i207.i = or i32 %shr6.i.i.i, %shl.i.i206.i - %conv.i208.i = uitofp i32 %or.i.i207.i to float - %mul.i209.i = fmul float %conv.i208.i, 0x3DF0000000000000 - %cmp.i.i210.i = fcmp olt float %mul.i209.i, 0x3FEFFFFFE0000000 - %.sroa.speculated.i.i = select i1 %cmp.i.i210.i, float %mul.i209.i, float 0x3FEFFFFFE0000000 + %or.i.i206.i = call noundef i32 @llvm.fshr.i32(i32 %conv.i.i.i, i32 %conv.i.i.i, i32 %conv5.i.i.i) + %conv.i207.i = uitofp i32 %or.i.i206.i to float + %mul.i208.i = fmul float %conv.i207.i, 0x3DF0000000000000 + %cmp.i.i209.i = fcmp olt float %mul.i208.i, 0x3FEFFFFFE0000000 + %.sroa.speculated.i.i = select i1 %cmp.i.i209.i, float %mul.i208.i, float 0x3FEFFFFFE0000000 %137 = lshr i64 %add.i.i205.i, 45 %138 = lshr i64 %add.i.i205.i, 27 - %shr3.i.i214.i = xor i64 %137, %138 - %conv.i.i215.i = trunc i64 %shr3.i.i214.i to i32 - %shr4.i.i216.i = lshr i64 %add.i.i205.i, 59 - %conv5.i.i217.i = trunc i64 %shr4.i.i216.i to i32 - %shr6.i.i218.i = lshr i32 %conv.i.i215.i, %conv5.i.i217.i - %add7.i.i219.i = sub nsw i32 0, %conv5.i.i217.i - %and.i.i220.i = and i32 %add7.i.i219.i, 31 - %shl.i.i221.i = shl i32 %conv.i.i215.i, %and.i.i220.i - %or.i.i222.i = or i32 %shr6.i.i218.i, %shl.i.i221.i - %conv.i223.i = uitofp i32 %or.i.i222.i to float - %mul.i224.i = fmul float %conv.i223.i, 0x3DF0000000000000 - %cmp.i.i225.i = fcmp olt float %mul.i224.i, 0x3FEFFFFFE0000000 - %.sroa.speculated.i226.i = select i1 %cmp.i.i225.i, float %mul.i224.i, float 0x3FEFFFFFE0000000 + %shr3.i.i213.i = xor i64 %137, %138 + %conv.i.i214.i = trunc i64 %shr3.i.i213.i to i32 + %shr4.i.i215.i = lshr i64 %add.i.i205.i, 59 + %conv5.i.i216.i = trunc i64 %shr4.i.i215.i to i32 + %or.i.i217.i = call noundef i32 @llvm.fshr.i32(i32 %conv.i.i214.i, i32 %conv.i.i214.i, i32 %conv5.i.i216.i) + %conv.i218.i = uitofp i32 %or.i.i217.i to float + %mul.i219.i = fmul float %conv.i218.i, 0x3DF0000000000000 + %cmp.i.i220.i = fcmp olt float %mul.i219.i, 0x3FEFFFFFE0000000 + %.sroa.speculated.i221.i = select i1 %cmp.i.i220.i, float %mul.i219.i, float 0x3FEFFFFFE0000000 %add.i = fadd float %.sroa.speculated.i.i, %conv147.i %conv150.i = sitofp i32 %134 to float %div151.i = fdiv float %add.i, %conv150.i - %add155.i = fadd float %.sroa.speculated.i226.i, %conv147.i + %add155.i = fadd float %.sroa.speculated.i221.i, %conv147.i %div157.i = fdiv float %add155.i, %conv150.i - %cmp.not.i.i230.i = icmp eq ptr %points.sroa.30.12937.i, %points.sroa.75.11936.i - br i1 %cmp.not.i.i230.i, label %if.else.i.i233.i, label %if.then.i.i231.i - -if.then.i.i231.i: ; preds = %invoke.cont158.i - store float %div151.i, ptr %points.sroa.30.12937.i, align 4, !noalias !7 - %.sroa_idx656.i = getelementptr inbounds i8, ptr %points.sroa.30.12937.i, i64 4 - store float %div157.i, ptr %.sroa_idx656.i, align 4, !noalias !7 - %.pre1090.i = load i32, ptr %nPoints.addr.i, align 4, !noalias !7 + %cmp.not.i.i225.i = icmp eq ptr %points.sroa.30.12914.i, %points.sroa.75.11913.i + br i1 %cmp.not.i.i225.i, label %if.else.i.i228.i, label %if.then.i.i226.i + +if.then.i.i226.i: ; preds = %invoke.cont158.i + store float %div151.i, ptr %points.sroa.30.12914.i, align 4, !noalias !7 + %.sroa_idx633.i = getelementptr inbounds i8, ptr %points.sroa.30.12914.i, i64 4 + store float %div157.i, ptr %.sroa_idx633.i, align 4, !noalias !7 + %.pre1067.i = load i32, ptr %nPoints.addr.i, align 4, !noalias !7 br label %for.inc160.i -if.else.i.i233.i: ; preds = %invoke.cont158.i - %sub.ptr.lhs.cast.i.i.i.i.i234.i = ptrtoint ptr %points.sroa.30.12937.i to i64 - %sub.ptr.rhs.cast.i.i.i.i.i235.i = ptrtoint ptr %points.sroa.0.13938.i to i64 - %sub.ptr.sub.i.i.i.i.i236.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i234.i, %sub.ptr.rhs.cast.i.i.i.i.i235.i - %cmp.i.i.i.i237.i = icmp eq i64 %sub.ptr.sub.i.i.i.i.i236.i, 9223372036854775800 - br i1 %cmp.i.i.i.i237.i, label %if.then.i.i.i.i264.i, label %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i238.i +if.else.i.i228.i: ; preds = %invoke.cont158.i + %sub.ptr.lhs.cast.i.i.i.i.i229.i = ptrtoint ptr %points.sroa.30.12914.i to i64 + %sub.ptr.rhs.cast.i.i.i.i.i230.i = ptrtoint ptr %points.sroa.0.13915.i to i64 + %sub.ptr.sub.i.i.i.i.i231.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i229.i, %sub.ptr.rhs.cast.i.i.i.i.i230.i + %cmp.i.i.i.i232.i = icmp eq i64 %sub.ptr.sub.i.i.i.i.i231.i, 9223372036854775800 + br i1 %cmp.i.i.i.i232.i, label %if.then.i.i.i.i259.i, label %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i233.i -if.then.i.i.i.i264.i: ; preds = %if.else.i.i233.i +if.then.i.i.i.i259.i: ; preds = %if.else.i.i228.i invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.40) #33 - to label %.noexc265.i unwind label %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i.loopexit.split-lp, !noalias !7 + to label %.noexc260.i unwind label %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i.loopexit.split-lp, !noalias !7 -.noexc265.i: ; preds = %if.then.i.i.i.i264.i +.noexc260.i: ; preds = %if.then.i.i.i.i259.i unreachable -_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i238.i: ; preds = %if.else.i.i233.i - %sub.ptr.div.i.i.i.i.i239.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i236.i, 3 - %.sroa.speculated.i.i.i.i240.i = call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i.i.i.i239.i, i64 1) - %add.i.i.i.i241.i = add i64 %.sroa.speculated.i.i.i.i240.i, %sub.ptr.div.i.i.i.i.i239.i - %cmp7.i.i.i.i242.i = icmp ult i64 %add.i.i.i.i241.i, %sub.ptr.div.i.i.i.i.i239.i - %139 = call i64 @llvm.umin.i64(i64 %add.i.i.i.i241.i, i64 1152921504606846975) - %cond.i.i.i.i243.i = select i1 %cmp7.i.i.i.i242.i, i64 1152921504606846975, i64 %139 - %cmp.not.i.i.i.i244.i = icmp eq i64 %cond.i.i.i.i243.i, 0 - br i1 %cmp.not.i.i.i.i244.i, label %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i247.i, label %cond.true.i.i.i.i245.i - -cond.true.i.i.i.i245.i: ; preds = %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i238.i - %mul.i.i.i.i.i.i246.i = shl nuw nsw i64 %cond.i.i.i.i243.i, 3 - %call5.i.i.i.i.i.i267.i = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %mul.i.i.i.i.i.i246.i) #32 - to label %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i247.i unwind label %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i, !noalias !7 - -_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i247.i: ; preds = %cond.true.i.i.i.i245.i, %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i238.i - %cond.i10.i.i.i248.i = phi ptr [ null, %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i238.i ], [ %call5.i.i.i.i.i.i267.i, %cond.true.i.i.i.i245.i ] - %add.ptr.i.i.i249.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %cond.i10.i.i.i248.i, i64 %sub.ptr.div.i.i.i.i.i239.i - store float %div151.i, ptr %add.ptr.i.i.i249.i, align 4, !noalias !7 - %add.ptr.i.i.i249.sroa_idx.i = getelementptr inbounds i8, ptr %add.ptr.i.i.i249.i, i64 4 - store float %div157.i, ptr %add.ptr.i.i.i249.sroa_idx.i, align 4, !noalias !7 - %cmp.not5.i.i.i.i.i.i250.i = icmp eq ptr %points.sroa.0.13938.i, %points.sroa.30.12937.i - br i1 %cmp.not5.i.i.i.i.i.i250.i, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i257.i, label %for.body.i.i.i.i.i.i251.i - -for.body.i.i.i.i.i.i251.i: ; preds = %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i247.i, %for.body.i.i.i.i.i.i251.i - %__cur.07.i.i.i.i.i.i252.i = phi ptr [ %incdec.ptr1.i.i.i.i.i.i255.i, %for.body.i.i.i.i.i.i251.i ], [ %cond.i10.i.i.i248.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i247.i ] - %__first.addr.06.i.i.i.i.i.i253.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i254.i, %for.body.i.i.i.i.i.i251.i ], [ %points.sroa.0.13938.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i247.i ] +_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i233.i: ; preds = %if.else.i.i228.i + %sub.ptr.div.i.i.i.i.i234.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i231.i, 3 + %.sroa.speculated.i.i.i.i235.i = call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i.i.i.i234.i, i64 1) + %add.i.i.i.i236.i = add nsw i64 %.sroa.speculated.i.i.i.i235.i, %sub.ptr.div.i.i.i.i.i234.i + %cmp7.i.i.i.i237.i = icmp ult i64 %add.i.i.i.i236.i, %sub.ptr.div.i.i.i.i.i234.i + %139 = call i64 @llvm.umin.i64(i64 %add.i.i.i.i236.i, i64 1152921504606846975) + %cond.i.i.i.i238.i = select i1 %cmp7.i.i.i.i237.i, i64 1152921504606846975, i64 %139 + %cmp.not.i.i.i.i239.i = icmp eq i64 %cond.i.i.i.i238.i, 0 + br i1 %cmp.not.i.i.i.i239.i, label %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i242.i, label %cond.true.i.i.i.i240.i + +cond.true.i.i.i.i240.i: ; preds = %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i233.i + %mul.i.i.i.i.i.i241.i = shl nuw nsw i64 %cond.i.i.i.i238.i, 3 + %call5.i.i.i.i.i.i262.i = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %mul.i.i.i.i.i.i241.i) #32 + to label %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i242.i unwind label %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i, !noalias !7 + +_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i242.i: ; preds = %cond.true.i.i.i.i240.i, %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i233.i + %cond.i10.i.i.i243.i = phi ptr [ null, %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i233.i ], [ %call5.i.i.i.i.i.i262.i, %cond.true.i.i.i.i240.i ] + %add.ptr.i.i.i244.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %cond.i10.i.i.i243.i, i64 %sub.ptr.div.i.i.i.i.i234.i + store float %div151.i, ptr %add.ptr.i.i.i244.i, align 4, !noalias !7 + %add.ptr.i.i.i244.sroa_idx.i = getelementptr inbounds i8, ptr %add.ptr.i.i.i244.i, i64 4 + store float %div157.i, ptr %add.ptr.i.i.i244.sroa_idx.i, align 4, !noalias !7 + %cmp.not5.i.i.i.i.i.i245.i = icmp eq ptr %points.sroa.0.13915.i, %points.sroa.30.12914.i + br i1 %cmp.not5.i.i.i.i.i.i245.i, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i252.i, label %for.body.i.i.i.i.i.i246.i + +for.body.i.i.i.i.i.i246.i: ; preds = %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i242.i, %for.body.i.i.i.i.i.i246.i + %__cur.07.i.i.i.i.i.i247.i = phi ptr [ %incdec.ptr1.i.i.i.i.i.i250.i, %for.body.i.i.i.i.i.i246.i ], [ %cond.i10.i.i.i243.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i242.i ] + %__first.addr.06.i.i.i.i.i.i248.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i249.i, %for.body.i.i.i.i.i.i246.i ], [ %points.sroa.0.13915.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i242.i ] call void @llvm.experimental.noalias.scope.decl(metadata !45) call void @llvm.experimental.noalias.scope.decl(metadata !48) - %140 = load i64, ptr %__first.addr.06.i.i.i.i.i.i253.i, align 4, !alias.scope !48, !noalias !50 - store i64 %140, ptr %__cur.07.i.i.i.i.i.i252.i, align 4, !alias.scope !45, !noalias !51 - %incdec.ptr.i.i.i.i.i.i254.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %__first.addr.06.i.i.i.i.i.i253.i, i64 1 - %incdec.ptr1.i.i.i.i.i.i255.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %__cur.07.i.i.i.i.i.i252.i, i64 1 - %cmp.not.i.i.i.i.i.i256.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i254.i, %points.sroa.30.12937.i - br i1 %cmp.not.i.i.i.i.i.i256.i, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i257.i, label %for.body.i.i.i.i.i.i251.i, !llvm.loop !17 - -_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i257.i: ; preds = %for.body.i.i.i.i.i.i251.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i247.i - %__cur.0.lcssa.i.i.i.i.i.i258.i = phi ptr [ %cond.i10.i.i.i248.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i247.i ], [ %incdec.ptr1.i.i.i.i.i.i255.i, %for.body.i.i.i.i.i.i251.i ] - %tobool.not.i.i.i.i260.i = icmp eq ptr %points.sroa.0.13938.i, null - br i1 %tobool.not.i.i.i.i260.i, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i262.i, label %if.then.i20.i.i.i261.i - -if.then.i20.i.i.i261.i: ; preds = %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i257.i - call void @_ZdlPv(ptr noundef nonnull %points.sroa.0.13938.i) #34, !noalias !7 - br label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i262.i - -_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i262.i: ; preds = %if.then.i20.i.i.i261.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i257.i - %add.ptr19.i.i.i263.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %cond.i10.i.i.i248.i, i64 %cond.i.i.i.i243.i + %140 = load i64, ptr %__first.addr.06.i.i.i.i.i.i248.i, align 4, !alias.scope !48, !noalias !50 + store i64 %140, ptr %__cur.07.i.i.i.i.i.i247.i, align 4, !alias.scope !45, !noalias !51 + %incdec.ptr.i.i.i.i.i.i249.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %__first.addr.06.i.i.i.i.i.i248.i, i64 1 + %incdec.ptr1.i.i.i.i.i.i250.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %__cur.07.i.i.i.i.i.i247.i, i64 1 + %cmp.not.i.i.i.i.i.i251.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i249.i, %points.sroa.30.12914.i + br i1 %cmp.not.i.i.i.i.i.i251.i, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i252.i, label %for.body.i.i.i.i.i.i246.i, !llvm.loop !17 + +_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i252.i: ; preds = %for.body.i.i.i.i.i.i246.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i242.i + %__cur.0.lcssa.i.i.i.i.i.i253.i = phi ptr [ %cond.i10.i.i.i243.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i242.i ], [ %incdec.ptr1.i.i.i.i.i.i250.i, %for.body.i.i.i.i.i.i246.i ] + %tobool.not.i.i.i.i255.i = icmp eq ptr %points.sroa.0.13915.i, null + br i1 %tobool.not.i.i.i.i255.i, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i257.i, label %if.then.i20.i.i.i256.i + +if.then.i20.i.i.i256.i: ; preds = %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i252.i + call void @_ZdlPv(ptr noundef nonnull %points.sroa.0.13915.i) #34, !noalias !7 + br label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i257.i + +_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i257.i: ; preds = %if.then.i20.i.i.i256.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i252.i + %add.ptr19.i.i.i258.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %cond.i10.i.i.i243.i, i64 %cond.i.i.i.i238.i br label %for.inc160.i -for.inc160.i: ; preds = %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i262.i, %if.then.i.i231.i - %141 = phi i32 [ %134, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i262.i ], [ %.pre1090.i, %if.then.i.i231.i ] - %points.sroa.75.12.i = phi ptr [ %add.ptr19.i.i.i263.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i262.i ], [ %points.sroa.75.11936.i, %if.then.i.i231.i ] - %__cur.0.lcssa.i.i.i.i.i.i258.pn.i = phi ptr [ %__cur.0.lcssa.i.i.i.i.i.i258.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i262.i ], [ %points.sroa.30.12937.i, %if.then.i.i231.i ] - %points.sroa.0.14.i = phi ptr [ %cond.i10.i.i.i248.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i262.i ], [ %points.sroa.0.13938.i, %if.then.i.i231.i ] - %points.sroa.30.13.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %__cur.0.lcssa.i.i.i.i.i.i258.pn.i, i64 1 - %inc161.i = add nuw nsw i32 %i142.0939.i, 1 +for.inc160.i: ; preds = %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i257.i, %if.then.i.i226.i + %141 = phi i32 [ %134, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i257.i ], [ %.pre1067.i, %if.then.i.i226.i ] + %points.sroa.75.12.i = phi ptr [ %add.ptr19.i.i.i258.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i257.i ], [ %points.sroa.75.11913.i, %if.then.i.i226.i ] + %__cur.0.lcssa.i.i.i.i.i.i253.pn.i = phi ptr [ %__cur.0.lcssa.i.i.i.i.i.i253.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i257.i ], [ %points.sroa.30.12914.i, %if.then.i.i226.i ] + %points.sroa.0.14.i = phi ptr [ %cond.i10.i.i.i243.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i257.i ], [ %points.sroa.0.13915.i, %if.then.i.i226.i ] + %points.sroa.30.13.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %__cur.0.lcssa.i.i.i.i.i.i253.pn.i, i64 1 + %inc161.i = add nuw nsw i32 %i142.0916.i, 1 %mul.i1.i.i.pn.i = mul i64 %add.i.i205.i, 6364136223846793005 %rng.sroa.0.0.i = add i64 %mul.i1.i.i.pn.i, %or.i.i.i %cmp144.i = icmp slt i32 %inc161.i, %141 br i1 %cmp144.i, label %invoke.cont158.i, label %for.cond164.preheader.i, !llvm.loop !52 for.body166.i: ; preds = %for.cond164.preheader.i, %invoke.cont167.i - %indvars.iv1084.i = phi i64 [ %indvars.iv.next1085.i, %invoke.cont167.i ], [ 0, %for.cond164.preheader.i ] + %indvars.iv1061.i = phi i64 [ %indvars.iv.next1062.i, %invoke.cont167.i ], [ 0, %for.cond164.preheader.i ] %142 = phi i32 [ %148, %invoke.cont167.i ], [ %141, %for.cond164.preheader.i ] - %rng.sroa.0.1946.i = phi i64 [ %add.i.i271.i, %invoke.cont167.i ], [ %rng.sroa.0.0.i, %for.cond164.preheader.i ] - %143 = trunc i64 %indvars.iv1084.i to i32 + %rng.sroa.0.1923.i = phi i64 [ %add.i.i266.i, %invoke.cont167.i ], [ %rng.sroa.0.0.i, %for.cond164.preheader.i ] + %143 = trunc i64 %indvars.iv1061.i to i32 %sub.i = sub nsw i32 %142, %143 %add.i.i = sub i32 0, %sub.i %rem.i.i = urem i32 %add.i.i, %sub.i br label %while.body.i.i while.body.i.i: ; preds = %while.body.i.i, %for.body166.i - %add.i4.i.i = phi i64 [ %add.i.i271.i, %while.body.i.i ], [ %rng.sroa.0.1946.i, %for.body166.i ] - %mul.i.i270.i = mul i64 %add.i4.i.i, 6364136223846793005 - %add.i.i271.i = add i64 %mul.i.i270.i, %or.i.i.i + %add.i4.i.i = phi i64 [ %add.i.i266.i, %while.body.i.i ], [ %rng.sroa.0.1923.i, %for.body166.i ] + %mul.i.i265.i = mul i64 %add.i4.i.i, 6364136223846793005 + %add.i.i266.i = add i64 %mul.i.i265.i, %or.i.i.i %144 = lshr i64 %add.i4.i.i, 45 %145 = lshr i64 %add.i4.i.i, 27 - %shr3.i.i272.i = xor i64 %144, %145 - %conv.i.i273.i = trunc i64 %shr3.i.i272.i to i32 - %shr4.i.i274.i = lshr i64 %add.i4.i.i, 59 - %conv5.i.i275.i = trunc i64 %shr4.i.i274.i to i32 - %shr6.i.i276.i = lshr i32 %conv.i.i273.i, %conv5.i.i275.i - %add7.i.i277.i = sub nsw i32 0, %conv5.i.i275.i - %and.i.i278.i = and i32 %add7.i.i277.i, 31 - %shl.i.i279.i = shl i32 %conv.i.i273.i, %and.i.i278.i - %or.i.i280.i = or i32 %shr6.i.i276.i, %shl.i.i279.i - %cmp.not.i.i = icmp ult i32 %or.i.i280.i, %rem.i.i + %shr3.i.i267.i = xor i64 %144, %145 + %conv.i.i268.i = trunc i64 %shr3.i.i267.i to i32 + %shr4.i.i269.i = lshr i64 %add.i4.i.i, 59 + %conv5.i.i270.i = trunc i64 %shr4.i.i269.i to i32 + %or.i.i271.i = call noundef i32 @llvm.fshr.i32(i32 %conv.i.i268.i, i32 %conv.i.i268.i, i32 %conv5.i.i270.i) + %cmp.not.i.i = icmp ult i32 %or.i.i271.i, %rem.i.i br i1 %cmp.not.i.i, label %while.body.i.i, label %invoke.cont167.i, !llvm.loop !53 invoke.cont167.i: ; preds = %while.body.i.i - %rem2.i.i = urem i32 %or.i.i280.i, %sub.i + %rem2.i.i = urem i32 %or.i.i271.i, %sub.i %add169.i = add i32 %rem2.i.i, %143 - %add.ptr.i282.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %points.sroa.0.14.i, i64 %indvars.iv1084.i + %add.ptr.i273.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %points.sroa.0.14.i, i64 %indvars.iv1061.i %conv172.i = sext i32 %add169.i to i64 - %add.ptr.i283.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %points.sroa.0.14.i, i64 %conv172.i - %146 = load float, ptr %add.ptr.i282.i, align 4, !noalias !7 - %147 = load float, ptr %add.ptr.i283.i, align 4, !noalias !7 - store float %147, ptr %add.ptr.i282.i, align 4, !noalias !7 - store float %146, ptr %add.ptr.i283.i, align 4, !noalias !7 - %indvars.iv.next1085.i = add nuw nsw i64 %indvars.iv1084.i, 1 + %add.ptr.i274.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %points.sroa.0.14.i, i64 %conv172.i + %146 = load float, ptr %add.ptr.i273.i, align 4, !noalias !7 + %147 = load float, ptr %add.ptr.i274.i, align 4, !noalias !7 + store float %147, ptr %add.ptr.i273.i, align 4, !noalias !7 + store float %146, ptr %add.ptr.i274.i, align 4, !noalias !7 + %indvars.iv.next1062.i = add nuw nsw i64 %indvars.iv1061.i, 1 %148 = load i32, ptr %nPoints.addr.i, align 4, !noalias !7 %149 = sext i32 %148 to i64 - %cmp165.i = icmp slt i64 %indvars.iv.next1085.i, %149 + %cmp165.i = icmp slt i64 %indvars.iv.next1062.i, %149 br i1 %cmp165.i, label %for.body166.i, label %cleanup.thread.i, !llvm.loop !54 if.else178.i: ; preds = %if.else135.i - %call.i284.i = call noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEPKc(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp216, ptr noundef nonnull @.str.30) #29, !noalias !7 - %cmp.i285.i = icmp eq i32 %call.i284.i, 0 - br i1 %cmp.i285.i, label %for.cond183.preheader.i, label %if.else198.i + %call.i275.i = call noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEPKc(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp216, ptr noundef nonnull @.str.30) #29, !noalias !7 + %cmp.i276.i = icmp eq i32 %call.i275.i, 0 + br i1 %cmp.i276.i, label %for.cond183.preheader.i, label %if.else198.i for.cond183.preheader.i: ; preds = %if.else178.i br i1 %cmp3.i.not.i, label %cleanup.thread.i, label %for.body185.lr.ph.i for.body185.lr.ph.i: ; preds = %for.cond183.preheader.i - %div.i.i = udiv i64 -1, %conv.i381.i - %sub.i.i = sub nuw i64 %div.i.i, %conv.i381.i - %div.i293.i = udiv i64 -1, %conv.i397.i - %sub.i294.i = sub nuw i64 %div.i293.i, %conv.i397.i + %div.i.i = udiv i64 -1, %conv.i368.i + %sub.i.i = sub nuw i64 %div.i.i, %conv.i368.i + %div.i284.i = udiv i64 -1, %conv.i384.i + %sub.i285.i = sub nuw i64 %div.i284.i, %conv.i384.i br label %for.body185.i for.body185.i: ; preds = %for.inc195.i, %for.body185.lr.ph.i %150 = phi i32 [ %92, %for.body185.lr.ph.i ], [ %159, %for.inc195.i ] - %indvars.iv1081.i = phi i64 [ 0, %for.body185.lr.ph.i ], [ %indvars.iv.next1082.i, %for.inc195.i ] - %points.sroa.0.15928.i = phi ptr [ %points.sroa.30.0.i413424, %for.body185.lr.ph.i ], [ %points.sroa.0.16.i, %for.inc195.i ] - %points.sroa.30.14927.i = phi ptr [ %points.sroa.30.0.i413424, %for.body185.lr.ph.i ], [ %points.sroa.30.15.i, %for.inc195.i ] - %points.sroa.75.13926.i = phi ptr [ %points.sroa.75.0.i411426, %for.body185.lr.ph.i ], [ %points.sroa.75.14.i, %for.inc195.i ] - %tobool12.not.i.i = icmp eq i64 %indvars.iv1081.i, 0 - br i1 %tobool12.not.i.i, label %invoke.cont193.i, label %while.body.i287.i - -while.body.i287.i: ; preds = %for.body185.i, %while.body.i287.i - %a.addr.016.i.i = phi i64 [ %div5.i.i, %while.body.i287.i ], [ %indvars.iv1081.i, %for.body185.i ] - %invBaseM.015.i.i = phi float [ %mul10.i.i, %while.body.i287.i ], [ 1.000000e+00, %for.body185.i ] - %reversedDigits.014.i.i = phi i64 [ %add.i288.i, %while.body.i287.i ], [ 0, %for.body185.i ] - %div5.i.i = udiv i64 %a.addr.016.i.i, %conv.i381.i + %indvars.iv1058.i = phi i64 [ 0, %for.body185.lr.ph.i ], [ %indvars.iv.next1059.i, %for.inc195.i ] + %points.sroa.0.15905.i = phi ptr [ %points.sroa.30.0.i413424, %for.body185.lr.ph.i ], [ %points.sroa.0.16.i, %for.inc195.i ] + %points.sroa.30.14904.i = phi ptr [ %points.sroa.30.0.i413424, %for.body185.lr.ph.i ], [ %points.sroa.30.15.i, %for.inc195.i ] + %points.sroa.75.13903.i = phi ptr [ %points.sroa.75.0.i411426, %for.body185.lr.ph.i ], [ %points.sroa.75.14.i, %for.inc195.i ] + %tobool12.not.i.i = icmp eq i64 %indvars.iv1058.i, 0 + br i1 %tobool12.not.i.i, label %invoke.cont193.i, label %while.body.i278.i + +while.body.i278.i: ; preds = %for.body185.i, %while.body.i278.i + %a.addr.016.i.i = phi i64 [ %div5.i.i, %while.body.i278.i ], [ %indvars.iv1058.i, %for.body185.i ] + %invBaseM.015.i.i = phi float [ %mul10.i.i, %while.body.i278.i ], [ 1.000000e+00, %for.body185.i ] + %reversedDigits.014.i.i = phi i64 [ %add.i279.i, %while.body.i278.i ], [ 0, %for.body185.i ] + %div5.i.i = udiv i64 %a.addr.016.i.i, %conv.i368.i %reass.add.i.i = sub i64 %reversedDigits.014.i.i, %div5.i.i - %reass.mul.i.i = mul i64 %reass.add.i.i, %conv.i381.i - %add.i288.i = add i64 %reass.mul.i.i, %a.addr.016.i.i - %mul10.i.i = fmul float %div3.i385.i, %invBaseM.015.i.i - %tobool.i.i = icmp uge i64 %a.addr.016.i.i, %conv.i381.i - %cmp.i289.i = icmp ult i64 %add.i288.i, %sub.i.i - %151 = select i1 %tobool.i.i, i1 %cmp.i289.i, i1 false - br i1 %151, label %while.body.i287.i, label %_ZN4pbrt14RadicalInverseEim.exit.i, !llvm.loop !55 - -_ZN4pbrt14RadicalInverseEim.exit.i: ; preds = %while.body.i287.i - %152 = uitofp i64 %add.i288.i to float + %reass.mul.i.i = mul i64 %reass.add.i.i, %conv.i368.i + %add.i279.i = add i64 %reass.mul.i.i, %a.addr.016.i.i + %mul10.i.i = fmul float %div3.i372.i, %invBaseM.015.i.i + %tobool.i.i = icmp uge i64 %a.addr.016.i.i, %conv.i368.i + %cmp.i280.i = icmp ult i64 %add.i279.i, %sub.i.i + %151 = select i1 %tobool.i.i, i1 %cmp.i280.i, i1 false + br i1 %151, label %while.body.i278.i, label %_ZN4pbrt14RadicalInverseEim.exit.i, !llvm.loop !55 + +_ZN4pbrt14RadicalInverseEim.exit.i: ; preds = %while.body.i278.i + %152 = uitofp i64 %add.i279.i to float %153 = fmul float %mul10.i.i, %152 - %cmp.i.i290.i = fcmp ogt float %153, 0x3FEFFFFFE0000000 - br label %while.body.i298.i - -while.body.i298.i: ; preds = %_ZN4pbrt14RadicalInverseEim.exit.i, %while.body.i298.i - %a.addr.016.i299.i = phi i64 [ %div5.i302.i, %while.body.i298.i ], [ %indvars.iv1081.i, %_ZN4pbrt14RadicalInverseEim.exit.i ] - %invBaseM.015.i300.i = phi float [ %mul10.i306.i, %while.body.i298.i ], [ 1.000000e+00, %_ZN4pbrt14RadicalInverseEim.exit.i ] - %reversedDigits.014.i301.i = phi i64 [ %add.i305.i, %while.body.i298.i ], [ 0, %_ZN4pbrt14RadicalInverseEim.exit.i ] - %div5.i302.i = udiv i64 %a.addr.016.i299.i, %conv.i397.i - %reass.add.i303.i = sub i64 %reversedDigits.014.i301.i, %div5.i302.i - %reass.mul.i304.i = mul i64 %reass.add.i303.i, %conv.i397.i - %add.i305.i = add i64 %reass.mul.i304.i, %a.addr.016.i299.i - %mul10.i306.i = fmul float %div3.i401.i, %invBaseM.015.i300.i - %tobool.i307.i = icmp uge i64 %a.addr.016.i299.i, %conv.i397.i - %cmp.i308.i = icmp ult i64 %add.i305.i, %sub.i294.i - %154 = select i1 %tobool.i307.i, i1 %cmp.i308.i, i1 false - br i1 %154, label %while.body.i298.i, label %while.end.loopexit.i309.i, !llvm.loop !55 - -while.end.loopexit.i309.i: ; preds = %while.body.i298.i - %.sroa.speculated.i291.i = select i1 %cmp.i.i290.i, float 0x3FEFFFFFE0000000, float %153 - %155 = uitofp i64 %add.i305.i to float - %156 = fmul float %mul10.i306.i, %155 + %cmp.i.i281.i = fcmp ogt float %153, 0x3FEFFFFFE0000000 + br label %while.body.i289.i + +while.body.i289.i: ; preds = %_ZN4pbrt14RadicalInverseEim.exit.i, %while.body.i289.i + %a.addr.016.i290.i = phi i64 [ %div5.i293.i, %while.body.i289.i ], [ %indvars.iv1058.i, %_ZN4pbrt14RadicalInverseEim.exit.i ] + %invBaseM.015.i291.i = phi float [ %mul10.i297.i, %while.body.i289.i ], [ 1.000000e+00, %_ZN4pbrt14RadicalInverseEim.exit.i ] + %reversedDigits.014.i292.i = phi i64 [ %add.i296.i, %while.body.i289.i ], [ 0, %_ZN4pbrt14RadicalInverseEim.exit.i ] + %div5.i293.i = udiv i64 %a.addr.016.i290.i, %conv.i384.i + %reass.add.i294.i = sub i64 %reversedDigits.014.i292.i, %div5.i293.i + %reass.mul.i295.i = mul i64 %reass.add.i294.i, %conv.i384.i + %add.i296.i = add i64 %reass.mul.i295.i, %a.addr.016.i290.i + %mul10.i297.i = fmul float %div3.i388.i, %invBaseM.015.i291.i + %tobool.i298.i = icmp uge i64 %a.addr.016.i290.i, %conv.i384.i + %cmp.i299.i = icmp ult i64 %add.i296.i, %sub.i285.i + %154 = select i1 %tobool.i298.i, i1 %cmp.i299.i, i1 false + br i1 %154, label %while.body.i289.i, label %while.end.loopexit.i300.i, !llvm.loop !55 + +while.end.loopexit.i300.i: ; preds = %while.body.i289.i + %.sroa.speculated.i282.i = select i1 %cmp.i.i281.i, float 0x3FEFFFFFE0000000, float %153 + %155 = uitofp i64 %add.i296.i to float + %156 = fmul float %mul10.i297.i, %155 br label %invoke.cont193.i -invoke.cont193.i: ; preds = %while.end.loopexit.i309.i, %for.body185.i - %.sroa.speculated.i2911101.i = phi float [ %.sroa.speculated.i291.i, %while.end.loopexit.i309.i ], [ 0.000000e+00, %for.body185.i ] - %mul12.i310.i = phi float [ %156, %while.end.loopexit.i309.i ], [ 0.000000e+00, %for.body185.i ] - %cmp.i.i311.i = fcmp ogt float %mul12.i310.i, 0x3FEFFFFFE0000000 - %.sroa.speculated.i312.i = select i1 %cmp.i.i311.i, float 0x3FEFFFFFE0000000, float %mul12.i310.i - %cmp.not.i.i317.i = icmp eq ptr %points.sroa.30.14927.i, %points.sroa.75.13926.i - br i1 %cmp.not.i.i317.i, label %if.else.i.i320.i, label %if.then.i.i318.i - -if.then.i.i318.i: ; preds = %invoke.cont193.i - store float %.sroa.speculated.i2911101.i, ptr %points.sroa.30.14927.i, align 4, !noalias !7 - %.sroa_idx652.i = getelementptr inbounds i8, ptr %points.sroa.30.14927.i, i64 4 - store float %.sroa.speculated.i312.i, ptr %.sroa_idx652.i, align 4, !noalias !7 - %.pre1089.i = load i32, ptr %nPoints.addr.i, align 4, !noalias !7 +invoke.cont193.i: ; preds = %while.end.loopexit.i300.i, %for.body185.i + %.sroa.speculated.i2821078.i = phi float [ %.sroa.speculated.i282.i, %while.end.loopexit.i300.i ], [ 0.000000e+00, %for.body185.i ] + %mul12.i301.i = phi float [ %156, %while.end.loopexit.i300.i ], [ 0.000000e+00, %for.body185.i ] + %cmp.i.i302.i = fcmp ogt float %mul12.i301.i, 0x3FEFFFFFE0000000 + %.sroa.speculated.i303.i = select i1 %cmp.i.i302.i, float 0x3FEFFFFFE0000000, float %mul12.i301.i + %cmp.not.i.i308.i = icmp eq ptr %points.sroa.30.14904.i, %points.sroa.75.13903.i + br i1 %cmp.not.i.i308.i, label %if.else.i.i311.i, label %if.then.i.i309.i + +if.then.i.i309.i: ; preds = %invoke.cont193.i + store float %.sroa.speculated.i2821078.i, ptr %points.sroa.30.14904.i, align 4, !noalias !7 + %.sroa_idx629.i = getelementptr inbounds i8, ptr %points.sroa.30.14904.i, i64 4 + store float %.sroa.speculated.i303.i, ptr %.sroa_idx629.i, align 4, !noalias !7 + %.pre1066.i = load i32, ptr %nPoints.addr.i, align 4, !noalias !7 br label %for.inc195.i -if.else.i.i320.i: ; preds = %invoke.cont193.i - %sub.ptr.lhs.cast.i.i.i.i.i321.i = ptrtoint ptr %points.sroa.30.14927.i to i64 - %sub.ptr.rhs.cast.i.i.i.i.i322.i = ptrtoint ptr %points.sroa.0.15928.i to i64 - %sub.ptr.sub.i.i.i.i.i323.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i321.i, %sub.ptr.rhs.cast.i.i.i.i.i322.i - %cmp.i.i.i.i324.i = icmp eq i64 %sub.ptr.sub.i.i.i.i.i323.i, 9223372036854775800 - br i1 %cmp.i.i.i.i324.i, label %if.then.i.i.i.i351.i, label %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i325.i +if.else.i.i311.i: ; preds = %invoke.cont193.i + %sub.ptr.lhs.cast.i.i.i.i.i312.i = ptrtoint ptr %points.sroa.30.14904.i to i64 + %sub.ptr.rhs.cast.i.i.i.i.i313.i = ptrtoint ptr %points.sroa.0.15905.i to i64 + %sub.ptr.sub.i.i.i.i.i314.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i312.i, %sub.ptr.rhs.cast.i.i.i.i.i313.i + %cmp.i.i.i.i315.i = icmp eq i64 %sub.ptr.sub.i.i.i.i.i314.i, 9223372036854775800 + br i1 %cmp.i.i.i.i315.i, label %if.then.i.i.i.i342.i, label %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i316.i -if.then.i.i.i.i351.i: ; preds = %if.else.i.i320.i +if.then.i.i.i.i342.i: ; preds = %if.else.i.i311.i invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.40) #33 - to label %.noexc352.i unwind label %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i.loopexit.split-lp, !noalias !7 + to label %.noexc343.i unwind label %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i.loopexit.split-lp, !noalias !7 -.noexc352.i: ; preds = %if.then.i.i.i.i351.i +.noexc343.i: ; preds = %if.then.i.i.i.i342.i unreachable -_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i325.i: ; preds = %if.else.i.i320.i - %sub.ptr.div.i.i.i.i.i326.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i323.i, 3 - %.sroa.speculated.i.i.i.i327.i = call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i.i.i.i326.i, i64 1) - %add.i.i.i.i328.i = add i64 %.sroa.speculated.i.i.i.i327.i, %sub.ptr.div.i.i.i.i.i326.i - %cmp7.i.i.i.i329.i = icmp ult i64 %add.i.i.i.i328.i, %sub.ptr.div.i.i.i.i.i326.i - %157 = call i64 @llvm.umin.i64(i64 %add.i.i.i.i328.i, i64 1152921504606846975) - %cond.i.i.i.i330.i = select i1 %cmp7.i.i.i.i329.i, i64 1152921504606846975, i64 %157 - %cmp.not.i.i.i.i331.i = icmp eq i64 %cond.i.i.i.i330.i, 0 - br i1 %cmp.not.i.i.i.i331.i, label %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i334.i, label %cond.true.i.i.i.i332.i - -cond.true.i.i.i.i332.i: ; preds = %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i325.i - %mul.i.i.i.i.i.i333.i = shl nuw nsw i64 %cond.i.i.i.i330.i, 3 - %call5.i.i.i.i.i.i354.i = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %mul.i.i.i.i.i.i333.i) #32 - to label %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i334.i unwind label %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i, !noalias !7 - -_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i334.i: ; preds = %cond.true.i.i.i.i332.i, %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i325.i - %cond.i10.i.i.i335.i = phi ptr [ null, %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i325.i ], [ %call5.i.i.i.i.i.i354.i, %cond.true.i.i.i.i332.i ] - %add.ptr.i.i.i336.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %cond.i10.i.i.i335.i, i64 %sub.ptr.div.i.i.i.i.i326.i - store float %.sroa.speculated.i2911101.i, ptr %add.ptr.i.i.i336.i, align 4, !noalias !7 - %add.ptr.i.i.i336.sroa_idx.i = getelementptr inbounds i8, ptr %add.ptr.i.i.i336.i, i64 4 - store float %.sroa.speculated.i312.i, ptr %add.ptr.i.i.i336.sroa_idx.i, align 4, !noalias !7 - %cmp.not5.i.i.i.i.i.i337.i = icmp eq ptr %points.sroa.0.15928.i, %points.sroa.30.14927.i - br i1 %cmp.not5.i.i.i.i.i.i337.i, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i344.i, label %for.body.i.i.i.i.i.i338.i - -for.body.i.i.i.i.i.i338.i: ; preds = %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i334.i, %for.body.i.i.i.i.i.i338.i - %__cur.07.i.i.i.i.i.i339.i = phi ptr [ %incdec.ptr1.i.i.i.i.i.i342.i, %for.body.i.i.i.i.i.i338.i ], [ %cond.i10.i.i.i335.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i334.i ] - %__first.addr.06.i.i.i.i.i.i340.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i341.i, %for.body.i.i.i.i.i.i338.i ], [ %points.sroa.0.15928.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i334.i ] +_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i316.i: ; preds = %if.else.i.i311.i + %sub.ptr.div.i.i.i.i.i317.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i314.i, 3 + %.sroa.speculated.i.i.i.i318.i = call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i.i.i.i317.i, i64 1) + %add.i.i.i.i319.i = add nsw i64 %.sroa.speculated.i.i.i.i318.i, %sub.ptr.div.i.i.i.i.i317.i + %cmp7.i.i.i.i320.i = icmp ult i64 %add.i.i.i.i319.i, %sub.ptr.div.i.i.i.i.i317.i + %157 = call i64 @llvm.umin.i64(i64 %add.i.i.i.i319.i, i64 1152921504606846975) + %cond.i.i.i.i321.i = select i1 %cmp7.i.i.i.i320.i, i64 1152921504606846975, i64 %157 + %cmp.not.i.i.i.i322.i = icmp eq i64 %cond.i.i.i.i321.i, 0 + br i1 %cmp.not.i.i.i.i322.i, label %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i325.i, label %cond.true.i.i.i.i323.i + +cond.true.i.i.i.i323.i: ; preds = %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i316.i + %mul.i.i.i.i.i.i324.i = shl nuw nsw i64 %cond.i.i.i.i321.i, 3 + %call5.i.i.i.i.i.i345.i = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %mul.i.i.i.i.i.i324.i) #32 + to label %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i325.i unwind label %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i, !noalias !7 + +_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i325.i: ; preds = %cond.true.i.i.i.i323.i, %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i316.i + %cond.i10.i.i.i326.i = phi ptr [ null, %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i316.i ], [ %call5.i.i.i.i.i.i345.i, %cond.true.i.i.i.i323.i ] + %add.ptr.i.i.i327.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %cond.i10.i.i.i326.i, i64 %sub.ptr.div.i.i.i.i.i317.i + store float %.sroa.speculated.i2821078.i, ptr %add.ptr.i.i.i327.i, align 4, !noalias !7 + %add.ptr.i.i.i327.sroa_idx.i = getelementptr inbounds i8, ptr %add.ptr.i.i.i327.i, i64 4 + store float %.sroa.speculated.i303.i, ptr %add.ptr.i.i.i327.sroa_idx.i, align 4, !noalias !7 + %cmp.not5.i.i.i.i.i.i328.i = icmp eq ptr %points.sroa.0.15905.i, %points.sroa.30.14904.i + br i1 %cmp.not5.i.i.i.i.i.i328.i, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i335.i, label %for.body.i.i.i.i.i.i329.i + +for.body.i.i.i.i.i.i329.i: ; preds = %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i325.i, %for.body.i.i.i.i.i.i329.i + %__cur.07.i.i.i.i.i.i330.i = phi ptr [ %incdec.ptr1.i.i.i.i.i.i333.i, %for.body.i.i.i.i.i.i329.i ], [ %cond.i10.i.i.i326.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i325.i ] + %__first.addr.06.i.i.i.i.i.i331.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i332.i, %for.body.i.i.i.i.i.i329.i ], [ %points.sroa.0.15905.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i325.i ] call void @llvm.experimental.noalias.scope.decl(metadata !56) call void @llvm.experimental.noalias.scope.decl(metadata !59) - %158 = load i64, ptr %__first.addr.06.i.i.i.i.i.i340.i, align 4, !alias.scope !59, !noalias !61 - store i64 %158, ptr %__cur.07.i.i.i.i.i.i339.i, align 4, !alias.scope !56, !noalias !62 - %incdec.ptr.i.i.i.i.i.i341.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %__first.addr.06.i.i.i.i.i.i340.i, i64 1 - %incdec.ptr1.i.i.i.i.i.i342.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %__cur.07.i.i.i.i.i.i339.i, i64 1 - %cmp.not.i.i.i.i.i.i343.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i341.i, %points.sroa.30.14927.i - br i1 %cmp.not.i.i.i.i.i.i343.i, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i344.i, label %for.body.i.i.i.i.i.i338.i, !llvm.loop !17 - -_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i344.i: ; preds = %for.body.i.i.i.i.i.i338.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i334.i - %__cur.0.lcssa.i.i.i.i.i.i345.i = phi ptr [ %cond.i10.i.i.i335.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i334.i ], [ %incdec.ptr1.i.i.i.i.i.i342.i, %for.body.i.i.i.i.i.i338.i ] - %tobool.not.i.i.i.i347.i = icmp eq ptr %points.sroa.0.15928.i, null - br i1 %tobool.not.i.i.i.i347.i, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i349.i, label %if.then.i20.i.i.i348.i - -if.then.i20.i.i.i348.i: ; preds = %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i344.i - call void @_ZdlPv(ptr noundef nonnull %points.sroa.0.15928.i) #34, !noalias !7 - br label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i349.i - -_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i349.i: ; preds = %if.then.i20.i.i.i348.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i344.i - %add.ptr19.i.i.i350.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %cond.i10.i.i.i335.i, i64 %cond.i.i.i.i330.i + %158 = load i64, ptr %__first.addr.06.i.i.i.i.i.i331.i, align 4, !alias.scope !59, !noalias !61 + store i64 %158, ptr %__cur.07.i.i.i.i.i.i330.i, align 4, !alias.scope !56, !noalias !62 + %incdec.ptr.i.i.i.i.i.i332.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %__first.addr.06.i.i.i.i.i.i331.i, i64 1 + %incdec.ptr1.i.i.i.i.i.i333.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %__cur.07.i.i.i.i.i.i330.i, i64 1 + %cmp.not.i.i.i.i.i.i334.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i332.i, %points.sroa.30.14904.i + br i1 %cmp.not.i.i.i.i.i.i334.i, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i335.i, label %for.body.i.i.i.i.i.i329.i, !llvm.loop !17 + +_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i335.i: ; preds = %for.body.i.i.i.i.i.i329.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i325.i + %__cur.0.lcssa.i.i.i.i.i.i336.i = phi ptr [ %cond.i10.i.i.i326.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i325.i ], [ %incdec.ptr1.i.i.i.i.i.i333.i, %for.body.i.i.i.i.i.i329.i ] + %tobool.not.i.i.i.i338.i = icmp eq ptr %points.sroa.0.15905.i, null + br i1 %tobool.not.i.i.i.i338.i, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i340.i, label %if.then.i20.i.i.i339.i + +if.then.i20.i.i.i339.i: ; preds = %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i335.i + call void @_ZdlPv(ptr noundef nonnull %points.sroa.0.15905.i) #34, !noalias !7 + br label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i340.i + +_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i340.i: ; preds = %if.then.i20.i.i.i339.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i335.i + %add.ptr19.i.i.i341.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %cond.i10.i.i.i326.i, i64 %cond.i.i.i.i321.i br label %for.inc195.i -for.inc195.i: ; preds = %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i349.i, %if.then.i.i318.i - %159 = phi i32 [ %150, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i349.i ], [ %.pre1089.i, %if.then.i.i318.i ] - %points.sroa.75.14.i = phi ptr [ %add.ptr19.i.i.i350.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i349.i ], [ %points.sroa.75.13926.i, %if.then.i.i318.i ] - %__cur.0.lcssa.i.i.i.i.i.i345.pn.i = phi ptr [ %__cur.0.lcssa.i.i.i.i.i.i345.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i349.i ], [ %points.sroa.30.14927.i, %if.then.i.i318.i ] - %points.sroa.0.16.i = phi ptr [ %cond.i10.i.i.i335.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i349.i ], [ %points.sroa.0.15928.i, %if.then.i.i318.i ] - %points.sroa.30.15.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %__cur.0.lcssa.i.i.i.i.i.i345.pn.i, i64 1 - %indvars.iv.next1082.i = add nuw nsw i64 %indvars.iv1081.i, 1 +for.inc195.i: ; preds = %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i340.i, %if.then.i.i309.i + %159 = phi i32 [ %150, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i340.i ], [ %.pre1066.i, %if.then.i.i309.i ] + %points.sroa.75.14.i = phi ptr [ %add.ptr19.i.i.i341.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i340.i ], [ %points.sroa.75.13903.i, %if.then.i.i309.i ] + %__cur.0.lcssa.i.i.i.i.i.i336.pn.i = phi ptr [ %__cur.0.lcssa.i.i.i.i.i.i336.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i340.i ], [ %points.sroa.30.14904.i, %if.then.i.i309.i ] + %points.sroa.0.16.i = phi ptr [ %cond.i10.i.i.i326.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i340.i ], [ %points.sroa.0.15905.i, %if.then.i.i309.i ] + %points.sroa.30.15.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %__cur.0.lcssa.i.i.i.i.i.i336.pn.i, i64 1 + %indvars.iv.next1059.i = add nuw nsw i64 %indvars.iv1058.i, 1 %160 = sext i32 %159 to i64 - %cmp184.i = icmp slt i64 %indvars.iv.next1082.i, %160 + %cmp184.i = icmp slt i64 %indvars.iv.next1059.i, %160 br i1 %cmp184.i, label %for.body185.i, label %cleanup.thread.i, !llvm.loop !63 if.else198.i: ; preds = %if.else178.i - %call.i356.i = call noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEPKc(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp216, ptr noundef nonnull @.str.31) #29, !noalias !7 - %cmp.i357.i = icmp eq i32 %call.i356.i, 0 - br i1 %cmp.i357.i, label %invoke.cont206.i, label %if.else232.i + %call.i347.i = call noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEPKc(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp216, ptr noundef nonnull @.str.31) #29, !noalias !7 + %cmp.i348.i = icmp eq i32 %call.i347.i, 0 + br i1 %cmp.i348.i, label %invoke.cont206.i, label %if.else232.i invoke.cont206.i: ; preds = %if.else198.i %161 = load ptr, ptr @_ZN4pbrt7OptionsE, align 8, !noalias !7 %162 = load i32, ptr %161, align 8, !noalias !7 %conv204.i = sext i32 %162 to i64 %conv205.i = sext i32 %93 to i64 - %shl.i.i358.i = shl nsw i64 %conv204.i, 1 - %or.i.i359.i = or disjoint i64 %shl.i.i358.i, 1 - %add.i.i361.i = add nsw i64 %or.i.i359.i, %conv205.i - %mul.i1.i.i362.i = mul i64 %add.i.i361.i, 6364136223846793005 - %add.i3.i.i363.i = add i64 %mul.i1.i.i362.i, %or.i.i359.i - %163 = lshr i64 %add.i3.i.i363.i, 45 - %164 = lshr i64 %add.i3.i.i363.i, 27 + %shl.i.i349.i = shl nsw i64 %conv204.i, 1 + %or.i.i350.i = or disjoint i64 %shl.i.i349.i, 1 + %add.i.i352.i = add nsw i64 %or.i.i350.i, %conv205.i + %mul.i1.i.i353.i = mul i64 %add.i.i352.i, 6364136223846793005 + %add.i3.i.i354.i = add i64 %mul.i1.i.i353.i, %or.i.i350.i + %163 = lshr i64 %add.i3.i.i354.i, 45 + %164 = lshr i64 %add.i3.i.i354.i, 27 %shr3.i.i = xor i64 %163, %164 - %conv.i366.i = trunc i64 %shr3.i.i to i32 - %shr4.i.i = lshr i64 %add.i3.i.i363.i, 59 + %conv.i357.i = trunc i64 %shr3.i.i to i32 + %shr4.i.i = lshr i64 %add.i3.i.i354.i, 59 %conv5.i.i = trunc i64 %shr4.i.i to i32 - %shr6.i.i = lshr i32 %conv.i366.i, %conv5.i.i - %add7.i.i = sub nsw i32 0, %conv5.i.i - %and.i.i = and i32 %add7.i.i, 31 - %shl.i.i = shl i32 %conv.i366.i, %and.i.i - %or.i.i = or i32 %shr6.i.i, %shl.i.i - %call.i367.i = call noundef ptr @_ZN4pstd3pmr19new_delete_resourceEv() #29, !noalias !7 - invoke void @_ZN4pbrt16DigitPermutationC2EijN4pstd3pmr21polymorphic_allocatorISt4byteEE(ptr noundef nonnull align 8 dereferenceable(16) %perm2.i, i32 noundef 2, i32 noundef %or.i.i, ptr %call.i367.i) + %or.i.i = call noundef i32 @llvm.fshr.i32(i32 %conv.i357.i, i32 %conv.i357.i, i32 %conv5.i.i) + %call.i358.i = call noundef ptr @_ZN4pstd3pmr19new_delete_resourceEv() #29, !noalias !7 + invoke void @_ZN4pbrt16DigitPermutationC2EijN4pstd3pmr21polymorphic_allocatorISt4byteEE(ptr noundef nonnull align 8 dereferenceable(16) %perm2.i, i32 noundef 2, i32 noundef %or.i.i, ptr %call.i358.i) to label %invoke.cont210.i unwind label %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i.loopexit, !noalias !7 invoke.cont210.i: ; preds = %invoke.cont206.i - %mul.i364.i = mul i64 %add.i3.i.i363.i, 6364136223846793005 - %add.i365.i = add i64 %mul.i364.i, %or.i.i359.i - %165 = lshr i64 %add.i365.i, 45 - %166 = lshr i64 %add.i365.i, 27 - %shr3.i371.i = xor i64 %165, %166 - %conv.i372.i = trunc i64 %shr3.i371.i to i32 - %shr4.i373.i = lshr i64 %add.i365.i, 59 - %conv5.i374.i = trunc i64 %shr4.i373.i to i32 - %shr6.i375.i = lshr i32 %conv.i372.i, %conv5.i374.i - %add7.i376.i = sub nsw i32 0, %conv5.i374.i - %and.i377.i = and i32 %add7.i376.i, 31 - %shl.i378.i = shl i32 %conv.i372.i, %and.i377.i - %or.i379.i = or i32 %shr6.i375.i, %shl.i378.i - %call.i380.i = call noundef ptr @_ZN4pstd3pmr19new_delete_resourceEv() #29, !noalias !7 - invoke void @_ZN4pbrt16DigitPermutationC2EijN4pstd3pmr21polymorphic_allocatorISt4byteEE(ptr noundef nonnull align 8 dereferenceable(16) %perm3.i, i32 noundef 3, i32 noundef %or.i379.i, ptr %call.i380.i) + %mul.i355.i = mul i64 %add.i3.i.i354.i, 6364136223846793005 + %add.i356.i = add i64 %mul.i355.i, %or.i.i350.i + %165 = lshr i64 %add.i356.i, 45 + %166 = lshr i64 %add.i356.i, 27 + %shr3.i362.i = xor i64 %165, %166 + %conv.i363.i = trunc i64 %shr3.i362.i to i32 + %shr4.i364.i = lshr i64 %add.i356.i, 59 + %conv5.i365.i = trunc i64 %shr4.i364.i to i32 + %or.i366.i = call noundef i32 @llvm.fshr.i32(i32 %conv.i363.i, i32 %conv.i363.i, i32 %conv5.i365.i) + %call.i367.i = call noundef ptr @_ZN4pstd3pmr19new_delete_resourceEv() #29, !noalias !7 + invoke void @_ZN4pbrt16DigitPermutationC2EijN4pstd3pmr21polymorphic_allocatorISt4byteEE(ptr noundef nonnull align 8 dereferenceable(16) %perm3.i, i32 noundef 3, i32 noundef %or.i366.i, ptr %call.i367.i) to label %for.cond217.preheader.i unwind label %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i.loopexit, !noalias !7 for.cond217.preheader.i: ; preds = %invoke.cont210.i %167 = load i32, ptr %nPoints.addr.i, align 4, !noalias !7 - %cmp218917.i = icmp sgt i32 %167, 0 - br i1 %cmp218917.i, label %for.body219.lr.ph.i, label %cleanup.thread.i + %cmp218894.i = icmp sgt i32 %167, 0 + br i1 %cmp218894.i, label %for.body219.lr.ph.i, label %cleanup.thread.i for.body219.lr.ph.i: ; preds = %for.cond217.preheader.i - %div.i382.i = udiv i64 -1, %conv.i381.i - %sub.i383.i = sub nuw i64 %div.i382.i, %conv.i381.i - %div.i398.i = udiv i64 -1, %conv.i397.i - %sub.i399.i = sub nuw i64 %div.i398.i, %conv.i397.i + %div.i369.i = udiv i64 -1, %conv.i368.i + %sub.i370.i = sub nuw i64 %div.i369.i, %conv.i368.i + %div.i385.i = udiv i64 -1, %conv.i384.i + %sub.i386.i = sub nuw i64 %div.i385.i, %conv.i384.i br label %for.body219.i for.body219.i: ; preds = %for.inc229.i, %for.body219.lr.ph.i - %indvars.iv1078.i = phi i64 [ 0, %for.body219.lr.ph.i ], [ %indvars.iv.next1079.i, %for.inc229.i ] - %points.sroa.0.17920.i = phi ptr [ %points.sroa.30.0.i413424, %for.body219.lr.ph.i ], [ %points.sroa.0.18.i, %for.inc229.i ] - %points.sroa.30.16919.i = phi ptr [ %points.sroa.30.0.i413424, %for.body219.lr.ph.i ], [ %points.sroa.30.17.i, %for.inc229.i ] - %points.sroa.75.15918.i = phi ptr [ %points.sroa.75.0.i411426, %for.body219.lr.ph.i ], [ %points.sroa.75.16.i, %for.inc229.i ] + %indvars.iv1055.i = phi i64 [ 0, %for.body219.lr.ph.i ], [ %indvars.iv.next1056.i, %for.inc229.i ] + %points.sroa.0.17897.i = phi ptr [ %points.sroa.30.0.i413424, %for.body219.lr.ph.i ], [ %points.sroa.0.18.i, %for.inc229.i ] + %points.sroa.30.16896.i = phi ptr [ %points.sroa.30.0.i413424, %for.body219.lr.ph.i ], [ %points.sroa.30.17.i, %for.inc229.i ] + %points.sroa.75.15895.i = phi ptr [ %points.sroa.75.0.i411426, %for.body219.lr.ph.i ], [ %points.sroa.75.16.i, %for.inc229.i ] br i1 %cmp15.i.i, label %while.body.lr.ph.i.i, label %invoke.cont222.i while.body.lr.ph.i.i: ; preds = %for.body219.i %168 = load ptr, ptr %permutations.i.i.i, align 8, !noalias !7 %169 = load i32, ptr %perm2.i, align 8, !noalias !7 - br label %while.body.i389.i - -while.body.i389.i: ; preds = %while.body.i389.i, %while.body.lr.ph.i.i - %a.addr.020.i.i = phi i64 [ %indvars.iv1078.i, %while.body.lr.ph.i.i ], [ %div9.i.i, %while.body.i389.i ] - %invBaseM.019.i.i = phi float [ 1.000000e+00, %while.body.lr.ph.i.i ], [ %mul17.i.i, %while.body.i389.i ] - %digitIndex.018.i.i = phi i32 [ 0, %while.body.lr.ph.i.i ], [ %inc.i393.i, %while.body.i389.i ] - %reversedDigits.017.i.i = phi i64 [ 0, %while.body.lr.ph.i.i ], [ %add.i392.i, %while.body.i389.i ] - %div9.i.i = udiv i64 %a.addr.020.i.i, %conv.i381.i - %mul11.i.i = mul i64 %div9.i.i, %conv.i381.i - %sub12.i.i.recomposed = urem i64 %a.addr.020.i.i, %conv.i381.i + br label %while.body.i376.i + +while.body.i376.i: ; preds = %while.body.i376.i, %while.body.lr.ph.i.i + %a.addr.020.i.i = phi i64 [ %indvars.iv1055.i, %while.body.lr.ph.i.i ], [ %div9.i.i, %while.body.i376.i ] + %invBaseM.019.i.i = phi float [ 1.000000e+00, %while.body.lr.ph.i.i ], [ %mul17.i.i, %while.body.i376.i ] + %digitIndex.018.i.i = phi i32 [ 0, %while.body.lr.ph.i.i ], [ %inc.i380.i, %while.body.i376.i ] + %reversedDigits.017.i.i = phi i64 [ 0, %while.body.lr.ph.i.i ], [ %add.i379.i, %while.body.i376.i ] + %div9.i.i = udiv i64 %a.addr.020.i.i, %conv.i368.i + %mul11.i.i = mul i64 %div9.i.i, %conv.i368.i + %sub12.i.i.recomposed = urem i64 %a.addr.020.i.i, %conv.i368.i %conv13.i.i = trunc i64 %sub12.i.i.recomposed to i32 - %mul15.i.i = mul i64 %reversedDigits.017.i.i, %conv.i381.i - %mul.i.i390.i = mul nsw i32 %digitIndex.018.i.i, %169 - %add.i.i391.i = add nsw i32 %mul.i.i390.i, %conv13.i.i - %idxprom.i.i.i = sext i32 %add.i.i391.i to i64 + %mul15.i.i = mul i64 %reversedDigits.017.i.i, %conv.i368.i + %mul.i.i377.i = mul nsw i32 %digitIndex.018.i.i, %169 + %add.i.i378.i = add nsw i32 %mul.i.i377.i, %conv13.i.i + %idxprom.i.i.i = sext i32 %add.i.i378.i to i64 %arrayidx.i.i.i = getelementptr inbounds i16, ptr %168, i64 %idxprom.i.i.i %170 = load i16, ptr %arrayidx.i.i.i, align 2, !noalias !7 %conv16.i.i = zext i16 %170 to i64 - %add.i392.i = add i64 %mul15.i.i, %conv16.i.i - %mul17.i.i = fmul float %div3.i385.i, %invBaseM.019.i.i - %inc.i393.i = add nuw nsw i32 %digitIndex.018.i.i, 1 - %mul.i394.i = fmul float %mul17.i.i, %conv5.i386.i - %sub6.i.i = fsub float 1.000000e+00, %mul.i394.i - %cmp.i395.i = fcmp olt float %sub6.i.i, 1.000000e+00 - %cmp7.i.i = icmp ult i64 %add.i392.i, %sub.i383.i - %171 = select i1 %cmp.i395.i, i1 %cmp7.i.i, i1 false - br i1 %171, label %while.body.i389.i, label %while.end.loopexit.i396.i, !llvm.loop !64 - -while.end.loopexit.i396.i: ; preds = %while.body.i389.i - %172 = uitofp i64 %add.i392.i to float + %add.i379.i = add i64 %mul15.i.i, %conv16.i.i + %mul17.i.i = fmul float %div3.i372.i, %invBaseM.019.i.i + %inc.i380.i = add nuw nsw i32 %digitIndex.018.i.i, 1 + %mul.i381.i = fmul float %mul17.i.i, %conv5.i373.i + %sub6.i.i = fsub float 1.000000e+00, %mul.i381.i + %cmp.i382.i = fcmp olt float %sub6.i.i, 1.000000e+00 + %cmp7.i.i = icmp ult i64 %add.i379.i, %sub.i370.i + %171 = select i1 %cmp.i382.i, i1 %cmp7.i.i, i1 false + br i1 %171, label %while.body.i376.i, label %while.end.loopexit.i383.i, !llvm.loop !64 + +while.end.loopexit.i383.i: ; preds = %while.body.i376.i + %172 = uitofp i64 %add.i379.i to float %173 = fmul float %mul17.i.i, %172 br label %invoke.cont222.i -invoke.cont222.i: ; preds = %while.end.loopexit.i396.i, %for.body219.i - %mul19.i.i = phi float [ 0.000000e+00, %for.body219.i ], [ %173, %while.end.loopexit.i396.i ] - %cmp.i.i387.i = fcmp ogt float %mul19.i.i, 0x3FEFFFFFE0000000 - %.sroa.speculated.i388.i = select i1 %cmp.i.i387.i, float 0x3FEFFFFFE0000000, float %mul19.i.i - br i1 %cmp15.i405.i, label %while.body.lr.ph.i409.i, label %invoke.cont227.i +invoke.cont222.i: ; preds = %while.end.loopexit.i383.i, %for.body219.i + %mul19.i.i = phi float [ 0.000000e+00, %for.body219.i ], [ %173, %while.end.loopexit.i383.i ] + %cmp.i.i374.i = fcmp ogt float %mul19.i.i, 0x3FEFFFFFE0000000 + %.sroa.speculated.i375.i = select i1 %cmp.i.i374.i, float 0x3FEFFFFFE0000000, float %mul19.i.i + br i1 %cmp15.i392.i, label %while.body.lr.ph.i396.i, label %invoke.cont227.i -while.body.lr.ph.i409.i: ; preds = %invoke.cont222.i - %174 = load ptr, ptr %permutations.i.i410.i, align 8, !noalias !7 +while.body.lr.ph.i396.i: ; preds = %invoke.cont222.i + %174 = load ptr, ptr %permutations.i.i397.i, align 8, !noalias !7 %175 = load i32, ptr %perm3.i, align 8, !noalias !7 - br label %while.body.i411.i - -while.body.i411.i: ; preds = %while.body.i411.i, %while.body.lr.ph.i409.i - %a.addr.020.i412.i = phi i64 [ %indvars.iv1078.i, %while.body.lr.ph.i409.i ], [ %div9.i416.i, %while.body.i411.i ] - %invBaseM.019.i413.i = phi float [ 1.000000e+00, %while.body.lr.ph.i409.i ], [ %mul17.i427.i, %while.body.i411.i ] - %digitIndex.018.i414.i = phi i32 [ 0, %while.body.lr.ph.i409.i ], [ %inc.i428.i, %while.body.i411.i ] - %reversedDigits.017.i415.i = phi i64 [ 0, %while.body.lr.ph.i409.i ], [ %add.i426.i, %while.body.i411.i ] - %div9.i416.i = udiv i64 %a.addr.020.i412.i, %conv.i397.i - %mul11.i417.i = mul i64 %div9.i416.i, %conv.i397.i - %sub12.i418.i.recomposed = urem i64 %a.addr.020.i412.i, %conv.i397.i - %conv13.i419.i = trunc i64 %sub12.i418.i.recomposed to i32 - %mul15.i420.i = mul i64 %reversedDigits.017.i415.i, %conv.i397.i - %mul.i.i421.i = mul nsw i32 %digitIndex.018.i414.i, %175 - %add.i.i422.i = add nsw i32 %mul.i.i421.i, %conv13.i419.i - %idxprom.i.i423.i = sext i32 %add.i.i422.i to i64 - %arrayidx.i.i424.i = getelementptr inbounds i16, ptr %174, i64 %idxprom.i.i423.i - %176 = load i16, ptr %arrayidx.i.i424.i, align 2, !noalias !7 - %conv16.i425.i = zext i16 %176 to i64 - %add.i426.i = add i64 %mul15.i420.i, %conv16.i425.i - %mul17.i427.i = fmul float %div3.i401.i, %invBaseM.019.i413.i - %inc.i428.i = add nuw nsw i32 %digitIndex.018.i414.i, 1 - %mul.i429.i = fmul float %mul17.i427.i, %conv5.i403.i - %sub6.i430.i = fsub float 1.000000e+00, %mul.i429.i - %cmp.i431.i = fcmp olt float %sub6.i430.i, 1.000000e+00 - %cmp7.i432.i = icmp ult i64 %add.i426.i, %sub.i399.i - %177 = select i1 %cmp.i431.i, i1 %cmp7.i432.i, i1 false - br i1 %177, label %while.body.i411.i, label %while.end.loopexit.i433.i, !llvm.loop !64 - -while.end.loopexit.i433.i: ; preds = %while.body.i411.i - %178 = uitofp i64 %add.i426.i to float - %179 = fmul float %mul17.i427.i, %178 + br label %while.body.i398.i + +while.body.i398.i: ; preds = %while.body.i398.i, %while.body.lr.ph.i396.i + %a.addr.020.i399.i = phi i64 [ %indvars.iv1055.i, %while.body.lr.ph.i396.i ], [ %div9.i403.i, %while.body.i398.i ] + %invBaseM.019.i400.i = phi float [ 1.000000e+00, %while.body.lr.ph.i396.i ], [ %mul17.i414.i, %while.body.i398.i ] + %digitIndex.018.i401.i = phi i32 [ 0, %while.body.lr.ph.i396.i ], [ %inc.i415.i, %while.body.i398.i ] + %reversedDigits.017.i402.i = phi i64 [ 0, %while.body.lr.ph.i396.i ], [ %add.i413.i, %while.body.i398.i ] + %div9.i403.i = udiv i64 %a.addr.020.i399.i, %conv.i384.i + %mul11.i404.i = mul i64 %div9.i403.i, %conv.i384.i + %sub12.i405.i.recomposed = urem i64 %a.addr.020.i399.i, %conv.i384.i + %conv13.i406.i = trunc i64 %sub12.i405.i.recomposed to i32 + %mul15.i407.i = mul i64 %reversedDigits.017.i402.i, %conv.i384.i + %mul.i.i408.i = mul nsw i32 %digitIndex.018.i401.i, %175 + %add.i.i409.i = add nsw i32 %mul.i.i408.i, %conv13.i406.i + %idxprom.i.i410.i = sext i32 %add.i.i409.i to i64 + %arrayidx.i.i411.i = getelementptr inbounds i16, ptr %174, i64 %idxprom.i.i410.i + %176 = load i16, ptr %arrayidx.i.i411.i, align 2, !noalias !7 + %conv16.i412.i = zext i16 %176 to i64 + %add.i413.i = add i64 %mul15.i407.i, %conv16.i412.i + %mul17.i414.i = fmul float %div3.i388.i, %invBaseM.019.i400.i + %inc.i415.i = add nuw nsw i32 %digitIndex.018.i401.i, 1 + %mul.i416.i = fmul float %mul17.i414.i, %conv5.i390.i + %sub6.i417.i = fsub float 1.000000e+00, %mul.i416.i + %cmp.i418.i = fcmp olt float %sub6.i417.i, 1.000000e+00 + %cmp7.i419.i = icmp ult i64 %add.i413.i, %sub.i386.i + %177 = select i1 %cmp.i418.i, i1 %cmp7.i419.i, i1 false + br i1 %177, label %while.body.i398.i, label %while.end.loopexit.i420.i, !llvm.loop !64 + +while.end.loopexit.i420.i: ; preds = %while.body.i398.i + %178 = uitofp i64 %add.i413.i to float + %179 = fmul float %mul17.i414.i, %178 br label %invoke.cont227.i -invoke.cont227.i: ; preds = %while.end.loopexit.i433.i, %invoke.cont222.i - %mul19.i406.i = phi float [ 0.000000e+00, %invoke.cont222.i ], [ %179, %while.end.loopexit.i433.i ] - %cmp.i.i407.i = fcmp ogt float %mul19.i406.i, 0x3FEFFFFFE0000000 - %.sroa.speculated.i408.i = select i1 %cmp.i.i407.i, float 0x3FEFFFFFE0000000, float %mul19.i406.i - %cmp.not.i.i438.i = icmp eq ptr %points.sroa.30.16919.i, %points.sroa.75.15918.i - br i1 %cmp.not.i.i438.i, label %if.else.i.i441.i, label %if.then.i.i439.i - -if.then.i.i439.i: ; preds = %invoke.cont227.i - store float %.sroa.speculated.i388.i, ptr %points.sroa.30.16919.i, align 4, !noalias !7 - %.sroa_idx646.i = getelementptr inbounds i8, ptr %points.sroa.30.16919.i, i64 4 - store float %.sroa.speculated.i408.i, ptr %.sroa_idx646.i, align 4, !noalias !7 +invoke.cont227.i: ; preds = %while.end.loopexit.i420.i, %invoke.cont222.i + %mul19.i393.i = phi float [ 0.000000e+00, %invoke.cont222.i ], [ %179, %while.end.loopexit.i420.i ] + %cmp.i.i394.i = fcmp ogt float %mul19.i393.i, 0x3FEFFFFFE0000000 + %.sroa.speculated.i395.i = select i1 %cmp.i.i394.i, float 0x3FEFFFFFE0000000, float %mul19.i393.i + %cmp.not.i.i425.i = icmp eq ptr %points.sroa.30.16896.i, %points.sroa.75.15895.i + br i1 %cmp.not.i.i425.i, label %if.else.i.i428.i, label %if.then.i.i426.i + +if.then.i.i426.i: ; preds = %invoke.cont227.i + store float %.sroa.speculated.i375.i, ptr %points.sroa.30.16896.i, align 4, !noalias !7 + %.sroa_idx623.i = getelementptr inbounds i8, ptr %points.sroa.30.16896.i, i64 4 + store float %.sroa.speculated.i395.i, ptr %.sroa_idx623.i, align 4, !noalias !7 br label %for.inc229.i -if.else.i.i441.i: ; preds = %invoke.cont227.i - %sub.ptr.lhs.cast.i.i.i.i.i442.i = ptrtoint ptr %points.sroa.30.16919.i to i64 - %sub.ptr.rhs.cast.i.i.i.i.i443.i = ptrtoint ptr %points.sroa.0.17920.i to i64 - %sub.ptr.sub.i.i.i.i.i444.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i442.i, %sub.ptr.rhs.cast.i.i.i.i.i443.i - %cmp.i.i.i.i445.i = icmp eq i64 %sub.ptr.sub.i.i.i.i.i444.i, 9223372036854775800 - br i1 %cmp.i.i.i.i445.i, label %if.then.i.i.i.i472.i, label %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i446.i +if.else.i.i428.i: ; preds = %invoke.cont227.i + %sub.ptr.lhs.cast.i.i.i.i.i429.i = ptrtoint ptr %points.sroa.30.16896.i to i64 + %sub.ptr.rhs.cast.i.i.i.i.i430.i = ptrtoint ptr %points.sroa.0.17897.i to i64 + %sub.ptr.sub.i.i.i.i.i431.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i429.i, %sub.ptr.rhs.cast.i.i.i.i.i430.i + %cmp.i.i.i.i432.i = icmp eq i64 %sub.ptr.sub.i.i.i.i.i431.i, 9223372036854775800 + br i1 %cmp.i.i.i.i432.i, label %if.then.i.i.i.i459.i, label %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i433.i -if.then.i.i.i.i472.i: ; preds = %if.else.i.i441.i +if.then.i.i.i.i459.i: ; preds = %if.else.i.i428.i invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.40) #33 - to label %.noexc473.i unwind label %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i.loopexit.split-lp, !noalias !7 + to label %.noexc460.i unwind label %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i.loopexit.split-lp, !noalias !7 -.noexc473.i: ; preds = %if.then.i.i.i.i472.i +.noexc460.i: ; preds = %if.then.i.i.i.i459.i unreachable -_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i446.i: ; preds = %if.else.i.i441.i - %sub.ptr.div.i.i.i.i.i447.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i444.i, 3 - %.sroa.speculated.i.i.i.i448.i = call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i.i.i.i447.i, i64 1) - %add.i.i.i.i449.i = add i64 %.sroa.speculated.i.i.i.i448.i, %sub.ptr.div.i.i.i.i.i447.i - %cmp7.i.i.i.i450.i = icmp ult i64 %add.i.i.i.i449.i, %sub.ptr.div.i.i.i.i.i447.i - %180 = call i64 @llvm.umin.i64(i64 %add.i.i.i.i449.i, i64 1152921504606846975) - %cond.i.i.i.i451.i = select i1 %cmp7.i.i.i.i450.i, i64 1152921504606846975, i64 %180 - %cmp.not.i.i.i.i452.i = icmp eq i64 %cond.i.i.i.i451.i, 0 - br i1 %cmp.not.i.i.i.i452.i, label %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i455.i, label %cond.true.i.i.i.i453.i - -cond.true.i.i.i.i453.i: ; preds = %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i446.i - %mul.i.i.i.i.i.i454.i = shl nuw nsw i64 %cond.i.i.i.i451.i, 3 - %call5.i.i.i.i.i.i475.i = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %mul.i.i.i.i.i.i454.i) #32 - to label %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i455.i unwind label %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i, !noalias !7 - -_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i455.i: ; preds = %cond.true.i.i.i.i453.i, %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i446.i - %cond.i10.i.i.i456.i = phi ptr [ null, %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i446.i ], [ %call5.i.i.i.i.i.i475.i, %cond.true.i.i.i.i453.i ] - %add.ptr.i.i.i457.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %cond.i10.i.i.i456.i, i64 %sub.ptr.div.i.i.i.i.i447.i - store float %.sroa.speculated.i388.i, ptr %add.ptr.i.i.i457.i, align 4, !noalias !7 - %add.ptr.i.i.i457.sroa_idx.i = getelementptr inbounds i8, ptr %add.ptr.i.i.i457.i, i64 4 - store float %.sroa.speculated.i408.i, ptr %add.ptr.i.i.i457.sroa_idx.i, align 4, !noalias !7 - %cmp.not5.i.i.i.i.i.i458.i = icmp eq ptr %points.sroa.0.17920.i, %points.sroa.30.16919.i - br i1 %cmp.not5.i.i.i.i.i.i458.i, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i465.i, label %for.body.i.i.i.i.i.i459.i - -for.body.i.i.i.i.i.i459.i: ; preds = %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i455.i, %for.body.i.i.i.i.i.i459.i - %__cur.07.i.i.i.i.i.i460.i = phi ptr [ %incdec.ptr1.i.i.i.i.i.i463.i, %for.body.i.i.i.i.i.i459.i ], [ %cond.i10.i.i.i456.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i455.i ] - %__first.addr.06.i.i.i.i.i.i461.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i462.i, %for.body.i.i.i.i.i.i459.i ], [ %points.sroa.0.17920.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i455.i ] +_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i433.i: ; preds = %if.else.i.i428.i + %sub.ptr.div.i.i.i.i.i434.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i431.i, 3 + %.sroa.speculated.i.i.i.i435.i = call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i.i.i.i434.i, i64 1) + %add.i.i.i.i436.i = add nsw i64 %.sroa.speculated.i.i.i.i435.i, %sub.ptr.div.i.i.i.i.i434.i + %cmp7.i.i.i.i437.i = icmp ult i64 %add.i.i.i.i436.i, %sub.ptr.div.i.i.i.i.i434.i + %180 = call i64 @llvm.umin.i64(i64 %add.i.i.i.i436.i, i64 1152921504606846975) + %cond.i.i.i.i438.i = select i1 %cmp7.i.i.i.i437.i, i64 1152921504606846975, i64 %180 + %cmp.not.i.i.i.i439.i = icmp eq i64 %cond.i.i.i.i438.i, 0 + br i1 %cmp.not.i.i.i.i439.i, label %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i442.i, label %cond.true.i.i.i.i440.i + +cond.true.i.i.i.i440.i: ; preds = %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i433.i + %mul.i.i.i.i.i.i441.i = shl nuw nsw i64 %cond.i.i.i.i438.i, 3 + %call5.i.i.i.i.i.i462.i = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %mul.i.i.i.i.i.i441.i) #32 + to label %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i442.i unwind label %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i, !noalias !7 + +_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i442.i: ; preds = %cond.true.i.i.i.i440.i, %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i433.i + %cond.i10.i.i.i443.i = phi ptr [ null, %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i433.i ], [ %call5.i.i.i.i.i.i462.i, %cond.true.i.i.i.i440.i ] + %add.ptr.i.i.i444.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %cond.i10.i.i.i443.i, i64 %sub.ptr.div.i.i.i.i.i434.i + store float %.sroa.speculated.i375.i, ptr %add.ptr.i.i.i444.i, align 4, !noalias !7 + %add.ptr.i.i.i444.sroa_idx.i = getelementptr inbounds i8, ptr %add.ptr.i.i.i444.i, i64 4 + store float %.sroa.speculated.i395.i, ptr %add.ptr.i.i.i444.sroa_idx.i, align 4, !noalias !7 + %cmp.not5.i.i.i.i.i.i445.i = icmp eq ptr %points.sroa.0.17897.i, %points.sroa.30.16896.i + br i1 %cmp.not5.i.i.i.i.i.i445.i, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i452.i, label %for.body.i.i.i.i.i.i446.i + +for.body.i.i.i.i.i.i446.i: ; preds = %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i442.i, %for.body.i.i.i.i.i.i446.i + %__cur.07.i.i.i.i.i.i447.i = phi ptr [ %incdec.ptr1.i.i.i.i.i.i450.i, %for.body.i.i.i.i.i.i446.i ], [ %cond.i10.i.i.i443.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i442.i ] + %__first.addr.06.i.i.i.i.i.i448.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i449.i, %for.body.i.i.i.i.i.i446.i ], [ %points.sroa.0.17897.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i442.i ] call void @llvm.experimental.noalias.scope.decl(metadata !65) call void @llvm.experimental.noalias.scope.decl(metadata !68) - %181 = load i64, ptr %__first.addr.06.i.i.i.i.i.i461.i, align 4, !alias.scope !68, !noalias !70 - store i64 %181, ptr %__cur.07.i.i.i.i.i.i460.i, align 4, !alias.scope !65, !noalias !71 - %incdec.ptr.i.i.i.i.i.i462.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %__first.addr.06.i.i.i.i.i.i461.i, i64 1 - %incdec.ptr1.i.i.i.i.i.i463.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %__cur.07.i.i.i.i.i.i460.i, i64 1 - %cmp.not.i.i.i.i.i.i464.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i462.i, %points.sroa.30.16919.i - br i1 %cmp.not.i.i.i.i.i.i464.i, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i465.i, label %for.body.i.i.i.i.i.i459.i, !llvm.loop !17 - -_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i465.i: ; preds = %for.body.i.i.i.i.i.i459.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i455.i - %__cur.0.lcssa.i.i.i.i.i.i466.i = phi ptr [ %cond.i10.i.i.i456.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i455.i ], [ %incdec.ptr1.i.i.i.i.i.i463.i, %for.body.i.i.i.i.i.i459.i ] - %tobool.not.i.i.i.i468.i = icmp eq ptr %points.sroa.0.17920.i, null - br i1 %tobool.not.i.i.i.i468.i, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i470.i, label %if.then.i20.i.i.i469.i - -if.then.i20.i.i.i469.i: ; preds = %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i465.i - call void @_ZdlPv(ptr noundef nonnull %points.sroa.0.17920.i) #34, !noalias !7 - br label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i470.i - -_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i470.i: ; preds = %if.then.i20.i.i.i469.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i465.i - %add.ptr19.i.i.i471.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %cond.i10.i.i.i456.i, i64 %cond.i.i.i.i451.i + %181 = load i64, ptr %__first.addr.06.i.i.i.i.i.i448.i, align 4, !alias.scope !68, !noalias !70 + store i64 %181, ptr %__cur.07.i.i.i.i.i.i447.i, align 4, !alias.scope !65, !noalias !71 + %incdec.ptr.i.i.i.i.i.i449.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %__first.addr.06.i.i.i.i.i.i448.i, i64 1 + %incdec.ptr1.i.i.i.i.i.i450.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %__cur.07.i.i.i.i.i.i447.i, i64 1 + %cmp.not.i.i.i.i.i.i451.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i449.i, %points.sroa.30.16896.i + br i1 %cmp.not.i.i.i.i.i.i451.i, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i452.i, label %for.body.i.i.i.i.i.i446.i, !llvm.loop !17 + +_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i452.i: ; preds = %for.body.i.i.i.i.i.i446.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i442.i + %__cur.0.lcssa.i.i.i.i.i.i453.i = phi ptr [ %cond.i10.i.i.i443.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i442.i ], [ %incdec.ptr1.i.i.i.i.i.i450.i, %for.body.i.i.i.i.i.i446.i ] + %tobool.not.i.i.i.i455.i = icmp eq ptr %points.sroa.0.17897.i, null + br i1 %tobool.not.i.i.i.i455.i, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i457.i, label %if.then.i20.i.i.i456.i + +if.then.i20.i.i.i456.i: ; preds = %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i452.i + call void @_ZdlPv(ptr noundef nonnull %points.sroa.0.17897.i) #34, !noalias !7 + br label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i457.i + +_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i457.i: ; preds = %if.then.i20.i.i.i456.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i452.i + %add.ptr19.i.i.i458.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %cond.i10.i.i.i443.i, i64 %cond.i.i.i.i438.i br label %for.inc229.i -for.inc229.i: ; preds = %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i470.i, %if.then.i.i439.i - %points.sroa.75.16.i = phi ptr [ %add.ptr19.i.i.i471.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i470.i ], [ %points.sroa.75.15918.i, %if.then.i.i439.i ] - %__cur.0.lcssa.i.i.i.i.i.i466.pn.i = phi ptr [ %__cur.0.lcssa.i.i.i.i.i.i466.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i470.i ], [ %points.sroa.30.16919.i, %if.then.i.i439.i ] - %points.sroa.0.18.i = phi ptr [ %cond.i10.i.i.i456.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i470.i ], [ %points.sroa.0.17920.i, %if.then.i.i439.i ] - %points.sroa.30.17.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %__cur.0.lcssa.i.i.i.i.i.i466.pn.i, i64 1 - %indvars.iv.next1079.i = add nuw nsw i64 %indvars.iv1078.i, 1 +for.inc229.i: ; preds = %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i457.i, %if.then.i.i426.i + %points.sroa.75.16.i = phi ptr [ %add.ptr19.i.i.i458.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i457.i ], [ %points.sroa.75.15895.i, %if.then.i.i426.i ] + %__cur.0.lcssa.i.i.i.i.i.i453.pn.i = phi ptr [ %__cur.0.lcssa.i.i.i.i.i.i453.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i457.i ], [ %points.sroa.30.16896.i, %if.then.i.i426.i ] + %points.sroa.0.18.i = phi ptr [ %cond.i10.i.i.i443.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i457.i ], [ %points.sroa.0.17897.i, %if.then.i.i426.i ] + %points.sroa.30.17.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %__cur.0.lcssa.i.i.i.i.i.i453.pn.i, i64 1 + %indvars.iv.next1056.i = add nuw nsw i64 %indvars.iv1055.i, 1 %182 = load i32, ptr %nPoints.addr.i, align 4, !noalias !7 %183 = sext i32 %182 to i64 - %cmp218.i = icmp slt i64 %indvars.iv.next1079.i, %183 + %cmp218.i = icmp slt i64 %indvars.iv.next1056.i, %183 br i1 %cmp218.i, label %for.body219.i, label %cleanup.thread.i, !llvm.loop !72 if.else232.i: ; preds = %if.else198.i - %call.i477.i = call noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEPKc(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp216, ptr noundef nonnull @.str.32) #29, !noalias !7 - %cmp.i478.i = icmp eq i32 %call.i477.i, 0 - br i1 %cmp.i478.i, label %invoke.cont240.i, label %if.else266.i + %call.i464.i = call noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEPKc(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp216, ptr noundef nonnull @.str.32) #29, !noalias !7 + %cmp.i465.i = icmp eq i32 %call.i464.i, 0 + br i1 %cmp.i465.i, label %invoke.cont240.i, label %if.else266.i invoke.cont240.i: ; preds = %if.else232.i %184 = load ptr, ptr @_ZN4pbrt7OptionsE, align 8, !noalias !7 %185 = load i32, ptr %184, align 8, !noalias !7 %conv238.i = sext i32 %185 to i64 %conv239.i = sext i32 %93 to i64 - %shl.i.i479.i = shl nsw i64 %conv238.i, 1 - %or.i.i480.i = or disjoint i64 %shl.i.i479.i, 1 - %add.i.i482.i = add nsw i64 %or.i.i480.i, %conv239.i - %mul.i1.i.i483.i = mul i64 %add.i.i482.i, 6364136223846793005 - %add.i3.i.i484.i = add i64 %mul.i1.i.i483.i, %or.i.i480.i - %mul.i485.i = mul i64 %add.i3.i.i484.i, 6364136223846793005 - %add.i487.i = add i64 %mul.i485.i, %or.i.i480.i - %186 = lshr i64 %add.i3.i.i484.i, 45 - %187 = lshr i64 %add.i3.i.i484.i, 27 - %shr3.i488.i = xor i64 %186, %187 - %conv.i489.i = trunc i64 %shr3.i488.i to i32 - %shr4.i490.i = lshr i64 %add.i3.i.i484.i, 59 - %conv5.i491.i = trunc i64 %shr4.i490.i to i32 - %shr6.i492.i = lshr i32 %conv.i489.i, %conv5.i491.i - %add7.i493.i = sub nsw i32 0, %conv5.i491.i - %and.i494.i = and i32 %add7.i493.i, 31 - %shl.i495.i = shl i32 %conv.i489.i, %and.i494.i - %or.i496.i = or i32 %shr6.i492.i, %shl.i495.i - %188 = lshr i64 %add.i487.i, 45 - %189 = lshr i64 %add.i487.i, 27 - %shr3.i500.i = xor i64 %188, %189 - %conv.i501.i = trunc i64 %shr3.i500.i to i32 - %shr4.i502.i = lshr i64 %add.i487.i, 59 - %conv5.i503.i = trunc i64 %shr4.i502.i to i32 - %shr6.i504.i = lshr i32 %conv.i501.i, %conv5.i503.i - %add7.i505.i = sub nsw i32 0, %conv5.i503.i - %and.i506.i = and i32 %add7.i505.i, 31 - %shl.i507.i = shl i32 %conv.i501.i, %and.i506.i - %or.i508.i = or i32 %shr6.i504.i, %shl.i507.i + %shl.i.i466.i = shl nsw i64 %conv238.i, 1 + %or.i.i467.i = or disjoint i64 %shl.i.i466.i, 1 + %add.i.i469.i = add nsw i64 %or.i.i467.i, %conv239.i + %mul.i1.i.i470.i = mul i64 %add.i.i469.i, 6364136223846793005 + %add.i3.i.i471.i = add i64 %mul.i1.i.i470.i, %or.i.i467.i + %mul.i472.i = mul i64 %add.i3.i.i471.i, 6364136223846793005 + %add.i474.i = add i64 %mul.i472.i, %or.i.i467.i + %186 = lshr i64 %add.i3.i.i471.i, 45 + %187 = lshr i64 %add.i3.i.i471.i, 27 + %shr3.i475.i = xor i64 %186, %187 + %conv.i476.i = trunc i64 %shr3.i475.i to i32 + %shr4.i477.i = lshr i64 %add.i3.i.i471.i, 59 + %conv5.i478.i = trunc i64 %shr4.i477.i to i32 + %or.i479.i = call noundef i32 @llvm.fshr.i32(i32 %conv.i476.i, i32 %conv.i476.i, i32 %conv5.i478.i) + %188 = lshr i64 %add.i474.i, 45 + %189 = lshr i64 %add.i474.i, 27 + %shr3.i483.i = xor i64 %188, %189 + %conv.i484.i = trunc i64 %shr3.i483.i to i32 + %shr4.i485.i = lshr i64 %add.i474.i, 59 + %conv5.i486.i = trunc i64 %shr4.i485.i to i32 + %or.i487.i = call noundef i32 @llvm.fshr.i32(i32 %conv.i484.i, i32 %conv.i484.i, i32 %conv5.i486.i) br i1 %cmp3.i.not.i, label %cleanup.thread.i, label %for.body248.lr.ph.i for.body248.lr.ph.i: ; preds = %invoke.cont240.i - %190 = shl i32 %or.i496.i, 31 + %190 = shl i32 %or.i479.i, 31 br label %for.body248.i for.body248.i: ; preds = %for.inc263.i, %for.body248.lr.ph.i %191 = phi i32 [ %92, %for.body248.lr.ph.i ], [ %195, %for.inc263.i ] - %indvars.iv1075.i = phi i64 [ 0, %for.body248.lr.ph.i ], [ %indvars.iv.next1076.i, %for.inc263.i ] - %points.sroa.0.19912.i = phi ptr [ %points.sroa.30.0.i413424, %for.body248.lr.ph.i ], [ %points.sroa.0.20.i, %for.inc263.i ] - %points.sroa.30.18911.i = phi ptr [ %points.sroa.30.0.i413424, %for.body248.lr.ph.i ], [ %points.sroa.30.19.i, %for.inc263.i ] - %points.sroa.75.17910.i = phi ptr [ %points.sroa.75.0.i411426, %for.body248.lr.ph.i ], [ %points.sroa.75.18.i, %for.inc263.i ] - %cmp.not6.i.i = icmp eq i64 %indvars.iv1075.i, 0 + %indvars.iv1052.i = phi i64 [ 0, %for.body248.lr.ph.i ], [ %indvars.iv.next1053.i, %for.inc263.i ] + %points.sroa.0.19889.i = phi ptr [ %points.sroa.30.0.i413424, %for.body248.lr.ph.i ], [ %points.sroa.0.20.i, %for.inc263.i ] + %points.sroa.30.18888.i = phi ptr [ %points.sroa.30.0.i413424, %for.body248.lr.ph.i ], [ %points.sroa.30.19.i, %for.inc263.i ] + %points.sroa.75.17887.i = phi ptr [ %points.sroa.75.0.i411426, %for.body248.lr.ph.i ], [ %points.sroa.75.18.i, %for.inc263.i ] + %cmp.not6.i.i = icmp eq i64 %indvars.iv1052.i, 0 br i1 %cmp.not6.i.i, label %for.end.i.i, label %for.body.i.i for.body.i.i: ; preds = %for.body248.i, %for.inc.i.i %indvars.iv.i.i = phi i64 [ %indvars.iv.next.i.i, %for.inc.i.i ], [ 0, %for.body248.i ] %v.08.i.i = phi i32 [ %v.1.i.i, %for.inc.i.i ], [ 0, %for.body248.i ] - %a.addr.07.i.i = phi i64 [ %shr.i.i, %for.inc.i.i ], [ %indvars.iv1075.i, %for.body248.i ] - %and.i509.i = and i64 %a.addr.07.i.i, 1 - %tobool.not.i.i181 = icmp eq i64 %and.i509.i, 0 - br i1 %tobool.not.i.i181, label %for.inc.i.i, label %if.then.i510.i + %a.addr.07.i.i = phi i64 [ %shr.i.i, %for.inc.i.i ], [ %indvars.iv1052.i, %for.body248.i ] + %and.i.i = and i64 %a.addr.07.i.i, 1 + %tobool.not.i.i181 = icmp eq i64 %and.i.i, 0 + br i1 %tobool.not.i.i181, label %for.inc.i.i, label %if.then.i488.i -if.then.i510.i: ; preds = %for.body.i.i +if.then.i488.i: ; preds = %for.body.i.i %arrayidx.i.i = getelementptr inbounds [53248 x i32], ptr @_ZN4pbrt15SobolMatrices32E, i64 0, i64 %indvars.iv.i.i %192 = load i32, ptr %arrayidx.i.i, align 4, !noalias !7 %xor.i.i = xor i32 %192, %v.08.i.i br label %for.inc.i.i -for.inc.i.i: ; preds = %if.then.i510.i, %for.body.i.i - %v.1.i.i = phi i32 [ %xor.i.i, %if.then.i510.i ], [ %v.08.i.i, %for.body.i.i ] +for.inc.i.i: ; preds = %if.then.i488.i, %for.body.i.i + %v.1.i.i = phi i32 [ %xor.i.i, %if.then.i488.i ], [ %v.08.i.i, %for.body.i.i ] %shr.i.i = lshr i64 %a.addr.07.i.i, 1 %indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1 - %cmp.not.i511.i = icmp ult i64 %a.addr.07.i.i, 2 - br i1 %cmp.not.i511.i, label %for.end.i.i, label %for.body.i.i, !llvm.loop !73 + %cmp.not.i489.i = icmp ult i64 %a.addr.07.i.i, 2 + br i1 %cmp.not.i489.i, label %for.end.i.i, label %for.body.i.i, !llvm.loop !73 for.end.i.i: ; preds = %for.inc.i.i, %for.body248.i %v.0.lcssa.i.i = phi i32 [ 0, %for.body248.i ], [ %v.1.i.i, %for.inc.i.i ] @@ -2578,126 +2550,126 @@ for.end.i.i: ; preds = %for.inc.i.i, %for.b for.body.i.i.i: ; preds = %for.body.i.i.i, %for.end.i.i %v.addr.19.i.i.i = phi i32 [ %spec.select.i.i.i, %for.end.i.i ], [ %v.addr.2.i.i.i, %for.body.i.i.i ] - %b.08.i.i.i = phi i32 [ 1, %for.end.i.i ], [ %inc.i.i515.i, %for.body.i.i.i ] + %b.08.i.i.i = phi i32 [ 1, %for.end.i.i ], [ %inc.i.i493.i, %for.body.i.i.i ] %sub.i.i.i = sub nuw nsw i32 32, %b.08.i.i.i - %shl.i.i512.i = shl nsw i32 -1, %sub.i.i.i - %and2.i.i.i = and i32 %shl.i.i512.i, %v.addr.19.i.i.i - %xor4.i.i.i = xor i32 %and2.i.i.i, %or.i496.i - %conv.i.i513.i = zext i32 %xor4.i.i.i to i64 - %shr.i.i.i.i = lshr i64 %conv.i.i513.i, 31 - %xor.i.i.i.i = xor i64 %shr.i.i.i.i, %conv.i.i513.i + %shl.i.i490.i = shl nsw i32 -1, %sub.i.i.i + %and2.i.i.i = and i32 %shl.i.i490.i, %v.addr.19.i.i.i + %xor4.i.i.i = xor i32 %and2.i.i.i, %or.i479.i + %conv.i.i491.i = zext i32 %xor4.i.i.i to i64 + %shr.i.i.i.i = lshr i64 %conv.i.i491.i, 31 + %xor.i.i.i.i = xor i64 %shr.i.i.i.i, %conv.i.i491.i %mul.i.i.i.i = mul i64 %xor.i.i.i.i, 9202493588570546565 %shr1.i.i.i.i = lshr i64 %mul.i.i.i.i, 27 %xor2.i.i.i.i = xor i64 %shr1.i.i.i.i, %mul.i.i.i.i %mul3.i.i.i.i = mul i64 %xor2.i.i.i.i, -9089707755183418291 %shr4.i.i.i.i = lshr i64 %mul3.i.i.i.i, 33 %xor5.i.i.i.i = xor i64 %shr4.i.i.i.i, %mul3.i.i.i.i - %conv5.i.i514.i = trunc i64 %xor5.i.i.i.i to i32 + %conv5.i.i492.i = trunc i64 %xor5.i.i.i.i to i32 %shl6.i.i.i = shl nuw i32 1, %b.08.i.i.i - %and7.i.i.i = and i32 %shl6.i.i.i, %conv5.i.i514.i + %and7.i.i.i = and i32 %shl6.i.i.i, %conv5.i.i492.i %tobool8.not.i.i.i = icmp eq i32 %and7.i.i.i, 0 %sub10.i.i.i = xor i32 %b.08.i.i.i, 31 %shl11.i.i.i = shl nuw i32 1, %sub10.i.i.i %xor12.i.i.i = select i1 %tobool8.not.i.i.i, i32 0, i32 %shl11.i.i.i %v.addr.2.i.i.i = xor i32 %xor12.i.i.i, %v.addr.19.i.i.i - %inc.i.i515.i = add nuw nsw i32 %b.08.i.i.i, 1 - %exitcond.not.i.i.i = icmp eq i32 %inc.i.i515.i, 32 + %inc.i.i493.i = add nuw nsw i32 %b.08.i.i.i, 1 + %exitcond.not.i.i.i = icmp eq i32 %inc.i.i493.i, 32 br i1 %exitcond.not.i.i.i, label %invoke.cont261.i, label %for.body.i.i.i, !llvm.loop !74 invoke.cont261.i: ; preds = %for.body.i.i.i - %conv.i516.i = uitofp i32 %v.addr.2.i.i.i to float - %mul3.i.i = fmul float %conv.i516.i, 0x3DF0000000000000 - %cmp.i.i517.i = fcmp ogt float %mul3.i.i, 0x3FEFFFFFE0000000 - %.sroa.speculated.i518.i = select i1 %cmp.i.i517.i, float 0x3FEFFFFFE0000000, float %mul3.i.i - %call260.i = call noundef float @_ZN4pbrt27OwenScrambledRadicalInverseEimj(i32 noundef 1, i64 noundef %indvars.iv1075.i, i32 noundef %or.i508.i), !noalias !7 - %cmp.not.i.i522.i = icmp eq ptr %points.sroa.30.18911.i, %points.sroa.75.17910.i - br i1 %cmp.not.i.i522.i, label %if.else.i.i525.i, label %if.then.i.i523.i - -if.then.i.i523.i: ; preds = %invoke.cont261.i - store float %.sroa.speculated.i518.i, ptr %points.sroa.30.18911.i, align 4, !noalias !7 - %.sroa_idx640.i = getelementptr inbounds i8, ptr %points.sroa.30.18911.i, i64 4 - store float %call260.i, ptr %.sroa_idx640.i, align 4, !noalias !7 + %conv.i494.i = uitofp i32 %v.addr.2.i.i.i to float + %mul3.i.i = fmul float %conv.i494.i, 0x3DF0000000000000 + %cmp.i.i495.i = fcmp ogt float %mul3.i.i, 0x3FEFFFFFE0000000 + %.sroa.speculated.i496.i = select i1 %cmp.i.i495.i, float 0x3FEFFFFFE0000000, float %mul3.i.i + %call260.i = call noundef float @_ZN4pbrt27OwenScrambledRadicalInverseEimj(i32 noundef 1, i64 noundef %indvars.iv1052.i, i32 noundef %or.i487.i), !noalias !7 + %cmp.not.i.i500.i = icmp eq ptr %points.sroa.30.18888.i, %points.sroa.75.17887.i + br i1 %cmp.not.i.i500.i, label %if.else.i.i503.i, label %if.then.i.i501.i + +if.then.i.i501.i: ; preds = %invoke.cont261.i + store float %.sroa.speculated.i496.i, ptr %points.sroa.30.18888.i, align 4, !noalias !7 + %.sroa_idx617.i = getelementptr inbounds i8, ptr %points.sroa.30.18888.i, i64 4 + store float %call260.i, ptr %.sroa_idx617.i, align 4, !noalias !7 %.pre.i = load i32, ptr %nPoints.addr.i, align 4, !noalias !7 br label %for.inc263.i -if.else.i.i525.i: ; preds = %invoke.cont261.i - %sub.ptr.lhs.cast.i.i.i.i.i526.i = ptrtoint ptr %points.sroa.30.18911.i to i64 - %sub.ptr.rhs.cast.i.i.i.i.i527.i = ptrtoint ptr %points.sroa.0.19912.i to i64 - %sub.ptr.sub.i.i.i.i.i528.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i526.i, %sub.ptr.rhs.cast.i.i.i.i.i527.i - %cmp.i.i.i.i529.i = icmp eq i64 %sub.ptr.sub.i.i.i.i.i528.i, 9223372036854775800 - br i1 %cmp.i.i.i.i529.i, label %if.then.i.i.i.i556.i, label %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i530.i +if.else.i.i503.i: ; preds = %invoke.cont261.i + %sub.ptr.lhs.cast.i.i.i.i.i504.i = ptrtoint ptr %points.sroa.30.18888.i to i64 + %sub.ptr.rhs.cast.i.i.i.i.i505.i = ptrtoint ptr %points.sroa.0.19889.i to i64 + %sub.ptr.sub.i.i.i.i.i506.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i504.i, %sub.ptr.rhs.cast.i.i.i.i.i505.i + %cmp.i.i.i.i507.i = icmp eq i64 %sub.ptr.sub.i.i.i.i.i506.i, 9223372036854775800 + br i1 %cmp.i.i.i.i507.i, label %if.then.i.i.i.i534.i, label %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i508.i -if.then.i.i.i.i556.i: ; preds = %if.else.i.i525.i +if.then.i.i.i.i534.i: ; preds = %if.else.i.i503.i invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.40) #33 - to label %.noexc557.i unwind label %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i.loopexit.split-lp, !noalias !7 + to label %.noexc535.i unwind label %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i.loopexit.split-lp, !noalias !7 -.noexc557.i: ; preds = %if.then.i.i.i.i556.i +.noexc535.i: ; preds = %if.then.i.i.i.i534.i unreachable -_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i530.i: ; preds = %if.else.i.i525.i - %sub.ptr.div.i.i.i.i.i531.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i528.i, 3 - %.sroa.speculated.i.i.i.i532.i = call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i.i.i.i531.i, i64 1) - %add.i.i.i.i533.i = add i64 %.sroa.speculated.i.i.i.i532.i, %sub.ptr.div.i.i.i.i.i531.i - %cmp7.i.i.i.i534.i = icmp ult i64 %add.i.i.i.i533.i, %sub.ptr.div.i.i.i.i.i531.i - %193 = call i64 @llvm.umin.i64(i64 %add.i.i.i.i533.i, i64 1152921504606846975) - %cond.i.i.i.i535.i = select i1 %cmp7.i.i.i.i534.i, i64 1152921504606846975, i64 %193 - %cmp.not.i.i.i.i536.i = icmp eq i64 %cond.i.i.i.i535.i, 0 - br i1 %cmp.not.i.i.i.i536.i, label %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i539.i, label %cond.true.i.i.i.i537.i - -cond.true.i.i.i.i537.i: ; preds = %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i530.i - %mul.i.i.i.i.i.i538.i = shl nuw nsw i64 %cond.i.i.i.i535.i, 3 - %call5.i.i.i.i.i.i559.i = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %mul.i.i.i.i.i.i538.i) #32 - to label %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i539.i unwind label %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i, !noalias !7 - -_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i539.i: ; preds = %cond.true.i.i.i.i537.i, %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i530.i - %cond.i10.i.i.i540.i = phi ptr [ null, %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i530.i ], [ %call5.i.i.i.i.i.i559.i, %cond.true.i.i.i.i537.i ] - %add.ptr.i.i.i541.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %cond.i10.i.i.i540.i, i64 %sub.ptr.div.i.i.i.i.i531.i - store float %.sroa.speculated.i518.i, ptr %add.ptr.i.i.i541.i, align 4, !noalias !7 - %add.ptr.i.i.i541.sroa_idx.i = getelementptr inbounds i8, ptr %add.ptr.i.i.i541.i, i64 4 - store float %call260.i, ptr %add.ptr.i.i.i541.sroa_idx.i, align 4, !noalias !7 - %cmp.not5.i.i.i.i.i.i542.i = icmp eq ptr %points.sroa.0.19912.i, %points.sroa.30.18911.i - br i1 %cmp.not5.i.i.i.i.i.i542.i, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i549.i, label %for.body.i.i.i.i.i.i543.i - -for.body.i.i.i.i.i.i543.i: ; preds = %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i539.i, %for.body.i.i.i.i.i.i543.i - %__cur.07.i.i.i.i.i.i544.i = phi ptr [ %incdec.ptr1.i.i.i.i.i.i547.i, %for.body.i.i.i.i.i.i543.i ], [ %cond.i10.i.i.i540.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i539.i ] - %__first.addr.06.i.i.i.i.i.i545.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i546.i, %for.body.i.i.i.i.i.i543.i ], [ %points.sroa.0.19912.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i539.i ] +_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i508.i: ; preds = %if.else.i.i503.i + %sub.ptr.div.i.i.i.i.i509.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i506.i, 3 + %.sroa.speculated.i.i.i.i510.i = call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i.i.i.i509.i, i64 1) + %add.i.i.i.i511.i = add nsw i64 %.sroa.speculated.i.i.i.i510.i, %sub.ptr.div.i.i.i.i.i509.i + %cmp7.i.i.i.i512.i = icmp ult i64 %add.i.i.i.i511.i, %sub.ptr.div.i.i.i.i.i509.i + %193 = call i64 @llvm.umin.i64(i64 %add.i.i.i.i511.i, i64 1152921504606846975) + %cond.i.i.i.i513.i = select i1 %cmp7.i.i.i.i512.i, i64 1152921504606846975, i64 %193 + %cmp.not.i.i.i.i514.i = icmp eq i64 %cond.i.i.i.i513.i, 0 + br i1 %cmp.not.i.i.i.i514.i, label %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i517.i, label %cond.true.i.i.i.i515.i + +cond.true.i.i.i.i515.i: ; preds = %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i508.i + %mul.i.i.i.i.i.i516.i = shl nuw nsw i64 %cond.i.i.i.i513.i, 3 + %call5.i.i.i.i.i.i537.i = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %mul.i.i.i.i.i.i516.i) #32 + to label %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i517.i unwind label %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i, !noalias !7 + +_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i517.i: ; preds = %cond.true.i.i.i.i515.i, %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i508.i + %cond.i10.i.i.i518.i = phi ptr [ null, %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i508.i ], [ %call5.i.i.i.i.i.i537.i, %cond.true.i.i.i.i515.i ] + %add.ptr.i.i.i519.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %cond.i10.i.i.i518.i, i64 %sub.ptr.div.i.i.i.i.i509.i + store float %.sroa.speculated.i496.i, ptr %add.ptr.i.i.i519.i, align 4, !noalias !7 + %add.ptr.i.i.i519.sroa_idx.i = getelementptr inbounds i8, ptr %add.ptr.i.i.i519.i, i64 4 + store float %call260.i, ptr %add.ptr.i.i.i519.sroa_idx.i, align 4, !noalias !7 + %cmp.not5.i.i.i.i.i.i520.i = icmp eq ptr %points.sroa.0.19889.i, %points.sroa.30.18888.i + br i1 %cmp.not5.i.i.i.i.i.i520.i, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i527.i, label %for.body.i.i.i.i.i.i521.i + +for.body.i.i.i.i.i.i521.i: ; preds = %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i517.i, %for.body.i.i.i.i.i.i521.i + %__cur.07.i.i.i.i.i.i522.i = phi ptr [ %incdec.ptr1.i.i.i.i.i.i525.i, %for.body.i.i.i.i.i.i521.i ], [ %cond.i10.i.i.i518.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i517.i ] + %__first.addr.06.i.i.i.i.i.i523.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i524.i, %for.body.i.i.i.i.i.i521.i ], [ %points.sroa.0.19889.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i517.i ] call void @llvm.experimental.noalias.scope.decl(metadata !75) call void @llvm.experimental.noalias.scope.decl(metadata !78) - %194 = load i64, ptr %__first.addr.06.i.i.i.i.i.i545.i, align 4, !alias.scope !78, !noalias !80 - store i64 %194, ptr %__cur.07.i.i.i.i.i.i544.i, align 4, !alias.scope !75, !noalias !81 - %incdec.ptr.i.i.i.i.i.i546.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %__first.addr.06.i.i.i.i.i.i545.i, i64 1 - %incdec.ptr1.i.i.i.i.i.i547.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %__cur.07.i.i.i.i.i.i544.i, i64 1 - %cmp.not.i.i.i.i.i.i548.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i546.i, %points.sroa.30.18911.i - br i1 %cmp.not.i.i.i.i.i.i548.i, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i549.i, label %for.body.i.i.i.i.i.i543.i, !llvm.loop !17 - -_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i549.i: ; preds = %for.body.i.i.i.i.i.i543.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i539.i - %__cur.0.lcssa.i.i.i.i.i.i550.i = phi ptr [ %cond.i10.i.i.i540.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i539.i ], [ %incdec.ptr1.i.i.i.i.i.i547.i, %for.body.i.i.i.i.i.i543.i ] - %tobool.not.i.i.i.i552.i = icmp eq ptr %points.sroa.0.19912.i, null - br i1 %tobool.not.i.i.i.i552.i, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i554.i, label %if.then.i20.i.i.i553.i - -if.then.i20.i.i.i553.i: ; preds = %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i549.i - call void @_ZdlPv(ptr noundef nonnull %points.sroa.0.19912.i) #34, !noalias !7 - br label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i554.i - -_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i554.i: ; preds = %if.then.i20.i.i.i553.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i549.i - %add.ptr19.i.i.i555.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %cond.i10.i.i.i540.i, i64 %cond.i.i.i.i535.i + %194 = load i64, ptr %__first.addr.06.i.i.i.i.i.i523.i, align 4, !alias.scope !78, !noalias !80 + store i64 %194, ptr %__cur.07.i.i.i.i.i.i522.i, align 4, !alias.scope !75, !noalias !81 + %incdec.ptr.i.i.i.i.i.i524.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %__first.addr.06.i.i.i.i.i.i523.i, i64 1 + %incdec.ptr1.i.i.i.i.i.i525.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %__cur.07.i.i.i.i.i.i522.i, i64 1 + %cmp.not.i.i.i.i.i.i526.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i524.i, %points.sroa.30.18888.i + br i1 %cmp.not.i.i.i.i.i.i526.i, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i527.i, label %for.body.i.i.i.i.i.i521.i, !llvm.loop !17 + +_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i527.i: ; preds = %for.body.i.i.i.i.i.i521.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i517.i + %__cur.0.lcssa.i.i.i.i.i.i528.i = phi ptr [ %cond.i10.i.i.i518.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i517.i ], [ %incdec.ptr1.i.i.i.i.i.i525.i, %for.body.i.i.i.i.i.i521.i ] + %tobool.not.i.i.i.i530.i = icmp eq ptr %points.sroa.0.19889.i, null + br i1 %tobool.not.i.i.i.i530.i, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i532.i, label %if.then.i20.i.i.i531.i + +if.then.i20.i.i.i531.i: ; preds = %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i527.i + call void @_ZdlPv(ptr noundef nonnull %points.sroa.0.19889.i) #34, !noalias !7 + br label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i532.i + +_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i532.i: ; preds = %if.then.i20.i.i.i531.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i527.i + %add.ptr19.i.i.i533.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %cond.i10.i.i.i518.i, i64 %cond.i.i.i.i513.i br label %for.inc263.i -for.inc263.i: ; preds = %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i554.i, %if.then.i.i523.i - %195 = phi i32 [ %191, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i554.i ], [ %.pre.i, %if.then.i.i523.i ] - %points.sroa.75.18.i = phi ptr [ %add.ptr19.i.i.i555.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i554.i ], [ %points.sroa.75.17910.i, %if.then.i.i523.i ] - %__cur.0.lcssa.i.i.i.i.i.i550.pn.i = phi ptr [ %__cur.0.lcssa.i.i.i.i.i.i550.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i554.i ], [ %points.sroa.30.18911.i, %if.then.i.i523.i ] - %points.sroa.0.20.i = phi ptr [ %cond.i10.i.i.i540.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i554.i ], [ %points.sroa.0.19912.i, %if.then.i.i523.i ] - %points.sroa.30.19.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %__cur.0.lcssa.i.i.i.i.i.i550.pn.i, i64 1 - %indvars.iv.next1076.i = add nuw nsw i64 %indvars.iv1075.i, 1 +for.inc263.i: ; preds = %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i532.i, %if.then.i.i501.i + %195 = phi i32 [ %191, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i532.i ], [ %.pre.i, %if.then.i.i501.i ] + %points.sroa.75.18.i = phi ptr [ %add.ptr19.i.i.i533.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i532.i ], [ %points.sroa.75.17887.i, %if.then.i.i501.i ] + %__cur.0.lcssa.i.i.i.i.i.i528.pn.i = phi ptr [ %__cur.0.lcssa.i.i.i.i.i.i528.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i532.i ], [ %points.sroa.30.18888.i, %if.then.i.i501.i ] + %points.sroa.0.20.i = phi ptr [ %cond.i10.i.i.i518.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i532.i ], [ %points.sroa.0.19889.i, %if.then.i.i501.i ] + %points.sroa.30.19.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %__cur.0.lcssa.i.i.i.i.i.i528.pn.i, i64 1 + %indvars.iv.next1053.i = add nuw nsw i64 %indvars.iv1052.i, 1 %196 = sext i32 %195 to i64 - %cmp247.i = icmp slt i64 %indvars.iv.next1076.i, %196 + %cmp247.i = icmp slt i64 %indvars.iv.next1053.i, %196 br i1 %cmp247.i, label %for.body248.i, label %cleanup.thread.i, !llvm.loop !82 if.else266.i: ; preds = %if.else232.i - %call.i561.i = call noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEPKc(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp216, ptr noundef nonnull @.str.33) #29, !noalias !7 - %cmp.i562.i = icmp eq i32 %call.i561.i, 0 - br i1 %cmp.i562.i, label %if.then269.i, label %if.else329.i + %call.i539.i = call noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEPKc(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp216, ptr noundef nonnull @.str.33) #29, !noalias !7 + %cmp.i540.i = icmp eq i32 %call.i539.i, 0 + br i1 %cmp.i540.i, label %if.then269.i, label %if.else329.i if.then269.i: ; preds = %if.else266.i %197 = call i32 @llvm.ctpop.i32(i32 %92), !range !83 @@ -2714,23 +2686,23 @@ if.then272.cont.i: ; preds = %if.then272.invoke.i invoke.cont283.i: ; preds = %if.then269.i %199 = call i32 @llvm.ctlz.i32(i32 %92, i1 true), !range !83 - %div278734.lhs.trunc.i = lshr i32 %199, 1 - %div278734735736.i = xor i32 %div278734.lhs.trunc.i, 15 - %200 = shl nuw nsw i32 %div278734735736.i, 1 - %div2811092.i = lshr i32 %92, %200 + %div278711.lhs.trunc.i = lshr i32 %199, 1 + %div278711712713.i = xor i32 %div278711.lhs.trunc.i, 15 + %200 = shl nuw nsw i32 %div278711712713.i, 1 + %div2811069.i = lshr i32 %92, %200 %201 = load ptr, ptr @_ZN4pbrt7OptionsE, align 8, !noalias !7 %202 = load i32, ptr %201, align 8, !noalias !7 - %203 = zext nneg i32 %div278734735736.i to i64 + %203 = zext nneg i32 %div278711712713.i to i64 %agg.tmp282.sroa.0.0.insert.insert.i = shl nuw nsw i64 4294967297, %203 - invoke void @_ZN4pbrt13ZSobolSamplerC2EiNS_6Point2IiEENS_17RandomizeStrategyEi(ptr noundef nonnull align 8 dereferenceable(28) %sampler.i, i32 noundef %div2811092.i, i64 %agg.tmp282.sroa.0.0.insert.insert.i, i32 noundef 3, i32 noundef %202) + invoke void @_ZN4pbrt13ZSobolSamplerC2EiNS_6Point2IiEENS_17RandomizeStrategyEi(ptr noundef nonnull align 8 dereferenceable(28) %sampler.i, i32 noundef %div2811069.i, i64 %agg.tmp282.sroa.0.0.insert.insert.i, i32 noundef 3, i32 noundef %202) to label %for.cond287.preheader.i unwind label %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i.loopexit, !noalias !7 for.cond287.preheader.i: ; preds = %invoke.cont283.i - %shl.i = shl nuw nsw i32 1, %div278734735736.i - %cmp300883.not.i = icmp eq i32 %div2811092.i, 0 + %shl.i = shl nuw nsw i32 1, %div278711712713.i + %cmp300860.not.i = icmp eq i32 %div2811069.i, 0 %conv310.i = sitofp i32 %shl.i to float %204 = add nsw i32 %shl.i, -1 - %wide.trip.count1073.i = zext nneg i32 %shl.i to i64 + %wide.trip.count1050.i = zext nneg i32 %shl.i to i64 %agg.tmp294.sroa.0.0.insert.ext.le.i = zext nneg i32 %204 to i64 %shl.i2.i.i.le.i = shl nuw nsw i64 %agg.tmp294.sroa.0.0.insert.ext.le.i, 16 %xor.i3.i.i.le.i = or i64 %shl.i2.i.i.le.i, %agg.tmp294.sroa.0.0.insert.ext.le.i @@ -2752,13 +2724,13 @@ for.cond287.preheader.i: ; preds = %invoke.cont283.i br label %for.cond291.preheader.i for.cond291.preheader.i: ; preds = %for.inc326.i, %for.cond287.preheader.i - %indvars.iv1069.i = phi i64 [ 0, %for.cond287.preheader.i ], [ %indvars.iv.next1070.i, %for.inc326.i ] - %points.sroa.0.21907.i = phi ptr [ %points.sroa.30.0.i413424, %for.cond287.preheader.i ], [ %.us-phi896.i, %for.inc326.i ] - %points.sroa.30.20906.i = phi ptr [ %points.sroa.30.0.i413424, %for.cond287.preheader.i ], [ %.us-phi895.i, %for.inc326.i ] - %points.sroa.75.19905.i = phi ptr [ %points.sroa.75.0.i411426, %for.cond287.preheader.i ], [ %.us-phi.i, %for.inc326.i ] - %shl.i.i.i.i = shl nuw nsw i64 %indvars.iv1069.i, 16 - %xor.i.i.i568.i = or i64 %shl.i.i.i.i, %indvars.iv1069.i - %and1.i.i.i.i = and i64 %xor.i.i.i568.i, 140733193453567 + %indvars.iv1046.i = phi i64 [ 0, %for.cond287.preheader.i ], [ %indvars.iv.next1047.i, %for.inc326.i ] + %points.sroa.0.21884.i = phi ptr [ %points.sroa.30.0.i413424, %for.cond287.preheader.i ], [ %.us-phi873.i, %for.inc326.i ] + %points.sroa.30.20883.i = phi ptr [ %points.sroa.30.0.i413424, %for.cond287.preheader.i ], [ %.us-phi872.i, %for.inc326.i ] + %points.sroa.75.19882.i = phi ptr [ %points.sroa.75.0.i411426, %for.cond287.preheader.i ], [ %.us-phi.i, %for.inc326.i ] + %shl.i.i.i.i = shl nuw nsw i64 %indvars.iv1046.i, 16 + %xor.i.i.i546.i = or i64 %shl.i.i.i.i, %indvars.iv1046.i + %and1.i.i.i.i = and i64 %xor.i.i.i546.i, 140733193453567 %shl2.i.i.i.i = shl nuw nsw i64 %and1.i.i.i.i, 8 %xor3.i.i.i.i = or i64 %shl2.i.i.i.i, %and1.i.i.i.i %and4.i.i.i.i = and i64 %xor3.i.i.i.i, 35748417275625727 @@ -2771,25 +2743,25 @@ for.cond291.preheader.i: ; preds = %for.inc326.i, %for. %207 = shl nuw nsw i64 %and10.i.i.i.i, 2 %208 = shl nuw nsw i64 %and10.i.i.i.i, 1 %and13.i.i.i.i = or i64 %207, %208 - %shl.i.i569.i = and i64 %and13.i.i.i.i, 3074457345618258602 - %209 = trunc i64 %indvars.iv1069.i to i32 + %shl.i.i547.i = and i64 %and13.i.i.i.i, 3074457345618258602 + %209 = trunc i64 %indvars.iv1046.i to i32 %conv312.i = sitofp i32 %209 to float - br i1 %cmp300883.not.i, label %invoke.cont295.preheader.i, label %invoke.cont295.us.i + br i1 %cmp300860.not.i, label %invoke.cont295.preheader.i, label %invoke.cont295.us.i invoke.cont295.preheader.i: ; preds = %for.cond291.preheader.i - %or.i.i570.le.i = or disjoint i64 %shl.i.i569.i, %and13.i16.i.i.le.i + %or.i.i548.le.i = or disjoint i64 %shl.i.i547.i, %and13.i16.i.i.le.i %210 = load i32, ptr %log2SamplesPerPixel.i.i, align 8, !noalias !7 %sh_prom.i.le.i = zext nneg i32 %210 to i64 - %shl.i571.le.i = shl i64 %or.i.i570.le.i, %sh_prom.i.le.i + %shl.i.le.i = shl i64 %or.i.i548.le.i, %sh_prom.i.le.i store i32 0, ptr %dimension.i.i, align 8, !noalias !7 - store i64 %shl.i571.le.i, ptr %mortonIndex.i.i, align 8, !noalias !7 + store i64 %shl.i.le.i, ptr %mortonIndex.i.i, align 8, !noalias !7 br label %for.inc326.i invoke.cont295.us.i: ; preds = %for.cond291.preheader.i, %for.cond299.for.inc323_crit_edge.us.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %for.cond299.for.inc323_crit_edge.us.i ], [ 0, %for.cond291.preheader.i ] - %points.sroa.0.22893.us.i = phi ptr [ %points.sroa.0.24.us.i, %for.cond299.for.inc323_crit_edge.us.i ], [ %points.sroa.0.21907.i, %for.cond291.preheader.i ] - %points.sroa.30.21892.us.i = phi ptr [ %points.sroa.30.23.us.i, %for.cond299.for.inc323_crit_edge.us.i ], [ %points.sroa.30.20906.i, %for.cond291.preheader.i ] - %points.sroa.75.20891.us.i = phi ptr [ %points.sroa.75.22.us.i, %for.cond299.for.inc323_crit_edge.us.i ], [ %points.sroa.75.19905.i, %for.cond291.preheader.i ] + %points.sroa.0.22870.us.i = phi ptr [ %points.sroa.0.24.us.i, %for.cond299.for.inc323_crit_edge.us.i ], [ %points.sroa.0.21884.i, %for.cond291.preheader.i ] + %points.sroa.30.21869.us.i = phi ptr [ %points.sroa.30.23.us.i, %for.cond299.for.inc323_crit_edge.us.i ], [ %points.sroa.30.20883.i, %for.cond291.preheader.i ] + %points.sroa.75.20868.us.i = phi ptr [ %points.sroa.75.22.us.i, %for.cond299.for.inc323_crit_edge.us.i ], [ %points.sroa.75.19882.i, %for.cond291.preheader.i ] store i32 0, ptr %dimension.i.i, align 8, !noalias !7 %shl.i2.i.i.us.i = shl nuw nsw i64 %indvars.iv.i, 16 %xor.i3.i.i.us.i = or i64 %shl.i2.i.i.us.i, %indvars.iv.i @@ -2806,11 +2778,11 @@ invoke.cont295.us.i: ; preds = %for.cond291.prehead %shl11.i14.i.i.us.i = shl nuw nsw i64 %and10.i13.i.i.us.i, 1 %xor12.i15.i.i.us.i = or i64 %shl11.i14.i.i.us.i, %and10.i13.i.i.us.i %and13.i16.i.i.us.i = and i64 %xor12.i15.i.i.us.i, 1537228672809129301 - %or.i.i570.us.i = or disjoint i64 %and13.i16.i.i.us.i, %shl.i.i569.i + %or.i.i548.us.i = or disjoint i64 %and13.i16.i.i.us.i, %shl.i.i547.i %211 = load i32, ptr %log2SamplesPerPixel.i.i, align 8, !noalias !7 %sh_prom.i.us.i = zext nneg i32 %211 to i64 - %shl.i571.us.i = shl i64 %or.i.i570.us.i, %sh_prom.i.us.i - store i64 %shl.i571.us.i, ptr %mortonIndex.i.i, align 8, !noalias !7 + %shl.i.us.i = shl i64 %or.i.i548.us.i, %sh_prom.i.us.i + store i64 %shl.i.us.i, ptr %mortonIndex.i.i, align 8, !noalias !7 %212 = trunc i64 %indvars.iv.i to i32 %conv306.us.i = sitofp i32 %212 to float %213 = insertelement <2 x float> poison, float %conv306.us.i, i64 0 @@ -2818,110 +2790,110 @@ invoke.cont295.us.i: ; preds = %for.cond291.prehead br label %for.body301.us.i for.body301.us.i: ; preds = %for.inc320.us.i, %invoke.cont295.us.i - %s298.0887.us.i = phi i32 [ 0, %invoke.cont295.us.i ], [ %inc321.us.i, %for.inc320.us.i ] - %points.sroa.0.23886.us.i = phi ptr [ %points.sroa.0.22893.us.i, %invoke.cont295.us.i ], [ %points.sroa.0.24.us.i, %for.inc320.us.i ] - %points.sroa.30.22885.us.i = phi ptr [ %points.sroa.30.21892.us.i, %invoke.cont295.us.i ], [ %points.sroa.30.23.us.i, %for.inc320.us.i ] - %points.sroa.75.21884.us.i = phi ptr [ %points.sroa.75.20891.us.i, %invoke.cont295.us.i ], [ %points.sroa.75.22.us.i, %for.inc320.us.i ] + %s298.0864.us.i = phi i32 [ 0, %invoke.cont295.us.i ], [ %inc321.us.i, %for.inc320.us.i ] + %points.sroa.0.23863.us.i = phi ptr [ %points.sroa.0.22870.us.i, %invoke.cont295.us.i ], [ %points.sroa.0.24.us.i, %for.inc320.us.i ] + %points.sroa.30.22862.us.i = phi ptr [ %points.sroa.30.21869.us.i, %invoke.cont295.us.i ], [ %points.sroa.30.23.us.i, %for.inc320.us.i ] + %points.sroa.75.21861.us.i = phi ptr [ %points.sroa.75.20868.us.i, %invoke.cont295.us.i ], [ %points.sroa.75.22.us.i, %for.inc320.us.i ] %call303.us.i = invoke <2 x float> @_ZN4pbrt13ZSobolSampler5Get2DEv(ptr noundef nonnull align 8 dereferenceable(28) %sampler.i) to label %invoke.cont318.us.i unwind label %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split.us.i, !noalias !7 invoke.cont318.us.i: ; preds = %for.body301.us.i %215 = fadd <2 x float> %call303.us.i, %214 %216 = fdiv <2 x float> %215, %206 - %cmp.not.i.i576.us.i = icmp eq ptr %points.sroa.30.22885.us.i, %points.sroa.75.21884.us.i - br i1 %cmp.not.i.i576.us.i, label %if.else.i.i579.us.i, label %if.then.i.i577.us.i + %cmp.not.i.i553.us.i = icmp eq ptr %points.sroa.30.22862.us.i, %points.sroa.75.21861.us.i + br i1 %cmp.not.i.i553.us.i, label %if.else.i.i556.us.i, label %if.then.i.i554.us.i -if.then.i.i577.us.i: ; preds = %invoke.cont318.us.i - store <2 x float> %216, ptr %points.sroa.30.22885.us.i, align 4, !noalias !7 +if.then.i.i554.us.i: ; preds = %invoke.cont318.us.i + store <2 x float> %216, ptr %points.sroa.30.22862.us.i, align 4, !noalias !7 br label %for.inc320.us.i -if.else.i.i579.us.i: ; preds = %invoke.cont318.us.i - %sub.ptr.lhs.cast.i.i.i.i.i580.us.i = ptrtoint ptr %points.sroa.30.22885.us.i to i64 - %sub.ptr.rhs.cast.i.i.i.i.i581.us.i = ptrtoint ptr %points.sroa.0.23886.us.i to i64 - %sub.ptr.sub.i.i.i.i.i582.us.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i580.us.i, %sub.ptr.rhs.cast.i.i.i.i.i581.us.i - %cmp.i.i.i.i583.us.i = icmp eq i64 %sub.ptr.sub.i.i.i.i.i582.us.i, 9223372036854775800 - br i1 %cmp.i.i.i.i583.us.i, label %if.then.i.i.i.i610.i, label %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i584.us.i - -_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i584.us.i: ; preds = %if.else.i.i579.us.i - %sub.ptr.div.i.i.i.i.i585.us.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i582.us.i, 3 - %.sroa.speculated.i.i.i.i586.us.i = call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i.i.i.i585.us.i, i64 1) - %add.i.i.i.i587.us.i = add i64 %.sroa.speculated.i.i.i.i586.us.i, %sub.ptr.div.i.i.i.i.i585.us.i - %cmp7.i.i.i.i588.us.i = icmp ult i64 %add.i.i.i.i587.us.i, %sub.ptr.div.i.i.i.i.i585.us.i - %217 = call i64 @llvm.umin.i64(i64 %add.i.i.i.i587.us.i, i64 1152921504606846975) - %cond.i.i.i.i589.us.i = select i1 %cmp7.i.i.i.i588.us.i, i64 1152921504606846975, i64 %217 - %cmp.not.i.i.i.i590.us.i = icmp eq i64 %cond.i.i.i.i589.us.i, 0 - br i1 %cmp.not.i.i.i.i590.us.i, label %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i593.us.i, label %cond.true.i.i.i.i591.us.i - -cond.true.i.i.i.i591.us.i: ; preds = %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i584.us.i - %mul.i.i.i.i.i.i592.us.i = shl nuw nsw i64 %cond.i.i.i.i589.us.i, 3 - %call5.i.i.i.i.i.i613.us.i = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %mul.i.i.i.i.i.i592.us.i) #32 - to label %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i593.us.i unwind label %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split.us.i, !noalias !7 - -_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i593.us.i: ; preds = %cond.true.i.i.i.i591.us.i, %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i584.us.i - %cond.i10.i.i.i594.us.i = phi ptr [ null, %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i584.us.i ], [ %call5.i.i.i.i.i.i613.us.i, %cond.true.i.i.i.i591.us.i ] - %add.ptr.i.i.i595.us.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %cond.i10.i.i.i594.us.i, i64 %sub.ptr.div.i.i.i.i.i585.us.i - store <2 x float> %216, ptr %add.ptr.i.i.i595.us.i, align 4, !noalias !7 - %cmp.not5.i.i.i.i.i.i596.us.i = icmp eq ptr %points.sroa.0.23886.us.i, %points.sroa.30.22885.us.i - br i1 %cmp.not5.i.i.i.i.i.i596.us.i, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i603.us.i, label %for.body.i.i.i.i.i.i597.us.i - -for.body.i.i.i.i.i.i597.us.i: ; preds = %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i593.us.i, %for.body.i.i.i.i.i.i597.us.i - %__cur.07.i.i.i.i.i.i598.us.i = phi ptr [ %incdec.ptr1.i.i.i.i.i.i601.us.i, %for.body.i.i.i.i.i.i597.us.i ], [ %cond.i10.i.i.i594.us.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i593.us.i ] - %__first.addr.06.i.i.i.i.i.i599.us.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i600.us.i, %for.body.i.i.i.i.i.i597.us.i ], [ %points.sroa.0.23886.us.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i593.us.i ] +if.else.i.i556.us.i: ; preds = %invoke.cont318.us.i + %sub.ptr.lhs.cast.i.i.i.i.i557.us.i = ptrtoint ptr %points.sroa.30.22862.us.i to i64 + %sub.ptr.rhs.cast.i.i.i.i.i558.us.i = ptrtoint ptr %points.sroa.0.23863.us.i to i64 + %sub.ptr.sub.i.i.i.i.i559.us.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i557.us.i, %sub.ptr.rhs.cast.i.i.i.i.i558.us.i + %cmp.i.i.i.i560.us.i = icmp eq i64 %sub.ptr.sub.i.i.i.i.i559.us.i, 9223372036854775800 + br i1 %cmp.i.i.i.i560.us.i, label %if.then.i.i.i.i587.i, label %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i561.us.i + +_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i561.us.i: ; preds = %if.else.i.i556.us.i + %sub.ptr.div.i.i.i.i.i562.us.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i559.us.i, 3 + %.sroa.speculated.i.i.i.i563.us.i = call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i.i.i.i562.us.i, i64 1) + %add.i.i.i.i564.us.i = add nsw i64 %.sroa.speculated.i.i.i.i563.us.i, %sub.ptr.div.i.i.i.i.i562.us.i + %cmp7.i.i.i.i565.us.i = icmp ult i64 %add.i.i.i.i564.us.i, %sub.ptr.div.i.i.i.i.i562.us.i + %217 = call i64 @llvm.umin.i64(i64 %add.i.i.i.i564.us.i, i64 1152921504606846975) + %cond.i.i.i.i566.us.i = select i1 %cmp7.i.i.i.i565.us.i, i64 1152921504606846975, i64 %217 + %cmp.not.i.i.i.i567.us.i = icmp eq i64 %cond.i.i.i.i566.us.i, 0 + br i1 %cmp.not.i.i.i.i567.us.i, label %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i570.us.i, label %cond.true.i.i.i.i568.us.i + +cond.true.i.i.i.i568.us.i: ; preds = %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i561.us.i + %mul.i.i.i.i.i.i569.us.i = shl nuw nsw i64 %cond.i.i.i.i566.us.i, 3 + %call5.i.i.i.i.i.i590.us.i = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %mul.i.i.i.i.i.i569.us.i) #32 + to label %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i570.us.i unwind label %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split.us.i, !noalias !7 + +_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i570.us.i: ; preds = %cond.true.i.i.i.i568.us.i, %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i561.us.i + %cond.i10.i.i.i571.us.i = phi ptr [ null, %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i561.us.i ], [ %call5.i.i.i.i.i.i590.us.i, %cond.true.i.i.i.i568.us.i ] + %add.ptr.i.i.i572.us.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %cond.i10.i.i.i571.us.i, i64 %sub.ptr.div.i.i.i.i.i562.us.i + store <2 x float> %216, ptr %add.ptr.i.i.i572.us.i, align 4, !noalias !7 + %cmp.not5.i.i.i.i.i.i573.us.i = icmp eq ptr %points.sroa.0.23863.us.i, %points.sroa.30.22862.us.i + br i1 %cmp.not5.i.i.i.i.i.i573.us.i, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i580.us.i, label %for.body.i.i.i.i.i.i574.us.i + +for.body.i.i.i.i.i.i574.us.i: ; preds = %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i570.us.i, %for.body.i.i.i.i.i.i574.us.i + %__cur.07.i.i.i.i.i.i575.us.i = phi ptr [ %incdec.ptr1.i.i.i.i.i.i578.us.i, %for.body.i.i.i.i.i.i574.us.i ], [ %cond.i10.i.i.i571.us.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i570.us.i ] + %__first.addr.06.i.i.i.i.i.i576.us.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i577.us.i, %for.body.i.i.i.i.i.i574.us.i ], [ %points.sroa.0.23863.us.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i570.us.i ] call void @llvm.experimental.noalias.scope.decl(metadata !84) call void @llvm.experimental.noalias.scope.decl(metadata !87) - %218 = load i64, ptr %__first.addr.06.i.i.i.i.i.i599.us.i, align 4, !alias.scope !87, !noalias !89 - store i64 %218, ptr %__cur.07.i.i.i.i.i.i598.us.i, align 4, !alias.scope !84, !noalias !90 - %incdec.ptr.i.i.i.i.i.i600.us.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %__first.addr.06.i.i.i.i.i.i599.us.i, i64 1 - %incdec.ptr1.i.i.i.i.i.i601.us.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %__cur.07.i.i.i.i.i.i598.us.i, i64 1 - %cmp.not.i.i.i.i.i.i602.us.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i600.us.i, %points.sroa.30.22885.us.i - br i1 %cmp.not.i.i.i.i.i.i602.us.i, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i603.us.i, label %for.body.i.i.i.i.i.i597.us.i, !llvm.loop !17 - -_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i603.us.i: ; preds = %for.body.i.i.i.i.i.i597.us.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i593.us.i - %__cur.0.lcssa.i.i.i.i.i.i604.us.i = phi ptr [ %cond.i10.i.i.i594.us.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i593.us.i ], [ %incdec.ptr1.i.i.i.i.i.i601.us.i, %for.body.i.i.i.i.i.i597.us.i ] - %tobool.not.i.i.i.i606.us.i = icmp eq ptr %points.sroa.0.23886.us.i, null - br i1 %tobool.not.i.i.i.i606.us.i, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i608.us.i, label %if.then.i20.i.i.i607.us.i - -if.then.i20.i.i.i607.us.i: ; preds = %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i603.us.i - call void @_ZdlPv(ptr noundef nonnull %points.sroa.0.23886.us.i) #34, !noalias !7 - br label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i608.us.i - -_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i608.us.i: ; preds = %if.then.i20.i.i.i607.us.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i603.us.i - %add.ptr19.i.i.i609.us.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %cond.i10.i.i.i594.us.i, i64 %cond.i.i.i.i589.us.i + %218 = load i64, ptr %__first.addr.06.i.i.i.i.i.i576.us.i, align 4, !alias.scope !87, !noalias !89 + store i64 %218, ptr %__cur.07.i.i.i.i.i.i575.us.i, align 4, !alias.scope !84, !noalias !90 + %incdec.ptr.i.i.i.i.i.i577.us.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %__first.addr.06.i.i.i.i.i.i576.us.i, i64 1 + %incdec.ptr1.i.i.i.i.i.i578.us.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %__cur.07.i.i.i.i.i.i575.us.i, i64 1 + %cmp.not.i.i.i.i.i.i579.us.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i577.us.i, %points.sroa.30.22862.us.i + br i1 %cmp.not.i.i.i.i.i.i579.us.i, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i580.us.i, label %for.body.i.i.i.i.i.i574.us.i, !llvm.loop !17 + +_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i580.us.i: ; preds = %for.body.i.i.i.i.i.i574.us.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i570.us.i + %__cur.0.lcssa.i.i.i.i.i.i581.us.i = phi ptr [ %cond.i10.i.i.i571.us.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i570.us.i ], [ %incdec.ptr1.i.i.i.i.i.i578.us.i, %for.body.i.i.i.i.i.i574.us.i ] + %tobool.not.i.i.i.i583.us.i = icmp eq ptr %points.sroa.0.23863.us.i, null + br i1 %tobool.not.i.i.i.i583.us.i, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i585.us.i, label %if.then.i20.i.i.i584.us.i + +if.then.i20.i.i.i584.us.i: ; preds = %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i580.us.i + call void @_ZdlPv(ptr noundef nonnull %points.sroa.0.23863.us.i) #34, !noalias !7 + br label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i585.us.i + +_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i585.us.i: ; preds = %if.then.i20.i.i.i584.us.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i580.us.i + %add.ptr19.i.i.i586.us.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %cond.i10.i.i.i571.us.i, i64 %cond.i.i.i.i566.us.i br label %for.inc320.us.i -for.inc320.us.i: ; preds = %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i608.us.i, %if.then.i.i577.us.i - %points.sroa.75.22.us.i = phi ptr [ %add.ptr19.i.i.i609.us.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i608.us.i ], [ %points.sroa.75.21884.us.i, %if.then.i.i577.us.i ] - %__cur.0.lcssa.i.i.i.i.i.i604.pn.us.i = phi ptr [ %__cur.0.lcssa.i.i.i.i.i.i604.us.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i608.us.i ], [ %points.sroa.30.22885.us.i, %if.then.i.i577.us.i ] - %points.sroa.0.24.us.i = phi ptr [ %cond.i10.i.i.i594.us.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i608.us.i ], [ %points.sroa.0.23886.us.i, %if.then.i.i577.us.i ] - %points.sroa.30.23.us.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %__cur.0.lcssa.i.i.i.i.i.i604.pn.us.i, i64 1 - %inc321.us.i = add nuw nsw i32 %s298.0887.us.i, 1 - %exitcond.not.i = icmp eq i32 %inc321.us.i, %div2811092.i +for.inc320.us.i: ; preds = %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i585.us.i, %if.then.i.i554.us.i + %points.sroa.75.22.us.i = phi ptr [ %add.ptr19.i.i.i586.us.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i585.us.i ], [ %points.sroa.75.21861.us.i, %if.then.i.i554.us.i ] + %__cur.0.lcssa.i.i.i.i.i.i581.pn.us.i = phi ptr [ %__cur.0.lcssa.i.i.i.i.i.i581.us.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i585.us.i ], [ %points.sroa.30.22862.us.i, %if.then.i.i554.us.i ] + %points.sroa.0.24.us.i = phi ptr [ %cond.i10.i.i.i571.us.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i585.us.i ], [ %points.sroa.0.23863.us.i, %if.then.i.i554.us.i ] + %points.sroa.30.23.us.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %__cur.0.lcssa.i.i.i.i.i.i581.pn.us.i, i64 1 + %inc321.us.i = add nuw nsw i32 %s298.0864.us.i, 1 + %exitcond.not.i = icmp eq i32 %inc321.us.i, %div2811069.i br i1 %exitcond.not.i, label %for.cond299.for.inc323_crit_edge.us.i, label %for.body301.us.i, !llvm.loop !91 for.cond299.for.inc323_crit_edge.us.i: ; preds = %for.inc320.us.i %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 - %exitcond1068.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count1073.i - br i1 %exitcond1068.not.i, label %for.inc326.i, label %invoke.cont295.us.i, !llvm.loop !92 + %exitcond1045.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count1050.i + br i1 %exitcond1045.not.i, label %for.inc326.i, label %invoke.cont295.us.i, !llvm.loop !92 -lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split.us.i: ; preds = %cond.true.i.i.i.i591.us.i, %for.body301.us.i - %lpad.loopexit767.us.i = landingpad { ptr, i32 } +lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split.us.i: ; preds = %cond.true.i.i.i.i568.us.i, %for.body301.us.i + %lpad.loopexit744.us.i = landingpad { ptr, i32 } cleanup br label %ehcleanup360.i -if.then.i.i.i.i610.i: ; preds = %if.else.i.i579.us.i +if.then.i.i.i.i587.i: ; preds = %if.else.i.i556.us.i invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.40) #33 - to label %.noexc611.i unwind label %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i.loopexit.split-lp, !noalias !7 + to label %.noexc588.i unwind label %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i.loopexit.split-lp, !noalias !7 -.noexc611.i: ; preds = %if.then.i.i.i.i610.i +.noexc588.i: ; preds = %if.then.i.i.i.i587.i unreachable for.inc326.i: ; preds = %for.cond299.for.inc323_crit_edge.us.i, %invoke.cont295.preheader.i - %.us-phi.i = phi ptr [ %points.sroa.75.19905.i, %invoke.cont295.preheader.i ], [ %points.sroa.75.22.us.i, %for.cond299.for.inc323_crit_edge.us.i ] - %.us-phi895.i = phi ptr [ %points.sroa.30.20906.i, %invoke.cont295.preheader.i ], [ %points.sroa.30.23.us.i, %for.cond299.for.inc323_crit_edge.us.i ] - %.us-phi896.i = phi ptr [ %points.sroa.0.21907.i, %invoke.cont295.preheader.i ], [ %points.sroa.0.24.us.i, %for.cond299.for.inc323_crit_edge.us.i ] - %indvars.iv.next1070.i = add nuw nsw i64 %indvars.iv1069.i, 1 - %exitcond1074.not.i = icmp eq i64 %indvars.iv.next1070.i, %wide.trip.count1073.i - br i1 %exitcond1074.not.i, label %cleanup.thread.i, label %for.cond291.preheader.i, !llvm.loop !93 + %.us-phi.i = phi ptr [ %points.sroa.75.19882.i, %invoke.cont295.preheader.i ], [ %points.sroa.75.22.us.i, %for.cond299.for.inc323_crit_edge.us.i ] + %.us-phi872.i = phi ptr [ %points.sroa.30.20883.i, %invoke.cont295.preheader.i ], [ %points.sroa.30.23.us.i, %for.cond299.for.inc323_crit_edge.us.i ] + %.us-phi873.i = phi ptr [ %points.sroa.0.21884.i, %invoke.cont295.preheader.i ], [ %points.sroa.0.24.us.i, %for.cond299.for.inc323_crit_edge.us.i ] + %indvars.iv.next1047.i = add nuw nsw i64 %indvars.iv1046.i, 1 + %exitcond1051.not.i = icmp eq i64 %indvars.iv.next1047.i, %wide.trip.count1050.i + br i1 %exitcond1051.not.i, label %cleanup.thread.i, label %for.cond291.preheader.i, !llvm.loop !93 if.else329.i: ; preds = %if.else266.i call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i) @@ -3187,33 +3159,33 @@ for.cond334.preheader.i: ; preds = %call42.i351.noexc, %or.i.i43.i = or i64 %.sink44.i, %249 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp.i) %250 = load i32, ptr %nPoints.addr.i, align 4, !noalias !7 - %cmp335876.i = icmp sgt i32 %250, 0 + %cmp335853.i = icmp sgt i32 %250, 0 %and.i.i.i.i = and i64 %249, 144115188075855871 %251 = inttoptr i64 %and.i.i.i.i to ptr - %shr.i.i.i616.i = lshr i64 %or.i.i43.i, 57 - %conv.i.i.i.i = trunc i64 %shr.i.i.i616.i to i32 - br i1 %cmp335876.i, label %invoke.cont338.lr.ph.i, label %for.end348.i + %shr.i.i.i593.i = lshr i64 %or.i.i43.i, 57 + %conv.i.i.i.i = trunc i64 %shr.i.i.i593.i to i32 + br i1 %cmp335853.i, label %invoke.cont338.lr.ph.i, label %for.end348.i invoke.cont338.lr.ph.i: ; preds = %for.cond334.preheader.i - %sub.i.i617.i = add nsw i32 %conv.i.i.i.i, -1 + %sub.i.i594.i = add nsw i32 %conv.i.i.i.i, -1 br label %invoke.cont338.i invoke.cont338.i: ; preds = %for.inc346.i, %invoke.cont338.lr.ph.i - %i333.0880.i = phi i32 [ 0, %invoke.cont338.lr.ph.i ], [ %inc347.i, %for.inc346.i ] - %points.sroa.0.25879.i = phi ptr [ %points.sroa.30.0.i413424, %invoke.cont338.lr.ph.i ], [ %points.sroa.0.26.i, %for.inc346.i ] - %points.sroa.30.24878.i = phi ptr [ %points.sroa.30.0.i413424, %invoke.cont338.lr.ph.i ], [ %points.sroa.30.25.i, %for.inc346.i ] - %points.sroa.75.23877.i = phi ptr [ %points.sroa.75.0.i411426, %invoke.cont338.lr.ph.i ], [ %points.sroa.75.24.i, %for.inc346.i ] + %i333.0857.i = phi i32 [ 0, %invoke.cont338.lr.ph.i ], [ %inc347.i, %for.inc346.i ] + %points.sroa.0.25856.i = phi ptr [ %points.sroa.30.0.i413424, %invoke.cont338.lr.ph.i ], [ %points.sroa.0.26.i, %for.inc346.i ] + %points.sroa.30.24855.i = phi ptr [ %points.sroa.30.0.i413424, %invoke.cont338.lr.ph.i ], [ %points.sroa.30.25.i, %for.inc346.i ] + %points.sroa.75.23854.i = phi ptr [ %points.sroa.75.0.i411426, %invoke.cont338.lr.ph.i ], [ %points.sroa.75.24.i, %for.inc346.i ] call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %p.i.i), !noalias !7 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %sampleIndex.addr.i.i), !noalias !7 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %dimension.addr.i.i), !noalias !7 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %start.i.i), !noalias !7 store i64 0, ptr %p.i.i, align 8, !noalias !7 - store i32 %i333.0880.i, ptr %sampleIndex.addr.i.i, align 4, !noalias !7 + store i32 %i333.0857.i, ptr %sampleIndex.addr.i.i, align 4, !noalias !7 store i32 0, ptr %dimension.addr.i.i, align 4, !noalias !7 store ptr %p.i.i, ptr %start.i.i, align 8, !noalias !7 store ptr %sampleIndex.addr.i.i, ptr %84, align 8, !noalias !7 store ptr %dimension.addr.i.i, ptr %85, align 8, !noalias !7 - invoke void @_ZN4pbrt6detail8DispatchIRZNS_7Sampler16StartPixelSampleENS_6Point2IiEEiiEUlT_E_vNS_14PMJ02BNSamplerENS_18IndependentSamplerENS_17StratifiedSamplerENS_13HaltonSamplerENS_18PaddedSobolSamplerENS_12SobolSamplerENS_13ZSobolSamplerENS_10MLTSamplerEJNS_15DebugMLTSamplerEEvEET0_OS5_Pvi(ptr noundef nonnull align 8 dereferenceable(24) %start.i.i, ptr noundef %251, i32 noundef %sub.i.i617.i) + invoke void @_ZN4pbrt6detail8DispatchIRZNS_7Sampler16StartPixelSampleENS_6Point2IiEEiiEUlT_E_vNS_14PMJ02BNSamplerENS_18IndependentSamplerENS_17StratifiedSamplerENS_13HaltonSamplerENS_18PaddedSobolSamplerENS_12SobolSamplerENS_13ZSobolSamplerENS_10MLTSamplerEJNS_15DebugMLTSamplerEEvEET0_OS5_Pvi(ptr noundef nonnull align 8 dereferenceable(24) %start.i.i, ptr noundef %251, i32 noundef %sub.i.i594.i) to label %invoke.cont340.i unwind label %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i, !noalias !7 invoke.cont340.i: ; preds = %invoke.cont338.i @@ -3222,36 +3194,36 @@ invoke.cont340.i: ; preds = %invoke.cont338.i call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %dimension.addr.i.i), !noalias !7 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %start.i.i), !noalias !7 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %get.i.i), !noalias !7 - %call3.i.i623.i = invoke <2 x float> @_ZN4pbrt6detail8DispatchIRZNS_7Sampler5Get2DEvEUlT_E_NS_6Point2IfEENS_14PMJ02BNSamplerENS_18IndependentSamplerENS_17StratifiedSamplerENS_13HaltonSamplerENS_18PaddedSobolSamplerENS_12SobolSamplerENS_13ZSobolSamplerENS_10MLTSamplerEJNS_15DebugMLTSamplerEEvEET0_OS3_Pvi(ptr noundef nonnull align 1 dereferenceable(1) %get.i.i, ptr noundef %251, i32 noundef %sub.i.i617.i) + %call3.i.i600.i = invoke <2 x float> @_ZN4pbrt6detail8DispatchIRZNS_7Sampler5Get2DEvEUlT_E_NS_6Point2IfEENS_14PMJ02BNSamplerENS_18IndependentSamplerENS_17StratifiedSamplerENS_13HaltonSamplerENS_18PaddedSobolSamplerENS_12SobolSamplerENS_13ZSobolSamplerENS_10MLTSamplerEJNS_15DebugMLTSamplerEEvEET0_OS3_Pvi(ptr noundef nonnull align 1 dereferenceable(1) %get.i.i, ptr noundef %251, i32 noundef %sub.i.i594.i) to label %invoke.cont342.i unwind label %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i, !noalias !7 invoke.cont342.i: ; preds = %invoke.cont340.i call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %get.i.i), !noalias !7 - %cmp.not.i624.i = icmp eq ptr %points.sroa.30.24878.i, %points.sroa.75.23877.i - br i1 %cmp.not.i624.i, label %if.else.i.i, label %if.then.i625.i + %cmp.not.i601.i = icmp eq ptr %points.sroa.30.24855.i, %points.sroa.75.23854.i + br i1 %cmp.not.i601.i, label %if.else.i.i, label %if.then.i602.i -if.then.i625.i: ; preds = %invoke.cont342.i - store <2 x float> %call3.i.i623.i, ptr %points.sroa.30.24878.i, align 4, !noalias !7 +if.then.i602.i: ; preds = %invoke.cont342.i + store <2 x float> %call3.i.i600.i, ptr %points.sroa.30.24855.i, align 4, !noalias !7 br label %for.inc346.i if.else.i.i: ; preds = %invoke.cont342.i - %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %points.sroa.30.24878.i to i64 - %sub.ptr.rhs.cast.i.i.i.i.i = ptrtoint ptr %points.sroa.0.25879.i to i64 + %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %points.sroa.30.24855.i to i64 + %sub.ptr.rhs.cast.i.i.i.i.i = ptrtoint ptr %points.sroa.0.25856.i to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i, %sub.ptr.rhs.cast.i.i.i.i.i %cmp.i.i.i.i = icmp eq i64 %sub.ptr.sub.i.i.i.i.i, 9223372036854775800 br i1 %cmp.i.i.i.i, label %if.then.i.i.i.i, label %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i if.then.i.i.i.i: ; preds = %if.else.i.i invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.40) #33 - to label %.noexc628.i unwind label %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i.loopexit.split-lp, !noalias !7 + to label %.noexc605.i unwind label %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i.loopexit.split-lp, !noalias !7 -.noexc628.i: ; preds = %if.then.i.i.i.i +.noexc605.i: ; preds = %if.then.i.i.i.i unreachable _ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i: ; preds = %if.else.i.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %.sroa.speculated.i.i.i.i = call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i.i.i.i, i64 1) - %add.i.i.i.i = add i64 %.sroa.speculated.i.i.i.i, %sub.ptr.div.i.i.i.i.i + %add.i.i.i.i = add nsw i64 %.sroa.speculated.i.i.i.i, %sub.ptr.div.i.i.i.i.i %cmp7.i.i.i.i = icmp ult i64 %add.i.i.i.i, %sub.ptr.div.i.i.i.i.i %252 = call i64 @llvm.umin.i64(i64 %add.i.i.i.i, i64 1152921504606846975) %cond.i.i.i.i = select i1 %cmp7.i.i.i.i, i64 1152921504606846975, i64 %252 @@ -3260,47 +3232,47 @@ _ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i: ; preds = cond.true.i.i.i.i: ; preds = %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i %mul.i.i.i.i.i.i = shl nuw nsw i64 %cond.i.i.i.i, 3 - %call5.i.i.i.i.i629.i = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %mul.i.i.i.i.i.i) #32 + %call5.i.i.i.i.i606.i = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %mul.i.i.i.i.i.i) #32 to label %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i unwind label %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i, !noalias !7 _ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i: ; preds = %cond.true.i.i.i.i, %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i - %cond.i10.i.i.i = phi ptr [ null, %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i ], [ %call5.i.i.i.i.i629.i, %cond.true.i.i.i.i ] + %cond.i10.i.i.i = phi ptr [ null, %_ZNKSt6vectorIN4pbrt6Point2IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i ], [ %call5.i.i.i.i.i606.i, %cond.true.i.i.i.i ] %add.ptr.i.i.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %cond.i10.i.i.i, i64 %sub.ptr.div.i.i.i.i.i - store <2 x float> %call3.i.i623.i, ptr %add.ptr.i.i.i, align 4, !noalias !7 - %cmp.not5.i.i.i.i.i.i = icmp eq ptr %points.sroa.0.25879.i, %points.sroa.30.24878.i + store <2 x float> %call3.i.i600.i, ptr %add.ptr.i.i.i, align 4, !noalias !7 + %cmp.not5.i.i.i.i.i.i = icmp eq ptr %points.sroa.0.25856.i, %points.sroa.30.24855.i br i1 %cmp.not5.i.i.i.i.i.i, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i, label %for.body.i.i.i.i.i.i for.body.i.i.i.i.i.i: ; preds = %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i, %for.body.i.i.i.i.i.i %__cur.07.i.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i.i, %for.body.i.i.i.i.i.i ], [ %cond.i10.i.i.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i ] - %__first.addr.06.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i, %for.body.i.i.i.i.i.i ], [ %points.sroa.0.25879.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i ] + %__first.addr.06.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i, %for.body.i.i.i.i.i.i ], [ %points.sroa.0.25856.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i ] call void @llvm.experimental.noalias.scope.decl(metadata !97) call void @llvm.experimental.noalias.scope.decl(metadata !100) %253 = load i64, ptr %__first.addr.06.i.i.i.i.i.i, align 4, !alias.scope !100, !noalias !102 store i64 %253, ptr %__cur.07.i.i.i.i.i.i, align 4, !alias.scope !97, !noalias !103 %incdec.ptr.i.i.i.i.i.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %__first.addr.06.i.i.i.i.i.i, i64 1 %incdec.ptr1.i.i.i.i.i.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %__cur.07.i.i.i.i.i.i, i64 1 - %cmp.not.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i, %points.sroa.30.24878.i + %cmp.not.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i, %points.sroa.30.24855.i br i1 %cmp.not.i.i.i.i.i.i, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i, label %for.body.i.i.i.i.i.i, !llvm.loop !17 _ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i: ; preds = %for.body.i.i.i.i.i.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i %__cur.0.lcssa.i.i.i.i.i.i = phi ptr [ %cond.i10.i.i.i, %_ZNSt12_Vector_baseIN4pbrt6Point2IfEESaIS2_EE11_M_allocateEm.exit.i.i.i ], [ %incdec.ptr1.i.i.i.i.i.i, %for.body.i.i.i.i.i.i ] - %tobool.not.i.i.i.i = icmp eq ptr %points.sroa.0.25879.i, null + %tobool.not.i.i.i.i = icmp eq ptr %points.sroa.0.25856.i, null br i1 %tobool.not.i.i.i.i, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i, label %if.then.i20.i.i.i if.then.i20.i.i.i: ; preds = %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i - call void @_ZdlPv(ptr noundef nonnull %points.sroa.0.25879.i) #34, !noalias !7 + call void @_ZdlPv(ptr noundef nonnull %points.sroa.0.25856.i) #34, !noalias !7 br label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i _ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i: ; preds = %if.then.i20.i.i.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i %add.ptr19.i.i.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %cond.i10.i.i.i, i64 %cond.i.i.i.i br label %for.inc346.i -for.inc346.i: ; preds = %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i, %if.then.i625.i - %points.sroa.75.24.i = phi ptr [ %add.ptr19.i.i.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i ], [ %points.sroa.75.23877.i, %if.then.i625.i ] - %__cur.0.lcssa.i.i.i.i.i.pn.i = phi ptr [ %__cur.0.lcssa.i.i.i.i.i.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i ], [ %points.sroa.30.24878.i, %if.then.i625.i ] - %points.sroa.0.26.i = phi ptr [ %cond.i10.i.i.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i ], [ %points.sroa.0.25879.i, %if.then.i625.i ] +for.inc346.i: ; preds = %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i, %if.then.i602.i + %points.sroa.75.24.i = phi ptr [ %add.ptr19.i.i.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i ], [ %points.sroa.75.23854.i, %if.then.i602.i ] + %__cur.0.lcssa.i.i.i.i.i.pn.i = phi ptr [ %__cur.0.lcssa.i.i.i.i.i.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i ], [ %points.sroa.30.24855.i, %if.then.i602.i ] + %points.sroa.0.26.i = phi ptr [ %cond.i10.i.i.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i ], [ %points.sroa.0.25856.i, %if.then.i602.i ] %points.sroa.30.25.i = getelementptr inbounds %"class.pbrt::Point2.59", ptr %__cur.0.lcssa.i.i.i.i.i.pn.i, i64 1 - %inc347.i = add nuw nsw i32 %i333.0880.i, 1 + %inc347.i = add nuw nsw i32 %i333.0857.i, 1 %254 = load i32, ptr %nPoints.addr.i, align 4, !noalias !7 %cmp335.i = icmp slt i32 %inc347.i, %254 br i1 %cmp335.i, label %invoke.cont338.i, label %for.end348.i, !llvm.loop !104 @@ -3418,36 +3390,36 @@ return.sink.split.i.i: ; preds = %if.end.i.i.i.i.i.i. cleanup.thread.i: ; preds = %for.inc.i, %for.inc326.i, %for.inc263.i, %for.inc229.i, %for.inc195.i, %invoke.cont167.i, %for.cond118.for.inc132_crit_edge.us.i, %do.body.i, %do.body.i, %invoke.cont.i178, %return.sink.split.i.i, %sw.default.i.i, %sw.bb7.i.i, %sw.bb6.i.i, %sw.bb5.i.i, %sw.bb4.i.i, %sw.bb3.i.i, %sw.bb2.i.i, %sw.bb1.i.i, %sw.bb.i.i, %invoke.cont240.i, %for.cond217.preheader.i, %for.cond183.preheader.i, %for.cond164.preheader.i, %if.then138.i, %if.then108.i, %for.end101.i %points.sroa.75.25.i = phi ptr [ %points.sroa.75.6.lcssa.i, %for.end101.i ], [ %points.sroa.75.0.i411426, %if.then108.i ], [ %points.sroa.75.12.i, %for.cond164.preheader.i ], [ %points.sroa.75.0.i411426, %for.cond183.preheader.i ], [ %points.sroa.75.0.i411426, %for.cond217.preheader.i ], [ %points.sroa.75.0.i411426, %invoke.cont240.i ], [ %points.sroa.75.0.i411426, %if.then138.i ], [ %points.sroa.75.23.lcssa.i, %sw.bb.i.i ], [ %points.sroa.75.23.lcssa.i, %sw.bb1.i.i ], [ %points.sroa.75.23.lcssa.i, %sw.bb2.i.i ], [ %points.sroa.75.23.lcssa.i, %sw.bb3.i.i ], [ %points.sroa.75.23.lcssa.i, %sw.bb4.i.i ], [ %points.sroa.75.23.lcssa.i, %sw.bb5.i.i ], [ %points.sroa.75.23.lcssa.i, %sw.bb6.i.i ], [ %points.sroa.75.23.lcssa.i, %sw.bb7.i.i ], [ %points.sroa.75.23.lcssa.i, %sw.default.i.i ], [ %points.sroa.75.23.lcssa.i, %return.sink.split.i.i ], [ null, %invoke.cont.i178 ], [ %points.sroa.75.3.lcssa.i, %do.body.i ], [ %points.sroa.75.3.lcssa.i, %do.body.i ], [ %points.sroa.75.10.us.i, %for.cond118.for.inc132_crit_edge.us.i ], [ %points.sroa.75.12.i, %invoke.cont167.i ], [ %points.sroa.75.14.i, %for.inc195.i ], [ %points.sroa.75.16.i, %for.inc229.i ], [ %points.sroa.75.18.i, %for.inc263.i ], [ %.us-phi.i, %for.inc326.i ], [ %points.sroa.75.2.i, %for.inc.i ] - %points.sroa.30.26.i = phi ptr [ %points.sroa.30.6.lcssa.i, %for.end101.i ], [ %points.sroa.30.0.i413424, %if.then108.i ], [ %points.sroa.30.13.i, %for.cond164.preheader.i ], [ %points.sroa.30.0.i413424, %for.cond183.preheader.i ], [ %points.sroa.30.0.i413424, %for.cond217.preheader.i ], [ %points.sroa.30.0.i413424, %invoke.cont240.i ], [ %points.sroa.30.0.i413424, %if.then138.i ], [ %points.sroa.30.24.lcssa.i, %sw.bb.i.i ], [ %points.sroa.30.24.lcssa.i, %sw.bb1.i.i ], [ %points.sroa.30.24.lcssa.i, %sw.bb2.i.i ], [ %points.sroa.30.24.lcssa.i, %sw.bb3.i.i ], [ %points.sroa.30.24.lcssa.i, %sw.bb4.i.i ], [ %points.sroa.30.24.lcssa.i, %sw.bb5.i.i ], [ %points.sroa.30.24.lcssa.i, %sw.bb6.i.i ], [ %points.sroa.30.24.lcssa.i, %sw.bb7.i.i ], [ %points.sroa.30.24.lcssa.i, %sw.default.i.i ], [ %points.sroa.30.24.lcssa.i, %return.sink.split.i.i ], [ null, %invoke.cont.i178 ], [ %points.sroa.30.3.lcssa.i, %do.body.i ], [ %points.sroa.30.3.lcssa.i, %do.body.i ], [ %points.sroa.30.11.us.i, %for.cond118.for.inc132_crit_edge.us.i ], [ %points.sroa.30.13.i, %invoke.cont167.i ], [ %points.sroa.30.15.i, %for.inc195.i ], [ %points.sroa.30.17.i, %for.inc229.i ], [ %points.sroa.30.19.i, %for.inc263.i ], [ %.us-phi895.i, %for.inc326.i ], [ %points.sroa.30.2.i, %for.inc.i ] - %points.sroa.0.27.i = phi ptr [ %points.sroa.0.8.lcssa.i, %for.end101.i ], [ %points.sroa.30.0.i413424, %if.then108.i ], [ %points.sroa.0.14.i, %for.cond164.preheader.i ], [ %points.sroa.30.0.i413424, %for.cond183.preheader.i ], [ %points.sroa.30.0.i413424, %for.cond217.preheader.i ], [ %points.sroa.30.0.i413424, %invoke.cont240.i ], [ %points.sroa.30.0.i413424, %if.then138.i ], [ %points.sroa.0.25.lcssa.i, %sw.bb.i.i ], [ %points.sroa.0.25.lcssa.i, %sw.bb1.i.i ], [ %points.sroa.0.25.lcssa.i, %sw.bb2.i.i ], [ %points.sroa.0.25.lcssa.i, %sw.bb3.i.i ], [ %points.sroa.0.25.lcssa.i, %sw.bb4.i.i ], [ %points.sroa.0.25.lcssa.i, %sw.bb5.i.i ], [ %points.sroa.0.25.lcssa.i, %sw.bb6.i.i ], [ %points.sroa.0.25.lcssa.i, %sw.bb7.i.i ], [ %points.sroa.0.25.lcssa.i, %sw.default.i.i ], [ %points.sroa.0.25.lcssa.i, %return.sink.split.i.i ], [ null, %invoke.cont.i178 ], [ %points.sroa.0.5.lcssa.i, %do.body.i ], [ %points.sroa.0.5.lcssa.i, %do.body.i ], [ %points.sroa.0.12.us.i, %for.cond118.for.inc132_crit_edge.us.i ], [ %points.sroa.0.14.i, %invoke.cont167.i ], [ %points.sroa.0.16.i, %for.inc195.i ], [ %points.sroa.0.18.i, %for.inc229.i ], [ %points.sroa.0.20.i, %for.inc263.i ], [ %.us-phi896.i, %for.inc326.i ], [ %points.sroa.0.4.i, %for.inc.i ] - store i8 1, ptr %set.i630.i, align 8, !alias.scope !7 + %points.sroa.30.26.i = phi ptr [ %points.sroa.30.6.lcssa.i, %for.end101.i ], [ %points.sroa.30.0.i413424, %if.then108.i ], [ %points.sroa.30.13.i, %for.cond164.preheader.i ], [ %points.sroa.30.0.i413424, %for.cond183.preheader.i ], [ %points.sroa.30.0.i413424, %for.cond217.preheader.i ], [ %points.sroa.30.0.i413424, %invoke.cont240.i ], [ %points.sroa.30.0.i413424, %if.then138.i ], [ %points.sroa.30.24.lcssa.i, %sw.bb.i.i ], [ %points.sroa.30.24.lcssa.i, %sw.bb1.i.i ], [ %points.sroa.30.24.lcssa.i, %sw.bb2.i.i ], [ %points.sroa.30.24.lcssa.i, %sw.bb3.i.i ], [ %points.sroa.30.24.lcssa.i, %sw.bb4.i.i ], [ %points.sroa.30.24.lcssa.i, %sw.bb5.i.i ], [ %points.sroa.30.24.lcssa.i, %sw.bb6.i.i ], [ %points.sroa.30.24.lcssa.i, %sw.bb7.i.i ], [ %points.sroa.30.24.lcssa.i, %sw.default.i.i ], [ %points.sroa.30.24.lcssa.i, %return.sink.split.i.i ], [ null, %invoke.cont.i178 ], [ %points.sroa.30.3.lcssa.i, %do.body.i ], [ %points.sroa.30.3.lcssa.i, %do.body.i ], [ %points.sroa.30.11.us.i, %for.cond118.for.inc132_crit_edge.us.i ], [ %points.sroa.30.13.i, %invoke.cont167.i ], [ %points.sroa.30.15.i, %for.inc195.i ], [ %points.sroa.30.17.i, %for.inc229.i ], [ %points.sroa.30.19.i, %for.inc263.i ], [ %.us-phi872.i, %for.inc326.i ], [ %points.sroa.30.2.i, %for.inc.i ] + %points.sroa.0.27.i = phi ptr [ %points.sroa.0.8.lcssa.i, %for.end101.i ], [ %points.sroa.30.0.i413424, %if.then108.i ], [ %points.sroa.0.14.i, %for.cond164.preheader.i ], [ %points.sroa.30.0.i413424, %for.cond183.preheader.i ], [ %points.sroa.30.0.i413424, %for.cond217.preheader.i ], [ %points.sroa.30.0.i413424, %invoke.cont240.i ], [ %points.sroa.30.0.i413424, %if.then138.i ], [ %points.sroa.0.25.lcssa.i, %sw.bb.i.i ], [ %points.sroa.0.25.lcssa.i, %sw.bb1.i.i ], [ %points.sroa.0.25.lcssa.i, %sw.bb2.i.i ], [ %points.sroa.0.25.lcssa.i, %sw.bb3.i.i ], [ %points.sroa.0.25.lcssa.i, %sw.bb4.i.i ], [ %points.sroa.0.25.lcssa.i, %sw.bb5.i.i ], [ %points.sroa.0.25.lcssa.i, %sw.bb6.i.i ], [ %points.sroa.0.25.lcssa.i, %sw.bb7.i.i ], [ %points.sroa.0.25.lcssa.i, %sw.default.i.i ], [ %points.sroa.0.25.lcssa.i, %return.sink.split.i.i ], [ null, %invoke.cont.i178 ], [ %points.sroa.0.5.lcssa.i, %do.body.i ], [ %points.sroa.0.5.lcssa.i, %do.body.i ], [ %points.sroa.0.12.us.i, %for.cond118.for.inc132_crit_edge.us.i ], [ %points.sroa.0.14.i, %invoke.cont167.i ], [ %points.sroa.0.16.i, %for.inc195.i ], [ %points.sroa.0.18.i, %for.inc229.i ], [ %points.sroa.0.20.i, %for.inc263.i ], [ %.us-phi873.i, %for.inc326.i ], [ %points.sroa.0.4.i, %for.inc.i ] + store i8 1, ptr %set.i607.i, align 8, !alias.scope !7 store ptr %points.sroa.0.27.i, ptr %points, align 8, !alias.scope !7 store ptr %points.sroa.30.26.i, ptr %_M_finish.i.i.i.i.i.i, align 8, !alias.scope !7 store ptr %points.sroa.75.25.i, ptr %_M_end_of_storage.i.i.i.i.i.i, align 8, !alias.scope !7 br label %invoke.cont219 cleanup.i: ; preds = %invoke.cont89.i, %retry.preheader.i, %if.then27.i, %if.then5.i - %points.sroa.0.28.i = phi ptr [ %points.sroa.0.11002.i, %if.then5.i ], [ %points.sroa.0.6.i, %if.then27.i ], [ %points.sroa.30.0.i413424, %retry.preheader.i ], [ %points.sroa.0.8973.i, %invoke.cont89.i ] + %points.sroa.0.28.i = phi ptr [ %points.sroa.0.1979.i, %if.then5.i ], [ %points.sroa.0.6.i, %if.then27.i ], [ %points.sroa.30.0.i413424, %retry.preheader.i ], [ %points.sroa.0.8950.i, %invoke.cont89.i ] call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %points, i8 0, i64 32, i1 false), !alias.scope !7 - %tobool.not.i.i.i631.i = icmp eq ptr %points.sroa.0.28.i, null - br i1 %tobool.not.i.i.i631.i, label %invoke.cont219, label %if.then.i.i.i632.i + %tobool.not.i.i.i608.i = icmp eq ptr %points.sroa.0.28.i, null + br i1 %tobool.not.i.i.i608.i, label %invoke.cont219, label %if.then.i.i.i609.i -if.then.i.i.i632.i: ; preds = %cleanup.i.thread, %cleanup.i +if.then.i.i.i609.i: ; preds = %cleanup.i.thread, %cleanup.i %points.sroa.0.28.i786 = phi ptr [ %call5.i.i.i.i53.i, %cleanup.i.thread ], [ %points.sroa.0.28.i, %cleanup.i ] call void @_ZdlPv(ptr noundef nonnull %points.sroa.0.28.i786) #34, !noalias !7 br label %invoke.cont219 ehcleanup360.i: ; preds = %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i.loopexit, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i.loopexit.split-lp, %lpad16.i, %common.resume.i.i.i, %common.resume.i.i29.i, %lpad37.i, %lpad44.i, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split.us.i, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split.us.i, %common.resume.i.i, %ehcleanup.i, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.i, %lpad.loopexit.split-lp.loopexit.i, %lpad.loopexit.i - %points.sroa.0.29.i = phi ptr [ %points.sroa.30.0.i413424, %ehcleanup.i ], [ %points.sroa.0.8973.i, %common.resume.i.i ], [ %points.sroa.0.11002.i, %lpad.loopexit.i ], [ %points.sroa.0.5995.i642, %lpad.loopexit.split-lp.loopexit.i ], [ %points.sroa.0.8973.i, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.i ], [ %points.sroa.0.11951.us.i, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split.us.i ], [ %points.sroa.0.13938.i, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i ], [ %points.sroa.0.15928.i, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i ], [ %points.sroa.0.17920.i, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i ], [ %points.sroa.0.19912.i, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i ], [ %points.sroa.0.23886.us.i, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split.us.i ], [ %points.sroa.0.25879.i, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i ], [ %points.sroa.30.0.i413424, %lpad16.i ], [ %points.sroa.30.0.i413424, %common.resume.i.i.i ], [ %points.sroa.30.0.i413424, %common.resume.i.i29.i ], [ %points.sroa.30.0.i413424, %lpad37.i ], [ %points.sroa.30.0.i413424, %lpad44.i ], [ %points.sroa.0.2.ph.ph.ph.ph.ph.ph.ph.ph.ph.ph.i.ph, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i.loopexit ], [ %points.sroa.0.2.ph.ph.ph.ph.ph.ph.ph.ph.ph.ph.i.ph455, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i.loopexit.split-lp ] - %.pn51.i = phi { ptr, i32 } [ %.pn.i, %ehcleanup.i ], [ %common.resume.op.i.i, %common.resume.i.i ], [ %lpad.loopexit738.i, %lpad.loopexit.i ], [ %lpad.loopexit741.i, %lpad.loopexit.split-lp.loopexit.i ], [ %lpad.loopexit744.i, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.i ], [ %lpad.loopexit747.us.i, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split.us.i ], [ %lpad.loopexit752.i, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i ], [ %lpad.loopexit756.i, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i ], [ %lpad.loopexit760.i, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i ], [ %lpad.loopexit764.i, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i ], [ %lpad.loopexit767.us.i, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split.us.i ], [ %lpad.loopexit771.i, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i ], [ %228, %lpad16.i ], [ %common.resume.op.i.i.i, %common.resume.i.i.i ], [ %common.resume.op.i.i30.i, %common.resume.i.i29.i ], [ %244, %lpad37.i ], [ %248, %lpad44.i ], [ %lpad.loopexit456, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i.loopexit ], [ %lpad.loopexit.split-lp457, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i.loopexit.split-lp ] - %tobool.not.i.i.i633.i = icmp eq ptr %points.sroa.0.29.i, null - br i1 %tobool.not.i.i.i633.i, label %lpad218.body, label %if.then.i.i.i634.i + %points.sroa.0.29.i = phi ptr [ %points.sroa.30.0.i413424, %ehcleanup.i ], [ %points.sroa.0.8950.i, %common.resume.i.i ], [ %points.sroa.0.1979.i, %lpad.loopexit.i ], [ %points.sroa.0.5972.i642, %lpad.loopexit.split-lp.loopexit.i ], [ %points.sroa.0.8950.i, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.i ], [ %points.sroa.0.11928.us.i, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split.us.i ], [ %points.sroa.0.13915.i, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i ], [ %points.sroa.0.15905.i, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i ], [ %points.sroa.0.17897.i, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i ], [ %points.sroa.0.19889.i, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i ], [ %points.sroa.0.23863.us.i, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split.us.i ], [ %points.sroa.0.25856.i, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i ], [ %points.sroa.30.0.i413424, %lpad16.i ], [ %points.sroa.30.0.i413424, %common.resume.i.i.i ], [ %points.sroa.30.0.i413424, %common.resume.i.i29.i ], [ %points.sroa.30.0.i413424, %lpad37.i ], [ %points.sroa.30.0.i413424, %lpad44.i ], [ %points.sroa.0.2.ph.ph.ph.ph.ph.ph.ph.ph.ph.ph.i.ph, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i.loopexit ], [ %points.sroa.0.2.ph.ph.ph.ph.ph.ph.ph.ph.ph.ph.i.ph455, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i.loopexit.split-lp ] + %.pn51.i = phi { ptr, i32 } [ %.pn.i, %ehcleanup.i ], [ %common.resume.op.i.i, %common.resume.i.i ], [ %lpad.loopexit715.i, %lpad.loopexit.i ], [ %lpad.loopexit718.i, %lpad.loopexit.split-lp.loopexit.i ], [ %lpad.loopexit721.i, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.i ], [ %lpad.loopexit724.us.i, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split.us.i ], [ %lpad.loopexit729.i, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i ], [ %lpad.loopexit733.i, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i ], [ %lpad.loopexit737.i, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i ], [ %lpad.loopexit741.i, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i ], [ %lpad.loopexit744.us.i, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split.us.i ], [ %lpad.loopexit748.i, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.i ], [ %228, %lpad16.i ], [ %common.resume.op.i.i.i, %common.resume.i.i.i ], [ %common.resume.op.i.i30.i, %common.resume.i.i29.i ], [ %244, %lpad37.i ], [ %248, %lpad44.i ], [ %lpad.loopexit456, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i.loopexit ], [ %lpad.loopexit.split-lp457, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i.loopexit.split-lp ] + %tobool.not.i.i.i610.i = icmp eq ptr %points.sroa.0.29.i, null + br i1 %tobool.not.i.i.i610.i, label %lpad218.body, label %if.then.i.i.i611.i -if.then.i.i.i634.i: ; preds = %ehcleanup360.i +if.then.i.i.i611.i: ; preds = %ehcleanup360.i call void @_ZdlPv(ptr noundef nonnull %points.sroa.0.29.i) #34, !noalias !7 br label %lpad218.body -invoke.cont219: ; preds = %if.then.i.i.i632.i, %cleanup.i, %cleanup.thread.i +invoke.cont219: ; preds = %if.then.i.i.i609.i, %cleanup.i, %cleanup.thread.i call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %nPoints.addr.i) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %i.i) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %s.i) @@ -3461,7 +3433,7 @@ invoke.cont219: ; preds = %if.then.i.i.i632.i, call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %perm3.i) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %sampler.i) call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp216) #29 - %268 = load i8, ptr %set.i630.i, align 8 + %268 = load i8, ptr %set.i607.i, align 8 %269 = and i8 %268, 1 %tobool.i.not = icmp eq i8 %269, 0 br i1 %tobool.i.not, label %while.end, label %if.end225 @@ -3518,7 +3490,7 @@ lpad212.loopexit.split-lp: ; preds = %_ZNSt8functionIFvlE cleanup br label %ehcleanup359 -lpad218.body: ; preds = %ehcleanup360.i, %if.then.i.i.i634.i +lpad218.body: ; preds = %ehcleanup360.i, %if.then.i.i.i611.i call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp216) #29 br label %ehcleanup359 @@ -3637,7 +3609,7 @@ cleanup: ; preds = %if.end.i, %_ZNSt8fu %295 = load i32, ptr %actualNSets, align 4 %cmp236 = icmp ne i32 %295, %294 %or.cond46.not = select i1 %cmp235.not, i1 true, i1 %cmp236 - %.pre769 = load i8, ptr %set.i630.i, align 8 + %.pre769 = load i8, ptr %set.i607.i, align 8 %.pre771 = and i8 %.pre769, 1 %tobool.not.i.i208 = icmp eq i8 %.pre771, 0 br i1 %tobool.not.i.i208, label %_ZN4pstd8optionalISt6vectorIN4pbrt6Point2IfEESaIS4_EEED2Ev.exit, label %_ZN4pstd8optionalISt6vectorIN4pbrt6Point2IfEESaIS4_EEE5valueEv.exit.i.i @@ -3652,7 +3624,7 @@ if.then.i.i.i.i.i210: ; preds = %_ZN4pstd8optionalIS br label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EED2Ev.exit.i.i _ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EED2Ev.exit.i.i: ; preds = %if.then.i.i.i.i.i210, %_ZN4pstd8optionalISt6vectorIN4pbrt6Point2IfEESaIS4_EEE5valueEv.exit.i.i - store i8 0, ptr %set.i630.i, align 8 + store i8 0, ptr %set.i607.i, align 8 br label %_ZN4pstd8optionalISt6vectorIN4pbrt6Point2IfEESaIS4_EEED2Ev.exit _ZN4pstd8optionalISt6vectorIN4pbrt6Point2IfEESaIS4_EEED2Ev.exit: ; preds = %cleanup, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EED2Ev.exit.i.i @@ -3660,7 +3632,7 @@ _ZN4pstd8optionalISt6vectorIN4pbrt6Point2IfEESaIS4_EEED2Ev.exit: ; preds = %clea ehcleanup239: ; preds = %if.then.i.i203, %lpad231.body, %lpad221 %.pn25 = phi { ptr, i32 } [ %275, %lpad221 ], [ %281, %lpad231.body ], [ %281, %if.then.i.i203 ] - %297 = load i8, ptr %set.i630.i, align 8 + %297 = load i8, ptr %set.i607.i, align 8 %298 = and i8 %297, 1 %tobool.not.i.i213 = icmp eq i8 %298, 0 br i1 %tobool.not.i.i213, label %ehcleanup359, label %_ZN4pstd8optionalISt6vectorIN4pbrt6Point2IfEESaIS4_EEE5valueEv.exit.i.i214 @@ -3675,7 +3647,7 @@ if.then.i.i.i.i.i216: ; preds = %_ZN4pstd8optionalIS br label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EED2Ev.exit.i.i217 _ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EED2Ev.exit.i.i217: ; preds = %if.then.i.i.i.i.i216, %_ZN4pstd8optionalISt6vectorIN4pbrt6Point2IfEESaIS4_EEE5valueEv.exit.i.i214 - store i8 0, ptr %set.i630.i, align 8 + store i8 0, ptr %set.i607.i, align 8 br label %ehcleanup359 while.end: ; preds = %invoke.cont219, %_ZN4pstd8optionalISt6vectorIN4pbrt6Point2IfEESaIS4_EEED2Ev.exit @@ -6056,7 +6028,7 @@ for.body.lr.ph.i: ; preds = %entry %3 = load i32, ptr %dimension.i, align 8 %mul10.i = mul i32 %3, 1431655765 %conv11.i = zext i32 %mul10.i to i64 - %4 = zext i32 %1 to i64 + %4 = zext nneg i32 %1 to i64 %5 = zext nneg i32 %and.i to i64 br label %for.body.i @@ -8330,11 +8302,7 @@ sw.bb1: ; preds = %entry %conv.i.i.i.i = trunc i64 %shr3.i.i.i.i to i32 %shr4.i.i.i.i = lshr i64 %0, 59 %conv5.i.i.i.i = trunc i64 %shr4.i.i.i.i to i32 - %shr6.i.i.i.i = lshr i32 %conv.i.i.i.i, %conv5.i.i.i.i - %add7.i.i.i.i = sub nsw i32 0, %conv5.i.i.i.i - %and.i.i.i.i = and i32 %add7.i.i.i.i, 31 - %shl.i.i.i.i = shl i32 %conv.i.i.i.i, %and.i.i.i.i - %or.i.i.i.i = or i32 %shr6.i.i.i.i, %shl.i.i.i.i + %or.i.i.i.i = tail call noundef i32 @llvm.fshr.i32(i32 %conv.i.i.i.i, i32 %conv.i.i.i.i, i32 %conv5.i.i.i.i) %conv.i.i.i = uitofp i32 %or.i.i.i.i to float %mul.i.i.i = fmul float %conv.i.i.i, 0x3DF0000000000000 %cmp.i.i.i.i = fcmp olt float %mul.i.i.i, 0x3FEFFFFFE0000000 @@ -8348,17 +8316,13 @@ sw.bb1: ; preds = %entry %conv.i.i5.i.i = trunc i64 %shr3.i.i4.i.i to i32 %shr4.i.i6.i.i = lshr i64 %add.i.i.i.i, 59 %conv5.i.i7.i.i = trunc i64 %shr4.i.i6.i.i to i32 - %shr6.i.i8.i.i = lshr i32 %conv.i.i5.i.i, %conv5.i.i7.i.i - %add7.i.i9.i.i = sub nsw i32 0, %conv5.i.i7.i.i - %and.i.i10.i.i = and i32 %add7.i.i9.i.i, 31 - %shl.i.i11.i.i = shl i32 %conv.i.i5.i.i, %and.i.i10.i.i - %or.i.i12.i.i = or i32 %shr6.i.i8.i.i, %shl.i.i11.i.i - %conv.i13.i.i = uitofp i32 %or.i.i12.i.i to float - %mul.i14.i.i = fmul float %conv.i13.i.i, 0x3DF0000000000000 - %cmp.i.i15.i.i = fcmp olt float %mul.i14.i.i, 0x3FEFFFFFE0000000 - %.sroa.speculated.i16.i.i = select i1 %cmp.i.i15.i.i, float %mul.i14.i.i, float 0x3FEFFFFFE0000000 + %or.i.i8.i.i = tail call noundef i32 @llvm.fshr.i32(i32 %conv.i.i5.i.i, i32 %conv.i.i5.i.i, i32 %conv5.i.i7.i.i) + %conv.i9.i.i = uitofp i32 %or.i.i8.i.i to float + %mul.i10.i.i = fmul float %conv.i9.i.i, 0x3DF0000000000000 + %cmp.i.i11.i.i = fcmp olt float %mul.i10.i.i, 0x3FEFFFFFE0000000 + %.sroa.speculated.i12.i.i = select i1 %cmp.i.i11.i.i, float %mul.i10.i.i, float 0x3FEFFFFFE0000000 %retval.sroa.0.0.vec.insert.i.i = insertelement <2 x float> poison, float %.sroa.speculated.i.i.i, i64 0 - %retval.sroa.0.4.vec.insert.i.i = insertelement <2 x float> %retval.sroa.0.0.vec.insert.i.i, float %.sroa.speculated.i16.i.i, i64 1 + %retval.sroa.0.4.vec.insert.i.i = insertelement <2 x float> %retval.sroa.0.0.vec.insert.i.i, float %.sroa.speculated.i12.i.i, i64 1 br label %return sw.bb4: ; preds = %entry @@ -8923,11 +8887,7 @@ cond.true9: ; preds = %_ZN4pbrt18Permutati %conv.i.i = trunc i64 %shr3.i.i to i32 %shr4.i.i = lshr i64 %8, 59 %conv5.i.i = trunc i64 %shr4.i.i to i32 - %shr6.i.i = lshr i32 %conv.i.i, %conv5.i.i - %add7.i.i = sub nsw i32 0, %conv5.i.i - %and.i.i = and i32 %add7.i.i, 31 - %shl.i.i = shl i32 %conv.i.i, %and.i.i - %or.i.i = or i32 %shr6.i.i, %shl.i.i + %or.i.i = tail call noundef i32 @llvm.fshr.i32(i32 %conv.i.i, i32 %conv.i.i, i32 %conv5.i.i) %conv.i = uitofp i32 %or.i.i to float %mul.i3 = fmul float %conv.i, 0x3DF0000000000000 %cmp.i.i = fcmp olt float %mul.i3, 0x3FEFFFFFE0000000 @@ -8941,26 +8901,22 @@ cond.true9: ; preds = %_ZN4pbrt18Permutati %conv.i.i8 = trunc i64 %shr3.i.i7 to i32 %shr4.i.i9 = lshr i64 %add.i.i, 59 %conv5.i.i10 = trunc i64 %shr4.i.i9 to i32 - %shr6.i.i11 = lshr i32 %conv.i.i8, %conv5.i.i10 - %add7.i.i12 = sub nsw i32 0, %conv5.i.i10 - %and.i.i13 = and i32 %add7.i.i12, 31 - %shl.i.i14 = shl i32 %conv.i.i8, %and.i.i13 - %or.i.i15 = or i32 %shr6.i.i11, %shl.i.i14 - %conv.i16 = uitofp i32 %or.i.i15 to float - %mul.i17 = fmul float %conv.i16, 0x3DF0000000000000 - %cmp.i.i18 = fcmp olt float %mul.i17, 0x3FEFFFFFE0000000 - %.sroa.speculated.i19 = select i1 %cmp.i.i18, float %mul.i17, float 0x3FEFFFFFE0000000 + %or.i.i11 = tail call noundef i32 @llvm.fshr.i32(i32 %conv.i.i8, i32 %conv.i.i8, i32 %conv5.i.i10) + %conv.i12 = uitofp i32 %or.i.i11 to float + %mul.i13 = fmul float %conv.i12, 0x3DF0000000000000 + %cmp.i.i14 = fcmp olt float %mul.i13, 0x3FEFFFFFE0000000 + %.sroa.speculated.i15 = select i1 %cmp.i.i14, float %mul.i13, float 0x3FEFFFFFE0000000 br label %cond.end13 cond.end13: ; preds = %_ZN4pbrt18PermutationElementEjjj.exit, %cond.true9 - %cond22 = phi float [ %.sroa.speculated.i, %cond.true9 ], [ 5.000000e-01, %_ZN4pbrt18PermutationElementEjjj.exit ] - %cond14 = phi float [ %.sroa.speculated.i19, %cond.true9 ], [ 5.000000e-01, %_ZN4pbrt18PermutationElementEjjj.exit ] + %cond18 = phi float [ %.sroa.speculated.i, %cond.true9 ], [ 5.000000e-01, %_ZN4pbrt18PermutationElementEjjj.exit ] + %cond14 = phi float [ %.sroa.speculated.i15, %cond.true9 ], [ 5.000000e-01, %_ZN4pbrt18PermutationElementEjjj.exit ] %add.i = add i32 %xor39.i, %conv %rem.i = urem i32 %add.i, %mul.i %div = sdiv i32 %rem.i, %3 %rem = srem i32 %rem.i, %3 %conv15 = sitofp i32 %rem to float - %add16 = fadd float %cond22, %conv15 + %add16 = fadd float %cond18, %conv15 %conv18 = sitofp i32 %3 to float %div19 = fdiv float %add16, %conv18 %conv20 = sitofp i32 %div to float @@ -12433,6 +12389,9 @@ declare noundef i64 @fwrite(ptr nocapture noundef, i64 noundef, i64 noundef, ptr ; Function Attrs: nofree nounwind declare noundef i32 @fputc(i32 noundef, ptr nocapture noundef) local_unnamed_addr #9 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.fshr.i32(i32, i32, i32) #25 + ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.ctpop.i32(i32) #25 diff --git a/bench/pbrt-v4/optimized/samplers.cpp.ll b/bench/pbrt-v4/optimized/samplers.cpp.ll index e06d776db66..fe167e8f9fc 100644 --- a/bench/pbrt-v4/optimized/samplers.cpp.ll +++ b/bench/pbrt-v4/optimized/samplers.cpp.ll @@ -3254,11 +3254,7 @@ if.then8: ; preds = %if.end %conv.i.i = trunc i64 %shr3.i.i to i32 %shr4.i.i = lshr i64 %4, 59 %conv5.i.i = trunc i64 %shr4.i.i to i32 - %shr6.i.i = lshr i32 %conv.i.i, %conv5.i.i - %add7.i.i = sub nsw i32 0, %conv5.i.i - %and.i.i = and i32 %add7.i.i, 31 - %shl.i.i = shl i32 %conv.i.i, %and.i.i - %or.i.i = or i32 %shr6.i.i, %shl.i.i + %or.i.i = tail call noundef i32 @llvm.fshr.i32(i32 %conv.i.i, i32 %conv.i.i, i32 %conv5.i.i) %conv.i = uitofp i32 %or.i.i to float %mul.i = fmul float %conv.i, 0x3DF0000000000000 %cmp.i.i = fcmp olt float %mul.i, 0x3FEFFFFFE0000000 @@ -3295,15 +3291,11 @@ if.then13: ; preds = %if.end12 %conv.i.i16 = trunc i64 %shr3.i.i15 to i32 %shr4.i.i17 = lshr i64 %13, 59 %conv5.i.i18 = trunc i64 %shr4.i.i17 to i32 - %shr6.i.i19 = lshr i32 %conv.i.i16, %conv5.i.i18 - %add7.i.i20 = sub nsw i32 0, %conv5.i.i18 - %and.i.i21 = and i32 %add7.i.i20, 31 - %shl.i.i22 = shl i32 %conv.i.i16, %and.i.i21 - %or.i.i23 = or i32 %shr6.i.i19, %shl.i.i22 - %conv.i24 = uitofp i32 %or.i.i23 to float - %mul.i25 = fmul float %conv.i24, 0x3DF0000000000000 - %cmp.i.i26 = fcmp olt float %mul.i25, 0x3FEFFFFFE0000000 - %.sroa.speculated.i27 = select i1 %cmp.i.i26, float %mul.i25, float 0x3FEFFFFFE0000000 + %or.i.i19 = tail call noundef i32 @llvm.fshr.i32(i32 %conv.i.i16, i32 %conv.i.i16, i32 %conv5.i.i18) + %conv.i20 = uitofp i32 %or.i.i19 to float + %mul.i21 = fmul float %conv.i20, 0x3DF0000000000000 + %cmp.i.i22 = fcmp olt float %mul.i21, 0x3FEFFFFFE0000000 + %.sroa.speculated.i23 = select i1 %cmp.i.i22, float %mul.i21, float 0x3FEFFFFFE0000000 br label %if.end29 if.else: ; preds = %if.end12 @@ -3317,27 +3309,23 @@ if.else: ; preds = %if.end12 %mul = fmul float %18, %call.i %rng20 = getelementptr inbounds %"class.pbrt::MLTSampler", ptr %this, i64 0, i32 1 %19 = load i64, ptr %rng20, align 8 - %mul.i.i28 = mul i64 %19, 6364136223846793005 - %inc.i.i29 = getelementptr inbounds %"class.pbrt::MLTSampler", ptr %this, i64 0, i32 1, i32 1 - %20 = load i64, ptr %inc.i.i29, align 8 - %add.i.i30 = add i64 %mul.i.i28, %20 - store i64 %add.i.i30, ptr %rng20, align 8 + %mul.i.i24 = mul i64 %19, 6364136223846793005 + %inc.i.i25 = getelementptr inbounds %"class.pbrt::MLTSampler", ptr %this, i64 0, i32 1, i32 1 + %20 = load i64, ptr %inc.i.i25, align 8 + %add.i.i26 = add i64 %mul.i.i24, %20 + store i64 %add.i.i26, ptr %rng20, align 8 %21 = lshr i64 %19, 45 %22 = lshr i64 %19, 27 - %shr3.i.i31 = xor i64 %21, %22 - %conv.i.i32 = trunc i64 %shr3.i.i31 to i32 - %shr4.i.i33 = lshr i64 %19, 59 - %conv5.i.i34 = trunc i64 %shr4.i.i33 to i32 - %shr6.i.i35 = lshr i32 %conv.i.i32, %conv5.i.i34 - %add7.i.i36 = sub nsw i32 0, %conv5.i.i34 - %and.i.i37 = and i32 %add7.i.i36, 31 - %shl.i.i38 = shl i32 %conv.i.i32, %and.i.i37 - %or.i.i39 = or i32 %shr6.i.i35, %shl.i.i38 - %conv.i40 = uitofp i32 %or.i.i39 to float - %mul.i41 = fmul float %conv.i40, 0x3DF0000000000000 - %cmp.i.i42 = fcmp olt float %mul.i41, 0x3FEFFFFFE0000000 - %.sroa.speculated.i43 = select i1 %cmp.i.i42, float %mul.i41, float 0x3FEFFFFFE0000000 - %mul1.i = fmul float %.sroa.speculated.i43, 2.000000e+00 + %shr3.i.i27 = xor i64 %21, %22 + %conv.i.i28 = trunc i64 %shr3.i.i27 to i32 + %shr4.i.i29 = lshr i64 %19, 59 + %conv5.i.i30 = trunc i64 %shr4.i.i29 to i32 + %or.i.i31 = tail call noundef i32 @llvm.fshr.i32(i32 %conv.i.i28, i32 %conv.i.i28, i32 %conv5.i.i30) + %conv.i32 = uitofp i32 %or.i.i31 to float + %mul.i33 = fmul float %conv.i32, 0x3DF0000000000000 + %cmp.i.i34 = fcmp olt float %mul.i33, 0x3FEFFFFFE0000000 + %.sroa.speculated.i35 = select i1 %cmp.i.i34, float %mul.i33, float 0x3FEFFFFFE0000000 + %mul1.i = fmul float %.sroa.speculated.i35, 2.000000e+00 %sub.i = fadd float %mul1.i, -1.000000e+00 %fneg.i.i = fneg float %sub.i %23 = tail call noundef float @llvm.fma.f32(float %sub.i, float %fneg.i.i, float 1.000000e+00) @@ -3353,8 +3341,8 @@ land.rhs.i.i: ; preds = %if.else unreachable land.end.i.i: ; preds = %if.else - %cmp.i.i44 = fcmp ogt float %24, 6.125000e+00 - br i1 %cmp.i.i44, label %if.then.i.i, label %if.else.i.i + %cmp.i.i36 = fcmp ogt float %24, 6.125000e+00 + br i1 %cmp.i.i36, label %if.then.i.i, label %if.else.i.i if.then.i.i: ; preds = %land.end.i.i %25 = tail call noundef float @llvm.fma.f32(float %call.i.i.i, float 0x3DF4DEB440000000, float 0x3E5F7C9AE0000000) @@ -3381,9 +3369,9 @@ if.else.i.i: ; preds = %land.end.i.i _ZN4pbrt12SampleNormalEfff.exit: ; preds = %if.then.i.i, %if.else.i.i %p.0.i.i = phi float [ %32, %if.then.i.i ], [ %41, %if.else.i.i ] - %mul.i45 = fmul float %mul, 0x3FF6A09E60000000 - %mul.i.i46 = fmul float %sub.i, %p.0.i.i - %mul2.i = fmul float %mul.i45, %mul.i.i46 + %mul.i37 = fmul float %mul, 0x3FF6A09E60000000 + %mul.i.i38 = fmul float %sub.i, %p.0.i.i + %mul2.i = fmul float %mul.i37, %mul.i.i38 %add.i = fadd float %mul2.i, 0.000000e+00 %42 = load float, ptr %arrayidx.i, align 8 %add24 = fadd float %42, %add.i @@ -3392,7 +3380,7 @@ _ZN4pbrt12SampleNormalEfff.exit: ; preds = %if.then.i.i, %if.el br label %if.end29 if.end29: ; preds = %_ZN4pbrt12SampleNormalEfff.exit, %if.then13 - %storemerge = phi float [ %sub28, %_ZN4pbrt12SampleNormalEfff.exit ], [ %.sroa.speculated.i27, %if.then13 ] + %storemerge = phi float [ %sub28, %_ZN4pbrt12SampleNormalEfff.exit ], [ %.sroa.speculated.i23, %if.then13 ] store float %storemerge, ptr %arrayidx.i, align 8 %currentIteration30 = getelementptr inbounds %"class.pbrt::MLTSampler", ptr %this, i64 0, i32 6 %44 = load i64, ptr %currentIteration30, align 8 @@ -3502,11 +3490,7 @@ entry: %conv.i.i = trunc i64 %shr3.i.i to i32 %shr4.i.i = lshr i64 %1, 59 %conv5.i.i = trunc i64 %shr4.i.i to i32 - %shr6.i.i = lshr i32 %conv.i.i, %conv5.i.i - %add7.i.i = sub nsw i32 0, %conv5.i.i - %and.i.i = and i32 %add7.i.i, 31 - %shl.i.i = shl i32 %conv.i.i, %and.i.i - %or.i.i = or i32 %shr6.i.i, %shl.i.i + %or.i.i = tail call noundef i32 @llvm.fshr.i32(i32 %conv.i.i, i32 %conv.i.i, i32 %conv5.i.i) %conv.i = uitofp i32 %or.i.i to float %mul.i = fmul float %conv.i, 0x3DF0000000000000 %cmp.i.i = fcmp olt float %mul.i, 0x3FEFFFFFE0000000 @@ -18046,6 +18030,9 @@ ehcleanup42: ; preds = %ehcleanup27, %lpad ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) declare void @llvm.assume(i1 noundef) #18 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.fshr.i32(i32, i32, i32) #19 + ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.ctpop.i32(i32) #19 diff --git a/bench/pbrt-v4/optimized/samples.cpp.ll b/bench/pbrt-v4/optimized/samples.cpp.ll index da78940eb2a..4c88e17738f 100644 --- a/bench/pbrt-v4/optimized/samples.cpp.ll +++ b/bench/pbrt-v4/optimized/samples.cpp.ll @@ -2207,128 +2207,108 @@ _ZN4pbrt18IndependentSampler16StartPixelSampleENS_6Point2IiEEii.exit: ; preds = %conv.i.i.i = trunc i64 %shr3.i.i.i to i32 %shr4.i.i.i7 = lshr i64 %add7.i.i, 59 %conv5.i.i.i = trunc i64 %shr4.i.i.i7 to i32 - %shr6.i.i.i = lshr i32 %conv.i.i.i, %conv5.i.i.i - %add7.i.i.i = sub nsw i32 0, %conv5.i.i.i - %and.i.i.i = and i32 %add7.i.i.i, 31 - %shl.i.i.i8 = shl i32 %conv.i.i.i, %and.i.i.i - %or.i.i.i9 = or i32 %shr6.i.i.i, %shl.i.i.i8 - %conv.i.i = uitofp i32 %or.i.i.i9 to float - %mul.i.i10 = fmul float %conv.i.i, 0x3DF0000000000000 - %cmp.i.i.i = fcmp olt float %mul.i.i10, 0x3FEFFFFFE0000000 - %.sroa.speculated.i.i = select i1 %cmp.i.i.i, float %mul.i.i10, float 0x3FEFFFFFE0000000 + %or.i.i.i8 = tail call noundef i32 @llvm.fshr.i32(i32 %conv.i.i.i, i32 %conv.i.i.i, i32 %conv5.i.i.i) + %conv.i.i = uitofp i32 %or.i.i.i8 to float + %mul.i.i9 = fmul float %conv.i.i, 0x3DF0000000000000 + %cmp.i.i.i = fcmp olt float %mul.i.i9, 0x3FEFFFFFE0000000 + %.sroa.speculated.i.i = select i1 %cmp.i.i.i, float %mul.i.i9, float 0x3FEFFFFFE0000000 %add.i.i.i6 = add i64 %mul.i.i.i4, %or.i.i.i - %mul.i.i.i12 = mul i64 %add.i.i.i6, 6364136223846793005 - %add.i.i.i14 = add i64 %mul.i.i.i12, %or.i.i.i + %mul.i.i.i11 = mul i64 %add.i.i.i6, 6364136223846793005 + %add.i.i.i13 = add i64 %mul.i.i.i11, %or.i.i.i %16 = insertelement <2 x i64> poison, i64 %add.i.i.i6, i64 0 - %17 = insertelement <2 x i64> %16, i64 %add.i.i.i14, i64 1 + %17 = insertelement <2 x i64> %16, i64 %add.i.i.i13, i64 1 %18 = lshr <2 x i64> %17, %19 = lshr <2 x i64> %17, %20 = xor <2 x i64> %18, %19 %21 = trunc <2 x i64> %20 to <2 x i32> %22 = lshr <2 x i64> %17, %23 = trunc <2 x i64> %22 to <2 x i32> - %24 = lshr <2 x i32> %21, %23 - %25 = sub nsw <2 x i32> zeroinitializer, %23 - %26 = and <2 x i32> %25, - %27 = shl <2 x i32> %21, %26 - %28 = or <2 x i32> %24, %27 - %29 = uitofp <2 x i32> %28 to <2 x float> - %30 = fmul <2 x float> %29, - %31 = fcmp olt <2 x float> %30, - %mul.i.i1.i = mul i64 %add.i.i.i14, 6364136223846793005 - %32 = select <2 x i1> %31, <2 x float> %30, <2 x float> + %24 = tail call <2 x i32> @llvm.fshr.v2i32(<2 x i32> %21, <2 x i32> %21, <2 x i32> %23) + %25 = uitofp <2 x i32> %24 to <2 x float> + %26 = fmul <2 x float> %25, + %27 = fcmp olt <2 x float> %26, + %mul.i.i1.i = mul i64 %add.i.i.i13, 6364136223846793005 + %28 = select <2 x i1> %27, <2 x float> %26, <2 x float> %add.i.i3.i = add i64 %mul.i.i1.i, %or.i.i.i - %mul.i.i.i29 = mul i64 %add.i.i3.i, 6364136223846793005 - %add.i.i.i31 = add i64 %mul.i.i.i29, %or.i.i.i - %mul.i.i.i46 = mul i64 %add.i.i.i31, 6364136223846793005 - %add.i.i.i48 = add i64 %mul.i.i.i46, %or.i.i.i - %mul.i.i1.i62 = mul i64 %add.i.i.i48, 6364136223846793005 - %add.i.i3.i63 = add i64 %mul.i.i1.i62, %or.i.i.i - %33 = insertelement <4 x i64> poison, i64 %add.i.i3.i, i64 0 - %34 = insertelement <4 x i64> %33, i64 %add.i.i3.i63, i64 1 - %35 = insertelement <4 x i64> %34, i64 %add.i.i.i31, i64 2 - %36 = insertelement <4 x i64> %35, i64 %add.i.i.i48, i64 3 - %37 = lshr <4 x i64> %36, - %38 = lshr <4 x i64> %36, - %39 = xor <4 x i64> %37, %38 - %40 = trunc <4 x i64> %39 to <4 x i32> - %41 = lshr <4 x i64> %36, - %42 = trunc <4 x i64> %41 to <4 x i32> - %43 = lshr <4 x i32> %40, %42 - %44 = sub nsw <4 x i32> zeroinitializer, %42 - %45 = and <4 x i32> %44, - %46 = shl <4 x i32> %40, %45 - %47 = or <4 x i32> %43, %46 - %48 = uitofp <4 x i32> %47 to <4 x float> - %49 = fmul <4 x float> %48, - %50 = fcmp olt <4 x float> %49, - %51 = select <4 x i1> %50, <4 x float> %49, <4 x float> + %mul.i.i.i24 = mul i64 %add.i.i3.i, 6364136223846793005 + %add.i.i.i26 = add i64 %mul.i.i.i24, %or.i.i.i + %mul.i.i.i37 = mul i64 %add.i.i.i26, 6364136223846793005 + %add.i.i.i39 = add i64 %mul.i.i.i37, %or.i.i.i + %mul.i.i1.i49 = mul i64 %add.i.i.i39, 6364136223846793005 + %add.i.i3.i50 = add i64 %mul.i.i1.i49, %or.i.i.i + %29 = insertelement <4 x i64> poison, i64 %add.i.i3.i, i64 0 + %30 = insertelement <4 x i64> %29, i64 %add.i.i3.i50, i64 1 + %31 = insertelement <4 x i64> %30, i64 %add.i.i.i26, i64 2 + %32 = insertelement <4 x i64> %31, i64 %add.i.i.i39, i64 3 + %33 = lshr <4 x i64> %32, + %34 = lshr <4 x i64> %32, + %35 = xor <4 x i64> %33, %34 + %36 = trunc <4 x i64> %35 to <4 x i32> + %37 = lshr <4 x i64> %32, + %38 = trunc <4 x i64> %37 to <4 x i32> + %39 = tail call <4 x i32> @llvm.fshr.v4i32(<4 x i32> %36, <4 x i32> %36, <4 x i32> %38) + %40 = uitofp <4 x i32> %39 to <4 x float> + %41 = fmul <4 x float> %40, + %42 = fcmp olt <4 x float> %41, + %43 = select <4 x i1> %42, <4 x float> %41, <4 x float> br i1 %tobool.not, label %if.end36, label %if.then28 if.then28: ; preds = %_ZN4pbrt18IndependentSampler16StartPixelSampleENS_6Point2IiEEii.exit - %mul.i.i.i80 = mul i64 %add.i.i3.i63, 6364136223846793005 - %add.i.i.i82 = add i64 %mul.i.i.i80, %or.i.i.i - %mul.i.i.i97 = mul i64 %add.i.i.i82, 6364136223846793005 - %52 = lshr i64 %add.i.i.i82, 45 - %53 = lshr i64 %add.i.i.i82, 27 - %shr3.i.i.i100 = xor i64 %52, %53 - %conv.i.i.i101 = trunc i64 %shr3.i.i.i100 to i32 - %shr4.i.i.i102 = lshr i64 %add.i.i.i82, 59 - %conv5.i.i.i103 = trunc i64 %shr4.i.i.i102 to i32 - %shr6.i.i.i104 = lshr i32 %conv.i.i.i101, %conv5.i.i.i103 - %add7.i.i.i105 = sub nsw i32 0, %conv5.i.i.i103 - %and.i.i.i106 = and i32 %add7.i.i.i105, 31 - %shl.i.i.i107 = shl i32 %conv.i.i.i101, %and.i.i.i106 - %or.i.i.i108 = or i32 %shr6.i.i.i104, %shl.i.i.i107 - %conv.i.i109 = uitofp i32 %or.i.i.i108 to float - %mul.i.i110 = fmul float %conv.i.i109, 0x3DF0000000000000 - %cmp.i.i.i111 = fcmp olt float %mul.i.i110, 0x3FEFFFFFE0000000 - %.sroa.speculated.i.i112 = select i1 %cmp.i.i.i111, float %mul.i.i110, float 0x3FEFFFFFE0000000 - %add.i.i.i99 = add i64 %mul.i.i.i97, %or.i.i.i - %mul.i.i.i114 = mul i64 %add.i.i.i99, 6364136223846793005 - %add.i.i.i116 = add i64 %mul.i.i.i114, %or.i.i.i - %54 = insertelement <2 x i64> poison, i64 %add.i.i.i99, i64 0 - %55 = insertelement <2 x i64> %54, i64 %add.i.i.i116, i64 1 - %56 = lshr <2 x i64> %55, - %57 = lshr <2 x i64> %55, - %58 = xor <2 x i64> %56, %57 - %59 = trunc <2 x i64> %58 to <2 x i32> - %60 = lshr <2 x i64> %55, - %61 = trunc <2 x i64> %60 to <2 x i32> - %62 = lshr <2 x i32> %59, %61 - %63 = sub nsw <2 x i32> zeroinitializer, %61 - %64 = and <2 x i32> %63, - %65 = shl <2 x i32> %59, %64 - %66 = or <2 x i32> %62, %65 - %67 = uitofp <2 x i32> %66 to <2 x float> - %68 = fmul <2 x float> %67, - %69 = fcmp olt <2 x float> %68, - %70 = select <2 x i1> %69, <2 x float> %68, <2 x float> + %mul.i.i.i63 = mul i64 %add.i.i3.i50, 6364136223846793005 + %add.i.i.i65 = add i64 %mul.i.i.i63, %or.i.i.i + %mul.i.i.i76 = mul i64 %add.i.i.i65, 6364136223846793005 + %44 = lshr i64 %add.i.i.i65, 45 + %45 = lshr i64 %add.i.i.i65, 27 + %shr3.i.i.i79 = xor i64 %44, %45 + %conv.i.i.i80 = trunc i64 %shr3.i.i.i79 to i32 + %shr4.i.i.i81 = lshr i64 %add.i.i.i65, 59 + %conv5.i.i.i82 = trunc i64 %shr4.i.i.i81 to i32 + %or.i.i.i83 = tail call noundef i32 @llvm.fshr.i32(i32 %conv.i.i.i80, i32 %conv.i.i.i80, i32 %conv5.i.i.i82) + %conv.i.i84 = uitofp i32 %or.i.i.i83 to float + %mul.i.i85 = fmul float %conv.i.i84, 0x3DF0000000000000 + %cmp.i.i.i86 = fcmp olt float %mul.i.i85, 0x3FEFFFFFE0000000 + %.sroa.speculated.i.i87 = select i1 %cmp.i.i.i86, float %mul.i.i85, float 0x3FEFFFFFE0000000 + %add.i.i.i78 = add i64 %mul.i.i.i76, %or.i.i.i + %mul.i.i.i89 = mul i64 %add.i.i.i78, 6364136223846793005 + %add.i.i.i91 = add i64 %mul.i.i.i89, %or.i.i.i + %46 = insertelement <2 x i64> poison, i64 %add.i.i.i78, i64 0 + %47 = insertelement <2 x i64> %46, i64 %add.i.i.i91, i64 1 + %48 = lshr <2 x i64> %47, + %49 = lshr <2 x i64> %47, + %50 = xor <2 x i64> %48, %49 + %51 = trunc <2 x i64> %50 to <2 x i32> + %52 = lshr <2 x i64> %47, + %53 = trunc <2 x i64> %52 to <2 x i32> + %54 = tail call <2 x i32> @llvm.fshr.v2i32(<2 x i32> %51, <2 x i32> %51, <2 x i32> %53) + %55 = uitofp <2 x i32> %54 to <2 x float> + %56 = fmul <2 x float> %55, + %57 = fcmp olt <2 x float> %56, + %58 = select <2 x i1> %57, <2 x float> %56, <2 x float> br label %if.end36 if.end36: ; preds = %if.then28, %_ZN4pbrt18IndependentSampler16StartPixelSampleENS_6Point2IiEEii.exit - %rs.sroa.9158.0 = phi float [ undef, %_ZN4pbrt18IndependentSampler16StartPixelSampleENS_6Point2IiEEii.exit ], [ %.sroa.speculated.i.i112, %if.then28 ] - %rs.sroa.10.0 = phi <2 x float> [ zeroinitializer, %_ZN4pbrt18IndependentSampler16StartPixelSampleENS_6Point2IiEEii.exit ], [ %70, %if.then28 ] + %rs.sroa.9125.0 = phi float [ undef, %_ZN4pbrt18IndependentSampler16StartPixelSampleENS_6Point2IiEEii.exit ], [ %.sroa.speculated.i.i87, %if.then28 ] + %rs.sroa.10.0 = phi <2 x float> [ zeroinitializer, %_ZN4pbrt18IndependentSampler16StartPixelSampleENS_6Point2IiEEii.exit ], [ %58, %if.then28 ] %samples = getelementptr inbounds %"class.pbrt::WavefrontPathIntegrator", ptr %0, i64 0, i32 18, i32 7 - %conv.i150 = uitofp i8 %3 to float - %71 = load ptr, ptr %samples, align 8 - %arrayidx.i152 = getelementptr inbounds %"struct.pbrt::Float4", ptr %71, i64 %idxprom.i - store <2 x float> %32, ptr %arrayidx.i152, align 16 - %ref.tmp.sroa.3.0.arrayidx.sroa_idx.i = getelementptr inbounds i8, ptr %arrayidx.i152, i64 8 + %conv.i117 = uitofp i8 %3 to float + %59 = load ptr, ptr %samples, align 8 + %arrayidx.i119 = getelementptr inbounds %"struct.pbrt::Float4", ptr %59, i64 %idxprom.i + store <2 x float> %28, ptr %arrayidx.i119, align 16 + %ref.tmp.sroa.3.0.arrayidx.sroa_idx.i = getelementptr inbounds i8, ptr %arrayidx.i119, i64 8 store float %.sroa.speculated.i.i, ptr %ref.tmp.sroa.3.0.arrayidx.sroa_idx.i, align 8 - %ref.tmp.sroa.4.0.arrayidx.sroa_idx.i = getelementptr inbounds i8, ptr %arrayidx.i152, i64 12 - store float %conv.i150, ptr %ref.tmp.sroa.4.0.arrayidx.sroa_idx.i, align 4 + %ref.tmp.sroa.4.0.arrayidx.sroa_idx.i = getelementptr inbounds i8, ptr %arrayidx.i119, i64 12 + store float %conv.i117, ptr %ref.tmp.sroa.4.0.arrayidx.sroa_idx.i, align 4 %indirect24.i = getelementptr inbounds %"class.pbrt::WavefrontPathIntegrator", ptr %0, i64 0, i32 18, i32 7, i32 1 - %72 = load ptr, ptr %indirect24.i, align 8 - %arrayidx27.i = getelementptr inbounds %"struct.pbrt::Float4", ptr %72, i64 %idxprom.i - store <4 x float> %51, ptr %arrayidx27.i, align 16 + %60 = load ptr, ptr %indirect24.i, align 8 + %arrayidx27.i = getelementptr inbounds %"struct.pbrt::Float4", ptr %60, i64 %idxprom.i + store <4 x float> %43, ptr %arrayidx27.i, align 16 br i1 %tobool.not, label %_ZN4pbrt3SOAINS_10RaySamplesEE16GetSetIndirectoraSES1_.exit, label %if.then.i if.then.i: ; preds = %if.end36 %subsurface42.i = getelementptr inbounds %"class.pbrt::WavefrontPathIntegrator", ptr %0, i64 0, i32 18, i32 7, i32 2 - %73 = load ptr, ptr %subsurface42.i, align 8 - %arrayidx45.i = getelementptr inbounds %"struct.pbrt::Float4", ptr %73, i64 %idxprom.i - store float %rs.sroa.9158.0, ptr %arrayidx45.i, align 16 + %61 = load ptr, ptr %subsurface42.i, align 8 + %arrayidx45.i = getelementptr inbounds %"struct.pbrt::Float4", ptr %61, i64 %idxprom.i + store float %rs.sroa.9125.0, ptr %arrayidx45.i, align 16 %ref.tmp30.sroa.2.0.arrayidx45.sroa_idx.i = getelementptr inbounds i8, ptr %arrayidx45.i, i64 4 store <2 x float> %rs.sroa.10.0, ptr %ref.tmp30.sroa.2.0.arrayidx45.sroa_idx.i, align 4 %ref.tmp30.sroa.4.0.arrayidx45.sroa_idx.i = getelementptr inbounds i8, ptr %arrayidx45.i, i64 12 @@ -3064,11 +3044,7 @@ cond.true: ; preds = %_ZN4pbrt18Permutati %conv.i.i = trunc i64 %shr3.i.i to i32 %shr4.i.i = lshr i64 %8, 59 %conv5.i.i = trunc i64 %shr4.i.i to i32 - %shr6.i.i = lshr i32 %conv.i.i, %conv5.i.i - %add7.i.i = sub nsw i32 0, %conv5.i.i - %and.i.i = and i32 %add7.i.i, 31 - %shl.i.i = shl i32 %conv.i.i, %and.i.i - %or.i.i = or i32 %shr6.i.i, %shl.i.i + %or.i.i = tail call noundef i32 @llvm.fshr.i32(i32 %conv.i.i, i32 %conv.i.i, i32 %conv5.i.i) %conv.i = uitofp i32 %or.i.i to float %mul.i2 = fmul float %conv.i, 0x3DF0000000000000 %cmp.i.i = fcmp olt float %mul.i2, 0x3FEFFFFFE0000000 @@ -3212,30 +3188,26 @@ cond.true9: ; preds = %_ZN4pbrt18Permutati %16 = trunc <2 x i64> %15 to <2 x i32> %17 = lshr <2 x i64> %12, %18 = trunc <2 x i64> %17 to <2 x i32> - %19 = lshr <2 x i32> %16, %18 - %20 = sub nsw <2 x i32> zeroinitializer, %18 - %21 = and <2 x i32> %20, - %22 = shl <2 x i32> %16, %21 - %23 = or <2 x i32> %19, %22 - %24 = uitofp <2 x i32> %23 to <2 x float> - %25 = fmul <2 x float> %24, - %26 = fcmp olt <2 x float> %25, - %27 = select <2 x i1> %26, <2 x float> %25, <2 x float> + %19 = tail call <2 x i32> @llvm.fshr.v2i32(<2 x i32> %16, <2 x i32> %16, <2 x i32> %18) + %20 = uitofp <2 x i32> %19 to <2 x float> + %21 = fmul <2 x float> %20, + %22 = fcmp olt <2 x float> %21, + %23 = select <2 x i1> %22, <2 x float> %21, <2 x float> br label %cond.end13 cond.end13: ; preds = %_ZN4pbrt18PermutationElementEjjj.exit, %cond.true9 - %28 = phi <2 x float> [ %27, %cond.true9 ], [ , %_ZN4pbrt18PermutationElementEjjj.exit ] + %24 = phi <2 x float> [ %23, %cond.true9 ], [ , %_ZN4pbrt18PermutationElementEjjj.exit ] %add.i = add i32 %xor39.i, %conv %rem.i = urem i32 %add.i, %mul.i %div = sdiv i32 %rem.i, %4 %rem = srem i32 %rem.i, %4 - %29 = sitofp <2 x i32> %3 to <2 x float> - %30 = insertelement <2 x i32> poison, i32 %rem, i64 0 - %31 = insertelement <2 x i32> %30, i32 %div, i64 1 - %32 = sitofp <2 x i32> %31 to <2 x float> - %33 = fadd <2 x float> %28, %32 - %34 = fdiv <2 x float> %33, %29 - ret <2 x float> %34 + %25 = sitofp <2 x i32> %3 to <2 x float> + %26 = insertelement <2 x i32> poison, i32 %rem, i64 0 + %27 = insertelement <2 x i32> %26, i32 %div, i64 1 + %28 = sitofp <2 x i32> %27 to <2 x float> + %29 = fadd <2 x float> %24, %28 + %30 = fdiv <2 x float> %29, %25 + ret <2 x float> %30 } ; Function Attrs: mustprogress uwtable @@ -7409,6 +7381,9 @@ entry: ret void } +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.fshr.i32(i32, i32, i32) #12 + ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.bitreverse.i32(i32) #12 @@ -7424,6 +7399,12 @@ declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #14 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #14 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare <2 x i32> @llvm.fshr.v2i32(<2 x i32>, <2 x i32>, <2 x i32>) #12 + +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare <4 x i32> @llvm.fshr.v4i32(<4 x i32>, <4 x i32>, <4 x i32>) #12 + attributes #0 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #1 = { mustprogress uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #2 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } diff --git a/bench/pbrt-v4/optimized/stbimage.cpp.ll b/bench/pbrt-v4/optimized/stbimage.cpp.ll index c99caf7cd6f..3449e5f3048 100644 --- a/bench/pbrt-v4/optimized/stbimage.cpp.ll +++ b/bench/pbrt-v4/optimized/stbimage.cpp.ll @@ -167,7 +167,7 @@ $_ZN4pbrt6detail9formatOneIRA54_KcEENSt9enable_ifIXntsr3stdE10is_class_vINSt5dec @.str.83 = private unnamed_addr constant [12 x i8] c"#?RADIANCE\0A\00", align 1 @.str.84 = private unnamed_addr constant [8 x i8] c"#?RGBE\0A\00", align 1 -; Function Attrs: mustprogress nofree nosync nounwind willreturn memory(read, inaccessiblemem: none) uwtable +; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(read, inaccessiblemem: none) uwtable define dso_local ptr @stbi_failure_reason() local_unnamed_addr #0 { entry: %0 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_ZL22stbi__g_failure_reason) @@ -195,7 +195,7 @@ entry: ret void } -; Function Attrs: mustprogress nofree nosync nounwind willreturn memory(write, inaccessiblemem: none) uwtable +; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(write, inaccessiblemem: none) uwtable define dso_local void @stbi_set_flip_vertically_on_load_thread(i32 noundef %flag_true_if_should_flip) local_unnamed_addr #5 { entry: %0 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @_ZL35stbi__vertically_flip_on_load_local) @@ -206,7 +206,7 @@ entry: } ; Function Attrs: mustprogress uwtable -define dso_local ptr @stbi_load(ptr nocapture noundef readonly %filename, ptr nocapture noundef %x, ptr nocapture noundef %y, ptr noundef %comp, i32 noundef %req_comp) local_unnamed_addr #6 { +define dso_local noundef ptr @stbi_load(ptr nocapture noundef readonly %filename, ptr nocapture noundef %x, ptr nocapture noundef %y, ptr noundef %comp, i32 noundef %req_comp) local_unnamed_addr #6 { entry: %s.i = alloca %struct.stbi__context, align 8 %call.i = tail call noalias noundef ptr @fopen(ptr noundef %filename, ptr noundef nonnull @.str) @@ -293,7 +293,7 @@ return: ; preds = %stbi_load_from_file } ; Function Attrs: mustprogress uwtable -define dso_local ptr @stbi_load_from_file(ptr noundef %f, ptr nocapture noundef %x, ptr nocapture noundef %y, ptr noundef %comp, i32 noundef %req_comp) local_unnamed_addr #6 { +define dso_local noundef ptr @stbi_load_from_file(ptr noundef %f, ptr nocapture noundef %x, ptr nocapture noundef %y, ptr noundef %comp, i32 noundef %req_comp) local_unnamed_addr #6 { entry: %s = alloca %struct.stbi__context, align 8 %io.i.i = getelementptr inbounds %struct.stbi__context, ptr %s, i64 0, i32 4 @@ -518,7 +518,7 @@ return: ; preds = %if.end10, %_ZL19stb declare noundef i32 @fseek(ptr nocapture noundef, i64 noundef, i32 noundef) local_unnamed_addr #7 ; Function Attrs: mustprogress uwtable -define dso_local ptr @stbi_load_from_file_16(ptr noundef %f, ptr nocapture noundef %x, ptr nocapture noundef %y, ptr noundef %comp, i32 noundef %req_comp) local_unnamed_addr #6 { +define dso_local noundef ptr @stbi_load_from_file_16(ptr noundef %f, ptr nocapture noundef %x, ptr nocapture noundef %y, ptr noundef %comp, i32 noundef %req_comp) local_unnamed_addr #6 { entry: %s = alloca %struct.stbi__context, align 8 %io.i.i = getelementptr inbounds %struct.stbi__context, ptr %s, i64 0, i32 4 @@ -739,7 +739,7 @@ return: ; preds = %if.end10, %_ZL19stb } ; Function Attrs: mustprogress uwtable -define dso_local ptr @stbi_load_16(ptr nocapture noundef readonly %filename, ptr nocapture noundef %x, ptr nocapture noundef %y, ptr noundef %comp, i32 noundef %req_comp) local_unnamed_addr #6 { +define dso_local noundef ptr @stbi_load_16(ptr nocapture noundef readonly %filename, ptr nocapture noundef %x, ptr nocapture noundef %y, ptr noundef %comp, i32 noundef %req_comp) local_unnamed_addr #6 { entry: %s.i = alloca %struct.stbi__context, align 8 %call.i = tail call noalias noundef ptr @fopen(ptr noundef %filename, ptr noundef nonnull @.str) @@ -826,7 +826,7 @@ return: ; preds = %stbi_load_from_file } ; Function Attrs: mustprogress uwtable -define dso_local ptr @stbi_load_16_from_memory(ptr noundef %buffer, i32 noundef %len, ptr nocapture noundef %x, ptr nocapture noundef %y, ptr noundef %channels_in_file, i32 noundef %desired_channels) local_unnamed_addr #6 { +define dso_local noundef ptr @stbi_load_16_from_memory(ptr noundef %buffer, i32 noundef %len, ptr nocapture noundef %x, ptr nocapture noundef %y, ptr noundef %channels_in_file, i32 noundef %desired_channels) local_unnamed_addr #6 { entry: %s = alloca %struct.stbi__context, align 8 %io.i = getelementptr inbounds %struct.stbi__context, ptr %s, i64 0, i32 4 @@ -850,7 +850,7 @@ entry: } ; Function Attrs: mustprogress uwtable -define dso_local ptr @stbi_load_16_from_callbacks(ptr nocapture noundef readonly %clbk, ptr noundef %user, ptr nocapture noundef %x, ptr nocapture noundef %y, ptr noundef %channels_in_file, i32 noundef %desired_channels) local_unnamed_addr #6 { +define dso_local noundef ptr @stbi_load_16_from_callbacks(ptr nocapture noundef readonly %clbk, ptr noundef %user, ptr nocapture noundef %x, ptr nocapture noundef %y, ptr noundef %channels_in_file, i32 noundef %desired_channels) local_unnamed_addr #6 { entry: %s = alloca %struct.stbi__context, align 8 %io.i = getelementptr inbounds %struct.stbi__context, ptr %s, i64 0, i32 4 @@ -905,7 +905,7 @@ _ZL21stbi__start_callbacksP13stbi__contextP17stbi_io_callbacksPv.exit: ; preds = } ; Function Attrs: mustprogress uwtable -define dso_local ptr @stbi_load_from_memory(ptr noundef %buffer, i32 noundef %len, ptr nocapture noundef %x, ptr nocapture noundef %y, ptr noundef %comp, i32 noundef %req_comp) local_unnamed_addr #6 { +define dso_local noundef ptr @stbi_load_from_memory(ptr noundef %buffer, i32 noundef %len, ptr nocapture noundef %x, ptr nocapture noundef %y, ptr noundef %comp, i32 noundef %req_comp) local_unnamed_addr #6 { entry: %s = alloca %struct.stbi__context, align 8 %io.i = getelementptr inbounds %struct.stbi__context, ptr %s, i64 0, i32 4 @@ -929,7 +929,7 @@ entry: } ; Function Attrs: mustprogress uwtable -define dso_local ptr @stbi_load_from_callbacks(ptr nocapture noundef readonly %clbk, ptr noundef %user, ptr nocapture noundef %x, ptr nocapture noundef %y, ptr noundef %comp, i32 noundef %req_comp) local_unnamed_addr #6 { +define dso_local noundef ptr @stbi_load_from_callbacks(ptr nocapture noundef readonly %clbk, ptr noundef %user, ptr nocapture noundef %x, ptr nocapture noundef %y, ptr noundef %comp, i32 noundef %req_comp) local_unnamed_addr #6 { entry: %s = alloca %struct.stbi__context, align 8 %io.i = getelementptr inbounds %struct.stbi__context, ptr %s, i64 0, i32 4 @@ -984,7 +984,7 @@ _ZL21stbi__start_callbacksP13stbi__contextP17stbi_io_callbacksPv.exit: ; preds = } ; Function Attrs: mustprogress uwtable -define dso_local ptr @stbi_load_gif_from_memory(ptr noundef %buffer, i32 noundef %len, ptr noundef %delays, ptr nocapture noundef %x, ptr nocapture noundef %y, ptr nocapture noundef %z, ptr noundef %comp, i32 noundef %req_comp) local_unnamed_addr #6 { +define dso_local noundef ptr @stbi_load_gif_from_memory(ptr noundef %buffer, i32 noundef %len, ptr noundef %delays, ptr nocapture noundef %x, ptr nocapture noundef %y, ptr nocapture noundef %z, ptr noundef %comp, i32 noundef %req_comp) local_unnamed_addr #6 { entry: %temp.i.i = alloca [2048 x i8], align 16 %g.i = alloca %struct.stbi__gif, align 8 @@ -1331,7 +1331,7 @@ if.end: ; preds = %_ZL19stbi__vertical } ; Function Attrs: mustprogress uwtable -define dso_local ptr @stbi_loadf_from_memory(ptr noundef %buffer, i32 noundef %len, ptr nocapture noundef %x, ptr nocapture noundef %y, ptr noundef %comp, i32 noundef %req_comp) local_unnamed_addr #6 { +define dso_local noundef ptr @stbi_loadf_from_memory(ptr noundef %buffer, i32 noundef %len, ptr nocapture noundef %x, ptr nocapture noundef %y, ptr noundef %comp, i32 noundef %req_comp) local_unnamed_addr #6 { entry: %s = alloca %struct.stbi__context, align 8 %io.i = getelementptr inbounds %struct.stbi__context, ptr %s, i64 0, i32 4 @@ -1585,7 +1585,7 @@ return: ; preds = %if.end43.i, %if.the } ; Function Attrs: mustprogress uwtable -define dso_local ptr @stbi_loadf_from_callbacks(ptr nocapture noundef readonly %clbk, ptr noundef %user, ptr nocapture noundef %x, ptr nocapture noundef %y, ptr noundef %comp, i32 noundef %req_comp) local_unnamed_addr #6 { +define dso_local noundef ptr @stbi_loadf_from_callbacks(ptr nocapture noundef readonly %clbk, ptr noundef %user, ptr nocapture noundef %x, ptr nocapture noundef %y, ptr noundef %comp, i32 noundef %req_comp) local_unnamed_addr #6 { entry: %s = alloca %struct.stbi__context, align 8 %io.i = getelementptr inbounds %struct.stbi__context, ptr %s, i64 0, i32 4 @@ -1640,7 +1640,7 @@ _ZL21stbi__start_callbacksP13stbi__contextP17stbi_io_callbacksPv.exit: ; preds = } ; Function Attrs: mustprogress uwtable -define dso_local ptr @stbi_loadf(ptr nocapture noundef readonly %filename, ptr nocapture noundef %x, ptr nocapture noundef %y, ptr noundef %comp, i32 noundef %req_comp) local_unnamed_addr #6 { +define dso_local noundef ptr @stbi_loadf(ptr nocapture noundef readonly %filename, ptr nocapture noundef %x, ptr nocapture noundef %y, ptr noundef %comp, i32 noundef %req_comp) local_unnamed_addr #6 { entry: %s.i = alloca %struct.stbi__context, align 8 %call.i = tail call noalias noundef ptr @fopen(ptr noundef %filename, ptr noundef nonnull @.str) @@ -1712,7 +1712,7 @@ return: ; preds = %stbi_loadf_from_fil } ; Function Attrs: mustprogress uwtable -define dso_local ptr @stbi_loadf_from_file(ptr noundef %f, ptr nocapture noundef %x, ptr nocapture noundef %y, ptr noundef %comp, i32 noundef %req_comp) local_unnamed_addr #6 { +define dso_local noundef ptr @stbi_loadf_from_file(ptr noundef %f, ptr nocapture noundef %x, ptr nocapture noundef %y, ptr noundef %comp, i32 noundef %req_comp) local_unnamed_addr #6 { entry: %s = alloca %struct.stbi__context, align 8 %io.i.i = getelementptr inbounds %struct.stbi__context, ptr %s, i64 0, i32 4 @@ -1767,7 +1767,7 @@ _ZL16stbi__start_fileP13stbi__contextP8_IO_FILE.exit: ; preds = %if.then.i.i.i, } ; Function Attrs: mustprogress uwtable -define dso_local i32 @stbi_is_hdr_from_memory(ptr noundef %buffer, i32 noundef %len) local_unnamed_addr #6 { +define dso_local noundef i32 @stbi_is_hdr_from_memory(ptr noundef %buffer, i32 noundef %len) local_unnamed_addr #6 { entry: %s = alloca %struct.stbi__context, align 8 %io.i = getelementptr inbounds %struct.stbi__context, ptr %s, i64 0, i32 4 @@ -1973,7 +1973,7 @@ if.end: ; preds = %_ZL10stbi__get8P13s } ; Function Attrs: mustprogress uwtable -define dso_local i32 @stbi_is_hdr(ptr nocapture noundef readonly %filename) local_unnamed_addr #6 { +define dso_local noundef i32 @stbi_is_hdr(ptr nocapture noundef readonly %filename) local_unnamed_addr #6 { entry: %s.i = alloca %struct.stbi__context, align 8 %call.i = tail call noalias noundef ptr @fopen(ptr noundef %filename, ptr noundef nonnull @.str) @@ -2042,7 +2042,7 @@ if.end: ; preds = %stbi_is_hdr_from_fi } ; Function Attrs: mustprogress uwtable -define dso_local i32 @stbi_is_hdr_from_file(ptr noundef %f) local_unnamed_addr #6 { +define dso_local noundef i32 @stbi_is_hdr_from_file(ptr noundef %f) local_unnamed_addr #6 { entry: %s = alloca %struct.stbi__context, align 8 %call = tail call i64 @ftell(ptr noundef %f) @@ -2102,7 +2102,7 @@ _ZL16stbi__start_fileP13stbi__contextP8_IO_FILE.exit: ; preds = %if.then.i.i.i, declare noundef i64 @ftell(ptr nocapture noundef) local_unnamed_addr #7 ; Function Attrs: mustprogress uwtable -define dso_local i32 @stbi_is_hdr_from_callbacks(ptr nocapture noundef readonly %clbk, ptr noundef %user) local_unnamed_addr #6 { +define dso_local noundef i32 @stbi_is_hdr_from_callbacks(ptr nocapture noundef readonly %clbk, ptr noundef %user) local_unnamed_addr #6 { entry: %s = alloca %struct.stbi__context, align 8 %io.i = getelementptr inbounds %struct.stbi__context, ptr %s, i64 0, i32 4 @@ -2187,7 +2187,7 @@ entry: } ; Function Attrs: mustprogress uwtable -define dso_local i32 @stbi_info(ptr nocapture noundef readonly %filename, ptr noundef %x, ptr noundef %y, ptr noundef %comp) local_unnamed_addr #6 { +define dso_local noundef i32 @stbi_info(ptr nocapture noundef readonly %filename, ptr noundef %x, ptr noundef %y, ptr noundef %comp) local_unnamed_addr #6 { entry: %s.i = alloca %struct.stbi__context, align 8 %call.i = tail call noalias noundef ptr @fopen(ptr noundef %filename, ptr noundef nonnull @.str) @@ -2261,7 +2261,7 @@ return: ; preds = %stbi_info_from_file } ; Function Attrs: mustprogress uwtable -define dso_local i32 @stbi_info_from_file(ptr noundef %f, ptr noundef %x, ptr noundef %y, ptr noundef %comp) local_unnamed_addr #6 { +define dso_local noundef i32 @stbi_info_from_file(ptr noundef %f, ptr noundef %x, ptr noundef %y, ptr noundef %comp) local_unnamed_addr #6 { entry: %s = alloca %struct.stbi__context, align 8 %call = tail call i64 @ftell(ptr noundef %f) @@ -2610,7 +2610,7 @@ return: ; preds = %if.end28.else.i, %i } ; Function Attrs: mustprogress uwtable -define dso_local i32 @stbi_is_16_bit(ptr nocapture noundef readonly %filename) local_unnamed_addr #6 { +define dso_local noundef i32 @stbi_is_16_bit(ptr nocapture noundef readonly %filename) local_unnamed_addr #6 { entry: %s.i = alloca %struct.stbi__context, align 8 %call.i = tail call noalias noundef ptr @fopen(ptr noundef %filename, ptr noundef nonnull @.str) @@ -2684,7 +2684,7 @@ return: ; preds = %stbi_is_16_bit_from } ; Function Attrs: mustprogress uwtable -define dso_local i32 @stbi_is_16_bit_from_file(ptr noundef %f) local_unnamed_addr #6 { +define dso_local noundef i32 @stbi_is_16_bit_from_file(ptr noundef %f) local_unnamed_addr #6 { entry: %s = alloca %struct.stbi__context, align 8 %call = tail call i64 @ftell(ptr noundef %f) @@ -2821,7 +2821,7 @@ return: ; preds = %if.end9.i, %if.end } ; Function Attrs: mustprogress uwtable -define dso_local i32 @stbi_info_from_memory(ptr noundef %buffer, i32 noundef %len, ptr noundef %x, ptr noundef %y, ptr noundef %comp) local_unnamed_addr #6 { +define dso_local noundef i32 @stbi_info_from_memory(ptr noundef %buffer, i32 noundef %len, ptr noundef %x, ptr noundef %y, ptr noundef %comp) local_unnamed_addr #6 { entry: %s = alloca %struct.stbi__context, align 8 %io.i = getelementptr inbounds %struct.stbi__context, ptr %s, i64 0, i32 4 @@ -2845,7 +2845,7 @@ entry: } ; Function Attrs: mustprogress uwtable -define dso_local i32 @stbi_info_from_callbacks(ptr nocapture noundef readonly %c, ptr noundef %user, ptr noundef %x, ptr noundef %y, ptr noundef %comp) local_unnamed_addr #6 { +define dso_local noundef i32 @stbi_info_from_callbacks(ptr nocapture noundef readonly %c, ptr noundef %user, ptr noundef %x, ptr noundef %y, ptr noundef %comp) local_unnamed_addr #6 { entry: %s = alloca %struct.stbi__context, align 8 %io.i = getelementptr inbounds %struct.stbi__context, ptr %s, i64 0, i32 4 @@ -2900,7 +2900,7 @@ _ZL21stbi__start_callbacksP13stbi__contextP17stbi_io_callbacksPv.exit: ; preds = } ; Function Attrs: mustprogress uwtable -define dso_local i32 @stbi_is_16_bit_from_memory(ptr noundef %buffer, i32 noundef %len) local_unnamed_addr #6 { +define dso_local noundef i32 @stbi_is_16_bit_from_memory(ptr noundef %buffer, i32 noundef %len) local_unnamed_addr #6 { entry: %s = alloca %struct.stbi__context, align 8 %io.i = getelementptr inbounds %struct.stbi__context, ptr %s, i64 0, i32 4 @@ -2924,7 +2924,7 @@ entry: } ; Function Attrs: mustprogress uwtable -define dso_local i32 @stbi_is_16_bit_from_callbacks(ptr nocapture noundef readonly %c, ptr noundef %user) local_unnamed_addr #6 { +define dso_local noundef i32 @stbi_is_16_bit_from_callbacks(ptr nocapture noundef readonly %c, ptr noundef %user) local_unnamed_addr #6 { entry: %s = alloca %struct.stbi__context, align 8 %io.i = getelementptr inbounds %struct.stbi__context, ptr %s, i64 0, i32 4 @@ -6645,8 +6645,8 @@ if.then69.i.us.i.i.i.i: ; preds = %if.else63.i.us.i.i. %dec71.i.us.i.i.i.i = add nsw i32 %533, -1 store i32 %dec71.i.us.i.i.i.i, ptr %eob_run.i.i.i.i.i, align 4 %534 = load i32, ptr %spec_end.i.i.i.i, align 8 - %cmp74.not138.i.us.i.i.i.i = icmp sgt i32 %529, %534 - br i1 %cmp74.not138.i.us.i.i.i.i, label %if.end270.us.i.i.i.i, label %for.body.lr.ph.i.us.i.i.i.i + %cmp74.not133.i.us.i.i.i.i = icmp sgt i32 %529, %534 + br i1 %cmp74.not133.i.us.i.i.i.i, label %if.end270.us.i.i.i.i, label %for.body.lr.ph.i.us.i.i.i.i for.body.lr.ph.i.us.i.i.i.i: ; preds = %if.then69.i.us.i.i.i.i %sext92.i.us.i.i.i.i = shl i32 65536, %532 @@ -6669,18 +6669,18 @@ for.body.i.us.i.i.i.i: ; preds = %for.inc.i.us.i.i.i. if.then81.i.us.i.i.i.i: ; preds = %for.body.i.us.i.i.i.i %540 = load i32, ptr %code_bits.i.i.i.i.i, align 4 %cmp.i96.i.us.i.i.i.i = icmp slt i32 %540, 1 - br i1 %cmp.i96.i.us.i.i.i.i, label %if.then.i100.i.us.i.i.i.i, label %_ZL18stbi__jpeg_get_bitP10stbi__jpeg.exit.i.us.i.i.i.i + br i1 %cmp.i96.i.us.i.i.i.i, label %if.then.i98.i.us.i.i.i.i, label %_ZL18stbi__jpeg_get_bitP10stbi__jpeg.exit.i.us.i.i.i.i -if.then.i100.i.us.i.i.i.i: ; preds = %if.then81.i.us.i.i.i.i +if.then.i98.i.us.i.i.i.i: ; preds = %if.then81.i.us.i.i.i.i call fastcc void @_ZL24stbi__grow_buffer_unsafeP10stbi__jpeg(ptr noundef nonnull %call.i.i155) - %.pre.i101.i.us.i.i.i.i = load i32, ptr %code_bits.i.i.i.i.i, align 4 + %.pre.i99.i.us.i.i.i.i = load i32, ptr %code_bits.i.i.i.i.i, align 4 br label %_ZL18stbi__jpeg_get_bitP10stbi__jpeg.exit.i.us.i.i.i.i -_ZL18stbi__jpeg_get_bitP10stbi__jpeg.exit.i.us.i.i.i.i: ; preds = %if.then.i100.i.us.i.i.i.i, %if.then81.i.us.i.i.i.i - %541 = phi i32 [ %.pre.i101.i.us.i.i.i.i, %if.then.i100.i.us.i.i.i.i ], [ %540, %if.then81.i.us.i.i.i.i ] +_ZL18stbi__jpeg_get_bitP10stbi__jpeg.exit.i.us.i.i.i.i: ; preds = %if.then.i98.i.us.i.i.i.i, %if.then81.i.us.i.i.i.i + %541 = phi i32 [ %.pre.i99.i.us.i.i.i.i, %if.then.i98.i.us.i.i.i.i ], [ %540, %if.then81.i.us.i.i.i.i ] %542 = load i32, ptr %code_buffer.i.i.i.i.i, align 8 - %shl.i98.i.us.i.i.i.i = shl i32 %542, 1 - store i32 %shl.i98.i.us.i.i.i.i, ptr %code_buffer.i.i.i.i.i, align 8 + %shl.i.i.us.i.i.i.i = shl i32 %542, 1 + store i32 %shl.i.i.us.i.i.i.i, ptr %code_buffer.i.i.i.i.i, align 8 %dec.i.i.us.i.i.i.i = add nsw i32 %541, -1 store i32 %dec.i.i.us.i.i.i.i, ptr %code_bits.i.i.i.i.i, align 4 %tobool83.not.i.us.i.i.i.i = icmp sgt i32 %542, -1 @@ -6730,23 +6730,23 @@ if.end117.i.us.i.i.i.i: ; preds = %do.body109.i.us.i.i if.end139.i.us.i.i.i.i: ; preds = %if.end117.i.us.i.i.i.i %547 = load i32, ptr %code_bits.i.i.i.i.i, align 4 - %cmp.i115.i.us.i.i.i.i = icmp slt i32 %547, 1 - br i1 %cmp.i115.i.us.i.i.i.i, label %if.then.i120.i.us.i.i.i.i, label %_ZL18stbi__jpeg_get_bitP10stbi__jpeg.exit122.i.us.i.i.i.i + %cmp.i110.i.us.i.i.i.i = icmp slt i32 %547, 1 + br i1 %cmp.i110.i.us.i.i.i.i, label %if.then.i115.i.us.i.i.i.i, label %_ZL18stbi__jpeg_get_bitP10stbi__jpeg.exit117.i.us.i.i.i.i -if.then.i120.i.us.i.i.i.i: ; preds = %if.end139.i.us.i.i.i.i +if.then.i115.i.us.i.i.i.i: ; preds = %if.end139.i.us.i.i.i.i call fastcc void @_ZL24stbi__grow_buffer_unsafeP10stbi__jpeg(ptr noundef nonnull %call.i.i155) - %.pre.i121.i.us.i.i.i.i = load i32, ptr %code_bits.i.i.i.i.i, align 4 - br label %_ZL18stbi__jpeg_get_bitP10stbi__jpeg.exit122.i.us.i.i.i.i + %.pre.i116.i.us.i.i.i.i = load i32, ptr %code_bits.i.i.i.i.i, align 4 + br label %_ZL18stbi__jpeg_get_bitP10stbi__jpeg.exit117.i.us.i.i.i.i -_ZL18stbi__jpeg_get_bitP10stbi__jpeg.exit122.i.us.i.i.i.i: ; preds = %if.then.i120.i.us.i.i.i.i, %if.end139.i.us.i.i.i.i - %548 = phi i32 [ %.pre.i121.i.us.i.i.i.i, %if.then.i120.i.us.i.i.i.i ], [ %547, %if.end139.i.us.i.i.i.i ] +_ZL18stbi__jpeg_get_bitP10stbi__jpeg.exit117.i.us.i.i.i.i: ; preds = %if.then.i115.i.us.i.i.i.i, %if.end139.i.us.i.i.i.i + %548 = phi i32 [ %.pre.i116.i.us.i.i.i.i, %if.then.i115.i.us.i.i.i.i ], [ %547, %if.end139.i.us.i.i.i.i ] %549 = load i32, ptr %code_buffer.i.i.i.i.i, align 8 - %shl.i117.i.us.i.i.i.i = shl i32 %549, 1 - store i32 %shl.i117.i.us.i.i.i.i, ptr %code_buffer.i.i.i.i.i, align 8 - %dec.i118.i.us.i.i.i.i = add nsw i32 %548, -1 - store i32 %dec.i118.i.us.i.i.i.i, ptr %code_bits.i.i.i.i.i, align 4 - %tobool141.not144.i.us.i.i.i.i = icmp slt i32 %549, 0 - %sub146.conv143.i.us.i.i.i.i = select i1 %tobool141.not144.i.us.i.i.i.i, i32 %conv143.i.us.i.i.i.i, i32 %sub146.i.us.i.i.i.i + %shl.i112.i.us.i.i.i.i = shl i32 %549, 1 + store i32 %shl.i112.i.us.i.i.i.i, ptr %code_buffer.i.i.i.i.i, align 8 + %dec.i113.i.us.i.i.i.i = add nsw i32 %548, -1 + store i32 %dec.i113.i.us.i.i.i.i, ptr %code_bits.i.i.i.i.i, align 4 + %tobool141.not139.i.us.i.i.i.i = icmp slt i32 %549, 0 + %sub146.conv143.i.us.i.i.i.i = select i1 %tobool141.not139.i.us.i.i.i.i, i32 %conv143.i.us.i.i.i.i, i32 %sub146.i.us.i.i.i.i br label %if.end148.i.us.i.i.i.i if.then121.i.us.i.i.i.i: ; preds = %if.end117.i.us.i.i.i.i @@ -6762,53 +6762,49 @@ if.then123.i.us.i.i.i.i: ; preds = %if.then121.i.us.i.i if.then128.i.us.i.i.i.i: ; preds = %if.then123.i.us.i.i.i.i %550 = load i32, ptr %code_bits.i.i.i.i.i, align 4 - %cmp.i103.i.us.i.i.i.i = icmp slt i32 %550, %shr119.i.us.i.i.i.i - br i1 %cmp.i103.i.us.i.i.i.i, label %if.then.i112.i.us.i.i.i.i, label %_ZL19stbi__jpeg_get_bitsP10stbi__jpegi.exit.i.us.i.i.i.i + %cmp.i101.i.us.i.i.i.i = icmp slt i32 %550, %shr119.i.us.i.i.i.i + br i1 %cmp.i101.i.us.i.i.i.i, label %if.then.i107.i.us.i.i.i.i, label %_ZL19stbi__jpeg_get_bitsP10stbi__jpegi.exit.i.us.i.i.i.i -if.then.i112.i.us.i.i.i.i: ; preds = %if.then128.i.us.i.i.i.i +if.then.i107.i.us.i.i.i.i: ; preds = %if.then128.i.us.i.i.i.i call fastcc void @_ZL24stbi__grow_buffer_unsafeP10stbi__jpeg(ptr noundef nonnull %call.i.i155) - %.pre.i113.i.us.i.i.i.i = load i32, ptr %code_bits.i.i.i.i.i, align 4 + %.pre.i108.i.us.i.i.i.i = load i32, ptr %code_bits.i.i.i.i.i, align 4 %.pre.i.us.i.i.i.i = load i32, ptr %eob_run.i.i.i.i.i, align 4 br label %_ZL19stbi__jpeg_get_bitsP10stbi__jpegi.exit.i.us.i.i.i.i -_ZL19stbi__jpeg_get_bitsP10stbi__jpegi.exit.i.us.i.i.i.i: ; preds = %if.then.i112.i.us.i.i.i.i, %if.then128.i.us.i.i.i.i - %551 = phi i32 [ %.pre.i.us.i.i.i.i, %if.then.i112.i.us.i.i.i.i ], [ %sub125.i.us.i.i.i.i, %if.then128.i.us.i.i.i.i ] - %552 = phi i32 [ %.pre.i113.i.us.i.i.i.i, %if.then.i112.i.us.i.i.i.i ], [ %550, %if.then128.i.us.i.i.i.i ] +_ZL19stbi__jpeg_get_bitsP10stbi__jpegi.exit.i.us.i.i.i.i: ; preds = %if.then.i107.i.us.i.i.i.i, %if.then128.i.us.i.i.i.i + %551 = phi i32 [ %.pre.i.us.i.i.i.i, %if.then.i107.i.us.i.i.i.i ], [ %sub125.i.us.i.i.i.i, %if.then128.i.us.i.i.i.i ] + %552 = phi i32 [ %.pre.i108.i.us.i.i.i.i, %if.then.i107.i.us.i.i.i.i ], [ %550, %if.then128.i.us.i.i.i.i ] %553 = load i32, ptr %code_buffer.i.i.i.i.i, align 8 - %shl.i105.i.us.i.i.i.i = shl i32 %553, %shr119.i.us.i.i.i.i - %sub.i106.i.us.i.i.i.i = sub nsw i32 0, %shr119.i.us.i.i.i.i - %and.i107.i.us.i.i.i.i = and i32 %sub.i106.i.us.i.i.i.i, 31 - %shr.i.i.us.i.i.i.i = lshr i32 %553, %and.i107.i.us.i.i.i.i - %or.i108.i.us.i.i.i.i = or i32 %shl.i105.i.us.i.i.i.i, %shr.i.i.us.i.i.i.i - %idxprom.i109.i.us.i.i.i.i = zext nneg i32 %shr119.i.us.i.i.i.i to i64 - %arrayidx.i110.i.us.i.i.i.i = getelementptr inbounds [17 x i32], ptr @_ZL11stbi__bmask, i64 0, i64 %idxprom.i109.i.us.i.i.i.i - %554 = load i32, ptr %arrayidx.i110.i.us.i.i.i.i, align 4 - %not.i111.i.us.i.i.i.i = xor i32 %554, -1 - %and2.i.i.us.i.i.i.i = and i32 %or.i108.i.us.i.i.i.i, %not.i111.i.us.i.i.i.i + %or.i103.i.us.i.i.i.i = call i32 @llvm.fshl.i32(i32 %553, i32 %553, i32 %shr119.i.us.i.i.i.i) + %idxprom.i104.i.us.i.i.i.i = zext nneg i32 %shr119.i.us.i.i.i.i to i64 + %arrayidx.i105.i.us.i.i.i.i = getelementptr inbounds [17 x i32], ptr @_ZL11stbi__bmask, i64 0, i64 %idxprom.i104.i.us.i.i.i.i + %554 = load i32, ptr %arrayidx.i105.i.us.i.i.i.i, align 4 + %not.i106.i.us.i.i.i.i = xor i32 %554, -1 + %and2.i.i.us.i.i.i.i = and i32 %or.i103.i.us.i.i.i.i, %not.i106.i.us.i.i.i.i store i32 %and2.i.i.us.i.i.i.i, ptr %code_buffer.i.i.i.i.i, align 8 - %and6.i.i.us.i.i.i.i = and i32 %or.i108.i.us.i.i.i.i, %554 + %and6.i.i.us.i.i.i.i = and i32 %or.i103.i.us.i.i.i.i, %554 %sub8.i.i.us.i.i.i.i = sub nsw i32 %552, %shr119.i.us.i.i.i.i store i32 %sub8.i.i.us.i.i.i.i, ptr %code_bits.i.i.i.i.i, align 4 %add131.i.us.i.i.i.i = add nsw i32 %and6.i.i.us.i.i.i.i, %551 store i32 %add131.i.us.i.i.i.i, ptr %eob_run.i.i.i.i.i, align 4 br label %if.end148.i.us.i.i.i.i -if.end148.i.us.i.i.i.i: ; preds = %_ZL19stbi__jpeg_get_bitsP10stbi__jpegi.exit.i.us.i.i.i.i, %if.then123.i.us.i.i.i.i, %if.then121.i.us.i.i.i.i, %_ZL18stbi__jpeg_get_bitP10stbi__jpeg.exit122.i.us.i.i.i.i - %r110.0.i.us.i.i.i.i = phi i32 [ 15, %if.then121.i.us.i.i.i.i ], [ 64, %_ZL19stbi__jpeg_get_bitsP10stbi__jpegi.exit.i.us.i.i.i.i ], [ 64, %if.then123.i.us.i.i.i.i ], [ %shr119.i.us.i.i.i.i, %_ZL18stbi__jpeg_get_bitP10stbi__jpeg.exit122.i.us.i.i.i.i ] - %s111.0.i.us.i.i.i.i = phi i32 [ 0, %if.then121.i.us.i.i.i.i ], [ 0, %_ZL19stbi__jpeg_get_bitsP10stbi__jpegi.exit.i.us.i.i.i.i ], [ 0, %if.then123.i.us.i.i.i.i ], [ %sub146.conv143.i.us.i.i.i.i, %_ZL18stbi__jpeg_get_bitP10stbi__jpeg.exit122.i.us.i.i.i.i ] +if.end148.i.us.i.i.i.i: ; preds = %_ZL19stbi__jpeg_get_bitsP10stbi__jpegi.exit.i.us.i.i.i.i, %if.then123.i.us.i.i.i.i, %if.then121.i.us.i.i.i.i, %_ZL18stbi__jpeg_get_bitP10stbi__jpeg.exit117.i.us.i.i.i.i + %r110.0.i.us.i.i.i.i = phi i32 [ 15, %if.then121.i.us.i.i.i.i ], [ 64, %_ZL19stbi__jpeg_get_bitsP10stbi__jpegi.exit.i.us.i.i.i.i ], [ 64, %if.then123.i.us.i.i.i.i ], [ %shr119.i.us.i.i.i.i, %_ZL18stbi__jpeg_get_bitP10stbi__jpeg.exit117.i.us.i.i.i.i ] + %s111.0.i.us.i.i.i.i = phi i32 [ 0, %if.then121.i.us.i.i.i.i ], [ 0, %_ZL19stbi__jpeg_get_bitsP10stbi__jpegi.exit.i.us.i.i.i.i ], [ 0, %if.then123.i.us.i.i.i.i ], [ %sub146.conv143.i.us.i.i.i.i, %_ZL18stbi__jpeg_get_bitP10stbi__jpeg.exit117.i.us.i.i.i.i ] %555 = load i32, ptr %spec_end.i.i.i.i, align 8 - %cmp150.not141.i.us.i.i.i.i = icmp sgt i32 %k.3.i.us.i.i.i.i, %555 - br i1 %cmp150.not141.i.us.i.i.i.i, label %do.cond190.i.us.i.i.i.i, label %while.body.preheader.i.us.i.i.i.i + %cmp150.not136.i.us.i.i.i.i = icmp sgt i32 %k.3.i.us.i.i.i.i, %555 + br i1 %cmp150.not136.i.us.i.i.i.i, label %do.cond190.i.us.i.i.i.i, label %while.body.preheader.i.us.i.i.i.i while.body.preheader.i.us.i.i.i.i: ; preds = %if.end148.i.us.i.i.i.i %556 = sext i32 %k.3.i.us.i.i.i.i to i64 br label %while.body.i.us.i.i.i.i while.body.i.us.i.i.i.i: ; preds = %if.end189.i.us.i.i.i.i, %while.body.preheader.i.us.i.i.i.i - %indvars.iv151.i.us.i.i.i.i = phi i64 [ %556, %while.body.preheader.i.us.i.i.i.i ], [ %indvars.iv.next152.i.us.i.i.i.i, %if.end189.i.us.i.i.i.i ] - %r110.1142.i.us.i.i.i.i = phi i32 [ %r110.0.i.us.i.i.i.i, %while.body.preheader.i.us.i.i.i.i ], [ %r110.2.i.us.i.i.i.i, %if.end189.i.us.i.i.i.i ] - %indvars.iv.next152.i.us.i.i.i.i = add nsw i64 %indvars.iv151.i.us.i.i.i.i, 1 - %arrayidx154.i.us.i.i.i.i = getelementptr inbounds [79 x i8], ptr @_ZL19stbi__jpeg_dezigzag, i64 0, i64 %indvars.iv151.i.us.i.i.i.i + %indvars.iv146.i.us.i.i.i.i = phi i64 [ %556, %while.body.preheader.i.us.i.i.i.i ], [ %indvars.iv.next147.i.us.i.i.i.i, %if.end189.i.us.i.i.i.i ] + %r110.1137.i.us.i.i.i.i = phi i32 [ %r110.0.i.us.i.i.i.i, %while.body.preheader.i.us.i.i.i.i ], [ %r110.2.i.us.i.i.i.i, %if.end189.i.us.i.i.i.i ] + %indvars.iv.next147.i.us.i.i.i.i = add nsw i64 %indvars.iv146.i.us.i.i.i.i, 1 + %arrayidx154.i.us.i.i.i.i = getelementptr inbounds [79 x i8], ptr @_ZL19stbi__jpeg_dezigzag, i64 0, i64 %indvars.iv146.i.us.i.i.i.i %557 = load i8, ptr %arrayidx154.i.us.i.i.i.i, align 1 %idxprom155.i.us.i.i.i.i = zext i8 %557 to i64 %arrayidx156.i.us.i.i.i.i = getelementptr inbounds i16, ptr %add.ptr239.us.i.i.i.i, i64 %idxprom155.i.us.i.i.i.i @@ -6818,25 +6814,25 @@ while.body.i.us.i.i.i.i: ; preds = %if.end189.i.us.i.i. if.then159.i.us.i.i.i.i: ; preds = %while.body.i.us.i.i.i.i %559 = load i32, ptr %code_bits.i.i.i.i.i, align 4 - %cmp.i124.i.us.i.i.i.i = icmp slt i32 %559, 1 - br i1 %cmp.i124.i.us.i.i.i.i, label %if.then.i129.i.us.i.i.i.i, label %_ZL18stbi__jpeg_get_bitP10stbi__jpeg.exit131.i.us.i.i.i.i + %cmp.i119.i.us.i.i.i.i = icmp slt i32 %559, 1 + br i1 %cmp.i119.i.us.i.i.i.i, label %if.then.i124.i.us.i.i.i.i, label %_ZL18stbi__jpeg_get_bitP10stbi__jpeg.exit126.i.us.i.i.i.i -if.then.i129.i.us.i.i.i.i: ; preds = %if.then159.i.us.i.i.i.i +if.then.i124.i.us.i.i.i.i: ; preds = %if.then159.i.us.i.i.i.i call fastcc void @_ZL24stbi__grow_buffer_unsafeP10stbi__jpeg(ptr noundef nonnull %call.i.i155) - %.pre.i130.i.us.i.i.i.i = load i32, ptr %code_bits.i.i.i.i.i, align 4 - br label %_ZL18stbi__jpeg_get_bitP10stbi__jpeg.exit131.i.us.i.i.i.i + %.pre.i125.i.us.i.i.i.i = load i32, ptr %code_bits.i.i.i.i.i, align 4 + br label %_ZL18stbi__jpeg_get_bitP10stbi__jpeg.exit126.i.us.i.i.i.i -_ZL18stbi__jpeg_get_bitP10stbi__jpeg.exit131.i.us.i.i.i.i: ; preds = %if.then.i129.i.us.i.i.i.i, %if.then159.i.us.i.i.i.i - %560 = phi i32 [ %.pre.i130.i.us.i.i.i.i, %if.then.i129.i.us.i.i.i.i ], [ %559, %if.then159.i.us.i.i.i.i ] +_ZL18stbi__jpeg_get_bitP10stbi__jpeg.exit126.i.us.i.i.i.i: ; preds = %if.then.i124.i.us.i.i.i.i, %if.then159.i.us.i.i.i.i + %560 = phi i32 [ %.pre.i125.i.us.i.i.i.i, %if.then.i124.i.us.i.i.i.i ], [ %559, %if.then159.i.us.i.i.i.i ] %561 = load i32, ptr %code_buffer.i.i.i.i.i, align 8 - %shl.i126.i.us.i.i.i.i = shl i32 %561, 1 - store i32 %shl.i126.i.us.i.i.i.i, ptr %code_buffer.i.i.i.i.i, align 8 - %dec.i127.i.us.i.i.i.i = add nsw i32 %560, -1 - store i32 %dec.i127.i.us.i.i.i.i, ptr %code_bits.i.i.i.i.i, align 4 + %shl.i121.i.us.i.i.i.i = shl i32 %561, 1 + store i32 %shl.i121.i.us.i.i.i.i, ptr %code_buffer.i.i.i.i.i, align 8 + %dec.i122.i.us.i.i.i.i = add nsw i32 %560, -1 + store i32 %dec.i122.i.us.i.i.i.i, ptr %code_bits.i.i.i.i.i, align 4 %tobool161.not.i.us.i.i.i.i = icmp sgt i32 %561, -1 br i1 %tobool161.not.i.us.i.i.i.i, label %if.end189.i.us.i.i.i.i, label %if.then162.i.us.i.i.i.i -if.then162.i.us.i.i.i.i: ; preds = %_ZL18stbi__jpeg_get_bitP10stbi__jpeg.exit131.i.us.i.i.i.i +if.then162.i.us.i.i.i.i: ; preds = %_ZL18stbi__jpeg_get_bitP10stbi__jpeg.exit126.i.us.i.i.i.i %562 = load i16, ptr %arrayidx156.i.us.i.i.i.i, align 2 %conv163.i.us.i.i.i.i = sext i16 %562 to i32 %and165.i.us.i.i.i.i = and i32 %conv143.i.us.i.i.i.i, %conv163.i.us.i.i.i.i @@ -6858,33 +6854,33 @@ if.then170.i.us.i.i.i.i: ; preds = %if.then167.i.us.i.i br label %if.end189.i.us.i.i.i.i if.else183.i.us.i.i.i.i: ; preds = %while.body.i.us.i.i.i.i - %cmp184.i.us.i.i.i.i = icmp eq i32 %r110.1142.i.us.i.i.i.i, 0 + %cmp184.i.us.i.i.i.i = icmp eq i32 %r110.1137.i.us.i.i.i.i, 0 br i1 %cmp184.i.us.i.i.i.i, label %if.then185.i.us.i.i.i.i, label %if.end187.i.us.i.i.i.i if.end187.i.us.i.i.i.i: ; preds = %if.else183.i.us.i.i.i.i - %dec188.i.us.i.i.i.i = add nsw i32 %r110.1142.i.us.i.i.i.i, -1 + %dec188.i.us.i.i.i.i = add nsw i32 %r110.1137.i.us.i.i.i.i, -1 br label %if.end189.i.us.i.i.i.i -if.end189.i.us.i.i.i.i: ; preds = %if.end187.i.us.i.i.i.i, %if.then170.i.us.i.i.i.i, %if.else175.i.us.i.i.i.i, %if.then162.i.us.i.i.i.i, %_ZL18stbi__jpeg_get_bitP10stbi__jpeg.exit131.i.us.i.i.i.i - %r110.2.i.us.i.i.i.i = phi i32 [ %r110.1142.i.us.i.i.i.i, %if.then170.i.us.i.i.i.i ], [ %r110.1142.i.us.i.i.i.i, %if.else175.i.us.i.i.i.i ], [ %r110.1142.i.us.i.i.i.i, %if.then162.i.us.i.i.i.i ], [ %r110.1142.i.us.i.i.i.i, %_ZL18stbi__jpeg_get_bitP10stbi__jpeg.exit131.i.us.i.i.i.i ], [ %dec188.i.us.i.i.i.i, %if.end187.i.us.i.i.i.i ] +if.end189.i.us.i.i.i.i: ; preds = %if.end187.i.us.i.i.i.i, %if.then170.i.us.i.i.i.i, %if.else175.i.us.i.i.i.i, %if.then162.i.us.i.i.i.i, %_ZL18stbi__jpeg_get_bitP10stbi__jpeg.exit126.i.us.i.i.i.i + %r110.2.i.us.i.i.i.i = phi i32 [ %r110.1137.i.us.i.i.i.i, %if.then170.i.us.i.i.i.i ], [ %r110.1137.i.us.i.i.i.i, %if.else175.i.us.i.i.i.i ], [ %r110.1137.i.us.i.i.i.i, %if.then162.i.us.i.i.i.i ], [ %r110.1137.i.us.i.i.i.i, %_ZL18stbi__jpeg_get_bitP10stbi__jpeg.exit126.i.us.i.i.i.i ], [ %dec188.i.us.i.i.i.i, %if.end187.i.us.i.i.i.i ] %563 = load i32, ptr %spec_end.i.i.i.i, align 8 %564 = sext i32 %563 to i64 - %cmp150.not.not.i.us.i.i.i.i = icmp slt i64 %indvars.iv151.i.us.i.i.i.i, %564 + %cmp150.not.not.i.us.i.i.i.i = icmp slt i64 %indvars.iv146.i.us.i.i.i.i, %564 br i1 %cmp150.not.not.i.us.i.i.i.i, label %while.body.i.us.i.i.i.i, label %do.cond190.loopexit.i.us.i.i.i.i, !llvm.loop !53 do.cond190.loopexit.i.us.i.i.i.i: ; preds = %if.end189.i.us.i.i.i.i - %565 = trunc i64 %indvars.iv.next152.i.us.i.i.i.i to i32 + %565 = trunc i64 %indvars.iv.next147.i.us.i.i.i.i to i32 br label %do.cond190.i.us.i.i.i.i if.then185.i.us.i.i.i.i: ; preds = %if.else183.i.us.i.i.i.i - %566 = trunc i64 %indvars.iv.next152.i.us.i.i.i.i to i32 + %566 = trunc i64 %indvars.iv.next147.i.us.i.i.i.i to i32 %conv186.i.us.i.i.i.i = trunc i32 %s111.0.i.us.i.i.i.i to i16 store i16 %conv186.i.us.i.i.i.i, ptr %arrayidx156.i.us.i.i.i.i, align 2 - %.pre154.i.us.i.i.i.i = load i32, ptr %spec_end.i.i.i.i, align 8 + %.pre149.i.us.i.i.i.i = load i32, ptr %spec_end.i.i.i.i, align 8 br label %do.cond190.i.us.i.i.i.i do.cond190.i.us.i.i.i.i: ; preds = %if.then185.i.us.i.i.i.i, %do.cond190.loopexit.i.us.i.i.i.i, %if.end148.i.us.i.i.i.i - %567 = phi i32 [ %.pre154.i.us.i.i.i.i, %if.then185.i.us.i.i.i.i ], [ %555, %if.end148.i.us.i.i.i.i ], [ %563, %do.cond190.loopexit.i.us.i.i.i.i ] + %567 = phi i32 [ %.pre149.i.us.i.i.i.i, %if.then185.i.us.i.i.i.i ], [ %555, %if.end148.i.us.i.i.i.i ], [ %563, %do.cond190.loopexit.i.us.i.i.i.i ] %k.5.i.us.i.i.i.i = phi i32 [ %566, %if.then185.i.us.i.i.i.i ], [ %k.3.i.us.i.i.i.i, %if.end148.i.us.i.i.i.i ], [ %565, %do.cond190.loopexit.i.us.i.i.i.i ] %cmp192.not.i.us.i.i.i.i = icmp sgt i32 %k.5.i.us.i.i.i.i, %567 br i1 %cmp192.not.i.us.i.i.i.i, label %if.end270.us.i.i.i.i, label %do.body109.i.us.i.i.i.i, !llvm.loop !54 @@ -6963,11 +6959,7 @@ if.then.i.i.us.i.i.i.i: ; preds = %if.else48.i.us.i.i. _ZL20stbi__extend_receiveP10stbi__jpegi.exit.i.us.i.i.i.i: ; preds = %if.then.i.i.us.i.i.i.i, %if.else48.i.us.i.i.i.i %575 = phi i32 [ %.pre.i.i.us.i.i.i.i, %if.then.i.i.us.i.i.i.i ], [ %574, %if.else48.i.us.i.i.i.i ] %576 = load i32, ptr %code_buffer.i.i.i.i.i, align 8 - %shl.i.i.us.i.i.i.i = shl i32 %576, %and30.i.us.i.i.i.i - %sub.i.i.us.i.i.i.i = sub nsw i32 0, %and30.i.us.i.i.i.i - %and.i.i.us.i.i.i.i = and i32 %sub.i.i.us.i.i.i.i, 31 - %shr3.i.i.us.i.i.i.i = lshr i32 %576, %and.i.i.us.i.i.i.i - %or.i.i.us.i.i.i.i = or i32 %shl.i.i.us.i.i.i.i, %shr3.i.i.us.i.i.i.i + %or.i.i.us.i.i.i.i = call i32 @llvm.fshl.i32(i32 %576, i32 %576, i32 %and30.i.us.i.i.i.i) %idxprom.i.i.us.i.i.i.i = zext nneg i32 %and30.i.us.i.i.i.i to i64 %arrayidx.i.i.us.i.i.i.i = getelementptr inbounds [17 x i32], ptr @_ZL11stbi__bmask, i64 0, i64 %idxprom.i.i.us.i.i.i.i %577 = load i32, ptr %arrayidx.i.i.us.i.i.i.i, align 4 @@ -9405,8 +9397,8 @@ entry: br i1 %cmp.not, label %if.end, label %land.lhs.true land.lhs.true: ; preds = %entry - %bcmp8 = call i32 @bcmp(ptr noundef nonnull dereferenceable(7) %buffer, ptr noundef nonnull dereferenceable(7) @.str.72, i64 7) - %cmp3.not = icmp eq i32 %bcmp8, 0 + %bcmp7 = call i32 @bcmp(ptr noundef nonnull dereferenceable(7) %buffer, ptr noundef nonnull dereferenceable(7) @.str.72, i64 7) + %cmp3.not = icmp eq i32 %bcmp7, 0 br i1 %cmp3.not, label %if.end, label %if.then if.then: ; preds = %land.lhs.true @@ -9415,16 +9407,16 @@ if.then: ; preds = %land.lhs.true br label %return if.end: ; preds = %land.lhs.true, %entry - %call631 = call fastcc noundef ptr @_ZL18stbi__hdr_gettokenP13stbi__contextPc(ptr noundef %s, ptr noundef nonnull %buffer) + %call630 = call fastcc noundef ptr @_ZL18stbi__hdr_gettokenP13stbi__contextPc(ptr noundef %s, ptr noundef nonnull %buffer) %1 = load i8, ptr %buffer, align 16 - %cmp732 = icmp eq i8 %1, 0 - br i1 %cmp732, label %if.then15, label %if.end9 + %cmp731 = icmp eq i8 %1, 0 + br i1 %cmp731, label %if.then15, label %if.end9 if.end9: ; preds = %if.end, %if.end9 - %valid.033 = phi i32 [ %spec.select, %if.end9 ], [ 0, %if.end ] - %bcmp9 = call i32 @bcmp(ptr noundef nonnull dereferenceable(23) %buffer, ptr noundef nonnull dereferenceable(23) @.str.74, i64 23) - %cmp11 = icmp eq i32 %bcmp9, 0 - %spec.select = select i1 %cmp11, i32 1, i32 %valid.033 + %valid.032 = phi i32 [ %spec.select, %if.end9 ], [ 0, %if.end ] + %bcmp8 = call i32 @bcmp(ptr noundef nonnull dereferenceable(23) %buffer, ptr noundef nonnull dereferenceable(23) @.str.74, i64 23) + %cmp11 = icmp eq i32 %bcmp8, 0 + %spec.select = select i1 %cmp11, i32 1, i32 %valid.032 %call6 = call fastcc noundef ptr @_ZL18stbi__hdr_gettokenP13stbi__contextPc(ptr noundef %s, ptr noundef nonnull %buffer) %2 = load i8, ptr %buffer, align 16 %cmp7 = icmp eq i8 %2, 0 @@ -9441,8 +9433,8 @@ if.then15: ; preds = %if.end, %for.end if.end19: ; preds = %for.end %call21 = call fastcc noundef ptr @_ZL18stbi__hdr_gettokenP13stbi__contextPc(ptr noundef %s, ptr noundef nonnull %buffer) - %bcmp10 = call i32 @bcmp(ptr noundef nonnull dereferenceable(3) %buffer, ptr noundef nonnull dereferenceable(3) @.str.76, i64 3) - %tobool23.not = icmp eq i32 %bcmp10, 0 + %bcmp9 = call i32 @bcmp(ptr noundef nonnull dereferenceable(3) %buffer, ptr noundef nonnull dereferenceable(3) @.str.76, i64 3) + %tobool23.not = icmp eq i32 %bcmp9, 0 br i1 %tobool23.not, label %if.end28, label %if.then24 if.then24: ; preds = %if.end19 @@ -9458,15 +9450,15 @@ if.end28: ; preds = %if.end19 br label %while.cond while.cond: ; preds = %while.cond, %if.end28 - %incdec.ptr34 = phi ptr [ %incdec.ptr, %while.cond ], [ %token.promoted, %if.end28 ] - %5 = load i8, ptr %incdec.ptr34, align 1 + %incdec.ptr33 = phi ptr [ %incdec.ptr, %while.cond ], [ %token.promoted, %if.end28 ] + %5 = load i8, ptr %incdec.ptr33, align 1 %cmp32 = icmp eq i8 %5, 32 - %incdec.ptr = getelementptr inbounds i8, ptr %incdec.ptr34, i64 1 + %incdec.ptr = getelementptr inbounds i8, ptr %incdec.ptr33, i64 1 br i1 %cmp32, label %while.cond, label %while.end, !llvm.loop !84 while.end: ; preds = %while.cond %conv30 = trunc i64 %call29 to i32 - %call33 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %incdec.ptr34, ptr noundef nonnull dereferenceable(4) @.str.78, i64 noundef 3) #40 + %call33 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %incdec.ptr33, ptr noundef nonnull dereferenceable(4) @.str.78, i64 noundef 3) #40 %tobool34.not = icmp eq i32 %call33, 0 br i1 %tobool34.not, label %if.end39, label %if.then35 @@ -9476,7 +9468,7 @@ if.then35: ; preds = %while.end br label %return if.end39: ; preds = %while.end - %add.ptr40 = getelementptr inbounds i8, ptr %incdec.ptr34, i64 3 + %add.ptr40 = getelementptr inbounds i8, ptr %incdec.ptr33, i64 3 store ptr %add.ptr40, ptr %token, align 8 %call41 = call i64 @strtol(ptr nocapture noundef nonnull %add.ptr40, ptr noundef null, i32 noundef 10) #36 %call41.fr = freeze i64 %call41 @@ -9536,8 +9528,8 @@ if.end74: ; preds = %if.end67 br i1 %or.cond, label %for.cond78, label %for.cond95.preheader for.cond95.preheader: ; preds = %if.end74 - %cmp9650 = icmp sgt i32 %conv30, 0 - br i1 %cmp9650, label %for.body97.us.preheader, label %return + %cmp9649 = icmp sgt i32 %conv30, 0 + br i1 %cmp9649, label %for.body97.us.preheader, label %return for.body97.us.preheader: ; preds = %for.cond95.preheader %mul.i.i = shl i64 %call41.fr, 2 @@ -9554,21 +9546,21 @@ for.body97.us.preheader: ; preds = %for.cond95.preheade %add.ptr.i.i = getelementptr inbounds %struct.stbi__context, ptr %s, i64 0, i32 8, i64 1 %12 = sext i32 %spec.store.select to i64 %13 = and i64 %call41.fr, 4294967295 - %wide.trip.count131 = and i64 %call29, 4294967295 - %wide.trip.count125 = and i64 %call41.fr, 4294967295 + %wide.trip.count130 = and i64 %call29, 4294967295 + %wide.trip.count124 = and i64 %call41.fr, 4294967295 br label %for.body97.us for.body97.us: ; preds = %for.body97.us.preheader, %for.inc210.us - %indvars.iv127 = phi i64 [ 0, %for.body97.us.preheader ], [ %indvars.iv.next128, %for.inc210.us ] - %scanline.052.us = phi ptr [ null, %for.body97.us.preheader ], [ %scanline.1.us, %for.inc210.us ] + %indvars.iv126 = phi i64 [ 0, %for.body97.us.preheader ], [ %indvars.iv.next127, %for.inc210.us ] + %scanline.051.us = phi ptr [ null, %for.body97.us.preheader ], [ %scanline.1.us, %for.inc210.us ] %call98.us = call fastcc noundef zeroext i8 @_ZL10stbi__get8P13stbi__context(ptr noundef %s) %call100.us = call fastcc noundef zeroext i8 @_ZL10stbi__get8P13stbi__context(ptr noundef %s) %call102.us = call fastcc noundef zeroext i8 @_ZL10stbi__get8P13stbi__context(ptr noundef %s) %cmp104.us = icmp eq i8 %call98.us, 2 %cmp106.us = icmp eq i8 %call100.us, 2 - %or.cond1.not11.us = and i1 %cmp104.us, %cmp106.us + %or.cond1.not10.us = and i1 %cmp104.us, %cmp106.us %tobool108.not.us = icmp sgt i8 %call102.us, -1 - %or.cond90.us = and i1 %or.cond1.not11.us, %tobool108.not.us + %or.cond90.us = and i1 %or.cond1.not10.us, %tobool108.not.us br i1 %or.cond90.us, label %if.end120.us, label %if.then109 if.end120.us: ; preds = %for.body97.us @@ -9581,42 +9573,42 @@ if.end120.us: ; preds = %for.body97.us br i1 %cmp123.not.us, label %if.end128.us, label %if.then124 if.end128.us: ; preds = %if.end120.us - %cmp129.us = icmp eq ptr %scanline.052.us, null - br i1 %cmp129.us, label %_ZL17stbi__malloc_mad2iii.exit.us, label %if.end138.us + %cmp129.us = icmp eq ptr %scanline.051.us, null + br i1 %cmp129.us, label %if.then130.us, label %if.end138.us -_ZL17stbi__malloc_mad2iii.exit.us: ; preds = %if.end128.us +if.then130.us: ; preds = %if.end128.us %call.i.i98.us = call noalias noundef ptr @malloc(i64 noundef %conv.i97) #38 %tobool132.not.us = icmp eq ptr %call.i.i98.us, null br i1 %tobool132.not.us, label %if.then133, label %if.end138.us -if.end138.us: ; preds = %_ZL17stbi__malloc_mad2iii.exit.us, %if.end128.us - %scanline.1.us = phi ptr [ %call.i.i98.us, %_ZL17stbi__malloc_mad2iii.exit.us ], [ %scanline.052.us, %if.end128.us ] +if.end138.us: ; preds = %if.then130.us, %if.end128.us + %scanline.1.us = phi ptr [ %call.i.i98.us, %if.then130.us ], [ %scanline.051.us, %if.end128.us ] br label %while.cond142.preheader.us.us for.inc210.us: ; preds = %for.body198.us - %indvars.iv.next128 = add nuw nsw i64 %indvars.iv127, 1 - %exitcond132.not = icmp eq i64 %indvars.iv.next128, %wide.trip.count131 - br i1 %exitcond132.not, label %if.then214, label %for.body97.us, !llvm.loop !85 + %indvars.iv.next127 = add nuw nsw i64 %indvars.iv126, 1 + %exitcond131.not = icmp eq i64 %indvars.iv.next127, %wide.trip.count130 + br i1 %exitcond131.not, label %if.then214, label %for.body97.us, !llvm.loop !85 for.body198.us: ; preds = %for.body198.lr.ph.us, %for.body198.us - %indvars.iv119 = phi i64 [ 0, %for.body198.lr.ph.us ], [ %indvars.iv.next120, %for.body198.us ] - %14 = add nuw nsw i64 %indvars.iv119, %56 + %indvars.iv118 = phi i64 [ 0, %for.body198.lr.ph.us ], [ %indvars.iv.next119, %for.body198.us ] + %14 = add nuw nsw i64 %indvars.iv118, %56 %15 = mul nsw i64 %14, %12 %add.ptr203.us = getelementptr inbounds float, ptr %call68, i64 %15 - %16 = shl nsw i64 %indvars.iv119, 2 + %16 = shl nsw i64 %indvars.iv118, 2 %add.ptr206.us = getelementptr inbounds i8, ptr %scanline.1.us, i64 %16 call fastcc void @_ZL17stbi__hdr_convertPfPhi(ptr noundef nonnull %add.ptr203.us, ptr noundef nonnull %add.ptr206.us, i32 noundef %spec.store.select) - %indvars.iv.next120 = add nuw nsw i64 %indvars.iv119, 1 - %exitcond126.not = icmp eq i64 %indvars.iv.next120, %wide.trip.count125 - br i1 %exitcond126.not, label %for.inc210.us, label %for.body198.us, !llvm.loop !86 + %indvars.iv.next119 = add nuw nsw i64 %indvars.iv118, 1 + %exitcond125.not = icmp eq i64 %indvars.iv.next119, %wide.trip.count124 + br i1 %exitcond125.not, label %for.inc210.us, label %for.body198.us, !llvm.loop !86 while.cond142.preheader.us.us: ; preds = %while.cond142.for.inc193_crit_edge.us.us, %if.end138.us - %k.046.us.us = phi i32 [ 0, %if.end138.us ], [ %inc194.us.us, %while.cond142.for.inc193_crit_edge.us.us ] + %k.045.us.us = phi i32 [ 0, %if.end138.us ], [ %inc194.us.us, %while.cond142.for.inc193_crit_edge.us.us ] br label %while.body144.us.us while.body144.us.us: ; preds = %if.end191.us.us, %while.cond142.preheader.us.us - %sub45.us.us = phi i32 [ %conv42, %while.cond142.preheader.us.us ], [ %sub.us.us, %if.end191.us.us ] - %i.244.us.us = phi i32 [ 0, %while.cond142.preheader.us.us ], [ %i.5.us.us, %if.end191.us.us ] + %sub44.us.us = phi i32 [ %conv42, %while.cond142.preheader.us.us ], [ %sub.us.us, %if.end191.us.us ] + %i.243.us.us = phi i32 [ 0, %while.cond142.preheader.us.us ], [ %i.5.us.us, %if.end191.us.us ] %17 = load ptr, ptr %img_buffer.i99, align 8 %18 = load ptr, ptr %img_buffer_end.i100, align 8 %cmp.i101.us.us = icmp ult ptr %17, %18 @@ -9677,12 +9669,12 @@ _ZL10stbi__get8P13stbi__context.exit.us.us: ; preds = %if.then.i107.us.us, br i1 %cmp147.us.us, label %if.then148.us.us, label %if.else170.us.us if.else170.us.us: ; preds = %_ZL10stbi__get8P13stbi__context.exit.us.us - %cmp172.us.us = icmp ult i32 %sub45.us.us, %conv146.us.us + %cmp172.us.us = icmp ult i32 %sub44.us.us, %conv146.us.us br i1 %cmp172.us.us, label %if.then173, label %for.cond178.preheader.us.us for.body181.us.us: ; preds = %for.body181.us.us.preheader, %_ZL10stbi__get8P13stbi__context.exit173.us.us - %indvars.iv110 = phi i64 [ %55, %for.body181.us.us.preheader ], [ %indvars.iv.next111, %_ZL10stbi__get8P13stbi__context.exit173.us.us ] - %z.137.us.us = phi i32 [ 0, %for.body181.us.us.preheader ], [ %inc189.us.us, %_ZL10stbi__get8P13stbi__context.exit173.us.us ] + %indvars.iv109 = phi i64 [ %55, %for.body181.us.us.preheader ], [ %indvars.iv.next110, %_ZL10stbi__get8P13stbi__context.exit173.us.us ] + %z.136.us.us = phi i32 [ 0, %for.body181.us.us.preheader ], [ %inc189.us.us, %_ZL10stbi__get8P13stbi__context.exit173.us.us ] %30 = load ptr, ptr %img_buffer.i99, align 8 %31 = load ptr, ptr %img_buffer_end.i100, align 8 %cmp.i143.us.us = icmp ult ptr %30, %31 @@ -9736,16 +9728,16 @@ if.then.i171.us.us: ; preds = %for.body181.us.us _ZL10stbi__get8P13stbi__context.exit173.us.us: ; preds = %if.then.i171.us.us, %_ZL19stbi__refill_bufferP13stbi__context.exit.i165.us.us, %if.end.i144.us.us %retval.0.i168.us.us = phi i8 [ %40, %if.then.i171.us.us ], [ %39, %_ZL19stbi__refill_bufferP13stbi__context.exit.i165.us.us ], [ 0, %if.end.i144.us.us ] - %indvars.iv.next111 = add i64 %indvars.iv110, 1 - %41 = trunc i64 %indvars.iv110 to i32 + %indvars.iv.next110 = add i64 %indvars.iv109, 1 + %41 = trunc i64 %indvars.iv109 to i32 %mul184.us.us = shl nsw i32 %41, 2 - %add185.us.us = add nuw nsw i32 %mul184.us.us, %k.046.us.us + %add185.us.us = add nuw nsw i32 %mul184.us.us, %k.045.us.us %idxprom186.us.us = sext i32 %add185.us.us to i64 %arrayidx187.us.us = getelementptr inbounds i8, ptr %scanline.1.us, i64 %idxprom186.us.us store i8 %retval.0.i168.us.us, ptr %arrayidx187.us.us, align 1 - %inc189.us.us = add nuw nsw i32 %z.137.us.us, 1 - %exitcond113.not = icmp eq i32 %inc189.us.us, %conv146.us.us - br i1 %exitcond113.not, label %if.end191.us.us.loopexit61, label %for.body181.us.us, !llvm.loop !87 + %inc189.us.us = add nuw nsw i32 %z.136.us.us, 1 + %exitcond112.not = icmp eq i32 %inc189.us.us, %conv146.us.us + br i1 %exitcond112.not, label %if.end191.us.us.loopexit60, label %for.body181.us.us, !llvm.loop !87 if.then148.us.us: ; preds = %_ZL10stbi__get8P13stbi__context.exit.us.us %cmp.i110.us.us = icmp ult ptr %29, %28 @@ -9801,60 +9793,60 @@ _ZL10stbi__get8P13stbi__context.exit140.us.us: ; preds = %if.then.i138.us.us, %retval.0.i135.us.us = phi i8 [ %50, %if.then.i138.us.us ], [ %49, %_ZL19stbi__refill_bufferP13stbi__context.exit.i132.us.us ], [ 0, %if.end.i111.us.us ] %sub151.us.us = and i8 %retval.0.i106.us.us, 127 %conv153.us.us = zext nneg i8 %sub151.us.us to i32 - %cmp154.us.us = icmp ult i32 %sub45.us.us, %conv153.us.us + %cmp154.us.us = icmp ult i32 %sub44.us.us, %conv153.us.us br i1 %cmp154.us.us, label %if.then155, label %for.cond160.preheader.us.us if.end191.us.us.loopexit: ; preds = %for.body163.us.us - %51 = trunc i64 %indvars.iv.next115 to i32 + %51 = trunc i64 %indvars.iv.next114 to i32 br label %if.end191.us.us -if.end191.us.us.loopexit61: ; preds = %_ZL10stbi__get8P13stbi__context.exit173.us.us - %52 = trunc i64 %indvars.iv.next111 to i32 +if.end191.us.us.loopexit60: ; preds = %_ZL10stbi__get8P13stbi__context.exit173.us.us + %52 = trunc i64 %indvars.iv.next110 to i32 br label %if.end191.us.us -if.end191.us.us: ; preds = %if.end.i102.us.us, %if.end191.us.us.loopexit61, %if.end191.us.us.loopexit, %for.cond178.preheader.us.us, %for.cond160.preheader.us.us - %i.5.us.us = phi i32 [ %i.244.us.us, %for.cond160.preheader.us.us ], [ %i.244.us.us, %for.cond178.preheader.us.us ], [ %51, %if.end191.us.us.loopexit ], [ %52, %if.end191.us.us.loopexit61 ], [ %i.244.us.us, %if.end.i102.us.us ] +if.end191.us.us: ; preds = %if.end.i102.us.us, %if.end191.us.us.loopexit60, %if.end191.us.us.loopexit, %for.cond178.preheader.us.us, %for.cond160.preheader.us.us + %i.5.us.us = phi i32 [ %i.243.us.us, %for.cond160.preheader.us.us ], [ %i.243.us.us, %for.cond178.preheader.us.us ], [ %51, %if.end191.us.us.loopexit ], [ %52, %if.end191.us.us.loopexit60 ], [ %i.243.us.us, %if.end.i102.us.us ] %sub.us.us = sub nsw i32 %conv42, %i.5.us.us %cmp143.us.us = icmp sgt i32 %sub.us.us, 0 br i1 %cmp143.us.us, label %while.body144.us.us, label %while.cond142.for.inc193_crit_edge.us.us, !llvm.loop !88 for.body163.us.us: ; preds = %for.body163.us.us.preheader, %for.body163.us.us - %indvars.iv114 = phi i64 [ %54, %for.body163.us.us.preheader ], [ %indvars.iv.next115, %for.body163.us.us ] - %z.041.us.us = phi i32 [ 0, %for.body163.us.us.preheader ], [ %inc168.us.us, %for.body163.us.us ] - %indvars.iv.next115 = add i64 %indvars.iv114, 1 - %53 = trunc i64 %indvars.iv114 to i32 + %indvars.iv113 = phi i64 [ %54, %for.body163.us.us.preheader ], [ %indvars.iv.next114, %for.body163.us.us ] + %z.040.us.us = phi i32 [ 0, %for.body163.us.us.preheader ], [ %inc168.us.us, %for.body163.us.us ] + %indvars.iv.next114 = add i64 %indvars.iv113, 1 + %53 = trunc i64 %indvars.iv113 to i32 %mul165.us.us = shl nsw i32 %53, 2 - %add.us.us = add nuw nsw i32 %mul165.us.us, %k.046.us.us + %add.us.us = add nuw nsw i32 %mul165.us.us, %k.045.us.us %idxprom.us.us = sext i32 %add.us.us to i64 %arrayidx166.us.us = getelementptr inbounds i8, ptr %scanline.1.us, i64 %idxprom.us.us store i8 %retval.0.i135.us.us, ptr %arrayidx166.us.us, align 1 - %inc168.us.us = add nuw nsw i32 %z.041.us.us, 1 - %exitcond117.not = icmp eq i32 %inc168.us.us, %conv153.us.us - br i1 %exitcond117.not, label %if.end191.us.us.loopexit, label %for.body163.us.us, !llvm.loop !89 + %inc168.us.us = add nuw nsw i32 %z.040.us.us, 1 + %exitcond116.not = icmp eq i32 %inc168.us.us, %conv153.us.us + br i1 %exitcond116.not, label %if.end191.us.us.loopexit, label %for.body163.us.us, !llvm.loop !89 for.cond160.preheader.us.us: ; preds = %_ZL10stbi__get8P13stbi__context.exit140.us.us - %cmp16239.us.us.not = icmp eq i8 %sub151.us.us, 0 - br i1 %cmp16239.us.us.not, label %if.end191.us.us, label %for.body163.us.us.preheader + %cmp16238.us.us.not = icmp eq i8 %sub151.us.us, 0 + br i1 %cmp16238.us.us.not, label %if.end191.us.us, label %for.body163.us.us.preheader for.body163.us.us.preheader: ; preds = %for.cond160.preheader.us.us - %54 = zext i32 %i.244.us.us to i64 + %54 = zext i32 %i.243.us.us to i64 br label %for.body163.us.us for.cond178.preheader.us.us: ; preds = %if.else170.us.us - %cmp18035.us.us.not = icmp eq i8 %retval.0.i106.us.us, 0 - br i1 %cmp18035.us.us.not, label %if.end191.us.us, label %for.body181.us.us.preheader + %cmp18034.us.us.not = icmp eq i8 %retval.0.i106.us.us, 0 + br i1 %cmp18034.us.us.not, label %if.end191.us.us, label %for.body181.us.us.preheader for.body181.us.us.preheader: ; preds = %for.cond178.preheader.us.us - %55 = zext i32 %i.244.us.us to i64 + %55 = zext i32 %i.243.us.us to i64 br label %for.body181.us.us while.cond142.for.inc193_crit_edge.us.us: ; preds = %if.end191.us.us - %inc194.us.us = add nuw nsw i32 %k.046.us.us, 1 - %exitcond118.not = icmp eq i32 %inc194.us.us, 4 - br i1 %exitcond118.not, label %for.body198.lr.ph.us, label %while.cond142.preheader.us.us, !llvm.loop !90 + %inc194.us.us = add nuw nsw i32 %k.045.us.us, 1 + %exitcond117.not = icmp eq i32 %inc194.us.us, 4 + br i1 %exitcond117.not, label %for.body198.lr.ph.us, label %while.cond142.preheader.us.us, !llvm.loop !90 for.body198.lr.ph.us: ; preds = %while.cond142.for.inc193_crit_edge.us.us - %56 = mul nsw i64 %indvars.iv127, %13 + %56 = mul nsw i64 %indvars.iv126, %13 br label %for.body198.us for.cond78: ; preds = %if.end74, %for.inc92 @@ -10035,17 +10027,17 @@ if.then109: ; preds = %for.body97.us %arrayidx118 = getelementptr inbounds [4 x i8], ptr %rgbe110, i64 0, i64 3 store i8 %call117, ptr %arrayidx118, align 1 call fastcc void @_ZL17stbi__hdr_convertPfPhi(ptr noundef nonnull %call68, ptr noundef nonnull %rgbe110, i32 noundef %spec.store.select) - call void @free(ptr noundef %scanline.052.us) #36 + call void @free(ptr noundef %scanline.051.us) #36 br label %main_decode_loop if.then124: ; preds = %if.end120.us call void @free(ptr noundef %call68) #36 - call void @free(ptr noundef %scanline.052.us) #36 + call void @free(ptr noundef %scanline.051.us) #36 %74 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_ZL22stbi__g_failure_reason) store ptr @.str.79, ptr %74, align 8 br label %return -if.then133: ; preds = %_ZL17stbi__malloc_mad2iii.exit.us +if.then133: ; preds = %if.then130.us call void @free(ptr noundef %call68) #36 %75 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_ZL22stbi__g_failure_reason) store ptr @.str.8, ptr %75, align 8 @@ -13104,7 +13096,7 @@ return: ; preds = %entry, %for.end200, ret ptr %retval.0 } -; Function Attrs: mustprogress nofree nosync nounwind willreturn memory(argmem: readwrite) uwtable +; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable define internal fastcc void @_ZL27stbi__bmp_set_mask_defaultsP14stbi__bmp_datai(ptr nocapture noundef %info, i32 noundef %compress) unnamed_addr #15 { entry: %cmp1 = icmp eq i32 %compress, 0 @@ -16790,7 +16782,7 @@ return: ; preds = %while.body, %while. ret i32 %retval.0 } -; Function Attrs: mustprogress nofree nosync nounwind willreturn memory(write, argmem: readwrite, inaccessiblemem: none) uwtable +; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(write, argmem: readwrite, inaccessiblemem: none) uwtable define internal void @_ZL15stbi__idct_simdPhiPs(ptr nocapture noundef writeonly %out, i32 noundef %out_stride, ptr nocapture noundef readonly %data) #22 { entry: %0 = load <8 x i16>, ptr %data, align 16 @@ -17091,7 +17083,7 @@ entry: ret void } -; Function Attrs: mustprogress nofree nosync nounwind memory(write, argmem: readwrite, inaccessiblemem: none) uwtable +; Function Attrs: mustprogress nofree norecurse nosync nounwind memory(write, argmem: readwrite, inaccessiblemem: none) uwtable define internal void @_ZL23stbi__YCbCr_to_RGB_simdPhPKhS1_S1_ii(ptr nocapture noundef writeonly %out, ptr nocapture noundef readonly %y, ptr nocapture noundef readonly %pcb, ptr nocapture noundef readonly %pcr, i32 noundef %count, i32 noundef %step) #23 { entry: %cmp = icmp eq i32 %step, 4 @@ -17224,7 +17216,7 @@ for.end94: ; preds = %for.body46, %if.end ret void } -; Function Attrs: mustprogress nofree nosync nounwind memory(argmem: readwrite) uwtable +; Function Attrs: mustprogress nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable define internal noundef ptr @_ZL28stbi__resample_row_hv_2_simdPhS_S_ii(ptr noundef returned writeonly %out, ptr nocapture noundef readonly %in_near, ptr nocapture noundef readonly %in_far, i32 noundef %w, i32 %hs) #24 { entry: %cmp = icmp eq i32 %w, 1 @@ -19123,7 +19115,7 @@ return: ; preds = %for.inc340, %for.en ret i32 %retval.0 } -; Function Attrs: mustprogress nofree nosync nounwind memory(write, argmem: readwrite, inaccessiblemem: none) uwtable +; Function Attrs: mustprogress nofree norecurse nosync nounwind memory(write, argmem: readwrite, inaccessiblemem: none) uwtable define internal fastcc noundef i32 @_ZL19stbi__build_huffmanP13stbi__huffmanPi(ptr nocapture noundef %h, ptr nocapture noundef readonly %count) unnamed_addr #26 { entry: br label %for.cond1.preheader @@ -19573,11 +19565,7 @@ _ZL20stbi__extend_receiveP10stbi__jpegi.exit: ; preds = %cond.true, %if.then %2 = phi i32 [ %.pre.i, %if.then.i ], [ %1, %cond.true ] %code_buffer.i = getelementptr inbounds %struct.stbi__jpeg, ptr %j, i64 0, i32 12 %3 = load i32, ptr %code_buffer.i, align 8 - %shl.i = shl i32 %3, %call - %sub.i = sub nsw i32 0, %call - %and.i = and i32 %sub.i, 31 - %shr3.i = lshr i32 %3, %and.i - %or.i = or i32 %shl.i, %shr3.i + %or.i = tail call i32 @llvm.fshl.i32(i32 %3, i32 %3, i32 %call) %idxprom.i = zext nneg i32 %call to i64 %arrayidx.i = getelementptr inbounds [17 x i32], ptr @_ZL11stbi__bmask, i64 0, i64 %idxprom.i %4 = load i32, ptr %arrayidx.i, align 4 @@ -19628,11 +19616,11 @@ if.end17: ; preds = %if.then16, %do.body br i1 %tobool21.not, label %if.else, label %if.then22 if.then22: ; preds = %if.end17 - %conv2062 = zext i16 %11 to i32 - %shr23 = lshr i32 %conv2062, 4 + %conv2058 = zext i16 %11 to i32 + %shr23 = lshr i32 %conv2058, 4 %and24 = and i32 %shr23, 15 %add25 = add nsw i32 %and24, %k.0 - %and26 = and i32 %conv2062, 15 + %and26 = and i32 %conv2058, 15 %shl = shl i32 %10, %and26 store i32 %shl, ptr %code_buffer, align 8 %12 = load i32, ptr %code_bits, align 4 @@ -19678,46 +19666,42 @@ if.else53: ; preds = %if.end44 %15 = load i8, ptr %arrayidx57, align 1 %16 = load i32, ptr %code_bits, align 4 %cmp.i42 = icmp slt i32 %16, %and45 - br i1 %cmp.i42, label %if.then.i59, label %_ZL20stbi__extend_receiveP10stbi__jpegi.exit61 + br i1 %cmp.i42, label %if.then.i55, label %_ZL20stbi__extend_receiveP10stbi__jpegi.exit57 -if.then.i59: ; preds = %if.else53 +if.then.i55: ; preds = %if.else53 tail call fastcc void @_ZL24stbi__grow_buffer_unsafeP10stbi__jpeg(ptr noundef nonnull %j) - %.pre.i60 = load i32, ptr %code_bits, align 4 - br label %_ZL20stbi__extend_receiveP10stbi__jpegi.exit61 + %.pre.i56 = load i32, ptr %code_bits, align 4 + br label %_ZL20stbi__extend_receiveP10stbi__jpegi.exit57 -_ZL20stbi__extend_receiveP10stbi__jpegi.exit61: ; preds = %if.else53, %if.then.i59 - %17 = phi i32 [ %.pre.i60, %if.then.i59 ], [ %16, %if.else53 ] +_ZL20stbi__extend_receiveP10stbi__jpegi.exit57: ; preds = %if.else53, %if.then.i55 + %17 = phi i32 [ %.pre.i56, %if.then.i55 ], [ %16, %if.else53 ] %18 = load i32, ptr %code_buffer, align 8 - %shl.i44 = shl i32 %18, %and45 - %sub.i45 = sub nsw i32 0, %and45 - %and.i46 = and i32 %sub.i45, 31 - %shr3.i47 = lshr i32 %18, %and.i46 - %or.i48 = or i32 %shl.i44, %shr3.i47 - %idxprom.i49 = zext nneg i32 %and45 to i64 - %arrayidx.i50 = getelementptr inbounds [17 x i32], ptr @_ZL11stbi__bmask, i64 0, i64 %idxprom.i49 - %19 = load i32, ptr %arrayidx.i50, align 4 - %not.i51 = xor i32 %19, -1 - %and4.i52 = and i32 %or.i48, %not.i51 - store i32 %and4.i52, ptr %code_buffer, align 8 - %and8.i53 = and i32 %or.i48, %19 - %sub10.i54 = sub nsw i32 %17, %and45 - store i32 %sub10.i54, ptr %code_bits, align 4 - %arrayidx12.i55 = getelementptr inbounds [16 x i32], ptr @_ZL11stbi__jbias, i64 0, i64 %idxprom.i49 - %20 = load i32, ptr %arrayidx12.i55, align 4 - %.inv.i56 = icmp slt i32 %18, 0 - %and14.i57 = select i1 %.inv.i56, i32 0, i32 %20 - %add.i58 = add i32 %and14.i57, %and8.i53 + %or.i44 = tail call i32 @llvm.fshl.i32(i32 %18, i32 %18, i32 %and45) + %idxprom.i45 = zext nneg i32 %and45 to i64 + %arrayidx.i46 = getelementptr inbounds [17 x i32], ptr @_ZL11stbi__bmask, i64 0, i64 %idxprom.i45 + %19 = load i32, ptr %arrayidx.i46, align 4 + %not.i47 = xor i32 %19, -1 + %and4.i48 = and i32 %or.i44, %not.i47 + store i32 %and4.i48, ptr %code_buffer, align 8 + %and8.i49 = and i32 %or.i44, %19 + %sub10.i50 = sub nsw i32 %17, %and45 + store i32 %sub10.i50, ptr %code_bits, align 4 + %arrayidx12.i51 = getelementptr inbounds [16 x i32], ptr @_ZL11stbi__jbias, i64 0, i64 %idxprom.i45 + %20 = load i32, ptr %arrayidx12.i51, align 4 + %.inv.i52 = icmp slt i32 %18, 0 + %and14.i53 = select i1 %.inv.i52, i32 0, i32 %20 + %add.i54 = add i32 %and14.i53, %and8.i49 %idxprom60 = zext i8 %15 to i64 %arrayidx61 = getelementptr inbounds i16, ptr %dequant, i64 %idxprom60 %21 = load i16, ptr %arrayidx61, align 2 - %22 = trunc i32 %add.i58 to i16 + %22 = trunc i32 %add.i54 to i16 %conv64 = mul i16 %21, %22 %arrayidx66 = getelementptr inbounds i16, ptr %data, i64 %idxprom60 store i16 %conv64, ptr %arrayidx66, align 2 br label %do.cond -do.cond: ; preds = %if.then22, %_ZL20stbi__extend_receiveP10stbi__jpegi.exit61, %if.end51 - %k.1 = phi i32 [ %inc, %if.then22 ], [ %add52, %if.end51 ], [ %inc55, %_ZL20stbi__extend_receiveP10stbi__jpegi.exit61 ] +do.cond: ; preds = %if.then22, %_ZL20stbi__extend_receiveP10stbi__jpegi.exit57, %if.end51 + %k.1 = phi i32 [ %inc, %if.then22 ], [ %add52, %if.end51 ], [ %inc55, %_ZL20stbi__extend_receiveP10stbi__jpegi.exit57 ] %cmp69 = icmp slt i32 %k.1, 64 br i1 %cmp69, label %do.body, label %return, !llvm.loop !164 @@ -20055,11 +20039,7 @@ _ZL20stbi__extend_receiveP10stbi__jpegi.exit: ; preds = %cond.true, %if.then %6 = phi i32 [ %.pre.i, %if.then.i ], [ %5, %cond.true ] %code_buffer.i = getelementptr inbounds %struct.stbi__jpeg, ptr %j, i64 0, i32 12 %7 = load i32, ptr %code_buffer.i, align 8 - %shl.i = shl i32 %7, %call6 - %sub.i = sub nsw i32 0, %call6 - %and.i = and i32 %sub.i, 31 - %shr3.i = lshr i32 %7, %and.i - %or.i = or i32 %shl.i, %shr3.i + %or.i = tail call i32 @llvm.fshl.i32(i32 %7, i32 %7, i32 %call6) %idxprom.i = zext nneg i32 %call6 to i64 %arrayidx.i = getelementptr inbounds [17 x i32], ptr @_ZL11stbi__bmask, i64 0, i64 %idxprom.i %8 = load i32, ptr %arrayidx.i, align 4 @@ -20093,19 +20073,19 @@ cond.end: ; preds = %if.end11, %_ZL20stb if.else: ; preds = %if.end3 %12 = load i32, ptr %code_bits, align 4 %cmp.i20 = icmp slt i32 %12, 1 - br i1 %cmp.i20, label %if.then.i24, label %_ZL18stbi__jpeg_get_bitP10stbi__jpeg.exit + br i1 %cmp.i20, label %if.then.i22, label %_ZL18stbi__jpeg_get_bitP10stbi__jpeg.exit -if.then.i24: ; preds = %if.else +if.then.i22: ; preds = %if.else tail call fastcc void @_ZL24stbi__grow_buffer_unsafeP10stbi__jpeg(ptr noundef nonnull %j) - %.pre.i25 = load i32, ptr %code_bits, align 4 + %.pre.i23 = load i32, ptr %code_bits, align 4 br label %_ZL18stbi__jpeg_get_bitP10stbi__jpeg.exit -_ZL18stbi__jpeg_get_bitP10stbi__jpeg.exit: ; preds = %if.else, %if.then.i24 - %13 = phi i32 [ %.pre.i25, %if.then.i24 ], [ %12, %if.else ] +_ZL18stbi__jpeg_get_bitP10stbi__jpeg.exit: ; preds = %if.else, %if.then.i22 + %13 = phi i32 [ %.pre.i23, %if.then.i22 ], [ %12, %if.else ] %code_buffer.i21 = getelementptr inbounds %struct.stbi__jpeg, ptr %j, i64 0, i32 12 %14 = load i32, ptr %code_buffer.i21, align 8 - %shl.i22 = shl i32 %14, 1 - store i32 %shl.i22, ptr %code_buffer.i21, align 8 + %shl.i = shl i32 %14, 1 + store i32 %shl.i, ptr %code_buffer.i21, align 8 %dec.i = add nsw i32 %13, -1 store i32 %dec.i, ptr %code_bits, align 4 %tobool19.not = icmp sgt i32 %14, -1 @@ -20447,11 +20427,7 @@ if.end: ; preds = %if.then, %entry %1 = phi i32 [ %.pre, %if.then ], [ %0, %entry ] %code_buffer = getelementptr inbounds %struct.stbi__jpeg, ptr %j, i64 0, i32 12 %2 = load i32, ptr %code_buffer, align 8 - %shl = shl i32 %2, %n - %sub = sub nsw i32 0, %n - %and = and i32 %sub, 31 - %shr = lshr i32 %2, %and - %or = or i32 %shl, %shr + %or = tail call i32 @llvm.fshl.i32(i32 %2, i32 %2, i32 %n) %idxprom = zext nneg i32 %n to i64 %arrayidx = getelementptr inbounds [17 x i32], ptr @_ZL11stbi__bmask, i64 0, i64 %idxprom %3 = load i32, ptr %arrayidx, align 4 @@ -22948,6 +22924,9 @@ return: ; preds = %if.end65, %if.then6 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umin.i64(i64, i64) #33 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.fshl.i32(i32, i32, i32) #33 + ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.smax.i32(i32, i32) #33 @@ -22969,12 +22948,12 @@ declare i32 @bcmp(ptr nocapture, ptr nocapture, i64) local_unnamed_addr #35 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umax.i64(i64, i64) #33 -attributes #0 = { mustprogress nofree nosync nounwind willreturn memory(read, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } +attributes #0 = { mustprogress nofree norecurse nosync nounwind willreturn memory(read, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #1 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } attributes #2 = { mustprogress nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #3 = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #4 = { mustprogress nofree norecurse nosync nounwind willreturn memory(write, argmem: none, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } -attributes #5 = { mustprogress nofree nosync nounwind willreturn memory(write, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } +attributes #5 = { mustprogress nofree norecurse nosync nounwind willreturn memory(write, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #6 = { mustprogress uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #7 = { nofree nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #8 = { mustprogress nofree nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } @@ -22984,18 +22963,18 @@ attributes #11 = { mustprogress nocallback nofree nounwind willreturn memory(arg attributes #12 = { mustprogress nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #13 = { mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #14 = { mustprogress nofree nounwind willreturn memory(inaccessiblemem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } -attributes #15 = { mustprogress nofree nosync nounwind willreturn memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } +attributes #15 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #16 = { mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #17 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #18 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #19 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #20 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } attributes #21 = { mustprogress nofree nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } -attributes #22 = { mustprogress nofree nosync nounwind willreturn memory(write, argmem: readwrite, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="128" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } -attributes #23 = { mustprogress nofree nosync nounwind memory(write, argmem: readwrite, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="128" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } -attributes #24 = { mustprogress nofree nosync nounwind memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="128" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } +attributes #22 = { mustprogress nofree norecurse nosync nounwind willreturn memory(write, argmem: readwrite, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="128" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } +attributes #23 = { mustprogress nofree norecurse nosync nounwind memory(write, argmem: readwrite, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="128" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } +attributes #24 = { mustprogress nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="128" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #25 = { mustprogress nocallback nofree nosync nounwind willreturn memory(none) } -attributes #26 = { mustprogress nofree nosync nounwind memory(write, argmem: readwrite, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } +attributes #26 = { mustprogress nofree norecurse nosync nounwind memory(write, argmem: readwrite, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #27 = { mustprogress nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #28 = { mustprogress nofree nounwind willreturn memory(argmem: read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #29 = { mustprogress nofree nounwind willreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } diff --git a/bench/pcg-cpp/optimized/codebook.cpp.ll b/bench/pcg-cpp/optimized/codebook.cpp.ll index baa3da8e219..3c381c99d3b 100644 --- a/bench/pcg-cpp/optimized/codebook.cpp.ll +++ b/bench/pcg-cpp/optimized/codebook.cpp.ll @@ -109,7 +109,7 @@ terminate.lpad.i.i: ; preds = %invoke.cont %3 = landingpad { ptr, i32 } catch ptr null %4 = extractvalue { ptr, i32 } %3, 0 - call void @__clang_call_terminate(ptr %4) #10 + call void @__clang_call_terminate(ptr %4) #11 unreachable _ZN10pcg_extras13seed_seq_fromISt13random_deviceED2Ev.exit: ; preds = %invoke.cont @@ -154,17 +154,17 @@ _ZN10pcg_extras13seed_seq_fromISt13random_deviceED2Ev.exit: ; preds = %invoke.co br label %for.cond3.preheader for.cond3.preheader: ; preds = %_ZN10pcg_extras13seed_seq_fromISt13random_deviceED2Ev.exit, %for.end - %i.014 = phi i32 [ 0, %_ZN10pcg_extras13seed_seq_fromISt13random_deviceED2Ev.exit ], [ %inc10, %for.end ] - %rng.sroa.4.013 = phi i64 [ %add.i.i.i.i, %_ZN10pcg_extras13seed_seq_fromISt13random_deviceED2Ev.exit ], [ %add.i.i.i.i.i4, %for.end ] + %i.013 = phi i32 [ 0, %_ZN10pcg_extras13seed_seq_fromISt13random_deviceED2Ev.exit ], [ %inc10, %for.end ] + %rng.sroa.4.012 = phi i64 [ %add.i.i.i.i, %_ZN10pcg_extras13seed_seq_fromISt13random_deviceED2Ev.exit ], [ %add.i.i.i.i.i4, %for.end ] br label %for.cond.i.i.preheader for.cond.i.i.preheader: ; preds = %for.cond3.preheader, %_ZN10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEEclEj.exit - %j.012 = phi i32 [ 0, %for.cond3.preheader ], [ %inc, %_ZN10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEEclEj.exit ] - %rng.sroa.4.111 = phi i64 [ %rng.sroa.4.013, %for.cond3.preheader ], [ %add.i.i.i.i.i4, %_ZN10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEEclEj.exit ] + %j.011 = phi i32 [ 0, %for.cond3.preheader ], [ %inc, %_ZN10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEEclEj.exit ] + %rng.sroa.4.110 = phi i64 [ %rng.sroa.4.012, %for.cond3.preheader ], [ %add.i.i.i.i.i4, %_ZN10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEEclEj.exit ] br label %for.cond.i.i for.cond.i.i: ; preds = %for.cond.i.i.preheader, %for.cond.i.i - %add.i.i.i4.i.i = phi i64 [ %add.i.i.i.i.i4, %for.cond.i.i ], [ %rng.sroa.4.111, %for.cond.i.i.preheader ] + %add.i.i.i4.i.i = phi i64 [ %add.i.i.i.i.i4, %for.cond.i.i ], [ %rng.sroa.4.110, %for.cond.i.i.preheader ] %mul.i.i.i.i.i = mul i64 %add.i.i.i4.i.i, 6364136223846793005 %add.i.i.i.i.i4 = add i64 %mul.i.i.i.i.i, %or.i.i.i.i %shr.i.i.i.i = lshr i64 %add.i.i.i4.i.i, 59 @@ -173,18 +173,14 @@ for.cond.i.i: ; preds = %for.cond.i.i.prehea %7 = lshr i64 %add.i.i.i4.i.i, 27 %shr7.i.i.i.i = xor i64 %6, %7 %conv8.i.i.i.i = trunc i64 %shr7.i.i.i.i to i32 - %shr.i.i.i.i.i = lshr i32 %conv8.i.i.i.i, %conv5.i.i.i.i - %sub.i.i.i.i.i = sub nsw i32 0, %conv5.i.i.i.i - %and.i.i.i.i.i = and i32 %sub.i.i.i.i.i, 31 - %shl.i.i.i.i.i5 = shl i32 %conv8.i.i.i.i, %and.i.i.i.i.i - %or.i.i.i.i.i6 = or i32 %shl.i.i.i.i.i5, %shr.i.i.i.i.i - %cmp.not.i.i = icmp ult i32 %or.i.i.i.i.i6, 296 + %or.i.i.i.i.i5 = call noundef i32 @llvm.fshr.i32(i32 %conv8.i.i.i.i, i32 %conv8.i.i.i.i, i32 %conv5.i.i.i.i) + %cmp.not.i.i = icmp ult i32 %or.i.i.i.i.i5, 296 br i1 %cmp.not.i.i, label %for.cond.i.i, label %_ZN10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEEclEj.exit, !llvm.loop !9 _ZN10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEEclEj.exit: ; preds = %for.cond.i.i - %rem6.i.i = urem i32 %or.i.i.i.i.i6, 1000 + %rem6.i.i = urem i32 %or.i.i.i.i.i5, 1000 %call7 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef %rem6.i.i) - %inc = add nuw nsw i32 %j.012, 1 + %inc = add nuw nsw i32 %j.011, 1 %exitcond.not = icmp eq i32 %inc, 16 br i1 %exitcond.not, label %for.end, label %for.cond.i.i.preheader, !llvm.loop !10 @@ -192,23 +188,23 @@ lpad: ; preds = %for.body.i.i.i.i %8 = landingpad { ptr, i32 } cleanup invoke void @_ZNSt13random_device7_M_finiEv(ptr noundef nonnull align 8 dereferenceable(5000) %ref.tmp) - to label %_ZN10pcg_extras13seed_seq_fromISt13random_deviceED2Ev.exit8 unwind label %terminate.lpad.i.i7 + to label %_ZN10pcg_extras13seed_seq_fromISt13random_deviceED2Ev.exit7 unwind label %terminate.lpad.i.i6 -terminate.lpad.i.i7: ; preds = %lpad +terminate.lpad.i.i6: ; preds = %lpad %9 = landingpad { ptr, i32 } catch ptr null %10 = extractvalue { ptr, i32 } %9, 0 - call void @__clang_call_terminate(ptr %10) #10 + call void @__clang_call_terminate(ptr %10) #11 unreachable -_ZN10pcg_extras13seed_seq_fromISt13random_deviceED2Ev.exit8: ; preds = %lpad +_ZN10pcg_extras13seed_seq_fromISt13random_deviceED2Ev.exit7: ; preds = %lpad resume { ptr, i32 } %8 for.end: ; preds = %_ZN10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEEclEj.exit %putchar = call i32 @putchar(i32 10) - %inc10 = add nuw nsw i32 %i.014, 1 - %exitcond15.not = icmp eq i32 %inc10, 16 - br i1 %exitcond15.not, label %for.end11, label %for.cond3.preheader, !llvm.loop !11 + %inc10 = add nuw nsw i32 %i.013, 1 + %exitcond14.not = icmp eq i32 %inc10, 16 + br i1 %exitcond14.not, label %for.end11, label %for.cond3.preheader, !llvm.loop !11 for.end11: ; preds = %for.end ret i32 0 @@ -225,8 +221,8 @@ declare void @_ZNSt13random_device7_M_finiEv(ptr noundef nonnull align 8 derefer ; Function Attrs: noreturn nounwind uwtable define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) local_unnamed_addr #5 comdat { - %2 = tail call ptr @__cxa_begin_catch(ptr %0) #11 - tail call void @_ZSt9terminatev() #10 + %2 = tail call ptr @__cxa_begin_catch(ptr %0) #12 + tail call void @_ZSt9terminatev() #11 unreachable } @@ -239,7 +235,7 @@ define linkonce_odr dso_local void @_ZNSt13random_deviceC2Ev(ptr noundef nonnull entry: %ref.tmp = alloca %"class.std::__cxx11::basic_string", align 8 %ref.tmp2 = alloca %"class.std::allocator", align 1 - call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp2) #11 + call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp2) #12 %call.i2 = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) to label %call.i.noexc unwind label %lpad @@ -254,7 +250,7 @@ call.i.noexc: ; preds = %entry lpad.i: ; preds = %.noexc %0 = landingpad { ptr, i32 } cleanup - call void @_ZNSaIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp) #11 + call void @_ZNSaIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp) #12 br label %ehcleanup invoke.cont: ; preds = %.noexc @@ -262,8 +258,8 @@ invoke.cont: ; preds = %.noexc to label %invoke.cont4 unwind label %lpad3 invoke.cont4: ; preds = %invoke.cont - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) #11 - call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp2) #11 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) #12 + call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp2) #12 ret void lpad: ; preds = %call.i.noexc, %entry @@ -274,12 +270,12 @@ lpad: ; preds = %call.i.noexc, %entr lpad3: ; preds = %invoke.cont %2 = landingpad { ptr, i32 } cleanup - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) #11 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) #12 br label %ehcleanup ehcleanup: ; preds = %lpad, %lpad.i, %lpad3 %.pn = phi { ptr, i32 } [ %2, %lpad3 ], [ %1, %lpad ], [ %0, %lpad.i ] - call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp2) #11 + call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp2) #12 resume { ptr, i32 } %.pn } @@ -325,7 +321,7 @@ terminate.lpad.i: ; preds = %if.else %1 = landingpad { ptr, i32 } catch ptr null %2 = extractvalue { ptr, i32 } %1, 0 - tail call void @__clang_call_terminate(ptr %2) #10 + tail call void @__clang_call_terminate(ptr %2) #11 unreachable if.end: ; preds = %if.else, %if.then @@ -334,7 +330,7 @@ if.end: ; preds = %if.else, %if.then to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %if.end - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcPKcS7_(ptr noundef %call4, ptr noundef %__beg, ptr noundef %__end) #11 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcPKcS7_(ptr noundef %call4, ptr noundef %__beg, ptr noundef %__end) #12 store ptr null, ptr %__guard, align 8 %3 = load i64, ptr %__dnew, align 8 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_set_lengthEm(ptr noundef nonnull align 8 dereferenceable(32) %this, i64 noundef %3) @@ -346,7 +342,7 @@ _ZZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_ lpad: ; preds = %invoke.cont, %if.end %4 = landingpad { ptr, i32 } cleanup - call void @_ZZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tagEN6_GuardD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %__guard) #11 + call void @_ZZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tagEN6_GuardD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %__guard) #12 resume { ptr, i32 } %4 } @@ -381,7 +377,7 @@ terminate.lpad: ; preds = %if.then %1 = landingpad { ptr, i32 } catch ptr null %2 = extractvalue { ptr, i32 } %1, 0 - tail call void @__clang_call_terminate(ptr %2) #10 + tail call void @__clang_call_terminate(ptr %2) #11 unreachable } @@ -406,18 +402,21 @@ declare noundef signext i8 @_ZNSt9basic_iosIcSt11char_traitsIcEE4fillEc(ptr noun define internal void @_GLOBAL__sub_I_codebook.cpp() #8 section ".text.startup" { entry: tail call void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1) @_ZStL8__ioinit) - %0 = tail call i32 @__cxa_atexit(ptr nonnull @_ZNSt8ios_base4InitD1Ev, ptr nonnull @_ZStL8__ioinit, ptr nonnull @__dso_handle) #11 + %0 = tail call i32 @__cxa_atexit(ptr nonnull @_ZNSt8ios_base4InitD1Ev, ptr nonnull @_ZStL8__ioinit, ptr nonnull @__dso_handle) #12 ret void } ; Function Attrs: nofree nounwind declare noundef i32 @putchar(i32 noundef) local_unnamed_addr #2 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.fshr.i32(i32, i32, i32) #9 + ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #9 +declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #10 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #9 +declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #10 attributes #0 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } @@ -428,9 +427,10 @@ attributes #5 = { noreturn nounwind uwtable "frame-pointer"="all" "no-trapping-m attributes #6 = { mustprogress uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #7 = { mustprogress nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #8 = { uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #9 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #10 = { noreturn nounwind } -attributes #11 = { nounwind } +attributes #9 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #10 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #11 = { noreturn nounwind } +attributes #12 = { nounwind } !llvm.module.flags = !{!0, !1, !2, !3, !4} diff --git a/bench/pcg-cpp/optimized/cppref-sample.cpp.ll b/bench/pcg-cpp/optimized/cppref-sample.cpp.ll index b625072bc90..c983791eac7 100644 --- a/bench/pcg-cpp/optimized/cppref-sample.cpp.ll +++ b/bench/pcg-cpp/optimized/cppref-sample.cpp.ll @@ -92,7 +92,7 @@ entry: for.body.i.i.i.i: ; preds = %call.i.i.i.i.i.noexc, %entry %i.04.i.idx.i.i.i = phi i64 [ %i.04.i.add.i.i.i, %call.i.i.i.i.i.noexc ], [ 0, %entry ] %call.i.i.i.i.i9 = invoke noundef i32 @_ZNSt13random_device9_M_getvalEv(ptr noundef nonnull align 8 dereferenceable(5000) %seed_source) - to label %call.i.i.i.i.i.noexc unwind label %lpad.loopexit39 + to label %call.i.i.i.i.i.noexc unwind label %lpad.loopexit30 call.i.i.i.i.i.noexc: ; preds = %for.body.i.i.i.i %i.04.i.ptr.i.i.i = getelementptr inbounds i8, ptr %buffer.i.i.i, i64 %i.04.i.idx.i.i.i @@ -126,9 +126,9 @@ for.end.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i %dest_first.addr.011.i.i.add.i.i.i = add nuw nsw i64 %dest_first.addr.011.i.i.idx.i.i.i, 8 store i64 %or.i.i.i.i.i, ptr %dest_first.addr.011.i.i.ptr.i.i.i, align 8 %cmp.not.i.i.i.i.i = icmp eq i64 %dest_first.addr.011.i.i.add.i.i.i, 16 - br i1 %cmp.not.i.i.i.i.i, label %if.then.i19, label %for.cond.preheader.i.i.i.i.i, !llvm.loop !8 + br i1 %cmp.not.i.i.i.i.i, label %if.then.i.i, label %for.cond.preheader.i.i.i.i.i, !llvm.loop !8 -if.then.i19: ; preds = %for.end.i.i.i.i.i +if.then.i.i: ; preds = %for.end.i.i.i.i.i call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %buffer.i.i.i) %arrayidx.i = getelementptr inbounds [2 x i64], ptr %seeddata.i, i64 0, i64 1 %1 = load i64, ptr %arrayidx.i, align 8 @@ -141,61 +141,53 @@ if.then.i19: ; preds = %for.end.i.i.i.i.i %mul.i.i.i.i = mul i64 %add.i.i.i, 6364136223846793005 %add.i.i.i.i = add i64 %mul.i.i.i.i, %or.i.i.i.i call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %seeddata.i) - %mul.i.i.i.i.i = mul i64 %add.i.i.i.i, 6364136223846793005 - %add.i.i.i.i.i21 = add i64 %mul.i.i.i.i.i, %or.i.i.i.i - store i64 %add.i.i.i.i.i21, ptr %state_.i.i.i, align 8 - %shr.i.i.i.i = lshr i64 %add.i.i.i.i, 59 - %conv5.i.i.i.i = trunc i64 %shr.i.i.i.i to i32 + %mul.i.i.i.i.i.i = mul i64 %add.i.i.i.i, 6364136223846793005 + %add.i.i.i.i.i.i = add i64 %mul.i.i.i.i.i.i, %or.i.i.i.i + store i64 %add.i.i.i.i.i.i, ptr %state_.i.i.i, align 8 + %shr.i.i.i.i.i = lshr i64 %add.i.i.i.i, 59 + %conv5.i.i.i.i.i = trunc i64 %shr.i.i.i.i.i to i32 %3 = lshr i64 %add.i.i.i.i, 45 %4 = lshr i64 %add.i.i.i.i, 27 - %shr7.i.i.i.i = xor i64 %3, %4 - %conv8.i.i.i.i = trunc i64 %shr7.i.i.i.i to i32 - %shr.i.i.i.i.i = lshr i32 %conv8.i.i.i.i, %conv5.i.i.i.i - %sub.i.i.i.i.i = sub nsw i32 0, %conv5.i.i.i.i - %and.i.i.i.i.i = and i32 %sub.i.i.i.i.i, 31 - %shl.i.i.i.i.i22 = shl i32 %conv8.i.i.i.i, %and.i.i.i.i.i - %or.i.i.i.i.i23 = or i32 %shl.i.i.i.i.i22, %shr.i.i.i.i.i - %conv.i.i = zext i32 %or.i.i.i.i.i23 to i64 - %mul.i.i24 = mul nuw nsw i64 %conv.i.i, 6 - %5 = and i64 %mul.i.i24, 4294967292 - %cmp321.i.i = icmp eq i64 %5, 0 - br i1 %cmp321.i.i, label %while.body.i.i25, label %invoke.cont2 - -while.body.i.i25: ; preds = %if.then.i19, %while.body.i.i25 - %6 = phi i64 [ %add.i.i.i11.i.i, %while.body.i.i25 ], [ %add.i.i.i.i.i21, %if.then.i19 ] - %mul.i.i.i10.i.i = mul i64 %6, 6364136223846793005 - %add.i.i.i11.i.i = add i64 %mul.i.i.i10.i.i, %or.i.i.i.i - %shr.i.i12.i.i = lshr i64 %6, 59 - %conv5.i.i13.i.i = trunc i64 %shr.i.i12.i.i to i32 + %shr7.i.i.i.i.i = xor i64 %3, %4 + %conv8.i.i.i.i.i = trunc i64 %shr7.i.i.i.i.i to i32 + %or.i.i.i.i.i.i = call noundef i32 @llvm.fshr.i32(i32 %conv8.i.i.i.i.i, i32 %conv8.i.i.i.i.i, i32 %conv5.i.i.i.i.i) + %conv.i.i.i = zext i32 %or.i.i.i.i.i.i to i64 + %mul.i.i.i = mul nuw nsw i64 %conv.i.i.i, 6 + %5 = and i64 %mul.i.i.i, 4294967292 + %cmp317.i.i.i = icmp eq i64 %5, 0 + br i1 %cmp317.i.i.i, label %while.body.i.i.i, label %invoke.cont2 + +while.body.i.i.i: ; preds = %if.then.i.i, %while.body.i.i.i + %6 = phi i64 [ %add.i.i.i11.i.i.i, %while.body.i.i.i ], [ %add.i.i.i.i.i.i, %if.then.i.i ] + %mul.i.i.i10.i.i.i = mul i64 %6, 6364136223846793005 + %add.i.i.i11.i.i.i = add i64 %mul.i.i.i10.i.i.i, %or.i.i.i.i + %shr.i.i12.i.i.i = lshr i64 %6, 59 + %conv5.i.i13.i.i.i = trunc i64 %shr.i.i12.i.i.i to i32 %7 = lshr i64 %6, 45 %8 = lshr i64 %6, 27 - %shr7.i.i14.i.i = xor i64 %7, %8 - %conv8.i.i15.i.i = trunc i64 %shr7.i.i14.i.i to i32 - %shr.i.i.i16.i.i = lshr i32 %conv8.i.i15.i.i, %conv5.i.i13.i.i - %sub.i.i.i17.i.i = sub nsw i32 0, %conv5.i.i13.i.i - %and.i.i.i18.i.i = and i32 %sub.i.i.i17.i.i, 31 - %shl.i.i.i19.i.i = shl i32 %conv8.i.i15.i.i, %and.i.i.i18.i.i - %or.i.i.i20.i.i = or i32 %shl.i.i.i19.i.i, %shr.i.i.i16.i.i - %conv5.i.i = zext i32 %or.i.i.i20.i.i to i64 - %mul7.i.i = mul nuw nsw i64 %conv5.i.i, 6 - %9 = and i64 %mul7.i.i, 4294967292 - %cmp3.i.i = icmp eq i64 %9, 0 - br i1 %cmp3.i.i, label %while.body.i.i25, label %while.cond.if.end.loopexit_crit_edge.i.i, !llvm.loop !9 - -while.cond.if.end.loopexit_crit_edge.i.i: ; preds = %while.body.i.i25 - store i64 %add.i.i.i11.i.i, ptr %state_.i.i.i, align 8 + %shr7.i.i14.i.i.i = xor i64 %7, %8 + %conv8.i.i15.i.i.i = trunc i64 %shr7.i.i14.i.i.i to i32 + %or.i.i.i16.i.i.i = call noundef i32 @llvm.fshr.i32(i32 %conv8.i.i15.i.i.i, i32 %conv8.i.i15.i.i.i, i32 %conv5.i.i13.i.i.i) + %conv5.i.i.i = zext i32 %or.i.i.i16.i.i.i to i64 + %mul7.i.i.i = mul nuw nsw i64 %conv5.i.i.i, 6 + %9 = and i64 %mul7.i.i.i, 4294967292 + %cmp3.i.i.i = icmp eq i64 %9, 0 + br i1 %cmp3.i.i.i, label %while.body.i.i.i, label %while.cond.if.end.loopexit_crit_edge.i.i.i, !llvm.loop !9 + +while.cond.if.end.loopexit_crit_edge.i.i.i: ; preds = %while.body.i.i.i + store i64 %add.i.i.i11.i.i.i, ptr %state_.i.i.i, align 8 br label %invoke.cont2 -invoke.cont2: ; preds = %if.then.i19, %while.cond.if.end.loopexit_crit_edge.i.i - %__product.1.i.i = phi i64 [ %mul.i.i24, %if.then.i19 ], [ %mul7.i.i, %while.cond.if.end.loopexit_crit_edge.i.i ] - %shr.i.i = lshr i64 %__product.1.i.i, 32 - %conv9.i.i = trunc i64 %shr.i.i to i32 - %add17.i = add nuw nsw i32 %conv9.i.i, 1 +invoke.cont2: ; preds = %while.cond.if.end.loopexit_crit_edge.i.i.i, %if.then.i.i + %__product.1.i.i.i = phi i64 [ %mul.i.i.i, %if.then.i.i ], [ %mul7.i.i.i, %while.cond.if.end.loopexit_crit_edge.i.i.i ] + %shr.i.i.i = lshr i64 %__product.1.i.i.i, 32 + %conv9.i.i.i = trunc i64 %shr.i.i.i to i32 + %add17.i.i = add nuw nsw i32 %conv9.i.i.i, 1 %call4 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str) to label %invoke.cont3 unwind label %lpad.loopexit.split-lp invoke.cont3: ; preds = %invoke.cont2 - %call6 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %call4, i32 noundef %add17.i) + %call6 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %call4, i32 noundef %add17.i.i) to label %invoke.cont5 unwind label %lpad.loopexit.split-lp invoke.cont5: ; preds = %invoke.cont3 @@ -203,7 +195,7 @@ invoke.cont5: ; preds = %invoke.cont3 to label %invoke.cont9 unwind label %lpad.loopexit.split-lp invoke.cont9: ; preds = %invoke.cont5 - %conv = sitofp i32 %add17.i to double + %conv = sitofp i32 %add17.i.i to double store double %conv, ptr %normal_dist, align 8 %_M_stddev.i.i = getelementptr inbounds %"struct.std::normal_distribution<>::param_type", ptr %normal_dist, i64 0, i32 1 store <2 x double> , ptr %_M_stddev.i.i, align 8 @@ -224,12 +216,12 @@ invoke.cont9: ; preds = %invoke.cont5 br label %for.body for.body: ; preds = %invoke.cont9, %invoke.cont14 - %n.043 = phi i32 [ 0, %invoke.cont9 ], [ %inc16, %invoke.cont14 ] - %call.i11 = invoke noundef double @_ZNSt19normal_distributionIdEclIN10pcg_detail6engineIjmNS2_12xsh_rr_mixinIjmEELb1ENS2_15specific_streamImEENS2_18default_multiplierImEEEEEEdRT_RKNS0_10param_typeE(ptr noundef nonnull align 8 dereferenceable(25) %normal_dist, ptr noundef nonnull align 8 dereferenceable(16) %rng, ptr noundef nonnull align 8 dereferenceable(16) %normal_dist) + %n.034 = phi i32 [ 0, %invoke.cont9 ], [ %inc16, %invoke.cont14 ] + %call.i12 = invoke noundef double @_ZNSt19normal_distributionIdEclIN10pcg_detail6engineIjmNS2_12xsh_rr_mixinIjmEELb1ENS2_15specific_streamImEENS2_18default_multiplierImEEEEEEdRT_RKNS0_10param_typeE(ptr noundef nonnull align 8 dereferenceable(25) %normal_dist, ptr noundef nonnull align 8 dereferenceable(16) %rng, ptr noundef nonnull align 8 dereferenceable(16) %normal_dist) to label %invoke.cont11 unwind label %lpad10.loopexit.split-lp.loopexit invoke.cont11: ; preds = %for.body - %11 = call double @llvm.round.f64(double %call.i11) + %11 = call double @llvm.round.f64(double %call.i12) %conv13 = fptosi double %11 to i32 store i32 %conv13, ptr %ref.tmp, align 4 %call15 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapIiiSt4lessIiESaISt4pairIKiiEEEixEOi(ptr noundef nonnull align 8 dereferenceable(48) %hist, ptr noundef nonnull align 4 dereferenceable(4) %ref.tmp) @@ -239,17 +231,17 @@ invoke.cont14: ; preds = %invoke.cont11 %12 = load i32, ptr %call15, align 4 %inc = add nsw i32 %12, 1 store i32 %inc, ptr %call15, align 4 - %inc16 = add nuw nsw i32 %n.043, 1 + %inc16 = add nuw nsw i32 %n.034, 1 %exitcond.not = icmp eq i32 %inc16, 10000 br i1 %exitcond.not, label %for.end, label %for.body, !llvm.loop !10 -lpad.loopexit39: ; preds = %for.body.i.i.i.i - %lpad.loopexit40 = landingpad { ptr, i32 } +lpad.loopexit30: ; preds = %for.body.i.i.i.i + %lpad.loopexit31 = landingpad { ptr, i32 } cleanup br label %ehcleanup72 lpad.loopexit.split-lp: ; preds = %invoke.cont2, %invoke.cont3, %invoke.cont5 - %lpad.loopexit.split-lp41 = landingpad { ptr, i32 } + %lpad.loopexit.split-lp32 = landingpad { ptr, i32 } cleanup br label %ehcleanup72 @@ -259,12 +251,12 @@ lpad10.loopexit: ; preds = %for.body28, %invoke br label %ehcleanup71 lpad10.loopexit.split-lp.loopexit: ; preds = %for.body, %invoke.cont11 - %lpad.loopexit36 = landingpad { ptr, i32 } + %lpad.loopexit27 = landingpad { ptr, i32 } cleanup br label %ehcleanup71 lpad10.loopexit.split-lp.loopexit.split-lp: ; preds = %invoke.cont67, %invoke.cont65, %for.end62, %invoke.cont19, %invoke.cont17, %for.end - %lpad.loopexit.split-lp37 = landingpad { ptr, i32 } + %lpad.loopexit.split-lp28 = landingpad { ptr, i32 } cleanup br label %ehcleanup71 @@ -273,7 +265,7 @@ for.end: ; preds = %invoke.cont14 to label %invoke.cont17 unwind label %lpad10.loopexit.split-lp.loopexit.split-lp invoke.cont17: ; preds = %for.end - %call20 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %call18, i32 noundef %add17.i) + %call20 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %call18, i32 noundef %add17.i.i) to label %invoke.cont19 unwind label %lpad10.loopexit.split-lp.loopexit.split-lp invoke.cont19: ; preds = %invoke.cont17 @@ -282,14 +274,14 @@ invoke.cont19: ; preds = %invoke.cont17 invoke.cont21: ; preds = %invoke.cont19 %13 = load ptr, ptr %_M_left.i.i.i.i.i, align 8 - %cmp.i.not44 = icmp eq ptr %13, %10 - br i1 %cmp.i.not44, label %for.end62, label %for.body28 + %cmp.i.not35 = icmp eq ptr %13, %10 + br i1 %cmp.i.not35, label %for.end62, label %for.body28 for.body28: ; preds = %invoke.cont21, %invoke.cont58 - %__begin1.sroa.0.045 = phi ptr [ %call.i, %invoke.cont58 ], [ %13, %invoke.cont21 ] - %_M_storage.i.i = getelementptr inbounds %"struct.std::_Rb_tree_node", ptr %__begin1.sroa.0.045, i64 0, i32 1 + %__begin1.sroa.0.036 = phi ptr [ %call.i, %invoke.cont58 ], [ %13, %invoke.cont21 ] + %_M_storage.i.i = getelementptr inbounds %"struct.std::_Rb_tree_node", ptr %__begin1.sroa.0.036, i64 0, i32 1 %p.sroa.0.0.copyload = load i32, ptr %_M_storage.i.i, align 4 - %p.sroa.2.0.call29.sroa_idx = getelementptr inbounds %"struct.std::_Rb_tree_node", ptr %__begin1.sroa.0.045, i64 0, i32 1, i32 0, i64 4 + %p.sroa.2.0.call29.sroa_idx = getelementptr inbounds %"struct.std::_Rb_tree_node", ptr %__begin1.sroa.0.036, i64 0, i32 1, i32 0, i64 4 %p.sroa.2.0.copyload = load i32, ptr %p.sroa.2.0.call29.sroa_idx, align 4 %call31 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @_ZSt5fixedRSt8ios_base) to label %invoke.cont30 unwind label %lpad10.loopexit @@ -314,11 +306,11 @@ invoke.cont48: ; preds = %invoke.cont46 %div = sdiv i32 %p.sroa.2.0.copyload, 30 %conv51 = sext i32 %div to i64 call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp52) #15 - %call.i12 = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp50) + %call.i13 = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp50) to label %call.i.noexc unwind label %lpad53 call.i.noexc: ; preds = %invoke.cont48 - invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC1EPcRKS3_(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp50, ptr noundef %call.i12, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp52) + invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC1EPcRKS3_(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp50, ptr noundef %call.i13, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp52) to label %.noexc unwind label %lpad53 .noexc: ; preds = %call.i.noexc @@ -342,7 +334,7 @@ invoke.cont56: ; preds = %invoke.cont54 invoke.cont58: ; preds = %invoke.cont56 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp50) #15 call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp52) #15 - %call.i = call noundef ptr @_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base(ptr noundef nonnull %__begin1.sroa.0.045) #16 + %call.i = call noundef ptr @_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base(ptr noundef nonnull %__begin1.sroa.0.036) #16 %cmp.i.not = icmp eq ptr %call.i, %10 br i1 %cmp.i.not, label %for.end62, label %for.body28 @@ -368,9 +360,9 @@ for.end62: ; preds = %invoke.cont58, %inv invoke.cont63: ; preds = %for.end62 %17 = load i64, ptr %rng, align 8 - %cmp.i13 = icmp eq i64 %17, %rng_checkpoint.sroa.0.0.copyload + %cmp.i14 = icmp eq i64 %17, %rng_checkpoint.sroa.0.0.copyload %18 = load i64, ptr %state_.i.i.i, align 8 - br i1 %cmp.i13, label %if.then.i, label %if.else.i + br i1 %cmp.i14, label %if.then.i, label %if.else.i if.then.i: ; preds = %invoke.cont63 %cmp.i.i.i = icmp eq i64 %rng_checkpoint.sroa.0.0.copyload, 0 @@ -380,34 +372,34 @@ if.then.i: ; preds = %invoke.cont63 while.body.preheader.i.i.i: ; preds = %if.then.i %cond.i.i.i = select i1 %cmp.i.i.i, i64 4, i64 1 - br label %while.body.i.i.i - -while.body.i.i.i: ; preds = %while.body.i.i.i, %while.body.preheader.i.i.i - %20 = phi i64 [ %22, %while.body.i.i.i ], [ %19, %while.body.preheader.i.i.i ] - %distance.021.i.i.i = phi i64 [ %distance.1.i.i.i, %while.body.i.i.i ], [ 0, %while.body.preheader.i.i.i ] - %the_bit.020.i.i.i = phi i64 [ %shl.i.i.i, %while.body.i.i.i ], [ %cond.i.i.i, %while.body.preheader.i.i.i ] - %cur_state.addr.019.i.i.i = phi i64 [ %cur_state.addr.1.i.i.i, %while.body.i.i.i ], [ %rng_checkpoint.sroa.2.0.copyload, %while.body.preheader.i.i.i ] - %cur_mult.addr.018.i.i.i = phi i64 [ %mul8.i.i.i, %while.body.i.i.i ], [ 6364136223846793005, %while.body.preheader.i.i.i ] - %cur_plus.addr.017.i.i.i = phi i64 [ %mul7.i.i.i, %while.body.i.i.i ], [ %rng_checkpoint.sroa.0.0.copyload, %while.body.preheader.i.i.i ] + br label %while.body.i.i.i15 + +while.body.i.i.i15: ; preds = %while.body.i.i.i15, %while.body.preheader.i.i.i + %20 = phi i64 [ %22, %while.body.i.i.i15 ], [ %19, %while.body.preheader.i.i.i ] + %distance.021.i.i.i = phi i64 [ %distance.1.i.i.i, %while.body.i.i.i15 ], [ 0, %while.body.preheader.i.i.i ] + %the_bit.020.i.i.i = phi i64 [ %shl.i.i.i, %while.body.i.i.i15 ], [ %cond.i.i.i, %while.body.preheader.i.i.i ] + %cur_state.addr.019.i.i.i = phi i64 [ %cur_state.addr.1.i.i.i, %while.body.i.i.i15 ], [ %rng_checkpoint.sroa.2.0.copyload, %while.body.preheader.i.i.i ] + %cur_mult.addr.018.i.i.i = phi i64 [ %mul8.i.i.i, %while.body.i.i.i15 ], [ 6364136223846793005, %while.body.preheader.i.i.i ] + %cur_plus.addr.017.i.i.i = phi i64 [ %mul7.i.i.i18, %while.body.i.i.i15 ], [ %rng_checkpoint.sroa.0.0.copyload, %while.body.preheader.i.i.i ] %21 = and i64 %the_bit.020.i.i.i, %20 %cmp5.not.i.i.i = icmp eq i64 %21, 0 - %mul.i.i.i = mul i64 %cur_mult.addr.018.i.i.i, %cur_state.addr.019.i.i.i - %add.i.i.i14 = add i64 %mul.i.i.i, %cur_plus.addr.017.i.i.i - %cur_state.addr.1.i.i.i = select i1 %cmp5.not.i.i.i, i64 %cur_state.addr.019.i.i.i, i64 %add.i.i.i14 + %mul.i.i.i16 = mul i64 %cur_mult.addr.018.i.i.i, %cur_state.addr.019.i.i.i + %add.i.i.i17 = add i64 %mul.i.i.i16, %cur_plus.addr.017.i.i.i + %cur_state.addr.1.i.i.i = select i1 %cmp5.not.i.i.i, i64 %cur_state.addr.019.i.i.i, i64 %add.i.i.i17 %or.i.i.i = select i1 %cmp5.not.i.i.i, i64 0, i64 %the_bit.020.i.i.i %distance.1.i.i.i = or i64 %or.i.i.i, %distance.021.i.i.i %shl.i.i.i = shl i64 %the_bit.020.i.i.i, 1 %add6.i.i.i = add i64 %cur_mult.addr.018.i.i.i, 1 - %mul7.i.i.i = mul i64 %add6.i.i.i, %cur_plus.addr.017.i.i.i + %mul7.i.i.i18 = mul i64 %add6.i.i.i, %cur_plus.addr.017.i.i.i %mul8.i.i.i = mul i64 %cur_mult.addr.018.i.i.i, %cur_mult.addr.018.i.i.i %22 = xor i64 %cur_state.addr.1.i.i.i, %18 %cmp2.not.i.i.i = icmp eq i64 %22, 0 - br i1 %cmp2.not.i.i.i, label %_ZNK10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE8distanceEmm.exit.i, label %while.body.i.i.i, !llvm.loop !11 + br i1 %cmp2.not.i.i.i, label %_ZNK10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE8distanceEmm.exit.i, label %while.body.i.i.i15, !llvm.loop !11 -_ZNK10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE8distanceEmm.exit.i: ; preds = %while.body.i.i.i, %if.then.i - %distance.0.lcssa.i.i.i = phi i64 [ 0, %if.then.i ], [ %distance.1.i.i.i, %while.body.i.i.i ] - %shr.i.i.i = lshr i64 %distance.0.lcssa.i.i.i, 2 - %cond10.i.i.i = select i1 %cmp.i.i.i, i64 %shr.i.i.i, i64 %distance.0.lcssa.i.i.i +_ZNK10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE8distanceEmm.exit.i: ; preds = %while.body.i.i.i15, %if.then.i + %distance.0.lcssa.i.i.i = phi i64 [ 0, %if.then.i ], [ %distance.1.i.i.i, %while.body.i.i.i15 ] + %shr.i.i.i19 = lshr i64 %distance.0.lcssa.i.i.i, 2 + %cond10.i.i.i = select i1 %cmp.i.i.i, i64 %shr.i.i.i19, i64 %distance.0.lcssa.i.i.i br label %invoke.cont65 if.else.i: ; preds = %invoke.cont63 @@ -469,9 +461,9 @@ terminate.lpad.i.i: ; preds = %invoke.cont69 _ZNSt3mapIiiSt4lessIiESaISt4pairIKiiEEED2Ev.exit: ; preds = %invoke.cont69 invoke void @_ZNSt13random_device7_M_finiEv(ptr noundef nonnull align 8 dereferenceable(5000) %seed_source) - to label %_ZN10pcg_extras13seed_seq_fromISt13random_deviceED2Ev.exit unwind label %terminate.lpad.i.i15 + to label %_ZN10pcg_extras13seed_seq_fromISt13random_deviceED2Ev.exit unwind label %terminate.lpad.i.i20 -terminate.lpad.i.i15: ; preds = %_ZNSt3mapIiiSt4lessIiESaISt4pairIKiiEEED2Ev.exit +terminate.lpad.i.i20: ; preds = %_ZNSt3mapIiiSt4lessIiESaISt4pairIKiiEEED2Ev.exit %33 = landingpad { ptr, i32 } catch ptr null %34 = extractvalue { ptr, i32 } %33, 0 @@ -482,23 +474,23 @@ _ZN10pcg_extras13seed_seq_fromISt13random_deviceED2Ev.exit: ; preds = %_ZNSt3map ret i32 0 ehcleanup71: ; preds = %lpad10.loopexit, %lpad10.loopexit.split-lp.loopexit.split-lp, %lpad10.loopexit.split-lp.loopexit, %ehcleanup - %.pn6 = phi { ptr, i32 } [ %.pn, %ehcleanup ], [ %lpad.loopexit, %lpad10.loopexit ], [ %lpad.loopexit36, %lpad10.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp37, %lpad10.loopexit.split-lp.loopexit.split-lp ] + %.pn6 = phi { ptr, i32 } [ %.pn, %ehcleanup ], [ %lpad.loopexit, %lpad10.loopexit ], [ %lpad.loopexit27, %lpad10.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp28, %lpad10.loopexit.split-lp.loopexit.split-lp ] call void @_ZNSt3mapIiiSt4lessIiESaISt4pairIKiiEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %hist) #15 br label %ehcleanup72 -ehcleanup72: ; preds = %lpad.loopexit39, %lpad.loopexit.split-lp, %ehcleanup71 - %.pn6.pn = phi { ptr, i32 } [ %.pn6, %ehcleanup71 ], [ %lpad.loopexit40, %lpad.loopexit39 ], [ %lpad.loopexit.split-lp41, %lpad.loopexit.split-lp ] +ehcleanup72: ; preds = %lpad.loopexit30, %lpad.loopexit.split-lp, %ehcleanup71 + %.pn6.pn = phi { ptr, i32 } [ %.pn6, %ehcleanup71 ], [ %lpad.loopexit31, %lpad.loopexit30 ], [ %lpad.loopexit.split-lp32, %lpad.loopexit.split-lp ] invoke void @_ZNSt13random_device7_M_finiEv(ptr noundef nonnull align 8 dereferenceable(5000) %seed_source) - to label %_ZN10pcg_extras13seed_seq_fromISt13random_deviceED2Ev.exit17 unwind label %terminate.lpad.i.i16 + to label %_ZN10pcg_extras13seed_seq_fromISt13random_deviceED2Ev.exit22 unwind label %terminate.lpad.i.i21 -terminate.lpad.i.i16: ; preds = %ehcleanup72 +terminate.lpad.i.i21: ; preds = %ehcleanup72 %35 = landingpad { ptr, i32 } catch ptr null %36 = extractvalue { ptr, i32 } %35, 0 call void @__clang_call_terminate(ptr %36) #17 unreachable -_ZN10pcg_extras13seed_seq_fromISt13random_deviceED2Ev.exit17: ; preds = %ehcleanup72 +_ZN10pcg_extras13seed_seq_fromISt13random_deviceED2Ev.exit22: ; preds = %ehcleanup72 resume { ptr, i32 } %.pn6.pn } @@ -857,7 +849,7 @@ if.then: ; preds = %entry %2 = load double, ptr %_M_saved, align 8 br label %if.end -do.body: ; preds = %do.body.preheader, %_ZNSt8__detail8_AdaptorIN10pcg_detail6engineIjmNS1_12xsh_rr_mixinIjmEELb1ENS1_15specific_streamImEENS1_18default_multiplierImEEEEdEclEv.exit48 +do.body: ; preds = %do.body.preheader, %_ZNSt8__detail8_AdaptorIN10pcg_detail6engineIjmNS1_12xsh_rr_mixinIjmEELb1ENS1_15specific_streamImEENS1_18default_multiplierImEEEEdEclEv.exit44 %call.i.i.i = tail call noundef x86_fp80 @logl(x86_fp80 noundef 0xK401F8000000000000000) #15 %call.i8.i.i = tail call noundef x86_fp80 @logl(x86_fp80 noundef 0xK40008000000000000000) #15 %div.i.i = fdiv x86_fp80 %call.i.i.i, %call.i8.i.i @@ -882,11 +874,7 @@ for.body.i.i: ; preds = %for.body.i.i, %do.b %5 = lshr i64 %add.i.i.i1112.i.i, 27 %shr7.i.i.i.i = xor i64 %4, %5 %conv8.i.i.i.i = trunc i64 %shr7.i.i.i.i to i32 - %shr.i.i.i.i.i = lshr i32 %conv8.i.i.i.i, %conv5.i.i.i.i - %sub.i.i.i.i.i = sub nsw i32 0, %conv5.i.i.i.i - %and.i.i.i.i.i = and i32 %sub.i.i.i.i.i, 31 - %shl.i.i.i.i.i = shl i32 %conv8.i.i.i.i, %and.i.i.i.i.i - %or.i.i.i.i.i = or i32 %shl.i.i.i.i.i, %shr.i.i.i.i.i + %or.i.i.i.i.i = tail call noundef i32 @llvm.fshr.i32(i32 %conv8.i.i.i.i, i32 %conv8.i.i.i.i, i32 %conv5.i.i.i.i) %conv14.i.i = uitofp i32 %or.i.i.i.i.i to double %6 = tail call double @llvm.fmuladd.f64(double %conv14.i.i, double %__tmp.014.i.i, double %__sum.013.i.i) %conv15.i.i = fpext double %__tmp.014.i.i to x86_fp80 @@ -920,8 +908,8 @@ _ZNSt8__detail8_AdaptorIN10pcg_detail6engineIjmNS1_12xsh_rr_mixinIjmEELb1ENS1_15 br label %for.body.i.i20 for.body.i.i20: ; preds = %for.body.i.i20, %_ZNSt8__detail8_AdaptorIN10pcg_detail6engineIjmNS1_12xsh_rr_mixinIjmEELb1ENS1_15specific_streamImEENS1_18default_multiplierImEEEEdEclEv.exit - %__k.015.i.i21 = phi i64 [ %spec.select.i.i17, %_ZNSt8__detail8_AdaptorIN10pcg_detail6engineIjmNS1_12xsh_rr_mixinIjmEELb1ENS1_15specific_streamImEENS1_18default_multiplierImEEEEdEclEv.exit ], [ %dec.i.i40, %for.body.i.i20 ] - %__tmp.014.i.i22 = phi double [ 1.000000e+00, %_ZNSt8__detail8_AdaptorIN10pcg_detail6engineIjmNS1_12xsh_rr_mixinIjmEELb1ENS1_15specific_streamImEENS1_18default_multiplierImEEEEdEclEv.exit ], [ %conv16.i.i39, %for.body.i.i20 ] + %__k.015.i.i21 = phi i64 [ %spec.select.i.i17, %_ZNSt8__detail8_AdaptorIN10pcg_detail6engineIjmNS1_12xsh_rr_mixinIjmEELb1ENS1_15specific_streamImEENS1_18default_multiplierImEEEEdEclEv.exit ], [ %dec.i.i36, %for.body.i.i20 ] + %__tmp.014.i.i22 = phi double [ 1.000000e+00, %_ZNSt8__detail8_AdaptorIN10pcg_detail6engineIjmNS1_12xsh_rr_mixinIjmEELb1ENS1_15specific_streamImEENS1_18default_multiplierImEEEEdEclEv.exit ], [ %conv16.i.i35, %for.body.i.i20 ] %__sum.013.i.i23 = phi double [ 0.000000e+00, %_ZNSt8__detail8_AdaptorIN10pcg_detail6engineIjmNS1_12xsh_rr_mixinIjmEELb1ENS1_15specific_streamImEENS1_18default_multiplierImEEEEdEclEv.exit ], [ %10, %for.body.i.i20 ] %add.i.i.i1112.i.i24 = phi i64 [ %state_.i.i.promoted.i.i19, %_ZNSt8__detail8_AdaptorIN10pcg_detail6engineIjmNS1_12xsh_rr_mixinIjmEELb1ENS1_15specific_streamImEENS1_18default_multiplierImEEEEdEclEv.exit ], [ %add.i.i.i.i.i26, %for.body.i.i20 ] %mul.i.i.i.i.i25 = mul i64 %add.i.i.i1112.i.i24, 6364136223846793005 @@ -932,34 +920,30 @@ for.body.i.i20: ; preds = %for.body.i.i20, %_Z %9 = lshr i64 %add.i.i.i1112.i.i24, 27 %shr7.i.i.i.i29 = xor i64 %8, %9 %conv8.i.i.i.i30 = trunc i64 %shr7.i.i.i.i29 to i32 - %shr.i.i.i.i.i31 = lshr i32 %conv8.i.i.i.i30, %conv5.i.i.i.i28 - %sub.i.i.i.i.i32 = sub nsw i32 0, %conv5.i.i.i.i28 - %and.i.i.i.i.i33 = and i32 %sub.i.i.i.i.i32, 31 - %shl.i.i.i.i.i34 = shl i32 %conv8.i.i.i.i30, %and.i.i.i.i.i33 - %or.i.i.i.i.i35 = or i32 %shl.i.i.i.i.i34, %shr.i.i.i.i.i31 - %conv14.i.i36 = uitofp i32 %or.i.i.i.i.i35 to double - %10 = tail call double @llvm.fmuladd.f64(double %conv14.i.i36, double %__tmp.014.i.i22, double %__sum.013.i.i23) - %conv15.i.i37 = fpext double %__tmp.014.i.i22 to x86_fp80 - %mul.i.i38 = fmul x86_fp80 %conv15.i.i37, 0xK401F8000000000000000 - %conv16.i.i39 = fptrunc x86_fp80 %mul.i.i38 to double - %dec.i.i40 = add i64 %__k.015.i.i21, -1 - %cmp.not.i.i41 = icmp eq i64 %dec.i.i40, 0 - br i1 %cmp.not.i.i41, label %for.end.i.i42, label %for.body.i.i20, !llvm.loop !14 - -for.end.i.i42: ; preds = %for.body.i.i20 + %or.i.i.i.i.i31 = tail call noundef i32 @llvm.fshr.i32(i32 %conv8.i.i.i.i30, i32 %conv8.i.i.i.i30, i32 %conv5.i.i.i.i28) + %conv14.i.i32 = uitofp i32 %or.i.i.i.i.i31 to double + %10 = tail call double @llvm.fmuladd.f64(double %conv14.i.i32, double %__tmp.014.i.i22, double %__sum.013.i.i23) + %conv15.i.i33 = fpext double %__tmp.014.i.i22 to x86_fp80 + %mul.i.i34 = fmul x86_fp80 %conv15.i.i33, 0xK401F8000000000000000 + %conv16.i.i35 = fptrunc x86_fp80 %mul.i.i34 to double + %dec.i.i36 = add i64 %__k.015.i.i21, -1 + %cmp.not.i.i37 = icmp eq i64 %dec.i.i36, 0 + br i1 %cmp.not.i.i37, label %for.end.i.i38, label %for.body.i.i20, !llvm.loop !14 + +for.end.i.i38: ; preds = %for.body.i.i20 %11 = tail call double @llvm.fmuladd.f64(double %__ret.0.i.i, double 2.000000e+00, double -1.000000e+00) store i64 %add.i.i.i.i.i26, ptr %state_.i.i.i.i, align 8 - %div17.i.i43 = fdiv double %10, %conv16.i.i39 - %cmp18.i.i44 = fcmp ult double %div17.i.i43, 1.000000e+00 - br i1 %cmp18.i.i44, label %_ZNSt8__detail8_AdaptorIN10pcg_detail6engineIjmNS1_12xsh_rr_mixinIjmEELb1ENS1_15specific_streamImEENS1_18default_multiplierImEEEEdEclEv.exit48, label %if.then.i.i45 + %div17.i.i39 = fdiv double %10, %conv16.i.i35 + %cmp18.i.i40 = fcmp ult double %div17.i.i39, 1.000000e+00 + br i1 %cmp18.i.i40, label %_ZNSt8__detail8_AdaptorIN10pcg_detail6engineIjmNS1_12xsh_rr_mixinIjmEELb1ENS1_15specific_streamImEENS1_18default_multiplierImEEEEdEclEv.exit44, label %if.then.i.i41 -if.then.i.i45: ; preds = %for.end.i.i42 - %call20.i.i46 = tail call double @nextafter(double noundef 1.000000e+00, double noundef 0.000000e+00) #15 - br label %_ZNSt8__detail8_AdaptorIN10pcg_detail6engineIjmNS1_12xsh_rr_mixinIjmEELb1ENS1_15specific_streamImEENS1_18default_multiplierImEEEEdEclEv.exit48 +if.then.i.i41: ; preds = %for.end.i.i38 + %call20.i.i42 = tail call double @nextafter(double noundef 1.000000e+00, double noundef 0.000000e+00) #15 + br label %_ZNSt8__detail8_AdaptorIN10pcg_detail6engineIjmNS1_12xsh_rr_mixinIjmEELb1ENS1_15specific_streamImEENS1_18default_multiplierImEEEEdEclEv.exit44 -_ZNSt8__detail8_AdaptorIN10pcg_detail6engineIjmNS1_12xsh_rr_mixinIjmEELb1ENS1_15specific_streamImEENS1_18default_multiplierImEEEEdEclEv.exit48: ; preds = %for.end.i.i42, %if.then.i.i45 - %__ret.0.i.i47 = phi double [ %call20.i.i46, %if.then.i.i45 ], [ %div17.i.i43, %for.end.i.i42 ] - %12 = tail call double @llvm.fmuladd.f64(double %__ret.0.i.i47, double 2.000000e+00, double -1.000000e+00) +_ZNSt8__detail8_AdaptorIN10pcg_detail6engineIjmNS1_12xsh_rr_mixinIjmEELb1ENS1_15specific_streamImEENS1_18default_multiplierImEEEEdEclEv.exit44: ; preds = %for.end.i.i38, %if.then.i.i41 + %__ret.0.i.i43 = phi double [ %call20.i.i42, %if.then.i.i41 ], [ %div17.i.i39, %for.end.i.i38 ] + %12 = tail call double @llvm.fmuladd.f64(double %__ret.0.i.i43, double 2.000000e+00, double -1.000000e+00) %mul4 = fmul double %12, %12 %13 = tail call double @llvm.fmuladd.f64(double %11, double %11, double %mul4) %cmp = fcmp ogt double %13, 1.000000e+00 @@ -967,7 +951,7 @@ _ZNSt8__detail8_AdaptorIN10pcg_detail6engineIjmNS1_12xsh_rr_mixinIjmEELb1ENS1_15 %14 = or i1 %cmp, %cmp5 br i1 %14, label %do.body, label %do.end, !llvm.loop !15 -do.end: ; preds = %_ZNSt8__detail8_AdaptorIN10pcg_detail6engineIjmNS1_12xsh_rr_mixinIjmEELb1ENS1_15specific_streamImEENS1_18default_multiplierImEEEEdEclEv.exit48 +do.end: ; preds = %_ZNSt8__detail8_AdaptorIN10pcg_detail6engineIjmNS1_12xsh_rr_mixinIjmEELb1ENS1_15specific_streamImEENS1_18default_multiplierImEEEEdEclEv.exit44 %call6 = tail call double @log(double noundef %13) #15 %mul = fmul double %call6, -2.000000e+00 %div = fdiv double %mul, %13 @@ -1239,14 +1223,17 @@ entry: ret void } +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.fshr.i32(i32, i32, i32) #13 + ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #13 +declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #14 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #13 +declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #14 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umax.i64(i64, i64) #14 +declare i64 @llvm.umax.i64(i64, i64) #13 attributes #0 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } @@ -1261,8 +1248,8 @@ attributes #9 = { mustprogress nofree nounwind willreturn memory(write) "frame-p attributes #10 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #11 = { mustprogress nofree nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #12 = { uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #13 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #14 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #13 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #14 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } attributes #15 = { nounwind } attributes #16 = { nounwind willreturn memory(read) } attributes #17 = { noreturn nounwind } diff --git a/bench/pcg-cpp/optimized/make-partytrick.cpp.ll b/bench/pcg-cpp/optimized/make-partytrick.cpp.ll index 96e93fbd17d..4d833ad9a4d 100644 --- a/bench/pcg-cpp/optimized/make-partytrick.cpp.ll +++ b/bench/pcg-cpp/optimized/make-partytrick.cpp.ll @@ -146,7 +146,7 @@ terminate.lpad.i.i: ; preds = %invoke.cont %3 = landingpad { ptr, i32 } catch ptr null %4 = extractvalue { ptr, i32 } %3, 0 - call void @__clang_call_terminate(ptr %4) #9 + call void @__clang_call_terminate(ptr %4) #10 unreachable for.body: ; preds = %invoke.cont, %for.inc @@ -165,17 +165,17 @@ if.then: ; preds = %for.body br label %if.end9.sink.split lpad.loopexit: ; preds = %for.body.i.i.i.i - %lpad.loopexit19 = landingpad { ptr, i32 } + %lpad.loopexit18 = landingpad { ptr, i32 } cleanup br label %lpad lpad.loopexit.split-lp: ; preds = %for.body.i.i.i.i.i - %lpad.loopexit.split-lp20 = landingpad { ptr, i32 } + %lpad.loopexit.split-lp19 = landingpad { ptr, i32 } cleanup br label %lpad lpad: ; preds = %lpad.loopexit.split-lp, %lpad.loopexit - %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit19, %lpad.loopexit ], [ %lpad.loopexit.split-lp20, %lpad.loopexit.split-lp ] + %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit18, %lpad.loopexit ], [ %lpad.loopexit.split-lp19, %lpad.loopexit.split-lp ] invoke void @_ZNSt13random_device7_M_finiEv(ptr noundef nonnull align 8 dereferenceable(5000) %ref.tmp) to label %_ZN10pcg_extras13seed_seq_fromISt13random_deviceED2Ev.exit13 unwind label %terminate.lpad.i.i12 @@ -183,7 +183,7 @@ terminate.lpad.i.i12: ; preds = %lpad %7 = landingpad { ptr, i32 } catch ptr null %8 = extractvalue { ptr, i32 } %7, 0 - call void @__clang_call_terminate(ptr %8) #9 + call void @__clang_call_terminate(ptr %8) #10 unreachable _ZN10pcg_extras13seed_seq_fromISt13random_deviceED2Ev.exit13: ; preds = %lpad @@ -229,11 +229,7 @@ _ZN10pcg_detail8extendedILh6ELh16ENS_6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15sp %14 = lshr i64 %10, 27 %shr7.i.i = xor i64 %13, %14 %conv8.i.i = trunc i64 %shr7.i.i to i32 - %shr.i.i.i = lshr i32 %conv8.i.i, %conv5.i.i - %sub.i.i.i = sub nsw i32 0, %conv5.i.i - %and.i.i.i = and i32 %sub.i.i.i, 31 - %shl.i.i.i = shl i32 %conv8.i.i, %and.i.i.i - %or.i.i.i = or i32 %shl.i.i.i, %shr.i.i.i + %or.i.i.i = call noundef i32 @llvm.fshr.i32(i32 %conv8.i.i, i32 %conv8.i.i, i32 %conv5.i.i) %xor.i = xor i32 %or.i.i.i, %11 %15 = trunc i64 %indvars.iv to i32 %rem = and i32 %15, 3 @@ -263,19 +259,15 @@ _ZN10pcg_detail8extendedILh6ELh16ENS_6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15sp %18 = load i64, ptr %rng, align 8 %add.i.i.i.i16 = add i64 %18, %mul.i.i.i.i store i64 %add.i.i.i.i16, ptr %state_.i.i.i.i, align 8 - %shr.i.i.i17 = lshr i64 %17, 59 - %conv5.i.i.i = trunc i64 %shr.i.i.i17 to i32 + %shr.i.i.i = lshr i64 %17, 59 + %conv5.i.i.i = trunc i64 %shr.i.i.i to i32 %19 = lshr i64 %17, 45 %20 = lshr i64 %17, 27 %shr7.i.i.i = xor i64 %19, %20 %conv8.i.i.i = trunc i64 %shr7.i.i.i to i32 - %shr.i.i.i.i = lshr i32 %conv8.i.i.i, %conv5.i.i.i - %sub.i.i.i.i = sub nsw i32 0, %conv5.i.i.i - %and.i.i.i.i = and i32 %sub.i.i.i.i, 31 - %shl.i.i.i.i = shl i32 %conv8.i.i.i, %and.i.i.i.i - %or.i.i.i.i = or i32 %shl.i.i.i.i, %shr.i.i.i.i - %xor.i18 = xor i32 %or.i.i.i.i, %or - store i32 %xor.i18, ptr %arrayidx.i.i15, align 4 + %or.i.i.i.i = call noundef i32 @llvm.fshr.i32(i32 %conv8.i.i.i, i32 %conv8.i.i.i, i32 %conv5.i.i.i) + %xor.i17 = xor i32 %or.i.i.i.i, %or + store i32 %xor.i17, ptr %arrayidx.i.i15, align 4 %cmp16.not = icmp eq i32 %rem, 3 br i1 %cmp16.not, label %for.inc, label %if.then17 @@ -505,8 +497,8 @@ declare void @_ZNSt13random_device7_M_finiEv(ptr noundef nonnull align 8 derefer ; Function Attrs: noreturn nounwind uwtable define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) local_unnamed_addr #5 comdat { - %2 = tail call ptr @__cxa_begin_catch(ptr %0) #10 - tail call void @_ZSt9terminatev() #9 + %2 = tail call ptr @__cxa_begin_catch(ptr %0) #11 + tail call void @_ZSt9terminatev() #10 unreachable } @@ -519,7 +511,7 @@ define linkonce_odr dso_local void @_ZNSt13random_deviceC2Ev(ptr noundef nonnull entry: %ref.tmp = alloca %"class.std::__cxx11::basic_string", align 8 %ref.tmp2 = alloca %"class.std::allocator", align 1 - call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp2) #10 + call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp2) #11 %call.i2 = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) to label %call.i.noexc unwind label %lpad @@ -534,7 +526,7 @@ call.i.noexc: ; preds = %entry lpad.i: ; preds = %.noexc %0 = landingpad { ptr, i32 } cleanup - call void @_ZNSaIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp) #10 + call void @_ZNSaIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp) #11 br label %ehcleanup invoke.cont: ; preds = %.noexc @@ -542,8 +534,8 @@ invoke.cont: ; preds = %.noexc to label %invoke.cont4 unwind label %lpad3 invoke.cont4: ; preds = %invoke.cont - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) #10 - call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp2) #10 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) #11 + call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp2) #11 ret void lpad: ; preds = %call.i.noexc, %entry @@ -554,12 +546,12 @@ lpad: ; preds = %call.i.noexc, %entr lpad3: ; preds = %invoke.cont %2 = landingpad { ptr, i32 } cleanup - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) #10 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) #11 br label %ehcleanup ehcleanup: ; preds = %lpad, %lpad.i, %lpad3 %.pn = phi { ptr, i32 } [ %2, %lpad3 ], [ %1, %lpad ], [ %0, %lpad.i ] - call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp2) #10 + call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp2) #11 resume { ptr, i32 } %.pn } @@ -605,7 +597,7 @@ terminate.lpad.i: ; preds = %if.else %1 = landingpad { ptr, i32 } catch ptr null %2 = extractvalue { ptr, i32 } %1, 0 - tail call void @__clang_call_terminate(ptr %2) #9 + tail call void @__clang_call_terminate(ptr %2) #10 unreachable if.end: ; preds = %if.else, %if.then @@ -614,7 +606,7 @@ if.end: ; preds = %if.else, %if.then to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %if.end - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcPKcS7_(ptr noundef %call4, ptr noundef %__beg, ptr noundef %__end) #10 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcPKcS7_(ptr noundef %call4, ptr noundef %__beg, ptr noundef %__end) #11 store ptr null, ptr %__guard, align 8 %3 = load i64, ptr %__dnew, align 8 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_set_lengthEm(ptr noundef nonnull align 8 dereferenceable(32) %this, i64 noundef %3) @@ -626,7 +618,7 @@ _ZZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_ lpad: ; preds = %invoke.cont, %if.end %4 = landingpad { ptr, i32 } cleanup - call void @_ZZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tagEN6_GuardD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %__guard) #10 + call void @_ZZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tagEN6_GuardD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %__guard) #11 resume { ptr, i32 } %4 } @@ -661,7 +653,7 @@ terminate.lpad: ; preds = %if.then %1 = landingpad { ptr, i32 } catch ptr null %2 = extractvalue { ptr, i32 } %1, 0 - tail call void @__clang_call_terminate(ptr %2) #9 + tail call void @__clang_call_terminate(ptr %2) #10 unreachable } @@ -781,7 +773,7 @@ if.end: ; preds = %entry %shr8 = lshr i32 %x, %conv %xor9 = xor i32 %shr8, %x %and10 = and i32 %notmask, %xor9 - %or = or i32 %and10, %and + %or = or disjoint i32 %and10, %and %sub13 = sub nsw i32 %conv1, %conv %notmask22 = shl nsw i32 -1, %sub13 %sub15 = xor i32 %notmask22, -1 @@ -789,7 +781,7 @@ if.end: ; preds = %entry %conv20 = trunc i32 %sub13 to i8 %call = tail call noundef i32 @_ZN10pcg_extras10unxorshiftIjEET_S1_hh(i32 noundef %and16, i8 noundef zeroext %conv20, i8 noundef zeroext %shift) %and21 = and i32 %call, %sub6 - %or22 = or i32 %and21, %and10 + %or22 = or disjoint i32 %and21, %and10 br label %common.ret23 } @@ -881,15 +873,18 @@ declare noundef signext i8 @_ZNSt9basic_iosIcSt11char_traitsIcEE4fillEc(ptr noun define internal void @_GLOBAL__sub_I_make_partytrick.cpp() #7 section ".text.startup" { entry: tail call void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1) @_ZStL8__ioinit) - %0 = tail call i32 @__cxa_atexit(ptr nonnull @_ZNSt8ios_base4InitD1Ev, ptr nonnull @_ZStL8__ioinit, ptr nonnull @__dso_handle) #10 + %0 = tail call i32 @__cxa_atexit(ptr nonnull @_ZNSt8ios_base4InitD1Ev, ptr nonnull @_ZStL8__ioinit, ptr nonnull @__dso_handle) #11 ret void } +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.fshr.i32(i32, i32, i32) #8 + ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #8 +declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #9 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #8 +declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #9 attributes #0 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } @@ -899,9 +894,10 @@ attributes #4 = { mustprogress uwtable "frame-pointer"="all" "min-legal-vector-w attributes #5 = { noreturn nounwind uwtable "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #6 = { mustprogress nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #7 = { uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #8 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #9 = { noreturn nounwind } -attributes #10 = { nounwind } +attributes #8 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #9 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #10 = { noreturn nounwind } +attributes #11 = { nounwind } !llvm.module.flags = !{!0, !1, !2, !3, !4} diff --git a/bench/pcg-cpp/optimized/pcg-demo.cpp.ll b/bench/pcg-cpp/optimized/pcg-demo.cpp.ll index 86f788dc257..6db99e7b4ae 100644 --- a/bench/pcg-cpp/optimized/pcg-demo.cpp.ll +++ b/bench/pcg-cpp/optimized/pcg-demo.cpp.ll @@ -97,28 +97,28 @@ entry: land.lhs.true: ; preds = %entry %incdec.ptr = getelementptr inbounds ptr, ptr %argv, i64 1 %0 = load ptr, ptr %incdec.ptr, align 8 - %call = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(3) @.str) #12 + %call = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(3) @.str) #13 %cmp1 = icmp eq i32 %call, 0 br i1 %cmp1, label %if.end, label %if.end8 if.end: ; preds = %land.lhs.true %cmp4.not = icmp eq i32 %argc, 2 - br i1 %cmp4.not, label %if.then9, label %if.end8.thread275 + br i1 %cmp4.not, label %if.then9, label %if.end8.thread259 -if.end8.thread275: ; preds = %if.end +if.end8.thread259: ; preds = %if.end %incdec.ptr2 = getelementptr inbounds ptr, ptr %argv, i64 2 %.pre = load ptr, ptr %incdec.ptr2, align 8 - %call7276 = tail call i32 @atoi(ptr nocapture noundef %.pre) #12 + %call7260 = tail call i32 @atoi(ptr nocapture noundef %.pre) #13 br label %if.then9 if.end8: ; preds = %land.lhs.true - %call7 = tail call i32 @atoi(ptr nocapture noundef %0) #12 + %call7 = tail call i32 @atoi(ptr nocapture noundef %0) #13 br label %if.end10.sink.split -if.then9: ; preds = %if.end, %if.end8.thread275 - %rounds.0251 = phi i32 [ %call7276, %if.end8.thread275 ], [ 5, %if.end ] - %state_.i277 = getelementptr inbounds %"class.pcg_detail::engine", ptr %rng, i64 0, i32 1 - store i64 1753877967969059832, ptr %state_.i277, align 8 +if.then9: ; preds = %if.end, %if.end8.thread259 + %rounds.0235 = phi i32 [ %call7260, %if.end8.thread259 ], [ 5, %if.end ] + %state_.i261 = getelementptr inbounds %"class.pcg_detail::engine", ptr %rng, i64 0, i32 1 + store i64 1753877967969059832, ptr %state_.i261, align 8 call void @_ZNSt13random_deviceC2Ev(ptr noundef nonnull align 8 dereferenceable(5000) %ref.tmp) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %seeddata.i.i) store i64 1442695040888963407, ptr %rng, align 8 @@ -175,7 +175,7 @@ invoke.cont: ; preds = %for.end.i.i.i.i.i.i %add.i.i.i.i = add i64 %or.i.i.i.i.i, %2 %mul.i.i.i.i.i = mul i64 %add.i.i.i.i, 6364136223846793005 %add.i.i.i.i.i = add i64 %mul.i.i.i.i.i, %or.i.i.i.i.i - store i64 %add.i.i.i.i.i, ptr %state_.i277, align 8 + store i64 %add.i.i.i.i.i, ptr %state_.i261, align 8 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %seeddata.i.i) invoke void @_ZNSt13random_device7_M_finiEv(ptr noundef nonnull align 8 dereferenceable(5000) %ref.tmp) to label %if.end10 unwind label %terminate.lpad.i.i @@ -184,7 +184,7 @@ terminate.lpad.i.i: ; preds = %invoke.cont %4 = landingpad { ptr, i32 } catch ptr null %5 = extractvalue { ptr, i32 } %4, 0 - call void @__clang_call_terminate(ptr %5) #13 + call void @__clang_call_terminate(ptr %5) #14 unreachable lpad: ; preds = %for.body.i.i.i.i.i @@ -197,22 +197,22 @@ terminate.lpad.i.i25: ; preds = %lpad %7 = landingpad { ptr, i32 } catch ptr null %8 = extractvalue { ptr, i32 } %7, 0 - call void @__clang_call_terminate(ptr %8) #13 + call void @__clang_call_terminate(ptr %8) #14 unreachable _ZN10pcg_extras13seed_seq_fromISt13random_deviceED2Ev.exit26: ; preds = %lpad resume { ptr, i32 } %6 if.end10.sink.split: ; preds = %entry, %if.end8 - %rounds.0250.ph = phi i32 [ %call7, %if.end8 ], [ 5, %entry ] + %rounds.0234.ph = phi i32 [ %call7, %if.end8 ], [ 5, %entry ] store i64 109, ptr %rng, align 8 - %state_.i257 = getelementptr inbounds %"class.pcg_detail::engine", ptr %rng, i64 0, i32 1 - store i64 1753877967969059832, ptr %state_.i257, align 8 + %state_.i241 = getelementptr inbounds %"class.pcg_detail::engine", ptr %rng, i64 0, i32 1 + store i64 1753877967969059832, ptr %state_.i241, align 8 br label %if.end10 if.end10: ; preds = %if.end10.sink.split, %invoke.cont - %state_.i253 = phi ptr [ %state_.i277, %invoke.cont ], [ %state_.i257, %if.end10.sink.split ] - %rounds.0250 = phi i32 [ %rounds.0251, %invoke.cont ], [ %rounds.0250.ph, %if.end10.sink.split ] + %state_.i237 = phi ptr [ %state_.i261, %invoke.cont ], [ %state_.i241, %if.end10.sink.split ] + %rounds.0234 = phi i32 [ %rounds.0235, %invoke.cont ], [ %rounds.0234.ph, %if.end10.sink.split ] %call11 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.1) %call12 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %call11, ptr noundef nonnull @.str.2) %call13 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %call12, ptr noundef nonnull @.str.3) @@ -226,19 +226,19 @@ if.end10: ; preds = %if.end10.sink.split %call23 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.8) %call24 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %call23, i64 noundef 16) %call25 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %call24, ptr noundef nonnull @.str.9) - %cmp26.not266 = icmp slt i32 %rounds.0250, 1 - br i1 %cmp26.not266, label %for.end171, label %for.body.lr.ph + %cmp26.not250 = icmp slt i32 %rounds.0234, 1 + br i1 %cmp26.not250, label %for.end171, label %for.body.lr.ph for.body.lr.ph: ; preds = %if.end10 %add.ptr.i = getelementptr inbounds i8, ptr %cards, i64 52 - %add.ptr.i73 = getelementptr inbounds i8, ptr %cards, i64 1 + %add.ptr.i61 = getelementptr inbounds i8, ptr %cards, i64 1 %_M_b.i.i.i = getelementptr inbounds %"struct.std::uniform_int_distribution::param_type", ptr %__d.i, i64 0, i32 1 %_M_b.i.i.i.i = getelementptr inbounds %"struct.std::uniform_int_distribution::param_type", ptr %ref.tmp.i.i, i64 0, i32 1 br label %for.body for.body: ; preds = %for.body.lr.ph, %if.end163 - %round.0267 = phi i32 [ 1, %for.body.lr.ph ], [ %inc170, %if.end163 ] - %call27 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.10, i32 noundef %round.0267) + %round.0251 = phi i32 [ 1, %for.body.lr.ph ], [ %inc170, %if.end163 ] + %call27 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.10, i32 noundef %round.0251) %call30 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St5_Setw(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, i32 4) %call35 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E(ptr noundef nonnull align 8 dereferenceable(8) %call30, i8 32) %call36 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %call35, i64 noundef 32) @@ -246,97 +246,89 @@ for.body: ; preds = %for.body.lr.ph, %if br label %for.body40 for.body40: ; preds = %for.body, %for.body40 - %i.0260 = phi i32 [ 0, %for.body ], [ %inc, %for.body40 ] + %i.0244 = phi i32 [ 0, %for.body ], [ %inc, %for.body40 ] %call47 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.13) %call48 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %call47, ptr noundef nonnull @_ZSt3hexRSt8ios_base) %call53 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E(ptr noundef nonnull align 8 dereferenceable(8) %call48, i8 48) %call58 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St5_Setw(ptr noundef nonnull align 8 dereferenceable(8) %call53, i32 8) - %9 = load i64, ptr %state_.i253, align 8 + %9 = load i64, ptr %state_.i237, align 8 %mul.i.i.i = mul i64 %9, 6364136223846793005 %10 = load i64, ptr %rng, align 8 %add.i.i.i = add i64 %10, %mul.i.i.i - store i64 %add.i.i.i, ptr %state_.i253, align 8 + store i64 %add.i.i.i, ptr %state_.i237, align 8 %shr.i.i = lshr i64 %9, 59 %conv5.i.i = trunc i64 %shr.i.i to i32 %11 = lshr i64 %9, 45 %12 = lshr i64 %9, 27 %shr7.i.i = xor i64 %11, %12 %conv8.i.i = trunc i64 %shr7.i.i to i32 - %shr.i.i.i = lshr i32 %conv8.i.i, %conv5.i.i - %sub.i.i.i = sub nsw i32 0, %conv5.i.i - %and.i.i.i = and i32 %sub.i.i.i, 31 - %shl.i.i.i = shl i32 %conv8.i.i, %and.i.i.i - %or.i.i.i = or i32 %shl.i.i.i, %shr.i.i.i + %or.i.i.i = call noundef i32 @llvm.fshr.i32(i32 %conv8.i.i, i32 %conv8.i.i, i32 %conv5.i.i) %call60 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %call58, i32 noundef %or.i.i.i) - %inc = add nuw nsw i32 %i.0260, 1 + %inc = add nuw nsw i32 %i.0244, 1 %exitcond.not = icmp eq i32 %inc, 6 br i1 %exitcond.not, label %for.end, label %for.body40, !llvm.loop !9 for.end: ; preds = %for.body40 %call61 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_) %call62 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.14) - %13 = load i64, ptr %state_.i253, align 8 + %13 = load i64, ptr %state_.i237, align 8 %14 = load i64, ptr %rng, align 8 br label %while.body.i.i.i while.body.i.i.i: ; preds = %if.end.i.i.i, %for.end %acc_plus.015.i.i.i = phi i64 [ %acc_plus.1.i.i.i, %if.end.i.i.i ], [ 0, %for.end ] %acc_mult.014.i.i.i = phi i64 [ %acc_mult.1.i.i.i, %if.end.i.i.i ], [ 1, %for.end ] - %delta.addr.013.i.i.i = phi i64 [ %shr.i.i.i31, %if.end.i.i.i ], [ -6, %for.end ] + %delta.addr.013.i.i.i = phi i64 [ %shr.i.i.i, %if.end.i.i.i ], [ -6, %for.end ] %cur_mult.addr.012.i.i.i = phi i64 [ %mul4.i.i.i, %if.end.i.i.i ], [ 6364136223846793005, %for.end ] %cur_plus.addr.011.i.i.i = phi i64 [ %mul3.i.i.i, %if.end.i.i.i ], [ %14, %for.end ] - %and.i.i.i28 = and i64 %delta.addr.013.i.i.i, 1 - %tobool.not.i.i.i = icmp eq i64 %and.i.i.i28, 0 + %and.i.i.i = and i64 %delta.addr.013.i.i.i, 1 + %tobool.not.i.i.i = icmp eq i64 %and.i.i.i, 0 br i1 %tobool.not.i.i.i, label %if.end.i.i.i, label %if.then.i.i.i if.then.i.i.i: ; preds = %while.body.i.i.i - %mul.i.i.i29 = mul i64 %cur_mult.addr.012.i.i.i, %acc_mult.014.i.i.i + %mul.i.i.i28 = mul i64 %cur_mult.addr.012.i.i.i, %acc_mult.014.i.i.i %mul1.i.i.i = mul i64 %cur_mult.addr.012.i.i.i, %acc_plus.015.i.i.i - %add.i.i.i30 = add i64 %mul1.i.i.i, %cur_plus.addr.011.i.i.i + %add.i.i.i29 = add i64 %mul1.i.i.i, %cur_plus.addr.011.i.i.i br label %if.end.i.i.i if.end.i.i.i: ; preds = %if.then.i.i.i, %while.body.i.i.i - %acc_mult.1.i.i.i = phi i64 [ %mul.i.i.i29, %if.then.i.i.i ], [ %acc_mult.014.i.i.i, %while.body.i.i.i ] - %acc_plus.1.i.i.i = phi i64 [ %add.i.i.i30, %if.then.i.i.i ], [ %acc_plus.015.i.i.i, %while.body.i.i.i ] + %acc_mult.1.i.i.i = phi i64 [ %mul.i.i.i28, %if.then.i.i.i ], [ %acc_mult.014.i.i.i, %while.body.i.i.i ] + %acc_plus.1.i.i.i = phi i64 [ %add.i.i.i29, %if.then.i.i.i ], [ %acc_plus.015.i.i.i, %while.body.i.i.i ] %add2.i.i.i = add i64 %cur_mult.addr.012.i.i.i, 1 %mul3.i.i.i = mul i64 %add2.i.i.i, %cur_plus.addr.011.i.i.i %mul4.i.i.i = mul i64 %cur_mult.addr.012.i.i.i, %cur_mult.addr.012.i.i.i - %shr.i.i.i31 = lshr i64 %delta.addr.013.i.i.i, 1 + %shr.i.i.i = lshr i64 %delta.addr.013.i.i.i, 1 %cmp.not.i.i.i = icmp ult i64 %delta.addr.013.i.i.i, 2 br i1 %cmp.not.i.i.i, label %_ZN10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE8backstepEm.exit, label %while.body.i.i.i, !llvm.loop !10 _ZN10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE8backstepEm.exit: ; preds = %if.end.i.i.i %mul5.i.i.i = mul i64 %acc_mult.1.i.i.i, %13 %add6.i.i.i = add i64 %mul5.i.i.i, %acc_plus.1.i.i.i - store i64 %add6.i.i.i, ptr %state_.i253, align 8 + store i64 %add6.i.i.i, ptr %state_.i237, align 8 br label %for.body66 for.body66: ; preds = %_ZN10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE8backstepEm.exit, %for.body66 - %i63.0261 = phi i32 [ 0, %_ZN10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE8backstepEm.exit ], [ %inc89, %for.body66 ] + %i63.0245 = phi i32 [ 0, %_ZN10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE8backstepEm.exit ], [ %inc89, %for.body66 ] %call74 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.13) %call75 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %call74, ptr noundef nonnull @_ZSt3hexRSt8ios_base) %call80 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E(ptr noundef nonnull align 8 dereferenceable(8) %call75, i8 48) %call85 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St5_Setw(ptr noundef nonnull align 8 dereferenceable(8) %call80, i32 8) - %15 = load i64, ptr %state_.i253, align 8 - %mul.i.i.i33 = mul i64 %15, 6364136223846793005 + %15 = load i64, ptr %state_.i237, align 8 + %mul.i.i.i31 = mul i64 %15, 6364136223846793005 %16 = load i64, ptr %rng, align 8 - %add.i.i.i34 = add i64 %16, %mul.i.i.i33 - store i64 %add.i.i.i34, ptr %state_.i253, align 8 - %shr.i.i35 = lshr i64 %15, 59 - %conv5.i.i36 = trunc i64 %shr.i.i35 to i32 + %add.i.i.i32 = add i64 %16, %mul.i.i.i31 + store i64 %add.i.i.i32, ptr %state_.i237, align 8 + %shr.i.i33 = lshr i64 %15, 59 + %conv5.i.i34 = trunc i64 %shr.i.i33 to i32 %17 = lshr i64 %15, 45 %18 = lshr i64 %15, 27 - %shr7.i.i37 = xor i64 %17, %18 - %conv8.i.i38 = trunc i64 %shr7.i.i37 to i32 - %shr.i.i.i39 = lshr i32 %conv8.i.i38, %conv5.i.i36 - %sub.i.i.i40 = sub nsw i32 0, %conv5.i.i36 - %and.i.i.i41 = and i32 %sub.i.i.i40, 31 - %shl.i.i.i42 = shl i32 %conv8.i.i38, %and.i.i.i41 - %or.i.i.i43 = or i32 %shl.i.i.i42, %shr.i.i.i39 - %call87 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %call85, i32 noundef %or.i.i.i43) - %inc89 = add nuw nsw i32 %i63.0261, 1 - %exitcond268.not = icmp eq i32 %inc89, 6 - br i1 %exitcond268.not, label %for.end90, label %for.body66, !llvm.loop !11 + %shr7.i.i35 = xor i64 %17, %18 + %conv8.i.i36 = trunc i64 %shr7.i.i35 to i32 + %or.i.i.i37 = call noundef i32 @llvm.fshr.i32(i32 %conv8.i.i36, i32 %conv8.i.i36, i32 %conv5.i.i34) + %call87 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %call85, i32 noundef %or.i.i.i37) + %inc89 = add nuw nsw i32 %i63.0245, 1 + %exitcond252.not = icmp eq i32 %inc89, 6 + br i1 %exitcond252.not, label %for.end90, label %for.body66, !llvm.loop !11 for.end90: ; preds = %for.body66 %call91 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @_ZSt3decRSt8ios_base) @@ -345,77 +337,69 @@ for.end90: ; preds = %for.body66 br label %for.body97 for.body97: ; preds = %for.end90, %for.body97 - %i94.0262 = phi i32 [ 0, %for.end90 ], [ %inc102, %for.body97 ] + %i94.0246 = phi i32 [ 0, %for.end90 ], [ %inc102, %for.body97 ] %19 = load i64, ptr %rng, align 8 - %state_.i.i.promoted.i.i = load i64, ptr %state_.i253, align 8 - %mul.i.i.i.i.i45 = mul i64 %state_.i.i.promoted.i.i, 6364136223846793005 - %add.i.i.i.i.i46 = add i64 %mul.i.i.i.i.i45, %19 + %state_.i.i.promoted.i.i = load i64, ptr %state_.i237, align 8 + %mul.i.i.i.i.i39 = mul i64 %state_.i.i.promoted.i.i, 6364136223846793005 + %add.i.i.i.i.i40 = add i64 %mul.i.i.i.i.i39, %19 %shr.i.i.i.i = lshr i64 %state_.i.i.promoted.i.i, 59 %conv5.i.i.i.i = trunc i64 %shr.i.i.i.i to i32 %20 = lshr i64 %state_.i.i.promoted.i.i, 45 %21 = lshr i64 %state_.i.i.promoted.i.i, 27 %shr7.i.i.i.i = xor i64 %20, %21 %conv8.i.i.i.i = trunc i64 %shr7.i.i.i.i to i32 - %shr.i.i.i.i.i = lshr i32 %conv8.i.i.i.i, %conv5.i.i.i.i - %sub.i.i.i.i.i = sub nsw i32 0, %conv5.i.i.i.i - %and.i.i.i.i.i = and i32 %sub.i.i.i.i.i, 31 - %shl.i.i.i.i.i47 = shl i32 %conv8.i.i.i.i, %and.i.i.i.i.i - %or.i.i.i.i.i48 = or i32 %shl.i.i.i.i.i47, %shr.i.i.i.i.i - store i64 %add.i.i.i.i.i46, ptr %state_.i253, align 8 - %rem6.i.i = and i32 %or.i.i.i.i.i48, 1 + %or.i.i.i.i.i41 = call noundef i32 @llvm.fshr.i32(i32 %conv8.i.i.i.i, i32 %conv8.i.i.i.i, i32 %conv5.i.i.i.i) + store i64 %add.i.i.i.i.i40, ptr %state_.i237, align 8 + %rem6.i.i = and i32 %or.i.i.i.i.i41, 1 %tobool99.not = icmp eq i32 %rem6.i.i, 0 %.str.16..str.17 = select i1 %tobool99.not, ptr @.str.17, ptr @.str.16 %call100 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull %.str.16..str.17) - %inc102 = add nuw nsw i32 %i94.0262, 1 - %exitcond269.not = icmp eq i32 %inc102, 65 - br i1 %exitcond269.not, label %for.end103, label %for.body97, !llvm.loop !12 + %inc102 = add nuw nsw i32 %i94.0246, 1 + %exitcond253.not = icmp eq i32 %inc102, 65 + br i1 %exitcond253.not, label %for.end103, label %for.body97, !llvm.loop !12 for.end103: ; preds = %for.body97 %call104 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_) %rng_copy.sroa.0.0.copyload = load i64, ptr %rng, align 8 - %rng_copy.sroa.6.0.copyload = load i64, ptr %state_.i253, align 8 + %rng_copy.sroa.6.0.copyload = load i64, ptr %state_.i237, align 8 %call105 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.18) br label %for.body109 for.body109: ; preds = %for.end103, %_ZN10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEEclEj.exit - %i106.0263 = phi i32 [ 0, %for.end103 ], [ %inc114, %_ZN10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEEclEj.exit ] + %i106.0247 = phi i32 [ 0, %for.end103 ], [ %inc114, %_ZN10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEEclEj.exit ] %call110 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.19) %22 = load i64, ptr %rng, align 8 - %state_.i.i.promoted.i.i50 = load i64, ptr %state_.i253, align 8 + %state_.i.i.promoted.i.i43 = load i64, ptr %state_.i237, align 8 br label %for.cond.i.i for.cond.i.i: ; preds = %for.cond.i.i, %for.body109 - %add.i.i.i4.i.i = phi i64 [ %add.i.i.i.i.i52, %for.cond.i.i ], [ %state_.i.i.promoted.i.i50, %for.body109 ] - %mul.i.i.i.i.i51 = mul i64 %add.i.i.i4.i.i, 6364136223846793005 - %add.i.i.i.i.i52 = add i64 %mul.i.i.i.i.i51, %22 - %shr.i.i.i.i53 = lshr i64 %add.i.i.i4.i.i, 59 - %conv5.i.i.i.i54 = trunc i64 %shr.i.i.i.i53 to i32 + %add.i.i.i4.i.i = phi i64 [ %add.i.i.i.i.i45, %for.cond.i.i ], [ %state_.i.i.promoted.i.i43, %for.body109 ] + %mul.i.i.i.i.i44 = mul i64 %add.i.i.i4.i.i, 6364136223846793005 + %add.i.i.i.i.i45 = add i64 %mul.i.i.i.i.i44, %22 + %shr.i.i.i.i46 = lshr i64 %add.i.i.i4.i.i, 59 + %conv5.i.i.i.i47 = trunc i64 %shr.i.i.i.i46 to i32 %23 = lshr i64 %add.i.i.i4.i.i, 45 %24 = lshr i64 %add.i.i.i4.i.i, 27 - %shr7.i.i.i.i55 = xor i64 %23, %24 - %conv8.i.i.i.i56 = trunc i64 %shr7.i.i.i.i55 to i32 - %shr.i.i.i.i.i57 = lshr i32 %conv8.i.i.i.i56, %conv5.i.i.i.i54 - %sub.i.i.i.i.i58 = sub nsw i32 0, %conv5.i.i.i.i54 - %and.i.i.i.i.i59 = and i32 %sub.i.i.i.i.i58, 31 - %shl.i.i.i.i.i60 = shl i32 %conv8.i.i.i.i56, %and.i.i.i.i.i59 - %or.i.i.i.i.i61 = or i32 %shl.i.i.i.i.i60, %shr.i.i.i.i.i57 - %cmp.not.i.i = icmp ult i32 %or.i.i.i.i.i61, 4 + %shr7.i.i.i.i48 = xor i64 %23, %24 + %conv8.i.i.i.i49 = trunc i64 %shr7.i.i.i.i48 to i32 + %or.i.i.i.i.i50 = call noundef i32 @llvm.fshr.i32(i32 %conv8.i.i.i.i49, i32 %conv8.i.i.i.i49, i32 %conv5.i.i.i.i47) + %cmp.not.i.i = icmp ult i32 %or.i.i.i.i.i50, 4 br i1 %cmp.not.i.i, label %for.cond.i.i, label %_ZN10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEEclEj.exit, !llvm.loop !13 _ZN10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEEclEj.exit: ; preds = %for.cond.i.i - store i64 %add.i.i.i.i.i52, ptr %state_.i253, align 8 - %rem6.i.i62 = urem i32 %or.i.i.i.i.i61, 6 - %add = add nuw nsw i32 %rem6.i.i62, 1 + store i64 %add.i.i.i.i.i45, ptr %state_.i237, align 8 + %rem6.i.i51 = urem i32 %or.i.i.i.i.i50, 6 + %add = add nuw nsw i32 %rem6.i.i51, 1 %call112 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %call110, i32 noundef %add) - %inc114 = add nuw nsw i32 %i106.0263, 1 - %exitcond270.not = icmp eq i32 %inc114, 33 - br i1 %exitcond270.not, label %for.end115, label %for.body109, !llvm.loop !14 + %inc114 = add nuw nsw i32 %i106.0247, 1 + %exitcond254.not = icmp eq i32 %inc114, 33 + br i1 %exitcond254.not, label %for.end115, label %for.body109, !llvm.loop !14 for.end115: ; preds = %_ZN10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEEclEj.exit %call116 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.20) %25 = load i64, ptr %rng, align 8 %cmp.i = icmp eq i64 %25, %rng_copy.sroa.0.0.copyload - %26 = load i64, ptr %state_.i253, align 8 + %26 = load i64, ptr %state_.i237, align 8 br i1 %cmp.i, label %if.then.i, label %if.else.i if.then.i: ; preds = %for.end115 @@ -426,34 +410,34 @@ if.then.i: ; preds = %for.end115 while.body.preheader.i.i.i: ; preds = %if.then.i %cond.i.i.i = select i1 %cmp.i.i.i, i64 4, i64 1 - br label %while.body.i.i.i65 - -while.body.i.i.i65: ; preds = %while.body.i.i.i65, %while.body.preheader.i.i.i - %28 = phi i64 [ %30, %while.body.i.i.i65 ], [ %27, %while.body.preheader.i.i.i ] - %distance.021.i.i.i = phi i64 [ %distance.1.i.i.i, %while.body.i.i.i65 ], [ 0, %while.body.preheader.i.i.i ] - %the_bit.020.i.i.i = phi i64 [ %shl.i.i.i69, %while.body.i.i.i65 ], [ %cond.i.i.i, %while.body.preheader.i.i.i ] - %cur_state.addr.019.i.i.i = phi i64 [ %cur_state.addr.1.i.i.i, %while.body.i.i.i65 ], [ %rng_copy.sroa.6.0.copyload, %while.body.preheader.i.i.i ] - %cur_mult.addr.018.i.i.i = phi i64 [ %mul8.i.i.i, %while.body.i.i.i65 ], [ 6364136223846793005, %while.body.preheader.i.i.i ] - %cur_plus.addr.017.i.i.i = phi i64 [ %mul7.i.i.i, %while.body.i.i.i65 ], [ %rng_copy.sroa.0.0.copyload, %while.body.preheader.i.i.i ] + br label %while.body.i.i.i54 + +while.body.i.i.i54: ; preds = %while.body.i.i.i54, %while.body.preheader.i.i.i + %28 = phi i64 [ %30, %while.body.i.i.i54 ], [ %27, %while.body.preheader.i.i.i ] + %distance.021.i.i.i = phi i64 [ %distance.1.i.i.i, %while.body.i.i.i54 ], [ 0, %while.body.preheader.i.i.i ] + %the_bit.020.i.i.i = phi i64 [ %shl.i.i.i, %while.body.i.i.i54 ], [ %cond.i.i.i, %while.body.preheader.i.i.i ] + %cur_state.addr.019.i.i.i = phi i64 [ %cur_state.addr.1.i.i.i, %while.body.i.i.i54 ], [ %rng_copy.sroa.6.0.copyload, %while.body.preheader.i.i.i ] + %cur_mult.addr.018.i.i.i = phi i64 [ %mul8.i.i.i, %while.body.i.i.i54 ], [ 6364136223846793005, %while.body.preheader.i.i.i ] + %cur_plus.addr.017.i.i.i = phi i64 [ %mul7.i.i.i, %while.body.i.i.i54 ], [ %rng_copy.sroa.0.0.copyload, %while.body.preheader.i.i.i ] %29 = and i64 %the_bit.020.i.i.i, %28 %cmp5.not.i.i.i = icmp eq i64 %29, 0 - %mul.i.i.i66 = mul i64 %cur_mult.addr.018.i.i.i, %cur_state.addr.019.i.i.i - %add.i.i.i67 = add i64 %mul.i.i.i66, %cur_plus.addr.017.i.i.i - %cur_state.addr.1.i.i.i = select i1 %cmp5.not.i.i.i, i64 %cur_state.addr.019.i.i.i, i64 %add.i.i.i67 - %or.i.i.i68 = select i1 %cmp5.not.i.i.i, i64 0, i64 %the_bit.020.i.i.i - %distance.1.i.i.i = or i64 %or.i.i.i68, %distance.021.i.i.i - %shl.i.i.i69 = shl i64 %the_bit.020.i.i.i, 1 - %add6.i.i.i70 = add i64 %cur_mult.addr.018.i.i.i, 1 - %mul7.i.i.i = mul i64 %add6.i.i.i70, %cur_plus.addr.017.i.i.i + %mul.i.i.i55 = mul i64 %cur_mult.addr.018.i.i.i, %cur_state.addr.019.i.i.i + %add.i.i.i56 = add i64 %mul.i.i.i55, %cur_plus.addr.017.i.i.i + %cur_state.addr.1.i.i.i = select i1 %cmp5.not.i.i.i, i64 %cur_state.addr.019.i.i.i, i64 %add.i.i.i56 + %or.i.i.i57 = select i1 %cmp5.not.i.i.i, i64 0, i64 %the_bit.020.i.i.i + %distance.1.i.i.i = or i64 %or.i.i.i57, %distance.021.i.i.i + %shl.i.i.i = shl i64 %the_bit.020.i.i.i, 1 + %add6.i.i.i58 = add i64 %cur_mult.addr.018.i.i.i, 1 + %mul7.i.i.i = mul i64 %add6.i.i.i58, %cur_plus.addr.017.i.i.i %mul8.i.i.i = mul i64 %cur_mult.addr.018.i.i.i, %cur_mult.addr.018.i.i.i %30 = xor i64 %cur_state.addr.1.i.i.i, %26 %cmp2.not.i.i.i = icmp eq i64 %30, 0 - br i1 %cmp2.not.i.i.i, label %_ZNK10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE8distanceEmm.exit.i, label %while.body.i.i.i65, !llvm.loop !15 + br i1 %cmp2.not.i.i.i, label %_ZNK10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE8distanceEmm.exit.i, label %while.body.i.i.i54, !llvm.loop !15 -_ZNK10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE8distanceEmm.exit.i: ; preds = %while.body.i.i.i65, %if.then.i - %distance.0.lcssa.i.i.i = phi i64 [ 0, %if.then.i ], [ %distance.1.i.i.i, %while.body.i.i.i65 ] - %shr.i.i.i71 = lshr i64 %distance.0.lcssa.i.i.i, 2 - %cond10.i.i.i = select i1 %cmp.i.i.i, i64 %shr.i.i.i71, i64 %distance.0.lcssa.i.i.i +_ZNK10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE8distanceEmm.exit.i: ; preds = %while.body.i.i.i54, %if.then.i + %distance.0.lcssa.i.i.i = phi i64 [ 0, %if.then.i ], [ %distance.1.i.i.i, %while.body.i.i.i54 ] + %shr.i.i.i59 = lshr i64 %distance.0.lcssa.i.i.i, 2 + %cond10.i.i.i = select i1 %cmp.i.i.i, i64 %shr.i.i.i59, i64 %distance.0.lcssa.i.i.i br label %_ZN10pcg_detailmiIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEES4_S6_EET0_RKNS_6engineIT_S7_T1_XT2_ET3_T4_EERKNS8_IS9_S7_SA_XT2_ET5_T6_EE.exit if.else.i: ; preds = %for.end115 @@ -497,15 +481,15 @@ _ZN10pcg_detailmiIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18defau %call118 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %call116, i64 noundef %retval.0.i) %call119 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %call118, ptr noundef nonnull @.str.21) %call120 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %call119, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_) - %rng_copy.sroa.0.0.copyload224 = load i64, ptr %rng, align 8 - %rng_copy.sroa.6.0.copyload227 = load i64, ptr %state_.i253, align 8 + %rng_copy.sroa.0.0.copyload208 = load i64, ptr %rng, align 8 + %rng_copy.sroa.6.0.copyload211 = load i64, ptr %state_.i237, align 8 br label %for.body.i for.body.i: ; preds = %for.body.i, %_ZN10pcg_detailmiIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEES4_S6_EET0_RKNS_6engineIT_S7_T1_XT2_ET3_T4_EERKNS8_IS9_S7_SA_XT2_ET5_T6_EE.exit %__first.addr.05.i.idx = phi i64 [ %__first.addr.05.i.add, %for.body.i ], [ 0, %_ZN10pcg_detailmiIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEES4_S6_EET0_RKNS_6engineIT_S7_T1_XT2_ET3_T4_EERKNS8_IS9_S7_SA_XT2_ET5_T6_EE.exit ] - %indvars271 = trunc i64 %__first.addr.05.i.idx to i8 + %indvars255 = trunc i64 %__first.addr.05.i.idx to i8 %__first.addr.05.i.ptr = getelementptr inbounds i8, ptr %cards, i64 %__first.addr.05.i.idx - store i8 %indvars271, ptr %__first.addr.05.i.ptr, align 1 + store i8 %indvars255, ptr %__first.addr.05.i.ptr, align 1 %__first.addr.05.i.add = add nuw nsw i64 %__first.addr.05.i.idx, 1 %cmp.not.i = icmp eq i64 %__first.addr.05.i.add, 52 br i1 %cmp.not.i, label %_ZSt4iotaIPciEvT_S1_T0_.exit, label %for.body.i, !llvm.loop !16 @@ -516,20 +500,20 @@ _ZSt4iotaIPciEvT_S1_T0_.exit: ; preds = %for.body.i store i64 1, ptr %_M_b.i.i.i, align 8 %call.i.i = call noundef i64 @_ZNSt24uniform_int_distributionImEclIN10pcg_detail6engineIjmNS2_12xsh_rr_mixinIjmEELb1ENS2_15specific_streamImEENS2_18default_multiplierImEEEEEEmRT_RKNS0_10param_typeE(ptr noundef nonnull align 8 dereferenceable(16) %__d.i, ptr noundef nonnull align 8 dereferenceable(16) %rng, ptr noundef nonnull align 8 dereferenceable(16) %__d.i) %add.ptr7.i = getelementptr inbounds i8, ptr %cards, i64 %call.i.i - %38 = load i8, ptr %add.ptr.i73, align 1 + %38 = load i8, ptr %add.ptr.i61, align 1 %39 = load i8, ptr %add.ptr7.i, align 1 - store i8 %39, ptr %add.ptr.i73, align 1 + store i8 %39, ptr %add.ptr.i61, align 1 store i8 %38, ptr %add.ptr7.i, align 1 br label %while.body.i while.body.i: ; preds = %while.body.i, %_ZSt4iotaIPciEvT_S1_T0_.exit %__i.128.i.idx = phi i64 [ 2, %_ZSt4iotaIPciEvT_S1_T0_.exit ], [ %add13.i, %while.body.i ] %__i.128.i.ptr = getelementptr inbounds i8, ptr %cards, i64 %__i.128.i.idx - %add.i75 = or disjoint i64 %__i.128.i.idx, 1 + %add.i63 = or disjoint i64 %__i.128.i.idx, 1 %add13.i = add nuw nsw i64 %__i.128.i.idx, 2 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp.i.i) - %mul.i.i76 = mul i64 %add13.i, %add.i75 - %sub.i.i = add i64 %mul.i.i76, -1 + %mul.i.i64 = mul i64 %add13.i, %add.i63 + %sub.i.i = add i64 %mul.i.i64, -1 store i64 0, ptr %ref.tmp.i.i, align 8 store i64 %sub.i.i, ptr %_M_b.i.i.i.i, align 8 %call.i.i.i = call noundef i64 @_ZNSt24uniform_int_distributionImEclIN10pcg_detail6engineIjmNS2_12xsh_rr_mixinIjmEELb1ENS2_15specific_streamImEENS2_18default_multiplierImEEEEEEmRT_RKNS0_10param_typeE(ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i.i, ptr noundef nonnull align 8 dereferenceable(16) %rng, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i.i) @@ -553,196 +537,192 @@ while.body.i: ; preds = %while.body.i, %_ZSt _ZSt7shuffleIPcRN10pcg_detail6engineIjmNS1_12xsh_rr_mixinIjmEELb1ENS1_15specific_streamImEENS1_18default_multiplierImEEEEEvT_SB_OT0_.exit: ; preds = %while.body.i call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %__d.i) %44 = load i64, ptr %rng, align 8 - %cmp.i77 = icmp eq i64 %44, %rng_copy.sroa.0.0.copyload224 - %45 = load i64, ptr %state_.i253, align 8 - br i1 %cmp.i77, label %if.then.i104, label %if.else.i79 - -if.then.i104: ; preds = %_ZSt7shuffleIPcRN10pcg_detail6engineIjmNS1_12xsh_rr_mixinIjmEELb1ENS1_15specific_streamImEENS1_18default_multiplierImEEEEEvT_SB_OT0_.exit - %cmp.i.i.i106 = icmp eq i64 %rng_copy.sroa.0.0.copyload224, 0 - %46 = xor i64 %45, %rng_copy.sroa.6.0.copyload227 - %cmp2.not16.i.i.i107 = icmp eq i64 %46, 0 - br i1 %cmp2.not16.i.i.i107, label %_ZNK10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE8distanceEmm.exit.i127, label %while.body.preheader.i.i.i108 - -while.body.preheader.i.i.i108: ; preds = %if.then.i104 - %cond.i.i.i109 = select i1 %cmp.i.i.i106, i64 4, i64 1 - br label %while.body.i.i.i110 - -while.body.i.i.i110: ; preds = %while.body.i.i.i110, %while.body.preheader.i.i.i108 - %47 = phi i64 [ %49, %while.body.i.i.i110 ], [ %46, %while.body.preheader.i.i.i108 ] - %distance.021.i.i.i111 = phi i64 [ %distance.1.i.i.i121, %while.body.i.i.i110 ], [ 0, %while.body.preheader.i.i.i108 ] - %the_bit.020.i.i.i112 = phi i64 [ %shl.i.i.i122, %while.body.i.i.i110 ], [ %cond.i.i.i109, %while.body.preheader.i.i.i108 ] - %cur_state.addr.019.i.i.i113 = phi i64 [ %cur_state.addr.1.i.i.i119, %while.body.i.i.i110 ], [ %rng_copy.sroa.6.0.copyload227, %while.body.preheader.i.i.i108 ] - %cur_mult.addr.018.i.i.i114 = phi i64 [ %mul8.i.i.i125, %while.body.i.i.i110 ], [ 6364136223846793005, %while.body.preheader.i.i.i108 ] - %cur_plus.addr.017.i.i.i115 = phi i64 [ %mul7.i.i.i124, %while.body.i.i.i110 ], [ %rng_copy.sroa.0.0.copyload224, %while.body.preheader.i.i.i108 ] - %48 = and i64 %the_bit.020.i.i.i112, %47 - %cmp5.not.i.i.i116 = icmp eq i64 %48, 0 - %mul.i.i.i117 = mul i64 %cur_mult.addr.018.i.i.i114, %cur_state.addr.019.i.i.i113 - %add.i.i.i118 = add i64 %mul.i.i.i117, %cur_plus.addr.017.i.i.i115 - %cur_state.addr.1.i.i.i119 = select i1 %cmp5.not.i.i.i116, i64 %cur_state.addr.019.i.i.i113, i64 %add.i.i.i118 - %or.i.i.i120 = select i1 %cmp5.not.i.i.i116, i64 0, i64 %the_bit.020.i.i.i112 - %distance.1.i.i.i121 = or i64 %or.i.i.i120, %distance.021.i.i.i111 - %shl.i.i.i122 = shl i64 %the_bit.020.i.i.i112, 1 - %add6.i.i.i123 = add i64 %cur_mult.addr.018.i.i.i114, 1 - %mul7.i.i.i124 = mul i64 %add6.i.i.i123, %cur_plus.addr.017.i.i.i115 - %mul8.i.i.i125 = mul i64 %cur_mult.addr.018.i.i.i114, %cur_mult.addr.018.i.i.i114 - %49 = xor i64 %cur_state.addr.1.i.i.i119, %45 - %cmp2.not.i.i.i126 = icmp eq i64 %49, 0 - br i1 %cmp2.not.i.i.i126, label %_ZNK10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE8distanceEmm.exit.i127, label %while.body.i.i.i110, !llvm.loop !15 - -_ZNK10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE8distanceEmm.exit.i127: ; preds = %while.body.i.i.i110, %if.then.i104 - %distance.0.lcssa.i.i.i128 = phi i64 [ 0, %if.then.i104 ], [ %distance.1.i.i.i121, %while.body.i.i.i110 ] - %shr.i.i.i129 = lshr i64 %distance.0.lcssa.i.i.i128, 2 - %cond10.i.i.i130 = select i1 %cmp.i.i.i106, i64 %shr.i.i.i129, i64 %distance.0.lcssa.i.i.i128 - br label %_ZN10pcg_detailmiIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEES4_S6_EET0_RKNS_6engineIT_S7_T1_XT2_ET3_T4_EERKNS8_IS9_S7_SA_XT2_ET5_T6_EE.exit131 - -if.else.i79: ; preds = %_ZSt7shuffleIPcRN10pcg_detail6engineIjmNS1_12xsh_rr_mixinIjmEELb1ENS1_15specific_streamImEENS1_18default_multiplierImEEEEEvT_SB_OT0_.exit - %mul.i80 = mul i64 %45, 6364136223846793004 - %add.i81 = add i64 %mul.i80, %44 - %mul10.i83 = mul i64 %rng_copy.sroa.6.0.copyload227, 6364136223846793004 - %add11.i84 = add i64 %mul10.i83, %rng_copy.sroa.0.0.copyload224 - %50 = xor i64 %44, %rng_copy.sroa.0.0.copyload224 + %cmp.i65 = icmp eq i64 %44, %rng_copy.sroa.0.0.copyload208 + %45 = load i64, ptr %state_.i237, align 8 + br i1 %cmp.i65, label %if.then.i92, label %if.else.i67 + +if.then.i92: ; preds = %_ZSt7shuffleIPcRN10pcg_detail6engineIjmNS1_12xsh_rr_mixinIjmEELb1ENS1_15specific_streamImEENS1_18default_multiplierImEEEEEvT_SB_OT0_.exit + %cmp.i.i.i94 = icmp eq i64 %rng_copy.sroa.0.0.copyload208, 0 + %46 = xor i64 %45, %rng_copy.sroa.6.0.copyload211 + %cmp2.not16.i.i.i95 = icmp eq i64 %46, 0 + br i1 %cmp2.not16.i.i.i95, label %_ZNK10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE8distanceEmm.exit.i115, label %while.body.preheader.i.i.i96 + +while.body.preheader.i.i.i96: ; preds = %if.then.i92 + %cond.i.i.i97 = select i1 %cmp.i.i.i94, i64 4, i64 1 + br label %while.body.i.i.i98 + +while.body.i.i.i98: ; preds = %while.body.i.i.i98, %while.body.preheader.i.i.i96 + %47 = phi i64 [ %49, %while.body.i.i.i98 ], [ %46, %while.body.preheader.i.i.i96 ] + %distance.021.i.i.i99 = phi i64 [ %distance.1.i.i.i109, %while.body.i.i.i98 ], [ 0, %while.body.preheader.i.i.i96 ] + %the_bit.020.i.i.i100 = phi i64 [ %shl.i.i.i110, %while.body.i.i.i98 ], [ %cond.i.i.i97, %while.body.preheader.i.i.i96 ] + %cur_state.addr.019.i.i.i101 = phi i64 [ %cur_state.addr.1.i.i.i107, %while.body.i.i.i98 ], [ %rng_copy.sroa.6.0.copyload211, %while.body.preheader.i.i.i96 ] + %cur_mult.addr.018.i.i.i102 = phi i64 [ %mul8.i.i.i113, %while.body.i.i.i98 ], [ 6364136223846793005, %while.body.preheader.i.i.i96 ] + %cur_plus.addr.017.i.i.i103 = phi i64 [ %mul7.i.i.i112, %while.body.i.i.i98 ], [ %rng_copy.sroa.0.0.copyload208, %while.body.preheader.i.i.i96 ] + %48 = and i64 %the_bit.020.i.i.i100, %47 + %cmp5.not.i.i.i104 = icmp eq i64 %48, 0 + %mul.i.i.i105 = mul i64 %cur_mult.addr.018.i.i.i102, %cur_state.addr.019.i.i.i101 + %add.i.i.i106 = add i64 %mul.i.i.i105, %cur_plus.addr.017.i.i.i103 + %cur_state.addr.1.i.i.i107 = select i1 %cmp5.not.i.i.i104, i64 %cur_state.addr.019.i.i.i101, i64 %add.i.i.i106 + %or.i.i.i108 = select i1 %cmp5.not.i.i.i104, i64 0, i64 %the_bit.020.i.i.i100 + %distance.1.i.i.i109 = or i64 %or.i.i.i108, %distance.021.i.i.i99 + %shl.i.i.i110 = shl i64 %the_bit.020.i.i.i100, 1 + %add6.i.i.i111 = add i64 %cur_mult.addr.018.i.i.i102, 1 + %mul7.i.i.i112 = mul i64 %add6.i.i.i111, %cur_plus.addr.017.i.i.i103 + %mul8.i.i.i113 = mul i64 %cur_mult.addr.018.i.i.i102, %cur_mult.addr.018.i.i.i102 + %49 = xor i64 %cur_state.addr.1.i.i.i107, %45 + %cmp2.not.i.i.i114 = icmp eq i64 %49, 0 + br i1 %cmp2.not.i.i.i114, label %_ZNK10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE8distanceEmm.exit.i115, label %while.body.i.i.i98, !llvm.loop !15 + +_ZNK10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE8distanceEmm.exit.i115: ; preds = %while.body.i.i.i98, %if.then.i92 + %distance.0.lcssa.i.i.i116 = phi i64 [ 0, %if.then.i92 ], [ %distance.1.i.i.i109, %while.body.i.i.i98 ] + %shr.i.i.i117 = lshr i64 %distance.0.lcssa.i.i.i116, 2 + %cond10.i.i.i118 = select i1 %cmp.i.i.i94, i64 %shr.i.i.i117, i64 %distance.0.lcssa.i.i.i116 + br label %_ZN10pcg_detailmiIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEES4_S6_EET0_RKNS_6engineIT_S7_T1_XT2_ET3_T4_EERKNS8_IS9_S7_SA_XT2_ET5_T6_EE.exit119 + +if.else.i67: ; preds = %_ZSt7shuffleIPcRN10pcg_detail6engineIjmNS1_12xsh_rr_mixinIjmEELb1ENS1_15specific_streamImEENS1_18default_multiplierImEEEEEvT_SB_OT0_.exit + %mul.i68 = mul i64 %45, 6364136223846793004 + %add.i69 = add i64 %mul.i68, %44 + %mul10.i71 = mul i64 %rng_copy.sroa.6.0.copyload211, 6364136223846793004 + %add11.i72 = add i64 %mul10.i71, %rng_copy.sroa.0.0.copyload208 + %50 = xor i64 %44, %rng_copy.sroa.0.0.copyload208 %51 = and i64 %50, 3 - %cmp13.not.i85 = icmp eq i64 %51, 0 - %sub15.i86 = sub i64 0, %add11.i84 - %spec.select.i87 = select i1 %cmp13.not.i85, i64 %add11.i84, i64 %sub15.i86 - %52 = xor i64 %spec.select.i87, %add.i81 - %cmp2.not16.i.i88 = icmp eq i64 %52, 0 - br i1 %cmp2.not16.i.i88, label %_ZN10pcg_detailmiIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEES4_S6_EET0_RKNS_6engineIT_S7_T1_XT2_ET3_T4_EERKNS8_IS9_S7_SA_XT2_ET5_T6_EE.exit131, label %while.body.i.i89 - -while.body.i.i89: ; preds = %if.else.i79, %while.body.i.i89 - %53 = phi i64 [ %55, %while.body.i.i89 ], [ %52, %if.else.i79 ] - %distance.021.i.i90 = phi i64 [ %distance.1.i.i98, %while.body.i.i89 ], [ 0, %if.else.i79 ] - %the_bit.020.i.i91 = phi i64 [ %shl.i.i99, %while.body.i.i89 ], [ 4, %if.else.i79 ] - %cur_state.addr.019.i.i92 = phi i64 [ %cur_state.addr.1.i.i96, %while.body.i.i89 ], [ %spec.select.i87, %if.else.i79 ] - %cur_mult.addr.018.i.i93 = phi i64 [ %mul8.i.i100, %while.body.i.i89 ], [ 6364136223846793005, %if.else.i79 ] - %54 = and i64 %the_bit.020.i.i91, %53 - %cmp5.not.i.i94 = icmp eq i64 %54, 0 - %mul.i.i95 = select i1 %cmp5.not.i.i94, i64 1, i64 %cur_mult.addr.018.i.i93 - %cur_state.addr.1.i.i96 = mul i64 %mul.i.i95, %cur_state.addr.019.i.i92 - %or.i.i97 = select i1 %cmp5.not.i.i94, i64 0, i64 %the_bit.020.i.i91 - %distance.1.i.i98 = or i64 %or.i.i97, %distance.021.i.i90 - %shl.i.i99 = shl i64 %the_bit.020.i.i91, 1 - %mul8.i.i100 = mul i64 %cur_mult.addr.018.i.i93, %cur_mult.addr.018.i.i93 - %55 = xor i64 %cur_state.addr.1.i.i96, %add.i81 - %cmp2.not.i.i101 = icmp eq i64 %55, 0 - br i1 %cmp2.not.i.i101, label %_ZN10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE8distanceEmmmmm.exit.loopexit.i102, label %while.body.i.i89, !llvm.loop !15 - -_ZN10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE8distanceEmmmmm.exit.loopexit.i102: ; preds = %while.body.i.i89 - %56 = lshr exact i64 %distance.1.i.i98, 2 - br label %_ZN10pcg_detailmiIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEES4_S6_EET0_RKNS_6engineIT_S7_T1_XT2_ET3_T4_EERKNS8_IS9_S7_SA_XT2_ET5_T6_EE.exit131 - -_ZN10pcg_detailmiIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEES4_S6_EET0_RKNS_6engineIT_S7_T1_XT2_ET3_T4_EERKNS8_IS9_S7_SA_XT2_ET5_T6_EE.exit131: ; preds = %_ZNK10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE8distanceEmm.exit.i127, %if.else.i79, %_ZN10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE8distanceEmmmmm.exit.loopexit.i102 - %retval.0.i103 = phi i64 [ %cond10.i.i.i130, %_ZNK10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE8distanceEmm.exit.i127 ], [ 0, %if.else.i79 ], [ %56, %_ZN10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE8distanceEmmmmm.exit.loopexit.i102 ] - store i64 %rng_copy.sroa.0.0.copyload224, ptr %rng, align 8 - store i64 %rng_copy.sroa.6.0.copyload227, ptr %state_.i253, align 8 - br label %for.body.i133 - -for.body.i133: ; preds = %for.body.i133, %_ZN10pcg_detailmiIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEES4_S6_EET0_RKNS_6engineIT_S7_T1_XT2_ET3_T4_EERKNS8_IS9_S7_SA_XT2_ET5_T6_EE.exit131 - %__first.addr.05.i135.idx = phi i64 [ %__first.addr.05.i135.add, %for.body.i133 ], [ 0, %_ZN10pcg_detailmiIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEES4_S6_EET0_RKNS_6engineIT_S7_T1_XT2_ET3_T4_EERKNS8_IS9_S7_SA_XT2_ET5_T6_EE.exit131 ] - %indvars272 = trunc i64 %__first.addr.05.i135.idx to i8 - %__first.addr.05.i135.ptr = getelementptr inbounds i8, ptr %cards, i64 %__first.addr.05.i135.idx - store i8 %indvars272, ptr %__first.addr.05.i135.ptr, align 1 - %__first.addr.05.i135.add = add nuw nsw i64 %__first.addr.05.i135.idx, 1 - %cmp.not.i139 = icmp eq i64 %__first.addr.05.i135.add, 52 - br i1 %cmp.not.i139, label %while.body.i145.preheader, label %for.body.i133, !llvm.loop !16 - -while.body.i145.preheader: ; preds = %for.body.i133 - %state_.i253.promoted = load i64, ptr %state_.i253, align 8 - br label %while.body.i145 - -while.body.i145: ; preds = %while.body.i145.preheader, %_ZN10pcg_extras12bounded_randIN10pcg_detail6engineIjmNS1_12xsh_rr_mixinIjmEELb1ENS1_15specific_streamImEENS1_18default_multiplierImEEEEEENT_11result_typeERSA_SB_.exit.i - %state_.i.i.promoted.i.i148278 = phi i64 [ %add.i.i.i.i.i152, %_ZN10pcg_extras12bounded_randIN10pcg_detail6engineIjmNS1_12xsh_rr_mixinIjmEELb1ENS1_15specific_streamImEENS1_18default_multiplierImEEEEEENT_11result_typeERSA_SB_.exit.i ], [ %state_.i253.promoted, %while.body.i145.preheader ] - %to.addr.08.i = phi ptr [ %incdec.ptr.i164, %_ZN10pcg_extras12bounded_randIN10pcg_detail6engineIjmNS1_12xsh_rr_mixinIjmEELb1ENS1_15specific_streamImEENS1_18default_multiplierImEEEEEENT_11result_typeERSA_SB_.exit.i ], [ %add.ptr.i, %while.body.i145.preheader ] - %count.07.i = phi i64 [ %dec.i, %_ZN10pcg_extras12bounded_randIN10pcg_detail6engineIjmNS1_12xsh_rr_mixinIjmEELb1ENS1_15specific_streamImEENS1_18default_multiplierImEEEEEENT_11result_typeERSA_SB_.exit.i ], [ 52, %while.body.i145.preheader ] - %conv.i146 = trunc i64 %count.07.i to i32 - %sub2.i.i = sub i32 0, %conv.i146 - %rem.i.i147 = urem i32 %sub2.i.i, %conv.i146 - br label %for.cond.i.i149 - -for.cond.i.i149: ; preds = %for.cond.i.i149, %while.body.i145 - %add.i.i.i4.i.i150 = phi i64 [ %add.i.i.i.i.i152, %for.cond.i.i149 ], [ %state_.i.i.promoted.i.i148278, %while.body.i145 ] - %mul.i.i.i.i.i151 = mul i64 %add.i.i.i4.i.i150, 6364136223846793005 - %add.i.i.i.i.i152 = add i64 %mul.i.i.i.i.i151, %rng_copy.sroa.0.0.copyload224 - %shr.i.i.i.i153 = lshr i64 %add.i.i.i4.i.i150, 59 - %conv5.i.i.i.i154 = trunc i64 %shr.i.i.i.i153 to i32 - %57 = lshr i64 %add.i.i.i4.i.i150, 45 - %58 = lshr i64 %add.i.i.i4.i.i150, 27 - %shr7.i.i.i.i155 = xor i64 %57, %58 - %conv8.i.i.i.i156 = trunc i64 %shr7.i.i.i.i155 to i32 - %shr.i.i.i.i.i157 = lshr i32 %conv8.i.i.i.i156, %conv5.i.i.i.i154 - %sub.i.i.i.i.i158 = sub nsw i32 0, %conv5.i.i.i.i154 - %and.i.i.i.i.i159 = and i32 %sub.i.i.i.i.i158, 31 - %shl.i.i.i.i.i160 = shl i32 %conv8.i.i.i.i156, %and.i.i.i.i.i159 - %or.i.i.i.i.i161 = or i32 %shl.i.i.i.i.i160, %shr.i.i.i.i.i157 - %cmp.not.i.i162 = icmp ult i32 %or.i.i.i.i.i161, %rem.i.i147 - br i1 %cmp.not.i.i162, label %for.cond.i.i149, label %_ZN10pcg_extras12bounded_randIN10pcg_detail6engineIjmNS1_12xsh_rr_mixinIjmEELb1ENS1_15specific_streamImEENS1_18default_multiplierImEEEEEENT_11result_typeERSA_SB_.exit.i, !llvm.loop !13 - -_ZN10pcg_extras12bounded_randIN10pcg_detail6engineIjmNS1_12xsh_rr_mixinIjmEELb1ENS1_15specific_streamImEENS1_18default_multiplierImEEEEEENT_11result_typeERSA_SB_.exit.i: ; preds = %for.cond.i.i149 - %rem6.i.i163 = urem i32 %or.i.i.i.i.i161, %conv.i146 - %conv1.i = zext i32 %rem6.i.i163 to i64 + %cmp13.not.i73 = icmp eq i64 %51, 0 + %sub15.i74 = sub i64 0, %add11.i72 + %spec.select.i75 = select i1 %cmp13.not.i73, i64 %add11.i72, i64 %sub15.i74 + %52 = xor i64 %spec.select.i75, %add.i69 + %cmp2.not16.i.i76 = icmp eq i64 %52, 0 + br i1 %cmp2.not16.i.i76, label %_ZN10pcg_detailmiIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEES4_S6_EET0_RKNS_6engineIT_S7_T1_XT2_ET3_T4_EERKNS8_IS9_S7_SA_XT2_ET5_T6_EE.exit119, label %while.body.i.i77 + +while.body.i.i77: ; preds = %if.else.i67, %while.body.i.i77 + %53 = phi i64 [ %55, %while.body.i.i77 ], [ %52, %if.else.i67 ] + %distance.021.i.i78 = phi i64 [ %distance.1.i.i86, %while.body.i.i77 ], [ 0, %if.else.i67 ] + %the_bit.020.i.i79 = phi i64 [ %shl.i.i87, %while.body.i.i77 ], [ 4, %if.else.i67 ] + %cur_state.addr.019.i.i80 = phi i64 [ %cur_state.addr.1.i.i84, %while.body.i.i77 ], [ %spec.select.i75, %if.else.i67 ] + %cur_mult.addr.018.i.i81 = phi i64 [ %mul8.i.i88, %while.body.i.i77 ], [ 6364136223846793005, %if.else.i67 ] + %54 = and i64 %the_bit.020.i.i79, %53 + %cmp5.not.i.i82 = icmp eq i64 %54, 0 + %mul.i.i83 = select i1 %cmp5.not.i.i82, i64 1, i64 %cur_mult.addr.018.i.i81 + %cur_state.addr.1.i.i84 = mul i64 %mul.i.i83, %cur_state.addr.019.i.i80 + %or.i.i85 = select i1 %cmp5.not.i.i82, i64 0, i64 %the_bit.020.i.i79 + %distance.1.i.i86 = or i64 %or.i.i85, %distance.021.i.i78 + %shl.i.i87 = shl i64 %the_bit.020.i.i79, 1 + %mul8.i.i88 = mul i64 %cur_mult.addr.018.i.i81, %cur_mult.addr.018.i.i81 + %55 = xor i64 %cur_state.addr.1.i.i84, %add.i69 + %cmp2.not.i.i89 = icmp eq i64 %55, 0 + br i1 %cmp2.not.i.i89, label %_ZN10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE8distanceEmmmmm.exit.loopexit.i90, label %while.body.i.i77, !llvm.loop !15 + +_ZN10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE8distanceEmmmmm.exit.loopexit.i90: ; preds = %while.body.i.i77 + %56 = lshr exact i64 %distance.1.i.i86, 2 + br label %_ZN10pcg_detailmiIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEES4_S6_EET0_RKNS_6engineIT_S7_T1_XT2_ET3_T4_EERKNS8_IS9_S7_SA_XT2_ET5_T6_EE.exit119 + +_ZN10pcg_detailmiIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEES4_S6_EET0_RKNS_6engineIT_S7_T1_XT2_ET3_T4_EERKNS8_IS9_S7_SA_XT2_ET5_T6_EE.exit119: ; preds = %_ZNK10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE8distanceEmm.exit.i115, %if.else.i67, %_ZN10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE8distanceEmmmmm.exit.loopexit.i90 + %retval.0.i91 = phi i64 [ %cond10.i.i.i118, %_ZNK10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE8distanceEmm.exit.i115 ], [ 0, %if.else.i67 ], [ %56, %_ZN10pcg_detail6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEE8distanceEmmmmm.exit.loopexit.i90 ] + store i64 %rng_copy.sroa.0.0.copyload208, ptr %rng, align 8 + store i64 %rng_copy.sroa.6.0.copyload211, ptr %state_.i237, align 8 + br label %for.body.i121 + +for.body.i121: ; preds = %for.body.i121, %_ZN10pcg_detailmiIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEES4_S6_EET0_RKNS_6engineIT_S7_T1_XT2_ET3_T4_EERKNS8_IS9_S7_SA_XT2_ET5_T6_EE.exit119 + %__first.addr.05.i123.idx = phi i64 [ %__first.addr.05.i123.add, %for.body.i121 ], [ 0, %_ZN10pcg_detailmiIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEES4_S6_EET0_RKNS_6engineIT_S7_T1_XT2_ET3_T4_EERKNS8_IS9_S7_SA_XT2_ET5_T6_EE.exit119 ] + %indvars256 = trunc i64 %__first.addr.05.i123.idx to i8 + %__first.addr.05.i123.ptr = getelementptr inbounds i8, ptr %cards, i64 %__first.addr.05.i123.idx + store i8 %indvars256, ptr %__first.addr.05.i123.ptr, align 1 + %__first.addr.05.i123.add = add nuw nsw i64 %__first.addr.05.i123.idx, 1 + %cmp.not.i127 = icmp eq i64 %__first.addr.05.i123.add, 52 + br i1 %cmp.not.i127, label %while.body.i133.preheader, label %for.body.i121, !llvm.loop !16 + +while.body.i133.preheader: ; preds = %for.body.i121 + %state_.i237.promoted = load i64, ptr %state_.i237, align 8 + br label %while.body.i133 + +while.body.i133: ; preds = %while.body.i133.preheader, %_ZN10pcg_extras12bounded_randIN10pcg_detail6engineIjmNS1_12xsh_rr_mixinIjmEELb1ENS1_15specific_streamImEENS1_18default_multiplierImEEEEEENT_11result_typeERSA_SB_.exit.i + %state_.i.i.promoted.i.i136262 = phi i64 [ %add.i.i.i.i.i140, %_ZN10pcg_extras12bounded_randIN10pcg_detail6engineIjmNS1_12xsh_rr_mixinIjmEELb1ENS1_15specific_streamImEENS1_18default_multiplierImEEEEEENT_11result_typeERSA_SB_.exit.i ], [ %state_.i237.promoted, %while.body.i133.preheader ] + %to.addr.08.i = phi ptr [ %incdec.ptr.i148, %_ZN10pcg_extras12bounded_randIN10pcg_detail6engineIjmNS1_12xsh_rr_mixinIjmEELb1ENS1_15specific_streamImEENS1_18default_multiplierImEEEEEENT_11result_typeERSA_SB_.exit.i ], [ %add.ptr.i, %while.body.i133.preheader ] + %count.07.i = phi i64 [ %dec.i, %_ZN10pcg_extras12bounded_randIN10pcg_detail6engineIjmNS1_12xsh_rr_mixinIjmEELb1ENS1_15specific_streamImEENS1_18default_multiplierImEEEEEENT_11result_typeERSA_SB_.exit.i ], [ 52, %while.body.i133.preheader ] + %conv.i134 = trunc i64 %count.07.i to i32 + %sub2.i.i = sub i32 0, %conv.i134 + %rem.i.i135 = urem i32 %sub2.i.i, %conv.i134 + br label %for.cond.i.i137 + +for.cond.i.i137: ; preds = %for.cond.i.i137, %while.body.i133 + %add.i.i.i4.i.i138 = phi i64 [ %add.i.i.i.i.i140, %for.cond.i.i137 ], [ %state_.i.i.promoted.i.i136262, %while.body.i133 ] + %mul.i.i.i.i.i139 = mul i64 %add.i.i.i4.i.i138, 6364136223846793005 + %add.i.i.i.i.i140 = add i64 %mul.i.i.i.i.i139, %rng_copy.sroa.0.0.copyload208 + %shr.i.i.i.i141 = lshr i64 %add.i.i.i4.i.i138, 59 + %conv5.i.i.i.i142 = trunc i64 %shr.i.i.i.i141 to i32 + %57 = lshr i64 %add.i.i.i4.i.i138, 45 + %58 = lshr i64 %add.i.i.i4.i.i138, 27 + %shr7.i.i.i.i143 = xor i64 %57, %58 + %conv8.i.i.i.i144 = trunc i64 %shr7.i.i.i.i143 to i32 + %or.i.i.i.i.i145 = call noundef i32 @llvm.fshr.i32(i32 %conv8.i.i.i.i144, i32 %conv8.i.i.i.i144, i32 %conv5.i.i.i.i142) + %cmp.not.i.i146 = icmp ult i32 %or.i.i.i.i.i145, %rem.i.i135 + br i1 %cmp.not.i.i146, label %for.cond.i.i137, label %_ZN10pcg_extras12bounded_randIN10pcg_detail6engineIjmNS1_12xsh_rr_mixinIjmEELb1ENS1_15specific_streamImEENS1_18default_multiplierImEEEEEENT_11result_typeERSA_SB_.exit.i, !llvm.loop !13 + +_ZN10pcg_extras12bounded_randIN10pcg_detail6engineIjmNS1_12xsh_rr_mixinIjmEELb1ENS1_15specific_streamImEENS1_18default_multiplierImEEEEEENT_11result_typeERSA_SB_.exit.i: ; preds = %for.cond.i.i137 + %rem6.i.i147 = urem i32 %or.i.i.i.i.i145, %conv.i134 + %conv1.i = zext i32 %rem6.i.i147 to i64 %dec.i = add nsw i64 %count.07.i, -1 - %incdec.ptr.i164 = getelementptr inbounds i8, ptr %to.addr.08.i, i64 -1 - %add.ptr.i165 = getelementptr inbounds i8, ptr %cards, i64 %conv1.i - %59 = load i8, ptr %add.ptr.i165, align 1 - %60 = load i8, ptr %incdec.ptr.i164, align 1 - store i8 %60, ptr %add.ptr.i165, align 1 - store i8 %59, ptr %incdec.ptr.i164, align 1 - %cmp.i166 = icmp ugt i64 %count.07.i, 2 - br i1 %cmp.i166, label %while.body.i145, label %if.then.i194, !llvm.loop !18 - -if.then.i194: ; preds = %_ZN10pcg_extras12bounded_randIN10pcg_detail6engineIjmNS1_12xsh_rr_mixinIjmEELb1ENS1_15specific_streamImEENS1_18default_multiplierImEEEEEENT_11result_typeERSA_SB_.exit.i - store i64 %add.i.i.i.i.i152, ptr %state_.i253, align 8 - %cmp.i.i.i196 = icmp eq i64 %rng_copy.sroa.0.0.copyload224, 0 - %61 = xor i64 %add.i.i.i.i.i152, %rng_copy.sroa.6.0.copyload227 - %cmp2.not16.i.i.i197 = icmp eq i64 %61, 0 - br i1 %cmp2.not16.i.i.i197, label %_ZN10pcg_detailmiIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEES4_S6_EET0_RKNS_6engineIT_S7_T1_XT2_ET3_T4_EERKNS8_IS9_S7_SA_XT2_ET5_T6_EE.exit221, label %while.body.preheader.i.i.i198 - -while.body.preheader.i.i.i198: ; preds = %if.then.i194 - %cond.i.i.i199 = select i1 %cmp.i.i.i196, i64 4, i64 1 - br label %while.body.i.i.i200 - -while.body.i.i.i200: ; preds = %while.body.i.i.i200, %while.body.preheader.i.i.i198 - %62 = phi i64 [ %64, %while.body.i.i.i200 ], [ %61, %while.body.preheader.i.i.i198 ] - %distance.021.i.i.i201 = phi i64 [ %distance.1.i.i.i211, %while.body.i.i.i200 ], [ 0, %while.body.preheader.i.i.i198 ] - %the_bit.020.i.i.i202 = phi i64 [ %shl.i.i.i212, %while.body.i.i.i200 ], [ %cond.i.i.i199, %while.body.preheader.i.i.i198 ] - %cur_state.addr.019.i.i.i203 = phi i64 [ %cur_state.addr.1.i.i.i209, %while.body.i.i.i200 ], [ %rng_copy.sroa.6.0.copyload227, %while.body.preheader.i.i.i198 ] - %cur_mult.addr.018.i.i.i204 = phi i64 [ %mul8.i.i.i215, %while.body.i.i.i200 ], [ 6364136223846793005, %while.body.preheader.i.i.i198 ] - %cur_plus.addr.017.i.i.i205 = phi i64 [ %mul7.i.i.i214, %while.body.i.i.i200 ], [ %rng_copy.sroa.0.0.copyload224, %while.body.preheader.i.i.i198 ] - %63 = and i64 %the_bit.020.i.i.i202, %62 - %cmp5.not.i.i.i206 = icmp eq i64 %63, 0 - %mul.i.i.i207 = mul i64 %cur_mult.addr.018.i.i.i204, %cur_state.addr.019.i.i.i203 - %add.i.i.i208 = add i64 %mul.i.i.i207, %cur_plus.addr.017.i.i.i205 - %cur_state.addr.1.i.i.i209 = select i1 %cmp5.not.i.i.i206, i64 %cur_state.addr.019.i.i.i203, i64 %add.i.i.i208 - %or.i.i.i210 = select i1 %cmp5.not.i.i.i206, i64 0, i64 %the_bit.020.i.i.i202 - %distance.1.i.i.i211 = or i64 %or.i.i.i210, %distance.021.i.i.i201 - %shl.i.i.i212 = shl i64 %the_bit.020.i.i.i202, 1 - %add6.i.i.i213 = add i64 %cur_mult.addr.018.i.i.i204, 1 - %mul7.i.i.i214 = mul i64 %add6.i.i.i213, %cur_plus.addr.017.i.i.i205 - %mul8.i.i.i215 = mul i64 %cur_mult.addr.018.i.i.i204, %cur_mult.addr.018.i.i.i204 - %64 = xor i64 %cur_state.addr.1.i.i.i209, %add.i.i.i.i.i152 - %cmp2.not.i.i.i216 = icmp eq i64 %64, 0 - br i1 %cmp2.not.i.i.i216, label %_ZN10pcg_detailmiIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEES4_S6_EET0_RKNS_6engineIT_S7_T1_XT2_ET3_T4_EERKNS8_IS9_S7_SA_XT2_ET5_T6_EE.exit221, label %while.body.i.i.i200, !llvm.loop !15 - -_ZN10pcg_detailmiIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEES4_S6_EET0_RKNS_6engineIT_S7_T1_XT2_ET3_T4_EERKNS8_IS9_S7_SA_XT2_ET5_T6_EE.exit221: ; preds = %while.body.i.i.i200, %if.then.i194 - %distance.0.lcssa.i.i.i218 = phi i64 [ 0, %if.then.i194 ], [ %distance.1.i.i.i211, %while.body.i.i.i200 ] - %shr.i.i.i219 = lshr i64 %distance.0.lcssa.i.i.i218, 2 + %incdec.ptr.i148 = getelementptr inbounds i8, ptr %to.addr.08.i, i64 -1 + %add.ptr.i149 = getelementptr inbounds i8, ptr %cards, i64 %conv1.i + %59 = load i8, ptr %add.ptr.i149, align 1 + %60 = load i8, ptr %incdec.ptr.i148, align 1 + store i8 %60, ptr %add.ptr.i149, align 1 + store i8 %59, ptr %incdec.ptr.i148, align 1 + %cmp.i150 = icmp ugt i64 %count.07.i, 2 + br i1 %cmp.i150, label %while.body.i133, label %if.then.i178, !llvm.loop !18 + +if.then.i178: ; preds = %_ZN10pcg_extras12bounded_randIN10pcg_detail6engineIjmNS1_12xsh_rr_mixinIjmEELb1ENS1_15specific_streamImEENS1_18default_multiplierImEEEEEENT_11result_typeERSA_SB_.exit.i + store i64 %add.i.i.i.i.i140, ptr %state_.i237, align 8 + %cmp.i.i.i180 = icmp eq i64 %rng_copy.sroa.0.0.copyload208, 0 + %61 = xor i64 %add.i.i.i.i.i140, %rng_copy.sroa.6.0.copyload211 + %cmp2.not16.i.i.i181 = icmp eq i64 %61, 0 + br i1 %cmp2.not16.i.i.i181, label %_ZN10pcg_detailmiIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEES4_S6_EET0_RKNS_6engineIT_S7_T1_XT2_ET3_T4_EERKNS8_IS9_S7_SA_XT2_ET5_T6_EE.exit205, label %while.body.preheader.i.i.i182 + +while.body.preheader.i.i.i182: ; preds = %if.then.i178 + %cond.i.i.i183 = select i1 %cmp.i.i.i180, i64 4, i64 1 + br label %while.body.i.i.i184 + +while.body.i.i.i184: ; preds = %while.body.i.i.i184, %while.body.preheader.i.i.i182 + %62 = phi i64 [ %64, %while.body.i.i.i184 ], [ %61, %while.body.preheader.i.i.i182 ] + %distance.021.i.i.i185 = phi i64 [ %distance.1.i.i.i195, %while.body.i.i.i184 ], [ 0, %while.body.preheader.i.i.i182 ] + %the_bit.020.i.i.i186 = phi i64 [ %shl.i.i.i196, %while.body.i.i.i184 ], [ %cond.i.i.i183, %while.body.preheader.i.i.i182 ] + %cur_state.addr.019.i.i.i187 = phi i64 [ %cur_state.addr.1.i.i.i193, %while.body.i.i.i184 ], [ %rng_copy.sroa.6.0.copyload211, %while.body.preheader.i.i.i182 ] + %cur_mult.addr.018.i.i.i188 = phi i64 [ %mul8.i.i.i199, %while.body.i.i.i184 ], [ 6364136223846793005, %while.body.preheader.i.i.i182 ] + %cur_plus.addr.017.i.i.i189 = phi i64 [ %mul7.i.i.i198, %while.body.i.i.i184 ], [ %rng_copy.sroa.0.0.copyload208, %while.body.preheader.i.i.i182 ] + %63 = and i64 %the_bit.020.i.i.i186, %62 + %cmp5.not.i.i.i190 = icmp eq i64 %63, 0 + %mul.i.i.i191 = mul i64 %cur_mult.addr.018.i.i.i188, %cur_state.addr.019.i.i.i187 + %add.i.i.i192 = add i64 %mul.i.i.i191, %cur_plus.addr.017.i.i.i189 + %cur_state.addr.1.i.i.i193 = select i1 %cmp5.not.i.i.i190, i64 %cur_state.addr.019.i.i.i187, i64 %add.i.i.i192 + %or.i.i.i194 = select i1 %cmp5.not.i.i.i190, i64 0, i64 %the_bit.020.i.i.i186 + %distance.1.i.i.i195 = or i64 %or.i.i.i194, %distance.021.i.i.i185 + %shl.i.i.i196 = shl i64 %the_bit.020.i.i.i186, 1 + %add6.i.i.i197 = add i64 %cur_mult.addr.018.i.i.i188, 1 + %mul7.i.i.i198 = mul i64 %add6.i.i.i197, %cur_plus.addr.017.i.i.i189 + %mul8.i.i.i199 = mul i64 %cur_mult.addr.018.i.i.i188, %cur_mult.addr.018.i.i.i188 + %64 = xor i64 %cur_state.addr.1.i.i.i193, %add.i.i.i.i.i140 + %cmp2.not.i.i.i200 = icmp eq i64 %64, 0 + br i1 %cmp2.not.i.i.i200, label %_ZN10pcg_detailmiIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEES4_S6_EET0_RKNS_6engineIT_S7_T1_XT2_ET3_T4_EERKNS8_IS9_S7_SA_XT2_ET5_T6_EE.exit205, label %while.body.i.i.i184, !llvm.loop !15 + +_ZN10pcg_detailmiIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEES4_S6_EET0_RKNS_6engineIT_S7_T1_XT2_ET3_T4_EERKNS8_IS9_S7_SA_XT2_ET5_T6_EE.exit205: ; preds = %while.body.i.i.i184, %if.then.i178 + %distance.0.lcssa.i.i.i202 = phi i64 [ 0, %if.then.i178 ], [ %distance.1.i.i.i195, %while.body.i.i.i184 ] + %shr.i.i.i203 = lshr i64 %distance.0.lcssa.i.i.i202, 2 %call131 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.22) br label %for.body137 -for.body137: ; preds = %_ZN10pcg_detailmiIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEES4_S6_EET0_RKNS_6engineIT_S7_T1_XT2_ET3_T4_EERKNS8_IS9_S7_SA_XT2_ET5_T6_EE.exit221, %for.inc152 - %__begin2.0.idx265 = phi i64 [ 0, %_ZN10pcg_detailmiIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEES4_S6_EET0_RKNS_6engineIT_S7_T1_XT2_ET3_T4_EERKNS8_IS9_S7_SA_XT2_ET5_T6_EE.exit221 ], [ %__begin2.0.add, %for.inc152 ] - %__begin2.0.ptr = getelementptr inbounds i8, ptr %cards, i64 %__begin2.0.idx265 +for.body137: ; preds = %_ZN10pcg_detailmiIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEES4_S6_EET0_RKNS_6engineIT_S7_T1_XT2_ET3_T4_EERKNS8_IS9_S7_SA_XT2_ET5_T6_EE.exit205, %for.inc152 + %__begin2.0.idx249 = phi i64 [ 0, %_ZN10pcg_detailmiIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEES4_S6_EET0_RKNS_6engineIT_S7_T1_XT2_ET3_T4_EERKNS8_IS9_S7_SA_XT2_ET5_T6_EE.exit205 ], [ %__begin2.0.add, %for.inc152 ] + %__begin2.0.ptr = getelementptr inbounds i8, ptr %cards, i64 %__begin2.0.idx249 %65 = load i8, ptr %__begin2.0.ptr, align 1 - %__begin2.0.add = add nuw nsw i64 %__begin2.0.idx265, 1 + %__begin2.0.add = add nuw nsw i64 %__begin2.0.idx249, 1 %indvars = trunc i64 %__begin2.0.add to i32 %call139 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.19) - %div258 = sdiv i8 %65, 4 - %idxprom = sext i8 %div258 to i64 + %div242 = sdiv i8 %65, 4 + %idxprom = sext i8 %div242 to i64 %arrayidx140 = getelementptr inbounds [13 x i8], ptr @_ZZ4mainE6number, i64 0, i64 %idxprom %66 = load i8, ptr %arrayidx140, align 1 %call141 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_a(ptr noundef nonnull align 8 dereferenceable(8) %call139, i8 noundef signext %66) - %rem143259 = srem i8 %65, 4 - %idxprom144 = sext i8 %rem143259 to i64 + %rem143243 = srem i8 %65, 4 + %idxprom144 = sext i8 %rem143243 to i64 %arrayidx145 = getelementptr inbounds [4 x i8], ptr @_ZZ4mainE4suit, i64 0, i64 %idxprom144 %67 = load i8, ptr %arrayidx145, align 1 %call146 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_a(ptr noundef nonnull align 8 dereferenceable(8) %call141, i8 noundef signext %67) @@ -759,29 +739,29 @@ for.inc152: ; preds = %for.body137, %if.th br i1 %cmp136.not, label %for.end154, label %for.body137 for.end154: ; preds = %for.inc152 - %cond10.i.i.i220 = select i1 %cmp.i.i.i196, i64 %shr.i.i.i219, i64 %distance.0.lcssa.i.i.i218 + %cond10.i.i.i204 = select i1 %cmp.i.i.i180, i64 %shr.i.i.i203, i64 %distance.0.lcssa.i.i.i202 %call155 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.23) - %call156 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %call155, i64 noundef %retval.0.i103) + %call156 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %call155, i64 noundef %retval.0.i91) %call157 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %call156, ptr noundef nonnull @.str.21) - %cmp158 = icmp ugt i64 %retval.0.i103, 52 + %cmp158 = icmp ugt i64 %retval.0.i91, 52 br i1 %cmp158, label %if.then159, label %if.end163 if.then159: ; preds = %for.end154 %call160 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.24) - %sub = add i64 %retval.0.i103, -51 + %sub = add i64 %retval.0.i91, -51 %call161 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %call160, i64 noundef %sub) %call162 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %call161, ptr noundef nonnull @.str.25) br label %if.end163 if.end163: ; preds = %if.then159, %for.end154 %call164 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.26) - %call165 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %call164, i64 noundef %cond10.i.i.i220) + %call165 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %call164, i64 noundef %cond10.i.i.i204) %call166 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %call165, ptr noundef nonnull @.str.21) %call167 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.27) %call168 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %call167, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_) - %inc170 = add nuw i32 %round.0267, 1 - %exitcond274.not = icmp eq i32 %round.0267, %rounds.0250 - br i1 %exitcond274.not, label %for.end171, label %for.body, !llvm.loop !19 + %inc170 = add nuw i32 %round.0251, 1 + %exitcond258.not = icmp eq i32 %round.0251, %rounds.0234 + br i1 %exitcond258.not, label %for.end171, label %for.body, !llvm.loop !19 for.end171: ; preds = %if.end163, %if.end10 ret i32 0 @@ -842,8 +822,8 @@ declare void @_ZNSt13random_device7_M_finiEv(ptr noundef nonnull align 8 derefer ; Function Attrs: noreturn nounwind uwtable define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) local_unnamed_addr #8 comdat { - %2 = tail call ptr @__cxa_begin_catch(ptr %0) #14 - tail call void @_ZSt9terminatev() #13 + %2 = tail call ptr @__cxa_begin_catch(ptr %0) #15 + tail call void @_ZSt9terminatev() #14 unreachable } @@ -856,7 +836,7 @@ define linkonce_odr dso_local void @_ZNSt13random_deviceC2Ev(ptr noundef nonnull entry: %ref.tmp = alloca %"class.std::__cxx11::basic_string", align 8 %ref.tmp2 = alloca %"class.std::allocator", align 1 - call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp2) #14 + call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp2) #15 %call.i2 = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) to label %call.i.noexc unwind label %lpad @@ -871,7 +851,7 @@ call.i.noexc: ; preds = %entry lpad.i: ; preds = %.noexc %0 = landingpad { ptr, i32 } cleanup - call void @_ZNSaIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp) #14 + call void @_ZNSaIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp) #15 br label %ehcleanup invoke.cont: ; preds = %.noexc @@ -879,8 +859,8 @@ invoke.cont: ; preds = %.noexc to label %invoke.cont4 unwind label %lpad3 invoke.cont4: ; preds = %invoke.cont - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) #14 - call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp2) #14 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) #15 + call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp2) #15 ret void lpad: ; preds = %call.i.noexc, %entry @@ -891,12 +871,12 @@ lpad: ; preds = %call.i.noexc, %entr lpad3: ; preds = %invoke.cont %2 = landingpad { ptr, i32 } cleanup - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) #14 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) #15 br label %ehcleanup ehcleanup: ; preds = %lpad, %lpad.i, %lpad3 %.pn = phi { ptr, i32 } [ %2, %lpad3 ], [ %1, %lpad ], [ %0, %lpad.i ] - call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp2) #14 + call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp2) #15 resume { ptr, i32 } %.pn } @@ -942,7 +922,7 @@ terminate.lpad.i: ; preds = %if.else %1 = landingpad { ptr, i32 } catch ptr null %2 = extractvalue { ptr, i32 } %1, 0 - tail call void @__clang_call_terminate(ptr %2) #13 + tail call void @__clang_call_terminate(ptr %2) #14 unreachable if.end: ; preds = %if.else, %if.then @@ -951,7 +931,7 @@ if.end: ; preds = %if.else, %if.then to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %if.end - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcPKcS7_(ptr noundef %call4, ptr noundef %__beg, ptr noundef %__end) #14 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcPKcS7_(ptr noundef %call4, ptr noundef %__beg, ptr noundef %__end) #15 store ptr null, ptr %__guard, align 8 %3 = load i64, ptr %__dnew, align 8 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_set_lengthEm(ptr noundef nonnull align 8 dereferenceable(32) %this, i64 noundef %3) @@ -963,7 +943,7 @@ _ZZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_ lpad: ; preds = %invoke.cont, %if.end %4 = landingpad { ptr, i32 } cleanup - call void @_ZZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tagEN6_GuardD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %__guard) #14 + call void @_ZZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tagEN6_GuardD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %__guard) #15 resume { ptr, i32 } %4 } @@ -998,7 +978,7 @@ terminate.lpad: ; preds = %if.then %1 = landingpad { ptr, i32 } catch ptr null %2 = extractvalue { ptr, i32 } %1, 0 - tail call void @__clang_call_terminate(ptr %2) #13 + tail call void @__clang_call_terminate(ptr %2) #14 unreachable } @@ -1035,11 +1015,7 @@ if.then: ; preds = %entry %6 = lshr i64 %3, 27 %shr7.i.i.i = xor i64 %5, %6 %conv8.i.i.i = trunc i64 %shr7.i.i.i to i32 - %shr.i.i.i.i = lshr i32 %conv8.i.i.i, %conv5.i.i.i - %sub.i.i.i.i = sub nsw i32 0, %conv5.i.i.i - %and.i.i.i.i = and i32 %sub.i.i.i.i, 31 - %shl.i.i.i.i = shl i32 %conv8.i.i.i, %and.i.i.i.i - %or.i.i.i.i = or i32 %shl.i.i.i.i, %shr.i.i.i.i + %or.i.i.i.i = tail call noundef i32 @llvm.fshr.i32(i32 %conv8.i.i.i, i32 %conv8.i.i.i, i32 %conv5.i.i.i) %conv.i = zext i32 %or.i.i.i.i to i64 %conv1.i = zext i32 %conv to i64 %mul.i = mul nuw i64 %conv.i, %conv1.i @@ -1050,8 +1026,8 @@ if.then: ; preds = %entry if.then.i: ; preds = %if.then %sub.i = xor i32 %2, -1 %rem.i = urem i32 %sub.i, %conv - %cmp321.i = icmp ugt i32 %rem.i, %conv2.i - br i1 %cmp321.i, label %while.body.i, label %_ZNSt24uniform_int_distributionImE5_S_ndImN10pcg_detail6engineIjmNS2_12xsh_rr_mixinIjmEELb1ENS2_15specific_streamImEENS2_18default_multiplierImEEEEjEET1_RT0_SB_.exit + %cmp317.i = icmp ugt i32 %rem.i, %conv2.i + br i1 %cmp317.i, label %while.body.i, label %_ZNSt24uniform_int_distributionImE5_S_ndImN10pcg_detail6engineIjmNS2_12xsh_rr_mixinIjmEELb1ENS2_15specific_streamImEENS2_18default_multiplierImEEEEjEET1_RT0_SB_.exit while.body.i: ; preds = %if.then.i, %while.body.i %7 = phi i64 [ %add.i.i.i11.i, %while.body.i ], [ %add.i.i.i.i, %if.then.i ] @@ -1063,12 +1039,8 @@ while.body.i: ; preds = %if.then.i, %while.b %9 = lshr i64 %7, 27 %shr7.i.i14.i = xor i64 %8, %9 %conv8.i.i15.i = trunc i64 %shr7.i.i14.i to i32 - %shr.i.i.i16.i = lshr i32 %conv8.i.i15.i, %conv5.i.i13.i - %sub.i.i.i17.i = sub nsw i32 0, %conv5.i.i13.i - %and.i.i.i18.i = and i32 %sub.i.i.i17.i, 31 - %shl.i.i.i19.i = shl i32 %conv8.i.i15.i, %and.i.i.i18.i - %or.i.i.i20.i = or i32 %shl.i.i.i19.i, %shr.i.i.i16.i - %conv5.i = zext i32 %or.i.i.i20.i to i64 + %or.i.i.i16.i = tail call noundef i32 @llvm.fshr.i32(i32 %conv8.i.i15.i, i32 %conv8.i.i15.i, i32 %conv5.i.i13.i) + %conv5.i = zext i32 %or.i.i.i16.i to i64 %mul7.i = mul nuw i64 %conv5.i, %conv1.i %conv8.i = trunc i64 %mul7.i to i32 %cmp3.i = icmp ugt i32 %rem.i, %conv8.i @@ -1109,35 +1081,27 @@ do.body: ; preds = %do.body.preheader, %13 = lshr i64 %10, 27 %shr7.i.i = xor i64 %12, %13 %conv8.i.i = trunc i64 %shr7.i.i to i32 - %shr.i.i.i15 = lshr i32 %conv8.i.i, %conv5.i.i - %sub.i.i.i = sub nsw i32 0, %conv5.i.i - %and.i.i.i = and i32 %sub.i.i.i, 31 - %shl.i.i.i = shl i32 %conv8.i.i, %and.i.i.i - %or.i.i.i = or i32 %shl.i.i.i, %shr.i.i.i15 + %or.i.i.i = call noundef i32 @llvm.fshr.i32(i32 %conv8.i.i, i32 %conv8.i.i, i32 %conv5.i.i) %conv9 = zext i32 %or.i.i.i to i64 %add11 = or disjoint i64 %mul, %conv9 %cmp12 = icmp ugt i64 %add11, %sub br i1 %cmp12, label %do.body, label %if.end18, !llvm.loop !21 if.else14: ; preds = %if.else - %state_.i.i16 = getelementptr inbounds %"class.pcg_detail::engine", ptr %__urng, i64 0, i32 1 - %14 = load i64, ptr %state_.i.i16, align 8 - %mul.i.i.i17 = mul i64 %14, 6364136223846793005 + %state_.i.i15 = getelementptr inbounds %"class.pcg_detail::engine", ptr %__urng, i64 0, i32 1 + %14 = load i64, ptr %state_.i.i15, align 8 + %mul.i.i.i16 = mul i64 %14, 6364136223846793005 %15 = load i64, ptr %__urng, align 8 - %add.i.i.i18 = add i64 %15, %mul.i.i.i17 - store i64 %add.i.i.i18, ptr %state_.i.i16, align 8 - %shr.i.i19 = lshr i64 %14, 59 - %conv5.i.i20 = trunc i64 %shr.i.i19 to i32 + %add.i.i.i17 = add i64 %15, %mul.i.i.i16 + store i64 %add.i.i.i17, ptr %state_.i.i15, align 8 + %shr.i.i18 = lshr i64 %14, 59 + %conv5.i.i19 = trunc i64 %shr.i.i18 to i32 %16 = lshr i64 %14, 45 %17 = lshr i64 %14, 27 - %shr7.i.i21 = xor i64 %16, %17 - %conv8.i.i22 = trunc i64 %shr7.i.i21 to i32 - %shr.i.i.i23 = lshr i32 %conv8.i.i22, %conv5.i.i20 - %sub.i.i.i24 = sub nsw i32 0, %conv5.i.i20 - %and.i.i.i25 = and i32 %sub.i.i.i24, 31 - %shl.i.i.i26 = shl i32 %conv8.i.i22, %and.i.i.i25 - %or.i.i.i27 = or i32 %shl.i.i.i26, %shr.i.i.i23 - %conv16 = zext i32 %or.i.i.i27 to i64 + %shr7.i.i20 = xor i64 %16, %17 + %conv8.i.i21 = trunc i64 %shr7.i.i20 to i32 + %or.i.i.i22 = tail call noundef i32 @llvm.fshr.i32(i32 %conv8.i.i21, i32 %conv8.i.i21, i32 %conv5.i.i19) + %conv16 = zext i32 %or.i.i.i22 to i64 br label %if.end18 if.end18: ; preds = %do.body, %if.else14, %_ZNSt24uniform_int_distributionImE5_S_ndImN10pcg_detail6engineIjmNS2_12xsh_rr_mixinIjmEELb1ENS2_15specific_streamImEENS2_18default_multiplierImEEEEjEET1_RT0_SB_.exit @@ -1151,15 +1115,18 @@ if.end18: ; preds = %do.body, %if.else14 define internal void @_GLOBAL__sub_I_pcg_demo.cpp() #10 section ".text.startup" { entry: tail call void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1) @_ZStL8__ioinit) - %0 = tail call i32 @__cxa_atexit(ptr nonnull @_ZNSt8ios_base4InitD1Ev, ptr nonnull @_ZStL8__ioinit, ptr nonnull @__dso_handle) #14 + %0 = tail call i32 @__cxa_atexit(ptr nonnull @_ZNSt8ios_base4InitD1Ev, ptr nonnull @_ZStL8__ioinit, ptr nonnull @__dso_handle) #15 ret void } +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.fshr.i32(i32, i32, i32) #11 + ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #11 +declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #12 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #11 +declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #12 attributes #0 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } @@ -1172,10 +1139,11 @@ attributes #7 = { mustprogress uwtable "frame-pointer"="all" "min-legal-vector-w attributes #8 = { noreturn nounwind uwtable "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #9 = { mustprogress nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #10 = { uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #11 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #12 = { nounwind willreturn memory(read) } -attributes #13 = { noreturn nounwind } -attributes #14 = { nounwind } +attributes #11 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #12 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #13 = { nounwind willreturn memory(read) } +attributes #14 = { noreturn nounwind } +attributes #15 = { nounwind } !llvm.module.flags = !{!0, !1, !2, !3, !4} diff --git a/bench/pcg-cpp/optimized/use-partytrick.cpp.ll b/bench/pcg-cpp/optimized/use-partytrick.cpp.ll index 69fe30df013..7a2ab207c28 100644 --- a/bench/pcg-cpp/optimized/use-partytrick.cpp.ll +++ b/bench/pcg-cpp/optimized/use-partytrick.cpp.ll @@ -62,32 +62,28 @@ entry: br label %for.body.i.i for.body.i.i: ; preds = %for.body.i.i, %entry - %i.027.i.i = phi i64 [ 0, %entry ], [ %inc.i.i, %for.body.i.i ] - %0 = phi i64 [ 458840393324832221, %entry ], [ %add.i.i.i17.i.i, %for.body.i.i ] - %mul.i.i.i16.i.i = mul i64 %0, 6364136223846793005 - %add.i.i.i17.i.i = add i64 %mul.i.i.i16.i.i, 1442695040888963407 - %shr.i.i18.i.i = lshr i64 %0, 59 - %conv5.i.i19.i.i = trunc i64 %shr.i.i18.i.i to i32 + %i.019.i.i = phi i64 [ 0, %entry ], [ %inc.i.i, %for.body.i.i ] + %0 = phi i64 [ 458840393324832221, %entry ], [ %add.i.i.i13.i.i, %for.body.i.i ] + %mul.i.i.i12.i.i = mul i64 %0, 6364136223846793005 + %add.i.i.i13.i.i = add i64 %mul.i.i.i12.i.i, 1442695040888963407 + %shr.i.i14.i.i = lshr i64 %0, 59 + %conv5.i.i15.i.i = trunc i64 %shr.i.i14.i.i to i32 %1 = lshr i64 %0, 45 %2 = lshr i64 %0, 27 - %shr7.i.i20.i.i = xor i64 %1, %2 - %conv8.i.i21.i.i = trunc i64 %shr7.i.i20.i.i to i32 - %shr.i.i.i22.i.i = lshr i32 %conv8.i.i21.i.i, %conv5.i.i19.i.i - %sub.i.i.i23.i.i = sub nsw i32 0, %conv5.i.i19.i.i - %and.i.i.i24.i.i = and i32 %sub.i.i.i23.i.i, 31 - %shl.i.i.i25.i.i = shl i32 %conv8.i.i21.i.i, %and.i.i.i24.i.i - %or.i.i.i26.i.i = or i32 %shl.i.i.i25.i.i, %shr.i.i.i22.i.i - %xor.i.i = xor i32 %or.i.i.i26.i.i, 256438689 - %arrayidx.i.i = getelementptr inbounds %"class.pcg_detail::extended", ptr %rng, i64 0, i32 1, i64 %i.027.i.i + %shr7.i.i16.i.i = xor i64 %1, %2 + %conv8.i.i17.i.i = trunc i64 %shr7.i.i16.i.i to i32 + %or.i.i.i18.i.i = tail call noundef i32 @llvm.fshr.i32(i32 %conv8.i.i17.i.i, i32 %conv8.i.i17.i.i, i32 %conv5.i.i15.i.i) + %xor.i.i = xor i32 %or.i.i.i18.i.i, 256438689 + %arrayidx.i.i = getelementptr inbounds %"class.pcg_detail::extended", ptr %rng, i64 0, i32 1, i64 %i.019.i.i store i32 %xor.i.i, ptr %arrayidx.i.i, align 4 - %inc.i.i = add nuw nsw i64 %i.027.i.i, 1 + %inc.i.i = add nuw nsw i64 %i.019.i.i, 1 %exitcond.not.i.i = icmp eq i64 %inc.i.i, 64 br i1 %exitcond.not.i.i, label %_ZN10pcg_detail8extendedILh6ELh16ENS_6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEEENS1_IjjNS_14rxs_m_xs_mixinIjjEELb1ENS_13oneseq_streamIjEENS6_IjEEEELb1EEC2Ev.exit, label %for.body.i.i, !llvm.loop !5 _ZN10pcg_detail8extendedILh6ELh16ENS_6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEEENS1_IjjNS_14rxs_m_xs_mixinIjjEELb1ENS_13oneseq_streamIjEENS6_IjEEEELb1EEC2Ev.exit: ; preds = %for.body.i.i %state_.i.i = getelementptr inbounds %"class.pcg_detail::engine", ptr %rng, i64 0, i32 1 store i64 6475785784497232925, ptr %state_.i.i, align 8 - call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp1) #11 + call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp1) #12 %call.i10 = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) to label %call.i.noexc9 unwind label %lpad @@ -102,7 +98,7 @@ call.i.noexc9: ; preds = %_ZN10pcg_detail8ext lpad.i: ; preds = %.noexc %3 = landingpad { ptr, i32 } cleanup - call void @_ZNSaIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp) #11 + call void @_ZNSaIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp) #12 br label %ehcleanup invoke.cont: ; preds = %.noexc @@ -110,8 +106,8 @@ invoke.cont: ; preds = %.noexc to label %invoke.cont3 unwind label %lpad2 invoke.cont3: ; preds = %invoke.cont - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) #11 - call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp1) #11 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) #12 + call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp1) #12 %call = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN10pcg_detailrsIcSt11char_traitsIcELh6ELh16ENS_6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEEENS3_IjjNS_14rxs_m_xs_mixinIjjEELb1ENS_13oneseq_streamIjEENS8_IjEEEELb1EEERSt13basic_istreamIT_T0_ESL_RNS_8extendedIXT1_EXT2_ET3_T4_XT5_EEE(ptr noundef nonnull align 8 dereferenceable(16) %inbuf, ptr noundef nonnull align 8 dereferenceable(272) %rng) to label %invoke.cont5 unwind label %lpad4.loopexit.split-lp.loopexit.split-lp @@ -128,7 +124,7 @@ invoke.cont9: ; preds = %invoke.cont7 to label %invoke.cont11 unwind label %lpad8 invoke.cont11: ; preds = %invoke.cont9 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp6) #11 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp6) #12 %vtable = load ptr, ptr %inbuf, align 8 %vbase.offset.ptr = getelementptr i8, ptr %vtable, i64 -24 %vbase.offset = load i64, ptr %vbase.offset.ptr, align 8 @@ -140,7 +136,7 @@ invoke.cont14: ; preds = %invoke.cont11 br i1 %call15, label %if.then, label %for.cond18.preheader if.then: ; preds = %invoke.cont14 - call void @abort() #12 + call void @abort() #13 unreachable lpad: ; preds = %call.i.noexc9, %_ZN10pcg_detail8extendedILh6ELh16ENS_6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEEENS1_IjjNS_14rxs_m_xs_mixinIjjEELb1ENS_13oneseq_streamIjEENS6_IjEEEELb1EEC2Ev.exit @@ -151,12 +147,12 @@ lpad: ; preds = %call.i.noexc9, %_ZN lpad2: ; preds = %invoke.cont %5 = landingpad { ptr, i32 } cleanup - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) #11 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) #12 br label %ehcleanup ehcleanup: ; preds = %lpad, %lpad.i, %lpad2 %.pn = phi { ptr, i32 } [ %5, %lpad2 ], [ %4, %lpad ], [ %3, %lpad.i ] - call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp1) #11 + call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp1) #12 br label %eh.resume lpad4.loopexit: ; preds = %if.then.i13, %if.end.i @@ -165,30 +161,30 @@ lpad4.loopexit: ; preds = %if.then.i13, %if.en br label %ehcleanup28 lpad4.loopexit.split-lp.loopexit: ; preds = %for.end - %lpad.loopexit19 = landingpad { ptr, i32 } + %lpad.loopexit18 = landingpad { ptr, i32 } cleanup br label %ehcleanup28 lpad4.loopexit.split-lp.loopexit.split-lp: ; preds = %invoke.cont11, %invoke.cont5, %invoke.cont3 - %lpad.loopexit.split-lp20 = landingpad { ptr, i32 } + %lpad.loopexit.split-lp19 = landingpad { ptr, i32 } cleanup br label %ehcleanup28 lpad8: ; preds = %invoke.cont9, %invoke.cont7 %6 = landingpad { ptr, i32 } cleanup - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp6) #11 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp6) #12 br label %ehcleanup28 for.cond18.preheader: ; preds = %invoke.cont14, %for.inc26 - %i.024 = phi i64 [ %inc, %for.inc26 ], [ 0, %invoke.cont14 ] + %i.023 = phi i64 [ %inc, %for.inc26 ], [ 0, %invoke.cont14 ] %.pre = load i64, ptr %state_.i.i, align 8 br label %for.body20 for.body20: ; preds = %for.cond18.preheader, %_ZN10pcg_detail8extendedILh6ELh16ENS_6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEEENS1_IjjNS_14rxs_m_xs_mixinIjjEELb1ENS_13oneseq_streamIjEENS6_IjEEEELb1EEclEv.exit %7 = phi i64 [ %.pre, %for.cond18.preheader ], [ %add.i.i.i, %_ZN10pcg_detail8extendedILh6ELh16ENS_6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEEENS1_IjjNS_14rxs_m_xs_mixinIjjEELb1ENS_13oneseq_streamIjEENS6_IjEEEELb1EEclEv.exit ] - %__begin2.0.ptr23 = phi ptr [ %buffer, %for.cond18.preheader ], [ %__begin2.0.ptr, %_ZN10pcg_detail8extendedILh6ELh16ENS_6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEEENS1_IjjNS_14rxs_m_xs_mixinIjjEELb1ENS_13oneseq_streamIjEENS6_IjEEEELb1EEclEv.exit ] - %__begin2.0.idx22 = phi i64 [ 0, %for.cond18.preheader ], [ %__begin2.0.add, %_ZN10pcg_detail8extendedILh6ELh16ENS_6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEEENS1_IjjNS_14rxs_m_xs_mixinIjjEELb1ENS_13oneseq_streamIjEENS6_IjEEEELb1EEclEv.exit ] + %__begin2.0.ptr22 = phi ptr [ %buffer, %for.cond18.preheader ], [ %__begin2.0.ptr, %_ZN10pcg_detail8extendedILh6ELh16ENS_6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEEENS1_IjjNS_14rxs_m_xs_mixinIjjEELb1ENS_13oneseq_streamIjEENS6_IjEEEELb1EEclEv.exit ] + %__begin2.0.idx21 = phi i64 [ 0, %for.cond18.preheader ], [ %__begin2.0.add, %_ZN10pcg_detail8extendedILh6ELh16ENS_6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEEENS1_IjjNS_14rxs_m_xs_mixinIjjEELb1ENS_13oneseq_streamIjEENS6_IjEEEELb1EEclEv.exit ] %and2.i = and i64 %7, 65535 %cmp.i = icmp eq i64 %and2.i, 0 br i1 %cmp.i, label %for.body.i, label %_ZN10pcg_detail8extendedILh6ELh16ENS_6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEEENS1_IjjNS_14rxs_m_xs_mixinIjjEELb1ENS_13oneseq_streamIjEENS6_IjEEEELb1EEclEv.exit @@ -205,21 +201,21 @@ if.then.i13: ; preds = %for.body.i %shr.i.i.i.i = lshr i32 %.pre.i, 22 %xor.i.i.i.i = xor i32 %shr.i.i.i.i, %.pre.i %mul.i.i.i14 = mul i32 %xor.i.i.i.i, -1397199511 - %shr.i.i.i15 = lshr i32 %mul.i.i.i14, 28 - %8 = trunc i32 %shr.i.i.i15 to i8 + %shr.i.i.i = lshr i32 %mul.i.i.i14, 28 + %8 = trunc i32 %shr.i.i.i to i8 %conv3.i.i.i = add nuw nsw i8 %8, 4 - %call4.i.i.i17 = invoke noundef i32 @_ZN10pcg_extras10unxorshiftIjEET_S1_hh(i32 noundef %mul.i.i.i14, i8 noundef zeroext 32, i8 noundef zeroext %conv3.i.i.i) + %call4.i.i.i16 = invoke noundef i32 @_ZN10pcg_extras10unxorshiftIjEET_S1_hh(i32 noundef %mul.i.i.i14, i8 noundef zeroext 32, i8 noundef zeroext %conv3.i.i.i) to label %call4.i.i.i.noexc unwind label %lpad4.loopexit call4.i.i.i.noexc: ; preds = %if.then.i13 - %mul.i.i = mul i32 %call4.i.i.i17, 747796405 + %mul.i.i = mul i32 %call4.i.i.i16, 747796405 %9 = trunc i64 %i.026.i to i32 %i.tr.i.i = shl nuw nsw i32 %9, 1 %add.i.i = add nuw nsw i32 %i.tr.i.i, -1403630841 %add4.i.i = add i32 %add.i.i, %mul.i.i %shr.i4.i.i = lshr i32 %add4.i.i, 28 - %add.i.i.i16 = add nuw nsw i32 %shr.i4.i.i, 4 - %shr4.i.i.i = lshr i32 %add4.i.i, %add.i.i.i16 + %add.i.i.i15 = add nuw nsw i32 %shr.i4.i.i, 4 + %shr4.i.i.i = lshr i32 %add4.i.i, %add.i.i.i15 %xor.i.i.i = xor i32 %shr4.i.i.i, %add4.i.i %mul.i5.i.i = mul i32 %xor.i.i.i, 277803737 %shr6.i.i.i = lshr i32 %mul.i5.i.i, 22 @@ -237,12 +233,12 @@ if.end.i: ; preds = %call4.i.i.i.noexc, %shr.i.i10.i = lshr i32 %mul.i.i9.i, 28 %11 = trunc i32 %shr.i.i10.i to i8 %conv3.i.i11.i = add nuw nsw i8 %11, 4 - %call4.i.i12.i18 = invoke noundef i32 @_ZN10pcg_extras10unxorshiftIjEET_S1_hh(i32 noundef %mul.i.i9.i, i8 noundef zeroext 32, i8 noundef zeroext %conv3.i.i11.i) + %call4.i.i12.i17 = invoke noundef i32 @_ZN10pcg_extras10unxorshiftIjEET_S1_hh(i32 noundef %mul.i.i9.i, i8 noundef zeroext 32, i8 noundef zeroext %conv3.i.i11.i) to label %call4.i.i12.i.noexc unwind label %lpad4.loopexit call4.i.i12.i.noexc: ; preds = %if.end.i %add4.i = add nuw nsw i64 %i.026.i, 1 - %mul.i13.i = mul i32 %call4.i.i12.i18, 747796405 + %mul.i13.i = mul i32 %call4.i.i12.i17, 747796405 %i.tr.i14.i = trunc i64 %add4.i to i32 %conv.i15.i = shl nuw nsw i32 %i.tr.i14.i, 1 %add.i16.i = add nuw nsw i32 %conv.i15.i, -1403630843 @@ -262,11 +258,11 @@ call4.i.i12.i.noexc: ; preds = %if.end.i br i1 %exitcond.not.i, label %_ZN10pcg_detail8extendedILh6ELh16ENS_6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEEENS1_IjjNS_14rxs_m_xs_mixinIjjEELb1ENS_13oneseq_streamIjEENS6_IjEEEELb1EEclEv.exit.loopexit, label %for.body.i, !llvm.loop !7 _ZN10pcg_detail8extendedILh6ELh16ENS_6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEEENS1_IjjNS_14rxs_m_xs_mixinIjjEELb1ENS_13oneseq_streamIjEENS6_IjEEEELb1EEclEv.exit.loopexit: ; preds = %call4.i.i12.i.noexc - %.pre25 = load i64, ptr %state_.i.i, align 8 + %.pre24 = load i64, ptr %state_.i.i, align 8 br label %_ZN10pcg_detail8extendedILh6ELh16ENS_6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEEENS1_IjjNS_14rxs_m_xs_mixinIjjEELb1ENS_13oneseq_streamIjEENS6_IjEEEELb1EEclEv.exit _ZN10pcg_detail8extendedILh6ELh16ENS_6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEEENS1_IjjNS_14rxs_m_xs_mixinIjjEELb1ENS_13oneseq_streamIjEENS6_IjEEEELb1EEclEv.exit: ; preds = %_ZN10pcg_detail8extendedILh6ELh16ENS_6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEEENS1_IjjNS_14rxs_m_xs_mixinIjjEELb1ENS_13oneseq_streamIjEENS6_IjEEEELb1EEclEv.exit.loopexit, %for.body20 - %13 = phi i64 [ %.pre25, %_ZN10pcg_detail8extendedILh6ELh16ENS_6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEEENS1_IjjNS_14rxs_m_xs_mixinIjjEELb1ENS_13oneseq_streamIjEENS6_IjEEEELb1EEclEv.exit.loopexit ], [ %7, %for.body20 ] + %13 = phi i64 [ %.pre24, %_ZN10pcg_detail8extendedILh6ELh16ENS_6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEEENS1_IjjNS_14rxs_m_xs_mixinIjjEELb1ENS_13oneseq_streamIjEENS6_IjEEEELb1EEclEv.exit.loopexit ], [ %7, %for.body20 ] %and.i = and i64 %7, 63 %arrayidx.i = getelementptr inbounds %"class.pcg_detail::extended", ptr %rng, i64 0, i32 1, i64 %and.i %14 = load i32, ptr %arrayidx.i, align 4 @@ -280,14 +276,10 @@ _ZN10pcg_detail8extendedILh6ELh16ENS_6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15sp %17 = lshr i64 %13, 27 %shr7.i.i = xor i64 %16, %17 %conv8.i.i = trunc i64 %shr7.i.i to i32 - %shr.i.i.i = lshr i32 %conv8.i.i, %conv5.i.i - %sub.i.i.i = sub nsw i32 0, %conv5.i.i - %and.i.i.i = and i32 %sub.i.i.i, 31 - %shl.i.i.i = shl i32 %conv8.i.i, %and.i.i.i - %or.i.i.i = or i32 %shl.i.i.i, %shr.i.i.i + %or.i.i.i = call noundef i32 @llvm.fshr.i32(i32 %conv8.i.i, i32 %conv8.i.i, i32 %conv5.i.i) %xor.i = xor i32 %or.i.i.i, %14 - store i32 %xor.i, ptr %__begin2.0.ptr23, align 4 - %__begin2.0.add = add nuw nsw i64 %__begin2.0.idx22, 4 + store i32 %xor.i, ptr %__begin2.0.ptr22, align 4 + %__begin2.0.add = add nuw nsw i64 %__begin2.0.idx21, 4 %__begin2.0.ptr = getelementptr inbounds i8, ptr %buffer, i64 %__begin2.0.add %cmp19.not = icmp eq i64 %__begin2.0.add, 524288 br i1 %cmp19.not, label %for.end, label %for.body20 @@ -297,17 +289,17 @@ for.end: ; preds = %_ZN10pcg_detail8ext to label %for.inc26 unwind label %lpad4.loopexit.split-lp.loopexit for.inc26: ; preds = %for.end - %inc = add nuw nsw i64 %i.024, 1 + %inc = add nuw nsw i64 %i.023, 1 %exitcond.not = icmp eq i64 %inc, 440320 br i1 %exitcond.not, label %for.end27, label %for.cond18.preheader, !llvm.loop !8 for.end27: ; preds = %for.inc26 - call void @_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(120) %inbuf) #11 + call void @_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(120) %inbuf) #12 ret i32 0 ehcleanup28: ; preds = %lpad4.loopexit, %lpad4.loopexit.split-lp.loopexit.split-lp, %lpad4.loopexit.split-lp.loopexit, %lpad8 - %.pn6 = phi { ptr, i32 } [ %6, %lpad8 ], [ %lpad.loopexit, %lpad4.loopexit ], [ %lpad.loopexit19, %lpad4.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp20, %lpad4.loopexit.split-lp.loopexit.split-lp ] - call void @_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(120) %inbuf) #11 + %.pn6 = phi { ptr, i32 } [ %6, %lpad8 ], [ %lpad.loopexit, %lpad4.loopexit ], [ %lpad.loopexit18, %lpad4.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp19, %lpad4.loopexit.split-lp.loopexit.split-lp ] + call void @_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(120) %inbuf) #12 br label %eh.resume eh.resume: ; preds = %ehcleanup28, %ehcleanup @@ -336,25 +328,21 @@ entry: br label %for.body.i.i for.body.i.i: ; preds = %for.body.i.i, %entry - %i.027.i.i = phi i64 [ 0, %entry ], [ %inc.i.i, %for.body.i.i ] - %0 = phi i64 [ 458840393324832221, %entry ], [ %add.i.i.i17.i.i, %for.body.i.i ] - %mul.i.i.i16.i.i = mul i64 %0, 6364136223846793005 - %add.i.i.i17.i.i = add i64 %mul.i.i.i16.i.i, 1442695040888963407 - %shr.i.i18.i.i = lshr i64 %0, 59 - %conv5.i.i19.i.i = trunc i64 %shr.i.i18.i.i to i32 + %i.019.i.i = phi i64 [ 0, %entry ], [ %inc.i.i, %for.body.i.i ] + %0 = phi i64 [ 458840393324832221, %entry ], [ %add.i.i.i13.i.i, %for.body.i.i ] + %mul.i.i.i12.i.i = mul i64 %0, 6364136223846793005 + %add.i.i.i13.i.i = add i64 %mul.i.i.i12.i.i, 1442695040888963407 + %shr.i.i14.i.i = lshr i64 %0, 59 + %conv5.i.i15.i.i = trunc i64 %shr.i.i14.i.i to i32 %1 = lshr i64 %0, 45 %2 = lshr i64 %0, 27 - %shr7.i.i20.i.i = xor i64 %1, %2 - %conv8.i.i21.i.i = trunc i64 %shr7.i.i20.i.i to i32 - %shr.i.i.i22.i.i = lshr i32 %conv8.i.i21.i.i, %conv5.i.i19.i.i - %sub.i.i.i23.i.i = sub nsw i32 0, %conv5.i.i19.i.i - %and.i.i.i24.i.i = and i32 %sub.i.i.i23.i.i, 31 - %shl.i.i.i25.i.i = shl i32 %conv8.i.i21.i.i, %and.i.i.i24.i.i - %or.i.i.i26.i.i = or i32 %shl.i.i.i25.i.i, %shr.i.i.i22.i.i - %xor.i.i = xor i32 %or.i.i.i26.i.i, 256438689 - %arrayidx.i.i = getelementptr inbounds %"class.pcg_detail::extended", ptr %new_rng, i64 0, i32 1, i64 %i.027.i.i + %shr7.i.i16.i.i = xor i64 %1, %2 + %conv8.i.i17.i.i = trunc i64 %shr7.i.i16.i.i to i32 + %or.i.i.i18.i.i = tail call noundef i32 @llvm.fshr.i32(i32 %conv8.i.i17.i.i, i32 %conv8.i.i17.i.i, i32 %conv5.i.i15.i.i) + %xor.i.i = xor i32 %or.i.i.i18.i.i, 256438689 + %arrayidx.i.i = getelementptr inbounds %"class.pcg_detail::extended", ptr %new_rng, i64 0, i32 1, i64 %i.019.i.i store i32 %xor.i.i, ptr %arrayidx.i.i, align 4 - %inc.i.i = add nuw nsw i64 %i.027.i.i, 1 + %inc.i.i = add nuw nsw i64 %i.019.i.i, 1 %exitcond.not.i.i = icmp eq i64 %inc.i.i, 64 br i1 %exitcond.not.i.i, label %_ZN10pcg_detail8extendedILh6ELh16ENS_6engineIjmNS_12xsh_rr_mixinIjmEELb1ENS_15specific_streamImEENS_18default_multiplierImEEEENS1_IjjNS_14rxs_m_xs_mixinIjjEELb1ENS_13oneseq_streamIjEENS6_IjEEEELb1EEC2Ev.exit, label %for.body.i.i, !llvm.loop !5 @@ -460,7 +448,7 @@ terminate.lpad.i: ; preds = %if.else %1 = landingpad { ptr, i32 } catch ptr null %2 = extractvalue { ptr, i32 } %1, 0 - tail call void @__clang_call_terminate(ptr %2) #12 + tail call void @__clang_call_terminate(ptr %2) #13 unreachable if.end: ; preds = %if.else, %if.then @@ -469,7 +457,7 @@ if.end: ; preds = %if.else, %if.then to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %if.end - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcPKcS7_(ptr noundef %call4, ptr noundef %__beg, ptr noundef %__end) #11 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcPKcS7_(ptr noundef %call4, ptr noundef %__beg, ptr noundef %__end) #12 store ptr null, ptr %__guard, align 8 %3 = load i64, ptr %__dnew, align 8 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_set_lengthEm(ptr noundef nonnull align 8 dereferenceable(32) %this, i64 noundef %3) @@ -481,7 +469,7 @@ _ZZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_ lpad: ; preds = %invoke.cont, %if.end %4 = landingpad { ptr, i32 } cleanup - call void @_ZZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tagEN6_GuardD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %__guard) #11 + call void @_ZZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tagEN6_GuardD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %__guard) #12 resume { ptr, i32 } %4 } @@ -516,14 +504,14 @@ terminate.lpad: ; preds = %if.then %1 = landingpad { ptr, i32 } catch ptr null %2 = extractvalue { ptr, i32 } %1, 0 - tail call void @__clang_call_terminate(ptr %2) #12 + tail call void @__clang_call_terminate(ptr %2) #13 unreachable } ; Function Attrs: noreturn nounwind uwtable define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) local_unnamed_addr #8 comdat { - %2 = tail call ptr @__cxa_begin_catch(ptr %0) #11 - tail call void @_ZSt9terminatev() #12 + %2 = tail call ptr @__cxa_begin_catch(ptr %0) #12 + tail call void @_ZSt9terminatev() #13 unreachable } @@ -626,7 +614,7 @@ if.end: ; preds = %entry %shr8 = lshr i32 %x, %conv %xor9 = xor i32 %shr8, %x %and10 = and i32 %notmask, %xor9 - %or = or i32 %and10, %and + %or = or disjoint i32 %and10, %and %sub13 = sub nsw i32 %conv1, %conv %notmask22 = shl nsw i32 -1, %sub13 %sub15 = xor i32 %notmask22, -1 @@ -634,7 +622,7 @@ if.end: ; preds = %entry %conv20 = trunc i32 %sub13 to i8 %call = tail call noundef i32 @_ZN10pcg_extras10unxorshiftIjEET_S1_hh(i32 noundef %and16, i8 noundef zeroext %conv20, i8 noundef zeroext %shift) %and21 = and i32 %call, %sub6 - %or22 = or i32 %and21, %and10 + %or22 = or disjoint i32 %and21, %and10 br label %common.ret23 } @@ -642,10 +630,13 @@ if.end: ; preds = %entry define internal void @_GLOBAL__sub_I_use_partytrick.cpp() #10 section ".text.startup" { entry: tail call void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1) @_ZStL8__ioinit) - %0 = tail call i32 @__cxa_atexit(ptr nonnull @_ZNSt8ios_base4InitD1Ev, ptr nonnull @_ZStL8__ioinit, ptr nonnull @__dso_handle) #11 + %0 = tail call i32 @__cxa_atexit(ptr nonnull @_ZNSt8ios_base4InitD1Ev, ptr nonnull @_ZStL8__ioinit, ptr nonnull @__dso_handle) #12 ret void } +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.fshr.i32(i32, i32, i32) #11 + attributes #0 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { nofree nounwind } @@ -657,8 +648,9 @@ attributes #7 = { mustprogress nounwind uwtable "frame-pointer"="all" "min-legal attributes #8 = { noreturn nounwind uwtable "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #9 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } attributes #10 = { uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #11 = { nounwind } -attributes #12 = { noreturn nounwind } +attributes #11 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #12 = { nounwind } +attributes #13 = { noreturn nounwind } !llvm.module.flags = !{!0, !1, !2, !3, !4} diff --git a/bench/stb/optimized/stb_image.c.ll b/bench/stb/optimized/stb_image.c.ll index 06ffeaeb499..2f2fcf09bfe 100644 --- a/bench/stb/optimized/stb_image.c.ll +++ b/bench/stb/optimized/stb_image.c.ll @@ -11062,11 +11062,7 @@ if.end: ; preds = %if.then, %entry if.end4: ; preds = %if.end %code_buffer = getelementptr inbounds %struct.stbi__jpeg, ptr %j, i64 0, i32 12 %2 = load i32, ptr %code_buffer, align 8 - %shl = shl i32 %2, %n - %sub = sub nsw i32 0, %n - %and = and i32 %sub, 31 - %shr7 = lshr i32 %2, %and - %or = or i32 %shl, %shr7 + %or = tail call i32 @llvm.fshl.i32(i32 %2, i32 %2, i32 %n) %idxprom = sext i32 %n to i64 %arrayidx = getelementptr inbounds [17 x i32], ptr @stbi__bmask, i64 0, i64 %idxprom %3 = load i32, ptr %arrayidx, align 4 @@ -11109,11 +11105,7 @@ if.end: ; preds = %if.then, %entry if.end4: ; preds = %if.end %code_buffer = getelementptr inbounds %struct.stbi__jpeg, ptr %j, i64 0, i32 12 %2 = load i32, ptr %code_buffer, align 8 - %shl = shl i32 %2, %n - %sub = sub nsw i32 0, %n - %and = and i32 %sub, 31 - %shr = lshr i32 %2, %and - %or = or i32 %shl, %shr + %or = tail call i32 @llvm.fshl.i32(i32 %2, i32 %2, i32 %n) %idxprom = sext i32 %n to i64 %arrayidx = getelementptr inbounds [17 x i32], ptr @stbi__bmask, i64 0, i64 %idxprom %3 = load i32, ptr %arrayidx, align 4 @@ -11262,80 +11254,76 @@ if.end5: ; preds = %stbi__jpeg_huff_dec cond.true: ; preds = %if.end5 %10 = load i32, ptr %code_bits, align 4 %cmp.i49 = icmp slt i32 %10, %retval.0.i - br i1 %cmp.i49, label %if.then.i58, label %if.end.i50 + br i1 %cmp.i49, label %if.then.i56, label %if.end.i50 -if.then.i58: ; preds = %cond.true +if.then.i56: ; preds = %cond.true tail call void @stbi__grow_buffer_unsafe(ptr noundef nonnull %j) %.pre.i = load i32, ptr %code_bits, align 4 br label %if.end.i50 -if.end.i50: ; preds = %if.then.i58, %cond.true - %11 = phi i32 [ %.pre.i, %if.then.i58 ], [ %10, %cond.true ] +if.end.i50: ; preds = %if.then.i56, %cond.true + %11 = phi i32 [ %.pre.i, %if.then.i56 ], [ %10, %cond.true ] %cmp2.i = icmp slt i32 %11, %retval.0.i br i1 %cmp2.i, label %cond.end, label %if.end4.i if.end4.i: ; preds = %if.end.i50 %12 = load i32, ptr %code_buffer.i, align 8 - %shl.i52 = shl i32 %12, %retval.0.i - %sub.i53 = sub nsw i32 0, %retval.0.i - %and.i = and i32 %sub.i53, 31 - %shr7.i = lshr i32 %12, %and.i - %or.i = or i32 %shl.i52, %shr7.i - %idxprom.i54 = zext nneg i8 %retval.0.i.in to i64 - %arrayidx.i55 = getelementptr inbounds [17 x i32], ptr @stbi__bmask, i64 0, i64 %idxprom.i54 - %13 = load i32, ptr %arrayidx.i55, align 4 + %or.i = tail call i32 @llvm.fshl.i32(i32 %12, i32 %12, i32 %retval.0.i) + %idxprom.i52 = zext nneg i8 %retval.0.i.in to i64 + %arrayidx.i53 = getelementptr inbounds [17 x i32], ptr @stbi__bmask, i64 0, i64 %idxprom.i52 + %13 = load i32, ptr %arrayidx.i53, align 4 %not.i = xor i32 %13, -1 %and8.i = and i32 %or.i, %not.i store i32 %and8.i, ptr %code_buffer.i, align 8 %and12.i = and i32 %or.i, %13 %sub14.i = sub nsw i32 %11, %retval.0.i store i32 %sub14.i, ptr %code_bits, align 4 - %arrayidx16.i = getelementptr inbounds [16 x i32], ptr @stbi__jbias, i64 0, i64 %idxprom.i54 + %arrayidx16.i = getelementptr inbounds [16 x i32], ptr @stbi__jbias, i64 0, i64 %idxprom.i52 %14 = load i32, ptr %arrayidx16.i, align 4 %.inv.i = icmp slt i32 %12, 0 %and18.i = select i1 %.inv.i, i32 0, i32 %14 - %add.i56 = add i32 %and18.i, %and12.i + %add.i54 = add i32 %and18.i, %and12.i br label %cond.end cond.end: ; preds = %if.end4.i, %if.end.i50, %if.end5 - %cond = phi i32 [ 0, %if.end5 ], [ %add.i56, %if.end4.i ], [ 0, %if.end.i50 ] + %cond = phi i32 [ 0, %if.end5 ], [ %add.i54, %if.end4.i ], [ 0, %if.end.i50 ] %idxprom = sext i32 %b to i64 %dc_pred = getelementptr inbounds %struct.stbi__jpeg, ptr %j, i64 0, i32 11, i64 %idxprom, i32 6 %15 = load i32, ptr %dc_pred, align 8 %16 = xor i32 %15, %cond %17 = icmp sgt i32 %16, -1 - br i1 %17, label %if.end.i60, label %if.end11 + br i1 %17, label %if.end.i58, label %if.end11 -if.end.i60: ; preds = %cond.end +if.end.i58: ; preds = %cond.end %18 = and i32 %15, %cond - %sub.i61 = sub nsw i32 -2147483648, %cond - %cmp10.i = icmp sgt i32 %sub.i61, %15 + %sub.i59 = sub nsw i32 -2147483648, %cond + %cmp10.i = icmp sgt i32 %sub.i59, %15 %sub13.i = sub nsw i32 2147483647, %cond %cmp14.i = icmp slt i32 %sub13.i, %15 - %or.cond.not.i155 = icmp slt i32 %18, 0 - %retval.0.shrunk.i = select i1 %or.cond.not.i155, i1 %cmp10.i, i1 %cmp14.i + %or.cond.not.i149 = icmp slt i32 %18, 0 + %retval.0.shrunk.i = select i1 %or.cond.not.i149, i1 %cmp10.i, i1 %cmp14.i br i1 %retval.0.shrunk.i, label %return.sink.split, label %if.end11 -if.end11: ; preds = %cond.end, %if.end.i60 +if.end11: ; preds = %cond.end, %if.end.i58 %add = add nsw i32 %15, %cond store i32 %add, ptr %dc_pred, align 8 %19 = load i16, ptr %dequant, align 2 - %or.cond.i62 = icmp eq i16 %19, 0 - br i1 %or.cond.i62, label %if.end25, label %if.end.i63 + %or.cond.i60 = icmp eq i16 %19, 0 + br i1 %or.cond.i60, label %if.end25, label %if.end.i61 -if.end.i63: ; preds = %if.end11 +if.end.i61: ; preds = %if.end11 %20 = icmp sgt i32 %add, -1 br i1 %20, label %if.then7.i, label %stbi__mul2shorts_valid.exit -if.then7.i: ; preds = %if.end.i63 - %div.i152153 = udiv i16 32767, %19 - %div.i152.zext = zext nneg i16 %div.i152153 to i32 - %cmp8.i67.not = icmp ugt i32 %add, %div.i152.zext - br i1 %cmp8.i67.not, label %return.sink.split, label %if.end25 +if.then7.i: ; preds = %if.end.i61 + %div.i146147 = udiv i16 32767, %19 + %div.i146.zext = zext nneg i16 %div.i146147 to i32 + %cmp8.i65.not = icmp ugt i32 %add, %div.i146.zext + br i1 %cmp8.i65.not, label %return.sink.split, label %if.end25 -stbi__mul2shorts_valid.exit: ; preds = %if.end.i63 - %div1812.i154 = udiv i16 -32768, %19 - %div1812.i.zext = zext i16 %div1812.i154 to i32 +stbi__mul2shorts_valid.exit: ; preds = %if.end.i61 + %div1812.i148 = udiv i16 -32768, %19 + %div1812.i.zext = zext i16 %div1812.i148 to i32 %div1812.neg.i = sub nsw i32 0, %div1812.i.zext %cmp19.i.not = icmp slt i32 %add, %div1812.neg.i br i1 %cmp19.i.not, label %return.sink.split, label %if.end25 @@ -11362,18 +11350,18 @@ if.end34: ; preds = %if.then33, %do.body %idxprom35 = zext nneg i32 %shr to i64 %arrayidx36 = getelementptr inbounds i16, ptr %fac, i64 %idxprom35 %24 = load i16, ptr %arrayidx36, align 2 - %conv37158 = zext i16 %24 to i32 + %conv37152 = zext i16 %24 to i32 %tobool38.not = icmp eq i16 %24, 0 br i1 %tobool38.not, label %if.else, label %if.then39 if.then39: ; preds = %if.end34 - %and43 = and i32 %conv37158, 15 + %and43 = and i32 %conv37152, 15 %25 = load i32, ptr %code_bits, align 4 %cmp45 = icmp sgt i32 %and43, %25 br i1 %cmp45, label %return.sink.split, label %if.end49 if.end49: ; preds = %if.then39 - %shr40 = lshr i32 %conv37158, 4 + %shr40 = lshr i32 %conv37152, 4 %and41 = and i32 %shr40, 15 %add42 = add nsw i32 %and41, %k.0 %shl = shl i32 %23, %and43 @@ -11395,94 +11383,94 @@ if.end49: ; preds = %if.then39 if.else: ; preds = %if.end34 %28 = load i32, ptr %code_bits, align 4 - %cmp.i69 = icmp slt i32 %28, 16 - br i1 %cmp.i69, label %if.then.i114, label %if.end.i70 + %cmp.i67 = icmp slt i32 %28, 16 + br i1 %cmp.i67, label %if.then.i112, label %if.end.i68 -if.then.i114: ; preds = %if.else +if.then.i112: ; preds = %if.else tail call void @stbi__grow_buffer_unsafe(ptr noundef nonnull %j) %.pre = load i32, ptr %code_buffer.i, align 8 - %.pre156 = lshr i32 %.pre, 23 - %.pre157 = zext nneg i32 %.pre156 to i64 - br label %if.end.i70 - -if.end.i70: ; preds = %if.then.i114, %if.else - %idxprom.i73.pre-phi = phi i64 [ %.pre157, %if.then.i114 ], [ %idxprom35, %if.else ] - %29 = phi i32 [ %.pre, %if.then.i114 ], [ %23, %if.else ] - %arrayidx.i74 = getelementptr inbounds [512 x i8], ptr %hac, i64 0, i64 %idxprom.i73.pre-phi - %30 = load i8, ptr %arrayidx.i74, align 1 - %cmp1.not.i75 = icmp eq i8 %30, -1 - br i1 %cmp1.not.i75, label %if.end17.i87, label %if.then3.i76 - -if.then3.i76: ; preds = %if.end.i70 - %idxprom4.i77 = zext i8 %30 to i64 - %arrayidx5.i78 = getelementptr inbounds %struct.stbi__huffman, ptr %hac, i64 0, i32 3, i64 %idxprom4.i77 - %31 = load i8, ptr %arrayidx5.i78, align 1 - %conv6.i79 = zext i8 %31 to i32 + %.pre150 = lshr i32 %.pre, 23 + %.pre151 = zext nneg i32 %.pre150 to i64 + br label %if.end.i68 + +if.end.i68: ; preds = %if.then.i112, %if.else + %idxprom.i71.pre-phi = phi i64 [ %.pre151, %if.then.i112 ], [ %idxprom35, %if.else ] + %29 = phi i32 [ %.pre, %if.then.i112 ], [ %23, %if.else ] + %arrayidx.i72 = getelementptr inbounds [512 x i8], ptr %hac, i64 0, i64 %idxprom.i71.pre-phi + %30 = load i8, ptr %arrayidx.i72, align 1 + %cmp1.not.i73 = icmp eq i8 %30, -1 + br i1 %cmp1.not.i73, label %if.end17.i85, label %if.then3.i74 + +if.then3.i74: ; preds = %if.end.i68 + %idxprom4.i75 = zext i8 %30 to i64 + %arrayidx5.i76 = getelementptr inbounds %struct.stbi__huffman, ptr %hac, i64 0, i32 3, i64 %idxprom4.i75 + %31 = load i8, ptr %arrayidx5.i76, align 1 + %conv6.i77 = zext i8 %31 to i32 %32 = load i32, ptr %code_bits, align 4 - %cmp8.i80 = icmp slt i32 %32, %conv6.i79 - br i1 %cmp8.i80, label %return.sink.split, label %if.end11.i81 - -if.end11.i81: ; preds = %if.then3.i76 - %shl.i82 = shl i32 %29, %conv6.i79 - store i32 %shl.i82, ptr %code_buffer.i, align 8 - %sub.i83 = sub nsw i32 %32, %conv6.i79 - store i32 %sub.i83, ptr %code_bits, align 4 + %cmp8.i78 = icmp slt i32 %32, %conv6.i77 + br i1 %cmp8.i78, label %return.sink.split, label %if.end11.i79 + +if.end11.i79: ; preds = %if.then3.i74 + %shl.i80 = shl i32 %29, %conv6.i77 + store i32 %shl.i80, ptr %code_buffer.i, align 8 + %sub.i81 = sub nsw i32 %32, %conv6.i77 + store i32 %sub.i81, ptr %code_bits, align 4 br label %if.end68 -if.end17.i87: ; preds = %if.end.i70 - %shr19.i88 = lshr i32 %29, 16 - br label %for.cond.i89 - -for.cond.i89: ; preds = %for.cond.i89, %if.end17.i87 - %indvars.iv.i90 = phi i64 [ %indvars.iv.next.i93, %for.cond.i89 ], [ 10, %if.end17.i87 ] - %arrayidx21.i91 = getelementptr inbounds %struct.stbi__huffman, ptr %hac, i64 0, i32 4, i64 %indvars.iv.i90 - %33 = load i32, ptr %arrayidx21.i91, align 4 - %cmp22.i92 = icmp ult i32 %shr19.i88, %33 - %indvars.iv.next.i93 = add nuw i64 %indvars.iv.i90, 1 - br i1 %cmp22.i92, label %for.end.i94, label %for.cond.i89 - -for.end.i94: ; preds = %for.cond.i89 - %34 = trunc i64 %indvars.iv.i90 to i32 - %cmp26.i95 = icmp eq i32 %34, 17 +if.end17.i85: ; preds = %if.end.i68 + %shr19.i86 = lshr i32 %29, 16 + br label %for.cond.i87 + +for.cond.i87: ; preds = %for.cond.i87, %if.end17.i85 + %indvars.iv.i88 = phi i64 [ %indvars.iv.next.i91, %for.cond.i87 ], [ 10, %if.end17.i85 ] + %arrayidx21.i89 = getelementptr inbounds %struct.stbi__huffman, ptr %hac, i64 0, i32 4, i64 %indvars.iv.i88 + %33 = load i32, ptr %arrayidx21.i89, align 4 + %cmp22.i90 = icmp ult i32 %shr19.i86, %33 + %indvars.iv.next.i91 = add nuw i64 %indvars.iv.i88, 1 + br i1 %cmp22.i90, label %for.end.i92, label %for.cond.i87 + +for.end.i92: ; preds = %for.cond.i87 + %34 = trunc i64 %indvars.iv.i88 to i32 + %cmp26.i93 = icmp eq i32 %34, 17 %35 = load i32, ptr %code_bits, align 4 - br i1 %cmp26.i95, label %return.sink.split.sink.split, label %if.end31.i96 - -if.end31.i96: ; preds = %for.end.i94 - %cmp33.i97 = icmp slt i32 %35, %34 - br i1 %cmp33.i97, label %return.sink.split, label %if.end36.i98 - -if.end36.i98: ; preds = %if.end31.i96 - %sub38.i99 = sub nsw i32 32, %34 - %shr39.i100 = lshr i32 %29, %sub38.i99 - %arrayidx41.i101 = getelementptr inbounds [17 x i32], ptr @stbi__bmask, i64 0, i64 %indvars.iv.i90 - %36 = load i32, ptr %arrayidx41.i101, align 4 - %and42.i102 = and i32 %36, %shr39.i100 - %arrayidx44.i103 = getelementptr inbounds %struct.stbi__huffman, ptr %hac, i64 0, i32 5, i64 %indvars.iv.i90 - %37 = load i32, ptr %arrayidx44.i103, align 4 - %add.i104 = add i32 %and42.i102, %37 - %or.cond.i105 = icmp ugt i32 %add.i104, 255 - br i1 %or.cond.i105, label %return.sink.split, label %if.end50.i106 - -if.end50.i106: ; preds = %if.end36.i98 - %sub52.i107 = sub nsw i32 %35, %34 - store i32 %sub52.i107, ptr %code_bits, align 4 - %shl54.i108 = shl i32 %29, %34 - store i32 %shl54.i108, ptr %code_buffer.i, align 8 - %idxprom56.i109 = zext nneg i32 %add.i104 to i64 + br i1 %cmp26.i93, label %return.sink.split.sink.split, label %if.end31.i94 + +if.end31.i94: ; preds = %for.end.i92 + %cmp33.i95 = icmp slt i32 %35, %34 + br i1 %cmp33.i95, label %return.sink.split, label %if.end36.i96 + +if.end36.i96: ; preds = %if.end31.i94 + %sub38.i97 = sub nsw i32 32, %34 + %shr39.i98 = lshr i32 %29, %sub38.i97 + %arrayidx41.i99 = getelementptr inbounds [17 x i32], ptr @stbi__bmask, i64 0, i64 %indvars.iv.i88 + %36 = load i32, ptr %arrayidx41.i99, align 4 + %and42.i100 = and i32 %36, %shr39.i98 + %arrayidx44.i101 = getelementptr inbounds %struct.stbi__huffman, ptr %hac, i64 0, i32 5, i64 %indvars.iv.i88 + %37 = load i32, ptr %arrayidx44.i101, align 4 + %add.i102 = add i32 %and42.i100, %37 + %or.cond.i103 = icmp ugt i32 %add.i102, 255 + br i1 %or.cond.i103, label %return.sink.split, label %if.end50.i104 + +if.end50.i104: ; preds = %if.end36.i96 + %sub52.i105 = sub nsw i32 %35, %34 + store i32 %sub52.i105, ptr %code_bits, align 4 + %shl54.i106 = shl i32 %29, %34 + store i32 %shl54.i106, ptr %code_buffer.i, align 8 + %idxprom56.i107 = zext nneg i32 %add.i102 to i64 br label %if.end68 -if.end68: ; preds = %if.end50.i106, %if.end11.i81 - %38 = phi i32 [ %sub.i83, %if.end11.i81 ], [ %sub52.i107, %if.end50.i106 ] - %idxprom4.i77.pn = phi i64 [ %idxprom4.i77, %if.end11.i81 ], [ %idxprom56.i109, %if.end50.i106 ] - %retval.0.i86.in.in = getelementptr inbounds %struct.stbi__huffman, ptr %hac, i64 0, i32 2, i64 %idxprom4.i77.pn - %retval.0.i86.in = load i8, ptr %retval.0.i86.in.in, align 1 - %retval.0.i86 = zext i8 %retval.0.i86.in to i32 - %and69 = and i32 %retval.0.i86, 15 +if.end68: ; preds = %if.end50.i104, %if.end11.i79 + %38 = phi i32 [ %sub.i81, %if.end11.i79 ], [ %sub52.i105, %if.end50.i104 ] + %idxprom4.i75.pn = phi i64 [ %idxprom4.i75, %if.end11.i79 ], [ %idxprom56.i107, %if.end50.i104 ] + %retval.0.i84.in.in = getelementptr inbounds %struct.stbi__huffman, ptr %hac, i64 0, i32 2, i64 %idxprom4.i75.pn + %retval.0.i84.in = load i8, ptr %retval.0.i84.in.in, align 1 + %retval.0.i84 = zext i8 %retval.0.i84.in to i32 + %and69 = and i32 %retval.0.i84, 15 %cmp71 = icmp eq i32 %and69, 0 br i1 %cmp71, label %if.then73, label %if.else79 if.then73: ; preds = %if.end68 - %cmp74.not = icmp eq i8 %retval.0.i86.in, -16 + %cmp74.not = icmp eq i8 %retval.0.i84.in, -16 br i1 %cmp74.not, label %if.end77, label %return if.end77: ; preds = %if.then73 @@ -11490,72 +11478,68 @@ if.end77: ; preds = %if.then73 br label %do.cond if.else79: ; preds = %if.end68 - %shr70 = lshr i32 %retval.0.i86, 4 + %shr70 = lshr i32 %retval.0.i84, 4 %add80 = add nsw i32 %shr70, %k.0 %inc81 = add nsw i32 %add80, 1 %idxprom82 = sext i32 %add80 to i64 %arrayidx83 = getelementptr inbounds [79 x i8], ptr @stbi__jpeg_dezigzag, i64 0, i64 %idxprom82 %39 = load i8, ptr %arrayidx83, align 1 - %cmp.i117 = icmp slt i32 %38, %and69 - br i1 %cmp.i117, label %if.then.i138, label %if.end.i118 + %cmp.i115 = icmp slt i32 %38, %and69 + br i1 %cmp.i115, label %if.then.i132, label %if.end.i116 -if.then.i138: ; preds = %if.else79 +if.then.i132: ; preds = %if.else79 tail call void @stbi__grow_buffer_unsafe(ptr noundef nonnull %j) - %.pre.i139 = load i32, ptr %code_bits, align 4 - br label %if.end.i118 + %.pre.i133 = load i32, ptr %code_bits, align 4 + br label %if.end.i116 -if.end.i118: ; preds = %if.then.i138, %if.else79 - %40 = phi i32 [ %.pre.i139, %if.then.i138 ], [ %38, %if.else79 ] - %cmp2.i119 = icmp slt i32 %40, %and69 - br i1 %cmp2.i119, label %stbi__extend_receive.exit140, label %if.end4.i120 +if.end.i116: ; preds = %if.then.i132, %if.else79 + %40 = phi i32 [ %.pre.i133, %if.then.i132 ], [ %38, %if.else79 ] + %cmp2.i117 = icmp slt i32 %40, %and69 + br i1 %cmp2.i117, label %stbi__extend_receive.exit134, label %if.end4.i118 -if.end4.i120: ; preds = %if.end.i118 +if.end4.i118: ; preds = %if.end.i116 %41 = load i32, ptr %code_buffer.i, align 8 - %shl.i122 = shl i32 %41, %and69 - %sub.i123 = sub nsw i32 0, %and69 - %and.i124 = and i32 %sub.i123, 31 - %shr7.i125 = lshr i32 %41, %and.i124 - %or.i126 = or i32 %shl.i122, %shr7.i125 - %idxprom.i127 = zext nneg i32 %and69 to i64 - %arrayidx.i128 = getelementptr inbounds [17 x i32], ptr @stbi__bmask, i64 0, i64 %idxprom.i127 - %42 = load i32, ptr %arrayidx.i128, align 4 - %not.i129 = xor i32 %42, -1 - %and8.i130 = and i32 %or.i126, %not.i129 - store i32 %and8.i130, ptr %code_buffer.i, align 8 - %and12.i131 = and i32 %or.i126, %42 - %sub14.i132 = sub nsw i32 %40, %and69 - store i32 %sub14.i132, ptr %code_bits, align 4 - %arrayidx16.i133 = getelementptr inbounds [16 x i32], ptr @stbi__jbias, i64 0, i64 %idxprom.i127 - %43 = load i32, ptr %arrayidx16.i133, align 4 - %.inv.i134 = icmp slt i32 %41, 0 - %and18.i135 = select i1 %.inv.i134, i32 0, i32 %43 - %add.i136 = add i32 %and18.i135, %and12.i131 - br label %stbi__extend_receive.exit140 - -stbi__extend_receive.exit140: ; preds = %if.end.i118, %if.end4.i120 - %retval.0.i137 = phi i32 [ %add.i136, %if.end4.i120 ], [ 0, %if.end.i118 ] + %or.i120 = tail call i32 @llvm.fshl.i32(i32 %41, i32 %41, i32 %and69) + %idxprom.i121 = zext nneg i32 %and69 to i64 + %arrayidx.i122 = getelementptr inbounds [17 x i32], ptr @stbi__bmask, i64 0, i64 %idxprom.i121 + %42 = load i32, ptr %arrayidx.i122, align 4 + %not.i123 = xor i32 %42, -1 + %and8.i124 = and i32 %or.i120, %not.i123 + store i32 %and8.i124, ptr %code_buffer.i, align 8 + %and12.i125 = and i32 %or.i120, %42 + %sub14.i126 = sub nsw i32 %40, %and69 + store i32 %sub14.i126, ptr %code_bits, align 4 + %arrayidx16.i127 = getelementptr inbounds [16 x i32], ptr @stbi__jbias, i64 0, i64 %idxprom.i121 + %43 = load i32, ptr %arrayidx16.i127, align 4 + %.inv.i128 = icmp slt i32 %41, 0 + %and18.i129 = select i1 %.inv.i128, i32 0, i32 %43 + %add.i130 = add i32 %and18.i129, %and12.i125 + br label %stbi__extend_receive.exit134 + +stbi__extend_receive.exit134: ; preds = %if.end.i116, %if.end4.i118 + %retval.0.i131 = phi i32 [ %add.i130, %if.end4.i118 ], [ 0, %if.end.i116 ] %idxprom86 = zext i8 %39 to i64 %arrayidx87 = getelementptr inbounds i16, ptr %dequant, i64 %idxprom86 %44 = load i16, ptr %arrayidx87, align 2 - %45 = trunc i32 %retval.0.i137 to i16 + %45 = trunc i32 %retval.0.i131 to i16 %conv90 = mul i16 %44, %45 %arrayidx92 = getelementptr inbounds i16, ptr %data, i64 %idxprom86 store i16 %conv90, ptr %arrayidx92, align 2 br label %do.cond -do.cond: ; preds = %if.end49, %stbi__extend_receive.exit140, %if.end77 - %k.1 = phi i32 [ %inc, %if.end49 ], [ %add78, %if.end77 ], [ %inc81, %stbi__extend_receive.exit140 ] +do.cond: ; preds = %if.end49, %stbi__extend_receive.exit134, %if.end77 + %k.1 = phi i32 [ %inc, %if.end49 ], [ %add78, %if.end77 ], [ %inc81, %stbi__extend_receive.exit134 ] %cmp95 = icmp slt i32 %k.1, 64 br i1 %cmp95, label %do.body, label %return, !llvm.loop !96 -return.sink.split.sink.split: ; preds = %for.end.i94, %for.end.i - %.lcssa.sink = phi i32 [ %7, %for.end.i ], [ %35, %for.end.i94 ] - %sub30.i113 = add nsw i32 %.lcssa.sink, -16 - store i32 %sub30.i113, ptr %code_bits, align 4 +return.sink.split.sink.split: ; preds = %for.end.i92, %for.end.i + %.lcssa.sink = phi i32 [ %7, %for.end.i ], [ %35, %for.end.i92 ] + %sub30.i111 = add nsw i32 %.lcssa.sink, -16 + store i32 %sub30.i111, ptr %code_bits, align 4 br label %return.sink.split -return.sink.split: ; preds = %if.end36.i98, %if.end31.i96, %if.then3.i76, %if.then39, %return.sink.split.sink.split, %stbi__mul2shorts_valid.exit, %if.then7.i, %if.end.i60, %stbi__jpeg_huff_decode.exit, %if.then3.i, %if.end31.i, %if.end36.i - %.str.7.sink = phi ptr [ @.str.7, %if.end36.i ], [ @.str.7, %if.end31.i ], [ @.str.7, %if.then3.i ], [ @.str.7, %stbi__jpeg_huff_decode.exit ], [ @.str.8, %if.end.i60 ], [ @.str.9, %if.then7.i ], [ @.str.9, %stbi__mul2shorts_valid.exit ], [ @.str.7, %return.sink.split.sink.split ], [ @.str.7, %if.then39 ], [ @.str.7, %if.then3.i76 ], [ @.str.7, %if.end31.i96 ], [ @.str.7, %if.end36.i98 ] +return.sink.split: ; preds = %if.end36.i96, %if.end31.i94, %if.then3.i74, %if.then39, %return.sink.split.sink.split, %stbi__mul2shorts_valid.exit, %if.then7.i, %if.end.i58, %stbi__jpeg_huff_decode.exit, %if.then3.i, %if.end31.i, %if.end36.i + %.str.7.sink = phi ptr [ @.str.7, %if.end36.i ], [ @.str.7, %if.end31.i ], [ @.str.7, %if.then3.i ], [ @.str.7, %stbi__jpeg_huff_decode.exit ], [ @.str.8, %if.end.i58 ], [ @.str.9, %if.then7.i ], [ @.str.9, %stbi__mul2shorts_valid.exit ], [ @.str.7, %return.sink.split.sink.split ], [ @.str.7, %if.then39 ], [ @.str.7, %if.then3.i74 ], [ @.str.7, %if.end31.i94 ], [ @.str.7, %if.end36.i96 ] %46 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @stbi__g_failure_reason) store ptr %.str.7.sink, ptr %46, align 8 br label %return @@ -11697,66 +11681,62 @@ if.end11: ; preds = %stbi__jpeg_huff_dec cond.true: ; preds = %if.end11 %cmp.i25 = icmp slt i32 %14, %retval.0.i - br i1 %cmp.i25, label %if.then.i34, label %if.end.i26 + br i1 %cmp.i25, label %if.then.i32, label %if.end.i26 -if.then.i34: ; preds = %cond.true +if.then.i32: ; preds = %cond.true tail call void @stbi__grow_buffer_unsafe(ptr noundef nonnull %j) %.pre.i = load i32, ptr %code_bits, align 4 br label %if.end.i26 -if.end.i26: ; preds = %if.then.i34, %cond.true - %16 = phi i32 [ %.pre.i, %if.then.i34 ], [ %14, %cond.true ] +if.end.i26: ; preds = %if.then.i32, %cond.true + %16 = phi i32 [ %.pre.i, %if.then.i32 ], [ %14, %cond.true ] %cmp2.i = icmp slt i32 %16, %retval.0.i br i1 %cmp2.i, label %cond.end, label %if.end4.i if.end4.i: ; preds = %if.end.i26 %17 = load i32, ptr %code_buffer.i, align 8 - %shl.i28 = shl i32 %17, %retval.0.i - %sub.i29 = sub nsw i32 0, %retval.0.i - %and.i = and i32 %sub.i29, 31 - %shr7.i = lshr i32 %17, %and.i - %or.i = or i32 %shl.i28, %shr7.i - %idxprom.i30 = zext nneg i8 %retval.0.i.in to i64 - %arrayidx.i31 = getelementptr inbounds [17 x i32], ptr @stbi__bmask, i64 0, i64 %idxprom.i30 - %18 = load i32, ptr %arrayidx.i31, align 4 + %or.i = tail call i32 @llvm.fshl.i32(i32 %17, i32 %17, i32 %retval.0.i) + %idxprom.i28 = zext nneg i8 %retval.0.i.in to i64 + %arrayidx.i29 = getelementptr inbounds [17 x i32], ptr @stbi__bmask, i64 0, i64 %idxprom.i28 + %18 = load i32, ptr %arrayidx.i29, align 4 %not.i = xor i32 %18, -1 %and8.i = and i32 %or.i, %not.i store i32 %and8.i, ptr %code_buffer.i, align 8 %and12.i = and i32 %or.i, %18 %sub14.i = sub nsw i32 %16, %retval.0.i store i32 %sub14.i, ptr %code_bits, align 4 - %arrayidx16.i = getelementptr inbounds [16 x i32], ptr @stbi__jbias, i64 0, i64 %idxprom.i30 + %arrayidx16.i = getelementptr inbounds [16 x i32], ptr @stbi__jbias, i64 0, i64 %idxprom.i28 %19 = load i32, ptr %arrayidx16.i, align 4 %.inv.i = icmp slt i32 %17, 0 %and18.i = select i1 %.inv.i, i32 0, i32 %19 - %add.i32 = add i32 %and18.i, %and12.i + %add.i30 = add i32 %and18.i, %and12.i br label %cond.end cond.end: ; preds = %if.end4.i, %if.end.i26, %if.end11 - %cond = phi i32 [ 0, %if.end11 ], [ %add.i32, %if.end4.i ], [ 0, %if.end.i26 ] + %cond = phi i32 [ 0, %if.end11 ], [ %add.i30, %if.end4.i ], [ 0, %if.end.i26 ] %idxprom = sext i32 %b to i64 %dc_pred = getelementptr inbounds %struct.stbi__jpeg, ptr %j, i64 0, i32 11, i64 %idxprom, i32 6 %20 = load i32, ptr %dc_pred, align 8 %21 = xor i32 %20, %cond %22 = icmp sgt i32 %21, -1 - br i1 %22, label %if.end.i36, label %if.end17 + br i1 %22, label %if.end.i34, label %if.end17 -if.end.i36: ; preds = %cond.end +if.end.i34: ; preds = %cond.end %23 = and i32 %20, %cond - %sub.i37 = sub nsw i32 -2147483648, %cond - %cmp10.i = icmp sgt i32 %sub.i37, %20 + %sub.i35 = sub nsw i32 -2147483648, %cond + %cmp10.i = icmp sgt i32 %sub.i35, %20 %sub13.i = sub nsw i32 2147483647, %cond %cmp14.i = icmp slt i32 %sub13.i, %20 - %or.cond.not.i63 = icmp slt i32 %23, 0 - %retval.0.shrunk.i = select i1 %or.cond.not.i63, i1 %cmp10.i, i1 %cmp14.i + %or.cond.not.i60 = icmp slt i32 %23, 0 + %retval.0.shrunk.i = select i1 %or.cond.not.i60, i1 %cmp10.i, i1 %cmp14.i br i1 %retval.0.shrunk.i, label %if.then15, label %if.end17 -if.then15: ; preds = %if.end.i36 +if.then15: ; preds = %if.end.i34 %24 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @stbi__g_failure_reason) store ptr @.str.8, ptr %24, align 8 br label %return -if.end17: ; preds = %cond.end, %if.end.i36 +if.end17: ; preds = %cond.end, %if.end.i34 %add = add nsw i32 %20, %cond store i32 %add, ptr %dc_pred, align 8 %succ_low = getelementptr inbounds %struct.stbi__jpeg, ptr %j, i64 0, i32 20 @@ -11767,9 +11747,9 @@ if.end17: ; preds = %cond.end, %if.end.i br i1 %27, label %if.then7.i, label %if.end10.i if.then7.i: ; preds = %if.end17 - %div.i65 = lshr i32 32767, %25 - %cmp8.i43.not = icmp slt i32 %div.i65, %add - br i1 %cmp8.i43.not, label %if.then28, label %if.end30 + %div.i62 = lshr i32 32767, %25 + %cmp8.i41.not = icmp slt i32 %div.i62, %add + br i1 %cmp8.i41.not, label %if.then28, label %if.end30 if.end10.i: ; preds = %if.end17 %cmp11.i = icmp eq i32 %25, 31 @@ -11780,8 +11760,8 @@ if.then13.i: ; preds = %if.end10.i br i1 %cmp15.i, label %if.end30, label %if.then28 stbi__mul2shorts_valid.exit: ; preds = %if.end10.i - %div1812.i64 = lshr i32 32768, %25 - %div1812.neg.i = sub nsw i32 0, %div1812.i64 + %div1812.i61 = lshr i32 32768, %25 + %div1812.neg.i = sub nsw i32 0, %div1812.i61 %cmp19.i.not = icmp slt i32 %add, %div1812.neg.i br i1 %cmp19.i.not, label %if.then28, label %if.end30 @@ -11798,21 +11778,21 @@ if.end30: ; preds = %if.then13.i, %if.th if.else: ; preds = %if.end3 %29 = load i32, ptr %code_bits, align 4 - %cmp.i45 = icmp slt i32 %29, 1 - br i1 %cmp.i45, label %if.end.i51, label %stbi__jpeg_get_bit.exit + %cmp.i43 = icmp slt i32 %29, 1 + br i1 %cmp.i43, label %if.end.i48, label %stbi__jpeg_get_bit.exit -if.end.i51: ; preds = %if.else +if.end.i48: ; preds = %if.else tail call void @stbi__grow_buffer_unsafe(ptr noundef nonnull %j) %.pr.i = load i32, ptr %code_bits, align 4 - %cmp2.i52 = icmp slt i32 %.pr.i, 1 - br i1 %cmp2.i52, label %return, label %stbi__jpeg_get_bit.exit - -stbi__jpeg_get_bit.exit: ; preds = %if.else, %if.end.i51 - %30 = phi i32 [ %.pr.i, %if.end.i51 ], [ %29, %if.else ] - %code_buffer.i47 = getelementptr inbounds %struct.stbi__jpeg, ptr %j, i64 0, i32 12 - %31 = load i32, ptr %code_buffer.i47, align 8 - %shl.i48 = shl i32 %31, 1 - store i32 %shl.i48, ptr %code_buffer.i47, align 8 + %cmp2.i49 = icmp slt i32 %.pr.i, 1 + br i1 %cmp2.i49, label %return, label %stbi__jpeg_get_bit.exit + +stbi__jpeg_get_bit.exit: ; preds = %if.else, %if.end.i48 + %30 = phi i32 [ %.pr.i, %if.end.i48 ], [ %29, %if.else ] + %code_buffer.i45 = getelementptr inbounds %struct.stbi__jpeg, ptr %j, i64 0, i32 12 + %31 = load i32, ptr %code_buffer.i45, align 8 + %shl.i46 = shl i32 %31, 1 + store i32 %shl.i46, ptr %code_buffer.i45, align 8 %dec.i = add nsw i32 %30, -1 store i32 %dec.i, ptr %code_bits, align 4 %tobool35.not = icmp sgt i32 %31, -1 @@ -11828,8 +11808,8 @@ if.then36: ; preds = %stbi__jpeg_get_bit. store i16 %conv44, ptr %data, align 2 br label %return -return: ; preds = %if.end.i51, %if.end30, %if.then36, %stbi__jpeg_get_bit.exit, %if.then28, %if.then15, %if.then9, %if.then - %retval.0 = phi i32 [ 0, %if.then ], [ 0, %if.then9 ], [ 0, %if.then28 ], [ 0, %if.then15 ], [ 1, %stbi__jpeg_get_bit.exit ], [ 1, %if.then36 ], [ 1, %if.end30 ], [ 1, %if.end.i51 ] +return: ; preds = %if.end.i48, %if.end30, %if.then36, %stbi__jpeg_get_bit.exit, %if.then28, %if.then15, %if.then9, %if.then + %retval.0 = phi i32 [ 0, %if.then ], [ 0, %if.then9 ], [ 0, %if.then28 ], [ 0, %if.then15 ], [ 1, %stbi__jpeg_get_bit.exit ], [ 1, %if.then36 ], [ 1, %if.end30 ], [ 1, %if.end.i48 ] ret i32 %retval.0 } @@ -11929,14 +11909,14 @@ if.else: ; preds = %if.end9 if.then.i: ; preds = %if.else tail call void @stbi__grow_buffer_unsafe(ptr noundef nonnull %j) - %.pre245 = load i32, ptr %code_buffer, align 8 - %.pre246 = lshr i32 %.pre245, 23 - %.pre247 = zext nneg i32 %.pre246 to i64 + %.pre238 = load i32, ptr %code_buffer, align 8 + %.pre239 = lshr i32 %.pre238, 23 + %.pre240 = zext nneg i32 %.pre239 to i64 br label %if.end.i if.end.i: ; preds = %if.then.i, %if.else - %idxprom.i.pre-phi = phi i64 [ %.pre247, %if.then.i ], [ %idxprom, %if.else ] - %12 = phi i32 [ %.pre245, %if.then.i ], [ %6, %if.else ] + %idxprom.i.pre-phi = phi i64 [ %.pre240, %if.then.i ], [ %idxprom, %if.else ] + %12 = phi i32 [ %.pre238, %if.then.i ], [ %6, %if.else ] %arrayidx.i = getelementptr inbounds [512 x i8], ptr %hac, i64 0, i64 %idxprom.i.pre-phi %13 = load i8, ptr %arrayidx.i, align 1 %cmp1.not.i = icmp eq i8 %13, -1 @@ -12054,44 +12034,40 @@ if.else57: ; preds = %if.end36 %arrayidx61 = getelementptr inbounds [79 x i8], ptr @stbi__jpeg_dezigzag, i64 0, i64 %idxprom60 %25 = load i8, ptr %arrayidx61, align 1 %cmp.i98 = icmp slt i32 %22, %and37 - br i1 %cmp.i98, label %if.then.i107, label %if.end.i99 + br i1 %cmp.i98, label %if.then.i105, label %if.end.i99 -if.then.i107: ; preds = %if.else57 +if.then.i105: ; preds = %if.else57 tail call void @stbi__grow_buffer_unsafe(ptr noundef nonnull %j) %.pre.i = load i32, ptr %code_bits, align 4 br label %if.end.i99 -if.end.i99: ; preds = %if.then.i107, %if.else57 - %26 = phi i32 [ %.pre.i, %if.then.i107 ], [ %22, %if.else57 ] +if.end.i99: ; preds = %if.then.i105, %if.else57 + %26 = phi i32 [ %.pre.i, %if.then.i105 ], [ %22, %if.else57 ] %cmp2.i = icmp slt i32 %26, %and37 br i1 %cmp2.i, label %stbi__extend_receive.exit, label %if.end4.i if.end4.i: ; preds = %if.end.i99 %27 = load i32, ptr %code_buffer, align 8 - %shl.i101 = shl i32 %27, %and37 - %sub.i102 = sub nsw i32 0, %and37 - %and.i = and i32 %sub.i102, 31 - %shr7.i = lshr i32 %27, %and.i - %or.i = or i32 %shl.i101, %shr7.i - %idxprom.i103 = zext nneg i32 %and37 to i64 - %arrayidx.i104 = getelementptr inbounds [17 x i32], ptr @stbi__bmask, i64 0, i64 %idxprom.i103 - %28 = load i32, ptr %arrayidx.i104, align 4 + %or.i = tail call i32 @llvm.fshl.i32(i32 %27, i32 %27, i32 %and37) + %idxprom.i101 = zext nneg i32 %and37 to i64 + %arrayidx.i102 = getelementptr inbounds [17 x i32], ptr @stbi__bmask, i64 0, i64 %idxprom.i101 + %28 = load i32, ptr %arrayidx.i102, align 4 %not.i = xor i32 %28, -1 %and8.i = and i32 %or.i, %not.i store i32 %and8.i, ptr %code_buffer, align 8 %and12.i = and i32 %or.i, %28 %sub14.i = sub nsw i32 %26, %and37 store i32 %sub14.i, ptr %code_bits, align 4 - %arrayidx16.i = getelementptr inbounds [16 x i32], ptr @stbi__jbias, i64 0, i64 %idxprom.i103 + %arrayidx16.i = getelementptr inbounds [16 x i32], ptr @stbi__jbias, i64 0, i64 %idxprom.i101 %29 = load i32, ptr %arrayidx16.i, align 4 %.inv.i = icmp slt i32 %27, 0 %and18.i = select i1 %.inv.i, i32 0, i32 %29 - %add.i105 = add i32 %and18.i, %and12.i + %add.i103 = add i32 %and18.i, %and12.i br label %stbi__extend_receive.exit stbi__extend_receive.exit: ; preds = %if.end.i99, %if.end4.i - %retval.0.i106 = phi i32 [ %add.i105, %if.end4.i ], [ 0, %if.end.i99 ] - %mul6595 = shl i32 %retval.0.i106, %3 + %retval.0.i104 = phi i32 [ %add.i103, %if.end4.i ], [ 0, %if.end.i99 ] + %mul6595 = shl i32 %retval.0.i104, %3 %conv66 = trunc i32 %mul6595 to i16 %idxprom67 = zext i8 %25 to i64 %arrayidx68 = getelementptr inbounds i16, ptr %data, i64 %idxprom67 @@ -12108,8 +12084,8 @@ if.else73: ; preds = %if.end br i1 %tobool.not, label %do.body123.preheader, label %if.then79 do.body123.preheader: ; preds = %if.else73 - %code_bits.i117 = getelementptr inbounds %struct.stbi__jpeg, ptr %j, i64 0, i32 13 - %code_buffer.i120 = getelementptr inbounds %struct.stbi__jpeg, ptr %j, i64 0, i32 12 + %code_bits.i114 = getelementptr inbounds %struct.stbi__jpeg, ptr %j, i64 0, i32 13 + %code_buffer.i117 = getelementptr inbounds %struct.stbi__jpeg, ptr %j, i64 0, i32 12 %sext92 = shl i32 65536, %3 %conv161 = ashr exact i32 %sext92, 16 %sub164 = sub nsw i32 0, %conv161 @@ -12122,12 +12098,12 @@ if.then79: ; preds = %if.else73 store i32 %dec81, ptr %eob_run, align 4 %spec_end83 = getelementptr inbounds %struct.stbi__jpeg, ptr %j, i64 0, i32 18 %32 = load i32, ptr %spec_end83, align 8 - %cmp84.not229 = icmp sgt i32 %0, %32 - br i1 %cmp84.not229, label %return, label %for.body.lr.ph + %cmp84.not222 = icmp sgt i32 %0, %32 + br i1 %cmp84.not222, label %return, label %for.body.lr.ph for.body.lr.ph: ; preds = %if.then79 - %code_bits.i108 = getelementptr inbounds %struct.stbi__jpeg, ptr %j, i64 0, i32 13 - %code_buffer.i111 = getelementptr inbounds %struct.stbi__jpeg, ptr %j, i64 0, i32 12 + %code_bits.i106 = getelementptr inbounds %struct.stbi__jpeg, ptr %j, i64 0, i32 13 + %code_buffer.i109 = getelementptr inbounds %struct.stbi__jpeg, ptr %j, i64 0, i32 12 %sext94 = shl i32 65536, %3 %conv98 = ashr exact i32 %sext94, 16 %33 = trunc i32 %conv98 to i16 @@ -12146,23 +12122,23 @@ for.body: ; preds = %for.body.lr.ph, %fo br i1 %cmp91.not, label %for.inc, label %if.then93 if.then93: ; preds = %for.body - %38 = load i32, ptr %code_bits.i108, align 4 - %cmp.i109 = icmp slt i32 %38, 1 - br i1 %cmp.i109, label %if.end.i115, label %stbi__jpeg_get_bit.exit + %38 = load i32, ptr %code_bits.i106, align 4 + %cmp.i107 = icmp slt i32 %38, 1 + br i1 %cmp.i107, label %if.end.i112, label %stbi__jpeg_get_bit.exit -if.end.i115: ; preds = %if.then93 +if.end.i112: ; preds = %if.then93 tail call void @stbi__grow_buffer_unsafe(ptr noundef nonnull %j) - %.pr.i = load i32, ptr %code_bits.i108, align 4 - %cmp2.i116 = icmp slt i32 %.pr.i, 1 - br i1 %cmp2.i116, label %for.inc, label %stbi__jpeg_get_bit.exit - -stbi__jpeg_get_bit.exit: ; preds = %if.then93, %if.end.i115 - %39 = phi i32 [ %.pr.i, %if.end.i115 ], [ %38, %if.then93 ] - %40 = load i32, ptr %code_buffer.i111, align 8 - %shl.i112 = shl i32 %40, 1 - store i32 %shl.i112, ptr %code_buffer.i111, align 8 + %.pr.i = load i32, ptr %code_bits.i106, align 4 + %cmp2.i113 = icmp slt i32 %.pr.i, 1 + br i1 %cmp2.i113, label %for.inc, label %stbi__jpeg_get_bit.exit + +stbi__jpeg_get_bit.exit: ; preds = %if.then93, %if.end.i112 + %39 = phi i32 [ %.pr.i, %if.end.i112 ], [ %38, %if.then93 ] + %40 = load i32, ptr %code_buffer.i109, align 8 + %shl.i110 = shl i32 %40, 1 + store i32 %shl.i110, ptr %code_buffer.i109, align 8 %dec.i = add nsw i32 %39, -1 - store i32 %dec.i, ptr %code_bits.i108, align 4 + store i32 %dec.i, ptr %code_bits.i106, align 4 %tobool95.not = icmp sgt i32 %40, -1 br i1 %tobool95.not, label %for.inc, label %if.then96 @@ -12180,7 +12156,7 @@ if.then102: ; preds = %if.then96 store i16 %conv115.sink, ptr %arrayidx89, align 2 br label %for.inc -for.inc: ; preds = %if.then102, %if.end.i115, %for.body, %if.then96, %stbi__jpeg_get_bit.exit +for.inc: ; preds = %if.then102, %if.end.i112, %for.body, %if.then96, %stbi__jpeg_get_bit.exit %indvars.iv.next = add nsw i64 %indvars.iv, 1 %42 = load i32, ptr %spec_end83, align 8 %43 = sext i32 %42 to i64 @@ -12189,152 +12165,148 @@ for.inc: ; preds = %if.then102, %if.end do.body123: ; preds = %do.body123.preheader, %do.cond213 %k.3 = phi i32 [ %k.5, %do.cond213 ], [ %0, %do.body123.preheader ] - %44 = load i32, ptr %code_bits.i117, align 4 - %cmp.i118 = icmp slt i32 %44, 16 - br i1 %cmp.i118, label %if.then.i163, label %if.end.i119 + %44 = load i32, ptr %code_bits.i114, align 4 + %cmp.i115 = icmp slt i32 %44, 16 + br i1 %cmp.i115, label %if.then.i160, label %if.end.i116 -if.then.i163: ; preds = %do.body123 +if.then.i160: ; preds = %do.body123 tail call void @stbi__grow_buffer_unsafe(ptr noundef nonnull %j) - br label %if.end.i119 - -if.end.i119: ; preds = %if.then.i163, %do.body123 - %45 = load i32, ptr %code_buffer.i120, align 8 - %shr.i121 = lshr i32 %45, 23 - %idxprom.i122 = zext nneg i32 %shr.i121 to i64 - %arrayidx.i123 = getelementptr inbounds [512 x i8], ptr %hac, i64 0, i64 %idxprom.i122 - %46 = load i8, ptr %arrayidx.i123, align 1 - %cmp1.not.i124 = icmp eq i8 %46, -1 - br i1 %cmp1.not.i124, label %if.end17.i136, label %if.then3.i125 - -if.then3.i125: ; preds = %if.end.i119 - %idxprom4.i126 = zext i8 %46 to i64 - %arrayidx5.i127 = getelementptr inbounds %struct.stbi__huffman, ptr %hac, i64 0, i32 3, i64 %idxprom4.i126 - %47 = load i8, ptr %arrayidx5.i127, align 1 - %conv6.i128 = zext i8 %47 to i32 - %48 = load i32, ptr %code_bits.i117, align 4 - %cmp8.i129 = icmp slt i32 %48, %conv6.i128 - br i1 %cmp8.i129, label %if.then130, label %if.end11.i130 - -if.end11.i130: ; preds = %if.then3.i125 - %shl.i131 = shl i32 %45, %conv6.i128 - store i32 %shl.i131, ptr %code_buffer.i120, align 8 - %sub.i132 = sub nsw i32 %48, %conv6.i128 - store i32 %sub.i132, ptr %code_bits.i117, align 4 + br label %if.end.i116 + +if.end.i116: ; preds = %if.then.i160, %do.body123 + %45 = load i32, ptr %code_buffer.i117, align 8 + %shr.i118 = lshr i32 %45, 23 + %idxprom.i119 = zext nneg i32 %shr.i118 to i64 + %arrayidx.i120 = getelementptr inbounds [512 x i8], ptr %hac, i64 0, i64 %idxprom.i119 + %46 = load i8, ptr %arrayidx.i120, align 1 + %cmp1.not.i121 = icmp eq i8 %46, -1 + br i1 %cmp1.not.i121, label %if.end17.i133, label %if.then3.i122 + +if.then3.i122: ; preds = %if.end.i116 + %idxprom4.i123 = zext i8 %46 to i64 + %arrayidx5.i124 = getelementptr inbounds %struct.stbi__huffman, ptr %hac, i64 0, i32 3, i64 %idxprom4.i123 + %47 = load i8, ptr %arrayidx5.i124, align 1 + %conv6.i125 = zext i8 %47 to i32 + %48 = load i32, ptr %code_bits.i114, align 4 + %cmp8.i126 = icmp slt i32 %48, %conv6.i125 + br i1 %cmp8.i126, label %if.then130, label %if.end11.i127 + +if.end11.i127: ; preds = %if.then3.i122 + %shl.i128 = shl i32 %45, %conv6.i125 + store i32 %shl.i128, ptr %code_buffer.i117, align 8 + %sub.i129 = sub nsw i32 %48, %conv6.i125 + store i32 %sub.i129, ptr %code_bits.i114, align 4 br label %if.end132 -if.end17.i136: ; preds = %if.end.i119 - %shr19.i137 = lshr i32 %45, 16 - br label %for.cond.i138 - -for.cond.i138: ; preds = %for.cond.i138, %if.end17.i136 - %indvars.iv.i139 = phi i64 [ %indvars.iv.next.i142, %for.cond.i138 ], [ 10, %if.end17.i136 ] - %arrayidx21.i140 = getelementptr inbounds %struct.stbi__huffman, ptr %hac, i64 0, i32 4, i64 %indvars.iv.i139 - %49 = load i32, ptr %arrayidx21.i140, align 4 - %cmp22.i141 = icmp ult i32 %shr19.i137, %49 - %indvars.iv.next.i142 = add nuw i64 %indvars.iv.i139, 1 - br i1 %cmp22.i141, label %for.end.i143, label %for.cond.i138 - -for.end.i143: ; preds = %for.cond.i138 - %50 = trunc i64 %indvars.iv.i139 to i32 - %cmp26.i144 = icmp eq i32 %50, 17 - %51 = load i32, ptr %code_bits.i117, align 4 - br i1 %cmp26.i144, label %if.then28.i161, label %if.end31.i145 - -if.then28.i161: ; preds = %for.end.i143 - %sub30.i162 = add nsw i32 %51, -16 - store i32 %sub30.i162, ptr %code_bits.i117, align 4 +if.end17.i133: ; preds = %if.end.i116 + %shr19.i134 = lshr i32 %45, 16 + br label %for.cond.i135 + +for.cond.i135: ; preds = %for.cond.i135, %if.end17.i133 + %indvars.iv.i136 = phi i64 [ %indvars.iv.next.i139, %for.cond.i135 ], [ 10, %if.end17.i133 ] + %arrayidx21.i137 = getelementptr inbounds %struct.stbi__huffman, ptr %hac, i64 0, i32 4, i64 %indvars.iv.i136 + %49 = load i32, ptr %arrayidx21.i137, align 4 + %cmp22.i138 = icmp ult i32 %shr19.i134, %49 + %indvars.iv.next.i139 = add nuw i64 %indvars.iv.i136, 1 + br i1 %cmp22.i138, label %for.end.i140, label %for.cond.i135 + +for.end.i140: ; preds = %for.cond.i135 + %50 = trunc i64 %indvars.iv.i136 to i32 + %cmp26.i141 = icmp eq i32 %50, 17 + %51 = load i32, ptr %code_bits.i114, align 4 + br i1 %cmp26.i141, label %if.then28.i158, label %if.end31.i142 + +if.then28.i158: ; preds = %for.end.i140 + %sub30.i159 = add nsw i32 %51, -16 + store i32 %sub30.i159, ptr %code_bits.i114, align 4 br label %if.then130 -if.end31.i145: ; preds = %for.end.i143 - %cmp33.i146 = icmp slt i32 %51, %50 - br i1 %cmp33.i146, label %if.then130, label %if.end36.i147 - -if.end36.i147: ; preds = %if.end31.i145 - %sub38.i148 = sub nsw i32 32, %50 - %shr39.i149 = lshr i32 %45, %sub38.i148 - %arrayidx41.i150 = getelementptr inbounds [17 x i32], ptr @stbi__bmask, i64 0, i64 %indvars.iv.i139 - %52 = load i32, ptr %arrayidx41.i150, align 4 - %and42.i151 = and i32 %52, %shr39.i149 - %arrayidx44.i152 = getelementptr inbounds %struct.stbi__huffman, ptr %hac, i64 0, i32 5, i64 %indvars.iv.i139 - %53 = load i32, ptr %arrayidx44.i152, align 4 - %add.i153 = add i32 %and42.i151, %53 - %or.cond.i154 = icmp ugt i32 %add.i153, 255 - br i1 %or.cond.i154, label %if.then130, label %if.end50.i155 - -if.end50.i155: ; preds = %if.end36.i147 - %sub52.i156 = sub nsw i32 %51, %50 - store i32 %sub52.i156, ptr %code_bits.i117, align 4 - %shl54.i157 = shl i32 %45, %50 - store i32 %shl54.i157, ptr %code_buffer.i120, align 8 - %idxprom56.i158 = zext nneg i32 %add.i153 to i64 +if.end31.i142: ; preds = %for.end.i140 + %cmp33.i143 = icmp slt i32 %51, %50 + br i1 %cmp33.i143, label %if.then130, label %if.end36.i144 + +if.end36.i144: ; preds = %if.end31.i142 + %sub38.i145 = sub nsw i32 32, %50 + %shr39.i146 = lshr i32 %45, %sub38.i145 + %arrayidx41.i147 = getelementptr inbounds [17 x i32], ptr @stbi__bmask, i64 0, i64 %indvars.iv.i136 + %52 = load i32, ptr %arrayidx41.i147, align 4 + %and42.i148 = and i32 %52, %shr39.i146 + %arrayidx44.i149 = getelementptr inbounds %struct.stbi__huffman, ptr %hac, i64 0, i32 5, i64 %indvars.iv.i136 + %53 = load i32, ptr %arrayidx44.i149, align 4 + %add.i150 = add i32 %and42.i148, %53 + %or.cond.i151 = icmp ugt i32 %add.i150, 255 + br i1 %or.cond.i151, label %if.then130, label %if.end50.i152 + +if.end50.i152: ; preds = %if.end36.i144 + %sub52.i153 = sub nsw i32 %51, %50 + store i32 %sub52.i153, ptr %code_bits.i114, align 4 + %shl54.i154 = shl i32 %45, %50 + store i32 %shl54.i154, ptr %code_buffer.i117, align 8 + %idxprom56.i155 = zext nneg i32 %add.i150 to i64 br label %if.end132 -if.then130: ; preds = %if.then3.i125, %if.end31.i145, %if.end36.i147, %if.then28.i161 +if.then130: ; preds = %if.then3.i122, %if.end31.i142, %if.end36.i144, %if.then28.i158 %54 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @stbi__g_failure_reason) store ptr @.str.7, ptr %54, align 8 br label %return -if.end132: ; preds = %if.end50.i155, %if.end11.i130 - %55 = phi i32 [ %shl.i131, %if.end11.i130 ], [ %shl54.i157, %if.end50.i155 ] - %56 = phi i32 [ %sub.i132, %if.end11.i130 ], [ %sub52.i156, %if.end50.i155 ] - %idxprom4.i126.pn = phi i64 [ %idxprom4.i126, %if.end11.i130 ], [ %idxprom56.i158, %if.end50.i155 ] - %retval.0.i135.in.in = getelementptr inbounds %struct.stbi__huffman, ptr %hac, i64 0, i32 2, i64 %idxprom4.i126.pn - %retval.0.i135.in = load i8, ptr %retval.0.i135.in.in, align 1 - %retval.0.i135 = zext i8 %retval.0.i135.in to i32 - %and133 = and i32 %retval.0.i135, 15 - %shr134 = lshr i32 %retval.0.i135, 4 +if.end132: ; preds = %if.end50.i152, %if.end11.i127 + %55 = phi i32 [ %shl.i128, %if.end11.i127 ], [ %shl54.i154, %if.end50.i152 ] + %56 = phi i32 [ %sub.i129, %if.end11.i127 ], [ %sub52.i153, %if.end50.i152 ] + %idxprom4.i123.pn = phi i64 [ %idxprom4.i123, %if.end11.i127 ], [ %idxprom56.i155, %if.end50.i152 ] + %retval.0.i132.in.in = getelementptr inbounds %struct.stbi__huffman, ptr %hac, i64 0, i32 2, i64 %idxprom4.i123.pn + %retval.0.i132.in = load i8, ptr %retval.0.i132.in.in, align 1 + %retval.0.i132 = zext i8 %retval.0.i132.in to i32 + %and133 = and i32 %retval.0.i132, 15 + %shr134 = lshr i32 %retval.0.i132, 4 switch i32 %and133, label %if.then155 [ i32 0, label %if.then137 i32 1, label %if.end157 ] if.then137: ; preds = %if.end132 - %cmp138 = icmp ult i8 %retval.0.i135.in, -16 + %cmp138 = icmp ult i8 %retval.0.i132.in, -16 br i1 %cmp138, label %if.then140, label %if.end166 if.then140: ; preds = %if.then137 %notmask = shl nsw i32 -1, %shr134 %sub142 = xor i32 %notmask, -1 store i32 %sub142, ptr %eob_run, align 4 - %tobool144.not = icmp ult i8 %retval.0.i135.in, 16 + %tobool144.not = icmp ult i8 %retval.0.i132.in, 16 br i1 %tobool144.not, label %if.end166, label %if.then145 if.then145: ; preds = %if.then140 - %cmp.i166 = icmp slt i32 %56, %shr134 - br i1 %cmp.i166, label %if.then.i180, label %if.end.i167 + %cmp.i163 = icmp slt i32 %56, %shr134 + br i1 %cmp.i163, label %if.then.i173, label %if.end.i164 -if.then.i180: ; preds = %if.then145 +if.then.i173: ; preds = %if.then145 tail call void @stbi__grow_buffer_unsafe(ptr noundef nonnull %j) - %.pre.i181 = load i32, ptr %code_bits.i117, align 4 - br label %if.end.i167 - -if.end.i167: ; preds = %if.then.i180, %if.then145 - %57 = phi i32 [ %.pre.i181, %if.then.i180 ], [ %56, %if.then145 ] - %cmp2.i168 = icmp slt i32 %57, %shr134 - br i1 %cmp2.i168, label %stbi__jpeg_get_bits.exit, label %if.end4.i169 - -if.end4.i169: ; preds = %if.end.i167 - %58 = load i32, ptr %code_buffer.i120, align 8 - %shl.i171 = shl i32 %58, %shr134 - %sub.i172 = sub nsw i32 0, %shr134 - %and.i173 = and i32 %sub.i172, 31 - %shr.i174 = lshr i32 %58, %and.i173 - %or.i175 = or i32 %shl.i171, %shr.i174 - %idxprom.i176 = zext nneg i32 %shr134 to i64 - %arrayidx.i177 = getelementptr inbounds [17 x i32], ptr @stbi__bmask, i64 0, i64 %idxprom.i176 - %59 = load i32, ptr %arrayidx.i177, align 4 - %not.i178 = xor i32 %59, -1 - %and6.i = and i32 %or.i175, %not.i178 - store i32 %and6.i, ptr %code_buffer.i120, align 8 - %and10.i = and i32 %or.i175, %59 + %.pre.i174 = load i32, ptr %code_bits.i114, align 4 + br label %if.end.i164 + +if.end.i164: ; preds = %if.then.i173, %if.then145 + %57 = phi i32 [ %.pre.i174, %if.then.i173 ], [ %56, %if.then145 ] + %cmp2.i165 = icmp slt i32 %57, %shr134 + br i1 %cmp2.i165, label %stbi__jpeg_get_bits.exit, label %if.end4.i166 + +if.end4.i166: ; preds = %if.end.i164 + %58 = load i32, ptr %code_buffer.i117, align 8 + %or.i168 = tail call i32 @llvm.fshl.i32(i32 %58, i32 %58, i32 %shr134) + %idxprom.i169 = zext nneg i32 %shr134 to i64 + %arrayidx.i170 = getelementptr inbounds [17 x i32], ptr @stbi__bmask, i64 0, i64 %idxprom.i169 + %59 = load i32, ptr %arrayidx.i170, align 4 + %not.i171 = xor i32 %59, -1 + %and6.i = and i32 %or.i168, %not.i171 + store i32 %and6.i, ptr %code_buffer.i117, align 8 + %and10.i = and i32 %or.i168, %59 %sub12.i = sub nsw i32 %57, %shr134 - store i32 %sub12.i, ptr %code_bits.i117, align 4 + store i32 %sub12.i, ptr %code_bits.i114, align 4 br label %stbi__jpeg_get_bits.exit -stbi__jpeg_get_bits.exit: ; preds = %if.end.i167, %if.end4.i169 - %retval.0.i179 = phi i32 [ %and10.i, %if.end4.i169 ], [ 0, %if.end.i167 ] +stbi__jpeg_get_bits.exit: ; preds = %if.end.i164, %if.end4.i166 + %retval.0.i172 = phi i32 [ %and10.i, %if.end4.i166 ], [ 0, %if.end.i164 ] %60 = load i32, ptr %eob_run, align 4 - %add148 = add nsw i32 %60, %retval.0.i179 + %add148 = add nsw i32 %60, %retval.0.i172 store i32 %add148, ptr %eob_run, align 4 br label %if.end166 @@ -12344,48 +12316,48 @@ if.then155: ; preds = %if.end132 br label %return if.end157: ; preds = %if.end132 - %cmp.i183 = icmp slt i32 %56, 1 - br i1 %cmp.i183, label %if.end.i190, label %stbi__jpeg_get_bit.exit193 + %cmp.i176 = icmp slt i32 %56, 1 + br i1 %cmp.i176, label %if.end.i183, label %stbi__jpeg_get_bit.exit186 -if.end.i190: ; preds = %if.end157 +if.end.i183: ; preds = %if.end157 tail call void @stbi__grow_buffer_unsafe(ptr noundef nonnull %j) - %.pr.i191 = load i32, ptr %code_bits.i117, align 4 - %cmp2.i192 = icmp slt i32 %.pr.i191, 1 - br i1 %cmp2.i192, label %if.else162, label %if.end.i190.stbi__jpeg_get_bit.exit193_crit_edge - -if.end.i190.stbi__jpeg_get_bit.exit193_crit_edge: ; preds = %if.end.i190 - %.pre = load i32, ptr %code_buffer.i120, align 8 - br label %stbi__jpeg_get_bit.exit193 - -stbi__jpeg_get_bit.exit193: ; preds = %if.end.i190.stbi__jpeg_get_bit.exit193_crit_edge, %if.end157 - %62 = phi i32 [ %.pre, %if.end.i190.stbi__jpeg_get_bit.exit193_crit_edge ], [ %55, %if.end157 ] - %63 = phi i32 [ %.pr.i191, %if.end.i190.stbi__jpeg_get_bit.exit193_crit_edge ], [ %56, %if.end157 ] - %shl.i186 = shl i32 %62, 1 - store i32 %shl.i186, ptr %code_buffer.i120, align 8 - %dec.i187 = add nsw i32 %63, -1 - store i32 %dec.i187, ptr %code_bits.i117, align 4 + %.pr.i184 = load i32, ptr %code_bits.i114, align 4 + %cmp2.i185 = icmp slt i32 %.pr.i184, 1 + br i1 %cmp2.i185, label %if.else162, label %if.end.i183.stbi__jpeg_get_bit.exit186_crit_edge + +if.end.i183.stbi__jpeg_get_bit.exit186_crit_edge: ; preds = %if.end.i183 + %.pre = load i32, ptr %code_buffer.i117, align 8 + br label %stbi__jpeg_get_bit.exit186 + +stbi__jpeg_get_bit.exit186: ; preds = %if.end.i183.stbi__jpeg_get_bit.exit186_crit_edge, %if.end157 + %62 = phi i32 [ %.pre, %if.end.i183.stbi__jpeg_get_bit.exit186_crit_edge ], [ %55, %if.end157 ] + %63 = phi i32 [ %.pr.i184, %if.end.i183.stbi__jpeg_get_bit.exit186_crit_edge ], [ %56, %if.end157 ] + %shl.i179 = shl i32 %62, 1 + store i32 %shl.i179, ptr %code_buffer.i117, align 8 + %dec.i180 = add nsw i32 %63, -1 + store i32 %dec.i180, ptr %code_bits.i114, align 4 %tobool159.not = icmp sgt i32 %62, -1 br i1 %tobool159.not, label %if.else162, label %if.end166 -if.else162: ; preds = %if.end.i190, %stbi__jpeg_get_bit.exit193 +if.else162: ; preds = %if.end.i183, %stbi__jpeg_get_bit.exit186 br label %if.end166 -if.end166: ; preds = %stbi__jpeg_get_bit.exit193, %if.then140, %stbi__jpeg_get_bits.exit, %if.else162, %if.then137 - %r124.0 = phi i32 [ 15, %if.then137 ], [ %shr134, %if.else162 ], [ 64, %stbi__jpeg_get_bits.exit ], [ 64, %if.then140 ], [ %shr134, %stbi__jpeg_get_bit.exit193 ] - %s125.0 = phi i32 [ 0, %if.then137 ], [ %sub164, %if.else162 ], [ 0, %stbi__jpeg_get_bits.exit ], [ 0, %if.then140 ], [ %conv161, %stbi__jpeg_get_bit.exit193 ] +if.end166: ; preds = %stbi__jpeg_get_bit.exit186, %if.then140, %stbi__jpeg_get_bits.exit, %if.else162, %if.then137 + %r124.0 = phi i32 [ 15, %if.then137 ], [ %shr134, %if.else162 ], [ 64, %stbi__jpeg_get_bits.exit ], [ 64, %if.then140 ], [ %shr134, %stbi__jpeg_get_bit.exit186 ] + %s125.0 = phi i32 [ 0, %if.then137 ], [ %sub164, %if.else162 ], [ 0, %stbi__jpeg_get_bits.exit ], [ 0, %if.then140 ], [ %conv161, %stbi__jpeg_get_bit.exit186 ] %64 = load i32, ptr %spec_end167, align 8 - %cmp168.not232 = icmp sgt i32 %k.3, %64 - br i1 %cmp168.not232, label %do.cond213, label %while.body.preheader + %cmp168.not225 = icmp sgt i32 %k.3, %64 + br i1 %cmp168.not225, label %do.cond213, label %while.body.preheader while.body.preheader: ; preds = %if.end166 %65 = sext i32 %k.3 to i64 br label %while.body while.body: ; preds = %while.body.preheader, %if.end212 - %indvars.iv241 = phi i64 [ %65, %while.body.preheader ], [ %indvars.iv.next242, %if.end212 ] - %r124.1233 = phi i32 [ %r124.0, %while.body.preheader ], [ %r124.2, %if.end212 ] - %indvars.iv.next242 = add nsw i64 %indvars.iv241, 1 - %arrayidx173 = getelementptr inbounds [79 x i8], ptr @stbi__jpeg_dezigzag, i64 0, i64 %indvars.iv241 + %indvars.iv234 = phi i64 [ %65, %while.body.preheader ], [ %indvars.iv.next235, %if.end212 ] + %r124.1226 = phi i32 [ %r124.0, %while.body.preheader ], [ %r124.2, %if.end212 ] + %indvars.iv.next235 = add nsw i64 %indvars.iv234, 1 + %arrayidx173 = getelementptr inbounds [79 x i8], ptr @stbi__jpeg_dezigzag, i64 0, i64 %indvars.iv234 %66 = load i8, ptr %arrayidx173, align 1 %idxprom174 = zext i8 %66 to i64 %arrayidx175 = getelementptr inbounds i16, ptr %data, i64 %idxprom174 @@ -12394,27 +12366,27 @@ while.body: ; preds = %while.body.preheade br i1 %cmp177.not, label %if.else205, label %if.then179 if.then179: ; preds = %while.body - %68 = load i32, ptr %code_bits.i117, align 4 - %cmp.i195 = icmp slt i32 %68, 1 - br i1 %cmp.i195, label %if.end.i202, label %stbi__jpeg_get_bit.exit205 + %68 = load i32, ptr %code_bits.i114, align 4 + %cmp.i188 = icmp slt i32 %68, 1 + br i1 %cmp.i188, label %if.end.i195, label %stbi__jpeg_get_bit.exit198 -if.end.i202: ; preds = %if.then179 +if.end.i195: ; preds = %if.then179 tail call void @stbi__grow_buffer_unsafe(ptr noundef nonnull %j) - %.pr.i203 = load i32, ptr %code_bits.i117, align 4 - %cmp2.i204 = icmp slt i32 %.pr.i203, 1 - br i1 %cmp2.i204, label %if.end212, label %stbi__jpeg_get_bit.exit205 - -stbi__jpeg_get_bit.exit205: ; preds = %if.then179, %if.end.i202 - %69 = phi i32 [ %.pr.i203, %if.end.i202 ], [ %68, %if.then179 ] - %70 = load i32, ptr %code_buffer.i120, align 8 - %shl.i198 = shl i32 %70, 1 - store i32 %shl.i198, ptr %code_buffer.i120, align 8 - %dec.i199 = add nsw i32 %69, -1 - store i32 %dec.i199, ptr %code_bits.i117, align 4 + %.pr.i196 = load i32, ptr %code_bits.i114, align 4 + %cmp2.i197 = icmp slt i32 %.pr.i196, 1 + br i1 %cmp2.i197, label %if.end212, label %stbi__jpeg_get_bit.exit198 + +stbi__jpeg_get_bit.exit198: ; preds = %if.then179, %if.end.i195 + %69 = phi i32 [ %.pr.i196, %if.end.i195 ], [ %68, %if.then179 ] + %70 = load i32, ptr %code_buffer.i117, align 8 + %shl.i191 = shl i32 %70, 1 + store i32 %shl.i191, ptr %code_buffer.i117, align 8 + %dec.i192 = add nsw i32 %69, -1 + store i32 %dec.i192, ptr %code_bits.i114, align 4 %tobool181.not = icmp sgt i32 %70, -1 br i1 %tobool181.not, label %if.end212, label %if.then182 -if.then182: ; preds = %stbi__jpeg_get_bit.exit205 +if.then182: ; preds = %stbi__jpeg_get_bit.exit198 %71 = load i16, ptr %arrayidx175, align 2 %conv183 = sext i16 %71 to i32 %and185 = and i32 %conv161, %conv183 @@ -12436,33 +12408,33 @@ if.else197: ; preds = %if.then188 br label %if.end212 if.else205: ; preds = %while.body - %cmp206 = icmp eq i32 %r124.1233, 0 + %cmp206 = icmp eq i32 %r124.1226, 0 br i1 %cmp206, label %if.then208, label %if.end210 if.then208: ; preds = %if.else205 - %72 = trunc i64 %indvars.iv.next242 to i32 + %72 = trunc i64 %indvars.iv.next235 to i32 %conv209 = trunc i32 %s125.0 to i16 store i16 %conv209, ptr %arrayidx175, align 2 - %.pre244 = load i32, ptr %spec_end167, align 8 + %.pre237 = load i32, ptr %spec_end167, align 8 br label %do.cond213 if.end210: ; preds = %if.else205 - %dec211 = add nsw i32 %r124.1233, -1 + %dec211 = add nsw i32 %r124.1226, -1 br label %if.end212 -if.end212: ; preds = %if.end.i202, %stbi__jpeg_get_bit.exit205, %if.then192, %if.else197, %if.then182, %if.end210 - %r124.2 = phi i32 [ %r124.1233, %if.then192 ], [ %r124.1233, %if.else197 ], [ %r124.1233, %if.then182 ], [ %r124.1233, %stbi__jpeg_get_bit.exit205 ], [ %dec211, %if.end210 ], [ %r124.1233, %if.end.i202 ] +if.end212: ; preds = %if.end.i195, %stbi__jpeg_get_bit.exit198, %if.then192, %if.else197, %if.then182, %if.end210 + %r124.2 = phi i32 [ %r124.1226, %if.then192 ], [ %r124.1226, %if.else197 ], [ %r124.1226, %if.then182 ], [ %r124.1226, %stbi__jpeg_get_bit.exit198 ], [ %dec211, %if.end210 ], [ %r124.1226, %if.end.i195 ] %73 = load i32, ptr %spec_end167, align 8 %74 = sext i32 %73 to i64 - %cmp168.not.not = icmp slt i64 %indvars.iv241, %74 + %cmp168.not.not = icmp slt i64 %indvars.iv234, %74 br i1 %cmp168.not.not, label %while.body, label %do.cond213.loopexit, !llvm.loop !99 do.cond213.loopexit: ; preds = %if.end212 - %75 = trunc i64 %indvars.iv.next242 to i32 + %75 = trunc i64 %indvars.iv.next235 to i32 br label %do.cond213 do.cond213: ; preds = %do.cond213.loopexit, %if.end166, %if.then208 - %76 = phi i32 [ %.pre244, %if.then208 ], [ %64, %if.end166 ], [ %73, %do.cond213.loopexit ] + %76 = phi i32 [ %.pre237, %if.then208 ], [ %64, %if.end166 ], [ %73, %do.cond213.loopexit ] %k.5 = phi i32 [ %72, %if.then208 ], [ %k.3, %if.end166 ], [ %75, %do.cond213.loopexit ] %cmp215.not = icmp sgt i32 %k.5, %76 br i1 %cmp215.not, label %return, label %do.body123, !llvm.loop !100 @@ -20478,7 +20450,7 @@ stbi__zreceive.exit43: ; preds = %stbi__zget8.exit.i. store i32 %shr.i22, ptr %code_buffer, align 8 %sub3.i23 = add nsw i32 %20, -2 store i32 %sub3.i23, ptr %num_bits, align 8 - switch i32 %and.i21, label %stbi__zreceive.exit43.unreachabledefault [ + switch i32 %and.i21, label %default.unreachable [ i32 0, label %if.then6 i32 3, label %return i32 1, label %if.then15 @@ -20500,7 +20472,7 @@ if.end19: ; preds = %if.then15 %tobool21.not = icmp eq i32 %call20, 0 br i1 %tobool21.not, label %return, label %if.end29 -stbi__zreceive.exit43.unreachabledefault: ; preds = %stbi__zreceive.exit43 +default.unreachable: ; preds = %stbi__zreceive.exit43 unreachable if.else24: ; preds = %stbi__zreceive.exit43 @@ -32970,6 +32942,9 @@ declare <8 x i16> @llvm.x86.sse2.pmulh.w(<8 x i16>, <8 x i16>) #35 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umin.i64(i64, i64) #36 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.fshl.i32(i32, i32, i32) #36 + ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i16 @llvm.bitreverse.i16(i16) #36