From 4262efe7f507eb5e52cc34b1839770b0a3550358 Mon Sep 17 00:00:00 2001 From: dtcxzyw <15650457+dtcxzyw@users.noreply.github.com> Date: Sat, 28 Sep 2024 14:49:29 +0800 Subject: [PATCH 1/2] pre-commit: PR109689 --- 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 820278fb20a..846d94c0e80 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/109689 # Please rebase manually # git fetch origin From 9511ab7a235a34d2b3422a73f2ae2e0c631d55db Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 28 Sep 2024 15:05:41 +0800 Subject: [PATCH 2/2] pre-commit: Update --- bench/libwebp/optimized/dec_sse2.c.ll | 47 +- bench/libwebp/optimized/enc_sse2.c.ll | 369 +++++++------- bench/minetest/optimized/game.cpp.ll | 453 +++++++++-------- .../ncnn/optimized/lstm_x86_avx512vnni.cpp.ll | 206 ++++---- bench/node/optimized/simdutf.ll | 459 +++++++++--------- bench/pbrt-v4/optimized/cameras.cpp.ll | 73 ++- bench/rand-rs/optimized/qpqwmytuo9t2y51.ll | 359 +++++++------- 7 files changed, 951 insertions(+), 1015 deletions(-) diff --git a/bench/libwebp/optimized/dec_sse2.c.ll b/bench/libwebp/optimized/dec_sse2.c.ll index 18f5fbcf740..eb2d9cdc59a 100644 --- a/bench/libwebp/optimized/dec_sse2.c.ll +++ b/bench/libwebp/optimized/dec_sse2.c.ll @@ -3414,32 +3414,29 @@ define internal void @VL4_SSE2(ptr nocapture noundef %0) #1 { %19 = and <2 x i64> %14, %18 %20 = bitcast <2 x i64> %19 to <16 x i8> %21 = tail call <16 x i8> @llvm.usub.sat.v16i8(<16 x i8> %11, <16 x i8> %20) - %22 = bitcast <16 x i8> %21 to <4 x i32> - %23 = extractelement <4 x i32> %22, i64 1 - %24 = bitcast <16 x i8> %9 to <4 x i32> - %25 = extractelement <4 x i32> %24, i64 0 - store i32 %25, ptr %0, align 1 - %26 = getelementptr inbounds i8, ptr %0, i64 32 - %27 = bitcast <16 x i8> %21 to <4 x i32> - %28 = extractelement <4 x i32> %27, i64 0 - store i32 %28, ptr %26, align 1 - %29 = getelementptr inbounds i8, ptr %0, i64 64 - %30 = shufflevector <16 x i8> %9, <16 x i8> poison, <16 x i32> - %31 = bitcast <16 x i8> %30 to <4 x i32> - %32 = extractelement <4 x i32> %31, i64 0 - store i32 %32, ptr %29, align 1 - %33 = getelementptr inbounds i8, ptr %0, i64 96 - %34 = shufflevector <16 x i8> %21, <16 x i8> poison, <16 x i32> - %35 = bitcast <16 x i8> %34 to <4 x i32> - %36 = extractelement <4 x i32> %35, i64 0 - store i32 %36, ptr %33, align 1 - %37 = trunc i32 %23 to i8 - %38 = getelementptr inbounds i8, ptr %0, i64 67 + %22 = bitcast <16 x i8> %9 to <4 x i32> + %23 = extractelement <4 x i32> %22, i64 0 + store i32 %23, ptr %0, align 1 + %24 = getelementptr inbounds i8, ptr %0, i64 32 + %25 = bitcast <16 x i8> %21 to <4 x i32> + %26 = extractelement <4 x i32> %25, i64 0 + store i32 %26, ptr %24, align 1 + %27 = getelementptr inbounds i8, ptr %0, i64 64 + %28 = shufflevector <16 x i8> %9, <16 x i8> poison, <16 x i32> + %29 = bitcast <16 x i8> %28 to <4 x i32> + %30 = extractelement <4 x i32> %29, i64 0 + store i32 %30, ptr %27, align 1 + %31 = getelementptr inbounds i8, ptr %0, i64 96 + %32 = shufflevector <16 x i8> %21, <16 x i8> poison, <16 x i32> + %33 = bitcast <16 x i8> %32 to <4 x i32> + %34 = extractelement <4 x i32> %33, i64 0 + store i32 %34, ptr %31, align 1 + %35 = extractelement <16 x i8> %21, i64 4 + %36 = getelementptr inbounds i8, ptr %0, i64 67 + store i8 %35, ptr %36, align 1 + %37 = extractelement <16 x i8> %21, i64 5 + %38 = getelementptr inbounds i8, ptr %0, i64 99 store i8 %37, ptr %38, align 1 - %39 = lshr i32 %23, 8 - %40 = trunc i32 %39 to i8 - %41 = getelementptr inbounds i8, ptr %0, i64 99 - store i8 %40, ptr %41, align 1 ret void } diff --git a/bench/libwebp/optimized/enc_sse2.c.ll b/bench/libwebp/optimized/enc_sse2.c.ll index 060a7bda0dd..696c370e5ae 100644 --- a/bench/libwebp/optimized/enc_sse2.c.ll +++ b/bench/libwebp/optimized/enc_sse2.c.ll @@ -1180,198 +1180,195 @@ VE4_SSE2.exit: ; preds = %51 %217 = and <16 x i8> %213, %218 = and <16 x i8> %217, %216 %219 = tail call <16 x i8> @llvm.usub.sat.v16i8(<16 x i8> %212, <16 x i8> %218) - %220 = bitcast <16 x i8> %219 to <4 x i32> - %221 = extractelement <4 x i32> %220, i64 1 - %222 = bitcast <16 x i8> %210 to <4 x i32> - %223 = extractelement <4 x i32> %222, i64 0 - store i32 %223, ptr %205, align 1 - %224 = getelementptr inbounds i8, ptr %0, i64 1596 - %225 = bitcast <16 x i8> %219 to <4 x i32> - %226 = extractelement <4 x i32> %225, i64 0 - store i32 %226, ptr %224, align 1 - %227 = getelementptr inbounds i8, ptr %0, i64 1628 - %228 = shufflevector <16 x i8> %210, <16 x i8> poison, <16 x i32> - %229 = bitcast <16 x i8> %228 to <4 x i32> - %230 = extractelement <4 x i32> %229, i64 0 - store i32 %230, ptr %227, align 1 - %231 = getelementptr inbounds i8, ptr %0, i64 1660 - %232 = shufflevector <16 x i8> %219, <16 x i8> poison, <16 x i32> - %233 = bitcast <16 x i8> %232 to <4 x i32> - %234 = extractelement <4 x i32> %233, i64 0 - store i32 %234, ptr %231, align 1 - %235 = trunc i32 %221 to i8 - %236 = getelementptr inbounds i8, ptr %0, i64 1631 + %220 = bitcast <16 x i8> %210 to <4 x i32> + %221 = extractelement <4 x i32> %220, i64 0 + store i32 %221, ptr %205, align 1 + %222 = getelementptr inbounds i8, ptr %0, i64 1596 + %223 = bitcast <16 x i8> %219 to <4 x i32> + %224 = extractelement <4 x i32> %223, i64 0 + store i32 %224, ptr %222, align 1 + %225 = getelementptr inbounds i8, ptr %0, i64 1628 + %226 = shufflevector <16 x i8> %210, <16 x i8> poison, <16 x i32> + %227 = bitcast <16 x i8> %226 to <4 x i32> + %228 = extractelement <4 x i32> %227, i64 0 + store i32 %228, ptr %225, align 1 + %229 = getelementptr inbounds i8, ptr %0, i64 1660 + %230 = shufflevector <16 x i8> %219, <16 x i8> poison, <16 x i32> + %231 = bitcast <16 x i8> %230 to <4 x i32> + %232 = extractelement <4 x i32> %231, i64 0 + store i32 %232, ptr %229, align 1 + %233 = extractelement <16 x i8> %219, i64 4 + %234 = getelementptr inbounds i8, ptr %0, i64 1631 + store i8 %233, ptr %234, align 1 + %235 = extractelement <16 x i8> %219, i64 5 + %236 = getelementptr inbounds i8, ptr %0, i64 1663 store i8 %235, ptr %236, align 1 - %237 = lshr i32 %221, 8 - %238 = trunc i32 %237 to i8 - %239 = getelementptr inbounds i8, ptr %0, i64 1663 - store i8 %238, ptr %239, align 1 - %240 = getelementptr inbounds i8, ptr %0, i64 1664 - %241 = load i8, ptr %22, align 1 - %242 = zext i8 %241 to i32 - %243 = load i8, ptr %57, align 1 - %244 = zext i8 %243 to i32 - %245 = load i8, ptr %60, align 1 - %246 = zext i8 %245 to i32 - %247 = load i8, ptr %63, align 1 - %248 = zext i8 %247 to i32 - %249 = load i8, ptr %66, align 1 - %250 = zext i8 %249 to i32 - %251 = load i8, ptr %1, align 1 + %237 = getelementptr inbounds i8, ptr %0, i64 1664 + %238 = load i8, ptr %22, align 1 + %239 = zext i8 %238 to i32 + %240 = load i8, ptr %57, align 1 + %241 = zext i8 %240 to i32 + %242 = load i8, ptr %60, align 1 + %243 = zext i8 %242 to i32 + %244 = load i8, ptr %63, align 1 + %245 = zext i8 %244 to i32 + %246 = load i8, ptr %66, align 1 + %247 = zext i8 %246 to i32 + %248 = load i8, ptr %1, align 1 + %249 = zext i8 %248 to i32 + %250 = getelementptr inbounds i8, ptr %1, i64 1 + %251 = load i8, ptr %250, align 1 %252 = zext i8 %251 to i32 - %253 = getelementptr inbounds i8, ptr %1, i64 1 + %253 = getelementptr inbounds i8, ptr %1, i64 2 %254 = load i8, ptr %253, align 1 %255 = zext i8 %254 to i32 - %256 = getelementptr inbounds i8, ptr %1, i64 2 - %257 = load i8, ptr %256, align 1 - %258 = zext i8 %257 to i32 - %259 = add nuw nsw i32 %244, 1 - %260 = add nuw nsw i32 %259, %242 - %261 = lshr i32 %260, 1 - %262 = trunc nuw i32 %261 to i8 - %263 = getelementptr inbounds i8, ptr %0, i64 1698 - store i8 %262, ptr %263, align 1 - store i8 %262, ptr %240, align 1 - %264 = add nuw nsw i32 %259, %246 - %265 = lshr i32 %264, 1 - %266 = trunc nuw i32 %265 to i8 - %267 = getelementptr inbounds i8, ptr %0, i64 1730 - store i8 %266, ptr %267, align 1 - %268 = getelementptr inbounds i8, ptr %0, i64 1696 - store i8 %266, ptr %268, align 1 - %269 = add nuw nsw i32 %248, 1 - %270 = add nuw nsw i32 %269, %246 - %271 = lshr i32 %270, 1 - %272 = trunc nuw i32 %271 to i8 - %273 = getelementptr inbounds i8, ptr %0, i64 1762 - store i8 %272, ptr %273, align 1 - %274 = getelementptr inbounds i8, ptr %0, i64 1728 - store i8 %272, ptr %274, align 1 - %275 = add nuw nsw i32 %269, %250 - %276 = lshr i32 %275, 1 - %277 = trunc nuw i32 %276 to i8 - %278 = getelementptr inbounds i8, ptr %0, i64 1760 - store i8 %277, ptr %278, align 1 - %279 = shl nuw nsw i32 %255, 1 - %280 = add nuw nsw i32 %252, 2 - %281 = add nuw nsw i32 %280, %279 - %282 = add nuw nsw i32 %281, %258 - %283 = lshr i32 %282, 2 - %284 = trunc nuw i32 %283 to i8 - %285 = getelementptr inbounds i8, ptr %0, i64 1667 - store i8 %284, ptr %285, align 1 - %286 = shl nuw nsw i32 %252, 1 - %287 = add nuw nsw i32 %242, 2 - %288 = add nuw nsw i32 %286, %287 - %289 = add nuw nsw i32 %288, %255 - %290 = lshr i32 %289, 2 - %291 = trunc nuw i32 %290 to i8 - %292 = getelementptr inbounds i8, ptr %0, i64 1666 - store i8 %291, ptr %292, align 1 - %293 = shl nuw nsw i32 %242, 1 - %294 = add nuw nsw i32 %244, 2 - %295 = add nuw nsw i32 %294, %293 - %296 = add nuw nsw i32 %295, %252 - %297 = lshr i32 %296, 2 - %298 = trunc nuw i32 %297 to i8 - %299 = getelementptr inbounds i8, ptr %0, i64 1699 - store i8 %298, ptr %299, align 1 - %300 = getelementptr inbounds i8, ptr %0, i64 1665 - store i8 %298, ptr %300, align 1 - %301 = shl nuw nsw i32 %244, 1 - %302 = add nuw nsw i32 %287, %246 - %303 = add nuw nsw i32 %302, %301 - %304 = lshr i32 %303, 2 - %305 = trunc nuw i32 %304 to i8 - %306 = getelementptr inbounds i8, ptr %0, i64 1731 - store i8 %305, ptr %306, align 1 - %307 = getelementptr inbounds i8, ptr %0, i64 1697 - store i8 %305, ptr %307, align 1 - %308 = shl nuw nsw i32 %246, 1 - %309 = add nuw nsw i32 %294, %248 - %310 = add nuw nsw i32 %309, %308 - %311 = lshr i32 %310, 2 - %312 = trunc nuw i32 %311 to i8 - %313 = getelementptr inbounds i8, ptr %0, i64 1763 - store i8 %312, ptr %313, align 1 - %314 = getelementptr inbounds i8, ptr %0, i64 1729 - store i8 %312, ptr %314, align 1 - %315 = shl nuw nsw i32 %248, 1 - %316 = add nuw nsw i32 %246, 2 - %317 = add nuw nsw i32 %316, %250 - %318 = add nuw nsw i32 %317, %315 - %319 = lshr i32 %318, 2 - %320 = trunc nuw i32 %319 to i8 - %321 = getelementptr inbounds i8, ptr %0, i64 1761 - store i8 %320, ptr %321, align 1 - %322 = getelementptr inbounds i8, ptr %0, i64 1668 - %323 = load i8, ptr %57, align 1 - %324 = zext i8 %323 to i32 - %325 = load i8, ptr %60, align 1 - %326 = zext i8 %325 to i32 - %327 = load i8, ptr %63, align 1 - %328 = zext i8 %327 to i32 - %329 = load i8, ptr %66, align 1 - %330 = zext i8 %329 to i32 - %331 = add nuw nsw i32 %326, 1 - %332 = add nuw nsw i32 %331, %324 + %256 = add nuw nsw i32 %241, 1 + %257 = add nuw nsw i32 %256, %239 + %258 = lshr i32 %257, 1 + %259 = trunc nuw i32 %258 to i8 + %260 = getelementptr inbounds i8, ptr %0, i64 1698 + store i8 %259, ptr %260, align 1 + store i8 %259, ptr %237, align 1 + %261 = add nuw nsw i32 %256, %243 + %262 = lshr i32 %261, 1 + %263 = trunc nuw i32 %262 to i8 + %264 = getelementptr inbounds i8, ptr %0, i64 1730 + store i8 %263, ptr %264, align 1 + %265 = getelementptr inbounds i8, ptr %0, i64 1696 + store i8 %263, ptr %265, align 1 + %266 = add nuw nsw i32 %245, 1 + %267 = add nuw nsw i32 %266, %243 + %268 = lshr i32 %267, 1 + %269 = trunc nuw i32 %268 to i8 + %270 = getelementptr inbounds i8, ptr %0, i64 1762 + store i8 %269, ptr %270, align 1 + %271 = getelementptr inbounds i8, ptr %0, i64 1728 + store i8 %269, ptr %271, align 1 + %272 = add nuw nsw i32 %266, %247 + %273 = lshr i32 %272, 1 + %274 = trunc nuw i32 %273 to i8 + %275 = getelementptr inbounds i8, ptr %0, i64 1760 + store i8 %274, ptr %275, align 1 + %276 = shl nuw nsw i32 %252, 1 + %277 = add nuw nsw i32 %249, 2 + %278 = add nuw nsw i32 %277, %276 + %279 = add nuw nsw i32 %278, %255 + %280 = lshr i32 %279, 2 + %281 = trunc nuw i32 %280 to i8 + %282 = getelementptr inbounds i8, ptr %0, i64 1667 + store i8 %281, ptr %282, align 1 + %283 = shl nuw nsw i32 %249, 1 + %284 = add nuw nsw i32 %239, 2 + %285 = add nuw nsw i32 %283, %284 + %286 = add nuw nsw i32 %285, %252 + %287 = lshr i32 %286, 2 + %288 = trunc nuw i32 %287 to i8 + %289 = getelementptr inbounds i8, ptr %0, i64 1666 + store i8 %288, ptr %289, align 1 + %290 = shl nuw nsw i32 %239, 1 + %291 = add nuw nsw i32 %241, 2 + %292 = add nuw nsw i32 %291, %290 + %293 = add nuw nsw i32 %292, %249 + %294 = lshr i32 %293, 2 + %295 = trunc nuw i32 %294 to i8 + %296 = getelementptr inbounds i8, ptr %0, i64 1699 + store i8 %295, ptr %296, align 1 + %297 = getelementptr inbounds i8, ptr %0, i64 1665 + store i8 %295, ptr %297, align 1 + %298 = shl nuw nsw i32 %241, 1 + %299 = add nuw nsw i32 %284, %243 + %300 = add nuw nsw i32 %299, %298 + %301 = lshr i32 %300, 2 + %302 = trunc nuw i32 %301 to i8 + %303 = getelementptr inbounds i8, ptr %0, i64 1731 + store i8 %302, ptr %303, align 1 + %304 = getelementptr inbounds i8, ptr %0, i64 1697 + store i8 %302, ptr %304, align 1 + %305 = shl nuw nsw i32 %243, 1 + %306 = add nuw nsw i32 %291, %245 + %307 = add nuw nsw i32 %306, %305 + %308 = lshr i32 %307, 2 + %309 = trunc nuw i32 %308 to i8 + %310 = getelementptr inbounds i8, ptr %0, i64 1763 + store i8 %309, ptr %310, align 1 + %311 = getelementptr inbounds i8, ptr %0, i64 1729 + store i8 %309, ptr %311, align 1 + %312 = shl nuw nsw i32 %245, 1 + %313 = add nuw nsw i32 %243, 2 + %314 = add nuw nsw i32 %313, %247 + %315 = add nuw nsw i32 %314, %312 + %316 = lshr i32 %315, 2 + %317 = trunc nuw i32 %316 to i8 + %318 = getelementptr inbounds i8, ptr %0, i64 1761 + store i8 %317, ptr %318, align 1 + %319 = getelementptr inbounds i8, ptr %0, i64 1668 + %320 = load i8, ptr %57, align 1 + %321 = zext i8 %320 to i32 + %322 = load i8, ptr %60, align 1 + %323 = zext i8 %322 to i32 + %324 = load i8, ptr %63, align 1 + %325 = zext i8 %324 to i32 + %326 = load i8, ptr %66, align 1 + %327 = zext i8 %326 to i32 + %328 = add nuw nsw i32 %323, 1 + %329 = add nuw nsw i32 %328, %321 + %330 = lshr i32 %329, 1 + %331 = trunc nuw i32 %330 to i8 + store i8 %331, ptr %319, align 1 + %332 = add nuw nsw i32 %328, %325 %333 = lshr i32 %332, 1 %334 = trunc nuw i32 %333 to i8 - store i8 %334, ptr %322, align 1 - %335 = add nuw nsw i32 %331, %328 - %336 = lshr i32 %335, 1 - %337 = trunc nuw i32 %336 to i8 - %338 = getelementptr inbounds i8, ptr %0, i64 1700 - store i8 %337, ptr %338, align 1 - %339 = getelementptr inbounds i8, ptr %0, i64 1670 - store i8 %337, ptr %339, align 1 - %340 = add nuw nsw i32 %328, 1 - %341 = add nuw nsw i32 %340, %330 - %342 = lshr i32 %341, 1 - %343 = trunc nuw i32 %342 to i8 - %344 = getelementptr inbounds i8, ptr %0, i64 1732 - store i8 %343, ptr %344, align 1 - %345 = getelementptr inbounds i8, ptr %0, i64 1702 - store i8 %343, ptr %345, align 1 - %346 = shl nuw nsw i32 %326, 1 - %347 = add nuw nsw i32 %328, 2 - %348 = add nuw nsw i32 %346, %324 - %349 = add nuw nsw i32 %348, %347 - %350 = lshr i32 %349, 2 - %351 = trunc nuw i32 %350 to i8 - %352 = getelementptr inbounds i8, ptr %0, i64 1669 - store i8 %351, ptr %352, align 1 - %353 = shl nuw nsw i32 %328, 1 - %354 = add nuw nsw i32 %326, 2 - %355 = add nuw nsw i32 %354, %330 - %356 = add nuw nsw i32 %355, %353 - %357 = lshr i32 %356, 2 - %358 = trunc nuw i32 %357 to i8 - %359 = getelementptr inbounds i8, ptr %0, i64 1701 - store i8 %358, ptr %359, align 1 - %360 = getelementptr inbounds i8, ptr %0, i64 1671 - store i8 %358, ptr %360, align 1 - %361 = shl nuw nsw i32 %330, 1 - %362 = add nuw nsw i32 %347, %330 - %363 = add nuw nsw i32 %362, %361 - %364 = lshr i32 %363, 2 - %365 = trunc nuw i32 %364 to i8 - %366 = getelementptr inbounds i8, ptr %0, i64 1733 - store i8 %365, ptr %366, align 1 - %367 = getelementptr inbounds i8, ptr %0, i64 1703 - store i8 %365, ptr %367, align 1 - %368 = getelementptr inbounds i8, ptr %0, i64 1767 - store i8 %329, ptr %368, align 1 - %369 = getelementptr inbounds i8, ptr %0, i64 1766 - store i8 %329, ptr %369, align 1 - %370 = getelementptr inbounds i8, ptr %0, i64 1765 - store i8 %329, ptr %370, align 1 - %371 = getelementptr inbounds i8, ptr %0, i64 1764 - store i8 %329, ptr %371, align 1 - %372 = getelementptr inbounds i8, ptr %0, i64 1734 - store i8 %329, ptr %372, align 1 - %373 = getelementptr inbounds i8, ptr %0, i64 1735 - store i8 %329, ptr %373, align 1 + %335 = getelementptr inbounds i8, ptr %0, i64 1700 + store i8 %334, ptr %335, align 1 + %336 = getelementptr inbounds i8, ptr %0, i64 1670 + store i8 %334, ptr %336, align 1 + %337 = add nuw nsw i32 %325, 1 + %338 = add nuw nsw i32 %337, %327 + %339 = lshr i32 %338, 1 + %340 = trunc nuw i32 %339 to i8 + %341 = getelementptr inbounds i8, ptr %0, i64 1732 + store i8 %340, ptr %341, align 1 + %342 = getelementptr inbounds i8, ptr %0, i64 1702 + store i8 %340, ptr %342, align 1 + %343 = shl nuw nsw i32 %323, 1 + %344 = add nuw nsw i32 %325, 2 + %345 = add nuw nsw i32 %343, %321 + %346 = add nuw nsw i32 %345, %344 + %347 = lshr i32 %346, 2 + %348 = trunc nuw i32 %347 to i8 + %349 = getelementptr inbounds i8, ptr %0, i64 1669 + store i8 %348, ptr %349, align 1 + %350 = shl nuw nsw i32 %325, 1 + %351 = add nuw nsw i32 %323, 2 + %352 = add nuw nsw i32 %351, %327 + %353 = add nuw nsw i32 %352, %350 + %354 = lshr i32 %353, 2 + %355 = trunc nuw i32 %354 to i8 + %356 = getelementptr inbounds i8, ptr %0, i64 1701 + store i8 %355, ptr %356, align 1 + %357 = getelementptr inbounds i8, ptr %0, i64 1671 + store i8 %355, ptr %357, align 1 + %358 = shl nuw nsw i32 %327, 1 + %359 = add nuw nsw i32 %344, %327 + %360 = add nuw nsw i32 %359, %358 + %361 = lshr i32 %360, 2 + %362 = trunc nuw i32 %361 to i8 + %363 = getelementptr inbounds i8, ptr %0, i64 1733 + store i8 %362, ptr %363, align 1 + %364 = getelementptr inbounds i8, ptr %0, i64 1703 + store i8 %362, ptr %364, align 1 + %365 = getelementptr inbounds i8, ptr %0, i64 1767 + store i8 %326, ptr %365, align 1 + %366 = getelementptr inbounds i8, ptr %0, i64 1766 + store i8 %326, ptr %366, align 1 + %367 = getelementptr inbounds i8, ptr %0, i64 1765 + store i8 %326, ptr %367, align 1 + %368 = getelementptr inbounds i8, ptr %0, i64 1764 + store i8 %326, ptr %368, align 1 + %369 = getelementptr inbounds i8, ptr %0, i64 1734 + store i8 %326, ptr %369, align 1 + %370 = getelementptr inbounds i8, ptr %0, i64 1735 + store i8 %326, ptr %370, align 1 ret void } diff --git a/bench/minetest/optimized/game.cpp.ll b/bench/minetest/optimized/game.cpp.ll index 2b63cac945e..fb79402867b 100644 --- a/bench/minetest/optimized/game.cpp.ll +++ b/bench/minetest/optimized/game.cpp.ll @@ -38797,19 +38797,18 @@ if.then290: ; preds = %if.else173, %if.els %162 = shl nuw <2 x i48> %161, %shift.i = shufflevector <2 x i48> %162, <2 x i48> poison, <2 x i32> %163 = or disjoint <2 x i48> %shift.i, %162 - %retval.sroa.2.0.insert.insert.i = extractelement <2 x i48> %163, i64 0 - %ref.tmp292.sroa.5.0.extract.shift = lshr i48 %retval.sroa.2.0.insert.insert.i, 32 - %ref.tmp292.sroa.5.0.extract.trunc = trunc nuw i48 %ref.tmp292.sroa.5.0.extract.shift to i16 - %164 = load i16, ptr %nodepos, align 2, !tbaa !668 - %sub.i1096 = sub i16 %164, %conv.i32 + %164 = bitcast <2 x i48> %163 to <6 x i16> + %ref.tmp292.sroa.5.0.extract.trunc = extractelement <6 x i16> %164, i64 2 + %165 = load i16, ptr %nodepos, align 2, !tbaa !668 + %sub.i1096 = sub i16 %165, %conv.i32 %Z.i1100 = getelementptr inbounds i8, ptr %nodepos, i64 4 - %165 = load i16, ptr %Z.i1100, align 2, !tbaa !670 - %sub13.i1102 = sub i16 %165, %ref.tmp292.sroa.5.0.extract.trunc - %166 = call i16 @llvm.abs.i16(i16 %sub.i1096, i1 false) - %167 = zext i16 %166 to i32 + %166 = load i16, ptr %Z.i1100, align 2, !tbaa !670 + %sub13.i1102 = sub i16 %166, %ref.tmp292.sroa.5.0.extract.trunc + %167 = call i16 @llvm.abs.i16(i16 %sub.i1096, i1 false) + %168 = zext i16 %167 to i32 %conv306 = sext i16 %sub13.i1102 to i32 - %168 = call i32 @llvm.abs.i32(i32 %conv306, i1 true) - %cmp307 = icmp ult i32 %168, %167 + %169 = call i32 @llvm.abs.i32(i32 %conv306, i1 true) + %cmp307 = icmp ult i32 %169, %168 br i1 %cmp307, label %if.then308, label %if.else314 if.then308: ; preds = %if.then290 @@ -38818,9 +38817,9 @@ if.then308: ; preds = %if.then290 br label %if.end323.sink.split if.else314: ; preds = %if.then290 - %169 = lshr i32 %conv306, 30 - %170 = trunc nuw nsw i32 %169 to i8 - %conv319 = and i8 %170, 2 + %170 = lshr i32 %conv306, 30 + %171 = trunc nuw nsw i32 %170 to i8 + %conv319 = and i8 %171, 2 br label %if.end323.sink.split if.end323.sink.split: ; preds = %if.else314, %if.then308, %if.else266, %if.then260, %sw.epilog, %if.then189, %if.then171 @@ -38830,9 +38829,9 @@ if.end323.sink.split: ; preds = %if.else314, %if.the if.end323: ; preds = %if.end323.sink.split, %if.else173 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp324) #40 - %171 = getelementptr inbounds i8, ptr %ref.tmp324, i64 16 - store ptr %171, ptr %ref.tmp324, align 8, !tbaa !4 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(13) %171, ptr noundef nonnull align 1 dereferenceable(13) @.str.186, i64 13, i1 false) + %172 = getelementptr inbounds i8, ptr %ref.tmp324, i64 16 + store ptr %172, ptr %ref.tmp324, align 8, !tbaa !4 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(13) %172, ptr noundef nonnull align 1 dereferenceable(13) @.str.186, i64 13, i1 false) %_M_string_length.i.i.i.i1116 = getelementptr inbounds i8, ptr %ref.tmp324, i64 8 store i64 13, ptr %_M_string_length.i.i.i.i1116, align 8, !tbaa !14 %arrayidx.i.i.i1117 = getelementptr inbounds i8, ptr %ref.tmp324, i64 29 @@ -38847,23 +38846,23 @@ call.i.i1124.noexc: ; preds = %if.end323 if.end.i: ; preds = %call.i.i1124.noexc %second.i = getelementptr inbounds i8, ptr %call.i.i11241126, i64 40 - %172 = load i32, ptr %second.i, align 8, !tbaa !1255 + %173 = load i32, ptr %second.i, align 8, !tbaa !1255 br label %invoke.cont329 invoke.cont329: ; preds = %if.end.i, %call.i.i1124.noexc - %retval.0.i = phi i32 [ %172, %if.end.i ], [ 0, %call.i.i1124.noexc ] - %173 = load ptr, ptr %ref.tmp324, align 8, !tbaa !11 - %cmp.i.i.i1127 = icmp eq ptr %173, %171 + %retval.0.i = phi i32 [ %173, %if.end.i ], [ 0, %call.i.i1124.noexc ] + %174 = load ptr, ptr %ref.tmp324, align 8, !tbaa !11 + %cmp.i.i.i1127 = icmp eq ptr %174, %172 br i1 %cmp.i.i.i1127, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1129, label %if.then.i.i1128 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1129: ; preds = %invoke.cont329 - %174 = load i64, ptr %_M_string_length.i.i.i.i1116, align 8, !tbaa !14 - %cmp3.i.i.i1131 = icmp ult i64 %174, 16 + %175 = load i64, ptr %_M_string_length.i.i.i.i1116, align 8, !tbaa !14 + %cmp3.i.i.i1131 = icmp ult i64 %175, 16 call void @llvm.assume(i1 %cmp3.i.i.i1131) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1132 if.then.i.i1128: ; preds = %invoke.cont329 - call void @_ZdlPv(ptr noundef %173) #41 + call void @_ZdlPv(ptr noundef %174) #41 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1132 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1132: ; preds = %if.then.i.i1128, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1129 @@ -38880,25 +38879,25 @@ if.then338: ; preds = %_ZNSt7__cxx1112basi br label %if.end398 lpad328: ; preds = %if.end323 - %175 = landingpad { ptr, i32 } + %176 = landingpad { ptr, i32 } cleanup - %176 = load ptr, ptr %ref.tmp324, align 8, !tbaa !11 - %cmp.i.i.i1148 = icmp eq ptr %176, %171 + %177 = load ptr, ptr %ref.tmp324, align 8, !tbaa !11 + %cmp.i.i.i1148 = icmp eq ptr %177, %172 br i1 %cmp.i.i.i1148, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1150, label %if.then.i.i1149 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1150: ; preds = %lpad328 - %177 = load i64, ptr %_M_string_length.i.i.i.i1116, align 8, !tbaa !14 - %cmp3.i.i.i1152 = icmp ult i64 %177, 16 + %178 = load i64, ptr %_M_string_length.i.i.i.i1116, align 8, !tbaa !14 + %cmp3.i.i.i1152 = icmp ult i64 %178, 16 call void @llvm.assume(i1 %cmp3.i.i.i1152) br label %ehcleanup332 if.then.i.i1149: ; preds = %lpad328 - call void @_ZdlPv(ptr noundef %176) #41 + call void @_ZdlPv(ptr noundef %177) #41 br label %ehcleanup332 ehcleanup332: ; preds = %if.then.i.i1149, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1150 - %exn.slot.6 = extractvalue { ptr, i32 } %175, 0 - %ehselector.slot.6 = extractvalue { ptr, i32 } %175, 1 + %exn.slot.6 = extractvalue { ptr, i32 } %176, 0 + %ehselector.slot.6 = extractvalue { ptr, i32 } %176, 1 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp324) #40 br label %ehcleanup702 @@ -38908,8 +38907,8 @@ if.then345: ; preds = %_ZNSt7__cxx1112basi if.then352: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1132 %param_type_2353 = getelementptr inbounds i8, ptr %cond-lvalue.i1067, i64 1537 - %178 = load i8, ptr %param_type_2353, align 1, !tbaa !1252 - switch i8 %178, label %if.end398 [ + %179 = load i8, ptr %param_type_2353, align 1, !tbaa !1252 + switch i8 %179, label %if.end398 [ i8 3, label %if.then368 i8 9, label %if.then368 i8 13, label %if.then368 @@ -38920,20 +38919,20 @@ if.then368: ; preds = %if.then352, %if.the %call370 = call noundef zeroext i8 @_ZNK7MapNode10getFaceDirEPK14NodeDefManagerb(ptr noundef nonnull align 4 dereferenceable(4) %predicted_node, ptr noundef nonnull %call.i, i1 noundef zeroext false) %idxprom = zext i8 %call370 to i64 %arrayidx = getelementptr inbounds [32 x %"class.irr::core::vector3d"], ptr @facedir_dirs, i64 0, i64 %idxprom - %179 = load i16, ptr %arrayidx, align 2, !tbaa !668 - %add.i1170 = add i16 %179, %p.sroa.0.0 + %180 = load i16, ptr %arrayidx, align 2, !tbaa !668 + %add.i1170 = add i16 %180, %p.sroa.0.0 %Y6.i1172 = getelementptr inbounds i8, ptr %arrayidx, i64 2 - %180 = load i16, ptr %Y6.i1172, align 2, !tbaa !669 - %add8.i1173 = add i16 %180, %p.sroa.13.0 + %181 = load i16, ptr %Y6.i1172, align 2, !tbaa !669 + %add8.i1173 = add i16 %181, %p.sroa.13.0 %Z11.i1175 = getelementptr inbounds i8, ptr %arrayidx, i64 4 - %181 = load i16, ptr %Z11.i1175, align 2, !tbaa !670 - %add13.i1176 = add i16 %181, %p.sroa.19.0 + %182 = load i16, ptr %Z11.i1175, align 2, !tbaa !670 + %add13.i1176 = add i16 %182, %p.sroa.19.0 br label %if.end398 if.else375: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1132 %param_type_2376 = getelementptr inbounds i8, ptr %cond-lvalue.i1067, i64 1537 - %182 = load i8, ptr %param_type_2376, align 1, !tbaa !1252 - switch i8 %182, label %if.else390 [ + %183 = load i8, ptr %param_type_2376, align 1, !tbaa !1252 + switch i8 %183, label %if.else390 [ i8 4, label %if.then383 i8 10, label %if.then383 ] @@ -38966,46 +38965,46 @@ if.end398: ; preds = %if.else390, %if.the %pp.sroa.0.0.insert.ext = zext i16 %pp.sroa.0.0 to i48 %pp.sroa.0.0.insert.insert = or disjoint i48 %pp.sroa.11.0.insert.insert, %pp.sroa.0.0.insert.ext %call401 = call i32 @_ZN3Map7getNodeEN3irr4core8vector3dIsEEPb(ptr noundef nonnull align 8 dereferenceable(144) %call4, i48 %pp.sroa.0.0.insert.insert, ptr noundef null) - %183 = and i32 %call401, 65535 - %conv.i.i1214 = zext nneg i32 %183 to i64 - %184 = load ptr, ptr %_M_finish.i.i.i965, align 8, !tbaa !658 - %185 = load ptr, ptr %call.i, align 8, !tbaa !660 - %sub.ptr.lhs.cast.i.i.i1216 = ptrtoint ptr %184 to i64 - %sub.ptr.rhs.cast.i.i.i1217 = ptrtoint ptr %185 to i64 + %184 = and i32 %call401, 65535 + %conv.i.i1214 = zext nneg i32 %184 to i64 + %185 = load ptr, ptr %_M_finish.i.i.i965, align 8, !tbaa !658 + %186 = load ptr, ptr %call.i, align 8, !tbaa !660 + %sub.ptr.lhs.cast.i.i.i1216 = ptrtoint ptr %185 to i64 + %sub.ptr.rhs.cast.i.i.i1217 = ptrtoint ptr %186 to i64 %sub.ptr.sub.i.i.i1218 = sub i64 %sub.ptr.lhs.cast.i.i.i1216, %sub.ptr.rhs.cast.i.i.i1217 %sub.ptr.div.i.i.i1219 = sdiv exact i64 %sub.ptr.sub.i.i.i1218, 3712 %cmp.i.i1220 = icmp ugt i64 %sub.ptr.div.i.i.i1219, %conv.i.i1214 br i1 %cmp.i.i1220, label %land.lhs.true.i.i1224, label %cond.false.i.i1221 land.lhs.true.i.i1224: ; preds = %if.end398 - %add.ptr.i.i.i1225 = getelementptr inbounds %struct.ContentFeatures, ptr %185, i64 %conv.i.i1214 + %add.ptr.i.i.i1225 = getelementptr inbounds %struct.ContentFeatures, ptr %186, i64 %conv.i.i1214 %_M_string_length.i.i.i.i1226 = getelementptr inbounds i8, ptr %add.ptr.i.i.i1225, i64 1456 - %186 = load i64, ptr %_M_string_length.i.i.i.i1226, align 8, !tbaa !14 - %cmp.i.i.i1227 = icmp eq i64 %186, 0 + %187 = load i64, ptr %_M_string_length.i.i.i.i1226, align 8, !tbaa !14 + %cmp.i.i.i1227 = icmp eq i64 %187, 0 br i1 %cmp.i.i.i1227, label %cond.false.i.i1221, label %_ZNK14NodeDefManager3getERK7MapNode.exit1228 cond.false.i.i1221: ; preds = %land.lhs.true.i.i1224, %if.end398 - %add.ptr.i14.i.i1222 = getelementptr inbounds i8, ptr %185, i64 464000 + %add.ptr.i14.i.i1222 = getelementptr inbounds i8, ptr %186, i64 464000 br label %_ZNK14NodeDefManager3getERK7MapNode.exit1228 _ZNK14NodeDefManager3getERK7MapNode.exit1228: ; preds = %cond.false.i.i1221, %land.lhs.true.i.i1224 %cond-lvalue.i.i1223 = phi ptr [ %add.ptr.i14.i.i1222, %cond.false.i.i1221 ], [ %add.ptr.i.i.i1225, %land.lhs.true.i.i1224 ] %walkable = getelementptr inbounds i8, ptr %cond-lvalue.i.i1223, i64 3043 - %187 = load i8, ptr %walkable, align 1, !tbaa !1257, !range !154, !noundef !177 - %tobool403.not.not = icmp eq i8 %187, 0 + %188 = load i8, ptr %walkable, align 1, !tbaa !1257, !range !154, !noundef !177 + %tobool403.not.not = icmp eq i8 %188, 0 br i1 %tobool403.not.not, label %if.then405, label %if.end412 if.then405: ; preds = %_ZNK14NodeDefManager3getERK7MapNode.exit1228 %sound_place_failed406 = getelementptr inbounds i8, ptr %selected_def, i64 704 %soundmaker407 = getelementptr inbounds i8, ptr %this, i64 96 - %188 = load ptr, ptr %soundmaker407, align 8, !tbaa !118 - %m_player_rightpunch_sound408 = getelementptr inbounds i8, ptr %188, i64 200 + %189 = load ptr, ptr %soundmaker407, align 8, !tbaa !118 + %m_player_rightpunch_sound408 = getelementptr inbounds i8, ptr %189, i64 200 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_assignERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %m_player_rightpunch_sound408, ptr noundef nonnull align 8 dereferenceable(32) %sound_place_failed406) - %gain.i1229 = getelementptr inbounds i8, ptr %188, i64 232 + %gain.i1229 = getelementptr inbounds i8, ptr %189, i64 232 %gain3.i1230 = getelementptr inbounds i8, ptr %selected_def, i64 736 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(18) %gain.i1229, ptr noundef nonnull align 8 dereferenceable(18) %gain3.i1230, i64 18, i1 false) - %189 = load ptr, ptr %client, align 8, !tbaa !117 - call void @_ZN6Client8interactE14InteractActionRK12PointedThing(ptr noundef nonnull align 8 dereferenceable(1746) %189, i8 noundef zeroext 3, ptr noundef nonnull align 4 dereferenceable(69) %pointed) + %190 = load ptr, ptr %client, align 8, !tbaa !117 + call void @_ZN6Client8interactE14InteractActionRK12PointedThing(ptr noundef nonnull align 8 dereferenceable(1746) %190, i8 noundef zeroext 3, ptr noundef nonnull align 4 dereferenceable(69) %pointed) br label %cleanup701 if.end412: ; preds = %_ZNK14NodeDefManager3getERK7MapNode.exit1228, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1132 @@ -39013,8 +39012,8 @@ if.end412: ; preds = %_ZNK14NodeDefManage land.lhs.true414: ; preds = %if.end412 %param_type_2415 = getelementptr inbounds i8, ptr %cond-lvalue.i1067, i64 1537 - %190 = load i8, ptr %param_type_2415, align 1, !tbaa !1252 - switch i8 %190, label %if.end487 [ + %191 = load i8, ptr %param_type_2415, align 1, !tbaa !1252 + switch i8 %191, label %if.end487 [ i8 8, label %if.then430 i8 9, label %if.then430 i8 14, label %if.then430 @@ -39023,9 +39022,9 @@ land.lhs.true414: ; preds = %if.end412 if.then430: ; preds = %land.lhs.true414, %land.lhs.true414, %land.lhs.true414, %land.lhs.true414 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp431) #40 - %191 = getelementptr inbounds i8, ptr %ref.tmp431, i64 16 - store ptr %191, ptr %ref.tmp431, align 8, !tbaa !4 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(13) %191, ptr noundef nonnull align 1 dereferenceable(13) @.str.187, i64 13, i1 false) + %192 = getelementptr inbounds i8, ptr %ref.tmp431, i64 16 + store ptr %192, ptr %ref.tmp431, align 8, !tbaa !4 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(13) %192, ptr noundef nonnull align 1 dereferenceable(13) @.str.187, i64 13, i1 false) %_M_string_length.i.i.i.i34 = getelementptr inbounds i8, ptr %ref.tmp431, i64 8 store i64 13, ptr %_M_string_length.i.i.i.i34, align 8, !tbaa !14 %arrayidx.i.i.i35 = getelementptr inbounds i8, ptr %ref.tmp431, i64 29 @@ -39039,32 +39038,32 @@ if.then430: ; preds = %land.lhs.true414, % to label %invoke.cont436 unwind label %lpad435 invoke.cont436: ; preds = %if.then430 - %192 = load ptr, ptr %ref.tmp431, align 8, !tbaa !11 - %cmp.i.i.i1240 = icmp eq ptr %192, %191 + %193 = load ptr, ptr %ref.tmp431, align 8, !tbaa !11 + %cmp.i.i.i1240 = icmp eq ptr %193, %192 br i1 %cmp.i.i.i1240, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1242, label %if.then.i.i1241 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1242: ; preds = %invoke.cont436 - %193 = load i64, ptr %_M_string_length.i.i.i.i34, align 8, !tbaa !14 - %cmp3.i.i.i1244 = icmp ult i64 %193, 16 + %194 = load i64, ptr %_M_string_length.i.i.i.i34, align 8, !tbaa !14 + %cmp3.i.i.i1244 = icmp ult i64 %194, 16 call void @llvm.assume(i1 %cmp3.i.i.i1244) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1245 if.then.i.i1241: ; preds = %invoke.cont436 - call void @_ZdlPv(ptr noundef %192) #41 + call void @_ZdlPv(ptr noundef %193) #41 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1245 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1245: ; preds = %if.then.i.i1241, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1242 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp431) #40 %_M_string_length.i.i1246 = getelementptr inbounds i8, ptr %call.i12371238, i64 8 - %194 = load i64, ptr %_M_string_length.i.i1246, align 8, !tbaa !14 - %cmp.i1247 = icmp eq i64 %194, 0 + %195 = load i64, ptr %_M_string_length.i.i1246, align 8, !tbaa !14 + %cmp.i1247 = icmp eq i64 %195, 0 br i1 %cmp.i1247, label %if.end487, label %if.then443 if.then443: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1245 - %195 = load ptr, ptr %call.i12371238, align 8, !tbaa !11 - %call.i.i1248 = call i64 @strtol(ptr nocapture noundef nonnull %195, ptr noundef null, i32 noundef 10) #40 - %196 = load i8, ptr %param_type_2415, align 1, !tbaa !1252 - switch i8 %196, label %if.end487 [ + %196 = load ptr, ptr %call.i12371238, align 8, !tbaa !11 + %call.i.i1248 = call i64 @strtol(ptr nocapture noundef nonnull %196, ptr noundef null, i32 noundef 10) #40 + %197 = load i8, ptr %param_type_2415, align 1, !tbaa !1252 + switch i8 %197, label %if.end487 [ i8 8, label %if.then448 i8 10, label %if.then454 i8 9, label %if.then463 @@ -39076,50 +39075,50 @@ if.then448: ; preds = %if.then443 br label %if.end487.sink.split lpad435: ; preds = %if.then430 - %197 = landingpad { ptr, i32 } + %198 = landingpad { ptr, i32 } cleanup - %198 = load ptr, ptr %ref.tmp431, align 8, !tbaa !11 - %cmp.i.i.i1251 = icmp eq ptr %198, %191 + %199 = load ptr, ptr %ref.tmp431, align 8, !tbaa !11 + %cmp.i.i.i1251 = icmp eq ptr %199, %192 br i1 %cmp.i.i.i1251, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1253, label %if.then.i.i1252 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1253: ; preds = %lpad435 - %199 = load i64, ptr %_M_string_length.i.i.i.i34, align 8, !tbaa !14 - %cmp3.i.i.i1255 = icmp ult i64 %199, 16 + %200 = load i64, ptr %_M_string_length.i.i.i.i34, align 8, !tbaa !14 + %cmp3.i.i.i1255 = icmp ult i64 %200, 16 call void @llvm.assume(i1 %cmp3.i.i.i1255) br label %ehcleanup439 if.then.i.i1252: ; preds = %lpad435 - call void @_ZdlPv(ptr noundef %198) #41 + call void @_ZdlPv(ptr noundef %199) #41 br label %ehcleanup439 ehcleanup439: ; preds = %if.then.i.i1252, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1253 - %exn.slot.7 = extractvalue { ptr, i32 } %197, 0 - %ehselector.slot.7 = extractvalue { ptr, i32 } %197, 1 + %exn.slot.7 = extractvalue { ptr, i32 } %198, 0 + %ehselector.slot.7 = extractvalue { ptr, i32 } %198, 1 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp431) #40 br label %ehcleanup702 if.then454: ; preds = %if.then443 - %200 = load i8, ptr %param2.i, align 1, !tbaa !1251 - %201 = and i8 %200, 7 - %202 = trunc i64 %call.i.i1248 to i8 - %203 = and i8 %202, -8 - %conv458 = or disjoint i8 %201, %203 + %201 = load i8, ptr %param2.i, align 1, !tbaa !1251 + %202 = and i8 %201, 7 + %203 = trunc i64 %call.i.i1248 to i8 + %204 = and i8 %203, -8 + %conv458 = or disjoint i8 %202, %204 br label %if.end487.sink.split if.then463: ; preds = %if.then443 - %204 = load i8, ptr %param2.i, align 1, !tbaa !1251 - %205 = and i8 %204, 31 - %206 = trunc i64 %call.i.i1248 to i8 - %207 = and i8 %206, -32 - %conv469 = or disjoint i8 %205, %207 + %205 = load i8, ptr %param2.i, align 1, !tbaa !1251 + %206 = and i8 %205, 31 + %207 = trunc i64 %call.i.i1248 to i8 + %208 = and i8 %207, -32 + %conv469 = or disjoint i8 %206, %208 br label %if.end487.sink.split if.then474: ; preds = %if.then443 - %208 = load i8, ptr %param2.i, align 1, !tbaa !1251 - %209 = and i8 %208, 3 - %210 = trunc i64 %call.i.i1248 to i8 - %211 = and i8 %210, -4 - %conv480 = or disjoint i8 %209, %211 + %209 = load i8, ptr %param2.i, align 1, !tbaa !1251 + %210 = and i8 %209, 3 + %211 = trunc i64 %call.i.i1248 to i8 + %212 = and i8 %211, -4 + %conv480 = or disjoint i8 %210, %212 br label %if.end487.sink.split if.end487.sink.split: ; preds = %if.then474, %if.then463, %if.then454, %if.then448 @@ -39128,19 +39127,19 @@ if.end487.sink.split: ; preds = %if.then474, %if.the br label %if.end487 if.end487: ; preds = %if.end487.sink.split, %if.then443, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1245, %land.lhs.true414, %if.end412 - %212 = load ptr, ptr %client, align 8, !tbaa !117 - %m_local_player.i1264 = getelementptr inbounds i8, ptr %212, i64 232 - %213 = load ptr, ptr %m_local_player.i1264, align 8, !tbaa !394 + %213 = load ptr, ptr %client, align 8, !tbaa !117 + %m_local_player.i1264 = getelementptr inbounds i8, ptr %213, i64 232 + %214 = load ptr, ptr %m_local_player.i1264, align 8, !tbaa !394 %walkable494 = getelementptr inbounds i8, ptr %cond-lvalue.i1067, i64 3043 - %214 = load i8, ptr %walkable494, align 1, !tbaa !1257, !range !154, !noundef !177 - %tobool495.not.not = icmp eq i8 %214, 0 + %215 = load i8, ptr %walkable494, align 1, !tbaa !1257, !range !154, !noundef !177 + %tobool495.not.not = icmp eq i8 %215, 0 br i1 %tobool495.not.not, label %if.then658, label %lor.lhs.false496 lor.lhs.false496: ; preds = %if.end487 - %215 = load ptr, ptr @g_settings, align 8, !tbaa !17 + %216 = load ptr, ptr @g_settings, align 8, !tbaa !17 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp497) #40 - %216 = getelementptr inbounds i8, ptr %ref.tmp497, i64 16 - store ptr %216, ptr %ref.tmp497, align 8, !tbaa !4 + %217 = getelementptr inbounds i8, ptr %ref.tmp497, i64 16 + store ptr %217, ptr %ref.tmp497, align 8, !tbaa !4 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %__dnew.i.i1265) #40 store i64 28, ptr %__dnew.i.i1265, align 8, !tbaa !9 %call2.i10.i1276 = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp497, ptr noundef nonnull align 8 dereferenceable(8) %__dnew.i.i1265, i64 noundef 0) @@ -39148,30 +39147,30 @@ lor.lhs.false496: ; preds = %if.end487 call2.i10.i.noexc1275: ; preds = %lor.lhs.false496 store ptr %call2.i10.i1276, ptr %ref.tmp497, align 8, !tbaa !11 - %217 = load i64, ptr %__dnew.i.i1265, align 8, !tbaa !9 - store i64 %217, ptr %216, align 8, !tbaa !13 + %218 = load i64, ptr %__dnew.i.i1265, align 8, !tbaa !9 + store i64 %218, ptr %217, align 8, !tbaa !13 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(28) %call2.i10.i1276, ptr noundef nonnull align 1 dereferenceable(28) @.str.188, i64 28, i1 false) %_M_string_length.i.i.i.i1270 = getelementptr inbounds i8, ptr %ref.tmp497, i64 8 - store i64 %217, ptr %_M_string_length.i.i.i.i1270, align 8, !tbaa !14 - %218 = load ptr, ptr %ref.tmp497, align 8, !tbaa !11 - %arrayidx.i.i.i1271 = getelementptr inbounds i8, ptr %218, i64 %217 + store i64 %218, ptr %_M_string_length.i.i.i.i1270, align 8, !tbaa !14 + %219 = load ptr, ptr %ref.tmp497, align 8, !tbaa !11 + %arrayidx.i.i.i1271 = getelementptr inbounds i8, ptr %219, i64 %218 store i8 0, ptr %arrayidx.i.i.i1271, align 1, !tbaa !13 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %__dnew.i.i1265) #40 - %call507 = invoke noundef zeroext i1 @_ZNK8Settings7getBoolERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(236) %215, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp497) + %call507 = invoke noundef zeroext i1 @_ZNK8Settings7getBoolERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(236) %216, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp497) to label %invoke.cont506 unwind label %lpad505 invoke.cont506: ; preds = %call2.i10.i.noexc1275 br i1 %call507, label %cleanup.action631, label %lor.lhs.false508 lor.lhs.false508: ; preds = %invoke.cont506 - %219 = load ptr, ptr %client, align 8, !tbaa !117 + %220 = load ptr, ptr %client, align 8, !tbaa !117 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp510) #40 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %ref.tmp512) #40 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp510, ptr noundef nonnull @.str.22, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp512) to label %invoke.cont516 unwind label %lpad515 invoke.cont516: ; preds = %lor.lhs.false508 - %m_privileges.i = getelementptr inbounds i8, ptr %219, i64 1408 + %m_privileges.i = getelementptr inbounds i8, ptr %220, i64 1408 %call.i.i.i12781279 = invoke ptr @_ZNKSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_SaIS5_ENSt8__detail9_IdentityESt8equal_toIS5_ESt4hashIS5_ENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb1ELb1ELb1EEEE4findERKS5_(ptr noundef nonnull align 8 dereferenceable(56) %m_privileges.i, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp510) to label %invoke.cont519 unwind label %lpad518 @@ -39180,26 +39179,26 @@ invoke.cont519: ; preds = %invoke.cont516 br i1 %tobool.not.i.i.i.not, label %lor.rhs533, label %land.lhs.true521 land.lhs.true521: ; preds = %invoke.cont519 - %220 = load ptr, ptr @g_settings, align 8, !tbaa !17 + %221 = load ptr, ptr @g_settings, align 8, !tbaa !17 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp522) #40 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %ref.tmp524) #40 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp522, ptr noundef nonnull @.str.22, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp524) to label %invoke.cont528 unwind label %lpad527 invoke.cont528: ; preds = %land.lhs.true521 - %call532 = invoke noundef zeroext i1 @_ZNK8Settings7getBoolERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(236) %220, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp522) + %call532 = invoke noundef zeroext i1 @_ZNK8Settings7getBoolERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(236) %221, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp522) to label %invoke.cont531 unwind label %ehcleanup577.thread invoke.cont531: ; preds = %invoke.cont528 br i1 %call532, label %cleanup.action575, label %lor.rhs533 lor.rhs533: ; preds = %invoke.cont531, %invoke.cont519 - %221 = load i8, ptr %walkable494, align 1, !tbaa !1257, !range !154, !noundef !177 - %tobool535.not = icmp eq i8 %221, 0 + %222 = load i8, ptr %walkable494, align 1, !tbaa !1257, !range !154, !noundef !177 + %tobool535.not = icmp eq i8 %222, 0 br i1 %tobool535.not, label %lor.end567, label %land.lhs.true536 land.lhs.true536: ; preds = %lor.rhs533 - %call541 = invoke i48 @_ZN11LocalPlayer18getStandingNodePosEv(ptr noundef nonnull align 8 dereferenceable(812) %213) + %call541 = invoke i48 @_ZN11LocalPlayer18getStandingNodePosEv(ptr noundef nonnull align 8 dereferenceable(812) %214) to label %invoke.cont546 unwind label %ehcleanup577 invoke.cont546: ; preds = %land.lhs.true536 @@ -39209,18 +39208,18 @@ invoke.cont546: ; preds = %land.lhs.true536 %ref.tmp537.sroa.0.0.extract.trunc = trunc i48 %call541 to i16 %ref.tmp537.sroa.6.0.extract.shift = lshr i48 %call541, 32 %ref.tmp537.sroa.6.0.extract.trunc = trunc nuw i48 %ref.tmp537.sroa.6.0.extract.shift to i16 - %222 = load i16, ptr %neighborpos, align 2, !tbaa !668 - %cmp.i.i1296 = icmp ne i16 %222, %ref.tmp537.sroa.0.0.extract.trunc - %223 = load i16, ptr %p.sroa.13.0.neighborpos.sroa_idx, align 2 - %cmp7.i.i = icmp ne i16 %223, %add8.i1285 + %223 = load i16, ptr %neighborpos, align 2, !tbaa !668 + %cmp.i.i1296 = icmp ne i16 %223, %ref.tmp537.sroa.0.0.extract.trunc + %224 = load i16, ptr %p.sroa.13.0.neighborpos.sroa_idx, align 2 + %cmp7.i.i = icmp ne i16 %224, %add8.i1285 %or.cond1571.not1574 = select i1 %cmp.i.i1296, i1 true, i1 %cmp7.i.i - %224 = load i16, ptr %p.sroa.19.0.neighborpos.sroa_idx, align 2 - %cmp11.i.i = icmp ne i16 %224, %ref.tmp537.sroa.6.0.extract.trunc + %225 = load i16, ptr %p.sroa.19.0.neighborpos.sroa_idx, align 2 + %cmp11.i.i = icmp ne i16 %225, %ref.tmp537.sroa.6.0.extract.trunc %or.cond1572 = select i1 %or.cond1571.not1574, i1 true, i1 %cmp11.i.i br i1 %or.cond1572, label %land.rhs551, label %lor.end567 land.rhs551: ; preds = %invoke.cont546 - %call556 = invoke i48 @_ZN11LocalPlayer18getStandingNodePosEv(ptr noundef nonnull align 8 dereferenceable(812) %213) + %call556 = invoke i48 @_ZN11LocalPlayer18getStandingNodePosEv(ptr noundef nonnull align 8 dereferenceable(812) %214) to label %invoke.cont561 unwind label %lpad554 invoke.cont561: ; preds = %land.rhs551 @@ -39228,40 +39227,40 @@ invoke.cont561: ; preds = %land.rhs551 %ref.tmp553.sroa.5.0.extract.trunc = trunc i48 %ref.tmp553.sroa.5.0.extract.shift to i16 %add8.i1305 = add i16 %ref.tmp553.sroa.5.0.extract.trunc, 2 %ref.tmp552.sroa.0.0.extract.trunc = trunc i48 %call556 to i16 - %225 = load i16, ptr %neighborpos, align 2, !tbaa !668 - %cmp.i.i1316 = icmp eq i16 %225, %ref.tmp552.sroa.0.0.extract.trunc - %226 = load i16, ptr %p.sroa.13.0.neighborpos.sroa_idx, align 2 - %cmp7.i.i1321 = icmp eq i16 %226, %add8.i1305 + %226 = load i16, ptr %neighborpos, align 2, !tbaa !668 + %cmp.i.i1316 = icmp eq i16 %226, %ref.tmp552.sroa.0.0.extract.trunc + %227 = load i16, ptr %p.sroa.13.0.neighborpos.sroa_idx, align 2 + %cmp7.i.i1321 = icmp eq i16 %227, %add8.i1305 %or.cond1573 = select i1 %cmp.i.i1316, i1 %cmp7.i.i1321, i1 false br i1 %or.cond1573, label %land.rhs.i.i1322, label %lor.end567 land.rhs.i.i1322: ; preds = %invoke.cont561 %ref.tmp552.sroa.6.0.extract.shift = lshr i48 %call556, 32 %ref.tmp552.sroa.6.0.extract.trunc = trunc nuw i48 %ref.tmp552.sroa.6.0.extract.shift to i16 - %227 = load i16, ptr %p.sroa.19.0.neighborpos.sroa_idx, align 2, !tbaa !670 - %cmp11.i.i1325 = icmp ne i16 %227, %ref.tmp552.sroa.6.0.extract.trunc + %228 = load i16, ptr %p.sroa.19.0.neighborpos.sroa_idx, align 2, !tbaa !670 + %cmp11.i.i1325 = icmp ne i16 %228, %ref.tmp552.sroa.6.0.extract.trunc br i1 %tobool.not.i.i.i.not, label %cleanup.action603, label %cleanup.action575 lor.end567: ; preds = %invoke.cont561, %invoke.cont546, %lor.rhs533 - %228 = phi i1 [ false, %lor.rhs533 ], [ true, %invoke.cont561 ], [ false, %invoke.cont546 ] + %229 = phi i1 [ false, %lor.rhs533 ], [ true, %invoke.cont561 ], [ false, %invoke.cont546 ] br i1 %tobool.not.i.i.i.not, label %cleanup.action603, label %cleanup.action575 cleanup.action575: ; preds = %lor.end567, %land.rhs.i.i1322, %invoke.cont531 - %229 = phi i1 [ %228, %lor.end567 ], [ %cmp11.i.i1325, %land.rhs.i.i1322 ], [ true, %invoke.cont531 ] - %230 = load ptr, ptr %ref.tmp522, align 8, !tbaa !11 - %231 = getelementptr inbounds i8, ptr %ref.tmp522, i64 16 - %cmp.i.i.i1327 = icmp eq ptr %230, %231 + %230 = phi i1 [ %229, %lor.end567 ], [ %cmp11.i.i1325, %land.rhs.i.i1322 ], [ true, %invoke.cont531 ] + %231 = load ptr, ptr %ref.tmp522, align 8, !tbaa !11 + %232 = getelementptr inbounds i8, ptr %ref.tmp522, i64 16 + %cmp.i.i.i1327 = icmp eq ptr %231, %232 br i1 %cmp.i.i.i1327, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1329, label %if.then.i.i1328 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1329: ; preds = %cleanup.action575 %_M_string_length.i.i.i1330 = getelementptr inbounds i8, ptr %ref.tmp522, i64 8 - %232 = load i64, ptr %_M_string_length.i.i.i1330, align 8, !tbaa !14 - %cmp3.i.i.i1331 = icmp ult i64 %232, 16 + %233 = load i64, ptr %_M_string_length.i.i.i1330, align 8, !tbaa !14 + %cmp3.i.i.i1331 = icmp ult i64 %233, 16 call void @llvm.assume(i1 %cmp3.i.i.i1331) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1332 if.then.i.i1328: ; preds = %cleanup.action575 - call void @_ZdlPv(ptr noundef %230) #41 + call void @_ZdlPv(ptr noundef %231) #41 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1332 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1332: ; preds = %if.then.i.i1328, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1329 @@ -39270,21 +39269,21 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1332: ; preds = %i br label %cleanup.action603 cleanup.action603: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1332, %lor.end567, %land.rhs.i.i1322 - %.ph1544 = phi i1 [ %cmp11.i.i1325, %land.rhs.i.i1322 ], [ %229, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1332 ], [ %228, %lor.end567 ] - %233 = load ptr, ptr %ref.tmp510, align 8, !tbaa !11 - %234 = getelementptr inbounds i8, ptr %ref.tmp510, i64 16 - %cmp.i.i.i1333 = icmp eq ptr %233, %234 + %.ph1544 = phi i1 [ %cmp11.i.i1325, %land.rhs.i.i1322 ], [ %230, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1332 ], [ %229, %lor.end567 ] + %234 = load ptr, ptr %ref.tmp510, align 8, !tbaa !11 + %235 = getelementptr inbounds i8, ptr %ref.tmp510, i64 16 + %cmp.i.i.i1333 = icmp eq ptr %234, %235 br i1 %cmp.i.i.i1333, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1335, label %if.then.i.i1334 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1335: ; preds = %cleanup.action603 %_M_string_length.i.i.i1336 = getelementptr inbounds i8, ptr %ref.tmp510, i64 8 - %235 = load i64, ptr %_M_string_length.i.i.i1336, align 8, !tbaa !14 - %cmp3.i.i.i1337 = icmp ult i64 %235, 16 + %236 = load i64, ptr %_M_string_length.i.i.i1336, align 8, !tbaa !14 + %cmp3.i.i.i1337 = icmp ult i64 %236, 16 call void @llvm.assume(i1 %cmp3.i.i.i1337) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1338 if.then.i.i1334: ; preds = %cleanup.action603 - call void @_ZdlPv(ptr noundef %233) #41 + call void @_ZdlPv(ptr noundef %234) #41 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1338 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1338: ; preds = %if.then.i.i1334, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1335 @@ -39294,18 +39293,18 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1338: ; preds = %i cleanup.action631: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1338, %invoke.cont506 %.ph1546 = phi i1 [ true, %invoke.cont506 ], [ %.ph1544, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1338 ] - %236 = load ptr, ptr %ref.tmp497, align 8, !tbaa !11 - %cmp.i.i.i1339 = icmp eq ptr %236, %216 + %237 = load ptr, ptr %ref.tmp497, align 8, !tbaa !11 + %cmp.i.i.i1339 = icmp eq ptr %237, %217 br i1 %cmp.i.i.i1339, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1341, label %if.then.i.i1340 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1341: ; preds = %cleanup.action631 - %237 = load i64, ptr %_M_string_length.i.i.i.i1270, align 8, !tbaa !14 - %cmp3.i.i.i1343 = icmp ult i64 %237, 16 + %238 = load i64, ptr %_M_string_length.i.i.i.i1270, align 8, !tbaa !14 + %cmp3.i.i.i1343 = icmp ult i64 %238, 16 call void @llvm.assume(i1 %cmp3.i.i.i1343) br label %cleanup.done653 if.then.i.i1340: ; preds = %cleanup.action631 - call void @_ZdlPv(ptr noundef %236) #41 + call void @_ZdlPv(ptr noundef %237) #41 br label %cleanup.done653 cleanup.done653: ; preds = %if.then.i.i1340, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1341 @@ -39317,7 +39316,7 @@ cleanup.done653.if.then658_crit_edge: ; preds = %cleanup.done653 br label %if.then658 if.then658: ; preds = %cleanup.done653.if.then658_crit_edge, %if.end487 - %238 = phi ptr [ %.pre, %cleanup.done653.if.then658_crit_edge ], [ %212, %if.end487 ] + %239 = phi ptr [ %.pre, %cleanup.done653.if.then658_crit_edge ], [ %213, %if.end487 ] %p.sroa.19.0.insert.ext = zext i16 %p.sroa.19.0 to i48 %p.sroa.19.0.insert.shift = shl nuw i48 %p.sroa.19.0.insert.ext, 32 %p.sroa.13.0.insert.ext = zext i16 %p.sroa.13.0 to i48 @@ -39326,197 +39325,197 @@ if.then658: ; preds = %cleanup.done653.if. %p.sroa.0.0.insert.ext = zext i16 %p.sroa.0.0 to i48 %p.sroa.0.0.insert.insert = or disjoint i48 %p.sroa.13.0.insert.insert, %p.sroa.0.0.insert.ext %agg.tmp661.sroa.0.0.copyload = load i32, ptr %predicted_node, align 4, !tbaa.struct !1225 - invoke void @_ZN6Client7addNodeEN3irr4core8vector3dIsEE7MapNodeb(ptr noundef nonnull align 8 dereferenceable(1746) %238, i48 %p.sroa.0.0.insert.insert, i32 %agg.tmp661.sroa.0.0.copyload, i1 noundef zeroext true) + invoke void @_ZN6Client7addNodeEN3irr4core8vector3dIsEE7MapNodeb(ptr noundef nonnull align 8 dereferenceable(1746) %239, i48 %p.sroa.0.0.insert.insert, i32 %agg.tmp661.sroa.0.0.copyload, i1 noundef zeroext true) to label %invoke.cont662 unwind label %lpad489 invoke.cont662: ; preds = %if.then658 - %239 = load ptr, ptr %client, align 8, !tbaa !117 - invoke void @_ZN6Client8interactE14InteractActionRK12PointedThing(ptr noundef nonnull align 8 dereferenceable(1746) %239, i8 noundef zeroext 3, ptr noundef nonnull align 4 dereferenceable(69) %pointed) + %240 = load ptr, ptr %client, align 8, !tbaa !117 + invoke void @_ZN6Client8interactE14InteractActionRK12PointedThing(ptr noundef nonnull align 8 dereferenceable(1746) %240, i8 noundef zeroext 3, ptr noundef nonnull align 4 dereferenceable(69) %pointed) to label %invoke.cont664 unwind label %lpad489 invoke.cont664: ; preds = %invoke.cont662 %sound_place = getelementptr inbounds i8, ptr %selected_def, i64 648 %soundmaker665 = getelementptr inbounds i8, ptr %this, i64 96 - %240 = load ptr, ptr %soundmaker665, align 8, !tbaa !118 - %m_player_rightpunch_sound666 = getelementptr inbounds i8, ptr %240, i64 200 + %241 = load ptr, ptr %soundmaker665, align 8, !tbaa !118 + %m_player_rightpunch_sound666 = getelementptr inbounds i8, ptr %241, i64 200 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_assignERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %m_player_rightpunch_sound666, ptr noundef nonnull align 8 dereferenceable(32) %sound_place) to label %_ZN9SoundSpecaSERKS_.exit unwind label %lpad489 _ZN9SoundSpecaSERKS_.exit: ; preds = %invoke.cont664 - %gain.i1345 = getelementptr inbounds i8, ptr %240, i64 232 + %gain.i1345 = getelementptr inbounds i8, ptr %241, i64 232 %gain3.i1346 = getelementptr inbounds i8, ptr %selected_def, i64 680 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(18) %gain.i1345, ptr noundef nonnull align 8 dereferenceable(18) %gain3.i1346, i64 18, i1 false) br label %cleanup701 lpad489: ; preds = %if.else669, %invoke.cont664, %invoke.cont662, %if.then658 - %241 = landingpad { ptr, i32 } + %242 = landingpad { ptr, i32 } cleanup catch ptr @_ZTI24InvalidPositionException br label %ehcleanup676 lpad502: ; preds = %lor.lhs.false496 - %242 = landingpad { ptr, i32 } + %243 = landingpad { ptr, i32 } cleanup catch ptr @_ZTI24InvalidPositionException br label %cleanup.action642 lpad505: ; preds = %call2.i10.i.noexc1275 - %243 = landingpad { ptr, i32 } + %244 = landingpad { ptr, i32 } cleanup catch ptr @_ZTI24InvalidPositionException br label %cleanup.action635 lpad515: ; preds = %lor.lhs.false508 - %244 = landingpad { ptr, i32 } + %245 = landingpad { ptr, i32 } cleanup catch ptr @_ZTI24InvalidPositionException br label %cleanup.action614 lpad518: ; preds = %invoke.cont516 - %245 = landingpad { ptr, i32 } + %246 = landingpad { ptr, i32 } cleanup catch ptr @_ZTI24InvalidPositionException br label %cleanup.action607 lpad527: ; preds = %land.lhs.true521 - %246 = landingpad { ptr, i32 } + %247 = landingpad { ptr, i32 } cleanup catch ptr @_ZTI24InvalidPositionException br label %cleanup.action586 ehcleanup577.thread: ; preds = %invoke.cont528 - %247 = landingpad { ptr, i32 } + %248 = landingpad { ptr, i32 } cleanup catch ptr @_ZTI24InvalidPositionException br label %cleanup.action579 lpad554: ; preds = %land.rhs551 - %248 = landingpad { ptr, i32 } + %249 = landingpad { ptr, i32 } cleanup catch ptr @_ZTI24InvalidPositionException br i1 %tobool.not.i.i.i.not, label %cleanup.action607, label %cleanup.action579 ehcleanup577: ; preds = %land.lhs.true536 - %249 = landingpad { ptr, i32 } + %250 = landingpad { ptr, i32 } cleanup catch ptr @_ZTI24InvalidPositionException br i1 %tobool.not.i.i.i.not, label %cleanup.action607, label %cleanup.action579 cleanup.action579: ; preds = %ehcleanup577, %lpad554, %ehcleanup577.thread - %.pn845.pn.pn.pn1552 = phi { ptr, i32 } [ %247, %ehcleanup577.thread ], [ %249, %ehcleanup577 ], [ %248, %lpad554 ] - %250 = load ptr, ptr %ref.tmp522, align 8, !tbaa !11 - %251 = getelementptr inbounds i8, ptr %ref.tmp522, i64 16 - %cmp.i.i.i1348 = icmp eq ptr %250, %251 + %.pn845.pn.pn.pn1552 = phi { ptr, i32 } [ %248, %ehcleanup577.thread ], [ %250, %ehcleanup577 ], [ %249, %lpad554 ] + %251 = load ptr, ptr %ref.tmp522, align 8, !tbaa !11 + %252 = getelementptr inbounds i8, ptr %ref.tmp522, i64 16 + %cmp.i.i.i1348 = icmp eq ptr %251, %252 br i1 %cmp.i.i.i1348, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1350, label %if.then.i.i1349 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1350: ; preds = %cleanup.action579 %_M_string_length.i.i.i1351 = getelementptr inbounds i8, ptr %ref.tmp522, i64 8 - %252 = load i64, ptr %_M_string_length.i.i.i1351, align 8, !tbaa !14 - %cmp3.i.i.i1352 = icmp ult i64 %252, 16 + %253 = load i64, ptr %_M_string_length.i.i.i1351, align 8, !tbaa !14 + %cmp3.i.i.i1352 = icmp ult i64 %253, 16 call void @llvm.assume(i1 %cmp3.i.i.i1352) br label %cleanup.action586 if.then.i.i1349: ; preds = %cleanup.action579 - call void @_ZdlPv(ptr noundef %250) #41 + call void @_ZdlPv(ptr noundef %251) #41 br label %cleanup.action586 cleanup.action586: ; preds = %if.then.i.i1349, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1350, %lpad527 - %.pn845.pn.pn.pn.pn = phi { ptr, i32 } [ %246, %lpad527 ], [ %.pn845.pn.pn.pn1552, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1350 ], [ %.pn845.pn.pn.pn1552, %if.then.i.i1349 ] + %.pn845.pn.pn.pn.pn = phi { ptr, i32 } [ %247, %lpad527 ], [ %.pn845.pn.pn.pn1552, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1350 ], [ %.pn845.pn.pn.pn1552, %if.then.i.i1349 ] call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp524) #40 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp522) #40 br label %cleanup.action607 cleanup.action607: ; preds = %cleanup.action586, %ehcleanup577, %lpad554, %lpad518 - %.pn845.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn845.pn.pn.pn.pn, %cleanup.action586 ], [ %245, %lpad518 ], [ %248, %lpad554 ], [ %249, %ehcleanup577 ] - %253 = load ptr, ptr %ref.tmp510, align 8, !tbaa !11 - %254 = getelementptr inbounds i8, ptr %ref.tmp510, i64 16 - %cmp.i.i.i1354 = icmp eq ptr %253, %254 + %.pn845.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn845.pn.pn.pn.pn, %cleanup.action586 ], [ %246, %lpad518 ], [ %249, %lpad554 ], [ %250, %ehcleanup577 ] + %254 = load ptr, ptr %ref.tmp510, align 8, !tbaa !11 + %255 = getelementptr inbounds i8, ptr %ref.tmp510, i64 16 + %cmp.i.i.i1354 = icmp eq ptr %254, %255 br i1 %cmp.i.i.i1354, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1356, label %if.then.i.i1355 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1356: ; preds = %cleanup.action607 %_M_string_length.i.i.i1357 = getelementptr inbounds i8, ptr %ref.tmp510, i64 8 - %255 = load i64, ptr %_M_string_length.i.i.i1357, align 8, !tbaa !14 - %cmp3.i.i.i1358 = icmp ult i64 %255, 16 + %256 = load i64, ptr %_M_string_length.i.i.i1357, align 8, !tbaa !14 + %cmp3.i.i.i1358 = icmp ult i64 %256, 16 call void @llvm.assume(i1 %cmp3.i.i.i1358) br label %cleanup.action614 if.then.i.i1355: ; preds = %cleanup.action607 - call void @_ZdlPv(ptr noundef %253) #41 + call void @_ZdlPv(ptr noundef %254) #41 br label %cleanup.action614 cleanup.action614: ; preds = %if.then.i.i1355, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1356, %lpad515 - %.pn845.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %244, %lpad515 ], [ %.pn845.pn.pn.pn.pn.pn, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1356 ], [ %.pn845.pn.pn.pn.pn.pn, %if.then.i.i1355 ] + %.pn845.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %245, %lpad515 ], [ %.pn845.pn.pn.pn.pn.pn, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1356 ], [ %.pn845.pn.pn.pn.pn.pn, %if.then.i.i1355 ] call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp512) #40 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp510) #40 br label %cleanup.action635 cleanup.action635: ; preds = %cleanup.action614, %lpad505 - %.pn845.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn845.pn.pn.pn.pn.pn.pn, %cleanup.action614 ], [ %243, %lpad505 ] - %256 = load ptr, ptr %ref.tmp497, align 8, !tbaa !11 - %cmp.i.i.i1360 = icmp eq ptr %256, %216 + %.pn845.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn845.pn.pn.pn.pn.pn.pn, %cleanup.action614 ], [ %244, %lpad505 ] + %257 = load ptr, ptr %ref.tmp497, align 8, !tbaa !11 + %cmp.i.i.i1360 = icmp eq ptr %257, %217 br i1 %cmp.i.i.i1360, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1362, label %if.then.i.i1361 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1362: ; preds = %cleanup.action635 - %257 = load i64, ptr %_M_string_length.i.i.i.i1270, align 8, !tbaa !14 - %cmp3.i.i.i1364 = icmp ult i64 %257, 16 + %258 = load i64, ptr %_M_string_length.i.i.i.i1270, align 8, !tbaa !14 + %cmp3.i.i.i1364 = icmp ult i64 %258, 16 call void @llvm.assume(i1 %cmp3.i.i.i1364) br label %cleanup.action642 if.then.i.i1361: ; preds = %cleanup.action635 - call void @_ZdlPv(ptr noundef %256) #41 + call void @_ZdlPv(ptr noundef %257) #41 br label %cleanup.action642 cleanup.action642: ; preds = %if.then.i.i1361, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1362, %lpad502 - %.pn845.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %242, %lpad502 ], [ %.pn845.pn.pn.pn.pn.pn.pn.pn, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1362 ], [ %.pn845.pn.pn.pn.pn.pn.pn.pn, %if.then.i.i1361 ] + %.pn845.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %243, %lpad502 ], [ %.pn845.pn.pn.pn.pn.pn.pn.pn, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i1362 ], [ %.pn845.pn.pn.pn.pn.pn.pn.pn, %if.then.i.i1361 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp497) #40 br label %ehcleanup676 if.else669: ; preds = %cleanup.done653 %sound_place_failed670 = getelementptr inbounds i8, ptr %selected_def, i64 704 %soundmaker671 = getelementptr inbounds i8, ptr %this, i64 96 - %258 = load ptr, ptr %soundmaker671, align 8, !tbaa !118 - %m_player_rightpunch_sound672 = getelementptr inbounds i8, ptr %258, i64 200 + %259 = load ptr, ptr %soundmaker671, align 8, !tbaa !118 + %m_player_rightpunch_sound672 = getelementptr inbounds i8, ptr %259, i64 200 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_assignERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %m_player_rightpunch_sound672, ptr noundef nonnull align 8 dereferenceable(32) %sound_place_failed670) to label %_ZN9SoundSpecaSERKS_.exit1369 unwind label %lpad489 _ZN9SoundSpecaSERKS_.exit1369: ; preds = %if.else669 - %gain.i1366 = getelementptr inbounds i8, ptr %258, i64 232 + %gain.i1366 = getelementptr inbounds i8, ptr %259, i64 232 %gain3.i1367 = getelementptr inbounds i8, ptr %selected_def, i64 736 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(18) %gain.i1366, ptr noundef nonnull align 8 dereferenceable(18) %gain3.i1367, i64 18, i1 false) br label %cleanup701 ehcleanup676: ; preds = %cleanup.action642, %lpad489 - %.pn855 = phi { ptr, i32 } [ %241, %lpad489 ], [ %.pn845.pn.pn.pn.pn.pn.pn.pn.pn, %cleanup.action642 ] + %.pn855 = phi { ptr, i32 } [ %242, %lpad489 ], [ %.pn845.pn.pn.pn.pn.pn.pn.pn.pn, %cleanup.action642 ] %exn.slot.17 = extractvalue { ptr, i32 } %.pn855, 0 %ehselector.slot.17 = extractvalue { ptr, i32 } %.pn855, 1 - %259 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTI24InvalidPositionException) #40 - %matches = icmp eq i32 %ehselector.slot.17, %259 + %260 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTI24InvalidPositionException) #40 + %matches = icmp eq i32 %ehselector.slot.17, %260 br i1 %matches, label %catch, label %ehcleanup702 catch: ; preds = %ehcleanup676 - %260 = call ptr @__cxa_begin_catch(ptr %exn.slot.17) #40 + %261 = call ptr @__cxa_begin_catch(ptr %exn.slot.17) #40 %.not30 = icmp eq ptr @_ZTH11errorstream, null - br i1 %.not30, label %_ZTW11errorstream.exit1370, label %261 + br i1 %.not30, label %_ZTW11errorstream.exit1370, label %262 -261: ; preds = %catch +262: ; preds = %catch call void @_ZTH11errorstream() br label %_ZTW11errorstream.exit1370 -_ZTW11errorstream.exit1370: ; preds = %261, %catch - %262 = call noundef align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @errorstream) - %call679 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN9LogStreamlsIRA38_KcEER11StreamProxyOT_(ptr noundef nonnull align 8 dereferenceable(992) %262, ptr noundef nonnull align 1 dereferenceable(38) @.str.183) +_ZTW11errorstream.exit1370: ; preds = %262, %catch + %263 = call noundef align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @errorstream) + %call679 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN9LogStreamlsIRA38_KcEER11StreamProxyOT_(ptr noundef nonnull align 8 dereferenceable(992) %263, ptr noundef nonnull align 1 dereferenceable(38) @.str.183) to label %invoke.cont678 unwind label %lpad677 invoke.cont678: ; preds = %_ZTW11errorstream.exit1370 - %263 = load ptr, ptr %call679, align 8, !tbaa !188 - %tobool.not.i1371 = icmp eq ptr %263, null + %264 = load ptr, ptr %call679, align 8, !tbaa !188 + %tobool.not.i1371 = icmp eq ptr %264, null br i1 %tobool.not.i1371, label %invoke.cont681, label %if.then.i1372 if.then.i1372: ; preds = %invoke.cont678 - %264 = load ptr, ptr %name1499151415181523, align 8, !tbaa !11 + %265 = load ptr, ptr %name1499151415181523, align 8, !tbaa !11 %_M_string_length.i.i.i1373 = getelementptr inbounds i8, ptr %selected_def, i64 16 - %265 = load i64, ptr %_M_string_length.i.i.i1373, align 8, !tbaa !14 - %call2.i.i13741376 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %263, ptr noundef %264, i64 noundef %265) + %266 = load i64, ptr %_M_string_length.i.i.i1373, align 8, !tbaa !14 + %call2.i.i13741376 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %264, ptr noundef %265, i64 noundef %266) to label %invoke.cont681 unwind label %lpad677 invoke.cont681: ; preds = %if.then.i1372, %invoke.cont678 @@ -39524,14 +39523,14 @@ invoke.cont681: ; preds = %if.then.i1372, %inv to label %invoke.cont683 unwind label %lpad677 invoke.cont683: ; preds = %invoke.cont681 - %266 = load ptr, ptr %call684, align 8, !tbaa !188 - %tobool.not.i1378 = icmp eq ptr %266, null + %267 = load ptr, ptr %call684, align 8, !tbaa !188 + %tobool.not.i1378 = icmp eq ptr %267, null br i1 %tobool.not.i1378, label %invoke.cont685, label %if.then.i1379 if.then.i1379: ; preds = %invoke.cont683 - %267 = load ptr, ptr %node_placement_prediction, align 8, !tbaa !11 - %268 = load i64, ptr %_M_string_length.i.i962, align 8, !tbaa !14 - %call2.i.i13811383 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %266, ptr noundef %267, i64 noundef %268) + %268 = load ptr, ptr %node_placement_prediction, align 8, !tbaa !11 + %269 = load i64, ptr %_M_string_length.i.i962, align 8, !tbaa !14 + %call2.i.i13811383 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %267, ptr noundef %268, i64 noundef %269) to label %invoke.cont685 unwind label %lpad677 invoke.cont685: ; preds = %if.then.i1379, %invoke.cont683 @@ -39539,38 +39538,38 @@ invoke.cont685: ; preds = %if.then.i1379, %inv to label %invoke.cont687 unwind label %lpad677 invoke.cont687: ; preds = %invoke.cont685 - %269 = load ptr, ptr %call688, align 8, !tbaa !188 - %tobool.not.i1385 = icmp eq ptr %269, null + %270 = load ptr, ptr %call688, align 8, !tbaa !188 + %tobool.not.i1385 = icmp eq ptr %270, null br i1 %tobool.not.i1385, label %invoke.cont689, label %if.then.i1386 if.then.i1386: ; preds = %invoke.cont687 - %call.i.i13871389 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8) %269) + %call.i.i13871389 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8) %270) to label %invoke.cont689 unwind label %lpad677 invoke.cont689: ; preds = %if.then.i1386, %invoke.cont687 %sound_place_failed691 = getelementptr inbounds i8, ptr %selected_def, i64 704 %soundmaker692 = getelementptr inbounds i8, ptr %this, i64 96 - %270 = load ptr, ptr %soundmaker692, align 8, !tbaa !118 - %m_player_rightpunch_sound693 = getelementptr inbounds i8, ptr %270, i64 200 + %271 = load ptr, ptr %soundmaker692, align 8, !tbaa !118 + %m_player_rightpunch_sound693 = getelementptr inbounds i8, ptr %271, i64 200 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_assignERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %m_player_rightpunch_sound693, ptr noundef nonnull align 8 dereferenceable(32) %sound_place_failed691) to label %invoke.cont694 unwind label %lpad677 invoke.cont694: ; preds = %invoke.cont689 - %gain.i1391 = getelementptr inbounds i8, ptr %270, i64 232 + %gain.i1391 = getelementptr inbounds i8, ptr %271, i64 232 %gain3.i1392 = getelementptr inbounds i8, ptr %selected_def, i64 736 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(18) %gain.i1391, ptr noundef nonnull align 8 dereferenceable(18) %gain3.i1392, i64 18, i1 false) call void @__cxa_end_catch() br label %cleanup701 lpad677: ; preds = %invoke.cont689, %if.then.i1386, %invoke.cont685, %if.then.i1379, %invoke.cont681, %if.then.i1372, %_ZTW11errorstream.exit1370 - %271 = landingpad { ptr, i32 } + %272 = landingpad { ptr, i32 } cleanup invoke void @__cxa_end_catch() to label %invoke.cont698 unwind label %terminate.lpad invoke.cont698: ; preds = %lpad677 - %272 = extractvalue { ptr, i32 } %271, 1 - %273 = extractvalue { ptr, i32 } %271, 0 + %273 = extractvalue { ptr, i32 } %272, 1 + %274 = extractvalue { ptr, i32 } %272, 0 br label %ehcleanup702 cleanup701: ; preds = %invoke.cont694, %_ZN9SoundSpecaSERKS_.exit1369, %_ZN9SoundSpecaSERKS_.exit, %if.then405 @@ -39579,8 +39578,8 @@ cleanup701: ; preds = %invoke.cont694, %_Z br label %cleanup709 ehcleanup702: ; preds = %invoke.cont698, %ehcleanup676, %ehcleanup439, %ehcleanup332 - %ehselector.slot.18 = phi i32 [ %272, %invoke.cont698 ], [ %ehselector.slot.17, %ehcleanup676 ], [ %ehselector.slot.7, %ehcleanup439 ], [ %ehselector.slot.6, %ehcleanup332 ] - %exn.slot.18 = phi ptr [ %273, %invoke.cont698 ], [ %exn.slot.17, %ehcleanup676 ], [ %exn.slot.7, %ehcleanup439 ], [ %exn.slot.6, %ehcleanup332 ] + %ehselector.slot.18 = phi i32 [ %273, %invoke.cont698 ], [ %ehselector.slot.17, %ehcleanup676 ], [ %ehselector.slot.7, %ehcleanup439 ], [ %ehselector.slot.6, %ehcleanup332 ] + %exn.slot.18 = phi ptr [ %274, %invoke.cont698 ], [ %exn.slot.17, %ehcleanup676 ], [ %exn.slot.7, %ehcleanup439 ], [ %exn.slot.6, %ehcleanup332 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %predicted_node) #40 call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %id) #40 br label %ehcleanup718 @@ -39604,10 +39603,10 @@ ehcleanup718: ; preds = %ehcleanup702, %_ZN1 resume { ptr, i32 } %lpad.val729 terminate.lpad: ; preds = %lpad677 - %274 = landingpad { ptr, i32 } + %275 = landingpad { ptr, i32 } catch ptr null - %275 = extractvalue { ptr, i32 } %274, 0 - call void @__clang_call_terminate(ptr %275) #43 + %276 = extractvalue { ptr, i32 } %275, 0 + call void @__clang_call_terminate(ptr %276) #43 unreachable } diff --git a/bench/ncnn/optimized/lstm_x86_avx512vnni.cpp.ll b/bench/ncnn/optimized/lstm_x86_avx512vnni.cpp.ll index aadf883e44e..8f8aba3d7c2 100644 --- a/bench/ncnn/optimized/lstm_x86_avx512vnni.cpp.ll +++ b/bench/ncnn/optimized/lstm_x86_avx512vnni.cpp.ll @@ -3549,9 +3549,9 @@ define internal fastcc void @_ZN4ncnnL32lstm_dynamic_quantize_scale2int8EPKfifPa br i1 %24, label %.lr.ph399, label %._crit_edge400 .lr.ph399: ; preds = %._crit_edge, %.lr.ph399 - %.1397 = phi ptr [ %70, %.lr.ph399 ], [ %.0369.lcssa, %._crit_edge ] - %.1371396 = phi ptr [ %71, %.lr.ph399 ], [ %.0370.lcssa, %._crit_edge ] - %.1375395 = phi i32 [ %72, %.lr.ph399 ], [ %.0374.lcssa, %._crit_edge ] + %.1397 = phi ptr [ %61, %.lr.ph399 ], [ %.0369.lcssa, %._crit_edge ] + %.1371396 = phi ptr [ %62, %.lr.ph399 ], [ %.0370.lcssa, %._crit_edge ] + %.1375395 = phi i32 [ %63, %.lr.ph399 ], [ %.0374.lcssa, %._crit_edge ] %25 = load <8 x float>, ptr %.1397, align 1 %26 = fmul fast <8 x float> %25, %22 %27 = tail call <8 x float> @llvm.copysign.v8f32(<8 x float> , <8 x float> %26) @@ -3565,126 +3565,112 @@ define internal fastcc void @_ZN4ncnnL32lstm_dynamic_quantize_scale2int8EPKfifPa %35 = tail call <8 x i16> @llvm.smin.v8i16(<8 x i16> %34, <8 x i16> ) %36 = tail call <8 x i16> @llvm.smax.v8i16(<8 x i16> %35, <8 x i16> ) %37 = tail call <16 x i8> @llvm.x86.sse2.packsswb.128(<8 x i16> %36, <8 x i16> poison) - %38 = bitcast <16 x i8> %37 to <2 x i64> - %39 = extractelement <2 x i64> %38, i64 0 - %40 = trunc i64 %39 to i8 - %41 = add i8 %40, 127 - store i8 %41, ptr %.1371396, align 1 - %42 = getelementptr inbounds i8, ptr %.1371396, i64 1 - %43 = lshr i64 %39, 8 - %44 = trunc i64 %43 to i8 + %38 = extractelement <16 x i8> %37, i64 0 + %39 = add i8 %38, 127 + store i8 %39, ptr %.1371396, align 1 + %40 = getelementptr inbounds i8, ptr %.1371396, i64 1 + %41 = extractelement <16 x i8> %37, i64 1 + %42 = add i8 %41, 127 + store i8 %42, ptr %40, align 1 + %43 = getelementptr inbounds i8, ptr %.1371396, i64 2 + %44 = extractelement <16 x i8> %37, i64 2 %45 = add i8 %44, 127 - store i8 %45, ptr %42, align 1 - %46 = getelementptr inbounds i8, ptr %.1371396, i64 2 - %47 = lshr i64 %39, 16 - %48 = trunc i64 %47 to i8 - %49 = add i8 %48, 127 - store i8 %49, ptr %46, align 1 - %50 = getelementptr inbounds i8, ptr %.1371396, i64 3 - %51 = lshr i64 %39, 24 - %52 = trunc i64 %51 to i8 - %53 = add i8 %52, 127 - store i8 %53, ptr %50, align 1 - %54 = getelementptr inbounds i8, ptr %.1371396, i64 4 - %55 = lshr i64 %39, 32 - %56 = trunc i64 %55 to i8 + store i8 %45, ptr %43, align 1 + %46 = getelementptr inbounds i8, ptr %.1371396, i64 3 + %47 = extractelement <16 x i8> %37, i64 3 + %48 = add i8 %47, 127 + store i8 %48, ptr %46, align 1 + %49 = getelementptr inbounds i8, ptr %.1371396, i64 4 + %50 = extractelement <16 x i8> %37, i64 4 + %51 = add i8 %50, 127 + store i8 %51, ptr %49, align 1 + %52 = getelementptr inbounds i8, ptr %.1371396, i64 5 + %53 = extractelement <16 x i8> %37, i64 5 + %54 = add i8 %53, 127 + store i8 %54, ptr %52, align 1 + %55 = getelementptr inbounds i8, ptr %.1371396, i64 6 + %56 = extractelement <16 x i8> %37, i64 6 %57 = add i8 %56, 127 - store i8 %57, ptr %54, align 1 - %58 = getelementptr inbounds i8, ptr %.1371396, i64 5 - %59 = lshr i64 %39, 40 - %60 = trunc i64 %59 to i8 - %61 = add i8 %60, 127 - store i8 %61, ptr %58, align 1 - %62 = getelementptr inbounds i8, ptr %.1371396, i64 6 - %63 = lshr i64 %39, 48 - %64 = trunc i64 %63 to i8 - %65 = add i8 %64, 127 - store i8 %65, ptr %62, align 1 - %66 = getelementptr inbounds i8, ptr %.1371396, i64 7 - %67 = lshr i64 %39, 56 - %68 = trunc nuw i64 %67 to i8 - %69 = add i8 %68, 127 - store i8 %69, ptr %66, align 1 - %70 = getelementptr inbounds i8, ptr %.1397, i64 32 - %71 = getelementptr inbounds i8, ptr %.1371396, i64 8 - %72 = add nuw nsw i32 %.1375395, 8 - %73 = or disjoint i32 %72, 7 - %74 = icmp slt i32 %73, %1 - br i1 %74, label %.lr.ph399, label %._crit_edge400, !llvm.loop !40 + store i8 %57, ptr %55, align 1 + %58 = getelementptr inbounds i8, ptr %.1371396, i64 7 + %59 = extractelement <16 x i8> %37, i64 7 + %60 = add i8 %59, 127 + store i8 %60, ptr %58, align 1 + %61 = getelementptr inbounds i8, ptr %.1397, i64 32 + %62 = getelementptr inbounds i8, ptr %.1371396, i64 8 + %63 = add nuw nsw i32 %.1375395, 8 + %64 = or disjoint i32 %63, 7 + %65 = icmp slt i32 %64, %1 + br i1 %65, label %.lr.ph399, label %._crit_edge400, !llvm.loop !40 ._crit_edge400: ; preds = %.lr.ph399, %._crit_edge - %.1375.lcssa = phi i32 [ %.0374.lcssa, %._crit_edge ], [ %72, %.lr.ph399 ] - %.1371.lcssa = phi ptr [ %.0370.lcssa, %._crit_edge ], [ %71, %.lr.ph399 ] - %.1.lcssa = phi ptr [ %.0369.lcssa, %._crit_edge ], [ %70, %.lr.ph399 ] - %75 = insertelement <4 x float> poison, float %2, i64 0 - %76 = shufflevector <4 x float> %75, <4 x float> poison, <4 x i32> zeroinitializer - %77 = or disjoint i32 %.1375.lcssa, 3 - %78 = icmp slt i32 %77, %1 - br i1 %78, label %.lr.ph408, label %.preheader + %.1375.lcssa = phi i32 [ %.0374.lcssa, %._crit_edge ], [ %63, %.lr.ph399 ] + %.1371.lcssa = phi ptr [ %.0370.lcssa, %._crit_edge ], [ %62, %.lr.ph399 ] + %.1.lcssa = phi ptr [ %.0369.lcssa, %._crit_edge ], [ %61, %.lr.ph399 ] + %66 = insertelement <4 x float> poison, float %2, i64 0 + %67 = shufflevector <4 x float> %66, <4 x float> poison, <4 x i32> zeroinitializer + %68 = or disjoint i32 %.1375.lcssa, 3 + %69 = icmp slt i32 %68, %1 + br i1 %69, label %.lr.ph408, label %.preheader .preheader: ; preds = %.lr.ph408, %._crit_edge400 - %.2376.lcssa = phi i32 [ %.1375.lcssa, %._crit_edge400 ], [ %107, %.lr.ph408 ] - %.2372.lcssa = phi ptr [ %.1371.lcssa, %._crit_edge400 ], [ %106, %.lr.ph408 ] - %.2.lcssa = phi ptr [ %.1.lcssa, %._crit_edge400 ], [ %105, %.lr.ph408 ] - %79 = icmp slt i32 %.2376.lcssa, %1 - br i1 %79, label %.lr.ph415, label %._crit_edge416 + %.2376.lcssa = phi i32 [ %.1375.lcssa, %._crit_edge400 ], [ %93, %.lr.ph408 ] + %.2372.lcssa = phi ptr [ %.1371.lcssa, %._crit_edge400 ], [ %92, %.lr.ph408 ] + %.2.lcssa = phi ptr [ %.1.lcssa, %._crit_edge400 ], [ %91, %.lr.ph408 ] + %70 = icmp slt i32 %.2376.lcssa, %1 + br i1 %70, label %.lr.ph415, label %._crit_edge416 .lr.ph408: ; preds = %._crit_edge400, %.lr.ph408 - %.2406 = phi ptr [ %105, %.lr.ph408 ], [ %.1.lcssa, %._crit_edge400 ] - %.2372405 = phi ptr [ %106, %.lr.ph408 ], [ %.1371.lcssa, %._crit_edge400 ] - %.2376404 = phi i32 [ %107, %.lr.ph408 ], [ %.1375.lcssa, %._crit_edge400 ] - %80 = load <4 x float>, ptr %.2406, align 1 - %81 = fmul fast <4 x float> %80, %76 - %82 = tail call <4 x float> @llvm.copysign.v4f32(<4 x float> , <4 x float> %81) - %83 = fadd fast <4 x float> %82, %81 - %84 = tail call <4 x i32> @llvm.x86.sse2.cvttps2dq(<4 x float> %83) - %85 = tail call <8 x i16> @llvm.x86.sse2.packssdw.128(<4 x i32> %84, <4 x i32> %84) - %86 = tail call <8 x i16> @llvm.smin.v8i16(<8 x i16> %85, <8 x i16> ) - %87 = tail call <8 x i16> @llvm.smax.v8i16(<8 x i16> %86, <8 x i16> ) - %88 = tail call <16 x i8> @llvm.x86.sse2.packsswb.128(<8 x i16> %87, <8 x i16> poison) - %89 = bitcast <16 x i8> %88 to <4 x i32> - %90 = extractelement <4 x i32> %89, i64 0 - %91 = trunc i32 %90 to i8 - %92 = add i8 %91, 127 - store i8 %92, ptr %.2372405, align 1 - %93 = getelementptr inbounds i8, ptr %.2372405, i64 1 - %94 = lshr i32 %90, 8 - %95 = trunc i32 %94 to i8 - %96 = add i8 %95, 127 - store i8 %96, ptr %93, align 1 - %97 = getelementptr inbounds i8, ptr %.2372405, i64 2 - %98 = lshr i32 %90, 16 - %99 = trunc i32 %98 to i8 - %100 = add i8 %99, 127 - store i8 %100, ptr %97, align 1 - %101 = getelementptr inbounds i8, ptr %.2372405, i64 3 - %102 = lshr i32 %90, 24 - %103 = trunc nuw i32 %102 to i8 - %104 = add i8 %103, 127 - store i8 %104, ptr %101, align 1 - %105 = getelementptr inbounds i8, ptr %.2406, i64 16 - %106 = getelementptr inbounds i8, ptr %.2372405, i64 4 - %107 = add nuw nsw i32 %.2376404, 4 - %108 = or disjoint i32 %107, 3 - %109 = icmp slt i32 %108, %1 - br i1 %109, label %.lr.ph408, label %.preheader, !llvm.loop !41 + %.2406 = phi ptr [ %91, %.lr.ph408 ], [ %.1.lcssa, %._crit_edge400 ] + %.2372405 = phi ptr [ %92, %.lr.ph408 ], [ %.1371.lcssa, %._crit_edge400 ] + %.2376404 = phi i32 [ %93, %.lr.ph408 ], [ %.1375.lcssa, %._crit_edge400 ] + %71 = load <4 x float>, ptr %.2406, align 1 + %72 = fmul fast <4 x float> %71, %67 + %73 = tail call <4 x float> @llvm.copysign.v4f32(<4 x float> , <4 x float> %72) + %74 = fadd fast <4 x float> %73, %72 + %75 = tail call <4 x i32> @llvm.x86.sse2.cvttps2dq(<4 x float> %74) + %76 = tail call <8 x i16> @llvm.x86.sse2.packssdw.128(<4 x i32> %75, <4 x i32> %75) + %77 = tail call <8 x i16> @llvm.smin.v8i16(<8 x i16> %76, <8 x i16> ) + %78 = tail call <8 x i16> @llvm.smax.v8i16(<8 x i16> %77, <8 x i16> ) + %79 = tail call <16 x i8> @llvm.x86.sse2.packsswb.128(<8 x i16> %78, <8 x i16> poison) + %80 = extractelement <16 x i8> %79, i64 0 + %81 = add i8 %80, 127 + store i8 %81, ptr %.2372405, align 1 + %82 = getelementptr inbounds i8, ptr %.2372405, i64 1 + %83 = extractelement <16 x i8> %79, i64 1 + %84 = add i8 %83, 127 + store i8 %84, ptr %82, align 1 + %85 = getelementptr inbounds i8, ptr %.2372405, i64 2 + %86 = extractelement <16 x i8> %79, i64 2 + %87 = add i8 %86, 127 + store i8 %87, ptr %85, align 1 + %88 = getelementptr inbounds i8, ptr %.2372405, i64 3 + %89 = extractelement <16 x i8> %79, i64 3 + %90 = add i8 %89, 127 + store i8 %90, ptr %88, align 1 + %91 = getelementptr inbounds i8, ptr %.2406, i64 16 + %92 = getelementptr inbounds i8, ptr %.2372405, i64 4 + %93 = add nuw nsw i32 %.2376404, 4 + %94 = or disjoint i32 %93, 3 + %95 = icmp slt i32 %94, %1 + br i1 %95, label %.lr.ph408, label %.preheader, !llvm.loop !41 .lr.ph415: ; preds = %.preheader, %.lr.ph415 - %.3414 = phi ptr [ %110, %.lr.ph415 ], [ %.2.lcssa, %.preheader ] - %.3373413 = phi ptr [ %115, %.lr.ph415 ], [ %.2372.lcssa, %.preheader ] - %.3377412 = phi i32 [ %116, %.lr.ph415 ], [ %.2376.lcssa, %.preheader ] - %110 = getelementptr inbounds i8, ptr %.3414, i64 4 - %111 = load float, ptr %.3414, align 4 - %112 = fmul fast float %111, %2 - %113 = tail call fast noundef float @llvm.round.f32(float %112) - %114 = fptosi float %113 to i32 - %spec.select388 = tail call i32 @llvm.smax.i32(i32 %114, i32 -127) + %.3414 = phi ptr [ %96, %.lr.ph415 ], [ %.2.lcssa, %.preheader ] + %.3373413 = phi ptr [ %101, %.lr.ph415 ], [ %.2372.lcssa, %.preheader ] + %.3377412 = phi i32 [ %102, %.lr.ph415 ], [ %.2376.lcssa, %.preheader ] + %96 = getelementptr inbounds i8, ptr %.3414, i64 4 + %97 = load float, ptr %.3414, align 4 + %98 = fmul fast float %97, %2 + %99 = tail call fast noundef float @llvm.round.f32(float %98) + %100 = fptosi float %99 to i32 + %spec.select388 = tail call i32 @llvm.smax.i32(i32 %100, i32 -127) %.0389 = tail call i32 @llvm.smin.i32(i32 %spec.select388, i32 127) %.0 = trunc nsw i32 %.0389 to i8 - %115 = getelementptr inbounds i8, ptr %.3373413, i64 1 + %101 = getelementptr inbounds i8, ptr %.3373413, i64 1 store i8 %.0, ptr %.3373413, align 1 - %116 = add nuw nsw i32 %.3377412, 1 - %exitcond.not = icmp eq i32 %116, %1 + %102 = add nuw nsw i32 %.3377412, 1 + %exitcond.not = icmp eq i32 %102, %1 br i1 %exitcond.not, label %._crit_edge416, label %.lr.ph415, !llvm.loop !42 ._crit_edge416: ; preds = %.lr.ph415, %.preheader diff --git a/bench/node/optimized/simdutf.ll b/bench/node/optimized/simdutf.ll index 09cdf930347..164d47e4b51 100644 --- a/bench/node/optimized/simdutf.ll +++ b/bench/node/optimized/simdutf.ll @@ -17837,7 +17837,7 @@ lastiteration.i: ; preds = %if.then204.i, %whil %carry.1.i = phi i32 [ %carry.0.i, %while.body.i ], [ %carry.2.i, %if.then204.i ] %adjust.1.i = phi i64 [ %adjust.0.i, %while.body.i ], [ %sub210.i, %if.then204.i ] %inmask.1.i = phi i32 [ %inmask.0.i, %while.body.i ], [ %sub207.i, %if.then204.i ] - %1 = phi <32 x i16> [ %0, %while.body.i ], [ %111, %if.then204.i ] + %1 = phi <32 x i16> [ %0, %while.body.i ], [ %112, %if.then204.i ] %outbuf.addr.1.i = phi ptr [ %outbuf.addr.0.i, %while.body.i ], [ %outbuf.addr.2.i, %if.then204.i ] %inlen.addr.1.i = phi i64 [ %sub.i, %while.body.i ], [ 0, %if.then204.i ] %inbuf.addr.1.i = phi ptr [ %inbuf.addr.0.i, %while.body.i ], [ %inbuf.addr.2.i, %if.then204.i ] @@ -17987,8 +17987,6 @@ if.end116.i: ; preds = %if.end116.split.loo %68 = xor <32 x i1> %34, %69 = shufflevector <32 x i1> %68, <32 x i1> poison, <64 x i32> %70 = and <64 x i1> %69, %67 - %bc656.i = bitcast <64 x i1> %70 to <2 x i32> - %conv131.i = extractelement <2 x i32> %bc656.i, i64 0 %71 = bitcast <32 x i1> %7 to <1 x i32> %72 = extractelement <1 x i32> %71, i64 0 %conv136.i = xor i32 %72, -1 @@ -18000,46 +17998,47 @@ if.end116.i: ; preds = %if.end116.split.loo %conv146.i = extractelement <2 x i16> %75, i64 1 %76 = bitcast i16 %conv146.i to <16 x i1> %77 = select <16 x i1> %76, <16 x i32> , <16 x i32> %60 - %conv151.i = trunc i32 %conv131.i to i16 - %78 = bitcast i16 %conv151.i to <16 x i1> - %79 = select <16 x i1> %78, <16 x i32> , <16 x i32> - %80 = lshr i32 %conv131.i, 16 - %conv157.i = trunc nuw i32 %80 to i16 - %81 = bitcast i16 %conv157.i to <16 x i1> - %82 = select <16 x i1> %81, <16 x i32> , <16 x i32> - %83 = bitcast <64 x i8> %64 to <16 x i32> - %84 = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %83, <16 x i32> , <16 x i32> %74, i32 234) - %85 = bitcast <64 x i8> %66 to <16 x i32> - %86 = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %85, <16 x i32> , <16 x i32> %77, i32 234) + %78 = bitcast <64 x i1> %70 to <4 x i16> + %conv151.i = extractelement <4 x i16> %78, i64 0 + %79 = bitcast i16 %conv151.i to <16 x i1> + %80 = select <16 x i1> %79, <16 x i32> , <16 x i32> + %81 = bitcast <64 x i1> %70 to <4 x i16> + %conv157.i = extractelement <4 x i16> %81, i64 1 + %82 = bitcast i16 %conv157.i to <16 x i1> + %83 = select <16 x i1> %82, <16 x i32> , <16 x i32> + %84 = bitcast <64 x i8> %64 to <16 x i32> + %85 = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %84, <16 x i32> , <16 x i32> %74, i32 234) + %86 = bitcast <64 x i8> %66 to <16 x i32> + %87 = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %86, <16 x i32> , <16 x i32> %77, i32 234) %conv177.i = trunc i32 %conv136.i to i16 - %87 = shl <16 x i32> %lo.0.in.i, - %88 = bitcast i16 %conv177.i to <16 x i1> - %89 = select <16 x i1> %88, <16 x i32> %87, <16 x i32> %84 - %90 = lshr i32 %conv136.i, 16 - %conv181.i = trunc nuw i32 %90 to i16 - %91 = shl <16 x i32> %62, - %92 = bitcast i16 %conv181.i to <16 x i1> - %93 = select <16 x i1> %92, <16 x i32> %91, <16 x i32> %86 - %94 = bitcast <16 x i32> %89 to <64 x i8> - %95 = bitcast <16 x i32> %79 to <64 x i8> - %96 = icmp uge <64 x i8> %94, %95 - %97 = bitcast <64 x i1> %96 to i64 - %98 = bitcast <16 x i32> %93 to <64 x i8> - %99 = bitcast <16 x i32> %82 to <64 x i8> - %100 = icmp uge <64 x i8> %98, %99 - %101 = bitcast <64 x i1> %100 to i64 - %102 = tail call <64 x i8> @llvm.x86.avx512.mask.compress.v64i8(<64 x i8> %94, <64 x i8> zeroinitializer, <64 x i1> %96) - %103 = tail call <64 x i8> @llvm.x86.avx512.mask.compress.v64i8(<64 x i8> %98, <64 x i8> zeroinitializer, <64 x i1> %100) - %104 = tail call range(i64 0, 65) i64 @llvm.ctpop.i64(i64 %97) - %105 = tail call range(i64 0, 65) i64 @llvm.ctpop.i64(i64 %101) - %106 = tail call noundef i64 @llvm.x86.bmi.pext.64(i64 %97, i64 %97) - %107 = bitcast i64 %106 to <64 x i1> - tail call void @llvm.masked.store.v64i8.p0(<64 x i8> %102, ptr %outbuf.addr.1.i, i32 1, <64 x i1> %107) - %add.ptr196.i = getelementptr inbounds i8, ptr %outbuf.addr.1.i, i64 %104 - %108 = tail call noundef i64 @llvm.x86.bmi.pext.64(i64 %101, i64 %101) - %109 = bitcast i64 %108 to <64 x i1> - tail call void @llvm.masked.store.v64i8.p0(<64 x i8> %103, ptr %add.ptr196.i, i32 1, <64 x i1> %109) - %add200.i = add nuw nsw i64 %105, %104 + %88 = shl <16 x i32> %lo.0.in.i, + %89 = bitcast i16 %conv177.i to <16 x i1> + %90 = select <16 x i1> %89, <16 x i32> %88, <16 x i32> %85 + %91 = lshr i32 %conv136.i, 16 + %conv181.i = trunc nuw i32 %91 to i16 + %92 = shl <16 x i32> %62, + %93 = bitcast i16 %conv181.i to <16 x i1> + %94 = select <16 x i1> %93, <16 x i32> %92, <16 x i32> %87 + %95 = bitcast <16 x i32> %90 to <64 x i8> + %96 = bitcast <16 x i32> %80 to <64 x i8> + %97 = icmp uge <64 x i8> %95, %96 + %98 = bitcast <64 x i1> %97 to i64 + %99 = bitcast <16 x i32> %94 to <64 x i8> + %100 = bitcast <16 x i32> %83 to <64 x i8> + %101 = icmp uge <64 x i8> %99, %100 + %102 = bitcast <64 x i1> %101 to i64 + %103 = tail call <64 x i8> @llvm.x86.avx512.mask.compress.v64i8(<64 x i8> %95, <64 x i8> zeroinitializer, <64 x i1> %97) + %104 = tail call <64 x i8> @llvm.x86.avx512.mask.compress.v64i8(<64 x i8> %99, <64 x i8> zeroinitializer, <64 x i1> %101) + %105 = tail call range(i64 0, 65) i64 @llvm.ctpop.i64(i64 %98) + %106 = tail call range(i64 0, 65) i64 @llvm.ctpop.i64(i64 %102) + %107 = tail call noundef i64 @llvm.x86.bmi.pext.64(i64 %98, i64 %98) + %108 = bitcast i64 %107 to <64 x i1> + tail call void @llvm.masked.store.v64i8.p0(<64 x i8> %103, ptr %outbuf.addr.1.i, i32 1, <64 x i1> %108) + %add.ptr196.i = getelementptr inbounds i8, ptr %outbuf.addr.1.i, i64 %105 + %109 = tail call noundef i64 @llvm.x86.bmi.pext.64(i64 %102, i64 %102) + %110 = bitcast i64 %109 to <64 x i1> + tail call void @llvm.masked.store.v64i8.p0(<64 x i8> %104, ptr %add.ptr196.i, i32 1, <64 x i1> %110) + %add200.i = add nuw nsw i64 %106, %105 %add.ptr201.i = getelementptr inbounds i8, ptr %outbuf.addr.1.i, i64 %add200.i br label %while.cond.i.backedge @@ -18069,8 +18068,8 @@ if.then204.i: ; preds = %tail.i %sh_prom205.i = trunc nuw nsw i64 %inlen.addr.3.i to i32 %notmask662.i = shl nsw i32 -1, %sh_prom205.i %sub207.i = xor i32 %notmask662.i, -1 - %110 = bitcast i32 %sub207.i to <32 x i1> - %111 = tail call <32 x i16> @llvm.masked.load.v32i16.p0(ptr %inbuf.addr.2.i, i32 1, <32 x i1> %110, <32 x i16> zeroinitializer) + %111 = bitcast i32 %sub207.i to <32 x i1> + %112 = tail call <32 x i16> @llvm.masked.load.v32i16.p0(ptr %inbuf.addr.2.i, i32 1, <32 x i1> %111, <32 x i16> zeroinitializer) %sub210.i = add nsw i64 %inlen.addr.3.i, -31 br label %lastiteration.i @@ -18117,7 +18116,7 @@ lastiteration.i: ; preds = %if.then207.i, %whil %carry.1.i = phi i32 [ %carry.0.i, %while.body.i ], [ %carry.2.i, %if.then207.i ] %adjust.1.i = phi i64 [ %adjust.0.i, %while.body.i ], [ %sub216.i, %if.then207.i ] %inmask.1.i = phi i32 [ %inmask.0.i, %while.body.i ], [ %sub210.i, %if.then207.i ] - %in.0.in.i = phi <64 x i8> [ %1, %while.body.i ], [ %115, %if.then207.i ] + %in.0.in.i = phi <64 x i8> [ %1, %while.body.i ], [ %116, %if.then207.i ] %outbuf.addr.1.i = phi ptr [ %outbuf.addr.0.i, %while.body.i ], [ %outbuf.addr.2.i, %if.then207.i ] %inlen.addr.1.i = phi i64 [ %sub.i, %while.body.i ], [ 0, %if.then207.i ] %inbuf.addr.1.i = phi ptr [ %inbuf.addr.0.i, %while.body.i ], [ %inbuf.addr.2.i, %if.then207.i ] @@ -18273,8 +18272,6 @@ if.end119.i: ; preds = %if.end119.split.loo %70 = xor <32 x i1> %36, %71 = shufflevector <32 x i1> %70, <32 x i1> poison, <64 x i32> %72 = and <64 x i1> %71, %69 - %bc659.i = bitcast <64 x i1> %72 to <2 x i32> - %conv134.i = extractelement <2 x i32> %bc659.i, i64 0 %73 = bitcast <32 x i1> %9 to <1 x i32> %74 = extractelement <1 x i32> %73, i64 0 %conv139.i = xor i32 %74, -1 @@ -18286,46 +18283,47 @@ if.end119.i: ; preds = %if.end119.split.loo %conv149.i = extractelement <2 x i16> %77, i64 1 %78 = bitcast i16 %conv149.i to <16 x i1> %79 = select <16 x i1> %78, <16 x i32> , <16 x i32> %62 - %conv154.i = trunc i32 %conv134.i to i16 - %80 = bitcast i16 %conv154.i to <16 x i1> - %81 = select <16 x i1> %80, <16 x i32> , <16 x i32> - %82 = lshr i32 %conv134.i, 16 - %conv160.i = trunc nuw i32 %82 to i16 - %83 = bitcast i16 %conv160.i to <16 x i1> - %84 = select <16 x i1> %83, <16 x i32> , <16 x i32> - %85 = bitcast <64 x i8> %66 to <16 x i32> - %86 = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %85, <16 x i32> , <16 x i32> %76, i32 234) - %87 = bitcast <64 x i8> %68 to <16 x i32> - %88 = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %87, <16 x i32> , <16 x i32> %79, i32 234) + %80 = bitcast <64 x i1> %72 to <4 x i16> + %conv154.i = extractelement <4 x i16> %80, i64 0 + %81 = bitcast i16 %conv154.i to <16 x i1> + %82 = select <16 x i1> %81, <16 x i32> , <16 x i32> + %83 = bitcast <64 x i1> %72 to <4 x i16> + %conv160.i = extractelement <4 x i16> %83, i64 1 + %84 = bitcast i16 %conv160.i to <16 x i1> + %85 = select <16 x i1> %84, <16 x i32> , <16 x i32> + %86 = bitcast <64 x i8> %66 to <16 x i32> + %87 = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %86, <16 x i32> , <16 x i32> %76, i32 234) + %88 = bitcast <64 x i8> %68 to <16 x i32> + %89 = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %88, <16 x i32> , <16 x i32> %79, i32 234) %conv180.i = trunc i32 %conv139.i to i16 - %89 = shl <16 x i32> %lo.0.in.i, - %90 = bitcast i16 %conv180.i to <16 x i1> - %91 = select <16 x i1> %90, <16 x i32> %89, <16 x i32> %86 - %92 = lshr i32 %conv139.i, 16 - %conv184.i = trunc nuw i32 %92 to i16 - %93 = shl <16 x i32> %64, - %94 = bitcast i16 %conv184.i to <16 x i1> - %95 = select <16 x i1> %94, <16 x i32> %93, <16 x i32> %88 - %96 = bitcast <16 x i32> %91 to <64 x i8> - %97 = bitcast <16 x i32> %81 to <64 x i8> - %98 = icmp uge <64 x i8> %96, %97 - %99 = bitcast <64 x i1> %98 to i64 - %100 = bitcast <16 x i32> %95 to <64 x i8> - %101 = bitcast <16 x i32> %84 to <64 x i8> - %102 = icmp uge <64 x i8> %100, %101 - %103 = bitcast <64 x i1> %102 to i64 - %104 = tail call <64 x i8> @llvm.x86.avx512.mask.compress.v64i8(<64 x i8> %96, <64 x i8> zeroinitializer, <64 x i1> %98) - %105 = tail call <64 x i8> @llvm.x86.avx512.mask.compress.v64i8(<64 x i8> %100, <64 x i8> zeroinitializer, <64 x i1> %102) - %106 = tail call range(i64 0, 65) i64 @llvm.ctpop.i64(i64 %99) - %107 = tail call range(i64 0, 65) i64 @llvm.ctpop.i64(i64 %103) - %108 = tail call noundef i64 @llvm.x86.bmi.pext.64(i64 %99, i64 %99) - %109 = bitcast i64 %108 to <64 x i1> - tail call void @llvm.masked.store.v64i8.p0(<64 x i8> %104, ptr %outbuf.addr.1.i, i32 1, <64 x i1> %109) - %add.ptr199.i = getelementptr inbounds i8, ptr %outbuf.addr.1.i, i64 %106 - %110 = tail call noundef i64 @llvm.x86.bmi.pext.64(i64 %103, i64 %103) - %111 = bitcast i64 %110 to <64 x i1> - tail call void @llvm.masked.store.v64i8.p0(<64 x i8> %105, ptr %add.ptr199.i, i32 1, <64 x i1> %111) - %add203.i = add nuw nsw i64 %107, %106 + %90 = shl <16 x i32> %lo.0.in.i, + %91 = bitcast i16 %conv180.i to <16 x i1> + %92 = select <16 x i1> %91, <16 x i32> %90, <16 x i32> %87 + %93 = lshr i32 %conv139.i, 16 + %conv184.i = trunc nuw i32 %93 to i16 + %94 = shl <16 x i32> %64, + %95 = bitcast i16 %conv184.i to <16 x i1> + %96 = select <16 x i1> %95, <16 x i32> %94, <16 x i32> %89 + %97 = bitcast <16 x i32> %92 to <64 x i8> + %98 = bitcast <16 x i32> %82 to <64 x i8> + %99 = icmp uge <64 x i8> %97, %98 + %100 = bitcast <64 x i1> %99 to i64 + %101 = bitcast <16 x i32> %96 to <64 x i8> + %102 = bitcast <16 x i32> %85 to <64 x i8> + %103 = icmp uge <64 x i8> %101, %102 + %104 = bitcast <64 x i1> %103 to i64 + %105 = tail call <64 x i8> @llvm.x86.avx512.mask.compress.v64i8(<64 x i8> %97, <64 x i8> zeroinitializer, <64 x i1> %99) + %106 = tail call <64 x i8> @llvm.x86.avx512.mask.compress.v64i8(<64 x i8> %101, <64 x i8> zeroinitializer, <64 x i1> %103) + %107 = tail call range(i64 0, 65) i64 @llvm.ctpop.i64(i64 %100) + %108 = tail call range(i64 0, 65) i64 @llvm.ctpop.i64(i64 %104) + %109 = tail call noundef i64 @llvm.x86.bmi.pext.64(i64 %100, i64 %100) + %110 = bitcast i64 %109 to <64 x i1> + tail call void @llvm.masked.store.v64i8.p0(<64 x i8> %105, ptr %outbuf.addr.1.i, i32 1, <64 x i1> %110) + %add.ptr199.i = getelementptr inbounds i8, ptr %outbuf.addr.1.i, i64 %107 + %111 = tail call noundef i64 @llvm.x86.bmi.pext.64(i64 %104, i64 %104) + %112 = bitcast i64 %111 to <64 x i1> + tail call void @llvm.masked.store.v64i8.p0(<64 x i8> %106, ptr %add.ptr199.i, i32 1, <64 x i1> %112) + %add203.i = add nuw nsw i64 %108, %107 %add.ptr204.i = getelementptr inbounds i8, ptr %outbuf.addr.1.i, i64 %add203.i br label %while.cond.i.backedge @@ -18355,10 +18353,10 @@ if.then207.i: ; preds = %tail.i %sh_prom208.i = trunc nuw nsw i64 %inlen.addr.3.i to i32 %notmask665.i = shl nsw i32 -1, %sh_prom208.i %sub210.i = xor i32 %notmask665.i, -1 - %112 = bitcast i32 %sub210.i to <32 x i1> - %113 = tail call <32 x i16> @llvm.masked.load.v32i16.p0(ptr %inbuf.addr.2.i, i32 1, <32 x i1> %112, <32 x i16> zeroinitializer) - %114 = bitcast <32 x i16> %113 to <64 x i8> - %115 = shufflevector <64 x i8> %114, <64 x i8> poison, <64 x i32> + %113 = bitcast i32 %sub210.i to <32 x i1> + %114 = tail call <32 x i16> @llvm.masked.load.v32i16.p0(ptr %inbuf.addr.2.i, i32 1, <32 x i1> %113, <32 x i16> zeroinitializer) + %115 = bitcast <32 x i16> %114 to <64 x i8> + %116 = shufflevector <64 x i8> %115, <64 x i8> poison, <64 x i32> %sub216.i = add nsw i64 %inlen.addr.3.i, -31 br label %lastiteration.i @@ -18404,7 +18402,7 @@ lastiteration.i: ; preds = %if.then204.i, %whil %carry.1.i = phi i32 [ %carry.0.i, %while.body.i ], [ %carry.2.i, %if.then204.i ] %adjust.1.i = phi i64 [ %adjust.0.i, %while.body.i ], [ %sub210.i, %if.then204.i ] %inmask.1.i = phi i32 [ %inmask.0.i, %while.body.i ], [ %sub207.i, %if.then204.i ] - %1 = phi <32 x i16> [ %0, %while.body.i ], [ %111, %if.then204.i ] + %1 = phi <32 x i16> [ %0, %while.body.i ], [ %112, %if.then204.i ] %outbuf.addr.1.i = phi ptr [ %outbuf.addr.0.i, %while.body.i ], [ %outbuf.addr.2.i, %if.then204.i ] %inlen.addr.1.i = phi i64 [ %sub.i, %while.body.i ], [ 0, %if.then204.i ] %inbuf.addr.1.i = phi ptr [ %inbuf.addr.0.i, %while.body.i ], [ %inbuf.addr.2.i, %if.then204.i ] @@ -18554,8 +18552,6 @@ if.end116.i: ; preds = %if.end116.split.loo %68 = xor <32 x i1> %34, %69 = shufflevector <32 x i1> %68, <32 x i1> poison, <64 x i32> %70 = and <64 x i1> %69, %67 - %bc656.i = bitcast <64 x i1> %70 to <2 x i32> - %conv131.i = extractelement <2 x i32> %bc656.i, i64 0 %71 = bitcast <32 x i1> %7 to <1 x i32> %72 = extractelement <1 x i32> %71, i64 0 %conv136.i = xor i32 %72, -1 @@ -18567,46 +18563,47 @@ if.end116.i: ; preds = %if.end116.split.loo %conv146.i = extractelement <2 x i16> %75, i64 1 %76 = bitcast i16 %conv146.i to <16 x i1> %77 = select <16 x i1> %76, <16 x i32> , <16 x i32> %60 - %conv151.i = trunc i32 %conv131.i to i16 - %78 = bitcast i16 %conv151.i to <16 x i1> - %79 = select <16 x i1> %78, <16 x i32> , <16 x i32> - %80 = lshr i32 %conv131.i, 16 - %conv157.i = trunc nuw i32 %80 to i16 - %81 = bitcast i16 %conv157.i to <16 x i1> - %82 = select <16 x i1> %81, <16 x i32> , <16 x i32> - %83 = bitcast <64 x i8> %64 to <16 x i32> - %84 = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %83, <16 x i32> , <16 x i32> %74, i32 234) - %85 = bitcast <64 x i8> %66 to <16 x i32> - %86 = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %85, <16 x i32> , <16 x i32> %77, i32 234) + %78 = bitcast <64 x i1> %70 to <4 x i16> + %conv151.i = extractelement <4 x i16> %78, i64 0 + %79 = bitcast i16 %conv151.i to <16 x i1> + %80 = select <16 x i1> %79, <16 x i32> , <16 x i32> + %81 = bitcast <64 x i1> %70 to <4 x i16> + %conv157.i = extractelement <4 x i16> %81, i64 1 + %82 = bitcast i16 %conv157.i to <16 x i1> + %83 = select <16 x i1> %82, <16 x i32> , <16 x i32> + %84 = bitcast <64 x i8> %64 to <16 x i32> + %85 = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %84, <16 x i32> , <16 x i32> %74, i32 234) + %86 = bitcast <64 x i8> %66 to <16 x i32> + %87 = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %86, <16 x i32> , <16 x i32> %77, i32 234) %conv177.i = trunc i32 %conv136.i to i16 - %87 = shl <16 x i32> %lo.0.in.i, - %88 = bitcast i16 %conv177.i to <16 x i1> - %89 = select <16 x i1> %88, <16 x i32> %87, <16 x i32> %84 - %90 = lshr i32 %conv136.i, 16 - %conv181.i = trunc nuw i32 %90 to i16 - %91 = shl <16 x i32> %62, - %92 = bitcast i16 %conv181.i to <16 x i1> - %93 = select <16 x i1> %92, <16 x i32> %91, <16 x i32> %86 - %94 = bitcast <16 x i32> %89 to <64 x i8> - %95 = bitcast <16 x i32> %79 to <64 x i8> - %96 = icmp uge <64 x i8> %94, %95 - %97 = bitcast <64 x i1> %96 to i64 - %98 = bitcast <16 x i32> %93 to <64 x i8> - %99 = bitcast <16 x i32> %82 to <64 x i8> - %100 = icmp uge <64 x i8> %98, %99 - %101 = bitcast <64 x i1> %100 to i64 - %102 = tail call <64 x i8> @llvm.x86.avx512.mask.compress.v64i8(<64 x i8> %94, <64 x i8> zeroinitializer, <64 x i1> %96) - %103 = tail call <64 x i8> @llvm.x86.avx512.mask.compress.v64i8(<64 x i8> %98, <64 x i8> zeroinitializer, <64 x i1> %100) - %104 = tail call range(i64 0, 65) i64 @llvm.ctpop.i64(i64 %97) - %105 = tail call range(i64 0, 65) i64 @llvm.ctpop.i64(i64 %101) - %106 = tail call noundef i64 @llvm.x86.bmi.pext.64(i64 %97, i64 %97) - %107 = bitcast i64 %106 to <64 x i1> - tail call void @llvm.masked.store.v64i8.p0(<64 x i8> %102, ptr %outbuf.addr.1.i, i32 1, <64 x i1> %107) - %add.ptr196.i = getelementptr inbounds i8, ptr %outbuf.addr.1.i, i64 %104 - %108 = tail call noundef i64 @llvm.x86.bmi.pext.64(i64 %101, i64 %101) - %109 = bitcast i64 %108 to <64 x i1> - tail call void @llvm.masked.store.v64i8.p0(<64 x i8> %103, ptr %add.ptr196.i, i32 1, <64 x i1> %109) - %add200.i = add nuw nsw i64 %105, %104 + %88 = shl <16 x i32> %lo.0.in.i, + %89 = bitcast i16 %conv177.i to <16 x i1> + %90 = select <16 x i1> %89, <16 x i32> %88, <16 x i32> %85 + %91 = lshr i32 %conv136.i, 16 + %conv181.i = trunc nuw i32 %91 to i16 + %92 = shl <16 x i32> %62, + %93 = bitcast i16 %conv181.i to <16 x i1> + %94 = select <16 x i1> %93, <16 x i32> %92, <16 x i32> %87 + %95 = bitcast <16 x i32> %90 to <64 x i8> + %96 = bitcast <16 x i32> %80 to <64 x i8> + %97 = icmp uge <64 x i8> %95, %96 + %98 = bitcast <64 x i1> %97 to i64 + %99 = bitcast <16 x i32> %94 to <64 x i8> + %100 = bitcast <16 x i32> %83 to <64 x i8> + %101 = icmp uge <64 x i8> %99, %100 + %102 = bitcast <64 x i1> %101 to i64 + %103 = tail call <64 x i8> @llvm.x86.avx512.mask.compress.v64i8(<64 x i8> %95, <64 x i8> zeroinitializer, <64 x i1> %97) + %104 = tail call <64 x i8> @llvm.x86.avx512.mask.compress.v64i8(<64 x i8> %99, <64 x i8> zeroinitializer, <64 x i1> %101) + %105 = tail call range(i64 0, 65) i64 @llvm.ctpop.i64(i64 %98) + %106 = tail call range(i64 0, 65) i64 @llvm.ctpop.i64(i64 %102) + %107 = tail call noundef i64 @llvm.x86.bmi.pext.64(i64 %98, i64 %98) + %108 = bitcast i64 %107 to <64 x i1> + tail call void @llvm.masked.store.v64i8.p0(<64 x i8> %103, ptr %outbuf.addr.1.i, i32 1, <64 x i1> %108) + %add.ptr196.i = getelementptr inbounds i8, ptr %outbuf.addr.1.i, i64 %105 + %109 = tail call noundef i64 @llvm.x86.bmi.pext.64(i64 %102, i64 %102) + %110 = bitcast i64 %109 to <64 x i1> + tail call void @llvm.masked.store.v64i8.p0(<64 x i8> %104, ptr %add.ptr196.i, i32 1, <64 x i1> %110) + %add200.i = add nuw nsw i64 %106, %105 %add.ptr201.i = getelementptr inbounds i8, ptr %outbuf.addr.1.i, i64 %add200.i br label %while.cond.i.backedge @@ -18636,8 +18633,8 @@ if.then204.i: ; preds = %tail.i %sh_prom205.i = trunc nuw nsw i64 %inlen.addr.3.i to i32 %notmask662.i = shl nsw i32 -1, %sh_prom205.i %sub207.i = xor i32 %notmask662.i, -1 - %110 = bitcast i32 %sub207.i to <32 x i1> - %111 = tail call <32 x i16> @llvm.masked.load.v32i16.p0(ptr %inbuf.addr.2.i, i32 1, <32 x i1> %110, <32 x i16> zeroinitializer) + %111 = bitcast i32 %sub207.i to <32 x i1> + %112 = tail call <32 x i16> @llvm.masked.load.v32i16.p0(ptr %inbuf.addr.2.i, i32 1, <32 x i1> %111, <32 x i16> zeroinitializer) %sub210.i = add nsw i64 %inlen.addr.3.i, -31 br label %lastiteration.i @@ -18662,14 +18659,14 @@ if.then: ; preds = %_ZN7simdutf7icelake %sub = sub i64 %len, %add212.i %add.ptr2 = getelementptr inbounds i8, ptr %utf8_output, i64 %add212.i %call3 = tail call fastcc { i32, i64 } @_ZN7simdutf6scalar12_GLOBAL__N_113utf16_to_utf819convert_with_errorsILNS_10endiannessE0EEENS_6resultEPKDsmPc(ptr noundef %add.ptr, i64 noundef %sub, ptr noundef %add.ptr2) - %112 = extractvalue { i32, i64 } %call3, 0 - %113 = extractvalue { i32, i64 } %call3, 1 - %add = add i64 %113, %add216.i + %113 = extractvalue { i32, i64 } %call3, 0 + %114 = extractvalue { i32, i64 } %call3, 1 + %add = add i64 %114, %add216.i br label %return return: ; preds = %_ZN7simdutf7icelake12_GLOBAL__N_121utf16_to_utf8_avx512iILNS_10endiannessE0EEEmPKDsmPhPm.exit, %if.then %retval.sroa.3.0 = phi i64 [ %add, %if.then ], [ %add212.i, %_ZN7simdutf7icelake12_GLOBAL__N_121utf16_to_utf8_avx512iILNS_10endiannessE0EEEmPKDsmPhPm.exit ] - %retval.sroa.0.0 = phi i32 [ %112, %if.then ], [ 0, %_ZN7simdutf7icelake12_GLOBAL__N_121utf16_to_utf8_avx512iILNS_10endiannessE0EEEmPKDsmPhPm.exit ] + %retval.sroa.0.0 = phi i32 [ %113, %if.then ], [ 0, %_ZN7simdutf7icelake12_GLOBAL__N_121utf16_to_utf8_avx512iILNS_10endiannessE0EEEmPKDsmPhPm.exit ] %.fca.0.insert = insertvalue { i32, i64 } poison, i32 %retval.sroa.0.0, 0 %.fca.1.insert = insertvalue { i32, i64 } %.fca.0.insert, i64 %retval.sroa.3.0, 1 ret { i32, i64 } %.fca.1.insert @@ -18700,7 +18697,7 @@ lastiteration.i: ; preds = %if.then207.i, %whil %carry.1.i = phi i32 [ %carry.0.i, %while.body.i ], [ %carry.2.i, %if.then207.i ] %adjust.1.i = phi i64 [ %adjust.0.i, %while.body.i ], [ %sub216.i, %if.then207.i ] %inmask.1.i = phi i32 [ %inmask.0.i, %while.body.i ], [ %sub210.i, %if.then207.i ] - %in.0.in.i = phi <64 x i8> [ %1, %while.body.i ], [ %115, %if.then207.i ] + %in.0.in.i = phi <64 x i8> [ %1, %while.body.i ], [ %116, %if.then207.i ] %outbuf.addr.1.i = phi ptr [ %outbuf.addr.0.i, %while.body.i ], [ %outbuf.addr.2.i, %if.then207.i ] %inlen.addr.1.i = phi i64 [ %sub.i, %while.body.i ], [ 0, %if.then207.i ] %inbuf.addr.1.i = phi ptr [ %inbuf.addr.0.i, %while.body.i ], [ %inbuf.addr.2.i, %if.then207.i ] @@ -18856,8 +18853,6 @@ if.end119.i: ; preds = %if.end119.split.loo %70 = xor <32 x i1> %36, %71 = shufflevector <32 x i1> %70, <32 x i1> poison, <64 x i32> %72 = and <64 x i1> %71, %69 - %bc659.i = bitcast <64 x i1> %72 to <2 x i32> - %conv134.i = extractelement <2 x i32> %bc659.i, i64 0 %73 = bitcast <32 x i1> %9 to <1 x i32> %74 = extractelement <1 x i32> %73, i64 0 %conv139.i = xor i32 %74, -1 @@ -18869,46 +18864,47 @@ if.end119.i: ; preds = %if.end119.split.loo %conv149.i = extractelement <2 x i16> %77, i64 1 %78 = bitcast i16 %conv149.i to <16 x i1> %79 = select <16 x i1> %78, <16 x i32> , <16 x i32> %62 - %conv154.i = trunc i32 %conv134.i to i16 - %80 = bitcast i16 %conv154.i to <16 x i1> - %81 = select <16 x i1> %80, <16 x i32> , <16 x i32> - %82 = lshr i32 %conv134.i, 16 - %conv160.i = trunc nuw i32 %82 to i16 - %83 = bitcast i16 %conv160.i to <16 x i1> - %84 = select <16 x i1> %83, <16 x i32> , <16 x i32> - %85 = bitcast <64 x i8> %66 to <16 x i32> - %86 = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %85, <16 x i32> , <16 x i32> %76, i32 234) - %87 = bitcast <64 x i8> %68 to <16 x i32> - %88 = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %87, <16 x i32> , <16 x i32> %79, i32 234) + %80 = bitcast <64 x i1> %72 to <4 x i16> + %conv154.i = extractelement <4 x i16> %80, i64 0 + %81 = bitcast i16 %conv154.i to <16 x i1> + %82 = select <16 x i1> %81, <16 x i32> , <16 x i32> + %83 = bitcast <64 x i1> %72 to <4 x i16> + %conv160.i = extractelement <4 x i16> %83, i64 1 + %84 = bitcast i16 %conv160.i to <16 x i1> + %85 = select <16 x i1> %84, <16 x i32> , <16 x i32> + %86 = bitcast <64 x i8> %66 to <16 x i32> + %87 = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %86, <16 x i32> , <16 x i32> %76, i32 234) + %88 = bitcast <64 x i8> %68 to <16 x i32> + %89 = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %88, <16 x i32> , <16 x i32> %79, i32 234) %conv180.i = trunc i32 %conv139.i to i16 - %89 = shl <16 x i32> %lo.0.in.i, - %90 = bitcast i16 %conv180.i to <16 x i1> - %91 = select <16 x i1> %90, <16 x i32> %89, <16 x i32> %86 - %92 = lshr i32 %conv139.i, 16 - %conv184.i = trunc nuw i32 %92 to i16 - %93 = shl <16 x i32> %64, - %94 = bitcast i16 %conv184.i to <16 x i1> - %95 = select <16 x i1> %94, <16 x i32> %93, <16 x i32> %88 - %96 = bitcast <16 x i32> %91 to <64 x i8> - %97 = bitcast <16 x i32> %81 to <64 x i8> - %98 = icmp uge <64 x i8> %96, %97 - %99 = bitcast <64 x i1> %98 to i64 - %100 = bitcast <16 x i32> %95 to <64 x i8> - %101 = bitcast <16 x i32> %84 to <64 x i8> - %102 = icmp uge <64 x i8> %100, %101 - %103 = bitcast <64 x i1> %102 to i64 - %104 = tail call <64 x i8> @llvm.x86.avx512.mask.compress.v64i8(<64 x i8> %96, <64 x i8> zeroinitializer, <64 x i1> %98) - %105 = tail call <64 x i8> @llvm.x86.avx512.mask.compress.v64i8(<64 x i8> %100, <64 x i8> zeroinitializer, <64 x i1> %102) - %106 = tail call range(i64 0, 65) i64 @llvm.ctpop.i64(i64 %99) - %107 = tail call range(i64 0, 65) i64 @llvm.ctpop.i64(i64 %103) - %108 = tail call noundef i64 @llvm.x86.bmi.pext.64(i64 %99, i64 %99) - %109 = bitcast i64 %108 to <64 x i1> - tail call void @llvm.masked.store.v64i8.p0(<64 x i8> %104, ptr %outbuf.addr.1.i, i32 1, <64 x i1> %109) - %add.ptr199.i = getelementptr inbounds i8, ptr %outbuf.addr.1.i, i64 %106 - %110 = tail call noundef i64 @llvm.x86.bmi.pext.64(i64 %103, i64 %103) - %111 = bitcast i64 %110 to <64 x i1> - tail call void @llvm.masked.store.v64i8.p0(<64 x i8> %105, ptr %add.ptr199.i, i32 1, <64 x i1> %111) - %add203.i = add nuw nsw i64 %107, %106 + %90 = shl <16 x i32> %lo.0.in.i, + %91 = bitcast i16 %conv180.i to <16 x i1> + %92 = select <16 x i1> %91, <16 x i32> %90, <16 x i32> %87 + %93 = lshr i32 %conv139.i, 16 + %conv184.i = trunc nuw i32 %93 to i16 + %94 = shl <16 x i32> %64, + %95 = bitcast i16 %conv184.i to <16 x i1> + %96 = select <16 x i1> %95, <16 x i32> %94, <16 x i32> %89 + %97 = bitcast <16 x i32> %92 to <64 x i8> + %98 = bitcast <16 x i32> %82 to <64 x i8> + %99 = icmp uge <64 x i8> %97, %98 + %100 = bitcast <64 x i1> %99 to i64 + %101 = bitcast <16 x i32> %96 to <64 x i8> + %102 = bitcast <16 x i32> %85 to <64 x i8> + %103 = icmp uge <64 x i8> %101, %102 + %104 = bitcast <64 x i1> %103 to i64 + %105 = tail call <64 x i8> @llvm.x86.avx512.mask.compress.v64i8(<64 x i8> %97, <64 x i8> zeroinitializer, <64 x i1> %99) + %106 = tail call <64 x i8> @llvm.x86.avx512.mask.compress.v64i8(<64 x i8> %101, <64 x i8> zeroinitializer, <64 x i1> %103) + %107 = tail call range(i64 0, 65) i64 @llvm.ctpop.i64(i64 %100) + %108 = tail call range(i64 0, 65) i64 @llvm.ctpop.i64(i64 %104) + %109 = tail call noundef i64 @llvm.x86.bmi.pext.64(i64 %100, i64 %100) + %110 = bitcast i64 %109 to <64 x i1> + tail call void @llvm.masked.store.v64i8.p0(<64 x i8> %105, ptr %outbuf.addr.1.i, i32 1, <64 x i1> %110) + %add.ptr199.i = getelementptr inbounds i8, ptr %outbuf.addr.1.i, i64 %107 + %111 = tail call noundef i64 @llvm.x86.bmi.pext.64(i64 %104, i64 %104) + %112 = bitcast i64 %111 to <64 x i1> + tail call void @llvm.masked.store.v64i8.p0(<64 x i8> %106, ptr %add.ptr199.i, i32 1, <64 x i1> %112) + %add203.i = add nuw nsw i64 %108, %107 %add.ptr204.i = getelementptr inbounds i8, ptr %outbuf.addr.1.i, i64 %add203.i br label %while.cond.i.backedge @@ -18938,10 +18934,10 @@ if.then207.i: ; preds = %tail.i %sh_prom208.i = trunc nuw nsw i64 %inlen.addr.3.i to i32 %notmask665.i = shl nsw i32 -1, %sh_prom208.i %sub210.i = xor i32 %notmask665.i, -1 - %112 = bitcast i32 %sub210.i to <32 x i1> - %113 = tail call <32 x i16> @llvm.masked.load.v32i16.p0(ptr %inbuf.addr.2.i, i32 1, <32 x i1> %112, <32 x i16> zeroinitializer) - %114 = bitcast <32 x i16> %113 to <64 x i8> - %115 = shufflevector <64 x i8> %114, <64 x i8> poison, <64 x i32> + %113 = bitcast i32 %sub210.i to <32 x i1> + %114 = tail call <32 x i16> @llvm.masked.load.v32i16.p0(ptr %inbuf.addr.2.i, i32 1, <32 x i1> %113, <32 x i16> zeroinitializer) + %115 = bitcast <32 x i16> %114 to <64 x i8> + %116 = shufflevector <64 x i8> %115, <64 x i8> poison, <64 x i32> %sub216.i = add nsw i64 %inlen.addr.3.i, -31 br label %lastiteration.i @@ -18966,14 +18962,14 @@ if.then: ; preds = %_ZN7simdutf7icelake %sub = sub i64 %len, %add218.i %add.ptr2 = getelementptr inbounds i8, ptr %utf8_output, i64 %add218.i %call3 = tail call fastcc { i32, i64 } @_ZN7simdutf6scalar12_GLOBAL__N_113utf16_to_utf819convert_with_errorsILNS_10endiannessE1EEENS_6resultEPKDsmPc(ptr noundef %add.ptr, i64 noundef %sub, ptr noundef %add.ptr2) - %116 = extractvalue { i32, i64 } %call3, 0 - %117 = extractvalue { i32, i64 } %call3, 1 - %add = add i64 %117, %add222.i + %117 = extractvalue { i32, i64 } %call3, 0 + %118 = extractvalue { i32, i64 } %call3, 1 + %add = add i64 %118, %add222.i br label %return return: ; preds = %_ZN7simdutf7icelake12_GLOBAL__N_121utf16_to_utf8_avx512iILNS_10endiannessE1EEEmPKDsmPhPm.exit, %if.then %retval.sroa.3.0 = phi i64 [ %add, %if.then ], [ %add218.i, %_ZN7simdutf7icelake12_GLOBAL__N_121utf16_to_utf8_avx512iILNS_10endiannessE1EEEmPKDsmPhPm.exit ] - %retval.sroa.0.0 = phi i32 [ %116, %if.then ], [ 0, %_ZN7simdutf7icelake12_GLOBAL__N_121utf16_to_utf8_avx512iILNS_10endiannessE1EEEmPKDsmPhPm.exit ] + %retval.sroa.0.0 = phi i32 [ %117, %if.then ], [ 0, %_ZN7simdutf7icelake12_GLOBAL__N_121utf16_to_utf8_avx512iILNS_10endiannessE1EEEmPKDsmPhPm.exit ] %.fca.0.insert = insertvalue { i32, i64 } poison, i32 %retval.sroa.0.0, 0 %.fca.1.insert = insertvalue { i32, i64 } %.fca.0.insert, i64 %retval.sroa.3.0, 1 ret { i32, i64 } %.fca.1.insert @@ -19003,7 +18999,7 @@ lastiteration.i.i: ; preds = %if.then204.i.i, %wh %carry.1.i.i = phi i32 [ %carry.0.i.i, %while.body.i.i ], [ %carry.2.i.i, %if.then204.i.i ] %adjust.1.i.i = phi i64 [ %adjust.0.i.i, %while.body.i.i ], [ %sub210.i.i, %if.then204.i.i ] %inmask.1.i.i = phi i32 [ %inmask.0.i.i, %while.body.i.i ], [ %sub207.i.i, %if.then204.i.i ] - %1 = phi <32 x i16> [ %0, %while.body.i.i ], [ %111, %if.then204.i.i ] + %1 = phi <32 x i16> [ %0, %while.body.i.i ], [ %112, %if.then204.i.i ] %outbuf.addr.1.i.i = phi ptr [ %outbuf.addr.0.i.i, %while.body.i.i ], [ %outbuf.addr.2.i.i, %if.then204.i.i ] %inlen.addr.1.i.i = phi i64 [ %sub.i.i, %while.body.i.i ], [ 0, %if.then204.i.i ] %inbuf.addr.1.i.i = phi ptr [ %inbuf.addr.0.i.i, %while.body.i.i ], [ %inbuf.addr.2.i.i, %if.then204.i.i ] @@ -19153,8 +19149,6 @@ if.end116.i.i: ; preds = %if.end116.split.loo %68 = xor <32 x i1> %34, %69 = shufflevector <32 x i1> %68, <32 x i1> poison, <64 x i32> %70 = and <64 x i1> %69, %67 - %bc656.i.i = bitcast <64 x i1> %70 to <2 x i32> - %conv131.i.i = extractelement <2 x i32> %bc656.i.i, i64 0 %71 = bitcast <32 x i1> %7 to <1 x i32> %72 = extractelement <1 x i32> %71, i64 0 %conv136.i.i = xor i32 %72, -1 @@ -19166,46 +19160,47 @@ if.end116.i.i: ; preds = %if.end116.split.loo %conv146.i.i = extractelement <2 x i16> %75, i64 1 %76 = bitcast i16 %conv146.i.i to <16 x i1> %77 = select <16 x i1> %76, <16 x i32> , <16 x i32> %60 - %conv151.i.i = trunc i32 %conv131.i.i to i16 - %78 = bitcast i16 %conv151.i.i to <16 x i1> - %79 = select <16 x i1> %78, <16 x i32> , <16 x i32> - %80 = lshr i32 %conv131.i.i, 16 - %conv157.i.i = trunc nuw i32 %80 to i16 - %81 = bitcast i16 %conv157.i.i to <16 x i1> - %82 = select <16 x i1> %81, <16 x i32> , <16 x i32> - %83 = bitcast <64 x i8> %64 to <16 x i32> - %84 = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %83, <16 x i32> , <16 x i32> %74, i32 234) - %85 = bitcast <64 x i8> %66 to <16 x i32> - %86 = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %85, <16 x i32> , <16 x i32> %77, i32 234) + %78 = bitcast <64 x i1> %70 to <4 x i16> + %conv151.i.i = extractelement <4 x i16> %78, i64 0 + %79 = bitcast i16 %conv151.i.i to <16 x i1> + %80 = select <16 x i1> %79, <16 x i32> , <16 x i32> + %81 = bitcast <64 x i1> %70 to <4 x i16> + %conv157.i.i = extractelement <4 x i16> %81, i64 1 + %82 = bitcast i16 %conv157.i.i to <16 x i1> + %83 = select <16 x i1> %82, <16 x i32> , <16 x i32> + %84 = bitcast <64 x i8> %64 to <16 x i32> + %85 = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %84, <16 x i32> , <16 x i32> %74, i32 234) + %86 = bitcast <64 x i8> %66 to <16 x i32> + %87 = tail call <16 x i32> @llvm.x86.avx512.pternlog.d.512(<16 x i32> %86, <16 x i32> , <16 x i32> %77, i32 234) %conv177.i.i = trunc i32 %conv136.i.i to i16 - %87 = shl <16 x i32> %lo.0.in.i.i, - %88 = bitcast i16 %conv177.i.i to <16 x i1> - %89 = select <16 x i1> %88, <16 x i32> %87, <16 x i32> %84 - %90 = lshr i32 %conv136.i.i, 16 - %conv181.i.i = trunc nuw i32 %90 to i16 - %91 = shl <16 x i32> %62, - %92 = bitcast i16 %conv181.i.i to <16 x i1> - %93 = select <16 x i1> %92, <16 x i32> %91, <16 x i32> %86 - %94 = bitcast <16 x i32> %89 to <64 x i8> - %95 = bitcast <16 x i32> %79 to <64 x i8> - %96 = icmp uge <64 x i8> %94, %95 - %97 = bitcast <64 x i1> %96 to i64 - %98 = bitcast <16 x i32> %93 to <64 x i8> - %99 = bitcast <16 x i32> %82 to <64 x i8> - %100 = icmp uge <64 x i8> %98, %99 - %101 = bitcast <64 x i1> %100 to i64 - %102 = tail call <64 x i8> @llvm.x86.avx512.mask.compress.v64i8(<64 x i8> %94, <64 x i8> zeroinitializer, <64 x i1> %96) - %103 = tail call <64 x i8> @llvm.x86.avx512.mask.compress.v64i8(<64 x i8> %98, <64 x i8> zeroinitializer, <64 x i1> %100) - %104 = tail call range(i64 0, 65) i64 @llvm.ctpop.i64(i64 %97) - %105 = tail call range(i64 0, 65) i64 @llvm.ctpop.i64(i64 %101) - %106 = tail call noundef i64 @llvm.x86.bmi.pext.64(i64 %97, i64 %97) - %107 = bitcast i64 %106 to <64 x i1> - tail call void @llvm.masked.store.v64i8.p0(<64 x i8> %102, ptr %outbuf.addr.1.i.i, i32 1, <64 x i1> %107) - %add.ptr196.i.i = getelementptr inbounds i8, ptr %outbuf.addr.1.i.i, i64 %104 - %108 = tail call noundef i64 @llvm.x86.bmi.pext.64(i64 %101, i64 %101) - %109 = bitcast i64 %108 to <64 x i1> - tail call void @llvm.masked.store.v64i8.p0(<64 x i8> %103, ptr %add.ptr196.i.i, i32 1, <64 x i1> %109) - %add200.i.i = add nuw nsw i64 %105, %104 + %88 = shl <16 x i32> %lo.0.in.i.i, + %89 = bitcast i16 %conv177.i.i to <16 x i1> + %90 = select <16 x i1> %89, <16 x i32> %88, <16 x i32> %85 + %91 = lshr i32 %conv136.i.i, 16 + %conv181.i.i = trunc nuw i32 %91 to i16 + %92 = shl <16 x i32> %62, + %93 = bitcast i16 %conv181.i.i to <16 x i1> + %94 = select <16 x i1> %93, <16 x i32> %92, <16 x i32> %87 + %95 = bitcast <16 x i32> %90 to <64 x i8> + %96 = bitcast <16 x i32> %80 to <64 x i8> + %97 = icmp uge <64 x i8> %95, %96 + %98 = bitcast <64 x i1> %97 to i64 + %99 = bitcast <16 x i32> %94 to <64 x i8> + %100 = bitcast <16 x i32> %83 to <64 x i8> + %101 = icmp uge <64 x i8> %99, %100 + %102 = bitcast <64 x i1> %101 to i64 + %103 = tail call <64 x i8> @llvm.x86.avx512.mask.compress.v64i8(<64 x i8> %95, <64 x i8> zeroinitializer, <64 x i1> %97) + %104 = tail call <64 x i8> @llvm.x86.avx512.mask.compress.v64i8(<64 x i8> %99, <64 x i8> zeroinitializer, <64 x i1> %101) + %105 = tail call range(i64 0, 65) i64 @llvm.ctpop.i64(i64 %98) + %106 = tail call range(i64 0, 65) i64 @llvm.ctpop.i64(i64 %102) + %107 = tail call noundef i64 @llvm.x86.bmi.pext.64(i64 %98, i64 %98) + %108 = bitcast i64 %107 to <64 x i1> + tail call void @llvm.masked.store.v64i8.p0(<64 x i8> %103, ptr %outbuf.addr.1.i.i, i32 1, <64 x i1> %108) + %add.ptr196.i.i = getelementptr inbounds i8, ptr %outbuf.addr.1.i.i, i64 %105 + %109 = tail call noundef i64 @llvm.x86.bmi.pext.64(i64 %102, i64 %102) + %110 = bitcast i64 %109 to <64 x i1> + tail call void @llvm.masked.store.v64i8.p0(<64 x i8> %104, ptr %add.ptr196.i.i, i32 1, <64 x i1> %110) + %add200.i.i = add nuw nsw i64 %106, %105 %add.ptr201.i.i = getelementptr inbounds i8, ptr %outbuf.addr.1.i.i, i64 %add200.i.i br label %while.cond.i.i.backedge @@ -19235,8 +19230,8 @@ if.then204.i.i: ; preds = %tail.i.i %sh_prom205.i.i = trunc nuw nsw i64 %inlen.addr.3.i.i to i32 %notmask662.i.i = shl nsw i32 -1, %sh_prom205.i.i %sub207.i.i = xor i32 %notmask662.i.i, -1 - %110 = bitcast i32 %sub207.i.i to <32 x i1> - %111 = tail call <32 x i16> @llvm.masked.load.v32i16.p0(ptr %inbuf.addr.2.i.i, i32 1, <32 x i1> %110, <32 x i16> zeroinitializer) + %111 = bitcast i32 %sub207.i.i to <32 x i1> + %112 = tail call <32 x i16> @llvm.masked.load.v32i16.p0(ptr %inbuf.addr.2.i.i, i32 1, <32 x i1> %111, <32 x i16> zeroinitializer) %sub210.i.i = add nsw i64 %inlen.addr.3.i.i, -31 br label %lastiteration.i.i diff --git a/bench/pbrt-v4/optimized/cameras.cpp.ll b/bench/pbrt-v4/optimized/cameras.cpp.ll index eb5f5da6f58..6807c23c63f 100644 --- a/bench/pbrt-v4/optimized/cameras.cpp.ll +++ b/bench/pbrt-v4/optimized/cameras.cpp.ll @@ -5285,14 +5285,9 @@ entry: br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry - %bc = bitcast <4 x float> %0 to <2 x i64> - %8 = extractelement <2 x i64> %bc, i64 1 - %9 = trunc i64 %8 to i32 - %t.sroa.0.0.vec.extract.i.i = bitcast i32 %9 to float + %t.sroa.0.0.vec.extract.i.i = extractelement <4 x float> %0, i64 2 %mul.i.i.i = fmul float %t.sroa.0.0.vec.extract.i.i, 2.000000e+00 - %extelt.offset = lshr i64 %8, 32 - %10 = trunc nuw i64 %extelt.offset to i32 - %t.sroa.0.4.vec.extract.i.i = bitcast i32 %10 to float + %t.sroa.0.4.vec.extract.i.i = extractelement <4 x float> %0, i64 3 %mul3.i.i.i = fmul float %t.sroa.0.4.vec.extract.i.i, 2.000000e+00 %sub.i.i3 = fadd float %mul.i.i.i, -1.000000e+00 %sub4.i.i = fadd float %mul3.i.i.i, -1.000000e+00 @@ -5302,9 +5297,9 @@ if.then: ; preds = %entry br i1 %or.cond.i, label %_ZN4pbrt27SampleUniformDiskConcentricENS_6Point2IfEE.exit, label %if.end.i if.end.i: ; preds = %if.then - %11 = tail call noundef float @llvm.fabs.f32(float %sub.i.i3) - %12 = tail call noundef float @llvm.fabs.f32(float %sub4.i.i) - %cmp11.i = fcmp ogt float %11, %12 + %8 = tail call noundef float @llvm.fabs.f32(float %sub.i.i3) + %9 = tail call noundef float @llvm.fabs.f32(float %sub4.i.i) + %cmp11.i = fcmp ogt float %8, %9 br i1 %cmp11.i, label %if.then12.i, label %if.else.i if.then12.i: ; preds = %if.end.i @@ -5336,12 +5331,12 @@ _ZN4pbrt27SampleUniformDiskConcentricENS_6Point2IfEE.exit: ; preds = %if.then, % %t.sroa.0.4.vec.extract.i = extractelement <2 x float> %retval.sroa.0.0.i, i64 1 %mul2.i.i = fmul float %5, %t.sroa.0.4.vec.extract.i %focalDistance = getelementptr inbounds i8, ptr %this, i64 1412 - %13 = load float, ptr %focalDistance, align 4 - %mul.i.i5 = fmul float %13, 0.000000e+00 + %10 = load float, ptr %focalDistance, align 4 + %mul.i.i5 = fmul float %10, 0.000000e+00 %add.i.i7 = fadd float %mul.i.i5, %6 %y.i1.i = getelementptr inbounds i8, ptr %ray, i64 4 %add4.i.i = fadd float %mul.i.i5, %7 - %add6.i.i = fadd float %13, %call.fca.1.extract + %add6.i.i = fadd float %10, %call.fca.1.extract store float %mul.i.i4, ptr %ray, align 8 store float %mul2.i.i, ptr %y.i1.i, align 4 store float 0.000000e+00, ptr %o.sroa.2.0.o3.sroa_idx.i, align 8 @@ -5385,8 +5380,8 @@ _ZN4pbrt15SampledSpectrumC2Ef.exit: ; preds = %for.body.i.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(28) %agg.result, ptr noundef nonnull align 8 dereferenceable(28) %ref.tmp34, i64 28, i1 false) %medium.i.i.i = getelementptr inbounds i8, ptr %agg.result, i64 32 %medium3.i.i.i = getelementptr inbounds i8, ptr %ref.tmp34, i64 32 - %14 = load i64, ptr %medium3.i.i.i, align 8 - store i64 %14, ptr %medium.i.i.i, align 8 + %11 = load i64, ptr %medium3.i.i.i, align 8 + store i64 %11, ptr %medium.i.i.i, align 8 %weight.i.i = getelementptr inbounds i8, ptr %agg.result, i64 40 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %weight.i.i, ptr noundef nonnull align 8 dereferenceable(16) %weight, i64 16, i1 false) ret void @@ -5804,14 +5799,9 @@ entry: br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry - %bc = bitcast <4 x float> %0 to <2 x i64> - %7 = extractelement <2 x i64> %bc, i64 1 - %8 = trunc i64 %7 to i32 - %t.sroa.0.0.vec.extract.i.i = bitcast i32 %8 to float + %t.sroa.0.0.vec.extract.i.i = extractelement <4 x float> %0, i64 2 %mul.i.i.i = fmul float %t.sroa.0.0.vec.extract.i.i, 2.000000e+00 - %extelt.offset = lshr i64 %7, 32 - %9 = trunc nuw i64 %extelt.offset to i32 - %t.sroa.0.4.vec.extract.i.i = bitcast i32 %9 to float + %t.sroa.0.4.vec.extract.i.i = extractelement <4 x float> %0, i64 3 %mul3.i.i.i = fmul float %t.sroa.0.4.vec.extract.i.i, 2.000000e+00 %sub.i.i5 = fadd float %mul.i.i.i, -1.000000e+00 %sub4.i.i = fadd float %mul3.i.i.i, -1.000000e+00 @@ -5821,9 +5811,9 @@ if.then: ; preds = %entry br i1 %or.cond.i, label %_ZN4pbrt27SampleUniformDiskConcentricENS_6Point2IfEE.exit, label %if.end.i if.end.i: ; preds = %if.then - %10 = tail call noundef float @llvm.fabs.f32(float %sub.i.i5) - %11 = tail call noundef float @llvm.fabs.f32(float %sub4.i.i) - %cmp11.i = fcmp ogt float %10, %11 + %7 = tail call noundef float @llvm.fabs.f32(float %sub.i.i5) + %8 = tail call noundef float @llvm.fabs.f32(float %sub4.i.i) + %cmp11.i = fcmp ogt float %7, %8 br i1 %cmp11.i, label %if.then12.i, label %if.else.i if.then12.i: ; preds = %if.end.i @@ -5855,8 +5845,8 @@ _ZN4pbrt27SampleUniformDiskConcentricENS_6Point2IfEE.exit: ; preds = %if.then, % %t.sroa.0.4.vec.extract.i = extractelement <2 x float> %retval.sroa.0.0.i, i64 1 %mul2.i.i = fmul float %6, %t.sroa.0.4.vec.extract.i %focalDistance = getelementptr inbounds i8, ptr %this, i64 1412 - %12 = load float, ptr %focalDistance, align 4 - %div = fdiv float %12, %div3.i.i + %9 = load float, ptr %focalDistance, align 4 + %div = fdiv float %9, %div3.i.i %mul.i.i9 = fmul float %div, %div.i.i %mul2.i.i10 = fmul float %div, %div2.i.i %mul3.i.i = fmul float %div3.i.i, %div @@ -5907,8 +5897,8 @@ _ZN4pbrt15SampledSpectrumC2Ef.exit: ; preds = %for.body.i.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(28) %agg.result, ptr noundef nonnull align 8 dereferenceable(28) %ref.tmp39, i64 28, i1 false) %medium.i.i.i = getelementptr inbounds i8, ptr %agg.result, i64 32 %medium3.i.i.i = getelementptr inbounds i8, ptr %ref.tmp39, i64 32 - %13 = load i64, ptr %medium3.i.i.i, align 8 - store i64 %13, ptr %medium.i.i.i, align 8 + %10 = load i64, ptr %medium3.i.i.i, align 8 + store i64 %10, ptr %medium.i.i.i, align 8 %weight.i.i = getelementptr inbounds i8, ptr %agg.result, i64 40 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %weight.i.i, ptr noundef nonnull align 8 dereferenceable(16) %weight, i64 16, i1 false) ret void @@ -12546,14 +12536,9 @@ entry: br i1 %cmp.i, label %if.then.i, label %if.end.i if.then.i: ; preds = %entry - %bc.i = bitcast <4 x float> %agg.tmp.sroa.0.0.copyload to <2 x i64> - %7 = extractelement <2 x i64> %bc.i, i64 1 - %8 = trunc i64 %7 to i32 - %t.sroa.0.0.vec.extract.i.i.i = bitcast i32 %8 to float + %t.sroa.0.0.vec.extract.i.i.i = extractelement <4 x float> %agg.tmp.sroa.0.0.copyload, i64 2 %mul.i.i.i.i = fmul float %t.sroa.0.0.vec.extract.i.i.i, 2.000000e+00 - %extelt.offset.i = lshr i64 %7, 32 - %9 = trunc nuw i64 %extelt.offset.i to i32 - %t.sroa.0.4.vec.extract.i.i.i = bitcast i32 %9 to float + %t.sroa.0.4.vec.extract.i.i.i = extractelement <4 x float> %agg.tmp.sroa.0.0.copyload, i64 3 %mul3.i.i.i.i = fmul float %t.sroa.0.4.vec.extract.i.i.i, 2.000000e+00 %sub.i.i3.i = fadd float %mul.i.i.i.i, -1.000000e+00 %sub4.i.i.i = fadd float %mul3.i.i.i.i, -1.000000e+00 @@ -12563,9 +12548,9 @@ if.then.i: ; preds = %entry br i1 %or.cond.i.i, label %_ZN4pbrt27SampleUniformDiskConcentricENS_6Point2IfEE.exit.i, label %if.end.i.i if.end.i.i: ; preds = %if.then.i - %10 = tail call noundef float @llvm.fabs.f32(float %sub.i.i3.i) - %11 = tail call noundef float @llvm.fabs.f32(float %sub4.i.i.i) - %cmp11.i.i = fcmp ogt float %10, %11 + %7 = tail call noundef float @llvm.fabs.f32(float %sub.i.i3.i) + %8 = tail call noundef float @llvm.fabs.f32(float %sub4.i.i.i) + %cmp11.i.i = fcmp ogt float %7, %8 br i1 %cmp11.i.i, label %if.then12.i.i, label %if.else.i.i if.then12.i.i: ; preds = %if.end.i.i @@ -12597,12 +12582,12 @@ _ZN4pbrt27SampleUniformDiskConcentricENS_6Point2IfEE.exit.i: ; preds = %if.end21 %t.sroa.0.4.vec.extract.i.i = extractelement <2 x float> %retval.sroa.0.0.i.i, i64 1 %mul2.i.i.i = fmul float %4, %t.sroa.0.4.vec.extract.i.i %focalDistance.i = getelementptr inbounds i8, ptr %ptr, i64 1412 - %12 = load float, ptr %focalDistance.i, align 4, !noalias !173 - %mul.i.i5.i = fmul float %12, 0.000000e+00 + %9 = load float, ptr %focalDistance.i, align 4, !noalias !173 + %mul.i.i5.i = fmul float %9, 0.000000e+00 %add.i.i7.i = fadd float %5, %mul.i.i5.i %y.i1.i.i = getelementptr inbounds i8, ptr %ray.i, i64 4 %add4.i.i.i = fadd float %6, %mul.i.i5.i - %add6.i.i.i = fadd float %call.fca.1.extract.i, %12 + %add6.i.i.i = fadd float %call.fca.1.extract.i, %9 store float %mul.i.i4.i, ptr %ray.i, align 8, !noalias !173 store float %mul2.i.i.i, ptr %y.i1.i.i, align 4, !noalias !173 store float 0.000000e+00, ptr %o.sroa.2.0.o3.sroa_idx.i.i, align 8, !noalias !173 @@ -12646,8 +12631,8 @@ _ZNK4pbrt18OrthographicCamera11GenerateRayENS_12CameraSampleERNS_18SampledWavele call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(28) %agg.result, ptr noundef nonnull align 8 dereferenceable(28) %ref.tmp34.i, i64 28, i1 false) %medium.i.i.i.i = getelementptr inbounds i8, ptr %agg.result, i64 32 %medium3.i.i.i.i = getelementptr inbounds i8, ptr %ref.tmp34.i, i64 32 - %13 = load i64, ptr %medium3.i.i.i.i, align 8, !noalias !173 - store i64 %13, ptr %medium.i.i.i.i, align 8, !alias.scope !173 + %10 = load i64, ptr %medium3.i.i.i.i, align 8, !noalias !173 + store i64 %10, ptr %medium.i.i.i.i, align 8, !alias.scope !173 %weight.i.i.i = getelementptr inbounds i8, ptr %agg.result, i64 40 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %weight.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %weight.i, i64 16, i1 false) call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %ray.i) diff --git a/bench/rand-rs/optimized/qpqwmytuo9t2y51.ll b/bench/rand-rs/optimized/qpqwmytuo9t2y51.ll index 2d42a6072b4..b323539ee1e 100644 --- a/bench/rand-rs/optimized/qpqwmytuo9t2y51.ll +++ b/bench/rand-rs/optimized/qpqwmytuo9t2y51.ll @@ -1311,18 +1311,16 @@ define hidden void @"_ZN133_$LT$ppv_lite86..x86_64..sse2..u32x4_sse2$LT$S3$C$ppv define hidden noundef i32 @"_ZN133_$LT$ppv_lite86..x86_64..sse2..u32x4_sse2$LT$S3$C$ppv_lite86..x86_64..NoS4$C$NI$GT$$u20$as$u20$ppv_lite86..types..Vec4$LT$u32$GT$$GT$7extract17h6d7c99b9e8014e9cE.llvm.17720110283109806325"(ptr noalias nocapture noundef readonly align 16 dereferenceable(16) %0, i32 noundef %1) unnamed_addr #2 { %3 = alloca [4 x i32], align 4 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) - %4 = load <2 x i64>, ptr %0, align 16 - %.0.vec.extract = extractelement <2 x i64> %4, i64 0 - %.0.vec.extract6 = extractelement <2 x i64> %4, i64 1 - %5 = trunc i64 %.0.vec.extract to i32 - %6 = lshr i64 %.0.vec.extract, 32 - %7 = trunc nuw i64 %6 to i32 - %8 = trunc i64 %.0.vec.extract6 to i32 - %9 = lshr i64 %.0.vec.extract6, 32 - %10 = trunc nuw i64 %9 to i32 - store i32 %5, ptr %3, align 4, !alias.scope !155, !noalias !158 + %4 = load i32, ptr %0, align 16 + %5 = getelementptr inbounds i8, ptr %0, i64 4 + %6 = load i32, ptr %5, align 4 + %7 = getelementptr inbounds i8, ptr %0, i64 8 + %8 = load i32, ptr %7, align 8 + %9 = getelementptr inbounds i8, ptr %0, i64 12 + %10 = load i32, ptr %9, align 4 + store i32 %4, ptr %3, align 4, !alias.scope !155, !noalias !158 %11 = getelementptr inbounds i8, ptr %3, i64 4 - store i32 %7, ptr %11, align 4, !alias.scope !155, !noalias !158 + store i32 %6, ptr %11, align 4, !alias.scope !155, !noalias !158 %12 = getelementptr inbounds i8, ptr %3, i64 8 store i32 %8, ptr %12, align 4, !alias.scope !155, !noalias !158 %13 = getelementptr inbounds i8, ptr %3, i64 12 @@ -1400,16 +1398,15 @@ define hidden noundef i32 @"_ZN134_$LT$ppv_lite86..x86_64..sse2..u32x4_sse2$LT$S %5 = load <2 x i64>, ptr %0, align 16 tail call void @llvm.experimental.noalias.scope.decl(metadata !161) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) - %.0.vec.extract = extractelement <2 x i64> %5, i64 0 store <2 x i64> %5, ptr %3, align 16, !noalias !164 %6 = call noundef i64 @_ZN4core9core_arch6x86_645sse4117_mm_extract_epi6417hb2c153d0d0936fbfE.llvm.17720110283109806325(ptr noalias nocapture noundef nonnull align 16 dereferenceable(16) %3), !noalias !164 - %7 = trunc i64 %.0.vec.extract to i32 - %8 = lshr i64 %.0.vec.extract, 32 - %9 = trunc nuw i64 %8 to i32 + %7 = bitcast <2 x i64> %5 to <4 x i32> + %8 = extractelement <4 x i32> %7, i64 0 + %9 = extractelement <4 x i32> %7, i64 1 %10 = trunc i64 %6 to i32 %11 = lshr i64 %6, 32 %12 = trunc nuw i64 %11 to i32 - store i32 %7, ptr %4, align 4, !alias.scope !161, !noalias !166 + store i32 %8, ptr %4, align 4, !alias.scope !161, !noalias !166 %13 = getelementptr inbounds i8, ptr %4, i64 4 store i32 %9, ptr %13, align 4, !alias.scope !161, !noalias !166 %14 = getelementptr inbounds i8, ptr %4, i64 8 @@ -1629,18 +1626,16 @@ define hidden void @"_ZN159_$LT$ppv_lite86..x86_64..sse2..u32x4_sse2$LT$S3$C$ppv ; Function Attrs: alwaysinline mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable define hidden void @"_ZN159_$LT$ppv_lite86..x86_64..sse2..u32x4_sse2$LT$S3$C$ppv_lite86..x86_64..NoS4$C$NI$GT$$u20$as$u20$ppv_lite86..types..MultiLane$LT$$u5b$u32$u3b$$u20$4$u5d$$GT$$GT$8to_lanes17h9b6f83031727d012E.llvm.17720110283109806325"(ptr noalias nocapture noundef writeonly sret([4 x i32]) align 4 dereferenceable(16) %0, ptr noalias nocapture noundef readonly align 16 dereferenceable(16) %1) unnamed_addr #0 { - %3 = load <2 x i64>, ptr %1, align 16 - %.0.vec.extract = extractelement <2 x i64> %3, i64 0 - %.0.vec.extract5 = extractelement <2 x i64> %3, i64 1 - %4 = trunc i64 %.0.vec.extract to i32 - %5 = lshr i64 %.0.vec.extract, 32 - %6 = trunc nuw i64 %5 to i32 - %7 = trunc i64 %.0.vec.extract5 to i32 - %8 = lshr i64 %.0.vec.extract5, 32 - %9 = trunc nuw i64 %8 to i32 - store i32 %4, ptr %0, align 4 + %3 = load i32, ptr %1, align 16 + %4 = getelementptr inbounds i8, ptr %1, i64 4 + %5 = load i32, ptr %4, align 4 + %6 = getelementptr inbounds i8, ptr %1, i64 8 + %7 = load i32, ptr %6, align 8 + %8 = getelementptr inbounds i8, ptr %1, i64 12 + %9 = load i32, ptr %8, align 4 + store i32 %3, ptr %0, align 4 %10 = getelementptr inbounds i8, ptr %0, i64 4 - store i32 %6, ptr %10, align 4 + store i32 %5, ptr %10, align 4 %11 = getelementptr inbounds i8, ptr %0, i64 8 store i32 %7, ptr %11, align 4 %12 = getelementptr inbounds i8, ptr %0, i64 12 @@ -1692,16 +1687,15 @@ define hidden void @"_ZN160_$LT$ppv_lite86..x86_64..sse2..u32x4_sse2$LT$S3$C$ppv define hidden void @"_ZN160_$LT$ppv_lite86..x86_64..sse2..u32x4_sse2$LT$S3$C$ppv_lite86..x86_64..YesS4$C$NI$GT$$u20$as$u20$ppv_lite86..types..MultiLane$LT$$u5b$u32$u3b$$u20$4$u5d$$GT$$GT$8to_lanes17hf1eb897864144bd0E.llvm.17720110283109806325"(ptr noalias nocapture noundef writeonly sret([4 x i32]) align 4 dereferenceable(16) %0, ptr noalias nocapture noundef readonly align 16 dereferenceable(16) %1) unnamed_addr #0 { %3 = alloca <2 x i64>, align 16 %4 = load <2 x i64>, ptr %1, align 16 - %.0.vec.extract = extractelement <2 x i64> %4, i64 0 store <2 x i64> %4, ptr %3, align 16 %5 = call noundef i64 @_ZN4core9core_arch6x86_645sse4117_mm_extract_epi6417hb2c153d0d0936fbfE.llvm.17720110283109806325(ptr noalias nocapture noundef nonnull align 16 dereferenceable(16) %3) - %6 = trunc i64 %.0.vec.extract to i32 - %7 = lshr i64 %.0.vec.extract, 32 - %8 = trunc nuw i64 %7 to i32 + %6 = bitcast <2 x i64> %4 to <4 x i32> + %7 = extractelement <4 x i32> %6, i64 0 + %8 = extractelement <4 x i32> %6, i64 1 %9 = trunc i64 %5 to i32 %10 = lshr i64 %5, 32 %11 = trunc nuw i64 %10 to i32 - store i32 %6, ptr %0, align 4 + store i32 %7, ptr %0, align 4 %12 = getelementptr inbounds i8, ptr %0, i64 4 store i32 %8, ptr %12, align 4 %13 = getelementptr inbounds i8, ptr %0, i64 8 @@ -12583,65 +12577,61 @@ _ZN10std_detect6detect5cache4test17h33e4ae1e0177e982E.llvm.17720110283109806325. %.09.in.in.i.in = phi i64 [ %8, %7 ], [ %5, %2 ] %9 = and i64 %.09.in.in.i.in, 16384 %.09.in.i.not = icmp eq i64 %9, 0 - br i1 %.09.in.i.not, label %10, label %38 + br i1 %.09.in.i.not, label %10, label %36 10: ; preds = %_ZN10std_detect6detect5cache4test17h33e4ae1e0177e982E.llvm.17720110283109806325.exit tail call void @llvm.experimental.noalias.scope.decl(metadata !3211) %11 = getelementptr inbounds i8, ptr %0, i64 32 - %.sroa.0.0.copyload.i = load <2 x i64>, ptr %11, align 16, !alias.scope !3211 + %.sroa.0.0.copyload18.i = load <4 x i32>, ptr %11, align 16, !alias.scope !3211 %12 = shl i32 %1, 1 %13 = or disjoint i32 %12, 1 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3), !noalias !3214 - %.0.vec.extract.i = extractelement <2 x i64> %.sroa.0.0.copyload.i, i64 0 - %.0.vec.extract10.i = extractelement <2 x i64> %.sroa.0.0.copyload.i, i64 1 - %14 = lshr i64 %.0.vec.extract.i, 32 - %15 = trunc nuw i64 %14 to i32 - %16 = trunc i64 %.0.vec.extract10.i to i32 - %17 = lshr i64 %.0.vec.extract10.i, 32 - %18 = trunc nuw i64 %17 to i32 - %19 = getelementptr inbounds i8, ptr %3, i64 4 - store i32 %15, ptr %19, align 4, !alias.scope !3219, !noalias !3222 - %20 = getelementptr inbounds i8, ptr %3, i64 8 - store i32 %16, ptr %20, align 4, !alias.scope !3219, !noalias !3222 - %21 = getelementptr inbounds i8, ptr %3, i64 12 - store i32 %18, ptr %21, align 4, !alias.scope !3219, !noalias !3222 - %22 = zext i32 %13 to i64 - %23 = icmp ult i32 %12, 4 - br i1 %23, label %_ZN11rand_chacha4guts16get_stream_param9impl_sse217hf8805e56ac12e674E.llvm.17720110283109806325.exit, label %24, !prof !160 - -24: ; preds = %10 - tail call void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %22, i64 noundef 4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.71034ffa948b4d9b00e2d6c0756fe8d1.7.llvm.17720110283109806325) #39, !noalias !3214 + %14 = extractelement <4 x i32> %.sroa.0.0.copyload18.i, i64 1 + %15 = extractelement <4 x i32> %.sroa.0.0.copyload18.i, i64 2 + %16 = extractelement <4 x i32> %.sroa.0.0.copyload18.i, i64 3 + %17 = getelementptr inbounds i8, ptr %3, i64 4 + store i32 %14, ptr %17, align 4, !alias.scope !3219, !noalias !3222 + %18 = getelementptr inbounds i8, ptr %3, i64 8 + store i32 %15, ptr %18, align 4, !alias.scope !3219, !noalias !3222 + %19 = getelementptr inbounds i8, ptr %3, i64 12 + store i32 %16, ptr %19, align 4, !alias.scope !3219, !noalias !3222 + %20 = zext i32 %13 to i64 + %21 = icmp ult i32 %12, 4 + br i1 %21, label %_ZN11rand_chacha4guts16get_stream_param9impl_sse217hf8805e56ac12e674E.llvm.17720110283109806325.exit, label %22, !prof !160 + +22: ; preds = %10 + tail call void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %20, i64 noundef 4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.71034ffa948b4d9b00e2d6c0756fe8d1.7.llvm.17720110283109806325) #39, !noalias !3214 unreachable _ZN11rand_chacha4guts16get_stream_param9impl_sse217hf8805e56ac12e674E.llvm.17720110283109806325.exit: ; preds = %10 - %25 = trunc i64 %.0.vec.extract.i to i32 - %26 = getelementptr inbounds [4 x i32], ptr %3, i64 0, i64 %22 - %27 = load i32, ptr %26, align 4, !noalias !3214, !noundef !25 + %23 = extractelement <4 x i32> %.sroa.0.0.copyload18.i, i64 0 + %24 = getelementptr inbounds [4 x i32], ptr %3, i64 0, i64 %20 + %25 = load i32, ptr %24, align 4, !noalias !3214, !noundef !25 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3), !noalias !3214 - %28 = zext i32 %27 to i64 - %29 = shl nuw i64 %28, 32 + %26 = zext i32 %25 to i64 + %27 = shl nuw i64 %26, 32 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4), !noalias !3224 - store i32 %25, ptr %4, align 4, !alias.scope !3227, !noalias !3230 - %30 = getelementptr inbounds i8, ptr %4, i64 4 - store i32 %15, ptr %30, align 4, !alias.scope !3227, !noalias !3230 - %31 = getelementptr inbounds i8, ptr %4, i64 8 - store i32 %16, ptr %31, align 4, !alias.scope !3227, !noalias !3230 - %32 = getelementptr inbounds i8, ptr %4, i64 12 - store i32 %18, ptr %32, align 4, !alias.scope !3227, !noalias !3230 - %33 = zext nneg i32 %12 to i64 - %34 = getelementptr inbounds [4 x i32], ptr %4, i64 0, i64 %33 - %35 = load i32, ptr %34, align 4, !noalias !3224, !noundef !25 + store i32 %23, ptr %4, align 4, !alias.scope !3227, !noalias !3230 + %28 = getelementptr inbounds i8, ptr %4, i64 4 + store i32 %14, ptr %28, align 4, !alias.scope !3227, !noalias !3230 + %29 = getelementptr inbounds i8, ptr %4, i64 8 + store i32 %15, ptr %29, align 4, !alias.scope !3227, !noalias !3230 + %30 = getelementptr inbounds i8, ptr %4, i64 12 + store i32 %16, ptr %30, align 4, !alias.scope !3227, !noalias !3230 + %31 = zext nneg i32 %12 to i64 + %32 = getelementptr inbounds [4 x i32], ptr %4, i64 0, i64 %31 + %33 = load i32, ptr %32, align 4, !noalias !3224, !noundef !25 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4), !noalias !3224 - %36 = zext i32 %35 to i64 - %37 = or disjoint i64 %29, %36 - br label %40 + %34 = zext i32 %33 to i64 + %35 = or disjoint i64 %27, %34 + br label %38 -38: ; preds = %_ZN10std_detect6detect5cache4test17h33e4ae1e0177e982E.llvm.17720110283109806325.exit - %39 = tail call noundef i64 @_ZN11rand_chacha4guts16get_stream_param8impl_avx17h5565c836c2cd3a88E.llvm.17720110283109806325(ptr noalias noundef nonnull readonly align 16 dereferenceable(48) %0, i32 noundef %1) - br label %40 +36: ; preds = %_ZN10std_detect6detect5cache4test17h33e4ae1e0177e982E.llvm.17720110283109806325.exit + %37 = tail call noundef i64 @_ZN11rand_chacha4guts16get_stream_param8impl_avx17h5565c836c2cd3a88E.llvm.17720110283109806325(ptr noalias noundef nonnull readonly align 16 dereferenceable(48) %0, i32 noundef %1) + br label %38 -40: ; preds = %38, %_ZN11rand_chacha4guts16get_stream_param9impl_sse217hf8805e56ac12e674E.llvm.17720110283109806325.exit - %.0 = phi i64 [ %39, %38 ], [ %37, %_ZN11rand_chacha4guts16get_stream_param9impl_sse217hf8805e56ac12e674E.llvm.17720110283109806325.exit ] +38: ; preds = %36, %_ZN11rand_chacha4guts16get_stream_param9impl_sse217hf8805e56ac12e674E.llvm.17720110283109806325.exit + %.0 = phi i64 [ %37, %36 ], [ %35, %_ZN11rand_chacha4guts16get_stream_param9impl_sse217hf8805e56ac12e674E.llvm.17720110283109806325.exit ] ret i64 %.0 } @@ -12650,53 +12640,49 @@ define hidden noundef i64 @_ZN11rand_chacha4guts16get_stream_param7fn_impl17h08b %3 = alloca [4 x i32], align 4 %4 = alloca [4 x i32], align 4 %5 = getelementptr inbounds i8, ptr %0, i64 32 - %.sroa.0.0.copyload = load <2 x i64>, ptr %5, align 16 + %.sroa.0.0.copyload19 = load <4 x i32>, ptr %5, align 16 %6 = shl i32 %1, 1 %7 = or disjoint i32 %6, 1 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3), !noalias !3232 - %.0.vec.extract = extractelement <2 x i64> %.sroa.0.0.copyload, i64 0 - %.0.vec.extract11 = extractelement <2 x i64> %.sroa.0.0.copyload, i64 1 - %8 = lshr i64 %.0.vec.extract, 32 - %9 = trunc nuw i64 %8 to i32 - %10 = trunc i64 %.0.vec.extract11 to i32 - %11 = lshr i64 %.0.vec.extract11, 32 - %12 = trunc nuw i64 %11 to i32 - %13 = getelementptr inbounds i8, ptr %3, i64 4 - store i32 %9, ptr %13, align 4, !alias.scope !3235, !noalias !3238 - %14 = getelementptr inbounds i8, ptr %3, i64 8 - store i32 %10, ptr %14, align 4, !alias.scope !3235, !noalias !3238 - %15 = getelementptr inbounds i8, ptr %3, i64 12 - store i32 %12, ptr %15, align 4, !alias.scope !3235, !noalias !3238 - %16 = zext i32 %7 to i64 - %17 = icmp ult i32 %6, 4 - br i1 %17, label %"_ZN133_$LT$ppv_lite86..x86_64..sse2..u32x4_sse2$LT$S3$C$ppv_lite86..x86_64..NoS4$C$NI$GT$$u20$as$u20$ppv_lite86..types..Vec4$LT$u32$GT$$GT$7extract17h6d7c99b9e8014e9cE.llvm.17720110283109806325.exit", label %18, !prof !160 + %8 = extractelement <4 x i32> %.sroa.0.0.copyload19, i64 1 + %9 = extractelement <4 x i32> %.sroa.0.0.copyload19, i64 2 + %10 = extractelement <4 x i32> %.sroa.0.0.copyload19, i64 3 + %11 = getelementptr inbounds i8, ptr %3, i64 4 + store i32 %8, ptr %11, align 4, !alias.scope !3235, !noalias !3238 + %12 = getelementptr inbounds i8, ptr %3, i64 8 + store i32 %9, ptr %12, align 4, !alias.scope !3235, !noalias !3238 + %13 = getelementptr inbounds i8, ptr %3, i64 12 + store i32 %10, ptr %13, align 4, !alias.scope !3235, !noalias !3238 + %14 = zext i32 %7 to i64 + %15 = icmp ult i32 %6, 4 + br i1 %15, label %"_ZN133_$LT$ppv_lite86..x86_64..sse2..u32x4_sse2$LT$S3$C$ppv_lite86..x86_64..NoS4$C$NI$GT$$u20$as$u20$ppv_lite86..types..Vec4$LT$u32$GT$$GT$7extract17h6d7c99b9e8014e9cE.llvm.17720110283109806325.exit", label %16, !prof !160 -18: ; preds = %2 - tail call void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %16, i64 noundef 4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.71034ffa948b4d9b00e2d6c0756fe8d1.7.llvm.17720110283109806325) #39, !noalias !3232 +16: ; preds = %2 + tail call void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %14, i64 noundef 4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.71034ffa948b4d9b00e2d6c0756fe8d1.7.llvm.17720110283109806325) #39, !noalias !3232 unreachable "_ZN133_$LT$ppv_lite86..x86_64..sse2..u32x4_sse2$LT$S3$C$ppv_lite86..x86_64..NoS4$C$NI$GT$$u20$as$u20$ppv_lite86..types..Vec4$LT$u32$GT$$GT$7extract17h6d7c99b9e8014e9cE.llvm.17720110283109806325.exit": ; preds = %2 - %19 = trunc i64 %.0.vec.extract to i32 - %20 = getelementptr inbounds [4 x i32], ptr %3, i64 0, i64 %16 - %21 = load i32, ptr %20, align 4, !noalias !3232, !noundef !25 + %17 = extractelement <4 x i32> %.sroa.0.0.copyload19, i64 0 + %18 = getelementptr inbounds [4 x i32], ptr %3, i64 0, i64 %14 + %19 = load i32, ptr %18, align 4, !noalias !3232, !noundef !25 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3), !noalias !3232 - %22 = zext i32 %21 to i64 - %23 = shl nuw i64 %22, 32 + %20 = zext i32 %19 to i64 + %21 = shl nuw i64 %20, 32 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4), !noalias !3240 - store i32 %19, ptr %4, align 4, !alias.scope !3243, !noalias !3246 - %24 = getelementptr inbounds i8, ptr %4, i64 4 - store i32 %9, ptr %24, align 4, !alias.scope !3243, !noalias !3246 - %25 = getelementptr inbounds i8, ptr %4, i64 8 - store i32 %10, ptr %25, align 4, !alias.scope !3243, !noalias !3246 - %26 = getelementptr inbounds i8, ptr %4, i64 12 - store i32 %12, ptr %26, align 4, !alias.scope !3243, !noalias !3246 - %27 = zext nneg i32 %6 to i64 - %28 = getelementptr inbounds [4 x i32], ptr %4, i64 0, i64 %27 - %29 = load i32, ptr %28, align 4, !noalias !3240, !noundef !25 + store i32 %17, ptr %4, align 4, !alias.scope !3243, !noalias !3246 + %22 = getelementptr inbounds i8, ptr %4, i64 4 + store i32 %8, ptr %22, align 4, !alias.scope !3243, !noalias !3246 + %23 = getelementptr inbounds i8, ptr %4, i64 8 + store i32 %9, ptr %23, align 4, !alias.scope !3243, !noalias !3246 + %24 = getelementptr inbounds i8, ptr %4, i64 12 + store i32 %10, ptr %24, align 4, !alias.scope !3243, !noalias !3246 + %25 = zext nneg i32 %6 to i64 + %26 = getelementptr inbounds [4 x i32], ptr %4, i64 0, i64 %25 + %27 = load i32, ptr %26, align 4, !noalias !3240, !noundef !25 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4), !noalias !3240 - %30 = zext i32 %29 to i64 - %31 = or disjoint i64 %23, %30 - ret i64 %31 + %28 = zext i32 %27 to i64 + %29 = or disjoint i64 %21, %28 + ret i64 %29 } ; Function Attrs: alwaysinline nonlazybind uwtable @@ -12712,11 +12698,10 @@ define hidden noundef i64 @_ZN11rand_chacha4guts16get_stream_param7fn_impl17hb06 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5), !noalias !3248 tail call void @llvm.experimental.noalias.scope.decl(metadata !3251) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) - %.0.vec.extract = extractelement <2 x i64> %.sroa.0.0.copyload, i64 0 store <2 x i64> %.sroa.0.0.copyload, ptr %4, align 16, !noalias !3254 %10 = call noundef i64 @_ZN4core9core_arch6x86_645sse4117_mm_extract_epi6417hb2c153d0d0936fbfE.llvm.17720110283109806325(ptr noalias nocapture noundef nonnull align 16 dereferenceable(16) %4), !noalias !3254 - %11 = lshr i64 %.0.vec.extract, 32 - %12 = trunc nuw i64 %11 to i32 + %11 = bitcast <2 x i64> %.sroa.0.0.copyload to <4 x i32> + %12 = extractelement <4 x i32> %11, i64 1 %13 = trunc i64 %10 to i32 %14 = lshr i64 %10, 32 %15 = trunc nuw i64 %14 to i32 @@ -12736,7 +12721,7 @@ define hidden noundef i64 @_ZN11rand_chacha4guts16get_stream_param7fn_impl17hb06 unreachable "_ZN134_$LT$ppv_lite86..x86_64..sse2..u32x4_sse2$LT$S3$C$ppv_lite86..x86_64..YesS4$C$NI$GT$$u20$as$u20$ppv_lite86..types..Vec4$LT$u32$GT$$GT$7extract17he520c4f4cca03427E.llvm.17720110283109806325.exit": ; preds = %2 - %22 = trunc i64 %.0.vec.extract to i32 + %22 = extractelement <4 x i32> %11, i64 0 %23 = getelementptr inbounds [4 x i32], ptr %5, i64 0, i64 %19 %24 = load i32, ptr %23, align 4, !noalias !3248, !noundef !25 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5), !noalias !3248 @@ -12772,53 +12757,49 @@ define hidden noundef i64 @_ZN11rand_chacha4guts16get_stream_param8impl_avx17h55 %3 = alloca [4 x i32], align 4 %4 = alloca [4 x i32], align 4 %5 = getelementptr inbounds i8, ptr %0, i64 32 - %.sroa.0.0.copyload = load <2 x i64>, ptr %5, align 16 + %.sroa.0.0.copyload10 = load <4 x i32>, ptr %5, align 16 %6 = shl i32 %1, 1 %7 = or disjoint i32 %6, 1 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3), !noalias !3266 - %.0.vec.extract = extractelement <2 x i64> %.sroa.0.0.copyload, i64 0 - %.8.vec.extract = extractelement <2 x i64> %.sroa.0.0.copyload, i64 1 - %8 = lshr i64 %.0.vec.extract, 32 - %9 = trunc nuw i64 %8 to i32 - %10 = trunc i64 %.8.vec.extract to i32 - %11 = lshr i64 %.8.vec.extract, 32 - %12 = trunc nuw i64 %11 to i32 - %13 = getelementptr inbounds i8, ptr %3, i64 4 - store i32 %9, ptr %13, align 4, !alias.scope !3271, !noalias !3274 - %14 = getelementptr inbounds i8, ptr %3, i64 8 - store i32 %10, ptr %14, align 4, !alias.scope !3271, !noalias !3274 - %15 = getelementptr inbounds i8, ptr %3, i64 12 - store i32 %12, ptr %15, align 4, !alias.scope !3271, !noalias !3274 - %16 = zext i32 %7 to i64 - %17 = icmp ult i32 %6, 4 - br i1 %17, label %_ZN11rand_chacha4guts16get_stream_param7fn_impl17hb061ba77decb59a1E.llvm.17720110283109806325.exit, label %18, !prof !160 + %8 = extractelement <4 x i32> %.sroa.0.0.copyload10, i64 1 + %9 = extractelement <4 x i32> %.sroa.0.0.copyload10, i64 2 + %10 = extractelement <4 x i32> %.sroa.0.0.copyload10, i64 3 + %11 = getelementptr inbounds i8, ptr %3, i64 4 + store i32 %8, ptr %11, align 4, !alias.scope !3271, !noalias !3274 + %12 = getelementptr inbounds i8, ptr %3, i64 8 + store i32 %9, ptr %12, align 4, !alias.scope !3271, !noalias !3274 + %13 = getelementptr inbounds i8, ptr %3, i64 12 + store i32 %10, ptr %13, align 4, !alias.scope !3271, !noalias !3274 + %14 = zext i32 %7 to i64 + %15 = icmp ult i32 %6, 4 + br i1 %15, label %_ZN11rand_chacha4guts16get_stream_param7fn_impl17hb061ba77decb59a1E.llvm.17720110283109806325.exit, label %16, !prof !160 -18: ; preds = %2 - tail call void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %16, i64 noundef 4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.71034ffa948b4d9b00e2d6c0756fe8d1.9.llvm.17720110283109806325) #39, !noalias !3266 +16: ; preds = %2 + tail call void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %14, i64 noundef 4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.71034ffa948b4d9b00e2d6c0756fe8d1.9.llvm.17720110283109806325) #39, !noalias !3266 unreachable _ZN11rand_chacha4guts16get_stream_param7fn_impl17hb061ba77decb59a1E.llvm.17720110283109806325.exit: ; preds = %2 - %19 = trunc i64 %.0.vec.extract to i32 - %20 = getelementptr inbounds [4 x i32], ptr %3, i64 0, i64 %16 - %21 = load i32, ptr %20, align 4, !noalias !3266, !noundef !25 + %17 = extractelement <4 x i32> %.sroa.0.0.copyload10, i64 0 + %18 = getelementptr inbounds [4 x i32], ptr %3, i64 0, i64 %14 + %19 = load i32, ptr %18, align 4, !noalias !3266, !noundef !25 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3), !noalias !3266 - %22 = zext i32 %21 to i64 - %23 = shl nuw i64 %22, 32 + %20 = zext i32 %19 to i64 + %21 = shl nuw i64 %20, 32 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4), !noalias !3276 - store i32 %19, ptr %4, align 4, !alias.scope !3279, !noalias !3282 - %24 = getelementptr inbounds i8, ptr %4, i64 4 - store i32 %9, ptr %24, align 4, !alias.scope !3279, !noalias !3282 - %25 = getelementptr inbounds i8, ptr %4, i64 8 - store i32 %10, ptr %25, align 4, !alias.scope !3279, !noalias !3282 - %26 = getelementptr inbounds i8, ptr %4, i64 12 - store i32 %12, ptr %26, align 4, !alias.scope !3279, !noalias !3282 - %27 = zext nneg i32 %6 to i64 - %28 = getelementptr inbounds [4 x i32], ptr %4, i64 0, i64 %27 - %29 = load i32, ptr %28, align 4, !noalias !3276, !noundef !25 + store i32 %17, ptr %4, align 4, !alias.scope !3279, !noalias !3282 + %22 = getelementptr inbounds i8, ptr %4, i64 4 + store i32 %8, ptr %22, align 4, !alias.scope !3279, !noalias !3282 + %23 = getelementptr inbounds i8, ptr %4, i64 8 + store i32 %9, ptr %23, align 4, !alias.scope !3279, !noalias !3282 + %24 = getelementptr inbounds i8, ptr %4, i64 12 + store i32 %10, ptr %24, align 4, !alias.scope !3279, !noalias !3282 + %25 = zext nneg i32 %6 to i64 + %26 = getelementptr inbounds [4 x i32], ptr %4, i64 0, i64 %25 + %27 = load i32, ptr %26, align 4, !noalias !3276, !noundef !25 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4), !noalias !3276 - %30 = zext i32 %29 to i64 - %31 = or disjoint i64 %23, %30 - ret i64 %31 + %28 = zext i32 %27 to i64 + %29 = or disjoint i64 %21, %28 + ret i64 %29 } ; Function Attrs: nonlazybind uwtable @@ -12826,53 +12807,49 @@ define hidden noundef i64 @_ZN11rand_chacha4guts16get_stream_param9impl_sse217hf %3 = alloca [4 x i32], align 4 %4 = alloca [4 x i32], align 4 %5 = getelementptr inbounds i8, ptr %0, i64 32 - %.sroa.0.0.copyload = load <2 x i64>, ptr %5, align 16 + %.sroa.0.0.copyload18 = load <4 x i32>, ptr %5, align 16 %6 = shl i32 %1, 1 %7 = or disjoint i32 %6, 1 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3), !noalias !3284 - %.0.vec.extract = extractelement <2 x i64> %.sroa.0.0.copyload, i64 0 - %.0.vec.extract10 = extractelement <2 x i64> %.sroa.0.0.copyload, i64 1 - %8 = lshr i64 %.0.vec.extract, 32 - %9 = trunc nuw i64 %8 to i32 - %10 = trunc i64 %.0.vec.extract10 to i32 - %11 = lshr i64 %.0.vec.extract10, 32 - %12 = trunc nuw i64 %11 to i32 - %13 = getelementptr inbounds i8, ptr %3, i64 4 - store i32 %9, ptr %13, align 4, !alias.scope !3289, !noalias !3292 - %14 = getelementptr inbounds i8, ptr %3, i64 8 - store i32 %10, ptr %14, align 4, !alias.scope !3289, !noalias !3292 - %15 = getelementptr inbounds i8, ptr %3, i64 12 - store i32 %12, ptr %15, align 4, !alias.scope !3289, !noalias !3292 - %16 = zext i32 %7 to i64 - %17 = icmp ult i32 %6, 4 - br i1 %17, label %_ZN11rand_chacha4guts16get_stream_param7fn_impl17h08baf2e4c3103d25E.llvm.17720110283109806325.exit, label %18, !prof !160 + %8 = extractelement <4 x i32> %.sroa.0.0.copyload18, i64 1 + %9 = extractelement <4 x i32> %.sroa.0.0.copyload18, i64 2 + %10 = extractelement <4 x i32> %.sroa.0.0.copyload18, i64 3 + %11 = getelementptr inbounds i8, ptr %3, i64 4 + store i32 %8, ptr %11, align 4, !alias.scope !3289, !noalias !3292 + %12 = getelementptr inbounds i8, ptr %3, i64 8 + store i32 %9, ptr %12, align 4, !alias.scope !3289, !noalias !3292 + %13 = getelementptr inbounds i8, ptr %3, i64 12 + store i32 %10, ptr %13, align 4, !alias.scope !3289, !noalias !3292 + %14 = zext i32 %7 to i64 + %15 = icmp ult i32 %6, 4 + br i1 %15, label %_ZN11rand_chacha4guts16get_stream_param7fn_impl17h08baf2e4c3103d25E.llvm.17720110283109806325.exit, label %16, !prof !160 -18: ; preds = %2 - tail call void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %16, i64 noundef 4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.71034ffa948b4d9b00e2d6c0756fe8d1.7.llvm.17720110283109806325) #39, !noalias !3284 +16: ; preds = %2 + tail call void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %14, i64 noundef 4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.71034ffa948b4d9b00e2d6c0756fe8d1.7.llvm.17720110283109806325) #39, !noalias !3284 unreachable _ZN11rand_chacha4guts16get_stream_param7fn_impl17h08baf2e4c3103d25E.llvm.17720110283109806325.exit: ; preds = %2 - %19 = trunc i64 %.0.vec.extract to i32 - %20 = getelementptr inbounds [4 x i32], ptr %3, i64 0, i64 %16 - %21 = load i32, ptr %20, align 4, !noalias !3284, !noundef !25 + %17 = extractelement <4 x i32> %.sroa.0.0.copyload18, i64 0 + %18 = getelementptr inbounds [4 x i32], ptr %3, i64 0, i64 %14 + %19 = load i32, ptr %18, align 4, !noalias !3284, !noundef !25 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3), !noalias !3284 - %22 = zext i32 %21 to i64 - %23 = shl nuw i64 %22, 32 + %20 = zext i32 %19 to i64 + %21 = shl nuw i64 %20, 32 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4), !noalias !3294 - store i32 %19, ptr %4, align 4, !alias.scope !3297, !noalias !3300 - %24 = getelementptr inbounds i8, ptr %4, i64 4 - store i32 %9, ptr %24, align 4, !alias.scope !3297, !noalias !3300 - %25 = getelementptr inbounds i8, ptr %4, i64 8 - store i32 %10, ptr %25, align 4, !alias.scope !3297, !noalias !3300 - %26 = getelementptr inbounds i8, ptr %4, i64 12 - store i32 %12, ptr %26, align 4, !alias.scope !3297, !noalias !3300 - %27 = zext nneg i32 %6 to i64 - %28 = getelementptr inbounds [4 x i32], ptr %4, i64 0, i64 %27 - %29 = load i32, ptr %28, align 4, !noalias !3294, !noundef !25 + store i32 %17, ptr %4, align 4, !alias.scope !3297, !noalias !3300 + %22 = getelementptr inbounds i8, ptr %4, i64 4 + store i32 %8, ptr %22, align 4, !alias.scope !3297, !noalias !3300 + %23 = getelementptr inbounds i8, ptr %4, i64 8 + store i32 %9, ptr %23, align 4, !alias.scope !3297, !noalias !3300 + %24 = getelementptr inbounds i8, ptr %4, i64 12 + store i32 %10, ptr %24, align 4, !alias.scope !3297, !noalias !3300 + %25 = zext nneg i32 %6 to i64 + %26 = getelementptr inbounds [4 x i32], ptr %4, i64 0, i64 %25 + %27 = load i32, ptr %26, align 4, !noalias !3294, !noundef !25 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4), !noalias !3294 - %30 = zext i32 %29 to i64 - %31 = or disjoint i64 %23, %30 - ret i64 %31 + %28 = zext i32 %27 to i64 + %29 = or disjoint i64 %21, %28 + ret i64 %29 } ; Function Attrs: nonlazybind uwtable