Thanks for using Compiler Explorer
Sponsors
Jakt
C++
Ada
Algol68
Analysis
Android Java
Android Kotlin
Assembly
C
C3
Carbon
C with Coccinelle
C++ with Coccinelle
C++ (Circle)
CIRCT
Clean
CMake
CMakeScript
COBOL
C++ for OpenCL
MLIR
Cppx
Cppx-Blue
Cppx-Gold
Cpp2-cppfront
Crystal
C#
CUDA C++
D
Dart
Elixir
Erlang
Fortran
F#
GLSL
Go
Haskell
HLSL
Hook
Hylo
IL
ispc
Java
Julia
Kotlin
LLVM IR
LLVM MIR
Modula-2
Mojo
Nim
Numba
Nix
Objective-C
Objective-C++
OCaml
Odin
OpenCL C
Pascal
Pony
PTX
Python
Racket
Raku
Ruby
Rust
Sail
Snowball
Scala
Slang
Solidity
Spice
SPIR-V
Swift
LLVM TableGen
Toit
Triton
TypeScript Native
V
Vala
Visual Basic
Vyper
WASM
Yul (Solidity IR)
Zig
Javascript
GIMPLE
Ygen
sway
llvm source #1
Output
Compile to binary object
Link to binary
Execute the code
Intel asm syntax
Demangle identifiers
Verbose demangling
Filters
Unused labels
Library functions
Directives
Comments
Horizontal whitespace
Debug intrinsics
Compiler
clang (assertions trunk)
clang (trunk)
clang 10.0.0
clang 10.0.1
clang 11.0.0
clang 11.0.1
clang 12.0.0
clang 12.0.1
clang 13.0.0
clang 14.0.0
clang 15.0.0
clang 16.0.0
clang 17.0.1
clang 18.1.0
clang 19.1.0
clang 20.1.0
clang 21.1.0
clang 4.0.1
clang 5.0.0
clang 6.0.0
clang 7.0.0
clang 8.0.0
clang 9.0.0
hexagon-clang 16.0.5
llc (assertions trunk)
llc (trunk)
llc 10.0.0
llc 10.0.1
llc 11.0.0
llc 11.0.1
llc 12.0.0
llc 12.0.1
llc 13.0.0
llc 14.0.0
llc 15.0.0
llc 16.0.0
llc 17.0.1
llc 18.1.0
llc 19.1.0
llc 20.1.0
llc 21.1.0
llc 3.2
llc 3.3
llc 3.9.1
llc 4.0.0
llc 4.0.1
llc 5.0.0
llc 6.0.0
llc 7.0.0
llc 8.0.0
llc 9.0.0
opt (assertions trunk)
opt (trunk)
opt 10.0.0
opt 10.0.1
opt 11.0.0
opt 11.0.1
opt 12.0.0
opt 12.0.1
opt 13.0.0
opt 14.0.0
opt 15.0.0
opt 16.0.0
opt 17.0.1
opt 18.1.0
opt 19.1.0
opt 20.1.0
opt 21.1.0
opt 3.2
opt 3.3
opt 3.9.1
opt 4.0.0
opt 4.0.1
opt 5.0.0
opt 6.0.0
opt 7.0.0
opt 8.0.0
opt 9.0.0
Options
Source code
; ModuleID = 'ld-temp.o' source_filename = "ld-temp.o" target datalayout = "e-p:64:64-p1:64:64-p2:32:32-p3:32:32-p4:64:64-p5:32:32-p6:32:32-p7:160:256:256:32-p8:128:128:128:48-p9:192:256:256:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-v2048:2048-n32:64-S32-A5-G1-ni:7:8:9" target triple = "amdgcn-amd-amdhsa" %"struct.__llvm_libc_22_0_0_git::DataEnvironment" = type { ptr } %class.LlvmLibcCharacterConverterUTF32To8Test_OneByte = type { %"class.__llvm_libc_22_0_0_git::testing::Test" } %"class.__llvm_libc_22_0_0_git::testing::Test" = type { ptr, ptr, ptr } %"class.__llvm_libc_22_0_0_git::FixedVector" = type { %"struct.__llvm_libc_22_0_0_git::cpp::array.6", i64 } %"struct.__llvm_libc_22_0_0_git::cpp::array.6" = type { [64 x %"struct.__llvm_libc_22_0_0_git::AtExitUnit"] } %"struct.__llvm_libc_22_0_0_git::AtExitUnit" = type { ptr, ptr } %"struct.rpc::Client" = type { %"struct.rpc::Process" } %"struct.rpc::Process" = type { i32, ptr, ptr, ptr, ptr, [128 x i32] } %"struct.__llvm_libc_22_0_0_git::testing::TestOptions" = type <{ ptr, i8, i8, [6 x i8] }> %"class.__llvm_libc_22_0_0_git::IntegerToString" = type { %"struct.__llvm_libc_22_0_0_git::cpp::array.59", i64 } %"struct.__llvm_libc_22_0_0_git::cpp::array.59" = type { [11 x i8] } %"struct.rpc::Header" = type { i64, i32 } %"struct.rpc::Buffer" = type { [8 x i64] } %"class.__llvm_libc_22_0_0_git::IntegerToString.21" = type { %"struct.__llvm_libc_22_0_0_git::cpp::array.17", i64 } %"struct.__llvm_libc_22_0_0_git::cpp::array.17" = type { [21 x i8] } %"struct.__llvm_libc_22_0_0_git::testing::TestLogger" = type { i8 } %"struct.rpc::Port" = type <{ ptr, i64, i32, i32, i32, i8, i8, [2 x i8] }> $_ZN22__llvm_libc_22_0_0_git7testing4TestD2Ev = comdat any $_ZN51LlvmLibcCharacterConverterUTF32To8Test_InvalidStateD0Ev = comdat any $_ZN22__llvm_libc_22_0_0_git7testing4Test5SetUpEv = comdat any $_ZN22__llvm_libc_22_0_0_git7testing4Test8TearDownEv = comdat any $_ZNK51LlvmLibcCharacterConverterUTF32To8Test_InvalidState7getNameEv = comdat any $_ZN60LlvmLibcCharacterConverterUTF32To8Test_CantPushMidConversionD0Ev = comdat any $_ZNK60LlvmLibcCharacterConverterUTF32To8Test_CantPushMidConversion7getNameEv = comdat any $_ZN47LlvmLibcCharacterConverterUTF32To8Test_FourByteD0Ev = comdat any $_ZNK47LlvmLibcCharacterConverterUTF32To8Test_FourByte7getNameEv = comdat any $_ZN48LlvmLibcCharacterConverterUTF32To8Test_ThreeByteD0Ev = comdat any $_ZNK48LlvmLibcCharacterConverterUTF32To8Test_ThreeByte7getNameEv = comdat any $_ZN46LlvmLibcCharacterConverterUTF32To8Test_TwoByteD0Ev = comdat any $_ZNK46LlvmLibcCharacterConverterUTF32To8Test_TwoByte7getNameEv = comdat any $_ZN46LlvmLibcCharacterConverterUTF32To8Test_OneByteD0Ev = comdat any $_ZNK46LlvmLibcCharacterConverterUTF32To8Test_OneByte7getNameEv = comdat any $_ZN22__llvm_libc_22_0_0_git7testing8internal4testIcEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE = comdat any $_ZN22__llvm_libc_22_0_0_git7testing8internal4testIiEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE = comdat any $_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE = comdat any $_ZN22__llvm_libc_22_0_0_git17stdc_at_exit_funcEPv = comdat any $_ZN3rpc6Client4openILj1660944385EEENS_4PortILb0EEEv = comdat any $_ZN3rpc4PortILb0EE5closeEv = comdat any $_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE = comdat any @_ZN22__llvm_libc_22_0_0_git3appE = internal unnamed_addr addrspace(1) global %"struct.__llvm_libc_22_0_0_git::DataEnvironment" zeroinitializer, align 8 @__fini_array_end = external hidden addrspace(1) global [0 x i64], align 8 @__fini_array_start = external hidden addrspace(1) global [0 x i64], align 8 @__init_array_end = external hidden addrspace(1) global [0 x i64], align 8 @__init_array_start = external hidden addrspace(1) global [0 x i64], align 8 @llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @_GLOBAL__sub_I_utf32_to_8_test.cpp, ptr null }] @LlvmLibcCharacterConverterUTF32To8Test_OneByte_Instance = internal addrspace(1) global %class.LlvmLibcCharacterConverterUTF32To8Test_OneByte zeroinitializer, align 8 @.str = private unnamed_addr addrspace(4) constant [12 x i8] c"cr.isFull()\00", align 1 @.str.1 = private unnamed_addr addrspace(4) constant [5 x i8] c"true\00", align 1 @.str.2 = private unnamed_addr addrspace(4) constant [82 x i8] c"/home/janplehr/git/llvm-project/libc/test/src/__support/wchar/utf32_to_8_test.cpp\00", align 1 @.str.3 = private unnamed_addr addrspace(4) constant [19 x i8] c"popped.has_value()\00", align 1 @.str.4 = private unnamed_addr addrspace(4) constant [34 x i8] c"static_cast<char>(popped.value())\00", align 1 @.str.5 = private unnamed_addr addrspace(4) constant [4 x i8] c"'A'\00", align 1 @.str.6 = private unnamed_addr addrspace(4) constant [13 x i8] c"cr.isEmpty()\00", align 1 @.str.7 = private unnamed_addr addrspace(4) constant [4 x i8] c"'B'\00", align 1 @.str.8 = private unnamed_addr addrspace(4) constant [6 x i8] c"false\00", align 1 @LlvmLibcCharacterConverterUTF32To8Test_TwoByte_Instance = internal addrspace(1) global %class.LlvmLibcCharacterConverterUTF32To8Test_OneByte zeroinitializer, align 8 @.str.10 = private unnamed_addr addrspace(4) constant [33 x i8] c"static_cast<int>(popped.value())\00", align 1 @.str.11 = private unnamed_addr addrspace(4) constant [5 x i8] c"0xc3\00", align 1 @.str.12 = private unnamed_addr addrspace(4) constant [14 x i8] c"!cr.isEmpty()\00", align 1 @.str.13 = private unnamed_addr addrspace(4) constant [5 x i8] c"0xbf\00", align 1 @.str.14 = private unnamed_addr addrspace(4) constant [5 x i8] c"0xd6\00", align 1 @.str.15 = private unnamed_addr addrspace(4) constant [5 x i8] c"0x8e\00", align 1 @LlvmLibcCharacterConverterUTF32To8Test_ThreeByte_Instance = internal addrspace(1) global %class.LlvmLibcCharacterConverterUTF32To8Test_OneByte zeroinitializer, align 8 @.str.17 = private unnamed_addr addrspace(4) constant [5 x i8] c"0xea\00", align 1 @.str.18 = private unnamed_addr addrspace(4) constant [5 x i8] c"0xb0\00", align 1 @.str.19 = private unnamed_addr addrspace(4) constant [5 x i8] c"0x95\00", align 1 @.str.20 = private unnamed_addr addrspace(4) constant [5 x i8] c"0xe2\00", align 1 @.str.21 = private unnamed_addr addrspace(4) constant [5 x i8] c"0x99\00", align 1 @.str.22 = private unnamed_addr addrspace(4) constant [5 x i8] c"0xbb\00", align 1 @LlvmLibcCharacterConverterUTF32To8Test_FourByte_Instance = internal addrspace(1) global %class.LlvmLibcCharacterConverterUTF32To8Test_OneByte zeroinitializer, align 8 @.str.24 = private unnamed_addr addrspace(4) constant [5 x i8] c"0xf0\00", align 1 @.str.25 = private unnamed_addr addrspace(4) constant [5 x i8] c"0x9f\00", align 1 @.str.26 = private unnamed_addr addrspace(4) constant [5 x i8] c"0xa4\00", align 1 @.str.27 = private unnamed_addr addrspace(4) constant [5 x i8] c"0xa1\00", align 1 @.str.28 = private unnamed_addr addrspace(4) constant [5 x i8] c"0x92\00", align 1 @.str.29 = private unnamed_addr addrspace(4) constant [5 x i8] c"0x84\00", align 1 @LlvmLibcCharacterConverterUTF32To8Test_CantPushMidConversion_Instance = internal addrspace(1) global %class.LlvmLibcCharacterConverterUTF32To8Test_OneByte zeroinitializer, align 8 @.str.31 = private unnamed_addr addrspace(4) constant [15 x i8] c"cr.push(utf32)\00", align 1 @.str.32 = private unnamed_addr addrspace(4) constant [2 x i8] c"0\00", align 1 @.str.33 = private unnamed_addr addrspace(4) constant [4 x i8] c"err\00", align 1 @.str.34 = private unnamed_addr addrspace(4) constant [3 x i8] c"-1\00", align 1 @LlvmLibcCharacterConverterUTF32To8Test_InvalidState_Instance = internal addrspace(1) global %class.LlvmLibcCharacterConverterUTF32To8Test_OneByte zeroinitializer, align 8 @.str.36 = private unnamed_addr addrspace(4) constant [18 x i8] c"c1.isValidState()\00", align 1 @.str.37 = private unnamed_addr addrspace(4) constant [18 x i8] c"c2.isValidState()\00", align 1 @.str.38 = private unnamed_addr addrspace(4) constant [18 x i8] c"c3.isValidState()\00", align 1 @.str.39 = private unnamed_addr addrspace(4) constant [18 x i8] c"c4.isValidState()\00", align 1 @.str.40 = private unnamed_addr addrspace(4) constant [18 x i8] c"c5.isValidState()\00", align 1 @.str.41 = private unnamed_addr addrspace(4) constant [18 x i8] c"c6.isValidState()\00", align 1 @.str.42 = private unnamed_addr addrspace(4) constant [18 x i8] c"c7.isValidState()\00", align 1 @.str.43 = private unnamed_addr addrspace(4) constant [18 x i8] c"c8.isValidState()\00", align 1 @.str.44 = private unnamed_addr addrspace(4) constant [18 x i8] c"c9.isValidState()\00", align 1 @.str.45 = private unnamed_addr addrspace(4) constant [19 x i8] c"c10.isValidState()\00", align 1 @.str.46 = private unnamed_addr addrspace(4) constant [19 x i8] c"c11.isValidState()\00", align 1 @_ZTV46LlvmLibcCharacterConverterUTF32To8Test_OneByte = internal unnamed_addr addrspace(1) constant { [8 x ptr addrspace(1)] } { [8 x ptr addrspace(1)] [ptr addrspace(1) null, ptr addrspace(1) null, ptr addrspace(1) addrspacecast (ptr @_ZN22__llvm_libc_22_0_0_git7testing4TestD2Ev to ptr addrspace(1)), ptr addrspace(1) addrspacecast (ptr @_ZN46LlvmLibcCharacterConverterUTF32To8Test_OneByteD0Ev to ptr addrspace(1)), ptr addrspace(1) addrspacecast (ptr @_ZN22__llvm_libc_22_0_0_git7testing4Test5SetUpEv to ptr addrspace(1)), ptr addrspace(1) addrspacecast (ptr @_ZN22__llvm_libc_22_0_0_git7testing4Test8TearDownEv to ptr addrspace(1)), ptr addrspace(1) addrspacecast (ptr @_ZN46LlvmLibcCharacterConverterUTF32To8Test_OneByte3RunEv to ptr addrspace(1)), ptr addrspace(1) addrspacecast (ptr @_ZNK46LlvmLibcCharacterConverterUTF32To8Test_OneByte7getNameEv to ptr addrspace(1))] }, align 8, !type !0, !type !1, !type !2, !type !3, !type !4, !type !5, !type !6, !type !7, !type !8, !type !9 @_ZTV46LlvmLibcCharacterConverterUTF32To8Test_TwoByte = internal unnamed_addr addrspace(1) constant { [8 x ptr addrspace(1)] } { [8 x ptr addrspace(1)] [ptr addrspace(1) null, ptr addrspace(1) null, ptr addrspace(1) addrspacecast (ptr @_ZN22__llvm_libc_22_0_0_git7testing4TestD2Ev to ptr addrspace(1)), ptr addrspace(1) addrspacecast (ptr @_ZN46LlvmLibcCharacterConverterUTF32To8Test_TwoByteD0Ev to ptr addrspace(1)), ptr addrspace(1) addrspacecast (ptr @_ZN22__llvm_libc_22_0_0_git7testing4Test5SetUpEv to ptr addrspace(1)), ptr addrspace(1) addrspacecast (ptr @_ZN22__llvm_libc_22_0_0_git7testing4Test8TearDownEv to ptr addrspace(1)), ptr addrspace(1) addrspacecast (ptr @_ZN46LlvmLibcCharacterConverterUTF32To8Test_TwoByte3RunEv to ptr addrspace(1)), ptr addrspace(1) addrspacecast (ptr @_ZNK46LlvmLibcCharacterConverterUTF32To8Test_TwoByte7getNameEv to ptr addrspace(1))] }, align 8, !type !10, !type !11, !type !12, !type !13, !type !14, !type !5, !type !6, !type !7, !type !8, !type !9 @_ZTV48LlvmLibcCharacterConverterUTF32To8Test_ThreeByte = internal unnamed_addr addrspace(1) constant { [8 x ptr addrspace(1)] } { [8 x ptr addrspace(1)] [ptr addrspace(1) null, ptr addrspace(1) null, ptr addrspace(1) addrspacecast (ptr @_ZN22__llvm_libc_22_0_0_git7testing4TestD2Ev to ptr addrspace(1)), ptr addrspace(1) addrspacecast (ptr @_ZN48LlvmLibcCharacterConverterUTF32To8Test_ThreeByteD0Ev to ptr addrspace(1)), ptr addrspace(1) addrspacecast (ptr @_ZN22__llvm_libc_22_0_0_git7testing4Test5SetUpEv to ptr addrspace(1)), ptr addrspace(1) addrspacecast (ptr @_ZN22__llvm_libc_22_0_0_git7testing4Test8TearDownEv to ptr addrspace(1)), ptr addrspace(1) addrspacecast (ptr @_ZN48LlvmLibcCharacterConverterUTF32To8Test_ThreeByte3RunEv to ptr addrspace(1)), ptr addrspace(1) addrspacecast (ptr @_ZNK48LlvmLibcCharacterConverterUTF32To8Test_ThreeByte7getNameEv to ptr addrspace(1))] }, align 8, !type !15, !type !16, !type !17, !type !18, !type !19, !type !5, !type !6, !type !7, !type !8, !type !9 @_ZTV47LlvmLibcCharacterConverterUTF32To8Test_FourByte = internal unnamed_addr addrspace(1) constant { [8 x ptr addrspace(1)] } { [8 x ptr addrspace(1)] [ptr addrspace(1) null, ptr addrspace(1) null, ptr addrspace(1) addrspacecast (ptr @_ZN22__llvm_libc_22_0_0_git7testing4TestD2Ev to ptr addrspace(1)), ptr addrspace(1) addrspacecast (ptr @_ZN47LlvmLibcCharacterConverterUTF32To8Test_FourByteD0Ev to ptr addrspace(1)), ptr addrspace(1) addrspacecast (ptr @_ZN22__llvm_libc_22_0_0_git7testing4Test5SetUpEv to ptr addrspace(1)), ptr addrspace(1) addrspacecast (ptr @_ZN22__llvm_libc_22_0_0_git7testing4Test8TearDownEv to ptr addrspace(1)), ptr addrspace(1) addrspacecast (ptr @_ZN47LlvmLibcCharacterConverterUTF32To8Test_FourByte3RunEv to ptr addrspace(1)), ptr addrspace(1) addrspacecast (ptr @_ZNK47LlvmLibcCharacterConverterUTF32To8Test_FourByte7getNameEv to ptr addrspace(1))] }, align 8, !type !20, !type !21, !type !22, !type !23, !type !24, !type !5, !type !6, !type !7, !type !8, !type !9 @_ZTV60LlvmLibcCharacterConverterUTF32To8Test_CantPushMidConversion = internal unnamed_addr addrspace(1) constant { [8 x ptr addrspace(1)] } { [8 x ptr addrspace(1)] [ptr addrspace(1) null, ptr addrspace(1) null, ptr addrspace(1) addrspacecast (ptr @_ZN22__llvm_libc_22_0_0_git7testing4TestD2Ev to ptr addrspace(1)), ptr addrspace(1) addrspacecast (ptr @_ZN60LlvmLibcCharacterConverterUTF32To8Test_CantPushMidConversionD0Ev to ptr addrspace(1)), ptr addrspace(1) addrspacecast (ptr @_ZN22__llvm_libc_22_0_0_git7testing4Test5SetUpEv to ptr addrspace(1)), ptr addrspace(1) addrspacecast (ptr @_ZN22__llvm_libc_22_0_0_git7testing4Test8TearDownEv to ptr addrspace(1)), ptr addrspace(1) addrspacecast (ptr @_ZN60LlvmLibcCharacterConverterUTF32To8Test_CantPushMidConversion3RunEv to ptr addrspace(1)), ptr addrspace(1) addrspacecast (ptr @_ZNK60LlvmLibcCharacterConverterUTF32To8Test_CantPushMidConversion7getNameEv to ptr addrspace(1))] }, align 8, !type !25, !type !26, !type !27, !type !28, !type !29, !type !5, !type !6, !type !7, !type !8, !type !9 @_ZTV51LlvmLibcCharacterConverterUTF32To8Test_InvalidState = internal unnamed_addr addrspace(1) constant { [8 x ptr addrspace(1)] } { [8 x ptr addrspace(1)] [ptr addrspace(1) null, ptr addrspace(1) null, ptr addrspace(1) addrspacecast (ptr @_ZN22__llvm_libc_22_0_0_git7testing4TestD2Ev to ptr addrspace(1)), ptr addrspace(1) addrspacecast (ptr @_ZN51LlvmLibcCharacterConverterUTF32To8Test_InvalidStateD0Ev to ptr addrspace(1)), ptr addrspace(1) addrspacecast (ptr @_ZN22__llvm_libc_22_0_0_git7testing4Test5SetUpEv to ptr addrspace(1)), ptr addrspace(1) addrspacecast (ptr @_ZN22__llvm_libc_22_0_0_git7testing4Test8TearDownEv to ptr addrspace(1)), ptr addrspace(1) addrspacecast (ptr @_ZN51LlvmLibcCharacterConverterUTF32To8Test_InvalidState3RunEv to ptr addrspace(1)), ptr addrspace(1) addrspacecast (ptr @_ZNK51LlvmLibcCharacterConverterUTF32To8Test_InvalidState7getNameEv to ptr addrspace(1))] }, align 8, !type !30, !type !31, !type !32, !type !33, !type !34, !type !5, !type !6, !type !7, !type !8, !type !9 @.str.47 = private unnamed_addr addrspace(4) constant [47 x i8] c"LlvmLibcCharacterConverterUTF32To8Test.OneByte\00", align 1 @.str.48 = private unnamed_addr addrspace(4) constant [47 x i8] c"LlvmLibcCharacterConverterUTF32To8Test.TwoByte\00", align 1 @.str.49 = private unnamed_addr addrspace(4) constant [49 x i8] c"LlvmLibcCharacterConverterUTF32To8Test.ThreeByte\00", align 1 @.str.50 = private unnamed_addr addrspace(4) constant [48 x i8] c"LlvmLibcCharacterConverterUTF32To8Test.FourByte\00", align 1 @.str.51 = private unnamed_addr addrspace(4) constant [61 x i8] c"LlvmLibcCharacterConverterUTF32To8Test.CantPushMidConversion\00", align 1 @.str.52 = private unnamed_addr addrspace(4) constant [52 x i8] c"LlvmLibcCharacterConverterUTF32To8Test.InvalidState\00", align 1 @.str.9 = private unnamed_addr addrspace(4) constant [9 x i8] c"equal to\00", align 1 @.str.6.10 = private unnamed_addr addrspace(4) constant [2 x i8] c":\00", align 1 @.str.7.11 = private unnamed_addr addrspace(4) constant [11 x i8] c": FAILURE\0A\00", align 1 @_ZN22__llvm_libc_22_0_0_git7testing4Test5StartE = internal unnamed_addr addrspace(1) global ptr null, align 8 @_ZN22__llvm_libc_22_0_0_git7testing4Test3EndE = internal unnamed_addr addrspace(1) global ptr null, align 8 @.str.8.26 = private unnamed_addr addrspace(4) constant [6 x i8] c"\1B[32m\00", align 1 @.str.9.27 = private unnamed_addr addrspace(4) constant [1 x i8] zeroinitializer, align 1 @.str.10.28 = private unnamed_addr addrspace(4) constant [6 x i8] c"\1B[31m\00", align 1 @.str.11.29 = private unnamed_addr addrspace(4) constant [5 x i8] c"\1B[0m\00", align 1 @.str.12.30 = private unnamed_addr addrspace(4) constant [14 x i8] c"[==========] \00", align 1 @.str.13.31 = private unnamed_addr addrspace(4) constant [9 x i8] c"Running \00", align 1 @.str.14.32 = private unnamed_addr addrspace(4) constant [6 x i8] c" test\00", align 1 @.str.15.33 = private unnamed_addr addrspace(4) constant [2 x i8] c"s\00", align 1 @.str.16 = private unnamed_addr addrspace(4) constant [21 x i8] c" from 1 test suite.\0A\00", align 1 @.str.17.34 = private unnamed_addr addrspace(4) constant [14 x i8] c"[ RUN ] \00", align 1 @.str.18.35 = private unnamed_addr addrspace(4) constant [14 x i8] c"[ FAILED ] \00", align 1 @.str.19.36 = private unnamed_addr addrspace(4) constant [14 x i8] c"[ OK ] \00", align 1 @.str.20.37 = private unnamed_addr addrspace(4) constant [3 x i8] c" (\00", align 1 @.str.21.38 = private unnamed_addr addrspace(4) constant [26 x i8] c"unknown - try rerunning)\0A\00", align 1 @.str.22.39 = private unnamed_addr addrspace(4) constant [6 x i8] c" ms)\0A\00", align 1 @.str.23 = private unnamed_addr addrspace(4) constant [6 x i8] c" us)\0A\00", align 1 @.str.24.40 = private unnamed_addr addrspace(4) constant [6 x i8] c" ns)\0A\00", align 1 @.str.25.41 = private unnamed_addr addrspace(4) constant [5 x i8] c"Ran \00", align 1 @.str.26.42 = private unnamed_addr addrspace(4) constant [9 x i8] c" tests. \00", align 1 @.str.27.43 = private unnamed_addr addrspace(4) constant [8 x i8] c" PASS: \00", align 1 @.str.28.44 = private unnamed_addr addrspace(4) constant [8 x i8] c" FAIL: \00", align 1 @.str.29.45 = private unnamed_addr addrspace(4) constant [15 x i8] c"No tests run.\0A\00", align 1 @.str.30 = private unnamed_addr addrspace(4) constant [22 x i8] c"No matching test for \00", align 1 @.str.34.12 = private unnamed_addr addrspace(4) constant [11 x i8] c"Expected: \00", align 1 @.str.35 = private unnamed_addr addrspace(4) constant [11 x i8] c"Which is: \00", align 1 @.str.36.13 = private unnamed_addr addrspace(4) constant [7 x i8] c"To be \00", align 1 @.str.37.14 = private unnamed_addr addrspace(4) constant [3 x i8] c": \00", align 1 @_ZN22__llvm_libc_22_0_0_git7testing4argvE = internal unnamed_addr addrspace(1) global ptr null, align 8 @_ZN22__llvm_libc_22_0_0_git7testing4envpE = internal unnamed_addr addrspace(1) global ptr null, align 8 @.str.53 = private unnamed_addr addrspace(4) constant [17 x i8] c"--gtest_color=no\00", align 1 @.str.1.54 = private unnamed_addr addrspace(4) constant [19 x i8] c"--gtest_print_time\00", align 1 @.str.2.55 = private unnamed_addr addrspace(4) constant [9 x i8] c"--gtest_\00", align 1 @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE = internal addrspace(4) constant i8 0, comdat, align 1 @_ZN12_GLOBAL__N_13ptrE = internal unnamed_addr addrspace(1) global ptr addrspacecast (ptr addrspace(1) @_ZN12_GLOBAL__N_16memoryE to ptr), align 8 @_ZN12_GLOBAL__N_16memoryE = internal addrspace(1) global [65336 x i8] zeroinitializer, align 8 @_ZN22__llvm_libc_22_0_0_git16atexit_callbacksE = internal unnamed_addr addrspace(1) global %"class.__llvm_libc_22_0_0_git::FixedVector" zeroinitializer, align 8 @__llvm_rpc_client = protected addrspace(1) global %"struct.rpc::Client" zeroinitializer, align 8 @__llvm_libc_clock_freq = protected local_unnamed_addr addrspace(4) global i64 100000000, align 8 ; Function Attrs: convergent mustprogress nounwind define protected amdgpu_kernel void @_begin(i32 noundef %argc, ptr noundef %argv, ptr noundef %env) local_unnamed_addr #0 { entry: %_begin.kernarg.segment = call nonnull align 16 dereferenceable(280) ptr addrspace(4) @llvm.amdgcn.kernarg.segment.ptr() %argc.kernarg.offset2 = bitcast ptr addrspace(4) %_begin.kernarg.segment to ptr addrspace(4), !amdgpu.uniform !42 %argc.load = load i32, ptr addrspace(4) %argc.kernarg.offset2, align 16, !invariant.load !42, !noundef !42 %argv.kernarg.offset = getelementptr inbounds i8, ptr addrspace(4) %_begin.kernarg.segment, i64 8, !amdgpu.uniform !42 %0 = load <2 x i64>, ptr addrspace(4) %argv.kernarg.offset, align 8, !invariant.load !42 %env.load4 = extractelement <2 x i64> %0, i32 1 %1 = inttoptr i64 %env.load4 to ptr %2 = ptrtoint ptr %1 to i64 store atomic i64 %2, ptr addrspace(1) @_ZN22__llvm_libc_22_0_0_git3appE monotonic, align 8 %3 = load i64, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @_ZN22__llvm_libc_22_0_0_git16atexit_callbacksE, i64 1024), align 8, !tbaa !43 %cmp.i.not.i.i = icmp ne i64 %3, 64 br i1 %cmp.i.not.i.i, label %if.end.i.i.i, label %_ZN22__llvm_libc_22_0_0_git6atexitEPFvvE.exit, !amdgpu.uniform !42 if.end.i.i.i: ; preds = %entry %inc.i.i.i = add i64 %3, 1 %arrayidx.i.i.i.i = getelementptr inbounds %"struct.__llvm_libc_22_0_0_git::AtExitUnit", ptr addrspace(1) @_ZN22__llvm_libc_22_0_0_git16atexit_callbacksE, i64 %3 store <2 x i64> <i64 ptrtoint (ptr @_ZN22__llvm_libc_22_0_0_git17stdc_at_exit_funcEPv to i64), i64 ptrtoint (ptr @_ZN22__llvm_libc_22_0_0_gitL25call_fini_array_callbacksEv to i64)>, ptr addrspace(1) %arrayidx.i.i.i.i, align 8, !tbaa !49 store i64 %inc.i.i.i, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @_ZN22__llvm_libc_22_0_0_git16atexit_callbacksE, i64 1024), align 8, !tbaa !43 br label %_ZN22__llvm_libc_22_0_0_git6atexitEPFvvE.exit, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git6atexitEPFvvE.exit: ; preds = %if.end.i.i.i, %entry %cmp3.not.i = icmp ne i64 sub (i64 ptrtoint (ptr addrspacecast (ptr addrspace(1) @__init_array_end to ptr) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(1) @__init_array_start to ptr) to i64)), 0 br i1 %cmp3.not.i, label %for.body.preheader.i, label %Flow5, !amdgpu.uniform !42 for.body.preheader.i: ; preds = %_ZN22__llvm_libc_22_0_0_git6atexitEPFvvE.exit %argv.load3 = extractelement <2 x i64> %0, i32 0 %4 = inttoptr i64 %argv.load3 to ptr %sub.ptr.div.i = ashr exact i64 sub (i64 ptrtoint (ptr addrspacecast (ptr addrspace(1) @__init_array_end to ptr) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(1) @__init_array_start to ptr) to i64)), 3 %umax.i = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i, i64 1) br label %for.body.i, !amdgpu.uniform !42 Flow5: ; preds = %Flow, %_ZN22__llvm_libc_22_0_0_git6atexitEPFvvE.exit br label %_ZN22__llvm_libc_22_0_0_gitL25call_init_array_callbacksEiPPcS1_.exit, !amdgpu.uniform !42 for.body.i: ; preds = %for.body.preheader.i, %for.body.i %lsr.iv1 = phi ptr addrspace(1) [ %scevgep, %for.body.i ], [ @__init_array_start, %for.body.preheader.i ], !amdgpu.uniform !42 %lsr.iv = phi i64 [ %lsr.iv.next, %for.body.i ], [ %umax.i, %for.body.preheader.i ] %5 = load i64, ptr addrspace(1) %lsr.iv1, align 8, !tbaa !51 %6 = inttoptr i64 %5 to ptr tail call void %6(i32 noundef %argc.load, ptr noundef %4, ptr noundef %1) #33 %lsr.iv.next = add i64 %lsr.iv, -1 %scevgep = getelementptr i8, ptr addrspace(1) %lsr.iv1, i64 8 %exitcond.not.i = icmp eq i64 %lsr.iv.next, 0 br i1 %exitcond.not.i, label %Flow, label %for.body.i, !amdgpu.uniform !42 Flow: ; preds = %for.body.i br label %Flow5, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_gitL25call_init_array_callbacksEiPPcS1_.exit: ; preds = %Flow5 ret void } ; Function Attrs: convergent mustprogress nounwind define internal void @_ZN22__llvm_libc_22_0_0_gitL25call_fini_array_callbacksEv() #1 { entry: %cmp.not3 = icmp ne i64 sub (i64 ptrtoint (ptr addrspacecast (ptr addrspace(1) @__fini_array_end to ptr) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(1) @__fini_array_start to ptr) to i64)), 0 br i1 %cmp.not3, label %for.body.preheader, label %Flow2, !amdgpu.uniform !42 for.body.preheader: ; preds = %entry %sub.ptr.div = ashr exact i64 sub (i64 ptrtoint (ptr addrspacecast (ptr addrspace(1) @__fini_array_end to ptr) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(1) @__fini_array_start to ptr) to i64)), 3 br label %for.body, !amdgpu.uniform !42 Flow: ; preds = %for.body br label %Flow2, !amdgpu.uniform !42 for.cond.cleanup: ; preds = %Flow2 ret void Flow2: ; preds = %Flow, %entry br label %for.cond.cleanup, !amdgpu.uniform !42 for.body: ; preds = %for.body.preheader, %for.body %lsr.iv = phi ptr addrspace(1) [ %scevgep1, %for.body ], [ getelementptr (i8, ptr addrspace(1) @__fini_array_start, i64 add (i64 sub (i64 ptrtoint (ptr addrspacecast (ptr addrspace(1) @__fini_array_end to ptr) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(1) @__fini_array_start to ptr) to i64)), i64 -8)), %for.body.preheader ], !amdgpu.uniform !42 %i.04 = phi i64 [ %dec, %for.body ], [ %sub.ptr.div, %for.body.preheader ] %0 = load i64, ptr addrspace(1) %lsr.iv, align 8, !tbaa !51 %1 = inttoptr i64 %0 to ptr tail call void %1() #33 %dec = add i64 %i.04, -1 %scevgep1 = getelementptr i8, ptr addrspace(1) %lsr.iv, i64 -8 %cmp.not = icmp eq i64 %dec, 0 br i1 %cmp.not, label %Flow, label %for.body, !amdgpu.uniform !42 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umax.i64(i64, i64) #2 ; Function Attrs: convergent mustprogress nounwind define protected amdgpu_kernel void @_start(i32 noundef %argc, ptr noundef %argv, ptr noundef %envp, ptr noundef captures(none) %ret) local_unnamed_addr #3 { entry: %_start.kernarg.segment = call nonnull align 16 dereferenceable(288) ptr addrspace(4) @llvm.amdgcn.kernarg.segment.ptr() %argc.kernarg.offset35 = bitcast ptr addrspace(4) %_start.kernarg.segment to ptr addrspace(4), !amdgpu.uniform !42 %argc.load = load i32, ptr addrspace(4) %argc.kernarg.offset35, align 16, !invariant.load !42, !noundef !42 %argv.kernarg.offset = getelementptr inbounds i8, ptr addrspace(4) %_start.kernarg.segment, i64 8, !amdgpu.uniform !42 %0 = load <3 x i64>, ptr addrspace(4) %argv.kernarg.offset, align 8, !invariant.load !42 %argv.load36 = extractelement <3 x i64> %0, i32 0 %1 = inttoptr i64 %argv.load36 to ptr %envp.load37 = extractelement <3 x i64> %0, i32 1 %2 = inttoptr i64 %envp.load37 to ptr %ref.tmp.i = alloca %"struct.__llvm_libc_22_0_0_git::testing::TestOptions", align 8, addrspace(5) store ptr %1, ptr addrspace(1) @_ZN22__llvm_libc_22_0_0_git7testing4argvE, align 8, !tbaa !52 store ptr %2, ptr addrspace(1) @_ZN22__llvm_libc_22_0_0_git7testing4envpE, align 8, !tbaa !52 call void @llvm.lifetime.start.p5(ptr addrspace(5) %ref.tmp.i) #34 %cmp67.i.i = icmp sgt i32 %argc.load, 1 br i1 %cmp67.i.i, label %for.body.i.i.preheader, label %Flow43, !amdgpu.uniform !42 for.body.i.i.preheader: ; preds = %entry br label %for.body.i.i, !amdgpu.uniform !42 Flow43: ; preds = %Flow42, %entry %3 = phi i8 [ %retval.sroa.6.1.i.i.lcssa, %Flow42 ], [ 0, %entry ] %4 = phi i8 [ %retval.sroa.3.1.i.i.lcssa, %Flow42 ], [ 1, %entry ] %5 = phi ptr [ %retval.sroa.0.1.i.i.lcssa, %Flow42 ], [ null, %entry ] br label %main.exit, !amdgpu.uniform !42 for.body.i.i: ; preds = %for.body.i.i.preheader, %cleanup.i.i %i.071.i.i = phi i32 [ %inc.i.i, %cleanup.i.i ], [ 1, %for.body.i.i.preheader ] %retval.sroa.6.070.i.i = phi i8 [ %retval.sroa.6.1.i.i, %cleanup.i.i ], [ 0, %for.body.i.i.preheader ] %retval.sroa.3.069.i.i = phi i8 [ %retval.sroa.3.1.i.i, %cleanup.i.i ], [ 1, %for.body.i.i.preheader ] %retval.sroa.0.068.i.i = phi ptr [ %retval.sroa.0.1.i.i, %cleanup.i.i ], [ null, %for.body.i.i.preheader ] %6 = addrspacecast ptr %1 to ptr addrspace(1) %idxprom.i.i = zext nneg i32 %i.071.i.i to i64 %arrayidx.i.i = getelementptr inbounds ptr, ptr addrspace(1) %6, i64 %idxprom.i.i, !amdgpu.uniform !42 %7 = load ptr, ptr addrspace(1) %arrayidx.i.i, align 8, !tbaa !55, !amdgpu.noclobber !42 %scevgep = getelementptr i8, ptr %7, i64 -1 br label %for.cond.i.i.i.i, !amdgpu.uniform !42 for.cond.i.i.i.i: ; preds = %for.body.i.i, %for.cond.i.i.i.i %phi.broken = phi i64 [ 0, %for.body.i.i ], [ %9, %for.cond.i.i.i.i ] %lsr.iv = phi ptr [ %scevgep23, %for.cond.i.i.i.i ], [ %scevgep, %for.body.i.i ] %scevgep23 = getelementptr i8, ptr %lsr.iv, i64 1, !amdgpu.uniform !42 %8 = load i8, ptr %scevgep23, align 1, !tbaa !57 %cmp.i.i.i.i = icmp eq i8 %8, 0 %9 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.i.i.i, i64 %phi.broken) %10 = call i1 @llvm.amdgcn.loop.i64(i64 %9) br i1 %10, label %_ZN22__llvm_libc_22_0_0_git3cpp11string_viewC2EPKc.exit.i.i, label %for.cond.i.i.i.i _ZN22__llvm_libc_22_0_0_git3cpp11string_viewC2EPKc.exit.i.i: ; preds = %for.cond.i.i.i.i %scevgep23.lcssa = phi ptr [ %scevgep23, %for.cond.i.i.i.i ] %.lcssa47 = phi i64 [ %9, %for.cond.i.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa47) %sub.ptr.lhs.cast.i.i.i.i = ptrtoint ptr %scevgep23.lcssa to i64 %sub.ptr.rhs.cast.i.i.i.i = ptrtoint ptr %7 to i64 %sub.ptr.sub.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i, %sub.ptr.rhs.cast.i.i.i.i %cmp.i.i26.i.i = icmp eq i64 %sub.ptr.sub.i.i.i.i, sub (i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.53, i64 16) to ptr) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.53 to ptr) to i64)) %11 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i26.i.i) %12 = extractvalue { i1, i64 } %11, 0 %13 = extractvalue { i1, i64 } %11, 1 br i1 %12, label %for.body.i.i.i.i.i.preheader, label %Flow41 for.body.i.i.i.i.i.preheader: ; preds = %_ZN22__llvm_libc_22_0_0_git3cpp11string_viewC2EPKc.exit.i.i br label %for.body.i.i.i.i.i, !amdgpu.uniform !42 Flow41: ; preds = %_ZN22__llvm_libc_22_0_0_git3cpp11string_view13compareMemoryEPKcS3_m.exit.loopexit.i.i.i.i, %_ZN22__llvm_libc_22_0_0_git3cpp11string_viewC2EPKc.exit.i.i %14 = phi i1 [ %22, %_ZN22__llvm_libc_22_0_0_git3cpp11string_view13compareMemoryEPKcS3_m.exit.loopexit.i.i.i.i ], [ true, %_ZN22__llvm_libc_22_0_0_git3cpp11string_viewC2EPKc.exit.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %13) %15 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %14) %16 = extractvalue { i1, i64 } %15, 0 %17 = extractvalue { i1, i64 } %15, 1 br i1 %16, label %if.else.i.i, label %cleanup.i.i for.body.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i.preheader, %for.body.i.i.i.i.i %phi.broken44 = phi i64 [ 0, %for.body.i.i.i.i.i.preheader ], [ %20, %for.body.i.i.i.i.i ] %lsr.iv27 = phi ptr [ %scevgep28, %for.body.i.i.i.i.i ], [ %7, %for.body.i.i.i.i.i.preheader ], !amdgpu.uniform !42 %lsr.iv25 = phi ptr addrspace(4) [ %scevgep26, %for.body.i.i.i.i.i ], [ @.str.53, %for.body.i.i.i.i.i.preheader ], !amdgpu.uniform !42 %lsr.iv24 = phi i64 [ %lsr.iv.next, %for.body.i.i.i.i.i ], [ sub (i64 add (i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.53, i64 16) to ptr) to i64), i64 -1), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.53 to ptr) to i64)), %for.body.i.i.i.i.i.preheader ] %18 = load i8, ptr %lsr.iv27, align 1, !tbaa !57 %19 = load i8, ptr addrspace(4) %lsr.iv25, align 1, !tbaa !57 %tobool.not.i.i.i.i.i = icmp ne i8 %18, %19 %exitcond.not.i.i.i.i.i = icmp eq i64 %lsr.iv24, 0 %or.cond.i.i.i.i.i = select i1 %tobool.not.i.i.i.i.i, i1 true, i1 %exitcond.not.i.i.i.i.i %lsr.iv.next = add i64 %lsr.iv24, -1 %scevgep26 = getelementptr i8, ptr addrspace(4) %lsr.iv25, i64 1 %scevgep28 = getelementptr i8, ptr %lsr.iv27, i64 1 %20 = call i64 @llvm.amdgcn.if.break.i64(i1 %or.cond.i.i.i.i.i, i64 %phi.broken44) %21 = call i1 @llvm.amdgcn.loop.i64(i64 %20) br i1 %21, label %_ZN22__llvm_libc_22_0_0_git3cpp11string_view13compareMemoryEPKcS3_m.exit.loopexit.i.i.i.i, label %for.body.i.i.i.i.i _ZN22__llvm_libc_22_0_0_git3cpp11string_view13compareMemoryEPKcS3_m.exit.loopexit.i.i.i.i: ; preds = %for.body.i.i.i.i.i %.lcssa50 = phi i8 [ %18, %for.body.i.i.i.i.i ] %.lcssa49 = phi i8 [ %19, %for.body.i.i.i.i.i ] %.lcssa48 = phi i64 [ %20, %for.body.i.i.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa48) %22 = icmp ne i8 %.lcssa50, %.lcssa49 br label %Flow41, !amdgpu.uniform !42 if.else.i.i: ; preds = %Flow41 %cmp.i.i36.i.i = icmp eq i64 %sub.ptr.sub.i.i.i.i, sub (i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.1.54, i64 18) to ptr) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.1.54 to ptr) to i64)) %23 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i36.i.i) %24 = extractvalue { i1, i64 } %23, 0 %25 = extractvalue { i1, i64 } %23, 1 br i1 %24, label %for.body.i.i.i39.i.i.preheader, label %Flow39 for.body.i.i.i39.i.i.preheader: ; preds = %if.else.i.i br label %for.body.i.i.i39.i.i, !amdgpu.uniform !42 Flow39: ; preds = %_ZN22__llvm_libc_22_0_0_git3cpp11string_view13compareMemoryEPKcS3_m.exit.loopexit.i.i47.i.i, %if.else.i.i %26 = phi i1 [ %34, %_ZN22__llvm_libc_22_0_0_git3cpp11string_view13compareMemoryEPKcS3_m.exit.loopexit.i.i47.i.i ], [ true, %if.else.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %25) %27 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %26) %28 = extractvalue { i1, i64 } %27, 0 %29 = extractvalue { i1, i64 } %27, 1 br i1 %28, label %if.else4.i.i, label %Flow40 for.body.i.i.i39.i.i: ; preds = %for.body.i.i.i39.i.i.preheader, %for.body.i.i.i39.i.i %phi.broken45 = phi i64 [ 0, %for.body.i.i.i39.i.i.preheader ], [ %32, %for.body.i.i.i39.i.i ] %lsr.iv33 = phi ptr [ %scevgep34, %for.body.i.i.i39.i.i ], [ %7, %for.body.i.i.i39.i.i.preheader ], !amdgpu.uniform !42 %lsr.iv31 = phi ptr addrspace(4) [ %scevgep32, %for.body.i.i.i39.i.i ], [ @.str.1.54, %for.body.i.i.i39.i.i.preheader ], !amdgpu.uniform !42 %lsr.iv29 = phi i64 [ %lsr.iv.next30, %for.body.i.i.i39.i.i ], [ sub (i64 add (i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.1.54, i64 18) to ptr) to i64), i64 -1), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.1.54 to ptr) to i64)), %for.body.i.i.i39.i.i.preheader ] %30 = load i8, ptr %lsr.iv33, align 1, !tbaa !57 %31 = load i8, ptr addrspace(4) %lsr.iv31, align 1, !tbaa !57 %tobool.not.i.i.i43.i.i = icmp ne i8 %30, %31 %exitcond.not.i.i.i45.i.i = icmp eq i64 %lsr.iv29, 0 %or.cond.i.i.i46.i.i = select i1 %tobool.not.i.i.i43.i.i, i1 true, i1 %exitcond.not.i.i.i45.i.i %lsr.iv.next30 = add i64 %lsr.iv29, -1 %scevgep32 = getelementptr i8, ptr addrspace(4) %lsr.iv31, i64 1 %scevgep34 = getelementptr i8, ptr %lsr.iv33, i64 1 %32 = call i64 @llvm.amdgcn.if.break.i64(i1 %or.cond.i.i.i46.i.i, i64 %phi.broken45) %33 = call i1 @llvm.amdgcn.loop.i64(i64 %32) br i1 %33, label %_ZN22__llvm_libc_22_0_0_git3cpp11string_view13compareMemoryEPKcS3_m.exit.loopexit.i.i47.i.i, label %for.body.i.i.i39.i.i _ZN22__llvm_libc_22_0_0_git3cpp11string_view13compareMemoryEPKcS3_m.exit.loopexit.i.i47.i.i: ; preds = %for.body.i.i.i39.i.i %.lcssa53 = phi i8 [ %30, %for.body.i.i.i39.i.i ] %.lcssa52 = phi i8 [ %31, %for.body.i.i.i39.i.i ] %.lcssa51 = phi i64 [ %32, %for.body.i.i.i39.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa51) %34 = icmp ne i8 %.lcssa53, %.lcssa52 br label %Flow39, !amdgpu.uniform !42 if.else4.i.i: ; preds = %Flow39 %cmp.not.i.i.i = icmp uge i64 %sub.ptr.sub.i.i.i.i, sub (i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.2.55, i64 8) to ptr) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.2.55 to ptr) to i64)) %35 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.not.i.i.i) %36 = extractvalue { i1, i64 } %35, 0 %37 = extractvalue { i1, i64 } %35, 1 br i1 %36, label %for.body.i.i.i.i.preheader, label %Flow for.body.i.i.i.i.preheader: ; preds = %if.else4.i.i br label %for.body.i.i.i.i, !amdgpu.uniform !42 Flow: ; preds = %_ZN22__llvm_libc_22_0_0_git3cpp11string_view13compareMemoryEPKcS3_m.exit.loopexit.i.i.i, %if.else4.i.i %38 = phi ptr [ %44, %_ZN22__llvm_libc_22_0_0_git3cpp11string_view13compareMemoryEPKcS3_m.exit.loopexit.i.i.i ], [ %7, %if.else4.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %37) br label %Flow40, !amdgpu.uniform !42 for.body.i.i.i.i: ; preds = %for.body.i.i.i.i.preheader, %for.body.i.i.i.i %phi.broken46 = phi i64 [ 0, %for.body.i.i.i.i.preheader ], [ %41, %for.body.i.i.i.i ] %i.011.i.i.i.i = phi i64 [ %inc.i.i.i.i, %for.body.i.i.i.i ], [ 0, %for.body.i.i.i.i.preheader ] %arrayidx.i.i.i.i = getelementptr i8, ptr %7, i64 %i.011.i.i.i.i, !amdgpu.uniform !42 %39 = load i8, ptr %arrayidx.i.i.i.i, align 1, !tbaa !57 %arrayidx1.i.i.i.i = getelementptr i8, ptr addrspace(4) @.str.2.55, i64 %i.011.i.i.i.i, !amdgpu.uniform !42 %40 = load i8, ptr addrspace(4) %arrayidx1.i.i.i.i, align 1, !tbaa !57 %tobool.not.i.i.i.i = icmp ne i8 %39, %40 %inc.i.i.i.i = add nuw i64 %i.011.i.i.i.i, 1 %exitcond.not.i.i.i.i = icmp eq i64 sub (i64 add (i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.2.55, i64 8) to ptr) to i64), i64 -1), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.2.55 to ptr) to i64)), %i.011.i.i.i.i %or.cond.i.i.i.i = select i1 %tobool.not.i.i.i.i, i1 true, i1 %exitcond.not.i.i.i.i %41 = call i64 @llvm.amdgcn.if.break.i64(i1 %or.cond.i.i.i.i, i64 %phi.broken46) %42 = call i1 @llvm.amdgcn.loop.i64(i64 %41) br i1 %42, label %_ZN22__llvm_libc_22_0_0_git3cpp11string_view13compareMemoryEPKcS3_m.exit.loopexit.i.i.i, label %for.body.i.i.i.i _ZN22__llvm_libc_22_0_0_git3cpp11string_view13compareMemoryEPKcS3_m.exit.loopexit.i.i.i: ; preds = %for.body.i.i.i.i %.lcssa56 = phi i8 [ %39, %for.body.i.i.i.i ] %.lcssa55 = phi i8 [ %40, %for.body.i.i.i.i ] %.lcssa54 = phi i64 [ %41, %for.body.i.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa54) %43 = icmp eq i8 %.lcssa56, %.lcssa55 %44 = select i1 %43, ptr %retval.sroa.0.068.i.i, ptr %7 br label %Flow, !amdgpu.uniform !42 Flow40: ; preds = %Flow, %Flow39 %45 = phi i8 [ %retval.sroa.6.070.i.i, %Flow ], [ 1, %Flow39 ] %46 = phi ptr [ %38, %Flow ], [ %retval.sroa.0.068.i.i, %Flow39 ] call void @llvm.amdgcn.end.cf.i64(i64 %29) br label %cleanup.i.i, !amdgpu.uniform !42 cleanup.i.i: ; preds = %Flow41, %Flow40 %retval.sroa.0.1.i.i = phi ptr [ %retval.sroa.0.068.i.i, %Flow41 ], [ %46, %Flow40 ] %retval.sroa.3.1.i.i = phi i8 [ 0, %Flow41 ], [ %retval.sroa.3.069.i.i, %Flow40 ] %retval.sroa.6.1.i.i = phi i8 [ %retval.sroa.6.070.i.i, %Flow41 ], [ %45, %Flow40 ] call void @llvm.amdgcn.end.cf.i64(i64 %17) %inc.i.i = add nuw nsw i32 %i.071.i.i, 1 %exitcond.not.i.i = icmp eq i32 %inc.i.i, %argc.load br i1 %exitcond.not.i.i, label %Flow42, label %for.body.i.i, !amdgpu.uniform !42 Flow42: ; preds = %cleanup.i.i %retval.sroa.0.1.i.i.lcssa = phi ptr [ %retval.sroa.0.1.i.i, %cleanup.i.i ] %retval.sroa.3.1.i.i.lcssa = phi i8 [ %retval.sroa.3.1.i.i, %cleanup.i.i ] %retval.sroa.6.1.i.i.lcssa = phi i8 [ %retval.sroa.6.1.i.i, %cleanup.i.i ] br label %Flow43, !amdgpu.uniform !42 main.exit: ; preds = %Flow43 %47 = call ptr @llvm.amdgcn.addrspacecast.nonnull.p0.p5(ptr addrspace(5) %ref.tmp.i) store ptr %5, ptr addrspace(5) %ref.tmp.i, align 8 %tmp.coerce.sroa.2.0.ref.tmp.ascast.sroa_idx.i = getelementptr inbounds nuw i8, ptr addrspace(5) %ref.tmp.i, i32 8 %48 = insertelement <2 x i8> poison, i8 %4, i32 0 %49 = insertelement <2 x i8> %48, i8 %3, i32 1 store <2 x i8> %49, ptr addrspace(5) %tmp.coerce.sroa.2.0.ref.tmp.ascast.sroa_idx.i, align 8 %call1.i = call fastcc noundef range(i32 0, 2) i32 @_ZN22__llvm_libc_22_0_0_git7testing4Test8runTestsERKNS0_11TestOptionsE(ptr noundef nonnull align 8 dereferenceable(10) %47) #33 call void @llvm.lifetime.end.p5(ptr addrspace(5) %ref.tmp.i) #34 %50 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop, !amdgpu.uniform !42 51: ; preds = %ComputeEnd %ret.load38 = extractelement <3 x i64> %0, i32 2 %52 = inttoptr i64 %ret.load38 to ptr %53 = addrspacecast ptr %52 to ptr addrspace(1) %54 = atomicrmw or ptr addrspace(1) %53, i32 %.lcssa monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %55, !amdgpu.uniform !42 55: ; preds = %51, %ComputeEnd call void @llvm.amdgcn.end.cf.i64(i64 %72) ret void ComputeLoop: ; preds = %ComputeLoop, %main.exit %Accumulator = phi i32 [ 0, %main.exit ], [ %59, %ComputeLoop ] %ActiveBits = phi i64 [ %50, %main.exit ], [ %62, %ComputeLoop ] %56 = call i64 @llvm.cttz.i64(i64 %ActiveBits, i1 true) %57 = trunc i64 %56 to i32 %58 = call i32 @llvm.amdgcn.readlane.i32(i32 %call1.i, i32 %57) %59 = or i32 %Accumulator, %58 %60 = shl i64 1, %56 %61 = xor i64 %60, -1 %62 = and i64 %ActiveBits, %61 %63 = icmp eq i64 %62, 0 br i1 %63, label %ComputeEnd, label %ComputeLoop, !amdgpu.uniform !42 ComputeEnd: ; preds = %ComputeLoop %.lcssa = phi i32 [ %59, %ComputeLoop ] %64 = trunc i64 %50 to i32 %65 = lshr i64 %50, 32 %66 = trunc i64 %65 to i32 %67 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %64, i32 0) %68 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %66, i32 %67) %69 = icmp eq i32 %68, 0 %70 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %69) %71 = extractvalue { i1, i64 } %70, 0 %72 = extractvalue { i1, i64 } %70, 1 br i1 %71, label %51, label %55 } ; Function Attrs: cold convergent mustprogress noreturn nounwind define protected amdgpu_kernel void @_end(i32 noundef %retval) local_unnamed_addr #4 !section_prefix !58 { entry: %_end.kernarg.segment = call nonnull align 16 dereferenceable(264) ptr addrspace(4) @llvm.amdgcn.kernarg.segment.ptr() %retval.kernarg.offset1 = bitcast ptr addrspace(4) %_end.kernarg.segment to ptr addrspace(4), !amdgpu.uniform !42 %retval.load = load i32, ptr addrspace(4) %retval.kernarg.offset1, align 16, !invariant.load !42, !noundef !42 tail call fastcc void @_ZN22__llvm_libc_22_0_0_git4exitEi(i32 noundef %retval.load) #35 unreachable } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(readwrite, argmem: write, inaccessiblemem: none) define internal void @_GLOBAL__sub_I_utf32_to_8_test.cpp() #5 { entry: store ptr null, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @LlvmLibcCharacterConverterUTF32To8Test_OneByte_Instance, i64 16), align 8, !tbaa !59 store <2 x i64> <i64 ptrtoint (ptr addrspace(1) getelementptr inbounds nuw inrange(-16, 48) (i8, ptr addrspace(1) @_ZTV46LlvmLibcCharacterConverterUTF32To8Test_OneByte, i64 16) to i64), i64 0>, ptr addrspace(1) @LlvmLibcCharacterConverterUTF32To8Test_OneByte_Instance, align 8 %0 = load ptr, ptr addrspace(1) @_ZN22__llvm_libc_22_0_0_git7testing4Test3EndE, align 8, !tbaa !63 %cmp.i = icmp ne ptr %0, null br i1 %cmp.i, label %if.end.i, label %Flow66, !amdgpu.uniform !42 Flow66: ; preds = %if.end.i, %entry %1 = phi i1 [ false, %if.end.i ], [ true, %entry ] br i1 %1, label %if.then.i, label %_ZN22__llvm_libc_22_0_0_git7testing4Test7addTestEPS1_.exit, !amdgpu.uniform !42 if.then.i: ; preds = %Flow66 store ptr addrspacecast (ptr addrspace(1) @LlvmLibcCharacterConverterUTF32To8Test_OneByte_Instance to ptr), ptr addrspace(1) @_ZN22__llvm_libc_22_0_0_git7testing4Test5StartE, align 8, !tbaa !63 br label %_ZN22__llvm_libc_22_0_0_git7testing4Test7addTestEPS1_.exit, !amdgpu.uniform !42 if.end.i: ; preds = %entry %Next.i = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr addrspacecast (ptr addrspace(1) @LlvmLibcCharacterConverterUTF32To8Test_OneByte_Instance to ptr), ptr %Next.i, align 8, !tbaa !64 br label %Flow66, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing4Test7addTestEPS1_.exit: ; preds = %if.then.i, %Flow66 %2 = load i64, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @_ZN22__llvm_libc_22_0_0_git16atexit_callbacksE, i64 1024), align 8, !tbaa !43 %cmp.i.not.i.i = icmp ne i64 %2, 64 br i1 %cmp.i.not.i.i, label %if.end.i.i.i, label %__cxa_atexit.exit, !amdgpu.uniform !42 if.end.i.i.i: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing4Test7addTestEPS1_.exit %inc.i.i.i = add i64 %2, 1 %arrayidx.i.i.i.i = getelementptr inbounds %"struct.__llvm_libc_22_0_0_git::AtExitUnit", ptr addrspace(1) @_ZN22__llvm_libc_22_0_0_git16atexit_callbacksE, i64 %2 store <2 x i64> <i64 ptrtoint (ptr @_ZN22__llvm_libc_22_0_0_git7testing4TestD2Ev to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(1) @LlvmLibcCharacterConverterUTF32To8Test_OneByte_Instance to ptr) to i64)>, ptr addrspace(1) %arrayidx.i.i.i.i, align 8, !tbaa !49 store i64 %inc.i.i.i, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @_ZN22__llvm_libc_22_0_0_git16atexit_callbacksE, i64 1024), align 8, !tbaa !43 br label %__cxa_atexit.exit, !amdgpu.uniform !42 __cxa_atexit.exit: ; preds = %if.end.i.i.i, %_ZN22__llvm_libc_22_0_0_git7testing4Test7addTestEPS1_.exit %3 = phi i64 [ 64, %_ZN22__llvm_libc_22_0_0_git7testing4Test7addTestEPS1_.exit ], [ %inc.i.i.i, %if.end.i.i.i ] store ptr null, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @LlvmLibcCharacterConverterUTF32To8Test_TwoByte_Instance, i64 16), align 8, !tbaa !59 store <2 x i64> <i64 ptrtoint (ptr addrspace(1) getelementptr inbounds nuw inrange(-16, 48) (i8, ptr addrspace(1) @_ZTV46LlvmLibcCharacterConverterUTF32To8Test_TwoByte, i64 16) to i64), i64 0>, ptr addrspace(1) @LlvmLibcCharacterConverterUTF32To8Test_TwoByte_Instance, align 8 %cmp.i1 = icmp ne ptr addrspace(1) @LlvmLibcCharacterConverterUTF32To8Test_OneByte_Instance, addrspacecast (ptr null to ptr addrspace(1)) br i1 %cmp.i1, label %if.end.i2, label %Flow65, !amdgpu.uniform !42 Flow65: ; preds = %if.end.i2, %__cxa_atexit.exit %4 = phi i1 [ false, %if.end.i2 ], [ true, %__cxa_atexit.exit ] br i1 %4, label %if.then.i4, label %_ZN22__llvm_libc_22_0_0_git7testing4Test7addTestEPS1_.exit5, !amdgpu.uniform !42 if.then.i4: ; preds = %Flow65 store ptr addrspacecast (ptr addrspace(1) @LlvmLibcCharacterConverterUTF32To8Test_TwoByte_Instance to ptr), ptr addrspace(1) @_ZN22__llvm_libc_22_0_0_git7testing4Test5StartE, align 8, !tbaa !63 br label %_ZN22__llvm_libc_22_0_0_git7testing4Test7addTestEPS1_.exit5, !amdgpu.uniform !42 if.end.i2: ; preds = %__cxa_atexit.exit store ptr addrspacecast (ptr addrspace(1) @LlvmLibcCharacterConverterUTF32To8Test_TwoByte_Instance to ptr), ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @LlvmLibcCharacterConverterUTF32To8Test_OneByte_Instance, i64 8), align 8, !tbaa !64 br label %Flow65, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing4Test7addTestEPS1_.exit5: ; preds = %if.then.i4, %Flow65 store ptr addrspacecast (ptr addrspace(1) @LlvmLibcCharacterConverterUTF32To8Test_TwoByte_Instance to ptr), ptr addrspace(1) @_ZN22__llvm_libc_22_0_0_git7testing4Test3EndE, align 8, !tbaa !63 %cmp.i.not.i.i6 = icmp ne i64 %3, 64 br i1 %cmp.i.not.i.i6, label %if.end.i.i.i7, label %__cxa_atexit.exit11, !amdgpu.uniform !42 if.end.i.i.i7: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing4Test7addTestEPS1_.exit5 %inc.i.i.i8 = add i64 %3, 1 %arrayidx.i.i.i.i9 = getelementptr inbounds %"struct.__llvm_libc_22_0_0_git::AtExitUnit", ptr addrspace(1) @_ZN22__llvm_libc_22_0_0_git16atexit_callbacksE, i64 %3 store <2 x i64> <i64 ptrtoint (ptr @_ZN22__llvm_libc_22_0_0_git7testing4TestD2Ev to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(1) @LlvmLibcCharacterConverterUTF32To8Test_TwoByte_Instance to ptr) to i64)>, ptr addrspace(1) %arrayidx.i.i.i.i9, align 8, !tbaa !49 store i64 %inc.i.i.i8, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @_ZN22__llvm_libc_22_0_0_git16atexit_callbacksE, i64 1024), align 8, !tbaa !43 br label %__cxa_atexit.exit11, !amdgpu.uniform !42 __cxa_atexit.exit11: ; preds = %if.end.i.i.i7, %_ZN22__llvm_libc_22_0_0_git7testing4Test7addTestEPS1_.exit5 %5 = phi i64 [ 64, %_ZN22__llvm_libc_22_0_0_git7testing4Test7addTestEPS1_.exit5 ], [ %inc.i.i.i8, %if.end.i.i.i7 ] store ptr null, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @LlvmLibcCharacterConverterUTF32To8Test_ThreeByte_Instance, i64 16), align 8, !tbaa !59 store <2 x i64> <i64 ptrtoint (ptr addrspace(1) getelementptr inbounds nuw inrange(-16, 48) (i8, ptr addrspace(1) @_ZTV48LlvmLibcCharacterConverterUTF32To8Test_ThreeByte, i64 16) to i64), i64 0>, ptr addrspace(1) @LlvmLibcCharacterConverterUTF32To8Test_ThreeByte_Instance, align 8 %cmp.i12 = icmp ne ptr addrspace(1) @LlvmLibcCharacterConverterUTF32To8Test_TwoByte_Instance, addrspacecast (ptr null to ptr addrspace(1)) br i1 %cmp.i12, label %if.end.i13, label %Flow64, !amdgpu.uniform !42 Flow64: ; preds = %if.end.i13, %__cxa_atexit.exit11 %6 = phi i1 [ false, %if.end.i13 ], [ true, %__cxa_atexit.exit11 ] br i1 %6, label %if.then.i15, label %_ZN22__llvm_libc_22_0_0_git7testing4Test7addTestEPS1_.exit16, !amdgpu.uniform !42 if.then.i15: ; preds = %Flow64 store ptr addrspacecast (ptr addrspace(1) @LlvmLibcCharacterConverterUTF32To8Test_ThreeByte_Instance to ptr), ptr addrspace(1) @_ZN22__llvm_libc_22_0_0_git7testing4Test5StartE, align 8, !tbaa !63 br label %_ZN22__llvm_libc_22_0_0_git7testing4Test7addTestEPS1_.exit16, !amdgpu.uniform !42 if.end.i13: ; preds = %__cxa_atexit.exit11 store ptr addrspacecast (ptr addrspace(1) @LlvmLibcCharacterConverterUTF32To8Test_ThreeByte_Instance to ptr), ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @LlvmLibcCharacterConverterUTF32To8Test_TwoByte_Instance, i64 8), align 8, !tbaa !64 br label %Flow64, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing4Test7addTestEPS1_.exit16: ; preds = %if.then.i15, %Flow64 %cmp.i.not.i.i17 = icmp ne i64 %5, 64 br i1 %cmp.i.not.i.i17, label %if.end.i.i.i18, label %__cxa_atexit.exit22, !amdgpu.uniform !42 if.end.i.i.i18: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing4Test7addTestEPS1_.exit16 %inc.i.i.i19 = add i64 %5, 1 %arrayidx.i.i.i.i20 = getelementptr inbounds %"struct.__llvm_libc_22_0_0_git::AtExitUnit", ptr addrspace(1) @_ZN22__llvm_libc_22_0_0_git16atexit_callbacksE, i64 %5 store <2 x i64> <i64 ptrtoint (ptr @_ZN22__llvm_libc_22_0_0_git7testing4TestD2Ev to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(1) @LlvmLibcCharacterConverterUTF32To8Test_ThreeByte_Instance to ptr) to i64)>, ptr addrspace(1) %arrayidx.i.i.i.i20, align 8, !tbaa !49 store i64 %inc.i.i.i19, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @_ZN22__llvm_libc_22_0_0_git16atexit_callbacksE, i64 1024), align 8, !tbaa !43 br label %__cxa_atexit.exit22, !amdgpu.uniform !42 __cxa_atexit.exit22: ; preds = %if.end.i.i.i18, %_ZN22__llvm_libc_22_0_0_git7testing4Test7addTestEPS1_.exit16 %7 = phi i64 [ 64, %_ZN22__llvm_libc_22_0_0_git7testing4Test7addTestEPS1_.exit16 ], [ %inc.i.i.i19, %if.end.i.i.i18 ] store ptr null, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @LlvmLibcCharacterConverterUTF32To8Test_FourByte_Instance, i64 16), align 8, !tbaa !59 store <2 x i64> <i64 ptrtoint (ptr addrspace(1) getelementptr inbounds nuw inrange(-16, 48) (i8, ptr addrspace(1) @_ZTV47LlvmLibcCharacterConverterUTF32To8Test_FourByte, i64 16) to i64), i64 0>, ptr addrspace(1) @LlvmLibcCharacterConverterUTF32To8Test_FourByte_Instance, align 8 %cmp.i23 = icmp ne ptr addrspace(1) @LlvmLibcCharacterConverterUTF32To8Test_ThreeByte_Instance, addrspacecast (ptr null to ptr addrspace(1)) br i1 %cmp.i23, label %if.end.i24, label %Flow63, !amdgpu.uniform !42 Flow63: ; preds = %if.end.i24, %__cxa_atexit.exit22 %8 = phi i1 [ false, %if.end.i24 ], [ true, %__cxa_atexit.exit22 ] br i1 %8, label %if.then.i26, label %_ZN22__llvm_libc_22_0_0_git7testing4Test7addTestEPS1_.exit27, !amdgpu.uniform !42 if.then.i26: ; preds = %Flow63 store ptr addrspacecast (ptr addrspace(1) @LlvmLibcCharacterConverterUTF32To8Test_FourByte_Instance to ptr), ptr addrspace(1) @_ZN22__llvm_libc_22_0_0_git7testing4Test5StartE, align 8, !tbaa !63 br label %_ZN22__llvm_libc_22_0_0_git7testing4Test7addTestEPS1_.exit27, !amdgpu.uniform !42 if.end.i24: ; preds = %__cxa_atexit.exit22 store ptr addrspacecast (ptr addrspace(1) @LlvmLibcCharacterConverterUTF32To8Test_FourByte_Instance to ptr), ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @LlvmLibcCharacterConverterUTF32To8Test_ThreeByte_Instance, i64 8), align 8, !tbaa !64 br label %Flow63, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing4Test7addTestEPS1_.exit27: ; preds = %if.then.i26, %Flow63 store ptr addrspacecast (ptr addrspace(1) @LlvmLibcCharacterConverterUTF32To8Test_FourByte_Instance to ptr), ptr addrspace(1) @_ZN22__llvm_libc_22_0_0_git7testing4Test3EndE, align 8, !tbaa !63 %cmp.i.not.i.i28 = icmp ne i64 %7, 64 br i1 %cmp.i.not.i.i28, label %if.end.i.i.i29, label %__cxa_atexit.exit33, !amdgpu.uniform !42 if.end.i.i.i29: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing4Test7addTestEPS1_.exit27 %inc.i.i.i30 = add i64 %7, 1 %arrayidx.i.i.i.i31 = getelementptr inbounds %"struct.__llvm_libc_22_0_0_git::AtExitUnit", ptr addrspace(1) @_ZN22__llvm_libc_22_0_0_git16atexit_callbacksE, i64 %7 store <2 x i64> <i64 ptrtoint (ptr @_ZN22__llvm_libc_22_0_0_git7testing4TestD2Ev to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(1) @LlvmLibcCharacterConverterUTF32To8Test_FourByte_Instance to ptr) to i64)>, ptr addrspace(1) %arrayidx.i.i.i.i31, align 8, !tbaa !49 store i64 %inc.i.i.i30, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @_ZN22__llvm_libc_22_0_0_git16atexit_callbacksE, i64 1024), align 8, !tbaa !43 br label %__cxa_atexit.exit33, !amdgpu.uniform !42 __cxa_atexit.exit33: ; preds = %if.end.i.i.i29, %_ZN22__llvm_libc_22_0_0_git7testing4Test7addTestEPS1_.exit27 %9 = phi i64 [ 64, %_ZN22__llvm_libc_22_0_0_git7testing4Test7addTestEPS1_.exit27 ], [ %inc.i.i.i30, %if.end.i.i.i29 ] store ptr null, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @LlvmLibcCharacterConverterUTF32To8Test_CantPushMidConversion_Instance, i64 16), align 8, !tbaa !59 store <2 x i64> <i64 ptrtoint (ptr addrspace(1) getelementptr inbounds nuw inrange(-16, 48) (i8, ptr addrspace(1) @_ZTV60LlvmLibcCharacterConverterUTF32To8Test_CantPushMidConversion, i64 16) to i64), i64 0>, ptr addrspace(1) @LlvmLibcCharacterConverterUTF32To8Test_CantPushMidConversion_Instance, align 8 %cmp.i34 = icmp ne ptr addrspace(1) @LlvmLibcCharacterConverterUTF32To8Test_FourByte_Instance, addrspacecast (ptr null to ptr addrspace(1)) br i1 %cmp.i34, label %if.end.i35, label %Flow62, !amdgpu.uniform !42 Flow62: ; preds = %if.end.i35, %__cxa_atexit.exit33 %10 = phi i1 [ false, %if.end.i35 ], [ true, %__cxa_atexit.exit33 ] br i1 %10, label %if.then.i37, label %_ZN22__llvm_libc_22_0_0_git7testing4Test7addTestEPS1_.exit38, !amdgpu.uniform !42 if.then.i37: ; preds = %Flow62 store ptr addrspacecast (ptr addrspace(1) @LlvmLibcCharacterConverterUTF32To8Test_CantPushMidConversion_Instance to ptr), ptr addrspace(1) @_ZN22__llvm_libc_22_0_0_git7testing4Test5StartE, align 8, !tbaa !63 br label %_ZN22__llvm_libc_22_0_0_git7testing4Test7addTestEPS1_.exit38, !amdgpu.uniform !42 if.end.i35: ; preds = %__cxa_atexit.exit33 store ptr addrspacecast (ptr addrspace(1) @LlvmLibcCharacterConverterUTF32To8Test_CantPushMidConversion_Instance to ptr), ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @LlvmLibcCharacterConverterUTF32To8Test_FourByte_Instance, i64 8), align 8, !tbaa !64 br label %Flow62, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing4Test7addTestEPS1_.exit38: ; preds = %if.then.i37, %Flow62 %cmp.i.not.i.i39 = icmp ne i64 %9, 64 br i1 %cmp.i.not.i.i39, label %if.end.i.i.i40, label %__cxa_atexit.exit44, !amdgpu.uniform !42 if.end.i.i.i40: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing4Test7addTestEPS1_.exit38 %inc.i.i.i41 = add i64 %9, 1 %arrayidx.i.i.i.i42 = getelementptr inbounds %"struct.__llvm_libc_22_0_0_git::AtExitUnit", ptr addrspace(1) @_ZN22__llvm_libc_22_0_0_git16atexit_callbacksE, i64 %9 store <2 x i64> <i64 ptrtoint (ptr @_ZN22__llvm_libc_22_0_0_git7testing4TestD2Ev to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(1) @LlvmLibcCharacterConverterUTF32To8Test_CantPushMidConversion_Instance to ptr) to i64)>, ptr addrspace(1) %arrayidx.i.i.i.i42, align 8, !tbaa !49 store i64 %inc.i.i.i41, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @_ZN22__llvm_libc_22_0_0_git16atexit_callbacksE, i64 1024), align 8, !tbaa !43 br label %__cxa_atexit.exit44, !amdgpu.uniform !42 __cxa_atexit.exit44: ; preds = %if.end.i.i.i40, %_ZN22__llvm_libc_22_0_0_git7testing4Test7addTestEPS1_.exit38 %11 = phi i64 [ 64, %_ZN22__llvm_libc_22_0_0_git7testing4Test7addTestEPS1_.exit38 ], [ %inc.i.i.i41, %if.end.i.i.i40 ] store ptr null, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @LlvmLibcCharacterConverterUTF32To8Test_InvalidState_Instance, i64 16), align 8, !tbaa !59 store <2 x i64> <i64 ptrtoint (ptr addrspace(1) getelementptr inbounds nuw inrange(-16, 48) (i8, ptr addrspace(1) @_ZTV51LlvmLibcCharacterConverterUTF32To8Test_InvalidState, i64 16) to i64), i64 0>, ptr addrspace(1) @LlvmLibcCharacterConverterUTF32To8Test_InvalidState_Instance, align 8 %cmp.i45 = icmp ne ptr addrspace(1) @LlvmLibcCharacterConverterUTF32To8Test_CantPushMidConversion_Instance, addrspacecast (ptr null to ptr addrspace(1)) br i1 %cmp.i45, label %if.end.i46, label %Flow, !amdgpu.uniform !42 Flow: ; preds = %if.end.i46, %__cxa_atexit.exit44 %12 = phi i1 [ false, %if.end.i46 ], [ true, %__cxa_atexit.exit44 ] br i1 %12, label %if.then.i48, label %_ZN22__llvm_libc_22_0_0_git7testing4Test7addTestEPS1_.exit49, !amdgpu.uniform !42 if.then.i48: ; preds = %Flow store ptr addrspacecast (ptr addrspace(1) @LlvmLibcCharacterConverterUTF32To8Test_InvalidState_Instance to ptr), ptr addrspace(1) @_ZN22__llvm_libc_22_0_0_git7testing4Test5StartE, align 8, !tbaa !63 br label %_ZN22__llvm_libc_22_0_0_git7testing4Test7addTestEPS1_.exit49, !amdgpu.uniform !42 if.end.i46: ; preds = %__cxa_atexit.exit44 store ptr addrspacecast (ptr addrspace(1) @LlvmLibcCharacterConverterUTF32To8Test_InvalidState_Instance to ptr), ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @LlvmLibcCharacterConverterUTF32To8Test_CantPushMidConversion_Instance, i64 8), align 8, !tbaa !64 br label %Flow, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing4Test7addTestEPS1_.exit49: ; preds = %if.then.i48, %Flow store ptr addrspacecast (ptr addrspace(1) @LlvmLibcCharacterConverterUTF32To8Test_InvalidState_Instance to ptr), ptr addrspace(1) @_ZN22__llvm_libc_22_0_0_git7testing4Test3EndE, align 8, !tbaa !63 %cmp.i.not.i.i50 = icmp ne i64 %11, 64 br i1 %cmp.i.not.i.i50, label %if.end.i.i.i51, label %__cxa_atexit.exit55, !amdgpu.uniform !42 if.end.i.i.i51: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing4Test7addTestEPS1_.exit49 %inc.i.i.i52 = add i64 %11, 1 %arrayidx.i.i.i.i53 = getelementptr inbounds %"struct.__llvm_libc_22_0_0_git::AtExitUnit", ptr addrspace(1) @_ZN22__llvm_libc_22_0_0_git16atexit_callbacksE, i64 %11 store <2 x i64> <i64 ptrtoint (ptr @_ZN22__llvm_libc_22_0_0_git7testing4TestD2Ev to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(1) @LlvmLibcCharacterConverterUTF32To8Test_InvalidState_Instance to ptr) to i64)>, ptr addrspace(1) %arrayidx.i.i.i.i53, align 8, !tbaa !49 store i64 %inc.i.i.i52, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @_ZN22__llvm_libc_22_0_0_git16atexit_callbacksE, i64 1024), align 8, !tbaa !43 br label %__cxa_atexit.exit55, !amdgpu.uniform !42 __cxa_atexit.exit55: ; preds = %if.end.i.i.i51, %_ZN22__llvm_libc_22_0_0_git7testing4Test7addTestEPS1_.exit49 ret void } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) define internal void @_ZN22__llvm_libc_22_0_0_git7testing4TestD2Ev(ptr nonnull readnone align 8 captures(none) %this) unnamed_addr #6 comdat align 2 { entry: ret void } ; Function Attrs: cold inlinehint mustprogress noreturn nounwind memory(inaccessiblemem: write) define internal void @_ZN51LlvmLibcCharacterConverterUTF32To8Test_InvalidStateD0Ev(ptr noundef nonnull readnone align 8 captures(none) dereferenceable(24) %this) unnamed_addr #7 comdat align 2 !section_prefix !58 { entry: tail call void @llvm.trap() unreachable } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) define internal void @_ZN22__llvm_libc_22_0_0_git7testing4Test5SetUpEv(ptr nonnull readnone align 8 captures(none) %this) unnamed_addr #6 comdat align 2 { entry: ret void } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) define internal void @_ZN22__llvm_libc_22_0_0_git7testing4Test8TearDownEv(ptr nonnull readnone align 8 captures(none) %this) unnamed_addr #6 comdat align 2 { entry: ret void } ; Function Attrs: convergent mustprogress nofree norecurse nounwind define internal void @_ZN51LlvmLibcCharacterConverterUTF32To8Test_InvalidState3RunEv(ptr noundef nonnull readonly align 8 captures(none) dereferenceable(24) %this) unnamed_addr #8 align 2 { entry: %Ctx.i = getelementptr inbounds nuw i8, ptr %this, i64 16 %0 = load ptr, ptr %Ctx.i, align 8, !tbaa !59 %call.i = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %0, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.36 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 193) #33 %1 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i) %2 = extractvalue { i1, i64 } %1, 0 %3 = extractvalue { i1, i64 } %1, 1 br i1 %2, label %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter12isValidStateEv.exit19, label %UnifiedReturnBlock _ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter12isValidStateEv.exit19: ; preds = %entry %sunkaddr = getelementptr inbounds i8, ptr %this, i64 16 %4 = load ptr, ptr %sunkaddr, align 8, !tbaa !59 %call.i254 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %4, i1 noundef zeroext false, i1 noundef zeroext false, ptr noundef addrspacecast (ptr addrspace(4) @.str.37 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.8 to ptr), i32 197) #33 %5 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i254) %6 = extractvalue { i1, i64 } %5, 0 %7 = extractvalue { i1, i64 } %5, 1 br i1 %6, label %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter12isValidStateEv.exit36, label %Flow189 _ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter12isValidStateEv.exit36: ; preds = %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter12isValidStateEv.exit19 %sunkaddr173 = getelementptr inbounds i8, ptr %this, i64 16 %8 = load ptr, ptr %sunkaddr173, align 8, !tbaa !59 %call.i257 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %8, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.38 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 201) #33 %9 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i257) %10 = extractvalue { i1, i64 } %9, 0 %11 = extractvalue { i1, i64 } %9, 1 br i1 %10, label %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter12isValidStateEv.exit53, label %Flow188 _ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter12isValidStateEv.exit53: ; preds = %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter12isValidStateEv.exit36 %sunkaddr174 = getelementptr inbounds i8, ptr %this, i64 16 %12 = load ptr, ptr %sunkaddr174, align 8, !tbaa !59 %call.i260 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %12, i1 noundef zeroext false, i1 noundef zeroext false, ptr noundef addrspacecast (ptr addrspace(4) @.str.39 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.8 to ptr), i32 204) #33 %13 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i260) %14 = extractvalue { i1, i64 } %13, 0 %15 = extractvalue { i1, i64 } %13, 1 br i1 %14, label %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter12isValidStateEv.exit70, label %Flow187 _ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter12isValidStateEv.exit70: ; preds = %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter12isValidStateEv.exit53 %sunkaddr175 = getelementptr inbounds i8, ptr %this, i64 16 %16 = load ptr, ptr %sunkaddr175, align 8, !tbaa !59 %call.i263 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %16, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.40 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 208) #33 %17 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i263) %18 = extractvalue { i1, i64 } %17, 0 %19 = extractvalue { i1, i64 } %17, 1 br i1 %18, label %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter12isValidStateEv.exit87, label %Flow186 _ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter12isValidStateEv.exit87: ; preds = %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter12isValidStateEv.exit70 %sunkaddr176 = getelementptr inbounds i8, ptr %this, i64 16 %20 = load ptr, ptr %sunkaddr176, align 8, !tbaa !59 %call.i266 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %20, i1 noundef zeroext false, i1 noundef zeroext false, ptr noundef addrspacecast (ptr addrspace(4) @.str.41 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.8 to ptr), i32 211) #33 %21 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i266) %22 = extractvalue { i1, i64 } %21, 0 %23 = extractvalue { i1, i64 } %21, 1 br i1 %22, label %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter12isValidStateEv.exit104, label %Flow185 _ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter12isValidStateEv.exit104: ; preds = %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter12isValidStateEv.exit87 %sunkaddr177 = getelementptr inbounds i8, ptr %this, i64 16 %24 = load ptr, ptr %sunkaddr177, align 8, !tbaa !59 %call.i269 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %24, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.42 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 215) #33 %25 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i269) %26 = extractvalue { i1, i64 } %25, 0 %27 = extractvalue { i1, i64 } %25, 1 br i1 %26, label %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter12isValidStateEv.exit121, label %Flow184 _ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter12isValidStateEv.exit121: ; preds = %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter12isValidStateEv.exit104 %sunkaddr178 = getelementptr inbounds i8, ptr %this, i64 16 %28 = load ptr, ptr %sunkaddr178, align 8, !tbaa !59 %call.i272 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %28, i1 noundef zeroext false, i1 noundef zeroext false, ptr noundef addrspacecast (ptr addrspace(4) @.str.43 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.8 to ptr), i32 218) #33 %29 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i272) %30 = extractvalue { i1, i64 } %29, 0 %31 = extractvalue { i1, i64 } %29, 1 br i1 %30, label %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter12isValidStateEv.exit138, label %Flow183 _ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter12isValidStateEv.exit138: ; preds = %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter12isValidStateEv.exit121 %sunkaddr179 = getelementptr inbounds i8, ptr %this, i64 16 %32 = load ptr, ptr %sunkaddr179, align 8, !tbaa !59 %call.i275 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %32, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.44 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 222) #33 %33 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i275) %34 = extractvalue { i1, i64 } %33, 0 %35 = extractvalue { i1, i64 } %33, 1 br i1 %34, label %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter12isValidStateEv.exit155, label %Flow182 _ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter12isValidStateEv.exit155: ; preds = %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter12isValidStateEv.exit138 %sunkaddr180 = getelementptr inbounds i8, ptr %this, i64 16 %36 = load ptr, ptr %sunkaddr180, align 8, !tbaa !59 %call.i278 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %36, i1 noundef zeroext false, i1 noundef zeroext false, ptr noundef addrspacecast (ptr addrspace(4) @.str.45 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.8 to ptr), i32 225) #33 %37 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i278) %38 = extractvalue { i1, i64 } %37, 0 %39 = extractvalue { i1, i64 } %37, 1 br i1 %38, label %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter12isValidStateEv.exit172, label %Flow _ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter12isValidStateEv.exit172: ; preds = %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter12isValidStateEv.exit155 %sunkaddr181 = getelementptr inbounds i8, ptr %this, i64 16 %40 = load ptr, ptr %sunkaddr181, align 8, !tbaa !59 %41 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %40, i1 noundef zeroext false, i1 noundef zeroext false, ptr noundef addrspacecast (ptr addrspace(4) @.str.46 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.8 to ptr), i32 229) #33 br label %Flow, !amdgpu.uniform !42 Flow: ; preds = %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter12isValidStateEv.exit172, %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter12isValidStateEv.exit155 call void @llvm.amdgcn.end.cf.i64(i64 %39) br label %Flow182, !amdgpu.uniform !42 Flow182: ; preds = %Flow, %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter12isValidStateEv.exit138 call void @llvm.amdgcn.end.cf.i64(i64 %35) br label %Flow183, !amdgpu.uniform !42 Flow183: ; preds = %Flow182, %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter12isValidStateEv.exit121 call void @llvm.amdgcn.end.cf.i64(i64 %31) br label %Flow184, !amdgpu.uniform !42 Flow184: ; preds = %Flow183, %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter12isValidStateEv.exit104 call void @llvm.amdgcn.end.cf.i64(i64 %27) br label %Flow185, !amdgpu.uniform !42 Flow185: ; preds = %Flow184, %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter12isValidStateEv.exit87 call void @llvm.amdgcn.end.cf.i64(i64 %23) br label %Flow186, !amdgpu.uniform !42 Flow186: ; preds = %Flow185, %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter12isValidStateEv.exit70 call void @llvm.amdgcn.end.cf.i64(i64 %19) br label %Flow187, !amdgpu.uniform !42 Flow187: ; preds = %Flow186, %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter12isValidStateEv.exit53 call void @llvm.amdgcn.end.cf.i64(i64 %15) br label %Flow188, !amdgpu.uniform !42 Flow188: ; preds = %Flow187, %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter12isValidStateEv.exit36 call void @llvm.amdgcn.end.cf.i64(i64 %11) br label %Flow189, !amdgpu.uniform !42 Flow189: ; preds = %Flow188, %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter12isValidStateEv.exit19 call void @llvm.amdgcn.end.cf.i64(i64 %7) br label %UnifiedReturnBlock, !amdgpu.uniform !42 UnifiedReturnBlock: ; preds = %entry, %Flow189 call void @llvm.amdgcn.end.cf.i64(i64 %3) ret void } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) define internal noundef ptr @_ZNK51LlvmLibcCharacterConverterUTF32To8Test_InvalidState7getNameEv(ptr nonnull readnone align 8 captures(none) %this) unnamed_addr #6 comdat align 2 { entry: ret ptr addrspacecast (ptr addrspace(4) @.str.52 to ptr) } ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.start.p5(ptr addrspace(5) captures(none)) #9 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p5(ptr addrspace(5) captures(none)) #9 ; Function Attrs: cold inlinehint mustprogress noreturn nounwind memory(inaccessiblemem: write) define internal void @_ZN60LlvmLibcCharacterConverterUTF32To8Test_CantPushMidConversionD0Ev(ptr noundef nonnull readnone align 8 captures(none) dereferenceable(24) %this) unnamed_addr #7 comdat align 2 !section_prefix !58 { entry: tail call void @llvm.trap() unreachable } ; Function Attrs: convergent mustprogress nofree norecurse nounwind define internal void @_ZN60LlvmLibcCharacterConverterUTF32To8Test_CantPushMidConversion3RunEv(ptr noundef nonnull readonly align 8 captures(none) dereferenceable(24) %this) unnamed_addr #8 align 2 { entry: %Ctx.i = getelementptr inbounds nuw i8, ptr %this, i64 16 %0 = load ptr, ptr %Ctx.i, align 8, !tbaa !59 %call.i = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIiEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %0, i32 noundef 0, i32 noundef 0, ptr noundef addrspacecast (ptr addrspace(4) @.str.31 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.32 to ptr), i32 181) #33 %1 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i) %2 = extractvalue { i1, i64 } %1, 0 %3 = extractvalue { i1, i64 } %1, 1 br i1 %2, label %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit, label %UnifiedReturnBlock _ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit: ; preds = %entry %sunkaddr = getelementptr inbounds i8, ptr %this, i64 16 %4 = load ptr, ptr %sunkaddr, align 8, !tbaa !59 %call.i52 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %4, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.3 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 183) #33 %5 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i52) %6 = extractvalue { i1, i64 } %5, 0 %7 = extractvalue { i1, i64 } %5, 1 br i1 %6, label %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter4pushEDi.exit12, label %Flow _ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter4pushEDi.exit12: ; preds = %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit %sunkaddr15 = getelementptr inbounds i8, ptr %this, i64 16 %8 = load ptr, ptr %sunkaddr15, align 8, !tbaa !59 %9 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIiEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %8, i32 noundef -1, i32 noundef -1, ptr noundef addrspacecast (ptr addrspace(4) @.str.33 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.34 to ptr), i32 187) #33 br label %Flow, !amdgpu.uniform !42 Flow: ; preds = %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter4pushEDi.exit12, %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit call void @llvm.amdgcn.end.cf.i64(i64 %7) br label %UnifiedReturnBlock, !amdgpu.uniform !42 UnifiedReturnBlock: ; preds = %entry, %Flow call void @llvm.amdgcn.end.cf.i64(i64 %3) ret void } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) define internal noundef ptr @_ZNK60LlvmLibcCharacterConverterUTF32To8Test_CantPushMidConversion7getNameEv(ptr nonnull readnone align 8 captures(none) %this) unnamed_addr #6 comdat align 2 { entry: ret ptr addrspacecast (ptr addrspace(4) @.str.51 to ptr) } ; Function Attrs: cold inlinehint mustprogress noreturn nounwind memory(inaccessiblemem: write) define internal void @_ZN47LlvmLibcCharacterConverterUTF32To8Test_FourByteD0Ev(ptr noundef nonnull readnone align 8 captures(none) dereferenceable(24) %this) unnamed_addr #7 comdat align 2 !section_prefix !58 { entry: tail call void @llvm.trap() unreachable } ; Function Attrs: convergent mustprogress nofree norecurse nounwind define internal void @_ZN47LlvmLibcCharacterConverterUTF32To8Test_FourByte3RunEv(ptr noundef nonnull readonly align 8 captures(none) dereferenceable(24) %this) unnamed_addr #8 align 2 { entry: %Ctx.i = getelementptr inbounds nuw i8, ptr %this, i64 16 %0 = load ptr, ptr %Ctx.i, align 8, !tbaa !59 %call.i = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %0, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 130) #33 %1 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i) %2 = extractvalue { i1, i64 } %1, 0 %3 = extractvalue { i1, i64 } %1, 1 br i1 %2, label %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit, label %UnifiedReturnBlock _ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit: ; preds = %entry %sunkaddr = getelementptr inbounds i8, ptr %this, i64 16 %4 = load ptr, ptr %sunkaddr, align 8, !tbaa !59 %call.i569 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %4, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.3 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 132) #33 %5 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i569) %6 = extractvalue { i1, i64 } %5, 0 %7 = extractvalue { i1, i64 } %5, 1 br i1 %6, label %if.end13, label %Flow372 if.end13: ; preds = %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit %sunkaddr324 = getelementptr inbounds i8, ptr %this, i64 16 %8 = load ptr, ptr %sunkaddr324, align 8, !tbaa !59 %call.i572 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIiEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %8, i32 noundef poison, i32 noundef 240, ptr noundef addrspacecast (ptr addrspace(4) @.str.10 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.24 to ptr), i32 133) #33 %9 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i572) %10 = extractvalue { i1, i64 } %9, 0 %11 = extractvalue { i1, i64 } %9, 1 br i1 %10, label %if.end21, label %Flow371 if.end21: ; preds = %if.end13 %sunkaddr325 = getelementptr inbounds i8, ptr %this, i64 16 %12 = load ptr, ptr %sunkaddr325, align 8, !tbaa !59 %call.i575 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %12, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.12 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 134) #33 %13 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i575) %14 = extractvalue { i1, i64 } %13, 0 %15 = extractvalue { i1, i64 } %13, 1 br i1 %14, label %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit39, label %Flow370 _ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit39: ; preds = %if.end21 %sunkaddr326 = getelementptr inbounds i8, ptr %this, i64 16 %16 = load ptr, ptr %sunkaddr326, align 8, !tbaa !59 %call.i580 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %16, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.3 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 136) #33 %17 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i580) %18 = extractvalue { i1, i64 } %17, 0 %19 = extractvalue { i1, i64 } %17, 1 br i1 %18, label %if.end40, label %Flow369 if.end40: ; preds = %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit39 %sunkaddr327 = getelementptr inbounds i8, ptr %this, i64 16 %20 = load ptr, ptr %sunkaddr327, align 8, !tbaa !59 %call.i583 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIiEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %20, i32 noundef 159, i32 noundef 159, ptr noundef addrspacecast (ptr addrspace(4) @.str.10 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.25 to ptr), i32 137) #33 %21 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i583) %22 = extractvalue { i1, i64 } %21, 0 %23 = extractvalue { i1, i64 } %21, 1 br i1 %22, label %if.end49, label %Flow368 if.end49: ; preds = %if.end40 %sunkaddr328 = getelementptr inbounds i8, ptr %this, i64 16 %24 = load ptr, ptr %sunkaddr328, align 8, !tbaa !59 %call.i586 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %24, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.12 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 138) #33 %25 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i586) %26 = extractvalue { i1, i64 } %25, 0 %27 = extractvalue { i1, i64 } %25, 1 br i1 %26, label %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit69, label %Flow367 _ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit69: ; preds = %if.end49 %sunkaddr329 = getelementptr inbounds i8, ptr %this, i64 16 %28 = load ptr, ptr %sunkaddr329, align 8, !tbaa !59 %call.i591 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %28, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.3 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 140) #33 %29 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i591) %30 = extractvalue { i1, i64 } %29, 0 %31 = extractvalue { i1, i64 } %29, 1 br i1 %30, label %if.end69, label %Flow366 if.end69: ; preds = %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit69 %sunkaddr330 = getelementptr inbounds i8, ptr %this, i64 16 %32 = load ptr, ptr %sunkaddr330, align 8, !tbaa !59 %call.i594 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIiEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %32, i32 noundef 164, i32 noundef 164, ptr noundef addrspacecast (ptr addrspace(4) @.str.10 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.26 to ptr), i32 141) #33 %33 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i594) %34 = extractvalue { i1, i64 } %33, 0 %35 = extractvalue { i1, i64 } %33, 1 br i1 %34, label %if.end78, label %Flow365 if.end78: ; preds = %if.end69 %sunkaddr331 = getelementptr inbounds i8, ptr %this, i64 16 %36 = load ptr, ptr %sunkaddr331, align 8, !tbaa !59 %call.i597 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %36, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.12 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 142) #33 %37 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i597) %38 = extractvalue { i1, i64 } %37, 0 %39 = extractvalue { i1, i64 } %37, 1 br i1 %38, label %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit99, label %Flow364 _ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit99: ; preds = %if.end78 %sunkaddr332 = getelementptr inbounds i8, ptr %this, i64 16 %40 = load ptr, ptr %sunkaddr332, align 8, !tbaa !59 %call.i602 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %40, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.3 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 144) #33 %41 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i602) %42 = extractvalue { i1, i64 } %41, 0 %43 = extractvalue { i1, i64 } %41, 1 br i1 %42, label %if.end98, label %Flow363 if.end98: ; preds = %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit99 %sunkaddr333 = getelementptr inbounds i8, ptr %this, i64 16 %44 = load ptr, ptr %sunkaddr333, align 8, !tbaa !59 %call.i605 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIiEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %44, i32 noundef 161, i32 noundef 161, ptr noundef addrspacecast (ptr addrspace(4) @.str.10 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.27 to ptr), i32 145) #33 %45 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i605) %46 = extractvalue { i1, i64 } %45, 0 %47 = extractvalue { i1, i64 } %45, 1 br i1 %46, label %if.end107, label %Flow362 if.end107: ; preds = %if.end98 %sunkaddr334 = getelementptr inbounds i8, ptr %this, i64 16 %48 = load ptr, ptr %sunkaddr334, align 8, !tbaa !59 %call.i608 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %48, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.6 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 146) #33 %49 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i608) %50 = extractvalue { i1, i64 } %49, 0 %51 = extractvalue { i1, i64 } %49, 1 br i1 %50, label %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter4pushEDi.exit107, label %Flow361 _ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter4pushEDi.exit107: ; preds = %if.end107 %sunkaddr335 = getelementptr inbounds i8, ptr %this, i64 16 %52 = load ptr, ptr %sunkaddr335, align 8, !tbaa !59 %call.i611 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %52, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 151) #33 %53 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i611) %54 = extractvalue { i1, i64 } %53, 0 %55 = extractvalue { i1, i64 } %53, 1 br i1 %54, label %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit140, label %Flow360 _ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit140: ; preds = %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter4pushEDi.exit107 %sunkaddr336 = getelementptr inbounds i8, ptr %this, i64 16 %56 = load ptr, ptr %sunkaddr336, align 8, !tbaa !59 %call.i616 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %56, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.3 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 153) #33 %57 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i616) %58 = extractvalue { i1, i64 } %57, 0 %59 = extractvalue { i1, i64 } %57, 1 br i1 %58, label %if.end135, label %Flow359 if.end135: ; preds = %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit140 %sunkaddr337 = getelementptr inbounds i8, ptr %this, i64 16 %60 = load ptr, ptr %sunkaddr337, align 8, !tbaa !59 %call.i619 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIiEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %60, i32 noundef poison, i32 noundef 240, ptr noundef addrspacecast (ptr addrspace(4) @.str.10 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.24 to ptr), i32 154) #33 %61 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i619) %62 = extractvalue { i1, i64 } %61, 0 %63 = extractvalue { i1, i64 } %61, 1 br i1 %62, label %if.end144, label %Flow358 if.end144: ; preds = %if.end135 %sunkaddr338 = getelementptr inbounds i8, ptr %this, i64 16 %64 = load ptr, ptr %sunkaddr338, align 8, !tbaa !59 %call.i622 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %64, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.12 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 155) #33 %65 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i622) %66 = extractvalue { i1, i64 } %65, 0 %67 = extractvalue { i1, i64 } %65, 1 br i1 %66, label %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit170, label %Flow357 _ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit170: ; preds = %if.end144 %sunkaddr339 = getelementptr inbounds i8, ptr %this, i64 16 %68 = load ptr, ptr %sunkaddr339, align 8, !tbaa !59 %call.i627 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %68, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.3 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 157) #33 %69 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i627) %70 = extractvalue { i1, i64 } %69, 0 %71 = extractvalue { i1, i64 } %69, 1 br i1 %70, label %if.end164, label %Flow356 if.end164: ; preds = %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit170 %sunkaddr340 = getelementptr inbounds i8, ptr %this, i64 16 %72 = load ptr, ptr %sunkaddr340, align 8, !tbaa !59 %call.i630 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIiEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %72, i32 noundef 146, i32 noundef 146, ptr noundef addrspacecast (ptr addrspace(4) @.str.10 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.28 to ptr), i32 158) #33 %73 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i630) %74 = extractvalue { i1, i64 } %73, 0 %75 = extractvalue { i1, i64 } %73, 1 br i1 %74, label %if.end173, label %Flow355 if.end173: ; preds = %if.end164 %sunkaddr341 = getelementptr inbounds i8, ptr %this, i64 16 %76 = load ptr, ptr %sunkaddr341, align 8, !tbaa !59 %call.i633 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %76, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.12 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 159) #33 %77 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i633) %78 = extractvalue { i1, i64 } %77, 0 %79 = extractvalue { i1, i64 } %77, 1 br i1 %78, label %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit200, label %Flow354 _ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit200: ; preds = %if.end173 %sunkaddr342 = getelementptr inbounds i8, ptr %this, i64 16 %80 = load ptr, ptr %sunkaddr342, align 8, !tbaa !59 %call.i638 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %80, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.3 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 161) #33 %81 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i638) %82 = extractvalue { i1, i64 } %81, 0 %83 = extractvalue { i1, i64 } %81, 1 br i1 %82, label %if.end193, label %Flow353 if.end193: ; preds = %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit200 %sunkaddr343 = getelementptr inbounds i8, ptr %this, i64 16 %84 = load ptr, ptr %sunkaddr343, align 8, !tbaa !59 %call.i641 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIiEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %84, i32 noundef 132, i32 noundef 132, ptr noundef addrspacecast (ptr addrspace(4) @.str.10 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.29 to ptr), i32 162) #33 %85 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i641) %86 = extractvalue { i1, i64 } %85, 0 %87 = extractvalue { i1, i64 } %85, 1 br i1 %86, label %if.end202, label %Flow352 if.end202: ; preds = %if.end193 %sunkaddr344 = getelementptr inbounds i8, ptr %this, i64 16 %88 = load ptr, ptr %sunkaddr344, align 8, !tbaa !59 %call.i644 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %88, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.12 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 163) #33 %89 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i644) %90 = extractvalue { i1, i64 } %89, 0 %91 = extractvalue { i1, i64 } %89, 1 br i1 %90, label %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit230, label %Flow351 _ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit230: ; preds = %if.end202 %sunkaddr345 = getelementptr inbounds i8, ptr %this, i64 16 %92 = load ptr, ptr %sunkaddr345, align 8, !tbaa !59 %call.i649 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %92, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.3 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 165) #33 %93 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i649) %94 = extractvalue { i1, i64 } %93, 0 %95 = extractvalue { i1, i64 } %93, 1 br i1 %94, label %if.end222, label %Flow350 if.end222: ; preds = %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit230 %sunkaddr346 = getelementptr inbounds i8, ptr %this, i64 16 %96 = load ptr, ptr %sunkaddr346, align 8, !tbaa !59 %call.i652 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIiEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %96, i32 noundef 161, i32 noundef 161, ptr noundef addrspacecast (ptr addrspace(4) @.str.10 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.27 to ptr), i32 166) #33 %97 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i652) %98 = extractvalue { i1, i64 } %97, 0 %99 = extractvalue { i1, i64 } %97, 1 br i1 %98, label %if.end231, label %Flow349 if.end231: ; preds = %if.end222 %sunkaddr347 = getelementptr inbounds i8, ptr %this, i64 16 %100 = load ptr, ptr %sunkaddr347, align 8, !tbaa !59 %call.i655 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %100, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.6 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 167) #33 %101 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i655) %102 = extractvalue { i1, i64 } %101, 0 %103 = extractvalue { i1, i64 } %101, 1 br i1 %102, label %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit260, label %Flow _ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit260: ; preds = %if.end231 %sunkaddr348 = getelementptr inbounds i8, ptr %this, i64 16 %104 = load ptr, ptr %sunkaddr348, align 8, !tbaa !59 %105 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %104, i1 noundef zeroext false, i1 noundef zeroext false, ptr noundef addrspacecast (ptr addrspace(4) @.str.3 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.8 to ptr), i32 171) #33 br label %Flow, !amdgpu.uniform !42 Flow: ; preds = %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit260, %if.end231 call void @llvm.amdgcn.end.cf.i64(i64 %103) br label %Flow349, !amdgpu.uniform !42 Flow349: ; preds = %Flow, %if.end222 call void @llvm.amdgcn.end.cf.i64(i64 %99) br label %Flow350, !amdgpu.uniform !42 Flow350: ; preds = %Flow349, %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit230 call void @llvm.amdgcn.end.cf.i64(i64 %95) br label %Flow351, !amdgpu.uniform !42 Flow351: ; preds = %Flow350, %if.end202 call void @llvm.amdgcn.end.cf.i64(i64 %91) br label %Flow352, !amdgpu.uniform !42 Flow352: ; preds = %Flow351, %if.end193 call void @llvm.amdgcn.end.cf.i64(i64 %87) br label %Flow353, !amdgpu.uniform !42 Flow353: ; preds = %Flow352, %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit200 call void @llvm.amdgcn.end.cf.i64(i64 %83) br label %Flow354, !amdgpu.uniform !42 Flow354: ; preds = %Flow353, %if.end173 call void @llvm.amdgcn.end.cf.i64(i64 %79) br label %Flow355, !amdgpu.uniform !42 Flow355: ; preds = %Flow354, %if.end164 call void @llvm.amdgcn.end.cf.i64(i64 %75) br label %Flow356, !amdgpu.uniform !42 Flow356: ; preds = %Flow355, %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit170 call void @llvm.amdgcn.end.cf.i64(i64 %71) br label %Flow357, !amdgpu.uniform !42 Flow357: ; preds = %Flow356, %if.end144 call void @llvm.amdgcn.end.cf.i64(i64 %67) br label %Flow358, !amdgpu.uniform !42 Flow358: ; preds = %Flow357, %if.end135 call void @llvm.amdgcn.end.cf.i64(i64 %63) br label %Flow359, !amdgpu.uniform !42 Flow359: ; preds = %Flow358, %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit140 call void @llvm.amdgcn.end.cf.i64(i64 %59) br label %Flow360, !amdgpu.uniform !42 Flow360: ; preds = %Flow359, %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter4pushEDi.exit107 call void @llvm.amdgcn.end.cf.i64(i64 %55) br label %Flow361, !amdgpu.uniform !42 Flow361: ; preds = %Flow360, %if.end107 call void @llvm.amdgcn.end.cf.i64(i64 %51) br label %Flow362, !amdgpu.uniform !42 Flow362: ; preds = %Flow361, %if.end98 call void @llvm.amdgcn.end.cf.i64(i64 %47) br label %Flow363, !amdgpu.uniform !42 Flow363: ; preds = %Flow362, %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit99 call void @llvm.amdgcn.end.cf.i64(i64 %43) br label %Flow364, !amdgpu.uniform !42 Flow364: ; preds = %Flow363, %if.end78 call void @llvm.amdgcn.end.cf.i64(i64 %39) br label %Flow365, !amdgpu.uniform !42 Flow365: ; preds = %Flow364, %if.end69 call void @llvm.amdgcn.end.cf.i64(i64 %35) br label %Flow366, !amdgpu.uniform !42 Flow366: ; preds = %Flow365, %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit69 call void @llvm.amdgcn.end.cf.i64(i64 %31) br label %Flow367, !amdgpu.uniform !42 Flow367: ; preds = %Flow366, %if.end49 call void @llvm.amdgcn.end.cf.i64(i64 %27) br label %Flow368, !amdgpu.uniform !42 Flow368: ; preds = %Flow367, %if.end40 call void @llvm.amdgcn.end.cf.i64(i64 %23) br label %Flow369, !amdgpu.uniform !42 Flow369: ; preds = %Flow368, %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit39 call void @llvm.amdgcn.end.cf.i64(i64 %19) br label %Flow370, !amdgpu.uniform !42 Flow370: ; preds = %Flow369, %if.end21 call void @llvm.amdgcn.end.cf.i64(i64 %15) br label %Flow371, !amdgpu.uniform !42 Flow371: ; preds = %Flow370, %if.end13 call void @llvm.amdgcn.end.cf.i64(i64 %11) br label %Flow372, !amdgpu.uniform !42 Flow372: ; preds = %Flow371, %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit call void @llvm.amdgcn.end.cf.i64(i64 %7) br label %UnifiedReturnBlock, !amdgpu.uniform !42 UnifiedReturnBlock: ; preds = %entry, %Flow372 call void @llvm.amdgcn.end.cf.i64(i64 %3) ret void } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) define internal noundef ptr @_ZNK47LlvmLibcCharacterConverterUTF32To8Test_FourByte7getNameEv(ptr nonnull readnone align 8 captures(none) %this) unnamed_addr #6 comdat align 2 { entry: ret ptr addrspacecast (ptr addrspace(4) @.str.50 to ptr) } ; Function Attrs: cold inlinehint mustprogress noreturn nounwind memory(inaccessiblemem: write) define internal void @_ZN48LlvmLibcCharacterConverterUTF32To8Test_ThreeByteD0Ev(ptr noundef nonnull readnone align 8 captures(none) dereferenceable(24) %this) unnamed_addr #7 comdat align 2 !section_prefix !58 { entry: tail call void @llvm.trap() unreachable } ; Function Attrs: convergent mustprogress nofree norecurse nounwind define internal void @_ZN48LlvmLibcCharacterConverterUTF32To8Test_ThreeByte3RunEv(ptr noundef nonnull readonly align 8 captures(none) dereferenceable(24) %this) unnamed_addr #8 align 2 { entry: %Ctx.i = getelementptr inbounds nuw i8, ptr %this, i64 16 %0 = load ptr, ptr %Ctx.i, align 8, !tbaa !59 %call.i = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %0, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 86) #33 %1 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i) %2 = extractvalue { i1, i64 } %1, 0 %3 = extractvalue { i1, i64 } %1, 1 br i1 %2, label %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit, label %UnifiedReturnBlock _ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit: ; preds = %entry %sunkaddr = getelementptr inbounds i8, ptr %this, i64 16 %4 = load ptr, ptr %sunkaddr, align 8, !tbaa !59 %call.i439 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %4, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.3 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 88) #33 %5 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i439) %6 = extractvalue { i1, i64 } %5, 0 %7 = extractvalue { i1, i64 } %5, 1 br i1 %6, label %if.end13, label %Flow286 if.end13: ; preds = %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit %sunkaddr250 = getelementptr inbounds i8, ptr %this, i64 16 %8 = load ptr, ptr %sunkaddr250, align 8, !tbaa !59 %call.i442 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIiEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %8, i32 noundef poison, i32 noundef 234, ptr noundef addrspacecast (ptr addrspace(4) @.str.10 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.17 to ptr), i32 89) #33 %9 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i442) %10 = extractvalue { i1, i64 } %9, 0 %11 = extractvalue { i1, i64 } %9, 1 br i1 %10, label %if.end21, label %Flow285 if.end21: ; preds = %if.end13 %sunkaddr251 = getelementptr inbounds i8, ptr %this, i64 16 %12 = load ptr, ptr %sunkaddr251, align 8, !tbaa !59 %call.i445 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %12, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.12 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 90) #33 %13 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i445) %14 = extractvalue { i1, i64 } %13, 0 %15 = extractvalue { i1, i64 } %13, 1 br i1 %14, label %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit39, label %Flow284 _ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit39: ; preds = %if.end21 %sunkaddr252 = getelementptr inbounds i8, ptr %this, i64 16 %16 = load ptr, ptr %sunkaddr252, align 8, !tbaa !59 %call.i450 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %16, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.3 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 92) #33 %17 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i450) %18 = extractvalue { i1, i64 } %17, 0 %19 = extractvalue { i1, i64 } %17, 1 br i1 %18, label %if.end40, label %Flow283 if.end40: ; preds = %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit39 %sunkaddr253 = getelementptr inbounds i8, ptr %this, i64 16 %20 = load ptr, ptr %sunkaddr253, align 8, !tbaa !59 %call.i453 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIiEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %20, i32 noundef 176, i32 noundef 176, ptr noundef addrspacecast (ptr addrspace(4) @.str.10 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.18 to ptr), i32 93) #33 %21 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i453) %22 = extractvalue { i1, i64 } %21, 0 %23 = extractvalue { i1, i64 } %21, 1 br i1 %22, label %if.end49, label %Flow282 if.end49: ; preds = %if.end40 %sunkaddr254 = getelementptr inbounds i8, ptr %this, i64 16 %24 = load ptr, ptr %sunkaddr254, align 8, !tbaa !59 %call.i456 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %24, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.12 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 94) #33 %25 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i456) %26 = extractvalue { i1, i64 } %25, 0 %27 = extractvalue { i1, i64 } %25, 1 br i1 %26, label %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit69, label %Flow281 _ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit69: ; preds = %if.end49 %sunkaddr255 = getelementptr inbounds i8, ptr %this, i64 16 %28 = load ptr, ptr %sunkaddr255, align 8, !tbaa !59 %call.i461 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %28, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.3 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 96) #33 %29 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i461) %30 = extractvalue { i1, i64 } %29, 0 %31 = extractvalue { i1, i64 } %29, 1 br i1 %30, label %if.end69, label %Flow280 if.end69: ; preds = %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit69 %sunkaddr256 = getelementptr inbounds i8, ptr %this, i64 16 %32 = load ptr, ptr %sunkaddr256, align 8, !tbaa !59 %call.i464 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIiEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %32, i32 noundef 149, i32 noundef 149, ptr noundef addrspacecast (ptr addrspace(4) @.str.10 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.19 to ptr), i32 97) #33 %33 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i464) %34 = extractvalue { i1, i64 } %33, 0 %35 = extractvalue { i1, i64 } %33, 1 br i1 %34, label %if.end78, label %Flow279 if.end78: ; preds = %if.end69 %sunkaddr257 = getelementptr inbounds i8, ptr %this, i64 16 %36 = load ptr, ptr %sunkaddr257, align 8, !tbaa !59 %call.i467 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %36, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.6 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 98) #33 %37 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i467) %38 = extractvalue { i1, i64 } %37, 0 %39 = extractvalue { i1, i64 } %37, 1 br i1 %38, label %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter4pushEDi.exit77, label %Flow278 _ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter4pushEDi.exit77: ; preds = %if.end78 %sunkaddr258 = getelementptr inbounds i8, ptr %this, i64 16 %40 = load ptr, ptr %sunkaddr258, align 8, !tbaa !59 %call.i470 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %40, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 103) #33 %41 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i470) %42 = extractvalue { i1, i64 } %41, 0 %43 = extractvalue { i1, i64 } %41, 1 br i1 %42, label %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit110, label %Flow277 _ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit110: ; preds = %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter4pushEDi.exit77 %sunkaddr259 = getelementptr inbounds i8, ptr %this, i64 16 %44 = load ptr, ptr %sunkaddr259, align 8, !tbaa !59 %call.i475 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %44, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.3 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 105) #33 %45 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i475) %46 = extractvalue { i1, i64 } %45, 0 %47 = extractvalue { i1, i64 } %45, 1 br i1 %46, label %if.end106, label %Flow276 if.end106: ; preds = %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit110 %sunkaddr260 = getelementptr inbounds i8, ptr %this, i64 16 %48 = load ptr, ptr %sunkaddr260, align 8, !tbaa !59 %call.i478 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIiEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %48, i32 noundef poison, i32 noundef 226, ptr noundef addrspacecast (ptr addrspace(4) @.str.10 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.20 to ptr), i32 106) #33 %49 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i478) %50 = extractvalue { i1, i64 } %49, 0 %51 = extractvalue { i1, i64 } %49, 1 br i1 %50, label %if.end115, label %Flow275 if.end115: ; preds = %if.end106 %sunkaddr261 = getelementptr inbounds i8, ptr %this, i64 16 %52 = load ptr, ptr %sunkaddr261, align 8, !tbaa !59 %call.i481 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %52, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.12 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 107) #33 %53 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i481) %54 = extractvalue { i1, i64 } %53, 0 %55 = extractvalue { i1, i64 } %53, 1 br i1 %54, label %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit140, label %Flow274 _ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit140: ; preds = %if.end115 %sunkaddr262 = getelementptr inbounds i8, ptr %this, i64 16 %56 = load ptr, ptr %sunkaddr262, align 8, !tbaa !59 %call.i486 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %56, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.3 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 109) #33 %57 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i486) %58 = extractvalue { i1, i64 } %57, 0 %59 = extractvalue { i1, i64 } %57, 1 br i1 %58, label %if.end135, label %Flow273 if.end135: ; preds = %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit140 %sunkaddr263 = getelementptr inbounds i8, ptr %this, i64 16 %60 = load ptr, ptr %sunkaddr263, align 8, !tbaa !59 %call.i489 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIiEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %60, i32 noundef 153, i32 noundef 153, ptr noundef addrspacecast (ptr addrspace(4) @.str.10 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.21 to ptr), i32 110) #33 %61 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i489) %62 = extractvalue { i1, i64 } %61, 0 %63 = extractvalue { i1, i64 } %61, 1 br i1 %62, label %if.end144, label %Flow272 if.end144: ; preds = %if.end135 %sunkaddr264 = getelementptr inbounds i8, ptr %this, i64 16 %64 = load ptr, ptr %sunkaddr264, align 8, !tbaa !59 %call.i492 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %64, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.12 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 111) #33 %65 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i492) %66 = extractvalue { i1, i64 } %65, 0 %67 = extractvalue { i1, i64 } %65, 1 br i1 %66, label %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit170, label %Flow271 _ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit170: ; preds = %if.end144 %sunkaddr265 = getelementptr inbounds i8, ptr %this, i64 16 %68 = load ptr, ptr %sunkaddr265, align 8, !tbaa !59 %call.i497 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %68, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.3 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 113) #33 %69 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i497) %70 = extractvalue { i1, i64 } %69, 0 %71 = extractvalue { i1, i64 } %69, 1 br i1 %70, label %if.end164, label %Flow270 if.end164: ; preds = %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit170 %sunkaddr266 = getelementptr inbounds i8, ptr %this, i64 16 %72 = load ptr, ptr %sunkaddr266, align 8, !tbaa !59 %call.i500 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIiEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %72, i32 noundef 187, i32 noundef 187, ptr noundef addrspacecast (ptr addrspace(4) @.str.10 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.22 to ptr), i32 114) #33 %73 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i500) %74 = extractvalue { i1, i64 } %73, 0 %75 = extractvalue { i1, i64 } %73, 1 br i1 %74, label %if.end173, label %Flow269 if.end173: ; preds = %if.end164 %sunkaddr267 = getelementptr inbounds i8, ptr %this, i64 16 %76 = load ptr, ptr %sunkaddr267, align 8, !tbaa !59 %call.i503 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %76, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.6 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 115) #33 %77 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i503) %78 = extractvalue { i1, i64 } %77, 0 %79 = extractvalue { i1, i64 } %77, 1 br i1 %78, label %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit200, label %Flow _ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit200: ; preds = %if.end173 %sunkaddr268 = getelementptr inbounds i8, ptr %this, i64 16 %80 = load ptr, ptr %sunkaddr268, align 8, !tbaa !59 %81 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %80, i1 noundef zeroext false, i1 noundef zeroext false, ptr noundef addrspacecast (ptr addrspace(4) @.str.3 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.8 to ptr), i32 119) #33 br label %Flow, !amdgpu.uniform !42 Flow: ; preds = %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit200, %if.end173 call void @llvm.amdgcn.end.cf.i64(i64 %79) br label %Flow269, !amdgpu.uniform !42 Flow269: ; preds = %Flow, %if.end164 call void @llvm.amdgcn.end.cf.i64(i64 %75) br label %Flow270, !amdgpu.uniform !42 Flow270: ; preds = %Flow269, %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit170 call void @llvm.amdgcn.end.cf.i64(i64 %71) br label %Flow271, !amdgpu.uniform !42 Flow271: ; preds = %Flow270, %if.end144 call void @llvm.amdgcn.end.cf.i64(i64 %67) br label %Flow272, !amdgpu.uniform !42 Flow272: ; preds = %Flow271, %if.end135 call void @llvm.amdgcn.end.cf.i64(i64 %63) br label %Flow273, !amdgpu.uniform !42 Flow273: ; preds = %Flow272, %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit140 call void @llvm.amdgcn.end.cf.i64(i64 %59) br label %Flow274, !amdgpu.uniform !42 Flow274: ; preds = %Flow273, %if.end115 call void @llvm.amdgcn.end.cf.i64(i64 %55) br label %Flow275, !amdgpu.uniform !42 Flow275: ; preds = %Flow274, %if.end106 call void @llvm.amdgcn.end.cf.i64(i64 %51) br label %Flow276, !amdgpu.uniform !42 Flow276: ; preds = %Flow275, %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit110 call void @llvm.amdgcn.end.cf.i64(i64 %47) br label %Flow277, !amdgpu.uniform !42 Flow277: ; preds = %Flow276, %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter4pushEDi.exit77 call void @llvm.amdgcn.end.cf.i64(i64 %43) br label %Flow278, !amdgpu.uniform !42 Flow278: ; preds = %Flow277, %if.end78 call void @llvm.amdgcn.end.cf.i64(i64 %39) br label %Flow279, !amdgpu.uniform !42 Flow279: ; preds = %Flow278, %if.end69 call void @llvm.amdgcn.end.cf.i64(i64 %35) br label %Flow280, !amdgpu.uniform !42 Flow280: ; preds = %Flow279, %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit69 call void @llvm.amdgcn.end.cf.i64(i64 %31) br label %Flow281, !amdgpu.uniform !42 Flow281: ; preds = %Flow280, %if.end49 call void @llvm.amdgcn.end.cf.i64(i64 %27) br label %Flow282, !amdgpu.uniform !42 Flow282: ; preds = %Flow281, %if.end40 call void @llvm.amdgcn.end.cf.i64(i64 %23) br label %Flow283, !amdgpu.uniform !42 Flow283: ; preds = %Flow282, %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit39 call void @llvm.amdgcn.end.cf.i64(i64 %19) br label %Flow284, !amdgpu.uniform !42 Flow284: ; preds = %Flow283, %if.end21 call void @llvm.amdgcn.end.cf.i64(i64 %15) br label %Flow285, !amdgpu.uniform !42 Flow285: ; preds = %Flow284, %if.end13 call void @llvm.amdgcn.end.cf.i64(i64 %11) br label %Flow286, !amdgpu.uniform !42 Flow286: ; preds = %Flow285, %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit call void @llvm.amdgcn.end.cf.i64(i64 %7) br label %UnifiedReturnBlock, !amdgpu.uniform !42 UnifiedReturnBlock: ; preds = %entry, %Flow286 call void @llvm.amdgcn.end.cf.i64(i64 %3) ret void } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) define internal noundef ptr @_ZNK48LlvmLibcCharacterConverterUTF32To8Test_ThreeByte7getNameEv(ptr nonnull readnone align 8 captures(none) %this) unnamed_addr #6 comdat align 2 { entry: ret ptr addrspacecast (ptr addrspace(4) @.str.49 to ptr) } ; Function Attrs: cold inlinehint mustprogress noreturn nounwind memory(inaccessiblemem: write) define internal void @_ZN46LlvmLibcCharacterConverterUTF32To8Test_TwoByteD0Ev(ptr noundef nonnull readnone align 8 captures(none) dereferenceable(24) %this) unnamed_addr #7 comdat align 2 !section_prefix !58 { entry: tail call void @llvm.trap() unreachable } ; Function Attrs: convergent mustprogress nofree norecurse nounwind define internal void @_ZN46LlvmLibcCharacterConverterUTF32To8Test_TwoByte3RunEv(ptr noundef nonnull readonly align 8 captures(none) dereferenceable(24) %this) unnamed_addr #8 align 2 { entry: %Ctx.i = getelementptr inbounds nuw i8, ptr %this, i64 16 %0 = load ptr, ptr %Ctx.i, align 8, !tbaa !59 %call.i = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %0, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 50) #33 %1 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i) %2 = extractvalue { i1, i64 } %1, 0 %3 = extractvalue { i1, i64 } %1, 1 br i1 %2, label %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit, label %UnifiedReturnBlock _ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit: ; preds = %entry %sunkaddr = getelementptr inbounds i8, ptr %this, i64 16 %4 = load ptr, ptr %sunkaddr, align 8, !tbaa !59 %call.i309 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %4, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.3 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 52) #33 %5 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i309) %6 = extractvalue { i1, i64 } %5, 0 %7 = extractvalue { i1, i64 } %5, 1 br i1 %6, label %if.end13, label %Flow200 if.end13: ; preds = %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit %sunkaddr176 = getelementptr inbounds i8, ptr %this, i64 16 %8 = load ptr, ptr %sunkaddr176, align 8, !tbaa !59 %call.i312 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIiEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %8, i32 noundef poison, i32 noundef 195, ptr noundef addrspacecast (ptr addrspace(4) @.str.10 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.11 to ptr), i32 53) #33 %9 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i312) %10 = extractvalue { i1, i64 } %9, 0 %11 = extractvalue { i1, i64 } %9, 1 br i1 %10, label %if.end21, label %Flow199 if.end21: ; preds = %if.end13 %sunkaddr177 = getelementptr inbounds i8, ptr %this, i64 16 %12 = load ptr, ptr %sunkaddr177, align 8, !tbaa !59 %call.i315 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %12, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.12 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 54) #33 %13 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i315) %14 = extractvalue { i1, i64 } %13, 0 %15 = extractvalue { i1, i64 } %13, 1 br i1 %14, label %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit39, label %Flow198 _ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit39: ; preds = %if.end21 %sunkaddr178 = getelementptr inbounds i8, ptr %this, i64 16 %16 = load ptr, ptr %sunkaddr178, align 8, !tbaa !59 %call.i320 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %16, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.3 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 56) #33 %17 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i320) %18 = extractvalue { i1, i64 } %17, 0 %19 = extractvalue { i1, i64 } %17, 1 br i1 %18, label %if.end40, label %Flow197 if.end40: ; preds = %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit39 %sunkaddr179 = getelementptr inbounds i8, ptr %this, i64 16 %20 = load ptr, ptr %sunkaddr179, align 8, !tbaa !59 %call.i323 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIiEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %20, i32 noundef 191, i32 noundef 191, ptr noundef addrspacecast (ptr addrspace(4) @.str.10 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.13 to ptr), i32 57) #33 %21 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i323) %22 = extractvalue { i1, i64 } %21, 0 %23 = extractvalue { i1, i64 } %21, 1 br i1 %22, label %if.end49, label %Flow196 if.end49: ; preds = %if.end40 %sunkaddr180 = getelementptr inbounds i8, ptr %this, i64 16 %24 = load ptr, ptr %sunkaddr180, align 8, !tbaa !59 %call.i326 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %24, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.6 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 58) #33 %25 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i326) %26 = extractvalue { i1, i64 } %25, 0 %27 = extractvalue { i1, i64 } %25, 1 br i1 %26, label %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter4pushEDi.exit47, label %Flow195 _ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter4pushEDi.exit47: ; preds = %if.end49 %sunkaddr181 = getelementptr inbounds i8, ptr %this, i64 16 %28 = load ptr, ptr %sunkaddr181, align 8, !tbaa !59 %call.i329 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %28, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 63) #33 %29 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i329) %30 = extractvalue { i1, i64 } %29, 0 %31 = extractvalue { i1, i64 } %29, 1 br i1 %30, label %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit80, label %Flow194 _ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit80: ; preds = %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter4pushEDi.exit47 %sunkaddr182 = getelementptr inbounds i8, ptr %this, i64 16 %32 = load ptr, ptr %sunkaddr182, align 8, !tbaa !59 %call.i334 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %32, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.3 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 65) #33 %33 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i334) %34 = extractvalue { i1, i64 } %33, 0 %35 = extractvalue { i1, i64 } %33, 1 br i1 %34, label %if.end77, label %Flow193 if.end77: ; preds = %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit80 %sunkaddr183 = getelementptr inbounds i8, ptr %this, i64 16 %36 = load ptr, ptr %sunkaddr183, align 8, !tbaa !59 %call.i337 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIiEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %36, i32 noundef poison, i32 noundef 214, ptr noundef addrspacecast (ptr addrspace(4) @.str.10 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.14 to ptr), i32 66) #33 %37 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i337) %38 = extractvalue { i1, i64 } %37, 0 %39 = extractvalue { i1, i64 } %37, 1 br i1 %38, label %if.end86, label %Flow192 if.end86: ; preds = %if.end77 %sunkaddr184 = getelementptr inbounds i8, ptr %this, i64 16 %40 = load ptr, ptr %sunkaddr184, align 8, !tbaa !59 %call.i340 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %40, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.12 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 67) #33 %41 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i340) %42 = extractvalue { i1, i64 } %41, 0 %43 = extractvalue { i1, i64 } %41, 1 br i1 %42, label %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit110, label %Flow191 _ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit110: ; preds = %if.end86 %sunkaddr185 = getelementptr inbounds i8, ptr %this, i64 16 %44 = load ptr, ptr %sunkaddr185, align 8, !tbaa !59 %call.i345 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %44, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.3 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 69) #33 %45 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i345) %46 = extractvalue { i1, i64 } %45, 0 %47 = extractvalue { i1, i64 } %45, 1 br i1 %46, label %if.end106, label %Flow190 if.end106: ; preds = %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit110 %sunkaddr186 = getelementptr inbounds i8, ptr %this, i64 16 %48 = load ptr, ptr %sunkaddr186, align 8, !tbaa !59 %call.i348 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIiEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %48, i32 noundef 142, i32 noundef 142, ptr noundef addrspacecast (ptr addrspace(4) @.str.10 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.15 to ptr), i32 70) #33 %49 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i348) %50 = extractvalue { i1, i64 } %49, 0 %51 = extractvalue { i1, i64 } %49, 1 br i1 %50, label %if.end115, label %Flow189 if.end115: ; preds = %if.end106 %sunkaddr187 = getelementptr inbounds i8, ptr %this, i64 16 %52 = load ptr, ptr %sunkaddr187, align 8, !tbaa !59 %call.i351 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %52, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.6 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 71) #33 %53 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i351) %54 = extractvalue { i1, i64 } %53, 0 %55 = extractvalue { i1, i64 } %53, 1 br i1 %54, label %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit140, label %Flow _ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit140: ; preds = %if.end115 %sunkaddr188 = getelementptr inbounds i8, ptr %this, i64 16 %56 = load ptr, ptr %sunkaddr188, align 8, !tbaa !59 %57 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %56, i1 noundef zeroext false, i1 noundef zeroext false, ptr noundef addrspacecast (ptr addrspace(4) @.str.3 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.8 to ptr), i32 75) #33 br label %Flow, !amdgpu.uniform !42 Flow: ; preds = %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit140, %if.end115 call void @llvm.amdgcn.end.cf.i64(i64 %55) br label %Flow189, !amdgpu.uniform !42 Flow189: ; preds = %Flow, %if.end106 call void @llvm.amdgcn.end.cf.i64(i64 %51) br label %Flow190, !amdgpu.uniform !42 Flow190: ; preds = %Flow189, %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit110 call void @llvm.amdgcn.end.cf.i64(i64 %47) br label %Flow191, !amdgpu.uniform !42 Flow191: ; preds = %Flow190, %if.end86 call void @llvm.amdgcn.end.cf.i64(i64 %43) br label %Flow192, !amdgpu.uniform !42 Flow192: ; preds = %Flow191, %if.end77 call void @llvm.amdgcn.end.cf.i64(i64 %39) br label %Flow193, !amdgpu.uniform !42 Flow193: ; preds = %Flow192, %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit80 call void @llvm.amdgcn.end.cf.i64(i64 %35) br label %Flow194, !amdgpu.uniform !42 Flow194: ; preds = %Flow193, %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter4pushEDi.exit47 call void @llvm.amdgcn.end.cf.i64(i64 %31) br label %Flow195, !amdgpu.uniform !42 Flow195: ; preds = %Flow194, %if.end49 call void @llvm.amdgcn.end.cf.i64(i64 %27) br label %Flow196, !amdgpu.uniform !42 Flow196: ; preds = %Flow195, %if.end40 call void @llvm.amdgcn.end.cf.i64(i64 %23) br label %Flow197, !amdgpu.uniform !42 Flow197: ; preds = %Flow196, %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit39 call void @llvm.amdgcn.end.cf.i64(i64 %19) br label %Flow198, !amdgpu.uniform !42 Flow198: ; preds = %Flow197, %if.end21 call void @llvm.amdgcn.end.cf.i64(i64 %15) br label %Flow199, !amdgpu.uniform !42 Flow199: ; preds = %Flow198, %if.end13 call void @llvm.amdgcn.end.cf.i64(i64 %11) br label %Flow200, !amdgpu.uniform !42 Flow200: ; preds = %Flow199, %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit call void @llvm.amdgcn.end.cf.i64(i64 %7) br label %UnifiedReturnBlock, !amdgpu.uniform !42 UnifiedReturnBlock: ; preds = %entry, %Flow200 call void @llvm.amdgcn.end.cf.i64(i64 %3) ret void } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) define internal noundef ptr @_ZNK46LlvmLibcCharacterConverterUTF32To8Test_TwoByte7getNameEv(ptr nonnull readnone align 8 captures(none) %this) unnamed_addr #6 comdat align 2 { entry: ret ptr addrspacecast (ptr addrspace(4) @.str.48 to ptr) } ; Function Attrs: cold inlinehint mustprogress noreturn nounwind memory(inaccessiblemem: write) define internal void @_ZN46LlvmLibcCharacterConverterUTF32To8Test_OneByteD0Ev(ptr noundef nonnull readnone align 8 captures(none) dereferenceable(24) %this) unnamed_addr #7 comdat align 2 !section_prefix !58 { entry: tail call void @llvm.trap() unreachable } ; Function Attrs: convergent mustprogress nofree norecurse nounwind define internal void @_ZN46LlvmLibcCharacterConverterUTF32To8Test_OneByte3RunEv(ptr noundef nonnull readonly align 8 captures(none) dereferenceable(24) %this) unnamed_addr #8 align 2 { entry: %Ctx.i = getelementptr inbounds nuw i8, ptr %this, i64 16 %0 = load ptr, ptr %Ctx.i, align 8, !tbaa !59 %call.i = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %0, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 23) #33 %1 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i) %2 = extractvalue { i1, i64 } %1, 0 %3 = extractvalue { i1, i64 } %1, 1 br i1 %2, label %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit, label %UnifiedReturnBlock _ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit: ; preds = %entry %sunkaddr = getelementptr inbounds i8, ptr %this, i64 16 %4 = load ptr, ptr %sunkaddr, align 8, !tbaa !59 %call.i179 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %4, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.3 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 25) #33 %5 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i179) %6 = extractvalue { i1, i64 } %5, 0 %7 = extractvalue { i1, i64 } %5, 1 br i1 %6, label %if.end13, label %Flow114 if.end13: ; preds = %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit %sunkaddr102 = getelementptr inbounds i8, ptr %this, i64 16 %8 = load ptr, ptr %sunkaddr102, align 8, !tbaa !59 %call.i182 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIcEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %8, i8 noundef signext poison, i8 noundef signext 65, ptr noundef addrspacecast (ptr addrspace(4) @.str.5 to ptr), i32 26) #33 %9 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i182) %10 = extractvalue { i1, i64 } %9, 0 %11 = extractvalue { i1, i64 } %9, 1 br i1 %10, label %if.end21, label %Flow113 if.end21: ; preds = %if.end13 %sunkaddr103 = getelementptr inbounds i8, ptr %this, i64 16 %12 = load ptr, ptr %sunkaddr103, align 8, !tbaa !59 %call.i185 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %12, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.6 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 27) #33 %13 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i185) %14 = extractvalue { i1, i64 } %13, 0 %15 = extractvalue { i1, i64 } %13, 1 br i1 %14, label %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter4pushEDi.exit17, label %Flow112 _ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter4pushEDi.exit17: ; preds = %if.end21 %sunkaddr104 = getelementptr inbounds i8, ptr %this, i64 16 %16 = load ptr, ptr %sunkaddr104, align 8, !tbaa !59 %call.i188 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %16, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 31) #33 %17 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i188) %18 = extractvalue { i1, i64 } %17, 0 %19 = extractvalue { i1, i64 } %17, 1 br i1 %18, label %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit50, label %Flow111 _ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit50: ; preds = %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter4pushEDi.exit17 %sunkaddr105 = getelementptr inbounds i8, ptr %this, i64 16 %20 = load ptr, ptr %sunkaddr105, align 8, !tbaa !59 %call.i193 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %20, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.3 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 33) #33 %21 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i193) %22 = extractvalue { i1, i64 } %21, 0 %23 = extractvalue { i1, i64 } %21, 1 br i1 %22, label %if.end49, label %Flow110 if.end49: ; preds = %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit50 %sunkaddr106 = getelementptr inbounds i8, ptr %this, i64 16 %24 = load ptr, ptr %sunkaddr106, align 8, !tbaa !59 %call.i196 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIcEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %24, i8 noundef signext poison, i8 noundef signext 66, ptr noundef addrspacecast (ptr addrspace(4) @.str.7 to ptr), i32 34) #33 %25 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i196) %26 = extractvalue { i1, i64 } %25, 0 %27 = extractvalue { i1, i64 } %25, 1 br i1 %26, label %if.end57, label %Flow109 if.end57: ; preds = %if.end49 %sunkaddr107 = getelementptr inbounds i8, ptr %this, i64 16 %28 = load ptr, ptr %sunkaddr107, align 8, !tbaa !59 %call.i199 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %28, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef addrspacecast (ptr addrspace(4) @.str.6 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.1 to ptr), i32 35) #33 %29 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %call.i199) %30 = extractvalue { i1, i64 } %29, 0 %31 = extractvalue { i1, i64 } %29, 1 br i1 %30, label %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit80, label %Flow _ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit80: ; preds = %if.end57 %sunkaddr108 = getelementptr inbounds i8, ptr %this, i64 16 %32 = load ptr, ptr %sunkaddr108, align 8, !tbaa !59 %33 = tail call fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef %32, i1 noundef zeroext false, i1 noundef zeroext false, ptr noundef addrspacecast (ptr addrspace(4) @.str.3 to ptr), ptr noundef addrspacecast (ptr addrspace(4) @.str.8 to ptr), i32 39) #33 br label %Flow, !amdgpu.uniform !42 Flow: ; preds = %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit80, %if.end57 call void @llvm.amdgcn.end.cf.i64(i64 %31) br label %Flow109, !amdgpu.uniform !42 Flow109: ; preds = %Flow, %if.end49 call void @llvm.amdgcn.end.cf.i64(i64 %27) br label %Flow110, !amdgpu.uniform !42 Flow110: ; preds = %Flow109, %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit50 call void @llvm.amdgcn.end.cf.i64(i64 %23) br label %Flow111, !amdgpu.uniform !42 Flow111: ; preds = %Flow110, %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter4pushEDi.exit17 call void @llvm.amdgcn.end.cf.i64(i64 %19) br label %Flow112, !amdgpu.uniform !42 Flow112: ; preds = %Flow111, %if.end21 call void @llvm.amdgcn.end.cf.i64(i64 %15) br label %Flow113, !amdgpu.uniform !42 Flow113: ; preds = %Flow112, %if.end13 call void @llvm.amdgcn.end.cf.i64(i64 %11) br label %Flow114, !amdgpu.uniform !42 Flow114: ; preds = %Flow113, %_ZN22__llvm_libc_22_0_0_git8internal18CharacterConverter8pop_utf8Ev.exit call void @llvm.amdgcn.end.cf.i64(i64 %7) br label %UnifiedReturnBlock, !amdgpu.uniform !42 UnifiedReturnBlock: ; preds = %entry, %Flow114 call void @llvm.amdgcn.end.cf.i64(i64 %3) ret void } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) define internal noundef ptr @_ZNK46LlvmLibcCharacterConverterUTF32To8Test_OneByte7getNameEv(ptr nonnull readnone align 8 captures(none) %this) unnamed_addr #6 comdat align 2 { entry: ret ptr addrspacecast (ptr addrspace(4) @.str.47 to ptr) } ; Function Attrs: convergent mustprogress nofree norecurse nounwind define internal fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIcEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef writeonly captures(none) %Ctx, i8 noundef signext %LHS, i8 noundef signext range(i8 65, 67) %RHS, ptr noundef %RHSStr, i32 range(i32 26, 35) %Loc.coerce1) unnamed_addr #8 comdat { entry: %buffer.i.i.i = alloca %"class.__llvm_libc_22_0_0_git::IntegerToString", align 8, addrspace(5) %buffer.i.i.i91.i = alloca %"class.__llvm_libc_22_0_0_git::IntegerToString", align 8, addrspace(5) %buffer.i.i.i.i = alloca %"class.__llvm_libc_22_0_0_git::IntegerToString", align 8, addrspace(5) %cmp = icmp eq i8 %LHS, %RHS %cmp.inv = xor i1 %cmp, true %0 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.inv) %1 = extractvalue { i1, i64 } %0, 0 %2 = extractvalue { i1, i64 } %0, 1 br i1 %1, label %if.end.i, label %Flow3892 if.end.i: ; preds = %entry store i8 1, ptr %Ctx, align 1, !tbaa !65 %spec.select.i = tail call i64 @llvm.usub.sat.i64(i64 sub (i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.9, i64 8) to ptr) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.9 to ptr) to i64)), i64 2) %cmp.i.not.i.i = icmp uge i64 sub (i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.9, i64 8) to ptr) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.9 to ptr) to i64)), 3 br i1 %cmp.i.not.i.i, label %if.then.i.i.i, label %Flow3891, !amdgpu.uniform !42 if.then.i.i.i: ; preds = %if.end.i %inc.i.i.i.i = add nuw i64 %spec.select.i, 1 %cmp2.i.i.i.i = icmp ult i64 %spec.select.i, 1676976733973595600 br i1 %cmp2.i.i.i.i, label %if.then3.i.i.i.i, label %if.end4.i.i.i.i, !amdgpu.uniform !42 if.then3.i.i.i.i: ; preds = %if.then.i.i.i %mul.i.i.i.i = mul nuw i64 %inc.i.i.i.i, 11 %div18.i.i.i.i = lshr i64 %mul.i.i.i.i, 3 br label %if.end4.i.i.i.i, !amdgpu.uniform !42 Flow3891: ; preds = %Flow3890, %if.end.i %3 = phi ptr [ %cond.i.i, %Flow3890 ], [ addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr), %if.end.i ] br label %if.end.i.i.i, !amdgpu.uniform !42 if.end4.i.i.i.i: ; preds = %if.then3.i.i.i.i, %if.then.i.i.i %new_capacity.addr.0.i.i.i.i = phi i64 [ %div18.i.i.i.i, %if.then3.i.i.i.i ], [ %inc.i.i.i.i, %if.then.i.i.i ] %sub.i.i = add i64 %new_capacity.addr.0.i.i.i.i, 7 %div2.i.i = and i64 %sub.i.i, -8 %4 = load ptr, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %add.ptr.i.i = getelementptr inbounds nuw i8, ptr %4, i64 %div2.i.i store ptr %add.ptr.i.i, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %sub.ptr.lhs.cast.i.i = ptrtoint ptr %add.ptr.i.i to i64 %sub.ptr.sub.i.i = sub i64 %sub.ptr.lhs.cast.i.i, ptrtoint (ptr addrspacecast (ptr addrspace(1) @_ZN12_GLOBAL__N_16memoryE to ptr) to i64) %cmp.i.i = icmp ugt i64 %sub.ptr.sub.i.i, 65335 %cond.i.i = select i1 %cmp.i.i, ptr null, ptr %4 %5 = icmp ne i64 0, %spec.select.i br i1 %5, label %loadstoreloop2192.preheader, label %Flow3890, !amdgpu.uniform !42 loadstoreloop2192.preheader: ; preds = %if.end4.i.i.i.i br label %loadstoreloop2192, !amdgpu.uniform !42 Flow3890: ; preds = %Flow3889, %if.end4.i.i.i.i br label %Flow3891, !amdgpu.uniform !42 loadstoreloop2192: ; preds = %loadstoreloop2192.preheader, %loadstoreloop2192 %6 = phi i64 [ %8, %loadstoreloop2192 ], [ 0, %loadstoreloop2192.preheader ] %7 = getelementptr i8, ptr %4, i64 %6 store i8 0, ptr %7, align 1 %8 = add i64 %6, 1 %9 = icmp uge i64 %8, %spec.select.i br i1 %9, label %Flow3889, label %loadstoreloop2192, !amdgpu.uniform !42 Flow3889: ; preds = %loadstoreloop2192 br label %Flow3890, !amdgpu.uniform !42 Flow3892: ; preds = %2702, %entry call void @llvm.amdgcn.end.cf.i64(i64 %2) br label %_ZZN22__llvm_libc_22_0_0_git7testing8internal4testIcEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationEENKUlbNS_3cpp11string_viewEE_clEbSB_.exit, !amdgpu.uniform !42 if.end.i.i.i: ; preds = %Flow3891 %cmp.not.i6.i.i.i = icmp ne ptr %3, addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr) br i1 %cmp.not.i6.i.i.i, label %if.then.i.i.i.i, label %_ZN22__llvm_libc_22_0_0_git3cpp6stringC2Emc.exit.i, !amdgpu.uniform !42 if.then.i.i.i.i: ; preds = %if.end.i.i.i %arrayidx.i.i.i.i = getelementptr inbounds nuw i8, ptr %3, i64 %spec.select.i store i8 0, ptr %arrayidx.i.i.i.i, align 1, !tbaa !57 br label %_ZN22__llvm_libc_22_0_0_git3cpp6stringC2Emc.exit.i, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git3cpp6stringC2Emc.exit.i: ; preds = %if.then.i.i.i.i, %if.end.i.i.i %10 = icmp ne i64 0, %spec.select.i br i1 %10, label %loadstoreloop2190.preheader, label %Flow3888, !amdgpu.uniform !42 loadstoreloop2190.preheader: ; preds = %_ZN22__llvm_libc_22_0_0_git3cpp6stringC2Emc.exit.i br label %loadstoreloop2190, !amdgpu.uniform !42 Flow3888: ; preds = %Flow3887, %_ZN22__llvm_libc_22_0_0_git3cpp6stringC2Emc.exit.i br label %split2189, !amdgpu.uniform !42 loadstoreloop2190: ; preds = %loadstoreloop2190.preheader, %loadstoreloop2190 %11 = phi i64 [ %13, %loadstoreloop2190 ], [ 0, %loadstoreloop2190.preheader ] %12 = getelementptr i8, ptr %3, i64 %11 store i8 32, ptr %12, align 1 %13 = add i64 %11, 1 %14 = icmp uge i64 %13, %spec.select.i br i1 %14, label %Flow3887, label %loadstoreloop2190, !amdgpu.uniform !42 Flow3887: ; preds = %loadstoreloop2190 br label %Flow3888, !amdgpu.uniform !42 split2189: ; preds = %Flow3888 %15 = tail call i32 @llvm.amdgcn.mbcnt.lo(i32 -1, i32 0) %16 = tail call noundef i32 @llvm.amdgcn.mbcnt.hi(i32 -1, i32 %15) %sh_prom.i.i.i.i = zext i32 %16 to i64 br label %for.cond.i.i1.i, !amdgpu.uniform !42 for.cond.i.i1.i: ; preds = %split2189, %Flow3886 %17 = phi i32 [ %55, %Flow3886 ], [ poison, %split2189 ] %18 = phi i64 [ %56, %Flow3886 ], [ poison, %split2189 ] %19 = phi i32 [ %57, %Flow3886 ], [ poison, %split2189 ] %retval.sroa.6.0.i.i.i = phi i32 [ %60, %Flow3886 ], [ undef, %split2189 ] %retval.sroa.2.0.i.i.i = phi i64 [ %59, %Flow3886 ], [ undef, %split2189 ] %retval.sroa.8.0.i.i.i = phi i32 [ %58, %Flow3886 ], [ undef, %split2189 ] %index.0.i.i.i = phi i32 [ %62, %Flow3886 ], [ 0, %split2189 ] %20 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i = icmp ult i32 %index.0.i.i.i, %20 %spec.store.select.i.i.i = select i1 %cmp.not.i.i.i, i32 %index.0.i.i.i, i32 0 %21 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %22 = and i32 %spec.store.select.i.i.i, 31 %23 = lshr i64 %21, %sh_prom.i.i.i.i %24 = trunc i64 %23 to i32 %conv4.i.i.i.i.i = and i32 %24, 1 %shl.i.i.i.i.i = shl nuw i32 %conv4.i.i.i.i.i, %22 %25 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop, !amdgpu.uniform !42 26: ; preds = %ComputeEnd %sunkaddr = getelementptr inbounds i8, ptr addrspace(1) %2931, i64 40 %27 = atomicrmw or ptr addrspace(1) %sunkaddr, i32 %.lcssa4195 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %28, !amdgpu.uniform !42 28: ; preds = %26, %ComputeEnd %29 = phi i32 [ %27, %26 ], [ poison, %ComputeEnd ] call void @llvm.amdgcn.end.cf.i64(i64 %2940) %30 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %29) %31 = or i32 %30, %.lcssa4196 %shl5.i.i.i.i.i = shl nuw i32 1, %22 %and.i.i.i.i.i = and i32 %shl5.i.i.i.i.i, %31 %tobool3.i.i.i.i = icmp ne i32 %and.i.i.i.i.i, 0 %32 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i) %and.i.i.i.i.i.i = and i64 %32, %21 %cmp.i.not.i.i.i = icmp ne i64 %21, %and.i.i.i.i.i.i br i1 %cmp.i.not.i.i.i, label %if.then.i.i.i.i2, label %Flow3885, !amdgpu.uniform !42 if.then.i.i.i.i2: ; preds = %28 fence syncscope("agent") acquire %33 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %34 = extractelement <2 x i64> %33, i32 0 %35 = inttoptr i64 %34 to ptr %36 = extractelement <2 x i64> %33, i32 1 %37 = inttoptr i64 %36 to ptr %idxprom.i.i.i.i = zext i32 %spec.store.select.i.i.i to i64 %arrayidx.i.i.i.i3 = getelementptr inbounds nuw i32, ptr %35, i64 %idxprom.i.i.i.i, !amdgpu.uniform !42 %38 = load atomic i32, ptr %arrayidx.i.i.i.i3 monotonic, align 4 %39 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %38) %arrayidx.i45.i.i.i = getelementptr inbounds nuw i32, ptr %37, i64 %idxprom.i.i.i.i, !amdgpu.uniform !42 %40 = load atomic i32, ptr %arrayidx.i45.i.i.i monotonic, align 4 %41 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %40) %cmp.i46.not.i.i.i = icmp ne i32 %39, %41 br i1 %cmp.i46.not.i.i.i, label %if.then12.i.i.i, label %Flow3883, !amdgpu.uniform !42 if.then12.i.i.i: ; preds = %if.then.i.i.i.i2 fence syncscope("agent") release %42 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %21, i1 true) %iszero.i.i.i.i.i.i.i = icmp ne i64 %21, 0 %cmp2.i.i.i.i.i.i = icmp eq i64 %42, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i = select i1 %iszero.i.i.i.i.i.i.i, i1 %cmp2.i.i.i.i.i.i, i1 false %conv4.i.i51.i.i.i = zext i1 %cmp.i.i.i.i.i.i to i32 %shl.i.i52.i.i.i = shl nuw i32 %conv4.i.i51.i.i.i, %22 %xor.i.i.i.i.i = xor i32 %shl.i.i52.i.i.i, -1 %43 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2427, !amdgpu.uniform !42 44: ; preds = %ComputeEnd2428 %sunkaddr3272 = getelementptr inbounds i8, ptr addrspace(1) %2931, i64 40 %45 = atomicrmw and ptr addrspace(1) %sunkaddr3272, i32 %.lcssa4197 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %46, !amdgpu.uniform !42 46: ; preds = %44, %ComputeEnd2428 call void @llvm.amdgcn.end.cf.i64(i64 %2958) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3883, !amdgpu.uniform !42 if.end14.i.i.i: ; preds = %Flow3883 %47 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %21, i1 true) %iszero.i.i.i.i.i.i = icmp ne i64 %21, 0 %cmp2.i.i.i.i.i = icmp eq i64 %47, %sh_prom.i.i.i.i %cmp.i.i.i.i.i = select i1 %iszero.i.i.i.i.i.i, i1 %cmp2.i.i.i.i.i, i1 false %48 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i) %49 = extractvalue { i1, i64 } %48, 0 %50 = extractvalue { i1, i64 } %48, 1 br i1 %49, label %if.then16.i.i.i, label %if.end22.i.i.i if.then16.i.i.i: ; preds = %if.end14.i.i.i %51 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i = getelementptr inbounds nuw %"struct.rpc::Header", ptr %51, i64 %idxprom.i.i.i.i, i32 1 store i32 1660944387, ptr %opcode.i.i.i, align 8, !tbaa !77 %arrayidx21.i.i.i = getelementptr inbounds nuw %"struct.rpc::Header", ptr %51, i64 %idxprom.i.i.i.i store i64 %21, ptr %arrayidx21.i.i.i, align 8, !tbaa !80 br label %if.end22.i.i.i, !amdgpu.uniform !42 Flow3884: ; preds = %if.end22.i.i.i, %Flow3883 %52 = phi i32 [ %39, %if.end22.i.i.i ], [ %retval.sroa.8.0.i.i.i, %Flow3883 ] %53 = phi i64 [ %21, %if.end22.i.i.i ], [ %retval.sroa.2.0.i.i.i, %Flow3883 ] %54 = phi i32 [ %spec.store.select.i.i.i, %if.end22.i.i.i ], [ %retval.sroa.6.0.i.i.i, %Flow3883 ] br label %cleanup26.i.i.i, !amdgpu.uniform !42 if.end22.i.i.i: ; preds = %if.then16.i.i.i, %if.end14.i.i.i call void @llvm.amdgcn.end.cf.i64(i64 %50) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3884, !amdgpu.uniform !42 Flow3885: ; preds = %cleanup26.i.i.i, %28 %55 = phi i32 [ %54, %cleanup26.i.i.i ], [ %17, %28 ] %56 = phi i64 [ %53, %cleanup26.i.i.i ], [ %18, %28 ] %57 = phi i32 [ %52, %cleanup26.i.i.i ], [ %19, %28 ] %58 = phi i32 [ %52, %cleanup26.i.i.i ], [ %retval.sroa.8.0.i.i.i, %28 ] %59 = phi i64 [ %53, %cleanup26.i.i.i ], [ %retval.sroa.2.0.i.i.i, %28 ] %60 = phi i32 [ %54, %cleanup26.i.i.i ], [ %retval.sroa.6.0.i.i.i, %28 ] %61 = phi i1 [ %cmp.i46.not.i.i.i, %cleanup26.i.i.i ], [ true, %28 ] br i1 %61, label %for.inc.i.i.i, label %Flow3886, !amdgpu.uniform !42 cleanup26.i.i.i: ; preds = %Flow3884 br label %Flow3885, !amdgpu.uniform !42 for.inc.i.i.i: ; preds = %Flow3885 %inc.i.i.i = add i32 %spec.store.select.i.i.i, 1 br label %Flow3886, !amdgpu.uniform !42 Flow3886: ; preds = %for.inc.i.i.i, %Flow3885 %62 = phi i32 [ %inc.i.i.i, %for.inc.i.i.i ], [ poison, %Flow3885 ] %63 = phi i1 [ false, %for.inc.i.i.i ], [ true, %Flow3885 ] br i1 %63, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i, label %for.cond.i.i1.i, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i: ; preds = %Flow3886 %.lcssa4200 = phi i32 [ %55, %Flow3886 ] %.lcssa4199 = phi i64 [ %56, %Flow3886 ] %.lcssa4198 = phi i32 [ %57, %Flow3886 ] fence acquire %64 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i = shl i32 %.lcssa4200, 6 %idxprom.i19.i.i.i.i.i = zext i32 %mul.i.i.i.i.i.i to i64 %arrayidx.i20.i.i.i.i.i = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %64, i64 %idxprom.i19.i.i.i.i.i %arrayidx.i22.i.i.i.i.i = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i, i64 %sh_prom.i.i.i.i store i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.2 to ptr), i64 81) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.2 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i = tail call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.2 to ptr), i64 81) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.2 to ptr) to i64)), i64 56) %65 = and i64 %spec.select.i.i.i.i.i.i.i, 15 %66 = sub i64 %spec.select.i.i.i.i.i.i.i, %65 %67 = icmp ne i64 %66, 0 br i1 %67, label %loop-memcpy-expansion2308.preheader, label %Flow3882, !amdgpu.uniform !42 loop-memcpy-expansion2308.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i %68 = shl nuw nsw i64 %sh_prom.i.i.i.i, 6 %69 = add nuw nsw i64 %68, 8 %scevgep3235 = getelementptr i8, ptr %64, i64 %69 %70 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i, 6 %scevgep3236 = getelementptr i8, ptr %scevgep3235, i64 %70 br label %loop-memcpy-expansion2308, !amdgpu.uniform !42 Flow3882: ; preds = %Flow3881, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i br label %loop-memcpy-residual-header2311, !amdgpu.uniform !42 loop-memcpy-expansion2308: ; preds = %loop-memcpy-expansion2308.preheader, %loop-memcpy-expansion2308 %loop-index2309 = phi i64 [ %73, %loop-memcpy-expansion2308 ], [ 0, %loop-memcpy-expansion2308.preheader ] %71 = getelementptr i8, ptr addrspace(4) @.str.2, i64 %loop-index2309, !amdgpu.uniform !42 %72 = load <4 x i32>, ptr addrspace(4) %71, align 1 %scevgep3237 = getelementptr i8, ptr %scevgep3236, i64 %loop-index2309 store <4 x i32> %72, ptr %scevgep3237, align 1 %73 = add i64 %loop-index2309, 16 %74 = icmp uge i64 %73, %66 br i1 %74, label %Flow3881, label %loop-memcpy-expansion2308, !amdgpu.uniform !42 Flow3880: ; preds = %Flow3878, %Flow3879 %75 = phi i64 [ %2842, %Flow3878 ], [ %2839, %Flow3879 ] %76 = phi i64 [ %2844, %Flow3878 ], [ %2840, %Flow3879 ] br label %post-loop-memcpy-expansion2307, !amdgpu.uniform !42 loop-memcpy-residual2310: ; preds = %loop-memcpy-residual2310.preheader, %loop-memcpy-residual2310 %residual-loop-index2312 = phi i64 [ %78, %loop-memcpy-residual2310 ], [ 0, %loop-memcpy-residual2310.preheader ] %scevgep3234 = getelementptr i8, ptr addrspace(4) getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.2, i64 48), i64 %residual-loop-index2312, !amdgpu.uniform !42 %77 = load i8, ptr addrspace(4) %scevgep3234, align 1 %scevgep3233 = getelementptr i8, ptr %scevgep3232, i64 %residual-loop-index2312 store i8 %77, ptr %scevgep3233, align 1 %78 = add i64 %residual-loop-index2312, 1 %79 = icmp uge i64 %78, %65 br i1 %79, label %Flow3878, label %loop-memcpy-residual2310, !amdgpu.uniform !42 Flow3878: ; preds = %loop-memcpy-residual2310 br label %Flow3880, !amdgpu.uniform !42 post-loop-memcpy-expansion2307: ; preds = %Flow3880 %tobool.not.i.i.i.i.i.i = icmp eq i32 %.lcssa4198, 0 %conv.i.i.i.i.i.i = zext i1 %tobool.not.i.i.i.i.i.i to i32 fence release %80 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i = zext i32 %.lcssa4200 to i64 %arrayidx.i24.i.i.i.i.i = getelementptr inbounds nuw i32, ptr %80, i64 %idxprom.i23.i.i.i.i.i store atomic i32 %conv.i.i.i.i.i.i, ptr %arrayidx.i24.i.i.i.i.i monotonic, align 4 %81 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i = getelementptr inbounds nuw %"struct.rpc::Header", ptr %81, i64 %idxprom.i23.i.i.i.i.i, !amdgpu.uniform !42 %82 = load i64, ptr %arrayidx.i.i5.i.i, align 8, !tbaa !80 br label %while.cond.i.i.i.i, !amdgpu.uniform !42 while.cond.i.i.i.i: ; preds = %post-loop-memcpy-expansion2307, %Flow3877 %phi.broken = phi i64 [ 0, %post-loop-memcpy-expansion2307 ], [ %99, %Flow3877 ] %lsr.iv3224 = phi i64 [ %97, %Flow3877 ], [ 25, %post-loop-memcpy-expansion2307 ] %lsr.iv3219 = phi ptr addrspace(4) [ %96, %Flow3877 ], [ getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.2, i64 56), %post-loop-memcpy-expansion2307 ] %port.sroa.37.0.i.i = phi i32 [ %95, %Flow3877 ], [ %conv.i.i.i.i.i.i, %post-loop-memcpy-expansion2307 ] %idx.0.i.i.i.i = phi i64 [ %94, %Flow3877 ], [ 56, %post-loop-memcpy-expansion2307 ] %cmp.i.i.i.i = icmp ult i64 %idx.0.i.i.i.i, sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.2 to ptr), i64 81) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.2 to ptr) to i64)) %83 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i) %and.i.i.i.i6.i.i = and i64 %83, %82 %tobool.not.i.i.i.i = icmp ne i64 %and.i.i.i.i6.i.i, 0 %84 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i = getelementptr inbounds nuw i32, ptr %84, i64 %idxprom.i23.i.i.i.i.i, !amdgpu.uniform !42 %85 = load atomic i32, ptr %arrayidx.i22.i.i.i monotonic, align 4 %86 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i) %87 = extractvalue { i1, i64 } %86, 0 %88 = extractvalue { i1, i64 } %86, 1 br i1 %87, label %cond.false.i8.i.i.i.i, label %Flow3877 cond.false.i8.i.i.i.i: ; preds = %while.cond.i.i.i.i %89 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %85) %90 = icmp ne i32 %89, %port.sroa.37.0.i.i br i1 %90, label %while.body.i.i21.i.i.i.i.preheader, label %Flow3876, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i.preheader: ; preds = %cond.false.i8.i.i.i.i br label %while.body.i.i21.i.i.i.i, !amdgpu.uniform !42 Flow3876: ; preds = %Flow3875, %cond.false.i8.i.i.i.i br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i: ; preds = %while.body.i.i21.i.i.i.i.preheader, %while.body.i.i21.i.i.i.i tail call void @llvm.amdgcn.s.sleep(i32 2) %91 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i = getelementptr inbounds nuw i32, ptr %91, i64 %idxprom.i23.i.i.i.i.i, !amdgpu.uniform !42 %92 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i monotonic, align 4 %93 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %92) %cmp.i.not.i.i23.i.i.i.i = icmp eq i32 %93, %port.sroa.37.0.i.i br i1 %cmp.i.not.i.i23.i.i.i.i, label %Flow3875, label %while.body.i.i21.i.i.i.i, !amdgpu.uniform !42 Flow3875: ; preds = %while.body.i.i21.i.i.i.i br label %Flow3876, !amdgpu.uniform !42 Flow3877: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i, %while.cond.i.i.i.i %94 = phi i64 [ %add.i.i.i.i, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i ], [ poison, %while.cond.i.i.i.i ] %95 = phi i32 [ %conv.i.i26.i.i.i.i, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i ], [ poison, %while.cond.i.i.i.i ] %96 = phi ptr addrspace(4) [ %scevgep3220, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i ], [ poison, %while.cond.i.i.i.i ] %97 = phi i64 [ %lsr.iv.next3225, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i ], [ poison, %while.cond.i.i.i.i ] %98 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i ], [ true, %while.cond.i.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %88) %99 = call i64 @llvm.amdgcn.if.break.i64(i1 %98, i64 %phi.broken) %100 = call i1 @llvm.amdgcn.loop.i64(i64 %99) br i1 %100, label %cond.false.i.i.i, label %while.cond.i.i.i.i _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i: ; preds = %Flow3876 fence acquire br i1 %cmp.i.i.i.i, label %if.then.i.i.i.i.i.i.i4, label %Flow3874, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i4: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i %sub.i.i.i.i.i.i.i = sub nuw i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.2 to ptr), i64 81) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.2 to ptr) to i64)), %idx.0.i.i.i.i %spec.select.i.i.i36.i.i.i.i = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i, i64 64) %101 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %102 = and i64 %spec.select.i.i.i36.i.i.i.i, 15 %103 = sub i64 %spec.select.i.i.i36.i.i.i.i, %102 %104 = icmp ne i64 %103, 0 br i1 %104, label %loop-memcpy-expansion2314.preheader, label %Flow3873, !amdgpu.uniform !42 loop-memcpy-expansion2314.preheader: ; preds = %if.then.i.i.i.i.i.i.i4 %arrayidx.i20.i35.i.i.i.i = getelementptr %"struct.rpc::Buffer", ptr %101, i64 %idxprom.i19.i.i.i.i.i %arrayidx.i22.i38.i.i.i.i = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2314, !amdgpu.uniform !42 Flow3873: ; preds = %Flow3872, %if.then.i.i.i.i.i.i.i4 br label %loop-memcpy-residual-header2317, !amdgpu.uniform !42 loop-memcpy-expansion2314: ; preds = %loop-memcpy-expansion2314.preheader, %loop-memcpy-expansion2314 %loop-index2315 = phi i64 [ %107, %loop-memcpy-expansion2314 ], [ 0, %loop-memcpy-expansion2314.preheader ] %scevgep3221 = getelementptr i8, ptr addrspace(4) %lsr.iv3219, i64 %loop-index2315, !amdgpu.uniform !42 %105 = load <4 x i32>, ptr addrspace(4) %scevgep3221, align 1 %106 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i, i64 %loop-index2315 store <4 x i32> %105, ptr %106, align 1 %107 = add i64 %loop-index2315, 16 %108 = icmp uge i64 %107, %103 br i1 %108, label %Flow3872, label %loop-memcpy-expansion2314, !amdgpu.uniform !42 Flow3871: ; preds = %Flow3870, %loop-memcpy-residual-header2317 br label %Flow3874, !amdgpu.uniform !42 loop-memcpy-residual2316: ; preds = %loop-memcpy-residual2316.preheader, %loop-memcpy-residual2316 %residual-loop-index2318 = phi i64 [ %110, %loop-memcpy-residual2316 ], [ 0, %loop-memcpy-residual2316.preheader ] %scevgep3230 = getelementptr i8, ptr addrspace(4) %scevgep3229, i64 %residual-loop-index2318, !amdgpu.uniform !42 %109 = load i8, ptr addrspace(4) %scevgep3230, align 1 %scevgep3228 = getelementptr i8, ptr %scevgep3227, i64 %residual-loop-index2318 store i8 %109, ptr %scevgep3228, align 1 %110 = add i64 %residual-loop-index2318, 1 %111 = icmp uge i64 %110, %102 br i1 %111, label %Flow3870, label %loop-memcpy-residual2316, !amdgpu.uniform !42 Flow3870: ; preds = %loop-memcpy-residual2316 br label %Flow3871, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i: ; preds = %Flow3874 %conv.i.i26.i.i.i.i = xor i32 %port.sroa.37.0.i.i, 1 fence release %112 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i = getelementptr inbounds nuw i32, ptr %112, i64 %idxprom.i23.i.i.i.i.i store atomic i32 %conv.i.i26.i.i.i.i, ptr %arrayidx.i24.i29.i.i.i.i monotonic, align 4 %add.i.i.i.i = add i64 %idx.0.i.i.i.i, 64 %scevgep3220 = getelementptr i8, ptr addrspace(4) %lsr.iv3219, i64 64 %lsr.iv.next3225 = add i64 %lsr.iv3224, -64 br label %Flow3877, !amdgpu.uniform !42 cond.false.i.i.i: ; preds = %Flow3877 %.lcssa4194 = phi i64 [ %99, %Flow3877 ] %port.sroa.37.0.i.i.lcssa = phi i32 [ %port.sroa.37.0.i.i, %Flow3877 ] %.lcssa4193 = phi i32 [ %85, %Flow3877 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4194) %113 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa4193) %114 = icmp ne i32 %113, %port.sroa.37.0.i.i.lcssa %115 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %114) %116 = extractvalue { i1, i64 } %115, 0 %117 = extractvalue { i1, i64 } %115, 1 br i1 %116, label %while.body.i.i.i.i.preheader, label %Flow3869 while.body.i.i.i.i.preheader: ; preds = %cond.false.i.i.i br label %while.body.i.i.i.i, !amdgpu.uniform !42 Flow3869: ; preds = %Flow3868, %cond.false.i.i.i call void @llvm.amdgcn.end.cf.i64(i64 %117) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit, !amdgpu.uniform !42 while.body.i.i.i.i: ; preds = %while.body.i.i.i.i.preheader, %while.body.i.i.i.i %phi.broken3893 = phi i64 [ 0, %while.body.i.i.i.i.preheader ], [ %121, %while.body.i.i.i.i ] tail call void @llvm.amdgcn.s.sleep(i32 2) %118 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i = getelementptr inbounds nuw i32, ptr %118, i64 %idxprom.i23.i.i.i.i.i, !amdgpu.uniform !42 %119 = load atomic i32, ptr %arrayidx.i.i.i8.i.i monotonic, align 4 %120 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %119) %cmp.i.not.i.i.i.i = icmp eq i32 %120, %port.sroa.37.0.i.i.lcssa %121 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i, i64 %phi.broken3893) %122 = call i1 @llvm.amdgcn.loop.i64(i64 %121) br i1 %122, label %Flow3868, label %while.body.i.i.i.i Flow3868: ; preds = %while.body.i.i.i.i %.lcssa4192 = phi i64 [ %121, %while.body.i.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4192) br label %Flow3869, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit: ; preds = %Flow3869 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %123 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4199, i1 true) %iszero.i.i.i.i.i13.i.i = icmp ne i64 %.lcssa4199, 0 %cmp2.i.i.i.i14.i.i = icmp eq i64 %123, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i = select i1 %iszero.i.i.i.i.i13.i.i, i1 %cmp2.i.i.i.i14.i.i, i1 false %124 = and i32 %.lcssa4200, 31 %conv4.i.i.i19.i.i = zext i1 %cmp.i.i.i.i15.i.i to i32 %shl.i.i.i20.i.i = shl nuw i32 %conv4.i.i.i19.i.i, %124 %xor.i.i.i21.i.i = xor i32 %shl.i.i.i20.i.i, -1 %125 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2431, !amdgpu.uniform !42 126: ; preds = %ComputeEnd2432 %div8.i.i.i16.i.i = lshr i32 %.lcssa4200, 5 %idxprom.i.i.i17.i.i = zext nneg i32 %div8.i.i.i16.i.i to i64 %127 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i %sunkaddr3273 = getelementptr inbounds i8, ptr addrspace(1) %127, i64 40 %128 = atomicrmw and ptr addrspace(1) %sunkaddr3273, i32 %.lcssa4191 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %129, !amdgpu.uniform !42 129: ; preds = %126, %ComputeEnd2432 call void @llvm.amdgcn.end.cf.i64(i64 %2975) tail call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i1.i13, !amdgpu.uniform !42 for.cond.i.i1.i13: ; preds = %129, %Flow3867 %130 = phi i32 [ %168, %Flow3867 ], [ poison, %129 ] %131 = phi i64 [ %169, %Flow3867 ], [ poison, %129 ] %132 = phi i32 [ %170, %Flow3867 ], [ poison, %129 ] %retval.sroa.6.0.i.i.i14 = phi i32 [ %173, %Flow3867 ], [ undef, %129 ] %retval.sroa.2.0.i.i.i16 = phi i64 [ %172, %Flow3867 ], [ undef, %129 ] %retval.sroa.8.0.i.i.i17 = phi i32 [ %171, %Flow3867 ], [ undef, %129 ] %index.0.i.i.i18 = phi i32 [ %175, %Flow3867 ], [ 0, %129 ] %133 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i19 = icmp ult i32 %index.0.i.i.i18, %133 %spec.store.select.i.i.i20 = select i1 %cmp.not.i.i.i19, i32 %index.0.i.i.i18, i32 0 %134 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %135 = and i32 %spec.store.select.i.i.i20, 31 %136 = lshr i64 %134, %sh_prom.i.i.i.i %137 = trunc i64 %136 to i32 %conv4.i.i.i.i.i24 = and i32 %137, 1 %shl.i.i.i.i.i25 = shl nuw i32 %conv4.i.i.i.i.i24, %135 %138 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2435, !amdgpu.uniform !42 139: ; preds = %ComputeEnd2436 %sunkaddr3274 = getelementptr inbounds i8, ptr addrspace(1) %2985, i64 40 %140 = atomicrmw or ptr addrspace(1) %sunkaddr3274, i32 %.lcssa4185 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %141, !amdgpu.uniform !42 141: ; preds = %139, %ComputeEnd2436 %142 = phi i32 [ %140, %139 ], [ poison, %ComputeEnd2436 ] call void @llvm.amdgcn.end.cf.i64(i64 %2994) %143 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %142) %144 = or i32 %143, %.lcssa4186 %shl5.i.i.i.i.i26 = shl nuw i32 1, %135 %and.i.i.i.i.i27 = and i32 %shl5.i.i.i.i.i26, %144 %tobool3.i.i.i.i28 = icmp ne i32 %and.i.i.i.i.i27, 0 %145 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i28) %and.i.i.i.i.i.i29 = and i64 %145, %134 %cmp.i.not.i.i.i30 = icmp ne i64 %134, %and.i.i.i.i.i.i29 br i1 %cmp.i.not.i.i.i30, label %if.then.i.i.i.i31, label %Flow3866, !amdgpu.uniform !42 if.then.i.i.i.i31: ; preds = %141 fence syncscope("agent") acquire %146 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %147 = extractelement <2 x i64> %146, i32 0 %148 = inttoptr i64 %147 to ptr %149 = extractelement <2 x i64> %146, i32 1 %150 = inttoptr i64 %149 to ptr %idxprom.i.i.i.i32 = zext i32 %spec.store.select.i.i.i20 to i64 %arrayidx.i.i.i.i33 = getelementptr inbounds nuw i32, ptr %148, i64 %idxprom.i.i.i.i32, !amdgpu.uniform !42 %151 = load atomic i32, ptr %arrayidx.i.i.i.i33 monotonic, align 4 %152 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %151) %arrayidx.i45.i.i.i34 = getelementptr inbounds nuw i32, ptr %150, i64 %idxprom.i.i.i.i32, !amdgpu.uniform !42 %153 = load atomic i32, ptr %arrayidx.i45.i.i.i34 monotonic, align 4 %154 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %153) %cmp.i46.not.i.i.i35 = icmp ne i32 %152, %154 br i1 %cmp.i46.not.i.i.i35, label %if.then12.i.i.i36, label %Flow3864, !amdgpu.uniform !42 if.then12.i.i.i36: ; preds = %if.then.i.i.i.i31 fence syncscope("agent") release %155 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %134, i1 true) %iszero.i.i.i.i.i.i.i37 = icmp ne i64 %134, 0 %cmp2.i.i.i.i.i.i38 = icmp eq i64 %155, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i39 = select i1 %iszero.i.i.i.i.i.i.i37, i1 %cmp2.i.i.i.i.i.i38, i1 false %conv4.i.i51.i.i.i40 = zext i1 %cmp.i.i.i.i.i.i39 to i32 %shl.i.i52.i.i.i41 = shl nuw i32 %conv4.i.i51.i.i.i40, %135 %xor.i.i.i.i.i42 = xor i32 %shl.i.i52.i.i.i41, -1 %156 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2440, !amdgpu.uniform !42 157: ; preds = %ComputeEnd2441 %sunkaddr3275 = getelementptr inbounds i8, ptr addrspace(1) %2985, i64 40 %158 = atomicrmw and ptr addrspace(1) %sunkaddr3275, i32 %.lcssa4187 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %159, !amdgpu.uniform !42 159: ; preds = %157, %ComputeEnd2441 call void @llvm.amdgcn.end.cf.i64(i64 %3012) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3864, !amdgpu.uniform !42 if.end14.i.i.i101: ; preds = %Flow3864 %160 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %134, i1 true) %iszero.i.i.i.i.i.i102 = icmp ne i64 %134, 0 %cmp2.i.i.i.i.i103 = icmp eq i64 %160, %sh_prom.i.i.i.i %cmp.i.i.i.i.i104 = select i1 %iszero.i.i.i.i.i.i102, i1 %cmp2.i.i.i.i.i103, i1 false %161 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i104) %162 = extractvalue { i1, i64 } %161, 0 %163 = extractvalue { i1, i64 } %161, 1 br i1 %162, label %if.then16.i.i.i106, label %if.end22.i.i.i105 if.then16.i.i.i106: ; preds = %if.end14.i.i.i101 %164 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i107 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %164, i64 %idxprom.i.i.i.i32, i32 1 store i32 1660944387, ptr %opcode.i.i.i107, align 8, !tbaa !77 %arrayidx21.i.i.i108 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %164, i64 %idxprom.i.i.i.i32 store i64 %134, ptr %arrayidx21.i.i.i108, align 8, !tbaa !80 br label %if.end22.i.i.i105, !amdgpu.uniform !42 Flow3865: ; preds = %if.end22.i.i.i105, %Flow3864 %165 = phi i32 [ %152, %if.end22.i.i.i105 ], [ %retval.sroa.8.0.i.i.i17, %Flow3864 ] %166 = phi i64 [ %134, %if.end22.i.i.i105 ], [ %retval.sroa.2.0.i.i.i16, %Flow3864 ] %167 = phi i32 [ %spec.store.select.i.i.i20, %if.end22.i.i.i105 ], [ %retval.sroa.6.0.i.i.i14, %Flow3864 ] br label %cleanup26.i.i.i43, !amdgpu.uniform !42 if.end22.i.i.i105: ; preds = %if.then16.i.i.i106, %if.end14.i.i.i101 call void @llvm.amdgcn.end.cf.i64(i64 %163) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3865, !amdgpu.uniform !42 Flow3866: ; preds = %cleanup26.i.i.i43, %141 %168 = phi i32 [ %167, %cleanup26.i.i.i43 ], [ %130, %141 ] %169 = phi i64 [ %166, %cleanup26.i.i.i43 ], [ %131, %141 ] %170 = phi i32 [ %165, %cleanup26.i.i.i43 ], [ %132, %141 ] %171 = phi i32 [ %165, %cleanup26.i.i.i43 ], [ %retval.sroa.8.0.i.i.i17, %141 ] %172 = phi i64 [ %166, %cleanup26.i.i.i43 ], [ %retval.sroa.2.0.i.i.i16, %141 ] %173 = phi i32 [ %167, %cleanup26.i.i.i43 ], [ %retval.sroa.6.0.i.i.i14, %141 ] %174 = phi i1 [ %cmp.i46.not.i.i.i35, %cleanup26.i.i.i43 ], [ true, %141 ] br i1 %174, label %for.inc.i.i.i48, label %Flow3867, !amdgpu.uniform !42 cleanup26.i.i.i43: ; preds = %Flow3865 br label %Flow3866, !amdgpu.uniform !42 for.inc.i.i.i48: ; preds = %Flow3866 %inc.i.i.i53 = add i32 %spec.store.select.i.i.i20, 1 br label %Flow3867, !amdgpu.uniform !42 Flow3867: ; preds = %for.inc.i.i.i48, %Flow3866 %175 = phi i32 [ %inc.i.i.i53, %for.inc.i.i.i48 ], [ poison, %Flow3866 ] %176 = phi i1 [ false, %for.inc.i.i.i48 ], [ true, %Flow3866 ] br i1 %176, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i54, label %for.cond.i.i1.i13, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i54: ; preds = %Flow3867 %.lcssa4190 = phi i32 [ %168, %Flow3867 ] %.lcssa4189 = phi i64 [ %169, %Flow3867 ] %.lcssa4188 = phi i32 [ %170, %Flow3867 ] fence acquire %177 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i55 = shl i32 %.lcssa4190, 6 %idxprom.i19.i.i.i.i.i56 = zext i32 %mul.i.i.i.i.i.i55 to i64 %arrayidx.i20.i.i.i.i.i57 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %177, i64 %idxprom.i19.i.i.i.i.i56 %arrayidx.i22.i.i.i.i.i58 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i57, i64 %sh_prom.i.i.i.i store i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.6.10 to ptr), i64 1) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.6.10 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i58, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i59 = tail call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.6.10 to ptr), i64 1) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.6.10 to ptr) to i64)), i64 56) %178 = and i64 %spec.select.i.i.i.i.i.i.i59, 15 %179 = sub i64 %spec.select.i.i.i.i.i.i.i59, %178 %180 = icmp ne i64 %179, 0 br i1 %180, label %loop-memcpy-expansion2320.preheader, label %Flow3863, !amdgpu.uniform !42 loop-memcpy-expansion2320.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i54 %181 = add nuw nsw i64 %75, 8 %scevgep3216 = getelementptr i8, ptr %177, i64 %181 %182 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i56, 6 %scevgep3217 = getelementptr i8, ptr %scevgep3216, i64 %182 br label %loop-memcpy-expansion2320, !amdgpu.uniform !42 Flow3863: ; preds = %Flow3862, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i54 br label %loop-memcpy-residual-header2323, !amdgpu.uniform !42 loop-memcpy-expansion2320: ; preds = %loop-memcpy-expansion2320.preheader, %loop-memcpy-expansion2320 %loop-index2321 = phi i64 [ %185, %loop-memcpy-expansion2320 ], [ 0, %loop-memcpy-expansion2320.preheader ] %183 = getelementptr i8, ptr addrspace(4) @.str.6.10, i64 %loop-index2321, !amdgpu.uniform !42 %184 = load <4 x i32>, ptr addrspace(4) %183, align 1 %scevgep3218 = getelementptr i8, ptr %scevgep3217, i64 %loop-index2321 store <4 x i32> %184, ptr %scevgep3218, align 1 %185 = add i64 %loop-index2321, 16 %186 = icmp uge i64 %185, %179 br i1 %186, label %Flow3862, label %loop-memcpy-expansion2320, !amdgpu.uniform !42 Flow3861: ; preds = %Flow3859, %Flow3860 %187 = phi i64 [ %2852, %Flow3859 ], [ %2849, %Flow3860 ] br label %post-loop-memcpy-expansion2319, !amdgpu.uniform !42 loop-memcpy-residual2322: ; preds = %loop-memcpy-residual2322.preheader, %loop-memcpy-residual2322 %residual-loop-index2324 = phi i64 [ %189, %loop-memcpy-residual2322 ], [ 0, %loop-memcpy-residual2322.preheader ] %scevgep3215 = getelementptr i8, ptr addrspace(4) @.str.6.10, i64 %residual-loop-index2324, !amdgpu.uniform !42 %188 = load i8, ptr addrspace(4) %scevgep3215, align 1 %scevgep3214 = getelementptr i8, ptr %scevgep3213, i64 %residual-loop-index2324 store i8 %188, ptr %scevgep3214, align 1 %189 = add i64 %residual-loop-index2324, 1 %190 = icmp uge i64 %189, %178 br i1 %190, label %Flow3859, label %loop-memcpy-residual2322, !amdgpu.uniform !42 Flow3859: ; preds = %loop-memcpy-residual2322 br label %Flow3861, !amdgpu.uniform !42 post-loop-memcpy-expansion2319: ; preds = %Flow3861 %tobool.not.i.i.i.i.i.i61 = icmp eq i32 %.lcssa4188, 0 %conv.i.i.i.i.i.i62 = zext i1 %tobool.not.i.i.i.i.i.i61 to i32 fence release %191 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i63 = zext i32 %.lcssa4190 to i64 %arrayidx.i24.i.i.i.i.i64 = getelementptr inbounds nuw i32, ptr %191, i64 %idxprom.i23.i.i.i.i.i63 store atomic i32 %conv.i.i.i.i.i.i62, ptr %arrayidx.i24.i.i.i.i.i64 monotonic, align 4 %192 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i65 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %192, i64 %idxprom.i23.i.i.i.i.i63, !amdgpu.uniform !42 %193 = load i64, ptr %arrayidx.i.i5.i.i65, align 8, !tbaa !80 br label %while.cond.i.i.i.i66, !amdgpu.uniform !42 while.cond.i.i.i.i66: ; preds = %post-loop-memcpy-expansion2319, %Flow3858 %phi.broken3894 = phi i64 [ 0, %post-loop-memcpy-expansion2319 ], [ %210, %Flow3858 ] %lsr.iv3205 = phi i64 [ %208, %Flow3858 ], [ -55, %post-loop-memcpy-expansion2319 ] %lsr.iv3200 = phi ptr addrspace(4) [ %207, %Flow3858 ], [ getelementptr (i8, ptr addrspace(4) @.str.6.10, i64 56), %post-loop-memcpy-expansion2319 ] %port.sroa.37.0.i.i67 = phi i32 [ %206, %Flow3858 ], [ %conv.i.i.i.i.i.i62, %post-loop-memcpy-expansion2319 ] %idx.0.i.i.i.i68 = phi i64 [ %205, %Flow3858 ], [ 56, %post-loop-memcpy-expansion2319 ] %cmp.i.i.i.i69 = icmp ult i64 %idx.0.i.i.i.i68, sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.6.10 to ptr), i64 1) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.6.10 to ptr) to i64)) %194 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i69) %and.i.i.i.i6.i.i70 = and i64 %194, %193 %tobool.not.i.i.i.i71 = icmp ne i64 %and.i.i.i.i6.i.i70, 0 %195 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i72 = getelementptr inbounds nuw i32, ptr %195, i64 %idxprom.i23.i.i.i.i.i63, !amdgpu.uniform !42 %196 = load atomic i32, ptr %arrayidx.i22.i.i.i72 monotonic, align 4 %197 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i71) %198 = extractvalue { i1, i64 } %197, 0 %199 = extractvalue { i1, i64 } %197, 1 br i1 %198, label %cond.false.i8.i.i.i.i73, label %Flow3858 cond.false.i8.i.i.i.i73: ; preds = %while.cond.i.i.i.i66 %200 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %196) %201 = icmp ne i32 %200, %port.sroa.37.0.i.i67 br i1 %201, label %while.body.i.i21.i.i.i.i74.preheader, label %Flow3857, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i74.preheader: ; preds = %cond.false.i8.i.i.i.i73 br label %while.body.i.i21.i.i.i.i74, !amdgpu.uniform !42 Flow3857: ; preds = %Flow3856, %cond.false.i8.i.i.i.i73 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i77, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i74: ; preds = %while.body.i.i21.i.i.i.i74.preheader, %while.body.i.i21.i.i.i.i74 tail call void @llvm.amdgcn.s.sleep(i32 2) %202 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i75 = getelementptr inbounds nuw i32, ptr %202, i64 %idxprom.i23.i.i.i.i.i63, !amdgpu.uniform !42 %203 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i75 monotonic, align 4 %204 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %203) %cmp.i.not.i.i23.i.i.i.i76 = icmp eq i32 %204, %port.sroa.37.0.i.i67 br i1 %cmp.i.not.i.i23.i.i.i.i76, label %Flow3856, label %while.body.i.i21.i.i.i.i74, !amdgpu.uniform !42 Flow3856: ; preds = %while.body.i.i21.i.i.i.i74 br label %Flow3857, !amdgpu.uniform !42 Flow3858: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i78, %while.cond.i.i.i.i66 %205 = phi i64 [ %add.i.i.i.i81, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i78 ], [ poison, %while.cond.i.i.i.i66 ] %206 = phi i32 [ %conv.i.i26.i.i.i.i79, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i78 ], [ poison, %while.cond.i.i.i.i66 ] %207 = phi ptr addrspace(4) [ %scevgep3201, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i78 ], [ poison, %while.cond.i.i.i.i66 ] %208 = phi i64 [ %lsr.iv.next3206, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i78 ], [ poison, %while.cond.i.i.i.i66 ] %209 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i78 ], [ true, %while.cond.i.i.i.i66 ] call void @llvm.amdgcn.end.cf.i64(i64 %199) %210 = call i64 @llvm.amdgcn.if.break.i64(i1 %209, i64 %phi.broken3894) %211 = call i1 @llvm.amdgcn.loop.i64(i64 %210) br i1 %211, label %cond.false.i.i.i88, label %while.cond.i.i.i.i66 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i77: ; preds = %Flow3857 fence acquire br i1 %cmp.i.i.i.i69, label %if.then.i.i.i.i.i.i.i82, label %Flow3855, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i82: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i77 %sub.i.i.i.i.i.i.i84 = sub nuw i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.6.10 to ptr), i64 1) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.6.10 to ptr) to i64)), %idx.0.i.i.i.i68 %spec.select.i.i.i36.i.i.i.i85 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i84, i64 64) %212 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %213 = and i64 %spec.select.i.i.i36.i.i.i.i85, 15 %214 = sub i64 %spec.select.i.i.i36.i.i.i.i85, %213 %215 = icmp ne i64 %214, 0 br i1 %215, label %loop-memcpy-expansion2326.preheader, label %Flow3854, !amdgpu.uniform !42 loop-memcpy-expansion2326.preheader: ; preds = %if.then.i.i.i.i.i.i.i82 %arrayidx.i20.i35.i.i.i.i86 = getelementptr %"struct.rpc::Buffer", ptr %212, i64 %idxprom.i19.i.i.i.i.i56 %arrayidx.i22.i38.i.i.i.i87 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i86, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2326, !amdgpu.uniform !42 Flow3854: ; preds = %Flow3853, %if.then.i.i.i.i.i.i.i82 br label %loop-memcpy-residual-header2329, !amdgpu.uniform !42 loop-memcpy-expansion2326: ; preds = %loop-memcpy-expansion2326.preheader, %loop-memcpy-expansion2326 %loop-index2327 = phi i64 [ %218, %loop-memcpy-expansion2326 ], [ 0, %loop-memcpy-expansion2326.preheader ] %scevgep3202 = getelementptr i8, ptr addrspace(4) %lsr.iv3200, i64 %loop-index2327, !amdgpu.uniform !42 %216 = load <4 x i32>, ptr addrspace(4) %scevgep3202, align 1 %217 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i87, i64 %loop-index2327 store <4 x i32> %216, ptr %217, align 1 %218 = add i64 %loop-index2327, 16 %219 = icmp uge i64 %218, %214 br i1 %219, label %Flow3853, label %loop-memcpy-expansion2326, !amdgpu.uniform !42 Flow3852: ; preds = %Flow3851, %loop-memcpy-residual-header2329 br label %Flow3855, !amdgpu.uniform !42 loop-memcpy-residual2328: ; preds = %loop-memcpy-residual2328.preheader, %loop-memcpy-residual2328 %residual-loop-index2330 = phi i64 [ %221, %loop-memcpy-residual2328 ], [ 0, %loop-memcpy-residual2328.preheader ] %scevgep3211 = getelementptr i8, ptr addrspace(4) %scevgep3210, i64 %residual-loop-index2330, !amdgpu.uniform !42 %220 = load i8, ptr addrspace(4) %scevgep3211, align 1 %scevgep3209 = getelementptr i8, ptr %scevgep3208, i64 %residual-loop-index2330 store i8 %220, ptr %scevgep3209, align 1 %221 = add i64 %residual-loop-index2330, 1 %222 = icmp uge i64 %221, %213 br i1 %222, label %Flow3851, label %loop-memcpy-residual2328, !amdgpu.uniform !42 Flow3851: ; preds = %loop-memcpy-residual2328 br label %Flow3852, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i78: ; preds = %Flow3855 %conv.i.i26.i.i.i.i79 = xor i32 %port.sroa.37.0.i.i67, 1 fence release %223 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i80 = getelementptr inbounds nuw i32, ptr %223, i64 %idxprom.i23.i.i.i.i.i63 store atomic i32 %conv.i.i26.i.i.i.i79, ptr %arrayidx.i24.i29.i.i.i.i80 monotonic, align 4 %add.i.i.i.i81 = add i64 %idx.0.i.i.i.i68, 64 %scevgep3201 = getelementptr i8, ptr addrspace(4) %lsr.iv3200, i64 64 %lsr.iv.next3206 = add i64 %lsr.iv3205, -64 br label %Flow3858, !amdgpu.uniform !42 cond.false.i.i.i88: ; preds = %Flow3858 %.lcssa4184 = phi i64 [ %210, %Flow3858 ] %port.sroa.37.0.i.i67.lcssa = phi i32 [ %port.sroa.37.0.i.i67, %Flow3858 ] %.lcssa4183 = phi i32 [ %196, %Flow3858 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4184) %224 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa4183) %225 = icmp ne i32 %224, %port.sroa.37.0.i.i67.lcssa %226 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %225) %227 = extractvalue { i1, i64 } %226, 0 %228 = extractvalue { i1, i64 } %226, 1 br i1 %227, label %while.body.i.i.i.i89.preheader, label %Flow3850 while.body.i.i.i.i89.preheader: ; preds = %cond.false.i.i.i88 br label %while.body.i.i.i.i89, !amdgpu.uniform !42 Flow3850: ; preds = %Flow3849, %cond.false.i.i.i88 call void @llvm.amdgcn.end.cf.i64(i64 %228) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit109, !amdgpu.uniform !42 while.body.i.i.i.i89: ; preds = %while.body.i.i.i.i89.preheader, %while.body.i.i.i.i89 %phi.broken3895 = phi i64 [ 0, %while.body.i.i.i.i89.preheader ], [ %232, %while.body.i.i.i.i89 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %229 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i90 = getelementptr inbounds nuw i32, ptr %229, i64 %idxprom.i23.i.i.i.i.i63, !amdgpu.uniform !42 %230 = load atomic i32, ptr %arrayidx.i.i.i8.i.i90 monotonic, align 4 %231 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %230) %cmp.i.not.i.i.i.i91 = icmp eq i32 %231, %port.sroa.37.0.i.i67.lcssa %232 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i91, i64 %phi.broken3895) %233 = call i1 @llvm.amdgcn.loop.i64(i64 %232) br i1 %233, label %Flow3849, label %while.body.i.i.i.i89 Flow3849: ; preds = %while.body.i.i.i.i89 %.lcssa4182 = phi i64 [ %232, %while.body.i.i.i.i89 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4182) br label %Flow3850, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit109: ; preds = %Flow3850 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %234 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4189, i1 true) %iszero.i.i.i.i.i13.i.i92 = icmp ne i64 %.lcssa4189, 0 %cmp2.i.i.i.i14.i.i93 = icmp eq i64 %234, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i94 = select i1 %iszero.i.i.i.i.i13.i.i92, i1 %cmp2.i.i.i.i14.i.i93, i1 false %235 = and i32 %.lcssa4190, 31 %conv4.i.i.i19.i.i98 = zext i1 %cmp.i.i.i.i15.i.i94 to i32 %shl.i.i.i20.i.i99 = shl nuw i32 %conv4.i.i.i19.i.i98, %235 %xor.i.i.i21.i.i100 = xor i32 %shl.i.i.i20.i.i99, -1 %236 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2444, !amdgpu.uniform !42 237: ; preds = %ComputeEnd2445 %div8.i.i.i16.i.i95 = lshr i32 %.lcssa4190, 5 %idxprom.i.i.i17.i.i96 = zext nneg i32 %div8.i.i.i16.i.i95 to i64 %238 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i96 %sunkaddr3276 = getelementptr inbounds i8, ptr addrspace(1) %238, i64 40 %239 = atomicrmw and ptr addrspace(1) %sunkaddr3276, i32 %.lcssa4181 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %240, !amdgpu.uniform !42 240: ; preds = %237, %ComputeEnd2445 call void @llvm.amdgcn.end.cf.i64(i64 %3029) tail call void @llvm.amdgcn.wave.barrier() call void @llvm.lifetime.start.p5(ptr addrspace(5) %buffer.i.i.i) #34, !noalias !86 br label %while.body.i.i.i.i.i.i, !amdgpu.uniform !42 while.body.i.i.i.i.i.i: ; preds = %240, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i %phi.broken3896 = phi i64 [ 0, %240 ], [ %308, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i ] %writer.sroa.10.0.i.i.i.i = phi i64 [ %writer.sroa.10.1.i.i.i.i, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i ], [ 0, %240 ] %value.addr.09.i.i.i.i.i.i = phi i32 [ %div.i.i.i.i.i.i.i, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i ], [ %Loc.coerce1, %240 ] br label %NodeBlock3350, !amdgpu.uniform !42 NodeBlock3350: ; preds = %while.body.i.i.i.i.i.i %div.i.i.i.i.i.i.i = udiv i32 %value.addr.09.i.i.i.i.i.i, 10 %.neg.i = call i32 @llvm.amdgcn.mul.u24.i32(i32 %div.i.i.i.i.i.i.i, i32 246) %rem.i.i.i.i.i.i.decomposed.i = add nuw nsw i32 %.neg.i, %value.addr.09.i.i.i.i.i.i %conv.i.i.i.i.i.i.i = trunc i32 %rem.i.i.i.i.i.i.decomposed.i to i8 %241 = zext i8 %conv.i.i.i.i.i.i.i to i16 %Pivot3351 = icmp sge i16 %241, 5 %242 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3351) %243 = extractvalue { i1, i64 } %242, 0 %244 = extractvalue { i1, i64 } %242, 1 br i1 %243, label %NodeBlock3348, label %Flow3848 NodeBlock3348: ; preds = %NodeBlock3350 %Pivot3349 = icmp sge i16 %241, 7 %245 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3349) %246 = extractvalue { i1, i64 } %245, 0 %247 = extractvalue { i1, i64 } %245, 1 br i1 %246, label %NodeBlock3346, label %Flow3839 NodeBlock3346: ; preds = %NodeBlock3348 %Pivot3347 = icmp sge i16 %241, 8 %248 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3347) %249 = extractvalue { i1, i64 } %248, 0 %250 = extractvalue { i1, i64 } %248, 1 br i1 %249, label %NodeBlock3344, label %Flow3835 NodeBlock3344: ; preds = %NodeBlock3346 %Pivot3345 = icmp sge i16 %241, 9 %251 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3345) %252 = extractvalue { i1, i64 } %251, 0 %253 = extractvalue { i1, i64 } %251, 1 br i1 %252, label %sw.bb9.i.i.i.i.i.i.i.i, label %Flow3833 Flow3839: ; preds = %Flow3836, %NodeBlock3348 %254 = phi i8 [ %298, %Flow3836 ], [ poison, %NodeBlock3348 ] %255 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %247) %256 = extractvalue { i1, i64 } %255, 0 %257 = extractvalue { i1, i64 } %255, 1 br i1 %256, label %NodeBlock3342, label %Flow3840 NodeBlock3342: ; preds = %Flow3839 %Pivot3343 = icmp sge i16 %241, 6 %258 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3343) %259 = extractvalue { i1, i64 } %258, 0 %260 = extractvalue { i1, i64 } %258, 1 br i1 %259, label %sw.bb6.i.i.i.i.i.i.i.i, label %Flow3837 Flow3848: ; preds = %Flow3840, %NodeBlock3350 %261 = phi i8 [ %300, %Flow3840 ], [ poison, %NodeBlock3350 ] %262 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %244) %263 = extractvalue { i1, i64 } %262, 0 %264 = extractvalue { i1, i64 } %262, 1 br i1 %263, label %NodeBlock3340, label %if.then.i.i.i.i.i.i.i110 NodeBlock3340: ; preds = %Flow3848 %Pivot3341 = icmp sge i16 %241, 3 %265 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3341) %266 = extractvalue { i1, i64 } %265, 0 %267 = extractvalue { i1, i64 } %265, 1 br i1 %266, label %NodeBlock3338, label %Flow3846 NodeBlock3338: ; preds = %NodeBlock3340 %Pivot3339 = icmp sge i16 %241, 4 %268 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3339) %269 = extractvalue { i1, i64 } %268, 0 %270 = extractvalue { i1, i64 } %268, 1 br i1 %269, label %sw.bb4.i.i.i.i.i.i.i.i, label %Flow3841 Flow3846: ; preds = %Flow3842, %NodeBlock3340 %271 = phi i8 [ %301, %Flow3842 ], [ poison, %NodeBlock3340 ] %272 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %267) %273 = extractvalue { i1, i64 } %272, 0 %274 = extractvalue { i1, i64 } %272, 1 br i1 %273, label %NodeBlock, label %Flow3847 NodeBlock: ; preds = %Flow3846 %Pivot = icmp sge i16 %241, 2 %275 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot) %276 = extractvalue { i1, i64 } %275, 0 %277 = extractvalue { i1, i64 } %275, 1 br i1 %276, label %sw.bb2.i.i.i.i.i.i.i.i, label %Flow3844 Flow3844: ; preds = %sw.bb2.i.i.i.i.i.i.i.i, %NodeBlock %278 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %277) %279 = extractvalue { i1, i64 } %278, 0 %280 = extractvalue { i1, i64 } %278, 1 br i1 %279, label %LeafBlock, label %Flow3845 LeafBlock: ; preds = %Flow3844 %SwitchLeaf = icmp eq i16 %241, 1 %281 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %SwitchLeaf) %282 = extractvalue { i1, i64 } %281, 0 %283 = extractvalue { i1, i64 } %281, 1 br i1 %282, label %sw.bb1.i.i.i.i.i.i.i.i, label %Flow3843 sw.bb1.i.i.i.i.i.i.i.i: ; preds = %LeafBlock br label %Flow3843, !amdgpu.uniform !42 sw.bb2.i.i.i.i.i.i.i.i: ; preds = %NodeBlock br label %Flow3844, !amdgpu.uniform !42 Flow3841: ; preds = %sw.bb4.i.i.i.i.i.i.i.i, %NodeBlock3338 %284 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %270) %285 = extractvalue { i1, i64 } %284, 0 %286 = extractvalue { i1, i64 } %284, 1 br i1 %285, label %sw.bb3.i.i.i.i.i.i.i.i, label %Flow3842 sw.bb3.i.i.i.i.i.i.i.i: ; preds = %Flow3841 br label %Flow3842, !amdgpu.uniform !42 sw.bb4.i.i.i.i.i.i.i.i: ; preds = %NodeBlock3338 br label %Flow3841, !amdgpu.uniform !42 Flow3837: ; preds = %sw.bb6.i.i.i.i.i.i.i.i, %NodeBlock3342 %287 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %260) %288 = extractvalue { i1, i64 } %287, 0 %289 = extractvalue { i1, i64 } %287, 1 br i1 %288, label %sw.bb5.i.i.i.i.i.i.i.i, label %Flow3838 sw.bb5.i.i.i.i.i.i.i.i: ; preds = %Flow3837 br label %Flow3838, !amdgpu.uniform !42 sw.bb6.i.i.i.i.i.i.i.i: ; preds = %NodeBlock3342 br label %Flow3837, !amdgpu.uniform !42 Flow3835: ; preds = %Flow3834, %NodeBlock3346 %290 = phi i8 [ %297, %Flow3834 ], [ poison, %NodeBlock3346 ] %291 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %250) %292 = extractvalue { i1, i64 } %291, 0 %293 = extractvalue { i1, i64 } %291, 1 br i1 %292, label %sw.bb7.i.i.i.i.i.i.i.i, label %Flow3836 sw.bb7.i.i.i.i.i.i.i.i: ; preds = %Flow3835 br label %Flow3836, !amdgpu.uniform !42 Flow3833: ; preds = %sw.bb9.i.i.i.i.i.i.i.i, %NodeBlock3344 %294 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %253) %295 = extractvalue { i1, i64 } %294, 0 %296 = extractvalue { i1, i64 } %294, 1 br i1 %295, label %sw.bb8.i.i.i.i.i.i.i.i, label %Flow3834 sw.bb8.i.i.i.i.i.i.i.i: ; preds = %Flow3833 br label %Flow3834, !amdgpu.uniform !42 sw.bb9.i.i.i.i.i.i.i.i: ; preds = %NodeBlock3344 br label %Flow3833, !amdgpu.uniform !42 Flow3834: ; preds = %sw.bb8.i.i.i.i.i.i.i.i, %Flow3833 %297 = phi i8 [ 56, %sw.bb8.i.i.i.i.i.i.i.i ], [ 57, %Flow3833 ] call void @llvm.amdgcn.end.cf.i64(i64 %296) br label %Flow3835, !amdgpu.uniform !42 Flow3836: ; preds = %sw.bb7.i.i.i.i.i.i.i.i, %Flow3835 %298 = phi i8 [ 55, %sw.bb7.i.i.i.i.i.i.i.i ], [ %290, %Flow3835 ] call void @llvm.amdgcn.end.cf.i64(i64 %293) br label %Flow3839, !amdgpu.uniform !42 Flow3838: ; preds = %sw.bb5.i.i.i.i.i.i.i.i, %Flow3837 %299 = phi i8 [ 53, %sw.bb5.i.i.i.i.i.i.i.i ], [ 54, %Flow3837 ] call void @llvm.amdgcn.end.cf.i64(i64 %289) br label %Flow3840, !amdgpu.uniform !42 Flow3840: ; preds = %Flow3838, %Flow3839 %300 = phi i8 [ %299, %Flow3838 ], [ %254, %Flow3839 ] call void @llvm.amdgcn.end.cf.i64(i64 %257) br label %Flow3848, !amdgpu.uniform !42 Flow3842: ; preds = %sw.bb3.i.i.i.i.i.i.i.i, %Flow3841 %301 = phi i8 [ 51, %sw.bb3.i.i.i.i.i.i.i.i ], [ 52, %Flow3841 ] call void @llvm.amdgcn.end.cf.i64(i64 %286) br label %Flow3846, !amdgpu.uniform !42 Flow3843: ; preds = %sw.bb1.i.i.i.i.i.i.i.i, %LeafBlock %302 = phi i8 [ 49, %sw.bb1.i.i.i.i.i.i.i.i ], [ 48, %LeafBlock ] call void @llvm.amdgcn.end.cf.i64(i64 %283) br label %Flow3845, !amdgpu.uniform !42 Flow3845: ; preds = %Flow3843, %Flow3844 %303 = phi i8 [ %302, %Flow3843 ], [ 50, %Flow3844 ] call void @llvm.amdgcn.end.cf.i64(i64 %280) br label %Flow3847, !amdgpu.uniform !42 Flow3847: ; preds = %Flow3845, %Flow3846 %304 = phi i8 [ %303, %Flow3845 ], [ %271, %Flow3846 ] call void @llvm.amdgcn.end.cf.i64(i64 %274) br label %if.then.i.i.i.i.i.i.i110, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i110: ; preds = %Flow3848, %Flow3847 %retval.0.i.i.i.i.i.i.i.i = phi i8 [ %261, %Flow3848 ], [ %304, %Flow3847 ] call void @llvm.amdgcn.end.cf.i64(i64 %264) %cmp.i.i.i.i.i.i.i.i = icmp eq i64 %writer.sroa.10.0.i.i.i.i, 11 %cmp.i.i.i.i.i.i.i.i.inv = xor i1 %cmp.i.i.i.i.i.i.i.i, true br i1 %cmp.i.i.i.i.i.i.i.i.inv, label %if.then3.i.i.i.i.i.i.i, label %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i, !amdgpu.uniform !42 if.then3.i.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i.i110 %305 = trunc i64 %writer.sroa.10.0.i.i.i.i to i32 %306 = xor i32 %305, -1 %307 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i, i32 %306 %arrayidx.i.i.i.i.i.i.i.i1112699 = getelementptr i8, ptr addrspace(5) %307, i32 11 %inc.i.i.i.i.i.i.i = add i64 %writer.sroa.10.0.i.i.i.i, 1 store i8 %retval.0.i.i.i.i.i.i.i.i, ptr addrspace(5) %arrayidx.i.i.i.i.i.i.i.i1112699, align 1, !tbaa !57, !noalias !86 br label %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i: ; preds = %if.then3.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i110 %writer.sroa.10.1.i.i.i.i = phi i64 [ %inc.i.i.i.i.i.i.i, %if.then3.i.i.i.i.i.i.i ], [ 11, %if.then.i.i.i.i.i.i.i110 ] %cmp.i.i.i.i.i.i112 = icmp samesign ult i32 %value.addr.09.i.i.i.i.i.i, 10 %.not.i.i.i.i.i.i = or i1 %cmp.i.i.i.i.i.i.i.i, %cmp.i.i.i.i.i.i112 %308 = call i64 @llvm.amdgcn.if.break.i64(i1 %.not.i.i.i.i.i.i, i64 %phi.broken3896) %309 = call i1 @llvm.amdgcn.loop.i64(i64 %308) br i1 %309, label %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i, label %while.body.i.i.i.i.i.i _ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i: ; preds = %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i %writer.sroa.10.1.i.i.i.i.lcssa = phi i64 [ %writer.sroa.10.1.i.i.i.i, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i ] %.lcssa4180 = phi i64 [ %308, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i ] %cmp.i.i.i.i.i.i.i.i.lcssa = phi i1 [ %cmp.i.i.i.i.i.i.i.i, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4180) %cmp.i19.i.i.i.i = icmp ne i64 %writer.sroa.10.1.i.i.i.i.lcssa, 0 %or.cond.not.i.i.i.i = select i1 %cmp.i.i.i.i.i.i.i.i.lcssa, i1 true, i1 %cmp.i19.i.i.i.i %or.cond.not.i.i.i.i.inv = xor i1 %or.cond.not.i.i.i.i, true %310 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %or.cond.not.i.i.i.i.inv) %311 = extractvalue { i1, i64 } %310, 0 %312 = extractvalue { i1, i64 } %310, 1 br i1 %311, label %if.then3.i.i.lr.ph.i.i.i.i, label %while.end.i.i.i.i.i if.then3.i.i.lr.ph.i.i.i.i: ; preds = %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i %arrayidx.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr addrspace(5) %buffer.i.i.i, i32 10 store i8 48, ptr addrspace(5) %arrayidx.i.i.i.i.i.i.i, align 2, !tbaa !57, !noalias !86 br label %while.end.i.i.i.i.i, !amdgpu.uniform !42 while.end.i.i.i.i.i: ; preds = %if.then3.i.i.lr.ph.i.i.i.i, %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i %writer.sroa.10.4.i.i.i.i = phi i64 [ 1, %if.then3.i.i.lr.ph.i.i.i.i ], [ %writer.sroa.10.1.i.i.i.i.lcssa, %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %312) %written.i.i.i.i = getelementptr inbounds nuw i8, ptr addrspace(5) %buffer.i.i.i, i32 16 store i64 %writer.sroa.10.4.i.i.i.i, ptr addrspace(5) %written.i.i.i.i, align 8, !tbaa !91, !noalias !86 %cmp.i.not.i.i.i.i.i = icmp ne i64 %writer.sroa.10.4.i.i.i.i, 0 %313 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.not.i.i.i.i.i) %314 = extractvalue { i1, i64 } %313, 0 %315 = extractvalue { i1, i64 } %313, 1 br i1 %314, label %if.then.i.i.i.i.i.i, label %Flow3832 if.then.i.i.i.i.i.i: ; preds = %while.end.i.i.i.i.i %316 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %writer.sroa.10.4.i.i.i.i, i64 1) %ov = extractvalue { i64, i1 } %316, 1 %ov.inv = xor i1 %ov, true %317 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %ov.inv) %318 = extractvalue { i1, i64 } %317, 0 %319 = extractvalue { i1, i64 } %317, 1 br i1 %318, label %if.end.i.i.i.i.i.i.i113, label %Flow3831 if.end.i.i.i.i.i.i.i113: ; preds = %if.then.i.i.i.i.i.i %math = extractvalue { i64, i1 } %316, 0 %cmp2.i.i.i.i.i.i.i = icmp ult i64 %math, 1676976733973595601 %320 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp2.i.i.i.i.i.i.i) %321 = extractvalue { i1, i64 } %320, 0 %322 = extractvalue { i1, i64 } %320, 1 br i1 %321, label %if.then3.i.i.i.i4.i.i.i, label %if.end4.i.i.i.i.i.i.i if.then3.i.i.i.i4.i.i.i: ; preds = %if.end.i.i.i.i.i.i.i113 %mul.i.i.i.i.i.i.i = mul nuw i64 %math, 11 %div18.i.i.i.i.i.i.i = lshr i64 %mul.i.i.i.i.i.i.i, 3 br label %if.end4.i.i.i.i.i.i.i, !amdgpu.uniform !42 Flow3831: ; preds = %if.end4.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i %323 = phi ptr [ %cond.i.i.i, %if.end4.i.i.i.i.i.i.i ], [ addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr), %if.then.i.i.i.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %319) br label %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i, !amdgpu.uniform !42 if.end4.i.i.i.i.i.i.i: ; preds = %if.then3.i.i.i.i4.i.i.i, %if.end.i.i.i.i.i.i.i113 %new_capacity.addr.0.i.i.i.i.i.i.i = phi i64 [ %div18.i.i.i.i.i.i.i, %if.then3.i.i.i.i4.i.i.i ], [ %math, %if.end.i.i.i.i.i.i.i113 ] call void @llvm.amdgcn.end.cf.i64(i64 %322) %sub.i.i.i = add i64 %new_capacity.addr.0.i.i.i.i.i.i.i, 7 %div2.i.i.i = and i64 %sub.i.i.i, -8 %324 = load ptr, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %add.ptr.i.i.i = getelementptr inbounds nuw i8, ptr %324, i64 %div2.i.i.i store ptr %add.ptr.i.i.i, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %sub.ptr.lhs.cast.i.i.i114 = ptrtoint ptr %add.ptr.i.i.i to i64 %sub.ptr.sub.i.i.i115 = sub i64 %sub.ptr.lhs.cast.i.i.i114, ptrtoint (ptr addrspacecast (ptr addrspace(1) @_ZN12_GLOBAL__N_16memoryE to ptr) to i64) %cmp.i.i.i116 = icmp ugt i64 %sub.ptr.sub.i.i.i115, 65335 %cond.i.i.i = select i1 %cmp.i.i.i116, ptr null, ptr %324 br label %Flow3831, !amdgpu.uniform !42 Flow3832: ; preds = %Flow3830, %while.end.i.i.i.i.i %325 = phi ptr [ %323, %Flow3830 ], [ addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr), %while.end.i.i.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %315) br label %if.end.i.i.i.i.i.i, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i: ; preds = %Flow3831 br label %loadstoreloop, !amdgpu.uniform !42 loadstoreloop: ; preds = %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i, %loadstoreloop %phi.broken3897 = phi i64 [ 0, %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i ], [ %330, %loadstoreloop ] %326 = phi i64 [ %328, %loadstoreloop ], [ 0, %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i ] %327 = getelementptr i8, ptr %323, i64 %326 store i8 0, ptr %327, align 1 %328 = add i64 %326, 1 %329 = icmp uge i64 %328, %writer.sroa.10.4.i.i.i.i %330 = call i64 @llvm.amdgcn.if.break.i64(i1 %329, i64 %phi.broken3897) %331 = call i1 @llvm.amdgcn.loop.i64(i64 %330) br i1 %331, label %Flow3830, label %loadstoreloop Flow3830: ; preds = %loadstoreloop %.lcssa4179 = phi i64 [ %330, %loadstoreloop ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4179) br label %Flow3832, !amdgpu.uniform !42 if.end.i.i.i.i.i.i: ; preds = %Flow3832 %cmp.not.i6.i.i.i.i.i.i = icmp ne ptr %325, addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr) %332 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.not.i6.i.i.i.i.i.i) %333 = extractvalue { i1, i64 } %332, 0 %334 = extractvalue { i1, i64 } %332, 1 br i1 %333, label %if.then.i.i.i.i2.i.i.i, label %_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi.exit.i if.then.i.i.i.i2.i.i.i: ; preds = %if.end.i.i.i.i.i.i %arrayidx.i.i.i.i3.i.i.i = getelementptr inbounds nuw i8, ptr %325, i64 %writer.sroa.10.4.i.i.i.i store i8 0, ptr %arrayidx.i.i.i.i3.i.i.i, align 1, !tbaa !57, !noalias !86 br label %_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi.exit.i, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi.exit.i: ; preds = %if.then.i.i.i.i2.i.i.i, %if.end.i.i.i.i.i.i call void @llvm.amdgcn.end.cf.i64(i64 %334) %335 = trunc i64 %writer.sroa.10.4.i.i.i.i to i32 %336 = and i64 %writer.sroa.10.4.i.i.i.i, 15 %337 = sub i64 %writer.sroa.10.4.i.i.i.i, %336 %338 = icmp ne i64 %337, 0 %339 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %338) %340 = extractvalue { i1, i64 } %339, 0 %341 = extractvalue { i1, i64 } %339, 1 br i1 %340, label %loop-memcpy-expansion2290.preheader, label %Flow3829 loop-memcpy-expansion2290.preheader: ; preds = %_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi.exit.i %342 = sub i32 11, %335 %scevgep3197 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i, i32 %342 br label %loop-memcpy-expansion2290, !amdgpu.uniform !42 Flow3829: ; preds = %Flow3828, %_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi.exit.i call void @llvm.amdgcn.end.cf.i64(i64 %341) br label %loop-memcpy-residual-header2293, !amdgpu.uniform !42 loop-memcpy-expansion2290: ; preds = %loop-memcpy-expansion2290.preheader, %loop-memcpy-expansion2290 %phi.broken3898 = phi i64 [ 0, %loop-memcpy-expansion2290.preheader ], [ %347, %loop-memcpy-expansion2290 ] %lsr.iv3198 = phi ptr addrspace(5) [ %scevgep3199, %loop-memcpy-expansion2290 ], [ %scevgep3197, %loop-memcpy-expansion2290.preheader ] %loop-index2291 = phi i64 [ %345, %loop-memcpy-expansion2290 ], [ 0, %loop-memcpy-expansion2290.preheader ] %343 = load <4 x i32>, ptr addrspace(5) %lsr.iv3198, align 1 %344 = getelementptr i8, ptr %325, i64 %loop-index2291 store <4 x i32> %343, ptr %344, align 1 %345 = add i64 %loop-index2291, 16 %scevgep3199 = getelementptr i8, ptr addrspace(5) %lsr.iv3198, i32 16 %346 = icmp uge i64 %345, %337 %347 = call i64 @llvm.amdgcn.if.break.i64(i1 %346, i64 %phi.broken3898) %348 = call i1 @llvm.amdgcn.loop.i64(i64 %347) br i1 %348, label %Flow3828, label %loop-memcpy-expansion2290 Flow3827: ; preds = %Flow3826, %loop-memcpy-residual-header2293 call void @llvm.amdgcn.end.cf.i64(i64 %2811) br label %post-loop-memcpy-expansion2289, !amdgpu.uniform !42 loop-memcpy-residual2292: ; preds = %loop-memcpy-residual2292.preheader, %loop-memcpy-residual2292 %phi.broken3899 = phi i64 [ 0, %loop-memcpy-residual2292.preheader ], [ %352, %loop-memcpy-residual2292 ] %lsr.iv3193 = phi ptr addrspace(5) [ %scevgep3194, %loop-memcpy-residual2292 ], [ %scevgep3192, %loop-memcpy-residual2292.preheader ] %residual-loop-index2294 = phi i64 [ %350, %loop-memcpy-residual2292 ], [ 0, %loop-memcpy-residual2292.preheader ] %349 = load i8, ptr addrspace(5) %lsr.iv3193, align 1 %scevgep3196 = getelementptr i8, ptr %scevgep3195, i64 %residual-loop-index2294 store i8 %349, ptr %scevgep3196, align 1 %350 = add i64 %residual-loop-index2294, 1 %scevgep3194 = getelementptr i8, ptr addrspace(5) %lsr.iv3193, i32 1 %351 = icmp uge i64 %350, %336 %352 = call i64 @llvm.amdgcn.if.break.i64(i1 %351, i64 %phi.broken3899) %353 = call i1 @llvm.amdgcn.loop.i64(i64 %352) br i1 %353, label %Flow3826, label %loop-memcpy-residual2292 Flow3826: ; preds = %loop-memcpy-residual2292 %.lcssa4177 = phi i64 [ %352, %loop-memcpy-residual2292 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4177) br label %Flow3827, !amdgpu.uniform !42 post-loop-memcpy-expansion2289: ; preds = %Flow3827 call void @llvm.lifetime.end.p5(ptr addrspace(5) %buffer.i.i.i) #34, !noalias !86 br label %for.cond.i.i.i118, !amdgpu.uniform !42 for.cond.i.i.i118: ; preds = %post-loop-memcpy-expansion2289, %Flow3825 %354 = phi i32 [ %392, %Flow3825 ], [ poison, %post-loop-memcpy-expansion2289 ] %355 = phi i64 [ %393, %Flow3825 ], [ poison, %post-loop-memcpy-expansion2289 ] %356 = phi i32 [ %394, %Flow3825 ], [ poison, %post-loop-memcpy-expansion2289 ] %retval.sroa.6.0.i.i.i119 = phi i32 [ %397, %Flow3825 ], [ undef, %post-loop-memcpy-expansion2289 ] %retval.sroa.2.0.i.i.i121 = phi i64 [ %396, %Flow3825 ], [ undef, %post-loop-memcpy-expansion2289 ] %retval.sroa.8.0.i.i.i122 = phi i32 [ %395, %Flow3825 ], [ undef, %post-loop-memcpy-expansion2289 ] %index.0.i.i.i123 = phi i32 [ %399, %Flow3825 ], [ 0, %post-loop-memcpy-expansion2289 ] %357 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i124 = icmp ult i32 %index.0.i.i.i123, %357 %spec.store.select.i.i.i125 = select i1 %cmp.not.i.i.i124, i32 %index.0.i.i.i123, i32 0 %358 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %359 = and i32 %spec.store.select.i.i.i125, 31 %360 = lshr i64 %358, %sh_prom.i.i.i.i %361 = trunc i64 %360 to i32 %conv4.i.i.i.i.i129 = and i32 %361, 1 %shl.i.i.i.i.i130 = shl nuw i32 %conv4.i.i.i.i.i129, %359 %362 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2448, !amdgpu.uniform !42 363: ; preds = %ComputeEnd2449 %sunkaddr3277 = getelementptr inbounds i8, ptr addrspace(1) %3039, i64 40 %364 = atomicrmw or ptr addrspace(1) %sunkaddr3277, i32 %.lcssa4171 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %365, !amdgpu.uniform !42 365: ; preds = %363, %ComputeEnd2449 %366 = phi i32 [ %364, %363 ], [ poison, %ComputeEnd2449 ] call void @llvm.amdgcn.end.cf.i64(i64 %3048) %367 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %366) %368 = or i32 %367, %.lcssa4172 %shl5.i.i.i.i.i131 = shl nuw i32 1, %359 %and.i.i.i.i.i132 = and i32 %shl5.i.i.i.i.i131, %368 %tobool3.i.i.i.i133 = icmp ne i32 %and.i.i.i.i.i132, 0 %369 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i133) %and.i.i.i.i.i.i134 = and i64 %369, %358 %cmp.i.not.i.i.i135 = icmp ne i64 %358, %and.i.i.i.i.i.i134 br i1 %cmp.i.not.i.i.i135, label %if.then.i.i.i.i136, label %Flow3824, !amdgpu.uniform !42 if.then.i.i.i.i136: ; preds = %365 fence syncscope("agent") acquire %370 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %371 = extractelement <2 x i64> %370, i32 0 %372 = inttoptr i64 %371 to ptr %373 = extractelement <2 x i64> %370, i32 1 %374 = inttoptr i64 %373 to ptr %idxprom.i.i.i.i137 = zext i32 %spec.store.select.i.i.i125 to i64 %arrayidx.i.i.i.i138 = getelementptr inbounds nuw i32, ptr %372, i64 %idxprom.i.i.i.i137, !amdgpu.uniform !42 %375 = load atomic i32, ptr %arrayidx.i.i.i.i138 monotonic, align 4 %376 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %375) %arrayidx.i45.i.i.i139 = getelementptr inbounds nuw i32, ptr %374, i64 %idxprom.i.i.i.i137, !amdgpu.uniform !42 %377 = load atomic i32, ptr %arrayidx.i45.i.i.i139 monotonic, align 4 %378 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %377) %cmp.i46.not.i.i.i140 = icmp ne i32 %376, %378 br i1 %cmp.i46.not.i.i.i140, label %if.then12.i.i.i141, label %Flow3822, !amdgpu.uniform !42 if.then12.i.i.i141: ; preds = %if.then.i.i.i.i136 fence syncscope("agent") release %379 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %358, i1 true) %iszero.i.i.i.i.i.i.i142 = icmp ne i64 %358, 0 %cmp2.i.i.i.i.i.i143 = icmp eq i64 %379, %sh_prom.i.i.i.i %cmp.i.i.i.i.i2.i = select i1 %iszero.i.i.i.i.i.i.i142, i1 %cmp2.i.i.i.i.i.i143, i1 false %conv4.i.i51.i.i.i144 = zext i1 %cmp.i.i.i.i.i2.i to i32 %shl.i.i52.i.i.i145 = shl nuw i32 %conv4.i.i51.i.i.i144, %359 %xor.i.i.i.i.i146 = xor i32 %shl.i.i52.i.i.i145, -1 %380 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2453, !amdgpu.uniform !42 381: ; preds = %ComputeEnd2454 %sunkaddr3278 = getelementptr inbounds i8, ptr addrspace(1) %3039, i64 40 %382 = atomicrmw and ptr addrspace(1) %sunkaddr3278, i32 %.lcssa4173 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %383, !amdgpu.uniform !42 383: ; preds = %381, %ComputeEnd2454 call void @llvm.amdgcn.end.cf.i64(i64 %3066) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3822, !amdgpu.uniform !42 if.end14.i.i.i206: ; preds = %Flow3822 %384 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %358, i1 true) %iszero.i.i.i.i.i.i207 = icmp ne i64 %358, 0 %cmp2.i.i.i.i.i208 = icmp eq i64 %384, %sh_prom.i.i.i.i %cmp.i.i.i.i.i209 = select i1 %iszero.i.i.i.i.i.i207, i1 %cmp2.i.i.i.i.i208, i1 false %385 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i209) %386 = extractvalue { i1, i64 } %385, 0 %387 = extractvalue { i1, i64 } %385, 1 br i1 %386, label %if.then16.i.i.i211, label %if.end22.i.i.i210 if.then16.i.i.i211: ; preds = %if.end14.i.i.i206 %388 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i212 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %388, i64 %idxprom.i.i.i.i137, i32 1 store i32 1660944387, ptr %opcode.i.i.i212, align 8, !tbaa !77 %arrayidx21.i.i.i213 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %388, i64 %idxprom.i.i.i.i137 store i64 %358, ptr %arrayidx21.i.i.i213, align 8, !tbaa !80 br label %if.end22.i.i.i210, !amdgpu.uniform !42 Flow3823: ; preds = %if.end22.i.i.i210, %Flow3822 %389 = phi i32 [ %376, %if.end22.i.i.i210 ], [ %retval.sroa.8.0.i.i.i122, %Flow3822 ] %390 = phi i64 [ %358, %if.end22.i.i.i210 ], [ %retval.sroa.2.0.i.i.i121, %Flow3822 ] %391 = phi i32 [ %spec.store.select.i.i.i125, %if.end22.i.i.i210 ], [ %retval.sroa.6.0.i.i.i119, %Flow3822 ] br label %cleanup26.i.i.i147, !amdgpu.uniform !42 if.end22.i.i.i210: ; preds = %if.then16.i.i.i211, %if.end14.i.i.i206 call void @llvm.amdgcn.end.cf.i64(i64 %387) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3823, !amdgpu.uniform !42 Flow3824: ; preds = %cleanup26.i.i.i147, %365 %392 = phi i32 [ %391, %cleanup26.i.i.i147 ], [ %354, %365 ] %393 = phi i64 [ %390, %cleanup26.i.i.i147 ], [ %355, %365 ] %394 = phi i32 [ %389, %cleanup26.i.i.i147 ], [ %356, %365 ] %395 = phi i32 [ %389, %cleanup26.i.i.i147 ], [ %retval.sroa.8.0.i.i.i122, %365 ] %396 = phi i64 [ %390, %cleanup26.i.i.i147 ], [ %retval.sroa.2.0.i.i.i121, %365 ] %397 = phi i32 [ %391, %cleanup26.i.i.i147 ], [ %retval.sroa.6.0.i.i.i119, %365 ] %398 = phi i1 [ %cmp.i46.not.i.i.i140, %cleanup26.i.i.i147 ], [ true, %365 ] br i1 %398, label %for.inc.i.i.i152, label %Flow3825, !amdgpu.uniform !42 cleanup26.i.i.i147: ; preds = %Flow3823 br label %Flow3824, !amdgpu.uniform !42 for.inc.i.i.i152: ; preds = %Flow3824 %inc.i.i.i157 = add i32 %spec.store.select.i.i.i125, 1 br label %Flow3825, !amdgpu.uniform !42 Flow3825: ; preds = %for.inc.i.i.i152, %Flow3824 %399 = phi i32 [ %inc.i.i.i157, %for.inc.i.i.i152 ], [ poison, %Flow3824 ] %400 = phi i1 [ false, %for.inc.i.i.i152 ], [ true, %Flow3824 ] br i1 %400, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i158, label %for.cond.i.i.i118, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i158: ; preds = %Flow3825 %.lcssa4176 = phi i32 [ %392, %Flow3825 ] %.lcssa4175 = phi i64 [ %393, %Flow3825 ] %.lcssa4174 = phi i32 [ %394, %Flow3825 ] fence acquire %401 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i159 = shl i32 %.lcssa4176, 6 %idxprom.i19.i.i.i.i.i160 = zext i32 %mul.i.i.i.i.i.i159 to i64 %arrayidx.i20.i.i.i.i.i161 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %401, i64 %idxprom.i19.i.i.i.i.i160 %arrayidx.i22.i.i.i.i.i162 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i161, i64 %sh_prom.i.i.i.i store i64 %writer.sroa.10.4.i.i.i.i, ptr %arrayidx.i22.i.i.i.i.i162, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i163 = tail call i64 @llvm.umin.i64(i64 %writer.sroa.10.4.i.i.i.i, i64 56) %402 = and i64 %spec.select.i.i.i.i.i.i.i163, 15 %403 = sub i64 %spec.select.i.i.i.i.i.i.i163, %402 %404 = icmp ne i64 %403, 0 %405 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %404) %406 = extractvalue { i1, i64 } %405, 0 %407 = extractvalue { i1, i64 } %405, 1 br i1 %406, label %loop-memcpy-expansion2266.preheader, label %Flow3821 loop-memcpy-expansion2266.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i158 %408 = add nuw nsw i64 %75, 8 %scevgep3189 = getelementptr i8, ptr %401, i64 %408 %409 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i160, 6 %scevgep3190 = getelementptr i8, ptr %scevgep3189, i64 %409 br label %loop-memcpy-expansion2266, !amdgpu.uniform !42 Flow3821: ; preds = %Flow3820, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i158 call void @llvm.amdgcn.end.cf.i64(i64 %407) br label %loop-memcpy-residual-header2269, !amdgpu.uniform !42 loop-memcpy-expansion2266: ; preds = %loop-memcpy-expansion2266.preheader, %loop-memcpy-expansion2266 %phi.broken3900 = phi i64 [ 0, %loop-memcpy-expansion2266.preheader ], [ %414, %loop-memcpy-expansion2266 ] %loop-index2267 = phi i64 [ %412, %loop-memcpy-expansion2266 ], [ 0, %loop-memcpy-expansion2266.preheader ] %410 = getelementptr i8, ptr %325, i64 %loop-index2267 %411 = load <4 x i32>, ptr %410, align 1 %scevgep3191 = getelementptr i8, ptr %scevgep3190, i64 %loop-index2267 store <4 x i32> %411, ptr %scevgep3191, align 1 %412 = add i64 %loop-index2267, 16 %413 = icmp uge i64 %412, %403 %414 = call i64 @llvm.amdgcn.if.break.i64(i1 %413, i64 %phi.broken3900) %415 = call i1 @llvm.amdgcn.loop.i64(i64 %414) br i1 %415, label %Flow3820, label %loop-memcpy-expansion2266 Flow3819: ; preds = %Flow3817, %Flow3818 %416 = phi i64 [ %2804, %Flow3817 ], [ %2796, %Flow3818 ] call void @llvm.amdgcn.end.cf.i64(i64 %2799) br label %post-loop-memcpy-expansion2265, !amdgpu.uniform !42 loop-memcpy-residual2268: ; preds = %loop-memcpy-residual2268.preheader, %loop-memcpy-residual2268 %phi.broken3901 = phi i64 [ 0, %loop-memcpy-residual2268.preheader ], [ %420, %loop-memcpy-residual2268 ] %residual-loop-index2270 = phi i64 [ %418, %loop-memcpy-residual2268 ], [ 0, %loop-memcpy-residual2268.preheader ] %scevgep3188 = getelementptr i8, ptr %scevgep3187, i64 %residual-loop-index2270 %417 = load i8, ptr %scevgep3188, align 1 %scevgep3186 = getelementptr i8, ptr %scevgep3185, i64 %residual-loop-index2270 store i8 %417, ptr %scevgep3186, align 1 %418 = add i64 %residual-loop-index2270, 1 %419 = icmp uge i64 %418, %402 %420 = call i64 @llvm.amdgcn.if.break.i64(i1 %419, i64 %phi.broken3901) %421 = call i1 @llvm.amdgcn.loop.i64(i64 %420) br i1 %421, label %Flow3817, label %loop-memcpy-residual2268 Flow3817: ; preds = %loop-memcpy-residual2268 %.lcssa4169 = phi i64 [ %420, %loop-memcpy-residual2268 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4169) br label %Flow3819, !amdgpu.uniform !42 post-loop-memcpy-expansion2265: ; preds = %Flow3819 %tobool.not.i.i.i.i.i.i165 = icmp eq i32 %.lcssa4174, 0 %conv.i.i.i.i.i.i166 = zext i1 %tobool.not.i.i.i.i.i.i165 to i32 fence release %422 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i167 = zext i32 %.lcssa4176 to i64 %arrayidx.i24.i.i.i.i.i168 = getelementptr inbounds nuw i32, ptr %422, i64 %idxprom.i23.i.i.i.i.i167 store atomic i32 %conv.i.i.i.i.i.i166, ptr %arrayidx.i24.i.i.i.i.i168 monotonic, align 4 %423 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i169 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %423, i64 %idxprom.i23.i.i.i.i.i167, !amdgpu.uniform !42 %424 = load i64, ptr %arrayidx.i.i5.i.i169, align 8, !tbaa !80 %scevgep3171 = getelementptr i8, ptr %325, i64 56 %425 = add i64 %writer.sroa.10.4.i.i.i.i, -56 br label %while.cond.i.i.i.i170, !amdgpu.uniform !42 while.cond.i.i.i.i170: ; preds = %post-loop-memcpy-expansion2265, %Flow3816 %phi.broken3904 = phi i64 [ 0, %post-loop-memcpy-expansion2265 ], [ %442, %Flow3816 ] %lsr.iv3177 = phi i64 [ %440, %Flow3816 ], [ %425, %post-loop-memcpy-expansion2265 ] %lsr.iv3172 = phi ptr [ %439, %Flow3816 ], [ %scevgep3171, %post-loop-memcpy-expansion2265 ] %port.sroa.37.0.i.i171 = phi i32 [ %438, %Flow3816 ], [ %conv.i.i.i.i.i.i166, %post-loop-memcpy-expansion2265 ] %idx.0.i.i.i.i172 = phi i64 [ %437, %Flow3816 ], [ 56, %post-loop-memcpy-expansion2265 ] %cmp.i.i.i.i173 = icmp ugt i64 %writer.sroa.10.4.i.i.i.i, %idx.0.i.i.i.i172 %426 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i173) %and.i.i.i.i6.i.i174 = and i64 %426, %424 %tobool.not.i.i.i.i175 = icmp ne i64 %and.i.i.i.i6.i.i174, 0 %427 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i176 = getelementptr inbounds nuw i32, ptr %427, i64 %idxprom.i23.i.i.i.i.i167, !amdgpu.uniform !42 %428 = load atomic i32, ptr %arrayidx.i22.i.i.i176 monotonic, align 4 %429 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i175) %430 = extractvalue { i1, i64 } %429, 0 %431 = extractvalue { i1, i64 } %429, 1 br i1 %430, label %cond.false.i8.i.i.i.i177, label %Flow3816 cond.false.i8.i.i.i.i177: ; preds = %while.cond.i.i.i.i170 %432 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %428) %433 = icmp ne i32 %432, %port.sroa.37.0.i.i171 br i1 %433, label %while.body.i.i21.i.i.i.i178.preheader, label %Flow3815, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i178.preheader: ; preds = %cond.false.i8.i.i.i.i177 br label %while.body.i.i21.i.i.i.i178, !amdgpu.uniform !42 Flow3815: ; preds = %Flow3814, %cond.false.i8.i.i.i.i177 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i181, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i178: ; preds = %while.body.i.i21.i.i.i.i178.preheader, %while.body.i.i21.i.i.i.i178 tail call void @llvm.amdgcn.s.sleep(i32 2) %434 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i179 = getelementptr inbounds nuw i32, ptr %434, i64 %idxprom.i23.i.i.i.i.i167, !amdgpu.uniform !42 %435 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i179 monotonic, align 4 %436 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %435) %cmp.i.not.i.i23.i.i.i.i180 = icmp eq i32 %436, %port.sroa.37.0.i.i171 br i1 %cmp.i.not.i.i23.i.i.i.i180, label %Flow3814, label %while.body.i.i21.i.i.i.i178, !amdgpu.uniform !42 Flow3814: ; preds = %while.body.i.i21.i.i.i.i178 br label %Flow3815, !amdgpu.uniform !42 Flow3816: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i182, %while.cond.i.i.i.i170 %437 = phi i64 [ %add.i.i.i.i185, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i182 ], [ poison, %while.cond.i.i.i.i170 ] %438 = phi i32 [ %conv.i.i26.i.i.i.i183, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i182 ], [ poison, %while.cond.i.i.i.i170 ] %439 = phi ptr [ %scevgep3173, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i182 ], [ poison, %while.cond.i.i.i.i170 ] %440 = phi i64 [ %lsr.iv.next3178, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i182 ], [ poison, %while.cond.i.i.i.i170 ] %441 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i182 ], [ true, %while.cond.i.i.i.i170 ] call void @llvm.amdgcn.end.cf.i64(i64 %431) %442 = call i64 @llvm.amdgcn.if.break.i64(i1 %441, i64 %phi.broken3904) %443 = call i1 @llvm.amdgcn.loop.i64(i64 %442) br i1 %443, label %cond.false.i.i.i191, label %while.cond.i.i.i.i170 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i181: ; preds = %Flow3815 fence acquire %444 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i173) %445 = extractvalue { i1, i64 } %444, 0 %446 = extractvalue { i1, i64 } %444, 1 br i1 %445, label %if.then.i.i.i.i.i.i3.i, label %Flow3813 if.then.i.i.i.i.i.i3.i: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i181 %sub.i.i.i.i.i.i.i187 = sub nuw i64 %writer.sroa.10.4.i.i.i.i, %idx.0.i.i.i.i172 %spec.select.i.i.i36.i.i.i.i188 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i187, i64 64) %447 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %448 = and i64 %spec.select.i.i.i36.i.i.i.i188, 15 %449 = sub i64 %spec.select.i.i.i36.i.i.i.i188, %448 %450 = icmp ne i64 %449, 0 %451 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %450) %452 = extractvalue { i1, i64 } %451, 0 %453 = extractvalue { i1, i64 } %451, 1 br i1 %452, label %loop-memcpy-expansion2260.preheader, label %Flow3812 loop-memcpy-expansion2260.preheader: ; preds = %if.then.i.i.i.i.i.i3.i %arrayidx.i20.i35.i.i.i.i189 = getelementptr %"struct.rpc::Buffer", ptr %447, i64 %idxprom.i19.i.i.i.i.i160 %arrayidx.i22.i38.i.i.i.i190 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i189, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2260, !amdgpu.uniform !42 Flow3812: ; preds = %Flow3811, %if.then.i.i.i.i.i.i3.i call void @llvm.amdgcn.end.cf.i64(i64 %453) br label %loop-memcpy-residual-header2263, !amdgpu.uniform !42 loop-memcpy-expansion2260: ; preds = %loop-memcpy-expansion2260.preheader, %loop-memcpy-expansion2260 %phi.broken3902 = phi i64 [ 0, %loop-memcpy-expansion2260.preheader ], [ %458, %loop-memcpy-expansion2260 ] %loop-index2261 = phi i64 [ %456, %loop-memcpy-expansion2260 ], [ 0, %loop-memcpy-expansion2260.preheader ] %scevgep3174 = getelementptr i8, ptr %lsr.iv3172, i64 %loop-index2261 %454 = load <4 x i32>, ptr %scevgep3174, align 1 %455 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i190, i64 %loop-index2261 store <4 x i32> %454, ptr %455, align 1 %456 = add i64 %loop-index2261, 16 %457 = icmp uge i64 %456, %449 %458 = call i64 @llvm.amdgcn.if.break.i64(i1 %457, i64 %phi.broken3902) %459 = call i1 @llvm.amdgcn.loop.i64(i64 %458) br i1 %459, label %Flow3811, label %loop-memcpy-expansion2260 Flow3810: ; preds = %Flow3809, %loop-memcpy-residual-header2263 call void @llvm.amdgcn.end.cf.i64(i64 %2789) br label %Flow3813, !amdgpu.uniform !42 loop-memcpy-residual2262: ; preds = %loop-memcpy-residual2262.preheader, %loop-memcpy-residual2262 %phi.broken3903 = phi i64 [ 0, %loop-memcpy-residual2262.preheader ], [ %463, %loop-memcpy-residual2262 ] %residual-loop-index2264 = phi i64 [ %461, %loop-memcpy-residual2262 ], [ 0, %loop-memcpy-residual2262.preheader ] %scevgep3183 = getelementptr i8, ptr %scevgep3182, i64 %residual-loop-index2264 %460 = load i8, ptr %scevgep3183, align 1 %scevgep3181 = getelementptr i8, ptr %scevgep3180, i64 %residual-loop-index2264 store i8 %460, ptr %scevgep3181, align 1 %461 = add i64 %residual-loop-index2264, 1 %462 = icmp uge i64 %461, %448 %463 = call i64 @llvm.amdgcn.if.break.i64(i1 %462, i64 %phi.broken3903) %464 = call i1 @llvm.amdgcn.loop.i64(i64 %463) br i1 %464, label %Flow3809, label %loop-memcpy-residual2262 Flow3809: ; preds = %loop-memcpy-residual2262 %.lcssa4166 = phi i64 [ %463, %loop-memcpy-residual2262 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4166) br label %Flow3810, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i182: ; preds = %Flow3813 %conv.i.i26.i.i.i.i183 = xor i32 %port.sroa.37.0.i.i171, 1 fence release %465 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i184 = getelementptr inbounds nuw i32, ptr %465, i64 %idxprom.i23.i.i.i.i.i167 store atomic i32 %conv.i.i26.i.i.i.i183, ptr %arrayidx.i24.i29.i.i.i.i184 monotonic, align 4 %add.i.i.i.i185 = add i64 %idx.0.i.i.i.i172, 64 %scevgep3173 = getelementptr i8, ptr %lsr.iv3172, i64 64 %lsr.iv.next3178 = add i64 %lsr.iv3177, -64 br label %Flow3816, !amdgpu.uniform !42 cond.false.i.i.i191: ; preds = %Flow3816 %.lcssa4168 = phi i64 [ %442, %Flow3816 ] %port.sroa.37.0.i.i171.lcssa = phi i32 [ %port.sroa.37.0.i.i171, %Flow3816 ] %.lcssa4167 = phi i32 [ %428, %Flow3816 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4168) %466 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa4167) %467 = icmp ne i32 %466, %port.sroa.37.0.i.i171.lcssa %468 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %467) %469 = extractvalue { i1, i64 } %468, 0 %470 = extractvalue { i1, i64 } %468, 1 br i1 %469, label %while.body.i.i.i.i192.preheader, label %Flow3808 while.body.i.i.i.i192.preheader: ; preds = %cond.false.i.i.i191 br label %while.body.i.i.i.i192, !amdgpu.uniform !42 Flow3808: ; preds = %Flow3807, %cond.false.i.i.i191 call void @llvm.amdgcn.end.cf.i64(i64 %470) br label %_ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i, !amdgpu.uniform !42 while.body.i.i.i.i192: ; preds = %while.body.i.i.i.i192.preheader, %while.body.i.i.i.i192 %phi.broken3905 = phi i64 [ 0, %while.body.i.i.i.i192.preheader ], [ %474, %while.body.i.i.i.i192 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %471 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i193 = getelementptr inbounds nuw i32, ptr %471, i64 %idxprom.i23.i.i.i.i.i167, !amdgpu.uniform !42 %472 = load atomic i32, ptr %arrayidx.i.i.i8.i.i193 monotonic, align 4 %473 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %472) %cmp.i.not.i.i.i.i194 = icmp eq i32 %473, %port.sroa.37.0.i.i171.lcssa %474 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i194, i64 %phi.broken3905) %475 = call i1 @llvm.amdgcn.loop.i64(i64 %474) br i1 %475, label %Flow3807, label %while.body.i.i.i.i192 Flow3807: ; preds = %while.body.i.i.i.i192 %.lcssa4164 = phi i64 [ %474, %while.body.i.i.i.i192 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4164) br label %Flow3808, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i: ; preds = %Flow3808 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %476 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4175, i1 true) %iszero.i.i.i.i.i13.i.i195 = icmp ne i64 %.lcssa4175, 0 %cmp2.i.i.i.i14.i.i196 = icmp eq i64 %476, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i197 = select i1 %iszero.i.i.i.i.i13.i.i195, i1 %cmp2.i.i.i.i14.i.i196, i1 false %477 = and i32 %.lcssa4176, 31 %conv4.i.i.i19.i.i201 = zext i1 %cmp.i.i.i.i15.i.i197 to i32 %shl.i.i.i20.i.i202 = shl nuw i32 %conv4.i.i.i19.i.i201, %477 %xor.i.i.i21.i.i203 = xor i32 %shl.i.i.i20.i.i202, -1 %478 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2457, !amdgpu.uniform !42 479: ; preds = %ComputeEnd2458 %div8.i.i.i16.i.i198 = lshr i32 %.lcssa4176, 5 %idxprom.i.i.i17.i.i199 = zext nneg i32 %div8.i.i.i16.i.i198 to i64 %480 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i199 %sunkaddr3279 = getelementptr inbounds i8, ptr addrspace(1) %480, i64 40 %481 = atomicrmw and ptr addrspace(1) %sunkaddr3279, i32 %.lcssa4163 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %482, !amdgpu.uniform !42 482: ; preds = %479, %ComputeEnd2458 call void @llvm.amdgcn.end.cf.i64(i64 %3083) tail call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i1.i222, !amdgpu.uniform !42 for.cond.i.i1.i222: ; preds = %482, %Flow3806 %483 = phi i32 [ %521, %Flow3806 ], [ poison, %482 ] %484 = phi i64 [ %522, %Flow3806 ], [ poison, %482 ] %485 = phi i32 [ %523, %Flow3806 ], [ poison, %482 ] %retval.sroa.6.0.i.i.i223 = phi i32 [ %526, %Flow3806 ], [ undef, %482 ] %retval.sroa.2.0.i.i.i225 = phi i64 [ %525, %Flow3806 ], [ undef, %482 ] %retval.sroa.8.0.i.i.i226 = phi i32 [ %524, %Flow3806 ], [ undef, %482 ] %index.0.i.i.i227 = phi i32 [ %528, %Flow3806 ], [ 0, %482 ] %486 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i228 = icmp ult i32 %index.0.i.i.i227, %486 %spec.store.select.i.i.i229 = select i1 %cmp.not.i.i.i228, i32 %index.0.i.i.i227, i32 0 %487 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %488 = and i32 %spec.store.select.i.i.i229, 31 %489 = lshr i64 %487, %sh_prom.i.i.i.i %490 = trunc i64 %489 to i32 %conv4.i.i.i.i.i233 = and i32 %490, 1 %shl.i.i.i.i.i234 = shl nuw i32 %conv4.i.i.i.i.i233, %488 %491 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2461, !amdgpu.uniform !42 492: ; preds = %ComputeEnd2462 %sunkaddr3280 = getelementptr inbounds i8, ptr addrspace(1) %3093, i64 40 %493 = atomicrmw or ptr addrspace(1) %sunkaddr3280, i32 %.lcssa4157 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %494, !amdgpu.uniform !42 494: ; preds = %492, %ComputeEnd2462 %495 = phi i32 [ %493, %492 ], [ poison, %ComputeEnd2462 ] call void @llvm.amdgcn.end.cf.i64(i64 %3102) %496 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %495) %497 = or i32 %496, %.lcssa4158 %shl5.i.i.i.i.i235 = shl nuw i32 1, %488 %and.i.i.i.i.i236 = and i32 %shl5.i.i.i.i.i235, %497 %tobool3.i.i.i.i237 = icmp ne i32 %and.i.i.i.i.i236, 0 %498 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i237) %and.i.i.i.i.i.i238 = and i64 %498, %487 %cmp.i.not.i.i.i239 = icmp ne i64 %487, %and.i.i.i.i.i.i238 br i1 %cmp.i.not.i.i.i239, label %if.then.i.i.i.i240, label %Flow3805, !amdgpu.uniform !42 if.then.i.i.i.i240: ; preds = %494 fence syncscope("agent") acquire %499 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %500 = extractelement <2 x i64> %499, i32 0 %501 = inttoptr i64 %500 to ptr %502 = extractelement <2 x i64> %499, i32 1 %503 = inttoptr i64 %502 to ptr %idxprom.i.i.i.i241 = zext i32 %spec.store.select.i.i.i229 to i64 %arrayidx.i.i.i.i242 = getelementptr inbounds nuw i32, ptr %501, i64 %idxprom.i.i.i.i241, !amdgpu.uniform !42 %504 = load atomic i32, ptr %arrayidx.i.i.i.i242 monotonic, align 4 %505 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %504) %arrayidx.i45.i.i.i243 = getelementptr inbounds nuw i32, ptr %503, i64 %idxprom.i.i.i.i241, !amdgpu.uniform !42 %506 = load atomic i32, ptr %arrayidx.i45.i.i.i243 monotonic, align 4 %507 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %506) %cmp.i46.not.i.i.i244 = icmp ne i32 %505, %507 br i1 %cmp.i46.not.i.i.i244, label %if.then12.i.i.i245, label %Flow3803, !amdgpu.uniform !42 if.then12.i.i.i245: ; preds = %if.then.i.i.i.i240 fence syncscope("agent") release %508 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %487, i1 true) %iszero.i.i.i.i.i.i.i246 = icmp ne i64 %487, 0 %cmp2.i.i.i.i.i.i247 = icmp eq i64 %508, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i248 = select i1 %iszero.i.i.i.i.i.i.i246, i1 %cmp2.i.i.i.i.i.i247, i1 false %conv4.i.i51.i.i.i249 = zext i1 %cmp.i.i.i.i.i.i248 to i32 %shl.i.i52.i.i.i250 = shl nuw i32 %conv4.i.i51.i.i.i249, %488 %xor.i.i.i.i.i251 = xor i32 %shl.i.i52.i.i.i250, -1 %509 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2466, !amdgpu.uniform !42 510: ; preds = %ComputeEnd2467 %sunkaddr3281 = getelementptr inbounds i8, ptr addrspace(1) %3093, i64 40 %511 = atomicrmw and ptr addrspace(1) %sunkaddr3281, i32 %.lcssa4159 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %512, !amdgpu.uniform !42 512: ; preds = %510, %ComputeEnd2467 call void @llvm.amdgcn.end.cf.i64(i64 %3120) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3803, !amdgpu.uniform !42 if.end14.i.i.i311: ; preds = %Flow3803 %513 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %487, i1 true) %iszero.i.i.i.i.i.i312 = icmp ne i64 %487, 0 %cmp2.i.i.i.i.i313 = icmp eq i64 %513, %sh_prom.i.i.i.i %cmp.i.i.i.i.i314 = select i1 %iszero.i.i.i.i.i.i312, i1 %cmp2.i.i.i.i.i313, i1 false %514 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i314) %515 = extractvalue { i1, i64 } %514, 0 %516 = extractvalue { i1, i64 } %514, 1 br i1 %515, label %if.then16.i.i.i316, label %if.end22.i.i.i315 if.then16.i.i.i316: ; preds = %if.end14.i.i.i311 %517 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i317 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %517, i64 %idxprom.i.i.i.i241, i32 1 store i32 1660944387, ptr %opcode.i.i.i317, align 8, !tbaa !77 %arrayidx21.i.i.i318 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %517, i64 %idxprom.i.i.i.i241 store i64 %487, ptr %arrayidx21.i.i.i318, align 8, !tbaa !80 br label %if.end22.i.i.i315, !amdgpu.uniform !42 Flow3804: ; preds = %if.end22.i.i.i315, %Flow3803 %518 = phi i32 [ %505, %if.end22.i.i.i315 ], [ %retval.sroa.8.0.i.i.i226, %Flow3803 ] %519 = phi i64 [ %487, %if.end22.i.i.i315 ], [ %retval.sroa.2.0.i.i.i225, %Flow3803 ] %520 = phi i32 [ %spec.store.select.i.i.i229, %if.end22.i.i.i315 ], [ %retval.sroa.6.0.i.i.i223, %Flow3803 ] br label %cleanup26.i.i.i252, !amdgpu.uniform !42 if.end22.i.i.i315: ; preds = %if.then16.i.i.i316, %if.end14.i.i.i311 call void @llvm.amdgcn.end.cf.i64(i64 %516) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3804, !amdgpu.uniform !42 Flow3805: ; preds = %cleanup26.i.i.i252, %494 %521 = phi i32 [ %520, %cleanup26.i.i.i252 ], [ %483, %494 ] %522 = phi i64 [ %519, %cleanup26.i.i.i252 ], [ %484, %494 ] %523 = phi i32 [ %518, %cleanup26.i.i.i252 ], [ %485, %494 ] %524 = phi i32 [ %518, %cleanup26.i.i.i252 ], [ %retval.sroa.8.0.i.i.i226, %494 ] %525 = phi i64 [ %519, %cleanup26.i.i.i252 ], [ %retval.sroa.2.0.i.i.i225, %494 ] %526 = phi i32 [ %520, %cleanup26.i.i.i252 ], [ %retval.sroa.6.0.i.i.i223, %494 ] %527 = phi i1 [ %cmp.i46.not.i.i.i244, %cleanup26.i.i.i252 ], [ true, %494 ] br i1 %527, label %for.inc.i.i.i257, label %Flow3806, !amdgpu.uniform !42 cleanup26.i.i.i252: ; preds = %Flow3804 br label %Flow3805, !amdgpu.uniform !42 for.inc.i.i.i257: ; preds = %Flow3805 %inc.i.i.i262 = add i32 %spec.store.select.i.i.i229, 1 br label %Flow3806, !amdgpu.uniform !42 Flow3806: ; preds = %for.inc.i.i.i257, %Flow3805 %528 = phi i32 [ %inc.i.i.i262, %for.inc.i.i.i257 ], [ poison, %Flow3805 ] %529 = phi i1 [ false, %for.inc.i.i.i257 ], [ true, %Flow3805 ] br i1 %529, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i263, label %for.cond.i.i1.i222, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i263: ; preds = %Flow3806 %.lcssa4162 = phi i32 [ %521, %Flow3806 ] %.lcssa4161 = phi i64 [ %522, %Flow3806 ] %.lcssa4160 = phi i32 [ %523, %Flow3806 ] fence acquire %530 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i264 = shl i32 %.lcssa4162, 6 %idxprom.i19.i.i.i.i.i265 = zext i32 %mul.i.i.i.i.i.i264 to i64 %arrayidx.i20.i.i.i.i.i266 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %530, i64 %idxprom.i19.i.i.i.i.i265 %arrayidx.i22.i.i.i.i.i267 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i266, i64 %sh_prom.i.i.i.i store i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.7.11 to ptr), i64 10) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.7.11 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i267, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i268 = tail call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.7.11 to ptr), i64 10) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.7.11 to ptr) to i64)), i64 56) %531 = and i64 %spec.select.i.i.i.i.i.i.i268, 15 %532 = sub i64 %spec.select.i.i.i.i.i.i.i268, %531 %533 = icmp ne i64 %532, 0 br i1 %533, label %loop-memcpy-expansion2332.preheader, label %Flow3802, !amdgpu.uniform !42 loop-memcpy-expansion2332.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i263 %534 = add nuw nsw i64 %75, 8 %scevgep3168 = getelementptr i8, ptr %530, i64 %534 %535 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i265, 6 %scevgep3169 = getelementptr i8, ptr %scevgep3168, i64 %535 br label %loop-memcpy-expansion2332, !amdgpu.uniform !42 Flow3802: ; preds = %Flow3801, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i263 br label %loop-memcpy-residual-header2335, !amdgpu.uniform !42 loop-memcpy-expansion2332: ; preds = %loop-memcpy-expansion2332.preheader, %loop-memcpy-expansion2332 %loop-index2333 = phi i64 [ %538, %loop-memcpy-expansion2332 ], [ 0, %loop-memcpy-expansion2332.preheader ] %536 = getelementptr i8, ptr addrspace(4) @.str.7.11, i64 %loop-index2333, !amdgpu.uniform !42 %537 = load <4 x i32>, ptr addrspace(4) %536, align 1 %scevgep3170 = getelementptr i8, ptr %scevgep3169, i64 %loop-index2333 store <4 x i32> %537, ptr %scevgep3170, align 1 %538 = add i64 %loop-index2333, 16 %539 = icmp uge i64 %538, %532 br i1 %539, label %Flow3801, label %loop-memcpy-expansion2332, !amdgpu.uniform !42 Flow3800: ; preds = %Flow3798, %Flow3799 %540 = phi i64 [ %2860, %Flow3798 ], [ %2857, %Flow3799 ] br label %post-loop-memcpy-expansion2331, !amdgpu.uniform !42 loop-memcpy-residual2334: ; preds = %loop-memcpy-residual2334.preheader, %loop-memcpy-residual2334 %residual-loop-index2336 = phi i64 [ %542, %loop-memcpy-residual2334 ], [ 0, %loop-memcpy-residual2334.preheader ] %scevgep3167 = getelementptr i8, ptr addrspace(4) @.str.7.11, i64 %residual-loop-index2336, !amdgpu.uniform !42 %541 = load i8, ptr addrspace(4) %scevgep3167, align 1 %scevgep3166 = getelementptr i8, ptr %scevgep3165, i64 %residual-loop-index2336 store i8 %541, ptr %scevgep3166, align 1 %542 = add i64 %residual-loop-index2336, 1 %543 = icmp uge i64 %542, %531 br i1 %543, label %Flow3798, label %loop-memcpy-residual2334, !amdgpu.uniform !42 Flow3798: ; preds = %loop-memcpy-residual2334 br label %Flow3800, !amdgpu.uniform !42 post-loop-memcpy-expansion2331: ; preds = %Flow3800 %tobool.not.i.i.i.i.i.i270 = icmp eq i32 %.lcssa4160, 0 %conv.i.i.i.i.i.i271 = zext i1 %tobool.not.i.i.i.i.i.i270 to i32 fence release %544 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i272 = zext i32 %.lcssa4162 to i64 %arrayidx.i24.i.i.i.i.i273 = getelementptr inbounds nuw i32, ptr %544, i64 %idxprom.i23.i.i.i.i.i272 store atomic i32 %conv.i.i.i.i.i.i271, ptr %arrayidx.i24.i.i.i.i.i273 monotonic, align 4 %545 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i274 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %545, i64 %idxprom.i23.i.i.i.i.i272, !amdgpu.uniform !42 %546 = load i64, ptr %arrayidx.i.i5.i.i274, align 8, !tbaa !80 br label %while.cond.i.i.i.i275, !amdgpu.uniform !42 while.cond.i.i.i.i275: ; preds = %post-loop-memcpy-expansion2331, %Flow3797 %phi.broken3906 = phi i64 [ 0, %post-loop-memcpy-expansion2331 ], [ %563, %Flow3797 ] %lsr.iv3157 = phi i64 [ %561, %Flow3797 ], [ -46, %post-loop-memcpy-expansion2331 ] %lsr.iv3152 = phi ptr addrspace(4) [ %560, %Flow3797 ], [ getelementptr (i8, ptr addrspace(4) @.str.7.11, i64 56), %post-loop-memcpy-expansion2331 ] %port.sroa.37.0.i.i276 = phi i32 [ %559, %Flow3797 ], [ %conv.i.i.i.i.i.i271, %post-loop-memcpy-expansion2331 ] %idx.0.i.i.i.i277 = phi i64 [ %558, %Flow3797 ], [ 56, %post-loop-memcpy-expansion2331 ] %cmp.i.i.i.i278 = icmp ult i64 %idx.0.i.i.i.i277, sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.7.11 to ptr), i64 10) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.7.11 to ptr) to i64)) %547 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i278) %and.i.i.i.i6.i.i279 = and i64 %547, %546 %tobool.not.i.i.i.i280 = icmp ne i64 %and.i.i.i.i6.i.i279, 0 %548 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i281 = getelementptr inbounds nuw i32, ptr %548, i64 %idxprom.i23.i.i.i.i.i272, !amdgpu.uniform !42 %549 = load atomic i32, ptr %arrayidx.i22.i.i.i281 monotonic, align 4 %550 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i280) %551 = extractvalue { i1, i64 } %550, 0 %552 = extractvalue { i1, i64 } %550, 1 br i1 %551, label %cond.false.i8.i.i.i.i282, label %Flow3797 cond.false.i8.i.i.i.i282: ; preds = %while.cond.i.i.i.i275 %553 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %549) %554 = icmp ne i32 %553, %port.sroa.37.0.i.i276 br i1 %554, label %while.body.i.i21.i.i.i.i283.preheader, label %Flow3796, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i283.preheader: ; preds = %cond.false.i8.i.i.i.i282 br label %while.body.i.i21.i.i.i.i283, !amdgpu.uniform !42 Flow3796: ; preds = %Flow3795, %cond.false.i8.i.i.i.i282 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i286, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i283: ; preds = %while.body.i.i21.i.i.i.i283.preheader, %while.body.i.i21.i.i.i.i283 tail call void @llvm.amdgcn.s.sleep(i32 2) %555 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i284 = getelementptr inbounds nuw i32, ptr %555, i64 %idxprom.i23.i.i.i.i.i272, !amdgpu.uniform !42 %556 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i284 monotonic, align 4 %557 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %556) %cmp.i.not.i.i23.i.i.i.i285 = icmp eq i32 %557, %port.sroa.37.0.i.i276 br i1 %cmp.i.not.i.i23.i.i.i.i285, label %Flow3795, label %while.body.i.i21.i.i.i.i283, !amdgpu.uniform !42 Flow3795: ; preds = %while.body.i.i21.i.i.i.i283 br label %Flow3796, !amdgpu.uniform !42 Flow3797: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i287, %while.cond.i.i.i.i275 %558 = phi i64 [ %add.i.i.i.i290, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i287 ], [ poison, %while.cond.i.i.i.i275 ] %559 = phi i32 [ %conv.i.i26.i.i.i.i288, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i287 ], [ poison, %while.cond.i.i.i.i275 ] %560 = phi ptr addrspace(4) [ %scevgep3153, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i287 ], [ poison, %while.cond.i.i.i.i275 ] %561 = phi i64 [ %lsr.iv.next3158, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i287 ], [ poison, %while.cond.i.i.i.i275 ] %562 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i287 ], [ true, %while.cond.i.i.i.i275 ] call void @llvm.amdgcn.end.cf.i64(i64 %552) %563 = call i64 @llvm.amdgcn.if.break.i64(i1 %562, i64 %phi.broken3906) %564 = call i1 @llvm.amdgcn.loop.i64(i64 %563) br i1 %564, label %cond.false.i.i.i297, label %while.cond.i.i.i.i275 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i286: ; preds = %Flow3796 fence acquire br i1 %cmp.i.i.i.i278, label %if.then.i.i.i.i.i.i.i291, label %Flow3794, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i291: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i286 %sub.i.i.i.i.i.i.i293 = sub nuw i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.7.11 to ptr), i64 10) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.7.11 to ptr) to i64)), %idx.0.i.i.i.i277 %spec.select.i.i.i36.i.i.i.i294 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i293, i64 64) %565 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %566 = and i64 %spec.select.i.i.i36.i.i.i.i294, 15 %567 = sub i64 %spec.select.i.i.i36.i.i.i.i294, %566 %568 = icmp ne i64 %567, 0 br i1 %568, label %loop-memcpy-expansion2338.preheader, label %Flow3793, !amdgpu.uniform !42 loop-memcpy-expansion2338.preheader: ; preds = %if.then.i.i.i.i.i.i.i291 %arrayidx.i20.i35.i.i.i.i295 = getelementptr %"struct.rpc::Buffer", ptr %565, i64 %idxprom.i19.i.i.i.i.i265 %arrayidx.i22.i38.i.i.i.i296 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i295, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2338, !amdgpu.uniform !42 Flow3793: ; preds = %Flow3792, %if.then.i.i.i.i.i.i.i291 br label %loop-memcpy-residual-header2341, !amdgpu.uniform !42 loop-memcpy-expansion2338: ; preds = %loop-memcpy-expansion2338.preheader, %loop-memcpy-expansion2338 %loop-index2339 = phi i64 [ %571, %loop-memcpy-expansion2338 ], [ 0, %loop-memcpy-expansion2338.preheader ] %scevgep3154 = getelementptr i8, ptr addrspace(4) %lsr.iv3152, i64 %loop-index2339, !amdgpu.uniform !42 %569 = load <4 x i32>, ptr addrspace(4) %scevgep3154, align 1 %570 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i296, i64 %loop-index2339 store <4 x i32> %569, ptr %570, align 1 %571 = add i64 %loop-index2339, 16 %572 = icmp uge i64 %571, %567 br i1 %572, label %Flow3792, label %loop-memcpy-expansion2338, !amdgpu.uniform !42 Flow3791: ; preds = %Flow3790, %loop-memcpy-residual-header2341 br label %Flow3794, !amdgpu.uniform !42 loop-memcpy-residual2340: ; preds = %loop-memcpy-residual2340.preheader, %loop-memcpy-residual2340 %residual-loop-index2342 = phi i64 [ %574, %loop-memcpy-residual2340 ], [ 0, %loop-memcpy-residual2340.preheader ] %scevgep3163 = getelementptr i8, ptr addrspace(4) %scevgep3162, i64 %residual-loop-index2342, !amdgpu.uniform !42 %573 = load i8, ptr addrspace(4) %scevgep3163, align 1 %scevgep3161 = getelementptr i8, ptr %scevgep3160, i64 %residual-loop-index2342 store i8 %573, ptr %scevgep3161, align 1 %574 = add i64 %residual-loop-index2342, 1 %575 = icmp uge i64 %574, %566 br i1 %575, label %Flow3790, label %loop-memcpy-residual2340, !amdgpu.uniform !42 Flow3790: ; preds = %loop-memcpy-residual2340 br label %Flow3791, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i287: ; preds = %Flow3794 %conv.i.i26.i.i.i.i288 = xor i32 %port.sroa.37.0.i.i276, 1 fence release %576 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i289 = getelementptr inbounds nuw i32, ptr %576, i64 %idxprom.i23.i.i.i.i.i272 store atomic i32 %conv.i.i26.i.i.i.i288, ptr %arrayidx.i24.i29.i.i.i.i289 monotonic, align 4 %add.i.i.i.i290 = add i64 %idx.0.i.i.i.i277, 64 %scevgep3153 = getelementptr i8, ptr addrspace(4) %lsr.iv3152, i64 64 %lsr.iv.next3158 = add i64 %lsr.iv3157, -64 br label %Flow3797, !amdgpu.uniform !42 cond.false.i.i.i297: ; preds = %Flow3797 %.lcssa4156 = phi i64 [ %563, %Flow3797 ] %port.sroa.37.0.i.i276.lcssa = phi i32 [ %port.sroa.37.0.i.i276, %Flow3797 ] %.lcssa4155 = phi i32 [ %549, %Flow3797 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4156) %577 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa4155) %578 = icmp ne i32 %577, %port.sroa.37.0.i.i276.lcssa %579 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %578) %580 = extractvalue { i1, i64 } %579, 0 %581 = extractvalue { i1, i64 } %579, 1 br i1 %580, label %while.body.i.i.i.i298.preheader, label %Flow3789 while.body.i.i.i.i298.preheader: ; preds = %cond.false.i.i.i297 br label %while.body.i.i.i.i298, !amdgpu.uniform !42 Flow3789: ; preds = %Flow3788, %cond.false.i.i.i297 call void @llvm.amdgcn.end.cf.i64(i64 %581) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit319, !amdgpu.uniform !42 while.body.i.i.i.i298: ; preds = %while.body.i.i.i.i298.preheader, %while.body.i.i.i.i298 %phi.broken3907 = phi i64 [ 0, %while.body.i.i.i.i298.preheader ], [ %585, %while.body.i.i.i.i298 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %582 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i299 = getelementptr inbounds nuw i32, ptr %582, i64 %idxprom.i23.i.i.i.i.i272, !amdgpu.uniform !42 %583 = load atomic i32, ptr %arrayidx.i.i.i8.i.i299 monotonic, align 4 %584 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %583) %cmp.i.not.i.i.i.i300 = icmp eq i32 %584, %port.sroa.37.0.i.i276.lcssa %585 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i300, i64 %phi.broken3907) %586 = call i1 @llvm.amdgcn.loop.i64(i64 %585) br i1 %586, label %Flow3788, label %while.body.i.i.i.i298 Flow3788: ; preds = %while.body.i.i.i.i298 %.lcssa4154 = phi i64 [ %585, %while.body.i.i.i.i298 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4154) br label %Flow3789, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit319: ; preds = %Flow3789 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %587 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4161, i1 true) %iszero.i.i.i.i.i13.i.i302 = icmp ne i64 %.lcssa4161, 0 %cmp2.i.i.i.i14.i.i303 = icmp eq i64 %587, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i304 = select i1 %iszero.i.i.i.i.i13.i.i302, i1 %cmp2.i.i.i.i14.i.i303, i1 false %588 = and i32 %.lcssa4162, 31 %conv4.i.i.i19.i.i308 = zext i1 %cmp.i.i.i.i15.i.i304 to i32 %shl.i.i.i20.i.i309 = shl nuw i32 %conv4.i.i.i19.i.i308, %588 %xor.i.i.i21.i.i310 = xor i32 %shl.i.i.i20.i.i309, -1 %589 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2470, !amdgpu.uniform !42 590: ; preds = %ComputeEnd2471 %div8.i.i.i16.i.i305 = lshr i32 %.lcssa4162, 5 %idxprom.i.i.i17.i.i306 = zext nneg i32 %div8.i.i.i16.i.i305 to i64 %591 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i306 %sunkaddr3282 = getelementptr inbounds i8, ptr addrspace(1) %591, i64 40 %592 = atomicrmw and ptr addrspace(1) %sunkaddr3282, i32 %.lcssa4153 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %593, !amdgpu.uniform !42 593: ; preds = %590, %ComputeEnd2471 call void @llvm.amdgcn.end.cf.i64(i64 %3137) tail call void @llvm.amdgcn.wave.barrier() %inc.i.i.i32.i = add nuw i64 %spec.select.i, 1 %cmp2.i.i.i35.i = icmp ult i64 %spec.select.i, 1676976733973595600 br i1 %cmp2.i.i.i35.i, label %if.then3.i.i.i44.i, label %if.end4.i.i.i36.i, !amdgpu.uniform !42 if.then3.i.i.i44.i: ; preds = %593 %mul.i.i.i45.i = mul nuw i64 %inc.i.i.i32.i, 11 %div18.i.i.i46.i = lshr i64 %mul.i.i.i45.i, 3 br label %if.end4.i.i.i36.i, !amdgpu.uniform !42 if.end4.i.i.i36.i: ; preds = %if.then3.i.i.i44.i, %593 %new_capacity.addr.0.i.i.i37.i = phi i64 [ %div18.i.i.i46.i, %if.then3.i.i.i44.i ], [ %inc.i.i.i32.i, %593 ] %sub.i.i320 = add i64 %new_capacity.addr.0.i.i.i37.i, 7 %div2.i.i321 = and i64 %sub.i.i320, -8 %594 = load ptr, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %add.ptr.i.i322 = getelementptr inbounds nuw i8, ptr %594, i64 %div2.i.i321 store ptr %add.ptr.i.i322, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %595 = and i64 %spec.select.i, 15 %596 = sub i64 %spec.select.i, %595 %597 = icmp ne i64 %596, 0 br i1 %597, label %loop-memcpy-expansion2284.preheader, label %Flow3787, !amdgpu.uniform !42 loop-memcpy-expansion2284.preheader: ; preds = %if.end4.i.i.i36.i br label %loop-memcpy-expansion2284, !amdgpu.uniform !42 Flow3787: ; preds = %Flow3786, %if.end4.i.i.i36.i br label %loop-memcpy-residual-header2287, !amdgpu.uniform !42 loop-memcpy-expansion2284: ; preds = %loop-memcpy-expansion2284.preheader, %loop-memcpy-expansion2284 %loop-index2285 = phi i64 [ %601, %loop-memcpy-expansion2284 ], [ 0, %loop-memcpy-expansion2284.preheader ] %598 = getelementptr i8, ptr %3, i64 %loop-index2285, !amdgpu.uniform !42 %599 = load <4 x i32>, ptr %598, align 1 %600 = getelementptr i8, ptr %594, i64 %loop-index2285 store <4 x i32> %599, ptr %600, align 1 %601 = add i64 %loop-index2285, 16 %602 = icmp uge i64 %601, %596 br i1 %602, label %Flow3786, label %loop-memcpy-expansion2284, !amdgpu.uniform !42 Flow3785: ; preds = %Flow3784, %loop-memcpy-residual-header2287 br label %post-loop-memcpy-expansion2283, !amdgpu.uniform !42 loop-memcpy-residual2286: ; preds = %loop-memcpy-residual2286.preheader, %loop-memcpy-residual2286 %residual-loop-index2288 = phi i64 [ %604, %loop-memcpy-residual2286 ], [ 0, %loop-memcpy-residual2286.preheader ] %scevgep3151 = getelementptr i8, ptr %scevgep3150, i64 %residual-loop-index2288, !amdgpu.uniform !42 %603 = load i8, ptr %scevgep3151, align 1 %scevgep3149 = getelementptr i8, ptr %scevgep3148, i64 %residual-loop-index2288 store i8 %603, ptr %scevgep3149, align 1 %604 = add i64 %residual-loop-index2288, 1 %605 = icmp uge i64 %604, %595 br i1 %605, label %Flow3784, label %loop-memcpy-residual2286, !amdgpu.uniform !42 Flow3784: ; preds = %loop-memcpy-residual2286 br label %Flow3785, !amdgpu.uniform !42 post-loop-memcpy-expansion2283: ; preds = %Flow3785 %sub.ptr.lhs.cast.i.i323 = ptrtoint ptr %add.ptr.i.i322 to i64 %sub.ptr.sub.i.i324 = sub i64 %sub.ptr.lhs.cast.i.i323, ptrtoint (ptr addrspacecast (ptr addrspace(1) @_ZN12_GLOBAL__N_16memoryE to ptr) to i64) %cmp.i.i325 = icmp ugt i64 %sub.ptr.sub.i.i324, 65335 %cond.i.i326 = select i1 %cmp.i.i325, ptr null, ptr %594 %cmp.not.i10.i.i.i = icmp ne ptr %cond.i.i326, addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr) br i1 %cmp.not.i10.i.i.i, label %if.then.i.i.i42.i, label %for.cond.i.i.i328.preheader, !amdgpu.uniform !42 if.then.i.i.i42.i: ; preds = %post-loop-memcpy-expansion2283 %arrayidx.i.i.i43.i = getelementptr inbounds nuw i8, ptr %594, i64 %spec.select.i store i8 0, ptr %arrayidx.i.i.i43.i, align 1, !tbaa !57 br label %for.cond.i.i.i328.preheader, !amdgpu.uniform !42 for.cond.i.i.i328.preheader: ; preds = %if.then.i.i.i42.i, %post-loop-memcpy-expansion2283 br label %for.cond.i.i.i328, !amdgpu.uniform !42 for.cond.i.i.i328: ; preds = %for.cond.i.i.i328.preheader, %Flow3783 %606 = phi i32 [ %644, %Flow3783 ], [ poison, %for.cond.i.i.i328.preheader ] %607 = phi i64 [ %645, %Flow3783 ], [ poison, %for.cond.i.i.i328.preheader ] %608 = phi i32 [ %646, %Flow3783 ], [ poison, %for.cond.i.i.i328.preheader ] %retval.sroa.6.0.i.i.i329 = phi i32 [ %649, %Flow3783 ], [ undef, %for.cond.i.i.i328.preheader ] %retval.sroa.2.0.i.i.i331 = phi i64 [ %648, %Flow3783 ], [ undef, %for.cond.i.i.i328.preheader ] %retval.sroa.8.0.i.i.i332 = phi i32 [ %647, %Flow3783 ], [ undef, %for.cond.i.i.i328.preheader ] %index.0.i.i.i333 = phi i32 [ %651, %Flow3783 ], [ 0, %for.cond.i.i.i328.preheader ] %609 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i334 = icmp ult i32 %index.0.i.i.i333, %609 %spec.store.select.i.i.i335 = select i1 %cmp.not.i.i.i334, i32 %index.0.i.i.i333, i32 0 %610 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %611 = and i32 %spec.store.select.i.i.i335, 31 %612 = lshr i64 %610, %sh_prom.i.i.i.i %613 = trunc i64 %612 to i32 %conv4.i.i.i.i.i339 = and i32 %613, 1 %shl.i.i.i.i.i340 = shl nuw i32 %conv4.i.i.i.i.i339, %611 %614 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2474, !amdgpu.uniform !42 615: ; preds = %ComputeEnd2475 %sunkaddr3283 = getelementptr inbounds i8, ptr addrspace(1) %3147, i64 40 %616 = atomicrmw or ptr addrspace(1) %sunkaddr3283, i32 %.lcssa4147 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %617, !amdgpu.uniform !42 617: ; preds = %615, %ComputeEnd2475 %618 = phi i32 [ %616, %615 ], [ poison, %ComputeEnd2475 ] call void @llvm.amdgcn.end.cf.i64(i64 %3156) %619 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %618) %620 = or i32 %619, %.lcssa4148 %shl5.i.i.i.i.i341 = shl nuw i32 1, %611 %and.i.i.i.i.i342 = and i32 %shl5.i.i.i.i.i341, %620 %tobool3.i.i.i.i343 = icmp ne i32 %and.i.i.i.i.i342, 0 %621 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i343) %and.i.i.i.i.i.i344 = and i64 %621, %610 %cmp.i.not.i.i.i345 = icmp ne i64 %610, %and.i.i.i.i.i.i344 br i1 %cmp.i.not.i.i.i345, label %if.then.i.i.i.i346, label %Flow3782, !amdgpu.uniform !42 if.then.i.i.i.i346: ; preds = %617 fence syncscope("agent") acquire %622 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %623 = extractelement <2 x i64> %622, i32 0 %624 = inttoptr i64 %623 to ptr %625 = extractelement <2 x i64> %622, i32 1 %626 = inttoptr i64 %625 to ptr %idxprom.i.i.i.i347 = zext i32 %spec.store.select.i.i.i335 to i64 %arrayidx.i.i.i.i348 = getelementptr inbounds nuw i32, ptr %624, i64 %idxprom.i.i.i.i347, !amdgpu.uniform !42 %627 = load atomic i32, ptr %arrayidx.i.i.i.i348 monotonic, align 4 %628 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %627) %arrayidx.i45.i.i.i349 = getelementptr inbounds nuw i32, ptr %626, i64 %idxprom.i.i.i.i347, !amdgpu.uniform !42 %629 = load atomic i32, ptr %arrayidx.i45.i.i.i349 monotonic, align 4 %630 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %629) %cmp.i46.not.i.i.i350 = icmp ne i32 %628, %630 br i1 %cmp.i46.not.i.i.i350, label %if.then12.i.i.i351, label %Flow3780, !amdgpu.uniform !42 if.then12.i.i.i351: ; preds = %if.then.i.i.i.i346 fence syncscope("agent") release %631 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %610, i1 true) %iszero.i.i.i.i.i.i.i352 = icmp ne i64 %610, 0 %cmp2.i.i.i.i.i.i353 = icmp eq i64 %631, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i354 = select i1 %iszero.i.i.i.i.i.i.i352, i1 %cmp2.i.i.i.i.i.i353, i1 false %conv4.i.i51.i.i.i355 = zext i1 %cmp.i.i.i.i.i.i354 to i32 %shl.i.i52.i.i.i356 = shl nuw i32 %conv4.i.i51.i.i.i355, %611 %xor.i.i.i.i.i357 = xor i32 %shl.i.i52.i.i.i356, -1 %632 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2479, !amdgpu.uniform !42 633: ; preds = %ComputeEnd2480 %sunkaddr3284 = getelementptr inbounds i8, ptr addrspace(1) %3147, i64 40 %634 = atomicrmw and ptr addrspace(1) %sunkaddr3284, i32 %.lcssa4149 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %635, !amdgpu.uniform !42 635: ; preds = %633, %ComputeEnd2480 call void @llvm.amdgcn.end.cf.i64(i64 %3174) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3780, !amdgpu.uniform !42 if.end14.i.i.i417: ; preds = %Flow3780 %636 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %610, i1 true) %iszero.i.i.i.i.i.i418 = icmp ne i64 %610, 0 %cmp2.i.i.i.i.i419 = icmp eq i64 %636, %sh_prom.i.i.i.i %cmp.i.i.i.i.i420 = select i1 %iszero.i.i.i.i.i.i418, i1 %cmp2.i.i.i.i.i419, i1 false %637 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i420) %638 = extractvalue { i1, i64 } %637, 0 %639 = extractvalue { i1, i64 } %637, 1 br i1 %638, label %if.then16.i.i.i422, label %if.end22.i.i.i421 if.then16.i.i.i422: ; preds = %if.end14.i.i.i417 %640 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i423 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %640, i64 %idxprom.i.i.i.i347, i32 1 store i32 1660944387, ptr %opcode.i.i.i423, align 8, !tbaa !77 %arrayidx21.i.i.i424 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %640, i64 %idxprom.i.i.i.i347 store i64 %610, ptr %arrayidx21.i.i.i424, align 8, !tbaa !80 br label %if.end22.i.i.i421, !amdgpu.uniform !42 Flow3781: ; preds = %if.end22.i.i.i421, %Flow3780 %641 = phi i32 [ %628, %if.end22.i.i.i421 ], [ %retval.sroa.8.0.i.i.i332, %Flow3780 ] %642 = phi i64 [ %610, %if.end22.i.i.i421 ], [ %retval.sroa.2.0.i.i.i331, %Flow3780 ] %643 = phi i32 [ %spec.store.select.i.i.i335, %if.end22.i.i.i421 ], [ %retval.sroa.6.0.i.i.i329, %Flow3780 ] br label %cleanup26.i.i.i358, !amdgpu.uniform !42 if.end22.i.i.i421: ; preds = %if.then16.i.i.i422, %if.end14.i.i.i417 call void @llvm.amdgcn.end.cf.i64(i64 %639) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3781, !amdgpu.uniform !42 Flow3782: ; preds = %cleanup26.i.i.i358, %617 %644 = phi i32 [ %643, %cleanup26.i.i.i358 ], [ %606, %617 ] %645 = phi i64 [ %642, %cleanup26.i.i.i358 ], [ %607, %617 ] %646 = phi i32 [ %641, %cleanup26.i.i.i358 ], [ %608, %617 ] %647 = phi i32 [ %641, %cleanup26.i.i.i358 ], [ %retval.sroa.8.0.i.i.i332, %617 ] %648 = phi i64 [ %642, %cleanup26.i.i.i358 ], [ %retval.sroa.2.0.i.i.i331, %617 ] %649 = phi i32 [ %643, %cleanup26.i.i.i358 ], [ %retval.sroa.6.0.i.i.i329, %617 ] %650 = phi i1 [ %cmp.i46.not.i.i.i350, %cleanup26.i.i.i358 ], [ true, %617 ] br i1 %650, label %for.inc.i.i.i363, label %Flow3783, !amdgpu.uniform !42 cleanup26.i.i.i358: ; preds = %Flow3781 br label %Flow3782, !amdgpu.uniform !42 for.inc.i.i.i363: ; preds = %Flow3782 %inc.i.i.i368 = add i32 %spec.store.select.i.i.i335, 1 br label %Flow3783, !amdgpu.uniform !42 Flow3783: ; preds = %for.inc.i.i.i363, %Flow3782 %651 = phi i32 [ %inc.i.i.i368, %for.inc.i.i.i363 ], [ poison, %Flow3782 ] %652 = phi i1 [ false, %for.inc.i.i.i363 ], [ true, %Flow3782 ] br i1 %652, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i369, label %for.cond.i.i.i328, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i369: ; preds = %Flow3783 %.lcssa4152 = phi i32 [ %644, %Flow3783 ] %.lcssa4151 = phi i64 [ %645, %Flow3783 ] %.lcssa4150 = phi i32 [ %646, %Flow3783 ] fence acquire %653 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i370 = shl i32 %.lcssa4152, 6 %idxprom.i19.i.i.i.i.i371 = zext i32 %mul.i.i.i.i.i.i370 to i64 %arrayidx.i20.i.i.i.i.i372 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %653, i64 %idxprom.i19.i.i.i.i.i371 %arrayidx.i22.i.i.i.i.i373 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i372, i64 %sh_prom.i.i.i.i store i64 %spec.select.i, ptr %arrayidx.i22.i.i.i.i.i373, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i374 = tail call i64 @llvm.umin.i64(i64 %spec.select.i, i64 56) %654 = and i64 %spec.select.i.i.i.i.i.i.i374, 15 %655 = sub i64 %spec.select.i.i.i.i.i.i.i374, %654 %656 = icmp ne i64 %655, 0 br i1 %656, label %loop-memcpy-expansion2254.preheader, label %Flow3779, !amdgpu.uniform !42 loop-memcpy-expansion2254.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i369 %657 = add nuw nsw i64 %75, 8 %scevgep3145 = getelementptr i8, ptr %653, i64 %657 %658 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i371, 6 %scevgep3146 = getelementptr i8, ptr %scevgep3145, i64 %658 br label %loop-memcpy-expansion2254, !amdgpu.uniform !42 Flow3779: ; preds = %Flow3778, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i369 br label %loop-memcpy-residual-header2257, !amdgpu.uniform !42 loop-memcpy-expansion2254: ; preds = %loop-memcpy-expansion2254.preheader, %loop-memcpy-expansion2254 %loop-index2255 = phi i64 [ %661, %loop-memcpy-expansion2254 ], [ 0, %loop-memcpy-expansion2254.preheader ] %659 = getelementptr i8, ptr %594, i64 %loop-index2255, !amdgpu.uniform !42 %660 = load <4 x i32>, ptr %659, align 1 %scevgep3147 = getelementptr i8, ptr %scevgep3146, i64 %loop-index2255 store <4 x i32> %660, ptr %scevgep3147, align 1 %661 = add i64 %loop-index2255, 16 %662 = icmp uge i64 %661, %655 br i1 %662, label %Flow3778, label %loop-memcpy-expansion2254, !amdgpu.uniform !42 Flow3777: ; preds = %Flow3775, %Flow3776 %663 = phi i64 [ %2785, %Flow3775 ], [ %2781, %Flow3776 ] br label %post-loop-memcpy-expansion2253, !amdgpu.uniform !42 loop-memcpy-residual2256: ; preds = %loop-memcpy-residual2256.preheader, %loop-memcpy-residual2256 %residual-loop-index2258 = phi i64 [ %665, %loop-memcpy-residual2256 ], [ 0, %loop-memcpy-residual2256.preheader ] %scevgep3144 = getelementptr i8, ptr %scevgep3143, i64 %residual-loop-index2258, !amdgpu.uniform !42 %664 = load i8, ptr %scevgep3144, align 1 %scevgep3142 = getelementptr i8, ptr %scevgep3141, i64 %residual-loop-index2258 store i8 %664, ptr %scevgep3142, align 1 %665 = add i64 %residual-loop-index2258, 1 %666 = icmp uge i64 %665, %654 br i1 %666, label %Flow3775, label %loop-memcpy-residual2256, !amdgpu.uniform !42 Flow3775: ; preds = %loop-memcpy-residual2256 br label %Flow3777, !amdgpu.uniform !42 post-loop-memcpy-expansion2253: ; preds = %Flow3777 %tobool.not.i.i.i.i.i.i376 = icmp eq i32 %.lcssa4150, 0 %conv.i.i.i.i.i.i377 = zext i1 %tobool.not.i.i.i.i.i.i376 to i32 fence release %667 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i378 = zext i32 %.lcssa4152 to i64 %arrayidx.i24.i.i.i.i.i379 = getelementptr inbounds nuw i32, ptr %667, i64 %idxprom.i23.i.i.i.i.i378 store atomic i32 %conv.i.i.i.i.i.i377, ptr %arrayidx.i24.i.i.i.i.i379 monotonic, align 4 %668 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i380 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %668, i64 %idxprom.i23.i.i.i.i.i378, !amdgpu.uniform !42 %669 = load i64, ptr %arrayidx.i.i5.i.i380, align 8, !tbaa !80 %scevgep3126 = getelementptr i8, ptr %594, i64 56 %umin3132 = call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.9, i64 8) to ptr) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.9 to ptr) to i64)), i64 2) %670 = sub i64 sub (i64 add (i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.9, i64 8) to ptr) to i64), i64 -56), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.9 to ptr) to i64)), %umin3132 br label %while.cond.i.i.i.i381, !amdgpu.uniform !42 while.cond.i.i.i.i381: ; preds = %post-loop-memcpy-expansion2253, %Flow3774 %phi.broken3908 = phi i64 [ 0, %post-loop-memcpy-expansion2253 ], [ %687, %Flow3774 ] %lsr.iv3133 = phi i64 [ %685, %Flow3774 ], [ %670, %post-loop-memcpy-expansion2253 ] %lsr.iv3127 = phi ptr [ %684, %Flow3774 ], [ %scevgep3126, %post-loop-memcpy-expansion2253 ] %port.sroa.37.0.i.i382 = phi i32 [ %683, %Flow3774 ], [ %conv.i.i.i.i.i.i377, %post-loop-memcpy-expansion2253 ] %idx.0.i.i.i.i383 = phi i64 [ %682, %Flow3774 ], [ 56, %post-loop-memcpy-expansion2253 ] %cmp.i.i.i.i384 = icmp ugt i64 %spec.select.i, %idx.0.i.i.i.i383 %671 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i384) %and.i.i.i.i6.i.i385 = and i64 %671, %669 %tobool.not.i.i.i.i386 = icmp ne i64 %and.i.i.i.i6.i.i385, 0 %672 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i387 = getelementptr inbounds nuw i32, ptr %672, i64 %idxprom.i23.i.i.i.i.i378, !amdgpu.uniform !42 %673 = load atomic i32, ptr %arrayidx.i22.i.i.i387 monotonic, align 4 %674 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i386) %675 = extractvalue { i1, i64 } %674, 0 %676 = extractvalue { i1, i64 } %674, 1 br i1 %675, label %cond.false.i8.i.i.i.i388, label %Flow3774 cond.false.i8.i.i.i.i388: ; preds = %while.cond.i.i.i.i381 %677 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %673) %678 = icmp ne i32 %677, %port.sroa.37.0.i.i382 br i1 %678, label %while.body.i.i21.i.i.i.i389.preheader, label %Flow3773, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i389.preheader: ; preds = %cond.false.i8.i.i.i.i388 br label %while.body.i.i21.i.i.i.i389, !amdgpu.uniform !42 Flow3773: ; preds = %Flow3772, %cond.false.i8.i.i.i.i388 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i392, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i389: ; preds = %while.body.i.i21.i.i.i.i389.preheader, %while.body.i.i21.i.i.i.i389 tail call void @llvm.amdgcn.s.sleep(i32 2) %679 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i390 = getelementptr inbounds nuw i32, ptr %679, i64 %idxprom.i23.i.i.i.i.i378, !amdgpu.uniform !42 %680 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i390 monotonic, align 4 %681 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %680) %cmp.i.not.i.i23.i.i.i.i391 = icmp eq i32 %681, %port.sroa.37.0.i.i382 br i1 %cmp.i.not.i.i23.i.i.i.i391, label %Flow3772, label %while.body.i.i21.i.i.i.i389, !amdgpu.uniform !42 Flow3772: ; preds = %while.body.i.i21.i.i.i.i389 br label %Flow3773, !amdgpu.uniform !42 Flow3774: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i393, %while.cond.i.i.i.i381 %682 = phi i64 [ %add.i.i.i.i396, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i393 ], [ poison, %while.cond.i.i.i.i381 ] %683 = phi i32 [ %conv.i.i26.i.i.i.i394, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i393 ], [ poison, %while.cond.i.i.i.i381 ] %684 = phi ptr [ %scevgep3128, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i393 ], [ poison, %while.cond.i.i.i.i381 ] %685 = phi i64 [ %lsr.iv.next3134, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i393 ], [ poison, %while.cond.i.i.i.i381 ] %686 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i393 ], [ true, %while.cond.i.i.i.i381 ] call void @llvm.amdgcn.end.cf.i64(i64 %676) %687 = call i64 @llvm.amdgcn.if.break.i64(i1 %686, i64 %phi.broken3908) %688 = call i1 @llvm.amdgcn.loop.i64(i64 %687) br i1 %688, label %cond.false.i.i.i403, label %while.cond.i.i.i.i381 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i392: ; preds = %Flow3773 fence acquire br i1 %cmp.i.i.i.i384, label %if.then.i.i.i.i.i.i.i397, label %Flow3771, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i397: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i392 %sub.i.i.i.i.i.i.i399 = sub nuw i64 %spec.select.i, %idx.0.i.i.i.i383 %spec.select.i.i.i36.i.i.i.i400 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i399, i64 64) %689 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %690 = and i64 %spec.select.i.i.i36.i.i.i.i400, 15 %691 = sub i64 %spec.select.i.i.i36.i.i.i.i400, %690 %692 = icmp ne i64 %691, 0 br i1 %692, label %loop-memcpy-expansion2248.preheader, label %Flow3770, !amdgpu.uniform !42 loop-memcpy-expansion2248.preheader: ; preds = %if.then.i.i.i.i.i.i.i397 %arrayidx.i20.i35.i.i.i.i401 = getelementptr %"struct.rpc::Buffer", ptr %689, i64 %idxprom.i19.i.i.i.i.i371 %arrayidx.i22.i38.i.i.i.i402 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i401, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2248, !amdgpu.uniform !42 Flow3770: ; preds = %Flow3769, %if.then.i.i.i.i.i.i.i397 br label %loop-memcpy-residual-header2251, !amdgpu.uniform !42 loop-memcpy-expansion2248: ; preds = %loop-memcpy-expansion2248.preheader, %loop-memcpy-expansion2248 %loop-index2249 = phi i64 [ %695, %loop-memcpy-expansion2248 ], [ 0, %loop-memcpy-expansion2248.preheader ] %scevgep3129 = getelementptr i8, ptr %lsr.iv3127, i64 %loop-index2249, !amdgpu.uniform !42 %693 = load <4 x i32>, ptr %scevgep3129, align 1 %694 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i402, i64 %loop-index2249 store <4 x i32> %693, ptr %694, align 1 %695 = add i64 %loop-index2249, 16 %696 = icmp uge i64 %695, %691 br i1 %696, label %Flow3769, label %loop-memcpy-expansion2248, !amdgpu.uniform !42 Flow3768: ; preds = %Flow3767, %loop-memcpy-residual-header2251 br label %Flow3771, !amdgpu.uniform !42 loop-memcpy-residual2250: ; preds = %loop-memcpy-residual2250.preheader, %loop-memcpy-residual2250 %residual-loop-index2252 = phi i64 [ %698, %loop-memcpy-residual2250 ], [ 0, %loop-memcpy-residual2250.preheader ] %scevgep3139 = getelementptr i8, ptr %scevgep3138, i64 %residual-loop-index2252, !amdgpu.uniform !42 %697 = load i8, ptr %scevgep3139, align 1 %scevgep3137 = getelementptr i8, ptr %scevgep3136, i64 %residual-loop-index2252 store i8 %697, ptr %scevgep3137, align 1 %698 = add i64 %residual-loop-index2252, 1 %699 = icmp uge i64 %698, %690 br i1 %699, label %Flow3767, label %loop-memcpy-residual2250, !amdgpu.uniform !42 Flow3767: ; preds = %loop-memcpy-residual2250 br label %Flow3768, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i393: ; preds = %Flow3771 %conv.i.i26.i.i.i.i394 = xor i32 %port.sroa.37.0.i.i382, 1 fence release %700 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i395 = getelementptr inbounds nuw i32, ptr %700, i64 %idxprom.i23.i.i.i.i.i378 store atomic i32 %conv.i.i26.i.i.i.i394, ptr %arrayidx.i24.i29.i.i.i.i395 monotonic, align 4 %add.i.i.i.i396 = add i64 %idx.0.i.i.i.i383, 64 %scevgep3128 = getelementptr i8, ptr %lsr.iv3127, i64 64 %lsr.iv.next3134 = add i64 %lsr.iv3133, -64 br label %Flow3774, !amdgpu.uniform !42 cond.false.i.i.i403: ; preds = %Flow3774 %.lcssa4146 = phi i64 [ %687, %Flow3774 ] %port.sroa.37.0.i.i382.lcssa = phi i32 [ %port.sroa.37.0.i.i382, %Flow3774 ] %.lcssa4145 = phi i32 [ %673, %Flow3774 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4146) %701 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa4145) %702 = icmp ne i32 %701, %port.sroa.37.0.i.i382.lcssa %703 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %702) %704 = extractvalue { i1, i64 } %703, 0 %705 = extractvalue { i1, i64 } %703, 1 br i1 %704, label %while.body.i.i.i.i404.preheader, label %Flow3766 while.body.i.i.i.i404.preheader: ; preds = %cond.false.i.i.i403 br label %while.body.i.i.i.i404, !amdgpu.uniform !42 Flow3766: ; preds = %Flow3765, %cond.false.i.i.i403 call void @llvm.amdgcn.end.cf.i64(i64 %705) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit, !amdgpu.uniform !42 while.body.i.i.i.i404: ; preds = %while.body.i.i.i.i404.preheader, %while.body.i.i.i.i404 %phi.broken3909 = phi i64 [ 0, %while.body.i.i.i.i404.preheader ], [ %709, %while.body.i.i.i.i404 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %706 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i405 = getelementptr inbounds nuw i32, ptr %706, i64 %idxprom.i23.i.i.i.i.i378, !amdgpu.uniform !42 %707 = load atomic i32, ptr %arrayidx.i.i.i8.i.i405 monotonic, align 4 %708 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %707) %cmp.i.not.i.i.i.i406 = icmp eq i32 %708, %port.sroa.37.0.i.i382.lcssa %709 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i406, i64 %phi.broken3909) %710 = call i1 @llvm.amdgcn.loop.i64(i64 %709) br i1 %710, label %Flow3765, label %while.body.i.i.i.i404 Flow3765: ; preds = %while.body.i.i.i.i404 %.lcssa4144 = phi i64 [ %709, %while.body.i.i.i.i404 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4144) br label %Flow3766, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit: ; preds = %Flow3766 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %711 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4151, i1 true) %iszero.i.i.i.i.i13.i.i408 = icmp ne i64 %.lcssa4151, 0 %cmp2.i.i.i.i14.i.i409 = icmp eq i64 %711, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i410 = select i1 %iszero.i.i.i.i.i13.i.i408, i1 %cmp2.i.i.i.i14.i.i409, i1 false %712 = and i32 %.lcssa4152, 31 %conv4.i.i.i19.i.i414 = zext i1 %cmp.i.i.i.i15.i.i410 to i32 %shl.i.i.i20.i.i415 = shl nuw i32 %conv4.i.i.i19.i.i414, %712 %xor.i.i.i21.i.i416 = xor i32 %shl.i.i.i20.i.i415, -1 %713 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2483, !amdgpu.uniform !42 714: ; preds = %ComputeEnd2484 %div8.i.i.i16.i.i411 = lshr i32 %.lcssa4152, 5 %idxprom.i.i.i17.i.i412 = zext nneg i32 %div8.i.i.i16.i.i411 to i64 %715 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i412 %sunkaddr3285 = getelementptr inbounds i8, ptr addrspace(1) %715, i64 40 %716 = atomicrmw and ptr addrspace(1) %sunkaddr3285, i32 %.lcssa4143 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %717, !amdgpu.uniform !42 717: ; preds = %714, %ComputeEnd2484 call void @llvm.amdgcn.end.cf.i64(i64 %3191) tail call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i1.i433, !amdgpu.uniform !42 for.cond.i.i1.i433: ; preds = %717, %Flow3764 %718 = phi i32 [ %756, %Flow3764 ], [ poison, %717 ] %719 = phi i64 [ %757, %Flow3764 ], [ poison, %717 ] %720 = phi i32 [ %758, %Flow3764 ], [ poison, %717 ] %retval.sroa.6.0.i.i.i434 = phi i32 [ %761, %Flow3764 ], [ undef, %717 ] %retval.sroa.2.0.i.i.i436 = phi i64 [ %760, %Flow3764 ], [ undef, %717 ] %retval.sroa.8.0.i.i.i437 = phi i32 [ %759, %Flow3764 ], [ undef, %717 ] %index.0.i.i.i438 = phi i32 [ %763, %Flow3764 ], [ 0, %717 ] %721 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i439 = icmp ult i32 %index.0.i.i.i438, %721 %spec.store.select.i.i.i440 = select i1 %cmp.not.i.i.i439, i32 %index.0.i.i.i438, i32 0 %722 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %723 = and i32 %spec.store.select.i.i.i440, 31 %724 = lshr i64 %722, %sh_prom.i.i.i.i %725 = trunc i64 %724 to i32 %conv4.i.i.i.i.i444 = and i32 %725, 1 %shl.i.i.i.i.i445 = shl nuw i32 %conv4.i.i.i.i.i444, %723 %726 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2487, !amdgpu.uniform !42 727: ; preds = %ComputeEnd2488 %sunkaddr3286 = getelementptr inbounds i8, ptr addrspace(1) %3201, i64 40 %728 = atomicrmw or ptr addrspace(1) %sunkaddr3286, i32 %.lcssa4137 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %729, !amdgpu.uniform !42 729: ; preds = %727, %ComputeEnd2488 %730 = phi i32 [ %728, %727 ], [ poison, %ComputeEnd2488 ] call void @llvm.amdgcn.end.cf.i64(i64 %3210) %731 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %730) %732 = or i32 %731, %.lcssa4138 %shl5.i.i.i.i.i446 = shl nuw i32 1, %723 %and.i.i.i.i.i447 = and i32 %shl5.i.i.i.i.i446, %732 %tobool3.i.i.i.i448 = icmp ne i32 %and.i.i.i.i.i447, 0 %733 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i448) %and.i.i.i.i.i.i449 = and i64 %733, %722 %cmp.i.not.i.i.i450 = icmp ne i64 %722, %and.i.i.i.i.i.i449 br i1 %cmp.i.not.i.i.i450, label %if.then.i.i.i.i451, label %Flow3763, !amdgpu.uniform !42 if.then.i.i.i.i451: ; preds = %729 fence syncscope("agent") acquire %734 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %735 = extractelement <2 x i64> %734, i32 0 %736 = inttoptr i64 %735 to ptr %737 = extractelement <2 x i64> %734, i32 1 %738 = inttoptr i64 %737 to ptr %idxprom.i.i.i.i452 = zext i32 %spec.store.select.i.i.i440 to i64 %arrayidx.i.i.i.i453 = getelementptr inbounds nuw i32, ptr %736, i64 %idxprom.i.i.i.i452, !amdgpu.uniform !42 %739 = load atomic i32, ptr %arrayidx.i.i.i.i453 monotonic, align 4 %740 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %739) %arrayidx.i45.i.i.i454 = getelementptr inbounds nuw i32, ptr %738, i64 %idxprom.i.i.i.i452, !amdgpu.uniform !42 %741 = load atomic i32, ptr %arrayidx.i45.i.i.i454 monotonic, align 4 %742 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %741) %cmp.i46.not.i.i.i455 = icmp ne i32 %740, %742 br i1 %cmp.i46.not.i.i.i455, label %if.then12.i.i.i456, label %Flow3761, !amdgpu.uniform !42 if.then12.i.i.i456: ; preds = %if.then.i.i.i.i451 fence syncscope("agent") release %743 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %722, i1 true) %iszero.i.i.i.i.i.i.i457 = icmp ne i64 %722, 0 %cmp2.i.i.i.i.i.i458 = icmp eq i64 %743, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i459 = select i1 %iszero.i.i.i.i.i.i.i457, i1 %cmp2.i.i.i.i.i.i458, i1 false %conv4.i.i51.i.i.i460 = zext i1 %cmp.i.i.i.i.i.i459 to i32 %shl.i.i52.i.i.i461 = shl nuw i32 %conv4.i.i51.i.i.i460, %723 %xor.i.i.i.i.i462 = xor i32 %shl.i.i52.i.i.i461, -1 %744 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2492, !amdgpu.uniform !42 745: ; preds = %ComputeEnd2493 %sunkaddr3287 = getelementptr inbounds i8, ptr addrspace(1) %3201, i64 40 %746 = atomicrmw and ptr addrspace(1) %sunkaddr3287, i32 %.lcssa4139 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %747, !amdgpu.uniform !42 747: ; preds = %745, %ComputeEnd2493 call void @llvm.amdgcn.end.cf.i64(i64 %3228) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3761, !amdgpu.uniform !42 if.end14.i.i.i522: ; preds = %Flow3761 %748 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %722, i1 true) %iszero.i.i.i.i.i.i523 = icmp ne i64 %722, 0 %cmp2.i.i.i.i.i524 = icmp eq i64 %748, %sh_prom.i.i.i.i %cmp.i.i.i.i.i525 = select i1 %iszero.i.i.i.i.i.i523, i1 %cmp2.i.i.i.i.i524, i1 false %749 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i525) %750 = extractvalue { i1, i64 } %749, 0 %751 = extractvalue { i1, i64 } %749, 1 br i1 %750, label %if.then16.i.i.i527, label %if.end22.i.i.i526 if.then16.i.i.i527: ; preds = %if.end14.i.i.i522 %752 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i528 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %752, i64 %idxprom.i.i.i.i452, i32 1 store i32 1660944387, ptr %opcode.i.i.i528, align 8, !tbaa !77 %arrayidx21.i.i.i529 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %752, i64 %idxprom.i.i.i.i452 store i64 %722, ptr %arrayidx21.i.i.i529, align 8, !tbaa !80 br label %if.end22.i.i.i526, !amdgpu.uniform !42 Flow3762: ; preds = %if.end22.i.i.i526, %Flow3761 %753 = phi i32 [ %740, %if.end22.i.i.i526 ], [ %retval.sroa.8.0.i.i.i437, %Flow3761 ] %754 = phi i64 [ %722, %if.end22.i.i.i526 ], [ %retval.sroa.2.0.i.i.i436, %Flow3761 ] %755 = phi i32 [ %spec.store.select.i.i.i440, %if.end22.i.i.i526 ], [ %retval.sroa.6.0.i.i.i434, %Flow3761 ] br label %cleanup26.i.i.i463, !amdgpu.uniform !42 if.end22.i.i.i526: ; preds = %if.then16.i.i.i527, %if.end14.i.i.i522 call void @llvm.amdgcn.end.cf.i64(i64 %751) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3762, !amdgpu.uniform !42 Flow3763: ; preds = %cleanup26.i.i.i463, %729 %756 = phi i32 [ %755, %cleanup26.i.i.i463 ], [ %718, %729 ] %757 = phi i64 [ %754, %cleanup26.i.i.i463 ], [ %719, %729 ] %758 = phi i32 [ %753, %cleanup26.i.i.i463 ], [ %720, %729 ] %759 = phi i32 [ %753, %cleanup26.i.i.i463 ], [ %retval.sroa.8.0.i.i.i437, %729 ] %760 = phi i64 [ %754, %cleanup26.i.i.i463 ], [ %retval.sroa.2.0.i.i.i436, %729 ] %761 = phi i32 [ %755, %cleanup26.i.i.i463 ], [ %retval.sroa.6.0.i.i.i434, %729 ] %762 = phi i1 [ %cmp.i46.not.i.i.i455, %cleanup26.i.i.i463 ], [ true, %729 ] br i1 %762, label %for.inc.i.i.i468, label %Flow3764, !amdgpu.uniform !42 cleanup26.i.i.i463: ; preds = %Flow3762 br label %Flow3763, !amdgpu.uniform !42 for.inc.i.i.i468: ; preds = %Flow3763 %inc.i.i.i473 = add i32 %spec.store.select.i.i.i440, 1 br label %Flow3764, !amdgpu.uniform !42 Flow3764: ; preds = %for.inc.i.i.i468, %Flow3763 %763 = phi i32 [ %inc.i.i.i473, %for.inc.i.i.i468 ], [ poison, %Flow3763 ] %764 = phi i1 [ false, %for.inc.i.i.i468 ], [ true, %Flow3763 ] br i1 %764, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i474, label %for.cond.i.i1.i433, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i474: ; preds = %Flow3764 %.lcssa4142 = phi i32 [ %756, %Flow3764 ] %.lcssa4141 = phi i64 [ %757, %Flow3764 ] %.lcssa4140 = phi i32 [ %758, %Flow3764 ] fence acquire %765 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i475 = shl i32 %.lcssa4142, 6 %idxprom.i19.i.i.i.i.i476 = zext i32 %mul.i.i.i.i.i.i475 to i64 %arrayidx.i20.i.i.i.i.i477 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %765, i64 %idxprom.i19.i.i.i.i.i476 %arrayidx.i22.i.i.i.i.i478 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i477, i64 %sh_prom.i.i.i.i store i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.34.12 to ptr), i64 10) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.34.12 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i478, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i479 = tail call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.34.12 to ptr), i64 10) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.34.12 to ptr) to i64)), i64 56) %766 = and i64 %spec.select.i.i.i.i.i.i.i479, 15 %767 = sub i64 %spec.select.i.i.i.i.i.i.i479, %766 %768 = icmp ne i64 %767, 0 br i1 %768, label %loop-memcpy-expansion2344.preheader, label %Flow3760, !amdgpu.uniform !42 loop-memcpy-expansion2344.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i474 %769 = add nuw nsw i64 %75, 8 %scevgep3123 = getelementptr i8, ptr %765, i64 %769 %770 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i476, 6 %scevgep3124 = getelementptr i8, ptr %scevgep3123, i64 %770 br label %loop-memcpy-expansion2344, !amdgpu.uniform !42 Flow3760: ; preds = %Flow3759, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i474 br label %loop-memcpy-residual-header2347, !amdgpu.uniform !42 loop-memcpy-expansion2344: ; preds = %loop-memcpy-expansion2344.preheader, %loop-memcpy-expansion2344 %loop-index2345 = phi i64 [ %773, %loop-memcpy-expansion2344 ], [ 0, %loop-memcpy-expansion2344.preheader ] %771 = getelementptr i8, ptr addrspace(4) @.str.34.12, i64 %loop-index2345, !amdgpu.uniform !42 %772 = load <4 x i32>, ptr addrspace(4) %771, align 1 %scevgep3125 = getelementptr i8, ptr %scevgep3124, i64 %loop-index2345 store <4 x i32> %772, ptr %scevgep3125, align 1 %773 = add i64 %loop-index2345, 16 %774 = icmp uge i64 %773, %767 br i1 %774, label %Flow3759, label %loop-memcpy-expansion2344, !amdgpu.uniform !42 Flow3758: ; preds = %Flow3756, %Flow3757 %775 = phi i64 [ %2868, %Flow3756 ], [ %2865, %Flow3757 ] br label %post-loop-memcpy-expansion2343, !amdgpu.uniform !42 loop-memcpy-residual2346: ; preds = %loop-memcpy-residual2346.preheader, %loop-memcpy-residual2346 %residual-loop-index2348 = phi i64 [ %777, %loop-memcpy-residual2346 ], [ 0, %loop-memcpy-residual2346.preheader ] %scevgep3122 = getelementptr i8, ptr addrspace(4) @.str.34.12, i64 %residual-loop-index2348, !amdgpu.uniform !42 %776 = load i8, ptr addrspace(4) %scevgep3122, align 1 %scevgep3121 = getelementptr i8, ptr %scevgep3120, i64 %residual-loop-index2348 store i8 %776, ptr %scevgep3121, align 1 %777 = add i64 %residual-loop-index2348, 1 %778 = icmp uge i64 %777, %766 br i1 %778, label %Flow3756, label %loop-memcpy-residual2346, !amdgpu.uniform !42 Flow3756: ; preds = %loop-memcpy-residual2346 br label %Flow3758, !amdgpu.uniform !42 post-loop-memcpy-expansion2343: ; preds = %Flow3758 %tobool.not.i.i.i.i.i.i481 = icmp eq i32 %.lcssa4140, 0 %conv.i.i.i.i.i.i482 = zext i1 %tobool.not.i.i.i.i.i.i481 to i32 fence release %779 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i483 = zext i32 %.lcssa4142 to i64 %arrayidx.i24.i.i.i.i.i484 = getelementptr inbounds nuw i32, ptr %779, i64 %idxprom.i23.i.i.i.i.i483 store atomic i32 %conv.i.i.i.i.i.i482, ptr %arrayidx.i24.i.i.i.i.i484 monotonic, align 4 %780 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i485 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %780, i64 %idxprom.i23.i.i.i.i.i483, !amdgpu.uniform !42 %781 = load i64, ptr %arrayidx.i.i5.i.i485, align 8, !tbaa !80 br label %while.cond.i.i.i.i486, !amdgpu.uniform !42 while.cond.i.i.i.i486: ; preds = %post-loop-memcpy-expansion2343, %Flow3755 %phi.broken3910 = phi i64 [ 0, %post-loop-memcpy-expansion2343 ], [ %798, %Flow3755 ] %lsr.iv3112 = phi i64 [ %796, %Flow3755 ], [ -46, %post-loop-memcpy-expansion2343 ] %lsr.iv3107 = phi ptr addrspace(4) [ %795, %Flow3755 ], [ getelementptr (i8, ptr addrspace(4) @.str.34.12, i64 56), %post-loop-memcpy-expansion2343 ] %port.sroa.37.0.i.i487 = phi i32 [ %794, %Flow3755 ], [ %conv.i.i.i.i.i.i482, %post-loop-memcpy-expansion2343 ] %idx.0.i.i.i.i488 = phi i64 [ %793, %Flow3755 ], [ 56, %post-loop-memcpy-expansion2343 ] %cmp.i.i.i.i489 = icmp ult i64 %idx.0.i.i.i.i488, sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.34.12 to ptr), i64 10) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.34.12 to ptr) to i64)) %782 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i489) %and.i.i.i.i6.i.i490 = and i64 %782, %781 %tobool.not.i.i.i.i491 = icmp ne i64 %and.i.i.i.i6.i.i490, 0 %783 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i492 = getelementptr inbounds nuw i32, ptr %783, i64 %idxprom.i23.i.i.i.i.i483, !amdgpu.uniform !42 %784 = load atomic i32, ptr %arrayidx.i22.i.i.i492 monotonic, align 4 %785 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i491) %786 = extractvalue { i1, i64 } %785, 0 %787 = extractvalue { i1, i64 } %785, 1 br i1 %786, label %cond.false.i8.i.i.i.i493, label %Flow3755 cond.false.i8.i.i.i.i493: ; preds = %while.cond.i.i.i.i486 %788 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %784) %789 = icmp ne i32 %788, %port.sroa.37.0.i.i487 br i1 %789, label %while.body.i.i21.i.i.i.i494.preheader, label %Flow3754, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i494.preheader: ; preds = %cond.false.i8.i.i.i.i493 br label %while.body.i.i21.i.i.i.i494, !amdgpu.uniform !42 Flow3754: ; preds = %Flow3753, %cond.false.i8.i.i.i.i493 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i497, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i494: ; preds = %while.body.i.i21.i.i.i.i494.preheader, %while.body.i.i21.i.i.i.i494 tail call void @llvm.amdgcn.s.sleep(i32 2) %790 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i495 = getelementptr inbounds nuw i32, ptr %790, i64 %idxprom.i23.i.i.i.i.i483, !amdgpu.uniform !42 %791 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i495 monotonic, align 4 %792 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %791) %cmp.i.not.i.i23.i.i.i.i496 = icmp eq i32 %792, %port.sroa.37.0.i.i487 br i1 %cmp.i.not.i.i23.i.i.i.i496, label %Flow3753, label %while.body.i.i21.i.i.i.i494, !amdgpu.uniform !42 Flow3753: ; preds = %while.body.i.i21.i.i.i.i494 br label %Flow3754, !amdgpu.uniform !42 Flow3755: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i498, %while.cond.i.i.i.i486 %793 = phi i64 [ %add.i.i.i.i501, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i498 ], [ poison, %while.cond.i.i.i.i486 ] %794 = phi i32 [ %conv.i.i26.i.i.i.i499, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i498 ], [ poison, %while.cond.i.i.i.i486 ] %795 = phi ptr addrspace(4) [ %scevgep3108, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i498 ], [ poison, %while.cond.i.i.i.i486 ] %796 = phi i64 [ %lsr.iv.next3113, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i498 ], [ poison, %while.cond.i.i.i.i486 ] %797 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i498 ], [ true, %while.cond.i.i.i.i486 ] call void @llvm.amdgcn.end.cf.i64(i64 %787) %798 = call i64 @llvm.amdgcn.if.break.i64(i1 %797, i64 %phi.broken3910) %799 = call i1 @llvm.amdgcn.loop.i64(i64 %798) br i1 %799, label %cond.false.i.i.i508, label %while.cond.i.i.i.i486 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i497: ; preds = %Flow3754 fence acquire br i1 %cmp.i.i.i.i489, label %if.then.i.i.i.i.i.i.i502, label %Flow3752, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i502: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i497 %sub.i.i.i.i.i.i.i504 = sub nuw i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.34.12 to ptr), i64 10) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.34.12 to ptr) to i64)), %idx.0.i.i.i.i488 %spec.select.i.i.i36.i.i.i.i505 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i504, i64 64) %800 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %801 = and i64 %spec.select.i.i.i36.i.i.i.i505, 15 %802 = sub i64 %spec.select.i.i.i36.i.i.i.i505, %801 %803 = icmp ne i64 %802, 0 br i1 %803, label %loop-memcpy-expansion2350.preheader, label %Flow3751, !amdgpu.uniform !42 loop-memcpy-expansion2350.preheader: ; preds = %if.then.i.i.i.i.i.i.i502 %arrayidx.i20.i35.i.i.i.i506 = getelementptr %"struct.rpc::Buffer", ptr %800, i64 %idxprom.i19.i.i.i.i.i476 %arrayidx.i22.i38.i.i.i.i507 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i506, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2350, !amdgpu.uniform !42 Flow3751: ; preds = %Flow3750, %if.then.i.i.i.i.i.i.i502 br label %loop-memcpy-residual-header2353, !amdgpu.uniform !42 loop-memcpy-expansion2350: ; preds = %loop-memcpy-expansion2350.preheader, %loop-memcpy-expansion2350 %loop-index2351 = phi i64 [ %806, %loop-memcpy-expansion2350 ], [ 0, %loop-memcpy-expansion2350.preheader ] %scevgep3109 = getelementptr i8, ptr addrspace(4) %lsr.iv3107, i64 %loop-index2351, !amdgpu.uniform !42 %804 = load <4 x i32>, ptr addrspace(4) %scevgep3109, align 1 %805 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i507, i64 %loop-index2351 store <4 x i32> %804, ptr %805, align 1 %806 = add i64 %loop-index2351, 16 %807 = icmp uge i64 %806, %802 br i1 %807, label %Flow3750, label %loop-memcpy-expansion2350, !amdgpu.uniform !42 Flow3749: ; preds = %Flow3748, %loop-memcpy-residual-header2353 br label %Flow3752, !amdgpu.uniform !42 loop-memcpy-residual2352: ; preds = %loop-memcpy-residual2352.preheader, %loop-memcpy-residual2352 %residual-loop-index2354 = phi i64 [ %809, %loop-memcpy-residual2352 ], [ 0, %loop-memcpy-residual2352.preheader ] %scevgep3118 = getelementptr i8, ptr addrspace(4) %scevgep3117, i64 %residual-loop-index2354, !amdgpu.uniform !42 %808 = load i8, ptr addrspace(4) %scevgep3118, align 1 %scevgep3116 = getelementptr i8, ptr %scevgep3115, i64 %residual-loop-index2354 store i8 %808, ptr %scevgep3116, align 1 %809 = add i64 %residual-loop-index2354, 1 %810 = icmp uge i64 %809, %801 br i1 %810, label %Flow3748, label %loop-memcpy-residual2352, !amdgpu.uniform !42 Flow3748: ; preds = %loop-memcpy-residual2352 br label %Flow3749, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i498: ; preds = %Flow3752 %conv.i.i26.i.i.i.i499 = xor i32 %port.sroa.37.0.i.i487, 1 fence release %811 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i500 = getelementptr inbounds nuw i32, ptr %811, i64 %idxprom.i23.i.i.i.i.i483 store atomic i32 %conv.i.i26.i.i.i.i499, ptr %arrayidx.i24.i29.i.i.i.i500 monotonic, align 4 %add.i.i.i.i501 = add i64 %idx.0.i.i.i.i488, 64 %scevgep3108 = getelementptr i8, ptr addrspace(4) %lsr.iv3107, i64 64 %lsr.iv.next3113 = add i64 %lsr.iv3112, -64 br label %Flow3755, !amdgpu.uniform !42 cond.false.i.i.i508: ; preds = %Flow3755 %.lcssa4136 = phi i64 [ %798, %Flow3755 ] %port.sroa.37.0.i.i487.lcssa = phi i32 [ %port.sroa.37.0.i.i487, %Flow3755 ] %.lcssa4135 = phi i32 [ %784, %Flow3755 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4136) %812 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa4135) %813 = icmp ne i32 %812, %port.sroa.37.0.i.i487.lcssa %814 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %813) %815 = extractvalue { i1, i64 } %814, 0 %816 = extractvalue { i1, i64 } %814, 1 br i1 %815, label %while.body.i.i.i.i509.preheader, label %Flow3747 while.body.i.i.i.i509.preheader: ; preds = %cond.false.i.i.i508 br label %while.body.i.i.i.i509, !amdgpu.uniform !42 Flow3747: ; preds = %Flow3746, %cond.false.i.i.i508 call void @llvm.amdgcn.end.cf.i64(i64 %816) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit530, !amdgpu.uniform !42 while.body.i.i.i.i509: ; preds = %while.body.i.i.i.i509.preheader, %while.body.i.i.i.i509 %phi.broken3911 = phi i64 [ 0, %while.body.i.i.i.i509.preheader ], [ %820, %while.body.i.i.i.i509 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %817 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i510 = getelementptr inbounds nuw i32, ptr %817, i64 %idxprom.i23.i.i.i.i.i483, !amdgpu.uniform !42 %818 = load atomic i32, ptr %arrayidx.i.i.i8.i.i510 monotonic, align 4 %819 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %818) %cmp.i.not.i.i.i.i511 = icmp eq i32 %819, %port.sroa.37.0.i.i487.lcssa %820 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i511, i64 %phi.broken3911) %821 = call i1 @llvm.amdgcn.loop.i64(i64 %820) br i1 %821, label %Flow3746, label %while.body.i.i.i.i509 Flow3746: ; preds = %while.body.i.i.i.i509 %.lcssa4134 = phi i64 [ %820, %while.body.i.i.i.i509 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4134) br label %Flow3747, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit530: ; preds = %Flow3747 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %822 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4141, i1 true) %iszero.i.i.i.i.i13.i.i513 = icmp ne i64 %.lcssa4141, 0 %cmp2.i.i.i.i14.i.i514 = icmp eq i64 %822, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i515 = select i1 %iszero.i.i.i.i.i13.i.i513, i1 %cmp2.i.i.i.i14.i.i514, i1 false %823 = and i32 %.lcssa4142, 31 %conv4.i.i.i19.i.i519 = zext i1 %cmp.i.i.i.i15.i.i515 to i32 %shl.i.i.i20.i.i520 = shl nuw i32 %conv4.i.i.i19.i.i519, %823 %xor.i.i.i21.i.i521 = xor i32 %shl.i.i.i20.i.i520, -1 %824 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2496, !amdgpu.uniform !42 825: ; preds = %ComputeEnd2497 %div8.i.i.i16.i.i516 = lshr i32 %.lcssa4142, 5 %idxprom.i.i.i17.i.i517 = zext nneg i32 %div8.i.i.i16.i.i516 to i64 %826 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i517 %sunkaddr3288 = getelementptr inbounds i8, ptr addrspace(1) %826, i64 40 %827 = atomicrmw and ptr addrspace(1) %sunkaddr3288, i32 %.lcssa4133 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %828, !amdgpu.uniform !42 828: ; preds = %825, %ComputeEnd2497 call void @llvm.amdgcn.end.cf.i64(i64 %3245) tail call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i1.i539, !amdgpu.uniform !42 for.cond.i.i1.i539: ; preds = %828, %Flow3745 %829 = phi i32 [ %867, %Flow3745 ], [ poison, %828 ] %830 = phi i64 [ %868, %Flow3745 ], [ poison, %828 ] %831 = phi i32 [ %869, %Flow3745 ], [ poison, %828 ] %retval.sroa.6.0.i.i.i540 = phi i32 [ %872, %Flow3745 ], [ undef, %828 ] %retval.sroa.2.0.i.i.i542 = phi i64 [ %871, %Flow3745 ], [ undef, %828 ] %retval.sroa.8.0.i.i.i543 = phi i32 [ %870, %Flow3745 ], [ undef, %828 ] %index.0.i.i.i544 = phi i32 [ %874, %Flow3745 ], [ 0, %828 ] %832 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i545 = icmp ult i32 %index.0.i.i.i544, %832 %spec.store.select.i.i.i546 = select i1 %cmp.not.i.i.i545, i32 %index.0.i.i.i544, i32 0 %833 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %834 = and i32 %spec.store.select.i.i.i546, 31 %835 = lshr i64 %833, %sh_prom.i.i.i.i %836 = trunc i64 %835 to i32 %conv4.i.i.i.i.i550 = and i32 %836, 1 %shl.i.i.i.i.i551 = shl nuw i32 %conv4.i.i.i.i.i550, %834 %837 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2500, !amdgpu.uniform !42 838: ; preds = %ComputeEnd2501 %sunkaddr3289 = getelementptr inbounds i8, ptr addrspace(1) %3255, i64 40 %839 = atomicrmw or ptr addrspace(1) %sunkaddr3289, i32 %.lcssa4127 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %840, !amdgpu.uniform !42 840: ; preds = %838, %ComputeEnd2501 %841 = phi i32 [ %839, %838 ], [ poison, %ComputeEnd2501 ] call void @llvm.amdgcn.end.cf.i64(i64 %3264) %842 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %841) %843 = or i32 %842, %.lcssa4128 %shl5.i.i.i.i.i552 = shl nuw i32 1, %834 %and.i.i.i.i.i553 = and i32 %shl5.i.i.i.i.i552, %843 %tobool3.i.i.i.i554 = icmp ne i32 %and.i.i.i.i.i553, 0 %844 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i554) %and.i.i.i.i.i.i555 = and i64 %844, %833 %cmp.i.not.i.i.i556 = icmp ne i64 %833, %and.i.i.i.i.i.i555 br i1 %cmp.i.not.i.i.i556, label %if.then.i.i.i.i557, label %Flow3744, !amdgpu.uniform !42 if.then.i.i.i.i557: ; preds = %840 fence syncscope("agent") acquire %845 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %846 = extractelement <2 x i64> %845, i32 0 %847 = inttoptr i64 %846 to ptr %848 = extractelement <2 x i64> %845, i32 1 %849 = inttoptr i64 %848 to ptr %idxprom.i.i.i.i558 = zext i32 %spec.store.select.i.i.i546 to i64 %arrayidx.i.i.i.i559 = getelementptr inbounds nuw i32, ptr %847, i64 %idxprom.i.i.i.i558, !amdgpu.uniform !42 %850 = load atomic i32, ptr %arrayidx.i.i.i.i559 monotonic, align 4 %851 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %850) %arrayidx.i45.i.i.i560 = getelementptr inbounds nuw i32, ptr %849, i64 %idxprom.i.i.i.i558, !amdgpu.uniform !42 %852 = load atomic i32, ptr %arrayidx.i45.i.i.i560 monotonic, align 4 %853 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %852) %cmp.i46.not.i.i.i561 = icmp ne i32 %851, %853 br i1 %cmp.i46.not.i.i.i561, label %if.then12.i.i.i562, label %Flow3742, !amdgpu.uniform !42 if.then12.i.i.i562: ; preds = %if.then.i.i.i.i557 fence syncscope("agent") release %854 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %833, i1 true) %iszero.i.i.i.i.i.i.i563 = icmp ne i64 %833, 0 %cmp2.i.i.i.i.i.i564 = icmp eq i64 %854, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i565 = select i1 %iszero.i.i.i.i.i.i.i563, i1 %cmp2.i.i.i.i.i.i564, i1 false %conv4.i.i51.i.i.i566 = zext i1 %cmp.i.i.i.i.i.i565 to i32 %shl.i.i52.i.i.i567 = shl nuw i32 %conv4.i.i51.i.i.i566, %834 %xor.i.i.i.i.i568 = xor i32 %shl.i.i52.i.i.i567, -1 %855 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2505, !amdgpu.uniform !42 856: ; preds = %ComputeEnd2506 %sunkaddr3290 = getelementptr inbounds i8, ptr addrspace(1) %3255, i64 40 %857 = atomicrmw and ptr addrspace(1) %sunkaddr3290, i32 %.lcssa4129 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %858, !amdgpu.uniform !42 858: ; preds = %856, %ComputeEnd2506 call void @llvm.amdgcn.end.cf.i64(i64 %3282) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3742, !amdgpu.uniform !42 if.end14.i.i.i628: ; preds = %Flow3742 %859 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %833, i1 true) %iszero.i.i.i.i.i.i629 = icmp ne i64 %833, 0 %cmp2.i.i.i.i.i630 = icmp eq i64 %859, %sh_prom.i.i.i.i %cmp.i.i.i.i.i631 = select i1 %iszero.i.i.i.i.i.i629, i1 %cmp2.i.i.i.i.i630, i1 false %860 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i631) %861 = extractvalue { i1, i64 } %860, 0 %862 = extractvalue { i1, i64 } %860, 1 br i1 %861, label %if.then16.i.i.i633, label %if.end22.i.i.i632 if.then16.i.i.i633: ; preds = %if.end14.i.i.i628 %863 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i634 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %863, i64 %idxprom.i.i.i.i558, i32 1 store i32 1660944387, ptr %opcode.i.i.i634, align 8, !tbaa !77 %arrayidx21.i.i.i635 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %863, i64 %idxprom.i.i.i.i558 store i64 %833, ptr %arrayidx21.i.i.i635, align 8, !tbaa !80 br label %if.end22.i.i.i632, !amdgpu.uniform !42 Flow3743: ; preds = %if.end22.i.i.i632, %Flow3742 %864 = phi i32 [ %851, %if.end22.i.i.i632 ], [ %retval.sroa.8.0.i.i.i543, %Flow3742 ] %865 = phi i64 [ %833, %if.end22.i.i.i632 ], [ %retval.sroa.2.0.i.i.i542, %Flow3742 ] %866 = phi i32 [ %spec.store.select.i.i.i546, %if.end22.i.i.i632 ], [ %retval.sroa.6.0.i.i.i540, %Flow3742 ] br label %cleanup26.i.i.i569, !amdgpu.uniform !42 if.end22.i.i.i632: ; preds = %if.then16.i.i.i633, %if.end14.i.i.i628 call void @llvm.amdgcn.end.cf.i64(i64 %862) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3743, !amdgpu.uniform !42 Flow3744: ; preds = %cleanup26.i.i.i569, %840 %867 = phi i32 [ %866, %cleanup26.i.i.i569 ], [ %829, %840 ] %868 = phi i64 [ %865, %cleanup26.i.i.i569 ], [ %830, %840 ] %869 = phi i32 [ %864, %cleanup26.i.i.i569 ], [ %831, %840 ] %870 = phi i32 [ %864, %cleanup26.i.i.i569 ], [ %retval.sroa.8.0.i.i.i543, %840 ] %871 = phi i64 [ %865, %cleanup26.i.i.i569 ], [ %retval.sroa.2.0.i.i.i542, %840 ] %872 = phi i32 [ %866, %cleanup26.i.i.i569 ], [ %retval.sroa.6.0.i.i.i540, %840 ] %873 = phi i1 [ %cmp.i46.not.i.i.i561, %cleanup26.i.i.i569 ], [ true, %840 ] br i1 %873, label %for.inc.i.i.i574, label %Flow3745, !amdgpu.uniform !42 cleanup26.i.i.i569: ; preds = %Flow3743 br label %Flow3744, !amdgpu.uniform !42 for.inc.i.i.i574: ; preds = %Flow3744 %inc.i.i.i579 = add i32 %spec.store.select.i.i.i546, 1 br label %Flow3745, !amdgpu.uniform !42 Flow3745: ; preds = %for.inc.i.i.i574, %Flow3744 %874 = phi i32 [ %inc.i.i.i579, %for.inc.i.i.i574 ], [ poison, %Flow3744 ] %875 = phi i1 [ false, %for.inc.i.i.i574 ], [ true, %Flow3744 ] br i1 %875, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i580, label %for.cond.i.i1.i539, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i580: ; preds = %Flow3745 %.lcssa4132 = phi i32 [ %867, %Flow3745 ] %.lcssa4131 = phi i64 [ %868, %Flow3745 ] %.lcssa4130 = phi i32 [ %869, %Flow3745 ] fence acquire %876 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i581 = shl i32 %.lcssa4132, 6 %idxprom.i19.i.i.i.i.i582 = zext i32 %mul.i.i.i.i.i.i581 to i64 %arrayidx.i20.i.i.i.i.i583 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %876, i64 %idxprom.i19.i.i.i.i.i582 %arrayidx.i22.i.i.i.i.i584 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i583, i64 %sh_prom.i.i.i.i store i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.4 to ptr), i64 33) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.4 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i584, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i585 = tail call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.4 to ptr), i64 33) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.4 to ptr) to i64)), i64 56) %877 = and i64 %spec.select.i.i.i.i.i.i.i585, 15 %878 = sub i64 %spec.select.i.i.i.i.i.i.i585, %877 %879 = icmp ne i64 %878, 0 br i1 %879, label %loop-memcpy-expansion2356.preheader, label %Flow3741, !amdgpu.uniform !42 loop-memcpy-expansion2356.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i580 %880 = add nuw nsw i64 %75, 8 %scevgep3104 = getelementptr i8, ptr %876, i64 %880 %881 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i582, 6 %scevgep3105 = getelementptr i8, ptr %scevgep3104, i64 %881 br label %loop-memcpy-expansion2356, !amdgpu.uniform !42 Flow3741: ; preds = %Flow3740, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i580 br label %loop-memcpy-residual-header2359, !amdgpu.uniform !42 loop-memcpy-expansion2356: ; preds = %loop-memcpy-expansion2356.preheader, %loop-memcpy-expansion2356 %loop-index2357 = phi i64 [ %884, %loop-memcpy-expansion2356 ], [ 0, %loop-memcpy-expansion2356.preheader ] %882 = getelementptr i8, ptr addrspace(4) @.str.4, i64 %loop-index2357, !amdgpu.uniform !42 %883 = load <4 x i32>, ptr addrspace(4) %882, align 1 %scevgep3106 = getelementptr i8, ptr %scevgep3105, i64 %loop-index2357 store <4 x i32> %883, ptr %scevgep3106, align 1 %884 = add i64 %loop-index2357, 16 %885 = icmp uge i64 %884, %878 br i1 %885, label %Flow3740, label %loop-memcpy-expansion2356, !amdgpu.uniform !42 Flow3739: ; preds = %Flow3737, %Flow3738 %886 = phi i64 [ %2876, %Flow3737 ], [ %2873, %Flow3738 ] br label %post-loop-memcpy-expansion2355, !amdgpu.uniform !42 loop-memcpy-residual2358: ; preds = %loop-memcpy-residual2358.preheader, %loop-memcpy-residual2358 %residual-loop-index2360 = phi i64 [ %888, %loop-memcpy-residual2358 ], [ 0, %loop-memcpy-residual2358.preheader ] %scevgep3103 = getelementptr i8, ptr addrspace(4) getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.4, i64 32), i64 %residual-loop-index2360, !amdgpu.uniform !42 %887 = load i8, ptr addrspace(4) %scevgep3103, align 1 %scevgep3102 = getelementptr i8, ptr %scevgep3101, i64 %residual-loop-index2360 store i8 %887, ptr %scevgep3102, align 1 %888 = add i64 %residual-loop-index2360, 1 %889 = icmp uge i64 %888, %877 br i1 %889, label %Flow3737, label %loop-memcpy-residual2358, !amdgpu.uniform !42 Flow3737: ; preds = %loop-memcpy-residual2358 br label %Flow3739, !amdgpu.uniform !42 post-loop-memcpy-expansion2355: ; preds = %Flow3739 %tobool.not.i.i.i.i.i.i587 = icmp eq i32 %.lcssa4130, 0 %conv.i.i.i.i.i.i588 = zext i1 %tobool.not.i.i.i.i.i.i587 to i32 fence release %890 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i589 = zext i32 %.lcssa4132 to i64 %arrayidx.i24.i.i.i.i.i590 = getelementptr inbounds nuw i32, ptr %890, i64 %idxprom.i23.i.i.i.i.i589 store atomic i32 %conv.i.i.i.i.i.i588, ptr %arrayidx.i24.i.i.i.i.i590 monotonic, align 4 %891 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i591 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %891, i64 %idxprom.i23.i.i.i.i.i589, !amdgpu.uniform !42 %892 = load i64, ptr %arrayidx.i.i5.i.i591, align 8, !tbaa !80 br label %while.cond.i.i.i.i592, !amdgpu.uniform !42 while.cond.i.i.i.i592: ; preds = %post-loop-memcpy-expansion2355, %Flow3736 %phi.broken3912 = phi i64 [ 0, %post-loop-memcpy-expansion2355 ], [ %909, %Flow3736 ] %lsr.iv3093 = phi i64 [ %907, %Flow3736 ], [ -23, %post-loop-memcpy-expansion2355 ] %lsr.iv3088 = phi ptr addrspace(4) [ %906, %Flow3736 ], [ getelementptr (i8, ptr addrspace(4) @.str.4, i64 56), %post-loop-memcpy-expansion2355 ] %port.sroa.37.0.i.i593 = phi i32 [ %905, %Flow3736 ], [ %conv.i.i.i.i.i.i588, %post-loop-memcpy-expansion2355 ] %idx.0.i.i.i.i594 = phi i64 [ %904, %Flow3736 ], [ 56, %post-loop-memcpy-expansion2355 ] %cmp.i.i.i.i595 = icmp ult i64 %idx.0.i.i.i.i594, sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.4 to ptr), i64 33) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.4 to ptr) to i64)) %893 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i595) %and.i.i.i.i6.i.i596 = and i64 %893, %892 %tobool.not.i.i.i.i597 = icmp ne i64 %and.i.i.i.i6.i.i596, 0 %894 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i598 = getelementptr inbounds nuw i32, ptr %894, i64 %idxprom.i23.i.i.i.i.i589, !amdgpu.uniform !42 %895 = load atomic i32, ptr %arrayidx.i22.i.i.i598 monotonic, align 4 %896 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i597) %897 = extractvalue { i1, i64 } %896, 0 %898 = extractvalue { i1, i64 } %896, 1 br i1 %897, label %cond.false.i8.i.i.i.i599, label %Flow3736 cond.false.i8.i.i.i.i599: ; preds = %while.cond.i.i.i.i592 %899 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %895) %900 = icmp ne i32 %899, %port.sroa.37.0.i.i593 br i1 %900, label %while.body.i.i21.i.i.i.i600.preheader, label %Flow3735, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i600.preheader: ; preds = %cond.false.i8.i.i.i.i599 br label %while.body.i.i21.i.i.i.i600, !amdgpu.uniform !42 Flow3735: ; preds = %Flow3734, %cond.false.i8.i.i.i.i599 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i603, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i600: ; preds = %while.body.i.i21.i.i.i.i600.preheader, %while.body.i.i21.i.i.i.i600 tail call void @llvm.amdgcn.s.sleep(i32 2) %901 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i601 = getelementptr inbounds nuw i32, ptr %901, i64 %idxprom.i23.i.i.i.i.i589, !amdgpu.uniform !42 %902 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i601 monotonic, align 4 %903 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %902) %cmp.i.not.i.i23.i.i.i.i602 = icmp eq i32 %903, %port.sroa.37.0.i.i593 br i1 %cmp.i.not.i.i23.i.i.i.i602, label %Flow3734, label %while.body.i.i21.i.i.i.i600, !amdgpu.uniform !42 Flow3734: ; preds = %while.body.i.i21.i.i.i.i600 br label %Flow3735, !amdgpu.uniform !42 Flow3736: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i604, %while.cond.i.i.i.i592 %904 = phi i64 [ %add.i.i.i.i607, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i604 ], [ poison, %while.cond.i.i.i.i592 ] %905 = phi i32 [ %conv.i.i26.i.i.i.i605, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i604 ], [ poison, %while.cond.i.i.i.i592 ] %906 = phi ptr addrspace(4) [ %scevgep3089, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i604 ], [ poison, %while.cond.i.i.i.i592 ] %907 = phi i64 [ %lsr.iv.next3094, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i604 ], [ poison, %while.cond.i.i.i.i592 ] %908 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i604 ], [ true, %while.cond.i.i.i.i592 ] call void @llvm.amdgcn.end.cf.i64(i64 %898) %909 = call i64 @llvm.amdgcn.if.break.i64(i1 %908, i64 %phi.broken3912) %910 = call i1 @llvm.amdgcn.loop.i64(i64 %909) br i1 %910, label %cond.false.i.i.i614, label %while.cond.i.i.i.i592 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i603: ; preds = %Flow3735 fence acquire br i1 %cmp.i.i.i.i595, label %if.then.i.i.i.i.i.i.i608, label %Flow3733, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i608: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i603 %sub.i.i.i.i.i.i.i610 = sub nuw i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.4 to ptr), i64 33) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.4 to ptr) to i64)), %idx.0.i.i.i.i594 %spec.select.i.i.i36.i.i.i.i611 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i610, i64 64) %911 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %912 = and i64 %spec.select.i.i.i36.i.i.i.i611, 15 %913 = sub i64 %spec.select.i.i.i36.i.i.i.i611, %912 %914 = icmp ne i64 %913, 0 br i1 %914, label %loop-memcpy-expansion2362.preheader, label %Flow3732, !amdgpu.uniform !42 loop-memcpy-expansion2362.preheader: ; preds = %if.then.i.i.i.i.i.i.i608 %arrayidx.i20.i35.i.i.i.i612 = getelementptr %"struct.rpc::Buffer", ptr %911, i64 %idxprom.i19.i.i.i.i.i582 %arrayidx.i22.i38.i.i.i.i613 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i612, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2362, !amdgpu.uniform !42 Flow3732: ; preds = %Flow3731, %if.then.i.i.i.i.i.i.i608 br label %loop-memcpy-residual-header2365, !amdgpu.uniform !42 loop-memcpy-expansion2362: ; preds = %loop-memcpy-expansion2362.preheader, %loop-memcpy-expansion2362 %loop-index2363 = phi i64 [ %917, %loop-memcpy-expansion2362 ], [ 0, %loop-memcpy-expansion2362.preheader ] %scevgep3090 = getelementptr i8, ptr addrspace(4) %lsr.iv3088, i64 %loop-index2363, !amdgpu.uniform !42 %915 = load <4 x i32>, ptr addrspace(4) %scevgep3090, align 1 %916 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i613, i64 %loop-index2363 store <4 x i32> %915, ptr %916, align 1 %917 = add i64 %loop-index2363, 16 %918 = icmp uge i64 %917, %913 br i1 %918, label %Flow3731, label %loop-memcpy-expansion2362, !amdgpu.uniform !42 Flow3730: ; preds = %Flow3729, %loop-memcpy-residual-header2365 br label %Flow3733, !amdgpu.uniform !42 loop-memcpy-residual2364: ; preds = %loop-memcpy-residual2364.preheader, %loop-memcpy-residual2364 %residual-loop-index2366 = phi i64 [ %920, %loop-memcpy-residual2364 ], [ 0, %loop-memcpy-residual2364.preheader ] %scevgep3099 = getelementptr i8, ptr addrspace(4) %scevgep3098, i64 %residual-loop-index2366, !amdgpu.uniform !42 %919 = load i8, ptr addrspace(4) %scevgep3099, align 1 %scevgep3097 = getelementptr i8, ptr %scevgep3096, i64 %residual-loop-index2366 store i8 %919, ptr %scevgep3097, align 1 %920 = add i64 %residual-loop-index2366, 1 %921 = icmp uge i64 %920, %912 br i1 %921, label %Flow3729, label %loop-memcpy-residual2364, !amdgpu.uniform !42 Flow3729: ; preds = %loop-memcpy-residual2364 br label %Flow3730, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i604: ; preds = %Flow3733 %conv.i.i26.i.i.i.i605 = xor i32 %port.sroa.37.0.i.i593, 1 fence release %922 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i606 = getelementptr inbounds nuw i32, ptr %922, i64 %idxprom.i23.i.i.i.i.i589 store atomic i32 %conv.i.i26.i.i.i.i605, ptr %arrayidx.i24.i29.i.i.i.i606 monotonic, align 4 %add.i.i.i.i607 = add i64 %idx.0.i.i.i.i594, 64 %scevgep3089 = getelementptr i8, ptr addrspace(4) %lsr.iv3088, i64 64 %lsr.iv.next3094 = add i64 %lsr.iv3093, -64 br label %Flow3736, !amdgpu.uniform !42 cond.false.i.i.i614: ; preds = %Flow3736 %.lcssa4126 = phi i64 [ %909, %Flow3736 ] %port.sroa.37.0.i.i593.lcssa = phi i32 [ %port.sroa.37.0.i.i593, %Flow3736 ] %.lcssa4125 = phi i32 [ %895, %Flow3736 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4126) %923 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa4125) %924 = icmp ne i32 %923, %port.sroa.37.0.i.i593.lcssa %925 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %924) %926 = extractvalue { i1, i64 } %925, 0 %927 = extractvalue { i1, i64 } %925, 1 br i1 %926, label %while.body.i.i.i.i615.preheader, label %Flow3728 while.body.i.i.i.i615.preheader: ; preds = %cond.false.i.i.i614 br label %while.body.i.i.i.i615, !amdgpu.uniform !42 Flow3728: ; preds = %Flow3727, %cond.false.i.i.i614 call void @llvm.amdgcn.end.cf.i64(i64 %927) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit636, !amdgpu.uniform !42 while.body.i.i.i.i615: ; preds = %while.body.i.i.i.i615.preheader, %while.body.i.i.i.i615 %phi.broken3913 = phi i64 [ 0, %while.body.i.i.i.i615.preheader ], [ %931, %while.body.i.i.i.i615 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %928 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i616 = getelementptr inbounds nuw i32, ptr %928, i64 %idxprom.i23.i.i.i.i.i589, !amdgpu.uniform !42 %929 = load atomic i32, ptr %arrayidx.i.i.i8.i.i616 monotonic, align 4 %930 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %929) %cmp.i.not.i.i.i.i617 = icmp eq i32 %930, %port.sroa.37.0.i.i593.lcssa %931 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i617, i64 %phi.broken3913) %932 = call i1 @llvm.amdgcn.loop.i64(i64 %931) br i1 %932, label %Flow3727, label %while.body.i.i.i.i615 Flow3727: ; preds = %while.body.i.i.i.i615 %.lcssa4124 = phi i64 [ %931, %while.body.i.i.i.i615 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4124) br label %Flow3728, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit636: ; preds = %Flow3728 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %933 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4131, i1 true) %iszero.i.i.i.i.i13.i.i619 = icmp ne i64 %.lcssa4131, 0 %cmp2.i.i.i.i14.i.i620 = icmp eq i64 %933, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i621 = select i1 %iszero.i.i.i.i.i13.i.i619, i1 %cmp2.i.i.i.i14.i.i620, i1 false %934 = and i32 %.lcssa4132, 31 %conv4.i.i.i19.i.i625 = zext i1 %cmp.i.i.i.i15.i.i621 to i32 %shl.i.i.i20.i.i626 = shl nuw i32 %conv4.i.i.i19.i.i625, %934 %xor.i.i.i21.i.i627 = xor i32 %shl.i.i.i20.i.i626, -1 %935 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2509, !amdgpu.uniform !42 936: ; preds = %ComputeEnd2510 %div8.i.i.i16.i.i622 = lshr i32 %.lcssa4132, 5 %idxprom.i.i.i17.i.i623 = zext nneg i32 %div8.i.i.i16.i.i622 to i64 %937 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i623 %sunkaddr3291 = getelementptr inbounds i8, ptr addrspace(1) %937, i64 40 %938 = atomicrmw and ptr addrspace(1) %sunkaddr3291, i32 %.lcssa4123 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %939, !amdgpu.uniform !42 939: ; preds = %936, %ComputeEnd2510 call void @llvm.amdgcn.end.cf.i64(i64 %3299) tail call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i.i638, !amdgpu.uniform !42 for.cond.i.i.i638: ; preds = %939, %Flow3726 %940 = phi i32 [ %978, %Flow3726 ], [ poison, %939 ] %941 = phi i64 [ %979, %Flow3726 ], [ poison, %939 ] %942 = phi i32 [ %980, %Flow3726 ], [ poison, %939 ] %retval.sroa.6.0.i.i.i639 = phi i32 [ %983, %Flow3726 ], [ undef, %939 ] %retval.sroa.2.0.i.i.i641 = phi i64 [ %982, %Flow3726 ], [ undef, %939 ] %retval.sroa.8.0.i.i.i642 = phi i32 [ %981, %Flow3726 ], [ undef, %939 ] %index.0.i.i.i643 = phi i32 [ %985, %Flow3726 ], [ 0, %939 ] %943 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i644 = icmp ult i32 %index.0.i.i.i643, %943 %spec.store.select.i.i.i645 = select i1 %cmp.not.i.i.i644, i32 %index.0.i.i.i643, i32 0 %944 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %945 = and i32 %spec.store.select.i.i.i645, 31 %946 = lshr i64 %944, %sh_prom.i.i.i.i %947 = trunc i64 %946 to i32 %conv4.i.i.i.i.i649 = and i32 %947, 1 %shl.i.i.i.i.i650 = shl nuw i32 %conv4.i.i.i.i.i649, %945 %948 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2513, !amdgpu.uniform !42 949: ; preds = %ComputeEnd2514 %sunkaddr3292 = getelementptr inbounds i8, ptr addrspace(1) %3309, i64 40 %950 = atomicrmw or ptr addrspace(1) %sunkaddr3292, i32 %.lcssa4117 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %951, !amdgpu.uniform !42 951: ; preds = %949, %ComputeEnd2514 %952 = phi i32 [ %950, %949 ], [ poison, %ComputeEnd2514 ] call void @llvm.amdgcn.end.cf.i64(i64 %3318) %953 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %952) %954 = or i32 %953, %.lcssa4118 %shl5.i.i.i.i.i651 = shl nuw i32 1, %945 %and.i.i.i.i.i652 = and i32 %shl5.i.i.i.i.i651, %954 %tobool3.i.i.i.i653 = icmp ne i32 %and.i.i.i.i.i652, 0 %955 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i653) %and.i.i.i.i.i.i654 = and i64 %955, %944 %cmp.i.not.i.i.i655 = icmp ne i64 %944, %and.i.i.i.i.i.i654 br i1 %cmp.i.not.i.i.i655, label %if.then.i.i.i.i656, label %Flow3725, !amdgpu.uniform !42 if.then.i.i.i.i656: ; preds = %951 fence syncscope("agent") acquire %956 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %957 = extractelement <2 x i64> %956, i32 0 %958 = inttoptr i64 %957 to ptr %959 = extractelement <2 x i64> %956, i32 1 %960 = inttoptr i64 %959 to ptr %idxprom.i.i.i.i657 = zext i32 %spec.store.select.i.i.i645 to i64 %arrayidx.i.i.i.i658 = getelementptr inbounds nuw i32, ptr %958, i64 %idxprom.i.i.i.i657, !amdgpu.uniform !42 %961 = load atomic i32, ptr %arrayidx.i.i.i.i658 monotonic, align 4 %962 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %961) %arrayidx.i45.i.i.i659 = getelementptr inbounds nuw i32, ptr %960, i64 %idxprom.i.i.i.i657, !amdgpu.uniform !42 %963 = load atomic i32, ptr %arrayidx.i45.i.i.i659 monotonic, align 4 %964 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %963) %cmp.i46.not.i.i.i660 = icmp ne i32 %962, %964 br i1 %cmp.i46.not.i.i.i660, label %if.then12.i.i.i661, label %Flow3723, !amdgpu.uniform !42 if.then12.i.i.i661: ; preds = %if.then.i.i.i.i656 fence syncscope("agent") release %965 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %944, i1 true) %iszero.i.i.i.i.i.i.i662 = icmp ne i64 %944, 0 %cmp2.i.i.i.i.i.i663 = icmp eq i64 %965, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i664 = select i1 %iszero.i.i.i.i.i.i.i662, i1 %cmp2.i.i.i.i.i.i663, i1 false %conv4.i.i51.i.i.i665 = zext i1 %cmp.i.i.i.i.i.i664 to i32 %shl.i.i52.i.i.i666 = shl nuw i32 %conv4.i.i51.i.i.i665, %945 %xor.i.i.i.i.i667 = xor i32 %shl.i.i52.i.i.i666, -1 %966 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2518, !amdgpu.uniform !42 967: ; preds = %ComputeEnd2519 %sunkaddr3293 = getelementptr inbounds i8, ptr addrspace(1) %3309, i64 40 %968 = atomicrmw and ptr addrspace(1) %sunkaddr3293, i32 %.lcssa4119 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %969, !amdgpu.uniform !42 969: ; preds = %967, %ComputeEnd2519 call void @llvm.amdgcn.end.cf.i64(i64 %3336) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3723, !amdgpu.uniform !42 if.end14.i.i.i725: ; preds = %Flow3723 %970 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %944, i1 true) %iszero.i.i.i.i.i.i726 = icmp ne i64 %944, 0 %cmp2.i.i.i.i.i727 = icmp eq i64 %970, %sh_prom.i.i.i.i %cmp.i.i.i.i.i728 = select i1 %iszero.i.i.i.i.i.i726, i1 %cmp2.i.i.i.i.i727, i1 false %971 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i728) %972 = extractvalue { i1, i64 } %971, 0 %973 = extractvalue { i1, i64 } %971, 1 br i1 %972, label %if.then16.i.i.i730, label %if.end22.i.i.i729 if.then16.i.i.i730: ; preds = %if.end14.i.i.i725 %974 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i731 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %974, i64 %idxprom.i.i.i.i657, i32 1 store i32 1660944387, ptr %opcode.i.i.i731, align 8, !tbaa !77 %arrayidx21.i.i.i732 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %974, i64 %idxprom.i.i.i.i657 store i64 %944, ptr %arrayidx21.i.i.i732, align 8, !tbaa !80 br label %if.end22.i.i.i729, !amdgpu.uniform !42 Flow3724: ; preds = %if.end22.i.i.i729, %Flow3723 %975 = phi i32 [ %962, %if.end22.i.i.i729 ], [ %retval.sroa.8.0.i.i.i642, %Flow3723 ] %976 = phi i64 [ %944, %if.end22.i.i.i729 ], [ %retval.sroa.2.0.i.i.i641, %Flow3723 ] %977 = phi i32 [ %spec.store.select.i.i.i645, %if.end22.i.i.i729 ], [ %retval.sroa.6.0.i.i.i639, %Flow3723 ] br label %cleanup26.i.i.i668, !amdgpu.uniform !42 if.end22.i.i.i729: ; preds = %if.then16.i.i.i730, %if.end14.i.i.i725 call void @llvm.amdgcn.end.cf.i64(i64 %973) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3724, !amdgpu.uniform !42 Flow3725: ; preds = %cleanup26.i.i.i668, %951 %978 = phi i32 [ %977, %cleanup26.i.i.i668 ], [ %940, %951 ] %979 = phi i64 [ %976, %cleanup26.i.i.i668 ], [ %941, %951 ] %980 = phi i32 [ %975, %cleanup26.i.i.i668 ], [ %942, %951 ] %981 = phi i32 [ %975, %cleanup26.i.i.i668 ], [ %retval.sroa.8.0.i.i.i642, %951 ] %982 = phi i64 [ %976, %cleanup26.i.i.i668 ], [ %retval.sroa.2.0.i.i.i641, %951 ] %983 = phi i32 [ %977, %cleanup26.i.i.i668 ], [ %retval.sroa.6.0.i.i.i639, %951 ] %984 = phi i1 [ %cmp.i46.not.i.i.i660, %cleanup26.i.i.i668 ], [ true, %951 ] br i1 %984, label %for.inc.i.i.i673, label %Flow3726, !amdgpu.uniform !42 cleanup26.i.i.i668: ; preds = %Flow3724 br label %Flow3725, !amdgpu.uniform !42 for.inc.i.i.i673: ; preds = %Flow3725 %inc.i.i.i678 = add i32 %spec.store.select.i.i.i645, 1 br label %Flow3726, !amdgpu.uniform !42 Flow3726: ; preds = %for.inc.i.i.i673, %Flow3725 %985 = phi i32 [ %inc.i.i.i678, %for.inc.i.i.i673 ], [ poison, %Flow3725 ] %986 = phi i1 [ false, %for.inc.i.i.i673 ], [ true, %Flow3725 ] br i1 %986, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i679, label %for.cond.i.i.i638, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i679: ; preds = %Flow3726 %.lcssa4122 = phi i32 [ %978, %Flow3726 ] %.lcssa4121 = phi i64 [ %979, %Flow3726 ] %.lcssa4120 = phi i32 [ %980, %Flow3726 ] fence acquire %987 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i680 = shl i32 %.lcssa4122, 6 %idxprom.i19.i.i.i.i.i681 = zext i32 %mul.i.i.i.i.i.i680 to i64 %arrayidx.i20.i.i.i.i.i682 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %987, i64 %idxprom.i19.i.i.i.i.i681 %arrayidx.i22.i.i.i.i.i683 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i682, i64 %sh_prom.i.i.i.i store i64 1, ptr %arrayidx.i22.i.i.i.i.i683, align 8, !tbaa !82 %arrayidx6.i.i.i.i.i.i.i684 = getelementptr inbounds nuw i8, ptr %arrayidx.i22.i.i.i.i.i683, i64 8 store i8 10, ptr %arrayidx6.i.i.i.i.i.i.i684, align 8 %tobool.not.i.i.i.i.i.i685 = icmp eq i32 %.lcssa4120, 0 %conv.i.i.i.i.i.i686 = zext i1 %tobool.not.i.i.i.i.i.i685 to i32 fence release %988 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i687 = zext i32 %.lcssa4122 to i64 %arrayidx.i24.i.i.i.i.i688 = getelementptr inbounds nuw i32, ptr %988, i64 %idxprom.i23.i.i.i.i.i687 store atomic i32 %conv.i.i.i.i.i.i686, ptr %arrayidx.i24.i.i.i.i.i688 monotonic, align 4 %989 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i689 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %989, i64 %idxprom.i23.i.i.i.i.i687, !amdgpu.uniform !42 %990 = load i64, ptr %arrayidx.i.i5.i.i689, align 8, !tbaa !80 br label %while.cond.i.i.i.i690, !amdgpu.uniform !42 while.cond.i.i.i.i690: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i679, %Flow3722 %phi.broken3914 = phi i64 [ 0, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i679 ], [ %1005, %Flow3722 ] %port.sroa.37.0.i.i691 = phi i32 [ %1003, %Flow3722 ], [ %conv.i.i.i.i.i.i686, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i679 ] %idx.0.i.i.i.i692 = phi i64 [ %1002, %Flow3722 ], [ 56, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i679 ] %cmp.i.i.i.i693 = icmp eq i64 %idx.0.i.i.i.i692, 0 %991 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i693) %and.i.i.i.i6.i.i694 = and i64 %991, %990 %tobool.not.i.i.i.i695 = icmp ne i64 %and.i.i.i.i6.i.i694, 0 %992 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i696 = getelementptr inbounds nuw i32, ptr %992, i64 %idxprom.i23.i.i.i.i.i687, !amdgpu.uniform !42 %993 = load atomic i32, ptr %arrayidx.i22.i.i.i696 monotonic, align 4 %994 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i695) %995 = extractvalue { i1, i64 } %994, 0 %996 = extractvalue { i1, i64 } %994, 1 br i1 %995, label %cond.false.i8.i.i.i.i697, label %Flow3722 cond.false.i8.i.i.i.i697: ; preds = %while.cond.i.i.i.i690 %997 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %993) %998 = icmp ne i32 %997, %port.sroa.37.0.i.i691 br i1 %998, label %while.body.i.i21.i.i.i.i698.preheader, label %Flow3721, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i698.preheader: ; preds = %cond.false.i8.i.i.i.i697 br label %while.body.i.i21.i.i.i.i698, !amdgpu.uniform !42 Flow3721: ; preds = %Flow3720, %cond.false.i8.i.i.i.i697 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i701, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i698: ; preds = %while.body.i.i21.i.i.i.i698.preheader, %while.body.i.i21.i.i.i.i698 tail call void @llvm.amdgcn.s.sleep(i32 2) %999 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i699 = getelementptr inbounds nuw i32, ptr %999, i64 %idxprom.i23.i.i.i.i.i687, !amdgpu.uniform !42 %1000 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i699 monotonic, align 4 %1001 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1000) %cmp.i.not.i.i23.i.i.i.i700 = icmp eq i32 %1001, %port.sroa.37.0.i.i691 br i1 %cmp.i.not.i.i23.i.i.i.i700, label %Flow3720, label %while.body.i.i21.i.i.i.i698, !amdgpu.uniform !42 Flow3720: ; preds = %while.body.i.i21.i.i.i.i698 br label %Flow3721, !amdgpu.uniform !42 Flow3722: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i702, %while.cond.i.i.i.i690 %1002 = phi i64 [ %add.i.i.i.i705, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i702 ], [ poison, %while.cond.i.i.i.i690 ] %1003 = phi i32 [ %conv.i.i26.i.i.i.i703, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i702 ], [ poison, %while.cond.i.i.i.i690 ] %1004 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i702 ], [ true, %while.cond.i.i.i.i690 ] call void @llvm.amdgcn.end.cf.i64(i64 %996) %1005 = call i64 @llvm.amdgcn.if.break.i64(i1 %1004, i64 %phi.broken3914) %1006 = call i1 @llvm.amdgcn.loop.i64(i64 %1005) br i1 %1006, label %cond.false.i.i.i711, label %while.cond.i.i.i.i690 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i701: ; preds = %Flow3721 fence acquire br i1 %cmp.i.i.i.i693, label %if.then.i.i.i.i.i.i.i706, label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i702, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i706: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i701 %1007 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %arrayidx.i20.i35.i.i.i.i709 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %1007, i64 %idxprom.i19.i.i.i.i.i681 %arrayidx.i22.i38.i.i.i.i710 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i709, i64 %sh_prom.i.i.i.i store i8 10, ptr %arrayidx.i22.i38.i.i.i.i710, align 1 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i702, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i702: ; preds = %if.then.i.i.i.i.i.i.i706, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i701 %conv.i.i26.i.i.i.i703 = xor i32 %port.sroa.37.0.i.i691, 1 fence release %1008 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i704 = getelementptr inbounds nuw i32, ptr %1008, i64 %idxprom.i23.i.i.i.i.i687 store atomic i32 %conv.i.i26.i.i.i.i703, ptr %arrayidx.i24.i29.i.i.i.i704 monotonic, align 4 %add.i.i.i.i705 = add i64 %idx.0.i.i.i.i692, 64 br label %Flow3722, !amdgpu.uniform !42 cond.false.i.i.i711: ; preds = %Flow3722 %.lcssa4116 = phi i64 [ %1005, %Flow3722 ] %port.sroa.37.0.i.i691.lcssa = phi i32 [ %port.sroa.37.0.i.i691, %Flow3722 ] %.lcssa4115 = phi i32 [ %993, %Flow3722 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4116) %1009 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa4115) %1010 = icmp ne i32 %1009, %port.sroa.37.0.i.i691.lcssa %1011 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1010) %1012 = extractvalue { i1, i64 } %1011, 0 %1013 = extractvalue { i1, i64 } %1011, 1 br i1 %1012, label %while.body.i.i.i.i712.preheader, label %Flow3719 while.body.i.i.i.i712.preheader: ; preds = %cond.false.i.i.i711 br label %while.body.i.i.i.i712, !amdgpu.uniform !42 Flow3719: ; preds = %Flow3718, %cond.false.i.i.i711 call void @llvm.amdgcn.end.cf.i64(i64 %1013) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit, !amdgpu.uniform !42 while.body.i.i.i.i712: ; preds = %while.body.i.i.i.i712.preheader, %while.body.i.i.i.i712 %phi.broken3915 = phi i64 [ 0, %while.body.i.i.i.i712.preheader ], [ %1017, %while.body.i.i.i.i712 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %1014 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i713 = getelementptr inbounds nuw i32, ptr %1014, i64 %idxprom.i23.i.i.i.i.i687, !amdgpu.uniform !42 %1015 = load atomic i32, ptr %arrayidx.i.i.i8.i.i713 monotonic, align 4 %1016 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1015) %cmp.i.not.i.i.i.i714 = icmp eq i32 %1016, %port.sroa.37.0.i.i691.lcssa %1017 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i714, i64 %phi.broken3915) %1018 = call i1 @llvm.amdgcn.loop.i64(i64 %1017) br i1 %1018, label %Flow3718, label %while.body.i.i.i.i712 Flow3718: ; preds = %while.body.i.i.i.i712 %.lcssa4114 = phi i64 [ %1017, %while.body.i.i.i.i712 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4114) br label %Flow3719, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit: ; preds = %Flow3719 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %1019 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4121, i1 true) %iszero.i.i.i.i.i13.i.i716 = icmp ne i64 %.lcssa4121, 0 %cmp2.i.i.i.i14.i.i717 = icmp eq i64 %1019, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i718 = select i1 %iszero.i.i.i.i.i13.i.i716, i1 %cmp2.i.i.i.i14.i.i717, i1 false %1020 = and i32 %.lcssa4122, 31 %conv4.i.i.i19.i.i722 = zext i1 %cmp.i.i.i.i15.i.i718 to i32 %shl.i.i.i20.i.i723 = shl nuw i32 %conv4.i.i.i19.i.i722, %1020 %xor.i.i.i21.i.i724 = xor i32 %shl.i.i.i20.i.i723, -1 %1021 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2522, !amdgpu.uniform !42 1022: ; preds = %ComputeEnd2523 %div8.i.i.i16.i.i719 = lshr i32 %.lcssa4122, 5 %idxprom.i.i.i17.i.i720 = zext nneg i32 %div8.i.i.i16.i.i719 to i64 %1023 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i720 %sunkaddr3294 = getelementptr inbounds i8, ptr addrspace(1) %1023, i64 40 %1024 = atomicrmw and ptr addrspace(1) %sunkaddr3294, i32 %.lcssa4113 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1025, !amdgpu.uniform !42 1025: ; preds = %1022, %ComputeEnd2523 call void @llvm.amdgcn.end.cf.i64(i64 %3353) tail call void @llvm.amdgcn.wave.barrier() br i1 %cmp2.i.i.i35.i, label %if.then3.i.i.i65.i, label %if.end4.i.i.i54.i, !amdgpu.uniform !42 if.then3.i.i.i65.i: ; preds = %1025 %mul.i.i.i66.i = mul nuw i64 %inc.i.i.i32.i, 11 %div18.i.i.i67.i = lshr i64 %mul.i.i.i66.i, 3 br label %if.end4.i.i.i54.i, !amdgpu.uniform !42 if.end4.i.i.i54.i: ; preds = %if.then3.i.i.i65.i, %1025 %new_capacity.addr.0.i.i.i55.i = phi i64 [ %div18.i.i.i67.i, %if.then3.i.i.i65.i ], [ %inc.i.i.i32.i, %1025 ] %sub.i.i733 = add i64 %new_capacity.addr.0.i.i.i55.i, 7 %div2.i.i734 = and i64 %sub.i.i733, -8 %1026 = load ptr, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %add.ptr.i.i735 = getelementptr inbounds nuw i8, ptr %1026, i64 %div2.i.i734 store ptr %add.ptr.i.i735, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 br i1 %597, label %loop-memcpy-expansion2278.preheader, label %Flow3717, !amdgpu.uniform !42 loop-memcpy-expansion2278.preheader: ; preds = %if.end4.i.i.i54.i br label %loop-memcpy-expansion2278, !amdgpu.uniform !42 Flow3717: ; preds = %Flow3716, %if.end4.i.i.i54.i br label %loop-memcpy-residual-header2281, !amdgpu.uniform !42 loop-memcpy-expansion2278: ; preds = %loop-memcpy-expansion2278.preheader, %loop-memcpy-expansion2278 %loop-index2279 = phi i64 [ %1030, %loop-memcpy-expansion2278 ], [ 0, %loop-memcpy-expansion2278.preheader ] %1027 = getelementptr i8, ptr %3, i64 %loop-index2279, !amdgpu.uniform !42 %1028 = load <4 x i32>, ptr %1027, align 1 %1029 = getelementptr i8, ptr %1026, i64 %loop-index2279 store <4 x i32> %1028, ptr %1029, align 1 %1030 = add i64 %loop-index2279, 16 %1031 = icmp uge i64 %1030, %596 br i1 %1031, label %Flow3716, label %loop-memcpy-expansion2278, !amdgpu.uniform !42 Flow3715: ; preds = %Flow3714, %loop-memcpy-residual-header2281 br label %post-loop-memcpy-expansion2277, !amdgpu.uniform !42 loop-memcpy-residual2280: ; preds = %loop-memcpy-residual2280.preheader, %loop-memcpy-residual2280 %residual-loop-index2282 = phi i64 [ %1033, %loop-memcpy-residual2280 ], [ 0, %loop-memcpy-residual2280.preheader ] %scevgep3087 = getelementptr i8, ptr %scevgep3086, i64 %residual-loop-index2282, !amdgpu.uniform !42 %1032 = load i8, ptr %scevgep3087, align 1 %scevgep3085 = getelementptr i8, ptr %scevgep3084, i64 %residual-loop-index2282 store i8 %1032, ptr %scevgep3085, align 1 %1033 = add i64 %residual-loop-index2282, 1 %1034 = icmp uge i64 %1033, %595 br i1 %1034, label %Flow3714, label %loop-memcpy-residual2280, !amdgpu.uniform !42 Flow3714: ; preds = %loop-memcpy-residual2280 br label %Flow3715, !amdgpu.uniform !42 post-loop-memcpy-expansion2277: ; preds = %Flow3715 %sub.ptr.lhs.cast.i.i736 = ptrtoint ptr %add.ptr.i.i735 to i64 %sub.ptr.sub.i.i737 = sub i64 %sub.ptr.lhs.cast.i.i736, ptrtoint (ptr addrspacecast (ptr addrspace(1) @_ZN12_GLOBAL__N_16memoryE to ptr) to i64) %cmp.i.i738 = icmp ugt i64 %sub.ptr.sub.i.i737, 65335 %cond.i.i739 = select i1 %cmp.i.i738, ptr null, ptr %1026 %cmp.not.i10.i.i62.i = icmp ne ptr %cond.i.i739, addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr) br i1 %cmp.not.i10.i.i62.i, label %if.then.i.i.i63.i, label %for.cond.i.i.i741.preheader, !amdgpu.uniform !42 if.then.i.i.i63.i: ; preds = %post-loop-memcpy-expansion2277 %arrayidx.i.i.i64.i = getelementptr inbounds nuw i8, ptr %1026, i64 %spec.select.i store i8 0, ptr %arrayidx.i.i.i64.i, align 1, !tbaa !57 br label %for.cond.i.i.i741.preheader, !amdgpu.uniform !42 for.cond.i.i.i741.preheader: ; preds = %if.then.i.i.i63.i, %post-loop-memcpy-expansion2277 br label %for.cond.i.i.i741, !amdgpu.uniform !42 for.cond.i.i.i741: ; preds = %for.cond.i.i.i741.preheader, %Flow3713 %1035 = phi i32 [ %1073, %Flow3713 ], [ poison, %for.cond.i.i.i741.preheader ] %1036 = phi i64 [ %1074, %Flow3713 ], [ poison, %for.cond.i.i.i741.preheader ] %1037 = phi i32 [ %1075, %Flow3713 ], [ poison, %for.cond.i.i.i741.preheader ] %retval.sroa.6.0.i.i.i742 = phi i32 [ %1078, %Flow3713 ], [ undef, %for.cond.i.i.i741.preheader ] %retval.sroa.2.0.i.i.i744 = phi i64 [ %1077, %Flow3713 ], [ undef, %for.cond.i.i.i741.preheader ] %retval.sroa.8.0.i.i.i745 = phi i32 [ %1076, %Flow3713 ], [ undef, %for.cond.i.i.i741.preheader ] %index.0.i.i.i746 = phi i32 [ %1080, %Flow3713 ], [ 0, %for.cond.i.i.i741.preheader ] %1038 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i747 = icmp ult i32 %index.0.i.i.i746, %1038 %spec.store.select.i.i.i748 = select i1 %cmp.not.i.i.i747, i32 %index.0.i.i.i746, i32 0 %1039 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %1040 = and i32 %spec.store.select.i.i.i748, 31 %1041 = lshr i64 %1039, %sh_prom.i.i.i.i %1042 = trunc i64 %1041 to i32 %conv4.i.i.i.i.i752 = and i32 %1042, 1 %shl.i.i.i.i.i753 = shl nuw i32 %conv4.i.i.i.i.i752, %1040 %1043 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2526, !amdgpu.uniform !42 1044: ; preds = %ComputeEnd2527 %sunkaddr3295 = getelementptr inbounds i8, ptr addrspace(1) %3363, i64 40 %1045 = atomicrmw or ptr addrspace(1) %sunkaddr3295, i32 %.lcssa4107 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1046, !amdgpu.uniform !42 1046: ; preds = %1044, %ComputeEnd2527 %1047 = phi i32 [ %1045, %1044 ], [ poison, %ComputeEnd2527 ] call void @llvm.amdgcn.end.cf.i64(i64 %3372) %1048 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %1047) %1049 = or i32 %1048, %.lcssa4108 %shl5.i.i.i.i.i754 = shl nuw i32 1, %1040 %and.i.i.i.i.i755 = and i32 %shl5.i.i.i.i.i754, %1049 %tobool3.i.i.i.i756 = icmp ne i32 %and.i.i.i.i.i755, 0 %1050 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i756) %and.i.i.i.i.i.i757 = and i64 %1050, %1039 %cmp.i.not.i.i.i758 = icmp ne i64 %1039, %and.i.i.i.i.i.i757 br i1 %cmp.i.not.i.i.i758, label %if.then.i.i.i.i759, label %Flow3712, !amdgpu.uniform !42 if.then.i.i.i.i759: ; preds = %1046 fence syncscope("agent") acquire %1051 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %1052 = extractelement <2 x i64> %1051, i32 0 %1053 = inttoptr i64 %1052 to ptr %1054 = extractelement <2 x i64> %1051, i32 1 %1055 = inttoptr i64 %1054 to ptr %idxprom.i.i.i.i760 = zext i32 %spec.store.select.i.i.i748 to i64 %arrayidx.i.i.i.i761 = getelementptr inbounds nuw i32, ptr %1053, i64 %idxprom.i.i.i.i760, !amdgpu.uniform !42 %1056 = load atomic i32, ptr %arrayidx.i.i.i.i761 monotonic, align 4 %1057 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1056) %arrayidx.i45.i.i.i762 = getelementptr inbounds nuw i32, ptr %1055, i64 %idxprom.i.i.i.i760, !amdgpu.uniform !42 %1058 = load atomic i32, ptr %arrayidx.i45.i.i.i762 monotonic, align 4 %1059 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1058) %cmp.i46.not.i.i.i763 = icmp ne i32 %1057, %1059 br i1 %cmp.i46.not.i.i.i763, label %if.then12.i.i.i764, label %Flow3710, !amdgpu.uniform !42 if.then12.i.i.i764: ; preds = %if.then.i.i.i.i759 fence syncscope("agent") release %1060 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1039, i1 true) %iszero.i.i.i.i.i.i.i765 = icmp ne i64 %1039, 0 %cmp2.i.i.i.i.i.i766 = icmp eq i64 %1060, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i767 = select i1 %iszero.i.i.i.i.i.i.i765, i1 %cmp2.i.i.i.i.i.i766, i1 false %conv4.i.i51.i.i.i768 = zext i1 %cmp.i.i.i.i.i.i767 to i32 %shl.i.i52.i.i.i769 = shl nuw i32 %conv4.i.i51.i.i.i768, %1040 %xor.i.i.i.i.i770 = xor i32 %shl.i.i52.i.i.i769, -1 %1061 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2531, !amdgpu.uniform !42 1062: ; preds = %ComputeEnd2532 %sunkaddr3296 = getelementptr inbounds i8, ptr addrspace(1) %3363, i64 40 %1063 = atomicrmw and ptr addrspace(1) %sunkaddr3296, i32 %.lcssa4109 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1064, !amdgpu.uniform !42 1064: ; preds = %1062, %ComputeEnd2532 call void @llvm.amdgcn.end.cf.i64(i64 %3390) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3710, !amdgpu.uniform !42 if.end14.i.i.i830: ; preds = %Flow3710 %1065 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1039, i1 true) %iszero.i.i.i.i.i.i831 = icmp ne i64 %1039, 0 %cmp2.i.i.i.i.i832 = icmp eq i64 %1065, %sh_prom.i.i.i.i %cmp.i.i.i.i.i833 = select i1 %iszero.i.i.i.i.i.i831, i1 %cmp2.i.i.i.i.i832, i1 false %1066 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i833) %1067 = extractvalue { i1, i64 } %1066, 0 %1068 = extractvalue { i1, i64 } %1066, 1 br i1 %1067, label %if.then16.i.i.i835, label %if.end22.i.i.i834 if.then16.i.i.i835: ; preds = %if.end14.i.i.i830 %1069 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i836 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1069, i64 %idxprom.i.i.i.i760, i32 1 store i32 1660944387, ptr %opcode.i.i.i836, align 8, !tbaa !77 %arrayidx21.i.i.i837 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1069, i64 %idxprom.i.i.i.i760 store i64 %1039, ptr %arrayidx21.i.i.i837, align 8, !tbaa !80 br label %if.end22.i.i.i834, !amdgpu.uniform !42 Flow3711: ; preds = %if.end22.i.i.i834, %Flow3710 %1070 = phi i32 [ %1057, %if.end22.i.i.i834 ], [ %retval.sroa.8.0.i.i.i745, %Flow3710 ] %1071 = phi i64 [ %1039, %if.end22.i.i.i834 ], [ %retval.sroa.2.0.i.i.i744, %Flow3710 ] %1072 = phi i32 [ %spec.store.select.i.i.i748, %if.end22.i.i.i834 ], [ %retval.sroa.6.0.i.i.i742, %Flow3710 ] br label %cleanup26.i.i.i771, !amdgpu.uniform !42 if.end22.i.i.i834: ; preds = %if.then16.i.i.i835, %if.end14.i.i.i830 call void @llvm.amdgcn.end.cf.i64(i64 %1068) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3711, !amdgpu.uniform !42 Flow3712: ; preds = %cleanup26.i.i.i771, %1046 %1073 = phi i32 [ %1072, %cleanup26.i.i.i771 ], [ %1035, %1046 ] %1074 = phi i64 [ %1071, %cleanup26.i.i.i771 ], [ %1036, %1046 ] %1075 = phi i32 [ %1070, %cleanup26.i.i.i771 ], [ %1037, %1046 ] %1076 = phi i32 [ %1070, %cleanup26.i.i.i771 ], [ %retval.sroa.8.0.i.i.i745, %1046 ] %1077 = phi i64 [ %1071, %cleanup26.i.i.i771 ], [ %retval.sroa.2.0.i.i.i744, %1046 ] %1078 = phi i32 [ %1072, %cleanup26.i.i.i771 ], [ %retval.sroa.6.0.i.i.i742, %1046 ] %1079 = phi i1 [ %cmp.i46.not.i.i.i763, %cleanup26.i.i.i771 ], [ true, %1046 ] br i1 %1079, label %for.inc.i.i.i776, label %Flow3713, !amdgpu.uniform !42 cleanup26.i.i.i771: ; preds = %Flow3711 br label %Flow3712, !amdgpu.uniform !42 for.inc.i.i.i776: ; preds = %Flow3712 %inc.i.i.i781 = add i32 %spec.store.select.i.i.i748, 1 br label %Flow3713, !amdgpu.uniform !42 Flow3713: ; preds = %for.inc.i.i.i776, %Flow3712 %1080 = phi i32 [ %inc.i.i.i781, %for.inc.i.i.i776 ], [ poison, %Flow3712 ] %1081 = phi i1 [ false, %for.inc.i.i.i776 ], [ true, %Flow3712 ] br i1 %1081, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i782, label %for.cond.i.i.i741, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i782: ; preds = %Flow3713 %.lcssa4112 = phi i32 [ %1073, %Flow3713 ] %.lcssa4111 = phi i64 [ %1074, %Flow3713 ] %.lcssa4110 = phi i32 [ %1075, %Flow3713 ] fence acquire %1082 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i783 = shl i32 %.lcssa4112, 6 %idxprom.i19.i.i.i.i.i784 = zext i32 %mul.i.i.i.i.i.i783 to i64 %arrayidx.i20.i.i.i.i.i785 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %1082, i64 %idxprom.i19.i.i.i.i.i784 %arrayidx.i22.i.i.i.i.i786 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i785, i64 %sh_prom.i.i.i.i store i64 %spec.select.i, ptr %arrayidx.i22.i.i.i.i.i786, align 8, !tbaa !82 br i1 %656, label %loop-memcpy-expansion2242.preheader, label %Flow3709, !amdgpu.uniform !42 loop-memcpy-expansion2242.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i782 %1083 = add nuw nsw i64 %75, 8 %scevgep3081 = getelementptr i8, ptr %1082, i64 %1083 %1084 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i784, 6 %scevgep3082 = getelementptr i8, ptr %scevgep3081, i64 %1084 br label %loop-memcpy-expansion2242, !amdgpu.uniform !42 Flow3709: ; preds = %Flow3708, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i782 br label %loop-memcpy-residual-header2245, !amdgpu.uniform !42 loop-memcpy-expansion2242: ; preds = %loop-memcpy-expansion2242.preheader, %loop-memcpy-expansion2242 %loop-index2243 = phi i64 [ %1087, %loop-memcpy-expansion2242 ], [ 0, %loop-memcpy-expansion2242.preheader ] %1085 = getelementptr i8, ptr %1026, i64 %loop-index2243, !amdgpu.uniform !42 %1086 = load <4 x i32>, ptr %1085, align 1 %scevgep3083 = getelementptr i8, ptr %scevgep3082, i64 %loop-index2243 store <4 x i32> %1086, ptr %scevgep3083, align 1 %1087 = add i64 %loop-index2243, 16 %1088 = icmp uge i64 %1087, %655 br i1 %1088, label %Flow3708, label %loop-memcpy-expansion2242, !amdgpu.uniform !42 Flow3707: ; preds = %Flow3705, %Flow3706 %1089 = phi i64 [ %2776, %Flow3705 ], [ %2772, %Flow3706 ] br label %post-loop-memcpy-expansion2241, !amdgpu.uniform !42 loop-memcpy-residual2244: ; preds = %loop-memcpy-residual2244.preheader, %loop-memcpy-residual2244 %residual-loop-index2246 = phi i64 [ %1091, %loop-memcpy-residual2244 ], [ 0, %loop-memcpy-residual2244.preheader ] %scevgep3080 = getelementptr i8, ptr %scevgep3079, i64 %residual-loop-index2246, !amdgpu.uniform !42 %1090 = load i8, ptr %scevgep3080, align 1 %scevgep3078 = getelementptr i8, ptr %scevgep3077, i64 %residual-loop-index2246 store i8 %1090, ptr %scevgep3078, align 1 %1091 = add i64 %residual-loop-index2246, 1 %1092 = icmp uge i64 %1091, %654 br i1 %1092, label %Flow3705, label %loop-memcpy-residual2244, !amdgpu.uniform !42 Flow3705: ; preds = %loop-memcpy-residual2244 br label %Flow3707, !amdgpu.uniform !42 post-loop-memcpy-expansion2241: ; preds = %Flow3707 %tobool.not.i.i.i.i.i.i789 = icmp eq i32 %.lcssa4110, 0 %conv.i.i.i.i.i.i790 = zext i1 %tobool.not.i.i.i.i.i.i789 to i32 fence release %1093 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i791 = zext i32 %.lcssa4112 to i64 %arrayidx.i24.i.i.i.i.i792 = getelementptr inbounds nuw i32, ptr %1093, i64 %idxprom.i23.i.i.i.i.i791 store atomic i32 %conv.i.i.i.i.i.i790, ptr %arrayidx.i24.i.i.i.i.i792 monotonic, align 4 %1094 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i793 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1094, i64 %idxprom.i23.i.i.i.i.i791, !amdgpu.uniform !42 %1095 = load i64, ptr %arrayidx.i.i5.i.i793, align 8, !tbaa !80 %scevgep3062 = getelementptr i8, ptr %1026, i64 56 br label %while.cond.i.i.i.i794, !amdgpu.uniform !42 while.cond.i.i.i.i794: ; preds = %post-loop-memcpy-expansion2241, %Flow3704 %phi.broken3916 = phi i64 [ 0, %post-loop-memcpy-expansion2241 ], [ %1112, %Flow3704 ] %lsr.iv3069 = phi i64 [ %1110, %Flow3704 ], [ %670, %post-loop-memcpy-expansion2241 ] %lsr.iv3063 = phi ptr [ %1109, %Flow3704 ], [ %scevgep3062, %post-loop-memcpy-expansion2241 ] %port.sroa.37.0.i.i795 = phi i32 [ %1108, %Flow3704 ], [ %conv.i.i.i.i.i.i790, %post-loop-memcpy-expansion2241 ] %idx.0.i.i.i.i796 = phi i64 [ %1107, %Flow3704 ], [ 56, %post-loop-memcpy-expansion2241 ] %cmp.i.i.i.i797 = icmp ugt i64 %spec.select.i, %idx.0.i.i.i.i796 %1096 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i797) %and.i.i.i.i6.i.i798 = and i64 %1096, %1095 %tobool.not.i.i.i.i799 = icmp ne i64 %and.i.i.i.i6.i.i798, 0 %1097 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i800 = getelementptr inbounds nuw i32, ptr %1097, i64 %idxprom.i23.i.i.i.i.i791, !amdgpu.uniform !42 %1098 = load atomic i32, ptr %arrayidx.i22.i.i.i800 monotonic, align 4 %1099 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i799) %1100 = extractvalue { i1, i64 } %1099, 0 %1101 = extractvalue { i1, i64 } %1099, 1 br i1 %1100, label %cond.false.i8.i.i.i.i801, label %Flow3704 cond.false.i8.i.i.i.i801: ; preds = %while.cond.i.i.i.i794 %1102 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1098) %1103 = icmp ne i32 %1102, %port.sroa.37.0.i.i795 br i1 %1103, label %while.body.i.i21.i.i.i.i802.preheader, label %Flow3703, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i802.preheader: ; preds = %cond.false.i8.i.i.i.i801 br label %while.body.i.i21.i.i.i.i802, !amdgpu.uniform !42 Flow3703: ; preds = %Flow3702, %cond.false.i8.i.i.i.i801 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i805, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i802: ; preds = %while.body.i.i21.i.i.i.i802.preheader, %while.body.i.i21.i.i.i.i802 tail call void @llvm.amdgcn.s.sleep(i32 2) %1104 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i803 = getelementptr inbounds nuw i32, ptr %1104, i64 %idxprom.i23.i.i.i.i.i791, !amdgpu.uniform !42 %1105 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i803 monotonic, align 4 %1106 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1105) %cmp.i.not.i.i23.i.i.i.i804 = icmp eq i32 %1106, %port.sroa.37.0.i.i795 br i1 %cmp.i.not.i.i23.i.i.i.i804, label %Flow3702, label %while.body.i.i21.i.i.i.i802, !amdgpu.uniform !42 Flow3702: ; preds = %while.body.i.i21.i.i.i.i802 br label %Flow3703, !amdgpu.uniform !42 Flow3704: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i806, %while.cond.i.i.i.i794 %1107 = phi i64 [ %add.i.i.i.i809, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i806 ], [ poison, %while.cond.i.i.i.i794 ] %1108 = phi i32 [ %conv.i.i26.i.i.i.i807, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i806 ], [ poison, %while.cond.i.i.i.i794 ] %1109 = phi ptr [ %scevgep3064, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i806 ], [ poison, %while.cond.i.i.i.i794 ] %1110 = phi i64 [ %lsr.iv.next3070, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i806 ], [ poison, %while.cond.i.i.i.i794 ] %1111 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i806 ], [ true, %while.cond.i.i.i.i794 ] call void @llvm.amdgcn.end.cf.i64(i64 %1101) %1112 = call i64 @llvm.amdgcn.if.break.i64(i1 %1111, i64 %phi.broken3916) %1113 = call i1 @llvm.amdgcn.loop.i64(i64 %1112) br i1 %1113, label %cond.false.i.i.i816, label %while.cond.i.i.i.i794 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i805: ; preds = %Flow3703 fence acquire br i1 %cmp.i.i.i.i797, label %if.then.i.i.i.i.i.i.i810, label %Flow3701, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i810: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i805 %sub.i.i.i.i.i.i.i812 = sub nuw i64 %spec.select.i, %idx.0.i.i.i.i796 %spec.select.i.i.i36.i.i.i.i813 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i812, i64 64) %1114 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %1115 = and i64 %spec.select.i.i.i36.i.i.i.i813, 15 %1116 = sub i64 %spec.select.i.i.i36.i.i.i.i813, %1115 %1117 = icmp ne i64 %1116, 0 br i1 %1117, label %loop-memcpy-expansion2236.preheader, label %Flow3700, !amdgpu.uniform !42 loop-memcpy-expansion2236.preheader: ; preds = %if.then.i.i.i.i.i.i.i810 %arrayidx.i20.i35.i.i.i.i814 = getelementptr %"struct.rpc::Buffer", ptr %1114, i64 %idxprom.i19.i.i.i.i.i784 %arrayidx.i22.i38.i.i.i.i815 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i814, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2236, !amdgpu.uniform !42 Flow3700: ; preds = %Flow3699, %if.then.i.i.i.i.i.i.i810 br label %loop-memcpy-residual-header2239, !amdgpu.uniform !42 loop-memcpy-expansion2236: ; preds = %loop-memcpy-expansion2236.preheader, %loop-memcpy-expansion2236 %loop-index2237 = phi i64 [ %1120, %loop-memcpy-expansion2236 ], [ 0, %loop-memcpy-expansion2236.preheader ] %scevgep3065 = getelementptr i8, ptr %lsr.iv3063, i64 %loop-index2237, !amdgpu.uniform !42 %1118 = load <4 x i32>, ptr %scevgep3065, align 1 %1119 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i815, i64 %loop-index2237 store <4 x i32> %1118, ptr %1119, align 1 %1120 = add i64 %loop-index2237, 16 %1121 = icmp uge i64 %1120, %1116 br i1 %1121, label %Flow3699, label %loop-memcpy-expansion2236, !amdgpu.uniform !42 Flow3698: ; preds = %Flow3697, %loop-memcpy-residual-header2239 br label %Flow3701, !amdgpu.uniform !42 loop-memcpy-residual2238: ; preds = %loop-memcpy-residual2238.preheader, %loop-memcpy-residual2238 %residual-loop-index2240 = phi i64 [ %1123, %loop-memcpy-residual2238 ], [ 0, %loop-memcpy-residual2238.preheader ] %scevgep3075 = getelementptr i8, ptr %scevgep3074, i64 %residual-loop-index2240, !amdgpu.uniform !42 %1122 = load i8, ptr %scevgep3075, align 1 %scevgep3073 = getelementptr i8, ptr %scevgep3072, i64 %residual-loop-index2240 store i8 %1122, ptr %scevgep3073, align 1 %1123 = add i64 %residual-loop-index2240, 1 %1124 = icmp uge i64 %1123, %1115 br i1 %1124, label %Flow3697, label %loop-memcpy-residual2238, !amdgpu.uniform !42 Flow3697: ; preds = %loop-memcpy-residual2238 br label %Flow3698, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i806: ; preds = %Flow3701 %conv.i.i26.i.i.i.i807 = xor i32 %port.sroa.37.0.i.i795, 1 fence release %1125 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i808 = getelementptr inbounds nuw i32, ptr %1125, i64 %idxprom.i23.i.i.i.i.i791 store atomic i32 %conv.i.i26.i.i.i.i807, ptr %arrayidx.i24.i29.i.i.i.i808 monotonic, align 4 %add.i.i.i.i809 = add i64 %idx.0.i.i.i.i796, 64 %scevgep3064 = getelementptr i8, ptr %lsr.iv3063, i64 64 %lsr.iv.next3070 = add i64 %lsr.iv3069, -64 br label %Flow3704, !amdgpu.uniform !42 cond.false.i.i.i816: ; preds = %Flow3704 %.lcssa4106 = phi i64 [ %1112, %Flow3704 ] %port.sroa.37.0.i.i795.lcssa = phi i32 [ %port.sroa.37.0.i.i795, %Flow3704 ] %.lcssa4105 = phi i32 [ %1098, %Flow3704 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4106) %1126 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa4105) %1127 = icmp ne i32 %1126, %port.sroa.37.0.i.i795.lcssa %1128 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1127) %1129 = extractvalue { i1, i64 } %1128, 0 %1130 = extractvalue { i1, i64 } %1128, 1 br i1 %1129, label %while.body.i.i.i.i817.preheader, label %Flow3696 while.body.i.i.i.i817.preheader: ; preds = %cond.false.i.i.i816 br label %while.body.i.i.i.i817, !amdgpu.uniform !42 Flow3696: ; preds = %Flow3695, %cond.false.i.i.i816 call void @llvm.amdgcn.end.cf.i64(i64 %1130) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit838, !amdgpu.uniform !42 while.body.i.i.i.i817: ; preds = %while.body.i.i.i.i817.preheader, %while.body.i.i.i.i817 %phi.broken3917 = phi i64 [ 0, %while.body.i.i.i.i817.preheader ], [ %1134, %while.body.i.i.i.i817 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %1131 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i818 = getelementptr inbounds nuw i32, ptr %1131, i64 %idxprom.i23.i.i.i.i.i791, !amdgpu.uniform !42 %1132 = load atomic i32, ptr %arrayidx.i.i.i8.i.i818 monotonic, align 4 %1133 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1132) %cmp.i.not.i.i.i.i819 = icmp eq i32 %1133, %port.sroa.37.0.i.i795.lcssa %1134 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i819, i64 %phi.broken3917) %1135 = call i1 @llvm.amdgcn.loop.i64(i64 %1134) br i1 %1135, label %Flow3695, label %while.body.i.i.i.i817 Flow3695: ; preds = %while.body.i.i.i.i817 %.lcssa4104 = phi i64 [ %1134, %while.body.i.i.i.i817 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4104) br label %Flow3696, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit838: ; preds = %Flow3696 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %1136 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4111, i1 true) %iszero.i.i.i.i.i13.i.i821 = icmp ne i64 %.lcssa4111, 0 %cmp2.i.i.i.i14.i.i822 = icmp eq i64 %1136, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i823 = select i1 %iszero.i.i.i.i.i13.i.i821, i1 %cmp2.i.i.i.i14.i.i822, i1 false %1137 = and i32 %.lcssa4112, 31 %conv4.i.i.i19.i.i827 = zext i1 %cmp.i.i.i.i15.i.i823 to i32 %shl.i.i.i20.i.i828 = shl nuw i32 %conv4.i.i.i19.i.i827, %1137 %xor.i.i.i21.i.i829 = xor i32 %shl.i.i.i20.i.i828, -1 %1138 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2535, !amdgpu.uniform !42 1139: ; preds = %ComputeEnd2536 %div8.i.i.i16.i.i824 = lshr i32 %.lcssa4112, 5 %idxprom.i.i.i17.i.i825 = zext nneg i32 %div8.i.i.i16.i.i824 to i64 %1140 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i825 %sunkaddr3297 = getelementptr inbounds i8, ptr addrspace(1) %1140, i64 40 %1141 = atomicrmw and ptr addrspace(1) %sunkaddr3297, i32 %.lcssa4103 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1142, !amdgpu.uniform !42 1142: ; preds = %1139, %ComputeEnd2536 call void @llvm.amdgcn.end.cf.i64(i64 %3407) tail call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i1.i847, !amdgpu.uniform !42 for.cond.i.i1.i847: ; preds = %1142, %Flow3694 %1143 = phi i32 [ %1181, %Flow3694 ], [ poison, %1142 ] %1144 = phi i64 [ %1182, %Flow3694 ], [ poison, %1142 ] %1145 = phi i32 [ %1183, %Flow3694 ], [ poison, %1142 ] %retval.sroa.6.0.i.i.i848 = phi i32 [ %1186, %Flow3694 ], [ undef, %1142 ] %retval.sroa.2.0.i.i.i850 = phi i64 [ %1185, %Flow3694 ], [ undef, %1142 ] %retval.sroa.8.0.i.i.i851 = phi i32 [ %1184, %Flow3694 ], [ undef, %1142 ] %index.0.i.i.i852 = phi i32 [ %1188, %Flow3694 ], [ 0, %1142 ] %1146 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i853 = icmp ult i32 %index.0.i.i.i852, %1146 %spec.store.select.i.i.i854 = select i1 %cmp.not.i.i.i853, i32 %index.0.i.i.i852, i32 0 %1147 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %1148 = and i32 %spec.store.select.i.i.i854, 31 %1149 = lshr i64 %1147, %sh_prom.i.i.i.i %1150 = trunc i64 %1149 to i32 %conv4.i.i.i.i.i858 = and i32 %1150, 1 %shl.i.i.i.i.i859 = shl nuw i32 %conv4.i.i.i.i.i858, %1148 %1151 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2539, !amdgpu.uniform !42 1152: ; preds = %ComputeEnd2540 %sunkaddr3298 = getelementptr inbounds i8, ptr addrspace(1) %3417, i64 40 %1153 = atomicrmw or ptr addrspace(1) %sunkaddr3298, i32 %.lcssa4097 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1154, !amdgpu.uniform !42 1154: ; preds = %1152, %ComputeEnd2540 %1155 = phi i32 [ %1153, %1152 ], [ poison, %ComputeEnd2540 ] call void @llvm.amdgcn.end.cf.i64(i64 %3426) %1156 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %1155) %1157 = or i32 %1156, %.lcssa4098 %shl5.i.i.i.i.i860 = shl nuw i32 1, %1148 %and.i.i.i.i.i861 = and i32 %shl5.i.i.i.i.i860, %1157 %tobool3.i.i.i.i862 = icmp ne i32 %and.i.i.i.i.i861, 0 %1158 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i862) %and.i.i.i.i.i.i863 = and i64 %1158, %1147 %cmp.i.not.i.i.i864 = icmp ne i64 %1147, %and.i.i.i.i.i.i863 br i1 %cmp.i.not.i.i.i864, label %if.then.i.i.i.i865, label %Flow3693, !amdgpu.uniform !42 if.then.i.i.i.i865: ; preds = %1154 fence syncscope("agent") acquire %1159 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %1160 = extractelement <2 x i64> %1159, i32 0 %1161 = inttoptr i64 %1160 to ptr %1162 = extractelement <2 x i64> %1159, i32 1 %1163 = inttoptr i64 %1162 to ptr %idxprom.i.i.i.i866 = zext i32 %spec.store.select.i.i.i854 to i64 %arrayidx.i.i.i.i867 = getelementptr inbounds nuw i32, ptr %1161, i64 %idxprom.i.i.i.i866, !amdgpu.uniform !42 %1164 = load atomic i32, ptr %arrayidx.i.i.i.i867 monotonic, align 4 %1165 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1164) %arrayidx.i45.i.i.i868 = getelementptr inbounds nuw i32, ptr %1163, i64 %idxprom.i.i.i.i866, !amdgpu.uniform !42 %1166 = load atomic i32, ptr %arrayidx.i45.i.i.i868 monotonic, align 4 %1167 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1166) %cmp.i46.not.i.i.i869 = icmp ne i32 %1165, %1167 br i1 %cmp.i46.not.i.i.i869, label %if.then12.i.i.i870, label %Flow3691, !amdgpu.uniform !42 if.then12.i.i.i870: ; preds = %if.then.i.i.i.i865 fence syncscope("agent") release %1168 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1147, i1 true) %iszero.i.i.i.i.i.i.i871 = icmp ne i64 %1147, 0 %cmp2.i.i.i.i.i.i872 = icmp eq i64 %1168, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i873 = select i1 %iszero.i.i.i.i.i.i.i871, i1 %cmp2.i.i.i.i.i.i872, i1 false %conv4.i.i51.i.i.i874 = zext i1 %cmp.i.i.i.i.i.i873 to i32 %shl.i.i52.i.i.i875 = shl nuw i32 %conv4.i.i51.i.i.i874, %1148 %xor.i.i.i.i.i876 = xor i32 %shl.i.i52.i.i.i875, -1 %1169 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2544, !amdgpu.uniform !42 1170: ; preds = %ComputeEnd2545 %sunkaddr3299 = getelementptr inbounds i8, ptr addrspace(1) %3417, i64 40 %1171 = atomicrmw and ptr addrspace(1) %sunkaddr3299, i32 %.lcssa4099 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1172, !amdgpu.uniform !42 1172: ; preds = %1170, %ComputeEnd2545 call void @llvm.amdgcn.end.cf.i64(i64 %3444) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3691, !amdgpu.uniform !42 if.end14.i.i.i936: ; preds = %Flow3691 %1173 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1147, i1 true) %iszero.i.i.i.i.i.i937 = icmp ne i64 %1147, 0 %cmp2.i.i.i.i.i938 = icmp eq i64 %1173, %sh_prom.i.i.i.i %cmp.i.i.i.i.i939 = select i1 %iszero.i.i.i.i.i.i937, i1 %cmp2.i.i.i.i.i938, i1 false %1174 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i939) %1175 = extractvalue { i1, i64 } %1174, 0 %1176 = extractvalue { i1, i64 } %1174, 1 br i1 %1175, label %if.then16.i.i.i941, label %if.end22.i.i.i940 if.then16.i.i.i941: ; preds = %if.end14.i.i.i936 %1177 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i942 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1177, i64 %idxprom.i.i.i.i866, i32 1 store i32 1660944387, ptr %opcode.i.i.i942, align 8, !tbaa !77 %arrayidx21.i.i.i943 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1177, i64 %idxprom.i.i.i.i866 store i64 %1147, ptr %arrayidx21.i.i.i943, align 8, !tbaa !80 br label %if.end22.i.i.i940, !amdgpu.uniform !42 Flow3692: ; preds = %if.end22.i.i.i940, %Flow3691 %1178 = phi i32 [ %1165, %if.end22.i.i.i940 ], [ %retval.sroa.8.0.i.i.i851, %Flow3691 ] %1179 = phi i64 [ %1147, %if.end22.i.i.i940 ], [ %retval.sroa.2.0.i.i.i850, %Flow3691 ] %1180 = phi i32 [ %spec.store.select.i.i.i854, %if.end22.i.i.i940 ], [ %retval.sroa.6.0.i.i.i848, %Flow3691 ] br label %cleanup26.i.i.i877, !amdgpu.uniform !42 if.end22.i.i.i940: ; preds = %if.then16.i.i.i941, %if.end14.i.i.i936 call void @llvm.amdgcn.end.cf.i64(i64 %1176) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3692, !amdgpu.uniform !42 Flow3693: ; preds = %cleanup26.i.i.i877, %1154 %1181 = phi i32 [ %1180, %cleanup26.i.i.i877 ], [ %1143, %1154 ] %1182 = phi i64 [ %1179, %cleanup26.i.i.i877 ], [ %1144, %1154 ] %1183 = phi i32 [ %1178, %cleanup26.i.i.i877 ], [ %1145, %1154 ] %1184 = phi i32 [ %1178, %cleanup26.i.i.i877 ], [ %retval.sroa.8.0.i.i.i851, %1154 ] %1185 = phi i64 [ %1179, %cleanup26.i.i.i877 ], [ %retval.sroa.2.0.i.i.i850, %1154 ] %1186 = phi i32 [ %1180, %cleanup26.i.i.i877 ], [ %retval.sroa.6.0.i.i.i848, %1154 ] %1187 = phi i1 [ %cmp.i46.not.i.i.i869, %cleanup26.i.i.i877 ], [ true, %1154 ] br i1 %1187, label %for.inc.i.i.i882, label %Flow3694, !amdgpu.uniform !42 cleanup26.i.i.i877: ; preds = %Flow3692 br label %Flow3693, !amdgpu.uniform !42 for.inc.i.i.i882: ; preds = %Flow3693 %inc.i.i.i887 = add i32 %spec.store.select.i.i.i854, 1 br label %Flow3694, !amdgpu.uniform !42 Flow3694: ; preds = %for.inc.i.i.i882, %Flow3693 %1188 = phi i32 [ %inc.i.i.i887, %for.inc.i.i.i882 ], [ poison, %Flow3693 ] %1189 = phi i1 [ false, %for.inc.i.i.i882 ], [ true, %Flow3693 ] br i1 %1189, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i888, label %for.cond.i.i1.i847, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i888: ; preds = %Flow3694 %.lcssa4102 = phi i32 [ %1181, %Flow3694 ] %.lcssa4101 = phi i64 [ %1182, %Flow3694 ] %.lcssa4100 = phi i32 [ %1183, %Flow3694 ] fence acquire %1190 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i889 = shl i32 %.lcssa4102, 6 %idxprom.i19.i.i.i.i.i890 = zext i32 %mul.i.i.i.i.i.i889 to i64 %arrayidx.i20.i.i.i.i.i891 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %1190, i64 %idxprom.i19.i.i.i.i.i890 %arrayidx.i22.i.i.i.i.i892 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i891, i64 %sh_prom.i.i.i.i store i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.35 to ptr), i64 10) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.35 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i892, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i893 = tail call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.35 to ptr), i64 10) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.35 to ptr) to i64)), i64 56) %1191 = and i64 %spec.select.i.i.i.i.i.i.i893, 15 %1192 = sub i64 %spec.select.i.i.i.i.i.i.i893, %1191 %1193 = icmp ne i64 %1192, 0 br i1 %1193, label %loop-memcpy-expansion2368.preheader, label %Flow3690, !amdgpu.uniform !42 loop-memcpy-expansion2368.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i888 %1194 = add nuw nsw i64 %75, 8 %scevgep3059 = getelementptr i8, ptr %1190, i64 %1194 %1195 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i890, 6 %scevgep3060 = getelementptr i8, ptr %scevgep3059, i64 %1195 br label %loop-memcpy-expansion2368, !amdgpu.uniform !42 Flow3690: ; preds = %Flow3689, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i888 br label %loop-memcpy-residual-header2371, !amdgpu.uniform !42 loop-memcpy-expansion2368: ; preds = %loop-memcpy-expansion2368.preheader, %loop-memcpy-expansion2368 %loop-index2369 = phi i64 [ %1198, %loop-memcpy-expansion2368 ], [ 0, %loop-memcpy-expansion2368.preheader ] %1196 = getelementptr i8, ptr addrspace(4) @.str.35, i64 %loop-index2369, !amdgpu.uniform !42 %1197 = load <4 x i32>, ptr addrspace(4) %1196, align 1 %scevgep3061 = getelementptr i8, ptr %scevgep3060, i64 %loop-index2369 store <4 x i32> %1197, ptr %scevgep3061, align 1 %1198 = add i64 %loop-index2369, 16 %1199 = icmp uge i64 %1198, %1192 br i1 %1199, label %Flow3689, label %loop-memcpy-expansion2368, !amdgpu.uniform !42 Flow3688: ; preds = %Flow3686, %Flow3687 %1200 = phi i64 [ %2884, %Flow3686 ], [ %2881, %Flow3687 ] br label %post-loop-memcpy-expansion2367, !amdgpu.uniform !42 loop-memcpy-residual2370: ; preds = %loop-memcpy-residual2370.preheader, %loop-memcpy-residual2370 %residual-loop-index2372 = phi i64 [ %1202, %loop-memcpy-residual2370 ], [ 0, %loop-memcpy-residual2370.preheader ] %scevgep3058 = getelementptr i8, ptr addrspace(4) @.str.35, i64 %residual-loop-index2372, !amdgpu.uniform !42 %1201 = load i8, ptr addrspace(4) %scevgep3058, align 1 %scevgep3057 = getelementptr i8, ptr %scevgep3056, i64 %residual-loop-index2372 store i8 %1201, ptr %scevgep3057, align 1 %1202 = add i64 %residual-loop-index2372, 1 %1203 = icmp uge i64 %1202, %1191 br i1 %1203, label %Flow3686, label %loop-memcpy-residual2370, !amdgpu.uniform !42 Flow3686: ; preds = %loop-memcpy-residual2370 br label %Flow3688, !amdgpu.uniform !42 post-loop-memcpy-expansion2367: ; preds = %Flow3688 %tobool.not.i.i.i.i.i.i895 = icmp eq i32 %.lcssa4100, 0 %conv.i.i.i.i.i.i896 = zext i1 %tobool.not.i.i.i.i.i.i895 to i32 fence release %1204 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i897 = zext i32 %.lcssa4102 to i64 %arrayidx.i24.i.i.i.i.i898 = getelementptr inbounds nuw i32, ptr %1204, i64 %idxprom.i23.i.i.i.i.i897 store atomic i32 %conv.i.i.i.i.i.i896, ptr %arrayidx.i24.i.i.i.i.i898 monotonic, align 4 %1205 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i899 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1205, i64 %idxprom.i23.i.i.i.i.i897, !amdgpu.uniform !42 %1206 = load i64, ptr %arrayidx.i.i5.i.i899, align 8, !tbaa !80 br label %while.cond.i.i.i.i900, !amdgpu.uniform !42 while.cond.i.i.i.i900: ; preds = %post-loop-memcpy-expansion2367, %Flow3684 %phi.broken3918 = phi i64 [ 0, %post-loop-memcpy-expansion2367 ], [ %1223, %Flow3684 ] %lsr.iv3048 = phi i64 [ %1221, %Flow3684 ], [ -46, %post-loop-memcpy-expansion2367 ] %lsr.iv3043 = phi ptr addrspace(4) [ %1220, %Flow3684 ], [ getelementptr (i8, ptr addrspace(4) @.str.35, i64 56), %post-loop-memcpy-expansion2367 ] %port.sroa.37.0.i.i901 = phi i32 [ %1219, %Flow3684 ], [ %conv.i.i.i.i.i.i896, %post-loop-memcpy-expansion2367 ] %idx.0.i.i.i.i902 = phi i64 [ %1218, %Flow3684 ], [ 56, %post-loop-memcpy-expansion2367 ] %cmp.i.i.i.i903 = icmp ult i64 %idx.0.i.i.i.i902, sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.35 to ptr), i64 10) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.35 to ptr) to i64)) %1207 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i903) %and.i.i.i.i6.i.i904 = and i64 %1207, %1206 %tobool.not.i.i.i.i905 = icmp ne i64 %and.i.i.i.i6.i.i904, 0 %1208 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i906 = getelementptr inbounds nuw i32, ptr %1208, i64 %idxprom.i23.i.i.i.i.i897, !amdgpu.uniform !42 %1209 = load atomic i32, ptr %arrayidx.i22.i.i.i906 monotonic, align 4 %1210 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i905) %1211 = extractvalue { i1, i64 } %1210, 0 %1212 = extractvalue { i1, i64 } %1210, 1 br i1 %1211, label %cond.false.i8.i.i.i.i907, label %Flow3684 cond.false.i8.i.i.i.i907: ; preds = %while.cond.i.i.i.i900 %1213 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1209) %1214 = icmp ne i32 %1213, %port.sroa.37.0.i.i901 br i1 %1214, label %while.body.i.i21.i.i.i.i908.preheader, label %Flow3683, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i908.preheader: ; preds = %cond.false.i8.i.i.i.i907 br label %while.body.i.i21.i.i.i.i908, !amdgpu.uniform !42 Flow3683: ; preds = %Flow3681, %cond.false.i8.i.i.i.i907 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i911, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i908: ; preds = %while.body.i.i21.i.i.i.i908.preheader, %while.body.i.i21.i.i.i.i908 tail call void @llvm.amdgcn.s.sleep(i32 2) %1215 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i909 = getelementptr inbounds nuw i32, ptr %1215, i64 %idxprom.i23.i.i.i.i.i897, !amdgpu.uniform !42 %1216 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i909 monotonic, align 4 %1217 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1216) %cmp.i.not.i.i23.i.i.i.i910 = icmp eq i32 %1217, %port.sroa.37.0.i.i901 br i1 %cmp.i.not.i.i23.i.i.i.i910, label %Flow3681, label %while.body.i.i21.i.i.i.i908, !amdgpu.uniform !42 Flow3681: ; preds = %while.body.i.i21.i.i.i.i908 br label %Flow3683, !amdgpu.uniform !42 Flow3684: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i912, %while.cond.i.i.i.i900 %1218 = phi i64 [ %add.i.i.i.i915, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i912 ], [ poison, %while.cond.i.i.i.i900 ] %1219 = phi i32 [ %conv.i.i26.i.i.i.i913, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i912 ], [ poison, %while.cond.i.i.i.i900 ] %1220 = phi ptr addrspace(4) [ %scevgep3044, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i912 ], [ poison, %while.cond.i.i.i.i900 ] %1221 = phi i64 [ %lsr.iv.next3049, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i912 ], [ poison, %while.cond.i.i.i.i900 ] %1222 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i912 ], [ true, %while.cond.i.i.i.i900 ] call void @llvm.amdgcn.end.cf.i64(i64 %1212) %1223 = call i64 @llvm.amdgcn.if.break.i64(i1 %1222, i64 %phi.broken3918) %1224 = call i1 @llvm.amdgcn.loop.i64(i64 %1223) br i1 %1224, label %cond.false.i.i.i922, label %while.cond.i.i.i.i900 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i911: ; preds = %Flow3683 fence acquire br i1 %cmp.i.i.i.i903, label %if.then.i.i.i.i.i.i.i916, label %Flow3680, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i916: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i911 %sub.i.i.i.i.i.i.i918 = sub nuw i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.35 to ptr), i64 10) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.35 to ptr) to i64)), %idx.0.i.i.i.i902 %spec.select.i.i.i36.i.i.i.i919 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i918, i64 64) %1225 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %1226 = and i64 %spec.select.i.i.i36.i.i.i.i919, 15 %1227 = sub i64 %spec.select.i.i.i36.i.i.i.i919, %1226 %1228 = icmp ne i64 %1227, 0 br i1 %1228, label %loop-memcpy-expansion2380.preheader, label %Flow3679, !amdgpu.uniform !42 loop-memcpy-expansion2380.preheader: ; preds = %if.then.i.i.i.i.i.i.i916 %arrayidx.i20.i35.i.i.i.i920 = getelementptr %"struct.rpc::Buffer", ptr %1225, i64 %idxprom.i19.i.i.i.i.i890 %arrayidx.i22.i38.i.i.i.i921 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i920, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2380, !amdgpu.uniform !42 Flow3679: ; preds = %Flow3678, %if.then.i.i.i.i.i.i.i916 br label %loop-memcpy-residual-header2383, !amdgpu.uniform !42 loop-memcpy-expansion2380: ; preds = %loop-memcpy-expansion2380.preheader, %loop-memcpy-expansion2380 %loop-index2381 = phi i64 [ %1231, %loop-memcpy-expansion2380 ], [ 0, %loop-memcpy-expansion2380.preheader ] %scevgep3045 = getelementptr i8, ptr addrspace(4) %lsr.iv3043, i64 %loop-index2381, !amdgpu.uniform !42 %1229 = load <4 x i32>, ptr addrspace(4) %scevgep3045, align 1 %1230 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i921, i64 %loop-index2381 store <4 x i32> %1229, ptr %1230, align 1 %1231 = add i64 %loop-index2381, 16 %1232 = icmp uge i64 %1231, %1227 br i1 %1232, label %Flow3678, label %loop-memcpy-expansion2380, !amdgpu.uniform !42 Flow3676: ; preds = %Flow3675, %loop-memcpy-residual-header2383 br label %Flow3680, !amdgpu.uniform !42 loop-memcpy-residual2382: ; preds = %loop-memcpy-residual2382.preheader, %loop-memcpy-residual2382 %residual-loop-index2384 = phi i64 [ %1234, %loop-memcpy-residual2382 ], [ 0, %loop-memcpy-residual2382.preheader ] %scevgep3054 = getelementptr i8, ptr addrspace(4) %scevgep3053, i64 %residual-loop-index2384, !amdgpu.uniform !42 %1233 = load i8, ptr addrspace(4) %scevgep3054, align 1 %scevgep3052 = getelementptr i8, ptr %scevgep3051, i64 %residual-loop-index2384 store i8 %1233, ptr %scevgep3052, align 1 %1234 = add i64 %residual-loop-index2384, 1 %1235 = icmp uge i64 %1234, %1226 br i1 %1235, label %Flow3675, label %loop-memcpy-residual2382, !amdgpu.uniform !42 Flow3675: ; preds = %loop-memcpy-residual2382 br label %Flow3676, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i912: ; preds = %Flow3680 %conv.i.i26.i.i.i.i913 = xor i32 %port.sroa.37.0.i.i901, 1 fence release %1236 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i914 = getelementptr inbounds nuw i32, ptr %1236, i64 %idxprom.i23.i.i.i.i.i897 store atomic i32 %conv.i.i26.i.i.i.i913, ptr %arrayidx.i24.i29.i.i.i.i914 monotonic, align 4 %add.i.i.i.i915 = add i64 %idx.0.i.i.i.i902, 64 %scevgep3044 = getelementptr i8, ptr addrspace(4) %lsr.iv3043, i64 64 %lsr.iv.next3049 = add i64 %lsr.iv3048, -64 br label %Flow3684, !amdgpu.uniform !42 cond.false.i.i.i922: ; preds = %Flow3684 %.lcssa4096 = phi i64 [ %1223, %Flow3684 ] %port.sroa.37.0.i.i901.lcssa = phi i32 [ %port.sroa.37.0.i.i901, %Flow3684 ] %.lcssa4095 = phi i32 [ %1209, %Flow3684 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4096) %1237 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa4095) %1238 = icmp ne i32 %1237, %port.sroa.37.0.i.i901.lcssa %1239 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1238) %1240 = extractvalue { i1, i64 } %1239, 0 %1241 = extractvalue { i1, i64 } %1239, 1 br i1 %1240, label %while.body.i.i.i.i923.preheader, label %Flow3673 while.body.i.i.i.i923.preheader: ; preds = %cond.false.i.i.i922 br label %while.body.i.i.i.i923, !amdgpu.uniform !42 Flow3673: ; preds = %Flow3671, %cond.false.i.i.i922 call void @llvm.amdgcn.end.cf.i64(i64 %1241) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit944, !amdgpu.uniform !42 while.body.i.i.i.i923: ; preds = %while.body.i.i.i.i923.preheader, %while.body.i.i.i.i923 %phi.broken3919 = phi i64 [ 0, %while.body.i.i.i.i923.preheader ], [ %1245, %while.body.i.i.i.i923 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %1242 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i924 = getelementptr inbounds nuw i32, ptr %1242, i64 %idxprom.i23.i.i.i.i.i897, !amdgpu.uniform !42 %1243 = load atomic i32, ptr %arrayidx.i.i.i8.i.i924 monotonic, align 4 %1244 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1243) %cmp.i.not.i.i.i.i925 = icmp eq i32 %1244, %port.sroa.37.0.i.i901.lcssa %1245 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i925, i64 %phi.broken3919) %1246 = call i1 @llvm.amdgcn.loop.i64(i64 %1245) br i1 %1246, label %Flow3671, label %while.body.i.i.i.i923 Flow3671: ; preds = %while.body.i.i.i.i923 %.lcssa4094 = phi i64 [ %1245, %while.body.i.i.i.i923 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4094) br label %Flow3673, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit944: ; preds = %Flow3673 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %1247 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4101, i1 true) %iszero.i.i.i.i.i13.i.i927 = icmp ne i64 %.lcssa4101, 0 %cmp2.i.i.i.i14.i.i928 = icmp eq i64 %1247, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i929 = select i1 %iszero.i.i.i.i.i13.i.i927, i1 %cmp2.i.i.i.i14.i.i928, i1 false %1248 = and i32 %.lcssa4102, 31 %conv4.i.i.i19.i.i933 = zext i1 %cmp.i.i.i.i15.i.i929 to i32 %shl.i.i.i20.i.i934 = shl nuw i32 %conv4.i.i.i19.i.i933, %1248 %xor.i.i.i21.i.i935 = xor i32 %shl.i.i.i20.i.i934, -1 %1249 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2548, !amdgpu.uniform !42 1250: ; preds = %ComputeEnd2549 %div8.i.i.i16.i.i930 = lshr i32 %.lcssa4102, 5 %idxprom.i.i.i17.i.i931 = zext nneg i32 %div8.i.i.i16.i.i930 to i64 %1251 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i931 %sunkaddr3300 = getelementptr inbounds i8, ptr addrspace(1) %1251, i64 40 %1252 = atomicrmw and ptr addrspace(1) %sunkaddr3300, i32 %.lcssa4093 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1253, !amdgpu.uniform !42 1253: ; preds = %1250, %ComputeEnd2549 call void @llvm.amdgcn.end.cf.i64(i64 %3461) tail call void @llvm.amdgcn.wave.barrier() call void @llvm.lifetime.start.p5(ptr addrspace(5) %buffer.i.i.i) #34, !noalias !94 %cmp7.i.i.i.i.i.i.i = icmp ne i8 %LHS, 0 %1254 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp7.i.i.i.i.i.i.i) %1255 = extractvalue { i1, i64 } %1254, 0 %1256 = extractvalue { i1, i64 } %1254, 1 br i1 %1255, label %while.body.lr.ph.i.i.i.i.i.i.i, label %Flow3670 while.body.lr.ph.i.i.i.i.i.i.i: ; preds = %1253 %1257 = tail call i8 @llvm.abs.i8(i8 %LHS, i1 false) %retval.0.i.i.i.i.i.i.i = zext i8 %1257 to i32 br label %while.body.i.i.i.i.i.i.i, !amdgpu.uniform !42 Flow3670: ; preds = %Flow3669, %1253 %1258 = phi i1 [ %cmp.i.i.i.i.i.i.i.i.i.lcssa, %Flow3669 ], [ false, %1253 ] %1259 = phi i64 [ %writer.sroa.10.1.i.i.i.i.i.lcssa, %Flow3669 ], [ 0, %1253 ] call void @llvm.amdgcn.end.cf.i64(i64 %1256) br label %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i.i, !amdgpu.uniform !42 while.body.i.i.i.i.i.i.i: ; preds = %while.body.lr.ph.i.i.i.i.i.i.i, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i.i %phi.broken3920 = phi i64 [ 0, %while.body.lr.ph.i.i.i.i.i.i.i ], [ %1327, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i.i ] %writer.sroa.10.0.i.i.i.i.i = phi i64 [ %writer.sroa.10.1.i.i.i.i.i, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i.i ], [ 0, %while.body.lr.ph.i.i.i.i.i.i.i ] %value.addr.09.i.i.i.i.i.i.i = phi i32 [ %div.i.i.i.i.i.i.i.i, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i.i ], [ %retval.0.i.i.i.i.i.i.i, %while.body.lr.ph.i.i.i.i.i.i.i ] br label %NodeBlock3368, !amdgpu.uniform !42 NodeBlock3368: ; preds = %while.body.i.i.i.i.i.i.i %div.i.i.i.i.i.i.i.i = udiv i32 %value.addr.09.i.i.i.i.i.i.i, 10 %.neg = call i32 @llvm.amdgcn.mul.u24.i32(i32 %div.i.i.i.i.i.i.i.i, i32 246) %rem.i.i.i.i.i.i.i.i.decomposed = add nuw nsw i32 %.neg, %value.addr.09.i.i.i.i.i.i.i %conv.i.i.i.i.i.i.i.i = trunc i32 %rem.i.i.i.i.i.i.i.i.decomposed to i8 %1260 = zext i8 %conv.i.i.i.i.i.i.i.i to i16 %Pivot3369 = icmp sge i16 %1260, 5 %1261 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3369) %1262 = extractvalue { i1, i64 } %1261, 0 %1263 = extractvalue { i1, i64 } %1261, 1 br i1 %1262, label %NodeBlock3366, label %Flow3668 NodeBlock3366: ; preds = %NodeBlock3368 %Pivot3367 = icmp sge i16 %1260, 7 %1264 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3367) %1265 = extractvalue { i1, i64 } %1264, 0 %1266 = extractvalue { i1, i64 } %1264, 1 br i1 %1265, label %NodeBlock3364, label %Flow3659 NodeBlock3364: ; preds = %NodeBlock3366 %Pivot3365 = icmp sge i16 %1260, 8 %1267 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3365) %1268 = extractvalue { i1, i64 } %1267, 0 %1269 = extractvalue { i1, i64 } %1267, 1 br i1 %1268, label %NodeBlock3362, label %Flow3655 NodeBlock3362: ; preds = %NodeBlock3364 %Pivot3363 = icmp sge i16 %1260, 9 %1270 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3363) %1271 = extractvalue { i1, i64 } %1270, 0 %1272 = extractvalue { i1, i64 } %1270, 1 br i1 %1271, label %sw.bb9.i.i.i.i.i.i.i.i.i, label %Flow3653 Flow3659: ; preds = %Flow3656, %NodeBlock3366 %1273 = phi i8 [ %1317, %Flow3656 ], [ poison, %NodeBlock3366 ] %1274 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %1266) %1275 = extractvalue { i1, i64 } %1274, 0 %1276 = extractvalue { i1, i64 } %1274, 1 br i1 %1275, label %NodeBlock3360, label %Flow3660 NodeBlock3360: ; preds = %Flow3659 %Pivot3361 = icmp sge i16 %1260, 6 %1277 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3361) %1278 = extractvalue { i1, i64 } %1277, 0 %1279 = extractvalue { i1, i64 } %1277, 1 br i1 %1278, label %sw.bb6.i.i.i.i.i.i.i.i.i, label %Flow3657 Flow3668: ; preds = %Flow3660, %NodeBlock3368 %1280 = phi i8 [ %1319, %Flow3660 ], [ poison, %NodeBlock3368 ] %1281 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %1263) %1282 = extractvalue { i1, i64 } %1281, 0 %1283 = extractvalue { i1, i64 } %1281, 1 br i1 %1282, label %NodeBlock3358, label %if.then.i.i.i.i.i.i.i.i NodeBlock3358: ; preds = %Flow3668 %Pivot3359 = icmp sge i16 %1260, 3 %1284 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3359) %1285 = extractvalue { i1, i64 } %1284, 0 %1286 = extractvalue { i1, i64 } %1284, 1 br i1 %1285, label %NodeBlock3356, label %Flow3666 NodeBlock3356: ; preds = %NodeBlock3358 %Pivot3357 = icmp sge i16 %1260, 4 %1287 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3357) %1288 = extractvalue { i1, i64 } %1287, 0 %1289 = extractvalue { i1, i64 } %1287, 1 br i1 %1288, label %sw.bb4.i.i.i.i.i.i.i.i.i, label %Flow3661 Flow3666: ; preds = %Flow3662, %NodeBlock3358 %1290 = phi i8 [ %1320, %Flow3662 ], [ poison, %NodeBlock3358 ] %1291 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %1286) %1292 = extractvalue { i1, i64 } %1291, 0 %1293 = extractvalue { i1, i64 } %1291, 1 br i1 %1292, label %NodeBlock3354, label %Flow3667 NodeBlock3354: ; preds = %Flow3666 %Pivot3355 = icmp sge i16 %1260, 2 %1294 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3355) %1295 = extractvalue { i1, i64 } %1294, 0 %1296 = extractvalue { i1, i64 } %1294, 1 br i1 %1295, label %sw.bb2.i.i.i.i.i.i.i.i.i, label %Flow3664 Flow3664: ; preds = %sw.bb2.i.i.i.i.i.i.i.i.i, %NodeBlock3354 %1297 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %1296) %1298 = extractvalue { i1, i64 } %1297, 0 %1299 = extractvalue { i1, i64 } %1297, 1 br i1 %1298, label %LeafBlock3352, label %Flow3665 LeafBlock3352: ; preds = %Flow3664 %SwitchLeaf3353 = icmp eq i16 %1260, 1 %1300 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %SwitchLeaf3353) %1301 = extractvalue { i1, i64 } %1300, 0 %1302 = extractvalue { i1, i64 } %1300, 1 br i1 %1301, label %sw.bb1.i.i.i.i.i.i.i.i.i, label %Flow3663 sw.bb1.i.i.i.i.i.i.i.i.i: ; preds = %LeafBlock3352 br label %Flow3663, !amdgpu.uniform !42 sw.bb2.i.i.i.i.i.i.i.i.i: ; preds = %NodeBlock3354 br label %Flow3664, !amdgpu.uniform !42 Flow3661: ; preds = %sw.bb4.i.i.i.i.i.i.i.i.i, %NodeBlock3356 %1303 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %1289) %1304 = extractvalue { i1, i64 } %1303, 0 %1305 = extractvalue { i1, i64 } %1303, 1 br i1 %1304, label %sw.bb3.i.i.i.i.i.i.i.i.i, label %Flow3662 sw.bb3.i.i.i.i.i.i.i.i.i: ; preds = %Flow3661 br label %Flow3662, !amdgpu.uniform !42 sw.bb4.i.i.i.i.i.i.i.i.i: ; preds = %NodeBlock3356 br label %Flow3661, !amdgpu.uniform !42 Flow3657: ; preds = %sw.bb6.i.i.i.i.i.i.i.i.i, %NodeBlock3360 %1306 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %1279) %1307 = extractvalue { i1, i64 } %1306, 0 %1308 = extractvalue { i1, i64 } %1306, 1 br i1 %1307, label %sw.bb5.i.i.i.i.i.i.i.i.i, label %Flow3658 sw.bb5.i.i.i.i.i.i.i.i.i: ; preds = %Flow3657 br label %Flow3658, !amdgpu.uniform !42 sw.bb6.i.i.i.i.i.i.i.i.i: ; preds = %NodeBlock3360 br label %Flow3657, !amdgpu.uniform !42 Flow3655: ; preds = %Flow3654, %NodeBlock3364 %1309 = phi i8 [ %1316, %Flow3654 ], [ poison, %NodeBlock3364 ] %1310 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %1269) %1311 = extractvalue { i1, i64 } %1310, 0 %1312 = extractvalue { i1, i64 } %1310, 1 br i1 %1311, label %sw.bb7.i.i.i.i.i.i.i.i.i, label %Flow3656 sw.bb7.i.i.i.i.i.i.i.i.i: ; preds = %Flow3655 br label %Flow3656, !amdgpu.uniform !42 Flow3653: ; preds = %sw.bb9.i.i.i.i.i.i.i.i.i, %NodeBlock3362 %1313 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %1272) %1314 = extractvalue { i1, i64 } %1313, 0 %1315 = extractvalue { i1, i64 } %1313, 1 br i1 %1314, label %sw.bb8.i.i.i.i.i.i.i.i.i, label %Flow3654 sw.bb8.i.i.i.i.i.i.i.i.i: ; preds = %Flow3653 br label %Flow3654, !amdgpu.uniform !42 sw.bb9.i.i.i.i.i.i.i.i.i: ; preds = %NodeBlock3362 br label %Flow3653, !amdgpu.uniform !42 Flow3654: ; preds = %sw.bb8.i.i.i.i.i.i.i.i.i, %Flow3653 %1316 = phi i8 [ 56, %sw.bb8.i.i.i.i.i.i.i.i.i ], [ 57, %Flow3653 ] call void @llvm.amdgcn.end.cf.i64(i64 %1315) br label %Flow3655, !amdgpu.uniform !42 Flow3656: ; preds = %sw.bb7.i.i.i.i.i.i.i.i.i, %Flow3655 %1317 = phi i8 [ 55, %sw.bb7.i.i.i.i.i.i.i.i.i ], [ %1309, %Flow3655 ] call void @llvm.amdgcn.end.cf.i64(i64 %1312) br label %Flow3659, !amdgpu.uniform !42 Flow3658: ; preds = %sw.bb5.i.i.i.i.i.i.i.i.i, %Flow3657 %1318 = phi i8 [ 53, %sw.bb5.i.i.i.i.i.i.i.i.i ], [ 54, %Flow3657 ] call void @llvm.amdgcn.end.cf.i64(i64 %1308) br label %Flow3660, !amdgpu.uniform !42 Flow3660: ; preds = %Flow3658, %Flow3659 %1319 = phi i8 [ %1318, %Flow3658 ], [ %1273, %Flow3659 ] call void @llvm.amdgcn.end.cf.i64(i64 %1276) br label %Flow3668, !amdgpu.uniform !42 Flow3662: ; preds = %sw.bb3.i.i.i.i.i.i.i.i.i, %Flow3661 %1320 = phi i8 [ 51, %sw.bb3.i.i.i.i.i.i.i.i.i ], [ 52, %Flow3661 ] call void @llvm.amdgcn.end.cf.i64(i64 %1305) br label %Flow3666, !amdgpu.uniform !42 Flow3663: ; preds = %sw.bb1.i.i.i.i.i.i.i.i.i, %LeafBlock3352 %1321 = phi i8 [ 49, %sw.bb1.i.i.i.i.i.i.i.i.i ], [ 48, %LeafBlock3352 ] call void @llvm.amdgcn.end.cf.i64(i64 %1302) br label %Flow3665, !amdgpu.uniform !42 Flow3665: ; preds = %Flow3663, %Flow3664 %1322 = phi i8 [ %1321, %Flow3663 ], [ 50, %Flow3664 ] call void @llvm.amdgcn.end.cf.i64(i64 %1299) br label %Flow3667, !amdgpu.uniform !42 Flow3667: ; preds = %Flow3665, %Flow3666 %1323 = phi i8 [ %1322, %Flow3665 ], [ %1290, %Flow3666 ] call void @llvm.amdgcn.end.cf.i64(i64 %1293) br label %if.then.i.i.i.i.i.i.i.i, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i.i: ; preds = %Flow3668, %Flow3667 %retval.0.i.i.i.i.i.i.i.i.i = phi i8 [ %1280, %Flow3668 ], [ %1323, %Flow3667 ] call void @llvm.amdgcn.end.cf.i64(i64 %1283) %cmp.i.i.i.i.i.i.i.i.i = icmp eq i64 %writer.sroa.10.0.i.i.i.i.i, 11 %cmp.i.i.i.i.i.i.i.i.i.inv = xor i1 %cmp.i.i.i.i.i.i.i.i.i, true br i1 %cmp.i.i.i.i.i.i.i.i.i.inv, label %if.then3.i.i.i.i.i.i.i.i, label %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i.i, !amdgpu.uniform !42 if.then3.i.i.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i.i.i %1324 = trunc i64 %writer.sroa.10.0.i.i.i.i.i to i32 %1325 = xor i32 %1324, -1 %1326 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i, i32 %1325 %arrayidx.i.i.i.i.i.i.i.i.i2718 = getelementptr i8, ptr addrspace(5) %1326, i32 11 %inc.i.i.i.i.i.i.i.i = add i64 %writer.sroa.10.0.i.i.i.i.i, 1 store i8 %retval.0.i.i.i.i.i.i.i.i.i, ptr addrspace(5) %arrayidx.i.i.i.i.i.i.i.i.i2718, align 1, !tbaa !57, !noalias !94 br label %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i.i, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i.i: ; preds = %if.then3.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i %writer.sroa.10.1.i.i.i.i.i = phi i64 [ %inc.i.i.i.i.i.i.i.i, %if.then3.i.i.i.i.i.i.i.i ], [ 11, %if.then.i.i.i.i.i.i.i.i ] %cmp.i.i.i.i.i.i.i = icmp samesign ult i32 %value.addr.09.i.i.i.i.i.i.i, 10 %.not.i.i.i.i.i.i.i = or i1 %cmp.i.i.i.i.i.i.i.i.i, %cmp.i.i.i.i.i.i.i %1327 = call i64 @llvm.amdgcn.if.break.i64(i1 %.not.i.i.i.i.i.i.i, i64 %phi.broken3920) %1328 = call i1 @llvm.amdgcn.loop.i64(i64 %1327) br i1 %1328, label %Flow3669, label %while.body.i.i.i.i.i.i.i Flow3669: ; preds = %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i.i %writer.sroa.10.1.i.i.i.i.i.lcssa = phi i64 [ %writer.sroa.10.1.i.i.i.i.i, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i.i ] %.lcssa4092 = phi i64 [ %1327, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i.i ] %cmp.i.i.i.i.i.i.i.i.i.lcssa = phi i1 [ %cmp.i.i.i.i.i.i.i.i.i, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4092) br label %Flow3670, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i.i: ; preds = %Flow3670 %cmp.i19.i.i.i.i.i = icmp ne i64 %1259, 0 %or.cond.not.i.i.i.i.i = select i1 %1258, i1 true, i1 %cmp.i19.i.i.i.i.i %or.cond.not.i.i.i.i.i.inv = xor i1 %or.cond.not.i.i.i.i.i, true %1329 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %or.cond.not.i.i.i.i.i.inv) %1330 = extractvalue { i1, i64 } %1329, 0 %1331 = extractvalue { i1, i64 } %1329, 1 br i1 %1330, label %if.then3.i.i.lr.ph.i.i.i.i.i, label %while.end.i.i.i.i.i.i if.then3.i.i.lr.ph.i.i.i.i.i: ; preds = %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i.i %arrayidx.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr addrspace(5) %buffer.i.i.i, i32 10 store i8 48, ptr addrspace(5) %arrayidx.i.i.i.i.i.i.i.i, align 2, !tbaa !57, !noalias !94 br label %while.end.i.i.i.i.i.i, !amdgpu.uniform !42 while.end.i.i.i.i.i.i: ; preds = %if.then3.i.i.lr.ph.i.i.i.i.i, %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i.i %writer.sroa.10.4.i.i.i.i.i = phi i64 [ 1, %if.then3.i.i.lr.ph.i.i.i.i.i ], [ %1259, %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %1331) %cmp4.i.i.i.i.i.i = icmp sgt i8 %LHS, -1 %brmerge.i.i.i.i.i.i = or i1 %cmp4.i.i.i.i.i.i, %1258 %brmerge.i.i.i.i.i.i.inv = xor i1 %brmerge.i.i.i.i.i.i, true %1332 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %brmerge.i.i.i.i.i.i.inv) %1333 = extractvalue { i1, i64 } %1332, 0 %1334 = extractvalue { i1, i64 } %1332, 1 br i1 %1333, label %if.then.i14.i.i.i.i.i.i, label %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i.i if.then.i14.i.i.i.i.i.i: ; preds = %while.end.i.i.i.i.i.i %cmp.i.i17.i.i.i.i.i.i = icmp ne i64 %writer.sroa.10.4.i.i.i.i.i, 11 %1335 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i17.i.i.i.i.i.i) %1336 = extractvalue { i1, i64 } %1335, 0 %1337 = extractvalue { i1, i64 } %1335, 1 br i1 %1336, label %if.then3.i18.i.i.i.i.i.i, label %Flow3652 if.then3.i18.i.i.i.i.i.i: ; preds = %if.then.i14.i.i.i.i.i.i %1338 = trunc i64 %writer.sroa.10.4.i.i.i.i.i to i32 %1339 = xor i32 %1338, -1 %1340 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i, i32 %1339 %arrayidx.i.i19.i.i.i.i.i.i2719 = getelementptr i8, ptr addrspace(5) %1340, i32 11 %inc.i20.i.i.i.i.i.i = add i64 %writer.sroa.10.4.i.i.i.i.i, 1 store i8 45, ptr addrspace(5) %arrayidx.i.i19.i.i.i.i.i.i2719, align 1, !tbaa !57, !noalias !94 br label %Flow3652, !amdgpu.uniform !42 Flow3652: ; preds = %if.then3.i18.i.i.i.i.i.i, %if.then.i14.i.i.i.i.i.i %1341 = phi i64 [ %inc.i20.i.i.i.i.i.i, %if.then3.i18.i.i.i.i.i.i ], [ 11, %if.then.i14.i.i.i.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %1337) br label %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i.i, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i.i: ; preds = %while.end.i.i.i.i.i.i, %Flow3652 %writer.sroa.10.5.i.i.i.i.i = phi i64 [ %writer.sroa.10.4.i.i.i.i.i, %while.end.i.i.i.i.i.i ], [ %1341, %Flow3652 ] call void @llvm.amdgcn.end.cf.i64(i64 %1334) %written.i.i.i.i.i = getelementptr inbounds nuw i8, ptr addrspace(5) %buffer.i.i.i, i32 16 store i64 %writer.sroa.10.5.i.i.i.i.i, ptr addrspace(5) %written.i.i.i.i.i, align 8, !tbaa !91, !noalias !94 %cmp.i.not.i.i.i.i.i.i = icmp ne i64 %writer.sroa.10.5.i.i.i.i.i, 0 %1342 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.not.i.i.i.i.i.i) %1343 = extractvalue { i1, i64 } %1342, 0 %1344 = extractvalue { i1, i64 } %1342, 1 br i1 %1343, label %if.then.i.i.i.i.i.i.i, label %Flow3651 if.then.i.i.i.i.i.i.i: ; preds = %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i.i %1345 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %writer.sroa.10.5.i.i.i.i.i, i64 1) %ov3302 = extractvalue { i64, i1 } %1345, 1 %ov3302.inv = xor i1 %ov3302, true %1346 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %ov3302.inv) %1347 = extractvalue { i1, i64 } %1346, 0 %1348 = extractvalue { i1, i64 } %1346, 1 br i1 %1347, label %if.end.i.i.i.i.i.i.i.i, label %Flow3650 if.end.i.i.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i.i %math3301 = extractvalue { i64, i1 } %1345, 0 %cmp2.i.i.i.i.i.i.i.i = icmp ult i64 %math3301, 1676976733973595601 %1349 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp2.i.i.i.i.i.i.i.i) %1350 = extractvalue { i1, i64 } %1349, 0 %1351 = extractvalue { i1, i64 } %1349, 1 br i1 %1350, label %if.then3.i.i.i.i4.i.i.i.i, label %if.end4.i.i.i.i.i.i.i.i if.then3.i.i.i.i4.i.i.i.i: ; preds = %if.end.i.i.i.i.i.i.i.i %mul.i.i.i.i.i.i.i.i = mul nuw i64 %math3301, 11 %div18.i.i.i.i.i.i.i.i = lshr i64 %mul.i.i.i.i.i.i.i.i, 3 br label %if.end4.i.i.i.i.i.i.i.i, !amdgpu.uniform !42 Flow3650: ; preds = %if.end4.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i %1352 = phi ptr [ %cond.i.i951, %if.end4.i.i.i.i.i.i.i.i ], [ addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr), %if.then.i.i.i.i.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %1348) br label %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i.i, !amdgpu.uniform !42 if.end4.i.i.i.i.i.i.i.i: ; preds = %if.then3.i.i.i.i4.i.i.i.i, %if.end.i.i.i.i.i.i.i.i %new_capacity.addr.0.i.i.i.i.i.i.i.i = phi i64 [ %div18.i.i.i.i.i.i.i.i, %if.then3.i.i.i.i4.i.i.i.i ], [ %math3301, %if.end.i.i.i.i.i.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %1351) %sub.i.i945 = add i64 %new_capacity.addr.0.i.i.i.i.i.i.i.i, 7 %div2.i.i946 = and i64 %sub.i.i945, -8 %1353 = load ptr, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %add.ptr.i.i947 = getelementptr inbounds nuw i8, ptr %1353, i64 %div2.i.i946 store ptr %add.ptr.i.i947, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %sub.ptr.lhs.cast.i.i948 = ptrtoint ptr %add.ptr.i.i947 to i64 %sub.ptr.sub.i.i949 = sub i64 %sub.ptr.lhs.cast.i.i948, ptrtoint (ptr addrspacecast (ptr addrspace(1) @_ZN12_GLOBAL__N_16memoryE to ptr) to i64) %cmp.i.i950 = icmp ugt i64 %sub.ptr.sub.i.i949, 65335 %cond.i.i951 = select i1 %cmp.i.i950, ptr null, ptr %1353 br label %Flow3650, !amdgpu.uniform !42 Flow3651: ; preds = %Flow3649, %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i.i %1354 = phi ptr [ %1352, %Flow3649 ], [ addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr), %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %1344) br label %if.end.i.i.i.i.i.i.i, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i.i: ; preds = %Flow3650 br label %loadstoreloop2188, !amdgpu.uniform !42 loadstoreloop2188: ; preds = %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i.i, %loadstoreloop2188 %phi.broken3921 = phi i64 [ 0, %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i.i ], [ %1359, %loadstoreloop2188 ] %1355 = phi i64 [ %1357, %loadstoreloop2188 ], [ 0, %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i.i ] %1356 = getelementptr i8, ptr %1352, i64 %1355 store i8 0, ptr %1356, align 1 %1357 = add i64 %1355, 1 %1358 = icmp uge i64 %1357, %writer.sroa.10.5.i.i.i.i.i %1359 = call i64 @llvm.amdgcn.if.break.i64(i1 %1358, i64 %phi.broken3921) %1360 = call i1 @llvm.amdgcn.loop.i64(i64 %1359) br i1 %1360, label %Flow3649, label %loadstoreloop2188 Flow3649: ; preds = %loadstoreloop2188 %.lcssa4091 = phi i64 [ %1359, %loadstoreloop2188 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4091) br label %Flow3651, !amdgpu.uniform !42 if.end.i.i.i.i.i.i.i: ; preds = %Flow3651 %cmp.not.i6.i.i.i.i.i.i.i = icmp ne ptr %1354, addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr) %1361 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.not.i6.i.i.i.i.i.i.i) %1362 = extractvalue { i1, i64 } %1361, 0 %1363 = extractvalue { i1, i64 } %1361, 1 br i1 %1362, label %if.then.i.i.i.i2.i.i.i.i, label %_ZN22__llvm_libc_22_0_0_git7testing8internal13describeValueIcEENS_3cpp9enable_ifIXaasr3cppE13is_integral_vIT_ElestS5_Lm8EENS3_6stringEE4typeES5_.exit.i if.then.i.i.i.i2.i.i.i.i: ; preds = %if.end.i.i.i.i.i.i.i %arrayidx.i.i.i.i3.i.i.i.i = getelementptr inbounds nuw i8, ptr %1354, i64 %writer.sroa.10.5.i.i.i.i.i store i8 0, ptr %arrayidx.i.i.i.i3.i.i.i.i, align 1, !tbaa !57, !noalias !94 br label %_ZN22__llvm_libc_22_0_0_git7testing8internal13describeValueIcEENS_3cpp9enable_ifIXaasr3cppE13is_integral_vIT_ElestS5_Lm8EENS3_6stringEE4typeES5_.exit.i, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing8internal13describeValueIcEENS_3cpp9enable_ifIXaasr3cppE13is_integral_vIT_ElestS5_Lm8EENS3_6stringEE4typeES5_.exit.i: ; preds = %if.then.i.i.i.i2.i.i.i.i, %if.end.i.i.i.i.i.i.i call void @llvm.amdgcn.end.cf.i64(i64 %1363) %1364 = trunc i64 %writer.sroa.10.5.i.i.i.i.i to i32 %1365 = and i64 %writer.sroa.10.5.i.i.i.i.i, 15 %1366 = sub i64 %writer.sroa.10.5.i.i.i.i.i, %1365 %1367 = icmp ne i64 %1366, 0 %1368 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1367) %1369 = extractvalue { i1, i64 } %1368, 0 %1370 = extractvalue { i1, i64 } %1368, 1 br i1 %1369, label %loop-memcpy-expansion2302.preheader, label %Flow3647 loop-memcpy-expansion2302.preheader: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing8internal13describeValueIcEENS_3cpp9enable_ifIXaasr3cppE13is_integral_vIT_ElestS5_Lm8EENS3_6stringEE4typeES5_.exit.i %1371 = sub i32 11, %1364 %scevgep3040 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i, i32 %1371 br label %loop-memcpy-expansion2302, !amdgpu.uniform !42 Flow3647: ; preds = %Flow3646, %_ZN22__llvm_libc_22_0_0_git7testing8internal13describeValueIcEENS_3cpp9enable_ifIXaasr3cppE13is_integral_vIT_ElestS5_Lm8EENS3_6stringEE4typeES5_.exit.i call void @llvm.amdgcn.end.cf.i64(i64 %1370) br label %loop-memcpy-residual-header2305, !amdgpu.uniform !42 loop-memcpy-expansion2302: ; preds = %loop-memcpy-expansion2302.preheader, %loop-memcpy-expansion2302 %phi.broken3922 = phi i64 [ 0, %loop-memcpy-expansion2302.preheader ], [ %1376, %loop-memcpy-expansion2302 ] %lsr.iv3041 = phi ptr addrspace(5) [ %scevgep3042, %loop-memcpy-expansion2302 ], [ %scevgep3040, %loop-memcpy-expansion2302.preheader ] %loop-index2303 = phi i64 [ %1374, %loop-memcpy-expansion2302 ], [ 0, %loop-memcpy-expansion2302.preheader ] %1372 = load <4 x i32>, ptr addrspace(5) %lsr.iv3041, align 1 %1373 = getelementptr i8, ptr %1354, i64 %loop-index2303 store <4 x i32> %1372, ptr %1373, align 1 %1374 = add i64 %loop-index2303, 16 %scevgep3042 = getelementptr i8, ptr addrspace(5) %lsr.iv3041, i32 16 %1375 = icmp uge i64 %1374, %1366 %1376 = call i64 @llvm.amdgcn.if.break.i64(i1 %1375, i64 %phi.broken3922) %1377 = call i1 @llvm.amdgcn.loop.i64(i64 %1376) br i1 %1377, label %Flow3646, label %loop-memcpy-expansion2302 Flow3644: ; preds = %Flow3643, %loop-memcpy-residual-header2305 call void @llvm.amdgcn.end.cf.i64(i64 %2831) br label %post-loop-memcpy-expansion2301, !amdgpu.uniform !42 loop-memcpy-residual2304: ; preds = %loop-memcpy-residual2304.preheader, %loop-memcpy-residual2304 %phi.broken3923 = phi i64 [ 0, %loop-memcpy-residual2304.preheader ], [ %1381, %loop-memcpy-residual2304 ] %lsr.iv3036 = phi ptr addrspace(5) [ %scevgep3037, %loop-memcpy-residual2304 ], [ %scevgep3035, %loop-memcpy-residual2304.preheader ] %residual-loop-index2306 = phi i64 [ %1379, %loop-memcpy-residual2304 ], [ 0, %loop-memcpy-residual2304.preheader ] %1378 = load i8, ptr addrspace(5) %lsr.iv3036, align 1 %scevgep3039 = getelementptr i8, ptr %scevgep3038, i64 %residual-loop-index2306 store i8 %1378, ptr %scevgep3039, align 1 %1379 = add i64 %residual-loop-index2306, 1 %scevgep3037 = getelementptr i8, ptr addrspace(5) %lsr.iv3036, i32 1 %1380 = icmp uge i64 %1379, %1365 %1381 = call i64 @llvm.amdgcn.if.break.i64(i1 %1380, i64 %phi.broken3923) %1382 = call i1 @llvm.amdgcn.loop.i64(i64 %1381) br i1 %1382, label %Flow3643, label %loop-memcpy-residual2304 Flow3643: ; preds = %loop-memcpy-residual2304 %.lcssa4089 = phi i64 [ %1381, %loop-memcpy-residual2304 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4089) br label %Flow3644, !amdgpu.uniform !42 post-loop-memcpy-expansion2301: ; preds = %Flow3644 call void @llvm.lifetime.end.p5(ptr addrspace(5) %buffer.i.i.i) #34, !noalias !94 br label %for.cond.i.i.i953, !amdgpu.uniform !42 for.cond.i.i.i953: ; preds = %post-loop-memcpy-expansion2301, %Flow3641 %1383 = phi i32 [ %1421, %Flow3641 ], [ poison, %post-loop-memcpy-expansion2301 ] %1384 = phi i64 [ %1422, %Flow3641 ], [ poison, %post-loop-memcpy-expansion2301 ] %1385 = phi i32 [ %1423, %Flow3641 ], [ poison, %post-loop-memcpy-expansion2301 ] %retval.sroa.6.0.i.i.i954 = phi i32 [ %1426, %Flow3641 ], [ undef, %post-loop-memcpy-expansion2301 ] %retval.sroa.2.0.i.i.i956 = phi i64 [ %1425, %Flow3641 ], [ undef, %post-loop-memcpy-expansion2301 ] %retval.sroa.8.0.i.i.i957 = phi i32 [ %1424, %Flow3641 ], [ undef, %post-loop-memcpy-expansion2301 ] %index.0.i.i.i958 = phi i32 [ %1428, %Flow3641 ], [ 0, %post-loop-memcpy-expansion2301 ] %1386 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i959 = icmp ult i32 %index.0.i.i.i958, %1386 %spec.store.select.i.i.i960 = select i1 %cmp.not.i.i.i959, i32 %index.0.i.i.i958, i32 0 %1387 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %1388 = and i32 %spec.store.select.i.i.i960, 31 %1389 = lshr i64 %1387, %sh_prom.i.i.i.i %1390 = trunc i64 %1389 to i32 %conv4.i.i.i.i.i964 = and i32 %1390, 1 %shl.i.i.i.i.i965 = shl nuw i32 %conv4.i.i.i.i.i964, %1388 %1391 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2552, !amdgpu.uniform !42 1392: ; preds = %ComputeEnd2553 %sunkaddr3303 = getelementptr inbounds i8, ptr addrspace(1) %3471, i64 40 %1393 = atomicrmw or ptr addrspace(1) %sunkaddr3303, i32 %.lcssa4083 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1394, !amdgpu.uniform !42 1394: ; preds = %1392, %ComputeEnd2553 %1395 = phi i32 [ %1393, %1392 ], [ poison, %ComputeEnd2553 ] call void @llvm.amdgcn.end.cf.i64(i64 %3480) %1396 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %1395) %1397 = or i32 %1396, %.lcssa4084 %shl5.i.i.i.i.i966 = shl nuw i32 1, %1388 %and.i.i.i.i.i967 = and i32 %shl5.i.i.i.i.i966, %1397 %tobool3.i.i.i.i968 = icmp ne i32 %and.i.i.i.i.i967, 0 %1398 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i968) %and.i.i.i.i.i.i969 = and i64 %1398, %1387 %cmp.i.not.i.i.i970 = icmp ne i64 %1387, %and.i.i.i.i.i.i969 br i1 %cmp.i.not.i.i.i970, label %if.then.i.i.i.i971, label %Flow3640, !amdgpu.uniform !42 if.then.i.i.i.i971: ; preds = %1394 fence syncscope("agent") acquire %1399 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %1400 = extractelement <2 x i64> %1399, i32 0 %1401 = inttoptr i64 %1400 to ptr %1402 = extractelement <2 x i64> %1399, i32 1 %1403 = inttoptr i64 %1402 to ptr %idxprom.i.i.i.i972 = zext i32 %spec.store.select.i.i.i960 to i64 %arrayidx.i.i.i.i973 = getelementptr inbounds nuw i32, ptr %1401, i64 %idxprom.i.i.i.i972, !amdgpu.uniform !42 %1404 = load atomic i32, ptr %arrayidx.i.i.i.i973 monotonic, align 4 %1405 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1404) %arrayidx.i45.i.i.i974 = getelementptr inbounds nuw i32, ptr %1403, i64 %idxprom.i.i.i.i972, !amdgpu.uniform !42 %1406 = load atomic i32, ptr %arrayidx.i45.i.i.i974 monotonic, align 4 %1407 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1406) %cmp.i46.not.i.i.i975 = icmp ne i32 %1405, %1407 br i1 %cmp.i46.not.i.i.i975, label %if.then12.i.i.i976, label %Flow3638, !amdgpu.uniform !42 if.then12.i.i.i976: ; preds = %if.then.i.i.i.i971 fence syncscope("agent") release %1408 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1387, i1 true) %iszero.i.i.i.i.i.i.i977 = icmp ne i64 %1387, 0 %cmp2.i.i.i.i.i.i978 = icmp eq i64 %1408, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i979 = select i1 %iszero.i.i.i.i.i.i.i977, i1 %cmp2.i.i.i.i.i.i978, i1 false %conv4.i.i51.i.i.i980 = zext i1 %cmp.i.i.i.i.i.i979 to i32 %shl.i.i52.i.i.i981 = shl nuw i32 %conv4.i.i51.i.i.i980, %1388 %xor.i.i.i.i.i982 = xor i32 %shl.i.i52.i.i.i981, -1 %1409 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2557, !amdgpu.uniform !42 1410: ; preds = %ComputeEnd2558 %sunkaddr3304 = getelementptr inbounds i8, ptr addrspace(1) %3471, i64 40 %1411 = atomicrmw and ptr addrspace(1) %sunkaddr3304, i32 %.lcssa4085 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1412, !amdgpu.uniform !42 1412: ; preds = %1410, %ComputeEnd2558 call void @llvm.amdgcn.end.cf.i64(i64 %3498) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3638, !amdgpu.uniform !42 if.end14.i.i.i1042: ; preds = %Flow3638 %1413 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1387, i1 true) %iszero.i.i.i.i.i.i1043 = icmp ne i64 %1387, 0 %cmp2.i.i.i.i.i1044 = icmp eq i64 %1413, %sh_prom.i.i.i.i %cmp.i.i.i.i.i1045 = select i1 %iszero.i.i.i.i.i.i1043, i1 %cmp2.i.i.i.i.i1044, i1 false %1414 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i1045) %1415 = extractvalue { i1, i64 } %1414, 0 %1416 = extractvalue { i1, i64 } %1414, 1 br i1 %1415, label %if.then16.i.i.i1047, label %if.end22.i.i.i1046 if.then16.i.i.i1047: ; preds = %if.end14.i.i.i1042 %1417 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i1048 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1417, i64 %idxprom.i.i.i.i972, i32 1 store i32 1660944387, ptr %opcode.i.i.i1048, align 8, !tbaa !77 %arrayidx21.i.i.i1049 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1417, i64 %idxprom.i.i.i.i972 store i64 %1387, ptr %arrayidx21.i.i.i1049, align 8, !tbaa !80 br label %if.end22.i.i.i1046, !amdgpu.uniform !42 Flow3639: ; preds = %if.end22.i.i.i1046, %Flow3638 %1418 = phi i32 [ %1405, %if.end22.i.i.i1046 ], [ %retval.sroa.8.0.i.i.i957, %Flow3638 ] %1419 = phi i64 [ %1387, %if.end22.i.i.i1046 ], [ %retval.sroa.2.0.i.i.i956, %Flow3638 ] %1420 = phi i32 [ %spec.store.select.i.i.i960, %if.end22.i.i.i1046 ], [ %retval.sroa.6.0.i.i.i954, %Flow3638 ] br label %cleanup26.i.i.i983, !amdgpu.uniform !42 if.end22.i.i.i1046: ; preds = %if.then16.i.i.i1047, %if.end14.i.i.i1042 call void @llvm.amdgcn.end.cf.i64(i64 %1416) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3639, !amdgpu.uniform !42 Flow3640: ; preds = %cleanup26.i.i.i983, %1394 %1421 = phi i32 [ %1420, %cleanup26.i.i.i983 ], [ %1383, %1394 ] %1422 = phi i64 [ %1419, %cleanup26.i.i.i983 ], [ %1384, %1394 ] %1423 = phi i32 [ %1418, %cleanup26.i.i.i983 ], [ %1385, %1394 ] %1424 = phi i32 [ %1418, %cleanup26.i.i.i983 ], [ %retval.sroa.8.0.i.i.i957, %1394 ] %1425 = phi i64 [ %1419, %cleanup26.i.i.i983 ], [ %retval.sroa.2.0.i.i.i956, %1394 ] %1426 = phi i32 [ %1420, %cleanup26.i.i.i983 ], [ %retval.sroa.6.0.i.i.i954, %1394 ] %1427 = phi i1 [ %cmp.i46.not.i.i.i975, %cleanup26.i.i.i983 ], [ true, %1394 ] br i1 %1427, label %for.inc.i.i.i988, label %Flow3641, !amdgpu.uniform !42 cleanup26.i.i.i983: ; preds = %Flow3639 br label %Flow3640, !amdgpu.uniform !42 for.inc.i.i.i988: ; preds = %Flow3640 %inc.i.i.i993 = add i32 %spec.store.select.i.i.i960, 1 br label %Flow3641, !amdgpu.uniform !42 Flow3641: ; preds = %for.inc.i.i.i988, %Flow3640 %1428 = phi i32 [ %inc.i.i.i993, %for.inc.i.i.i988 ], [ poison, %Flow3640 ] %1429 = phi i1 [ false, %for.inc.i.i.i988 ], [ true, %Flow3640 ] br i1 %1429, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i994, label %for.cond.i.i.i953, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i994: ; preds = %Flow3641 %.lcssa4088 = phi i32 [ %1421, %Flow3641 ] %.lcssa4087 = phi i64 [ %1422, %Flow3641 ] %.lcssa4086 = phi i32 [ %1423, %Flow3641 ] fence acquire %1430 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i995 = shl i32 %.lcssa4088, 6 %idxprom.i19.i.i.i.i.i996 = zext i32 %mul.i.i.i.i.i.i995 to i64 %arrayidx.i20.i.i.i.i.i997 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %1430, i64 %idxprom.i19.i.i.i.i.i996 %arrayidx.i22.i.i.i.i.i998 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i997, i64 %sh_prom.i.i.i.i store i64 %writer.sroa.10.5.i.i.i.i.i, ptr %arrayidx.i22.i.i.i.i.i998, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i999 = tail call i64 @llvm.umin.i64(i64 %writer.sroa.10.5.i.i.i.i.i, i64 56) %1431 = and i64 %spec.select.i.i.i.i.i.i.i999, 15 %1432 = sub i64 %spec.select.i.i.i.i.i.i.i999, %1431 %1433 = icmp ne i64 %1432, 0 %1434 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1433) %1435 = extractvalue { i1, i64 } %1434, 0 %1436 = extractvalue { i1, i64 } %1434, 1 br i1 %1435, label %loop-memcpy-expansion2230.preheader, label %Flow3637 loop-memcpy-expansion2230.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i994 %1437 = add nuw nsw i64 %75, 8 %scevgep3032 = getelementptr i8, ptr %1430, i64 %1437 %1438 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i996, 6 %scevgep3033 = getelementptr i8, ptr %scevgep3032, i64 %1438 br label %loop-memcpy-expansion2230, !amdgpu.uniform !42 Flow3637: ; preds = %Flow3636, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i994 call void @llvm.amdgcn.end.cf.i64(i64 %1436) br label %loop-memcpy-residual-header2233, !amdgpu.uniform !42 loop-memcpy-expansion2230: ; preds = %loop-memcpy-expansion2230.preheader, %loop-memcpy-expansion2230 %phi.broken3924 = phi i64 [ 0, %loop-memcpy-expansion2230.preheader ], [ %1443, %loop-memcpy-expansion2230 ] %loop-index2231 = phi i64 [ %1441, %loop-memcpy-expansion2230 ], [ 0, %loop-memcpy-expansion2230.preheader ] %1439 = getelementptr i8, ptr %1354, i64 %loop-index2231 %1440 = load <4 x i32>, ptr %1439, align 1 %scevgep3034 = getelementptr i8, ptr %scevgep3033, i64 %loop-index2231 store <4 x i32> %1440, ptr %scevgep3034, align 1 %1441 = add i64 %loop-index2231, 16 %1442 = icmp uge i64 %1441, %1432 %1443 = call i64 @llvm.amdgcn.if.break.i64(i1 %1442, i64 %phi.broken3924) %1444 = call i1 @llvm.amdgcn.loop.i64(i64 %1443) br i1 %1444, label %Flow3636, label %loop-memcpy-expansion2230 Flow3634: ; preds = %Flow3631, %Flow3633 %1445 = phi i64 [ %2768, %Flow3631 ], [ %2760, %Flow3633 ] call void @llvm.amdgcn.end.cf.i64(i64 %2763) br label %post-loop-memcpy-expansion2229, !amdgpu.uniform !42 loop-memcpy-residual2232: ; preds = %loop-memcpy-residual2232.preheader, %loop-memcpy-residual2232 %phi.broken3925 = phi i64 [ 0, %loop-memcpy-residual2232.preheader ], [ %1449, %loop-memcpy-residual2232 ] %residual-loop-index2234 = phi i64 [ %1447, %loop-memcpy-residual2232 ], [ 0, %loop-memcpy-residual2232.preheader ] %scevgep3031 = getelementptr i8, ptr %scevgep3030, i64 %residual-loop-index2234 %1446 = load i8, ptr %scevgep3031, align 1 %scevgep3029 = getelementptr i8, ptr %scevgep3028, i64 %residual-loop-index2234 store i8 %1446, ptr %scevgep3029, align 1 %1447 = add i64 %residual-loop-index2234, 1 %1448 = icmp uge i64 %1447, %1431 %1449 = call i64 @llvm.amdgcn.if.break.i64(i1 %1448, i64 %phi.broken3925) %1450 = call i1 @llvm.amdgcn.loop.i64(i64 %1449) br i1 %1450, label %Flow3631, label %loop-memcpy-residual2232 Flow3631: ; preds = %loop-memcpy-residual2232 %.lcssa4081 = phi i64 [ %1449, %loop-memcpy-residual2232 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4081) br label %Flow3634, !amdgpu.uniform !42 post-loop-memcpy-expansion2229: ; preds = %Flow3634 %tobool.not.i.i.i.i.i.i1001 = icmp eq i32 %.lcssa4086, 0 %conv.i.i.i.i.i.i1002 = zext i1 %tobool.not.i.i.i.i.i.i1001 to i32 fence release %1451 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i1003 = zext i32 %.lcssa4088 to i64 %arrayidx.i24.i.i.i.i.i1004 = getelementptr inbounds nuw i32, ptr %1451, i64 %idxprom.i23.i.i.i.i.i1003 store atomic i32 %conv.i.i.i.i.i.i1002, ptr %arrayidx.i24.i.i.i.i.i1004 monotonic, align 4 %1452 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i1005 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1452, i64 %idxprom.i23.i.i.i.i.i1003, !amdgpu.uniform !42 %1453 = load i64, ptr %arrayidx.i.i5.i.i1005, align 8, !tbaa !80 %scevgep3014 = getelementptr i8, ptr %1354, i64 56 %1454 = add i64 %writer.sroa.10.5.i.i.i.i.i, -56 br label %while.cond.i.i.i.i1006, !amdgpu.uniform !42 while.cond.i.i.i.i1006: ; preds = %post-loop-memcpy-expansion2229, %Flow3629 %phi.broken3928 = phi i64 [ 0, %post-loop-memcpy-expansion2229 ], [ %1471, %Flow3629 ] %lsr.iv3020 = phi i64 [ %1469, %Flow3629 ], [ %1454, %post-loop-memcpy-expansion2229 ] %lsr.iv3015 = phi ptr [ %1468, %Flow3629 ], [ %scevgep3014, %post-loop-memcpy-expansion2229 ] %port.sroa.37.0.i.i1007 = phi i32 [ %1467, %Flow3629 ], [ %conv.i.i.i.i.i.i1002, %post-loop-memcpy-expansion2229 ] %idx.0.i.i.i.i1008 = phi i64 [ %1466, %Flow3629 ], [ 56, %post-loop-memcpy-expansion2229 ] %cmp.i.i.i.i1009 = icmp ugt i64 %writer.sroa.10.5.i.i.i.i.i, %idx.0.i.i.i.i1008 %1455 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i1009) %and.i.i.i.i6.i.i1010 = and i64 %1455, %1453 %tobool.not.i.i.i.i1011 = icmp ne i64 %and.i.i.i.i6.i.i1010, 0 %1456 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i1012 = getelementptr inbounds nuw i32, ptr %1456, i64 %idxprom.i23.i.i.i.i.i1003, !amdgpu.uniform !42 %1457 = load atomic i32, ptr %arrayidx.i22.i.i.i1012 monotonic, align 4 %1458 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i1011) %1459 = extractvalue { i1, i64 } %1458, 0 %1460 = extractvalue { i1, i64 } %1458, 1 br i1 %1459, label %cond.false.i8.i.i.i.i1013, label %Flow3629 cond.false.i8.i.i.i.i1013: ; preds = %while.cond.i.i.i.i1006 %1461 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1457) %1462 = icmp ne i32 %1461, %port.sroa.37.0.i.i1007 br i1 %1462, label %while.body.i.i21.i.i.i.i1014.preheader, label %Flow3628, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1014.preheader: ; preds = %cond.false.i8.i.i.i.i1013 br label %while.body.i.i21.i.i.i.i1014, !amdgpu.uniform !42 Flow3628: ; preds = %Flow3626, %cond.false.i8.i.i.i.i1013 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1017, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1014: ; preds = %while.body.i.i21.i.i.i.i1014.preheader, %while.body.i.i21.i.i.i.i1014 tail call void @llvm.amdgcn.s.sleep(i32 2) %1463 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i1015 = getelementptr inbounds nuw i32, ptr %1463, i64 %idxprom.i23.i.i.i.i.i1003, !amdgpu.uniform !42 %1464 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i1015 monotonic, align 4 %1465 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1464) %cmp.i.not.i.i23.i.i.i.i1016 = icmp eq i32 %1465, %port.sroa.37.0.i.i1007 br i1 %cmp.i.not.i.i23.i.i.i.i1016, label %Flow3626, label %while.body.i.i21.i.i.i.i1014, !amdgpu.uniform !42 Flow3626: ; preds = %while.body.i.i21.i.i.i.i1014 br label %Flow3628, !amdgpu.uniform !42 Flow3629: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1018, %while.cond.i.i.i.i1006 %1466 = phi i64 [ %add.i.i.i.i1021, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1018 ], [ poison, %while.cond.i.i.i.i1006 ] %1467 = phi i32 [ %conv.i.i26.i.i.i.i1019, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1018 ], [ poison, %while.cond.i.i.i.i1006 ] %1468 = phi ptr [ %scevgep3016, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1018 ], [ poison, %while.cond.i.i.i.i1006 ] %1469 = phi i64 [ %lsr.iv.next3021, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1018 ], [ poison, %while.cond.i.i.i.i1006 ] %1470 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1018 ], [ true, %while.cond.i.i.i.i1006 ] call void @llvm.amdgcn.end.cf.i64(i64 %1460) %1471 = call i64 @llvm.amdgcn.if.break.i64(i1 %1470, i64 %phi.broken3928) %1472 = call i1 @llvm.amdgcn.loop.i64(i64 %1471) br i1 %1472, label %cond.false.i.i.i1028, label %while.cond.i.i.i.i1006 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1017: ; preds = %Flow3628 fence acquire %1473 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i1009) %1474 = extractvalue { i1, i64 } %1473, 0 %1475 = extractvalue { i1, i64 } %1473, 1 br i1 %1474, label %if.then.i.i.i.i.i.i.i1022, label %Flow3625 if.then.i.i.i.i.i.i.i1022: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1017 %sub.i.i.i.i.i.i.i1024 = sub nuw i64 %writer.sroa.10.5.i.i.i.i.i, %idx.0.i.i.i.i1008 %spec.select.i.i.i36.i.i.i.i1025 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i1024, i64 64) %1476 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %1477 = and i64 %spec.select.i.i.i36.i.i.i.i1025, 15 %1478 = sub i64 %spec.select.i.i.i36.i.i.i.i1025, %1477 %1479 = icmp ne i64 %1478, 0 %1480 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1479) %1481 = extractvalue { i1, i64 } %1480, 0 %1482 = extractvalue { i1, i64 } %1480, 1 br i1 %1481, label %loop-memcpy-expansion2224.preheader, label %Flow3624 loop-memcpy-expansion2224.preheader: ; preds = %if.then.i.i.i.i.i.i.i1022 %arrayidx.i20.i35.i.i.i.i1026 = getelementptr %"struct.rpc::Buffer", ptr %1476, i64 %idxprom.i19.i.i.i.i.i996 %arrayidx.i22.i38.i.i.i.i1027 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i1026, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2224, !amdgpu.uniform !42 Flow3624: ; preds = %Flow3623, %if.then.i.i.i.i.i.i.i1022 call void @llvm.amdgcn.end.cf.i64(i64 %1482) br label %loop-memcpy-residual-header2227, !amdgpu.uniform !42 loop-memcpy-expansion2224: ; preds = %loop-memcpy-expansion2224.preheader, %loop-memcpy-expansion2224 %phi.broken3926 = phi i64 [ 0, %loop-memcpy-expansion2224.preheader ], [ %1487, %loop-memcpy-expansion2224 ] %loop-index2225 = phi i64 [ %1485, %loop-memcpy-expansion2224 ], [ 0, %loop-memcpy-expansion2224.preheader ] %scevgep3017 = getelementptr i8, ptr %lsr.iv3015, i64 %loop-index2225 %1483 = load <4 x i32>, ptr %scevgep3017, align 1 %1484 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i1027, i64 %loop-index2225 store <4 x i32> %1483, ptr %1484, align 1 %1485 = add i64 %loop-index2225, 16 %1486 = icmp uge i64 %1485, %1478 %1487 = call i64 @llvm.amdgcn.if.break.i64(i1 %1486, i64 %phi.broken3926) %1488 = call i1 @llvm.amdgcn.loop.i64(i64 %1487) br i1 %1488, label %Flow3623, label %loop-memcpy-expansion2224 Flow3621: ; preds = %Flow3620, %loop-memcpy-residual-header2227 call void @llvm.amdgcn.end.cf.i64(i64 %2753) br label %Flow3625, !amdgpu.uniform !42 loop-memcpy-residual2226: ; preds = %loop-memcpy-residual2226.preheader, %loop-memcpy-residual2226 %phi.broken3927 = phi i64 [ 0, %loop-memcpy-residual2226.preheader ], [ %1492, %loop-memcpy-residual2226 ] %residual-loop-index2228 = phi i64 [ %1490, %loop-memcpy-residual2226 ], [ 0, %loop-memcpy-residual2226.preheader ] %scevgep3026 = getelementptr i8, ptr %scevgep3025, i64 %residual-loop-index2228 %1489 = load i8, ptr %scevgep3026, align 1 %scevgep3024 = getelementptr i8, ptr %scevgep3023, i64 %residual-loop-index2228 store i8 %1489, ptr %scevgep3024, align 1 %1490 = add i64 %residual-loop-index2228, 1 %1491 = icmp uge i64 %1490, %1477 %1492 = call i64 @llvm.amdgcn.if.break.i64(i1 %1491, i64 %phi.broken3927) %1493 = call i1 @llvm.amdgcn.loop.i64(i64 %1492) br i1 %1493, label %Flow3620, label %loop-memcpy-residual2226 Flow3620: ; preds = %loop-memcpy-residual2226 %.lcssa4078 = phi i64 [ %1492, %loop-memcpy-residual2226 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4078) br label %Flow3621, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1018: ; preds = %Flow3625 %conv.i.i26.i.i.i.i1019 = xor i32 %port.sroa.37.0.i.i1007, 1 fence release %1494 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i1020 = getelementptr inbounds nuw i32, ptr %1494, i64 %idxprom.i23.i.i.i.i.i1003 store atomic i32 %conv.i.i26.i.i.i.i1019, ptr %arrayidx.i24.i29.i.i.i.i1020 monotonic, align 4 %add.i.i.i.i1021 = add i64 %idx.0.i.i.i.i1008, 64 %scevgep3016 = getelementptr i8, ptr %lsr.iv3015, i64 64 %lsr.iv.next3021 = add i64 %lsr.iv3020, -64 br label %Flow3629, !amdgpu.uniform !42 cond.false.i.i.i1028: ; preds = %Flow3629 %.lcssa4080 = phi i64 [ %1471, %Flow3629 ] %port.sroa.37.0.i.i1007.lcssa = phi i32 [ %port.sroa.37.0.i.i1007, %Flow3629 ] %.lcssa4079 = phi i32 [ %1457, %Flow3629 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4080) %1495 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa4079) %1496 = icmp ne i32 %1495, %port.sroa.37.0.i.i1007.lcssa %1497 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1496) %1498 = extractvalue { i1, i64 } %1497, 0 %1499 = extractvalue { i1, i64 } %1497, 1 br i1 %1498, label %while.body.i.i.i.i1029.preheader, label %Flow3618 while.body.i.i.i.i1029.preheader: ; preds = %cond.false.i.i.i1028 br label %while.body.i.i.i.i1029, !amdgpu.uniform !42 Flow3618: ; preds = %Flow3616, %cond.false.i.i.i1028 call void @llvm.amdgcn.end.cf.i64(i64 %1499) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit1050, !amdgpu.uniform !42 while.body.i.i.i.i1029: ; preds = %while.body.i.i.i.i1029.preheader, %while.body.i.i.i.i1029 %phi.broken3929 = phi i64 [ 0, %while.body.i.i.i.i1029.preheader ], [ %1503, %while.body.i.i.i.i1029 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %1500 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i1030 = getelementptr inbounds nuw i32, ptr %1500, i64 %idxprom.i23.i.i.i.i.i1003, !amdgpu.uniform !42 %1501 = load atomic i32, ptr %arrayidx.i.i.i8.i.i1030 monotonic, align 4 %1502 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1501) %cmp.i.not.i.i.i.i1031 = icmp eq i32 %1502, %port.sroa.37.0.i.i1007.lcssa %1503 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i1031, i64 %phi.broken3929) %1504 = call i1 @llvm.amdgcn.loop.i64(i64 %1503) br i1 %1504, label %Flow3616, label %while.body.i.i.i.i1029 Flow3616: ; preds = %while.body.i.i.i.i1029 %.lcssa4076 = phi i64 [ %1503, %while.body.i.i.i.i1029 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4076) br label %Flow3618, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit1050: ; preds = %Flow3618 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %1505 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4087, i1 true) %iszero.i.i.i.i.i13.i.i1033 = icmp ne i64 %.lcssa4087, 0 %cmp2.i.i.i.i14.i.i1034 = icmp eq i64 %1505, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i1035 = select i1 %iszero.i.i.i.i.i13.i.i1033, i1 %cmp2.i.i.i.i14.i.i1034, i1 false %1506 = and i32 %.lcssa4088, 31 %conv4.i.i.i19.i.i1039 = zext i1 %cmp.i.i.i.i15.i.i1035 to i32 %shl.i.i.i20.i.i1040 = shl nuw i32 %conv4.i.i.i19.i.i1039, %1506 %xor.i.i.i21.i.i1041 = xor i32 %shl.i.i.i20.i.i1040, -1 %1507 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2561, !amdgpu.uniform !42 1508: ; preds = %ComputeEnd2562 %div8.i.i.i16.i.i1036 = lshr i32 %.lcssa4088, 5 %idxprom.i.i.i17.i.i1037 = zext nneg i32 %div8.i.i.i16.i.i1036 to i64 %1509 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i1037 %sunkaddr3305 = getelementptr inbounds i8, ptr addrspace(1) %1509, i64 40 %1510 = atomicrmw and ptr addrspace(1) %sunkaddr3305, i32 %.lcssa4075 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1511, !amdgpu.uniform !42 1511: ; preds = %1508, %ComputeEnd2562 call void @llvm.amdgcn.end.cf.i64(i64 %3515) tail call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i.i1054, !amdgpu.uniform !42 for.cond.i.i.i1054: ; preds = %1511, %Flow3615 %1512 = phi i32 [ %1550, %Flow3615 ], [ poison, %1511 ] %1513 = phi i64 [ %1551, %Flow3615 ], [ poison, %1511 ] %1514 = phi i32 [ %1552, %Flow3615 ], [ poison, %1511 ] %retval.sroa.6.0.i.i.i1055 = phi i32 [ %1555, %Flow3615 ], [ undef, %1511 ] %retval.sroa.2.0.i.i.i1057 = phi i64 [ %1554, %Flow3615 ], [ undef, %1511 ] %retval.sroa.8.0.i.i.i1058 = phi i32 [ %1553, %Flow3615 ], [ undef, %1511 ] %index.0.i.i.i1059 = phi i32 [ %1557, %Flow3615 ], [ 0, %1511 ] %1515 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i1060 = icmp ult i32 %index.0.i.i.i1059, %1515 %spec.store.select.i.i.i1061 = select i1 %cmp.not.i.i.i1060, i32 %index.0.i.i.i1059, i32 0 %1516 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %1517 = and i32 %spec.store.select.i.i.i1061, 31 %1518 = lshr i64 %1516, %sh_prom.i.i.i.i %1519 = trunc i64 %1518 to i32 %conv4.i.i.i.i.i1065 = and i32 %1519, 1 %shl.i.i.i.i.i1066 = shl nuw i32 %conv4.i.i.i.i.i1065, %1517 %1520 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2565, !amdgpu.uniform !42 1521: ; preds = %ComputeEnd2566 %sunkaddr3306 = getelementptr inbounds i8, ptr addrspace(1) %3525, i64 40 %1522 = atomicrmw or ptr addrspace(1) %sunkaddr3306, i32 %.lcssa4069 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1523, !amdgpu.uniform !42 1523: ; preds = %1521, %ComputeEnd2566 %1524 = phi i32 [ %1522, %1521 ], [ poison, %ComputeEnd2566 ] call void @llvm.amdgcn.end.cf.i64(i64 %3534) %1525 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %1524) %1526 = or i32 %1525, %.lcssa4070 %shl5.i.i.i.i.i1067 = shl nuw i32 1, %1517 %and.i.i.i.i.i1068 = and i32 %shl5.i.i.i.i.i1067, %1526 %tobool3.i.i.i.i1069 = icmp ne i32 %and.i.i.i.i.i1068, 0 %1527 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i1069) %and.i.i.i.i.i.i1070 = and i64 %1527, %1516 %cmp.i.not.i.i.i1071 = icmp ne i64 %1516, %and.i.i.i.i.i.i1070 br i1 %cmp.i.not.i.i.i1071, label %if.then.i.i.i.i1072, label %Flow3614, !amdgpu.uniform !42 if.then.i.i.i.i1072: ; preds = %1523 fence syncscope("agent") acquire %1528 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %1529 = extractelement <2 x i64> %1528, i32 0 %1530 = inttoptr i64 %1529 to ptr %1531 = extractelement <2 x i64> %1528, i32 1 %1532 = inttoptr i64 %1531 to ptr %idxprom.i.i.i.i1073 = zext i32 %spec.store.select.i.i.i1061 to i64 %arrayidx.i.i.i.i1074 = getelementptr inbounds nuw i32, ptr %1530, i64 %idxprom.i.i.i.i1073, !amdgpu.uniform !42 %1533 = load atomic i32, ptr %arrayidx.i.i.i.i1074 monotonic, align 4 %1534 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1533) %arrayidx.i45.i.i.i1075 = getelementptr inbounds nuw i32, ptr %1532, i64 %idxprom.i.i.i.i1073, !amdgpu.uniform !42 %1535 = load atomic i32, ptr %arrayidx.i45.i.i.i1075 monotonic, align 4 %1536 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1535) %cmp.i46.not.i.i.i1076 = icmp ne i32 %1534, %1536 br i1 %cmp.i46.not.i.i.i1076, label %if.then12.i.i.i1077, label %Flow3612, !amdgpu.uniform !42 if.then12.i.i.i1077: ; preds = %if.then.i.i.i.i1072 fence syncscope("agent") release %1537 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1516, i1 true) %iszero.i.i.i.i.i.i.i1078 = icmp ne i64 %1516, 0 %cmp2.i.i.i.i.i.i1079 = icmp eq i64 %1537, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i1080 = select i1 %iszero.i.i.i.i.i.i.i1078, i1 %cmp2.i.i.i.i.i.i1079, i1 false %conv4.i.i51.i.i.i1081 = zext i1 %cmp.i.i.i.i.i.i1080 to i32 %shl.i.i52.i.i.i1082 = shl nuw i32 %conv4.i.i51.i.i.i1081, %1517 %xor.i.i.i.i.i1083 = xor i32 %shl.i.i52.i.i.i1082, -1 %1538 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2570, !amdgpu.uniform !42 1539: ; preds = %ComputeEnd2571 %sunkaddr3307 = getelementptr inbounds i8, ptr addrspace(1) %3525, i64 40 %1540 = atomicrmw and ptr addrspace(1) %sunkaddr3307, i32 %.lcssa4071 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1541, !amdgpu.uniform !42 1541: ; preds = %1539, %ComputeEnd2571 call void @llvm.amdgcn.end.cf.i64(i64 %3552) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3612, !amdgpu.uniform !42 if.end14.i.i.i1141: ; preds = %Flow3612 %1542 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1516, i1 true) %iszero.i.i.i.i.i.i1142 = icmp ne i64 %1516, 0 %cmp2.i.i.i.i.i1143 = icmp eq i64 %1542, %sh_prom.i.i.i.i %cmp.i.i.i.i.i1144 = select i1 %iszero.i.i.i.i.i.i1142, i1 %cmp2.i.i.i.i.i1143, i1 false %1543 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i1144) %1544 = extractvalue { i1, i64 } %1543, 0 %1545 = extractvalue { i1, i64 } %1543, 1 br i1 %1544, label %if.then16.i.i.i1146, label %if.end22.i.i.i1145 if.then16.i.i.i1146: ; preds = %if.end14.i.i.i1141 %1546 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i1147 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1546, i64 %idxprom.i.i.i.i1073, i32 1 store i32 1660944387, ptr %opcode.i.i.i1147, align 8, !tbaa !77 %arrayidx21.i.i.i1148 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1546, i64 %idxprom.i.i.i.i1073 store i64 %1516, ptr %arrayidx21.i.i.i1148, align 8, !tbaa !80 br label %if.end22.i.i.i1145, !amdgpu.uniform !42 Flow3613: ; preds = %if.end22.i.i.i1145, %Flow3612 %1547 = phi i32 [ %1534, %if.end22.i.i.i1145 ], [ %retval.sroa.8.0.i.i.i1058, %Flow3612 ] %1548 = phi i64 [ %1516, %if.end22.i.i.i1145 ], [ %retval.sroa.2.0.i.i.i1057, %Flow3612 ] %1549 = phi i32 [ %spec.store.select.i.i.i1061, %if.end22.i.i.i1145 ], [ %retval.sroa.6.0.i.i.i1055, %Flow3612 ] br label %cleanup26.i.i.i1084, !amdgpu.uniform !42 if.end22.i.i.i1145: ; preds = %if.then16.i.i.i1146, %if.end14.i.i.i1141 call void @llvm.amdgcn.end.cf.i64(i64 %1545) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3613, !amdgpu.uniform !42 Flow3614: ; preds = %cleanup26.i.i.i1084, %1523 %1550 = phi i32 [ %1549, %cleanup26.i.i.i1084 ], [ %1512, %1523 ] %1551 = phi i64 [ %1548, %cleanup26.i.i.i1084 ], [ %1513, %1523 ] %1552 = phi i32 [ %1547, %cleanup26.i.i.i1084 ], [ %1514, %1523 ] %1553 = phi i32 [ %1547, %cleanup26.i.i.i1084 ], [ %retval.sroa.8.0.i.i.i1058, %1523 ] %1554 = phi i64 [ %1548, %cleanup26.i.i.i1084 ], [ %retval.sroa.2.0.i.i.i1057, %1523 ] %1555 = phi i32 [ %1549, %cleanup26.i.i.i1084 ], [ %retval.sroa.6.0.i.i.i1055, %1523 ] %1556 = phi i1 [ %cmp.i46.not.i.i.i1076, %cleanup26.i.i.i1084 ], [ true, %1523 ] br i1 %1556, label %for.inc.i.i.i1089, label %Flow3615, !amdgpu.uniform !42 cleanup26.i.i.i1084: ; preds = %Flow3613 br label %Flow3614, !amdgpu.uniform !42 for.inc.i.i.i1089: ; preds = %Flow3614 %inc.i.i.i1094 = add i32 %spec.store.select.i.i.i1061, 1 br label %Flow3615, !amdgpu.uniform !42 Flow3615: ; preds = %for.inc.i.i.i1089, %Flow3614 %1557 = phi i32 [ %inc.i.i.i1094, %for.inc.i.i.i1089 ], [ poison, %Flow3614 ] %1558 = phi i1 [ false, %for.inc.i.i.i1089 ], [ true, %Flow3614 ] br i1 %1558, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1095, label %for.cond.i.i.i1054, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1095: ; preds = %Flow3615 %.lcssa4074 = phi i32 [ %1550, %Flow3615 ] %.lcssa4073 = phi i64 [ %1551, %Flow3615 ] %.lcssa4072 = phi i32 [ %1552, %Flow3615 ] fence acquire %1559 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i1096 = shl i32 %.lcssa4074, 6 %idxprom.i19.i.i.i.i.i1097 = zext i32 %mul.i.i.i.i.i.i1096 to i64 %arrayidx.i20.i.i.i.i.i1098 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %1559, i64 %idxprom.i19.i.i.i.i.i1097 %arrayidx.i22.i.i.i.i.i1099 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i1098, i64 %sh_prom.i.i.i.i store i64 1, ptr %arrayidx.i22.i.i.i.i.i1099, align 8, !tbaa !82 %arrayidx6.i.i.i.i.i.i.i1100 = getelementptr inbounds nuw i8, ptr %arrayidx.i22.i.i.i.i.i1099, i64 8 store i8 10, ptr %arrayidx6.i.i.i.i.i.i.i1100, align 8 %tobool.not.i.i.i.i.i.i1101 = icmp eq i32 %.lcssa4072, 0 %conv.i.i.i.i.i.i1102 = zext i1 %tobool.not.i.i.i.i.i.i1101 to i32 fence release %1560 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i1103 = zext i32 %.lcssa4074 to i64 %arrayidx.i24.i.i.i.i.i1104 = getelementptr inbounds nuw i32, ptr %1560, i64 %idxprom.i23.i.i.i.i.i1103 store atomic i32 %conv.i.i.i.i.i.i1102, ptr %arrayidx.i24.i.i.i.i.i1104 monotonic, align 4 %1561 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i1105 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1561, i64 %idxprom.i23.i.i.i.i.i1103, !amdgpu.uniform !42 %1562 = load i64, ptr %arrayidx.i.i5.i.i1105, align 8, !tbaa !80 br label %while.cond.i.i.i.i1106, !amdgpu.uniform !42 while.cond.i.i.i.i1106: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1095, %Flow3611 %phi.broken3930 = phi i64 [ 0, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1095 ], [ %1577, %Flow3611 ] %port.sroa.37.0.i.i1107 = phi i32 [ %1575, %Flow3611 ], [ %conv.i.i.i.i.i.i1102, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1095 ] %idx.0.i.i.i.i1108 = phi i64 [ %1574, %Flow3611 ], [ 56, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1095 ] %cmp.i.i.i.i1109 = icmp eq i64 %idx.0.i.i.i.i1108, 0 %1563 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i1109) %and.i.i.i.i6.i.i1110 = and i64 %1563, %1562 %tobool.not.i.i.i.i1111 = icmp ne i64 %and.i.i.i.i6.i.i1110, 0 %1564 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i1112 = getelementptr inbounds nuw i32, ptr %1564, i64 %idxprom.i23.i.i.i.i.i1103, !amdgpu.uniform !42 %1565 = load atomic i32, ptr %arrayidx.i22.i.i.i1112 monotonic, align 4 %1566 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i1111) %1567 = extractvalue { i1, i64 } %1566, 0 %1568 = extractvalue { i1, i64 } %1566, 1 br i1 %1567, label %cond.false.i8.i.i.i.i1113, label %Flow3611 cond.false.i8.i.i.i.i1113: ; preds = %while.cond.i.i.i.i1106 %1569 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1565) %1570 = icmp ne i32 %1569, %port.sroa.37.0.i.i1107 br i1 %1570, label %while.body.i.i21.i.i.i.i1114.preheader, label %Flow3610, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1114.preheader: ; preds = %cond.false.i8.i.i.i.i1113 br label %while.body.i.i21.i.i.i.i1114, !amdgpu.uniform !42 Flow3610: ; preds = %Flow3608, %cond.false.i8.i.i.i.i1113 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1117, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1114: ; preds = %while.body.i.i21.i.i.i.i1114.preheader, %while.body.i.i21.i.i.i.i1114 tail call void @llvm.amdgcn.s.sleep(i32 2) %1571 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i1115 = getelementptr inbounds nuw i32, ptr %1571, i64 %idxprom.i23.i.i.i.i.i1103, !amdgpu.uniform !42 %1572 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i1115 monotonic, align 4 %1573 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1572) %cmp.i.not.i.i23.i.i.i.i1116 = icmp eq i32 %1573, %port.sroa.37.0.i.i1107 br i1 %cmp.i.not.i.i23.i.i.i.i1116, label %Flow3608, label %while.body.i.i21.i.i.i.i1114, !amdgpu.uniform !42 Flow3608: ; preds = %while.body.i.i21.i.i.i.i1114 br label %Flow3610, !amdgpu.uniform !42 Flow3611: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1118, %while.cond.i.i.i.i1106 %1574 = phi i64 [ %add.i.i.i.i1121, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1118 ], [ poison, %while.cond.i.i.i.i1106 ] %1575 = phi i32 [ %conv.i.i26.i.i.i.i1119, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1118 ], [ poison, %while.cond.i.i.i.i1106 ] %1576 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1118 ], [ true, %while.cond.i.i.i.i1106 ] call void @llvm.amdgcn.end.cf.i64(i64 %1568) %1577 = call i64 @llvm.amdgcn.if.break.i64(i1 %1576, i64 %phi.broken3930) %1578 = call i1 @llvm.amdgcn.loop.i64(i64 %1577) br i1 %1578, label %cond.false.i.i.i1127, label %while.cond.i.i.i.i1106 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1117: ; preds = %Flow3610 fence acquire br i1 %cmp.i.i.i.i1109, label %if.then.i.i.i.i.i.i.i1122, label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1118, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i1122: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1117 %1579 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %arrayidx.i20.i35.i.i.i.i1125 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %1579, i64 %idxprom.i19.i.i.i.i.i1097 %arrayidx.i22.i38.i.i.i.i1126 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i1125, i64 %sh_prom.i.i.i.i store i8 10, ptr %arrayidx.i22.i38.i.i.i.i1126, align 1 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1118, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1118: ; preds = %if.then.i.i.i.i.i.i.i1122, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1117 %conv.i.i26.i.i.i.i1119 = xor i32 %port.sroa.37.0.i.i1107, 1 fence release %1580 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i1120 = getelementptr inbounds nuw i32, ptr %1580, i64 %idxprom.i23.i.i.i.i.i1103 store atomic i32 %conv.i.i26.i.i.i.i1119, ptr %arrayidx.i24.i29.i.i.i.i1120 monotonic, align 4 %add.i.i.i.i1121 = add i64 %idx.0.i.i.i.i1108, 64 br label %Flow3611, !amdgpu.uniform !42 cond.false.i.i.i1127: ; preds = %Flow3611 %.lcssa4068 = phi i64 [ %1577, %Flow3611 ] %port.sroa.37.0.i.i1107.lcssa = phi i32 [ %port.sroa.37.0.i.i1107, %Flow3611 ] %.lcssa4067 = phi i32 [ %1565, %Flow3611 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4068) %1581 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa4067) %1582 = icmp ne i32 %1581, %port.sroa.37.0.i.i1107.lcssa %1583 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1582) %1584 = extractvalue { i1, i64 } %1583, 0 %1585 = extractvalue { i1, i64 } %1583, 1 br i1 %1584, label %while.body.i.i.i.i1128.preheader, label %Flow3607 while.body.i.i.i.i1128.preheader: ; preds = %cond.false.i.i.i1127 br label %while.body.i.i.i.i1128, !amdgpu.uniform !42 Flow3607: ; preds = %Flow3605, %cond.false.i.i.i1127 call void @llvm.amdgcn.end.cf.i64(i64 %1585) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit1149, !amdgpu.uniform !42 while.body.i.i.i.i1128: ; preds = %while.body.i.i.i.i1128.preheader, %while.body.i.i.i.i1128 %phi.broken3931 = phi i64 [ 0, %while.body.i.i.i.i1128.preheader ], [ %1589, %while.body.i.i.i.i1128 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %1586 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i1129 = getelementptr inbounds nuw i32, ptr %1586, i64 %idxprom.i23.i.i.i.i.i1103, !amdgpu.uniform !42 %1587 = load atomic i32, ptr %arrayidx.i.i.i8.i.i1129 monotonic, align 4 %1588 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1587) %cmp.i.not.i.i.i.i1130 = icmp eq i32 %1588, %port.sroa.37.0.i.i1107.lcssa %1589 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i1130, i64 %phi.broken3931) %1590 = call i1 @llvm.amdgcn.loop.i64(i64 %1589) br i1 %1590, label %Flow3605, label %while.body.i.i.i.i1128 Flow3605: ; preds = %while.body.i.i.i.i1128 %.lcssa4066 = phi i64 [ %1589, %while.body.i.i.i.i1128 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4066) br label %Flow3607, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit1149: ; preds = %Flow3607 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %1591 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4073, i1 true) %iszero.i.i.i.i.i13.i.i1132 = icmp ne i64 %.lcssa4073, 0 %cmp2.i.i.i.i14.i.i1133 = icmp eq i64 %1591, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i1134 = select i1 %iszero.i.i.i.i.i13.i.i1132, i1 %cmp2.i.i.i.i14.i.i1133, i1 false %1592 = and i32 %.lcssa4074, 31 %conv4.i.i.i19.i.i1138 = zext i1 %cmp.i.i.i.i15.i.i1134 to i32 %shl.i.i.i20.i.i1139 = shl nuw i32 %conv4.i.i.i19.i.i1138, %1592 %xor.i.i.i21.i.i1140 = xor i32 %shl.i.i.i20.i.i1139, -1 %1593 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2574, !amdgpu.uniform !42 1594: ; preds = %ComputeEnd2575 %div8.i.i.i16.i.i1135 = lshr i32 %.lcssa4074, 5 %idxprom.i.i.i17.i.i1136 = zext nneg i32 %div8.i.i.i16.i.i1135 to i64 %1595 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i1136 %sunkaddr3308 = getelementptr inbounds i8, ptr addrspace(1) %1595, i64 40 %1596 = atomicrmw and ptr addrspace(1) %sunkaddr3308, i32 %.lcssa4065 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1597, !amdgpu.uniform !42 1597: ; preds = %1594, %ComputeEnd2575 call void @llvm.amdgcn.end.cf.i64(i64 %3569) tail call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i1.i1158, !amdgpu.uniform !42 for.cond.i.i1.i1158: ; preds = %1597, %Flow3604 %1598 = phi i32 [ %1636, %Flow3604 ], [ poison, %1597 ] %1599 = phi i64 [ %1637, %Flow3604 ], [ poison, %1597 ] %1600 = phi i32 [ %1638, %Flow3604 ], [ poison, %1597 ] %retval.sroa.6.0.i.i.i1159 = phi i32 [ %1641, %Flow3604 ], [ undef, %1597 ] %retval.sroa.2.0.i.i.i1161 = phi i64 [ %1640, %Flow3604 ], [ undef, %1597 ] %retval.sroa.8.0.i.i.i1162 = phi i32 [ %1639, %Flow3604 ], [ undef, %1597 ] %index.0.i.i.i1163 = phi i32 [ %1643, %Flow3604 ], [ 0, %1597 ] %1601 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i1164 = icmp ult i32 %index.0.i.i.i1163, %1601 %spec.store.select.i.i.i1165 = select i1 %cmp.not.i.i.i1164, i32 %index.0.i.i.i1163, i32 0 %1602 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %1603 = and i32 %spec.store.select.i.i.i1165, 31 %1604 = lshr i64 %1602, %sh_prom.i.i.i.i %1605 = trunc i64 %1604 to i32 %conv4.i.i.i.i.i1169 = and i32 %1605, 1 %shl.i.i.i.i.i1170 = shl nuw i32 %conv4.i.i.i.i.i1169, %1603 %1606 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2578, !amdgpu.uniform !42 1607: ; preds = %ComputeEnd2579 %sunkaddr3309 = getelementptr inbounds i8, ptr addrspace(1) %3579, i64 40 %1608 = atomicrmw or ptr addrspace(1) %sunkaddr3309, i32 %.lcssa4059 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1609, !amdgpu.uniform !42 1609: ; preds = %1607, %ComputeEnd2579 %1610 = phi i32 [ %1608, %1607 ], [ poison, %ComputeEnd2579 ] call void @llvm.amdgcn.end.cf.i64(i64 %3588) %1611 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %1610) %1612 = or i32 %1611, %.lcssa4060 %shl5.i.i.i.i.i1171 = shl nuw i32 1, %1603 %and.i.i.i.i.i1172 = and i32 %shl5.i.i.i.i.i1171, %1612 %tobool3.i.i.i.i1173 = icmp ne i32 %and.i.i.i.i.i1172, 0 %1613 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i1173) %and.i.i.i.i.i.i1174 = and i64 %1613, %1602 %cmp.i.not.i.i.i1175 = icmp ne i64 %1602, %and.i.i.i.i.i.i1174 br i1 %cmp.i.not.i.i.i1175, label %if.then.i.i.i.i1176, label %Flow3603, !amdgpu.uniform !42 if.then.i.i.i.i1176: ; preds = %1609 fence syncscope("agent") acquire %1614 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %1615 = extractelement <2 x i64> %1614, i32 0 %1616 = inttoptr i64 %1615 to ptr %1617 = extractelement <2 x i64> %1614, i32 1 %1618 = inttoptr i64 %1617 to ptr %idxprom.i.i.i.i1177 = zext i32 %spec.store.select.i.i.i1165 to i64 %arrayidx.i.i.i.i1178 = getelementptr inbounds nuw i32, ptr %1616, i64 %idxprom.i.i.i.i1177, !amdgpu.uniform !42 %1619 = load atomic i32, ptr %arrayidx.i.i.i.i1178 monotonic, align 4 %1620 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1619) %arrayidx.i45.i.i.i1179 = getelementptr inbounds nuw i32, ptr %1618, i64 %idxprom.i.i.i.i1177, !amdgpu.uniform !42 %1621 = load atomic i32, ptr %arrayidx.i45.i.i.i1179 monotonic, align 4 %1622 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1621) %cmp.i46.not.i.i.i1180 = icmp ne i32 %1620, %1622 br i1 %cmp.i46.not.i.i.i1180, label %if.then12.i.i.i1181, label %Flow3601, !amdgpu.uniform !42 if.then12.i.i.i1181: ; preds = %if.then.i.i.i.i1176 fence syncscope("agent") release %1623 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1602, i1 true) %iszero.i.i.i.i.i.i.i1182 = icmp ne i64 %1602, 0 %cmp2.i.i.i.i.i.i1183 = icmp eq i64 %1623, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i1184 = select i1 %iszero.i.i.i.i.i.i.i1182, i1 %cmp2.i.i.i.i.i.i1183, i1 false %conv4.i.i51.i.i.i1185 = zext i1 %cmp.i.i.i.i.i.i1184 to i32 %shl.i.i52.i.i.i1186 = shl nuw i32 %conv4.i.i51.i.i.i1185, %1603 %xor.i.i.i.i.i1187 = xor i32 %shl.i.i52.i.i.i1186, -1 %1624 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2583, !amdgpu.uniform !42 1625: ; preds = %ComputeEnd2584 %sunkaddr3310 = getelementptr inbounds i8, ptr addrspace(1) %3579, i64 40 %1626 = atomicrmw and ptr addrspace(1) %sunkaddr3310, i32 %.lcssa4061 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1627, !amdgpu.uniform !42 1627: ; preds = %1625, %ComputeEnd2584 call void @llvm.amdgcn.end.cf.i64(i64 %3606) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3601, !amdgpu.uniform !42 if.end14.i.i.i1247: ; preds = %Flow3601 %1628 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1602, i1 true) %iszero.i.i.i.i.i.i1248 = icmp ne i64 %1602, 0 %cmp2.i.i.i.i.i1249 = icmp eq i64 %1628, %sh_prom.i.i.i.i %cmp.i.i.i.i.i1250 = select i1 %iszero.i.i.i.i.i.i1248, i1 %cmp2.i.i.i.i.i1249, i1 false %1629 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i1250) %1630 = extractvalue { i1, i64 } %1629, 0 %1631 = extractvalue { i1, i64 } %1629, 1 br i1 %1630, label %if.then16.i.i.i1252, label %if.end22.i.i.i1251 if.then16.i.i.i1252: ; preds = %if.end14.i.i.i1247 %1632 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i1253 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1632, i64 %idxprom.i.i.i.i1177, i32 1 store i32 1660944387, ptr %opcode.i.i.i1253, align 8, !tbaa !77 %arrayidx21.i.i.i1254 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1632, i64 %idxprom.i.i.i.i1177 store i64 %1602, ptr %arrayidx21.i.i.i1254, align 8, !tbaa !80 br label %if.end22.i.i.i1251, !amdgpu.uniform !42 Flow3602: ; preds = %if.end22.i.i.i1251, %Flow3601 %1633 = phi i32 [ %1620, %if.end22.i.i.i1251 ], [ %retval.sroa.8.0.i.i.i1162, %Flow3601 ] %1634 = phi i64 [ %1602, %if.end22.i.i.i1251 ], [ %retval.sroa.2.0.i.i.i1161, %Flow3601 ] %1635 = phi i32 [ %spec.store.select.i.i.i1165, %if.end22.i.i.i1251 ], [ %retval.sroa.6.0.i.i.i1159, %Flow3601 ] br label %cleanup26.i.i.i1188, !amdgpu.uniform !42 if.end22.i.i.i1251: ; preds = %if.then16.i.i.i1252, %if.end14.i.i.i1247 call void @llvm.amdgcn.end.cf.i64(i64 %1631) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3602, !amdgpu.uniform !42 Flow3603: ; preds = %cleanup26.i.i.i1188, %1609 %1636 = phi i32 [ %1635, %cleanup26.i.i.i1188 ], [ %1598, %1609 ] %1637 = phi i64 [ %1634, %cleanup26.i.i.i1188 ], [ %1599, %1609 ] %1638 = phi i32 [ %1633, %cleanup26.i.i.i1188 ], [ %1600, %1609 ] %1639 = phi i32 [ %1633, %cleanup26.i.i.i1188 ], [ %retval.sroa.8.0.i.i.i1162, %1609 ] %1640 = phi i64 [ %1634, %cleanup26.i.i.i1188 ], [ %retval.sroa.2.0.i.i.i1161, %1609 ] %1641 = phi i32 [ %1635, %cleanup26.i.i.i1188 ], [ %retval.sroa.6.0.i.i.i1159, %1609 ] %1642 = phi i1 [ %cmp.i46.not.i.i.i1180, %cleanup26.i.i.i1188 ], [ true, %1609 ] br i1 %1642, label %for.inc.i.i.i1193, label %Flow3604, !amdgpu.uniform !42 cleanup26.i.i.i1188: ; preds = %Flow3602 br label %Flow3603, !amdgpu.uniform !42 for.inc.i.i.i1193: ; preds = %Flow3603 %inc.i.i.i1198 = add i32 %spec.store.select.i.i.i1165, 1 br label %Flow3604, !amdgpu.uniform !42 Flow3604: ; preds = %for.inc.i.i.i1193, %Flow3603 %1643 = phi i32 [ %inc.i.i.i1198, %for.inc.i.i.i1193 ], [ poison, %Flow3603 ] %1644 = phi i1 [ false, %for.inc.i.i.i1193 ], [ true, %Flow3603 ] br i1 %1644, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1199, label %for.cond.i.i1.i1158, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1199: ; preds = %Flow3604 %.lcssa4064 = phi i32 [ %1636, %Flow3604 ] %.lcssa4063 = phi i64 [ %1637, %Flow3604 ] %.lcssa4062 = phi i32 [ %1638, %Flow3604 ] fence acquire %1645 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i1200 = shl i32 %.lcssa4064, 6 %idxprom.i19.i.i.i.i.i1201 = zext i32 %mul.i.i.i.i.i.i1200 to i64 %arrayidx.i20.i.i.i.i.i1202 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %1645, i64 %idxprom.i19.i.i.i.i.i1201 %arrayidx.i22.i.i.i.i.i1203 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i1202, i64 %sh_prom.i.i.i.i store i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.36.13 to ptr), i64 6) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.36.13 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i1203, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i1204 = tail call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.36.13 to ptr), i64 6) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.36.13 to ptr) to i64)), i64 56) %1646 = and i64 %spec.select.i.i.i.i.i.i.i1204, 15 %1647 = sub i64 %spec.select.i.i.i.i.i.i.i1204, %1646 %1648 = icmp ne i64 %1647, 0 br i1 %1648, label %loop-memcpy-expansion2386.preheader, label %Flow3600, !amdgpu.uniform !42 loop-memcpy-expansion2386.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1199 %1649 = add nuw nsw i64 %75, 8 %scevgep3011 = getelementptr i8, ptr %1645, i64 %1649 %1650 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1201, 6 %scevgep3012 = getelementptr i8, ptr %scevgep3011, i64 %1650 br label %loop-memcpy-expansion2386, !amdgpu.uniform !42 Flow3600: ; preds = %Flow3599, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1199 br label %loop-memcpy-residual-header2389, !amdgpu.uniform !42 loop-memcpy-expansion2386: ; preds = %loop-memcpy-expansion2386.preheader, %loop-memcpy-expansion2386 %loop-index2387 = phi i64 [ %1653, %loop-memcpy-expansion2386 ], [ 0, %loop-memcpy-expansion2386.preheader ] %1651 = getelementptr i8, ptr addrspace(4) @.str.36.13, i64 %loop-index2387, !amdgpu.uniform !42 %1652 = load <4 x i32>, ptr addrspace(4) %1651, align 1 %scevgep3013 = getelementptr i8, ptr %scevgep3012, i64 %loop-index2387 store <4 x i32> %1652, ptr %scevgep3013, align 1 %1653 = add i64 %loop-index2387, 16 %1654 = icmp uge i64 %1653, %1647 br i1 %1654, label %Flow3599, label %loop-memcpy-expansion2386, !amdgpu.uniform !42 Flow3597: ; preds = %Flow3594, %Flow3596 %1655 = phi i64 [ %2896, %Flow3594 ], [ %2893, %Flow3596 ] br label %post-loop-memcpy-expansion2385, !amdgpu.uniform !42 loop-memcpy-residual2388: ; preds = %loop-memcpy-residual2388.preheader, %loop-memcpy-residual2388 %residual-loop-index2390 = phi i64 [ %1657, %loop-memcpy-residual2388 ], [ 0, %loop-memcpy-residual2388.preheader ] %scevgep3010 = getelementptr i8, ptr addrspace(4) @.str.36.13, i64 %residual-loop-index2390, !amdgpu.uniform !42 %1656 = load i8, ptr addrspace(4) %scevgep3010, align 1 %scevgep3009 = getelementptr i8, ptr %scevgep3008, i64 %residual-loop-index2390 store i8 %1656, ptr %scevgep3009, align 1 %1657 = add i64 %residual-loop-index2390, 1 %1658 = icmp uge i64 %1657, %1646 br i1 %1658, label %Flow3594, label %loop-memcpy-residual2388, !amdgpu.uniform !42 Flow3594: ; preds = %loop-memcpy-residual2388 br label %Flow3597, !amdgpu.uniform !42 post-loop-memcpy-expansion2385: ; preds = %Flow3597 %tobool.not.i.i.i.i.i.i1206 = icmp eq i32 %.lcssa4062, 0 %conv.i.i.i.i.i.i1207 = zext i1 %tobool.not.i.i.i.i.i.i1206 to i32 fence release %1659 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i1208 = zext i32 %.lcssa4064 to i64 %arrayidx.i24.i.i.i.i.i1209 = getelementptr inbounds nuw i32, ptr %1659, i64 %idxprom.i23.i.i.i.i.i1208 store atomic i32 %conv.i.i.i.i.i.i1207, ptr %arrayidx.i24.i.i.i.i.i1209 monotonic, align 4 %1660 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i1210 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1660, i64 %idxprom.i23.i.i.i.i.i1208, !amdgpu.uniform !42 %1661 = load i64, ptr %arrayidx.i.i5.i.i1210, align 8, !tbaa !80 br label %while.cond.i.i.i.i1211, !amdgpu.uniform !42 while.cond.i.i.i.i1211: ; preds = %post-loop-memcpy-expansion2385, %Flow3592 %phi.broken3932 = phi i64 [ 0, %post-loop-memcpy-expansion2385 ], [ %1678, %Flow3592 ] %lsr.iv3000 = phi i64 [ %1676, %Flow3592 ], [ -50, %post-loop-memcpy-expansion2385 ] %lsr.iv2995 = phi ptr addrspace(4) [ %1675, %Flow3592 ], [ getelementptr (i8, ptr addrspace(4) @.str.36.13, i64 56), %post-loop-memcpy-expansion2385 ] %port.sroa.37.0.i.i1212 = phi i32 [ %1674, %Flow3592 ], [ %conv.i.i.i.i.i.i1207, %post-loop-memcpy-expansion2385 ] %idx.0.i.i.i.i1213 = phi i64 [ %1673, %Flow3592 ], [ 56, %post-loop-memcpy-expansion2385 ] %cmp.i.i.i.i1214 = icmp ult i64 %idx.0.i.i.i.i1213, sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.36.13 to ptr), i64 6) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.36.13 to ptr) to i64)) %1662 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i1214) %and.i.i.i.i6.i.i1215 = and i64 %1662, %1661 %tobool.not.i.i.i.i1216 = icmp ne i64 %and.i.i.i.i6.i.i1215, 0 %1663 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i1217 = getelementptr inbounds nuw i32, ptr %1663, i64 %idxprom.i23.i.i.i.i.i1208, !amdgpu.uniform !42 %1664 = load atomic i32, ptr %arrayidx.i22.i.i.i1217 monotonic, align 4 %1665 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i1216) %1666 = extractvalue { i1, i64 } %1665, 0 %1667 = extractvalue { i1, i64 } %1665, 1 br i1 %1666, label %cond.false.i8.i.i.i.i1218, label %Flow3592 cond.false.i8.i.i.i.i1218: ; preds = %while.cond.i.i.i.i1211 %1668 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1664) %1669 = icmp ne i32 %1668, %port.sroa.37.0.i.i1212 br i1 %1669, label %while.body.i.i21.i.i.i.i1219.preheader, label %Flow3591, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1219.preheader: ; preds = %cond.false.i8.i.i.i.i1218 br label %while.body.i.i21.i.i.i.i1219, !amdgpu.uniform !42 Flow3591: ; preds = %Flow3589, %cond.false.i8.i.i.i.i1218 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1222, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1219: ; preds = %while.body.i.i21.i.i.i.i1219.preheader, %while.body.i.i21.i.i.i.i1219 tail call void @llvm.amdgcn.s.sleep(i32 2) %1670 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i1220 = getelementptr inbounds nuw i32, ptr %1670, i64 %idxprom.i23.i.i.i.i.i1208, !amdgpu.uniform !42 %1671 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i1220 monotonic, align 4 %1672 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1671) %cmp.i.not.i.i23.i.i.i.i1221 = icmp eq i32 %1672, %port.sroa.37.0.i.i1212 br i1 %cmp.i.not.i.i23.i.i.i.i1221, label %Flow3589, label %while.body.i.i21.i.i.i.i1219, !amdgpu.uniform !42 Flow3589: ; preds = %while.body.i.i21.i.i.i.i1219 br label %Flow3591, !amdgpu.uniform !42 Flow3592: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1223, %while.cond.i.i.i.i1211 %1673 = phi i64 [ %add.i.i.i.i1226, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1223 ], [ poison, %while.cond.i.i.i.i1211 ] %1674 = phi i32 [ %conv.i.i26.i.i.i.i1224, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1223 ], [ poison, %while.cond.i.i.i.i1211 ] %1675 = phi ptr addrspace(4) [ %scevgep2996, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1223 ], [ poison, %while.cond.i.i.i.i1211 ] %1676 = phi i64 [ %lsr.iv.next3001, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1223 ], [ poison, %while.cond.i.i.i.i1211 ] %1677 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1223 ], [ true, %while.cond.i.i.i.i1211 ] call void @llvm.amdgcn.end.cf.i64(i64 %1667) %1678 = call i64 @llvm.amdgcn.if.break.i64(i1 %1677, i64 %phi.broken3932) %1679 = call i1 @llvm.amdgcn.loop.i64(i64 %1678) br i1 %1679, label %cond.false.i.i.i1233, label %while.cond.i.i.i.i1211 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1222: ; preds = %Flow3591 fence acquire br i1 %cmp.i.i.i.i1214, label %if.then.i.i.i.i.i.i.i1227, label %Flow3588, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i1227: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1222 %sub.i.i.i.i.i.i.i1229 = sub nuw i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.36.13 to ptr), i64 6) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.36.13 to ptr) to i64)), %idx.0.i.i.i.i1213 %spec.select.i.i.i36.i.i.i.i1230 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i1229, i64 64) %1680 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %1681 = and i64 %spec.select.i.i.i36.i.i.i.i1230, 15 %1682 = sub i64 %spec.select.i.i.i36.i.i.i.i1230, %1681 %1683 = icmp ne i64 %1682, 0 br i1 %1683, label %loop-memcpy-expansion2392.preheader, label %Flow3587, !amdgpu.uniform !42 loop-memcpy-expansion2392.preheader: ; preds = %if.then.i.i.i.i.i.i.i1227 %arrayidx.i20.i35.i.i.i.i1231 = getelementptr %"struct.rpc::Buffer", ptr %1680, i64 %idxprom.i19.i.i.i.i.i1201 %arrayidx.i22.i38.i.i.i.i1232 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i1231, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2392, !amdgpu.uniform !42 Flow3587: ; preds = %Flow3586, %if.then.i.i.i.i.i.i.i1227 br label %loop-memcpy-residual-header2395, !amdgpu.uniform !42 loop-memcpy-expansion2392: ; preds = %loop-memcpy-expansion2392.preheader, %loop-memcpy-expansion2392 %loop-index2393 = phi i64 [ %1686, %loop-memcpy-expansion2392 ], [ 0, %loop-memcpy-expansion2392.preheader ] %scevgep2997 = getelementptr i8, ptr addrspace(4) %lsr.iv2995, i64 %loop-index2393, !amdgpu.uniform !42 %1684 = load <4 x i32>, ptr addrspace(4) %scevgep2997, align 1 %1685 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i1232, i64 %loop-index2393 store <4 x i32> %1684, ptr %1685, align 1 %1686 = add i64 %loop-index2393, 16 %1687 = icmp uge i64 %1686, %1682 br i1 %1687, label %Flow3586, label %loop-memcpy-expansion2392, !amdgpu.uniform !42 Flow3584: ; preds = %Flow3583, %loop-memcpy-residual-header2395 br label %Flow3588, !amdgpu.uniform !42 loop-memcpy-residual2394: ; preds = %loop-memcpy-residual2394.preheader, %loop-memcpy-residual2394 %residual-loop-index2396 = phi i64 [ %1689, %loop-memcpy-residual2394 ], [ 0, %loop-memcpy-residual2394.preheader ] %scevgep3006 = getelementptr i8, ptr addrspace(4) %scevgep3005, i64 %residual-loop-index2396, !amdgpu.uniform !42 %1688 = load i8, ptr addrspace(4) %scevgep3006, align 1 %scevgep3004 = getelementptr i8, ptr %scevgep3003, i64 %residual-loop-index2396 store i8 %1688, ptr %scevgep3004, align 1 %1689 = add i64 %residual-loop-index2396, 1 %1690 = icmp uge i64 %1689, %1681 br i1 %1690, label %Flow3583, label %loop-memcpy-residual2394, !amdgpu.uniform !42 Flow3583: ; preds = %loop-memcpy-residual2394 br label %Flow3584, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1223: ; preds = %Flow3588 %conv.i.i26.i.i.i.i1224 = xor i32 %port.sroa.37.0.i.i1212, 1 fence release %1691 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i1225 = getelementptr inbounds nuw i32, ptr %1691, i64 %idxprom.i23.i.i.i.i.i1208 store atomic i32 %conv.i.i26.i.i.i.i1224, ptr %arrayidx.i24.i29.i.i.i.i1225 monotonic, align 4 %add.i.i.i.i1226 = add i64 %idx.0.i.i.i.i1213, 64 %scevgep2996 = getelementptr i8, ptr addrspace(4) %lsr.iv2995, i64 64 %lsr.iv.next3001 = add i64 %lsr.iv3000, -64 br label %Flow3592, !amdgpu.uniform !42 cond.false.i.i.i1233: ; preds = %Flow3592 %.lcssa4058 = phi i64 [ %1678, %Flow3592 ] %port.sroa.37.0.i.i1212.lcssa = phi i32 [ %port.sroa.37.0.i.i1212, %Flow3592 ] %.lcssa4057 = phi i32 [ %1664, %Flow3592 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4058) %1692 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa4057) %1693 = icmp ne i32 %1692, %port.sroa.37.0.i.i1212.lcssa %1694 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1693) %1695 = extractvalue { i1, i64 } %1694, 0 %1696 = extractvalue { i1, i64 } %1694, 1 br i1 %1695, label %while.body.i.i.i.i1234.preheader, label %Flow3581 while.body.i.i.i.i1234.preheader: ; preds = %cond.false.i.i.i1233 br label %while.body.i.i.i.i1234, !amdgpu.uniform !42 Flow3581: ; preds = %Flow3579, %cond.false.i.i.i1233 call void @llvm.amdgcn.end.cf.i64(i64 %1696) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1255, !amdgpu.uniform !42 while.body.i.i.i.i1234: ; preds = %while.body.i.i.i.i1234.preheader, %while.body.i.i.i.i1234 %phi.broken3933 = phi i64 [ 0, %while.body.i.i.i.i1234.preheader ], [ %1700, %while.body.i.i.i.i1234 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %1697 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i1235 = getelementptr inbounds nuw i32, ptr %1697, i64 %idxprom.i23.i.i.i.i.i1208, !amdgpu.uniform !42 %1698 = load atomic i32, ptr %arrayidx.i.i.i8.i.i1235 monotonic, align 4 %1699 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1698) %cmp.i.not.i.i.i.i1236 = icmp eq i32 %1699, %port.sroa.37.0.i.i1212.lcssa %1700 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i1236, i64 %phi.broken3933) %1701 = call i1 @llvm.amdgcn.loop.i64(i64 %1700) br i1 %1701, label %Flow3579, label %while.body.i.i.i.i1234 Flow3579: ; preds = %while.body.i.i.i.i1234 %.lcssa4056 = phi i64 [ %1700, %while.body.i.i.i.i1234 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4056) br label %Flow3581, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1255: ; preds = %Flow3581 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %1702 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4063, i1 true) %iszero.i.i.i.i.i13.i.i1238 = icmp ne i64 %.lcssa4063, 0 %cmp2.i.i.i.i14.i.i1239 = icmp eq i64 %1702, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i1240 = select i1 %iszero.i.i.i.i.i13.i.i1238, i1 %cmp2.i.i.i.i14.i.i1239, i1 false %1703 = and i32 %.lcssa4064, 31 %conv4.i.i.i19.i.i1244 = zext i1 %cmp.i.i.i.i15.i.i1240 to i32 %shl.i.i.i20.i.i1245 = shl nuw i32 %conv4.i.i.i19.i.i1244, %1703 %xor.i.i.i21.i.i1246 = xor i32 %shl.i.i.i20.i.i1245, -1 %1704 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2587, !amdgpu.uniform !42 1705: ; preds = %ComputeEnd2588 %div8.i.i.i16.i.i1241 = lshr i32 %.lcssa4064, 5 %idxprom.i.i.i17.i.i1242 = zext nneg i32 %div8.i.i.i16.i.i1241 to i64 %1706 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i1242 %sunkaddr3311 = getelementptr inbounds i8, ptr addrspace(1) %1706, i64 40 %1707 = atomicrmw and ptr addrspace(1) %sunkaddr3311, i32 %.lcssa4055 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1708, !amdgpu.uniform !42 1708: ; preds = %1705, %ComputeEnd2588 call void @llvm.amdgcn.end.cf.i64(i64 %3623) tail call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i.i1257, !amdgpu.uniform !42 for.cond.i.i.i1257: ; preds = %1708, %Flow3578 %1709 = phi i32 [ %1747, %Flow3578 ], [ poison, %1708 ] %1710 = phi i64 [ %1748, %Flow3578 ], [ poison, %1708 ] %1711 = phi i32 [ %1749, %Flow3578 ], [ poison, %1708 ] %retval.sroa.6.0.i.i.i1258 = phi i32 [ %1752, %Flow3578 ], [ undef, %1708 ] %retval.sroa.2.0.i.i.i1260 = phi i64 [ %1751, %Flow3578 ], [ undef, %1708 ] %retval.sroa.8.0.i.i.i1261 = phi i32 [ %1750, %Flow3578 ], [ undef, %1708 ] %index.0.i.i.i1262 = phi i32 [ %1754, %Flow3578 ], [ 0, %1708 ] %1712 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i1263 = icmp ult i32 %index.0.i.i.i1262, %1712 %spec.store.select.i.i.i1264 = select i1 %cmp.not.i.i.i1263, i32 %index.0.i.i.i1262, i32 0 %1713 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %1714 = and i32 %spec.store.select.i.i.i1264, 31 %1715 = lshr i64 %1713, %sh_prom.i.i.i.i %1716 = trunc i64 %1715 to i32 %conv4.i.i.i.i.i1268 = and i32 %1716, 1 %shl.i.i.i.i.i1269 = shl nuw i32 %conv4.i.i.i.i.i1268, %1714 %1717 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2591, !amdgpu.uniform !42 1718: ; preds = %ComputeEnd2592 %sunkaddr3312 = getelementptr inbounds i8, ptr addrspace(1) %3633, i64 40 %1719 = atomicrmw or ptr addrspace(1) %sunkaddr3312, i32 %.lcssa4049 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1720, !amdgpu.uniform !42 1720: ; preds = %1718, %ComputeEnd2592 %1721 = phi i32 [ %1719, %1718 ], [ poison, %ComputeEnd2592 ] call void @llvm.amdgcn.end.cf.i64(i64 %3642) %1722 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %1721) %1723 = or i32 %1722, %.lcssa4050 %shl5.i.i.i.i.i1270 = shl nuw i32 1, %1714 %and.i.i.i.i.i1271 = and i32 %shl5.i.i.i.i.i1270, %1723 %tobool3.i.i.i.i1272 = icmp ne i32 %and.i.i.i.i.i1271, 0 %1724 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i1272) %and.i.i.i.i.i.i1273 = and i64 %1724, %1713 %cmp.i.not.i.i.i1274 = icmp ne i64 %1713, %and.i.i.i.i.i.i1273 br i1 %cmp.i.not.i.i.i1274, label %if.then.i.i.i.i1275, label %Flow3577, !amdgpu.uniform !42 if.then.i.i.i.i1275: ; preds = %1720 fence syncscope("agent") acquire %1725 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %1726 = extractelement <2 x i64> %1725, i32 0 %1727 = inttoptr i64 %1726 to ptr %1728 = extractelement <2 x i64> %1725, i32 1 %1729 = inttoptr i64 %1728 to ptr %idxprom.i.i.i.i1276 = zext i32 %spec.store.select.i.i.i1264 to i64 %arrayidx.i.i.i.i1277 = getelementptr inbounds nuw i32, ptr %1727, i64 %idxprom.i.i.i.i1276, !amdgpu.uniform !42 %1730 = load atomic i32, ptr %arrayidx.i.i.i.i1277 monotonic, align 4 %1731 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1730) %arrayidx.i45.i.i.i1278 = getelementptr inbounds nuw i32, ptr %1729, i64 %idxprom.i.i.i.i1276, !amdgpu.uniform !42 %1732 = load atomic i32, ptr %arrayidx.i45.i.i.i1278 monotonic, align 4 %1733 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1732) %cmp.i46.not.i.i.i1279 = icmp ne i32 %1731, %1733 br i1 %cmp.i46.not.i.i.i1279, label %if.then12.i.i.i1280, label %Flow3575, !amdgpu.uniform !42 if.then12.i.i.i1280: ; preds = %if.then.i.i.i.i1275 fence syncscope("agent") release %1734 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1713, i1 true) %iszero.i.i.i.i.i.i.i1281 = icmp ne i64 %1713, 0 %cmp2.i.i.i.i.i.i1282 = icmp eq i64 %1734, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i1283 = select i1 %iszero.i.i.i.i.i.i.i1281, i1 %cmp2.i.i.i.i.i.i1282, i1 false %conv4.i.i51.i.i.i1284 = zext i1 %cmp.i.i.i.i.i.i1283 to i32 %shl.i.i52.i.i.i1285 = shl nuw i32 %conv4.i.i51.i.i.i1284, %1714 %xor.i.i.i.i.i1286 = xor i32 %shl.i.i52.i.i.i1285, -1 %1735 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2596, !amdgpu.uniform !42 1736: ; preds = %ComputeEnd2597 %sunkaddr3313 = getelementptr inbounds i8, ptr addrspace(1) %3633, i64 40 %1737 = atomicrmw and ptr addrspace(1) %sunkaddr3313, i32 %.lcssa4051 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1738, !amdgpu.uniform !42 1738: ; preds = %1736, %ComputeEnd2597 call void @llvm.amdgcn.end.cf.i64(i64 %3660) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3575, !amdgpu.uniform !42 if.end14.i.i.i1346: ; preds = %Flow3575 %1739 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1713, i1 true) %iszero.i.i.i.i.i.i1347 = icmp ne i64 %1713, 0 %cmp2.i.i.i.i.i1348 = icmp eq i64 %1739, %sh_prom.i.i.i.i %cmp.i.i.i.i.i1349 = select i1 %iszero.i.i.i.i.i.i1347, i1 %cmp2.i.i.i.i.i1348, i1 false %1740 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i1349) %1741 = extractvalue { i1, i64 } %1740, 0 %1742 = extractvalue { i1, i64 } %1740, 1 br i1 %1741, label %if.then16.i.i.i1351, label %if.end22.i.i.i1350 if.then16.i.i.i1351: ; preds = %if.end14.i.i.i1346 %1743 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i1352 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1743, i64 %idxprom.i.i.i.i1276, i32 1 store i32 1660944387, ptr %opcode.i.i.i1352, align 8, !tbaa !77 %arrayidx21.i.i.i1353 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1743, i64 %idxprom.i.i.i.i1276 store i64 %1713, ptr %arrayidx21.i.i.i1353, align 8, !tbaa !80 br label %if.end22.i.i.i1350, !amdgpu.uniform !42 Flow3576: ; preds = %if.end22.i.i.i1350, %Flow3575 %1744 = phi i32 [ %1731, %if.end22.i.i.i1350 ], [ %retval.sroa.8.0.i.i.i1261, %Flow3575 ] %1745 = phi i64 [ %1713, %if.end22.i.i.i1350 ], [ %retval.sroa.2.0.i.i.i1260, %Flow3575 ] %1746 = phi i32 [ %spec.store.select.i.i.i1264, %if.end22.i.i.i1350 ], [ %retval.sroa.6.0.i.i.i1258, %Flow3575 ] br label %cleanup26.i.i.i1287, !amdgpu.uniform !42 if.end22.i.i.i1350: ; preds = %if.then16.i.i.i1351, %if.end14.i.i.i1346 call void @llvm.amdgcn.end.cf.i64(i64 %1742) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3576, !amdgpu.uniform !42 Flow3577: ; preds = %cleanup26.i.i.i1287, %1720 %1747 = phi i32 [ %1746, %cleanup26.i.i.i1287 ], [ %1709, %1720 ] %1748 = phi i64 [ %1745, %cleanup26.i.i.i1287 ], [ %1710, %1720 ] %1749 = phi i32 [ %1744, %cleanup26.i.i.i1287 ], [ %1711, %1720 ] %1750 = phi i32 [ %1744, %cleanup26.i.i.i1287 ], [ %retval.sroa.8.0.i.i.i1261, %1720 ] %1751 = phi i64 [ %1745, %cleanup26.i.i.i1287 ], [ %retval.sroa.2.0.i.i.i1260, %1720 ] %1752 = phi i32 [ %1746, %cleanup26.i.i.i1287 ], [ %retval.sroa.6.0.i.i.i1258, %1720 ] %1753 = phi i1 [ %cmp.i46.not.i.i.i1279, %cleanup26.i.i.i1287 ], [ true, %1720 ] br i1 %1753, label %for.inc.i.i.i1292, label %Flow3578, !amdgpu.uniform !42 cleanup26.i.i.i1287: ; preds = %Flow3576 br label %Flow3577, !amdgpu.uniform !42 for.inc.i.i.i1292: ; preds = %Flow3577 %inc.i.i.i1297 = add i32 %spec.store.select.i.i.i1264, 1 br label %Flow3578, !amdgpu.uniform !42 Flow3578: ; preds = %for.inc.i.i.i1292, %Flow3577 %1754 = phi i32 [ %inc.i.i.i1297, %for.inc.i.i.i1292 ], [ poison, %Flow3577 ] %1755 = phi i1 [ false, %for.inc.i.i.i1292 ], [ true, %Flow3577 ] br i1 %1755, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1298, label %for.cond.i.i.i1257, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1298: ; preds = %Flow3578 %.lcssa4054 = phi i32 [ %1747, %Flow3578 ] %.lcssa4053 = phi i64 [ %1748, %Flow3578 ] %.lcssa4052 = phi i32 [ %1749, %Flow3578 ] fence acquire %1756 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i1299 = shl i32 %.lcssa4054, 6 %idxprom.i19.i.i.i.i.i1300 = zext i32 %mul.i.i.i.i.i.i1299 to i64 %arrayidx.i20.i.i.i.i.i1301 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %1756, i64 %idxprom.i19.i.i.i.i.i1300 %arrayidx.i22.i.i.i.i.i1302 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i1301, i64 %sh_prom.i.i.i.i store i64 sub (i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.9, i64 8) to ptr) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.9 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i1302, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i1303 = tail call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.9, i64 8) to ptr) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.9 to ptr) to i64)), i64 56) %1757 = and i64 %spec.select.i.i.i.i.i.i.i1303, 15 %1758 = sub i64 %spec.select.i.i.i.i.i.i.i1303, %1757 %1759 = icmp ne i64 %1758, 0 br i1 %1759, label %loop-memcpy-expansion2398.preheader, label %Flow3574, !amdgpu.uniform !42 loop-memcpy-expansion2398.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1298 %1760 = add nuw nsw i64 %75, 8 %scevgep2992 = getelementptr i8, ptr %1756, i64 %1760 %1761 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1300, 6 %scevgep2993 = getelementptr i8, ptr %scevgep2992, i64 %1761 br label %loop-memcpy-expansion2398, !amdgpu.uniform !42 Flow3574: ; preds = %Flow3573, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1298 br label %loop-memcpy-residual-header2401, !amdgpu.uniform !42 loop-memcpy-expansion2398: ; preds = %loop-memcpy-expansion2398.preheader, %loop-memcpy-expansion2398 %loop-index2399 = phi i64 [ %1764, %loop-memcpy-expansion2398 ], [ 0, %loop-memcpy-expansion2398.preheader ] %1762 = getelementptr i8, ptr addrspace(4) @.str.9, i64 %loop-index2399, !amdgpu.uniform !42 %1763 = load <4 x i32>, ptr addrspace(4) %1762, align 1 %scevgep2994 = getelementptr i8, ptr %scevgep2993, i64 %loop-index2399 store <4 x i32> %1763, ptr %scevgep2994, align 1 %1764 = add i64 %loop-index2399, 16 %1765 = icmp uge i64 %1764, %1758 br i1 %1765, label %Flow3573, label %loop-memcpy-expansion2398, !amdgpu.uniform !42 Flow3571: ; preds = %Flow3568, %Flow3570 %1766 = phi i64 [ %2907, %Flow3568 ], [ %2901, %Flow3570 ] br label %post-loop-memcpy-expansion2397, !amdgpu.uniform !42 loop-memcpy-residual2400: ; preds = %loop-memcpy-residual2400.preheader, %loop-memcpy-residual2400 %residual-loop-index2402 = phi i64 [ %1768, %loop-memcpy-residual2400 ], [ 0, %loop-memcpy-residual2400.preheader ] %scevgep2991 = getelementptr i8, ptr addrspace(4) %scevgep2990, i64 %residual-loop-index2402, !amdgpu.uniform !42 %1767 = load i8, ptr addrspace(4) %scevgep2991, align 1 %scevgep2989 = getelementptr i8, ptr %scevgep2988, i64 %residual-loop-index2402 store i8 %1767, ptr %scevgep2989, align 1 %1768 = add i64 %residual-loop-index2402, 1 %1769 = icmp uge i64 %1768, %1757 br i1 %1769, label %Flow3568, label %loop-memcpy-residual2400, !amdgpu.uniform !42 Flow3568: ; preds = %loop-memcpy-residual2400 br label %Flow3571, !amdgpu.uniform !42 post-loop-memcpy-expansion2397: ; preds = %Flow3571 %tobool.not.i.i.i.i.i.i1305 = icmp eq i32 %.lcssa4052, 0 %conv.i.i.i.i.i.i1306 = zext i1 %tobool.not.i.i.i.i.i.i1305 to i32 fence release %1770 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i1307 = zext i32 %.lcssa4054 to i64 %arrayidx.i24.i.i.i.i.i1308 = getelementptr inbounds nuw i32, ptr %1770, i64 %idxprom.i23.i.i.i.i.i1307 store atomic i32 %conv.i.i.i.i.i.i1306, ptr %arrayidx.i24.i.i.i.i.i1308 monotonic, align 4 %1771 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i1309 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1771, i64 %idxprom.i23.i.i.i.i.i1307, !amdgpu.uniform !42 %1772 = load i64, ptr %arrayidx.i.i5.i.i1309, align 8, !tbaa !80 br label %while.cond.i.i.i.i1310, !amdgpu.uniform !42 while.cond.i.i.i.i1310: ; preds = %post-loop-memcpy-expansion2397, %Flow3566 %phi.broken3934 = phi i64 [ 0, %post-loop-memcpy-expansion2397 ], [ %1789, %Flow3566 ] %lsr.iv2980 = phi i64 [ %1787, %Flow3566 ], [ sub (i64 add (i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.9, i64 8) to ptr) to i64), i64 -56), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.9 to ptr) to i64)), %post-loop-memcpy-expansion2397 ] %lsr.iv2975 = phi ptr addrspace(4) [ %1786, %Flow3566 ], [ getelementptr (i8, ptr addrspace(4) @.str.9, i64 56), %post-loop-memcpy-expansion2397 ] %port.sroa.37.0.i.i1311 = phi i32 [ %1785, %Flow3566 ], [ %conv.i.i.i.i.i.i1306, %post-loop-memcpy-expansion2397 ] %idx.0.i.i.i.i1312 = phi i64 [ %1784, %Flow3566 ], [ 56, %post-loop-memcpy-expansion2397 ] %cmp.i.i.i.i1313 = icmp ult i64 %idx.0.i.i.i.i1312, sub (i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.9, i64 8) to ptr) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.9 to ptr) to i64)) %1773 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i1313) %and.i.i.i.i6.i.i1314 = and i64 %1773, %1772 %tobool.not.i.i.i.i1315 = icmp ne i64 %and.i.i.i.i6.i.i1314, 0 %1774 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i1316 = getelementptr inbounds nuw i32, ptr %1774, i64 %idxprom.i23.i.i.i.i.i1307, !amdgpu.uniform !42 %1775 = load atomic i32, ptr %arrayidx.i22.i.i.i1316 monotonic, align 4 %1776 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i1315) %1777 = extractvalue { i1, i64 } %1776, 0 %1778 = extractvalue { i1, i64 } %1776, 1 br i1 %1777, label %cond.false.i8.i.i.i.i1317, label %Flow3566 cond.false.i8.i.i.i.i1317: ; preds = %while.cond.i.i.i.i1310 %1779 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1775) %1780 = icmp ne i32 %1779, %port.sroa.37.0.i.i1311 br i1 %1780, label %while.body.i.i21.i.i.i.i1318.preheader, label %Flow3565, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1318.preheader: ; preds = %cond.false.i8.i.i.i.i1317 br label %while.body.i.i21.i.i.i.i1318, !amdgpu.uniform !42 Flow3565: ; preds = %Flow3563, %cond.false.i8.i.i.i.i1317 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1321, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1318: ; preds = %while.body.i.i21.i.i.i.i1318.preheader, %while.body.i.i21.i.i.i.i1318 tail call void @llvm.amdgcn.s.sleep(i32 2) %1781 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i1319 = getelementptr inbounds nuw i32, ptr %1781, i64 %idxprom.i23.i.i.i.i.i1307, !amdgpu.uniform !42 %1782 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i1319 monotonic, align 4 %1783 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1782) %cmp.i.not.i.i23.i.i.i.i1320 = icmp eq i32 %1783, %port.sroa.37.0.i.i1311 br i1 %cmp.i.not.i.i23.i.i.i.i1320, label %Flow3563, label %while.body.i.i21.i.i.i.i1318, !amdgpu.uniform !42 Flow3563: ; preds = %while.body.i.i21.i.i.i.i1318 br label %Flow3565, !amdgpu.uniform !42 Flow3566: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1322, %while.cond.i.i.i.i1310 %1784 = phi i64 [ %add.i.i.i.i1325, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1322 ], [ poison, %while.cond.i.i.i.i1310 ] %1785 = phi i32 [ %conv.i.i26.i.i.i.i1323, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1322 ], [ poison, %while.cond.i.i.i.i1310 ] %1786 = phi ptr addrspace(4) [ %scevgep2976, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1322 ], [ poison, %while.cond.i.i.i.i1310 ] %1787 = phi i64 [ %lsr.iv.next2981, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1322 ], [ poison, %while.cond.i.i.i.i1310 ] %1788 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1322 ], [ true, %while.cond.i.i.i.i1310 ] call void @llvm.amdgcn.end.cf.i64(i64 %1778) %1789 = call i64 @llvm.amdgcn.if.break.i64(i1 %1788, i64 %phi.broken3934) %1790 = call i1 @llvm.amdgcn.loop.i64(i64 %1789) br i1 %1790, label %cond.false.i.i.i1332, label %while.cond.i.i.i.i1310 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1321: ; preds = %Flow3565 fence acquire br i1 %cmp.i.i.i.i1313, label %if.then.i.i.i.i.i.i.i1326, label %Flow3562, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i1326: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1321 %sub.i.i.i.i.i.i.i1328 = sub nuw i64 sub (i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.9, i64 8) to ptr) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.9 to ptr) to i64)), %idx.0.i.i.i.i1312 %spec.select.i.i.i36.i.i.i.i1329 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i1328, i64 64) %1791 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %1792 = and i64 %spec.select.i.i.i36.i.i.i.i1329, 15 %1793 = sub i64 %spec.select.i.i.i36.i.i.i.i1329, %1792 %1794 = icmp ne i64 %1793, 0 br i1 %1794, label %loop-memcpy-expansion2404.preheader, label %Flow3561, !amdgpu.uniform !42 loop-memcpy-expansion2404.preheader: ; preds = %if.then.i.i.i.i.i.i.i1326 %arrayidx.i20.i35.i.i.i.i1330 = getelementptr %"struct.rpc::Buffer", ptr %1791, i64 %idxprom.i19.i.i.i.i.i1300 %arrayidx.i22.i38.i.i.i.i1331 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i1330, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2404, !amdgpu.uniform !42 Flow3561: ; preds = %Flow3560, %if.then.i.i.i.i.i.i.i1326 br label %loop-memcpy-residual-header2407, !amdgpu.uniform !42 loop-memcpy-expansion2404: ; preds = %loop-memcpy-expansion2404.preheader, %loop-memcpy-expansion2404 %loop-index2405 = phi i64 [ %1797, %loop-memcpy-expansion2404 ], [ 0, %loop-memcpy-expansion2404.preheader ] %scevgep2977 = getelementptr i8, ptr addrspace(4) %lsr.iv2975, i64 %loop-index2405, !amdgpu.uniform !42 %1795 = load <4 x i32>, ptr addrspace(4) %scevgep2977, align 1 %1796 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i1331, i64 %loop-index2405 store <4 x i32> %1795, ptr %1796, align 1 %1797 = add i64 %loop-index2405, 16 %1798 = icmp uge i64 %1797, %1793 br i1 %1798, label %Flow3560, label %loop-memcpy-expansion2404, !amdgpu.uniform !42 Flow3558: ; preds = %Flow3557, %loop-memcpy-residual-header2407 br label %Flow3562, !amdgpu.uniform !42 loop-memcpy-residual2406: ; preds = %loop-memcpy-residual2406.preheader, %loop-memcpy-residual2406 %residual-loop-index2408 = phi i64 [ %1800, %loop-memcpy-residual2406 ], [ 0, %loop-memcpy-residual2406.preheader ] %scevgep2986 = getelementptr i8, ptr addrspace(4) %scevgep2985, i64 %residual-loop-index2408, !amdgpu.uniform !42 %1799 = load i8, ptr addrspace(4) %scevgep2986, align 1 %scevgep2984 = getelementptr i8, ptr %scevgep2983, i64 %residual-loop-index2408 store i8 %1799, ptr %scevgep2984, align 1 %1800 = add i64 %residual-loop-index2408, 1 %1801 = icmp uge i64 %1800, %1792 br i1 %1801, label %Flow3557, label %loop-memcpy-residual2406, !amdgpu.uniform !42 Flow3557: ; preds = %loop-memcpy-residual2406 br label %Flow3558, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1322: ; preds = %Flow3562 %conv.i.i26.i.i.i.i1323 = xor i32 %port.sroa.37.0.i.i1311, 1 fence release %1802 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i1324 = getelementptr inbounds nuw i32, ptr %1802, i64 %idxprom.i23.i.i.i.i.i1307 store atomic i32 %conv.i.i26.i.i.i.i1323, ptr %arrayidx.i24.i29.i.i.i.i1324 monotonic, align 4 %add.i.i.i.i1325 = add i64 %idx.0.i.i.i.i1312, 64 %scevgep2976 = getelementptr i8, ptr addrspace(4) %lsr.iv2975, i64 64 %lsr.iv.next2981 = add i64 %lsr.iv2980, -64 br label %Flow3566, !amdgpu.uniform !42 cond.false.i.i.i1332: ; preds = %Flow3566 %.lcssa4048 = phi i64 [ %1789, %Flow3566 ] %port.sroa.37.0.i.i1311.lcssa = phi i32 [ %port.sroa.37.0.i.i1311, %Flow3566 ] %.lcssa4047 = phi i32 [ %1775, %Flow3566 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4048) %1803 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa4047) %1804 = icmp ne i32 %1803, %port.sroa.37.0.i.i1311.lcssa %1805 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1804) %1806 = extractvalue { i1, i64 } %1805, 0 %1807 = extractvalue { i1, i64 } %1805, 1 br i1 %1806, label %while.body.i.i.i.i1333.preheader, label %Flow3555 while.body.i.i.i.i1333.preheader: ; preds = %cond.false.i.i.i1332 br label %while.body.i.i.i.i1333, !amdgpu.uniform !42 Flow3555: ; preds = %Flow3553, %cond.false.i.i.i1332 call void @llvm.amdgcn.end.cf.i64(i64 %1807) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp11string_viewEEERS1_T_.exit, !amdgpu.uniform !42 while.body.i.i.i.i1333: ; preds = %while.body.i.i.i.i1333.preheader, %while.body.i.i.i.i1333 %phi.broken3935 = phi i64 [ 0, %while.body.i.i.i.i1333.preheader ], [ %1811, %while.body.i.i.i.i1333 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %1808 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i1334 = getelementptr inbounds nuw i32, ptr %1808, i64 %idxprom.i23.i.i.i.i.i1307, !amdgpu.uniform !42 %1809 = load atomic i32, ptr %arrayidx.i.i.i8.i.i1334 monotonic, align 4 %1810 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1809) %cmp.i.not.i.i.i.i1335 = icmp eq i32 %1810, %port.sroa.37.0.i.i1311.lcssa %1811 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i1335, i64 %phi.broken3935) %1812 = call i1 @llvm.amdgcn.loop.i64(i64 %1811) br i1 %1812, label %Flow3553, label %while.body.i.i.i.i1333 Flow3553: ; preds = %while.body.i.i.i.i1333 %.lcssa4046 = phi i64 [ %1811, %while.body.i.i.i.i1333 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4046) br label %Flow3555, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp11string_viewEEERS1_T_.exit: ; preds = %Flow3555 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %1813 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4053, i1 true) %iszero.i.i.i.i.i13.i.i1337 = icmp ne i64 %.lcssa4053, 0 %cmp2.i.i.i.i14.i.i1338 = icmp eq i64 %1813, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i1339 = select i1 %iszero.i.i.i.i.i13.i.i1337, i1 %cmp2.i.i.i.i14.i.i1338, i1 false %1814 = and i32 %.lcssa4054, 31 %conv4.i.i.i19.i.i1343 = zext i1 %cmp.i.i.i.i15.i.i1339 to i32 %shl.i.i.i20.i.i1344 = shl nuw i32 %conv4.i.i.i19.i.i1343, %1814 %xor.i.i.i21.i.i1345 = xor i32 %shl.i.i.i20.i.i1344, -1 %1815 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2600, !amdgpu.uniform !42 1816: ; preds = %ComputeEnd2601 %div8.i.i.i16.i.i1340 = lshr i32 %.lcssa4054, 5 %idxprom.i.i.i17.i.i1341 = zext nneg i32 %div8.i.i.i16.i.i1340 to i64 %1817 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i1341 %sunkaddr3314 = getelementptr inbounds i8, ptr addrspace(1) %1817, i64 40 %1818 = atomicrmw and ptr addrspace(1) %sunkaddr3314, i32 %.lcssa4045 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1819, !amdgpu.uniform !42 1819: ; preds = %1816, %ComputeEnd2601 call void @llvm.amdgcn.end.cf.i64(i64 %3677) tail call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i1.i1362, !amdgpu.uniform !42 for.cond.i.i1.i1362: ; preds = %1819, %Flow3552 %1820 = phi i32 [ %1858, %Flow3552 ], [ poison, %1819 ] %1821 = phi i64 [ %1859, %Flow3552 ], [ poison, %1819 ] %1822 = phi i32 [ %1860, %Flow3552 ], [ poison, %1819 ] %retval.sroa.6.0.i.i.i1363 = phi i32 [ %1863, %Flow3552 ], [ undef, %1819 ] %retval.sroa.2.0.i.i.i1365 = phi i64 [ %1862, %Flow3552 ], [ undef, %1819 ] %retval.sroa.8.0.i.i.i1366 = phi i32 [ %1861, %Flow3552 ], [ undef, %1819 ] %index.0.i.i.i1367 = phi i32 [ %1865, %Flow3552 ], [ 0, %1819 ] %1823 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i1368 = icmp ult i32 %index.0.i.i.i1367, %1823 %spec.store.select.i.i.i1369 = select i1 %cmp.not.i.i.i1368, i32 %index.0.i.i.i1367, i32 0 %1824 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %1825 = and i32 %spec.store.select.i.i.i1369, 31 %1826 = lshr i64 %1824, %sh_prom.i.i.i.i %1827 = trunc i64 %1826 to i32 %conv4.i.i.i.i.i1373 = and i32 %1827, 1 %shl.i.i.i.i.i1374 = shl nuw i32 %conv4.i.i.i.i.i1373, %1825 %1828 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2604, !amdgpu.uniform !42 1829: ; preds = %ComputeEnd2605 %sunkaddr3315 = getelementptr inbounds i8, ptr addrspace(1) %3687, i64 40 %1830 = atomicrmw or ptr addrspace(1) %sunkaddr3315, i32 %.lcssa4039 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1831, !amdgpu.uniform !42 1831: ; preds = %1829, %ComputeEnd2605 %1832 = phi i32 [ %1830, %1829 ], [ poison, %ComputeEnd2605 ] call void @llvm.amdgcn.end.cf.i64(i64 %3696) %1833 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %1832) %1834 = or i32 %1833, %.lcssa4040 %shl5.i.i.i.i.i1375 = shl nuw i32 1, %1825 %and.i.i.i.i.i1376 = and i32 %shl5.i.i.i.i.i1375, %1834 %tobool3.i.i.i.i1377 = icmp ne i32 %and.i.i.i.i.i1376, 0 %1835 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i1377) %and.i.i.i.i.i.i1378 = and i64 %1835, %1824 %cmp.i.not.i.i.i1379 = icmp ne i64 %1824, %and.i.i.i.i.i.i1378 br i1 %cmp.i.not.i.i.i1379, label %if.then.i.i.i.i1380, label %Flow3551, !amdgpu.uniform !42 if.then.i.i.i.i1380: ; preds = %1831 fence syncscope("agent") acquire %1836 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %1837 = extractelement <2 x i64> %1836, i32 0 %1838 = inttoptr i64 %1837 to ptr %1839 = extractelement <2 x i64> %1836, i32 1 %1840 = inttoptr i64 %1839 to ptr %idxprom.i.i.i.i1381 = zext i32 %spec.store.select.i.i.i1369 to i64 %arrayidx.i.i.i.i1382 = getelementptr inbounds nuw i32, ptr %1838, i64 %idxprom.i.i.i.i1381, !amdgpu.uniform !42 %1841 = load atomic i32, ptr %arrayidx.i.i.i.i1382 monotonic, align 4 %1842 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1841) %arrayidx.i45.i.i.i1383 = getelementptr inbounds nuw i32, ptr %1840, i64 %idxprom.i.i.i.i1381, !amdgpu.uniform !42 %1843 = load atomic i32, ptr %arrayidx.i45.i.i.i1383 monotonic, align 4 %1844 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1843) %cmp.i46.not.i.i.i1384 = icmp ne i32 %1842, %1844 br i1 %cmp.i46.not.i.i.i1384, label %if.then12.i.i.i1385, label %Flow3549, !amdgpu.uniform !42 if.then12.i.i.i1385: ; preds = %if.then.i.i.i.i1380 fence syncscope("agent") release %1845 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1824, i1 true) %iszero.i.i.i.i.i.i.i1386 = icmp ne i64 %1824, 0 %cmp2.i.i.i.i.i.i1387 = icmp eq i64 %1845, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i1388 = select i1 %iszero.i.i.i.i.i.i.i1386, i1 %cmp2.i.i.i.i.i.i1387, i1 false %conv4.i.i51.i.i.i1389 = zext i1 %cmp.i.i.i.i.i.i1388 to i32 %shl.i.i52.i.i.i1390 = shl nuw i32 %conv4.i.i51.i.i.i1389, %1825 %xor.i.i.i.i.i1391 = xor i32 %shl.i.i52.i.i.i1390, -1 %1846 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2609, !amdgpu.uniform !42 1847: ; preds = %ComputeEnd2610 %sunkaddr3316 = getelementptr inbounds i8, ptr addrspace(1) %3687, i64 40 %1848 = atomicrmw and ptr addrspace(1) %sunkaddr3316, i32 %.lcssa4041 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1849, !amdgpu.uniform !42 1849: ; preds = %1847, %ComputeEnd2610 call void @llvm.amdgcn.end.cf.i64(i64 %3714) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3549, !amdgpu.uniform !42 if.end14.i.i.i1451: ; preds = %Flow3549 %1850 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1824, i1 true) %iszero.i.i.i.i.i.i1452 = icmp ne i64 %1824, 0 %cmp2.i.i.i.i.i1453 = icmp eq i64 %1850, %sh_prom.i.i.i.i %cmp.i.i.i.i.i1454 = select i1 %iszero.i.i.i.i.i.i1452, i1 %cmp2.i.i.i.i.i1453, i1 false %1851 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i1454) %1852 = extractvalue { i1, i64 } %1851, 0 %1853 = extractvalue { i1, i64 } %1851, 1 br i1 %1852, label %if.then16.i.i.i1456, label %if.end22.i.i.i1455 if.then16.i.i.i1456: ; preds = %if.end14.i.i.i1451 %1854 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i1457 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1854, i64 %idxprom.i.i.i.i1381, i32 1 store i32 1660944387, ptr %opcode.i.i.i1457, align 8, !tbaa !77 %arrayidx21.i.i.i1458 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1854, i64 %idxprom.i.i.i.i1381 store i64 %1824, ptr %arrayidx21.i.i.i1458, align 8, !tbaa !80 br label %if.end22.i.i.i1455, !amdgpu.uniform !42 Flow3550: ; preds = %if.end22.i.i.i1455, %Flow3549 %1855 = phi i32 [ %1842, %if.end22.i.i.i1455 ], [ %retval.sroa.8.0.i.i.i1366, %Flow3549 ] %1856 = phi i64 [ %1824, %if.end22.i.i.i1455 ], [ %retval.sroa.2.0.i.i.i1365, %Flow3549 ] %1857 = phi i32 [ %spec.store.select.i.i.i1369, %if.end22.i.i.i1455 ], [ %retval.sroa.6.0.i.i.i1363, %Flow3549 ] br label %cleanup26.i.i.i1392, !amdgpu.uniform !42 if.end22.i.i.i1455: ; preds = %if.then16.i.i.i1456, %if.end14.i.i.i1451 call void @llvm.amdgcn.end.cf.i64(i64 %1853) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3550, !amdgpu.uniform !42 Flow3551: ; preds = %cleanup26.i.i.i1392, %1831 %1858 = phi i32 [ %1857, %cleanup26.i.i.i1392 ], [ %1820, %1831 ] %1859 = phi i64 [ %1856, %cleanup26.i.i.i1392 ], [ %1821, %1831 ] %1860 = phi i32 [ %1855, %cleanup26.i.i.i1392 ], [ %1822, %1831 ] %1861 = phi i32 [ %1855, %cleanup26.i.i.i1392 ], [ %retval.sroa.8.0.i.i.i1366, %1831 ] %1862 = phi i64 [ %1856, %cleanup26.i.i.i1392 ], [ %retval.sroa.2.0.i.i.i1365, %1831 ] %1863 = phi i32 [ %1857, %cleanup26.i.i.i1392 ], [ %retval.sroa.6.0.i.i.i1363, %1831 ] %1864 = phi i1 [ %cmp.i46.not.i.i.i1384, %cleanup26.i.i.i1392 ], [ true, %1831 ] br i1 %1864, label %for.inc.i.i.i1397, label %Flow3552, !amdgpu.uniform !42 cleanup26.i.i.i1392: ; preds = %Flow3550 br label %Flow3551, !amdgpu.uniform !42 for.inc.i.i.i1397: ; preds = %Flow3551 %inc.i.i.i1402 = add i32 %spec.store.select.i.i.i1369, 1 br label %Flow3552, !amdgpu.uniform !42 Flow3552: ; preds = %for.inc.i.i.i1397, %Flow3551 %1865 = phi i32 [ %inc.i.i.i1402, %for.inc.i.i.i1397 ], [ poison, %Flow3551 ] %1866 = phi i1 [ false, %for.inc.i.i.i1397 ], [ true, %Flow3551 ] br i1 %1866, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1403, label %for.cond.i.i1.i1362, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1403: ; preds = %Flow3552 %.lcssa4044 = phi i32 [ %1858, %Flow3552 ] %.lcssa4043 = phi i64 [ %1859, %Flow3552 ] %.lcssa4042 = phi i32 [ %1860, %Flow3552 ] fence acquire %1867 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i1404 = shl i32 %.lcssa4044, 6 %idxprom.i19.i.i.i.i.i1405 = zext i32 %mul.i.i.i.i.i.i1404 to i64 %arrayidx.i20.i.i.i.i.i1406 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %1867, i64 %idxprom.i19.i.i.i.i.i1405 %arrayidx.i22.i.i.i.i.i1407 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i1406, i64 %sh_prom.i.i.i.i store i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.37.14 to ptr), i64 2) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.37.14 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i1407, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i1408 = tail call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.37.14 to ptr), i64 2) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.37.14 to ptr) to i64)), i64 56) %1868 = and i64 %spec.select.i.i.i.i.i.i.i1408, 15 %1869 = sub i64 %spec.select.i.i.i.i.i.i.i1408, %1868 %1870 = icmp ne i64 %1869, 0 br i1 %1870, label %loop-memcpy-expansion2410.preheader, label %Flow3548, !amdgpu.uniform !42 loop-memcpy-expansion2410.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1403 %1871 = add nuw nsw i64 %75, 8 %scevgep2972 = getelementptr i8, ptr %1867, i64 %1871 %1872 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1405, 6 %scevgep2973 = getelementptr i8, ptr %scevgep2972, i64 %1872 br label %loop-memcpy-expansion2410, !amdgpu.uniform !42 Flow3548: ; preds = %Flow3547, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1403 br label %loop-memcpy-residual-header2413, !amdgpu.uniform !42 loop-memcpy-expansion2410: ; preds = %loop-memcpy-expansion2410.preheader, %loop-memcpy-expansion2410 %loop-index2411 = phi i64 [ %1875, %loop-memcpy-expansion2410 ], [ 0, %loop-memcpy-expansion2410.preheader ] %1873 = getelementptr i8, ptr addrspace(4) @.str.37.14, i64 %loop-index2411, !amdgpu.uniform !42 %1874 = load <4 x i32>, ptr addrspace(4) %1873, align 1 %scevgep2974 = getelementptr i8, ptr %scevgep2973, i64 %loop-index2411 store <4 x i32> %1874, ptr %scevgep2974, align 1 %1875 = add i64 %loop-index2411, 16 %1876 = icmp uge i64 %1875, %1869 br i1 %1876, label %Flow3547, label %loop-memcpy-expansion2410, !amdgpu.uniform !42 Flow3545: ; preds = %Flow3542, %Flow3544 %1877 = phi i64 [ %2915, %Flow3542 ], [ %2912, %Flow3544 ] br label %post-loop-memcpy-expansion2409, !amdgpu.uniform !42 loop-memcpy-residual2412: ; preds = %loop-memcpy-residual2412.preheader, %loop-memcpy-residual2412 %residual-loop-index2414 = phi i64 [ %1879, %loop-memcpy-residual2412 ], [ 0, %loop-memcpy-residual2412.preheader ] %scevgep2971 = getelementptr i8, ptr addrspace(4) @.str.37.14, i64 %residual-loop-index2414, !amdgpu.uniform !42 %1878 = load i8, ptr addrspace(4) %scevgep2971, align 1 %scevgep2970 = getelementptr i8, ptr %scevgep2969, i64 %residual-loop-index2414 store i8 %1878, ptr %scevgep2970, align 1 %1879 = add i64 %residual-loop-index2414, 1 %1880 = icmp uge i64 %1879, %1868 br i1 %1880, label %Flow3542, label %loop-memcpy-residual2412, !amdgpu.uniform !42 Flow3542: ; preds = %loop-memcpy-residual2412 br label %Flow3545, !amdgpu.uniform !42 post-loop-memcpy-expansion2409: ; preds = %Flow3545 %tobool.not.i.i.i.i.i.i1410 = icmp eq i32 %.lcssa4042, 0 %conv.i.i.i.i.i.i1411 = zext i1 %tobool.not.i.i.i.i.i.i1410 to i32 fence release %1881 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i1412 = zext i32 %.lcssa4044 to i64 %arrayidx.i24.i.i.i.i.i1413 = getelementptr inbounds nuw i32, ptr %1881, i64 %idxprom.i23.i.i.i.i.i1412 store atomic i32 %conv.i.i.i.i.i.i1411, ptr %arrayidx.i24.i.i.i.i.i1413 monotonic, align 4 %1882 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i1414 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1882, i64 %idxprom.i23.i.i.i.i.i1412, !amdgpu.uniform !42 %1883 = load i64, ptr %arrayidx.i.i5.i.i1414, align 8, !tbaa !80 br label %while.cond.i.i.i.i1415, !amdgpu.uniform !42 while.cond.i.i.i.i1415: ; preds = %post-loop-memcpy-expansion2409, %Flow3540 %phi.broken3936 = phi i64 [ 0, %post-loop-memcpy-expansion2409 ], [ %1900, %Flow3540 ] %lsr.iv2961 = phi i64 [ %1898, %Flow3540 ], [ -54, %post-loop-memcpy-expansion2409 ] %lsr.iv2956 = phi ptr addrspace(4) [ %1897, %Flow3540 ], [ getelementptr (i8, ptr addrspace(4) @.str.37.14, i64 56), %post-loop-memcpy-expansion2409 ] %port.sroa.37.0.i.i1416 = phi i32 [ %1896, %Flow3540 ], [ %conv.i.i.i.i.i.i1411, %post-loop-memcpy-expansion2409 ] %idx.0.i.i.i.i1417 = phi i64 [ %1895, %Flow3540 ], [ 56, %post-loop-memcpy-expansion2409 ] %cmp.i.i.i.i1418 = icmp ult i64 %idx.0.i.i.i.i1417, sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.37.14 to ptr), i64 2) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.37.14 to ptr) to i64)) %1884 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i1418) %and.i.i.i.i6.i.i1419 = and i64 %1884, %1883 %tobool.not.i.i.i.i1420 = icmp ne i64 %and.i.i.i.i6.i.i1419, 0 %1885 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i1421 = getelementptr inbounds nuw i32, ptr %1885, i64 %idxprom.i23.i.i.i.i.i1412, !amdgpu.uniform !42 %1886 = load atomic i32, ptr %arrayidx.i22.i.i.i1421 monotonic, align 4 %1887 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i1420) %1888 = extractvalue { i1, i64 } %1887, 0 %1889 = extractvalue { i1, i64 } %1887, 1 br i1 %1888, label %cond.false.i8.i.i.i.i1422, label %Flow3540 cond.false.i8.i.i.i.i1422: ; preds = %while.cond.i.i.i.i1415 %1890 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1886) %1891 = icmp ne i32 %1890, %port.sroa.37.0.i.i1416 br i1 %1891, label %while.body.i.i21.i.i.i.i1423.preheader, label %Flow3539, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1423.preheader: ; preds = %cond.false.i8.i.i.i.i1422 br label %while.body.i.i21.i.i.i.i1423, !amdgpu.uniform !42 Flow3539: ; preds = %Flow3537, %cond.false.i8.i.i.i.i1422 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1426, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1423: ; preds = %while.body.i.i21.i.i.i.i1423.preheader, %while.body.i.i21.i.i.i.i1423 tail call void @llvm.amdgcn.s.sleep(i32 2) %1892 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i1424 = getelementptr inbounds nuw i32, ptr %1892, i64 %idxprom.i23.i.i.i.i.i1412, !amdgpu.uniform !42 %1893 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i1424 monotonic, align 4 %1894 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1893) %cmp.i.not.i.i23.i.i.i.i1425 = icmp eq i32 %1894, %port.sroa.37.0.i.i1416 br i1 %cmp.i.not.i.i23.i.i.i.i1425, label %Flow3537, label %while.body.i.i21.i.i.i.i1423, !amdgpu.uniform !42 Flow3537: ; preds = %while.body.i.i21.i.i.i.i1423 br label %Flow3539, !amdgpu.uniform !42 Flow3540: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1427, %while.cond.i.i.i.i1415 %1895 = phi i64 [ %add.i.i.i.i1430, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1427 ], [ poison, %while.cond.i.i.i.i1415 ] %1896 = phi i32 [ %conv.i.i26.i.i.i.i1428, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1427 ], [ poison, %while.cond.i.i.i.i1415 ] %1897 = phi ptr addrspace(4) [ %scevgep2957, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1427 ], [ poison, %while.cond.i.i.i.i1415 ] %1898 = phi i64 [ %lsr.iv.next2962, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1427 ], [ poison, %while.cond.i.i.i.i1415 ] %1899 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1427 ], [ true, %while.cond.i.i.i.i1415 ] call void @llvm.amdgcn.end.cf.i64(i64 %1889) %1900 = call i64 @llvm.amdgcn.if.break.i64(i1 %1899, i64 %phi.broken3936) %1901 = call i1 @llvm.amdgcn.loop.i64(i64 %1900) br i1 %1901, label %cond.false.i.i.i1437, label %while.cond.i.i.i.i1415 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1426: ; preds = %Flow3539 fence acquire br i1 %cmp.i.i.i.i1418, label %if.then.i.i.i.i.i.i.i1431, label %Flow3536, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i1431: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1426 %sub.i.i.i.i.i.i.i1433 = sub nuw i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.37.14 to ptr), i64 2) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.37.14 to ptr) to i64)), %idx.0.i.i.i.i1417 %spec.select.i.i.i36.i.i.i.i1434 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i1433, i64 64) %1902 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %1903 = and i64 %spec.select.i.i.i36.i.i.i.i1434, 15 %1904 = sub i64 %spec.select.i.i.i36.i.i.i.i1434, %1903 %1905 = icmp ne i64 %1904, 0 br i1 %1905, label %loop-memcpy-expansion2416.preheader, label %Flow3535, !amdgpu.uniform !42 loop-memcpy-expansion2416.preheader: ; preds = %if.then.i.i.i.i.i.i.i1431 %arrayidx.i20.i35.i.i.i.i1435 = getelementptr %"struct.rpc::Buffer", ptr %1902, i64 %idxprom.i19.i.i.i.i.i1405 %arrayidx.i22.i38.i.i.i.i1436 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i1435, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2416, !amdgpu.uniform !42 Flow3535: ; preds = %Flow3534, %if.then.i.i.i.i.i.i.i1431 br label %loop-memcpy-residual-header2419, !amdgpu.uniform !42 loop-memcpy-expansion2416: ; preds = %loop-memcpy-expansion2416.preheader, %loop-memcpy-expansion2416 %loop-index2417 = phi i64 [ %1908, %loop-memcpy-expansion2416 ], [ 0, %loop-memcpy-expansion2416.preheader ] %scevgep2958 = getelementptr i8, ptr addrspace(4) %lsr.iv2956, i64 %loop-index2417, !amdgpu.uniform !42 %1906 = load <4 x i32>, ptr addrspace(4) %scevgep2958, align 1 %1907 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i1436, i64 %loop-index2417 store <4 x i32> %1906, ptr %1907, align 1 %1908 = add i64 %loop-index2417, 16 %1909 = icmp uge i64 %1908, %1904 br i1 %1909, label %Flow3534, label %loop-memcpy-expansion2416, !amdgpu.uniform !42 Flow3532: ; preds = %Flow3531, %loop-memcpy-residual-header2419 br label %Flow3536, !amdgpu.uniform !42 loop-memcpy-residual2418: ; preds = %loop-memcpy-residual2418.preheader, %loop-memcpy-residual2418 %residual-loop-index2420 = phi i64 [ %1911, %loop-memcpy-residual2418 ], [ 0, %loop-memcpy-residual2418.preheader ] %scevgep2967 = getelementptr i8, ptr addrspace(4) %scevgep2966, i64 %residual-loop-index2420, !amdgpu.uniform !42 %1910 = load i8, ptr addrspace(4) %scevgep2967, align 1 %scevgep2965 = getelementptr i8, ptr %scevgep2964, i64 %residual-loop-index2420 store i8 %1910, ptr %scevgep2965, align 1 %1911 = add i64 %residual-loop-index2420, 1 %1912 = icmp uge i64 %1911, %1903 br i1 %1912, label %Flow3531, label %loop-memcpy-residual2418, !amdgpu.uniform !42 Flow3531: ; preds = %loop-memcpy-residual2418 br label %Flow3532, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1427: ; preds = %Flow3536 %conv.i.i26.i.i.i.i1428 = xor i32 %port.sroa.37.0.i.i1416, 1 fence release %1913 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i1429 = getelementptr inbounds nuw i32, ptr %1913, i64 %idxprom.i23.i.i.i.i.i1412 store atomic i32 %conv.i.i26.i.i.i.i1428, ptr %arrayidx.i24.i29.i.i.i.i1429 monotonic, align 4 %add.i.i.i.i1430 = add i64 %idx.0.i.i.i.i1417, 64 %scevgep2957 = getelementptr i8, ptr addrspace(4) %lsr.iv2956, i64 64 %lsr.iv.next2962 = add i64 %lsr.iv2961, -64 br label %Flow3540, !amdgpu.uniform !42 cond.false.i.i.i1437: ; preds = %Flow3540 %.lcssa4038 = phi i64 [ %1900, %Flow3540 ] %port.sroa.37.0.i.i1416.lcssa = phi i32 [ %port.sroa.37.0.i.i1416, %Flow3540 ] %.lcssa4037 = phi i32 [ %1886, %Flow3540 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4038) %1914 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa4037) %1915 = icmp ne i32 %1914, %port.sroa.37.0.i.i1416.lcssa %1916 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1915) %1917 = extractvalue { i1, i64 } %1916, 0 %1918 = extractvalue { i1, i64 } %1916, 1 br i1 %1917, label %while.body.i.i.i.i1438.preheader, label %Flow3529 while.body.i.i.i.i1438.preheader: ; preds = %cond.false.i.i.i1437 br label %while.body.i.i.i.i1438, !amdgpu.uniform !42 Flow3529: ; preds = %Flow3527, %cond.false.i.i.i1437 call void @llvm.amdgcn.end.cf.i64(i64 %1918) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1459, !amdgpu.uniform !42 while.body.i.i.i.i1438: ; preds = %while.body.i.i.i.i1438.preheader, %while.body.i.i.i.i1438 %phi.broken3937 = phi i64 [ 0, %while.body.i.i.i.i1438.preheader ], [ %1922, %while.body.i.i.i.i1438 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %1919 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i1439 = getelementptr inbounds nuw i32, ptr %1919, i64 %idxprom.i23.i.i.i.i.i1412, !amdgpu.uniform !42 %1920 = load atomic i32, ptr %arrayidx.i.i.i8.i.i1439 monotonic, align 4 %1921 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1920) %cmp.i.not.i.i.i.i1440 = icmp eq i32 %1921, %port.sroa.37.0.i.i1416.lcssa %1922 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i1440, i64 %phi.broken3937) %1923 = call i1 @llvm.amdgcn.loop.i64(i64 %1922) br i1 %1923, label %Flow3527, label %while.body.i.i.i.i1438 Flow3527: ; preds = %while.body.i.i.i.i1438 %.lcssa4036 = phi i64 [ %1922, %while.body.i.i.i.i1438 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4036) br label %Flow3529, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1459: ; preds = %Flow3529 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %1924 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4043, i1 true) %iszero.i.i.i.i.i13.i.i1442 = icmp ne i64 %.lcssa4043, 0 %cmp2.i.i.i.i14.i.i1443 = icmp eq i64 %1924, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i1444 = select i1 %iszero.i.i.i.i.i13.i.i1442, i1 %cmp2.i.i.i.i14.i.i1443, i1 false %1925 = and i32 %.lcssa4044, 31 %conv4.i.i.i19.i.i1448 = zext i1 %cmp.i.i.i.i15.i.i1444 to i32 %shl.i.i.i20.i.i1449 = shl nuw i32 %conv4.i.i.i19.i.i1448, %1925 %xor.i.i.i21.i.i1450 = xor i32 %shl.i.i.i20.i.i1449, -1 %1926 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2613, !amdgpu.uniform !42 1927: ; preds = %ComputeEnd2614 %div8.i.i.i16.i.i1445 = lshr i32 %.lcssa4044, 5 %idxprom.i.i.i17.i.i1446 = zext nneg i32 %div8.i.i.i16.i.i1445 to i64 %1928 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i1446 %sunkaddr3317 = getelementptr inbounds i8, ptr addrspace(1) %1928, i64 40 %1929 = atomicrmw and ptr addrspace(1) %sunkaddr3317, i32 %.lcssa4035 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1930, !amdgpu.uniform !42 1930: ; preds = %1927, %ComputeEnd2614 call void @llvm.amdgcn.end.cf.i64(i64 %3731) tail call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i.i1460, !amdgpu.uniform !42 for.cond.i.i.i1460: ; preds = %1930, %for.cond.i.i.i1460 %phi.broken3938 = phi i64 [ 0, %1930 ], [ %1933, %for.cond.i.i.i1460 ] %lsr.iv2942 = phi i64 [ %lsr.iv.next2943, %for.cond.i.i.i1460 ], [ -1, %1930 ] %scevgep2954 = getelementptr i8, ptr %RHSStr, i64 %lsr.iv2942 %scevgep2955 = getelementptr i8, ptr %scevgep2954, i64 1 %1931 = addrspacecast ptr %scevgep2955 to ptr addrspace(4) %1932 = load i8, ptr addrspace(4) %1931, align 1, !tbaa !57, !noalias.addrspace !101 %cmp.i.i.i1462 = icmp eq i8 %1932, 0 %lsr.iv.next2943 = add i64 %lsr.iv2942, 1 %1933 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.i.i1462, i64 %phi.broken3938) %1934 = call i1 @llvm.amdgcn.loop.i64(i64 %1933) br i1 %1934, label %for.cond.i.i1.i1468.preheader, label %for.cond.i.i.i1460 for.cond.i.i1.i1468.preheader: ; preds = %for.cond.i.i.i1460 %lsr.iv.next2943.lcssa = phi i64 [ %lsr.iv.next2943, %for.cond.i.i.i1460 ] %.lcssa4034 = phi i64 [ %1933, %for.cond.i.i.i1460 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4034) br label %for.cond.i.i1.i1468, !amdgpu.uniform !42 for.cond.i.i1.i1468: ; preds = %for.cond.i.i1.i1468.preheader, %Flow3526 %1935 = phi i32 [ %1973, %Flow3526 ], [ poison, %for.cond.i.i1.i1468.preheader ] %1936 = phi i64 [ %1974, %Flow3526 ], [ poison, %for.cond.i.i1.i1468.preheader ] %1937 = phi i32 [ %1975, %Flow3526 ], [ poison, %for.cond.i.i1.i1468.preheader ] %retval.sroa.6.0.i.i.i1469 = phi i32 [ %1978, %Flow3526 ], [ undef, %for.cond.i.i1.i1468.preheader ] %retval.sroa.2.0.i.i.i1471 = phi i64 [ %1977, %Flow3526 ], [ undef, %for.cond.i.i1.i1468.preheader ] %retval.sroa.8.0.i.i.i1472 = phi i32 [ %1976, %Flow3526 ], [ undef, %for.cond.i.i1.i1468.preheader ] %index.0.i.i.i1473 = phi i32 [ %1980, %Flow3526 ], [ 0, %for.cond.i.i1.i1468.preheader ] %1938 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i1474 = icmp ult i32 %index.0.i.i.i1473, %1938 %spec.store.select.i.i.i1475 = select i1 %cmp.not.i.i.i1474, i32 %index.0.i.i.i1473, i32 0 %1939 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %1940 = and i32 %spec.store.select.i.i.i1475, 31 %1941 = lshr i64 %1939, %sh_prom.i.i.i.i %1942 = trunc i64 %1941 to i32 %conv4.i.i.i.i.i1479 = and i32 %1942, 1 %shl.i.i.i.i.i1480 = shl nuw i32 %conv4.i.i.i.i.i1479, %1940 %1943 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2617, !amdgpu.uniform !42 1944: ; preds = %ComputeEnd2618 %sunkaddr3318 = getelementptr inbounds i8, ptr addrspace(1) %3741, i64 40 %1945 = atomicrmw or ptr addrspace(1) %sunkaddr3318, i32 %.lcssa4028 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1946, !amdgpu.uniform !42 1946: ; preds = %1944, %ComputeEnd2618 %1947 = phi i32 [ %1945, %1944 ], [ poison, %ComputeEnd2618 ] call void @llvm.amdgcn.end.cf.i64(i64 %3750) %1948 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %1947) %1949 = or i32 %1948, %.lcssa4029 %shl5.i.i.i.i.i1481 = shl nuw i32 1, %1940 %and.i.i.i.i.i1482 = and i32 %shl5.i.i.i.i.i1481, %1949 %tobool3.i.i.i.i1483 = icmp ne i32 %and.i.i.i.i.i1482, 0 %1950 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i1483) %and.i.i.i.i.i.i1484 = and i64 %1950, %1939 %cmp.i.not.i.i.i1485 = icmp ne i64 %1939, %and.i.i.i.i.i.i1484 br i1 %cmp.i.not.i.i.i1485, label %if.then.i.i.i.i1486, label %Flow3525, !amdgpu.uniform !42 if.then.i.i.i.i1486: ; preds = %1946 fence syncscope("agent") acquire %1951 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %1952 = extractelement <2 x i64> %1951, i32 0 %1953 = inttoptr i64 %1952 to ptr %1954 = extractelement <2 x i64> %1951, i32 1 %1955 = inttoptr i64 %1954 to ptr %idxprom.i.i.i.i1487 = zext i32 %spec.store.select.i.i.i1475 to i64 %arrayidx.i.i.i.i1488 = getelementptr inbounds nuw i32, ptr %1953, i64 %idxprom.i.i.i.i1487, !amdgpu.uniform !42 %1956 = load atomic i32, ptr %arrayidx.i.i.i.i1488 monotonic, align 4 %1957 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1956) %arrayidx.i45.i.i.i1489 = getelementptr inbounds nuw i32, ptr %1955, i64 %idxprom.i.i.i.i1487, !amdgpu.uniform !42 %1958 = load atomic i32, ptr %arrayidx.i45.i.i.i1489 monotonic, align 4 %1959 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1958) %cmp.i46.not.i.i.i1490 = icmp ne i32 %1957, %1959 br i1 %cmp.i46.not.i.i.i1490, label %if.then12.i.i.i1491, label %Flow3523, !amdgpu.uniform !42 if.then12.i.i.i1491: ; preds = %if.then.i.i.i.i1486 fence syncscope("agent") release %1960 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1939, i1 true) %iszero.i.i.i.i.i.i.i1492 = icmp ne i64 %1939, 0 %cmp2.i.i.i.i.i.i1493 = icmp eq i64 %1960, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i1494 = select i1 %iszero.i.i.i.i.i.i.i1492, i1 %cmp2.i.i.i.i.i.i1493, i1 false %conv4.i.i51.i.i.i1495 = zext i1 %cmp.i.i.i.i.i.i1494 to i32 %shl.i.i52.i.i.i1496 = shl nuw i32 %conv4.i.i51.i.i.i1495, %1940 %xor.i.i.i.i.i1497 = xor i32 %shl.i.i52.i.i.i1496, -1 %1961 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2622, !amdgpu.uniform !42 1962: ; preds = %ComputeEnd2623 %sunkaddr3319 = getelementptr inbounds i8, ptr addrspace(1) %3741, i64 40 %1963 = atomicrmw and ptr addrspace(1) %sunkaddr3319, i32 %.lcssa4030 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1964, !amdgpu.uniform !42 1964: ; preds = %1962, %ComputeEnd2623 call void @llvm.amdgcn.end.cf.i64(i64 %3768) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3523, !amdgpu.uniform !42 if.end14.i.i.i1557: ; preds = %Flow3523 %1965 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1939, i1 true) %iszero.i.i.i.i.i.i1558 = icmp ne i64 %1939, 0 %cmp2.i.i.i.i.i1559 = icmp eq i64 %1965, %sh_prom.i.i.i.i %cmp.i.i.i.i.i1560 = select i1 %iszero.i.i.i.i.i.i1558, i1 %cmp2.i.i.i.i.i1559, i1 false %1966 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i1560) %1967 = extractvalue { i1, i64 } %1966, 0 %1968 = extractvalue { i1, i64 } %1966, 1 br i1 %1967, label %if.then16.i.i.i1562, label %if.end22.i.i.i1561 if.then16.i.i.i1562: ; preds = %if.end14.i.i.i1557 %1969 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i1563 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1969, i64 %idxprom.i.i.i.i1487, i32 1 store i32 1660944387, ptr %opcode.i.i.i1563, align 8, !tbaa !77 %arrayidx21.i.i.i1564 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1969, i64 %idxprom.i.i.i.i1487 store i64 %1939, ptr %arrayidx21.i.i.i1564, align 8, !tbaa !80 br label %if.end22.i.i.i1561, !amdgpu.uniform !42 Flow3524: ; preds = %if.end22.i.i.i1561, %Flow3523 %1970 = phi i32 [ %1957, %if.end22.i.i.i1561 ], [ %retval.sroa.8.0.i.i.i1472, %Flow3523 ] %1971 = phi i64 [ %1939, %if.end22.i.i.i1561 ], [ %retval.sroa.2.0.i.i.i1471, %Flow3523 ] %1972 = phi i32 [ %spec.store.select.i.i.i1475, %if.end22.i.i.i1561 ], [ %retval.sroa.6.0.i.i.i1469, %Flow3523 ] br label %cleanup26.i.i.i1498, !amdgpu.uniform !42 if.end22.i.i.i1561: ; preds = %if.then16.i.i.i1562, %if.end14.i.i.i1557 call void @llvm.amdgcn.end.cf.i64(i64 %1968) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3524, !amdgpu.uniform !42 Flow3525: ; preds = %cleanup26.i.i.i1498, %1946 %1973 = phi i32 [ %1972, %cleanup26.i.i.i1498 ], [ %1935, %1946 ] %1974 = phi i64 [ %1971, %cleanup26.i.i.i1498 ], [ %1936, %1946 ] %1975 = phi i32 [ %1970, %cleanup26.i.i.i1498 ], [ %1937, %1946 ] %1976 = phi i32 [ %1970, %cleanup26.i.i.i1498 ], [ %retval.sroa.8.0.i.i.i1472, %1946 ] %1977 = phi i64 [ %1971, %cleanup26.i.i.i1498 ], [ %retval.sroa.2.0.i.i.i1471, %1946 ] %1978 = phi i32 [ %1972, %cleanup26.i.i.i1498 ], [ %retval.sroa.6.0.i.i.i1469, %1946 ] %1979 = phi i1 [ %cmp.i46.not.i.i.i1490, %cleanup26.i.i.i1498 ], [ true, %1946 ] br i1 %1979, label %for.inc.i.i.i1503, label %Flow3526, !amdgpu.uniform !42 cleanup26.i.i.i1498: ; preds = %Flow3524 br label %Flow3525, !amdgpu.uniform !42 for.inc.i.i.i1503: ; preds = %Flow3525 %inc.i.i.i1508 = add i32 %spec.store.select.i.i.i1475, 1 br label %Flow3526, !amdgpu.uniform !42 Flow3526: ; preds = %for.inc.i.i.i1503, %Flow3525 %1980 = phi i32 [ %inc.i.i.i1508, %for.inc.i.i.i1503 ], [ poison, %Flow3525 ] %1981 = phi i1 [ false, %for.inc.i.i.i1503 ], [ true, %Flow3525 ] br i1 %1981, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1509, label %for.cond.i.i1.i1468, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1509: ; preds = %Flow3526 %.lcssa4033 = phi i32 [ %1973, %Flow3526 ] %.lcssa4032 = phi i64 [ %1974, %Flow3526 ] %.lcssa4031 = phi i32 [ %1975, %Flow3526 ] %scevgep2953 = getelementptr i8, ptr %RHSStr, i64 %lsr.iv.next2943.lcssa %sub.ptr.lhs.cast.i.i.i1465 = ptrtoint ptr %scevgep2953 to i64 %sub.ptr.rhs.cast.i.i.i = ptrtoint ptr %RHSStr to i64 %sub.ptr.sub.i.i.i1466 = sub i64 %sub.ptr.lhs.cast.i.i.i1465, %sub.ptr.rhs.cast.i.i.i fence acquire %1982 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i1510 = shl i32 %.lcssa4033, 6 %idxprom.i19.i.i.i.i.i1511 = zext i32 %mul.i.i.i.i.i.i1510 to i64 %arrayidx.i20.i.i.i.i.i1512 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %1982, i64 %idxprom.i19.i.i.i.i.i1511 %arrayidx.i22.i.i.i.i.i1513 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i1512, i64 %sh_prom.i.i.i.i store i64 %sub.ptr.sub.i.i.i1466, ptr %arrayidx.i22.i.i.i.i.i1513, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i1514 = tail call i64 @llvm.umin.i64(i64 %sub.ptr.sub.i.i.i1466, i64 56) %1983 = and i64 %spec.select.i.i.i.i.i.i.i1514, 15 %1984 = sub i64 %spec.select.i.i.i.i.i.i.i1514, %1983 %1985 = icmp ne i64 %1984, 0 %1986 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1985) %1987 = extractvalue { i1, i64 } %1986, 0 %1988 = extractvalue { i1, i64 } %1986, 1 br i1 %1987, label %loop-memcpy-expansion2218.preheader, label %Flow3522 loop-memcpy-expansion2218.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1509 %1989 = add nuw nsw i64 %75, 8 %scevgep2950 = getelementptr i8, ptr %1982, i64 %1989 %1990 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1511, 6 %scevgep2951 = getelementptr i8, ptr %scevgep2950, i64 %1990 br label %loop-memcpy-expansion2218, !amdgpu.uniform !42 Flow3522: ; preds = %Flow3521, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1509 call void @llvm.amdgcn.end.cf.i64(i64 %1988) br label %loop-memcpy-residual-header2221, !amdgpu.uniform !42 loop-memcpy-expansion2218: ; preds = %loop-memcpy-expansion2218.preheader, %loop-memcpy-expansion2218 %phi.broken3939 = phi i64 [ 0, %loop-memcpy-expansion2218.preheader ], [ %1995, %loop-memcpy-expansion2218 ] %loop-index2219 = phi i64 [ %1993, %loop-memcpy-expansion2218 ], [ 0, %loop-memcpy-expansion2218.preheader ] %1991 = getelementptr i8, ptr %RHSStr, i64 %loop-index2219 %1992 = load <4 x i32>, ptr %1991, align 1 %scevgep2952 = getelementptr i8, ptr %scevgep2951, i64 %loop-index2219 store <4 x i32> %1992, ptr %scevgep2952, align 1 %1993 = add i64 %loop-index2219, 16 %1994 = icmp uge i64 %1993, %1984 %1995 = call i64 @llvm.amdgcn.if.break.i64(i1 %1994, i64 %phi.broken3939) %1996 = call i1 @llvm.amdgcn.loop.i64(i64 %1995) br i1 %1996, label %Flow3521, label %loop-memcpy-expansion2218 Flow3519: ; preds = %Flow3516, %Flow3518 %1997 = phi i64 [ %2749, %Flow3516 ], [ %2742, %Flow3518 ] call void @llvm.amdgcn.end.cf.i64(i64 %2745) br label %post-loop-memcpy-expansion2217, !amdgpu.uniform !42 loop-memcpy-residual2220: ; preds = %loop-memcpy-residual2220.preheader, %loop-memcpy-residual2220 %phi.broken3940 = phi i64 [ 0, %loop-memcpy-residual2220.preheader ], [ %2001, %loop-memcpy-residual2220 ] %residual-loop-index2222 = phi i64 [ %1999, %loop-memcpy-residual2220 ], [ 0, %loop-memcpy-residual2220.preheader ] %scevgep2949 = getelementptr i8, ptr %scevgep2948, i64 %residual-loop-index2222 %1998 = load i8, ptr %scevgep2949, align 1 %scevgep2947 = getelementptr i8, ptr %scevgep2946, i64 %residual-loop-index2222 store i8 %1998, ptr %scevgep2947, align 1 %1999 = add i64 %residual-loop-index2222, 1 %2000 = icmp uge i64 %1999, %1983 %2001 = call i64 @llvm.amdgcn.if.break.i64(i1 %2000, i64 %phi.broken3940) %2002 = call i1 @llvm.amdgcn.loop.i64(i64 %2001) br i1 %2002, label %Flow3516, label %loop-memcpy-residual2220 Flow3516: ; preds = %loop-memcpy-residual2220 %.lcssa4026 = phi i64 [ %2001, %loop-memcpy-residual2220 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4026) br label %Flow3519, !amdgpu.uniform !42 post-loop-memcpy-expansion2217: ; preds = %Flow3519 %2003 = add i64 %lsr.iv.next2943.lcssa, -56 %tobool.not.i.i.i.i.i.i1516 = icmp eq i32 %.lcssa4031, 0 %conv.i.i.i.i.i.i1517 = zext i1 %tobool.not.i.i.i.i.i.i1516 to i32 fence release %2004 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i1518 = zext i32 %.lcssa4033 to i64 %arrayidx.i24.i.i.i.i.i1519 = getelementptr inbounds nuw i32, ptr %2004, i64 %idxprom.i23.i.i.i.i.i1518 store atomic i32 %conv.i.i.i.i.i.i1517, ptr %arrayidx.i24.i.i.i.i.i1519 monotonic, align 4 %2005 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i1520 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2005, i64 %idxprom.i23.i.i.i.i.i1518, !amdgpu.uniform !42 %2006 = load i64, ptr %arrayidx.i.i5.i.i1520, align 8, !tbaa !80 %scevgep2925 = getelementptr i8, ptr %RHSStr, i64 56 br label %while.cond.i.i.i.i1521, !amdgpu.uniform !42 while.cond.i.i.i.i1521: ; preds = %post-loop-memcpy-expansion2217, %Flow3514 %phi.broken3943 = phi i64 [ 0, %post-loop-memcpy-expansion2217 ], [ %2023, %Flow3514 ] %lsr.iv2933 = phi i64 [ %2021, %Flow3514 ], [ %2003, %post-loop-memcpy-expansion2217 ] %lsr.iv2926 = phi ptr [ %2020, %Flow3514 ], [ %scevgep2925, %post-loop-memcpy-expansion2217 ] %port.sroa.37.0.i.i1522 = phi i32 [ %2019, %Flow3514 ], [ %conv.i.i.i.i.i.i1517, %post-loop-memcpy-expansion2217 ] %idx.0.i.i.i.i1523 = phi i64 [ %2018, %Flow3514 ], [ 56, %post-loop-memcpy-expansion2217 ] %cmp.i.i.i.i1524 = icmp ugt i64 %sub.ptr.sub.i.i.i1466, %idx.0.i.i.i.i1523 %2007 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i1524) %and.i.i.i.i6.i.i1525 = and i64 %2007, %2006 %tobool.not.i.i.i.i1526 = icmp ne i64 %and.i.i.i.i6.i.i1525, 0 %2008 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i1527 = getelementptr inbounds nuw i32, ptr %2008, i64 %idxprom.i23.i.i.i.i.i1518, !amdgpu.uniform !42 %2009 = load atomic i32, ptr %arrayidx.i22.i.i.i1527 monotonic, align 4 %2010 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i1526) %2011 = extractvalue { i1, i64 } %2010, 0 %2012 = extractvalue { i1, i64 } %2010, 1 br i1 %2011, label %cond.false.i8.i.i.i.i1528, label %Flow3514 cond.false.i8.i.i.i.i1528: ; preds = %while.cond.i.i.i.i1521 %2013 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2009) %2014 = icmp ne i32 %2013, %port.sroa.37.0.i.i1522 br i1 %2014, label %while.body.i.i21.i.i.i.i1529.preheader, label %Flow3513, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1529.preheader: ; preds = %cond.false.i8.i.i.i.i1528 br label %while.body.i.i21.i.i.i.i1529, !amdgpu.uniform !42 Flow3513: ; preds = %Flow3511, %cond.false.i8.i.i.i.i1528 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1532, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1529: ; preds = %while.body.i.i21.i.i.i.i1529.preheader, %while.body.i.i21.i.i.i.i1529 tail call void @llvm.amdgcn.s.sleep(i32 2) %2015 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i1530 = getelementptr inbounds nuw i32, ptr %2015, i64 %idxprom.i23.i.i.i.i.i1518, !amdgpu.uniform !42 %2016 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i1530 monotonic, align 4 %2017 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2016) %cmp.i.not.i.i23.i.i.i.i1531 = icmp eq i32 %2017, %port.sroa.37.0.i.i1522 br i1 %cmp.i.not.i.i23.i.i.i.i1531, label %Flow3511, label %while.body.i.i21.i.i.i.i1529, !amdgpu.uniform !42 Flow3511: ; preds = %while.body.i.i21.i.i.i.i1529 br label %Flow3513, !amdgpu.uniform !42 Flow3514: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1533, %while.cond.i.i.i.i1521 %2018 = phi i64 [ %add.i.i.i.i1536, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1533 ], [ poison, %while.cond.i.i.i.i1521 ] %2019 = phi i32 [ %conv.i.i26.i.i.i.i1534, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1533 ], [ poison, %while.cond.i.i.i.i1521 ] %2020 = phi ptr [ %scevgep2927, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1533 ], [ poison, %while.cond.i.i.i.i1521 ] %2021 = phi i64 [ %lsr.iv.next2934, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1533 ], [ poison, %while.cond.i.i.i.i1521 ] %2022 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1533 ], [ true, %while.cond.i.i.i.i1521 ] call void @llvm.amdgcn.end.cf.i64(i64 %2012) %2023 = call i64 @llvm.amdgcn.if.break.i64(i1 %2022, i64 %phi.broken3943) %2024 = call i1 @llvm.amdgcn.loop.i64(i64 %2023) br i1 %2024, label %cond.false.i.i.i1543, label %while.cond.i.i.i.i1521 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1532: ; preds = %Flow3513 fence acquire %2025 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i1524) %2026 = extractvalue { i1, i64 } %2025, 0 %2027 = extractvalue { i1, i64 } %2025, 1 br i1 %2026, label %if.then.i.i.i.i.i.i.i1537, label %Flow3510 if.then.i.i.i.i.i.i.i1537: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1532 %sub.i.i.i.i.i.i.i1539 = sub nuw i64 %sub.ptr.sub.i.i.i1466, %idx.0.i.i.i.i1523 %spec.select.i.i.i36.i.i.i.i1540 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i1539, i64 64) %2028 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %2029 = and i64 %spec.select.i.i.i36.i.i.i.i1540, 15 %2030 = sub i64 %spec.select.i.i.i36.i.i.i.i1540, %2029 %2031 = icmp ne i64 %2030, 0 %2032 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2031) %2033 = extractvalue { i1, i64 } %2032, 0 %2034 = extractvalue { i1, i64 } %2032, 1 br i1 %2033, label %loop-memcpy-expansion2212.preheader, label %Flow3509 loop-memcpy-expansion2212.preheader: ; preds = %if.then.i.i.i.i.i.i.i1537 %arrayidx.i20.i35.i.i.i.i1541 = getelementptr %"struct.rpc::Buffer", ptr %2028, i64 %idxprom.i19.i.i.i.i.i1511 %arrayidx.i22.i38.i.i.i.i1542 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i1541, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2212, !amdgpu.uniform !42 Flow3509: ; preds = %Flow3508, %if.then.i.i.i.i.i.i.i1537 call void @llvm.amdgcn.end.cf.i64(i64 %2034) br label %loop-memcpy-residual-header2215, !amdgpu.uniform !42 loop-memcpy-expansion2212: ; preds = %loop-memcpy-expansion2212.preheader, %loop-memcpy-expansion2212 %phi.broken3941 = phi i64 [ 0, %loop-memcpy-expansion2212.preheader ], [ %2039, %loop-memcpy-expansion2212 ] %loop-index2213 = phi i64 [ %2037, %loop-memcpy-expansion2212 ], [ 0, %loop-memcpy-expansion2212.preheader ] %scevgep2928 = getelementptr i8, ptr %lsr.iv2926, i64 %loop-index2213 %2035 = load <4 x i32>, ptr %scevgep2928, align 1 %2036 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i1542, i64 %loop-index2213 store <4 x i32> %2035, ptr %2036, align 1 %2037 = add i64 %loop-index2213, 16 %2038 = icmp uge i64 %2037, %2030 %2039 = call i64 @llvm.amdgcn.if.break.i64(i1 %2038, i64 %phi.broken3941) %2040 = call i1 @llvm.amdgcn.loop.i64(i64 %2039) br i1 %2040, label %Flow3508, label %loop-memcpy-expansion2212 Flow3506: ; preds = %Flow3505, %loop-memcpy-residual-header2215 call void @llvm.amdgcn.end.cf.i64(i64 %2735) br label %Flow3510, !amdgpu.uniform !42 loop-memcpy-residual2214: ; preds = %loop-memcpy-residual2214.preheader, %loop-memcpy-residual2214 %phi.broken3942 = phi i64 [ 0, %loop-memcpy-residual2214.preheader ], [ %2044, %loop-memcpy-residual2214 ] %residual-loop-index2216 = phi i64 [ %2042, %loop-memcpy-residual2214 ], [ 0, %loop-memcpy-residual2214.preheader ] %scevgep2940 = getelementptr i8, ptr %scevgep2939, i64 %residual-loop-index2216 %2041 = load i8, ptr %scevgep2940, align 1 %scevgep2937 = getelementptr i8, ptr %scevgep2936, i64 %residual-loop-index2216 store i8 %2041, ptr %scevgep2937, align 1 %2042 = add i64 %residual-loop-index2216, 1 %2043 = icmp uge i64 %2042, %2029 %2044 = call i64 @llvm.amdgcn.if.break.i64(i1 %2043, i64 %phi.broken3942) %2045 = call i1 @llvm.amdgcn.loop.i64(i64 %2044) br i1 %2045, label %Flow3505, label %loop-memcpy-residual2214 Flow3505: ; preds = %loop-memcpy-residual2214 %.lcssa4023 = phi i64 [ %2044, %loop-memcpy-residual2214 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4023) br label %Flow3506, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1533: ; preds = %Flow3510 %conv.i.i26.i.i.i.i1534 = xor i32 %port.sroa.37.0.i.i1522, 1 fence release %2046 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i1535 = getelementptr inbounds nuw i32, ptr %2046, i64 %idxprom.i23.i.i.i.i.i1518 store atomic i32 %conv.i.i26.i.i.i.i1534, ptr %arrayidx.i24.i29.i.i.i.i1535 monotonic, align 4 %add.i.i.i.i1536 = add i64 %idx.0.i.i.i.i1523, 64 %scevgep2927 = getelementptr i8, ptr %lsr.iv2926, i64 64 %lsr.iv.next2934 = add i64 %lsr.iv2933, -64 br label %Flow3514, !amdgpu.uniform !42 cond.false.i.i.i1543: ; preds = %Flow3514 %.lcssa4025 = phi i64 [ %2023, %Flow3514 ] %port.sroa.37.0.i.i1522.lcssa = phi i32 [ %port.sroa.37.0.i.i1522, %Flow3514 ] %.lcssa4024 = phi i32 [ %2009, %Flow3514 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4025) %2047 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa4024) %2048 = icmp ne i32 %2047, %port.sroa.37.0.i.i1522.lcssa %2049 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2048) %2050 = extractvalue { i1, i64 } %2049, 0 %2051 = extractvalue { i1, i64 } %2049, 1 br i1 %2050, label %while.body.i.i.i.i1544.preheader, label %Flow3503 while.body.i.i.i.i1544.preheader: ; preds = %cond.false.i.i.i1543 br label %while.body.i.i.i.i1544, !amdgpu.uniform !42 Flow3503: ; preds = %Flow3501, %cond.false.i.i.i1543 call void @llvm.amdgcn.end.cf.i64(i64 %2051) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1565, !amdgpu.uniform !42 while.body.i.i.i.i1544: ; preds = %while.body.i.i.i.i1544.preheader, %while.body.i.i.i.i1544 %phi.broken3944 = phi i64 [ 0, %while.body.i.i.i.i1544.preheader ], [ %2055, %while.body.i.i.i.i1544 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %2052 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i1545 = getelementptr inbounds nuw i32, ptr %2052, i64 %idxprom.i23.i.i.i.i.i1518, !amdgpu.uniform !42 %2053 = load atomic i32, ptr %arrayidx.i.i.i8.i.i1545 monotonic, align 4 %2054 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2053) %cmp.i.not.i.i.i.i1546 = icmp eq i32 %2054, %port.sroa.37.0.i.i1522.lcssa %2055 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i1546, i64 %phi.broken3944) %2056 = call i1 @llvm.amdgcn.loop.i64(i64 %2055) br i1 %2056, label %Flow3501, label %while.body.i.i.i.i1544 Flow3501: ; preds = %while.body.i.i.i.i1544 %.lcssa4021 = phi i64 [ %2055, %while.body.i.i.i.i1544 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4021) br label %Flow3503, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1565: ; preds = %Flow3503 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %2057 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4032, i1 true) %iszero.i.i.i.i.i13.i.i1548 = icmp ne i64 %.lcssa4032, 0 %cmp2.i.i.i.i14.i.i1549 = icmp eq i64 %2057, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i1550 = select i1 %iszero.i.i.i.i.i13.i.i1548, i1 %cmp2.i.i.i.i14.i.i1549, i1 false %2058 = and i32 %.lcssa4033, 31 %conv4.i.i.i19.i.i1554 = zext i1 %cmp.i.i.i.i15.i.i1550 to i32 %shl.i.i.i20.i.i1555 = shl nuw i32 %conv4.i.i.i19.i.i1554, %2058 %xor.i.i.i21.i.i1556 = xor i32 %shl.i.i.i20.i.i1555, -1 %2059 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2626, !amdgpu.uniform !42 2060: ; preds = %ComputeEnd2627 %div8.i.i.i16.i.i1551 = lshr i32 %.lcssa4033, 5 %idxprom.i.i.i17.i.i1552 = zext nneg i32 %div8.i.i.i16.i.i1551 to i64 %2061 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i1552 %sunkaddr3320 = getelementptr inbounds i8, ptr addrspace(1) %2061, i64 40 %2062 = atomicrmw and ptr addrspace(1) %sunkaddr3320, i32 %.lcssa4020 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2063, !amdgpu.uniform !42 2063: ; preds = %2060, %ComputeEnd2627 call void @llvm.amdgcn.end.cf.i64(i64 %3785) tail call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i.i1569, !amdgpu.uniform !42 for.cond.i.i.i1569: ; preds = %2063, %Flow3500 %2064 = phi i32 [ %2102, %Flow3500 ], [ poison, %2063 ] %2065 = phi i64 [ %2103, %Flow3500 ], [ poison, %2063 ] %2066 = phi i32 [ %2104, %Flow3500 ], [ poison, %2063 ] %retval.sroa.6.0.i.i.i1570 = phi i32 [ %2107, %Flow3500 ], [ undef, %2063 ] %retval.sroa.2.0.i.i.i1572 = phi i64 [ %2106, %Flow3500 ], [ undef, %2063 ] %retval.sroa.8.0.i.i.i1573 = phi i32 [ %2105, %Flow3500 ], [ undef, %2063 ] %index.0.i.i.i1574 = phi i32 [ %2109, %Flow3500 ], [ 0, %2063 ] %2067 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i1575 = icmp ult i32 %index.0.i.i.i1574, %2067 %spec.store.select.i.i.i1576 = select i1 %cmp.not.i.i.i1575, i32 %index.0.i.i.i1574, i32 0 %2068 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %2069 = and i32 %spec.store.select.i.i.i1576, 31 %2070 = lshr i64 %2068, %sh_prom.i.i.i.i %2071 = trunc i64 %2070 to i32 %conv4.i.i.i.i.i1580 = and i32 %2071, 1 %shl.i.i.i.i.i1581 = shl nuw i32 %conv4.i.i.i.i.i1580, %2069 %2072 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2630, !amdgpu.uniform !42 2073: ; preds = %ComputeEnd2631 %sunkaddr3321 = getelementptr inbounds i8, ptr addrspace(1) %3795, i64 40 %2074 = atomicrmw or ptr addrspace(1) %sunkaddr3321, i32 %.lcssa4014 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2075, !amdgpu.uniform !42 2075: ; preds = %2073, %ComputeEnd2631 %2076 = phi i32 [ %2074, %2073 ], [ poison, %ComputeEnd2631 ] call void @llvm.amdgcn.end.cf.i64(i64 %3804) %2077 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %2076) %2078 = or i32 %2077, %.lcssa4015 %shl5.i.i.i.i.i1582 = shl nuw i32 1, %2069 %and.i.i.i.i.i1583 = and i32 %shl5.i.i.i.i.i1582, %2078 %tobool3.i.i.i.i1584 = icmp ne i32 %and.i.i.i.i.i1583, 0 %2079 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i1584) %and.i.i.i.i.i.i1585 = and i64 %2079, %2068 %cmp.i.not.i.i.i1586 = icmp ne i64 %2068, %and.i.i.i.i.i.i1585 br i1 %cmp.i.not.i.i.i1586, label %if.then.i.i.i.i1587, label %Flow3499, !amdgpu.uniform !42 if.then.i.i.i.i1587: ; preds = %2075 fence syncscope("agent") acquire %2080 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %2081 = extractelement <2 x i64> %2080, i32 0 %2082 = inttoptr i64 %2081 to ptr %2083 = extractelement <2 x i64> %2080, i32 1 %2084 = inttoptr i64 %2083 to ptr %idxprom.i.i.i.i1588 = zext i32 %spec.store.select.i.i.i1576 to i64 %arrayidx.i.i.i.i1589 = getelementptr inbounds nuw i32, ptr %2082, i64 %idxprom.i.i.i.i1588, !amdgpu.uniform !42 %2085 = load atomic i32, ptr %arrayidx.i.i.i.i1589 monotonic, align 4 %2086 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2085) %arrayidx.i45.i.i.i1590 = getelementptr inbounds nuw i32, ptr %2084, i64 %idxprom.i.i.i.i1588, !amdgpu.uniform !42 %2087 = load atomic i32, ptr %arrayidx.i45.i.i.i1590 monotonic, align 4 %2088 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2087) %cmp.i46.not.i.i.i1591 = icmp ne i32 %2086, %2088 br i1 %cmp.i46.not.i.i.i1591, label %if.then12.i.i.i1592, label %Flow3497, !amdgpu.uniform !42 if.then12.i.i.i1592: ; preds = %if.then.i.i.i.i1587 fence syncscope("agent") release %2089 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %2068, i1 true) %iszero.i.i.i.i.i.i.i1593 = icmp ne i64 %2068, 0 %cmp2.i.i.i.i.i.i1594 = icmp eq i64 %2089, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i1595 = select i1 %iszero.i.i.i.i.i.i.i1593, i1 %cmp2.i.i.i.i.i.i1594, i1 false %conv4.i.i51.i.i.i1596 = zext i1 %cmp.i.i.i.i.i.i1595 to i32 %shl.i.i52.i.i.i1597 = shl nuw i32 %conv4.i.i51.i.i.i1596, %2069 %xor.i.i.i.i.i1598 = xor i32 %shl.i.i52.i.i.i1597, -1 %2090 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2635, !amdgpu.uniform !42 2091: ; preds = %ComputeEnd2636 %sunkaddr3322 = getelementptr inbounds i8, ptr addrspace(1) %3795, i64 40 %2092 = atomicrmw and ptr addrspace(1) %sunkaddr3322, i32 %.lcssa4016 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2093, !amdgpu.uniform !42 2093: ; preds = %2091, %ComputeEnd2636 call void @llvm.amdgcn.end.cf.i64(i64 %3822) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3497, !amdgpu.uniform !42 if.end14.i.i.i1656: ; preds = %Flow3497 %2094 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %2068, i1 true) %iszero.i.i.i.i.i.i1657 = icmp ne i64 %2068, 0 %cmp2.i.i.i.i.i1658 = icmp eq i64 %2094, %sh_prom.i.i.i.i %cmp.i.i.i.i.i1659 = select i1 %iszero.i.i.i.i.i.i1657, i1 %cmp2.i.i.i.i.i1658, i1 false %2095 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i1659) %2096 = extractvalue { i1, i64 } %2095, 0 %2097 = extractvalue { i1, i64 } %2095, 1 br i1 %2096, label %if.then16.i.i.i1661, label %if.end22.i.i.i1660 if.then16.i.i.i1661: ; preds = %if.end14.i.i.i1656 %2098 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i1662 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2098, i64 %idxprom.i.i.i.i1588, i32 1 store i32 1660944387, ptr %opcode.i.i.i1662, align 8, !tbaa !77 %arrayidx21.i.i.i1663 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2098, i64 %idxprom.i.i.i.i1588 store i64 %2068, ptr %arrayidx21.i.i.i1663, align 8, !tbaa !80 br label %if.end22.i.i.i1660, !amdgpu.uniform !42 Flow3498: ; preds = %if.end22.i.i.i1660, %Flow3497 %2099 = phi i32 [ %2086, %if.end22.i.i.i1660 ], [ %retval.sroa.8.0.i.i.i1573, %Flow3497 ] %2100 = phi i64 [ %2068, %if.end22.i.i.i1660 ], [ %retval.sroa.2.0.i.i.i1572, %Flow3497 ] %2101 = phi i32 [ %spec.store.select.i.i.i1576, %if.end22.i.i.i1660 ], [ %retval.sroa.6.0.i.i.i1570, %Flow3497 ] br label %cleanup26.i.i.i1599, !amdgpu.uniform !42 if.end22.i.i.i1660: ; preds = %if.then16.i.i.i1661, %if.end14.i.i.i1656 call void @llvm.amdgcn.end.cf.i64(i64 %2097) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3498, !amdgpu.uniform !42 Flow3499: ; preds = %cleanup26.i.i.i1599, %2075 %2102 = phi i32 [ %2101, %cleanup26.i.i.i1599 ], [ %2064, %2075 ] %2103 = phi i64 [ %2100, %cleanup26.i.i.i1599 ], [ %2065, %2075 ] %2104 = phi i32 [ %2099, %cleanup26.i.i.i1599 ], [ %2066, %2075 ] %2105 = phi i32 [ %2099, %cleanup26.i.i.i1599 ], [ %retval.sroa.8.0.i.i.i1573, %2075 ] %2106 = phi i64 [ %2100, %cleanup26.i.i.i1599 ], [ %retval.sroa.2.0.i.i.i1572, %2075 ] %2107 = phi i32 [ %2101, %cleanup26.i.i.i1599 ], [ %retval.sroa.6.0.i.i.i1570, %2075 ] %2108 = phi i1 [ %cmp.i46.not.i.i.i1591, %cleanup26.i.i.i1599 ], [ true, %2075 ] br i1 %2108, label %for.inc.i.i.i1604, label %Flow3500, !amdgpu.uniform !42 cleanup26.i.i.i1599: ; preds = %Flow3498 br label %Flow3499, !amdgpu.uniform !42 for.inc.i.i.i1604: ; preds = %Flow3499 %inc.i.i.i1609 = add i32 %spec.store.select.i.i.i1576, 1 br label %Flow3500, !amdgpu.uniform !42 Flow3500: ; preds = %for.inc.i.i.i1604, %Flow3499 %2109 = phi i32 [ %inc.i.i.i1609, %for.inc.i.i.i1604 ], [ poison, %Flow3499 ] %2110 = phi i1 [ false, %for.inc.i.i.i1604 ], [ true, %Flow3499 ] br i1 %2110, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1610, label %for.cond.i.i.i1569, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1610: ; preds = %Flow3500 %.lcssa4019 = phi i32 [ %2102, %Flow3500 ] %.lcssa4018 = phi i64 [ %2103, %Flow3500 ] %.lcssa4017 = phi i32 [ %2104, %Flow3500 ] fence acquire %2111 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i1611 = shl i32 %.lcssa4019, 6 %idxprom.i19.i.i.i.i.i1612 = zext i32 %mul.i.i.i.i.i.i1611 to i64 %arrayidx.i20.i.i.i.i.i1613 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %2111, i64 %idxprom.i19.i.i.i.i.i1612 %arrayidx.i22.i.i.i.i.i1614 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i1613, i64 %sh_prom.i.i.i.i store i64 1, ptr %arrayidx.i22.i.i.i.i.i1614, align 8, !tbaa !82 %arrayidx6.i.i.i.i.i.i.i1615 = getelementptr inbounds nuw i8, ptr %arrayidx.i22.i.i.i.i.i1614, i64 8 store i8 10, ptr %arrayidx6.i.i.i.i.i.i.i1615, align 8 %tobool.not.i.i.i.i.i.i1616 = icmp eq i32 %.lcssa4017, 0 %conv.i.i.i.i.i.i1617 = zext i1 %tobool.not.i.i.i.i.i.i1616 to i32 fence release %2112 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i1618 = zext i32 %.lcssa4019 to i64 %arrayidx.i24.i.i.i.i.i1619 = getelementptr inbounds nuw i32, ptr %2112, i64 %idxprom.i23.i.i.i.i.i1618 store atomic i32 %conv.i.i.i.i.i.i1617, ptr %arrayidx.i24.i.i.i.i.i1619 monotonic, align 4 %2113 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i1620 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2113, i64 %idxprom.i23.i.i.i.i.i1618, !amdgpu.uniform !42 %2114 = load i64, ptr %arrayidx.i.i5.i.i1620, align 8, !tbaa !80 br label %while.cond.i.i.i.i1621, !amdgpu.uniform !42 while.cond.i.i.i.i1621: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1610, %Flow3496 %phi.broken3945 = phi i64 [ 0, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1610 ], [ %2129, %Flow3496 ] %port.sroa.37.0.i.i1622 = phi i32 [ %2127, %Flow3496 ], [ %conv.i.i.i.i.i.i1617, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1610 ] %idx.0.i.i.i.i1623 = phi i64 [ %2126, %Flow3496 ], [ 56, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1610 ] %cmp.i.i.i.i1624 = icmp eq i64 %idx.0.i.i.i.i1623, 0 %2115 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i1624) %and.i.i.i.i6.i.i1625 = and i64 %2115, %2114 %tobool.not.i.i.i.i1626 = icmp ne i64 %and.i.i.i.i6.i.i1625, 0 %2116 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i1627 = getelementptr inbounds nuw i32, ptr %2116, i64 %idxprom.i23.i.i.i.i.i1618, !amdgpu.uniform !42 %2117 = load atomic i32, ptr %arrayidx.i22.i.i.i1627 monotonic, align 4 %2118 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i1626) %2119 = extractvalue { i1, i64 } %2118, 0 %2120 = extractvalue { i1, i64 } %2118, 1 br i1 %2119, label %cond.false.i8.i.i.i.i1628, label %Flow3496 cond.false.i8.i.i.i.i1628: ; preds = %while.cond.i.i.i.i1621 %2121 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2117) %2122 = icmp ne i32 %2121, %port.sroa.37.0.i.i1622 br i1 %2122, label %while.body.i.i21.i.i.i.i1629.preheader, label %Flow3495, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1629.preheader: ; preds = %cond.false.i8.i.i.i.i1628 br label %while.body.i.i21.i.i.i.i1629, !amdgpu.uniform !42 Flow3495: ; preds = %Flow3493, %cond.false.i8.i.i.i.i1628 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1632, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1629: ; preds = %while.body.i.i21.i.i.i.i1629.preheader, %while.body.i.i21.i.i.i.i1629 tail call void @llvm.amdgcn.s.sleep(i32 2) %2123 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i1630 = getelementptr inbounds nuw i32, ptr %2123, i64 %idxprom.i23.i.i.i.i.i1618, !amdgpu.uniform !42 %2124 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i1630 monotonic, align 4 %2125 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2124) %cmp.i.not.i.i23.i.i.i.i1631 = icmp eq i32 %2125, %port.sroa.37.0.i.i1622 br i1 %cmp.i.not.i.i23.i.i.i.i1631, label %Flow3493, label %while.body.i.i21.i.i.i.i1629, !amdgpu.uniform !42 Flow3493: ; preds = %while.body.i.i21.i.i.i.i1629 br label %Flow3495, !amdgpu.uniform !42 Flow3496: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1633, %while.cond.i.i.i.i1621 %2126 = phi i64 [ %add.i.i.i.i1636, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1633 ], [ poison, %while.cond.i.i.i.i1621 ] %2127 = phi i32 [ %conv.i.i26.i.i.i.i1634, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1633 ], [ poison, %while.cond.i.i.i.i1621 ] %2128 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1633 ], [ true, %while.cond.i.i.i.i1621 ] call void @llvm.amdgcn.end.cf.i64(i64 %2120) %2129 = call i64 @llvm.amdgcn.if.break.i64(i1 %2128, i64 %phi.broken3945) %2130 = call i1 @llvm.amdgcn.loop.i64(i64 %2129) br i1 %2130, label %cond.false.i.i.i1642, label %while.cond.i.i.i.i1621 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1632: ; preds = %Flow3495 fence acquire br i1 %cmp.i.i.i.i1624, label %if.then.i.i.i.i.i.i.i1637, label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1633, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i1637: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1632 %2131 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %arrayidx.i20.i35.i.i.i.i1640 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %2131, i64 %idxprom.i19.i.i.i.i.i1612 %arrayidx.i22.i38.i.i.i.i1641 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i1640, i64 %sh_prom.i.i.i.i store i8 10, ptr %arrayidx.i22.i38.i.i.i.i1641, align 1 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1633, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1633: ; preds = %if.then.i.i.i.i.i.i.i1637, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1632 %conv.i.i26.i.i.i.i1634 = xor i32 %port.sroa.37.0.i.i1622, 1 fence release %2132 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i1635 = getelementptr inbounds nuw i32, ptr %2132, i64 %idxprom.i23.i.i.i.i.i1618 store atomic i32 %conv.i.i26.i.i.i.i1634, ptr %arrayidx.i24.i29.i.i.i.i1635 monotonic, align 4 %add.i.i.i.i1636 = add i64 %idx.0.i.i.i.i1623, 64 br label %Flow3496, !amdgpu.uniform !42 cond.false.i.i.i1642: ; preds = %Flow3496 %.lcssa4013 = phi i64 [ %2129, %Flow3496 ] %port.sroa.37.0.i.i1622.lcssa = phi i32 [ %port.sroa.37.0.i.i1622, %Flow3496 ] %.lcssa4012 = phi i32 [ %2117, %Flow3496 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4013) %2133 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa4012) %2134 = icmp ne i32 %2133, %port.sroa.37.0.i.i1622.lcssa %2135 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2134) %2136 = extractvalue { i1, i64 } %2135, 0 %2137 = extractvalue { i1, i64 } %2135, 1 br i1 %2136, label %while.body.i.i.i.i1643.preheader, label %Flow3492 while.body.i.i.i.i1643.preheader: ; preds = %cond.false.i.i.i1642 br label %while.body.i.i.i.i1643, !amdgpu.uniform !42 Flow3492: ; preds = %Flow3490, %cond.false.i.i.i1642 call void @llvm.amdgcn.end.cf.i64(i64 %2137) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit1664, !amdgpu.uniform !42 while.body.i.i.i.i1643: ; preds = %while.body.i.i.i.i1643.preheader, %while.body.i.i.i.i1643 %phi.broken3946 = phi i64 [ 0, %while.body.i.i.i.i1643.preheader ], [ %2141, %while.body.i.i.i.i1643 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %2138 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i1644 = getelementptr inbounds nuw i32, ptr %2138, i64 %idxprom.i23.i.i.i.i.i1618, !amdgpu.uniform !42 %2139 = load atomic i32, ptr %arrayidx.i.i.i8.i.i1644 monotonic, align 4 %2140 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2139) %cmp.i.not.i.i.i.i1645 = icmp eq i32 %2140, %port.sroa.37.0.i.i1622.lcssa %2141 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i1645, i64 %phi.broken3946) %2142 = call i1 @llvm.amdgcn.loop.i64(i64 %2141) br i1 %2142, label %Flow3490, label %while.body.i.i.i.i1643 Flow3490: ; preds = %while.body.i.i.i.i1643 %.lcssa4011 = phi i64 [ %2141, %while.body.i.i.i.i1643 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4011) br label %Flow3492, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit1664: ; preds = %Flow3492 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %2143 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4018, i1 true) %iszero.i.i.i.i.i13.i.i1647 = icmp ne i64 %.lcssa4018, 0 %cmp2.i.i.i.i14.i.i1648 = icmp eq i64 %2143, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i1649 = select i1 %iszero.i.i.i.i.i13.i.i1647, i1 %cmp2.i.i.i.i14.i.i1648, i1 false %2144 = and i32 %.lcssa4019, 31 %conv4.i.i.i19.i.i1653 = zext i1 %cmp.i.i.i.i15.i.i1649 to i32 %shl.i.i.i20.i.i1654 = shl nuw i32 %conv4.i.i.i19.i.i1653, %2144 %xor.i.i.i21.i.i1655 = xor i32 %shl.i.i.i20.i.i1654, -1 %2145 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2639, !amdgpu.uniform !42 2146: ; preds = %ComputeEnd2640 %div8.i.i.i16.i.i1650 = lshr i32 %.lcssa4019, 5 %idxprom.i.i.i17.i.i1651 = zext nneg i32 %div8.i.i.i16.i.i1650 to i64 %2147 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i1651 %sunkaddr3323 = getelementptr inbounds i8, ptr addrspace(1) %2147, i64 40 %2148 = atomicrmw and ptr addrspace(1) %sunkaddr3323, i32 %.lcssa4010 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2149, !amdgpu.uniform !42 2149: ; preds = %2146, %ComputeEnd2640 call void @llvm.amdgcn.end.cf.i64(i64 %3839) tail call void @llvm.amdgcn.wave.barrier() br i1 %cmp2.i.i.i35.i, label %if.then3.i.i.i87.i, label %if.end4.i.i.i76.i, !amdgpu.uniform !42 if.then3.i.i.i87.i: ; preds = %2149 %mul.i.i.i88.i = mul nuw i64 %inc.i.i.i32.i, 11 %div18.i.i.i89.i = lshr i64 %mul.i.i.i88.i, 3 br label %if.end4.i.i.i76.i, !amdgpu.uniform !42 if.end4.i.i.i76.i: ; preds = %if.then3.i.i.i87.i, %2149 %new_capacity.addr.0.i.i.i77.i = phi i64 [ %div18.i.i.i89.i, %if.then3.i.i.i87.i ], [ %inc.i.i.i32.i, %2149 ] %sub.i.i1665 = add i64 %new_capacity.addr.0.i.i.i77.i, 7 %div2.i.i1666 = and i64 %sub.i.i1665, -8 %2150 = load ptr, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %add.ptr.i.i1667 = getelementptr inbounds nuw i8, ptr %2150, i64 %div2.i.i1666 store ptr %add.ptr.i.i1667, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 br i1 %597, label %loop-memcpy-expansion2272.preheader, label %Flow3489, !amdgpu.uniform !42 loop-memcpy-expansion2272.preheader: ; preds = %if.end4.i.i.i76.i br label %loop-memcpy-expansion2272, !amdgpu.uniform !42 Flow3489: ; preds = %Flow3488, %if.end4.i.i.i76.i br label %loop-memcpy-residual-header2275, !amdgpu.uniform !42 loop-memcpy-expansion2272: ; preds = %loop-memcpy-expansion2272.preheader, %loop-memcpy-expansion2272 %loop-index2273 = phi i64 [ %2154, %loop-memcpy-expansion2272 ], [ 0, %loop-memcpy-expansion2272.preheader ] %2151 = getelementptr i8, ptr %3, i64 %loop-index2273, !amdgpu.uniform !42 %2152 = load <4 x i32>, ptr %2151, align 1 %2153 = getelementptr i8, ptr %2150, i64 %loop-index2273 store <4 x i32> %2152, ptr %2153, align 1 %2154 = add i64 %loop-index2273, 16 %2155 = icmp uge i64 %2154, %596 br i1 %2155, label %Flow3488, label %loop-memcpy-expansion2272, !amdgpu.uniform !42 Flow3486: ; preds = %Flow3485, %loop-memcpy-residual-header2275 br label %post-loop-memcpy-expansion2271, !amdgpu.uniform !42 loop-memcpy-residual2274: ; preds = %loop-memcpy-residual2274.preheader, %loop-memcpy-residual2274 %residual-loop-index2276 = phi i64 [ %2157, %loop-memcpy-residual2274 ], [ 0, %loop-memcpy-residual2274.preheader ] %scevgep2924 = getelementptr i8, ptr %scevgep2923, i64 %residual-loop-index2276, !amdgpu.uniform !42 %2156 = load i8, ptr %scevgep2924, align 1 %scevgep2922 = getelementptr i8, ptr %scevgep2921, i64 %residual-loop-index2276 store i8 %2156, ptr %scevgep2922, align 1 %2157 = add i64 %residual-loop-index2276, 1 %2158 = icmp uge i64 %2157, %595 br i1 %2158, label %Flow3485, label %loop-memcpy-residual2274, !amdgpu.uniform !42 Flow3485: ; preds = %loop-memcpy-residual2274 br label %Flow3486, !amdgpu.uniform !42 post-loop-memcpy-expansion2271: ; preds = %Flow3486 %sub.ptr.lhs.cast.i.i1668 = ptrtoint ptr %add.ptr.i.i1667 to i64 %sub.ptr.sub.i.i1669 = sub i64 %sub.ptr.lhs.cast.i.i1668, ptrtoint (ptr addrspacecast (ptr addrspace(1) @_ZN12_GLOBAL__N_16memoryE to ptr) to i64) %cmp.i.i1670 = icmp ugt i64 %sub.ptr.sub.i.i1669, 65335 %cond.i.i1671 = select i1 %cmp.i.i1670, ptr null, ptr %2150 %cmp.not.i10.i.i84.i = icmp ne ptr %cond.i.i1671, addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr) br i1 %cmp.not.i10.i.i84.i, label %if.then.i.i.i85.i, label %for.cond.i.i.i1673.preheader, !amdgpu.uniform !42 if.then.i.i.i85.i: ; preds = %post-loop-memcpy-expansion2271 %arrayidx.i.i.i86.i = getelementptr inbounds nuw i8, ptr %2150, i64 %spec.select.i store i8 0, ptr %arrayidx.i.i.i86.i, align 1, !tbaa !57 br label %for.cond.i.i.i1673.preheader, !amdgpu.uniform !42 for.cond.i.i.i1673.preheader: ; preds = %if.then.i.i.i85.i, %post-loop-memcpy-expansion2271 br label %for.cond.i.i.i1673, !amdgpu.uniform !42 for.cond.i.i.i1673: ; preds = %for.cond.i.i.i1673.preheader, %Flow3483 %2159 = phi i32 [ %2197, %Flow3483 ], [ poison, %for.cond.i.i.i1673.preheader ] %2160 = phi i64 [ %2198, %Flow3483 ], [ poison, %for.cond.i.i.i1673.preheader ] %2161 = phi i32 [ %2199, %Flow3483 ], [ poison, %for.cond.i.i.i1673.preheader ] %retval.sroa.6.0.i.i.i1674 = phi i32 [ %2202, %Flow3483 ], [ undef, %for.cond.i.i.i1673.preheader ] %retval.sroa.2.0.i.i.i1676 = phi i64 [ %2201, %Flow3483 ], [ undef, %for.cond.i.i.i1673.preheader ] %retval.sroa.8.0.i.i.i1677 = phi i32 [ %2200, %Flow3483 ], [ undef, %for.cond.i.i.i1673.preheader ] %index.0.i.i.i1678 = phi i32 [ %2204, %Flow3483 ], [ 0, %for.cond.i.i.i1673.preheader ] %2162 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i1679 = icmp ult i32 %index.0.i.i.i1678, %2162 %spec.store.select.i.i.i1680 = select i1 %cmp.not.i.i.i1679, i32 %index.0.i.i.i1678, i32 0 %2163 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %2164 = and i32 %spec.store.select.i.i.i1680, 31 %2165 = lshr i64 %2163, %sh_prom.i.i.i.i %2166 = trunc i64 %2165 to i32 %conv4.i.i.i.i.i1684 = and i32 %2166, 1 %shl.i.i.i.i.i1685 = shl nuw i32 %conv4.i.i.i.i.i1684, %2164 %2167 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2643, !amdgpu.uniform !42 2168: ; preds = %ComputeEnd2644 %sunkaddr3324 = getelementptr inbounds i8, ptr addrspace(1) %3849, i64 40 %2169 = atomicrmw or ptr addrspace(1) %sunkaddr3324, i32 %.lcssa4004 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2170, !amdgpu.uniform !42 2170: ; preds = %2168, %ComputeEnd2644 %2171 = phi i32 [ %2169, %2168 ], [ poison, %ComputeEnd2644 ] call void @llvm.amdgcn.end.cf.i64(i64 %3858) %2172 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %2171) %2173 = or i32 %2172, %.lcssa4005 %shl5.i.i.i.i.i1686 = shl nuw i32 1, %2164 %and.i.i.i.i.i1687 = and i32 %shl5.i.i.i.i.i1686, %2173 %tobool3.i.i.i.i1688 = icmp ne i32 %and.i.i.i.i.i1687, 0 %2174 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i1688) %and.i.i.i.i.i.i1689 = and i64 %2174, %2163 %cmp.i.not.i.i.i1690 = icmp ne i64 %2163, %and.i.i.i.i.i.i1689 br i1 %cmp.i.not.i.i.i1690, label %if.then.i.i.i.i1691, label %Flow3482, !amdgpu.uniform !42 if.then.i.i.i.i1691: ; preds = %2170 fence syncscope("agent") acquire %2175 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %2176 = extractelement <2 x i64> %2175, i32 0 %2177 = inttoptr i64 %2176 to ptr %2178 = extractelement <2 x i64> %2175, i32 1 %2179 = inttoptr i64 %2178 to ptr %idxprom.i.i.i.i1692 = zext i32 %spec.store.select.i.i.i1680 to i64 %arrayidx.i.i.i.i1693 = getelementptr inbounds nuw i32, ptr %2177, i64 %idxprom.i.i.i.i1692, !amdgpu.uniform !42 %2180 = load atomic i32, ptr %arrayidx.i.i.i.i1693 monotonic, align 4 %2181 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2180) %arrayidx.i45.i.i.i1694 = getelementptr inbounds nuw i32, ptr %2179, i64 %idxprom.i.i.i.i1692, !amdgpu.uniform !42 %2182 = load atomic i32, ptr %arrayidx.i45.i.i.i1694 monotonic, align 4 %2183 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2182) %cmp.i46.not.i.i.i1695 = icmp ne i32 %2181, %2183 br i1 %cmp.i46.not.i.i.i1695, label %if.then12.i.i.i1696, label %Flow3480, !amdgpu.uniform !42 if.then12.i.i.i1696: ; preds = %if.then.i.i.i.i1691 fence syncscope("agent") release %2184 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %2163, i1 true) %iszero.i.i.i.i.i.i.i1697 = icmp ne i64 %2163, 0 %cmp2.i.i.i.i.i.i1698 = icmp eq i64 %2184, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i1699 = select i1 %iszero.i.i.i.i.i.i.i1697, i1 %cmp2.i.i.i.i.i.i1698, i1 false %conv4.i.i51.i.i.i1700 = zext i1 %cmp.i.i.i.i.i.i1699 to i32 %shl.i.i52.i.i.i1701 = shl nuw i32 %conv4.i.i51.i.i.i1700, %2164 %xor.i.i.i.i.i1702 = xor i32 %shl.i.i52.i.i.i1701, -1 %2185 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2648, !amdgpu.uniform !42 2186: ; preds = %ComputeEnd2649 %sunkaddr3325 = getelementptr inbounds i8, ptr addrspace(1) %3849, i64 40 %2187 = atomicrmw and ptr addrspace(1) %sunkaddr3325, i32 %.lcssa4006 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2188, !amdgpu.uniform !42 2188: ; preds = %2186, %ComputeEnd2649 call void @llvm.amdgcn.end.cf.i64(i64 %3876) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3480, !amdgpu.uniform !42 if.end14.i.i.i1762: ; preds = %Flow3480 %2189 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %2163, i1 true) %iszero.i.i.i.i.i.i1763 = icmp ne i64 %2163, 0 %cmp2.i.i.i.i.i1764 = icmp eq i64 %2189, %sh_prom.i.i.i.i %cmp.i.i.i.i.i1765 = select i1 %iszero.i.i.i.i.i.i1763, i1 %cmp2.i.i.i.i.i1764, i1 false %2190 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i1765) %2191 = extractvalue { i1, i64 } %2190, 0 %2192 = extractvalue { i1, i64 } %2190, 1 br i1 %2191, label %if.then16.i.i.i1767, label %if.end22.i.i.i1766 if.then16.i.i.i1767: ; preds = %if.end14.i.i.i1762 %2193 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i1768 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2193, i64 %idxprom.i.i.i.i1692, i32 1 store i32 1660944387, ptr %opcode.i.i.i1768, align 8, !tbaa !77 %arrayidx21.i.i.i1769 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2193, i64 %idxprom.i.i.i.i1692 store i64 %2163, ptr %arrayidx21.i.i.i1769, align 8, !tbaa !80 br label %if.end22.i.i.i1766, !amdgpu.uniform !42 Flow3481: ; preds = %if.end22.i.i.i1766, %Flow3480 %2194 = phi i32 [ %2181, %if.end22.i.i.i1766 ], [ %retval.sroa.8.0.i.i.i1677, %Flow3480 ] %2195 = phi i64 [ %2163, %if.end22.i.i.i1766 ], [ %retval.sroa.2.0.i.i.i1676, %Flow3480 ] %2196 = phi i32 [ %spec.store.select.i.i.i1680, %if.end22.i.i.i1766 ], [ %retval.sroa.6.0.i.i.i1674, %Flow3480 ] br label %cleanup26.i.i.i1703, !amdgpu.uniform !42 if.end22.i.i.i1766: ; preds = %if.then16.i.i.i1767, %if.end14.i.i.i1762 call void @llvm.amdgcn.end.cf.i64(i64 %2192) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3481, !amdgpu.uniform !42 Flow3482: ; preds = %cleanup26.i.i.i1703, %2170 %2197 = phi i32 [ %2196, %cleanup26.i.i.i1703 ], [ %2159, %2170 ] %2198 = phi i64 [ %2195, %cleanup26.i.i.i1703 ], [ %2160, %2170 ] %2199 = phi i32 [ %2194, %cleanup26.i.i.i1703 ], [ %2161, %2170 ] %2200 = phi i32 [ %2194, %cleanup26.i.i.i1703 ], [ %retval.sroa.8.0.i.i.i1677, %2170 ] %2201 = phi i64 [ %2195, %cleanup26.i.i.i1703 ], [ %retval.sroa.2.0.i.i.i1676, %2170 ] %2202 = phi i32 [ %2196, %cleanup26.i.i.i1703 ], [ %retval.sroa.6.0.i.i.i1674, %2170 ] %2203 = phi i1 [ %cmp.i46.not.i.i.i1695, %cleanup26.i.i.i1703 ], [ true, %2170 ] br i1 %2203, label %for.inc.i.i.i1708, label %Flow3483, !amdgpu.uniform !42 cleanup26.i.i.i1703: ; preds = %Flow3481 br label %Flow3482, !amdgpu.uniform !42 for.inc.i.i.i1708: ; preds = %Flow3482 %inc.i.i.i1713 = add i32 %spec.store.select.i.i.i1680, 1 br label %Flow3483, !amdgpu.uniform !42 Flow3483: ; preds = %for.inc.i.i.i1708, %Flow3482 %2204 = phi i32 [ %inc.i.i.i1713, %for.inc.i.i.i1708 ], [ poison, %Flow3482 ] %2205 = phi i1 [ false, %for.inc.i.i.i1708 ], [ true, %Flow3482 ] br i1 %2205, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1714, label %for.cond.i.i.i1673, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1714: ; preds = %Flow3483 %.lcssa4009 = phi i32 [ %2197, %Flow3483 ] %.lcssa4008 = phi i64 [ %2198, %Flow3483 ] %.lcssa4007 = phi i32 [ %2199, %Flow3483 ] fence acquire %2206 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i1715 = shl i32 %.lcssa4009, 6 %idxprom.i19.i.i.i.i.i1716 = zext i32 %mul.i.i.i.i.i.i1715 to i64 %arrayidx.i20.i.i.i.i.i1717 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %2206, i64 %idxprom.i19.i.i.i.i.i1716 %arrayidx.i22.i.i.i.i.i1718 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i1717, i64 %sh_prom.i.i.i.i store i64 %spec.select.i, ptr %arrayidx.i22.i.i.i.i.i1718, align 8, !tbaa !82 br i1 %656, label %loop-memcpy-expansion2206.preheader, label %Flow3479, !amdgpu.uniform !42 loop-memcpy-expansion2206.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1714 %2207 = add nuw nsw i64 %75, 8 %scevgep2917 = getelementptr i8, ptr %2206, i64 %2207 %2208 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1716, 6 %scevgep2918 = getelementptr i8, ptr %scevgep2917, i64 %2208 br label %loop-memcpy-expansion2206, !amdgpu.uniform !42 Flow3479: ; preds = %Flow3478, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1714 br label %loop-memcpy-residual-header2209, !amdgpu.uniform !42 loop-memcpy-expansion2206: ; preds = %loop-memcpy-expansion2206.preheader, %loop-memcpy-expansion2206 %loop-index2207 = phi i64 [ %2211, %loop-memcpy-expansion2206 ], [ 0, %loop-memcpy-expansion2206.preheader ] %2209 = getelementptr i8, ptr %2150, i64 %loop-index2207, !amdgpu.uniform !42 %2210 = load <4 x i32>, ptr %2209, align 1 %scevgep2919 = getelementptr i8, ptr %scevgep2918, i64 %loop-index2207 store <4 x i32> %2210, ptr %scevgep2919, align 1 %2211 = add i64 %loop-index2207, 16 %2212 = icmp uge i64 %2211, %655 br i1 %2212, label %Flow3478, label %loop-memcpy-expansion2206, !amdgpu.uniform !42 Flow3476: ; preds = %Flow3473, %Flow3475 %2213 = phi i64 [ %2731, %Flow3473 ], [ %2725, %Flow3475 ] br label %post-loop-memcpy-expansion2205, !amdgpu.uniform !42 loop-memcpy-residual2208: ; preds = %loop-memcpy-residual2208.preheader, %loop-memcpy-residual2208 %residual-loop-index2210 = phi i64 [ %2215, %loop-memcpy-residual2208 ], [ 0, %loop-memcpy-residual2208.preheader ] %scevgep2916 = getelementptr i8, ptr %scevgep2915, i64 %residual-loop-index2210, !amdgpu.uniform !42 %2214 = load i8, ptr %scevgep2916, align 1 %scevgep2914 = getelementptr i8, ptr %scevgep2913, i64 %residual-loop-index2210 store i8 %2214, ptr %scevgep2914, align 1 %2215 = add i64 %residual-loop-index2210, 1 %2216 = icmp uge i64 %2215, %654 br i1 %2216, label %Flow3473, label %loop-memcpy-residual2208, !amdgpu.uniform !42 Flow3473: ; preds = %loop-memcpy-residual2208 br label %Flow3476, !amdgpu.uniform !42 post-loop-memcpy-expansion2205: ; preds = %Flow3476 %tobool.not.i.i.i.i.i.i1721 = icmp eq i32 %.lcssa4007, 0 %conv.i.i.i.i.i.i1722 = zext i1 %tobool.not.i.i.i.i.i.i1721 to i32 fence release %2217 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i1723 = zext i32 %.lcssa4009 to i64 %arrayidx.i24.i.i.i.i.i1724 = getelementptr inbounds nuw i32, ptr %2217, i64 %idxprom.i23.i.i.i.i.i1723 store atomic i32 %conv.i.i.i.i.i.i1722, ptr %arrayidx.i24.i.i.i.i.i1724 monotonic, align 4 %2218 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i1725 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2218, i64 %idxprom.i23.i.i.i.i.i1723, !amdgpu.uniform !42 %2219 = load i64, ptr %arrayidx.i.i5.i.i1725, align 8, !tbaa !80 %scevgep2898 = getelementptr i8, ptr %2150, i64 56 br label %while.cond.i.i.i.i1726, !amdgpu.uniform !42 while.cond.i.i.i.i1726: ; preds = %post-loop-memcpy-expansion2205, %Flow3471 %phi.broken3947 = phi i64 [ 0, %post-loop-memcpy-expansion2205 ], [ %2236, %Flow3471 ] %lsr.iv2905 = phi i64 [ %2234, %Flow3471 ], [ %670, %post-loop-memcpy-expansion2205 ] %lsr.iv2899 = phi ptr [ %2233, %Flow3471 ], [ %scevgep2898, %post-loop-memcpy-expansion2205 ] %port.sroa.37.0.i.i1727 = phi i32 [ %2232, %Flow3471 ], [ %conv.i.i.i.i.i.i1722, %post-loop-memcpy-expansion2205 ] %idx.0.i.i.i.i1728 = phi i64 [ %2231, %Flow3471 ], [ 56, %post-loop-memcpy-expansion2205 ] %cmp.i.i.i.i1729 = icmp ugt i64 %spec.select.i, %idx.0.i.i.i.i1728 %2220 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i1729) %and.i.i.i.i6.i.i1730 = and i64 %2220, %2219 %tobool.not.i.i.i.i1731 = icmp ne i64 %and.i.i.i.i6.i.i1730, 0 %2221 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i1732 = getelementptr inbounds nuw i32, ptr %2221, i64 %idxprom.i23.i.i.i.i.i1723, !amdgpu.uniform !42 %2222 = load atomic i32, ptr %arrayidx.i22.i.i.i1732 monotonic, align 4 %2223 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i1731) %2224 = extractvalue { i1, i64 } %2223, 0 %2225 = extractvalue { i1, i64 } %2223, 1 br i1 %2224, label %cond.false.i8.i.i.i.i1733, label %Flow3471 cond.false.i8.i.i.i.i1733: ; preds = %while.cond.i.i.i.i1726 %2226 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2222) %2227 = icmp ne i32 %2226, %port.sroa.37.0.i.i1727 br i1 %2227, label %while.body.i.i21.i.i.i.i1734.preheader, label %Flow3470, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1734.preheader: ; preds = %cond.false.i8.i.i.i.i1733 br label %while.body.i.i21.i.i.i.i1734, !amdgpu.uniform !42 Flow3470: ; preds = %Flow3468, %cond.false.i8.i.i.i.i1733 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1737, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1734: ; preds = %while.body.i.i21.i.i.i.i1734.preheader, %while.body.i.i21.i.i.i.i1734 tail call void @llvm.amdgcn.s.sleep(i32 2) %2228 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i1735 = getelementptr inbounds nuw i32, ptr %2228, i64 %idxprom.i23.i.i.i.i.i1723, !amdgpu.uniform !42 %2229 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i1735 monotonic, align 4 %2230 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2229) %cmp.i.not.i.i23.i.i.i.i1736 = icmp eq i32 %2230, %port.sroa.37.0.i.i1727 br i1 %cmp.i.not.i.i23.i.i.i.i1736, label %Flow3468, label %while.body.i.i21.i.i.i.i1734, !amdgpu.uniform !42 Flow3468: ; preds = %while.body.i.i21.i.i.i.i1734 br label %Flow3470, !amdgpu.uniform !42 Flow3471: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1738, %while.cond.i.i.i.i1726 %2231 = phi i64 [ %add.i.i.i.i1741, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1738 ], [ poison, %while.cond.i.i.i.i1726 ] %2232 = phi i32 [ %conv.i.i26.i.i.i.i1739, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1738 ], [ poison, %while.cond.i.i.i.i1726 ] %2233 = phi ptr [ %scevgep2900, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1738 ], [ poison, %while.cond.i.i.i.i1726 ] %2234 = phi i64 [ %lsr.iv.next2906, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1738 ], [ poison, %while.cond.i.i.i.i1726 ] %2235 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1738 ], [ true, %while.cond.i.i.i.i1726 ] call void @llvm.amdgcn.end.cf.i64(i64 %2225) %2236 = call i64 @llvm.amdgcn.if.break.i64(i1 %2235, i64 %phi.broken3947) %2237 = call i1 @llvm.amdgcn.loop.i64(i64 %2236) br i1 %2237, label %cond.false.i.i.i1748, label %while.cond.i.i.i.i1726 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1737: ; preds = %Flow3470 fence acquire br i1 %cmp.i.i.i.i1729, label %if.then.i.i.i.i.i.i.i1742, label %Flow3467, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i1742: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1737 %sub.i.i.i.i.i.i.i1744 = sub nuw i64 %spec.select.i, %idx.0.i.i.i.i1728 %spec.select.i.i.i36.i.i.i.i1745 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i1744, i64 64) %2238 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %2239 = and i64 %spec.select.i.i.i36.i.i.i.i1745, 15 %2240 = sub i64 %spec.select.i.i.i36.i.i.i.i1745, %2239 %2241 = icmp ne i64 %2240, 0 br i1 %2241, label %loop-memcpy-expansion2200.preheader, label %Flow3466, !amdgpu.uniform !42 loop-memcpy-expansion2200.preheader: ; preds = %if.then.i.i.i.i.i.i.i1742 %arrayidx.i20.i35.i.i.i.i1746 = getelementptr %"struct.rpc::Buffer", ptr %2238, i64 %idxprom.i19.i.i.i.i.i1716 %arrayidx.i22.i38.i.i.i.i1747 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i1746, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2200, !amdgpu.uniform !42 Flow3466: ; preds = %Flow3465, %if.then.i.i.i.i.i.i.i1742 br label %loop-memcpy-residual-header2203, !amdgpu.uniform !42 loop-memcpy-expansion2200: ; preds = %loop-memcpy-expansion2200.preheader, %loop-memcpy-expansion2200 %loop-index2201 = phi i64 [ %2244, %loop-memcpy-expansion2200 ], [ 0, %loop-memcpy-expansion2200.preheader ] %scevgep2901 = getelementptr i8, ptr %lsr.iv2899, i64 %loop-index2201, !amdgpu.uniform !42 %2242 = load <4 x i32>, ptr %scevgep2901, align 1 %2243 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i1747, i64 %loop-index2201 store <4 x i32> %2242, ptr %2243, align 1 %2244 = add i64 %loop-index2201, 16 %2245 = icmp uge i64 %2244, %2240 br i1 %2245, label %Flow3465, label %loop-memcpy-expansion2200, !amdgpu.uniform !42 Flow3463: ; preds = %Flow3462, %loop-memcpy-residual-header2203 br label %Flow3467, !amdgpu.uniform !42 loop-memcpy-residual2202: ; preds = %loop-memcpy-residual2202.preheader, %loop-memcpy-residual2202 %residual-loop-index2204 = phi i64 [ %2247, %loop-memcpy-residual2202 ], [ 0, %loop-memcpy-residual2202.preheader ] %scevgep2911 = getelementptr i8, ptr %scevgep2910, i64 %residual-loop-index2204, !amdgpu.uniform !42 %2246 = load i8, ptr %scevgep2911, align 1 %scevgep2909 = getelementptr i8, ptr %scevgep2908, i64 %residual-loop-index2204 store i8 %2246, ptr %scevgep2909, align 1 %2247 = add i64 %residual-loop-index2204, 1 %2248 = icmp uge i64 %2247, %2239 br i1 %2248, label %Flow3462, label %loop-memcpy-residual2202, !amdgpu.uniform !42 Flow3462: ; preds = %loop-memcpy-residual2202 br label %Flow3463, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1738: ; preds = %Flow3467 %conv.i.i26.i.i.i.i1739 = xor i32 %port.sroa.37.0.i.i1727, 1 fence release %2249 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i1740 = getelementptr inbounds nuw i32, ptr %2249, i64 %idxprom.i23.i.i.i.i.i1723 store atomic i32 %conv.i.i26.i.i.i.i1739, ptr %arrayidx.i24.i29.i.i.i.i1740 monotonic, align 4 %add.i.i.i.i1741 = add i64 %idx.0.i.i.i.i1728, 64 %scevgep2900 = getelementptr i8, ptr %lsr.iv2899, i64 64 %lsr.iv.next2906 = add i64 %lsr.iv2905, -64 br label %Flow3471, !amdgpu.uniform !42 cond.false.i.i.i1748: ; preds = %Flow3471 %.lcssa4003 = phi i64 [ %2236, %Flow3471 ] %port.sroa.37.0.i.i1727.lcssa = phi i32 [ %port.sroa.37.0.i.i1727, %Flow3471 ] %.lcssa4002 = phi i32 [ %2222, %Flow3471 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4003) %2250 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa4002) %2251 = icmp ne i32 %2250, %port.sroa.37.0.i.i1727.lcssa %2252 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2251) %2253 = extractvalue { i1, i64 } %2252, 0 %2254 = extractvalue { i1, i64 } %2252, 1 br i1 %2253, label %while.body.i.i.i.i1749.preheader, label %Flow3460 while.body.i.i.i.i1749.preheader: ; preds = %cond.false.i.i.i1748 br label %while.body.i.i.i.i1749, !amdgpu.uniform !42 Flow3460: ; preds = %Flow3458, %cond.false.i.i.i1748 call void @llvm.amdgcn.end.cf.i64(i64 %2254) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit1770, !amdgpu.uniform !42 while.body.i.i.i.i1749: ; preds = %while.body.i.i.i.i1749.preheader, %while.body.i.i.i.i1749 %phi.broken3948 = phi i64 [ 0, %while.body.i.i.i.i1749.preheader ], [ %2258, %while.body.i.i.i.i1749 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %2255 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i1750 = getelementptr inbounds nuw i32, ptr %2255, i64 %idxprom.i23.i.i.i.i.i1723, !amdgpu.uniform !42 %2256 = load atomic i32, ptr %arrayidx.i.i.i8.i.i1750 monotonic, align 4 %2257 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2256) %cmp.i.not.i.i.i.i1751 = icmp eq i32 %2257, %port.sroa.37.0.i.i1727.lcssa %2258 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i1751, i64 %phi.broken3948) %2259 = call i1 @llvm.amdgcn.loop.i64(i64 %2258) br i1 %2259, label %Flow3458, label %while.body.i.i.i.i1749 Flow3458: ; preds = %while.body.i.i.i.i1749 %.lcssa4001 = phi i64 [ %2258, %while.body.i.i.i.i1749 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4001) br label %Flow3460, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit1770: ; preds = %Flow3460 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %2260 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4008, i1 true) %iszero.i.i.i.i.i13.i.i1753 = icmp ne i64 %.lcssa4008, 0 %cmp2.i.i.i.i14.i.i1754 = icmp eq i64 %2260, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i1755 = select i1 %iszero.i.i.i.i.i13.i.i1753, i1 %cmp2.i.i.i.i14.i.i1754, i1 false %2261 = and i32 %.lcssa4009, 31 %conv4.i.i.i19.i.i1759 = zext i1 %cmp.i.i.i.i15.i.i1755 to i32 %shl.i.i.i20.i.i1760 = shl nuw i32 %conv4.i.i.i19.i.i1759, %2261 %xor.i.i.i21.i.i1761 = xor i32 %shl.i.i.i20.i.i1760, -1 %2262 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2652, !amdgpu.uniform !42 2263: ; preds = %ComputeEnd2653 %div8.i.i.i16.i.i1756 = lshr i32 %.lcssa4009, 5 %idxprom.i.i.i17.i.i1757 = zext nneg i32 %div8.i.i.i16.i.i1756 to i64 %2264 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i1757 %sunkaddr3326 = getelementptr inbounds i8, ptr addrspace(1) %2264, i64 40 %2265 = atomicrmw and ptr addrspace(1) %sunkaddr3326, i32 %.lcssa4000 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2266, !amdgpu.uniform !42 2266: ; preds = %2263, %ComputeEnd2653 call void @llvm.amdgcn.end.cf.i64(i64 %3893) tail call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i1.i1779, !amdgpu.uniform !42 for.cond.i.i1.i1779: ; preds = %2266, %Flow3457 %2267 = phi i32 [ %2305, %Flow3457 ], [ poison, %2266 ] %2268 = phi i64 [ %2306, %Flow3457 ], [ poison, %2266 ] %2269 = phi i32 [ %2307, %Flow3457 ], [ poison, %2266 ] %retval.sroa.6.0.i.i.i1780 = phi i32 [ %2310, %Flow3457 ], [ undef, %2266 ] %retval.sroa.2.0.i.i.i1782 = phi i64 [ %2309, %Flow3457 ], [ undef, %2266 ] %retval.sroa.8.0.i.i.i1783 = phi i32 [ %2308, %Flow3457 ], [ undef, %2266 ] %index.0.i.i.i1784 = phi i32 [ %2312, %Flow3457 ], [ 0, %2266 ] %2270 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i1785 = icmp ult i32 %index.0.i.i.i1784, %2270 %spec.store.select.i.i.i1786 = select i1 %cmp.not.i.i.i1785, i32 %index.0.i.i.i1784, i32 0 %2271 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %2272 = and i32 %spec.store.select.i.i.i1786, 31 %2273 = lshr i64 %2271, %sh_prom.i.i.i.i %2274 = trunc i64 %2273 to i32 %conv4.i.i.i.i.i1790 = and i32 %2274, 1 %shl.i.i.i.i.i1791 = shl nuw i32 %conv4.i.i.i.i.i1790, %2272 %2275 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2656, !amdgpu.uniform !42 2276: ; preds = %ComputeEnd2657 %sunkaddr3327 = getelementptr inbounds i8, ptr addrspace(1) %3903, i64 40 %2277 = atomicrmw or ptr addrspace(1) %sunkaddr3327, i32 %.lcssa3994 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2278, !amdgpu.uniform !42 2278: ; preds = %2276, %ComputeEnd2657 %2279 = phi i32 [ %2277, %2276 ], [ poison, %ComputeEnd2657 ] call void @llvm.amdgcn.end.cf.i64(i64 %3912) %2280 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %2279) %2281 = or i32 %2280, %.lcssa3995 %shl5.i.i.i.i.i1792 = shl nuw i32 1, %2272 %and.i.i.i.i.i1793 = and i32 %shl5.i.i.i.i.i1792, %2281 %tobool3.i.i.i.i1794 = icmp ne i32 %and.i.i.i.i.i1793, 0 %2282 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i1794) %and.i.i.i.i.i.i1795 = and i64 %2282, %2271 %cmp.i.not.i.i.i1796 = icmp ne i64 %2271, %and.i.i.i.i.i.i1795 br i1 %cmp.i.not.i.i.i1796, label %if.then.i.i.i.i1797, label %Flow3456, !amdgpu.uniform !42 if.then.i.i.i.i1797: ; preds = %2278 fence syncscope("agent") acquire %2283 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %2284 = extractelement <2 x i64> %2283, i32 0 %2285 = inttoptr i64 %2284 to ptr %2286 = extractelement <2 x i64> %2283, i32 1 %2287 = inttoptr i64 %2286 to ptr %idxprom.i.i.i.i1798 = zext i32 %spec.store.select.i.i.i1786 to i64 %arrayidx.i.i.i.i1799 = getelementptr inbounds nuw i32, ptr %2285, i64 %idxprom.i.i.i.i1798, !amdgpu.uniform !42 %2288 = load atomic i32, ptr %arrayidx.i.i.i.i1799 monotonic, align 4 %2289 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2288) %arrayidx.i45.i.i.i1800 = getelementptr inbounds nuw i32, ptr %2287, i64 %idxprom.i.i.i.i1798, !amdgpu.uniform !42 %2290 = load atomic i32, ptr %arrayidx.i45.i.i.i1800 monotonic, align 4 %2291 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2290) %cmp.i46.not.i.i.i1801 = icmp ne i32 %2289, %2291 br i1 %cmp.i46.not.i.i.i1801, label %if.then12.i.i.i1802, label %Flow3454, !amdgpu.uniform !42 if.then12.i.i.i1802: ; preds = %if.then.i.i.i.i1797 fence syncscope("agent") release %2292 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %2271, i1 true) %iszero.i.i.i.i.i.i.i1803 = icmp ne i64 %2271, 0 %cmp2.i.i.i.i.i.i1804 = icmp eq i64 %2292, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i1805 = select i1 %iszero.i.i.i.i.i.i.i1803, i1 %cmp2.i.i.i.i.i.i1804, i1 false %conv4.i.i51.i.i.i1806 = zext i1 %cmp.i.i.i.i.i.i1805 to i32 %shl.i.i52.i.i.i1807 = shl nuw i32 %conv4.i.i51.i.i.i1806, %2272 %xor.i.i.i.i.i1808 = xor i32 %shl.i.i52.i.i.i1807, -1 %2293 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2661, !amdgpu.uniform !42 2294: ; preds = %ComputeEnd2662 %sunkaddr3328 = getelementptr inbounds i8, ptr addrspace(1) %3903, i64 40 %2295 = atomicrmw and ptr addrspace(1) %sunkaddr3328, i32 %.lcssa3996 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2296, !amdgpu.uniform !42 2296: ; preds = %2294, %ComputeEnd2662 call void @llvm.amdgcn.end.cf.i64(i64 %3930) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3454, !amdgpu.uniform !42 if.end14.i.i.i1868: ; preds = %Flow3454 %2297 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %2271, i1 true) %iszero.i.i.i.i.i.i1869 = icmp ne i64 %2271, 0 %cmp2.i.i.i.i.i1870 = icmp eq i64 %2297, %sh_prom.i.i.i.i %cmp.i.i.i.i.i1871 = select i1 %iszero.i.i.i.i.i.i1869, i1 %cmp2.i.i.i.i.i1870, i1 false %2298 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i1871) %2299 = extractvalue { i1, i64 } %2298, 0 %2300 = extractvalue { i1, i64 } %2298, 1 br i1 %2299, label %if.then16.i.i.i1873, label %if.end22.i.i.i1872 if.then16.i.i.i1873: ; preds = %if.end14.i.i.i1868 %2301 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i1874 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2301, i64 %idxprom.i.i.i.i1798, i32 1 store i32 1660944387, ptr %opcode.i.i.i1874, align 8, !tbaa !77 %arrayidx21.i.i.i1875 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2301, i64 %idxprom.i.i.i.i1798 store i64 %2271, ptr %arrayidx21.i.i.i1875, align 8, !tbaa !80 br label %if.end22.i.i.i1872, !amdgpu.uniform !42 Flow3455: ; preds = %if.end22.i.i.i1872, %Flow3454 %2302 = phi i32 [ %2289, %if.end22.i.i.i1872 ], [ %retval.sroa.8.0.i.i.i1783, %Flow3454 ] %2303 = phi i64 [ %2271, %if.end22.i.i.i1872 ], [ %retval.sroa.2.0.i.i.i1782, %Flow3454 ] %2304 = phi i32 [ %spec.store.select.i.i.i1786, %if.end22.i.i.i1872 ], [ %retval.sroa.6.0.i.i.i1780, %Flow3454 ] br label %cleanup26.i.i.i1809, !amdgpu.uniform !42 if.end22.i.i.i1872: ; preds = %if.then16.i.i.i1873, %if.end14.i.i.i1868 call void @llvm.amdgcn.end.cf.i64(i64 %2300) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3455, !amdgpu.uniform !42 Flow3456: ; preds = %cleanup26.i.i.i1809, %2278 %2305 = phi i32 [ %2304, %cleanup26.i.i.i1809 ], [ %2267, %2278 ] %2306 = phi i64 [ %2303, %cleanup26.i.i.i1809 ], [ %2268, %2278 ] %2307 = phi i32 [ %2302, %cleanup26.i.i.i1809 ], [ %2269, %2278 ] %2308 = phi i32 [ %2302, %cleanup26.i.i.i1809 ], [ %retval.sroa.8.0.i.i.i1783, %2278 ] %2309 = phi i64 [ %2303, %cleanup26.i.i.i1809 ], [ %retval.sroa.2.0.i.i.i1782, %2278 ] %2310 = phi i32 [ %2304, %cleanup26.i.i.i1809 ], [ %retval.sroa.6.0.i.i.i1780, %2278 ] %2311 = phi i1 [ %cmp.i46.not.i.i.i1801, %cleanup26.i.i.i1809 ], [ true, %2278 ] br i1 %2311, label %for.inc.i.i.i1814, label %Flow3457, !amdgpu.uniform !42 cleanup26.i.i.i1809: ; preds = %Flow3455 br label %Flow3456, !amdgpu.uniform !42 for.inc.i.i.i1814: ; preds = %Flow3456 %inc.i.i.i1819 = add i32 %spec.store.select.i.i.i1786, 1 br label %Flow3457, !amdgpu.uniform !42 Flow3457: ; preds = %for.inc.i.i.i1814, %Flow3456 %2312 = phi i32 [ %inc.i.i.i1819, %for.inc.i.i.i1814 ], [ poison, %Flow3456 ] %2313 = phi i1 [ false, %for.inc.i.i.i1814 ], [ true, %Flow3456 ] br i1 %2313, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1820, label %for.cond.i.i1.i1779, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1820: ; preds = %Flow3457 %.lcssa3999 = phi i32 [ %2305, %Flow3457 ] %.lcssa3998 = phi i64 [ %2306, %Flow3457 ] %.lcssa3997 = phi i32 [ %2307, %Flow3457 ] fence acquire %2314 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i1821 = shl i32 %.lcssa3999, 6 %idxprom.i19.i.i.i.i.i1822 = zext i32 %mul.i.i.i.i.i.i1821 to i64 %arrayidx.i20.i.i.i.i.i1823 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %2314, i64 %idxprom.i19.i.i.i.i.i1822 %arrayidx.i22.i.i.i.i.i1824 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i1823, i64 %sh_prom.i.i.i.i store i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.35 to ptr), i64 10) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.35 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i1824, align 8, !tbaa !82 br i1 %1193, label %loop-memcpy-expansion2374.preheader, label %Flow3453, !amdgpu.uniform !42 loop-memcpy-expansion2374.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1820 %2315 = add nuw nsw i64 %75, 8 %scevgep2895 = getelementptr i8, ptr %2314, i64 %2315 %2316 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1822, 6 %scevgep2896 = getelementptr i8, ptr %scevgep2895, i64 %2316 br label %loop-memcpy-expansion2374, !amdgpu.uniform !42 Flow3453: ; preds = %Flow3452, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1820 br label %loop-memcpy-residual-header2377, !amdgpu.uniform !42 loop-memcpy-expansion2374: ; preds = %loop-memcpy-expansion2374.preheader, %loop-memcpy-expansion2374 %loop-index2375 = phi i64 [ %2319, %loop-memcpy-expansion2374 ], [ 0, %loop-memcpy-expansion2374.preheader ] %2317 = getelementptr i8, ptr addrspace(4) @.str.35, i64 %loop-index2375, !amdgpu.uniform !42 %2318 = load <4 x i32>, ptr addrspace(4) %2317, align 1 %scevgep2897 = getelementptr i8, ptr %scevgep2896, i64 %loop-index2375 store <4 x i32> %2318, ptr %scevgep2897, align 1 %2319 = add i64 %loop-index2375, 16 %2320 = icmp uge i64 %2319, %1192 br i1 %2320, label %Flow3452, label %loop-memcpy-expansion2374, !amdgpu.uniform !42 Flow3450: ; preds = %Flow3448, %Flow3449 %2321 = phi i64 [ %2888, %Flow3448 ], [ %2885, %Flow3449 ] br label %post-loop-memcpy-expansion2373, !amdgpu.uniform !42 loop-memcpy-residual2376: ; preds = %loop-memcpy-residual2376.preheader, %loop-memcpy-residual2376 %residual-loop-index2378 = phi i64 [ %2323, %loop-memcpy-residual2376 ], [ 0, %loop-memcpy-residual2376.preheader ] %scevgep2894 = getelementptr i8, ptr addrspace(4) @.str.35, i64 %residual-loop-index2378, !amdgpu.uniform !42 %2322 = load i8, ptr addrspace(4) %scevgep2894, align 1 %scevgep2893 = getelementptr i8, ptr %scevgep2892, i64 %residual-loop-index2378 store i8 %2322, ptr %scevgep2893, align 1 %2323 = add i64 %residual-loop-index2378, 1 %2324 = icmp uge i64 %2323, %1191 br i1 %2324, label %Flow3448, label %loop-memcpy-residual2376, !amdgpu.uniform !42 Flow3448: ; preds = %loop-memcpy-residual2376 br label %Flow3450, !amdgpu.uniform !42 post-loop-memcpy-expansion2373: ; preds = %Flow3450 %tobool.not.i.i.i.i.i.i1827 = icmp eq i32 %.lcssa3997, 0 %conv.i.i.i.i.i.i1828 = zext i1 %tobool.not.i.i.i.i.i.i1827 to i32 fence release %2325 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i1829 = zext i32 %.lcssa3999 to i64 %arrayidx.i24.i.i.i.i.i1830 = getelementptr inbounds nuw i32, ptr %2325, i64 %idxprom.i23.i.i.i.i.i1829 store atomic i32 %conv.i.i.i.i.i.i1828, ptr %arrayidx.i24.i.i.i.i.i1830 monotonic, align 4 %2326 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i1831 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2326, i64 %idxprom.i23.i.i.i.i.i1829, !amdgpu.uniform !42 %2327 = load i64, ptr %arrayidx.i.i5.i.i1831, align 8, !tbaa !80 br label %while.cond.i.i.i.i1832, !amdgpu.uniform !42 while.cond.i.i.i.i1832: ; preds = %post-loop-memcpy-expansion2373, %Flow3447 %phi.broken3949 = phi i64 [ 0, %post-loop-memcpy-expansion2373 ], [ %2344, %Flow3447 ] %lsr.iv2884 = phi i64 [ %2342, %Flow3447 ], [ -46, %post-loop-memcpy-expansion2373 ] %lsr.iv2879 = phi ptr addrspace(4) [ %2341, %Flow3447 ], [ getelementptr (i8, ptr addrspace(4) @.str.35, i64 56), %post-loop-memcpy-expansion2373 ] %port.sroa.37.0.i.i1833 = phi i32 [ %2340, %Flow3447 ], [ %conv.i.i.i.i.i.i1828, %post-loop-memcpy-expansion2373 ] %idx.0.i.i.i.i1834 = phi i64 [ %2339, %Flow3447 ], [ 56, %post-loop-memcpy-expansion2373 ] %cmp.i.i.i.i1835 = icmp ult i64 %idx.0.i.i.i.i1834, sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.35 to ptr), i64 10) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.35 to ptr) to i64)) %2328 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i1835) %and.i.i.i.i6.i.i1836 = and i64 %2328, %2327 %tobool.not.i.i.i.i1837 = icmp ne i64 %and.i.i.i.i6.i.i1836, 0 %2329 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i1838 = getelementptr inbounds nuw i32, ptr %2329, i64 %idxprom.i23.i.i.i.i.i1829, !amdgpu.uniform !42 %2330 = load atomic i32, ptr %arrayidx.i22.i.i.i1838 monotonic, align 4 %2331 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i1837) %2332 = extractvalue { i1, i64 } %2331, 0 %2333 = extractvalue { i1, i64 } %2331, 1 br i1 %2332, label %cond.false.i8.i.i.i.i1839, label %Flow3447 cond.false.i8.i.i.i.i1839: ; preds = %while.cond.i.i.i.i1832 %2334 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2330) %2335 = icmp ne i32 %2334, %port.sroa.37.0.i.i1833 br i1 %2335, label %while.body.i.i21.i.i.i.i1840.preheader, label %Flow3446, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1840.preheader: ; preds = %cond.false.i8.i.i.i.i1839 br label %while.body.i.i21.i.i.i.i1840, !amdgpu.uniform !42 Flow3446: ; preds = %Flow3445, %cond.false.i8.i.i.i.i1839 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1843, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1840: ; preds = %while.body.i.i21.i.i.i.i1840.preheader, %while.body.i.i21.i.i.i.i1840 tail call void @llvm.amdgcn.s.sleep(i32 2) %2336 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i1841 = getelementptr inbounds nuw i32, ptr %2336, i64 %idxprom.i23.i.i.i.i.i1829, !amdgpu.uniform !42 %2337 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i1841 monotonic, align 4 %2338 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2337) %cmp.i.not.i.i23.i.i.i.i1842 = icmp eq i32 %2338, %port.sroa.37.0.i.i1833 br i1 %cmp.i.not.i.i23.i.i.i.i1842, label %Flow3445, label %while.body.i.i21.i.i.i.i1840, !amdgpu.uniform !42 Flow3445: ; preds = %while.body.i.i21.i.i.i.i1840 br label %Flow3446, !amdgpu.uniform !42 Flow3447: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1844, %while.cond.i.i.i.i1832 %2339 = phi i64 [ %add.i.i.i.i1847, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1844 ], [ poison, %while.cond.i.i.i.i1832 ] %2340 = phi i32 [ %conv.i.i26.i.i.i.i1845, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1844 ], [ poison, %while.cond.i.i.i.i1832 ] %2341 = phi ptr addrspace(4) [ %scevgep2880, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1844 ], [ poison, %while.cond.i.i.i.i1832 ] %2342 = phi i64 [ %lsr.iv.next2885, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1844 ], [ poison, %while.cond.i.i.i.i1832 ] %2343 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1844 ], [ true, %while.cond.i.i.i.i1832 ] call void @llvm.amdgcn.end.cf.i64(i64 %2333) %2344 = call i64 @llvm.amdgcn.if.break.i64(i1 %2343, i64 %phi.broken3949) %2345 = call i1 @llvm.amdgcn.loop.i64(i64 %2344) br i1 %2345, label %cond.false.i.i.i1854, label %while.cond.i.i.i.i1832 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1843: ; preds = %Flow3446 fence acquire br i1 %cmp.i.i.i.i1835, label %if.then.i.i.i.i.i.i.i1848, label %Flow3444, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i1848: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1843 %sub.i.i.i.i.i.i.i1850 = sub nuw i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.35 to ptr), i64 10) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.35 to ptr) to i64)), %idx.0.i.i.i.i1834 %spec.select.i.i.i36.i.i.i.i1851 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i1850, i64 64) %2346 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %2347 = and i64 %spec.select.i.i.i36.i.i.i.i1851, 15 %2348 = sub i64 %spec.select.i.i.i36.i.i.i.i1851, %2347 %2349 = icmp ne i64 %2348, 0 br i1 %2349, label %loop-memcpy-expansion2422.preheader, label %Flow3443, !amdgpu.uniform !42 loop-memcpy-expansion2422.preheader: ; preds = %if.then.i.i.i.i.i.i.i1848 %arrayidx.i20.i35.i.i.i.i1852 = getelementptr %"struct.rpc::Buffer", ptr %2346, i64 %idxprom.i19.i.i.i.i.i1822 %arrayidx.i22.i38.i.i.i.i1853 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i1852, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2422, !amdgpu.uniform !42 Flow3443: ; preds = %Flow3442, %if.then.i.i.i.i.i.i.i1848 br label %loop-memcpy-residual-header2425, !amdgpu.uniform !42 loop-memcpy-expansion2422: ; preds = %loop-memcpy-expansion2422.preheader, %loop-memcpy-expansion2422 %loop-index2423 = phi i64 [ %2352, %loop-memcpy-expansion2422 ], [ 0, %loop-memcpy-expansion2422.preheader ] %scevgep2881 = getelementptr i8, ptr addrspace(4) %lsr.iv2879, i64 %loop-index2423, !amdgpu.uniform !42 %2350 = load <4 x i32>, ptr addrspace(4) %scevgep2881, align 1 %2351 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i1853, i64 %loop-index2423 store <4 x i32> %2350, ptr %2351, align 1 %2352 = add i64 %loop-index2423, 16 %2353 = icmp uge i64 %2352, %2348 br i1 %2353, label %Flow3442, label %loop-memcpy-expansion2422, !amdgpu.uniform !42 Flow3441: ; preds = %Flow3440, %loop-memcpy-residual-header2425 br label %Flow3444, !amdgpu.uniform !42 loop-memcpy-residual2424: ; preds = %loop-memcpy-residual2424.preheader, %loop-memcpy-residual2424 %residual-loop-index2426 = phi i64 [ %2355, %loop-memcpy-residual2424 ], [ 0, %loop-memcpy-residual2424.preheader ] %scevgep2890 = getelementptr i8, ptr addrspace(4) %scevgep2889, i64 %residual-loop-index2426, !amdgpu.uniform !42 %2354 = load i8, ptr addrspace(4) %scevgep2890, align 1 %scevgep2888 = getelementptr i8, ptr %scevgep2887, i64 %residual-loop-index2426 store i8 %2354, ptr %scevgep2888, align 1 %2355 = add i64 %residual-loop-index2426, 1 %2356 = icmp uge i64 %2355, %2347 br i1 %2356, label %Flow3440, label %loop-memcpy-residual2424, !amdgpu.uniform !42 Flow3440: ; preds = %loop-memcpy-residual2424 br label %Flow3441, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1844: ; preds = %Flow3444 %conv.i.i26.i.i.i.i1845 = xor i32 %port.sroa.37.0.i.i1833, 1 fence release %2357 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i1846 = getelementptr inbounds nuw i32, ptr %2357, i64 %idxprom.i23.i.i.i.i.i1829 store atomic i32 %conv.i.i26.i.i.i.i1845, ptr %arrayidx.i24.i29.i.i.i.i1846 monotonic, align 4 %add.i.i.i.i1847 = add i64 %idx.0.i.i.i.i1834, 64 %scevgep2880 = getelementptr i8, ptr addrspace(4) %lsr.iv2879, i64 64 %lsr.iv.next2885 = add i64 %lsr.iv2884, -64 br label %Flow3447, !amdgpu.uniform !42 cond.false.i.i.i1854: ; preds = %Flow3447 %.lcssa3993 = phi i64 [ %2344, %Flow3447 ] %port.sroa.37.0.i.i1833.lcssa = phi i32 [ %port.sroa.37.0.i.i1833, %Flow3447 ] %.lcssa3992 = phi i32 [ %2330, %Flow3447 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3993) %2358 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa3992) %2359 = icmp ne i32 %2358, %port.sroa.37.0.i.i1833.lcssa %2360 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2359) %2361 = extractvalue { i1, i64 } %2360, 0 %2362 = extractvalue { i1, i64 } %2360, 1 br i1 %2361, label %while.body.i.i.i.i1855.preheader, label %Flow3439 while.body.i.i.i.i1855.preheader: ; preds = %cond.false.i.i.i1854 br label %while.body.i.i.i.i1855, !amdgpu.uniform !42 Flow3439: ; preds = %Flow3438, %cond.false.i.i.i1854 call void @llvm.amdgcn.end.cf.i64(i64 %2362) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1876, !amdgpu.uniform !42 while.body.i.i.i.i1855: ; preds = %while.body.i.i.i.i1855.preheader, %while.body.i.i.i.i1855 %phi.broken3950 = phi i64 [ 0, %while.body.i.i.i.i1855.preheader ], [ %2366, %while.body.i.i.i.i1855 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %2363 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i1856 = getelementptr inbounds nuw i32, ptr %2363, i64 %idxprom.i23.i.i.i.i.i1829, !amdgpu.uniform !42 %2364 = load atomic i32, ptr %arrayidx.i.i.i8.i.i1856 monotonic, align 4 %2365 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2364) %cmp.i.not.i.i.i.i1857 = icmp eq i32 %2365, %port.sroa.37.0.i.i1833.lcssa %2366 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i1857, i64 %phi.broken3950) %2367 = call i1 @llvm.amdgcn.loop.i64(i64 %2366) br i1 %2367, label %Flow3438, label %while.body.i.i.i.i1855 Flow3438: ; preds = %while.body.i.i.i.i1855 %.lcssa3991 = phi i64 [ %2366, %while.body.i.i.i.i1855 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3991) br label %Flow3439, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1876: ; preds = %Flow3439 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %2368 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa3998, i1 true) %iszero.i.i.i.i.i13.i.i1859 = icmp ne i64 %.lcssa3998, 0 %cmp2.i.i.i.i14.i.i1860 = icmp eq i64 %2368, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i1861 = select i1 %iszero.i.i.i.i.i13.i.i1859, i1 %cmp2.i.i.i.i14.i.i1860, i1 false %2369 = and i32 %.lcssa3999, 31 %conv4.i.i.i19.i.i1865 = zext i1 %cmp.i.i.i.i15.i.i1861 to i32 %shl.i.i.i20.i.i1866 = shl nuw i32 %conv4.i.i.i19.i.i1865, %2369 %xor.i.i.i21.i.i1867 = xor i32 %shl.i.i.i20.i.i1866, -1 %2370 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2665, !amdgpu.uniform !42 2371: ; preds = %ComputeEnd2666 %div8.i.i.i16.i.i1862 = lshr i32 %.lcssa3999, 5 %idxprom.i.i.i17.i.i1863 = zext nneg i32 %div8.i.i.i16.i.i1862 to i64 %2372 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i1863 %sunkaddr3329 = getelementptr inbounds i8, ptr addrspace(1) %2372, i64 40 %2373 = atomicrmw and ptr addrspace(1) %sunkaddr3329, i32 %.lcssa3990 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2374, !amdgpu.uniform !42 2374: ; preds = %2371, %ComputeEnd2666 call void @llvm.amdgcn.end.cf.i64(i64 %3947) tail call void @llvm.amdgcn.wave.barrier() call void @llvm.lifetime.start.p5(ptr addrspace(5) %buffer.i.i.i) #34, !noalias !102 %retval.0.i.i.i.i.i.i94.i = zext nneg i8 %RHS to i32 br label %while.body.i.i.i.i.i.i95.i, !amdgpu.uniform !42 while.body.i.i.i.i.i.i95.i: ; preds = %2374, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i108.i %phi.broken3951 = phi i64 [ 0, %2374 ], [ %2442, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i108.i ] %writer.sroa.10.0.i.i.i.i96.i = phi i64 [ %writer.sroa.10.1.i.i.i.i109.i, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i108.i ], [ 0, %2374 ] %value.addr.09.i.i.i.i.i.i97.i = phi i32 [ %div.i.i.i.i.i.i.i100.i, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i108.i ], [ %retval.0.i.i.i.i.i.i94.i, %2374 ] br label %NodeBlock3386, !amdgpu.uniform !42 NodeBlock3386: ; preds = %while.body.i.i.i.i.i.i95.i %div.i.i.i.i.i.i.i100.i = udiv i32 %value.addr.09.i.i.i.i.i.i97.i, 10 %.neg1 = call i32 @llvm.amdgcn.mul.u24.i32(i32 %div.i.i.i.i.i.i.i100.i, i32 246) %rem.i.i.i.i.i.i.i98.i.decomposed = add nuw nsw i32 %.neg1, %value.addr.09.i.i.i.i.i.i97.i %conv.i.i.i.i.i.i.i99.i = trunc i32 %rem.i.i.i.i.i.i.i98.i.decomposed to i8 %2375 = zext i8 %conv.i.i.i.i.i.i.i99.i to i16 %Pivot3387 = icmp sge i16 %2375, 5 %2376 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3387) %2377 = extractvalue { i1, i64 } %2376, 0 %2378 = extractvalue { i1, i64 } %2376, 1 br i1 %2377, label %NodeBlock3384, label %Flow3437 NodeBlock3384: ; preds = %NodeBlock3386 %Pivot3385 = icmp sge i16 %2375, 7 %2379 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3385) %2380 = extractvalue { i1, i64 } %2379, 0 %2381 = extractvalue { i1, i64 } %2379, 1 br i1 %2380, label %NodeBlock3382, label %Flow3428 NodeBlock3382: ; preds = %NodeBlock3384 %Pivot3383 = icmp sge i16 %2375, 8 %2382 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3383) %2383 = extractvalue { i1, i64 } %2382, 0 %2384 = extractvalue { i1, i64 } %2382, 1 br i1 %2383, label %NodeBlock3380, label %Flow3424 NodeBlock3380: ; preds = %NodeBlock3382 %Pivot3381 = icmp sge i16 %2375, 9 %2385 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3381) %2386 = extractvalue { i1, i64 } %2385, 0 %2387 = extractvalue { i1, i64 } %2385, 1 br i1 %2386, label %sw.bb9.i.i.i.i.i.i.i.i101.i, label %Flow3422 Flow3428: ; preds = %Flow3425, %NodeBlock3384 %2388 = phi i8 [ %2432, %Flow3425 ], [ poison, %NodeBlock3384 ] %2389 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %2381) %2390 = extractvalue { i1, i64 } %2389, 0 %2391 = extractvalue { i1, i64 } %2389, 1 br i1 %2390, label %NodeBlock3378, label %Flow3429 NodeBlock3378: ; preds = %Flow3428 %Pivot3379 = icmp sge i16 %2375, 6 %2392 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3379) %2393 = extractvalue { i1, i64 } %2392, 0 %2394 = extractvalue { i1, i64 } %2392, 1 br i1 %2393, label %sw.bb6.i.i.i.i.i.i.i.i157.i, label %Flow3426 Flow3437: ; preds = %Flow3429, %NodeBlock3386 %2395 = phi i8 [ %2434, %Flow3429 ], [ poison, %NodeBlock3386 ] %2396 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %2378) %2397 = extractvalue { i1, i64 } %2396, 0 %2398 = extractvalue { i1, i64 } %2396, 1 br i1 %2397, label %NodeBlock3376, label %if.then.i.i.i.i.i.i.i102.i NodeBlock3376: ; preds = %Flow3437 %Pivot3377 = icmp sge i16 %2375, 3 %2399 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3377) %2400 = extractvalue { i1, i64 } %2399, 0 %2401 = extractvalue { i1, i64 } %2399, 1 br i1 %2400, label %NodeBlock3374, label %Flow3435 NodeBlock3374: ; preds = %NodeBlock3376 %Pivot3375 = icmp sge i16 %2375, 4 %2402 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3375) %2403 = extractvalue { i1, i64 } %2402, 0 %2404 = extractvalue { i1, i64 } %2402, 1 br i1 %2403, label %sw.bb4.i.i.i.i.i.i.i.i159.i, label %Flow3430 Flow3435: ; preds = %Flow3431, %NodeBlock3376 %2405 = phi i8 [ %2435, %Flow3431 ], [ poison, %NodeBlock3376 ] %2406 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %2401) %2407 = extractvalue { i1, i64 } %2406, 0 %2408 = extractvalue { i1, i64 } %2406, 1 br i1 %2407, label %NodeBlock3372, label %Flow3436 NodeBlock3372: ; preds = %Flow3435 %Pivot3373 = icmp sge i16 %2375, 2 %2409 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3373) %2410 = extractvalue { i1, i64 } %2409, 0 %2411 = extractvalue { i1, i64 } %2409, 1 br i1 %2410, label %sw.bb2.i.i.i.i.i.i.i.i161.i, label %Flow3433 Flow3433: ; preds = %sw.bb2.i.i.i.i.i.i.i.i161.i, %NodeBlock3372 %2412 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %2411) %2413 = extractvalue { i1, i64 } %2412, 0 %2414 = extractvalue { i1, i64 } %2412, 1 br i1 %2413, label %LeafBlock3370, label %Flow3434 LeafBlock3370: ; preds = %Flow3433 %SwitchLeaf3371 = icmp eq i16 %2375, 1 %2415 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %SwitchLeaf3371) %2416 = extractvalue { i1, i64 } %2415, 0 %2417 = extractvalue { i1, i64 } %2415, 1 br i1 %2416, label %sw.bb1.i.i.i.i.i.i.i.i162.i, label %Flow3432 sw.bb1.i.i.i.i.i.i.i.i162.i: ; preds = %LeafBlock3370 br label %Flow3432, !amdgpu.uniform !42 sw.bb2.i.i.i.i.i.i.i.i161.i: ; preds = %NodeBlock3372 br label %Flow3433, !amdgpu.uniform !42 Flow3430: ; preds = %sw.bb4.i.i.i.i.i.i.i.i159.i, %NodeBlock3374 %2418 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %2404) %2419 = extractvalue { i1, i64 } %2418, 0 %2420 = extractvalue { i1, i64 } %2418, 1 br i1 %2419, label %sw.bb3.i.i.i.i.i.i.i.i160.i, label %Flow3431 sw.bb3.i.i.i.i.i.i.i.i160.i: ; preds = %Flow3430 br label %Flow3431, !amdgpu.uniform !42 sw.bb4.i.i.i.i.i.i.i.i159.i: ; preds = %NodeBlock3374 br label %Flow3430, !amdgpu.uniform !42 Flow3426: ; preds = %sw.bb6.i.i.i.i.i.i.i.i157.i, %NodeBlock3378 %2421 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %2394) %2422 = extractvalue { i1, i64 } %2421, 0 %2423 = extractvalue { i1, i64 } %2421, 1 br i1 %2422, label %sw.bb5.i.i.i.i.i.i.i.i158.i, label %Flow3427 sw.bb5.i.i.i.i.i.i.i.i158.i: ; preds = %Flow3426 br label %Flow3427, !amdgpu.uniform !42 sw.bb6.i.i.i.i.i.i.i.i157.i: ; preds = %NodeBlock3378 br label %Flow3426, !amdgpu.uniform !42 Flow3424: ; preds = %Flow3423, %NodeBlock3382 %2424 = phi i8 [ %2431, %Flow3423 ], [ poison, %NodeBlock3382 ] %2425 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %2384) %2426 = extractvalue { i1, i64 } %2425, 0 %2427 = extractvalue { i1, i64 } %2425, 1 br i1 %2426, label %sw.bb7.i.i.i.i.i.i.i.i156.i, label %Flow3425 sw.bb7.i.i.i.i.i.i.i.i156.i: ; preds = %Flow3424 br label %Flow3425, !amdgpu.uniform !42 Flow3422: ; preds = %sw.bb9.i.i.i.i.i.i.i.i101.i, %NodeBlock3380 %2428 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %2387) %2429 = extractvalue { i1, i64 } %2428, 0 %2430 = extractvalue { i1, i64 } %2428, 1 br i1 %2429, label %sw.bb8.i.i.i.i.i.i.i.i155.i, label %Flow3423 sw.bb8.i.i.i.i.i.i.i.i155.i: ; preds = %Flow3422 br label %Flow3423, !amdgpu.uniform !42 sw.bb9.i.i.i.i.i.i.i.i101.i: ; preds = %NodeBlock3380 br label %Flow3422, !amdgpu.uniform !42 Flow3423: ; preds = %sw.bb8.i.i.i.i.i.i.i.i155.i, %Flow3422 %2431 = phi i8 [ 56, %sw.bb8.i.i.i.i.i.i.i.i155.i ], [ 57, %Flow3422 ] call void @llvm.amdgcn.end.cf.i64(i64 %2430) br label %Flow3424, !amdgpu.uniform !42 Flow3425: ; preds = %sw.bb7.i.i.i.i.i.i.i.i156.i, %Flow3424 %2432 = phi i8 [ 55, %sw.bb7.i.i.i.i.i.i.i.i156.i ], [ %2424, %Flow3424 ] call void @llvm.amdgcn.end.cf.i64(i64 %2427) br label %Flow3428, !amdgpu.uniform !42 Flow3427: ; preds = %sw.bb5.i.i.i.i.i.i.i.i158.i, %Flow3426 %2433 = phi i8 [ 53, %sw.bb5.i.i.i.i.i.i.i.i158.i ], [ 54, %Flow3426 ] call void @llvm.amdgcn.end.cf.i64(i64 %2423) br label %Flow3429, !amdgpu.uniform !42 Flow3429: ; preds = %Flow3427, %Flow3428 %2434 = phi i8 [ %2433, %Flow3427 ], [ %2388, %Flow3428 ] call void @llvm.amdgcn.end.cf.i64(i64 %2391) br label %Flow3437, !amdgpu.uniform !42 Flow3431: ; preds = %sw.bb3.i.i.i.i.i.i.i.i160.i, %Flow3430 %2435 = phi i8 [ 51, %sw.bb3.i.i.i.i.i.i.i.i160.i ], [ 52, %Flow3430 ] call void @llvm.amdgcn.end.cf.i64(i64 %2420) br label %Flow3435, !amdgpu.uniform !42 Flow3432: ; preds = %sw.bb1.i.i.i.i.i.i.i.i162.i, %LeafBlock3370 %2436 = phi i8 [ 49, %sw.bb1.i.i.i.i.i.i.i.i162.i ], [ 48, %LeafBlock3370 ] call void @llvm.amdgcn.end.cf.i64(i64 %2417) br label %Flow3434, !amdgpu.uniform !42 Flow3434: ; preds = %Flow3432, %Flow3433 %2437 = phi i8 [ %2436, %Flow3432 ], [ 50, %Flow3433 ] call void @llvm.amdgcn.end.cf.i64(i64 %2414) br label %Flow3436, !amdgpu.uniform !42 Flow3436: ; preds = %Flow3434, %Flow3435 %2438 = phi i8 [ %2437, %Flow3434 ], [ %2405, %Flow3435 ] call void @llvm.amdgcn.end.cf.i64(i64 %2408) br label %if.then.i.i.i.i.i.i.i102.i, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i102.i: ; preds = %Flow3437, %Flow3436 %retval.0.i.i.i.i.i.i.i.i103.i = phi i8 [ %2395, %Flow3437 ], [ %2438, %Flow3436 ] call void @llvm.amdgcn.end.cf.i64(i64 %2398) %cmp.i.i.i.i.i.i.i.i104.i = icmp eq i64 %writer.sroa.10.0.i.i.i.i96.i, 11 %cmp.i.i.i.i.i.i.i.i104.i.inv = xor i1 %cmp.i.i.i.i.i.i.i.i104.i, true br i1 %cmp.i.i.i.i.i.i.i.i104.i.inv, label %if.then3.i.i.i.i.i.i.i105.i, label %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i108.i, !amdgpu.uniform !42 if.then3.i.i.i.i.i.i.i105.i: ; preds = %if.then.i.i.i.i.i.i.i102.i %2439 = trunc i64 %writer.sroa.10.0.i.i.i.i96.i to i32 %2440 = xor i32 %2439, -1 %2441 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i, i32 %2440 %arrayidx.i.i.i.i.i.i.i.i106.i2741 = getelementptr i8, ptr addrspace(5) %2441, i32 11 %inc.i.i.i.i.i.i.i107.i = add i64 %writer.sroa.10.0.i.i.i.i96.i, 1 store i8 %retval.0.i.i.i.i.i.i.i.i103.i, ptr addrspace(5) %arrayidx.i.i.i.i.i.i.i.i106.i2741, align 1, !tbaa !57, !noalias !102 br label %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i108.i, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i108.i: ; preds = %if.then3.i.i.i.i.i.i.i105.i, %if.then.i.i.i.i.i.i.i102.i %writer.sroa.10.1.i.i.i.i109.i = phi i64 [ %inc.i.i.i.i.i.i.i107.i, %if.then3.i.i.i.i.i.i.i105.i ], [ 11, %if.then.i.i.i.i.i.i.i102.i ] %cmp.i.i.i.i.i.i110.i = icmp samesign ult i32 %value.addr.09.i.i.i.i.i.i97.i, 10 %.not.i.i.i.i.i.i111.i = or i1 %cmp.i.i.i.i.i.i.i.i104.i, %cmp.i.i.i.i.i.i110.i %2442 = call i64 @llvm.amdgcn.if.break.i64(i1 %.not.i.i.i.i.i.i111.i, i64 %phi.broken3951) %2443 = call i1 @llvm.amdgcn.loop.i64(i64 %2442) br i1 %2443, label %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i112.i, label %while.body.i.i.i.i.i.i95.i _ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i112.i: ; preds = %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i108.i %writer.sroa.10.1.i.i.i.i109.i.lcssa = phi i64 [ %writer.sroa.10.1.i.i.i.i109.i, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i108.i ] %.lcssa3989 = phi i64 [ %2442, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i108.i ] %cmp.i.i.i.i.i.i.i.i104.i.lcssa = phi i1 [ %cmp.i.i.i.i.i.i.i.i104.i, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i108.i ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3989) %cmp.i19.i.i.i.i115.i = icmp ne i64 %writer.sroa.10.1.i.i.i.i109.i.lcssa, 0 %or.cond.not.i.i.i.i116.i = select i1 %cmp.i.i.i.i.i.i.i.i104.i.lcssa, i1 true, i1 %cmp.i19.i.i.i.i115.i %or.cond.not.i.i.i.i116.i.inv = xor i1 %or.cond.not.i.i.i.i116.i, true %2444 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %or.cond.not.i.i.i.i116.i.inv) %2445 = extractvalue { i1, i64 } %2444, 0 %2446 = extractvalue { i1, i64 } %2444, 1 br i1 %2445, label %if.then3.i.i.lr.ph.i.i.i.i117.i, label %while.end.i.i.i.i.i119.i if.then3.i.i.lr.ph.i.i.i.i117.i: ; preds = %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i112.i %arrayidx.i.i.i.i.i.i.i118.i = getelementptr inbounds nuw i8, ptr addrspace(5) %buffer.i.i.i, i32 10 store i8 48, ptr addrspace(5) %arrayidx.i.i.i.i.i.i.i118.i, align 2, !tbaa !57, !noalias !102 br label %while.end.i.i.i.i.i119.i, !amdgpu.uniform !42 while.end.i.i.i.i.i119.i: ; preds = %if.then3.i.i.lr.ph.i.i.i.i117.i, %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i112.i %writer.sroa.10.4.i.i.i.i120.i = phi i64 [ 1, %if.then3.i.i.lr.ph.i.i.i.i117.i ], [ %writer.sroa.10.1.i.i.i.i109.i.lcssa, %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i112.i ] call void @llvm.amdgcn.end.cf.i64(i64 %2446) %written.i.i.i.i130.i = getelementptr inbounds nuw i8, ptr addrspace(5) %buffer.i.i.i, i32 16 store i64 %writer.sroa.10.4.i.i.i.i120.i, ptr addrspace(5) %written.i.i.i.i130.i, align 8, !tbaa !91, !noalias !102 %cmp.i.not.i.i.i.i.i133.i = icmp ne i64 %writer.sroa.10.4.i.i.i.i120.i, 0 %2447 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.not.i.i.i.i.i133.i) %2448 = extractvalue { i1, i64 } %2447, 0 %2449 = extractvalue { i1, i64 } %2447, 1 br i1 %2448, label %if.then.i.i.i.i.i.i134.i, label %Flow3421 if.then.i.i.i.i.i.i134.i: ; preds = %while.end.i.i.i.i.i119.i %2450 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %writer.sroa.10.4.i.i.i.i120.i, i64 1) %ov3331 = extractvalue { i64, i1 } %2450, 1 %ov3331.inv = xor i1 %ov3331, true %2451 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %ov3331.inv) %2452 = extractvalue { i1, i64 } %2451, 0 %2453 = extractvalue { i1, i64 } %2451, 1 br i1 %2452, label %if.end.i.i.i.i.i.i.i137.i, label %Flow3420 if.end.i.i.i.i.i.i.i137.i: ; preds = %if.then.i.i.i.i.i.i134.i %math3330 = extractvalue { i64, i1 } %2450, 0 %cmp2.i.i.i.i.i.i.i138.i = icmp ult i64 %math3330, 1676976733973595601 %2454 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp2.i.i.i.i.i.i.i138.i) %2455 = extractvalue { i1, i64 } %2454, 0 %2456 = extractvalue { i1, i64 } %2454, 1 br i1 %2455, label %if.then3.i.i.i.i4.i.i.i152.i, label %if.end4.i.i.i.i.i.i.i139.i if.then3.i.i.i.i4.i.i.i152.i: ; preds = %if.end.i.i.i.i.i.i.i137.i %mul.i.i.i.i.i.i.i153.i = mul nuw i64 %math3330, 11 %div18.i.i.i.i.i.i.i154.i = lshr i64 %mul.i.i.i.i.i.i.i153.i, 3 br label %if.end4.i.i.i.i.i.i.i139.i, !amdgpu.uniform !42 Flow3420: ; preds = %if.end4.i.i.i.i.i.i.i139.i, %if.then.i.i.i.i.i.i134.i %2457 = phi ptr [ %cond.i.i1883, %if.end4.i.i.i.i.i.i.i139.i ], [ addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr), %if.then.i.i.i.i.i.i134.i ] call void @llvm.amdgcn.end.cf.i64(i64 %2453) br label %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i143.i, !amdgpu.uniform !42 if.end4.i.i.i.i.i.i.i139.i: ; preds = %if.then3.i.i.i.i4.i.i.i152.i, %if.end.i.i.i.i.i.i.i137.i %new_capacity.addr.0.i.i.i.i.i.i.i140.i = phi i64 [ %div18.i.i.i.i.i.i.i154.i, %if.then3.i.i.i.i4.i.i.i152.i ], [ %math3330, %if.end.i.i.i.i.i.i.i137.i ] call void @llvm.amdgcn.end.cf.i64(i64 %2456) %sub.i.i1877 = add i64 %new_capacity.addr.0.i.i.i.i.i.i.i140.i, 7 %div2.i.i1878 = and i64 %sub.i.i1877, -8 %2458 = load ptr, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %add.ptr.i.i1879 = getelementptr inbounds nuw i8, ptr %2458, i64 %div2.i.i1878 store ptr %add.ptr.i.i1879, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %sub.ptr.lhs.cast.i.i1880 = ptrtoint ptr %add.ptr.i.i1879 to i64 %sub.ptr.sub.i.i1881 = sub i64 %sub.ptr.lhs.cast.i.i1880, ptrtoint (ptr addrspacecast (ptr addrspace(1) @_ZN12_GLOBAL__N_16memoryE to ptr) to i64) %cmp.i.i1882 = icmp ugt i64 %sub.ptr.sub.i.i1881, 65335 %cond.i.i1883 = select i1 %cmp.i.i1882, ptr null, ptr %2458 br label %Flow3420, !amdgpu.uniform !42 Flow3421: ; preds = %Flow3419, %while.end.i.i.i.i.i119.i %2459 = phi ptr [ %2457, %Flow3419 ], [ addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr), %while.end.i.i.i.i.i119.i ] call void @llvm.amdgcn.end.cf.i64(i64 %2449) br label %if.end.i.i.i.i.i.i145.i, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i143.i: ; preds = %Flow3420 br label %loadstoreloop2186, !amdgpu.uniform !42 loadstoreloop2186: ; preds = %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i143.i, %loadstoreloop2186 %phi.broken3952 = phi i64 [ 0, %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i143.i ], [ %2464, %loadstoreloop2186 ] %2460 = phi i64 [ %2462, %loadstoreloop2186 ], [ 0, %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i143.i ] %2461 = getelementptr i8, ptr %2457, i64 %2460 store i8 0, ptr %2461, align 1 %2462 = add i64 %2460, 1 %2463 = icmp uge i64 %2462, %writer.sroa.10.4.i.i.i.i120.i %2464 = call i64 @llvm.amdgcn.if.break.i64(i1 %2463, i64 %phi.broken3952) %2465 = call i1 @llvm.amdgcn.loop.i64(i64 %2464) br i1 %2465, label %Flow3419, label %loadstoreloop2186 Flow3419: ; preds = %loadstoreloop2186 %.lcssa3988 = phi i64 [ %2464, %loadstoreloop2186 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3988) br label %Flow3421, !amdgpu.uniform !42 if.end.i.i.i.i.i.i145.i: ; preds = %Flow3421 %cmp.not.i6.i.i.i.i.i.i147.i = icmp ne ptr %2459, addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr) %2466 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.not.i6.i.i.i.i.i.i147.i) %2467 = extractvalue { i1, i64 } %2466, 0 %2468 = extractvalue { i1, i64 } %2466, 1 br i1 %2467, label %if.then.i.i.i.i2.i.i.i148.i, label %_ZN22__llvm_libc_22_0_0_git7testing8internal13describeValueIcEENS_3cpp9enable_ifIXaasr3cppE13is_integral_vIT_ElestS5_Lm8EENS3_6stringEE4typeES5_.exit164.i if.then.i.i.i.i2.i.i.i148.i: ; preds = %if.end.i.i.i.i.i.i145.i %arrayidx.i.i.i.i3.i.i.i149.i = getelementptr inbounds nuw i8, ptr %2459, i64 %writer.sroa.10.4.i.i.i.i120.i store i8 0, ptr %arrayidx.i.i.i.i3.i.i.i149.i, align 1, !tbaa !57, !noalias !102 br label %_ZN22__llvm_libc_22_0_0_git7testing8internal13describeValueIcEENS_3cpp9enable_ifIXaasr3cppE13is_integral_vIT_ElestS5_Lm8EENS3_6stringEE4typeES5_.exit164.i, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing8internal13describeValueIcEENS_3cpp9enable_ifIXaasr3cppE13is_integral_vIT_ElestS5_Lm8EENS3_6stringEE4typeES5_.exit164.i: ; preds = %if.then.i.i.i.i2.i.i.i148.i, %if.end.i.i.i.i.i.i145.i call void @llvm.amdgcn.end.cf.i64(i64 %2468) %2469 = trunc i64 %writer.sroa.10.4.i.i.i.i120.i to i32 %2470 = and i64 %writer.sroa.10.4.i.i.i.i120.i, 15 %2471 = sub i64 %writer.sroa.10.4.i.i.i.i120.i, %2470 %2472 = icmp ne i64 %2471, 0 %2473 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2472) %2474 = extractvalue { i1, i64 } %2473, 0 %2475 = extractvalue { i1, i64 } %2473, 1 br i1 %2474, label %loop-memcpy-expansion2296.preheader, label %Flow3418 loop-memcpy-expansion2296.preheader: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing8internal13describeValueIcEENS_3cpp9enable_ifIXaasr3cppE13is_integral_vIT_ElestS5_Lm8EENS3_6stringEE4typeES5_.exit164.i %2476 = sub i32 11, %2469 %scevgep2876 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i, i32 %2476 br label %loop-memcpy-expansion2296, !amdgpu.uniform !42 Flow3418: ; preds = %Flow3417, %_ZN22__llvm_libc_22_0_0_git7testing8internal13describeValueIcEENS_3cpp9enable_ifIXaasr3cppE13is_integral_vIT_ElestS5_Lm8EENS3_6stringEE4typeES5_.exit164.i call void @llvm.amdgcn.end.cf.i64(i64 %2475) br label %loop-memcpy-residual-header2299, !amdgpu.uniform !42 loop-memcpy-expansion2296: ; preds = %loop-memcpy-expansion2296.preheader, %loop-memcpy-expansion2296 %phi.broken3953 = phi i64 [ 0, %loop-memcpy-expansion2296.preheader ], [ %2481, %loop-memcpy-expansion2296 ] %lsr.iv2877 = phi ptr addrspace(5) [ %scevgep2878, %loop-memcpy-expansion2296 ], [ %scevgep2876, %loop-memcpy-expansion2296.preheader ] %loop-index2297 = phi i64 [ %2479, %loop-memcpy-expansion2296 ], [ 0, %loop-memcpy-expansion2296.preheader ] %2477 = load <4 x i32>, ptr addrspace(5) %lsr.iv2877, align 1 %2478 = getelementptr i8, ptr %2459, i64 %loop-index2297 store <4 x i32> %2477, ptr %2478, align 1 %2479 = add i64 %loop-index2297, 16 %scevgep2878 = getelementptr i8, ptr addrspace(5) %lsr.iv2877, i32 16 %2480 = icmp uge i64 %2479, %2471 %2481 = call i64 @llvm.amdgcn.if.break.i64(i1 %2480, i64 %phi.broken3953) %2482 = call i1 @llvm.amdgcn.loop.i64(i64 %2481) br i1 %2482, label %Flow3417, label %loop-memcpy-expansion2296 Flow3416: ; preds = %Flow3415, %loop-memcpy-residual-header2299 call void @llvm.amdgcn.end.cf.i64(i64 %2821) br label %post-loop-memcpy-expansion2295, !amdgpu.uniform !42 loop-memcpy-residual2298: ; preds = %loop-memcpy-residual2298.preheader, %loop-memcpy-residual2298 %phi.broken3954 = phi i64 [ 0, %loop-memcpy-residual2298.preheader ], [ %2486, %loop-memcpy-residual2298 ] %lsr.iv2872 = phi ptr addrspace(5) [ %scevgep2873, %loop-memcpy-residual2298 ], [ %scevgep2871, %loop-memcpy-residual2298.preheader ] %residual-loop-index2300 = phi i64 [ %2484, %loop-memcpy-residual2298 ], [ 0, %loop-memcpy-residual2298.preheader ] %2483 = load i8, ptr addrspace(5) %lsr.iv2872, align 1 %scevgep2875 = getelementptr i8, ptr %scevgep2874, i64 %residual-loop-index2300 store i8 %2483, ptr %scevgep2875, align 1 %2484 = add i64 %residual-loop-index2300, 1 %scevgep2873 = getelementptr i8, ptr addrspace(5) %lsr.iv2872, i32 1 %2485 = icmp uge i64 %2484, %2470 %2486 = call i64 @llvm.amdgcn.if.break.i64(i1 %2485, i64 %phi.broken3954) %2487 = call i1 @llvm.amdgcn.loop.i64(i64 %2486) br i1 %2487, label %Flow3415, label %loop-memcpy-residual2298 Flow3415: ; preds = %loop-memcpy-residual2298 %.lcssa3986 = phi i64 [ %2486, %loop-memcpy-residual2298 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3986) br label %Flow3416, !amdgpu.uniform !42 post-loop-memcpy-expansion2295: ; preds = %Flow3416 call void @llvm.lifetime.end.p5(ptr addrspace(5) %buffer.i.i.i) #34, !noalias !102 br label %for.cond.i.i.i1885, !amdgpu.uniform !42 for.cond.i.i.i1885: ; preds = %post-loop-memcpy-expansion2295, %Flow3414 %2488 = phi i32 [ %2526, %Flow3414 ], [ poison, %post-loop-memcpy-expansion2295 ] %2489 = phi i64 [ %2527, %Flow3414 ], [ poison, %post-loop-memcpy-expansion2295 ] %2490 = phi i32 [ %2528, %Flow3414 ], [ poison, %post-loop-memcpy-expansion2295 ] %retval.sroa.6.0.i.i.i1886 = phi i32 [ %2531, %Flow3414 ], [ undef, %post-loop-memcpy-expansion2295 ] %retval.sroa.2.0.i.i.i1888 = phi i64 [ %2530, %Flow3414 ], [ undef, %post-loop-memcpy-expansion2295 ] %retval.sroa.8.0.i.i.i1889 = phi i32 [ %2529, %Flow3414 ], [ undef, %post-loop-memcpy-expansion2295 ] %index.0.i.i.i1890 = phi i32 [ %2533, %Flow3414 ], [ 0, %post-loop-memcpy-expansion2295 ] %2491 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i1891 = icmp ult i32 %index.0.i.i.i1890, %2491 %spec.store.select.i.i.i1892 = select i1 %cmp.not.i.i.i1891, i32 %index.0.i.i.i1890, i32 0 %2492 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %2493 = and i32 %spec.store.select.i.i.i1892, 31 %2494 = lshr i64 %2492, %sh_prom.i.i.i.i %2495 = trunc i64 %2494 to i32 %conv4.i.i.i.i.i1896 = and i32 %2495, 1 %shl.i.i.i.i.i1897 = shl nuw i32 %conv4.i.i.i.i.i1896, %2493 %2496 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2669, !amdgpu.uniform !42 2497: ; preds = %ComputeEnd2670 %sunkaddr3332 = getelementptr inbounds i8, ptr addrspace(1) %3957, i64 40 %2498 = atomicrmw or ptr addrspace(1) %sunkaddr3332, i32 %.lcssa3980 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2499, !amdgpu.uniform !42 2499: ; preds = %2497, %ComputeEnd2670 %2500 = phi i32 [ %2498, %2497 ], [ poison, %ComputeEnd2670 ] call void @llvm.amdgcn.end.cf.i64(i64 %3966) %2501 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %2500) %2502 = or i32 %2501, %.lcssa3981 %shl5.i.i.i.i.i1898 = shl nuw i32 1, %2493 %and.i.i.i.i.i1899 = and i32 %shl5.i.i.i.i.i1898, %2502 %tobool3.i.i.i.i1900 = icmp ne i32 %and.i.i.i.i.i1899, 0 %2503 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i1900) %and.i.i.i.i.i.i1901 = and i64 %2503, %2492 %cmp.i.not.i.i.i1902 = icmp ne i64 %2492, %and.i.i.i.i.i.i1901 br i1 %cmp.i.not.i.i.i1902, label %if.then.i.i.i.i1903, label %Flow3413, !amdgpu.uniform !42 if.then.i.i.i.i1903: ; preds = %2499 fence syncscope("agent") acquire %2504 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %2505 = extractelement <2 x i64> %2504, i32 0 %2506 = inttoptr i64 %2505 to ptr %2507 = extractelement <2 x i64> %2504, i32 1 %2508 = inttoptr i64 %2507 to ptr %idxprom.i.i.i.i1904 = zext i32 %spec.store.select.i.i.i1892 to i64 %arrayidx.i.i.i.i1905 = getelementptr inbounds nuw i32, ptr %2506, i64 %idxprom.i.i.i.i1904, !amdgpu.uniform !42 %2509 = load atomic i32, ptr %arrayidx.i.i.i.i1905 monotonic, align 4 %2510 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2509) %arrayidx.i45.i.i.i1906 = getelementptr inbounds nuw i32, ptr %2508, i64 %idxprom.i.i.i.i1904, !amdgpu.uniform !42 %2511 = load atomic i32, ptr %arrayidx.i45.i.i.i1906 monotonic, align 4 %2512 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2511) %cmp.i46.not.i.i.i1907 = icmp ne i32 %2510, %2512 br i1 %cmp.i46.not.i.i.i1907, label %if.then12.i.i.i1908, label %Flow3411, !amdgpu.uniform !42 if.then12.i.i.i1908: ; preds = %if.then.i.i.i.i1903 fence syncscope("agent") release %2513 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %2492, i1 true) %iszero.i.i.i.i.i.i.i1909 = icmp ne i64 %2492, 0 %cmp2.i.i.i.i.i.i1910 = icmp eq i64 %2513, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i1911 = select i1 %iszero.i.i.i.i.i.i.i1909, i1 %cmp2.i.i.i.i.i.i1910, i1 false %conv4.i.i51.i.i.i1912 = zext i1 %cmp.i.i.i.i.i.i1911 to i32 %shl.i.i52.i.i.i1913 = shl nuw i32 %conv4.i.i51.i.i.i1912, %2493 %xor.i.i.i.i.i1914 = xor i32 %shl.i.i52.i.i.i1913, -1 %2514 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2674, !amdgpu.uniform !42 2515: ; preds = %ComputeEnd2675 %sunkaddr3333 = getelementptr inbounds i8, ptr addrspace(1) %3957, i64 40 %2516 = atomicrmw and ptr addrspace(1) %sunkaddr3333, i32 %.lcssa3982 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2517, !amdgpu.uniform !42 2517: ; preds = %2515, %ComputeEnd2675 call void @llvm.amdgcn.end.cf.i64(i64 %3984) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3411, !amdgpu.uniform !42 if.end14.i.i.i1974: ; preds = %Flow3411 %2518 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %2492, i1 true) %iszero.i.i.i.i.i.i1975 = icmp ne i64 %2492, 0 %cmp2.i.i.i.i.i1976 = icmp eq i64 %2518, %sh_prom.i.i.i.i %cmp.i.i.i.i.i1977 = select i1 %iszero.i.i.i.i.i.i1975, i1 %cmp2.i.i.i.i.i1976, i1 false %2519 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i1977) %2520 = extractvalue { i1, i64 } %2519, 0 %2521 = extractvalue { i1, i64 } %2519, 1 br i1 %2520, label %if.then16.i.i.i1979, label %if.end22.i.i.i1978 if.then16.i.i.i1979: ; preds = %if.end14.i.i.i1974 %2522 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i1980 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2522, i64 %idxprom.i.i.i.i1904, i32 1 store i32 1660944387, ptr %opcode.i.i.i1980, align 8, !tbaa !77 %arrayidx21.i.i.i1981 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2522, i64 %idxprom.i.i.i.i1904 store i64 %2492, ptr %arrayidx21.i.i.i1981, align 8, !tbaa !80 br label %if.end22.i.i.i1978, !amdgpu.uniform !42 Flow3412: ; preds = %if.end22.i.i.i1978, %Flow3411 %2523 = phi i32 [ %2510, %if.end22.i.i.i1978 ], [ %retval.sroa.8.0.i.i.i1889, %Flow3411 ] %2524 = phi i64 [ %2492, %if.end22.i.i.i1978 ], [ %retval.sroa.2.0.i.i.i1888, %Flow3411 ] %2525 = phi i32 [ %spec.store.select.i.i.i1892, %if.end22.i.i.i1978 ], [ %retval.sroa.6.0.i.i.i1886, %Flow3411 ] br label %cleanup26.i.i.i1915, !amdgpu.uniform !42 if.end22.i.i.i1978: ; preds = %if.then16.i.i.i1979, %if.end14.i.i.i1974 call void @llvm.amdgcn.end.cf.i64(i64 %2521) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3412, !amdgpu.uniform !42 Flow3413: ; preds = %cleanup26.i.i.i1915, %2499 %2526 = phi i32 [ %2525, %cleanup26.i.i.i1915 ], [ %2488, %2499 ] %2527 = phi i64 [ %2524, %cleanup26.i.i.i1915 ], [ %2489, %2499 ] %2528 = phi i32 [ %2523, %cleanup26.i.i.i1915 ], [ %2490, %2499 ] %2529 = phi i32 [ %2523, %cleanup26.i.i.i1915 ], [ %retval.sroa.8.0.i.i.i1889, %2499 ] %2530 = phi i64 [ %2524, %cleanup26.i.i.i1915 ], [ %retval.sroa.2.0.i.i.i1888, %2499 ] %2531 = phi i32 [ %2525, %cleanup26.i.i.i1915 ], [ %retval.sroa.6.0.i.i.i1886, %2499 ] %2532 = phi i1 [ %cmp.i46.not.i.i.i1907, %cleanup26.i.i.i1915 ], [ true, %2499 ] br i1 %2532, label %for.inc.i.i.i1920, label %Flow3414, !amdgpu.uniform !42 cleanup26.i.i.i1915: ; preds = %Flow3412 br label %Flow3413, !amdgpu.uniform !42 for.inc.i.i.i1920: ; preds = %Flow3413 %inc.i.i.i1925 = add i32 %spec.store.select.i.i.i1892, 1 br label %Flow3414, !amdgpu.uniform !42 Flow3414: ; preds = %for.inc.i.i.i1920, %Flow3413 %2533 = phi i32 [ %inc.i.i.i1925, %for.inc.i.i.i1920 ], [ poison, %Flow3413 ] %2534 = phi i1 [ false, %for.inc.i.i.i1920 ], [ true, %Flow3413 ] br i1 %2534, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1926, label %for.cond.i.i.i1885, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1926: ; preds = %Flow3414 %.lcssa3985 = phi i32 [ %2526, %Flow3414 ] %.lcssa3984 = phi i64 [ %2527, %Flow3414 ] %.lcssa3983 = phi i32 [ %2528, %Flow3414 ] fence acquire %2535 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i1927 = shl i32 %.lcssa3985, 6 %idxprom.i19.i.i.i.i.i1928 = zext i32 %mul.i.i.i.i.i.i1927 to i64 %arrayidx.i20.i.i.i.i.i1929 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %2535, i64 %idxprom.i19.i.i.i.i.i1928 %arrayidx.i22.i.i.i.i.i1930 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i1929, i64 %sh_prom.i.i.i.i store i64 %writer.sroa.10.4.i.i.i.i120.i, ptr %arrayidx.i22.i.i.i.i.i1930, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i1931 = tail call i64 @llvm.umin.i64(i64 %writer.sroa.10.4.i.i.i.i120.i, i64 56) %2536 = and i64 %spec.select.i.i.i.i.i.i.i1931, 15 %2537 = sub i64 %spec.select.i.i.i.i.i.i.i1931, %2536 %2538 = icmp ne i64 %2537, 0 %2539 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2538) %2540 = extractvalue { i1, i64 } %2539, 0 %2541 = extractvalue { i1, i64 } %2539, 1 br i1 %2540, label %loop-memcpy-expansion2194.preheader, label %Flow3410 loop-memcpy-expansion2194.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1926 %2542 = add nuw nsw i64 %75, 8 %scevgep2868 = getelementptr i8, ptr %2535, i64 %2542 %2543 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1928, 6 %scevgep2869 = getelementptr i8, ptr %scevgep2868, i64 %2543 br label %loop-memcpy-expansion2194, !amdgpu.uniform !42 Flow3410: ; preds = %Flow3409, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1926 call void @llvm.amdgcn.end.cf.i64(i64 %2541) br label %loop-memcpy-residual-header2197, !amdgpu.uniform !42 loop-memcpy-expansion2194: ; preds = %loop-memcpy-expansion2194.preheader, %loop-memcpy-expansion2194 %phi.broken3955 = phi i64 [ 0, %loop-memcpy-expansion2194.preheader ], [ %2548, %loop-memcpy-expansion2194 ] %loop-index2195 = phi i64 [ %2546, %loop-memcpy-expansion2194 ], [ 0, %loop-memcpy-expansion2194.preheader ] %2544 = getelementptr i8, ptr %2459, i64 %loop-index2195 %2545 = load <4 x i32>, ptr %2544, align 1 %scevgep2870 = getelementptr i8, ptr %scevgep2869, i64 %loop-index2195 store <4 x i32> %2545, ptr %scevgep2870, align 1 %2546 = add i64 %loop-index2195, 16 %2547 = icmp uge i64 %2546, %2537 %2548 = call i64 @llvm.amdgcn.if.break.i64(i1 %2547, i64 %phi.broken3955) %2549 = call i1 @llvm.amdgcn.loop.i64(i64 %2548) br i1 %2549, label %Flow3409, label %loop-memcpy-expansion2194 Flow3408: ; preds = %Flow3406, %Flow3407 %2550 = phi i64 [ %2721, %Flow3406 ], [ %2713, %Flow3407 ] call void @llvm.amdgcn.end.cf.i64(i64 %2716) br label %post-loop-memcpy-expansion2193, !amdgpu.uniform !42 loop-memcpy-residual2196: ; preds = %loop-memcpy-residual2196.preheader, %loop-memcpy-residual2196 %phi.broken3956 = phi i64 [ 0, %loop-memcpy-residual2196.preheader ], [ %2554, %loop-memcpy-residual2196 ] %residual-loop-index2198 = phi i64 [ %2552, %loop-memcpy-residual2196 ], [ 0, %loop-memcpy-residual2196.preheader ] %scevgep2867 = getelementptr i8, ptr %scevgep2866, i64 %residual-loop-index2198 %2551 = load i8, ptr %scevgep2867, align 1 %scevgep2865 = getelementptr i8, ptr %scevgep2864, i64 %residual-loop-index2198 store i8 %2551, ptr %scevgep2865, align 1 %2552 = add i64 %residual-loop-index2198, 1 %2553 = icmp uge i64 %2552, %2536 %2554 = call i64 @llvm.amdgcn.if.break.i64(i1 %2553, i64 %phi.broken3956) %2555 = call i1 @llvm.amdgcn.loop.i64(i64 %2554) br i1 %2555, label %Flow3406, label %loop-memcpy-residual2196 Flow3406: ; preds = %loop-memcpy-residual2196 %.lcssa3978 = phi i64 [ %2554, %loop-memcpy-residual2196 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3978) br label %Flow3408, !amdgpu.uniform !42 post-loop-memcpy-expansion2193: ; preds = %Flow3408 %tobool.not.i.i.i.i.i.i1933 = icmp eq i32 %.lcssa3983, 0 %conv.i.i.i.i.i.i1934 = zext i1 %tobool.not.i.i.i.i.i.i1933 to i32 fence release %2556 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i1935 = zext i32 %.lcssa3985 to i64 %arrayidx.i24.i.i.i.i.i1936 = getelementptr inbounds nuw i32, ptr %2556, i64 %idxprom.i23.i.i.i.i.i1935 store atomic i32 %conv.i.i.i.i.i.i1934, ptr %arrayidx.i24.i.i.i.i.i1936 monotonic, align 4 %2557 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i1937 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2557, i64 %idxprom.i23.i.i.i.i.i1935, !amdgpu.uniform !42 %2558 = load i64, ptr %arrayidx.i.i5.i.i1937, align 8, !tbaa !80 %scevgep = getelementptr i8, ptr %2459, i64 56 %2559 = add i64 %writer.sroa.10.4.i.i.i.i120.i, -56 br label %while.cond.i.i.i.i1938, !amdgpu.uniform !42 while.cond.i.i.i.i1938: ; preds = %post-loop-memcpy-expansion2193, %Flow3405 %phi.broken3959 = phi i64 [ 0, %post-loop-memcpy-expansion2193 ], [ %2576, %Flow3405 ] %lsr.iv2858 = phi i64 [ %2574, %Flow3405 ], [ %2559, %post-loop-memcpy-expansion2193 ] %lsr.iv = phi ptr [ %2573, %Flow3405 ], [ %scevgep, %post-loop-memcpy-expansion2193 ] %port.sroa.37.0.i.i1939 = phi i32 [ %2572, %Flow3405 ], [ %conv.i.i.i.i.i.i1934, %post-loop-memcpy-expansion2193 ] %idx.0.i.i.i.i1940 = phi i64 [ %2571, %Flow3405 ], [ 56, %post-loop-memcpy-expansion2193 ] %cmp.i.i.i.i1941 = icmp ugt i64 %writer.sroa.10.4.i.i.i.i120.i, %idx.0.i.i.i.i1940 %2560 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i1941) %and.i.i.i.i6.i.i1942 = and i64 %2560, %2558 %tobool.not.i.i.i.i1943 = icmp ne i64 %and.i.i.i.i6.i.i1942, 0 %2561 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i1944 = getelementptr inbounds nuw i32, ptr %2561, i64 %idxprom.i23.i.i.i.i.i1935, !amdgpu.uniform !42 %2562 = load atomic i32, ptr %arrayidx.i22.i.i.i1944 monotonic, align 4 %2563 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i1943) %2564 = extractvalue { i1, i64 } %2563, 0 %2565 = extractvalue { i1, i64 } %2563, 1 br i1 %2564, label %cond.false.i8.i.i.i.i1945, label %Flow3405 cond.false.i8.i.i.i.i1945: ; preds = %while.cond.i.i.i.i1938 %2566 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2562) %2567 = icmp ne i32 %2566, %port.sroa.37.0.i.i1939 br i1 %2567, label %while.body.i.i21.i.i.i.i1946.preheader, label %Flow3404, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1946.preheader: ; preds = %cond.false.i8.i.i.i.i1945 br label %while.body.i.i21.i.i.i.i1946, !amdgpu.uniform !42 Flow3404: ; preds = %Flow3403, %cond.false.i8.i.i.i.i1945 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1949, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1946: ; preds = %while.body.i.i21.i.i.i.i1946.preheader, %while.body.i.i21.i.i.i.i1946 tail call void @llvm.amdgcn.s.sleep(i32 2) %2568 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i1947 = getelementptr inbounds nuw i32, ptr %2568, i64 %idxprom.i23.i.i.i.i.i1935, !amdgpu.uniform !42 %2569 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i1947 monotonic, align 4 %2570 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2569) %cmp.i.not.i.i23.i.i.i.i1948 = icmp eq i32 %2570, %port.sroa.37.0.i.i1939 br i1 %cmp.i.not.i.i23.i.i.i.i1948, label %Flow3403, label %while.body.i.i21.i.i.i.i1946, !amdgpu.uniform !42 Flow3403: ; preds = %while.body.i.i21.i.i.i.i1946 br label %Flow3404, !amdgpu.uniform !42 Flow3405: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1950, %while.cond.i.i.i.i1938 %2571 = phi i64 [ %add.i.i.i.i1953, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1950 ], [ poison, %while.cond.i.i.i.i1938 ] %2572 = phi i32 [ %conv.i.i26.i.i.i.i1951, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1950 ], [ poison, %while.cond.i.i.i.i1938 ] %2573 = phi ptr [ %scevgep2854, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1950 ], [ poison, %while.cond.i.i.i.i1938 ] %2574 = phi i64 [ %lsr.iv.next, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1950 ], [ poison, %while.cond.i.i.i.i1938 ] %2575 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1950 ], [ true, %while.cond.i.i.i.i1938 ] call void @llvm.amdgcn.end.cf.i64(i64 %2565) %2576 = call i64 @llvm.amdgcn.if.break.i64(i1 %2575, i64 %phi.broken3959) %2577 = call i1 @llvm.amdgcn.loop.i64(i64 %2576) br i1 %2577, label %cond.false.i.i.i1960, label %while.cond.i.i.i.i1938 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1949: ; preds = %Flow3404 fence acquire %2578 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i1941) %2579 = extractvalue { i1, i64 } %2578, 0 %2580 = extractvalue { i1, i64 } %2578, 1 br i1 %2579, label %if.then.i.i.i.i.i.i.i1954, label %Flow3402 if.then.i.i.i.i.i.i.i1954: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1949 %sub.i.i.i.i.i.i.i1956 = sub nuw i64 %writer.sroa.10.4.i.i.i.i120.i, %idx.0.i.i.i.i1940 %spec.select.i.i.i36.i.i.i.i1957 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i1956, i64 64) %2581 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %2582 = and i64 %spec.select.i.i.i36.i.i.i.i1957, 15 %2583 = sub i64 %spec.select.i.i.i36.i.i.i.i1957, %2582 %2584 = icmp ne i64 %2583, 0 %2585 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2584) %2586 = extractvalue { i1, i64 } %2585, 0 %2587 = extractvalue { i1, i64 } %2585, 1 br i1 %2586, label %loop-memcpy-expansion.preheader, label %Flow3401 loop-memcpy-expansion.preheader: ; preds = %if.then.i.i.i.i.i.i.i1954 %arrayidx.i20.i35.i.i.i.i1958 = getelementptr %"struct.rpc::Buffer", ptr %2581, i64 %idxprom.i19.i.i.i.i.i1928 %arrayidx.i22.i38.i.i.i.i1959 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i1958, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion, !amdgpu.uniform !42 Flow3401: ; preds = %Flow3400, %if.then.i.i.i.i.i.i.i1954 call void @llvm.amdgcn.end.cf.i64(i64 %2587) br label %loop-memcpy-residual-header, !amdgpu.uniform !42 loop-memcpy-expansion: ; preds = %loop-memcpy-expansion.preheader, %loop-memcpy-expansion %phi.broken3957 = phi i64 [ 0, %loop-memcpy-expansion.preheader ], [ %2592, %loop-memcpy-expansion ] %loop-index = phi i64 [ %2590, %loop-memcpy-expansion ], [ 0, %loop-memcpy-expansion.preheader ] %scevgep2855 = getelementptr i8, ptr %lsr.iv, i64 %loop-index %2588 = load <4 x i32>, ptr %scevgep2855, align 1 %2589 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i1959, i64 %loop-index store <4 x i32> %2588, ptr %2589, align 1 %2590 = add i64 %loop-index, 16 %2591 = icmp uge i64 %2590, %2583 %2592 = call i64 @llvm.amdgcn.if.break.i64(i1 %2591, i64 %phi.broken3957) %2593 = call i1 @llvm.amdgcn.loop.i64(i64 %2592) br i1 %2593, label %Flow3400, label %loop-memcpy-expansion Flow3399: ; preds = %Flow3398, %loop-memcpy-residual-header call void @llvm.amdgcn.end.cf.i64(i64 %2706) br label %Flow3402, !amdgpu.uniform !42 loop-memcpy-residual: ; preds = %loop-memcpy-residual.preheader, %loop-memcpy-residual %phi.broken3958 = phi i64 [ 0, %loop-memcpy-residual.preheader ], [ %2597, %loop-memcpy-residual ] %residual-loop-index = phi i64 [ %2595, %loop-memcpy-residual ], [ 0, %loop-memcpy-residual.preheader ] %scevgep2862 = getelementptr i8, ptr %scevgep2861, i64 %residual-loop-index %2594 = load i8, ptr %scevgep2862, align 1 %scevgep2860 = getelementptr i8, ptr %scevgep2859, i64 %residual-loop-index store i8 %2594, ptr %scevgep2860, align 1 %2595 = add i64 %residual-loop-index, 1 %2596 = icmp uge i64 %2595, %2582 %2597 = call i64 @llvm.amdgcn.if.break.i64(i1 %2596, i64 %phi.broken3958) %2598 = call i1 @llvm.amdgcn.loop.i64(i64 %2597) br i1 %2598, label %Flow3398, label %loop-memcpy-residual Flow3398: ; preds = %loop-memcpy-residual %.lcssa3975 = phi i64 [ %2597, %loop-memcpy-residual ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3975) br label %Flow3399, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1950: ; preds = %Flow3402 %conv.i.i26.i.i.i.i1951 = xor i32 %port.sroa.37.0.i.i1939, 1 fence release %2599 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i1952 = getelementptr inbounds nuw i32, ptr %2599, i64 %idxprom.i23.i.i.i.i.i1935 store atomic i32 %conv.i.i26.i.i.i.i1951, ptr %arrayidx.i24.i29.i.i.i.i1952 monotonic, align 4 %add.i.i.i.i1953 = add i64 %idx.0.i.i.i.i1940, 64 %scevgep2854 = getelementptr i8, ptr %lsr.iv, i64 64 %lsr.iv.next = add i64 %lsr.iv2858, -64 br label %Flow3405, !amdgpu.uniform !42 cond.false.i.i.i1960: ; preds = %Flow3405 %.lcssa3977 = phi i64 [ %2576, %Flow3405 ] %port.sroa.37.0.i.i1939.lcssa = phi i32 [ %port.sroa.37.0.i.i1939, %Flow3405 ] %.lcssa3976 = phi i32 [ %2562, %Flow3405 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3977) %2600 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa3976) %2601 = icmp ne i32 %2600, %port.sroa.37.0.i.i1939.lcssa %2602 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2601) %2603 = extractvalue { i1, i64 } %2602, 0 %2604 = extractvalue { i1, i64 } %2602, 1 br i1 %2603, label %while.body.i.i.i.i1961.preheader, label %Flow3397 while.body.i.i.i.i1961.preheader: ; preds = %cond.false.i.i.i1960 br label %while.body.i.i.i.i1961, !amdgpu.uniform !42 Flow3397: ; preds = %Flow3396, %cond.false.i.i.i1960 call void @llvm.amdgcn.end.cf.i64(i64 %2604) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit1982, !amdgpu.uniform !42 while.body.i.i.i.i1961: ; preds = %while.body.i.i.i.i1961.preheader, %while.body.i.i.i.i1961 %phi.broken3960 = phi i64 [ 0, %while.body.i.i.i.i1961.preheader ], [ %2608, %while.body.i.i.i.i1961 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %2605 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i1962 = getelementptr inbounds nuw i32, ptr %2605, i64 %idxprom.i23.i.i.i.i.i1935, !amdgpu.uniform !42 %2606 = load atomic i32, ptr %arrayidx.i.i.i8.i.i1962 monotonic, align 4 %2607 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2606) %cmp.i.not.i.i.i.i1963 = icmp eq i32 %2607, %port.sroa.37.0.i.i1939.lcssa %2608 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i1963, i64 %phi.broken3960) %2609 = call i1 @llvm.amdgcn.loop.i64(i64 %2608) br i1 %2609, label %Flow3396, label %while.body.i.i.i.i1961 Flow3396: ; preds = %while.body.i.i.i.i1961 %.lcssa3973 = phi i64 [ %2608, %while.body.i.i.i.i1961 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3973) br label %Flow3397, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit1982: ; preds = %Flow3397 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %2610 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa3984, i1 true) %iszero.i.i.i.i.i13.i.i1965 = icmp ne i64 %.lcssa3984, 0 %cmp2.i.i.i.i14.i.i1966 = icmp eq i64 %2610, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i1967 = select i1 %iszero.i.i.i.i.i13.i.i1965, i1 %cmp2.i.i.i.i14.i.i1966, i1 false %2611 = and i32 %.lcssa3985, 31 %conv4.i.i.i19.i.i1971 = zext i1 %cmp.i.i.i.i15.i.i1967 to i32 %shl.i.i.i20.i.i1972 = shl nuw i32 %conv4.i.i.i19.i.i1971, %2611 %xor.i.i.i21.i.i1973 = xor i32 %shl.i.i.i20.i.i1972, -1 %2612 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2678, !amdgpu.uniform !42 2613: ; preds = %ComputeEnd2679 %div8.i.i.i16.i.i1968 = lshr i32 %.lcssa3985, 5 %idxprom.i.i.i17.i.i1969 = zext nneg i32 %div8.i.i.i16.i.i1968 to i64 %2614 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i1969 %sunkaddr3334 = getelementptr inbounds i8, ptr addrspace(1) %2614, i64 40 %2615 = atomicrmw and ptr addrspace(1) %sunkaddr3334, i32 %.lcssa3972 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2616, !amdgpu.uniform !42 2616: ; preds = %2613, %ComputeEnd2679 call void @llvm.amdgcn.end.cf.i64(i64 %4001) tail call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i.i1986, !amdgpu.uniform !42 for.cond.i.i.i1986: ; preds = %2616, %Flow3395 %2617 = phi i32 [ %2655, %Flow3395 ], [ poison, %2616 ] %2618 = phi i64 [ %2656, %Flow3395 ], [ poison, %2616 ] %2619 = phi i32 [ %2657, %Flow3395 ], [ poison, %2616 ] %retval.sroa.6.0.i.i.i1987 = phi i32 [ %2660, %Flow3395 ], [ undef, %2616 ] %retval.sroa.2.0.i.i.i1989 = phi i64 [ %2659, %Flow3395 ], [ undef, %2616 ] %retval.sroa.8.0.i.i.i1990 = phi i32 [ %2658, %Flow3395 ], [ undef, %2616 ] %index.0.i.i.i1991 = phi i32 [ %2662, %Flow3395 ], [ 0, %2616 ] %2620 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i1992 = icmp ult i32 %index.0.i.i.i1991, %2620 %spec.store.select.i.i.i1993 = select i1 %cmp.not.i.i.i1992, i32 %index.0.i.i.i1991, i32 0 %2621 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %2622 = and i32 %spec.store.select.i.i.i1993, 31 %2623 = lshr i64 %2621, %sh_prom.i.i.i.i %2624 = trunc i64 %2623 to i32 %conv4.i.i.i.i.i1997 = and i32 %2624, 1 %shl.i.i.i.i.i1998 = shl nuw i32 %conv4.i.i.i.i.i1997, %2622 %2625 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2682, !amdgpu.uniform !42 2626: ; preds = %ComputeEnd2683 %sunkaddr3335 = getelementptr inbounds i8, ptr addrspace(1) %4011, i64 40 %2627 = atomicrmw or ptr addrspace(1) %sunkaddr3335, i32 %.lcssa3966 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2628, !amdgpu.uniform !42 2628: ; preds = %2626, %ComputeEnd2683 %2629 = phi i32 [ %2627, %2626 ], [ poison, %ComputeEnd2683 ] call void @llvm.amdgcn.end.cf.i64(i64 %4020) %2630 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %2629) %2631 = or i32 %2630, %.lcssa3967 %shl5.i.i.i.i.i1999 = shl nuw i32 1, %2622 %and.i.i.i.i.i2000 = and i32 %shl5.i.i.i.i.i1999, %2631 %tobool3.i.i.i.i2001 = icmp ne i32 %and.i.i.i.i.i2000, 0 %2632 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i2001) %and.i.i.i.i.i.i2002 = and i64 %2632, %2621 %cmp.i.not.i.i.i2003 = icmp ne i64 %2621, %and.i.i.i.i.i.i2002 br i1 %cmp.i.not.i.i.i2003, label %if.then.i.i.i.i2004, label %Flow3394, !amdgpu.uniform !42 if.then.i.i.i.i2004: ; preds = %2628 fence syncscope("agent") acquire %2633 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %2634 = extractelement <2 x i64> %2633, i32 0 %2635 = inttoptr i64 %2634 to ptr %2636 = extractelement <2 x i64> %2633, i32 1 %2637 = inttoptr i64 %2636 to ptr %idxprom.i.i.i.i2005 = zext i32 %spec.store.select.i.i.i1993 to i64 %arrayidx.i.i.i.i2006 = getelementptr inbounds nuw i32, ptr %2635, i64 %idxprom.i.i.i.i2005, !amdgpu.uniform !42 %2638 = load atomic i32, ptr %arrayidx.i.i.i.i2006 monotonic, align 4 %2639 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2638) %arrayidx.i45.i.i.i2007 = getelementptr inbounds nuw i32, ptr %2637, i64 %idxprom.i.i.i.i2005, !amdgpu.uniform !42 %2640 = load atomic i32, ptr %arrayidx.i45.i.i.i2007 monotonic, align 4 %2641 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2640) %cmp.i46.not.i.i.i2008 = icmp ne i32 %2639, %2641 br i1 %cmp.i46.not.i.i.i2008, label %if.then12.i.i.i2009, label %Flow3392, !amdgpu.uniform !42 if.then12.i.i.i2009: ; preds = %if.then.i.i.i.i2004 fence syncscope("agent") release %2642 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %2621, i1 true) %iszero.i.i.i.i.i.i.i2010 = icmp ne i64 %2621, 0 %cmp2.i.i.i.i.i.i2011 = icmp eq i64 %2642, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i2012 = select i1 %iszero.i.i.i.i.i.i.i2010, i1 %cmp2.i.i.i.i.i.i2011, i1 false %conv4.i.i51.i.i.i2013 = zext i1 %cmp.i.i.i.i.i.i2012 to i32 %shl.i.i52.i.i.i2014 = shl nuw i32 %conv4.i.i51.i.i.i2013, %2622 %xor.i.i.i.i.i2015 = xor i32 %shl.i.i52.i.i.i2014, -1 %2643 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2687, !amdgpu.uniform !42 2644: ; preds = %ComputeEnd2688 %sunkaddr3336 = getelementptr inbounds i8, ptr addrspace(1) %4011, i64 40 %2645 = atomicrmw and ptr addrspace(1) %sunkaddr3336, i32 %.lcssa3968 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2646, !amdgpu.uniform !42 2646: ; preds = %2644, %ComputeEnd2688 call void @llvm.amdgcn.end.cf.i64(i64 %4038) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3392, !amdgpu.uniform !42 if.end14.i.i.i2073: ; preds = %Flow3392 %2647 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %2621, i1 true) %iszero.i.i.i.i.i.i2074 = icmp ne i64 %2621, 0 %cmp2.i.i.i.i.i2075 = icmp eq i64 %2647, %sh_prom.i.i.i.i %cmp.i.i.i.i.i2076 = select i1 %iszero.i.i.i.i.i.i2074, i1 %cmp2.i.i.i.i.i2075, i1 false %2648 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i2076) %2649 = extractvalue { i1, i64 } %2648, 0 %2650 = extractvalue { i1, i64 } %2648, 1 br i1 %2649, label %if.then16.i.i.i2078, label %if.end22.i.i.i2077 if.then16.i.i.i2078: ; preds = %if.end14.i.i.i2073 %2651 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i2079 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2651, i64 %idxprom.i.i.i.i2005, i32 1 store i32 1660944387, ptr %opcode.i.i.i2079, align 8, !tbaa !77 %arrayidx21.i.i.i2080 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2651, i64 %idxprom.i.i.i.i2005 store i64 %2621, ptr %arrayidx21.i.i.i2080, align 8, !tbaa !80 br label %if.end22.i.i.i2077, !amdgpu.uniform !42 Flow3393: ; preds = %if.end22.i.i.i2077, %Flow3392 %2652 = phi i32 [ %2639, %if.end22.i.i.i2077 ], [ %retval.sroa.8.0.i.i.i1990, %Flow3392 ] %2653 = phi i64 [ %2621, %if.end22.i.i.i2077 ], [ %retval.sroa.2.0.i.i.i1989, %Flow3392 ] %2654 = phi i32 [ %spec.store.select.i.i.i1993, %if.end22.i.i.i2077 ], [ %retval.sroa.6.0.i.i.i1987, %Flow3392 ] br label %cleanup26.i.i.i2016, !amdgpu.uniform !42 if.end22.i.i.i2077: ; preds = %if.then16.i.i.i2078, %if.end14.i.i.i2073 call void @llvm.amdgcn.end.cf.i64(i64 %2650) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3393, !amdgpu.uniform !42 Flow3394: ; preds = %cleanup26.i.i.i2016, %2628 %2655 = phi i32 [ %2654, %cleanup26.i.i.i2016 ], [ %2617, %2628 ] %2656 = phi i64 [ %2653, %cleanup26.i.i.i2016 ], [ %2618, %2628 ] %2657 = phi i32 [ %2652, %cleanup26.i.i.i2016 ], [ %2619, %2628 ] %2658 = phi i32 [ %2652, %cleanup26.i.i.i2016 ], [ %retval.sroa.8.0.i.i.i1990, %2628 ] %2659 = phi i64 [ %2653, %cleanup26.i.i.i2016 ], [ %retval.sroa.2.0.i.i.i1989, %2628 ] %2660 = phi i32 [ %2654, %cleanup26.i.i.i2016 ], [ %retval.sroa.6.0.i.i.i1987, %2628 ] %2661 = phi i1 [ %cmp.i46.not.i.i.i2008, %cleanup26.i.i.i2016 ], [ true, %2628 ] br i1 %2661, label %for.inc.i.i.i2021, label %Flow3395, !amdgpu.uniform !42 cleanup26.i.i.i2016: ; preds = %Flow3393 br label %Flow3394, !amdgpu.uniform !42 for.inc.i.i.i2021: ; preds = %Flow3394 %inc.i.i.i2026 = add i32 %spec.store.select.i.i.i1993, 1 br label %Flow3395, !amdgpu.uniform !42 Flow3395: ; preds = %for.inc.i.i.i2021, %Flow3394 %2662 = phi i32 [ %inc.i.i.i2026, %for.inc.i.i.i2021 ], [ poison, %Flow3394 ] %2663 = phi i1 [ false, %for.inc.i.i.i2021 ], [ true, %Flow3394 ] br i1 %2663, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2027, label %for.cond.i.i.i1986, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2027: ; preds = %Flow3395 %.lcssa3971 = phi i32 [ %2655, %Flow3395 ] %.lcssa3970 = phi i64 [ %2656, %Flow3395 ] %.lcssa3969 = phi i32 [ %2657, %Flow3395 ] fence acquire %2664 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i2028 = shl i32 %.lcssa3971, 6 %idxprom.i19.i.i.i.i.i2029 = zext i32 %mul.i.i.i.i.i.i2028 to i64 %arrayidx.i20.i.i.i.i.i2030 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %2664, i64 %idxprom.i19.i.i.i.i.i2029 %arrayidx.i22.i.i.i.i.i2031 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i2030, i64 %sh_prom.i.i.i.i store i64 1, ptr %arrayidx.i22.i.i.i.i.i2031, align 8, !tbaa !82 %arrayidx6.i.i.i.i.i.i.i2032 = getelementptr inbounds nuw i8, ptr %arrayidx.i22.i.i.i.i.i2031, i64 8 store i8 10, ptr %arrayidx6.i.i.i.i.i.i.i2032, align 8 %tobool.not.i.i.i.i.i.i2033 = icmp eq i32 %.lcssa3969, 0 %conv.i.i.i.i.i.i2034 = zext i1 %tobool.not.i.i.i.i.i.i2033 to i32 fence release %2665 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i2035 = zext i32 %.lcssa3971 to i64 %arrayidx.i24.i.i.i.i.i2036 = getelementptr inbounds nuw i32, ptr %2665, i64 %idxprom.i23.i.i.i.i.i2035 store atomic i32 %conv.i.i.i.i.i.i2034, ptr %arrayidx.i24.i.i.i.i.i2036 monotonic, align 4 %2666 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i2037 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2666, i64 %idxprom.i23.i.i.i.i.i2035, !amdgpu.uniform !42 %2667 = load i64, ptr %arrayidx.i.i5.i.i2037, align 8, !tbaa !80 br label %while.cond.i.i.i.i2038, !amdgpu.uniform !42 while.cond.i.i.i.i2038: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2027, %Flow3391 %phi.broken3961 = phi i64 [ 0, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2027 ], [ %2682, %Flow3391 ] %port.sroa.37.0.i.i2039 = phi i32 [ %2680, %Flow3391 ], [ %conv.i.i.i.i.i.i2034, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2027 ] %idx.0.i.i.i.i2040 = phi i64 [ %2679, %Flow3391 ], [ 56, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2027 ] %cmp.i.i.i.i2041 = icmp eq i64 %idx.0.i.i.i.i2040, 0 %2668 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i2041) %and.i.i.i.i6.i.i2042 = and i64 %2668, %2667 %tobool.not.i.i.i.i2043 = icmp ne i64 %and.i.i.i.i6.i.i2042, 0 %2669 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i2044 = getelementptr inbounds nuw i32, ptr %2669, i64 %idxprom.i23.i.i.i.i.i2035, !amdgpu.uniform !42 %2670 = load atomic i32, ptr %arrayidx.i22.i.i.i2044 monotonic, align 4 %2671 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i2043) %2672 = extractvalue { i1, i64 } %2671, 0 %2673 = extractvalue { i1, i64 } %2671, 1 br i1 %2672, label %cond.false.i8.i.i.i.i2045, label %Flow3391 cond.false.i8.i.i.i.i2045: ; preds = %while.cond.i.i.i.i2038 %2674 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2670) %2675 = icmp ne i32 %2674, %port.sroa.37.0.i.i2039 br i1 %2675, label %while.body.i.i21.i.i.i.i2046.preheader, label %Flow3390, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i2046.preheader: ; preds = %cond.false.i8.i.i.i.i2045 br label %while.body.i.i21.i.i.i.i2046, !amdgpu.uniform !42 Flow3390: ; preds = %Flow3389, %cond.false.i8.i.i.i.i2045 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i2049, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i2046: ; preds = %while.body.i.i21.i.i.i.i2046.preheader, %while.body.i.i21.i.i.i.i2046 tail call void @llvm.amdgcn.s.sleep(i32 2) %2676 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i2047 = getelementptr inbounds nuw i32, ptr %2676, i64 %idxprom.i23.i.i.i.i.i2035, !amdgpu.uniform !42 %2677 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i2047 monotonic, align 4 %2678 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2677) %cmp.i.not.i.i23.i.i.i.i2048 = icmp eq i32 %2678, %port.sroa.37.0.i.i2039 br i1 %cmp.i.not.i.i23.i.i.i.i2048, label %Flow3389, label %while.body.i.i21.i.i.i.i2046, !amdgpu.uniform !42 Flow3389: ; preds = %while.body.i.i21.i.i.i.i2046 br label %Flow3390, !amdgpu.uniform !42 Flow3391: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2050, %while.cond.i.i.i.i2038 %2679 = phi i64 [ %add.i.i.i.i2053, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2050 ], [ poison, %while.cond.i.i.i.i2038 ] %2680 = phi i32 [ %conv.i.i26.i.i.i.i2051, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2050 ], [ poison, %while.cond.i.i.i.i2038 ] %2681 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2050 ], [ true, %while.cond.i.i.i.i2038 ] call void @llvm.amdgcn.end.cf.i64(i64 %2673) %2682 = call i64 @llvm.amdgcn.if.break.i64(i1 %2681, i64 %phi.broken3961) %2683 = call i1 @llvm.amdgcn.loop.i64(i64 %2682) br i1 %2683, label %cond.false.i.i.i2059, label %while.cond.i.i.i.i2038 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i2049: ; preds = %Flow3390 fence acquire br i1 %cmp.i.i.i.i2041, label %if.then.i.i.i.i.i.i.i2054, label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2050, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i2054: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i2049 %2684 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %arrayidx.i20.i35.i.i.i.i2057 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %2684, i64 %idxprom.i19.i.i.i.i.i2029 %arrayidx.i22.i38.i.i.i.i2058 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i2057, i64 %sh_prom.i.i.i.i store i8 10, ptr %arrayidx.i22.i38.i.i.i.i2058, align 1 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2050, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2050: ; preds = %if.then.i.i.i.i.i.i.i2054, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i2049 %conv.i.i26.i.i.i.i2051 = xor i32 %port.sroa.37.0.i.i2039, 1 fence release %2685 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i2052 = getelementptr inbounds nuw i32, ptr %2685, i64 %idxprom.i23.i.i.i.i.i2035 store atomic i32 %conv.i.i26.i.i.i.i2051, ptr %arrayidx.i24.i29.i.i.i.i2052 monotonic, align 4 %add.i.i.i.i2053 = add i64 %idx.0.i.i.i.i2040, 64 br label %Flow3391, !amdgpu.uniform !42 cond.false.i.i.i2059: ; preds = %Flow3391 %.lcssa3965 = phi i64 [ %2682, %Flow3391 ] %port.sroa.37.0.i.i2039.lcssa = phi i32 [ %port.sroa.37.0.i.i2039, %Flow3391 ] %.lcssa3964 = phi i32 [ %2670, %Flow3391 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3965) %2686 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa3964) %2687 = icmp ne i32 %2686, %port.sroa.37.0.i.i2039.lcssa %2688 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2687) %2689 = extractvalue { i1, i64 } %2688, 0 %2690 = extractvalue { i1, i64 } %2688, 1 br i1 %2689, label %while.body.i.i.i.i2060.preheader, label %Flow3388 while.body.i.i.i.i2060.preheader: ; preds = %cond.false.i.i.i2059 br label %while.body.i.i.i.i2060, !amdgpu.uniform !42 Flow3388: ; preds = %Flow, %cond.false.i.i.i2059 call void @llvm.amdgcn.end.cf.i64(i64 %2690) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit2081, !amdgpu.uniform !42 while.body.i.i.i.i2060: ; preds = %while.body.i.i.i.i2060.preheader, %while.body.i.i.i.i2060 %phi.broken3962 = phi i64 [ 0, %while.body.i.i.i.i2060.preheader ], [ %2694, %while.body.i.i.i.i2060 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %2691 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i2061 = getelementptr inbounds nuw i32, ptr %2691, i64 %idxprom.i23.i.i.i.i.i2035, !amdgpu.uniform !42 %2692 = load atomic i32, ptr %arrayidx.i.i.i8.i.i2061 monotonic, align 4 %2693 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2692) %cmp.i.not.i.i.i.i2062 = icmp eq i32 %2693, %port.sroa.37.0.i.i2039.lcssa %2694 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i2062, i64 %phi.broken3962) %2695 = call i1 @llvm.amdgcn.loop.i64(i64 %2694) br i1 %2695, label %Flow, label %while.body.i.i.i.i2060 Flow: ; preds = %while.body.i.i.i.i2060 %.lcssa3963 = phi i64 [ %2694, %while.body.i.i.i.i2060 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3963) br label %Flow3388, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit2081: ; preds = %Flow3388 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %2696 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa3970, i1 true) %iszero.i.i.i.i.i13.i.i2064 = icmp ne i64 %.lcssa3970, 0 %cmp2.i.i.i.i14.i.i2065 = icmp eq i64 %2696, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i2066 = select i1 %iszero.i.i.i.i.i13.i.i2064, i1 %cmp2.i.i.i.i14.i.i2065, i1 false %2697 = and i32 %.lcssa3971, 31 %conv4.i.i.i19.i.i2070 = zext i1 %cmp.i.i.i.i15.i.i2066 to i32 %shl.i.i.i20.i.i2071 = shl nuw i32 %conv4.i.i.i19.i.i2070, %2697 %xor.i.i.i21.i.i2072 = xor i32 %shl.i.i.i20.i.i2071, -1 %2698 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2691, !amdgpu.uniform !42 2699: ; preds = %ComputeEnd2692 %div8.i.i.i16.i.i2067 = lshr i32 %.lcssa3971, 5 %idxprom.i.i.i17.i.i2068 = zext nneg i32 %div8.i.i.i16.i.i2067 to i64 %2700 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i2068 %sunkaddr3337 = getelementptr inbounds i8, ptr addrspace(1) %2700, i64 40 %2701 = atomicrmw and ptr addrspace(1) %sunkaddr3337, i32 %.lcssa syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2702, !amdgpu.uniform !42 2702: ; preds = %2699, %ComputeEnd2692 call void @llvm.amdgcn.end.cf.i64(i64 %4055) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3892, !amdgpu.uniform !42 _ZZN22__llvm_libc_22_0_0_git7testing8internal4testIcEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationEENKUlbNS_3cpp11string_viewEE_clEbSB_.exit: ; preds = %Flow3892 ret i1 %cmp Flow3400: ; preds = %loop-memcpy-expansion %.lcssa3974 = phi i64 [ %2592, %loop-memcpy-expansion ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3974) br label %Flow3401, !amdgpu.uniform !42 Flow3402: ; preds = %Flow3399, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1949 call void @llvm.amdgcn.end.cf.i64(i64 %2580) br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1950, !amdgpu.uniform !42 loop-memcpy-residual-header: ; preds = %Flow3401 %2703 = icmp ne i64 %2582, 0 %2704 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2703) %2705 = extractvalue { i1, i64 } %2704, 0 %2706 = extractvalue { i1, i64 } %2704, 1 br i1 %2705, label %loop-memcpy-residual.preheader, label %Flow3399 loop-memcpy-residual.preheader: ; preds = %loop-memcpy-residual-header %umin = call i64 @llvm.umin.i64(i64 %lsr.iv2858, i64 64) %2707 = lshr i64 %umin, 4 %2708 = shl nuw nsw i64 %2707, 4 %scevgep2861 = getelementptr i8, ptr %lsr.iv, i64 %2708 %scevgep2856 = getelementptr i8, ptr %2581, i64 %75 %scevgep2857 = getelementptr i8, ptr %scevgep2856, i64 %2550 %scevgep2859 = getelementptr i8, ptr %scevgep2857, i64 %2708 br label %loop-memcpy-residual, !amdgpu.uniform !42 Flow3409: ; preds = %loop-memcpy-expansion2194 %.lcssa3979 = phi i64 [ %2548, %loop-memcpy-expansion2194 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3979) br label %Flow3410, !amdgpu.uniform !42 loop-memcpy-residual-header2197: ; preds = %Flow3410 %2709 = icmp eq i64 %2536, 0 %2710 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2709) %2711 = extractvalue { i1, i64 } %2710, 0 %2712 = extractvalue { i1, i64 } %2710, 1 br i1 %2711, label %loop-memcpy-residual-header2197.post-loop-memcpy-expansion2193_crit_edge, label %Flow3407 loop-memcpy-residual-header2197.post-loop-memcpy-expansion2193_crit_edge: ; preds = %loop-memcpy-residual-header2197 %.pre3270 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1928, 6 br label %Flow3407, !amdgpu.uniform !42 Flow3407: ; preds = %loop-memcpy-residual-header2197.post-loop-memcpy-expansion2193_crit_edge, %loop-memcpy-residual-header2197 %2713 = phi i64 [ %.pre3270, %loop-memcpy-residual-header2197.post-loop-memcpy-expansion2193_crit_edge ], [ poison, %loop-memcpy-residual-header2197 ] %2714 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %2712) %2715 = extractvalue { i1, i64 } %2714, 0 %2716 = extractvalue { i1, i64 } %2714, 1 br i1 %2715, label %loop-memcpy-residual2196.preheader, label %Flow3408 loop-memcpy-residual2196.preheader: ; preds = %Flow3407 %2717 = lshr i64 %spec.select.i.i.i.i.i.i.i1931, 4 %2718 = shl nuw nsw i64 %2717, 4 %2719 = add i64 %75, %2718 %2720 = add i64 %2719, 8 %scevgep2863 = getelementptr i8, ptr %2535, i64 %2720 %2721 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1928, 6 %scevgep2864 = getelementptr i8, ptr %scevgep2863, i64 %2721 %scevgep2866 = getelementptr i8, ptr %2459, i64 %2718 br label %loop-memcpy-residual2196, !amdgpu.uniform !42 Flow3465: ; preds = %loop-memcpy-expansion2200 br label %Flow3466, !amdgpu.uniform !42 Flow3467: ; preds = %Flow3463, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1737 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1738, !amdgpu.uniform !42 loop-memcpy-residual-header2203: ; preds = %Flow3466 %2722 = icmp ne i64 %2239, 0 br i1 %2722, label %loop-memcpy-residual2202.preheader, label %Flow3463, !amdgpu.uniform !42 loop-memcpy-residual2202.preheader: ; preds = %loop-memcpy-residual-header2203 %umin2907 = call i64 @llvm.umin.i64(i64 %lsr.iv2905, i64 64) %2723 = lshr i64 %umin2907, 4 %2724 = shl nuw nsw i64 %2723, 4 %scevgep2910 = getelementptr i8, ptr %lsr.iv2899, i64 %2724 %scevgep2902 = getelementptr i8, ptr %2238, i64 %75 %scevgep2903 = getelementptr i8, ptr %scevgep2902, i64 %2213 %scevgep2908 = getelementptr i8, ptr %scevgep2903, i64 %2724 br label %loop-memcpy-residual2202, !amdgpu.uniform !42 Flow3478: ; preds = %loop-memcpy-expansion2206 br label %Flow3479, !amdgpu.uniform !42 loop-memcpy-residual-header2209: ; preds = %Flow3479 br i1 %2780, label %loop-memcpy-residual-header2209.post-loop-memcpy-expansion2205_crit_edge, label %Flow3475, !amdgpu.uniform !42 loop-memcpy-residual-header2209.post-loop-memcpy-expansion2205_crit_edge: ; preds = %loop-memcpy-residual-header2209 %.pre3266 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1716, 6 br label %Flow3475, !amdgpu.uniform !42 Flow3475: ; preds = %loop-memcpy-residual-header2209.post-loop-memcpy-expansion2205_crit_edge, %loop-memcpy-residual-header2209 %2725 = phi i64 [ %.pre3266, %loop-memcpy-residual-header2209.post-loop-memcpy-expansion2205_crit_edge ], [ poison, %loop-memcpy-residual-header2209 ] %2726 = phi i1 [ false, %loop-memcpy-residual-header2209.post-loop-memcpy-expansion2205_crit_edge ], [ true, %loop-memcpy-residual-header2209 ] br i1 %2726, label %loop-memcpy-residual2208.preheader, label %Flow3476, !amdgpu.uniform !42 loop-memcpy-residual2208.preheader: ; preds = %Flow3475 %2727 = lshr i64 %spec.select.i.i.i.i.i.i.i374, 4 %2728 = shl nuw nsw i64 %2727, 4 %2729 = add i64 %75, %2728 %2730 = add i64 %2729, 8 %scevgep2912 = getelementptr i8, ptr %2206, i64 %2730 %2731 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1716, 6 %scevgep2913 = getelementptr i8, ptr %scevgep2912, i64 %2731 %scevgep2915 = getelementptr i8, ptr %2150, i64 %2728 br label %loop-memcpy-residual2208, !amdgpu.uniform !42 Flow3508: ; preds = %loop-memcpy-expansion2212 %.lcssa4022 = phi i64 [ %2039, %loop-memcpy-expansion2212 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4022) br label %Flow3509, !amdgpu.uniform !42 Flow3510: ; preds = %Flow3506, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1532 call void @llvm.amdgcn.end.cf.i64(i64 %2027) br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1533, !amdgpu.uniform !42 loop-memcpy-residual-header2215: ; preds = %Flow3509 %2732 = icmp ne i64 %2029, 0 %2733 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2732) %2734 = extractvalue { i1, i64 } %2733, 0 %2735 = extractvalue { i1, i64 } %2733, 1 br i1 %2734, label %loop-memcpy-residual2214.preheader, label %Flow3506 loop-memcpy-residual2214.preheader: ; preds = %loop-memcpy-residual-header2215 %umin2938 = call i64 @llvm.umin.i64(i64 %lsr.iv2933, i64 64) %2736 = lshr i64 %umin2938, 4 %2737 = shl nuw nsw i64 %2736, 4 %scevgep2939 = getelementptr i8, ptr %lsr.iv2926, i64 %2737 %scevgep2929 = getelementptr i8, ptr %2028, i64 %75 %scevgep2930 = getelementptr i8, ptr %scevgep2929, i64 %1997 %scevgep2936 = getelementptr i8, ptr %scevgep2930, i64 %2737 br label %loop-memcpy-residual2214, !amdgpu.uniform !42 Flow3521: ; preds = %loop-memcpy-expansion2218 %.lcssa4027 = phi i64 [ %1995, %loop-memcpy-expansion2218 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4027) br label %Flow3522, !amdgpu.uniform !42 loop-memcpy-residual-header2221: ; preds = %Flow3522 %2738 = icmp eq i64 %1983, 0 %2739 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2738) %2740 = extractvalue { i1, i64 } %2739, 0 %2741 = extractvalue { i1, i64 } %2739, 1 br i1 %2740, label %loop-memcpy-residual-header2221.post-loop-memcpy-expansion2217_crit_edge, label %Flow3518 loop-memcpy-residual-header2221.post-loop-memcpy-expansion2217_crit_edge: ; preds = %loop-memcpy-residual-header2221 %.pre3264 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1511, 6 br label %Flow3518, !amdgpu.uniform !42 Flow3518: ; preds = %loop-memcpy-residual-header2221.post-loop-memcpy-expansion2217_crit_edge, %loop-memcpy-residual-header2221 %2742 = phi i64 [ %.pre3264, %loop-memcpy-residual-header2221.post-loop-memcpy-expansion2217_crit_edge ], [ poison, %loop-memcpy-residual-header2221 ] %2743 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %2741) %2744 = extractvalue { i1, i64 } %2743, 0 %2745 = extractvalue { i1, i64 } %2743, 1 br i1 %2744, label %loop-memcpy-residual2220.preheader, label %Flow3519 loop-memcpy-residual2220.preheader: ; preds = %Flow3518 %2746 = add nuw nsw i64 %75, 8 %scevgep2941 = getelementptr i8, ptr %1982, i64 %2746 %umin2944 = call i64 @llvm.umin.i64(i64 %lsr.iv.next2943.lcssa, i64 56) %2747 = lshr i64 %umin2944, 4 %2748 = shl nuw nsw i64 %2747, 4 %scevgep2945 = getelementptr i8, ptr %scevgep2941, i64 %2748 %2749 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1511, 6 %scevgep2946 = getelementptr i8, ptr %scevgep2945, i64 %2749 %scevgep2948 = getelementptr i8, ptr %RHSStr, i64 %2748 br label %loop-memcpy-residual2220, !amdgpu.uniform !42 Flow3623: ; preds = %loop-memcpy-expansion2224 %.lcssa4077 = phi i64 [ %1487, %loop-memcpy-expansion2224 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4077) br label %Flow3624, !amdgpu.uniform !42 Flow3625: ; preds = %Flow3621, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1017 call void @llvm.amdgcn.end.cf.i64(i64 %1475) br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1018, !amdgpu.uniform !42 loop-memcpy-residual-header2227: ; preds = %Flow3624 %2750 = icmp ne i64 %1477, 0 %2751 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2750) %2752 = extractvalue { i1, i64 } %2751, 0 %2753 = extractvalue { i1, i64 } %2751, 1 br i1 %2752, label %loop-memcpy-residual2226.preheader, label %Flow3621 loop-memcpy-residual2226.preheader: ; preds = %loop-memcpy-residual-header2227 %umin3022 = call i64 @llvm.umin.i64(i64 %lsr.iv3020, i64 64) %2754 = lshr i64 %umin3022, 4 %2755 = shl nuw nsw i64 %2754, 4 %scevgep3025 = getelementptr i8, ptr %lsr.iv3015, i64 %2755 %scevgep3018 = getelementptr i8, ptr %1476, i64 %75 %scevgep3019 = getelementptr i8, ptr %scevgep3018, i64 %1445 %scevgep3023 = getelementptr i8, ptr %scevgep3019, i64 %2755 br label %loop-memcpy-residual2226, !amdgpu.uniform !42 Flow3636: ; preds = %loop-memcpy-expansion2230 %.lcssa4082 = phi i64 [ %1443, %loop-memcpy-expansion2230 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4082) br label %Flow3637, !amdgpu.uniform !42 loop-memcpy-residual-header2233: ; preds = %Flow3637 %2756 = icmp eq i64 %1431, 0 %2757 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2756) %2758 = extractvalue { i1, i64 } %2757, 0 %2759 = extractvalue { i1, i64 } %2757, 1 br i1 %2758, label %loop-memcpy-residual-header2233.post-loop-memcpy-expansion2229_crit_edge, label %Flow3633 loop-memcpy-residual-header2233.post-loop-memcpy-expansion2229_crit_edge: ; preds = %loop-memcpy-residual-header2233 %.pre3256 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i996, 6 br label %Flow3633, !amdgpu.uniform !42 Flow3633: ; preds = %loop-memcpy-residual-header2233.post-loop-memcpy-expansion2229_crit_edge, %loop-memcpy-residual-header2233 %2760 = phi i64 [ %.pre3256, %loop-memcpy-residual-header2233.post-loop-memcpy-expansion2229_crit_edge ], [ poison, %loop-memcpy-residual-header2233 ] %2761 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %2759) %2762 = extractvalue { i1, i64 } %2761, 0 %2763 = extractvalue { i1, i64 } %2761, 1 br i1 %2762, label %loop-memcpy-residual2232.preheader, label %Flow3634 loop-memcpy-residual2232.preheader: ; preds = %Flow3633 %2764 = lshr i64 %spec.select.i.i.i.i.i.i.i999, 4 %2765 = shl nuw nsw i64 %2764, 4 %2766 = add i64 %75, %2765 %2767 = add i64 %2766, 8 %scevgep3027 = getelementptr i8, ptr %1430, i64 %2767 %2768 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i996, 6 %scevgep3028 = getelementptr i8, ptr %scevgep3027, i64 %2768 %scevgep3030 = getelementptr i8, ptr %1354, i64 %2765 br label %loop-memcpy-residual2232, !amdgpu.uniform !42 Flow3699: ; preds = %loop-memcpy-expansion2236 br label %Flow3700, !amdgpu.uniform !42 Flow3701: ; preds = %Flow3698, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i805 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i806, !amdgpu.uniform !42 loop-memcpy-residual-header2239: ; preds = %Flow3700 %2769 = icmp ne i64 %1115, 0 br i1 %2769, label %loop-memcpy-residual2238.preheader, label %Flow3698, !amdgpu.uniform !42 loop-memcpy-residual2238.preheader: ; preds = %loop-memcpy-residual-header2239 %umin3071 = call i64 @llvm.umin.i64(i64 %lsr.iv3069, i64 64) %2770 = lshr i64 %umin3071, 4 %2771 = shl nuw nsw i64 %2770, 4 %scevgep3074 = getelementptr i8, ptr %lsr.iv3063, i64 %2771 %scevgep3066 = getelementptr i8, ptr %1114, i64 %75 %scevgep3067 = getelementptr i8, ptr %scevgep3066, i64 %1089 %scevgep3072 = getelementptr i8, ptr %scevgep3067, i64 %2771 br label %loop-memcpy-residual2238, !amdgpu.uniform !42 Flow3708: ; preds = %loop-memcpy-expansion2242 br label %Flow3709, !amdgpu.uniform !42 loop-memcpy-residual-header2245: ; preds = %Flow3709 br i1 %2780, label %loop-memcpy-residual-header2245.post-loop-memcpy-expansion2241_crit_edge, label %Flow3706, !amdgpu.uniform !42 loop-memcpy-residual-header2245.post-loop-memcpy-expansion2241_crit_edge: ; preds = %loop-memcpy-residual-header2245 %.pre3252 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i784, 6 br label %Flow3706, !amdgpu.uniform !42 Flow3706: ; preds = %loop-memcpy-residual-header2245.post-loop-memcpy-expansion2241_crit_edge, %loop-memcpy-residual-header2245 %2772 = phi i64 [ %.pre3252, %loop-memcpy-residual-header2245.post-loop-memcpy-expansion2241_crit_edge ], [ poison, %loop-memcpy-residual-header2245 ] %2773 = phi i1 [ false, %loop-memcpy-residual-header2245.post-loop-memcpy-expansion2241_crit_edge ], [ true, %loop-memcpy-residual-header2245 ] br i1 %2773, label %loop-memcpy-residual2244.preheader, label %Flow3707, !amdgpu.uniform !42 loop-memcpy-residual2244.preheader: ; preds = %Flow3706 %2774 = add i64 %75, %655 %2775 = add i64 %2774, 8 %scevgep3076 = getelementptr i8, ptr %1082, i64 %2775 %2776 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i784, 6 %scevgep3077 = getelementptr i8, ptr %scevgep3076, i64 %2776 %scevgep3079 = getelementptr i8, ptr %1026, i64 %655 br label %loop-memcpy-residual2244, !amdgpu.uniform !42 Flow3769: ; preds = %loop-memcpy-expansion2248 br label %Flow3770, !amdgpu.uniform !42 Flow3771: ; preds = %Flow3768, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i392 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i393, !amdgpu.uniform !42 loop-memcpy-residual-header2251: ; preds = %Flow3770 %2777 = icmp ne i64 %690, 0 br i1 %2777, label %loop-memcpy-residual2250.preheader, label %Flow3768, !amdgpu.uniform !42 loop-memcpy-residual2250.preheader: ; preds = %loop-memcpy-residual-header2251 %umin3135 = call i64 @llvm.umin.i64(i64 %lsr.iv3133, i64 64) %2778 = lshr i64 %umin3135, 4 %2779 = shl nuw nsw i64 %2778, 4 %scevgep3138 = getelementptr i8, ptr %lsr.iv3127, i64 %2779 %scevgep3130 = getelementptr i8, ptr %689, i64 %75 %scevgep3131 = getelementptr i8, ptr %scevgep3130, i64 %663 %scevgep3136 = getelementptr i8, ptr %scevgep3131, i64 %2779 br label %loop-memcpy-residual2250, !amdgpu.uniform !42 Flow3778: ; preds = %loop-memcpy-expansion2254 br label %Flow3779, !amdgpu.uniform !42 loop-memcpy-residual-header2257: ; preds = %Flow3779 %2780 = icmp eq i64 %654, 0 br i1 %2780, label %loop-memcpy-residual-header2257.post-loop-memcpy-expansion2253_crit_edge, label %Flow3776, !amdgpu.uniform !42 loop-memcpy-residual-header2257.post-loop-memcpy-expansion2253_crit_edge: ; preds = %loop-memcpy-residual-header2257 %.pre3246 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i371, 6 br label %Flow3776, !amdgpu.uniform !42 Flow3776: ; preds = %loop-memcpy-residual-header2257.post-loop-memcpy-expansion2253_crit_edge, %loop-memcpy-residual-header2257 %2781 = phi i64 [ %.pre3246, %loop-memcpy-residual-header2257.post-loop-memcpy-expansion2253_crit_edge ], [ poison, %loop-memcpy-residual-header2257 ] %2782 = phi i1 [ false, %loop-memcpy-residual-header2257.post-loop-memcpy-expansion2253_crit_edge ], [ true, %loop-memcpy-residual-header2257 ] br i1 %2782, label %loop-memcpy-residual2256.preheader, label %Flow3777, !amdgpu.uniform !42 loop-memcpy-residual2256.preheader: ; preds = %Flow3776 %2783 = add i64 %75, %655 %2784 = add i64 %2783, 8 %scevgep3140 = getelementptr i8, ptr %653, i64 %2784 %2785 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i371, 6 %scevgep3141 = getelementptr i8, ptr %scevgep3140, i64 %2785 %scevgep3143 = getelementptr i8, ptr %594, i64 %655 br label %loop-memcpy-residual2256, !amdgpu.uniform !42 Flow3811: ; preds = %loop-memcpy-expansion2260 %.lcssa4165 = phi i64 [ %458, %loop-memcpy-expansion2260 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4165) br label %Flow3812, !amdgpu.uniform !42 Flow3813: ; preds = %Flow3810, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i181 call void @llvm.amdgcn.end.cf.i64(i64 %446) br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i182, !amdgpu.uniform !42 loop-memcpy-residual-header2263: ; preds = %Flow3812 %2786 = icmp ne i64 %448, 0 %2787 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2786) %2788 = extractvalue { i1, i64 } %2787, 0 %2789 = extractvalue { i1, i64 } %2787, 1 br i1 %2788, label %loop-memcpy-residual2262.preheader, label %Flow3810 loop-memcpy-residual2262.preheader: ; preds = %loop-memcpy-residual-header2263 %umin3179 = call i64 @llvm.umin.i64(i64 %lsr.iv3177, i64 64) %2790 = lshr i64 %umin3179, 4 %2791 = shl nuw nsw i64 %2790, 4 %scevgep3182 = getelementptr i8, ptr %lsr.iv3172, i64 %2791 %scevgep3175 = getelementptr i8, ptr %447, i64 %75 %scevgep3176 = getelementptr i8, ptr %scevgep3175, i64 %416 %scevgep3180 = getelementptr i8, ptr %scevgep3176, i64 %2791 br label %loop-memcpy-residual2262, !amdgpu.uniform !42 Flow3820: ; preds = %loop-memcpy-expansion2266 %.lcssa4170 = phi i64 [ %414, %loop-memcpy-expansion2266 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4170) br label %Flow3821, !amdgpu.uniform !42 loop-memcpy-residual-header2269: ; preds = %Flow3821 %2792 = icmp eq i64 %402, 0 %2793 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2792) %2794 = extractvalue { i1, i64 } %2793, 0 %2795 = extractvalue { i1, i64 } %2793, 1 br i1 %2794, label %loop-memcpy-residual-header2269.post-loop-memcpy-expansion2265_crit_edge, label %Flow3818 loop-memcpy-residual-header2269.post-loop-memcpy-expansion2265_crit_edge: ; preds = %loop-memcpy-residual-header2269 %.pre3242 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i160, 6 br label %Flow3818, !amdgpu.uniform !42 Flow3818: ; preds = %loop-memcpy-residual-header2269.post-loop-memcpy-expansion2265_crit_edge, %loop-memcpy-residual-header2269 %2796 = phi i64 [ %.pre3242, %loop-memcpy-residual-header2269.post-loop-memcpy-expansion2265_crit_edge ], [ poison, %loop-memcpy-residual-header2269 ] %2797 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %2795) %2798 = extractvalue { i1, i64 } %2797, 0 %2799 = extractvalue { i1, i64 } %2797, 1 br i1 %2798, label %loop-memcpy-residual2268.preheader, label %Flow3819 loop-memcpy-residual2268.preheader: ; preds = %Flow3818 %2800 = lshr i64 %spec.select.i.i.i.i.i.i.i163, 4 %2801 = shl nuw nsw i64 %2800, 4 %2802 = add i64 %75, %2801 %2803 = add i64 %2802, 8 %scevgep3184 = getelementptr i8, ptr %401, i64 %2803 %2804 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i160, 6 %scevgep3185 = getelementptr i8, ptr %scevgep3184, i64 %2804 %scevgep3187 = getelementptr i8, ptr %325, i64 %2801 br label %loop-memcpy-residual2268, !amdgpu.uniform !42 Flow3488: ; preds = %loop-memcpy-expansion2272 br label %Flow3489, !amdgpu.uniform !42 loop-memcpy-residual-header2275: ; preds = %Flow3489 br i1 %2807, label %loop-memcpy-residual2274.preheader, label %Flow3486, !amdgpu.uniform !42 loop-memcpy-residual2274.preheader: ; preds = %loop-memcpy-residual-header2275 %2805 = sub i64 sub (i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.9, i64 8) to ptr) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.9 to ptr) to i64)), %umin3132 %2806 = sub i64 %2805, %595 %scevgep2921 = getelementptr i8, ptr %2150, i64 %2806 %scevgep2923 = getelementptr i8, ptr %3, i64 %2806 br label %loop-memcpy-residual2274, !amdgpu.uniform !42 Flow3716: ; preds = %loop-memcpy-expansion2278 br label %Flow3717, !amdgpu.uniform !42 loop-memcpy-residual-header2281: ; preds = %Flow3717 br i1 %2807, label %loop-memcpy-residual2280.preheader, label %Flow3715, !amdgpu.uniform !42 loop-memcpy-residual2280.preheader: ; preds = %loop-memcpy-residual-header2281 %scevgep3084 = getelementptr i8, ptr %1026, i64 %596 %scevgep3086 = getelementptr i8, ptr %3, i64 %596 br label %loop-memcpy-residual2280, !amdgpu.uniform !42 Flow3786: ; preds = %loop-memcpy-expansion2284 br label %Flow3787, !amdgpu.uniform !42 loop-memcpy-residual-header2287: ; preds = %Flow3787 %2807 = icmp ne i64 %595, 0 br i1 %2807, label %loop-memcpy-residual2286.preheader, label %Flow3785, !amdgpu.uniform !42 loop-memcpy-residual2286.preheader: ; preds = %loop-memcpy-residual-header2287 %scevgep3148 = getelementptr i8, ptr %594, i64 %596 %scevgep3150 = getelementptr i8, ptr %3, i64 %596 br label %loop-memcpy-residual2286, !amdgpu.uniform !42 Flow3828: ; preds = %loop-memcpy-expansion2290 %.lcssa4178 = phi i64 [ %347, %loop-memcpy-expansion2290 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4178) br label %Flow3829, !amdgpu.uniform !42 loop-memcpy-residual-header2293: ; preds = %Flow3829 %2808 = icmp ne i64 %336, 0 %2809 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2808) %2810 = extractvalue { i1, i64 } %2809, 0 %2811 = extractvalue { i1, i64 } %2809, 1 br i1 %2810, label %loop-memcpy-residual2292.preheader, label %Flow3827 loop-memcpy-residual2292.preheader: ; preds = %loop-memcpy-residual-header2293 %2812 = lshr i64 %writer.sroa.10.4.i.i.i.i, 4 %2813 = trunc i64 %2812 to i32 %2814 = shl i32 %2813, 4 %2815 = add i32 %2814, 11 %2816 = sub i32 %2815, %335 %scevgep3192 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i, i32 %2816 %2817 = shl nuw i64 %2812, 4 %scevgep3195 = getelementptr i8, ptr %325, i64 %2817 br label %loop-memcpy-residual2292, !amdgpu.uniform !42 Flow3417: ; preds = %loop-memcpy-expansion2296 %.lcssa3987 = phi i64 [ %2481, %loop-memcpy-expansion2296 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3987) br label %Flow3418, !amdgpu.uniform !42 loop-memcpy-residual-header2299: ; preds = %Flow3418 %2818 = icmp ne i64 %2470, 0 %2819 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2818) %2820 = extractvalue { i1, i64 } %2819, 0 %2821 = extractvalue { i1, i64 } %2819, 1 br i1 %2820, label %loop-memcpy-residual2298.preheader, label %Flow3416 loop-memcpy-residual2298.preheader: ; preds = %loop-memcpy-residual-header2299 %2822 = lshr i64 %writer.sroa.10.4.i.i.i.i120.i, 4 %2823 = trunc i64 %2822 to i32 %2824 = shl i32 %2823, 4 %2825 = add i32 %2824, 11 %2826 = sub i32 %2825, %2469 %scevgep2871 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i, i32 %2826 %2827 = shl nuw i64 %2822, 4 %scevgep2874 = getelementptr i8, ptr %2459, i64 %2827 br label %loop-memcpy-residual2298, !amdgpu.uniform !42 Flow3646: ; preds = %loop-memcpy-expansion2302 %.lcssa4090 = phi i64 [ %1376, %loop-memcpy-expansion2302 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4090) br label %Flow3647, !amdgpu.uniform !42 loop-memcpy-residual-header2305: ; preds = %Flow3647 %2828 = icmp ne i64 %1365, 0 %2829 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2828) %2830 = extractvalue { i1, i64 } %2829, 0 %2831 = extractvalue { i1, i64 } %2829, 1 br i1 %2830, label %loop-memcpy-residual2304.preheader, label %Flow3644 loop-memcpy-residual2304.preheader: ; preds = %loop-memcpy-residual-header2305 %2832 = lshr i64 %writer.sroa.10.5.i.i.i.i.i, 4 %2833 = trunc i64 %2832 to i32 %2834 = shl i32 %2833, 4 %2835 = add i32 %2834, 11 %2836 = sub i32 %2835, %1364 %scevgep3035 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i, i32 %2836 %2837 = shl nuw i64 %2832, 4 %scevgep3038 = getelementptr i8, ptr %1354, i64 %2837 br label %loop-memcpy-residual2304, !amdgpu.uniform !42 Flow3881: ; preds = %loop-memcpy-expansion2308 br label %Flow3882, !amdgpu.uniform !42 loop-memcpy-residual-header2311: ; preds = %Flow3882 %2838 = icmp eq i64 %65, 0 br i1 %2838, label %loop-memcpy-residual-header2311.post-loop-memcpy-expansion2307_crit_edge, label %Flow3879, !amdgpu.uniform !42 loop-memcpy-residual-header2311.post-loop-memcpy-expansion2307_crit_edge: ; preds = %loop-memcpy-residual-header2311 %.pre = shl nuw nsw i64 %sh_prom.i.i.i.i, 6 %.pre3238 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i, 6 br label %Flow3879, !amdgpu.uniform !42 Flow3879: ; preds = %loop-memcpy-residual-header2311.post-loop-memcpy-expansion2307_crit_edge, %loop-memcpy-residual-header2311 %2839 = phi i64 [ %.pre, %loop-memcpy-residual-header2311.post-loop-memcpy-expansion2307_crit_edge ], [ poison, %loop-memcpy-residual-header2311 ] %2840 = phi i64 [ %.pre3238, %loop-memcpy-residual-header2311.post-loop-memcpy-expansion2307_crit_edge ], [ poison, %loop-memcpy-residual-header2311 ] %2841 = phi i1 [ false, %loop-memcpy-residual-header2311.post-loop-memcpy-expansion2307_crit_edge ], [ true, %loop-memcpy-residual-header2311 ] br i1 %2841, label %loop-memcpy-residual2310.preheader, label %Flow3880, !amdgpu.uniform !42 loop-memcpy-residual2310.preheader: ; preds = %Flow3879 %2842 = shl nuw nsw i64 %sh_prom.i.i.i.i, 6 %2843 = add nuw nsw i64 %2842, 56 %scevgep3231 = getelementptr i8, ptr %64, i64 %2843 %2844 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i, 6 %scevgep3232 = getelementptr i8, ptr %scevgep3231, i64 %2844 br label %loop-memcpy-residual2310, !amdgpu.uniform !42 Flow3872: ; preds = %loop-memcpy-expansion2314 br label %Flow3873, !amdgpu.uniform !42 Flow3874: ; preds = %Flow3871, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i, !amdgpu.uniform !42 loop-memcpy-residual-header2317: ; preds = %Flow3873 %2845 = icmp ne i64 %102, 0 br i1 %2845, label %loop-memcpy-residual2316.preheader, label %Flow3871, !amdgpu.uniform !42 loop-memcpy-residual2316.preheader: ; preds = %loop-memcpy-residual-header2317 %umin3226 = call i64 @llvm.umin.i64(i64 %lsr.iv3224, i64 64) %2846 = lshr i64 %umin3226, 4 %2847 = shl nuw nsw i64 %2846, 4 %scevgep3229 = getelementptr i8, ptr addrspace(4) %lsr.iv3219, i64 %2847 %scevgep3222 = getelementptr i8, ptr %101, i64 %75 %scevgep3223 = getelementptr i8, ptr %scevgep3222, i64 %76 %scevgep3227 = getelementptr i8, ptr %scevgep3223, i64 %2847 br label %loop-memcpy-residual2316, !amdgpu.uniform !42 Flow3862: ; preds = %loop-memcpy-expansion2320 br label %Flow3863, !amdgpu.uniform !42 loop-memcpy-residual-header2323: ; preds = %Flow3863 %2848 = icmp eq i64 %178, 0 br i1 %2848, label %loop-memcpy-residual-header2323.post-loop-memcpy-expansion2319_crit_edge, label %Flow3860, !amdgpu.uniform !42 loop-memcpy-residual-header2323.post-loop-memcpy-expansion2319_crit_edge: ; preds = %loop-memcpy-residual-header2323 %.pre3240 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i56, 6 br label %Flow3860, !amdgpu.uniform !42 Flow3860: ; preds = %loop-memcpy-residual-header2323.post-loop-memcpy-expansion2319_crit_edge, %loop-memcpy-residual-header2323 %2849 = phi i64 [ %.pre3240, %loop-memcpy-residual-header2323.post-loop-memcpy-expansion2319_crit_edge ], [ poison, %loop-memcpy-residual-header2323 ] %2850 = phi i1 [ false, %loop-memcpy-residual-header2323.post-loop-memcpy-expansion2319_crit_edge ], [ true, %loop-memcpy-residual-header2323 ] br i1 %2850, label %loop-memcpy-residual2322.preheader, label %Flow3861, !amdgpu.uniform !42 loop-memcpy-residual2322.preheader: ; preds = %Flow3860 %2851 = add nuw nsw i64 %75, 8 %scevgep3212 = getelementptr i8, ptr %177, i64 %2851 %2852 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i56, 6 %scevgep3213 = getelementptr i8, ptr %scevgep3212, i64 %2852 br label %loop-memcpy-residual2322, !amdgpu.uniform !42 Flow3853: ; preds = %loop-memcpy-expansion2326 br label %Flow3854, !amdgpu.uniform !42 Flow3855: ; preds = %Flow3852, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i77 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i78, !amdgpu.uniform !42 loop-memcpy-residual-header2329: ; preds = %Flow3854 %2853 = icmp ne i64 %213, 0 br i1 %2853, label %loop-memcpy-residual2328.preheader, label %Flow3852, !amdgpu.uniform !42 loop-memcpy-residual2328.preheader: ; preds = %loop-memcpy-residual-header2329 %umin3207 = call i64 @llvm.umin.i64(i64 %lsr.iv3205, i64 64) %2854 = lshr i64 %umin3207, 4 %2855 = shl nuw nsw i64 %2854, 4 %scevgep3210 = getelementptr i8, ptr addrspace(4) %lsr.iv3200, i64 %2855 %scevgep3203 = getelementptr i8, ptr %212, i64 %75 %scevgep3204 = getelementptr i8, ptr %scevgep3203, i64 %187 %scevgep3208 = getelementptr i8, ptr %scevgep3204, i64 %2855 br label %loop-memcpy-residual2328, !amdgpu.uniform !42 Flow3801: ; preds = %loop-memcpy-expansion2332 br label %Flow3802, !amdgpu.uniform !42 loop-memcpy-residual-header2335: ; preds = %Flow3802 %2856 = icmp eq i64 %531, 0 br i1 %2856, label %loop-memcpy-residual-header2335.post-loop-memcpy-expansion2331_crit_edge, label %Flow3799, !amdgpu.uniform !42 loop-memcpy-residual-header2335.post-loop-memcpy-expansion2331_crit_edge: ; preds = %loop-memcpy-residual-header2335 %.pre3244 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i265, 6 br label %Flow3799, !amdgpu.uniform !42 Flow3799: ; preds = %loop-memcpy-residual-header2335.post-loop-memcpy-expansion2331_crit_edge, %loop-memcpy-residual-header2335 %2857 = phi i64 [ %.pre3244, %loop-memcpy-residual-header2335.post-loop-memcpy-expansion2331_crit_edge ], [ poison, %loop-memcpy-residual-header2335 ] %2858 = phi i1 [ false, %loop-memcpy-residual-header2335.post-loop-memcpy-expansion2331_crit_edge ], [ true, %loop-memcpy-residual-header2335 ] br i1 %2858, label %loop-memcpy-residual2334.preheader, label %Flow3800, !amdgpu.uniform !42 loop-memcpy-residual2334.preheader: ; preds = %Flow3799 %2859 = add nuw nsw i64 %75, 8 %scevgep3164 = getelementptr i8, ptr %530, i64 %2859 %2860 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i265, 6 %scevgep3165 = getelementptr i8, ptr %scevgep3164, i64 %2860 br label %loop-memcpy-residual2334, !amdgpu.uniform !42 Flow3792: ; preds = %loop-memcpy-expansion2338 br label %Flow3793, !amdgpu.uniform !42 Flow3794: ; preds = %Flow3791, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i286 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i287, !amdgpu.uniform !42 loop-memcpy-residual-header2341: ; preds = %Flow3793 %2861 = icmp ne i64 %566, 0 br i1 %2861, label %loop-memcpy-residual2340.preheader, label %Flow3791, !amdgpu.uniform !42 loop-memcpy-residual2340.preheader: ; preds = %loop-memcpy-residual-header2341 %umin3159 = call i64 @llvm.umin.i64(i64 %lsr.iv3157, i64 64) %2862 = lshr i64 %umin3159, 4 %2863 = shl nuw nsw i64 %2862, 4 %scevgep3162 = getelementptr i8, ptr addrspace(4) %lsr.iv3152, i64 %2863 %scevgep3155 = getelementptr i8, ptr %565, i64 %75 %scevgep3156 = getelementptr i8, ptr %scevgep3155, i64 %540 %scevgep3160 = getelementptr i8, ptr %scevgep3156, i64 %2863 br label %loop-memcpy-residual2340, !amdgpu.uniform !42 Flow3759: ; preds = %loop-memcpy-expansion2344 br label %Flow3760, !amdgpu.uniform !42 loop-memcpy-residual-header2347: ; preds = %Flow3760 %2864 = icmp eq i64 %766, 0 br i1 %2864, label %loop-memcpy-residual-header2347.post-loop-memcpy-expansion2343_crit_edge, label %Flow3757, !amdgpu.uniform !42 loop-memcpy-residual-header2347.post-loop-memcpy-expansion2343_crit_edge: ; preds = %loop-memcpy-residual-header2347 %.pre3248 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i476, 6 br label %Flow3757, !amdgpu.uniform !42 Flow3757: ; preds = %loop-memcpy-residual-header2347.post-loop-memcpy-expansion2343_crit_edge, %loop-memcpy-residual-header2347 %2865 = phi i64 [ %.pre3248, %loop-memcpy-residual-header2347.post-loop-memcpy-expansion2343_crit_edge ], [ poison, %loop-memcpy-residual-header2347 ] %2866 = phi i1 [ false, %loop-memcpy-residual-header2347.post-loop-memcpy-expansion2343_crit_edge ], [ true, %loop-memcpy-residual-header2347 ] br i1 %2866, label %loop-memcpy-residual2346.preheader, label %Flow3758, !amdgpu.uniform !42 loop-memcpy-residual2346.preheader: ; preds = %Flow3757 %2867 = add nuw nsw i64 %75, 8 %scevgep3119 = getelementptr i8, ptr %765, i64 %2867 %2868 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i476, 6 %scevgep3120 = getelementptr i8, ptr %scevgep3119, i64 %2868 br label %loop-memcpy-residual2346, !amdgpu.uniform !42 Flow3750: ; preds = %loop-memcpy-expansion2350 br label %Flow3751, !amdgpu.uniform !42 Flow3752: ; preds = %Flow3749, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i497 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i498, !amdgpu.uniform !42 loop-memcpy-residual-header2353: ; preds = %Flow3751 %2869 = icmp ne i64 %801, 0 br i1 %2869, label %loop-memcpy-residual2352.preheader, label %Flow3749, !amdgpu.uniform !42 loop-memcpy-residual2352.preheader: ; preds = %loop-memcpy-residual-header2353 %umin3114 = call i64 @llvm.umin.i64(i64 %lsr.iv3112, i64 64) %2870 = lshr i64 %umin3114, 4 %2871 = shl nuw nsw i64 %2870, 4 %scevgep3117 = getelementptr i8, ptr addrspace(4) %lsr.iv3107, i64 %2871 %scevgep3110 = getelementptr i8, ptr %800, i64 %75 %scevgep3111 = getelementptr i8, ptr %scevgep3110, i64 %775 %scevgep3115 = getelementptr i8, ptr %scevgep3111, i64 %2871 br label %loop-memcpy-residual2352, !amdgpu.uniform !42 Flow3740: ; preds = %loop-memcpy-expansion2356 br label %Flow3741, !amdgpu.uniform !42 loop-memcpy-residual-header2359: ; preds = %Flow3741 %2872 = icmp eq i64 %877, 0 br i1 %2872, label %loop-memcpy-residual-header2359.post-loop-memcpy-expansion2355_crit_edge, label %Flow3738, !amdgpu.uniform !42 loop-memcpy-residual-header2359.post-loop-memcpy-expansion2355_crit_edge: ; preds = %loop-memcpy-residual-header2359 %.pre3250 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i582, 6 br label %Flow3738, !amdgpu.uniform !42 Flow3738: ; preds = %loop-memcpy-residual-header2359.post-loop-memcpy-expansion2355_crit_edge, %loop-memcpy-residual-header2359 %2873 = phi i64 [ %.pre3250, %loop-memcpy-residual-header2359.post-loop-memcpy-expansion2355_crit_edge ], [ poison, %loop-memcpy-residual-header2359 ] %2874 = phi i1 [ false, %loop-memcpy-residual-header2359.post-loop-memcpy-expansion2355_crit_edge ], [ true, %loop-memcpy-residual-header2359 ] br i1 %2874, label %loop-memcpy-residual2358.preheader, label %Flow3739, !amdgpu.uniform !42 loop-memcpy-residual2358.preheader: ; preds = %Flow3738 %2875 = add nuw nsw i64 %75, 40 %scevgep3100 = getelementptr i8, ptr %876, i64 %2875 %2876 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i582, 6 %scevgep3101 = getelementptr i8, ptr %scevgep3100, i64 %2876 br label %loop-memcpy-residual2358, !amdgpu.uniform !42 Flow3731: ; preds = %loop-memcpy-expansion2362 br label %Flow3732, !amdgpu.uniform !42 Flow3733: ; preds = %Flow3730, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i603 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i604, !amdgpu.uniform !42 loop-memcpy-residual-header2365: ; preds = %Flow3732 %2877 = icmp ne i64 %912, 0 br i1 %2877, label %loop-memcpy-residual2364.preheader, label %Flow3730, !amdgpu.uniform !42 loop-memcpy-residual2364.preheader: ; preds = %loop-memcpy-residual-header2365 %umin3095 = call i64 @llvm.umin.i64(i64 %lsr.iv3093, i64 64) %2878 = lshr i64 %umin3095, 4 %2879 = shl nuw nsw i64 %2878, 4 %scevgep3098 = getelementptr i8, ptr addrspace(4) %lsr.iv3088, i64 %2879 %scevgep3091 = getelementptr i8, ptr %911, i64 %75 %scevgep3092 = getelementptr i8, ptr %scevgep3091, i64 %886 %scevgep3096 = getelementptr i8, ptr %scevgep3092, i64 %2879 br label %loop-memcpy-residual2364, !amdgpu.uniform !42 Flow3689: ; preds = %loop-memcpy-expansion2368 br label %Flow3690, !amdgpu.uniform !42 loop-memcpy-residual-header2371: ; preds = %Flow3690 %2880 = icmp eq i64 %1191, 0 br i1 %2880, label %loop-memcpy-residual-header2371.post-loop-memcpy-expansion2367_crit_edge, label %Flow3687, !amdgpu.uniform !42 loop-memcpy-residual-header2371.post-loop-memcpy-expansion2367_crit_edge: ; preds = %loop-memcpy-residual-header2371 %.pre3254 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i890, 6 br label %Flow3687, !amdgpu.uniform !42 Flow3687: ; preds = %loop-memcpy-residual-header2371.post-loop-memcpy-expansion2367_crit_edge, %loop-memcpy-residual-header2371 %2881 = phi i64 [ %.pre3254, %loop-memcpy-residual-header2371.post-loop-memcpy-expansion2367_crit_edge ], [ poison, %loop-memcpy-residual-header2371 ] %2882 = phi i1 [ false, %loop-memcpy-residual-header2371.post-loop-memcpy-expansion2367_crit_edge ], [ true, %loop-memcpy-residual-header2371 ] br i1 %2882, label %loop-memcpy-residual2370.preheader, label %Flow3688, !amdgpu.uniform !42 loop-memcpy-residual2370.preheader: ; preds = %Flow3687 %2883 = add nuw nsw i64 %75, 8 %scevgep3055 = getelementptr i8, ptr %1190, i64 %2883 %2884 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i890, 6 %scevgep3056 = getelementptr i8, ptr %scevgep3055, i64 %2884 br label %loop-memcpy-residual2370, !amdgpu.uniform !42 Flow3452: ; preds = %loop-memcpy-expansion2374 br label %Flow3453, !amdgpu.uniform !42 loop-memcpy-residual-header2377: ; preds = %Flow3453 br i1 %2880, label %loop-memcpy-residual-header2377.post-loop-memcpy-expansion2373_crit_edge, label %Flow3449, !amdgpu.uniform !42 loop-memcpy-residual-header2377.post-loop-memcpy-expansion2373_crit_edge: ; preds = %loop-memcpy-residual-header2377 %.pre3268 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1822, 6 br label %Flow3449, !amdgpu.uniform !42 Flow3449: ; preds = %loop-memcpy-residual-header2377.post-loop-memcpy-expansion2373_crit_edge, %loop-memcpy-residual-header2377 %2885 = phi i64 [ %.pre3268, %loop-memcpy-residual-header2377.post-loop-memcpy-expansion2373_crit_edge ], [ poison, %loop-memcpy-residual-header2377 ] %2886 = phi i1 [ false, %loop-memcpy-residual-header2377.post-loop-memcpy-expansion2373_crit_edge ], [ true, %loop-memcpy-residual-header2377 ] br i1 %2886, label %loop-memcpy-residual2376.preheader, label %Flow3450, !amdgpu.uniform !42 loop-memcpy-residual2376.preheader: ; preds = %Flow3449 %2887 = add nuw nsw i64 %75, 8 %scevgep2891 = getelementptr i8, ptr %2314, i64 %2887 %2888 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1822, 6 %scevgep2892 = getelementptr i8, ptr %scevgep2891, i64 %2888 br label %loop-memcpy-residual2376, !amdgpu.uniform !42 Flow3678: ; preds = %loop-memcpy-expansion2380 br label %Flow3679, !amdgpu.uniform !42 Flow3680: ; preds = %Flow3676, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i911 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i912, !amdgpu.uniform !42 loop-memcpy-residual-header2383: ; preds = %Flow3679 %2889 = icmp ne i64 %1226, 0 br i1 %2889, label %loop-memcpy-residual2382.preheader, label %Flow3676, !amdgpu.uniform !42 loop-memcpy-residual2382.preheader: ; preds = %loop-memcpy-residual-header2383 %umin3050 = call i64 @llvm.umin.i64(i64 %lsr.iv3048, i64 64) %2890 = lshr i64 %umin3050, 4 %2891 = shl nuw nsw i64 %2890, 4 %scevgep3053 = getelementptr i8, ptr addrspace(4) %lsr.iv3043, i64 %2891 %scevgep3046 = getelementptr i8, ptr %1225, i64 %75 %scevgep3047 = getelementptr i8, ptr %scevgep3046, i64 %1200 %scevgep3051 = getelementptr i8, ptr %scevgep3047, i64 %2891 br label %loop-memcpy-residual2382, !amdgpu.uniform !42 Flow3599: ; preds = %loop-memcpy-expansion2386 br label %Flow3600, !amdgpu.uniform !42 loop-memcpy-residual-header2389: ; preds = %Flow3600 %2892 = icmp eq i64 %1646, 0 br i1 %2892, label %loop-memcpy-residual-header2389.post-loop-memcpy-expansion2385_crit_edge, label %Flow3596, !amdgpu.uniform !42 loop-memcpy-residual-header2389.post-loop-memcpy-expansion2385_crit_edge: ; preds = %loop-memcpy-residual-header2389 %.pre3258 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1201, 6 br label %Flow3596, !amdgpu.uniform !42 Flow3596: ; preds = %loop-memcpy-residual-header2389.post-loop-memcpy-expansion2385_crit_edge, %loop-memcpy-residual-header2389 %2893 = phi i64 [ %.pre3258, %loop-memcpy-residual-header2389.post-loop-memcpy-expansion2385_crit_edge ], [ poison, %loop-memcpy-residual-header2389 ] %2894 = phi i1 [ false, %loop-memcpy-residual-header2389.post-loop-memcpy-expansion2385_crit_edge ], [ true, %loop-memcpy-residual-header2389 ] br i1 %2894, label %loop-memcpy-residual2388.preheader, label %Flow3597, !amdgpu.uniform !42 loop-memcpy-residual2388.preheader: ; preds = %Flow3596 %2895 = add nuw nsw i64 %75, 8 %scevgep3007 = getelementptr i8, ptr %1645, i64 %2895 %2896 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1201, 6 %scevgep3008 = getelementptr i8, ptr %scevgep3007, i64 %2896 br label %loop-memcpy-residual2388, !amdgpu.uniform !42 Flow3586: ; preds = %loop-memcpy-expansion2392 br label %Flow3587, !amdgpu.uniform !42 Flow3588: ; preds = %Flow3584, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1222 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1223, !amdgpu.uniform !42 loop-memcpy-residual-header2395: ; preds = %Flow3587 %2897 = icmp ne i64 %1681, 0 br i1 %2897, label %loop-memcpy-residual2394.preheader, label %Flow3584, !amdgpu.uniform !42 loop-memcpy-residual2394.preheader: ; preds = %loop-memcpy-residual-header2395 %umin3002 = call i64 @llvm.umin.i64(i64 %lsr.iv3000, i64 64) %2898 = lshr i64 %umin3002, 4 %2899 = shl nuw nsw i64 %2898, 4 %scevgep3005 = getelementptr i8, ptr addrspace(4) %lsr.iv2995, i64 %2899 %scevgep2998 = getelementptr i8, ptr %1680, i64 %75 %scevgep2999 = getelementptr i8, ptr %scevgep2998, i64 %1655 %scevgep3003 = getelementptr i8, ptr %scevgep2999, i64 %2899 br label %loop-memcpy-residual2394, !amdgpu.uniform !42 Flow3573: ; preds = %loop-memcpy-expansion2398 br label %Flow3574, !amdgpu.uniform !42 loop-memcpy-residual-header2401: ; preds = %Flow3574 %2900 = icmp eq i64 %1757, 0 br i1 %2900, label %loop-memcpy-residual-header2401.post-loop-memcpy-expansion2397_crit_edge, label %Flow3570, !amdgpu.uniform !42 loop-memcpy-residual-header2401.post-loop-memcpy-expansion2397_crit_edge: ; preds = %loop-memcpy-residual-header2401 %.pre3260 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1300, 6 br label %Flow3570, !amdgpu.uniform !42 Flow3570: ; preds = %loop-memcpy-residual-header2401.post-loop-memcpy-expansion2397_crit_edge, %loop-memcpy-residual-header2401 %2901 = phi i64 [ %.pre3260, %loop-memcpy-residual-header2401.post-loop-memcpy-expansion2397_crit_edge ], [ poison, %loop-memcpy-residual-header2401 ] %2902 = phi i1 [ false, %loop-memcpy-residual-header2401.post-loop-memcpy-expansion2397_crit_edge ], [ true, %loop-memcpy-residual-header2401 ] br i1 %2902, label %loop-memcpy-residual2400.preheader, label %Flow3571, !amdgpu.uniform !42 loop-memcpy-residual2400.preheader: ; preds = %Flow3570 %2903 = lshr i64 %spec.select.i.i.i.i.i.i.i1303, 4 %2904 = shl nuw nsw i64 %2903, 4 %2905 = add i64 %75, %2904 %2906 = add i64 %2905, 8 %scevgep2987 = getelementptr i8, ptr %1756, i64 %2906 %2907 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1300, 6 %scevgep2988 = getelementptr i8, ptr %scevgep2987, i64 %2907 %scevgep2990 = getelementptr i8, ptr addrspace(4) @.str.9, i64 %2904 br label %loop-memcpy-residual2400, !amdgpu.uniform !42 Flow3560: ; preds = %loop-memcpy-expansion2404 br label %Flow3561, !amdgpu.uniform !42 Flow3562: ; preds = %Flow3558, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1321 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1322, !amdgpu.uniform !42 loop-memcpy-residual-header2407: ; preds = %Flow3561 %2908 = icmp ne i64 %1792, 0 br i1 %2908, label %loop-memcpy-residual2406.preheader, label %Flow3558, !amdgpu.uniform !42 loop-memcpy-residual2406.preheader: ; preds = %loop-memcpy-residual-header2407 %umin2982 = call i64 @llvm.umin.i64(i64 %lsr.iv2980, i64 64) %2909 = lshr i64 %umin2982, 4 %2910 = shl nuw nsw i64 %2909, 4 %scevgep2985 = getelementptr i8, ptr addrspace(4) %lsr.iv2975, i64 %2910 %scevgep2978 = getelementptr i8, ptr %1791, i64 %75 %scevgep2979 = getelementptr i8, ptr %scevgep2978, i64 %1766 %scevgep2983 = getelementptr i8, ptr %scevgep2979, i64 %2910 br label %loop-memcpy-residual2406, !amdgpu.uniform !42 Flow3547: ; preds = %loop-memcpy-expansion2410 br label %Flow3548, !amdgpu.uniform !42 loop-memcpy-residual-header2413: ; preds = %Flow3548 %2911 = icmp eq i64 %1868, 0 br i1 %2911, label %loop-memcpy-residual-header2413.post-loop-memcpy-expansion2409_crit_edge, label %Flow3544, !amdgpu.uniform !42 loop-memcpy-residual-header2413.post-loop-memcpy-expansion2409_crit_edge: ; preds = %loop-memcpy-residual-header2413 %.pre3262 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1405, 6 br label %Flow3544, !amdgpu.uniform !42 Flow3544: ; preds = %loop-memcpy-residual-header2413.post-loop-memcpy-expansion2409_crit_edge, %loop-memcpy-residual-header2413 %2912 = phi i64 [ %.pre3262, %loop-memcpy-residual-header2413.post-loop-memcpy-expansion2409_crit_edge ], [ poison, %loop-memcpy-residual-header2413 ] %2913 = phi i1 [ false, %loop-memcpy-residual-header2413.post-loop-memcpy-expansion2409_crit_edge ], [ true, %loop-memcpy-residual-header2413 ] br i1 %2913, label %loop-memcpy-residual2412.preheader, label %Flow3545, !amdgpu.uniform !42 loop-memcpy-residual2412.preheader: ; preds = %Flow3544 %2914 = add nuw nsw i64 %75, 8 %scevgep2968 = getelementptr i8, ptr %1867, i64 %2914 %2915 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1405, 6 %scevgep2969 = getelementptr i8, ptr %scevgep2968, i64 %2915 br label %loop-memcpy-residual2412, !amdgpu.uniform !42 Flow3534: ; preds = %loop-memcpy-expansion2416 br label %Flow3535, !amdgpu.uniform !42 Flow3536: ; preds = %Flow3532, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1426 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1427, !amdgpu.uniform !42 loop-memcpy-residual-header2419: ; preds = %Flow3535 %2916 = icmp ne i64 %1903, 0 br i1 %2916, label %loop-memcpy-residual2418.preheader, label %Flow3532, !amdgpu.uniform !42 loop-memcpy-residual2418.preheader: ; preds = %loop-memcpy-residual-header2419 %umin2963 = call i64 @llvm.umin.i64(i64 %lsr.iv2961, i64 64) %2917 = lshr i64 %umin2963, 4 %2918 = shl nuw nsw i64 %2917, 4 %scevgep2966 = getelementptr i8, ptr addrspace(4) %lsr.iv2956, i64 %2918 %scevgep2959 = getelementptr i8, ptr %1902, i64 %75 %scevgep2960 = getelementptr i8, ptr %scevgep2959, i64 %1877 %scevgep2964 = getelementptr i8, ptr %scevgep2960, i64 %2918 br label %loop-memcpy-residual2418, !amdgpu.uniform !42 Flow3442: ; preds = %loop-memcpy-expansion2422 br label %Flow3443, !amdgpu.uniform !42 Flow3444: ; preds = %Flow3441, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1843 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1844, !amdgpu.uniform !42 loop-memcpy-residual-header2425: ; preds = %Flow3443 %2919 = icmp ne i64 %2347, 0 br i1 %2919, label %loop-memcpy-residual2424.preheader, label %Flow3441, !amdgpu.uniform !42 loop-memcpy-residual2424.preheader: ; preds = %loop-memcpy-residual-header2425 %umin2886 = call i64 @llvm.umin.i64(i64 %lsr.iv2884, i64 64) %2920 = lshr i64 %umin2886, 4 %2921 = shl nuw nsw i64 %2920, 4 %scevgep2889 = getelementptr i8, ptr addrspace(4) %lsr.iv2879, i64 %2921 %scevgep2882 = getelementptr i8, ptr %2346, i64 %75 %scevgep2883 = getelementptr i8, ptr %scevgep2882, i64 %2321 %scevgep2887 = getelementptr i8, ptr %scevgep2883, i64 %2921 br label %loop-memcpy-residual2424, !amdgpu.uniform !42 ComputeLoop: ; preds = %for.cond.i.i1.i, %ComputeLoop %Accumulator = phi i32 [ %2926, %ComputeLoop ], [ 0, %for.cond.i.i1.i ] %OldValuePhi = phi i32 [ %2925, %ComputeLoop ], [ poison, %for.cond.i.i1.i ] %ActiveBits = phi i64 [ %2929, %ComputeLoop ], [ %25, %for.cond.i.i1.i ] %2922 = call i64 @llvm.cttz.i64(i64 %ActiveBits, i1 true) %2923 = trunc i64 %2922 to i32 %2924 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i, i32 %2923) %2925 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator, i32 %2923, i32 %OldValuePhi) %2926 = or i32 %Accumulator, %2924 %2927 = shl i64 1, %2922 %2928 = xor i64 %2927, -1 %2929 = and i64 %ActiveBits, %2928 %2930 = icmp eq i64 %2929, 0 br i1 %2930, label %ComputeEnd, label %ComputeLoop, !amdgpu.uniform !42 ComputeEnd: ; preds = %ComputeLoop %.lcssa4196 = phi i32 [ %2925, %ComputeLoop ] %.lcssa4195 = phi i32 [ %2926, %ComputeLoop ] %div8.i.i.i.i.i = lshr i32 %spec.store.select.i.i.i, 5 %idxprom.i.i.i.i.i = zext nneg i32 %div8.i.i.i.i.i to i64 %2931 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i %2932 = trunc i64 %25 to i32 %2933 = lshr i64 %25, 32 %2934 = trunc i64 %2933 to i32 %2935 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %2932, i32 0) %2936 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %2934, i32 %2935) %2937 = icmp eq i32 %2936, 0 %2938 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2937) %2939 = extractvalue { i1, i64 } %2938, 0 %2940 = extractvalue { i1, i64 } %2938, 1 br i1 %2939, label %26, label %28 Flow3883: ; preds = %46, %if.then.i.i.i.i2 %2941 = phi i1 [ false, %46 ], [ true, %if.then.i.i.i.i2 ] br i1 %2941, label %if.end14.i.i.i, label %Flow3884, !amdgpu.uniform !42 ComputeLoop2427: ; preds = %if.then12.i.i.i, %ComputeLoop2427 %Accumulator2429 = phi i32 [ %2945, %ComputeLoop2427 ], [ -1, %if.then12.i.i.i ] %ActiveBits2430 = phi i64 [ %2948, %ComputeLoop2427 ], [ %43, %if.then12.i.i.i ] %2942 = call i64 @llvm.cttz.i64(i64 %ActiveBits2430, i1 true) %2943 = trunc i64 %2942 to i32 %2944 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i, i32 %2943) %2945 = and i32 %Accumulator2429, %2944 %2946 = shl i64 1, %2942 %2947 = xor i64 %2946, -1 %2948 = and i64 %ActiveBits2430, %2947 %2949 = icmp eq i64 %2948, 0 br i1 %2949, label %ComputeEnd2428, label %ComputeLoop2427, !amdgpu.uniform !42 ComputeEnd2428: ; preds = %ComputeLoop2427 %.lcssa4197 = phi i32 [ %2945, %ComputeLoop2427 ] %2950 = trunc i64 %43 to i32 %2951 = lshr i64 %43, 32 %2952 = trunc i64 %2951 to i32 %2953 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %2950, i32 0) %2954 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %2952, i32 %2953) %2955 = icmp eq i32 %2954, 0 %2956 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2955) %2957 = extractvalue { i1, i64 } %2956, 0 %2958 = extractvalue { i1, i64 } %2956, 1 br i1 %2957, label %44, label %46 ComputeLoop2431: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit, %ComputeLoop2431 %Accumulator2433 = phi i32 [ %2962, %ComputeLoop2431 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit ] %ActiveBits2434 = phi i64 [ %2965, %ComputeLoop2431 ], [ %125, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit ] %2959 = call i64 @llvm.cttz.i64(i64 %ActiveBits2434, i1 true) %2960 = trunc i64 %2959 to i32 %2961 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i, i32 %2960) %2962 = and i32 %Accumulator2433, %2961 %2963 = shl i64 1, %2959 %2964 = xor i64 %2963, -1 %2965 = and i64 %ActiveBits2434, %2964 %2966 = icmp eq i64 %2965, 0 br i1 %2966, label %ComputeEnd2432, label %ComputeLoop2431, !amdgpu.uniform !42 ComputeEnd2432: ; preds = %ComputeLoop2431 %.lcssa4191 = phi i32 [ %2962, %ComputeLoop2431 ] %2967 = trunc i64 %125 to i32 %2968 = lshr i64 %125, 32 %2969 = trunc i64 %2968 to i32 %2970 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %2967, i32 0) %2971 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %2969, i32 %2970) %2972 = icmp eq i32 %2971, 0 %2973 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2972) %2974 = extractvalue { i1, i64 } %2973, 0 %2975 = extractvalue { i1, i64 } %2973, 1 br i1 %2974, label %126, label %129 ComputeLoop2435: ; preds = %for.cond.i.i1.i13, %ComputeLoop2435 %Accumulator2437 = phi i32 [ %2980, %ComputeLoop2435 ], [ 0, %for.cond.i.i1.i13 ] %OldValuePhi2438 = phi i32 [ %2979, %ComputeLoop2435 ], [ poison, %for.cond.i.i1.i13 ] %ActiveBits2439 = phi i64 [ %2983, %ComputeLoop2435 ], [ %138, %for.cond.i.i1.i13 ] %2976 = call i64 @llvm.cttz.i64(i64 %ActiveBits2439, i1 true) %2977 = trunc i64 %2976 to i32 %2978 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i25, i32 %2977) %2979 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2437, i32 %2977, i32 %OldValuePhi2438) %2980 = or i32 %Accumulator2437, %2978 %2981 = shl i64 1, %2976 %2982 = xor i64 %2981, -1 %2983 = and i64 %ActiveBits2439, %2982 %2984 = icmp eq i64 %2983, 0 br i1 %2984, label %ComputeEnd2436, label %ComputeLoop2435, !amdgpu.uniform !42 ComputeEnd2436: ; preds = %ComputeLoop2435 %.lcssa4186 = phi i32 [ %2979, %ComputeLoop2435 ] %.lcssa4185 = phi i32 [ %2980, %ComputeLoop2435 ] %div8.i.i.i.i.i21 = lshr i32 %spec.store.select.i.i.i20, 5 %idxprom.i.i.i.i.i22 = zext nneg i32 %div8.i.i.i.i.i21 to i64 %2985 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i22 %2986 = trunc i64 %138 to i32 %2987 = lshr i64 %138, 32 %2988 = trunc i64 %2987 to i32 %2989 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %2986, i32 0) %2990 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %2988, i32 %2989) %2991 = icmp eq i32 %2990, 0 %2992 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2991) %2993 = extractvalue { i1, i64 } %2992, 0 %2994 = extractvalue { i1, i64 } %2992, 1 br i1 %2993, label %139, label %141 Flow3864: ; preds = %159, %if.then.i.i.i.i31 %2995 = phi i1 [ false, %159 ], [ true, %if.then.i.i.i.i31 ] br i1 %2995, label %if.end14.i.i.i101, label %Flow3865, !amdgpu.uniform !42 ComputeLoop2440: ; preds = %if.then12.i.i.i36, %ComputeLoop2440 %Accumulator2442 = phi i32 [ %2999, %ComputeLoop2440 ], [ -1, %if.then12.i.i.i36 ] %ActiveBits2443 = phi i64 [ %3002, %ComputeLoop2440 ], [ %156, %if.then12.i.i.i36 ] %2996 = call i64 @llvm.cttz.i64(i64 %ActiveBits2443, i1 true) %2997 = trunc i64 %2996 to i32 %2998 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i42, i32 %2997) %2999 = and i32 %Accumulator2442, %2998 %3000 = shl i64 1, %2996 %3001 = xor i64 %3000, -1 %3002 = and i64 %ActiveBits2443, %3001 %3003 = icmp eq i64 %3002, 0 br i1 %3003, label %ComputeEnd2441, label %ComputeLoop2440, !amdgpu.uniform !42 ComputeEnd2441: ; preds = %ComputeLoop2440 %.lcssa4187 = phi i32 [ %2999, %ComputeLoop2440 ] %3004 = trunc i64 %156 to i32 %3005 = lshr i64 %156, 32 %3006 = trunc i64 %3005 to i32 %3007 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3004, i32 0) %3008 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3006, i32 %3007) %3009 = icmp eq i32 %3008, 0 %3010 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3009) %3011 = extractvalue { i1, i64 } %3010, 0 %3012 = extractvalue { i1, i64 } %3010, 1 br i1 %3011, label %157, label %159 ComputeLoop2444: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit109, %ComputeLoop2444 %Accumulator2446 = phi i32 [ %3016, %ComputeLoop2444 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit109 ] %ActiveBits2447 = phi i64 [ %3019, %ComputeLoop2444 ], [ %236, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit109 ] %3013 = call i64 @llvm.cttz.i64(i64 %ActiveBits2447, i1 true) %3014 = trunc i64 %3013 to i32 %3015 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i100, i32 %3014) %3016 = and i32 %Accumulator2446, %3015 %3017 = shl i64 1, %3013 %3018 = xor i64 %3017, -1 %3019 = and i64 %ActiveBits2447, %3018 %3020 = icmp eq i64 %3019, 0 br i1 %3020, label %ComputeEnd2445, label %ComputeLoop2444, !amdgpu.uniform !42 ComputeEnd2445: ; preds = %ComputeLoop2444 %.lcssa4181 = phi i32 [ %3016, %ComputeLoop2444 ] %3021 = trunc i64 %236 to i32 %3022 = lshr i64 %236, 32 %3023 = trunc i64 %3022 to i32 %3024 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3021, i32 0) %3025 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3023, i32 %3024) %3026 = icmp eq i32 %3025, 0 %3027 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3026) %3028 = extractvalue { i1, i64 } %3027, 0 %3029 = extractvalue { i1, i64 } %3027, 1 br i1 %3028, label %237, label %240 ComputeLoop2448: ; preds = %for.cond.i.i.i118, %ComputeLoop2448 %Accumulator2450 = phi i32 [ %3034, %ComputeLoop2448 ], [ 0, %for.cond.i.i.i118 ] %OldValuePhi2451 = phi i32 [ %3033, %ComputeLoop2448 ], [ poison, %for.cond.i.i.i118 ] %ActiveBits2452 = phi i64 [ %3037, %ComputeLoop2448 ], [ %362, %for.cond.i.i.i118 ] %3030 = call i64 @llvm.cttz.i64(i64 %ActiveBits2452, i1 true) %3031 = trunc i64 %3030 to i32 %3032 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i130, i32 %3031) %3033 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2450, i32 %3031, i32 %OldValuePhi2451) %3034 = or i32 %Accumulator2450, %3032 %3035 = shl i64 1, %3030 %3036 = xor i64 %3035, -1 %3037 = and i64 %ActiveBits2452, %3036 %3038 = icmp eq i64 %3037, 0 br i1 %3038, label %ComputeEnd2449, label %ComputeLoop2448, !amdgpu.uniform !42 ComputeEnd2449: ; preds = %ComputeLoop2448 %.lcssa4172 = phi i32 [ %3033, %ComputeLoop2448 ] %.lcssa4171 = phi i32 [ %3034, %ComputeLoop2448 ] %div8.i.i.i.i.i126 = lshr i32 %spec.store.select.i.i.i125, 5 %idxprom.i.i.i.i.i127 = zext nneg i32 %div8.i.i.i.i.i126 to i64 %3039 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i127 %3040 = trunc i64 %362 to i32 %3041 = lshr i64 %362, 32 %3042 = trunc i64 %3041 to i32 %3043 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3040, i32 0) %3044 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3042, i32 %3043) %3045 = icmp eq i32 %3044, 0 %3046 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3045) %3047 = extractvalue { i1, i64 } %3046, 0 %3048 = extractvalue { i1, i64 } %3046, 1 br i1 %3047, label %363, label %365 Flow3822: ; preds = %383, %if.then.i.i.i.i136 %3049 = phi i1 [ false, %383 ], [ true, %if.then.i.i.i.i136 ] br i1 %3049, label %if.end14.i.i.i206, label %Flow3823, !amdgpu.uniform !42 ComputeLoop2453: ; preds = %if.then12.i.i.i141, %ComputeLoop2453 %Accumulator2455 = phi i32 [ %3053, %ComputeLoop2453 ], [ -1, %if.then12.i.i.i141 ] %ActiveBits2456 = phi i64 [ %3056, %ComputeLoop2453 ], [ %380, %if.then12.i.i.i141 ] %3050 = call i64 @llvm.cttz.i64(i64 %ActiveBits2456, i1 true) %3051 = trunc i64 %3050 to i32 %3052 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i146, i32 %3051) %3053 = and i32 %Accumulator2455, %3052 %3054 = shl i64 1, %3050 %3055 = xor i64 %3054, -1 %3056 = and i64 %ActiveBits2456, %3055 %3057 = icmp eq i64 %3056, 0 br i1 %3057, label %ComputeEnd2454, label %ComputeLoop2453, !amdgpu.uniform !42 ComputeEnd2454: ; preds = %ComputeLoop2453 %.lcssa4173 = phi i32 [ %3053, %ComputeLoop2453 ] %3058 = trunc i64 %380 to i32 %3059 = lshr i64 %380, 32 %3060 = trunc i64 %3059 to i32 %3061 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3058, i32 0) %3062 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3060, i32 %3061) %3063 = icmp eq i32 %3062, 0 %3064 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3063) %3065 = extractvalue { i1, i64 } %3064, 0 %3066 = extractvalue { i1, i64 } %3064, 1 br i1 %3065, label %381, label %383 ComputeLoop2457: ; preds = %_ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i, %ComputeLoop2457 %Accumulator2459 = phi i32 [ %3070, %ComputeLoop2457 ], [ -1, %_ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i ] %ActiveBits2460 = phi i64 [ %3073, %ComputeLoop2457 ], [ %478, %_ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i ] %3067 = call i64 @llvm.cttz.i64(i64 %ActiveBits2460, i1 true) %3068 = trunc i64 %3067 to i32 %3069 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i203, i32 %3068) %3070 = and i32 %Accumulator2459, %3069 %3071 = shl i64 1, %3067 %3072 = xor i64 %3071, -1 %3073 = and i64 %ActiveBits2460, %3072 %3074 = icmp eq i64 %3073, 0 br i1 %3074, label %ComputeEnd2458, label %ComputeLoop2457, !amdgpu.uniform !42 ComputeEnd2458: ; preds = %ComputeLoop2457 %.lcssa4163 = phi i32 [ %3070, %ComputeLoop2457 ] %3075 = trunc i64 %478 to i32 %3076 = lshr i64 %478, 32 %3077 = trunc i64 %3076 to i32 %3078 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3075, i32 0) %3079 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3077, i32 %3078) %3080 = icmp eq i32 %3079, 0 %3081 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3080) %3082 = extractvalue { i1, i64 } %3081, 0 %3083 = extractvalue { i1, i64 } %3081, 1 br i1 %3082, label %479, label %482 ComputeLoop2461: ; preds = %for.cond.i.i1.i222, %ComputeLoop2461 %Accumulator2463 = phi i32 [ %3088, %ComputeLoop2461 ], [ 0, %for.cond.i.i1.i222 ] %OldValuePhi2464 = phi i32 [ %3087, %ComputeLoop2461 ], [ poison, %for.cond.i.i1.i222 ] %ActiveBits2465 = phi i64 [ %3091, %ComputeLoop2461 ], [ %491, %for.cond.i.i1.i222 ] %3084 = call i64 @llvm.cttz.i64(i64 %ActiveBits2465, i1 true) %3085 = trunc i64 %3084 to i32 %3086 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i234, i32 %3085) %3087 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2463, i32 %3085, i32 %OldValuePhi2464) %3088 = or i32 %Accumulator2463, %3086 %3089 = shl i64 1, %3084 %3090 = xor i64 %3089, -1 %3091 = and i64 %ActiveBits2465, %3090 %3092 = icmp eq i64 %3091, 0 br i1 %3092, label %ComputeEnd2462, label %ComputeLoop2461, !amdgpu.uniform !42 ComputeEnd2462: ; preds = %ComputeLoop2461 %.lcssa4158 = phi i32 [ %3087, %ComputeLoop2461 ] %.lcssa4157 = phi i32 [ %3088, %ComputeLoop2461 ] %div8.i.i.i.i.i230 = lshr i32 %spec.store.select.i.i.i229, 5 %idxprom.i.i.i.i.i231 = zext nneg i32 %div8.i.i.i.i.i230 to i64 %3093 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i231 %3094 = trunc i64 %491 to i32 %3095 = lshr i64 %491, 32 %3096 = trunc i64 %3095 to i32 %3097 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3094, i32 0) %3098 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3096, i32 %3097) %3099 = icmp eq i32 %3098, 0 %3100 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3099) %3101 = extractvalue { i1, i64 } %3100, 0 %3102 = extractvalue { i1, i64 } %3100, 1 br i1 %3101, label %492, label %494 Flow3803: ; preds = %512, %if.then.i.i.i.i240 %3103 = phi i1 [ false, %512 ], [ true, %if.then.i.i.i.i240 ] br i1 %3103, label %if.end14.i.i.i311, label %Flow3804, !amdgpu.uniform !42 ComputeLoop2466: ; preds = %if.then12.i.i.i245, %ComputeLoop2466 %Accumulator2468 = phi i32 [ %3107, %ComputeLoop2466 ], [ -1, %if.then12.i.i.i245 ] %ActiveBits2469 = phi i64 [ %3110, %ComputeLoop2466 ], [ %509, %if.then12.i.i.i245 ] %3104 = call i64 @llvm.cttz.i64(i64 %ActiveBits2469, i1 true) %3105 = trunc i64 %3104 to i32 %3106 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i251, i32 %3105) %3107 = and i32 %Accumulator2468, %3106 %3108 = shl i64 1, %3104 %3109 = xor i64 %3108, -1 %3110 = and i64 %ActiveBits2469, %3109 %3111 = icmp eq i64 %3110, 0 br i1 %3111, label %ComputeEnd2467, label %ComputeLoop2466, !amdgpu.uniform !42 ComputeEnd2467: ; preds = %ComputeLoop2466 %.lcssa4159 = phi i32 [ %3107, %ComputeLoop2466 ] %3112 = trunc i64 %509 to i32 %3113 = lshr i64 %509, 32 %3114 = trunc i64 %3113 to i32 %3115 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3112, i32 0) %3116 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3114, i32 %3115) %3117 = icmp eq i32 %3116, 0 %3118 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3117) %3119 = extractvalue { i1, i64 } %3118, 0 %3120 = extractvalue { i1, i64 } %3118, 1 br i1 %3119, label %510, label %512 ComputeLoop2470: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit319, %ComputeLoop2470 %Accumulator2472 = phi i32 [ %3124, %ComputeLoop2470 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit319 ] %ActiveBits2473 = phi i64 [ %3127, %ComputeLoop2470 ], [ %589, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit319 ] %3121 = call i64 @llvm.cttz.i64(i64 %ActiveBits2473, i1 true) %3122 = trunc i64 %3121 to i32 %3123 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i310, i32 %3122) %3124 = and i32 %Accumulator2472, %3123 %3125 = shl i64 1, %3121 %3126 = xor i64 %3125, -1 %3127 = and i64 %ActiveBits2473, %3126 %3128 = icmp eq i64 %3127, 0 br i1 %3128, label %ComputeEnd2471, label %ComputeLoop2470, !amdgpu.uniform !42 ComputeEnd2471: ; preds = %ComputeLoop2470 %.lcssa4153 = phi i32 [ %3124, %ComputeLoop2470 ] %3129 = trunc i64 %589 to i32 %3130 = lshr i64 %589, 32 %3131 = trunc i64 %3130 to i32 %3132 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3129, i32 0) %3133 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3131, i32 %3132) %3134 = icmp eq i32 %3133, 0 %3135 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3134) %3136 = extractvalue { i1, i64 } %3135, 0 %3137 = extractvalue { i1, i64 } %3135, 1 br i1 %3136, label %590, label %593 ComputeLoop2474: ; preds = %for.cond.i.i.i328, %ComputeLoop2474 %Accumulator2476 = phi i32 [ %3142, %ComputeLoop2474 ], [ 0, %for.cond.i.i.i328 ] %OldValuePhi2477 = phi i32 [ %3141, %ComputeLoop2474 ], [ poison, %for.cond.i.i.i328 ] %ActiveBits2478 = phi i64 [ %3145, %ComputeLoop2474 ], [ %614, %for.cond.i.i.i328 ] %3138 = call i64 @llvm.cttz.i64(i64 %ActiveBits2478, i1 true) %3139 = trunc i64 %3138 to i32 %3140 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i340, i32 %3139) %3141 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2476, i32 %3139, i32 %OldValuePhi2477) %3142 = or i32 %Accumulator2476, %3140 %3143 = shl i64 1, %3138 %3144 = xor i64 %3143, -1 %3145 = and i64 %ActiveBits2478, %3144 %3146 = icmp eq i64 %3145, 0 br i1 %3146, label %ComputeEnd2475, label %ComputeLoop2474, !amdgpu.uniform !42 ComputeEnd2475: ; preds = %ComputeLoop2474 %.lcssa4148 = phi i32 [ %3141, %ComputeLoop2474 ] %.lcssa4147 = phi i32 [ %3142, %ComputeLoop2474 ] %div8.i.i.i.i.i336 = lshr i32 %spec.store.select.i.i.i335, 5 %idxprom.i.i.i.i.i337 = zext nneg i32 %div8.i.i.i.i.i336 to i64 %3147 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i337 %3148 = trunc i64 %614 to i32 %3149 = lshr i64 %614, 32 %3150 = trunc i64 %3149 to i32 %3151 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3148, i32 0) %3152 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3150, i32 %3151) %3153 = icmp eq i32 %3152, 0 %3154 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3153) %3155 = extractvalue { i1, i64 } %3154, 0 %3156 = extractvalue { i1, i64 } %3154, 1 br i1 %3155, label %615, label %617 Flow3780: ; preds = %635, %if.then.i.i.i.i346 %3157 = phi i1 [ false, %635 ], [ true, %if.then.i.i.i.i346 ] br i1 %3157, label %if.end14.i.i.i417, label %Flow3781, !amdgpu.uniform !42 ComputeLoop2479: ; preds = %if.then12.i.i.i351, %ComputeLoop2479 %Accumulator2481 = phi i32 [ %3161, %ComputeLoop2479 ], [ -1, %if.then12.i.i.i351 ] %ActiveBits2482 = phi i64 [ %3164, %ComputeLoop2479 ], [ %632, %if.then12.i.i.i351 ] %3158 = call i64 @llvm.cttz.i64(i64 %ActiveBits2482, i1 true) %3159 = trunc i64 %3158 to i32 %3160 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i357, i32 %3159) %3161 = and i32 %Accumulator2481, %3160 %3162 = shl i64 1, %3158 %3163 = xor i64 %3162, -1 %3164 = and i64 %ActiveBits2482, %3163 %3165 = icmp eq i64 %3164, 0 br i1 %3165, label %ComputeEnd2480, label %ComputeLoop2479, !amdgpu.uniform !42 ComputeEnd2480: ; preds = %ComputeLoop2479 %.lcssa4149 = phi i32 [ %3161, %ComputeLoop2479 ] %3166 = trunc i64 %632 to i32 %3167 = lshr i64 %632, 32 %3168 = trunc i64 %3167 to i32 %3169 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3166, i32 0) %3170 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3168, i32 %3169) %3171 = icmp eq i32 %3170, 0 %3172 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3171) %3173 = extractvalue { i1, i64 } %3172, 0 %3174 = extractvalue { i1, i64 } %3172, 1 br i1 %3173, label %633, label %635 ComputeLoop2483: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit, %ComputeLoop2483 %Accumulator2485 = phi i32 [ %3178, %ComputeLoop2483 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit ] %ActiveBits2486 = phi i64 [ %3181, %ComputeLoop2483 ], [ %713, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit ] %3175 = call i64 @llvm.cttz.i64(i64 %ActiveBits2486, i1 true) %3176 = trunc i64 %3175 to i32 %3177 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i416, i32 %3176) %3178 = and i32 %Accumulator2485, %3177 %3179 = shl i64 1, %3175 %3180 = xor i64 %3179, -1 %3181 = and i64 %ActiveBits2486, %3180 %3182 = icmp eq i64 %3181, 0 br i1 %3182, label %ComputeEnd2484, label %ComputeLoop2483, !amdgpu.uniform !42 ComputeEnd2484: ; preds = %ComputeLoop2483 %.lcssa4143 = phi i32 [ %3178, %ComputeLoop2483 ] %3183 = trunc i64 %713 to i32 %3184 = lshr i64 %713, 32 %3185 = trunc i64 %3184 to i32 %3186 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3183, i32 0) %3187 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3185, i32 %3186) %3188 = icmp eq i32 %3187, 0 %3189 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3188) %3190 = extractvalue { i1, i64 } %3189, 0 %3191 = extractvalue { i1, i64 } %3189, 1 br i1 %3190, label %714, label %717 ComputeLoop2487: ; preds = %for.cond.i.i1.i433, %ComputeLoop2487 %Accumulator2489 = phi i32 [ %3196, %ComputeLoop2487 ], [ 0, %for.cond.i.i1.i433 ] %OldValuePhi2490 = phi i32 [ %3195, %ComputeLoop2487 ], [ poison, %for.cond.i.i1.i433 ] %ActiveBits2491 = phi i64 [ %3199, %ComputeLoop2487 ], [ %726, %for.cond.i.i1.i433 ] %3192 = call i64 @llvm.cttz.i64(i64 %ActiveBits2491, i1 true) %3193 = trunc i64 %3192 to i32 %3194 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i445, i32 %3193) %3195 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2489, i32 %3193, i32 %OldValuePhi2490) %3196 = or i32 %Accumulator2489, %3194 %3197 = shl i64 1, %3192 %3198 = xor i64 %3197, -1 %3199 = and i64 %ActiveBits2491, %3198 %3200 = icmp eq i64 %3199, 0 br i1 %3200, label %ComputeEnd2488, label %ComputeLoop2487, !amdgpu.uniform !42 ComputeEnd2488: ; preds = %ComputeLoop2487 %.lcssa4138 = phi i32 [ %3195, %ComputeLoop2487 ] %.lcssa4137 = phi i32 [ %3196, %ComputeLoop2487 ] %div8.i.i.i.i.i441 = lshr i32 %spec.store.select.i.i.i440, 5 %idxprom.i.i.i.i.i442 = zext nneg i32 %div8.i.i.i.i.i441 to i64 %3201 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i442 %3202 = trunc i64 %726 to i32 %3203 = lshr i64 %726, 32 %3204 = trunc i64 %3203 to i32 %3205 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3202, i32 0) %3206 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3204, i32 %3205) %3207 = icmp eq i32 %3206, 0 %3208 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3207) %3209 = extractvalue { i1, i64 } %3208, 0 %3210 = extractvalue { i1, i64 } %3208, 1 br i1 %3209, label %727, label %729 Flow3761: ; preds = %747, %if.then.i.i.i.i451 %3211 = phi i1 [ false, %747 ], [ true, %if.then.i.i.i.i451 ] br i1 %3211, label %if.end14.i.i.i522, label %Flow3762, !amdgpu.uniform !42 ComputeLoop2492: ; preds = %if.then12.i.i.i456, %ComputeLoop2492 %Accumulator2494 = phi i32 [ %3215, %ComputeLoop2492 ], [ -1, %if.then12.i.i.i456 ] %ActiveBits2495 = phi i64 [ %3218, %ComputeLoop2492 ], [ %744, %if.then12.i.i.i456 ] %3212 = call i64 @llvm.cttz.i64(i64 %ActiveBits2495, i1 true) %3213 = trunc i64 %3212 to i32 %3214 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i462, i32 %3213) %3215 = and i32 %Accumulator2494, %3214 %3216 = shl i64 1, %3212 %3217 = xor i64 %3216, -1 %3218 = and i64 %ActiveBits2495, %3217 %3219 = icmp eq i64 %3218, 0 br i1 %3219, label %ComputeEnd2493, label %ComputeLoop2492, !amdgpu.uniform !42 ComputeEnd2493: ; preds = %ComputeLoop2492 %.lcssa4139 = phi i32 [ %3215, %ComputeLoop2492 ] %3220 = trunc i64 %744 to i32 %3221 = lshr i64 %744, 32 %3222 = trunc i64 %3221 to i32 %3223 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3220, i32 0) %3224 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3222, i32 %3223) %3225 = icmp eq i32 %3224, 0 %3226 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3225) %3227 = extractvalue { i1, i64 } %3226, 0 %3228 = extractvalue { i1, i64 } %3226, 1 br i1 %3227, label %745, label %747 ComputeLoop2496: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit530, %ComputeLoop2496 %Accumulator2498 = phi i32 [ %3232, %ComputeLoop2496 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit530 ] %ActiveBits2499 = phi i64 [ %3235, %ComputeLoop2496 ], [ %824, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit530 ] %3229 = call i64 @llvm.cttz.i64(i64 %ActiveBits2499, i1 true) %3230 = trunc i64 %3229 to i32 %3231 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i521, i32 %3230) %3232 = and i32 %Accumulator2498, %3231 %3233 = shl i64 1, %3229 %3234 = xor i64 %3233, -1 %3235 = and i64 %ActiveBits2499, %3234 %3236 = icmp eq i64 %3235, 0 br i1 %3236, label %ComputeEnd2497, label %ComputeLoop2496, !amdgpu.uniform !42 ComputeEnd2497: ; preds = %ComputeLoop2496 %.lcssa4133 = phi i32 [ %3232, %ComputeLoop2496 ] %3237 = trunc i64 %824 to i32 %3238 = lshr i64 %824, 32 %3239 = trunc i64 %3238 to i32 %3240 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3237, i32 0) %3241 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3239, i32 %3240) %3242 = icmp eq i32 %3241, 0 %3243 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3242) %3244 = extractvalue { i1, i64 } %3243, 0 %3245 = extractvalue { i1, i64 } %3243, 1 br i1 %3244, label %825, label %828 ComputeLoop2500: ; preds = %for.cond.i.i1.i539, %ComputeLoop2500 %Accumulator2502 = phi i32 [ %3250, %ComputeLoop2500 ], [ 0, %for.cond.i.i1.i539 ] %OldValuePhi2503 = phi i32 [ %3249, %ComputeLoop2500 ], [ poison, %for.cond.i.i1.i539 ] %ActiveBits2504 = phi i64 [ %3253, %ComputeLoop2500 ], [ %837, %for.cond.i.i1.i539 ] %3246 = call i64 @llvm.cttz.i64(i64 %ActiveBits2504, i1 true) %3247 = trunc i64 %3246 to i32 %3248 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i551, i32 %3247) %3249 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2502, i32 %3247, i32 %OldValuePhi2503) %3250 = or i32 %Accumulator2502, %3248 %3251 = shl i64 1, %3246 %3252 = xor i64 %3251, -1 %3253 = and i64 %ActiveBits2504, %3252 %3254 = icmp eq i64 %3253, 0 br i1 %3254, label %ComputeEnd2501, label %ComputeLoop2500, !amdgpu.uniform !42 ComputeEnd2501: ; preds = %ComputeLoop2500 %.lcssa4128 = phi i32 [ %3249, %ComputeLoop2500 ] %.lcssa4127 = phi i32 [ %3250, %ComputeLoop2500 ] %div8.i.i.i.i.i547 = lshr i32 %spec.store.select.i.i.i546, 5 %idxprom.i.i.i.i.i548 = zext nneg i32 %div8.i.i.i.i.i547 to i64 %3255 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i548 %3256 = trunc i64 %837 to i32 %3257 = lshr i64 %837, 32 %3258 = trunc i64 %3257 to i32 %3259 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3256, i32 0) %3260 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3258, i32 %3259) %3261 = icmp eq i32 %3260, 0 %3262 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3261) %3263 = extractvalue { i1, i64 } %3262, 0 %3264 = extractvalue { i1, i64 } %3262, 1 br i1 %3263, label %838, label %840 Flow3742: ; preds = %858, %if.then.i.i.i.i557 %3265 = phi i1 [ false, %858 ], [ true, %if.then.i.i.i.i557 ] br i1 %3265, label %if.end14.i.i.i628, label %Flow3743, !amdgpu.uniform !42 ComputeLoop2505: ; preds = %if.then12.i.i.i562, %ComputeLoop2505 %Accumulator2507 = phi i32 [ %3269, %ComputeLoop2505 ], [ -1, %if.then12.i.i.i562 ] %ActiveBits2508 = phi i64 [ %3272, %ComputeLoop2505 ], [ %855, %if.then12.i.i.i562 ] %3266 = call i64 @llvm.cttz.i64(i64 %ActiveBits2508, i1 true) %3267 = trunc i64 %3266 to i32 %3268 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i568, i32 %3267) %3269 = and i32 %Accumulator2507, %3268 %3270 = shl i64 1, %3266 %3271 = xor i64 %3270, -1 %3272 = and i64 %ActiveBits2508, %3271 %3273 = icmp eq i64 %3272, 0 br i1 %3273, label %ComputeEnd2506, label %ComputeLoop2505, !amdgpu.uniform !42 ComputeEnd2506: ; preds = %ComputeLoop2505 %.lcssa4129 = phi i32 [ %3269, %ComputeLoop2505 ] %3274 = trunc i64 %855 to i32 %3275 = lshr i64 %855, 32 %3276 = trunc i64 %3275 to i32 %3277 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3274, i32 0) %3278 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3276, i32 %3277) %3279 = icmp eq i32 %3278, 0 %3280 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3279) %3281 = extractvalue { i1, i64 } %3280, 0 %3282 = extractvalue { i1, i64 } %3280, 1 br i1 %3281, label %856, label %858 ComputeLoop2509: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit636, %ComputeLoop2509 %Accumulator2511 = phi i32 [ %3286, %ComputeLoop2509 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit636 ] %ActiveBits2512 = phi i64 [ %3289, %ComputeLoop2509 ], [ %935, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit636 ] %3283 = call i64 @llvm.cttz.i64(i64 %ActiveBits2512, i1 true) %3284 = trunc i64 %3283 to i32 %3285 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i627, i32 %3284) %3286 = and i32 %Accumulator2511, %3285 %3287 = shl i64 1, %3283 %3288 = xor i64 %3287, -1 %3289 = and i64 %ActiveBits2512, %3288 %3290 = icmp eq i64 %3289, 0 br i1 %3290, label %ComputeEnd2510, label %ComputeLoop2509, !amdgpu.uniform !42 ComputeEnd2510: ; preds = %ComputeLoop2509 %.lcssa4123 = phi i32 [ %3286, %ComputeLoop2509 ] %3291 = trunc i64 %935 to i32 %3292 = lshr i64 %935, 32 %3293 = trunc i64 %3292 to i32 %3294 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3291, i32 0) %3295 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3293, i32 %3294) %3296 = icmp eq i32 %3295, 0 %3297 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3296) %3298 = extractvalue { i1, i64 } %3297, 0 %3299 = extractvalue { i1, i64 } %3297, 1 br i1 %3298, label %936, label %939 ComputeLoop2513: ; preds = %for.cond.i.i.i638, %ComputeLoop2513 %Accumulator2515 = phi i32 [ %3304, %ComputeLoop2513 ], [ 0, %for.cond.i.i.i638 ] %OldValuePhi2516 = phi i32 [ %3303, %ComputeLoop2513 ], [ poison, %for.cond.i.i.i638 ] %ActiveBits2517 = phi i64 [ %3307, %ComputeLoop2513 ], [ %948, %for.cond.i.i.i638 ] %3300 = call i64 @llvm.cttz.i64(i64 %ActiveBits2517, i1 true) %3301 = trunc i64 %3300 to i32 %3302 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i650, i32 %3301) %3303 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2515, i32 %3301, i32 %OldValuePhi2516) %3304 = or i32 %Accumulator2515, %3302 %3305 = shl i64 1, %3300 %3306 = xor i64 %3305, -1 %3307 = and i64 %ActiveBits2517, %3306 %3308 = icmp eq i64 %3307, 0 br i1 %3308, label %ComputeEnd2514, label %ComputeLoop2513, !amdgpu.uniform !42 ComputeEnd2514: ; preds = %ComputeLoop2513 %.lcssa4118 = phi i32 [ %3303, %ComputeLoop2513 ] %.lcssa4117 = phi i32 [ %3304, %ComputeLoop2513 ] %div8.i.i.i.i.i646 = lshr i32 %spec.store.select.i.i.i645, 5 %idxprom.i.i.i.i.i647 = zext nneg i32 %div8.i.i.i.i.i646 to i64 %3309 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i647 %3310 = trunc i64 %948 to i32 %3311 = lshr i64 %948, 32 %3312 = trunc i64 %3311 to i32 %3313 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3310, i32 0) %3314 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3312, i32 %3313) %3315 = icmp eq i32 %3314, 0 %3316 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3315) %3317 = extractvalue { i1, i64 } %3316, 0 %3318 = extractvalue { i1, i64 } %3316, 1 br i1 %3317, label %949, label %951 Flow3723: ; preds = %969, %if.then.i.i.i.i656 %3319 = phi i1 [ false, %969 ], [ true, %if.then.i.i.i.i656 ] br i1 %3319, label %if.end14.i.i.i725, label %Flow3724, !amdgpu.uniform !42 ComputeLoop2518: ; preds = %if.then12.i.i.i661, %ComputeLoop2518 %Accumulator2520 = phi i32 [ %3323, %ComputeLoop2518 ], [ -1, %if.then12.i.i.i661 ] %ActiveBits2521 = phi i64 [ %3326, %ComputeLoop2518 ], [ %966, %if.then12.i.i.i661 ] %3320 = call i64 @llvm.cttz.i64(i64 %ActiveBits2521, i1 true) %3321 = trunc i64 %3320 to i32 %3322 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i667, i32 %3321) %3323 = and i32 %Accumulator2520, %3322 %3324 = shl i64 1, %3320 %3325 = xor i64 %3324, -1 %3326 = and i64 %ActiveBits2521, %3325 %3327 = icmp eq i64 %3326, 0 br i1 %3327, label %ComputeEnd2519, label %ComputeLoop2518, !amdgpu.uniform !42 ComputeEnd2519: ; preds = %ComputeLoop2518 %.lcssa4119 = phi i32 [ %3323, %ComputeLoop2518 ] %3328 = trunc i64 %966 to i32 %3329 = lshr i64 %966, 32 %3330 = trunc i64 %3329 to i32 %3331 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3328, i32 0) %3332 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3330, i32 %3331) %3333 = icmp eq i32 %3332, 0 %3334 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3333) %3335 = extractvalue { i1, i64 } %3334, 0 %3336 = extractvalue { i1, i64 } %3334, 1 br i1 %3335, label %967, label %969 ComputeLoop2522: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit, %ComputeLoop2522 %Accumulator2524 = phi i32 [ %3340, %ComputeLoop2522 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit ] %ActiveBits2525 = phi i64 [ %3343, %ComputeLoop2522 ], [ %1021, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit ] %3337 = call i64 @llvm.cttz.i64(i64 %ActiveBits2525, i1 true) %3338 = trunc i64 %3337 to i32 %3339 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i724, i32 %3338) %3340 = and i32 %Accumulator2524, %3339 %3341 = shl i64 1, %3337 %3342 = xor i64 %3341, -1 %3343 = and i64 %ActiveBits2525, %3342 %3344 = icmp eq i64 %3343, 0 br i1 %3344, label %ComputeEnd2523, label %ComputeLoop2522, !amdgpu.uniform !42 ComputeEnd2523: ; preds = %ComputeLoop2522 %.lcssa4113 = phi i32 [ %3340, %ComputeLoop2522 ] %3345 = trunc i64 %1021 to i32 %3346 = lshr i64 %1021, 32 %3347 = trunc i64 %3346 to i32 %3348 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3345, i32 0) %3349 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3347, i32 %3348) %3350 = icmp eq i32 %3349, 0 %3351 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3350) %3352 = extractvalue { i1, i64 } %3351, 0 %3353 = extractvalue { i1, i64 } %3351, 1 br i1 %3352, label %1022, label %1025 ComputeLoop2526: ; preds = %for.cond.i.i.i741, %ComputeLoop2526 %Accumulator2528 = phi i32 [ %3358, %ComputeLoop2526 ], [ 0, %for.cond.i.i.i741 ] %OldValuePhi2529 = phi i32 [ %3357, %ComputeLoop2526 ], [ poison, %for.cond.i.i.i741 ] %ActiveBits2530 = phi i64 [ %3361, %ComputeLoop2526 ], [ %1043, %for.cond.i.i.i741 ] %3354 = call i64 @llvm.cttz.i64(i64 %ActiveBits2530, i1 true) %3355 = trunc i64 %3354 to i32 %3356 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i753, i32 %3355) %3357 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2528, i32 %3355, i32 %OldValuePhi2529) %3358 = or i32 %Accumulator2528, %3356 %3359 = shl i64 1, %3354 %3360 = xor i64 %3359, -1 %3361 = and i64 %ActiveBits2530, %3360 %3362 = icmp eq i64 %3361, 0 br i1 %3362, label %ComputeEnd2527, label %ComputeLoop2526, !amdgpu.uniform !42 ComputeEnd2527: ; preds = %ComputeLoop2526 %.lcssa4108 = phi i32 [ %3357, %ComputeLoop2526 ] %.lcssa4107 = phi i32 [ %3358, %ComputeLoop2526 ] %div8.i.i.i.i.i749 = lshr i32 %spec.store.select.i.i.i748, 5 %idxprom.i.i.i.i.i750 = zext nneg i32 %div8.i.i.i.i.i749 to i64 %3363 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i750 %3364 = trunc i64 %1043 to i32 %3365 = lshr i64 %1043, 32 %3366 = trunc i64 %3365 to i32 %3367 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3364, i32 0) %3368 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3366, i32 %3367) %3369 = icmp eq i32 %3368, 0 %3370 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3369) %3371 = extractvalue { i1, i64 } %3370, 0 %3372 = extractvalue { i1, i64 } %3370, 1 br i1 %3371, label %1044, label %1046 Flow3710: ; preds = %1064, %if.then.i.i.i.i759 %3373 = phi i1 [ false, %1064 ], [ true, %if.then.i.i.i.i759 ] br i1 %3373, label %if.end14.i.i.i830, label %Flow3711, !amdgpu.uniform !42 ComputeLoop2531: ; preds = %if.then12.i.i.i764, %ComputeLoop2531 %Accumulator2533 = phi i32 [ %3377, %ComputeLoop2531 ], [ -1, %if.then12.i.i.i764 ] %ActiveBits2534 = phi i64 [ %3380, %ComputeLoop2531 ], [ %1061, %if.then12.i.i.i764 ] %3374 = call i64 @llvm.cttz.i64(i64 %ActiveBits2534, i1 true) %3375 = trunc i64 %3374 to i32 %3376 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i770, i32 %3375) %3377 = and i32 %Accumulator2533, %3376 %3378 = shl i64 1, %3374 %3379 = xor i64 %3378, -1 %3380 = and i64 %ActiveBits2534, %3379 %3381 = icmp eq i64 %3380, 0 br i1 %3381, label %ComputeEnd2532, label %ComputeLoop2531, !amdgpu.uniform !42 ComputeEnd2532: ; preds = %ComputeLoop2531 %.lcssa4109 = phi i32 [ %3377, %ComputeLoop2531 ] %3382 = trunc i64 %1061 to i32 %3383 = lshr i64 %1061, 32 %3384 = trunc i64 %3383 to i32 %3385 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3382, i32 0) %3386 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3384, i32 %3385) %3387 = icmp eq i32 %3386, 0 %3388 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3387) %3389 = extractvalue { i1, i64 } %3388, 0 %3390 = extractvalue { i1, i64 } %3388, 1 br i1 %3389, label %1062, label %1064 ComputeLoop2535: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit838, %ComputeLoop2535 %Accumulator2537 = phi i32 [ %3394, %ComputeLoop2535 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit838 ] %ActiveBits2538 = phi i64 [ %3397, %ComputeLoop2535 ], [ %1138, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit838 ] %3391 = call i64 @llvm.cttz.i64(i64 %ActiveBits2538, i1 true) %3392 = trunc i64 %3391 to i32 %3393 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i829, i32 %3392) %3394 = and i32 %Accumulator2537, %3393 %3395 = shl i64 1, %3391 %3396 = xor i64 %3395, -1 %3397 = and i64 %ActiveBits2538, %3396 %3398 = icmp eq i64 %3397, 0 br i1 %3398, label %ComputeEnd2536, label %ComputeLoop2535, !amdgpu.uniform !42 ComputeEnd2536: ; preds = %ComputeLoop2535 %.lcssa4103 = phi i32 [ %3394, %ComputeLoop2535 ] %3399 = trunc i64 %1138 to i32 %3400 = lshr i64 %1138, 32 %3401 = trunc i64 %3400 to i32 %3402 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3399, i32 0) %3403 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3401, i32 %3402) %3404 = icmp eq i32 %3403, 0 %3405 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3404) %3406 = extractvalue { i1, i64 } %3405, 0 %3407 = extractvalue { i1, i64 } %3405, 1 br i1 %3406, label %1139, label %1142 ComputeLoop2539: ; preds = %for.cond.i.i1.i847, %ComputeLoop2539 %Accumulator2541 = phi i32 [ %3412, %ComputeLoop2539 ], [ 0, %for.cond.i.i1.i847 ] %OldValuePhi2542 = phi i32 [ %3411, %ComputeLoop2539 ], [ poison, %for.cond.i.i1.i847 ] %ActiveBits2543 = phi i64 [ %3415, %ComputeLoop2539 ], [ %1151, %for.cond.i.i1.i847 ] %3408 = call i64 @llvm.cttz.i64(i64 %ActiveBits2543, i1 true) %3409 = trunc i64 %3408 to i32 %3410 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i859, i32 %3409) %3411 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2541, i32 %3409, i32 %OldValuePhi2542) %3412 = or i32 %Accumulator2541, %3410 %3413 = shl i64 1, %3408 %3414 = xor i64 %3413, -1 %3415 = and i64 %ActiveBits2543, %3414 %3416 = icmp eq i64 %3415, 0 br i1 %3416, label %ComputeEnd2540, label %ComputeLoop2539, !amdgpu.uniform !42 ComputeEnd2540: ; preds = %ComputeLoop2539 %.lcssa4098 = phi i32 [ %3411, %ComputeLoop2539 ] %.lcssa4097 = phi i32 [ %3412, %ComputeLoop2539 ] %div8.i.i.i.i.i855 = lshr i32 %spec.store.select.i.i.i854, 5 %idxprom.i.i.i.i.i856 = zext nneg i32 %div8.i.i.i.i.i855 to i64 %3417 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i856 %3418 = trunc i64 %1151 to i32 %3419 = lshr i64 %1151, 32 %3420 = trunc i64 %3419 to i32 %3421 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3418, i32 0) %3422 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3420, i32 %3421) %3423 = icmp eq i32 %3422, 0 %3424 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3423) %3425 = extractvalue { i1, i64 } %3424, 0 %3426 = extractvalue { i1, i64 } %3424, 1 br i1 %3425, label %1152, label %1154 Flow3691: ; preds = %1172, %if.then.i.i.i.i865 %3427 = phi i1 [ false, %1172 ], [ true, %if.then.i.i.i.i865 ] br i1 %3427, label %if.end14.i.i.i936, label %Flow3692, !amdgpu.uniform !42 ComputeLoop2544: ; preds = %if.then12.i.i.i870, %ComputeLoop2544 %Accumulator2546 = phi i32 [ %3431, %ComputeLoop2544 ], [ -1, %if.then12.i.i.i870 ] %ActiveBits2547 = phi i64 [ %3434, %ComputeLoop2544 ], [ %1169, %if.then12.i.i.i870 ] %3428 = call i64 @llvm.cttz.i64(i64 %ActiveBits2547, i1 true) %3429 = trunc i64 %3428 to i32 %3430 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i876, i32 %3429) %3431 = and i32 %Accumulator2546, %3430 %3432 = shl i64 1, %3428 %3433 = xor i64 %3432, -1 %3434 = and i64 %ActiveBits2547, %3433 %3435 = icmp eq i64 %3434, 0 br i1 %3435, label %ComputeEnd2545, label %ComputeLoop2544, !amdgpu.uniform !42 ComputeEnd2545: ; preds = %ComputeLoop2544 %.lcssa4099 = phi i32 [ %3431, %ComputeLoop2544 ] %3436 = trunc i64 %1169 to i32 %3437 = lshr i64 %1169, 32 %3438 = trunc i64 %3437 to i32 %3439 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3436, i32 0) %3440 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3438, i32 %3439) %3441 = icmp eq i32 %3440, 0 %3442 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3441) %3443 = extractvalue { i1, i64 } %3442, 0 %3444 = extractvalue { i1, i64 } %3442, 1 br i1 %3443, label %1170, label %1172 ComputeLoop2548: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit944, %ComputeLoop2548 %Accumulator2550 = phi i32 [ %3448, %ComputeLoop2548 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit944 ] %ActiveBits2551 = phi i64 [ %3451, %ComputeLoop2548 ], [ %1249, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit944 ] %3445 = call i64 @llvm.cttz.i64(i64 %ActiveBits2551, i1 true) %3446 = trunc i64 %3445 to i32 %3447 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i935, i32 %3446) %3448 = and i32 %Accumulator2550, %3447 %3449 = shl i64 1, %3445 %3450 = xor i64 %3449, -1 %3451 = and i64 %ActiveBits2551, %3450 %3452 = icmp eq i64 %3451, 0 br i1 %3452, label %ComputeEnd2549, label %ComputeLoop2548, !amdgpu.uniform !42 ComputeEnd2549: ; preds = %ComputeLoop2548 %.lcssa4093 = phi i32 [ %3448, %ComputeLoop2548 ] %3453 = trunc i64 %1249 to i32 %3454 = lshr i64 %1249, 32 %3455 = trunc i64 %3454 to i32 %3456 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3453, i32 0) %3457 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3455, i32 %3456) %3458 = icmp eq i32 %3457, 0 %3459 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3458) %3460 = extractvalue { i1, i64 } %3459, 0 %3461 = extractvalue { i1, i64 } %3459, 1 br i1 %3460, label %1250, label %1253 ComputeLoop2552: ; preds = %for.cond.i.i.i953, %ComputeLoop2552 %Accumulator2554 = phi i32 [ %3466, %ComputeLoop2552 ], [ 0, %for.cond.i.i.i953 ] %OldValuePhi2555 = phi i32 [ %3465, %ComputeLoop2552 ], [ poison, %for.cond.i.i.i953 ] %ActiveBits2556 = phi i64 [ %3469, %ComputeLoop2552 ], [ %1391, %for.cond.i.i.i953 ] %3462 = call i64 @llvm.cttz.i64(i64 %ActiveBits2556, i1 true) %3463 = trunc i64 %3462 to i32 %3464 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i965, i32 %3463) %3465 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2554, i32 %3463, i32 %OldValuePhi2555) %3466 = or i32 %Accumulator2554, %3464 %3467 = shl i64 1, %3462 %3468 = xor i64 %3467, -1 %3469 = and i64 %ActiveBits2556, %3468 %3470 = icmp eq i64 %3469, 0 br i1 %3470, label %ComputeEnd2553, label %ComputeLoop2552, !amdgpu.uniform !42 ComputeEnd2553: ; preds = %ComputeLoop2552 %.lcssa4084 = phi i32 [ %3465, %ComputeLoop2552 ] %.lcssa4083 = phi i32 [ %3466, %ComputeLoop2552 ] %div8.i.i.i.i.i961 = lshr i32 %spec.store.select.i.i.i960, 5 %idxprom.i.i.i.i.i962 = zext nneg i32 %div8.i.i.i.i.i961 to i64 %3471 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i962 %3472 = trunc i64 %1391 to i32 %3473 = lshr i64 %1391, 32 %3474 = trunc i64 %3473 to i32 %3475 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3472, i32 0) %3476 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3474, i32 %3475) %3477 = icmp eq i32 %3476, 0 %3478 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3477) %3479 = extractvalue { i1, i64 } %3478, 0 %3480 = extractvalue { i1, i64 } %3478, 1 br i1 %3479, label %1392, label %1394 Flow3638: ; preds = %1412, %if.then.i.i.i.i971 %3481 = phi i1 [ false, %1412 ], [ true, %if.then.i.i.i.i971 ] br i1 %3481, label %if.end14.i.i.i1042, label %Flow3639, !amdgpu.uniform !42 ComputeLoop2557: ; preds = %if.then12.i.i.i976, %ComputeLoop2557 %Accumulator2559 = phi i32 [ %3485, %ComputeLoop2557 ], [ -1, %if.then12.i.i.i976 ] %ActiveBits2560 = phi i64 [ %3488, %ComputeLoop2557 ], [ %1409, %if.then12.i.i.i976 ] %3482 = call i64 @llvm.cttz.i64(i64 %ActiveBits2560, i1 true) %3483 = trunc i64 %3482 to i32 %3484 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i982, i32 %3483) %3485 = and i32 %Accumulator2559, %3484 %3486 = shl i64 1, %3482 %3487 = xor i64 %3486, -1 %3488 = and i64 %ActiveBits2560, %3487 %3489 = icmp eq i64 %3488, 0 br i1 %3489, label %ComputeEnd2558, label %ComputeLoop2557, !amdgpu.uniform !42 ComputeEnd2558: ; preds = %ComputeLoop2557 %.lcssa4085 = phi i32 [ %3485, %ComputeLoop2557 ] %3490 = trunc i64 %1409 to i32 %3491 = lshr i64 %1409, 32 %3492 = trunc i64 %3491 to i32 %3493 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3490, i32 0) %3494 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3492, i32 %3493) %3495 = icmp eq i32 %3494, 0 %3496 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3495) %3497 = extractvalue { i1, i64 } %3496, 0 %3498 = extractvalue { i1, i64 } %3496, 1 br i1 %3497, label %1410, label %1412 ComputeLoop2561: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit1050, %ComputeLoop2561 %Accumulator2563 = phi i32 [ %3502, %ComputeLoop2561 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit1050 ] %ActiveBits2564 = phi i64 [ %3505, %ComputeLoop2561 ], [ %1507, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit1050 ] %3499 = call i64 @llvm.cttz.i64(i64 %ActiveBits2564, i1 true) %3500 = trunc i64 %3499 to i32 %3501 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i1041, i32 %3500) %3502 = and i32 %Accumulator2563, %3501 %3503 = shl i64 1, %3499 %3504 = xor i64 %3503, -1 %3505 = and i64 %ActiveBits2564, %3504 %3506 = icmp eq i64 %3505, 0 br i1 %3506, label %ComputeEnd2562, label %ComputeLoop2561, !amdgpu.uniform !42 ComputeEnd2562: ; preds = %ComputeLoop2561 %.lcssa4075 = phi i32 [ %3502, %ComputeLoop2561 ] %3507 = trunc i64 %1507 to i32 %3508 = lshr i64 %1507, 32 %3509 = trunc i64 %3508 to i32 %3510 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3507, i32 0) %3511 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3509, i32 %3510) %3512 = icmp eq i32 %3511, 0 %3513 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3512) %3514 = extractvalue { i1, i64 } %3513, 0 %3515 = extractvalue { i1, i64 } %3513, 1 br i1 %3514, label %1508, label %1511 ComputeLoop2565: ; preds = %for.cond.i.i.i1054, %ComputeLoop2565 %Accumulator2567 = phi i32 [ %3520, %ComputeLoop2565 ], [ 0, %for.cond.i.i.i1054 ] %OldValuePhi2568 = phi i32 [ %3519, %ComputeLoop2565 ], [ poison, %for.cond.i.i.i1054 ] %ActiveBits2569 = phi i64 [ %3523, %ComputeLoop2565 ], [ %1520, %for.cond.i.i.i1054 ] %3516 = call i64 @llvm.cttz.i64(i64 %ActiveBits2569, i1 true) %3517 = trunc i64 %3516 to i32 %3518 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i1066, i32 %3517) %3519 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2567, i32 %3517, i32 %OldValuePhi2568) %3520 = or i32 %Accumulator2567, %3518 %3521 = shl i64 1, %3516 %3522 = xor i64 %3521, -1 %3523 = and i64 %ActiveBits2569, %3522 %3524 = icmp eq i64 %3523, 0 br i1 %3524, label %ComputeEnd2566, label %ComputeLoop2565, !amdgpu.uniform !42 ComputeEnd2566: ; preds = %ComputeLoop2565 %.lcssa4070 = phi i32 [ %3519, %ComputeLoop2565 ] %.lcssa4069 = phi i32 [ %3520, %ComputeLoop2565 ] %div8.i.i.i.i.i1062 = lshr i32 %spec.store.select.i.i.i1061, 5 %idxprom.i.i.i.i.i1063 = zext nneg i32 %div8.i.i.i.i.i1062 to i64 %3525 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i1063 %3526 = trunc i64 %1520 to i32 %3527 = lshr i64 %1520, 32 %3528 = trunc i64 %3527 to i32 %3529 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3526, i32 0) %3530 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3528, i32 %3529) %3531 = icmp eq i32 %3530, 0 %3532 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3531) %3533 = extractvalue { i1, i64 } %3532, 0 %3534 = extractvalue { i1, i64 } %3532, 1 br i1 %3533, label %1521, label %1523 Flow3612: ; preds = %1541, %if.then.i.i.i.i1072 %3535 = phi i1 [ false, %1541 ], [ true, %if.then.i.i.i.i1072 ] br i1 %3535, label %if.end14.i.i.i1141, label %Flow3613, !amdgpu.uniform !42 ComputeLoop2570: ; preds = %if.then12.i.i.i1077, %ComputeLoop2570 %Accumulator2572 = phi i32 [ %3539, %ComputeLoop2570 ], [ -1, %if.then12.i.i.i1077 ] %ActiveBits2573 = phi i64 [ %3542, %ComputeLoop2570 ], [ %1538, %if.then12.i.i.i1077 ] %3536 = call i64 @llvm.cttz.i64(i64 %ActiveBits2573, i1 true) %3537 = trunc i64 %3536 to i32 %3538 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i1083, i32 %3537) %3539 = and i32 %Accumulator2572, %3538 %3540 = shl i64 1, %3536 %3541 = xor i64 %3540, -1 %3542 = and i64 %ActiveBits2573, %3541 %3543 = icmp eq i64 %3542, 0 br i1 %3543, label %ComputeEnd2571, label %ComputeLoop2570, !amdgpu.uniform !42 ComputeEnd2571: ; preds = %ComputeLoop2570 %.lcssa4071 = phi i32 [ %3539, %ComputeLoop2570 ] %3544 = trunc i64 %1538 to i32 %3545 = lshr i64 %1538, 32 %3546 = trunc i64 %3545 to i32 %3547 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3544, i32 0) %3548 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3546, i32 %3547) %3549 = icmp eq i32 %3548, 0 %3550 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3549) %3551 = extractvalue { i1, i64 } %3550, 0 %3552 = extractvalue { i1, i64 } %3550, 1 br i1 %3551, label %1539, label %1541 ComputeLoop2574: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit1149, %ComputeLoop2574 %Accumulator2576 = phi i32 [ %3556, %ComputeLoop2574 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit1149 ] %ActiveBits2577 = phi i64 [ %3559, %ComputeLoop2574 ], [ %1593, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit1149 ] %3553 = call i64 @llvm.cttz.i64(i64 %ActiveBits2577, i1 true) %3554 = trunc i64 %3553 to i32 %3555 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i1140, i32 %3554) %3556 = and i32 %Accumulator2576, %3555 %3557 = shl i64 1, %3553 %3558 = xor i64 %3557, -1 %3559 = and i64 %ActiveBits2577, %3558 %3560 = icmp eq i64 %3559, 0 br i1 %3560, label %ComputeEnd2575, label %ComputeLoop2574, !amdgpu.uniform !42 ComputeEnd2575: ; preds = %ComputeLoop2574 %.lcssa4065 = phi i32 [ %3556, %ComputeLoop2574 ] %3561 = trunc i64 %1593 to i32 %3562 = lshr i64 %1593, 32 %3563 = trunc i64 %3562 to i32 %3564 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3561, i32 0) %3565 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3563, i32 %3564) %3566 = icmp eq i32 %3565, 0 %3567 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3566) %3568 = extractvalue { i1, i64 } %3567, 0 %3569 = extractvalue { i1, i64 } %3567, 1 br i1 %3568, label %1594, label %1597 ComputeLoop2578: ; preds = %for.cond.i.i1.i1158, %ComputeLoop2578 %Accumulator2580 = phi i32 [ %3574, %ComputeLoop2578 ], [ 0, %for.cond.i.i1.i1158 ] %OldValuePhi2581 = phi i32 [ %3573, %ComputeLoop2578 ], [ poison, %for.cond.i.i1.i1158 ] %ActiveBits2582 = phi i64 [ %3577, %ComputeLoop2578 ], [ %1606, %for.cond.i.i1.i1158 ] %3570 = call i64 @llvm.cttz.i64(i64 %ActiveBits2582, i1 true) %3571 = trunc i64 %3570 to i32 %3572 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i1170, i32 %3571) %3573 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2580, i32 %3571, i32 %OldValuePhi2581) %3574 = or i32 %Accumulator2580, %3572 %3575 = shl i64 1, %3570 %3576 = xor i64 %3575, -1 %3577 = and i64 %ActiveBits2582, %3576 %3578 = icmp eq i64 %3577, 0 br i1 %3578, label %ComputeEnd2579, label %ComputeLoop2578, !amdgpu.uniform !42 ComputeEnd2579: ; preds = %ComputeLoop2578 %.lcssa4060 = phi i32 [ %3573, %ComputeLoop2578 ] %.lcssa4059 = phi i32 [ %3574, %ComputeLoop2578 ] %div8.i.i.i.i.i1166 = lshr i32 %spec.store.select.i.i.i1165, 5 %idxprom.i.i.i.i.i1167 = zext nneg i32 %div8.i.i.i.i.i1166 to i64 %3579 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i1167 %3580 = trunc i64 %1606 to i32 %3581 = lshr i64 %1606, 32 %3582 = trunc i64 %3581 to i32 %3583 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3580, i32 0) %3584 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3582, i32 %3583) %3585 = icmp eq i32 %3584, 0 %3586 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3585) %3587 = extractvalue { i1, i64 } %3586, 0 %3588 = extractvalue { i1, i64 } %3586, 1 br i1 %3587, label %1607, label %1609 Flow3601: ; preds = %1627, %if.then.i.i.i.i1176 %3589 = phi i1 [ false, %1627 ], [ true, %if.then.i.i.i.i1176 ] br i1 %3589, label %if.end14.i.i.i1247, label %Flow3602, !amdgpu.uniform !42 ComputeLoop2583: ; preds = %if.then12.i.i.i1181, %ComputeLoop2583 %Accumulator2585 = phi i32 [ %3593, %ComputeLoop2583 ], [ -1, %if.then12.i.i.i1181 ] %ActiveBits2586 = phi i64 [ %3596, %ComputeLoop2583 ], [ %1624, %if.then12.i.i.i1181 ] %3590 = call i64 @llvm.cttz.i64(i64 %ActiveBits2586, i1 true) %3591 = trunc i64 %3590 to i32 %3592 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i1187, i32 %3591) %3593 = and i32 %Accumulator2585, %3592 %3594 = shl i64 1, %3590 %3595 = xor i64 %3594, -1 %3596 = and i64 %ActiveBits2586, %3595 %3597 = icmp eq i64 %3596, 0 br i1 %3597, label %ComputeEnd2584, label %ComputeLoop2583, !amdgpu.uniform !42 ComputeEnd2584: ; preds = %ComputeLoop2583 %.lcssa4061 = phi i32 [ %3593, %ComputeLoop2583 ] %3598 = trunc i64 %1624 to i32 %3599 = lshr i64 %1624, 32 %3600 = trunc i64 %3599 to i32 %3601 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3598, i32 0) %3602 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3600, i32 %3601) %3603 = icmp eq i32 %3602, 0 %3604 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3603) %3605 = extractvalue { i1, i64 } %3604, 0 %3606 = extractvalue { i1, i64 } %3604, 1 br i1 %3605, label %1625, label %1627 ComputeLoop2587: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1255, %ComputeLoop2587 %Accumulator2589 = phi i32 [ %3610, %ComputeLoop2587 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1255 ] %ActiveBits2590 = phi i64 [ %3613, %ComputeLoop2587 ], [ %1704, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1255 ] %3607 = call i64 @llvm.cttz.i64(i64 %ActiveBits2590, i1 true) %3608 = trunc i64 %3607 to i32 %3609 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i1246, i32 %3608) %3610 = and i32 %Accumulator2589, %3609 %3611 = shl i64 1, %3607 %3612 = xor i64 %3611, -1 %3613 = and i64 %ActiveBits2590, %3612 %3614 = icmp eq i64 %3613, 0 br i1 %3614, label %ComputeEnd2588, label %ComputeLoop2587, !amdgpu.uniform !42 ComputeEnd2588: ; preds = %ComputeLoop2587 %.lcssa4055 = phi i32 [ %3610, %ComputeLoop2587 ] %3615 = trunc i64 %1704 to i32 %3616 = lshr i64 %1704, 32 %3617 = trunc i64 %3616 to i32 %3618 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3615, i32 0) %3619 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3617, i32 %3618) %3620 = icmp eq i32 %3619, 0 %3621 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3620) %3622 = extractvalue { i1, i64 } %3621, 0 %3623 = extractvalue { i1, i64 } %3621, 1 br i1 %3622, label %1705, label %1708 ComputeLoop2591: ; preds = %for.cond.i.i.i1257, %ComputeLoop2591 %Accumulator2593 = phi i32 [ %3628, %ComputeLoop2591 ], [ 0, %for.cond.i.i.i1257 ] %OldValuePhi2594 = phi i32 [ %3627, %ComputeLoop2591 ], [ poison, %for.cond.i.i.i1257 ] %ActiveBits2595 = phi i64 [ %3631, %ComputeLoop2591 ], [ %1717, %for.cond.i.i.i1257 ] %3624 = call i64 @llvm.cttz.i64(i64 %ActiveBits2595, i1 true) %3625 = trunc i64 %3624 to i32 %3626 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i1269, i32 %3625) %3627 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2593, i32 %3625, i32 %OldValuePhi2594) %3628 = or i32 %Accumulator2593, %3626 %3629 = shl i64 1, %3624 %3630 = xor i64 %3629, -1 %3631 = and i64 %ActiveBits2595, %3630 %3632 = icmp eq i64 %3631, 0 br i1 %3632, label %ComputeEnd2592, label %ComputeLoop2591, !amdgpu.uniform !42 ComputeEnd2592: ; preds = %ComputeLoop2591 %.lcssa4050 = phi i32 [ %3627, %ComputeLoop2591 ] %.lcssa4049 = phi i32 [ %3628, %ComputeLoop2591 ] %div8.i.i.i.i.i1265 = lshr i32 %spec.store.select.i.i.i1264, 5 %idxprom.i.i.i.i.i1266 = zext nneg i32 %div8.i.i.i.i.i1265 to i64 %3633 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i1266 %3634 = trunc i64 %1717 to i32 %3635 = lshr i64 %1717, 32 %3636 = trunc i64 %3635 to i32 %3637 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3634, i32 0) %3638 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3636, i32 %3637) %3639 = icmp eq i32 %3638, 0 %3640 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3639) %3641 = extractvalue { i1, i64 } %3640, 0 %3642 = extractvalue { i1, i64 } %3640, 1 br i1 %3641, label %1718, label %1720 Flow3575: ; preds = %1738, %if.then.i.i.i.i1275 %3643 = phi i1 [ false, %1738 ], [ true, %if.then.i.i.i.i1275 ] br i1 %3643, label %if.end14.i.i.i1346, label %Flow3576, !amdgpu.uniform !42 ComputeLoop2596: ; preds = %if.then12.i.i.i1280, %ComputeLoop2596 %Accumulator2598 = phi i32 [ %3647, %ComputeLoop2596 ], [ -1, %if.then12.i.i.i1280 ] %ActiveBits2599 = phi i64 [ %3650, %ComputeLoop2596 ], [ %1735, %if.then12.i.i.i1280 ] %3644 = call i64 @llvm.cttz.i64(i64 %ActiveBits2599, i1 true) %3645 = trunc i64 %3644 to i32 %3646 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i1286, i32 %3645) %3647 = and i32 %Accumulator2598, %3646 %3648 = shl i64 1, %3644 %3649 = xor i64 %3648, -1 %3650 = and i64 %ActiveBits2599, %3649 %3651 = icmp eq i64 %3650, 0 br i1 %3651, label %ComputeEnd2597, label %ComputeLoop2596, !amdgpu.uniform !42 ComputeEnd2597: ; preds = %ComputeLoop2596 %.lcssa4051 = phi i32 [ %3647, %ComputeLoop2596 ] %3652 = trunc i64 %1735 to i32 %3653 = lshr i64 %1735, 32 %3654 = trunc i64 %3653 to i32 %3655 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3652, i32 0) %3656 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3654, i32 %3655) %3657 = icmp eq i32 %3656, 0 %3658 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3657) %3659 = extractvalue { i1, i64 } %3658, 0 %3660 = extractvalue { i1, i64 } %3658, 1 br i1 %3659, label %1736, label %1738 ComputeLoop2600: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp11string_viewEEERS1_T_.exit, %ComputeLoop2600 %Accumulator2602 = phi i32 [ %3664, %ComputeLoop2600 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp11string_viewEEERS1_T_.exit ] %ActiveBits2603 = phi i64 [ %3667, %ComputeLoop2600 ], [ %1815, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp11string_viewEEERS1_T_.exit ] %3661 = call i64 @llvm.cttz.i64(i64 %ActiveBits2603, i1 true) %3662 = trunc i64 %3661 to i32 %3663 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i1345, i32 %3662) %3664 = and i32 %Accumulator2602, %3663 %3665 = shl i64 1, %3661 %3666 = xor i64 %3665, -1 %3667 = and i64 %ActiveBits2603, %3666 %3668 = icmp eq i64 %3667, 0 br i1 %3668, label %ComputeEnd2601, label %ComputeLoop2600, !amdgpu.uniform !42 ComputeEnd2601: ; preds = %ComputeLoop2600 %.lcssa4045 = phi i32 [ %3664, %ComputeLoop2600 ] %3669 = trunc i64 %1815 to i32 %3670 = lshr i64 %1815, 32 %3671 = trunc i64 %3670 to i32 %3672 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3669, i32 0) %3673 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3671, i32 %3672) %3674 = icmp eq i32 %3673, 0 %3675 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3674) %3676 = extractvalue { i1, i64 } %3675, 0 %3677 = extractvalue { i1, i64 } %3675, 1 br i1 %3676, label %1816, label %1819 ComputeLoop2604: ; preds = %for.cond.i.i1.i1362, %ComputeLoop2604 %Accumulator2606 = phi i32 [ %3682, %ComputeLoop2604 ], [ 0, %for.cond.i.i1.i1362 ] %OldValuePhi2607 = phi i32 [ %3681, %ComputeLoop2604 ], [ poison, %for.cond.i.i1.i1362 ] %ActiveBits2608 = phi i64 [ %3685, %ComputeLoop2604 ], [ %1828, %for.cond.i.i1.i1362 ] %3678 = call i64 @llvm.cttz.i64(i64 %ActiveBits2608, i1 true) %3679 = trunc i64 %3678 to i32 %3680 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i1374, i32 %3679) %3681 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2606, i32 %3679, i32 %OldValuePhi2607) %3682 = or i32 %Accumulator2606, %3680 %3683 = shl i64 1, %3678 %3684 = xor i64 %3683, -1 %3685 = and i64 %ActiveBits2608, %3684 %3686 = icmp eq i64 %3685, 0 br i1 %3686, label %ComputeEnd2605, label %ComputeLoop2604, !amdgpu.uniform !42 ComputeEnd2605: ; preds = %ComputeLoop2604 %.lcssa4040 = phi i32 [ %3681, %ComputeLoop2604 ] %.lcssa4039 = phi i32 [ %3682, %ComputeLoop2604 ] %div8.i.i.i.i.i1370 = lshr i32 %spec.store.select.i.i.i1369, 5 %idxprom.i.i.i.i.i1371 = zext nneg i32 %div8.i.i.i.i.i1370 to i64 %3687 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i1371 %3688 = trunc i64 %1828 to i32 %3689 = lshr i64 %1828, 32 %3690 = trunc i64 %3689 to i32 %3691 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3688, i32 0) %3692 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3690, i32 %3691) %3693 = icmp eq i32 %3692, 0 %3694 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3693) %3695 = extractvalue { i1, i64 } %3694, 0 %3696 = extractvalue { i1, i64 } %3694, 1 br i1 %3695, label %1829, label %1831 Flow3549: ; preds = %1849, %if.then.i.i.i.i1380 %3697 = phi i1 [ false, %1849 ], [ true, %if.then.i.i.i.i1380 ] br i1 %3697, label %if.end14.i.i.i1451, label %Flow3550, !amdgpu.uniform !42 ComputeLoop2609: ; preds = %if.then12.i.i.i1385, %ComputeLoop2609 %Accumulator2611 = phi i32 [ %3701, %ComputeLoop2609 ], [ -1, %if.then12.i.i.i1385 ] %ActiveBits2612 = phi i64 [ %3704, %ComputeLoop2609 ], [ %1846, %if.then12.i.i.i1385 ] %3698 = call i64 @llvm.cttz.i64(i64 %ActiveBits2612, i1 true) %3699 = trunc i64 %3698 to i32 %3700 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i1391, i32 %3699) %3701 = and i32 %Accumulator2611, %3700 %3702 = shl i64 1, %3698 %3703 = xor i64 %3702, -1 %3704 = and i64 %ActiveBits2612, %3703 %3705 = icmp eq i64 %3704, 0 br i1 %3705, label %ComputeEnd2610, label %ComputeLoop2609, !amdgpu.uniform !42 ComputeEnd2610: ; preds = %ComputeLoop2609 %.lcssa4041 = phi i32 [ %3701, %ComputeLoop2609 ] %3706 = trunc i64 %1846 to i32 %3707 = lshr i64 %1846, 32 %3708 = trunc i64 %3707 to i32 %3709 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3706, i32 0) %3710 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3708, i32 %3709) %3711 = icmp eq i32 %3710, 0 %3712 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3711) %3713 = extractvalue { i1, i64 } %3712, 0 %3714 = extractvalue { i1, i64 } %3712, 1 br i1 %3713, label %1847, label %1849 ComputeLoop2613: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1459, %ComputeLoop2613 %Accumulator2615 = phi i32 [ %3718, %ComputeLoop2613 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1459 ] %ActiveBits2616 = phi i64 [ %3721, %ComputeLoop2613 ], [ %1926, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1459 ] %3715 = call i64 @llvm.cttz.i64(i64 %ActiveBits2616, i1 true) %3716 = trunc i64 %3715 to i32 %3717 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i1450, i32 %3716) %3718 = and i32 %Accumulator2615, %3717 %3719 = shl i64 1, %3715 %3720 = xor i64 %3719, -1 %3721 = and i64 %ActiveBits2616, %3720 %3722 = icmp eq i64 %3721, 0 br i1 %3722, label %ComputeEnd2614, label %ComputeLoop2613, !amdgpu.uniform !42 ComputeEnd2614: ; preds = %ComputeLoop2613 %.lcssa4035 = phi i32 [ %3718, %ComputeLoop2613 ] %3723 = trunc i64 %1926 to i32 %3724 = lshr i64 %1926, 32 %3725 = trunc i64 %3724 to i32 %3726 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3723, i32 0) %3727 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3725, i32 %3726) %3728 = icmp eq i32 %3727, 0 %3729 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3728) %3730 = extractvalue { i1, i64 } %3729, 0 %3731 = extractvalue { i1, i64 } %3729, 1 br i1 %3730, label %1927, label %1930 ComputeLoop2617: ; preds = %for.cond.i.i1.i1468, %ComputeLoop2617 %Accumulator2619 = phi i32 [ %3736, %ComputeLoop2617 ], [ 0, %for.cond.i.i1.i1468 ] %OldValuePhi2620 = phi i32 [ %3735, %ComputeLoop2617 ], [ poison, %for.cond.i.i1.i1468 ] %ActiveBits2621 = phi i64 [ %3739, %ComputeLoop2617 ], [ %1943, %for.cond.i.i1.i1468 ] %3732 = call i64 @llvm.cttz.i64(i64 %ActiveBits2621, i1 true) %3733 = trunc i64 %3732 to i32 %3734 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i1480, i32 %3733) %3735 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2619, i32 %3733, i32 %OldValuePhi2620) %3736 = or i32 %Accumulator2619, %3734 %3737 = shl i64 1, %3732 %3738 = xor i64 %3737, -1 %3739 = and i64 %ActiveBits2621, %3738 %3740 = icmp eq i64 %3739, 0 br i1 %3740, label %ComputeEnd2618, label %ComputeLoop2617, !amdgpu.uniform !42 ComputeEnd2618: ; preds = %ComputeLoop2617 %.lcssa4029 = phi i32 [ %3735, %ComputeLoop2617 ] %.lcssa4028 = phi i32 [ %3736, %ComputeLoop2617 ] %div8.i.i.i.i.i1476 = lshr i32 %spec.store.select.i.i.i1475, 5 %idxprom.i.i.i.i.i1477 = zext nneg i32 %div8.i.i.i.i.i1476 to i64 %3741 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i1477 %3742 = trunc i64 %1943 to i32 %3743 = lshr i64 %1943, 32 %3744 = trunc i64 %3743 to i32 %3745 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3742, i32 0) %3746 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3744, i32 %3745) %3747 = icmp eq i32 %3746, 0 %3748 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3747) %3749 = extractvalue { i1, i64 } %3748, 0 %3750 = extractvalue { i1, i64 } %3748, 1 br i1 %3749, label %1944, label %1946 Flow3523: ; preds = %1964, %if.then.i.i.i.i1486 %3751 = phi i1 [ false, %1964 ], [ true, %if.then.i.i.i.i1486 ] br i1 %3751, label %if.end14.i.i.i1557, label %Flow3524, !amdgpu.uniform !42 ComputeLoop2622: ; preds = %if.then12.i.i.i1491, %ComputeLoop2622 %Accumulator2624 = phi i32 [ %3755, %ComputeLoop2622 ], [ -1, %if.then12.i.i.i1491 ] %ActiveBits2625 = phi i64 [ %3758, %ComputeLoop2622 ], [ %1961, %if.then12.i.i.i1491 ] %3752 = call i64 @llvm.cttz.i64(i64 %ActiveBits2625, i1 true) %3753 = trunc i64 %3752 to i32 %3754 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i1497, i32 %3753) %3755 = and i32 %Accumulator2624, %3754 %3756 = shl i64 1, %3752 %3757 = xor i64 %3756, -1 %3758 = and i64 %ActiveBits2625, %3757 %3759 = icmp eq i64 %3758, 0 br i1 %3759, label %ComputeEnd2623, label %ComputeLoop2622, !amdgpu.uniform !42 ComputeEnd2623: ; preds = %ComputeLoop2622 %.lcssa4030 = phi i32 [ %3755, %ComputeLoop2622 ] %3760 = trunc i64 %1961 to i32 %3761 = lshr i64 %1961, 32 %3762 = trunc i64 %3761 to i32 %3763 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3760, i32 0) %3764 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3762, i32 %3763) %3765 = icmp eq i32 %3764, 0 %3766 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3765) %3767 = extractvalue { i1, i64 } %3766, 0 %3768 = extractvalue { i1, i64 } %3766, 1 br i1 %3767, label %1962, label %1964 ComputeLoop2626: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1565, %ComputeLoop2626 %Accumulator2628 = phi i32 [ %3772, %ComputeLoop2626 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1565 ] %ActiveBits2629 = phi i64 [ %3775, %ComputeLoop2626 ], [ %2059, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1565 ] %3769 = call i64 @llvm.cttz.i64(i64 %ActiveBits2629, i1 true) %3770 = trunc i64 %3769 to i32 %3771 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i1556, i32 %3770) %3772 = and i32 %Accumulator2628, %3771 %3773 = shl i64 1, %3769 %3774 = xor i64 %3773, -1 %3775 = and i64 %ActiveBits2629, %3774 %3776 = icmp eq i64 %3775, 0 br i1 %3776, label %ComputeEnd2627, label %ComputeLoop2626, !amdgpu.uniform !42 ComputeEnd2627: ; preds = %ComputeLoop2626 %.lcssa4020 = phi i32 [ %3772, %ComputeLoop2626 ] %3777 = trunc i64 %2059 to i32 %3778 = lshr i64 %2059, 32 %3779 = trunc i64 %3778 to i32 %3780 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3777, i32 0) %3781 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3779, i32 %3780) %3782 = icmp eq i32 %3781, 0 %3783 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3782) %3784 = extractvalue { i1, i64 } %3783, 0 %3785 = extractvalue { i1, i64 } %3783, 1 br i1 %3784, label %2060, label %2063 ComputeLoop2630: ; preds = %for.cond.i.i.i1569, %ComputeLoop2630 %Accumulator2632 = phi i32 [ %3790, %ComputeLoop2630 ], [ 0, %for.cond.i.i.i1569 ] %OldValuePhi2633 = phi i32 [ %3789, %ComputeLoop2630 ], [ poison, %for.cond.i.i.i1569 ] %ActiveBits2634 = phi i64 [ %3793, %ComputeLoop2630 ], [ %2072, %for.cond.i.i.i1569 ] %3786 = call i64 @llvm.cttz.i64(i64 %ActiveBits2634, i1 true) %3787 = trunc i64 %3786 to i32 %3788 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i1581, i32 %3787) %3789 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2632, i32 %3787, i32 %OldValuePhi2633) %3790 = or i32 %Accumulator2632, %3788 %3791 = shl i64 1, %3786 %3792 = xor i64 %3791, -1 %3793 = and i64 %ActiveBits2634, %3792 %3794 = icmp eq i64 %3793, 0 br i1 %3794, label %ComputeEnd2631, label %ComputeLoop2630, !amdgpu.uniform !42 ComputeEnd2631: ; preds = %ComputeLoop2630 %.lcssa4015 = phi i32 [ %3789, %ComputeLoop2630 ] %.lcssa4014 = phi i32 [ %3790, %ComputeLoop2630 ] %div8.i.i.i.i.i1577 = lshr i32 %spec.store.select.i.i.i1576, 5 %idxprom.i.i.i.i.i1578 = zext nneg i32 %div8.i.i.i.i.i1577 to i64 %3795 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i1578 %3796 = trunc i64 %2072 to i32 %3797 = lshr i64 %2072, 32 %3798 = trunc i64 %3797 to i32 %3799 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3796, i32 0) %3800 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3798, i32 %3799) %3801 = icmp eq i32 %3800, 0 %3802 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3801) %3803 = extractvalue { i1, i64 } %3802, 0 %3804 = extractvalue { i1, i64 } %3802, 1 br i1 %3803, label %2073, label %2075 Flow3497: ; preds = %2093, %if.then.i.i.i.i1587 %3805 = phi i1 [ false, %2093 ], [ true, %if.then.i.i.i.i1587 ] br i1 %3805, label %if.end14.i.i.i1656, label %Flow3498, !amdgpu.uniform !42 ComputeLoop2635: ; preds = %if.then12.i.i.i1592, %ComputeLoop2635 %Accumulator2637 = phi i32 [ %3809, %ComputeLoop2635 ], [ -1, %if.then12.i.i.i1592 ] %ActiveBits2638 = phi i64 [ %3812, %ComputeLoop2635 ], [ %2090, %if.then12.i.i.i1592 ] %3806 = call i64 @llvm.cttz.i64(i64 %ActiveBits2638, i1 true) %3807 = trunc i64 %3806 to i32 %3808 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i1598, i32 %3807) %3809 = and i32 %Accumulator2637, %3808 %3810 = shl i64 1, %3806 %3811 = xor i64 %3810, -1 %3812 = and i64 %ActiveBits2638, %3811 %3813 = icmp eq i64 %3812, 0 br i1 %3813, label %ComputeEnd2636, label %ComputeLoop2635, !amdgpu.uniform !42 ComputeEnd2636: ; preds = %ComputeLoop2635 %.lcssa4016 = phi i32 [ %3809, %ComputeLoop2635 ] %3814 = trunc i64 %2090 to i32 %3815 = lshr i64 %2090, 32 %3816 = trunc i64 %3815 to i32 %3817 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3814, i32 0) %3818 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3816, i32 %3817) %3819 = icmp eq i32 %3818, 0 %3820 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3819) %3821 = extractvalue { i1, i64 } %3820, 0 %3822 = extractvalue { i1, i64 } %3820, 1 br i1 %3821, label %2091, label %2093 ComputeLoop2639: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit1664, %ComputeLoop2639 %Accumulator2641 = phi i32 [ %3826, %ComputeLoop2639 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit1664 ] %ActiveBits2642 = phi i64 [ %3829, %ComputeLoop2639 ], [ %2145, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit1664 ] %3823 = call i64 @llvm.cttz.i64(i64 %ActiveBits2642, i1 true) %3824 = trunc i64 %3823 to i32 %3825 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i1655, i32 %3824) %3826 = and i32 %Accumulator2641, %3825 %3827 = shl i64 1, %3823 %3828 = xor i64 %3827, -1 %3829 = and i64 %ActiveBits2642, %3828 %3830 = icmp eq i64 %3829, 0 br i1 %3830, label %ComputeEnd2640, label %ComputeLoop2639, !amdgpu.uniform !42 ComputeEnd2640: ; preds = %ComputeLoop2639 %.lcssa4010 = phi i32 [ %3826, %ComputeLoop2639 ] %3831 = trunc i64 %2145 to i32 %3832 = lshr i64 %2145, 32 %3833 = trunc i64 %3832 to i32 %3834 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3831, i32 0) %3835 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3833, i32 %3834) %3836 = icmp eq i32 %3835, 0 %3837 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3836) %3838 = extractvalue { i1, i64 } %3837, 0 %3839 = extractvalue { i1, i64 } %3837, 1 br i1 %3838, label %2146, label %2149 ComputeLoop2643: ; preds = %for.cond.i.i.i1673, %ComputeLoop2643 %Accumulator2645 = phi i32 [ %3844, %ComputeLoop2643 ], [ 0, %for.cond.i.i.i1673 ] %OldValuePhi2646 = phi i32 [ %3843, %ComputeLoop2643 ], [ poison, %for.cond.i.i.i1673 ] %ActiveBits2647 = phi i64 [ %3847, %ComputeLoop2643 ], [ %2167, %for.cond.i.i.i1673 ] %3840 = call i64 @llvm.cttz.i64(i64 %ActiveBits2647, i1 true) %3841 = trunc i64 %3840 to i32 %3842 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i1685, i32 %3841) %3843 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2645, i32 %3841, i32 %OldValuePhi2646) %3844 = or i32 %Accumulator2645, %3842 %3845 = shl i64 1, %3840 %3846 = xor i64 %3845, -1 %3847 = and i64 %ActiveBits2647, %3846 %3848 = icmp eq i64 %3847, 0 br i1 %3848, label %ComputeEnd2644, label %ComputeLoop2643, !amdgpu.uniform !42 ComputeEnd2644: ; preds = %ComputeLoop2643 %.lcssa4005 = phi i32 [ %3843, %ComputeLoop2643 ] %.lcssa4004 = phi i32 [ %3844, %ComputeLoop2643 ] %div8.i.i.i.i.i1681 = lshr i32 %spec.store.select.i.i.i1680, 5 %idxprom.i.i.i.i.i1682 = zext nneg i32 %div8.i.i.i.i.i1681 to i64 %3849 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i1682 %3850 = trunc i64 %2167 to i32 %3851 = lshr i64 %2167, 32 %3852 = trunc i64 %3851 to i32 %3853 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3850, i32 0) %3854 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3852, i32 %3853) %3855 = icmp eq i32 %3854, 0 %3856 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3855) %3857 = extractvalue { i1, i64 } %3856, 0 %3858 = extractvalue { i1, i64 } %3856, 1 br i1 %3857, label %2168, label %2170 Flow3480: ; preds = %2188, %if.then.i.i.i.i1691 %3859 = phi i1 [ false, %2188 ], [ true, %if.then.i.i.i.i1691 ] br i1 %3859, label %if.end14.i.i.i1762, label %Flow3481, !amdgpu.uniform !42 ComputeLoop2648: ; preds = %if.then12.i.i.i1696, %ComputeLoop2648 %Accumulator2650 = phi i32 [ %3863, %ComputeLoop2648 ], [ -1, %if.then12.i.i.i1696 ] %ActiveBits2651 = phi i64 [ %3866, %ComputeLoop2648 ], [ %2185, %if.then12.i.i.i1696 ] %3860 = call i64 @llvm.cttz.i64(i64 %ActiveBits2651, i1 true) %3861 = trunc i64 %3860 to i32 %3862 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i1702, i32 %3861) %3863 = and i32 %Accumulator2650, %3862 %3864 = shl i64 1, %3860 %3865 = xor i64 %3864, -1 %3866 = and i64 %ActiveBits2651, %3865 %3867 = icmp eq i64 %3866, 0 br i1 %3867, label %ComputeEnd2649, label %ComputeLoop2648, !amdgpu.uniform !42 ComputeEnd2649: ; preds = %ComputeLoop2648 %.lcssa4006 = phi i32 [ %3863, %ComputeLoop2648 ] %3868 = trunc i64 %2185 to i32 %3869 = lshr i64 %2185, 32 %3870 = trunc i64 %3869 to i32 %3871 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3868, i32 0) %3872 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3870, i32 %3871) %3873 = icmp eq i32 %3872, 0 %3874 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3873) %3875 = extractvalue { i1, i64 } %3874, 0 %3876 = extractvalue { i1, i64 } %3874, 1 br i1 %3875, label %2186, label %2188 ComputeLoop2652: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit1770, %ComputeLoop2652 %Accumulator2654 = phi i32 [ %3880, %ComputeLoop2652 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit1770 ] %ActiveBits2655 = phi i64 [ %3883, %ComputeLoop2652 ], [ %2262, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit1770 ] %3877 = call i64 @llvm.cttz.i64(i64 %ActiveBits2655, i1 true) %3878 = trunc i64 %3877 to i32 %3879 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i1761, i32 %3878) %3880 = and i32 %Accumulator2654, %3879 %3881 = shl i64 1, %3877 %3882 = xor i64 %3881, -1 %3883 = and i64 %ActiveBits2655, %3882 %3884 = icmp eq i64 %3883, 0 br i1 %3884, label %ComputeEnd2653, label %ComputeLoop2652, !amdgpu.uniform !42 ComputeEnd2653: ; preds = %ComputeLoop2652 %.lcssa4000 = phi i32 [ %3880, %ComputeLoop2652 ] %3885 = trunc i64 %2262 to i32 %3886 = lshr i64 %2262, 32 %3887 = trunc i64 %3886 to i32 %3888 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3885, i32 0) %3889 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3887, i32 %3888) %3890 = icmp eq i32 %3889, 0 %3891 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3890) %3892 = extractvalue { i1, i64 } %3891, 0 %3893 = extractvalue { i1, i64 } %3891, 1 br i1 %3892, label %2263, label %2266 ComputeLoop2656: ; preds = %for.cond.i.i1.i1779, %ComputeLoop2656 %Accumulator2658 = phi i32 [ %3898, %ComputeLoop2656 ], [ 0, %for.cond.i.i1.i1779 ] %OldValuePhi2659 = phi i32 [ %3897, %ComputeLoop2656 ], [ poison, %for.cond.i.i1.i1779 ] %ActiveBits2660 = phi i64 [ %3901, %ComputeLoop2656 ], [ %2275, %for.cond.i.i1.i1779 ] %3894 = call i64 @llvm.cttz.i64(i64 %ActiveBits2660, i1 true) %3895 = trunc i64 %3894 to i32 %3896 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i1791, i32 %3895) %3897 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2658, i32 %3895, i32 %OldValuePhi2659) %3898 = or i32 %Accumulator2658, %3896 %3899 = shl i64 1, %3894 %3900 = xor i64 %3899, -1 %3901 = and i64 %ActiveBits2660, %3900 %3902 = icmp eq i64 %3901, 0 br i1 %3902, label %ComputeEnd2657, label %ComputeLoop2656, !amdgpu.uniform !42 ComputeEnd2657: ; preds = %ComputeLoop2656 %.lcssa3995 = phi i32 [ %3897, %ComputeLoop2656 ] %.lcssa3994 = phi i32 [ %3898, %ComputeLoop2656 ] %div8.i.i.i.i.i1787 = lshr i32 %spec.store.select.i.i.i1786, 5 %idxprom.i.i.i.i.i1788 = zext nneg i32 %div8.i.i.i.i.i1787 to i64 %3903 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i1788 %3904 = trunc i64 %2275 to i32 %3905 = lshr i64 %2275, 32 %3906 = trunc i64 %3905 to i32 %3907 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3904, i32 0) %3908 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3906, i32 %3907) %3909 = icmp eq i32 %3908, 0 %3910 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3909) %3911 = extractvalue { i1, i64 } %3910, 0 %3912 = extractvalue { i1, i64 } %3910, 1 br i1 %3911, label %2276, label %2278 Flow3454: ; preds = %2296, %if.then.i.i.i.i1797 %3913 = phi i1 [ false, %2296 ], [ true, %if.then.i.i.i.i1797 ] br i1 %3913, label %if.end14.i.i.i1868, label %Flow3455, !amdgpu.uniform !42 ComputeLoop2661: ; preds = %if.then12.i.i.i1802, %ComputeLoop2661 %Accumulator2663 = phi i32 [ %3917, %ComputeLoop2661 ], [ -1, %if.then12.i.i.i1802 ] %ActiveBits2664 = phi i64 [ %3920, %ComputeLoop2661 ], [ %2293, %if.then12.i.i.i1802 ] %3914 = call i64 @llvm.cttz.i64(i64 %ActiveBits2664, i1 true) %3915 = trunc i64 %3914 to i32 %3916 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i1808, i32 %3915) %3917 = and i32 %Accumulator2663, %3916 %3918 = shl i64 1, %3914 %3919 = xor i64 %3918, -1 %3920 = and i64 %ActiveBits2664, %3919 %3921 = icmp eq i64 %3920, 0 br i1 %3921, label %ComputeEnd2662, label %ComputeLoop2661, !amdgpu.uniform !42 ComputeEnd2662: ; preds = %ComputeLoop2661 %.lcssa3996 = phi i32 [ %3917, %ComputeLoop2661 ] %3922 = trunc i64 %2293 to i32 %3923 = lshr i64 %2293, 32 %3924 = trunc i64 %3923 to i32 %3925 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3922, i32 0) %3926 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3924, i32 %3925) %3927 = icmp eq i32 %3926, 0 %3928 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3927) %3929 = extractvalue { i1, i64 } %3928, 0 %3930 = extractvalue { i1, i64 } %3928, 1 br i1 %3929, label %2294, label %2296 ComputeLoop2665: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1876, %ComputeLoop2665 %Accumulator2667 = phi i32 [ %3934, %ComputeLoop2665 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1876 ] %ActiveBits2668 = phi i64 [ %3937, %ComputeLoop2665 ], [ %2370, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1876 ] %3931 = call i64 @llvm.cttz.i64(i64 %ActiveBits2668, i1 true) %3932 = trunc i64 %3931 to i32 %3933 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i1867, i32 %3932) %3934 = and i32 %Accumulator2667, %3933 %3935 = shl i64 1, %3931 %3936 = xor i64 %3935, -1 %3937 = and i64 %ActiveBits2668, %3936 %3938 = icmp eq i64 %3937, 0 br i1 %3938, label %ComputeEnd2666, label %ComputeLoop2665, !amdgpu.uniform !42 ComputeEnd2666: ; preds = %ComputeLoop2665 %.lcssa3990 = phi i32 [ %3934, %ComputeLoop2665 ] %3939 = trunc i64 %2370 to i32 %3940 = lshr i64 %2370, 32 %3941 = trunc i64 %3940 to i32 %3942 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3939, i32 0) %3943 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3941, i32 %3942) %3944 = icmp eq i32 %3943, 0 %3945 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3944) %3946 = extractvalue { i1, i64 } %3945, 0 %3947 = extractvalue { i1, i64 } %3945, 1 br i1 %3946, label %2371, label %2374 ComputeLoop2669: ; preds = %for.cond.i.i.i1885, %ComputeLoop2669 %Accumulator2671 = phi i32 [ %3952, %ComputeLoop2669 ], [ 0, %for.cond.i.i.i1885 ] %OldValuePhi2672 = phi i32 [ %3951, %ComputeLoop2669 ], [ poison, %for.cond.i.i.i1885 ] %ActiveBits2673 = phi i64 [ %3955, %ComputeLoop2669 ], [ %2496, %for.cond.i.i.i1885 ] %3948 = call i64 @llvm.cttz.i64(i64 %ActiveBits2673, i1 true) %3949 = trunc i64 %3948 to i32 %3950 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i1897, i32 %3949) %3951 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2671, i32 %3949, i32 %OldValuePhi2672) %3952 = or i32 %Accumulator2671, %3950 %3953 = shl i64 1, %3948 %3954 = xor i64 %3953, -1 %3955 = and i64 %ActiveBits2673, %3954 %3956 = icmp eq i64 %3955, 0 br i1 %3956, label %ComputeEnd2670, label %ComputeLoop2669, !amdgpu.uniform !42 ComputeEnd2670: ; preds = %ComputeLoop2669 %.lcssa3981 = phi i32 [ %3951, %ComputeLoop2669 ] %.lcssa3980 = phi i32 [ %3952, %ComputeLoop2669 ] %div8.i.i.i.i.i1893 = lshr i32 %spec.store.select.i.i.i1892, 5 %idxprom.i.i.i.i.i1894 = zext nneg i32 %div8.i.i.i.i.i1893 to i64 %3957 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i1894 %3958 = trunc i64 %2496 to i32 %3959 = lshr i64 %2496, 32 %3960 = trunc i64 %3959 to i32 %3961 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3958, i32 0) %3962 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3960, i32 %3961) %3963 = icmp eq i32 %3962, 0 %3964 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3963) %3965 = extractvalue { i1, i64 } %3964, 0 %3966 = extractvalue { i1, i64 } %3964, 1 br i1 %3965, label %2497, label %2499 Flow3411: ; preds = %2517, %if.then.i.i.i.i1903 %3967 = phi i1 [ false, %2517 ], [ true, %if.then.i.i.i.i1903 ] br i1 %3967, label %if.end14.i.i.i1974, label %Flow3412, !amdgpu.uniform !42 ComputeLoop2674: ; preds = %if.then12.i.i.i1908, %ComputeLoop2674 %Accumulator2676 = phi i32 [ %3971, %ComputeLoop2674 ], [ -1, %if.then12.i.i.i1908 ] %ActiveBits2677 = phi i64 [ %3974, %ComputeLoop2674 ], [ %2514, %if.then12.i.i.i1908 ] %3968 = call i64 @llvm.cttz.i64(i64 %ActiveBits2677, i1 true) %3969 = trunc i64 %3968 to i32 %3970 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i1914, i32 %3969) %3971 = and i32 %Accumulator2676, %3970 %3972 = shl i64 1, %3968 %3973 = xor i64 %3972, -1 %3974 = and i64 %ActiveBits2677, %3973 %3975 = icmp eq i64 %3974, 0 br i1 %3975, label %ComputeEnd2675, label %ComputeLoop2674, !amdgpu.uniform !42 ComputeEnd2675: ; preds = %ComputeLoop2674 %.lcssa3982 = phi i32 [ %3971, %ComputeLoop2674 ] %3976 = trunc i64 %2514 to i32 %3977 = lshr i64 %2514, 32 %3978 = trunc i64 %3977 to i32 %3979 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3976, i32 0) %3980 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3978, i32 %3979) %3981 = icmp eq i32 %3980, 0 %3982 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3981) %3983 = extractvalue { i1, i64 } %3982, 0 %3984 = extractvalue { i1, i64 } %3982, 1 br i1 %3983, label %2515, label %2517 ComputeLoop2678: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit1982, %ComputeLoop2678 %Accumulator2680 = phi i32 [ %3988, %ComputeLoop2678 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit1982 ] %ActiveBits2681 = phi i64 [ %3991, %ComputeLoop2678 ], [ %2612, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit1982 ] %3985 = call i64 @llvm.cttz.i64(i64 %ActiveBits2681, i1 true) %3986 = trunc i64 %3985 to i32 %3987 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i1973, i32 %3986) %3988 = and i32 %Accumulator2680, %3987 %3989 = shl i64 1, %3985 %3990 = xor i64 %3989, -1 %3991 = and i64 %ActiveBits2681, %3990 %3992 = icmp eq i64 %3991, 0 br i1 %3992, label %ComputeEnd2679, label %ComputeLoop2678, !amdgpu.uniform !42 ComputeEnd2679: ; preds = %ComputeLoop2678 %.lcssa3972 = phi i32 [ %3988, %ComputeLoop2678 ] %3993 = trunc i64 %2612 to i32 %3994 = lshr i64 %2612, 32 %3995 = trunc i64 %3994 to i32 %3996 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3993, i32 0) %3997 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3995, i32 %3996) %3998 = icmp eq i32 %3997, 0 %3999 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3998) %4000 = extractvalue { i1, i64 } %3999, 0 %4001 = extractvalue { i1, i64 } %3999, 1 br i1 %4000, label %2613, label %2616 ComputeLoop2682: ; preds = %for.cond.i.i.i1986, %ComputeLoop2682 %Accumulator2684 = phi i32 [ %4006, %ComputeLoop2682 ], [ 0, %for.cond.i.i.i1986 ] %OldValuePhi2685 = phi i32 [ %4005, %ComputeLoop2682 ], [ poison, %for.cond.i.i.i1986 ] %ActiveBits2686 = phi i64 [ %4009, %ComputeLoop2682 ], [ %2625, %for.cond.i.i.i1986 ] %4002 = call i64 @llvm.cttz.i64(i64 %ActiveBits2686, i1 true) %4003 = trunc i64 %4002 to i32 %4004 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i1998, i32 %4003) %4005 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2684, i32 %4003, i32 %OldValuePhi2685) %4006 = or i32 %Accumulator2684, %4004 %4007 = shl i64 1, %4002 %4008 = xor i64 %4007, -1 %4009 = and i64 %ActiveBits2686, %4008 %4010 = icmp eq i64 %4009, 0 br i1 %4010, label %ComputeEnd2683, label %ComputeLoop2682, !amdgpu.uniform !42 ComputeEnd2683: ; preds = %ComputeLoop2682 %.lcssa3967 = phi i32 [ %4005, %ComputeLoop2682 ] %.lcssa3966 = phi i32 [ %4006, %ComputeLoop2682 ] %div8.i.i.i.i.i1994 = lshr i32 %spec.store.select.i.i.i1993, 5 %idxprom.i.i.i.i.i1995 = zext nneg i32 %div8.i.i.i.i.i1994 to i64 %4011 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i1995 %4012 = trunc i64 %2625 to i32 %4013 = lshr i64 %2625, 32 %4014 = trunc i64 %4013 to i32 %4015 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %4012, i32 0) %4016 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %4014, i32 %4015) %4017 = icmp eq i32 %4016, 0 %4018 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %4017) %4019 = extractvalue { i1, i64 } %4018, 0 %4020 = extractvalue { i1, i64 } %4018, 1 br i1 %4019, label %2626, label %2628 Flow3392: ; preds = %2646, %if.then.i.i.i.i2004 %4021 = phi i1 [ false, %2646 ], [ true, %if.then.i.i.i.i2004 ] br i1 %4021, label %if.end14.i.i.i2073, label %Flow3393, !amdgpu.uniform !42 ComputeLoop2687: ; preds = %if.then12.i.i.i2009, %ComputeLoop2687 %Accumulator2689 = phi i32 [ %4025, %ComputeLoop2687 ], [ -1, %if.then12.i.i.i2009 ] %ActiveBits2690 = phi i64 [ %4028, %ComputeLoop2687 ], [ %2643, %if.then12.i.i.i2009 ] %4022 = call i64 @llvm.cttz.i64(i64 %ActiveBits2690, i1 true) %4023 = trunc i64 %4022 to i32 %4024 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i2015, i32 %4023) %4025 = and i32 %Accumulator2689, %4024 %4026 = shl i64 1, %4022 %4027 = xor i64 %4026, -1 %4028 = and i64 %ActiveBits2690, %4027 %4029 = icmp eq i64 %4028, 0 br i1 %4029, label %ComputeEnd2688, label %ComputeLoop2687, !amdgpu.uniform !42 ComputeEnd2688: ; preds = %ComputeLoop2687 %.lcssa3968 = phi i32 [ %4025, %ComputeLoop2687 ] %4030 = trunc i64 %2643 to i32 %4031 = lshr i64 %2643, 32 %4032 = trunc i64 %4031 to i32 %4033 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %4030, i32 0) %4034 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %4032, i32 %4033) %4035 = icmp eq i32 %4034, 0 %4036 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %4035) %4037 = extractvalue { i1, i64 } %4036, 0 %4038 = extractvalue { i1, i64 } %4036, 1 br i1 %4037, label %2644, label %2646 ComputeLoop2691: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit2081, %ComputeLoop2691 %Accumulator2693 = phi i32 [ %4042, %ComputeLoop2691 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit2081 ] %ActiveBits2694 = phi i64 [ %4045, %ComputeLoop2691 ], [ %2698, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit2081 ] %4039 = call i64 @llvm.cttz.i64(i64 %ActiveBits2694, i1 true) %4040 = trunc i64 %4039 to i32 %4041 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i2072, i32 %4040) %4042 = and i32 %Accumulator2693, %4041 %4043 = shl i64 1, %4039 %4044 = xor i64 %4043, -1 %4045 = and i64 %ActiveBits2694, %4044 %4046 = icmp eq i64 %4045, 0 br i1 %4046, label %ComputeEnd2692, label %ComputeLoop2691, !amdgpu.uniform !42 ComputeEnd2692: ; preds = %ComputeLoop2691 %.lcssa = phi i32 [ %4042, %ComputeLoop2691 ] %4047 = trunc i64 %2698 to i32 %4048 = lshr i64 %2698, 32 %4049 = trunc i64 %4048 to i32 %4050 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %4047, i32 0) %4051 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %4049, i32 %4050) %4052 = icmp eq i32 %4051, 0 %4053 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %4052) %4054 = extractvalue { i1, i64 } %4053, 0 %4055 = extractvalue { i1, i64 } %4053, 1 br i1 %4054, label %2699, label %2702 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.usub.sat.i64(i64, i64) #2 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) declare void @llvm.assume(i1 noundef) #10 ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write) declare void @llvm.memset.p0.i64(ptr writeonly captures(none), i8, i64, i1 immarg) #11 ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) declare void @llvm.memcpy.p0.p0.i64(ptr noalias writeonly captures(none), ptr noalias readonly captures(none), i64, i1 immarg) #12 ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i8 @llvm.abs.i8(i8, i1 immarg) #2 ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) declare void @llvm.memcpy.p0.p5.i64(ptr noalias writeonly captures(none), ptr addrspace(5) noalias readonly captures(none), i64, i1 immarg) #12 ; Function Attrs: convergent mustprogress nofree norecurse nounwind define internal fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIiEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef writeonly captures(none) %Ctx, i32 noundef range(i32 -1, 256) %LHS, i32 noundef range(i32 -1, 241) %RHS, ptr noundef %LHSStr, ptr noundef %RHSStr, i32 range(i32 53, 188) %Loc.coerce1) unnamed_addr #8 comdat { entry: %buffer.i.i.i = alloca %"class.__llvm_libc_22_0_0_git::IntegerToString", align 8, addrspace(5) %buffer.i.i.i91.i = alloca %"class.__llvm_libc_22_0_0_git::IntegerToString", align 8, addrspace(5) %buffer.i.i.i.i = alloca %"class.__llvm_libc_22_0_0_git::IntegerToString", align 8, addrspace(5) %cmp = icmp eq i32 %LHS, %RHS %cmp.inv = xor i1 %cmp, true %0 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.inv) %1 = extractvalue { i1, i64 } %0, 0 %2 = extractvalue { i1, i64 } %0, 1 br i1 %1, label %if.end.i, label %Flow3909 if.end.i: ; preds = %entry store i8 1, ptr %Ctx, align 1, !tbaa !65 %spec.select.i = tail call i64 @llvm.usub.sat.i64(i64 sub (i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.9, i64 8) to ptr) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.9 to ptr) to i64)), i64 2) %cmp.i.not.i.i = icmp uge i64 sub (i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.9, i64 8) to ptr) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.9 to ptr) to i64)), 3 br i1 %cmp.i.not.i.i, label %if.then.i.i.i, label %Flow3908, !amdgpu.uniform !42 if.then.i.i.i: ; preds = %if.end.i %inc.i.i.i.i = add nuw i64 %spec.select.i, 1 %cmp2.i.i.i.i = icmp ult i64 %spec.select.i, 1676976733973595600 br i1 %cmp2.i.i.i.i, label %if.then3.i.i.i.i, label %if.end4.i.i.i.i, !amdgpu.uniform !42 if.then3.i.i.i.i: ; preds = %if.then.i.i.i %mul.i.i.i.i = mul nuw i64 %inc.i.i.i.i, 11 %div18.i.i.i.i = lshr i64 %mul.i.i.i.i, 3 br label %if.end4.i.i.i.i, !amdgpu.uniform !42 Flow3908: ; preds = %Flow3907, %if.end.i %3 = phi ptr [ %cond.i.i, %Flow3907 ], [ addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr), %if.end.i ] br label %if.end.i.i.i, !amdgpu.uniform !42 if.end4.i.i.i.i: ; preds = %if.then3.i.i.i.i, %if.then.i.i.i %new_capacity.addr.0.i.i.i.i = phi i64 [ %div18.i.i.i.i, %if.then3.i.i.i.i ], [ %inc.i.i.i.i, %if.then.i.i.i ] %sub.i.i = add i64 %new_capacity.addr.0.i.i.i.i, 7 %div2.i.i = and i64 %sub.i.i, -8 %4 = load ptr, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %add.ptr.i.i = getelementptr inbounds nuw i8, ptr %4, i64 %div2.i.i store ptr %add.ptr.i.i, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %sub.ptr.lhs.cast.i.i = ptrtoint ptr %add.ptr.i.i to i64 %sub.ptr.sub.i.i = sub i64 %sub.ptr.lhs.cast.i.i, ptrtoint (ptr addrspacecast (ptr addrspace(1) @_ZN12_GLOBAL__N_16memoryE to ptr) to i64) %cmp.i.i = icmp ugt i64 %sub.ptr.sub.i.i, 65335 %cond.i.i = select i1 %cmp.i.i, ptr null, ptr %4 %5 = icmp ne i64 0, %spec.select.i br i1 %5, label %loadstoreloop2193.preheader, label %Flow3907, !amdgpu.uniform !42 loadstoreloop2193.preheader: ; preds = %if.end4.i.i.i.i br label %loadstoreloop2193, !amdgpu.uniform !42 Flow3907: ; preds = %Flow3906, %if.end4.i.i.i.i br label %Flow3908, !amdgpu.uniform !42 loadstoreloop2193: ; preds = %loadstoreloop2193.preheader, %loadstoreloop2193 %6 = phi i64 [ %8, %loadstoreloop2193 ], [ 0, %loadstoreloop2193.preheader ] %7 = getelementptr i8, ptr %4, i64 %6 store i8 0, ptr %7, align 1 %8 = add i64 %6, 1 %9 = icmp uge i64 %8, %spec.select.i br i1 %9, label %Flow3906, label %loadstoreloop2193, !amdgpu.uniform !42 Flow3906: ; preds = %loadstoreloop2193 br label %Flow3907, !amdgpu.uniform !42 Flow3909: ; preds = %2738, %entry call void @llvm.amdgcn.end.cf.i64(i64 %2) br label %_ZZN22__llvm_libc_22_0_0_git7testing8internal4testIiEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationEENKUlbNS_3cpp11string_viewEE_clEbSB_.exit, !amdgpu.uniform !42 if.end.i.i.i: ; preds = %Flow3908 %cmp.not.i6.i.i.i = icmp ne ptr %3, addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr) br i1 %cmp.not.i6.i.i.i, label %if.then.i.i.i.i, label %_ZN22__llvm_libc_22_0_0_git3cpp6stringC2Emc.exit.i, !amdgpu.uniform !42 if.then.i.i.i.i: ; preds = %if.end.i.i.i %arrayidx.i.i.i.i = getelementptr inbounds nuw i8, ptr %3, i64 %spec.select.i store i8 0, ptr %arrayidx.i.i.i.i, align 1, !tbaa !57 br label %_ZN22__llvm_libc_22_0_0_git3cpp6stringC2Emc.exit.i, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git3cpp6stringC2Emc.exit.i: ; preds = %if.then.i.i.i.i, %if.end.i.i.i %10 = icmp ne i64 0, %spec.select.i br i1 %10, label %loadstoreloop2191.preheader, label %Flow3905, !amdgpu.uniform !42 loadstoreloop2191.preheader: ; preds = %_ZN22__llvm_libc_22_0_0_git3cpp6stringC2Emc.exit.i br label %loadstoreloop2191, !amdgpu.uniform !42 Flow3905: ; preds = %Flow3904, %_ZN22__llvm_libc_22_0_0_git3cpp6stringC2Emc.exit.i br label %split2190, !amdgpu.uniform !42 loadstoreloop2191: ; preds = %loadstoreloop2191.preheader, %loadstoreloop2191 %11 = phi i64 [ %13, %loadstoreloop2191 ], [ 0, %loadstoreloop2191.preheader ] %12 = getelementptr i8, ptr %3, i64 %11 store i8 32, ptr %12, align 1 %13 = add i64 %11, 1 %14 = icmp uge i64 %13, %spec.select.i br i1 %14, label %Flow3904, label %loadstoreloop2191, !amdgpu.uniform !42 Flow3904: ; preds = %loadstoreloop2191 br label %Flow3905, !amdgpu.uniform !42 split2190: ; preds = %Flow3905 %15 = tail call i32 @llvm.amdgcn.mbcnt.lo(i32 -1, i32 0) %16 = tail call noundef i32 @llvm.amdgcn.mbcnt.hi(i32 -1, i32 %15) %sh_prom.i.i.i.i = zext i32 %16 to i64 br label %for.cond.i.i1.i, !amdgpu.uniform !42 for.cond.i.i1.i: ; preds = %split2190, %Flow3903 %17 = phi i32 [ %55, %Flow3903 ], [ poison, %split2190 ] %18 = phi i64 [ %56, %Flow3903 ], [ poison, %split2190 ] %19 = phi i32 [ %57, %Flow3903 ], [ poison, %split2190 ] %retval.sroa.6.0.i.i.i = phi i32 [ %60, %Flow3903 ], [ undef, %split2190 ] %retval.sroa.2.0.i.i.i = phi i64 [ %59, %Flow3903 ], [ undef, %split2190 ] %retval.sroa.8.0.i.i.i = phi i32 [ %58, %Flow3903 ], [ undef, %split2190 ] %index.0.i.i.i = phi i32 [ %62, %Flow3903 ], [ 0, %split2190 ] %20 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i = icmp ult i32 %index.0.i.i.i, %20 %spec.store.select.i.i.i = select i1 %cmp.not.i.i.i, i32 %index.0.i.i.i, i32 0 %21 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %22 = and i32 %spec.store.select.i.i.i, 31 %23 = lshr i64 %21, %sh_prom.i.i.i.i %24 = trunc i64 %23 to i32 %conv4.i.i.i.i.i = and i32 %24, 1 %shl.i.i.i.i.i = shl nuw i32 %conv4.i.i.i.i.i, %22 %25 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop, !amdgpu.uniform !42 26: ; preds = %ComputeEnd %sunkaddr = getelementptr inbounds i8, ptr addrspace(1) %2977, i64 40 %27 = atomicrmw or ptr addrspace(1) %sunkaddr, i32 %.lcssa4222 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %28, !amdgpu.uniform !42 28: ; preds = %26, %ComputeEnd %29 = phi i32 [ %27, %26 ], [ poison, %ComputeEnd ] call void @llvm.amdgcn.end.cf.i64(i64 %2986) %30 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %29) %31 = or i32 %30, %.lcssa4223 %shl5.i.i.i.i.i = shl nuw i32 1, %22 %and.i.i.i.i.i = and i32 %shl5.i.i.i.i.i, %31 %tobool3.i.i.i.i = icmp ne i32 %and.i.i.i.i.i, 0 %32 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i) %and.i.i.i.i.i.i = and i64 %32, %21 %cmp.i.not.i.i.i = icmp ne i64 %21, %and.i.i.i.i.i.i br i1 %cmp.i.not.i.i.i, label %if.then.i.i.i.i2, label %Flow3902, !amdgpu.uniform !42 if.then.i.i.i.i2: ; preds = %28 fence syncscope("agent") acquire %33 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %34 = extractelement <2 x i64> %33, i32 0 %35 = inttoptr i64 %34 to ptr %36 = extractelement <2 x i64> %33, i32 1 %37 = inttoptr i64 %36 to ptr %idxprom.i.i.i.i = zext i32 %spec.store.select.i.i.i to i64 %arrayidx.i.i.i.i3 = getelementptr inbounds nuw i32, ptr %35, i64 %idxprom.i.i.i.i, !amdgpu.uniform !42 %38 = load atomic i32, ptr %arrayidx.i.i.i.i3 monotonic, align 4 %39 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %38) %arrayidx.i45.i.i.i = getelementptr inbounds nuw i32, ptr %37, i64 %idxprom.i.i.i.i, !amdgpu.uniform !42 %40 = load atomic i32, ptr %arrayidx.i45.i.i.i monotonic, align 4 %41 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %40) %cmp.i46.not.i.i.i = icmp ne i32 %39, %41 br i1 %cmp.i46.not.i.i.i, label %if.then12.i.i.i, label %Flow3900, !amdgpu.uniform !42 if.then12.i.i.i: ; preds = %if.then.i.i.i.i2 fence syncscope("agent") release %42 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %21, i1 true) %iszero.i.i.i.i.i.i.i = icmp ne i64 %21, 0 %cmp2.i.i.i.i.i.i = icmp eq i64 %42, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i = select i1 %iszero.i.i.i.i.i.i.i, i1 %cmp2.i.i.i.i.i.i, i1 false %conv4.i.i51.i.i.i = zext i1 %cmp.i.i.i.i.i.i to i32 %shl.i.i52.i.i.i = shl nuw i32 %conv4.i.i51.i.i.i, %22 %xor.i.i.i.i.i = xor i32 %shl.i.i52.i.i.i, -1 %43 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2428, !amdgpu.uniform !42 44: ; preds = %ComputeEnd2429 %sunkaddr3286 = getelementptr inbounds i8, ptr addrspace(1) %2977, i64 40 %45 = atomicrmw and ptr addrspace(1) %sunkaddr3286, i32 %.lcssa4224 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %46, !amdgpu.uniform !42 46: ; preds = %44, %ComputeEnd2429 call void @llvm.amdgcn.end.cf.i64(i64 %3004) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3900, !amdgpu.uniform !42 if.end14.i.i.i: ; preds = %Flow3900 %47 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %21, i1 true) %iszero.i.i.i.i.i.i = icmp ne i64 %21, 0 %cmp2.i.i.i.i.i = icmp eq i64 %47, %sh_prom.i.i.i.i %cmp.i.i.i.i.i = select i1 %iszero.i.i.i.i.i.i, i1 %cmp2.i.i.i.i.i, i1 false %48 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i) %49 = extractvalue { i1, i64 } %48, 0 %50 = extractvalue { i1, i64 } %48, 1 br i1 %49, label %if.then16.i.i.i, label %if.end22.i.i.i if.then16.i.i.i: ; preds = %if.end14.i.i.i %51 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i = getelementptr inbounds nuw %"struct.rpc::Header", ptr %51, i64 %idxprom.i.i.i.i, i32 1 store i32 1660944387, ptr %opcode.i.i.i, align 8, !tbaa !77 %arrayidx21.i.i.i = getelementptr inbounds nuw %"struct.rpc::Header", ptr %51, i64 %idxprom.i.i.i.i store i64 %21, ptr %arrayidx21.i.i.i, align 8, !tbaa !80 br label %if.end22.i.i.i, !amdgpu.uniform !42 Flow3901: ; preds = %if.end22.i.i.i, %Flow3900 %52 = phi i32 [ %39, %if.end22.i.i.i ], [ %retval.sroa.8.0.i.i.i, %Flow3900 ] %53 = phi i64 [ %21, %if.end22.i.i.i ], [ %retval.sroa.2.0.i.i.i, %Flow3900 ] %54 = phi i32 [ %spec.store.select.i.i.i, %if.end22.i.i.i ], [ %retval.sroa.6.0.i.i.i, %Flow3900 ] br label %cleanup26.i.i.i, !amdgpu.uniform !42 if.end22.i.i.i: ; preds = %if.then16.i.i.i, %if.end14.i.i.i call void @llvm.amdgcn.end.cf.i64(i64 %50) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3901, !amdgpu.uniform !42 Flow3902: ; preds = %cleanup26.i.i.i, %28 %55 = phi i32 [ %54, %cleanup26.i.i.i ], [ %17, %28 ] %56 = phi i64 [ %53, %cleanup26.i.i.i ], [ %18, %28 ] %57 = phi i32 [ %52, %cleanup26.i.i.i ], [ %19, %28 ] %58 = phi i32 [ %52, %cleanup26.i.i.i ], [ %retval.sroa.8.0.i.i.i, %28 ] %59 = phi i64 [ %53, %cleanup26.i.i.i ], [ %retval.sroa.2.0.i.i.i, %28 ] %60 = phi i32 [ %54, %cleanup26.i.i.i ], [ %retval.sroa.6.0.i.i.i, %28 ] %61 = phi i1 [ %cmp.i46.not.i.i.i, %cleanup26.i.i.i ], [ true, %28 ] br i1 %61, label %for.inc.i.i.i, label %Flow3903, !amdgpu.uniform !42 cleanup26.i.i.i: ; preds = %Flow3901 br label %Flow3902, !amdgpu.uniform !42 for.inc.i.i.i: ; preds = %Flow3902 %inc.i.i.i = add i32 %spec.store.select.i.i.i, 1 br label %Flow3903, !amdgpu.uniform !42 Flow3903: ; preds = %for.inc.i.i.i, %Flow3902 %62 = phi i32 [ %inc.i.i.i, %for.inc.i.i.i ], [ poison, %Flow3902 ] %63 = phi i1 [ false, %for.inc.i.i.i ], [ true, %Flow3902 ] br i1 %63, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i, label %for.cond.i.i1.i, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i: ; preds = %Flow3903 %.lcssa4227 = phi i32 [ %55, %Flow3903 ] %.lcssa4226 = phi i64 [ %56, %Flow3903 ] %.lcssa4225 = phi i32 [ %57, %Flow3903 ] fence acquire %64 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i = shl i32 %.lcssa4227, 6 %idxprom.i19.i.i.i.i.i = zext i32 %mul.i.i.i.i.i.i to i64 %arrayidx.i20.i.i.i.i.i = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %64, i64 %idxprom.i19.i.i.i.i.i %arrayidx.i22.i.i.i.i.i = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i, i64 %sh_prom.i.i.i.i store i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.2 to ptr), i64 81) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.2 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i = tail call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.2 to ptr), i64 81) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.2 to ptr) to i64)), i64 56) %65 = and i64 %spec.select.i.i.i.i.i.i.i, 15 %66 = sub i64 %spec.select.i.i.i.i.i.i.i, %65 %67 = icmp ne i64 %66, 0 br i1 %67, label %loop-memcpy-expansion2321.preheader, label %Flow3899, !amdgpu.uniform !42 loop-memcpy-expansion2321.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i %68 = shl nuw nsw i64 %sh_prom.i.i.i.i, 6 %69 = add nuw nsw i64 %68, 8 %scevgep3249 = getelementptr i8, ptr %64, i64 %69 %70 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i, 6 %scevgep3250 = getelementptr i8, ptr %scevgep3249, i64 %70 br label %loop-memcpy-expansion2321, !amdgpu.uniform !42 Flow3899: ; preds = %Flow3898, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i br label %loop-memcpy-residual-header2324, !amdgpu.uniform !42 loop-memcpy-expansion2321: ; preds = %loop-memcpy-expansion2321.preheader, %loop-memcpy-expansion2321 %loop-index2322 = phi i64 [ %73, %loop-memcpy-expansion2321 ], [ 0, %loop-memcpy-expansion2321.preheader ] %71 = getelementptr i8, ptr addrspace(4) @.str.2, i64 %loop-index2322, !amdgpu.uniform !42 %72 = load <4 x i32>, ptr addrspace(4) %71, align 1 %scevgep3251 = getelementptr i8, ptr %scevgep3250, i64 %loop-index2322 store <4 x i32> %72, ptr %scevgep3251, align 1 %73 = add i64 %loop-index2322, 16 %74 = icmp uge i64 %73, %66 br i1 %74, label %Flow3898, label %loop-memcpy-expansion2321, !amdgpu.uniform !42 Flow3897: ; preds = %Flow3895, %Flow3896 %75 = phi i64 [ %2896, %Flow3895 ], [ %2893, %Flow3896 ] %76 = phi i64 [ %2898, %Flow3895 ], [ %2894, %Flow3896 ] br label %post-loop-memcpy-expansion2320, !amdgpu.uniform !42 loop-memcpy-residual2323: ; preds = %loop-memcpy-residual2323.preheader, %loop-memcpy-residual2323 %residual-loop-index2325 = phi i64 [ %78, %loop-memcpy-residual2323 ], [ 0, %loop-memcpy-residual2323.preheader ] %scevgep3248 = getelementptr i8, ptr addrspace(4) getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.2, i64 48), i64 %residual-loop-index2325, !amdgpu.uniform !42 %77 = load i8, ptr addrspace(4) %scevgep3248, align 1 %scevgep3247 = getelementptr i8, ptr %scevgep3246, i64 %residual-loop-index2325 store i8 %77, ptr %scevgep3247, align 1 %78 = add i64 %residual-loop-index2325, 1 %79 = icmp uge i64 %78, %65 br i1 %79, label %Flow3895, label %loop-memcpy-residual2323, !amdgpu.uniform !42 Flow3895: ; preds = %loop-memcpy-residual2323 br label %Flow3897, !amdgpu.uniform !42 post-loop-memcpy-expansion2320: ; preds = %Flow3897 %tobool.not.i.i.i.i.i.i = icmp eq i32 %.lcssa4225, 0 %conv.i.i.i.i.i.i = zext i1 %tobool.not.i.i.i.i.i.i to i32 fence release %80 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i = zext i32 %.lcssa4227 to i64 %arrayidx.i24.i.i.i.i.i = getelementptr inbounds nuw i32, ptr %80, i64 %idxprom.i23.i.i.i.i.i store atomic i32 %conv.i.i.i.i.i.i, ptr %arrayidx.i24.i.i.i.i.i monotonic, align 4 %81 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i = getelementptr inbounds nuw %"struct.rpc::Header", ptr %81, i64 %idxprom.i23.i.i.i.i.i, !amdgpu.uniform !42 %82 = load i64, ptr %arrayidx.i.i5.i.i, align 8, !tbaa !80 br label %while.cond.i.i.i.i, !amdgpu.uniform !42 while.cond.i.i.i.i: ; preds = %post-loop-memcpy-expansion2320, %Flow3894 %phi.broken = phi i64 [ 0, %post-loop-memcpy-expansion2320 ], [ %99, %Flow3894 ] %lsr.iv3238 = phi i64 [ %97, %Flow3894 ], [ 25, %post-loop-memcpy-expansion2320 ] %lsr.iv3233 = phi ptr addrspace(4) [ %96, %Flow3894 ], [ getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.2, i64 56), %post-loop-memcpy-expansion2320 ] %port.sroa.37.0.i.i = phi i32 [ %95, %Flow3894 ], [ %conv.i.i.i.i.i.i, %post-loop-memcpy-expansion2320 ] %idx.0.i.i.i.i = phi i64 [ %94, %Flow3894 ], [ 56, %post-loop-memcpy-expansion2320 ] %cmp.i.i.i.i = icmp ult i64 %idx.0.i.i.i.i, sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.2 to ptr), i64 81) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.2 to ptr) to i64)) %83 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i) %and.i.i.i.i6.i.i = and i64 %83, %82 %tobool.not.i.i.i.i = icmp ne i64 %and.i.i.i.i6.i.i, 0 %84 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i = getelementptr inbounds nuw i32, ptr %84, i64 %idxprom.i23.i.i.i.i.i, !amdgpu.uniform !42 %85 = load atomic i32, ptr %arrayidx.i22.i.i.i monotonic, align 4 %86 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i) %87 = extractvalue { i1, i64 } %86, 0 %88 = extractvalue { i1, i64 } %86, 1 br i1 %87, label %cond.false.i8.i.i.i.i, label %Flow3894 cond.false.i8.i.i.i.i: ; preds = %while.cond.i.i.i.i %89 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %85) %90 = icmp ne i32 %89, %port.sroa.37.0.i.i br i1 %90, label %while.body.i.i21.i.i.i.i.preheader, label %Flow3893, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i.preheader: ; preds = %cond.false.i8.i.i.i.i br label %while.body.i.i21.i.i.i.i, !amdgpu.uniform !42 Flow3893: ; preds = %Flow3892, %cond.false.i8.i.i.i.i br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i: ; preds = %while.body.i.i21.i.i.i.i.preheader, %while.body.i.i21.i.i.i.i tail call void @llvm.amdgcn.s.sleep(i32 2) %91 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i = getelementptr inbounds nuw i32, ptr %91, i64 %idxprom.i23.i.i.i.i.i, !amdgpu.uniform !42 %92 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i monotonic, align 4 %93 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %92) %cmp.i.not.i.i23.i.i.i.i = icmp eq i32 %93, %port.sroa.37.0.i.i br i1 %cmp.i.not.i.i23.i.i.i.i, label %Flow3892, label %while.body.i.i21.i.i.i.i, !amdgpu.uniform !42 Flow3892: ; preds = %while.body.i.i21.i.i.i.i br label %Flow3893, !amdgpu.uniform !42 Flow3894: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i, %while.cond.i.i.i.i %94 = phi i64 [ %add.i.i.i.i, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i ], [ poison, %while.cond.i.i.i.i ] %95 = phi i32 [ %conv.i.i26.i.i.i.i, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i ], [ poison, %while.cond.i.i.i.i ] %96 = phi ptr addrspace(4) [ %scevgep3234, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i ], [ poison, %while.cond.i.i.i.i ] %97 = phi i64 [ %lsr.iv.next3239, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i ], [ poison, %while.cond.i.i.i.i ] %98 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i ], [ true, %while.cond.i.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %88) %99 = call i64 @llvm.amdgcn.if.break.i64(i1 %98, i64 %phi.broken) %100 = call i1 @llvm.amdgcn.loop.i64(i64 %99) br i1 %100, label %cond.false.i.i.i, label %while.cond.i.i.i.i _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i: ; preds = %Flow3893 fence acquire br i1 %cmp.i.i.i.i, label %if.then.i.i.i.i.i.i.i4, label %Flow3891, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i4: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i %sub.i.i.i.i.i.i.i = sub nuw i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.2 to ptr), i64 81) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.2 to ptr) to i64)), %idx.0.i.i.i.i %spec.select.i.i.i36.i.i.i.i = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i, i64 64) %101 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %102 = and i64 %spec.select.i.i.i36.i.i.i.i, 15 %103 = sub i64 %spec.select.i.i.i36.i.i.i.i, %102 %104 = icmp ne i64 %103, 0 br i1 %104, label %loop-memcpy-expansion2327.preheader, label %Flow3890, !amdgpu.uniform !42 loop-memcpy-expansion2327.preheader: ; preds = %if.then.i.i.i.i.i.i.i4 %arrayidx.i20.i35.i.i.i.i = getelementptr %"struct.rpc::Buffer", ptr %101, i64 %idxprom.i19.i.i.i.i.i %arrayidx.i22.i38.i.i.i.i = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2327, !amdgpu.uniform !42 Flow3890: ; preds = %Flow3889, %if.then.i.i.i.i.i.i.i4 br label %loop-memcpy-residual-header2330, !amdgpu.uniform !42 loop-memcpy-expansion2327: ; preds = %loop-memcpy-expansion2327.preheader, %loop-memcpy-expansion2327 %loop-index2328 = phi i64 [ %107, %loop-memcpy-expansion2327 ], [ 0, %loop-memcpy-expansion2327.preheader ] %scevgep3235 = getelementptr i8, ptr addrspace(4) %lsr.iv3233, i64 %loop-index2328, !amdgpu.uniform !42 %105 = load <4 x i32>, ptr addrspace(4) %scevgep3235, align 1 %106 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i, i64 %loop-index2328 store <4 x i32> %105, ptr %106, align 1 %107 = add i64 %loop-index2328, 16 %108 = icmp uge i64 %107, %103 br i1 %108, label %Flow3889, label %loop-memcpy-expansion2327, !amdgpu.uniform !42 Flow3888: ; preds = %Flow3887, %loop-memcpy-residual-header2330 br label %Flow3891, !amdgpu.uniform !42 loop-memcpy-residual2329: ; preds = %loop-memcpy-residual2329.preheader, %loop-memcpy-residual2329 %residual-loop-index2331 = phi i64 [ %110, %loop-memcpy-residual2329 ], [ 0, %loop-memcpy-residual2329.preheader ] %scevgep3244 = getelementptr i8, ptr addrspace(4) %scevgep3243, i64 %residual-loop-index2331, !amdgpu.uniform !42 %109 = load i8, ptr addrspace(4) %scevgep3244, align 1 %scevgep3242 = getelementptr i8, ptr %scevgep3241, i64 %residual-loop-index2331 store i8 %109, ptr %scevgep3242, align 1 %110 = add i64 %residual-loop-index2331, 1 %111 = icmp uge i64 %110, %102 br i1 %111, label %Flow3887, label %loop-memcpy-residual2329, !amdgpu.uniform !42 Flow3887: ; preds = %loop-memcpy-residual2329 br label %Flow3888, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i: ; preds = %Flow3891 %conv.i.i26.i.i.i.i = xor i32 %port.sroa.37.0.i.i, 1 fence release %112 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i = getelementptr inbounds nuw i32, ptr %112, i64 %idxprom.i23.i.i.i.i.i store atomic i32 %conv.i.i26.i.i.i.i, ptr %arrayidx.i24.i29.i.i.i.i monotonic, align 4 %add.i.i.i.i = add i64 %idx.0.i.i.i.i, 64 %scevgep3234 = getelementptr i8, ptr addrspace(4) %lsr.iv3233, i64 64 %lsr.iv.next3239 = add i64 %lsr.iv3238, -64 br label %Flow3894, !amdgpu.uniform !42 cond.false.i.i.i: ; preds = %Flow3894 %.lcssa4221 = phi i64 [ %99, %Flow3894 ] %port.sroa.37.0.i.i.lcssa = phi i32 [ %port.sroa.37.0.i.i, %Flow3894 ] %.lcssa4220 = phi i32 [ %85, %Flow3894 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4221) %113 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa4220) %114 = icmp ne i32 %113, %port.sroa.37.0.i.i.lcssa %115 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %114) %116 = extractvalue { i1, i64 } %115, 0 %117 = extractvalue { i1, i64 } %115, 1 br i1 %116, label %while.body.i.i.i.i.preheader, label %Flow3886 while.body.i.i.i.i.preheader: ; preds = %cond.false.i.i.i br label %while.body.i.i.i.i, !amdgpu.uniform !42 Flow3886: ; preds = %Flow3885, %cond.false.i.i.i call void @llvm.amdgcn.end.cf.i64(i64 %117) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit, !amdgpu.uniform !42 while.body.i.i.i.i: ; preds = %while.body.i.i.i.i.preheader, %while.body.i.i.i.i %phi.broken3910 = phi i64 [ 0, %while.body.i.i.i.i.preheader ], [ %121, %while.body.i.i.i.i ] tail call void @llvm.amdgcn.s.sleep(i32 2) %118 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i = getelementptr inbounds nuw i32, ptr %118, i64 %idxprom.i23.i.i.i.i.i, !amdgpu.uniform !42 %119 = load atomic i32, ptr %arrayidx.i.i.i8.i.i monotonic, align 4 %120 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %119) %cmp.i.not.i.i.i.i = icmp eq i32 %120, %port.sroa.37.0.i.i.lcssa %121 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i, i64 %phi.broken3910) %122 = call i1 @llvm.amdgcn.loop.i64(i64 %121) br i1 %122, label %Flow3885, label %while.body.i.i.i.i Flow3885: ; preds = %while.body.i.i.i.i %.lcssa4219 = phi i64 [ %121, %while.body.i.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4219) br label %Flow3886, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit: ; preds = %Flow3886 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %123 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4226, i1 true) %iszero.i.i.i.i.i13.i.i = icmp ne i64 %.lcssa4226, 0 %cmp2.i.i.i.i14.i.i = icmp eq i64 %123, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i = select i1 %iszero.i.i.i.i.i13.i.i, i1 %cmp2.i.i.i.i14.i.i, i1 false %124 = and i32 %.lcssa4227, 31 %conv4.i.i.i19.i.i = zext i1 %cmp.i.i.i.i15.i.i to i32 %shl.i.i.i20.i.i = shl nuw i32 %conv4.i.i.i19.i.i, %124 %xor.i.i.i21.i.i = xor i32 %shl.i.i.i20.i.i, -1 %125 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2432, !amdgpu.uniform !42 126: ; preds = %ComputeEnd2433 %div8.i.i.i16.i.i = lshr i32 %.lcssa4227, 5 %idxprom.i.i.i17.i.i = zext nneg i32 %div8.i.i.i16.i.i to i64 %127 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i %sunkaddr3287 = getelementptr inbounds i8, ptr addrspace(1) %127, i64 40 %128 = atomicrmw and ptr addrspace(1) %sunkaddr3287, i32 %.lcssa4218 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %129, !amdgpu.uniform !42 129: ; preds = %126, %ComputeEnd2433 call void @llvm.amdgcn.end.cf.i64(i64 %3021) tail call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i1.i13, !amdgpu.uniform !42 for.cond.i.i1.i13: ; preds = %129, %Flow3884 %130 = phi i32 [ %168, %Flow3884 ], [ poison, %129 ] %131 = phi i64 [ %169, %Flow3884 ], [ poison, %129 ] %132 = phi i32 [ %170, %Flow3884 ], [ poison, %129 ] %retval.sroa.6.0.i.i.i14 = phi i32 [ %173, %Flow3884 ], [ undef, %129 ] %retval.sroa.2.0.i.i.i16 = phi i64 [ %172, %Flow3884 ], [ undef, %129 ] %retval.sroa.8.0.i.i.i17 = phi i32 [ %171, %Flow3884 ], [ undef, %129 ] %index.0.i.i.i18 = phi i32 [ %175, %Flow3884 ], [ 0, %129 ] %133 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i19 = icmp ult i32 %index.0.i.i.i18, %133 %spec.store.select.i.i.i20 = select i1 %cmp.not.i.i.i19, i32 %index.0.i.i.i18, i32 0 %134 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %135 = and i32 %spec.store.select.i.i.i20, 31 %136 = lshr i64 %134, %sh_prom.i.i.i.i %137 = trunc i64 %136 to i32 %conv4.i.i.i.i.i24 = and i32 %137, 1 %shl.i.i.i.i.i25 = shl nuw i32 %conv4.i.i.i.i.i24, %135 %138 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2436, !amdgpu.uniform !42 139: ; preds = %ComputeEnd2437 %sunkaddr3288 = getelementptr inbounds i8, ptr addrspace(1) %3031, i64 40 %140 = atomicrmw or ptr addrspace(1) %sunkaddr3288, i32 %.lcssa4212 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %141, !amdgpu.uniform !42 141: ; preds = %139, %ComputeEnd2437 %142 = phi i32 [ %140, %139 ], [ poison, %ComputeEnd2437 ] call void @llvm.amdgcn.end.cf.i64(i64 %3040) %143 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %142) %144 = or i32 %143, %.lcssa4213 %shl5.i.i.i.i.i26 = shl nuw i32 1, %135 %and.i.i.i.i.i27 = and i32 %shl5.i.i.i.i.i26, %144 %tobool3.i.i.i.i28 = icmp ne i32 %and.i.i.i.i.i27, 0 %145 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i28) %and.i.i.i.i.i.i29 = and i64 %145, %134 %cmp.i.not.i.i.i30 = icmp ne i64 %134, %and.i.i.i.i.i.i29 br i1 %cmp.i.not.i.i.i30, label %if.then.i.i.i.i31, label %Flow3883, !amdgpu.uniform !42 if.then.i.i.i.i31: ; preds = %141 fence syncscope("agent") acquire %146 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %147 = extractelement <2 x i64> %146, i32 0 %148 = inttoptr i64 %147 to ptr %149 = extractelement <2 x i64> %146, i32 1 %150 = inttoptr i64 %149 to ptr %idxprom.i.i.i.i32 = zext i32 %spec.store.select.i.i.i20 to i64 %arrayidx.i.i.i.i33 = getelementptr inbounds nuw i32, ptr %148, i64 %idxprom.i.i.i.i32, !amdgpu.uniform !42 %151 = load atomic i32, ptr %arrayidx.i.i.i.i33 monotonic, align 4 %152 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %151) %arrayidx.i45.i.i.i34 = getelementptr inbounds nuw i32, ptr %150, i64 %idxprom.i.i.i.i32, !amdgpu.uniform !42 %153 = load atomic i32, ptr %arrayidx.i45.i.i.i34 monotonic, align 4 %154 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %153) %cmp.i46.not.i.i.i35 = icmp ne i32 %152, %154 br i1 %cmp.i46.not.i.i.i35, label %if.then12.i.i.i36, label %Flow3881, !amdgpu.uniform !42 if.then12.i.i.i36: ; preds = %if.then.i.i.i.i31 fence syncscope("agent") release %155 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %134, i1 true) %iszero.i.i.i.i.i.i.i37 = icmp ne i64 %134, 0 %cmp2.i.i.i.i.i.i38 = icmp eq i64 %155, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i39 = select i1 %iszero.i.i.i.i.i.i.i37, i1 %cmp2.i.i.i.i.i.i38, i1 false %conv4.i.i51.i.i.i40 = zext i1 %cmp.i.i.i.i.i.i39 to i32 %shl.i.i52.i.i.i41 = shl nuw i32 %conv4.i.i51.i.i.i40, %135 %xor.i.i.i.i.i42 = xor i32 %shl.i.i52.i.i.i41, -1 %156 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2441, !amdgpu.uniform !42 157: ; preds = %ComputeEnd2442 %sunkaddr3289 = getelementptr inbounds i8, ptr addrspace(1) %3031, i64 40 %158 = atomicrmw and ptr addrspace(1) %sunkaddr3289, i32 %.lcssa4214 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %159, !amdgpu.uniform !42 159: ; preds = %157, %ComputeEnd2442 call void @llvm.amdgcn.end.cf.i64(i64 %3058) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3881, !amdgpu.uniform !42 if.end14.i.i.i101: ; preds = %Flow3881 %160 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %134, i1 true) %iszero.i.i.i.i.i.i102 = icmp ne i64 %134, 0 %cmp2.i.i.i.i.i103 = icmp eq i64 %160, %sh_prom.i.i.i.i %cmp.i.i.i.i.i104 = select i1 %iszero.i.i.i.i.i.i102, i1 %cmp2.i.i.i.i.i103, i1 false %161 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i104) %162 = extractvalue { i1, i64 } %161, 0 %163 = extractvalue { i1, i64 } %161, 1 br i1 %162, label %if.then16.i.i.i106, label %if.end22.i.i.i105 if.then16.i.i.i106: ; preds = %if.end14.i.i.i101 %164 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i107 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %164, i64 %idxprom.i.i.i.i32, i32 1 store i32 1660944387, ptr %opcode.i.i.i107, align 8, !tbaa !77 %arrayidx21.i.i.i108 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %164, i64 %idxprom.i.i.i.i32 store i64 %134, ptr %arrayidx21.i.i.i108, align 8, !tbaa !80 br label %if.end22.i.i.i105, !amdgpu.uniform !42 Flow3882: ; preds = %if.end22.i.i.i105, %Flow3881 %165 = phi i32 [ %152, %if.end22.i.i.i105 ], [ %retval.sroa.8.0.i.i.i17, %Flow3881 ] %166 = phi i64 [ %134, %if.end22.i.i.i105 ], [ %retval.sroa.2.0.i.i.i16, %Flow3881 ] %167 = phi i32 [ %spec.store.select.i.i.i20, %if.end22.i.i.i105 ], [ %retval.sroa.6.0.i.i.i14, %Flow3881 ] br label %cleanup26.i.i.i43, !amdgpu.uniform !42 if.end22.i.i.i105: ; preds = %if.then16.i.i.i106, %if.end14.i.i.i101 call void @llvm.amdgcn.end.cf.i64(i64 %163) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3882, !amdgpu.uniform !42 Flow3883: ; preds = %cleanup26.i.i.i43, %141 %168 = phi i32 [ %167, %cleanup26.i.i.i43 ], [ %130, %141 ] %169 = phi i64 [ %166, %cleanup26.i.i.i43 ], [ %131, %141 ] %170 = phi i32 [ %165, %cleanup26.i.i.i43 ], [ %132, %141 ] %171 = phi i32 [ %165, %cleanup26.i.i.i43 ], [ %retval.sroa.8.0.i.i.i17, %141 ] %172 = phi i64 [ %166, %cleanup26.i.i.i43 ], [ %retval.sroa.2.0.i.i.i16, %141 ] %173 = phi i32 [ %167, %cleanup26.i.i.i43 ], [ %retval.sroa.6.0.i.i.i14, %141 ] %174 = phi i1 [ %cmp.i46.not.i.i.i35, %cleanup26.i.i.i43 ], [ true, %141 ] br i1 %174, label %for.inc.i.i.i48, label %Flow3884, !amdgpu.uniform !42 cleanup26.i.i.i43: ; preds = %Flow3882 br label %Flow3883, !amdgpu.uniform !42 for.inc.i.i.i48: ; preds = %Flow3883 %inc.i.i.i53 = add i32 %spec.store.select.i.i.i20, 1 br label %Flow3884, !amdgpu.uniform !42 Flow3884: ; preds = %for.inc.i.i.i48, %Flow3883 %175 = phi i32 [ %inc.i.i.i53, %for.inc.i.i.i48 ], [ poison, %Flow3883 ] %176 = phi i1 [ false, %for.inc.i.i.i48 ], [ true, %Flow3883 ] br i1 %176, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i54, label %for.cond.i.i1.i13, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i54: ; preds = %Flow3884 %.lcssa4217 = phi i32 [ %168, %Flow3884 ] %.lcssa4216 = phi i64 [ %169, %Flow3884 ] %.lcssa4215 = phi i32 [ %170, %Flow3884 ] fence acquire %177 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i55 = shl i32 %.lcssa4217, 6 %idxprom.i19.i.i.i.i.i56 = zext i32 %mul.i.i.i.i.i.i55 to i64 %arrayidx.i20.i.i.i.i.i57 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %177, i64 %idxprom.i19.i.i.i.i.i56 %arrayidx.i22.i.i.i.i.i58 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i57, i64 %sh_prom.i.i.i.i store i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.6.10 to ptr), i64 1) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.6.10 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i58, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i59 = tail call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.6.10 to ptr), i64 1) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.6.10 to ptr) to i64)), i64 56) %178 = and i64 %spec.select.i.i.i.i.i.i.i59, 15 %179 = sub i64 %spec.select.i.i.i.i.i.i.i59, %178 %180 = icmp ne i64 %179, 0 br i1 %180, label %loop-memcpy-expansion2333.preheader, label %Flow3880, !amdgpu.uniform !42 loop-memcpy-expansion2333.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i54 %181 = add nuw nsw i64 %75, 8 %scevgep3230 = getelementptr i8, ptr %177, i64 %181 %182 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i56, 6 %scevgep3231 = getelementptr i8, ptr %scevgep3230, i64 %182 br label %loop-memcpy-expansion2333, !amdgpu.uniform !42 Flow3880: ; preds = %Flow3879, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i54 br label %loop-memcpy-residual-header2336, !amdgpu.uniform !42 loop-memcpy-expansion2333: ; preds = %loop-memcpy-expansion2333.preheader, %loop-memcpy-expansion2333 %loop-index2334 = phi i64 [ %185, %loop-memcpy-expansion2333 ], [ 0, %loop-memcpy-expansion2333.preheader ] %183 = getelementptr i8, ptr addrspace(4) @.str.6.10, i64 %loop-index2334, !amdgpu.uniform !42 %184 = load <4 x i32>, ptr addrspace(4) %183, align 1 %scevgep3232 = getelementptr i8, ptr %scevgep3231, i64 %loop-index2334 store <4 x i32> %184, ptr %scevgep3232, align 1 %185 = add i64 %loop-index2334, 16 %186 = icmp uge i64 %185, %179 br i1 %186, label %Flow3879, label %loop-memcpy-expansion2333, !amdgpu.uniform !42 Flow3878: ; preds = %Flow3876, %Flow3877 %187 = phi i64 [ %2906, %Flow3876 ], [ %2903, %Flow3877 ] br label %post-loop-memcpy-expansion2332, !amdgpu.uniform !42 loop-memcpy-residual2335: ; preds = %loop-memcpy-residual2335.preheader, %loop-memcpy-residual2335 %residual-loop-index2337 = phi i64 [ %189, %loop-memcpy-residual2335 ], [ 0, %loop-memcpy-residual2335.preheader ] %scevgep3229 = getelementptr i8, ptr addrspace(4) @.str.6.10, i64 %residual-loop-index2337, !amdgpu.uniform !42 %188 = load i8, ptr addrspace(4) %scevgep3229, align 1 %scevgep3228 = getelementptr i8, ptr %scevgep3227, i64 %residual-loop-index2337 store i8 %188, ptr %scevgep3228, align 1 %189 = add i64 %residual-loop-index2337, 1 %190 = icmp uge i64 %189, %178 br i1 %190, label %Flow3876, label %loop-memcpy-residual2335, !amdgpu.uniform !42 Flow3876: ; preds = %loop-memcpy-residual2335 br label %Flow3878, !amdgpu.uniform !42 post-loop-memcpy-expansion2332: ; preds = %Flow3878 %tobool.not.i.i.i.i.i.i61 = icmp eq i32 %.lcssa4215, 0 %conv.i.i.i.i.i.i62 = zext i1 %tobool.not.i.i.i.i.i.i61 to i32 fence release %191 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i63 = zext i32 %.lcssa4217 to i64 %arrayidx.i24.i.i.i.i.i64 = getelementptr inbounds nuw i32, ptr %191, i64 %idxprom.i23.i.i.i.i.i63 store atomic i32 %conv.i.i.i.i.i.i62, ptr %arrayidx.i24.i.i.i.i.i64 monotonic, align 4 %192 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i65 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %192, i64 %idxprom.i23.i.i.i.i.i63, !amdgpu.uniform !42 %193 = load i64, ptr %arrayidx.i.i5.i.i65, align 8, !tbaa !80 br label %while.cond.i.i.i.i66, !amdgpu.uniform !42 while.cond.i.i.i.i66: ; preds = %post-loop-memcpy-expansion2332, %Flow3875 %phi.broken3911 = phi i64 [ 0, %post-loop-memcpy-expansion2332 ], [ %210, %Flow3875 ] %lsr.iv3219 = phi i64 [ %208, %Flow3875 ], [ -55, %post-loop-memcpy-expansion2332 ] %lsr.iv3214 = phi ptr addrspace(4) [ %207, %Flow3875 ], [ getelementptr (i8, ptr addrspace(4) @.str.6.10, i64 56), %post-loop-memcpy-expansion2332 ] %port.sroa.37.0.i.i67 = phi i32 [ %206, %Flow3875 ], [ %conv.i.i.i.i.i.i62, %post-loop-memcpy-expansion2332 ] %idx.0.i.i.i.i68 = phi i64 [ %205, %Flow3875 ], [ 56, %post-loop-memcpy-expansion2332 ] %cmp.i.i.i.i69 = icmp ult i64 %idx.0.i.i.i.i68, sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.6.10 to ptr), i64 1) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.6.10 to ptr) to i64)) %194 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i69) %and.i.i.i.i6.i.i70 = and i64 %194, %193 %tobool.not.i.i.i.i71 = icmp ne i64 %and.i.i.i.i6.i.i70, 0 %195 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i72 = getelementptr inbounds nuw i32, ptr %195, i64 %idxprom.i23.i.i.i.i.i63, !amdgpu.uniform !42 %196 = load atomic i32, ptr %arrayidx.i22.i.i.i72 monotonic, align 4 %197 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i71) %198 = extractvalue { i1, i64 } %197, 0 %199 = extractvalue { i1, i64 } %197, 1 br i1 %198, label %cond.false.i8.i.i.i.i73, label %Flow3875 cond.false.i8.i.i.i.i73: ; preds = %while.cond.i.i.i.i66 %200 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %196) %201 = icmp ne i32 %200, %port.sroa.37.0.i.i67 br i1 %201, label %while.body.i.i21.i.i.i.i74.preheader, label %Flow3874, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i74.preheader: ; preds = %cond.false.i8.i.i.i.i73 br label %while.body.i.i21.i.i.i.i74, !amdgpu.uniform !42 Flow3874: ; preds = %Flow3873, %cond.false.i8.i.i.i.i73 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i77, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i74: ; preds = %while.body.i.i21.i.i.i.i74.preheader, %while.body.i.i21.i.i.i.i74 tail call void @llvm.amdgcn.s.sleep(i32 2) %202 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i75 = getelementptr inbounds nuw i32, ptr %202, i64 %idxprom.i23.i.i.i.i.i63, !amdgpu.uniform !42 %203 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i75 monotonic, align 4 %204 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %203) %cmp.i.not.i.i23.i.i.i.i76 = icmp eq i32 %204, %port.sroa.37.0.i.i67 br i1 %cmp.i.not.i.i23.i.i.i.i76, label %Flow3873, label %while.body.i.i21.i.i.i.i74, !amdgpu.uniform !42 Flow3873: ; preds = %while.body.i.i21.i.i.i.i74 br label %Flow3874, !amdgpu.uniform !42 Flow3875: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i78, %while.cond.i.i.i.i66 %205 = phi i64 [ %add.i.i.i.i81, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i78 ], [ poison, %while.cond.i.i.i.i66 ] %206 = phi i32 [ %conv.i.i26.i.i.i.i79, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i78 ], [ poison, %while.cond.i.i.i.i66 ] %207 = phi ptr addrspace(4) [ %scevgep3215, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i78 ], [ poison, %while.cond.i.i.i.i66 ] %208 = phi i64 [ %lsr.iv.next3220, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i78 ], [ poison, %while.cond.i.i.i.i66 ] %209 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i78 ], [ true, %while.cond.i.i.i.i66 ] call void @llvm.amdgcn.end.cf.i64(i64 %199) %210 = call i64 @llvm.amdgcn.if.break.i64(i1 %209, i64 %phi.broken3911) %211 = call i1 @llvm.amdgcn.loop.i64(i64 %210) br i1 %211, label %cond.false.i.i.i88, label %while.cond.i.i.i.i66 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i77: ; preds = %Flow3874 fence acquire br i1 %cmp.i.i.i.i69, label %if.then.i.i.i.i.i.i.i82, label %Flow3872, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i82: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i77 %sub.i.i.i.i.i.i.i84 = sub nuw i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.6.10 to ptr), i64 1) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.6.10 to ptr) to i64)), %idx.0.i.i.i.i68 %spec.select.i.i.i36.i.i.i.i85 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i84, i64 64) %212 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %213 = and i64 %spec.select.i.i.i36.i.i.i.i85, 15 %214 = sub i64 %spec.select.i.i.i36.i.i.i.i85, %213 %215 = icmp ne i64 %214, 0 br i1 %215, label %loop-memcpy-expansion2339.preheader, label %Flow3871, !amdgpu.uniform !42 loop-memcpy-expansion2339.preheader: ; preds = %if.then.i.i.i.i.i.i.i82 %arrayidx.i20.i35.i.i.i.i86 = getelementptr %"struct.rpc::Buffer", ptr %212, i64 %idxprom.i19.i.i.i.i.i56 %arrayidx.i22.i38.i.i.i.i87 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i86, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2339, !amdgpu.uniform !42 Flow3871: ; preds = %Flow3870, %if.then.i.i.i.i.i.i.i82 br label %loop-memcpy-residual-header2342, !amdgpu.uniform !42 loop-memcpy-expansion2339: ; preds = %loop-memcpy-expansion2339.preheader, %loop-memcpy-expansion2339 %loop-index2340 = phi i64 [ %218, %loop-memcpy-expansion2339 ], [ 0, %loop-memcpy-expansion2339.preheader ] %scevgep3216 = getelementptr i8, ptr addrspace(4) %lsr.iv3214, i64 %loop-index2340, !amdgpu.uniform !42 %216 = load <4 x i32>, ptr addrspace(4) %scevgep3216, align 1 %217 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i87, i64 %loop-index2340 store <4 x i32> %216, ptr %217, align 1 %218 = add i64 %loop-index2340, 16 %219 = icmp uge i64 %218, %214 br i1 %219, label %Flow3870, label %loop-memcpy-expansion2339, !amdgpu.uniform !42 Flow3869: ; preds = %Flow3868, %loop-memcpy-residual-header2342 br label %Flow3872, !amdgpu.uniform !42 loop-memcpy-residual2341: ; preds = %loop-memcpy-residual2341.preheader, %loop-memcpy-residual2341 %residual-loop-index2343 = phi i64 [ %221, %loop-memcpy-residual2341 ], [ 0, %loop-memcpy-residual2341.preheader ] %scevgep3225 = getelementptr i8, ptr addrspace(4) %scevgep3224, i64 %residual-loop-index2343, !amdgpu.uniform !42 %220 = load i8, ptr addrspace(4) %scevgep3225, align 1 %scevgep3223 = getelementptr i8, ptr %scevgep3222, i64 %residual-loop-index2343 store i8 %220, ptr %scevgep3223, align 1 %221 = add i64 %residual-loop-index2343, 1 %222 = icmp uge i64 %221, %213 br i1 %222, label %Flow3868, label %loop-memcpy-residual2341, !amdgpu.uniform !42 Flow3868: ; preds = %loop-memcpy-residual2341 br label %Flow3869, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i78: ; preds = %Flow3872 %conv.i.i26.i.i.i.i79 = xor i32 %port.sroa.37.0.i.i67, 1 fence release %223 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i80 = getelementptr inbounds nuw i32, ptr %223, i64 %idxprom.i23.i.i.i.i.i63 store atomic i32 %conv.i.i26.i.i.i.i79, ptr %arrayidx.i24.i29.i.i.i.i80 monotonic, align 4 %add.i.i.i.i81 = add i64 %idx.0.i.i.i.i68, 64 %scevgep3215 = getelementptr i8, ptr addrspace(4) %lsr.iv3214, i64 64 %lsr.iv.next3220 = add i64 %lsr.iv3219, -64 br label %Flow3875, !amdgpu.uniform !42 cond.false.i.i.i88: ; preds = %Flow3875 %.lcssa4211 = phi i64 [ %210, %Flow3875 ] %port.sroa.37.0.i.i67.lcssa = phi i32 [ %port.sroa.37.0.i.i67, %Flow3875 ] %.lcssa4210 = phi i32 [ %196, %Flow3875 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4211) %224 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa4210) %225 = icmp ne i32 %224, %port.sroa.37.0.i.i67.lcssa %226 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %225) %227 = extractvalue { i1, i64 } %226, 0 %228 = extractvalue { i1, i64 } %226, 1 br i1 %227, label %while.body.i.i.i.i89.preheader, label %Flow3867 while.body.i.i.i.i89.preheader: ; preds = %cond.false.i.i.i88 br label %while.body.i.i.i.i89, !amdgpu.uniform !42 Flow3867: ; preds = %Flow3866, %cond.false.i.i.i88 call void @llvm.amdgcn.end.cf.i64(i64 %228) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit109, !amdgpu.uniform !42 while.body.i.i.i.i89: ; preds = %while.body.i.i.i.i89.preheader, %while.body.i.i.i.i89 %phi.broken3912 = phi i64 [ 0, %while.body.i.i.i.i89.preheader ], [ %232, %while.body.i.i.i.i89 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %229 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i90 = getelementptr inbounds nuw i32, ptr %229, i64 %idxprom.i23.i.i.i.i.i63, !amdgpu.uniform !42 %230 = load atomic i32, ptr %arrayidx.i.i.i8.i.i90 monotonic, align 4 %231 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %230) %cmp.i.not.i.i.i.i91 = icmp eq i32 %231, %port.sroa.37.0.i.i67.lcssa %232 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i91, i64 %phi.broken3912) %233 = call i1 @llvm.amdgcn.loop.i64(i64 %232) br i1 %233, label %Flow3866, label %while.body.i.i.i.i89 Flow3866: ; preds = %while.body.i.i.i.i89 %.lcssa4209 = phi i64 [ %232, %while.body.i.i.i.i89 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4209) br label %Flow3867, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit109: ; preds = %Flow3867 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %234 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4216, i1 true) %iszero.i.i.i.i.i13.i.i92 = icmp ne i64 %.lcssa4216, 0 %cmp2.i.i.i.i14.i.i93 = icmp eq i64 %234, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i94 = select i1 %iszero.i.i.i.i.i13.i.i92, i1 %cmp2.i.i.i.i14.i.i93, i1 false %235 = and i32 %.lcssa4217, 31 %conv4.i.i.i19.i.i98 = zext i1 %cmp.i.i.i.i15.i.i94 to i32 %shl.i.i.i20.i.i99 = shl nuw i32 %conv4.i.i.i19.i.i98, %235 %xor.i.i.i21.i.i100 = xor i32 %shl.i.i.i20.i.i99, -1 %236 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2445, !amdgpu.uniform !42 237: ; preds = %ComputeEnd2446 %div8.i.i.i16.i.i95 = lshr i32 %.lcssa4217, 5 %idxprom.i.i.i17.i.i96 = zext nneg i32 %div8.i.i.i16.i.i95 to i64 %238 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i96 %sunkaddr3290 = getelementptr inbounds i8, ptr addrspace(1) %238, i64 40 %239 = atomicrmw and ptr addrspace(1) %sunkaddr3290, i32 %.lcssa4208 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %240, !amdgpu.uniform !42 240: ; preds = %237, %ComputeEnd2446 call void @llvm.amdgcn.end.cf.i64(i64 %3075) tail call void @llvm.amdgcn.wave.barrier() call void @llvm.lifetime.start.p5(ptr addrspace(5) %buffer.i.i.i) #34, !noalias !109 br label %while.body.i.i.i.i.i.i, !amdgpu.uniform !42 while.body.i.i.i.i.i.i: ; preds = %240, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i %phi.broken3913 = phi i64 [ 0, %240 ], [ %308, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i ] %writer.sroa.10.0.i.i.i.i = phi i64 [ %writer.sroa.10.1.i.i.i.i, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i ], [ 0, %240 ] %value.addr.09.i.i.i.i.i.i = phi i32 [ %div.i.i.i.i.i.i.i, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i ], [ %Loc.coerce1, %240 ] br label %NodeBlock3364, !amdgpu.uniform !42 NodeBlock3364: ; preds = %while.body.i.i.i.i.i.i %div.i.i.i.i.i.i.i = udiv i32 %value.addr.09.i.i.i.i.i.i, 10 %.neg.i = call i32 @llvm.amdgcn.mul.u24.i32(i32 %div.i.i.i.i.i.i.i, i32 246) %rem.i.i.i.i.i.i.decomposed.i = add nuw nsw i32 %.neg.i, %value.addr.09.i.i.i.i.i.i %conv.i.i.i.i.i.i.i = trunc i32 %rem.i.i.i.i.i.i.decomposed.i to i8 %241 = zext i8 %conv.i.i.i.i.i.i.i to i16 %Pivot3365 = icmp sge i16 %241, 5 %242 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3365) %243 = extractvalue { i1, i64 } %242, 0 %244 = extractvalue { i1, i64 } %242, 1 br i1 %243, label %NodeBlock3362, label %Flow3865 NodeBlock3362: ; preds = %NodeBlock3364 %Pivot3363 = icmp sge i16 %241, 7 %245 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3363) %246 = extractvalue { i1, i64 } %245, 0 %247 = extractvalue { i1, i64 } %245, 1 br i1 %246, label %NodeBlock3360, label %Flow3856 NodeBlock3360: ; preds = %NodeBlock3362 %Pivot3361 = icmp sge i16 %241, 8 %248 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3361) %249 = extractvalue { i1, i64 } %248, 0 %250 = extractvalue { i1, i64 } %248, 1 br i1 %249, label %NodeBlock3358, label %Flow3852 NodeBlock3358: ; preds = %NodeBlock3360 %Pivot3359 = icmp sge i16 %241, 9 %251 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3359) %252 = extractvalue { i1, i64 } %251, 0 %253 = extractvalue { i1, i64 } %251, 1 br i1 %252, label %sw.bb9.i.i.i.i.i.i.i.i, label %Flow3850 Flow3856: ; preds = %Flow3853, %NodeBlock3362 %254 = phi i8 [ %298, %Flow3853 ], [ poison, %NodeBlock3362 ] %255 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %247) %256 = extractvalue { i1, i64 } %255, 0 %257 = extractvalue { i1, i64 } %255, 1 br i1 %256, label %NodeBlock3356, label %Flow3857 NodeBlock3356: ; preds = %Flow3856 %Pivot3357 = icmp sge i16 %241, 6 %258 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3357) %259 = extractvalue { i1, i64 } %258, 0 %260 = extractvalue { i1, i64 } %258, 1 br i1 %259, label %sw.bb6.i.i.i.i.i.i.i.i, label %Flow3854 Flow3865: ; preds = %Flow3857, %NodeBlock3364 %261 = phi i8 [ %300, %Flow3857 ], [ poison, %NodeBlock3364 ] %262 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %244) %263 = extractvalue { i1, i64 } %262, 0 %264 = extractvalue { i1, i64 } %262, 1 br i1 %263, label %NodeBlock3354, label %if.then.i.i.i.i.i.i.i110 NodeBlock3354: ; preds = %Flow3865 %Pivot3355 = icmp sge i16 %241, 3 %265 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3355) %266 = extractvalue { i1, i64 } %265, 0 %267 = extractvalue { i1, i64 } %265, 1 br i1 %266, label %NodeBlock3352, label %Flow3863 NodeBlock3352: ; preds = %NodeBlock3354 %Pivot3353 = icmp sge i16 %241, 4 %268 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3353) %269 = extractvalue { i1, i64 } %268, 0 %270 = extractvalue { i1, i64 } %268, 1 br i1 %269, label %sw.bb4.i.i.i.i.i.i.i.i, label %Flow3858 Flow3863: ; preds = %Flow3859, %NodeBlock3354 %271 = phi i8 [ %301, %Flow3859 ], [ poison, %NodeBlock3354 ] %272 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %267) %273 = extractvalue { i1, i64 } %272, 0 %274 = extractvalue { i1, i64 } %272, 1 br i1 %273, label %NodeBlock, label %Flow3864 NodeBlock: ; preds = %Flow3863 %Pivot = icmp sge i16 %241, 2 %275 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot) %276 = extractvalue { i1, i64 } %275, 0 %277 = extractvalue { i1, i64 } %275, 1 br i1 %276, label %sw.bb2.i.i.i.i.i.i.i.i, label %Flow3861 Flow3861: ; preds = %sw.bb2.i.i.i.i.i.i.i.i, %NodeBlock %278 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %277) %279 = extractvalue { i1, i64 } %278, 0 %280 = extractvalue { i1, i64 } %278, 1 br i1 %279, label %LeafBlock, label %Flow3862 LeafBlock: ; preds = %Flow3861 %SwitchLeaf = icmp eq i16 %241, 1 %281 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %SwitchLeaf) %282 = extractvalue { i1, i64 } %281, 0 %283 = extractvalue { i1, i64 } %281, 1 br i1 %282, label %sw.bb1.i.i.i.i.i.i.i.i, label %Flow3860 sw.bb1.i.i.i.i.i.i.i.i: ; preds = %LeafBlock br label %Flow3860, !amdgpu.uniform !42 sw.bb2.i.i.i.i.i.i.i.i: ; preds = %NodeBlock br label %Flow3861, !amdgpu.uniform !42 Flow3858: ; preds = %sw.bb4.i.i.i.i.i.i.i.i, %NodeBlock3352 %284 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %270) %285 = extractvalue { i1, i64 } %284, 0 %286 = extractvalue { i1, i64 } %284, 1 br i1 %285, label %sw.bb3.i.i.i.i.i.i.i.i, label %Flow3859 sw.bb3.i.i.i.i.i.i.i.i: ; preds = %Flow3858 br label %Flow3859, !amdgpu.uniform !42 sw.bb4.i.i.i.i.i.i.i.i: ; preds = %NodeBlock3352 br label %Flow3858, !amdgpu.uniform !42 Flow3854: ; preds = %sw.bb6.i.i.i.i.i.i.i.i, %NodeBlock3356 %287 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %260) %288 = extractvalue { i1, i64 } %287, 0 %289 = extractvalue { i1, i64 } %287, 1 br i1 %288, label %sw.bb5.i.i.i.i.i.i.i.i, label %Flow3855 sw.bb5.i.i.i.i.i.i.i.i: ; preds = %Flow3854 br label %Flow3855, !amdgpu.uniform !42 sw.bb6.i.i.i.i.i.i.i.i: ; preds = %NodeBlock3356 br label %Flow3854, !amdgpu.uniform !42 Flow3852: ; preds = %Flow3851, %NodeBlock3360 %290 = phi i8 [ %297, %Flow3851 ], [ poison, %NodeBlock3360 ] %291 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %250) %292 = extractvalue { i1, i64 } %291, 0 %293 = extractvalue { i1, i64 } %291, 1 br i1 %292, label %sw.bb7.i.i.i.i.i.i.i.i, label %Flow3853 sw.bb7.i.i.i.i.i.i.i.i: ; preds = %Flow3852 br label %Flow3853, !amdgpu.uniform !42 Flow3850: ; preds = %sw.bb9.i.i.i.i.i.i.i.i, %NodeBlock3358 %294 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %253) %295 = extractvalue { i1, i64 } %294, 0 %296 = extractvalue { i1, i64 } %294, 1 br i1 %295, label %sw.bb8.i.i.i.i.i.i.i.i, label %Flow3851 sw.bb8.i.i.i.i.i.i.i.i: ; preds = %Flow3850 br label %Flow3851, !amdgpu.uniform !42 sw.bb9.i.i.i.i.i.i.i.i: ; preds = %NodeBlock3358 br label %Flow3850, !amdgpu.uniform !42 Flow3851: ; preds = %sw.bb8.i.i.i.i.i.i.i.i, %Flow3850 %297 = phi i8 [ 56, %sw.bb8.i.i.i.i.i.i.i.i ], [ 57, %Flow3850 ] call void @llvm.amdgcn.end.cf.i64(i64 %296) br label %Flow3852, !amdgpu.uniform !42 Flow3853: ; preds = %sw.bb7.i.i.i.i.i.i.i.i, %Flow3852 %298 = phi i8 [ 55, %sw.bb7.i.i.i.i.i.i.i.i ], [ %290, %Flow3852 ] call void @llvm.amdgcn.end.cf.i64(i64 %293) br label %Flow3856, !amdgpu.uniform !42 Flow3855: ; preds = %sw.bb5.i.i.i.i.i.i.i.i, %Flow3854 %299 = phi i8 [ 53, %sw.bb5.i.i.i.i.i.i.i.i ], [ 54, %Flow3854 ] call void @llvm.amdgcn.end.cf.i64(i64 %289) br label %Flow3857, !amdgpu.uniform !42 Flow3857: ; preds = %Flow3855, %Flow3856 %300 = phi i8 [ %299, %Flow3855 ], [ %254, %Flow3856 ] call void @llvm.amdgcn.end.cf.i64(i64 %257) br label %Flow3865, !amdgpu.uniform !42 Flow3859: ; preds = %sw.bb3.i.i.i.i.i.i.i.i, %Flow3858 %301 = phi i8 [ 51, %sw.bb3.i.i.i.i.i.i.i.i ], [ 52, %Flow3858 ] call void @llvm.amdgcn.end.cf.i64(i64 %286) br label %Flow3863, !amdgpu.uniform !42 Flow3860: ; preds = %sw.bb1.i.i.i.i.i.i.i.i, %LeafBlock %302 = phi i8 [ 49, %sw.bb1.i.i.i.i.i.i.i.i ], [ 48, %LeafBlock ] call void @llvm.amdgcn.end.cf.i64(i64 %283) br label %Flow3862, !amdgpu.uniform !42 Flow3862: ; preds = %Flow3860, %Flow3861 %303 = phi i8 [ %302, %Flow3860 ], [ 50, %Flow3861 ] call void @llvm.amdgcn.end.cf.i64(i64 %280) br label %Flow3864, !amdgpu.uniform !42 Flow3864: ; preds = %Flow3862, %Flow3863 %304 = phi i8 [ %303, %Flow3862 ], [ %271, %Flow3863 ] call void @llvm.amdgcn.end.cf.i64(i64 %274) br label %if.then.i.i.i.i.i.i.i110, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i110: ; preds = %Flow3865, %Flow3864 %retval.0.i.i.i.i.i.i.i.i = phi i8 [ %261, %Flow3865 ], [ %304, %Flow3864 ] call void @llvm.amdgcn.end.cf.i64(i64 %264) %cmp.i.i.i.i.i.i.i.i = icmp eq i64 %writer.sroa.10.0.i.i.i.i, 11 %cmp.i.i.i.i.i.i.i.i.inv = xor i1 %cmp.i.i.i.i.i.i.i.i, true br i1 %cmp.i.i.i.i.i.i.i.i.inv, label %if.then3.i.i.i.i.i.i.i, label %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i, !amdgpu.uniform !42 if.then3.i.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i.i110 %305 = trunc i64 %writer.sroa.10.0.i.i.i.i to i32 %306 = xor i32 %305, -1 %307 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i, i32 %306 %arrayidx.i.i.i.i.i.i.i.i1112700 = getelementptr i8, ptr addrspace(5) %307, i32 11 %inc.i.i.i.i.i.i.i = add i64 %writer.sroa.10.0.i.i.i.i, 1 store i8 %retval.0.i.i.i.i.i.i.i.i, ptr addrspace(5) %arrayidx.i.i.i.i.i.i.i.i1112700, align 1, !tbaa !57, !noalias !109 br label %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i: ; preds = %if.then3.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i110 %writer.sroa.10.1.i.i.i.i = phi i64 [ %inc.i.i.i.i.i.i.i, %if.then3.i.i.i.i.i.i.i ], [ 11, %if.then.i.i.i.i.i.i.i110 ] %cmp.i.i.i.i.i.i112 = icmp samesign ult i32 %value.addr.09.i.i.i.i.i.i, 10 %.not.i.i.i.i.i.i = or i1 %cmp.i.i.i.i.i.i.i.i, %cmp.i.i.i.i.i.i112 %308 = call i64 @llvm.amdgcn.if.break.i64(i1 %.not.i.i.i.i.i.i, i64 %phi.broken3913) %309 = call i1 @llvm.amdgcn.loop.i64(i64 %308) br i1 %309, label %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i, label %while.body.i.i.i.i.i.i _ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i: ; preds = %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i %writer.sroa.10.1.i.i.i.i.lcssa = phi i64 [ %writer.sroa.10.1.i.i.i.i, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i ] %.lcssa4207 = phi i64 [ %308, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i ] %cmp.i.i.i.i.i.i.i.i.lcssa = phi i1 [ %cmp.i.i.i.i.i.i.i.i, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4207) %cmp.i19.i.i.i.i = icmp ne i64 %writer.sroa.10.1.i.i.i.i.lcssa, 0 %or.cond.not.i.i.i.i = select i1 %cmp.i.i.i.i.i.i.i.i.lcssa, i1 true, i1 %cmp.i19.i.i.i.i %or.cond.not.i.i.i.i.inv = xor i1 %or.cond.not.i.i.i.i, true %310 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %or.cond.not.i.i.i.i.inv) %311 = extractvalue { i1, i64 } %310, 0 %312 = extractvalue { i1, i64 } %310, 1 br i1 %311, label %if.then3.i.i.lr.ph.i.i.i.i, label %while.end.i.i.i.i.i if.then3.i.i.lr.ph.i.i.i.i: ; preds = %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i %arrayidx.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr addrspace(5) %buffer.i.i.i, i32 10 store i8 48, ptr addrspace(5) %arrayidx.i.i.i.i.i.i.i, align 2, !tbaa !57, !noalias !109 br label %while.end.i.i.i.i.i, !amdgpu.uniform !42 while.end.i.i.i.i.i: ; preds = %if.then3.i.i.lr.ph.i.i.i.i, %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i %writer.sroa.10.4.i.i.i.i = phi i64 [ 1, %if.then3.i.i.lr.ph.i.i.i.i ], [ %writer.sroa.10.1.i.i.i.i.lcssa, %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %312) %written.i.i.i.i = getelementptr inbounds nuw i8, ptr addrspace(5) %buffer.i.i.i, i32 16 store i64 %writer.sroa.10.4.i.i.i.i, ptr addrspace(5) %written.i.i.i.i, align 8, !tbaa !91, !noalias !109 %cmp.i.not.i.i.i.i.i = icmp ne i64 %writer.sroa.10.4.i.i.i.i, 0 %313 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.not.i.i.i.i.i) %314 = extractvalue { i1, i64 } %313, 0 %315 = extractvalue { i1, i64 } %313, 1 br i1 %314, label %if.then.i.i.i.i.i.i, label %Flow3849 if.then.i.i.i.i.i.i: ; preds = %while.end.i.i.i.i.i %316 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %writer.sroa.10.4.i.i.i.i, i64 1) %ov = extractvalue { i64, i1 } %316, 1 %ov.inv = xor i1 %ov, true %317 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %ov.inv) %318 = extractvalue { i1, i64 } %317, 0 %319 = extractvalue { i1, i64 } %317, 1 br i1 %318, label %if.end.i.i.i.i.i.i.i113, label %Flow3848 if.end.i.i.i.i.i.i.i113: ; preds = %if.then.i.i.i.i.i.i %math = extractvalue { i64, i1 } %316, 0 %cmp2.i.i.i.i.i.i.i = icmp ult i64 %math, 1676976733973595601 %320 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp2.i.i.i.i.i.i.i) %321 = extractvalue { i1, i64 } %320, 0 %322 = extractvalue { i1, i64 } %320, 1 br i1 %321, label %if.then3.i.i.i.i4.i.i.i, label %if.end4.i.i.i.i.i.i.i if.then3.i.i.i.i4.i.i.i: ; preds = %if.end.i.i.i.i.i.i.i113 %mul.i.i.i.i.i.i.i = mul nuw i64 %math, 11 %div18.i.i.i.i.i.i.i = lshr i64 %mul.i.i.i.i.i.i.i, 3 br label %if.end4.i.i.i.i.i.i.i, !amdgpu.uniform !42 Flow3848: ; preds = %if.end4.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i %323 = phi ptr [ %cond.i.i.i, %if.end4.i.i.i.i.i.i.i ], [ addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr), %if.then.i.i.i.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %319) br label %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i, !amdgpu.uniform !42 if.end4.i.i.i.i.i.i.i: ; preds = %if.then3.i.i.i.i4.i.i.i, %if.end.i.i.i.i.i.i.i113 %new_capacity.addr.0.i.i.i.i.i.i.i = phi i64 [ %div18.i.i.i.i.i.i.i, %if.then3.i.i.i.i4.i.i.i ], [ %math, %if.end.i.i.i.i.i.i.i113 ] call void @llvm.amdgcn.end.cf.i64(i64 %322) %sub.i.i.i = add i64 %new_capacity.addr.0.i.i.i.i.i.i.i, 7 %div2.i.i.i = and i64 %sub.i.i.i, -8 %324 = load ptr, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %add.ptr.i.i.i = getelementptr inbounds nuw i8, ptr %324, i64 %div2.i.i.i store ptr %add.ptr.i.i.i, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %sub.ptr.lhs.cast.i.i.i114 = ptrtoint ptr %add.ptr.i.i.i to i64 %sub.ptr.sub.i.i.i115 = sub i64 %sub.ptr.lhs.cast.i.i.i114, ptrtoint (ptr addrspacecast (ptr addrspace(1) @_ZN12_GLOBAL__N_16memoryE to ptr) to i64) %cmp.i.i.i116 = icmp ugt i64 %sub.ptr.sub.i.i.i115, 65335 %cond.i.i.i = select i1 %cmp.i.i.i116, ptr null, ptr %324 br label %Flow3848, !amdgpu.uniform !42 Flow3849: ; preds = %Flow3847, %while.end.i.i.i.i.i %325 = phi ptr [ %323, %Flow3847 ], [ addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr), %while.end.i.i.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %315) br label %if.end.i.i.i.i.i.i, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i: ; preds = %Flow3848 br label %loadstoreloop, !amdgpu.uniform !42 loadstoreloop: ; preds = %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i, %loadstoreloop %phi.broken3914 = phi i64 [ 0, %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i ], [ %330, %loadstoreloop ] %326 = phi i64 [ %328, %loadstoreloop ], [ 0, %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i ] %327 = getelementptr i8, ptr %323, i64 %326 store i8 0, ptr %327, align 1 %328 = add i64 %326, 1 %329 = icmp uge i64 %328, %writer.sroa.10.4.i.i.i.i %330 = call i64 @llvm.amdgcn.if.break.i64(i1 %329, i64 %phi.broken3914) %331 = call i1 @llvm.amdgcn.loop.i64(i64 %330) br i1 %331, label %Flow3847, label %loadstoreloop Flow3847: ; preds = %loadstoreloop %.lcssa4206 = phi i64 [ %330, %loadstoreloop ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4206) br label %Flow3849, !amdgpu.uniform !42 if.end.i.i.i.i.i.i: ; preds = %Flow3849 %cmp.not.i6.i.i.i.i.i.i = icmp ne ptr %325, addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr) %332 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.not.i6.i.i.i.i.i.i) %333 = extractvalue { i1, i64 } %332, 0 %334 = extractvalue { i1, i64 } %332, 1 br i1 %333, label %if.then.i.i.i.i2.i.i.i, label %_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi.exit.i if.then.i.i.i.i2.i.i.i: ; preds = %if.end.i.i.i.i.i.i %arrayidx.i.i.i.i3.i.i.i = getelementptr inbounds nuw i8, ptr %325, i64 %writer.sroa.10.4.i.i.i.i store i8 0, ptr %arrayidx.i.i.i.i3.i.i.i, align 1, !tbaa !57, !noalias !109 br label %_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi.exit.i, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi.exit.i: ; preds = %if.then.i.i.i.i2.i.i.i, %if.end.i.i.i.i.i.i call void @llvm.amdgcn.end.cf.i64(i64 %334) %335 = trunc i64 %writer.sroa.10.4.i.i.i.i to i32 %336 = and i64 %writer.sroa.10.4.i.i.i.i, 15 %337 = sub i64 %writer.sroa.10.4.i.i.i.i, %336 %338 = icmp ne i64 %337, 0 %339 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %338) %340 = extractvalue { i1, i64 } %339, 0 %341 = extractvalue { i1, i64 } %339, 1 br i1 %340, label %loop-memcpy-expansion2303.preheader, label %Flow3846 loop-memcpy-expansion2303.preheader: ; preds = %_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi.exit.i %342 = sub i32 11, %335 %scevgep3211 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i, i32 %342 br label %loop-memcpy-expansion2303, !amdgpu.uniform !42 Flow3846: ; preds = %Flow3845, %_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi.exit.i call void @llvm.amdgcn.end.cf.i64(i64 %341) br label %loop-memcpy-residual-header2306, !amdgpu.uniform !42 loop-memcpy-expansion2303: ; preds = %loop-memcpy-expansion2303.preheader, %loop-memcpy-expansion2303 %phi.broken3915 = phi i64 [ 0, %loop-memcpy-expansion2303.preheader ], [ %347, %loop-memcpy-expansion2303 ] %lsr.iv3212 = phi ptr addrspace(5) [ %scevgep3213, %loop-memcpy-expansion2303 ], [ %scevgep3211, %loop-memcpy-expansion2303.preheader ] %loop-index2304 = phi i64 [ %345, %loop-memcpy-expansion2303 ], [ 0, %loop-memcpy-expansion2303.preheader ] %343 = load <4 x i32>, ptr addrspace(5) %lsr.iv3212, align 1 %344 = getelementptr i8, ptr %325, i64 %loop-index2304 store <4 x i32> %343, ptr %344, align 1 %345 = add i64 %loop-index2304, 16 %scevgep3213 = getelementptr i8, ptr addrspace(5) %lsr.iv3212, i32 16 %346 = icmp uge i64 %345, %337 %347 = call i64 @llvm.amdgcn.if.break.i64(i1 %346, i64 %phi.broken3915) %348 = call i1 @llvm.amdgcn.loop.i64(i64 %347) br i1 %348, label %Flow3845, label %loop-memcpy-expansion2303 Flow3844: ; preds = %Flow3843, %loop-memcpy-residual-header2306 call void @llvm.amdgcn.end.cf.i64(i64 %2865) br label %post-loop-memcpy-expansion2302, !amdgpu.uniform !42 loop-memcpy-residual2305: ; preds = %loop-memcpy-residual2305.preheader, %loop-memcpy-residual2305 %phi.broken3916 = phi i64 [ 0, %loop-memcpy-residual2305.preheader ], [ %352, %loop-memcpy-residual2305 ] %lsr.iv3207 = phi ptr addrspace(5) [ %scevgep3208, %loop-memcpy-residual2305 ], [ %scevgep3206, %loop-memcpy-residual2305.preheader ] %residual-loop-index2307 = phi i64 [ %350, %loop-memcpy-residual2305 ], [ 0, %loop-memcpy-residual2305.preheader ] %349 = load i8, ptr addrspace(5) %lsr.iv3207, align 1 %scevgep3210 = getelementptr i8, ptr %scevgep3209, i64 %residual-loop-index2307 store i8 %349, ptr %scevgep3210, align 1 %350 = add i64 %residual-loop-index2307, 1 %scevgep3208 = getelementptr i8, ptr addrspace(5) %lsr.iv3207, i32 1 %351 = icmp uge i64 %350, %336 %352 = call i64 @llvm.amdgcn.if.break.i64(i1 %351, i64 %phi.broken3916) %353 = call i1 @llvm.amdgcn.loop.i64(i64 %352) br i1 %353, label %Flow3843, label %loop-memcpy-residual2305 Flow3843: ; preds = %loop-memcpy-residual2305 %.lcssa4204 = phi i64 [ %352, %loop-memcpy-residual2305 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4204) br label %Flow3844, !amdgpu.uniform !42 post-loop-memcpy-expansion2302: ; preds = %Flow3844 call void @llvm.lifetime.end.p5(ptr addrspace(5) %buffer.i.i.i) #34, !noalias !109 br label %for.cond.i.i.i118, !amdgpu.uniform !42 for.cond.i.i.i118: ; preds = %post-loop-memcpy-expansion2302, %Flow3842 %354 = phi i32 [ %392, %Flow3842 ], [ poison, %post-loop-memcpy-expansion2302 ] %355 = phi i64 [ %393, %Flow3842 ], [ poison, %post-loop-memcpy-expansion2302 ] %356 = phi i32 [ %394, %Flow3842 ], [ poison, %post-loop-memcpy-expansion2302 ] %retval.sroa.6.0.i.i.i119 = phi i32 [ %397, %Flow3842 ], [ undef, %post-loop-memcpy-expansion2302 ] %retval.sroa.2.0.i.i.i121 = phi i64 [ %396, %Flow3842 ], [ undef, %post-loop-memcpy-expansion2302 ] %retval.sroa.8.0.i.i.i122 = phi i32 [ %395, %Flow3842 ], [ undef, %post-loop-memcpy-expansion2302 ] %index.0.i.i.i123 = phi i32 [ %399, %Flow3842 ], [ 0, %post-loop-memcpy-expansion2302 ] %357 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i124 = icmp ult i32 %index.0.i.i.i123, %357 %spec.store.select.i.i.i125 = select i1 %cmp.not.i.i.i124, i32 %index.0.i.i.i123, i32 0 %358 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %359 = and i32 %spec.store.select.i.i.i125, 31 %360 = lshr i64 %358, %sh_prom.i.i.i.i %361 = trunc i64 %360 to i32 %conv4.i.i.i.i.i129 = and i32 %361, 1 %shl.i.i.i.i.i130 = shl nuw i32 %conv4.i.i.i.i.i129, %359 %362 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2449, !amdgpu.uniform !42 363: ; preds = %ComputeEnd2450 %sunkaddr3291 = getelementptr inbounds i8, ptr addrspace(1) %3085, i64 40 %364 = atomicrmw or ptr addrspace(1) %sunkaddr3291, i32 %.lcssa4198 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %365, !amdgpu.uniform !42 365: ; preds = %363, %ComputeEnd2450 %366 = phi i32 [ %364, %363 ], [ poison, %ComputeEnd2450 ] call void @llvm.amdgcn.end.cf.i64(i64 %3094) %367 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %366) %368 = or i32 %367, %.lcssa4199 %shl5.i.i.i.i.i131 = shl nuw i32 1, %359 %and.i.i.i.i.i132 = and i32 %shl5.i.i.i.i.i131, %368 %tobool3.i.i.i.i133 = icmp ne i32 %and.i.i.i.i.i132, 0 %369 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i133) %and.i.i.i.i.i.i134 = and i64 %369, %358 %cmp.i.not.i.i.i135 = icmp ne i64 %358, %and.i.i.i.i.i.i134 br i1 %cmp.i.not.i.i.i135, label %if.then.i.i.i.i136, label %Flow3841, !amdgpu.uniform !42 if.then.i.i.i.i136: ; preds = %365 fence syncscope("agent") acquire %370 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %371 = extractelement <2 x i64> %370, i32 0 %372 = inttoptr i64 %371 to ptr %373 = extractelement <2 x i64> %370, i32 1 %374 = inttoptr i64 %373 to ptr %idxprom.i.i.i.i137 = zext i32 %spec.store.select.i.i.i125 to i64 %arrayidx.i.i.i.i138 = getelementptr inbounds nuw i32, ptr %372, i64 %idxprom.i.i.i.i137, !amdgpu.uniform !42 %375 = load atomic i32, ptr %arrayidx.i.i.i.i138 monotonic, align 4 %376 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %375) %arrayidx.i45.i.i.i139 = getelementptr inbounds nuw i32, ptr %374, i64 %idxprom.i.i.i.i137, !amdgpu.uniform !42 %377 = load atomic i32, ptr %arrayidx.i45.i.i.i139 monotonic, align 4 %378 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %377) %cmp.i46.not.i.i.i140 = icmp ne i32 %376, %378 br i1 %cmp.i46.not.i.i.i140, label %if.then12.i.i.i141, label %Flow3839, !amdgpu.uniform !42 if.then12.i.i.i141: ; preds = %if.then.i.i.i.i136 fence syncscope("agent") release %379 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %358, i1 true) %iszero.i.i.i.i.i.i.i142 = icmp ne i64 %358, 0 %cmp2.i.i.i.i.i.i143 = icmp eq i64 %379, %sh_prom.i.i.i.i %cmp.i.i.i.i.i2.i = select i1 %iszero.i.i.i.i.i.i.i142, i1 %cmp2.i.i.i.i.i.i143, i1 false %conv4.i.i51.i.i.i144 = zext i1 %cmp.i.i.i.i.i2.i to i32 %shl.i.i52.i.i.i145 = shl nuw i32 %conv4.i.i51.i.i.i144, %359 %xor.i.i.i.i.i146 = xor i32 %shl.i.i52.i.i.i145, -1 %380 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2454, !amdgpu.uniform !42 381: ; preds = %ComputeEnd2455 %sunkaddr3292 = getelementptr inbounds i8, ptr addrspace(1) %3085, i64 40 %382 = atomicrmw and ptr addrspace(1) %sunkaddr3292, i32 %.lcssa4200 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %383, !amdgpu.uniform !42 383: ; preds = %381, %ComputeEnd2455 call void @llvm.amdgcn.end.cf.i64(i64 %3112) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3839, !amdgpu.uniform !42 if.end14.i.i.i206: ; preds = %Flow3839 %384 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %358, i1 true) %iszero.i.i.i.i.i.i207 = icmp ne i64 %358, 0 %cmp2.i.i.i.i.i208 = icmp eq i64 %384, %sh_prom.i.i.i.i %cmp.i.i.i.i.i209 = select i1 %iszero.i.i.i.i.i.i207, i1 %cmp2.i.i.i.i.i208, i1 false %385 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i209) %386 = extractvalue { i1, i64 } %385, 0 %387 = extractvalue { i1, i64 } %385, 1 br i1 %386, label %if.then16.i.i.i211, label %if.end22.i.i.i210 if.then16.i.i.i211: ; preds = %if.end14.i.i.i206 %388 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i212 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %388, i64 %idxprom.i.i.i.i137, i32 1 store i32 1660944387, ptr %opcode.i.i.i212, align 8, !tbaa !77 %arrayidx21.i.i.i213 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %388, i64 %idxprom.i.i.i.i137 store i64 %358, ptr %arrayidx21.i.i.i213, align 8, !tbaa !80 br label %if.end22.i.i.i210, !amdgpu.uniform !42 Flow3840: ; preds = %if.end22.i.i.i210, %Flow3839 %389 = phi i32 [ %376, %if.end22.i.i.i210 ], [ %retval.sroa.8.0.i.i.i122, %Flow3839 ] %390 = phi i64 [ %358, %if.end22.i.i.i210 ], [ %retval.sroa.2.0.i.i.i121, %Flow3839 ] %391 = phi i32 [ %spec.store.select.i.i.i125, %if.end22.i.i.i210 ], [ %retval.sroa.6.0.i.i.i119, %Flow3839 ] br label %cleanup26.i.i.i147, !amdgpu.uniform !42 if.end22.i.i.i210: ; preds = %if.then16.i.i.i211, %if.end14.i.i.i206 call void @llvm.amdgcn.end.cf.i64(i64 %387) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3840, !amdgpu.uniform !42 Flow3841: ; preds = %cleanup26.i.i.i147, %365 %392 = phi i32 [ %391, %cleanup26.i.i.i147 ], [ %354, %365 ] %393 = phi i64 [ %390, %cleanup26.i.i.i147 ], [ %355, %365 ] %394 = phi i32 [ %389, %cleanup26.i.i.i147 ], [ %356, %365 ] %395 = phi i32 [ %389, %cleanup26.i.i.i147 ], [ %retval.sroa.8.0.i.i.i122, %365 ] %396 = phi i64 [ %390, %cleanup26.i.i.i147 ], [ %retval.sroa.2.0.i.i.i121, %365 ] %397 = phi i32 [ %391, %cleanup26.i.i.i147 ], [ %retval.sroa.6.0.i.i.i119, %365 ] %398 = phi i1 [ %cmp.i46.not.i.i.i140, %cleanup26.i.i.i147 ], [ true, %365 ] br i1 %398, label %for.inc.i.i.i152, label %Flow3842, !amdgpu.uniform !42 cleanup26.i.i.i147: ; preds = %Flow3840 br label %Flow3841, !amdgpu.uniform !42 for.inc.i.i.i152: ; preds = %Flow3841 %inc.i.i.i157 = add i32 %spec.store.select.i.i.i125, 1 br label %Flow3842, !amdgpu.uniform !42 Flow3842: ; preds = %for.inc.i.i.i152, %Flow3841 %399 = phi i32 [ %inc.i.i.i157, %for.inc.i.i.i152 ], [ poison, %Flow3841 ] %400 = phi i1 [ false, %for.inc.i.i.i152 ], [ true, %Flow3841 ] br i1 %400, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i158, label %for.cond.i.i.i118, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i158: ; preds = %Flow3842 %.lcssa4203 = phi i32 [ %392, %Flow3842 ] %.lcssa4202 = phi i64 [ %393, %Flow3842 ] %.lcssa4201 = phi i32 [ %394, %Flow3842 ] fence acquire %401 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i159 = shl i32 %.lcssa4203, 6 %idxprom.i19.i.i.i.i.i160 = zext i32 %mul.i.i.i.i.i.i159 to i64 %arrayidx.i20.i.i.i.i.i161 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %401, i64 %idxprom.i19.i.i.i.i.i160 %arrayidx.i22.i.i.i.i.i162 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i161, i64 %sh_prom.i.i.i.i store i64 %writer.sroa.10.4.i.i.i.i, ptr %arrayidx.i22.i.i.i.i.i162, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i163 = tail call i64 @llvm.umin.i64(i64 %writer.sroa.10.4.i.i.i.i, i64 56) %402 = and i64 %spec.select.i.i.i.i.i.i.i163, 15 %403 = sub i64 %spec.select.i.i.i.i.i.i.i163, %402 %404 = icmp ne i64 %403, 0 %405 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %404) %406 = extractvalue { i1, i64 } %405, 0 %407 = extractvalue { i1, i64 } %405, 1 br i1 %406, label %loop-memcpy-expansion2279.preheader, label %Flow3838 loop-memcpy-expansion2279.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i158 %408 = add nuw nsw i64 %75, 8 %scevgep3203 = getelementptr i8, ptr %401, i64 %408 %409 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i160, 6 %scevgep3204 = getelementptr i8, ptr %scevgep3203, i64 %409 br label %loop-memcpy-expansion2279, !amdgpu.uniform !42 Flow3838: ; preds = %Flow3837, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i158 call void @llvm.amdgcn.end.cf.i64(i64 %407) br label %loop-memcpy-residual-header2282, !amdgpu.uniform !42 loop-memcpy-expansion2279: ; preds = %loop-memcpy-expansion2279.preheader, %loop-memcpy-expansion2279 %phi.broken3917 = phi i64 [ 0, %loop-memcpy-expansion2279.preheader ], [ %414, %loop-memcpy-expansion2279 ] %loop-index2280 = phi i64 [ %412, %loop-memcpy-expansion2279 ], [ 0, %loop-memcpy-expansion2279.preheader ] %410 = getelementptr i8, ptr %325, i64 %loop-index2280 %411 = load <4 x i32>, ptr %410, align 1 %scevgep3205 = getelementptr i8, ptr %scevgep3204, i64 %loop-index2280 store <4 x i32> %411, ptr %scevgep3205, align 1 %412 = add i64 %loop-index2280, 16 %413 = icmp uge i64 %412, %403 %414 = call i64 @llvm.amdgcn.if.break.i64(i1 %413, i64 %phi.broken3917) %415 = call i1 @llvm.amdgcn.loop.i64(i64 %414) br i1 %415, label %Flow3837, label %loop-memcpy-expansion2279 Flow3836: ; preds = %Flow3834, %Flow3835 %416 = phi i64 [ %2858, %Flow3834 ], [ %2850, %Flow3835 ] call void @llvm.amdgcn.end.cf.i64(i64 %2853) br label %post-loop-memcpy-expansion2278, !amdgpu.uniform !42 loop-memcpy-residual2281: ; preds = %loop-memcpy-residual2281.preheader, %loop-memcpy-residual2281 %phi.broken3918 = phi i64 [ 0, %loop-memcpy-residual2281.preheader ], [ %420, %loop-memcpy-residual2281 ] %residual-loop-index2283 = phi i64 [ %418, %loop-memcpy-residual2281 ], [ 0, %loop-memcpy-residual2281.preheader ] %scevgep3202 = getelementptr i8, ptr %scevgep3201, i64 %residual-loop-index2283 %417 = load i8, ptr %scevgep3202, align 1 %scevgep3200 = getelementptr i8, ptr %scevgep3199, i64 %residual-loop-index2283 store i8 %417, ptr %scevgep3200, align 1 %418 = add i64 %residual-loop-index2283, 1 %419 = icmp uge i64 %418, %402 %420 = call i64 @llvm.amdgcn.if.break.i64(i1 %419, i64 %phi.broken3918) %421 = call i1 @llvm.amdgcn.loop.i64(i64 %420) br i1 %421, label %Flow3834, label %loop-memcpy-residual2281 Flow3834: ; preds = %loop-memcpy-residual2281 %.lcssa4196 = phi i64 [ %420, %loop-memcpy-residual2281 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4196) br label %Flow3836, !amdgpu.uniform !42 post-loop-memcpy-expansion2278: ; preds = %Flow3836 %tobool.not.i.i.i.i.i.i165 = icmp eq i32 %.lcssa4201, 0 %conv.i.i.i.i.i.i166 = zext i1 %tobool.not.i.i.i.i.i.i165 to i32 fence release %422 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i167 = zext i32 %.lcssa4203 to i64 %arrayidx.i24.i.i.i.i.i168 = getelementptr inbounds nuw i32, ptr %422, i64 %idxprom.i23.i.i.i.i.i167 store atomic i32 %conv.i.i.i.i.i.i166, ptr %arrayidx.i24.i.i.i.i.i168 monotonic, align 4 %423 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i169 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %423, i64 %idxprom.i23.i.i.i.i.i167, !amdgpu.uniform !42 %424 = load i64, ptr %arrayidx.i.i5.i.i169, align 8, !tbaa !80 %scevgep3185 = getelementptr i8, ptr %325, i64 56 %425 = add i64 %writer.sroa.10.4.i.i.i.i, -56 br label %while.cond.i.i.i.i170, !amdgpu.uniform !42 while.cond.i.i.i.i170: ; preds = %post-loop-memcpy-expansion2278, %Flow3833 %phi.broken3921 = phi i64 [ 0, %post-loop-memcpy-expansion2278 ], [ %442, %Flow3833 ] %lsr.iv3191 = phi i64 [ %440, %Flow3833 ], [ %425, %post-loop-memcpy-expansion2278 ] %lsr.iv3186 = phi ptr [ %439, %Flow3833 ], [ %scevgep3185, %post-loop-memcpy-expansion2278 ] %port.sroa.37.0.i.i171 = phi i32 [ %438, %Flow3833 ], [ %conv.i.i.i.i.i.i166, %post-loop-memcpy-expansion2278 ] %idx.0.i.i.i.i172 = phi i64 [ %437, %Flow3833 ], [ 56, %post-loop-memcpy-expansion2278 ] %cmp.i.i.i.i173 = icmp ugt i64 %writer.sroa.10.4.i.i.i.i, %idx.0.i.i.i.i172 %426 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i173) %and.i.i.i.i6.i.i174 = and i64 %426, %424 %tobool.not.i.i.i.i175 = icmp ne i64 %and.i.i.i.i6.i.i174, 0 %427 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i176 = getelementptr inbounds nuw i32, ptr %427, i64 %idxprom.i23.i.i.i.i.i167, !amdgpu.uniform !42 %428 = load atomic i32, ptr %arrayidx.i22.i.i.i176 monotonic, align 4 %429 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i175) %430 = extractvalue { i1, i64 } %429, 0 %431 = extractvalue { i1, i64 } %429, 1 br i1 %430, label %cond.false.i8.i.i.i.i177, label %Flow3833 cond.false.i8.i.i.i.i177: ; preds = %while.cond.i.i.i.i170 %432 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %428) %433 = icmp ne i32 %432, %port.sroa.37.0.i.i171 br i1 %433, label %while.body.i.i21.i.i.i.i178.preheader, label %Flow3832, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i178.preheader: ; preds = %cond.false.i8.i.i.i.i177 br label %while.body.i.i21.i.i.i.i178, !amdgpu.uniform !42 Flow3832: ; preds = %Flow3831, %cond.false.i8.i.i.i.i177 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i181, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i178: ; preds = %while.body.i.i21.i.i.i.i178.preheader, %while.body.i.i21.i.i.i.i178 tail call void @llvm.amdgcn.s.sleep(i32 2) %434 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i179 = getelementptr inbounds nuw i32, ptr %434, i64 %idxprom.i23.i.i.i.i.i167, !amdgpu.uniform !42 %435 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i179 monotonic, align 4 %436 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %435) %cmp.i.not.i.i23.i.i.i.i180 = icmp eq i32 %436, %port.sroa.37.0.i.i171 br i1 %cmp.i.not.i.i23.i.i.i.i180, label %Flow3831, label %while.body.i.i21.i.i.i.i178, !amdgpu.uniform !42 Flow3831: ; preds = %while.body.i.i21.i.i.i.i178 br label %Flow3832, !amdgpu.uniform !42 Flow3833: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i182, %while.cond.i.i.i.i170 %437 = phi i64 [ %add.i.i.i.i185, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i182 ], [ poison, %while.cond.i.i.i.i170 ] %438 = phi i32 [ %conv.i.i26.i.i.i.i183, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i182 ], [ poison, %while.cond.i.i.i.i170 ] %439 = phi ptr [ %scevgep3187, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i182 ], [ poison, %while.cond.i.i.i.i170 ] %440 = phi i64 [ %lsr.iv.next3192, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i182 ], [ poison, %while.cond.i.i.i.i170 ] %441 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i182 ], [ true, %while.cond.i.i.i.i170 ] call void @llvm.amdgcn.end.cf.i64(i64 %431) %442 = call i64 @llvm.amdgcn.if.break.i64(i1 %441, i64 %phi.broken3921) %443 = call i1 @llvm.amdgcn.loop.i64(i64 %442) br i1 %443, label %cond.false.i.i.i191, label %while.cond.i.i.i.i170 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i181: ; preds = %Flow3832 fence acquire %444 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i173) %445 = extractvalue { i1, i64 } %444, 0 %446 = extractvalue { i1, i64 } %444, 1 br i1 %445, label %if.then.i.i.i.i.i.i3.i, label %Flow3830 if.then.i.i.i.i.i.i3.i: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i181 %sub.i.i.i.i.i.i.i187 = sub nuw i64 %writer.sroa.10.4.i.i.i.i, %idx.0.i.i.i.i172 %spec.select.i.i.i36.i.i.i.i188 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i187, i64 64) %447 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %448 = and i64 %spec.select.i.i.i36.i.i.i.i188, 15 %449 = sub i64 %spec.select.i.i.i36.i.i.i.i188, %448 %450 = icmp ne i64 %449, 0 %451 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %450) %452 = extractvalue { i1, i64 } %451, 0 %453 = extractvalue { i1, i64 } %451, 1 br i1 %452, label %loop-memcpy-expansion2273.preheader, label %Flow3829 loop-memcpy-expansion2273.preheader: ; preds = %if.then.i.i.i.i.i.i3.i %arrayidx.i20.i35.i.i.i.i189 = getelementptr %"struct.rpc::Buffer", ptr %447, i64 %idxprom.i19.i.i.i.i.i160 %arrayidx.i22.i38.i.i.i.i190 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i189, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2273, !amdgpu.uniform !42 Flow3829: ; preds = %Flow3828, %if.then.i.i.i.i.i.i3.i call void @llvm.amdgcn.end.cf.i64(i64 %453) br label %loop-memcpy-residual-header2276, !amdgpu.uniform !42 loop-memcpy-expansion2273: ; preds = %loop-memcpy-expansion2273.preheader, %loop-memcpy-expansion2273 %phi.broken3919 = phi i64 [ 0, %loop-memcpy-expansion2273.preheader ], [ %458, %loop-memcpy-expansion2273 ] %loop-index2274 = phi i64 [ %456, %loop-memcpy-expansion2273 ], [ 0, %loop-memcpy-expansion2273.preheader ] %scevgep3188 = getelementptr i8, ptr %lsr.iv3186, i64 %loop-index2274 %454 = load <4 x i32>, ptr %scevgep3188, align 1 %455 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i190, i64 %loop-index2274 store <4 x i32> %454, ptr %455, align 1 %456 = add i64 %loop-index2274, 16 %457 = icmp uge i64 %456, %449 %458 = call i64 @llvm.amdgcn.if.break.i64(i1 %457, i64 %phi.broken3919) %459 = call i1 @llvm.amdgcn.loop.i64(i64 %458) br i1 %459, label %Flow3828, label %loop-memcpy-expansion2273 Flow3827: ; preds = %Flow3826, %loop-memcpy-residual-header2276 call void @llvm.amdgcn.end.cf.i64(i64 %2843) br label %Flow3830, !amdgpu.uniform !42 loop-memcpy-residual2275: ; preds = %loop-memcpy-residual2275.preheader, %loop-memcpy-residual2275 %phi.broken3920 = phi i64 [ 0, %loop-memcpy-residual2275.preheader ], [ %463, %loop-memcpy-residual2275 ] %residual-loop-index2277 = phi i64 [ %461, %loop-memcpy-residual2275 ], [ 0, %loop-memcpy-residual2275.preheader ] %scevgep3197 = getelementptr i8, ptr %scevgep3196, i64 %residual-loop-index2277 %460 = load i8, ptr %scevgep3197, align 1 %scevgep3195 = getelementptr i8, ptr %scevgep3194, i64 %residual-loop-index2277 store i8 %460, ptr %scevgep3195, align 1 %461 = add i64 %residual-loop-index2277, 1 %462 = icmp uge i64 %461, %448 %463 = call i64 @llvm.amdgcn.if.break.i64(i1 %462, i64 %phi.broken3920) %464 = call i1 @llvm.amdgcn.loop.i64(i64 %463) br i1 %464, label %Flow3826, label %loop-memcpy-residual2275 Flow3826: ; preds = %loop-memcpy-residual2275 %.lcssa4193 = phi i64 [ %463, %loop-memcpy-residual2275 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4193) br label %Flow3827, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i182: ; preds = %Flow3830 %conv.i.i26.i.i.i.i183 = xor i32 %port.sroa.37.0.i.i171, 1 fence release %465 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i184 = getelementptr inbounds nuw i32, ptr %465, i64 %idxprom.i23.i.i.i.i.i167 store atomic i32 %conv.i.i26.i.i.i.i183, ptr %arrayidx.i24.i29.i.i.i.i184 monotonic, align 4 %add.i.i.i.i185 = add i64 %idx.0.i.i.i.i172, 64 %scevgep3187 = getelementptr i8, ptr %lsr.iv3186, i64 64 %lsr.iv.next3192 = add i64 %lsr.iv3191, -64 br label %Flow3833, !amdgpu.uniform !42 cond.false.i.i.i191: ; preds = %Flow3833 %.lcssa4195 = phi i64 [ %442, %Flow3833 ] %port.sroa.37.0.i.i171.lcssa = phi i32 [ %port.sroa.37.0.i.i171, %Flow3833 ] %.lcssa4194 = phi i32 [ %428, %Flow3833 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4195) %466 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa4194) %467 = icmp ne i32 %466, %port.sroa.37.0.i.i171.lcssa %468 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %467) %469 = extractvalue { i1, i64 } %468, 0 %470 = extractvalue { i1, i64 } %468, 1 br i1 %469, label %while.body.i.i.i.i192.preheader, label %Flow3825 while.body.i.i.i.i192.preheader: ; preds = %cond.false.i.i.i191 br label %while.body.i.i.i.i192, !amdgpu.uniform !42 Flow3825: ; preds = %Flow3824, %cond.false.i.i.i191 call void @llvm.amdgcn.end.cf.i64(i64 %470) br label %_ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i, !amdgpu.uniform !42 while.body.i.i.i.i192: ; preds = %while.body.i.i.i.i192.preheader, %while.body.i.i.i.i192 %phi.broken3922 = phi i64 [ 0, %while.body.i.i.i.i192.preheader ], [ %474, %while.body.i.i.i.i192 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %471 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i193 = getelementptr inbounds nuw i32, ptr %471, i64 %idxprom.i23.i.i.i.i.i167, !amdgpu.uniform !42 %472 = load atomic i32, ptr %arrayidx.i.i.i8.i.i193 monotonic, align 4 %473 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %472) %cmp.i.not.i.i.i.i194 = icmp eq i32 %473, %port.sroa.37.0.i.i171.lcssa %474 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i194, i64 %phi.broken3922) %475 = call i1 @llvm.amdgcn.loop.i64(i64 %474) br i1 %475, label %Flow3824, label %while.body.i.i.i.i192 Flow3824: ; preds = %while.body.i.i.i.i192 %.lcssa4191 = phi i64 [ %474, %while.body.i.i.i.i192 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4191) br label %Flow3825, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i: ; preds = %Flow3825 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %476 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4202, i1 true) %iszero.i.i.i.i.i13.i.i195 = icmp ne i64 %.lcssa4202, 0 %cmp2.i.i.i.i14.i.i196 = icmp eq i64 %476, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i197 = select i1 %iszero.i.i.i.i.i13.i.i195, i1 %cmp2.i.i.i.i14.i.i196, i1 false %477 = and i32 %.lcssa4203, 31 %conv4.i.i.i19.i.i201 = zext i1 %cmp.i.i.i.i15.i.i197 to i32 %shl.i.i.i20.i.i202 = shl nuw i32 %conv4.i.i.i19.i.i201, %477 %xor.i.i.i21.i.i203 = xor i32 %shl.i.i.i20.i.i202, -1 %478 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2458, !amdgpu.uniform !42 479: ; preds = %ComputeEnd2459 %div8.i.i.i16.i.i198 = lshr i32 %.lcssa4203, 5 %idxprom.i.i.i17.i.i199 = zext nneg i32 %div8.i.i.i16.i.i198 to i64 %480 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i199 %sunkaddr3293 = getelementptr inbounds i8, ptr addrspace(1) %480, i64 40 %481 = atomicrmw and ptr addrspace(1) %sunkaddr3293, i32 %.lcssa4190 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %482, !amdgpu.uniform !42 482: ; preds = %479, %ComputeEnd2459 call void @llvm.amdgcn.end.cf.i64(i64 %3129) tail call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i1.i222, !amdgpu.uniform !42 for.cond.i.i1.i222: ; preds = %482, %Flow3823 %483 = phi i32 [ %521, %Flow3823 ], [ poison, %482 ] %484 = phi i64 [ %522, %Flow3823 ], [ poison, %482 ] %485 = phi i32 [ %523, %Flow3823 ], [ poison, %482 ] %retval.sroa.6.0.i.i.i223 = phi i32 [ %526, %Flow3823 ], [ undef, %482 ] %retval.sroa.2.0.i.i.i225 = phi i64 [ %525, %Flow3823 ], [ undef, %482 ] %retval.sroa.8.0.i.i.i226 = phi i32 [ %524, %Flow3823 ], [ undef, %482 ] %index.0.i.i.i227 = phi i32 [ %528, %Flow3823 ], [ 0, %482 ] %486 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i228 = icmp ult i32 %index.0.i.i.i227, %486 %spec.store.select.i.i.i229 = select i1 %cmp.not.i.i.i228, i32 %index.0.i.i.i227, i32 0 %487 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %488 = and i32 %spec.store.select.i.i.i229, 31 %489 = lshr i64 %487, %sh_prom.i.i.i.i %490 = trunc i64 %489 to i32 %conv4.i.i.i.i.i233 = and i32 %490, 1 %shl.i.i.i.i.i234 = shl nuw i32 %conv4.i.i.i.i.i233, %488 %491 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2462, !amdgpu.uniform !42 492: ; preds = %ComputeEnd2463 %sunkaddr3294 = getelementptr inbounds i8, ptr addrspace(1) %3139, i64 40 %493 = atomicrmw or ptr addrspace(1) %sunkaddr3294, i32 %.lcssa4184 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %494, !amdgpu.uniform !42 494: ; preds = %492, %ComputeEnd2463 %495 = phi i32 [ %493, %492 ], [ poison, %ComputeEnd2463 ] call void @llvm.amdgcn.end.cf.i64(i64 %3148) %496 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %495) %497 = or i32 %496, %.lcssa4185 %shl5.i.i.i.i.i235 = shl nuw i32 1, %488 %and.i.i.i.i.i236 = and i32 %shl5.i.i.i.i.i235, %497 %tobool3.i.i.i.i237 = icmp ne i32 %and.i.i.i.i.i236, 0 %498 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i237) %and.i.i.i.i.i.i238 = and i64 %498, %487 %cmp.i.not.i.i.i239 = icmp ne i64 %487, %and.i.i.i.i.i.i238 br i1 %cmp.i.not.i.i.i239, label %if.then.i.i.i.i240, label %Flow3822, !amdgpu.uniform !42 if.then.i.i.i.i240: ; preds = %494 fence syncscope("agent") acquire %499 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %500 = extractelement <2 x i64> %499, i32 0 %501 = inttoptr i64 %500 to ptr %502 = extractelement <2 x i64> %499, i32 1 %503 = inttoptr i64 %502 to ptr %idxprom.i.i.i.i241 = zext i32 %spec.store.select.i.i.i229 to i64 %arrayidx.i.i.i.i242 = getelementptr inbounds nuw i32, ptr %501, i64 %idxprom.i.i.i.i241, !amdgpu.uniform !42 %504 = load atomic i32, ptr %arrayidx.i.i.i.i242 monotonic, align 4 %505 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %504) %arrayidx.i45.i.i.i243 = getelementptr inbounds nuw i32, ptr %503, i64 %idxprom.i.i.i.i241, !amdgpu.uniform !42 %506 = load atomic i32, ptr %arrayidx.i45.i.i.i243 monotonic, align 4 %507 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %506) %cmp.i46.not.i.i.i244 = icmp ne i32 %505, %507 br i1 %cmp.i46.not.i.i.i244, label %if.then12.i.i.i245, label %Flow3820, !amdgpu.uniform !42 if.then12.i.i.i245: ; preds = %if.then.i.i.i.i240 fence syncscope("agent") release %508 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %487, i1 true) %iszero.i.i.i.i.i.i.i246 = icmp ne i64 %487, 0 %cmp2.i.i.i.i.i.i247 = icmp eq i64 %508, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i248 = select i1 %iszero.i.i.i.i.i.i.i246, i1 %cmp2.i.i.i.i.i.i247, i1 false %conv4.i.i51.i.i.i249 = zext i1 %cmp.i.i.i.i.i.i248 to i32 %shl.i.i52.i.i.i250 = shl nuw i32 %conv4.i.i51.i.i.i249, %488 %xor.i.i.i.i.i251 = xor i32 %shl.i.i52.i.i.i250, -1 %509 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2467, !amdgpu.uniform !42 510: ; preds = %ComputeEnd2468 %sunkaddr3295 = getelementptr inbounds i8, ptr addrspace(1) %3139, i64 40 %511 = atomicrmw and ptr addrspace(1) %sunkaddr3295, i32 %.lcssa4186 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %512, !amdgpu.uniform !42 512: ; preds = %510, %ComputeEnd2468 call void @llvm.amdgcn.end.cf.i64(i64 %3166) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3820, !amdgpu.uniform !42 if.end14.i.i.i311: ; preds = %Flow3820 %513 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %487, i1 true) %iszero.i.i.i.i.i.i312 = icmp ne i64 %487, 0 %cmp2.i.i.i.i.i313 = icmp eq i64 %513, %sh_prom.i.i.i.i %cmp.i.i.i.i.i314 = select i1 %iszero.i.i.i.i.i.i312, i1 %cmp2.i.i.i.i.i313, i1 false %514 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i314) %515 = extractvalue { i1, i64 } %514, 0 %516 = extractvalue { i1, i64 } %514, 1 br i1 %515, label %if.then16.i.i.i316, label %if.end22.i.i.i315 if.then16.i.i.i316: ; preds = %if.end14.i.i.i311 %517 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i317 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %517, i64 %idxprom.i.i.i.i241, i32 1 store i32 1660944387, ptr %opcode.i.i.i317, align 8, !tbaa !77 %arrayidx21.i.i.i318 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %517, i64 %idxprom.i.i.i.i241 store i64 %487, ptr %arrayidx21.i.i.i318, align 8, !tbaa !80 br label %if.end22.i.i.i315, !amdgpu.uniform !42 Flow3821: ; preds = %if.end22.i.i.i315, %Flow3820 %518 = phi i32 [ %505, %if.end22.i.i.i315 ], [ %retval.sroa.8.0.i.i.i226, %Flow3820 ] %519 = phi i64 [ %487, %if.end22.i.i.i315 ], [ %retval.sroa.2.0.i.i.i225, %Flow3820 ] %520 = phi i32 [ %spec.store.select.i.i.i229, %if.end22.i.i.i315 ], [ %retval.sroa.6.0.i.i.i223, %Flow3820 ] br label %cleanup26.i.i.i252, !amdgpu.uniform !42 if.end22.i.i.i315: ; preds = %if.then16.i.i.i316, %if.end14.i.i.i311 call void @llvm.amdgcn.end.cf.i64(i64 %516) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3821, !amdgpu.uniform !42 Flow3822: ; preds = %cleanup26.i.i.i252, %494 %521 = phi i32 [ %520, %cleanup26.i.i.i252 ], [ %483, %494 ] %522 = phi i64 [ %519, %cleanup26.i.i.i252 ], [ %484, %494 ] %523 = phi i32 [ %518, %cleanup26.i.i.i252 ], [ %485, %494 ] %524 = phi i32 [ %518, %cleanup26.i.i.i252 ], [ %retval.sroa.8.0.i.i.i226, %494 ] %525 = phi i64 [ %519, %cleanup26.i.i.i252 ], [ %retval.sroa.2.0.i.i.i225, %494 ] %526 = phi i32 [ %520, %cleanup26.i.i.i252 ], [ %retval.sroa.6.0.i.i.i223, %494 ] %527 = phi i1 [ %cmp.i46.not.i.i.i244, %cleanup26.i.i.i252 ], [ true, %494 ] br i1 %527, label %for.inc.i.i.i257, label %Flow3823, !amdgpu.uniform !42 cleanup26.i.i.i252: ; preds = %Flow3821 br label %Flow3822, !amdgpu.uniform !42 for.inc.i.i.i257: ; preds = %Flow3822 %inc.i.i.i262 = add i32 %spec.store.select.i.i.i229, 1 br label %Flow3823, !amdgpu.uniform !42 Flow3823: ; preds = %for.inc.i.i.i257, %Flow3822 %528 = phi i32 [ %inc.i.i.i262, %for.inc.i.i.i257 ], [ poison, %Flow3822 ] %529 = phi i1 [ false, %for.inc.i.i.i257 ], [ true, %Flow3822 ] br i1 %529, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i263, label %for.cond.i.i1.i222, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i263: ; preds = %Flow3823 %.lcssa4189 = phi i32 [ %521, %Flow3823 ] %.lcssa4188 = phi i64 [ %522, %Flow3823 ] %.lcssa4187 = phi i32 [ %523, %Flow3823 ] fence acquire %530 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i264 = shl i32 %.lcssa4189, 6 %idxprom.i19.i.i.i.i.i265 = zext i32 %mul.i.i.i.i.i.i264 to i64 %arrayidx.i20.i.i.i.i.i266 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %530, i64 %idxprom.i19.i.i.i.i.i265 %arrayidx.i22.i.i.i.i.i267 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i266, i64 %sh_prom.i.i.i.i store i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.7.11 to ptr), i64 10) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.7.11 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i267, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i268 = tail call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.7.11 to ptr), i64 10) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.7.11 to ptr) to i64)), i64 56) %531 = and i64 %spec.select.i.i.i.i.i.i.i268, 15 %532 = sub i64 %spec.select.i.i.i.i.i.i.i268, %531 %533 = icmp ne i64 %532, 0 br i1 %533, label %loop-memcpy-expansion2345.preheader, label %Flow3819, !amdgpu.uniform !42 loop-memcpy-expansion2345.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i263 %534 = add nuw nsw i64 %75, 8 %scevgep3182 = getelementptr i8, ptr %530, i64 %534 %535 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i265, 6 %scevgep3183 = getelementptr i8, ptr %scevgep3182, i64 %535 br label %loop-memcpy-expansion2345, !amdgpu.uniform !42 Flow3819: ; preds = %Flow3818, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i263 br label %loop-memcpy-residual-header2348, !amdgpu.uniform !42 loop-memcpy-expansion2345: ; preds = %loop-memcpy-expansion2345.preheader, %loop-memcpy-expansion2345 %loop-index2346 = phi i64 [ %538, %loop-memcpy-expansion2345 ], [ 0, %loop-memcpy-expansion2345.preheader ] %536 = getelementptr i8, ptr addrspace(4) @.str.7.11, i64 %loop-index2346, !amdgpu.uniform !42 %537 = load <4 x i32>, ptr addrspace(4) %536, align 1 %scevgep3184 = getelementptr i8, ptr %scevgep3183, i64 %loop-index2346 store <4 x i32> %537, ptr %scevgep3184, align 1 %538 = add i64 %loop-index2346, 16 %539 = icmp uge i64 %538, %532 br i1 %539, label %Flow3818, label %loop-memcpy-expansion2345, !amdgpu.uniform !42 Flow3817: ; preds = %Flow3815, %Flow3816 %540 = phi i64 [ %2914, %Flow3815 ], [ %2911, %Flow3816 ] br label %post-loop-memcpy-expansion2344, !amdgpu.uniform !42 loop-memcpy-residual2347: ; preds = %loop-memcpy-residual2347.preheader, %loop-memcpy-residual2347 %residual-loop-index2349 = phi i64 [ %542, %loop-memcpy-residual2347 ], [ 0, %loop-memcpy-residual2347.preheader ] %scevgep3181 = getelementptr i8, ptr addrspace(4) @.str.7.11, i64 %residual-loop-index2349, !amdgpu.uniform !42 %541 = load i8, ptr addrspace(4) %scevgep3181, align 1 %scevgep3180 = getelementptr i8, ptr %scevgep3179, i64 %residual-loop-index2349 store i8 %541, ptr %scevgep3180, align 1 %542 = add i64 %residual-loop-index2349, 1 %543 = icmp uge i64 %542, %531 br i1 %543, label %Flow3815, label %loop-memcpy-residual2347, !amdgpu.uniform !42 Flow3815: ; preds = %loop-memcpy-residual2347 br label %Flow3817, !amdgpu.uniform !42 post-loop-memcpy-expansion2344: ; preds = %Flow3817 %tobool.not.i.i.i.i.i.i270 = icmp eq i32 %.lcssa4187, 0 %conv.i.i.i.i.i.i271 = zext i1 %tobool.not.i.i.i.i.i.i270 to i32 fence release %544 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i272 = zext i32 %.lcssa4189 to i64 %arrayidx.i24.i.i.i.i.i273 = getelementptr inbounds nuw i32, ptr %544, i64 %idxprom.i23.i.i.i.i.i272 store atomic i32 %conv.i.i.i.i.i.i271, ptr %arrayidx.i24.i.i.i.i.i273 monotonic, align 4 %545 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i274 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %545, i64 %idxprom.i23.i.i.i.i.i272, !amdgpu.uniform !42 %546 = load i64, ptr %arrayidx.i.i5.i.i274, align 8, !tbaa !80 br label %while.cond.i.i.i.i275, !amdgpu.uniform !42 while.cond.i.i.i.i275: ; preds = %post-loop-memcpy-expansion2344, %Flow3814 %phi.broken3923 = phi i64 [ 0, %post-loop-memcpy-expansion2344 ], [ %563, %Flow3814 ] %lsr.iv3171 = phi i64 [ %561, %Flow3814 ], [ -46, %post-loop-memcpy-expansion2344 ] %lsr.iv3166 = phi ptr addrspace(4) [ %560, %Flow3814 ], [ getelementptr (i8, ptr addrspace(4) @.str.7.11, i64 56), %post-loop-memcpy-expansion2344 ] %port.sroa.37.0.i.i276 = phi i32 [ %559, %Flow3814 ], [ %conv.i.i.i.i.i.i271, %post-loop-memcpy-expansion2344 ] %idx.0.i.i.i.i277 = phi i64 [ %558, %Flow3814 ], [ 56, %post-loop-memcpy-expansion2344 ] %cmp.i.i.i.i278 = icmp ult i64 %idx.0.i.i.i.i277, sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.7.11 to ptr), i64 10) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.7.11 to ptr) to i64)) %547 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i278) %and.i.i.i.i6.i.i279 = and i64 %547, %546 %tobool.not.i.i.i.i280 = icmp ne i64 %and.i.i.i.i6.i.i279, 0 %548 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i281 = getelementptr inbounds nuw i32, ptr %548, i64 %idxprom.i23.i.i.i.i.i272, !amdgpu.uniform !42 %549 = load atomic i32, ptr %arrayidx.i22.i.i.i281 monotonic, align 4 %550 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i280) %551 = extractvalue { i1, i64 } %550, 0 %552 = extractvalue { i1, i64 } %550, 1 br i1 %551, label %cond.false.i8.i.i.i.i282, label %Flow3814 cond.false.i8.i.i.i.i282: ; preds = %while.cond.i.i.i.i275 %553 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %549) %554 = icmp ne i32 %553, %port.sroa.37.0.i.i276 br i1 %554, label %while.body.i.i21.i.i.i.i283.preheader, label %Flow3813, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i283.preheader: ; preds = %cond.false.i8.i.i.i.i282 br label %while.body.i.i21.i.i.i.i283, !amdgpu.uniform !42 Flow3813: ; preds = %Flow3812, %cond.false.i8.i.i.i.i282 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i286, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i283: ; preds = %while.body.i.i21.i.i.i.i283.preheader, %while.body.i.i21.i.i.i.i283 tail call void @llvm.amdgcn.s.sleep(i32 2) %555 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i284 = getelementptr inbounds nuw i32, ptr %555, i64 %idxprom.i23.i.i.i.i.i272, !amdgpu.uniform !42 %556 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i284 monotonic, align 4 %557 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %556) %cmp.i.not.i.i23.i.i.i.i285 = icmp eq i32 %557, %port.sroa.37.0.i.i276 br i1 %cmp.i.not.i.i23.i.i.i.i285, label %Flow3812, label %while.body.i.i21.i.i.i.i283, !amdgpu.uniform !42 Flow3812: ; preds = %while.body.i.i21.i.i.i.i283 br label %Flow3813, !amdgpu.uniform !42 Flow3814: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i287, %while.cond.i.i.i.i275 %558 = phi i64 [ %add.i.i.i.i290, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i287 ], [ poison, %while.cond.i.i.i.i275 ] %559 = phi i32 [ %conv.i.i26.i.i.i.i288, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i287 ], [ poison, %while.cond.i.i.i.i275 ] %560 = phi ptr addrspace(4) [ %scevgep3167, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i287 ], [ poison, %while.cond.i.i.i.i275 ] %561 = phi i64 [ %lsr.iv.next3172, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i287 ], [ poison, %while.cond.i.i.i.i275 ] %562 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i287 ], [ true, %while.cond.i.i.i.i275 ] call void @llvm.amdgcn.end.cf.i64(i64 %552) %563 = call i64 @llvm.amdgcn.if.break.i64(i1 %562, i64 %phi.broken3923) %564 = call i1 @llvm.amdgcn.loop.i64(i64 %563) br i1 %564, label %cond.false.i.i.i297, label %while.cond.i.i.i.i275 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i286: ; preds = %Flow3813 fence acquire br i1 %cmp.i.i.i.i278, label %if.then.i.i.i.i.i.i.i291, label %Flow3811, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i291: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i286 %sub.i.i.i.i.i.i.i293 = sub nuw i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.7.11 to ptr), i64 10) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.7.11 to ptr) to i64)), %idx.0.i.i.i.i277 %spec.select.i.i.i36.i.i.i.i294 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i293, i64 64) %565 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %566 = and i64 %spec.select.i.i.i36.i.i.i.i294, 15 %567 = sub i64 %spec.select.i.i.i36.i.i.i.i294, %566 %568 = icmp ne i64 %567, 0 br i1 %568, label %loop-memcpy-expansion2351.preheader, label %Flow3810, !amdgpu.uniform !42 loop-memcpy-expansion2351.preheader: ; preds = %if.then.i.i.i.i.i.i.i291 %arrayidx.i20.i35.i.i.i.i295 = getelementptr %"struct.rpc::Buffer", ptr %565, i64 %idxprom.i19.i.i.i.i.i265 %arrayidx.i22.i38.i.i.i.i296 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i295, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2351, !amdgpu.uniform !42 Flow3810: ; preds = %Flow3809, %if.then.i.i.i.i.i.i.i291 br label %loop-memcpy-residual-header2354, !amdgpu.uniform !42 loop-memcpy-expansion2351: ; preds = %loop-memcpy-expansion2351.preheader, %loop-memcpy-expansion2351 %loop-index2352 = phi i64 [ %571, %loop-memcpy-expansion2351 ], [ 0, %loop-memcpy-expansion2351.preheader ] %scevgep3168 = getelementptr i8, ptr addrspace(4) %lsr.iv3166, i64 %loop-index2352, !amdgpu.uniform !42 %569 = load <4 x i32>, ptr addrspace(4) %scevgep3168, align 1 %570 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i296, i64 %loop-index2352 store <4 x i32> %569, ptr %570, align 1 %571 = add i64 %loop-index2352, 16 %572 = icmp uge i64 %571, %567 br i1 %572, label %Flow3809, label %loop-memcpy-expansion2351, !amdgpu.uniform !42 Flow3808: ; preds = %Flow3807, %loop-memcpy-residual-header2354 br label %Flow3811, !amdgpu.uniform !42 loop-memcpy-residual2353: ; preds = %loop-memcpy-residual2353.preheader, %loop-memcpy-residual2353 %residual-loop-index2355 = phi i64 [ %574, %loop-memcpy-residual2353 ], [ 0, %loop-memcpy-residual2353.preheader ] %scevgep3177 = getelementptr i8, ptr addrspace(4) %scevgep3176, i64 %residual-loop-index2355, !amdgpu.uniform !42 %573 = load i8, ptr addrspace(4) %scevgep3177, align 1 %scevgep3175 = getelementptr i8, ptr %scevgep3174, i64 %residual-loop-index2355 store i8 %573, ptr %scevgep3175, align 1 %574 = add i64 %residual-loop-index2355, 1 %575 = icmp uge i64 %574, %566 br i1 %575, label %Flow3807, label %loop-memcpy-residual2353, !amdgpu.uniform !42 Flow3807: ; preds = %loop-memcpy-residual2353 br label %Flow3808, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i287: ; preds = %Flow3811 %conv.i.i26.i.i.i.i288 = xor i32 %port.sroa.37.0.i.i276, 1 fence release %576 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i289 = getelementptr inbounds nuw i32, ptr %576, i64 %idxprom.i23.i.i.i.i.i272 store atomic i32 %conv.i.i26.i.i.i.i288, ptr %arrayidx.i24.i29.i.i.i.i289 monotonic, align 4 %add.i.i.i.i290 = add i64 %idx.0.i.i.i.i277, 64 %scevgep3167 = getelementptr i8, ptr addrspace(4) %lsr.iv3166, i64 64 %lsr.iv.next3172 = add i64 %lsr.iv3171, -64 br label %Flow3814, !amdgpu.uniform !42 cond.false.i.i.i297: ; preds = %Flow3814 %.lcssa4183 = phi i64 [ %563, %Flow3814 ] %port.sroa.37.0.i.i276.lcssa = phi i32 [ %port.sroa.37.0.i.i276, %Flow3814 ] %.lcssa4182 = phi i32 [ %549, %Flow3814 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4183) %577 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa4182) %578 = icmp ne i32 %577, %port.sroa.37.0.i.i276.lcssa %579 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %578) %580 = extractvalue { i1, i64 } %579, 0 %581 = extractvalue { i1, i64 } %579, 1 br i1 %580, label %while.body.i.i.i.i298.preheader, label %Flow3806 while.body.i.i.i.i298.preheader: ; preds = %cond.false.i.i.i297 br label %while.body.i.i.i.i298, !amdgpu.uniform !42 Flow3806: ; preds = %Flow3805, %cond.false.i.i.i297 call void @llvm.amdgcn.end.cf.i64(i64 %581) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit319, !amdgpu.uniform !42 while.body.i.i.i.i298: ; preds = %while.body.i.i.i.i298.preheader, %while.body.i.i.i.i298 %phi.broken3924 = phi i64 [ 0, %while.body.i.i.i.i298.preheader ], [ %585, %while.body.i.i.i.i298 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %582 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i299 = getelementptr inbounds nuw i32, ptr %582, i64 %idxprom.i23.i.i.i.i.i272, !amdgpu.uniform !42 %583 = load atomic i32, ptr %arrayidx.i.i.i8.i.i299 monotonic, align 4 %584 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %583) %cmp.i.not.i.i.i.i300 = icmp eq i32 %584, %port.sroa.37.0.i.i276.lcssa %585 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i300, i64 %phi.broken3924) %586 = call i1 @llvm.amdgcn.loop.i64(i64 %585) br i1 %586, label %Flow3805, label %while.body.i.i.i.i298 Flow3805: ; preds = %while.body.i.i.i.i298 %.lcssa4181 = phi i64 [ %585, %while.body.i.i.i.i298 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4181) br label %Flow3806, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit319: ; preds = %Flow3806 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %587 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4188, i1 true) %iszero.i.i.i.i.i13.i.i302 = icmp ne i64 %.lcssa4188, 0 %cmp2.i.i.i.i14.i.i303 = icmp eq i64 %587, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i304 = select i1 %iszero.i.i.i.i.i13.i.i302, i1 %cmp2.i.i.i.i14.i.i303, i1 false %588 = and i32 %.lcssa4189, 31 %conv4.i.i.i19.i.i308 = zext i1 %cmp.i.i.i.i15.i.i304 to i32 %shl.i.i.i20.i.i309 = shl nuw i32 %conv4.i.i.i19.i.i308, %588 %xor.i.i.i21.i.i310 = xor i32 %shl.i.i.i20.i.i309, -1 %589 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2471, !amdgpu.uniform !42 590: ; preds = %ComputeEnd2472 %div8.i.i.i16.i.i305 = lshr i32 %.lcssa4189, 5 %idxprom.i.i.i17.i.i306 = zext nneg i32 %div8.i.i.i16.i.i305 to i64 %591 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i306 %sunkaddr3296 = getelementptr inbounds i8, ptr addrspace(1) %591, i64 40 %592 = atomicrmw and ptr addrspace(1) %sunkaddr3296, i32 %.lcssa4180 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %593, !amdgpu.uniform !42 593: ; preds = %590, %ComputeEnd2472 call void @llvm.amdgcn.end.cf.i64(i64 %3183) tail call void @llvm.amdgcn.wave.barrier() %inc.i.i.i32.i = add nuw i64 %spec.select.i, 1 %cmp2.i.i.i35.i = icmp ult i64 %spec.select.i, 1676976733973595600 br i1 %cmp2.i.i.i35.i, label %if.then3.i.i.i44.i, label %if.end4.i.i.i36.i, !amdgpu.uniform !42 if.then3.i.i.i44.i: ; preds = %593 %mul.i.i.i45.i = mul nuw i64 %inc.i.i.i32.i, 11 %div18.i.i.i46.i = lshr i64 %mul.i.i.i45.i, 3 br label %if.end4.i.i.i36.i, !amdgpu.uniform !42 if.end4.i.i.i36.i: ; preds = %if.then3.i.i.i44.i, %593 %new_capacity.addr.0.i.i.i37.i = phi i64 [ %div18.i.i.i46.i, %if.then3.i.i.i44.i ], [ %inc.i.i.i32.i, %593 ] %sub.i.i320 = add i64 %new_capacity.addr.0.i.i.i37.i, 7 %div2.i.i321 = and i64 %sub.i.i320, -8 %594 = load ptr, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %add.ptr.i.i322 = getelementptr inbounds nuw i8, ptr %594, i64 %div2.i.i321 store ptr %add.ptr.i.i322, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %595 = and i64 %spec.select.i, 15 %596 = sub i64 %spec.select.i, %595 %597 = icmp ne i64 %596, 0 br i1 %597, label %loop-memcpy-expansion2297.preheader, label %Flow3804, !amdgpu.uniform !42 loop-memcpy-expansion2297.preheader: ; preds = %if.end4.i.i.i36.i br label %loop-memcpy-expansion2297, !amdgpu.uniform !42 Flow3804: ; preds = %Flow3803, %if.end4.i.i.i36.i br label %loop-memcpy-residual-header2300, !amdgpu.uniform !42 loop-memcpy-expansion2297: ; preds = %loop-memcpy-expansion2297.preheader, %loop-memcpy-expansion2297 %loop-index2298 = phi i64 [ %601, %loop-memcpy-expansion2297 ], [ 0, %loop-memcpy-expansion2297.preheader ] %598 = getelementptr i8, ptr %3, i64 %loop-index2298, !amdgpu.uniform !42 %599 = load <4 x i32>, ptr %598, align 1 %600 = getelementptr i8, ptr %594, i64 %loop-index2298 store <4 x i32> %599, ptr %600, align 1 %601 = add i64 %loop-index2298, 16 %602 = icmp uge i64 %601, %596 br i1 %602, label %Flow3803, label %loop-memcpy-expansion2297, !amdgpu.uniform !42 Flow3802: ; preds = %Flow3801, %loop-memcpy-residual-header2300 br label %post-loop-memcpy-expansion2296, !amdgpu.uniform !42 loop-memcpy-residual2299: ; preds = %loop-memcpy-residual2299.preheader, %loop-memcpy-residual2299 %residual-loop-index2301 = phi i64 [ %604, %loop-memcpy-residual2299 ], [ 0, %loop-memcpy-residual2299.preheader ] %scevgep3165 = getelementptr i8, ptr %scevgep3164, i64 %residual-loop-index2301, !amdgpu.uniform !42 %603 = load i8, ptr %scevgep3165, align 1 %scevgep3163 = getelementptr i8, ptr %scevgep3162, i64 %residual-loop-index2301 store i8 %603, ptr %scevgep3163, align 1 %604 = add i64 %residual-loop-index2301, 1 %605 = icmp uge i64 %604, %595 br i1 %605, label %Flow3801, label %loop-memcpy-residual2299, !amdgpu.uniform !42 Flow3801: ; preds = %loop-memcpy-residual2299 br label %Flow3802, !amdgpu.uniform !42 post-loop-memcpy-expansion2296: ; preds = %Flow3802 %sub.ptr.lhs.cast.i.i323 = ptrtoint ptr %add.ptr.i.i322 to i64 %sub.ptr.sub.i.i324 = sub i64 %sub.ptr.lhs.cast.i.i323, ptrtoint (ptr addrspacecast (ptr addrspace(1) @_ZN12_GLOBAL__N_16memoryE to ptr) to i64) %cmp.i.i325 = icmp ugt i64 %sub.ptr.sub.i.i324, 65335 %cond.i.i326 = select i1 %cmp.i.i325, ptr null, ptr %594 %cmp.not.i10.i.i.i = icmp ne ptr %cond.i.i326, addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr) br i1 %cmp.not.i10.i.i.i, label %if.then.i.i.i42.i, label %for.cond.i.i.i328.preheader, !amdgpu.uniform !42 if.then.i.i.i42.i: ; preds = %post-loop-memcpy-expansion2296 %arrayidx.i.i.i43.i = getelementptr inbounds nuw i8, ptr %594, i64 %spec.select.i store i8 0, ptr %arrayidx.i.i.i43.i, align 1, !tbaa !57 br label %for.cond.i.i.i328.preheader, !amdgpu.uniform !42 for.cond.i.i.i328.preheader: ; preds = %if.then.i.i.i42.i, %post-loop-memcpy-expansion2296 br label %for.cond.i.i.i328, !amdgpu.uniform !42 for.cond.i.i.i328: ; preds = %for.cond.i.i.i328.preheader, %Flow3800 %606 = phi i32 [ %644, %Flow3800 ], [ poison, %for.cond.i.i.i328.preheader ] %607 = phi i64 [ %645, %Flow3800 ], [ poison, %for.cond.i.i.i328.preheader ] %608 = phi i32 [ %646, %Flow3800 ], [ poison, %for.cond.i.i.i328.preheader ] %retval.sroa.6.0.i.i.i329 = phi i32 [ %649, %Flow3800 ], [ undef, %for.cond.i.i.i328.preheader ] %retval.sroa.2.0.i.i.i331 = phi i64 [ %648, %Flow3800 ], [ undef, %for.cond.i.i.i328.preheader ] %retval.sroa.8.0.i.i.i332 = phi i32 [ %647, %Flow3800 ], [ undef, %for.cond.i.i.i328.preheader ] %index.0.i.i.i333 = phi i32 [ %651, %Flow3800 ], [ 0, %for.cond.i.i.i328.preheader ] %609 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i334 = icmp ult i32 %index.0.i.i.i333, %609 %spec.store.select.i.i.i335 = select i1 %cmp.not.i.i.i334, i32 %index.0.i.i.i333, i32 0 %610 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %611 = and i32 %spec.store.select.i.i.i335, 31 %612 = lshr i64 %610, %sh_prom.i.i.i.i %613 = trunc i64 %612 to i32 %conv4.i.i.i.i.i339 = and i32 %613, 1 %shl.i.i.i.i.i340 = shl nuw i32 %conv4.i.i.i.i.i339, %611 %614 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2475, !amdgpu.uniform !42 615: ; preds = %ComputeEnd2476 %sunkaddr3297 = getelementptr inbounds i8, ptr addrspace(1) %3193, i64 40 %616 = atomicrmw or ptr addrspace(1) %sunkaddr3297, i32 %.lcssa4174 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %617, !amdgpu.uniform !42 617: ; preds = %615, %ComputeEnd2476 %618 = phi i32 [ %616, %615 ], [ poison, %ComputeEnd2476 ] call void @llvm.amdgcn.end.cf.i64(i64 %3202) %619 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %618) %620 = or i32 %619, %.lcssa4175 %shl5.i.i.i.i.i341 = shl nuw i32 1, %611 %and.i.i.i.i.i342 = and i32 %shl5.i.i.i.i.i341, %620 %tobool3.i.i.i.i343 = icmp ne i32 %and.i.i.i.i.i342, 0 %621 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i343) %and.i.i.i.i.i.i344 = and i64 %621, %610 %cmp.i.not.i.i.i345 = icmp ne i64 %610, %and.i.i.i.i.i.i344 br i1 %cmp.i.not.i.i.i345, label %if.then.i.i.i.i346, label %Flow3799, !amdgpu.uniform !42 if.then.i.i.i.i346: ; preds = %617 fence syncscope("agent") acquire %622 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %623 = extractelement <2 x i64> %622, i32 0 %624 = inttoptr i64 %623 to ptr %625 = extractelement <2 x i64> %622, i32 1 %626 = inttoptr i64 %625 to ptr %idxprom.i.i.i.i347 = zext i32 %spec.store.select.i.i.i335 to i64 %arrayidx.i.i.i.i348 = getelementptr inbounds nuw i32, ptr %624, i64 %idxprom.i.i.i.i347, !amdgpu.uniform !42 %627 = load atomic i32, ptr %arrayidx.i.i.i.i348 monotonic, align 4 %628 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %627) %arrayidx.i45.i.i.i349 = getelementptr inbounds nuw i32, ptr %626, i64 %idxprom.i.i.i.i347, !amdgpu.uniform !42 %629 = load atomic i32, ptr %arrayidx.i45.i.i.i349 monotonic, align 4 %630 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %629) %cmp.i46.not.i.i.i350 = icmp ne i32 %628, %630 br i1 %cmp.i46.not.i.i.i350, label %if.then12.i.i.i351, label %Flow3797, !amdgpu.uniform !42 if.then12.i.i.i351: ; preds = %if.then.i.i.i.i346 fence syncscope("agent") release %631 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %610, i1 true) %iszero.i.i.i.i.i.i.i352 = icmp ne i64 %610, 0 %cmp2.i.i.i.i.i.i353 = icmp eq i64 %631, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i354 = select i1 %iszero.i.i.i.i.i.i.i352, i1 %cmp2.i.i.i.i.i.i353, i1 false %conv4.i.i51.i.i.i355 = zext i1 %cmp.i.i.i.i.i.i354 to i32 %shl.i.i52.i.i.i356 = shl nuw i32 %conv4.i.i51.i.i.i355, %611 %xor.i.i.i.i.i357 = xor i32 %shl.i.i52.i.i.i356, -1 %632 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2480, !amdgpu.uniform !42 633: ; preds = %ComputeEnd2481 %sunkaddr3298 = getelementptr inbounds i8, ptr addrspace(1) %3193, i64 40 %634 = atomicrmw and ptr addrspace(1) %sunkaddr3298, i32 %.lcssa4176 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %635, !amdgpu.uniform !42 635: ; preds = %633, %ComputeEnd2481 call void @llvm.amdgcn.end.cf.i64(i64 %3220) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3797, !amdgpu.uniform !42 if.end14.i.i.i417: ; preds = %Flow3797 %636 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %610, i1 true) %iszero.i.i.i.i.i.i418 = icmp ne i64 %610, 0 %cmp2.i.i.i.i.i419 = icmp eq i64 %636, %sh_prom.i.i.i.i %cmp.i.i.i.i.i420 = select i1 %iszero.i.i.i.i.i.i418, i1 %cmp2.i.i.i.i.i419, i1 false %637 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i420) %638 = extractvalue { i1, i64 } %637, 0 %639 = extractvalue { i1, i64 } %637, 1 br i1 %638, label %if.then16.i.i.i422, label %if.end22.i.i.i421 if.then16.i.i.i422: ; preds = %if.end14.i.i.i417 %640 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i423 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %640, i64 %idxprom.i.i.i.i347, i32 1 store i32 1660944387, ptr %opcode.i.i.i423, align 8, !tbaa !77 %arrayidx21.i.i.i424 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %640, i64 %idxprom.i.i.i.i347 store i64 %610, ptr %arrayidx21.i.i.i424, align 8, !tbaa !80 br label %if.end22.i.i.i421, !amdgpu.uniform !42 Flow3798: ; preds = %if.end22.i.i.i421, %Flow3797 %641 = phi i32 [ %628, %if.end22.i.i.i421 ], [ %retval.sroa.8.0.i.i.i332, %Flow3797 ] %642 = phi i64 [ %610, %if.end22.i.i.i421 ], [ %retval.sroa.2.0.i.i.i331, %Flow3797 ] %643 = phi i32 [ %spec.store.select.i.i.i335, %if.end22.i.i.i421 ], [ %retval.sroa.6.0.i.i.i329, %Flow3797 ] br label %cleanup26.i.i.i358, !amdgpu.uniform !42 if.end22.i.i.i421: ; preds = %if.then16.i.i.i422, %if.end14.i.i.i417 call void @llvm.amdgcn.end.cf.i64(i64 %639) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3798, !amdgpu.uniform !42 Flow3799: ; preds = %cleanup26.i.i.i358, %617 %644 = phi i32 [ %643, %cleanup26.i.i.i358 ], [ %606, %617 ] %645 = phi i64 [ %642, %cleanup26.i.i.i358 ], [ %607, %617 ] %646 = phi i32 [ %641, %cleanup26.i.i.i358 ], [ %608, %617 ] %647 = phi i32 [ %641, %cleanup26.i.i.i358 ], [ %retval.sroa.8.0.i.i.i332, %617 ] %648 = phi i64 [ %642, %cleanup26.i.i.i358 ], [ %retval.sroa.2.0.i.i.i331, %617 ] %649 = phi i32 [ %643, %cleanup26.i.i.i358 ], [ %retval.sroa.6.0.i.i.i329, %617 ] %650 = phi i1 [ %cmp.i46.not.i.i.i350, %cleanup26.i.i.i358 ], [ true, %617 ] br i1 %650, label %for.inc.i.i.i363, label %Flow3800, !amdgpu.uniform !42 cleanup26.i.i.i358: ; preds = %Flow3798 br label %Flow3799, !amdgpu.uniform !42 for.inc.i.i.i363: ; preds = %Flow3799 %inc.i.i.i368 = add i32 %spec.store.select.i.i.i335, 1 br label %Flow3800, !amdgpu.uniform !42 Flow3800: ; preds = %for.inc.i.i.i363, %Flow3799 %651 = phi i32 [ %inc.i.i.i368, %for.inc.i.i.i363 ], [ poison, %Flow3799 ] %652 = phi i1 [ false, %for.inc.i.i.i363 ], [ true, %Flow3799 ] br i1 %652, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i369, label %for.cond.i.i.i328, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i369: ; preds = %Flow3800 %.lcssa4179 = phi i32 [ %644, %Flow3800 ] %.lcssa4178 = phi i64 [ %645, %Flow3800 ] %.lcssa4177 = phi i32 [ %646, %Flow3800 ] fence acquire %653 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i370 = shl i32 %.lcssa4179, 6 %idxprom.i19.i.i.i.i.i371 = zext i32 %mul.i.i.i.i.i.i370 to i64 %arrayidx.i20.i.i.i.i.i372 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %653, i64 %idxprom.i19.i.i.i.i.i371 %arrayidx.i22.i.i.i.i.i373 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i372, i64 %sh_prom.i.i.i.i store i64 %spec.select.i, ptr %arrayidx.i22.i.i.i.i.i373, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i374 = tail call i64 @llvm.umin.i64(i64 %spec.select.i, i64 56) %654 = and i64 %spec.select.i.i.i.i.i.i.i374, 15 %655 = sub i64 %spec.select.i.i.i.i.i.i.i374, %654 %656 = icmp ne i64 %655, 0 br i1 %656, label %loop-memcpy-expansion2267.preheader, label %Flow3796, !amdgpu.uniform !42 loop-memcpy-expansion2267.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i369 %657 = add nuw nsw i64 %75, 8 %scevgep3159 = getelementptr i8, ptr %653, i64 %657 %658 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i371, 6 %scevgep3160 = getelementptr i8, ptr %scevgep3159, i64 %658 br label %loop-memcpy-expansion2267, !amdgpu.uniform !42 Flow3796: ; preds = %Flow3795, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i369 br label %loop-memcpy-residual-header2270, !amdgpu.uniform !42 loop-memcpy-expansion2267: ; preds = %loop-memcpy-expansion2267.preheader, %loop-memcpy-expansion2267 %loop-index2268 = phi i64 [ %661, %loop-memcpy-expansion2267 ], [ 0, %loop-memcpy-expansion2267.preheader ] %659 = getelementptr i8, ptr %594, i64 %loop-index2268, !amdgpu.uniform !42 %660 = load <4 x i32>, ptr %659, align 1 %scevgep3161 = getelementptr i8, ptr %scevgep3160, i64 %loop-index2268 store <4 x i32> %660, ptr %scevgep3161, align 1 %661 = add i64 %loop-index2268, 16 %662 = icmp uge i64 %661, %655 br i1 %662, label %Flow3795, label %loop-memcpy-expansion2267, !amdgpu.uniform !42 Flow3794: ; preds = %Flow3792, %Flow3793 %663 = phi i64 [ %2839, %Flow3792 ], [ %2835, %Flow3793 ] br label %post-loop-memcpy-expansion2266, !amdgpu.uniform !42 loop-memcpy-residual2269: ; preds = %loop-memcpy-residual2269.preheader, %loop-memcpy-residual2269 %residual-loop-index2271 = phi i64 [ %665, %loop-memcpy-residual2269 ], [ 0, %loop-memcpy-residual2269.preheader ] %scevgep3158 = getelementptr i8, ptr %scevgep3157, i64 %residual-loop-index2271, !amdgpu.uniform !42 %664 = load i8, ptr %scevgep3158, align 1 %scevgep3156 = getelementptr i8, ptr %scevgep3155, i64 %residual-loop-index2271 store i8 %664, ptr %scevgep3156, align 1 %665 = add i64 %residual-loop-index2271, 1 %666 = icmp uge i64 %665, %654 br i1 %666, label %Flow3792, label %loop-memcpy-residual2269, !amdgpu.uniform !42 Flow3792: ; preds = %loop-memcpy-residual2269 br label %Flow3794, !amdgpu.uniform !42 post-loop-memcpy-expansion2266: ; preds = %Flow3794 %tobool.not.i.i.i.i.i.i376 = icmp eq i32 %.lcssa4177, 0 %conv.i.i.i.i.i.i377 = zext i1 %tobool.not.i.i.i.i.i.i376 to i32 fence release %667 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i378 = zext i32 %.lcssa4179 to i64 %arrayidx.i24.i.i.i.i.i379 = getelementptr inbounds nuw i32, ptr %667, i64 %idxprom.i23.i.i.i.i.i378 store atomic i32 %conv.i.i.i.i.i.i377, ptr %arrayidx.i24.i.i.i.i.i379 monotonic, align 4 %668 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i380 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %668, i64 %idxprom.i23.i.i.i.i.i378, !amdgpu.uniform !42 %669 = load i64, ptr %arrayidx.i.i5.i.i380, align 8, !tbaa !80 %scevgep3140 = getelementptr i8, ptr %594, i64 56 %umin3146 = call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.9, i64 8) to ptr) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.9 to ptr) to i64)), i64 2) %670 = sub i64 sub (i64 add (i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.9, i64 8) to ptr) to i64), i64 -56), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.9 to ptr) to i64)), %umin3146 br label %while.cond.i.i.i.i381, !amdgpu.uniform !42 while.cond.i.i.i.i381: ; preds = %post-loop-memcpy-expansion2266, %Flow3791 %phi.broken3925 = phi i64 [ 0, %post-loop-memcpy-expansion2266 ], [ %687, %Flow3791 ] %lsr.iv3147 = phi i64 [ %685, %Flow3791 ], [ %670, %post-loop-memcpy-expansion2266 ] %lsr.iv3141 = phi ptr [ %684, %Flow3791 ], [ %scevgep3140, %post-loop-memcpy-expansion2266 ] %port.sroa.37.0.i.i382 = phi i32 [ %683, %Flow3791 ], [ %conv.i.i.i.i.i.i377, %post-loop-memcpy-expansion2266 ] %idx.0.i.i.i.i383 = phi i64 [ %682, %Flow3791 ], [ 56, %post-loop-memcpy-expansion2266 ] %cmp.i.i.i.i384 = icmp ugt i64 %spec.select.i, %idx.0.i.i.i.i383 %671 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i384) %and.i.i.i.i6.i.i385 = and i64 %671, %669 %tobool.not.i.i.i.i386 = icmp ne i64 %and.i.i.i.i6.i.i385, 0 %672 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i387 = getelementptr inbounds nuw i32, ptr %672, i64 %idxprom.i23.i.i.i.i.i378, !amdgpu.uniform !42 %673 = load atomic i32, ptr %arrayidx.i22.i.i.i387 monotonic, align 4 %674 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i386) %675 = extractvalue { i1, i64 } %674, 0 %676 = extractvalue { i1, i64 } %674, 1 br i1 %675, label %cond.false.i8.i.i.i.i388, label %Flow3791 cond.false.i8.i.i.i.i388: ; preds = %while.cond.i.i.i.i381 %677 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %673) %678 = icmp ne i32 %677, %port.sroa.37.0.i.i382 br i1 %678, label %while.body.i.i21.i.i.i.i389.preheader, label %Flow3790, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i389.preheader: ; preds = %cond.false.i8.i.i.i.i388 br label %while.body.i.i21.i.i.i.i389, !amdgpu.uniform !42 Flow3790: ; preds = %Flow3789, %cond.false.i8.i.i.i.i388 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i392, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i389: ; preds = %while.body.i.i21.i.i.i.i389.preheader, %while.body.i.i21.i.i.i.i389 tail call void @llvm.amdgcn.s.sleep(i32 2) %679 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i390 = getelementptr inbounds nuw i32, ptr %679, i64 %idxprom.i23.i.i.i.i.i378, !amdgpu.uniform !42 %680 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i390 monotonic, align 4 %681 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %680) %cmp.i.not.i.i23.i.i.i.i391 = icmp eq i32 %681, %port.sroa.37.0.i.i382 br i1 %cmp.i.not.i.i23.i.i.i.i391, label %Flow3789, label %while.body.i.i21.i.i.i.i389, !amdgpu.uniform !42 Flow3789: ; preds = %while.body.i.i21.i.i.i.i389 br label %Flow3790, !amdgpu.uniform !42 Flow3791: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i393, %while.cond.i.i.i.i381 %682 = phi i64 [ %add.i.i.i.i396, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i393 ], [ poison, %while.cond.i.i.i.i381 ] %683 = phi i32 [ %conv.i.i26.i.i.i.i394, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i393 ], [ poison, %while.cond.i.i.i.i381 ] %684 = phi ptr [ %scevgep3142, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i393 ], [ poison, %while.cond.i.i.i.i381 ] %685 = phi i64 [ %lsr.iv.next3148, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i393 ], [ poison, %while.cond.i.i.i.i381 ] %686 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i393 ], [ true, %while.cond.i.i.i.i381 ] call void @llvm.amdgcn.end.cf.i64(i64 %676) %687 = call i64 @llvm.amdgcn.if.break.i64(i1 %686, i64 %phi.broken3925) %688 = call i1 @llvm.amdgcn.loop.i64(i64 %687) br i1 %688, label %cond.false.i.i.i403, label %while.cond.i.i.i.i381 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i392: ; preds = %Flow3790 fence acquire br i1 %cmp.i.i.i.i384, label %if.then.i.i.i.i.i.i.i397, label %Flow3788, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i397: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i392 %sub.i.i.i.i.i.i.i399 = sub nuw i64 %spec.select.i, %idx.0.i.i.i.i383 %spec.select.i.i.i36.i.i.i.i400 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i399, i64 64) %689 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %690 = and i64 %spec.select.i.i.i36.i.i.i.i400, 15 %691 = sub i64 %spec.select.i.i.i36.i.i.i.i400, %690 %692 = icmp ne i64 %691, 0 br i1 %692, label %loop-memcpy-expansion2261.preheader, label %Flow3787, !amdgpu.uniform !42 loop-memcpy-expansion2261.preheader: ; preds = %if.then.i.i.i.i.i.i.i397 %arrayidx.i20.i35.i.i.i.i401 = getelementptr %"struct.rpc::Buffer", ptr %689, i64 %idxprom.i19.i.i.i.i.i371 %arrayidx.i22.i38.i.i.i.i402 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i401, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2261, !amdgpu.uniform !42 Flow3787: ; preds = %Flow3786, %if.then.i.i.i.i.i.i.i397 br label %loop-memcpy-residual-header2264, !amdgpu.uniform !42 loop-memcpy-expansion2261: ; preds = %loop-memcpy-expansion2261.preheader, %loop-memcpy-expansion2261 %loop-index2262 = phi i64 [ %695, %loop-memcpy-expansion2261 ], [ 0, %loop-memcpy-expansion2261.preheader ] %scevgep3143 = getelementptr i8, ptr %lsr.iv3141, i64 %loop-index2262, !amdgpu.uniform !42 %693 = load <4 x i32>, ptr %scevgep3143, align 1 %694 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i402, i64 %loop-index2262 store <4 x i32> %693, ptr %694, align 1 %695 = add i64 %loop-index2262, 16 %696 = icmp uge i64 %695, %691 br i1 %696, label %Flow3786, label %loop-memcpy-expansion2261, !amdgpu.uniform !42 Flow3785: ; preds = %Flow3784, %loop-memcpy-residual-header2264 br label %Flow3788, !amdgpu.uniform !42 loop-memcpy-residual2263: ; preds = %loop-memcpy-residual2263.preheader, %loop-memcpy-residual2263 %residual-loop-index2265 = phi i64 [ %698, %loop-memcpy-residual2263 ], [ 0, %loop-memcpy-residual2263.preheader ] %scevgep3153 = getelementptr i8, ptr %scevgep3152, i64 %residual-loop-index2265, !amdgpu.uniform !42 %697 = load i8, ptr %scevgep3153, align 1 %scevgep3151 = getelementptr i8, ptr %scevgep3150, i64 %residual-loop-index2265 store i8 %697, ptr %scevgep3151, align 1 %698 = add i64 %residual-loop-index2265, 1 %699 = icmp uge i64 %698, %690 br i1 %699, label %Flow3784, label %loop-memcpy-residual2263, !amdgpu.uniform !42 Flow3784: ; preds = %loop-memcpy-residual2263 br label %Flow3785, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i393: ; preds = %Flow3788 %conv.i.i26.i.i.i.i394 = xor i32 %port.sroa.37.0.i.i382, 1 fence release %700 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i395 = getelementptr inbounds nuw i32, ptr %700, i64 %idxprom.i23.i.i.i.i.i378 store atomic i32 %conv.i.i26.i.i.i.i394, ptr %arrayidx.i24.i29.i.i.i.i395 monotonic, align 4 %add.i.i.i.i396 = add i64 %idx.0.i.i.i.i383, 64 %scevgep3142 = getelementptr i8, ptr %lsr.iv3141, i64 64 %lsr.iv.next3148 = add i64 %lsr.iv3147, -64 br label %Flow3791, !amdgpu.uniform !42 cond.false.i.i.i403: ; preds = %Flow3791 %.lcssa4173 = phi i64 [ %687, %Flow3791 ] %port.sroa.37.0.i.i382.lcssa = phi i32 [ %port.sroa.37.0.i.i382, %Flow3791 ] %.lcssa4172 = phi i32 [ %673, %Flow3791 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4173) %701 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa4172) %702 = icmp ne i32 %701, %port.sroa.37.0.i.i382.lcssa %703 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %702) %704 = extractvalue { i1, i64 } %703, 0 %705 = extractvalue { i1, i64 } %703, 1 br i1 %704, label %while.body.i.i.i.i404.preheader, label %Flow3783 while.body.i.i.i.i404.preheader: ; preds = %cond.false.i.i.i403 br label %while.body.i.i.i.i404, !amdgpu.uniform !42 Flow3783: ; preds = %Flow3782, %cond.false.i.i.i403 call void @llvm.amdgcn.end.cf.i64(i64 %705) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit, !amdgpu.uniform !42 while.body.i.i.i.i404: ; preds = %while.body.i.i.i.i404.preheader, %while.body.i.i.i.i404 %phi.broken3926 = phi i64 [ 0, %while.body.i.i.i.i404.preheader ], [ %709, %while.body.i.i.i.i404 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %706 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i405 = getelementptr inbounds nuw i32, ptr %706, i64 %idxprom.i23.i.i.i.i.i378, !amdgpu.uniform !42 %707 = load atomic i32, ptr %arrayidx.i.i.i8.i.i405 monotonic, align 4 %708 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %707) %cmp.i.not.i.i.i.i406 = icmp eq i32 %708, %port.sroa.37.0.i.i382.lcssa %709 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i406, i64 %phi.broken3926) %710 = call i1 @llvm.amdgcn.loop.i64(i64 %709) br i1 %710, label %Flow3782, label %while.body.i.i.i.i404 Flow3782: ; preds = %while.body.i.i.i.i404 %.lcssa4171 = phi i64 [ %709, %while.body.i.i.i.i404 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4171) br label %Flow3783, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit: ; preds = %Flow3783 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %711 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4178, i1 true) %iszero.i.i.i.i.i13.i.i408 = icmp ne i64 %.lcssa4178, 0 %cmp2.i.i.i.i14.i.i409 = icmp eq i64 %711, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i410 = select i1 %iszero.i.i.i.i.i13.i.i408, i1 %cmp2.i.i.i.i14.i.i409, i1 false %712 = and i32 %.lcssa4179, 31 %conv4.i.i.i19.i.i414 = zext i1 %cmp.i.i.i.i15.i.i410 to i32 %shl.i.i.i20.i.i415 = shl nuw i32 %conv4.i.i.i19.i.i414, %712 %xor.i.i.i21.i.i416 = xor i32 %shl.i.i.i20.i.i415, -1 %713 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2484, !amdgpu.uniform !42 714: ; preds = %ComputeEnd2485 %div8.i.i.i16.i.i411 = lshr i32 %.lcssa4179, 5 %idxprom.i.i.i17.i.i412 = zext nneg i32 %div8.i.i.i16.i.i411 to i64 %715 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i412 %sunkaddr3299 = getelementptr inbounds i8, ptr addrspace(1) %715, i64 40 %716 = atomicrmw and ptr addrspace(1) %sunkaddr3299, i32 %.lcssa4170 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %717, !amdgpu.uniform !42 717: ; preds = %714, %ComputeEnd2485 call void @llvm.amdgcn.end.cf.i64(i64 %3237) tail call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i1.i433, !amdgpu.uniform !42 for.cond.i.i1.i433: ; preds = %717, %Flow3781 %718 = phi i32 [ %756, %Flow3781 ], [ poison, %717 ] %719 = phi i64 [ %757, %Flow3781 ], [ poison, %717 ] %720 = phi i32 [ %758, %Flow3781 ], [ poison, %717 ] %retval.sroa.6.0.i.i.i434 = phi i32 [ %761, %Flow3781 ], [ undef, %717 ] %retval.sroa.2.0.i.i.i436 = phi i64 [ %760, %Flow3781 ], [ undef, %717 ] %retval.sroa.8.0.i.i.i437 = phi i32 [ %759, %Flow3781 ], [ undef, %717 ] %index.0.i.i.i438 = phi i32 [ %763, %Flow3781 ], [ 0, %717 ] %721 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i439 = icmp ult i32 %index.0.i.i.i438, %721 %spec.store.select.i.i.i440 = select i1 %cmp.not.i.i.i439, i32 %index.0.i.i.i438, i32 0 %722 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %723 = and i32 %spec.store.select.i.i.i440, 31 %724 = lshr i64 %722, %sh_prom.i.i.i.i %725 = trunc i64 %724 to i32 %conv4.i.i.i.i.i444 = and i32 %725, 1 %shl.i.i.i.i.i445 = shl nuw i32 %conv4.i.i.i.i.i444, %723 %726 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2488, !amdgpu.uniform !42 727: ; preds = %ComputeEnd2489 %sunkaddr3300 = getelementptr inbounds i8, ptr addrspace(1) %3247, i64 40 %728 = atomicrmw or ptr addrspace(1) %sunkaddr3300, i32 %.lcssa4164 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %729, !amdgpu.uniform !42 729: ; preds = %727, %ComputeEnd2489 %730 = phi i32 [ %728, %727 ], [ poison, %ComputeEnd2489 ] call void @llvm.amdgcn.end.cf.i64(i64 %3256) %731 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %730) %732 = or i32 %731, %.lcssa4165 %shl5.i.i.i.i.i446 = shl nuw i32 1, %723 %and.i.i.i.i.i447 = and i32 %shl5.i.i.i.i.i446, %732 %tobool3.i.i.i.i448 = icmp ne i32 %and.i.i.i.i.i447, 0 %733 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i448) %and.i.i.i.i.i.i449 = and i64 %733, %722 %cmp.i.not.i.i.i450 = icmp ne i64 %722, %and.i.i.i.i.i.i449 br i1 %cmp.i.not.i.i.i450, label %if.then.i.i.i.i451, label %Flow3780, !amdgpu.uniform !42 if.then.i.i.i.i451: ; preds = %729 fence syncscope("agent") acquire %734 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %735 = extractelement <2 x i64> %734, i32 0 %736 = inttoptr i64 %735 to ptr %737 = extractelement <2 x i64> %734, i32 1 %738 = inttoptr i64 %737 to ptr %idxprom.i.i.i.i452 = zext i32 %spec.store.select.i.i.i440 to i64 %arrayidx.i.i.i.i453 = getelementptr inbounds nuw i32, ptr %736, i64 %idxprom.i.i.i.i452, !amdgpu.uniform !42 %739 = load atomic i32, ptr %arrayidx.i.i.i.i453 monotonic, align 4 %740 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %739) %arrayidx.i45.i.i.i454 = getelementptr inbounds nuw i32, ptr %738, i64 %idxprom.i.i.i.i452, !amdgpu.uniform !42 %741 = load atomic i32, ptr %arrayidx.i45.i.i.i454 monotonic, align 4 %742 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %741) %cmp.i46.not.i.i.i455 = icmp ne i32 %740, %742 br i1 %cmp.i46.not.i.i.i455, label %if.then12.i.i.i456, label %Flow3778, !amdgpu.uniform !42 if.then12.i.i.i456: ; preds = %if.then.i.i.i.i451 fence syncscope("agent") release %743 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %722, i1 true) %iszero.i.i.i.i.i.i.i457 = icmp ne i64 %722, 0 %cmp2.i.i.i.i.i.i458 = icmp eq i64 %743, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i459 = select i1 %iszero.i.i.i.i.i.i.i457, i1 %cmp2.i.i.i.i.i.i458, i1 false %conv4.i.i51.i.i.i460 = zext i1 %cmp.i.i.i.i.i.i459 to i32 %shl.i.i52.i.i.i461 = shl nuw i32 %conv4.i.i51.i.i.i460, %723 %xor.i.i.i.i.i462 = xor i32 %shl.i.i52.i.i.i461, -1 %744 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2493, !amdgpu.uniform !42 745: ; preds = %ComputeEnd2494 %sunkaddr3301 = getelementptr inbounds i8, ptr addrspace(1) %3247, i64 40 %746 = atomicrmw and ptr addrspace(1) %sunkaddr3301, i32 %.lcssa4166 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %747, !amdgpu.uniform !42 747: ; preds = %745, %ComputeEnd2494 call void @llvm.amdgcn.end.cf.i64(i64 %3274) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3778, !amdgpu.uniform !42 if.end14.i.i.i522: ; preds = %Flow3778 %748 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %722, i1 true) %iszero.i.i.i.i.i.i523 = icmp ne i64 %722, 0 %cmp2.i.i.i.i.i524 = icmp eq i64 %748, %sh_prom.i.i.i.i %cmp.i.i.i.i.i525 = select i1 %iszero.i.i.i.i.i.i523, i1 %cmp2.i.i.i.i.i524, i1 false %749 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i525) %750 = extractvalue { i1, i64 } %749, 0 %751 = extractvalue { i1, i64 } %749, 1 br i1 %750, label %if.then16.i.i.i527, label %if.end22.i.i.i526 if.then16.i.i.i527: ; preds = %if.end14.i.i.i522 %752 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i528 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %752, i64 %idxprom.i.i.i.i452, i32 1 store i32 1660944387, ptr %opcode.i.i.i528, align 8, !tbaa !77 %arrayidx21.i.i.i529 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %752, i64 %idxprom.i.i.i.i452 store i64 %722, ptr %arrayidx21.i.i.i529, align 8, !tbaa !80 br label %if.end22.i.i.i526, !amdgpu.uniform !42 Flow3779: ; preds = %if.end22.i.i.i526, %Flow3778 %753 = phi i32 [ %740, %if.end22.i.i.i526 ], [ %retval.sroa.8.0.i.i.i437, %Flow3778 ] %754 = phi i64 [ %722, %if.end22.i.i.i526 ], [ %retval.sroa.2.0.i.i.i436, %Flow3778 ] %755 = phi i32 [ %spec.store.select.i.i.i440, %if.end22.i.i.i526 ], [ %retval.sroa.6.0.i.i.i434, %Flow3778 ] br label %cleanup26.i.i.i463, !amdgpu.uniform !42 if.end22.i.i.i526: ; preds = %if.then16.i.i.i527, %if.end14.i.i.i522 call void @llvm.amdgcn.end.cf.i64(i64 %751) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3779, !amdgpu.uniform !42 Flow3780: ; preds = %cleanup26.i.i.i463, %729 %756 = phi i32 [ %755, %cleanup26.i.i.i463 ], [ %718, %729 ] %757 = phi i64 [ %754, %cleanup26.i.i.i463 ], [ %719, %729 ] %758 = phi i32 [ %753, %cleanup26.i.i.i463 ], [ %720, %729 ] %759 = phi i32 [ %753, %cleanup26.i.i.i463 ], [ %retval.sroa.8.0.i.i.i437, %729 ] %760 = phi i64 [ %754, %cleanup26.i.i.i463 ], [ %retval.sroa.2.0.i.i.i436, %729 ] %761 = phi i32 [ %755, %cleanup26.i.i.i463 ], [ %retval.sroa.6.0.i.i.i434, %729 ] %762 = phi i1 [ %cmp.i46.not.i.i.i455, %cleanup26.i.i.i463 ], [ true, %729 ] br i1 %762, label %for.inc.i.i.i468, label %Flow3781, !amdgpu.uniform !42 cleanup26.i.i.i463: ; preds = %Flow3779 br label %Flow3780, !amdgpu.uniform !42 for.inc.i.i.i468: ; preds = %Flow3780 %inc.i.i.i473 = add i32 %spec.store.select.i.i.i440, 1 br label %Flow3781, !amdgpu.uniform !42 Flow3781: ; preds = %for.inc.i.i.i468, %Flow3780 %763 = phi i32 [ %inc.i.i.i473, %for.inc.i.i.i468 ], [ poison, %Flow3780 ] %764 = phi i1 [ false, %for.inc.i.i.i468 ], [ true, %Flow3780 ] br i1 %764, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i474, label %for.cond.i.i1.i433, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i474: ; preds = %Flow3781 %.lcssa4169 = phi i32 [ %756, %Flow3781 ] %.lcssa4168 = phi i64 [ %757, %Flow3781 ] %.lcssa4167 = phi i32 [ %758, %Flow3781 ] fence acquire %765 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i475 = shl i32 %.lcssa4169, 6 %idxprom.i19.i.i.i.i.i476 = zext i32 %mul.i.i.i.i.i.i475 to i64 %arrayidx.i20.i.i.i.i.i477 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %765, i64 %idxprom.i19.i.i.i.i.i476 %arrayidx.i22.i.i.i.i.i478 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i477, i64 %sh_prom.i.i.i.i store i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.34.12 to ptr), i64 10) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.34.12 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i478, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i479 = tail call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.34.12 to ptr), i64 10) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.34.12 to ptr) to i64)), i64 56) %766 = and i64 %spec.select.i.i.i.i.i.i.i479, 15 %767 = sub i64 %spec.select.i.i.i.i.i.i.i479, %766 %768 = icmp ne i64 %767, 0 br i1 %768, label %loop-memcpy-expansion2357.preheader, label %Flow3777, !amdgpu.uniform !42 loop-memcpy-expansion2357.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i474 %769 = add nuw nsw i64 %75, 8 %scevgep3137 = getelementptr i8, ptr %765, i64 %769 %770 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i476, 6 %scevgep3138 = getelementptr i8, ptr %scevgep3137, i64 %770 br label %loop-memcpy-expansion2357, !amdgpu.uniform !42 Flow3777: ; preds = %Flow3776, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i474 br label %loop-memcpy-residual-header2360, !amdgpu.uniform !42 loop-memcpy-expansion2357: ; preds = %loop-memcpy-expansion2357.preheader, %loop-memcpy-expansion2357 %loop-index2358 = phi i64 [ %773, %loop-memcpy-expansion2357 ], [ 0, %loop-memcpy-expansion2357.preheader ] %771 = getelementptr i8, ptr addrspace(4) @.str.34.12, i64 %loop-index2358, !amdgpu.uniform !42 %772 = load <4 x i32>, ptr addrspace(4) %771, align 1 %scevgep3139 = getelementptr i8, ptr %scevgep3138, i64 %loop-index2358 store <4 x i32> %772, ptr %scevgep3139, align 1 %773 = add i64 %loop-index2358, 16 %774 = icmp uge i64 %773, %767 br i1 %774, label %Flow3776, label %loop-memcpy-expansion2357, !amdgpu.uniform !42 Flow3775: ; preds = %Flow3773, %Flow3774 %775 = phi i64 [ %2922, %Flow3773 ], [ %2919, %Flow3774 ] br label %post-loop-memcpy-expansion2356, !amdgpu.uniform !42 loop-memcpy-residual2359: ; preds = %loop-memcpy-residual2359.preheader, %loop-memcpy-residual2359 %residual-loop-index2361 = phi i64 [ %777, %loop-memcpy-residual2359 ], [ 0, %loop-memcpy-residual2359.preheader ] %scevgep3136 = getelementptr i8, ptr addrspace(4) @.str.34.12, i64 %residual-loop-index2361, !amdgpu.uniform !42 %776 = load i8, ptr addrspace(4) %scevgep3136, align 1 %scevgep3135 = getelementptr i8, ptr %scevgep3134, i64 %residual-loop-index2361 store i8 %776, ptr %scevgep3135, align 1 %777 = add i64 %residual-loop-index2361, 1 %778 = icmp uge i64 %777, %766 br i1 %778, label %Flow3773, label %loop-memcpy-residual2359, !amdgpu.uniform !42 Flow3773: ; preds = %loop-memcpy-residual2359 br label %Flow3775, !amdgpu.uniform !42 post-loop-memcpy-expansion2356: ; preds = %Flow3775 %tobool.not.i.i.i.i.i.i481 = icmp eq i32 %.lcssa4167, 0 %conv.i.i.i.i.i.i482 = zext i1 %tobool.not.i.i.i.i.i.i481 to i32 fence release %779 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i483 = zext i32 %.lcssa4169 to i64 %arrayidx.i24.i.i.i.i.i484 = getelementptr inbounds nuw i32, ptr %779, i64 %idxprom.i23.i.i.i.i.i483 store atomic i32 %conv.i.i.i.i.i.i482, ptr %arrayidx.i24.i.i.i.i.i484 monotonic, align 4 %780 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i485 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %780, i64 %idxprom.i23.i.i.i.i.i483, !amdgpu.uniform !42 %781 = load i64, ptr %arrayidx.i.i5.i.i485, align 8, !tbaa !80 br label %while.cond.i.i.i.i486, !amdgpu.uniform !42 while.cond.i.i.i.i486: ; preds = %post-loop-memcpy-expansion2356, %Flow3772 %phi.broken3927 = phi i64 [ 0, %post-loop-memcpy-expansion2356 ], [ %798, %Flow3772 ] %lsr.iv3126 = phi i64 [ %796, %Flow3772 ], [ -46, %post-loop-memcpy-expansion2356 ] %lsr.iv3121 = phi ptr addrspace(4) [ %795, %Flow3772 ], [ getelementptr (i8, ptr addrspace(4) @.str.34.12, i64 56), %post-loop-memcpy-expansion2356 ] %port.sroa.37.0.i.i487 = phi i32 [ %794, %Flow3772 ], [ %conv.i.i.i.i.i.i482, %post-loop-memcpy-expansion2356 ] %idx.0.i.i.i.i488 = phi i64 [ %793, %Flow3772 ], [ 56, %post-loop-memcpy-expansion2356 ] %cmp.i.i.i.i489 = icmp ult i64 %idx.0.i.i.i.i488, sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.34.12 to ptr), i64 10) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.34.12 to ptr) to i64)) %782 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i489) %and.i.i.i.i6.i.i490 = and i64 %782, %781 %tobool.not.i.i.i.i491 = icmp ne i64 %and.i.i.i.i6.i.i490, 0 %783 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i492 = getelementptr inbounds nuw i32, ptr %783, i64 %idxprom.i23.i.i.i.i.i483, !amdgpu.uniform !42 %784 = load atomic i32, ptr %arrayidx.i22.i.i.i492 monotonic, align 4 %785 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i491) %786 = extractvalue { i1, i64 } %785, 0 %787 = extractvalue { i1, i64 } %785, 1 br i1 %786, label %cond.false.i8.i.i.i.i493, label %Flow3772 cond.false.i8.i.i.i.i493: ; preds = %while.cond.i.i.i.i486 %788 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %784) %789 = icmp ne i32 %788, %port.sroa.37.0.i.i487 br i1 %789, label %while.body.i.i21.i.i.i.i494.preheader, label %Flow3771, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i494.preheader: ; preds = %cond.false.i8.i.i.i.i493 br label %while.body.i.i21.i.i.i.i494, !amdgpu.uniform !42 Flow3771: ; preds = %Flow3770, %cond.false.i8.i.i.i.i493 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i497, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i494: ; preds = %while.body.i.i21.i.i.i.i494.preheader, %while.body.i.i21.i.i.i.i494 tail call void @llvm.amdgcn.s.sleep(i32 2) %790 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i495 = getelementptr inbounds nuw i32, ptr %790, i64 %idxprom.i23.i.i.i.i.i483, !amdgpu.uniform !42 %791 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i495 monotonic, align 4 %792 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %791) %cmp.i.not.i.i23.i.i.i.i496 = icmp eq i32 %792, %port.sroa.37.0.i.i487 br i1 %cmp.i.not.i.i23.i.i.i.i496, label %Flow3770, label %while.body.i.i21.i.i.i.i494, !amdgpu.uniform !42 Flow3770: ; preds = %while.body.i.i21.i.i.i.i494 br label %Flow3771, !amdgpu.uniform !42 Flow3772: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i498, %while.cond.i.i.i.i486 %793 = phi i64 [ %add.i.i.i.i501, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i498 ], [ poison, %while.cond.i.i.i.i486 ] %794 = phi i32 [ %conv.i.i26.i.i.i.i499, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i498 ], [ poison, %while.cond.i.i.i.i486 ] %795 = phi ptr addrspace(4) [ %scevgep3122, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i498 ], [ poison, %while.cond.i.i.i.i486 ] %796 = phi i64 [ %lsr.iv.next3127, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i498 ], [ poison, %while.cond.i.i.i.i486 ] %797 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i498 ], [ true, %while.cond.i.i.i.i486 ] call void @llvm.amdgcn.end.cf.i64(i64 %787) %798 = call i64 @llvm.amdgcn.if.break.i64(i1 %797, i64 %phi.broken3927) %799 = call i1 @llvm.amdgcn.loop.i64(i64 %798) br i1 %799, label %cond.false.i.i.i508, label %while.cond.i.i.i.i486 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i497: ; preds = %Flow3771 fence acquire br i1 %cmp.i.i.i.i489, label %if.then.i.i.i.i.i.i.i502, label %Flow3769, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i502: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i497 %sub.i.i.i.i.i.i.i504 = sub nuw i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.34.12 to ptr), i64 10) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.34.12 to ptr) to i64)), %idx.0.i.i.i.i488 %spec.select.i.i.i36.i.i.i.i505 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i504, i64 64) %800 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %801 = and i64 %spec.select.i.i.i36.i.i.i.i505, 15 %802 = sub i64 %spec.select.i.i.i36.i.i.i.i505, %801 %803 = icmp ne i64 %802, 0 br i1 %803, label %loop-memcpy-expansion2363.preheader, label %Flow3768, !amdgpu.uniform !42 loop-memcpy-expansion2363.preheader: ; preds = %if.then.i.i.i.i.i.i.i502 %arrayidx.i20.i35.i.i.i.i506 = getelementptr %"struct.rpc::Buffer", ptr %800, i64 %idxprom.i19.i.i.i.i.i476 %arrayidx.i22.i38.i.i.i.i507 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i506, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2363, !amdgpu.uniform !42 Flow3768: ; preds = %Flow3767, %if.then.i.i.i.i.i.i.i502 br label %loop-memcpy-residual-header2366, !amdgpu.uniform !42 loop-memcpy-expansion2363: ; preds = %loop-memcpy-expansion2363.preheader, %loop-memcpy-expansion2363 %loop-index2364 = phi i64 [ %806, %loop-memcpy-expansion2363 ], [ 0, %loop-memcpy-expansion2363.preheader ] %scevgep3123 = getelementptr i8, ptr addrspace(4) %lsr.iv3121, i64 %loop-index2364, !amdgpu.uniform !42 %804 = load <4 x i32>, ptr addrspace(4) %scevgep3123, align 1 %805 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i507, i64 %loop-index2364 store <4 x i32> %804, ptr %805, align 1 %806 = add i64 %loop-index2364, 16 %807 = icmp uge i64 %806, %802 br i1 %807, label %Flow3767, label %loop-memcpy-expansion2363, !amdgpu.uniform !42 Flow3766: ; preds = %Flow3765, %loop-memcpy-residual-header2366 br label %Flow3769, !amdgpu.uniform !42 loop-memcpy-residual2365: ; preds = %loop-memcpy-residual2365.preheader, %loop-memcpy-residual2365 %residual-loop-index2367 = phi i64 [ %809, %loop-memcpy-residual2365 ], [ 0, %loop-memcpy-residual2365.preheader ] %scevgep3132 = getelementptr i8, ptr addrspace(4) %scevgep3131, i64 %residual-loop-index2367, !amdgpu.uniform !42 %808 = load i8, ptr addrspace(4) %scevgep3132, align 1 %scevgep3130 = getelementptr i8, ptr %scevgep3129, i64 %residual-loop-index2367 store i8 %808, ptr %scevgep3130, align 1 %809 = add i64 %residual-loop-index2367, 1 %810 = icmp uge i64 %809, %801 br i1 %810, label %Flow3765, label %loop-memcpy-residual2365, !amdgpu.uniform !42 Flow3765: ; preds = %loop-memcpy-residual2365 br label %Flow3766, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i498: ; preds = %Flow3769 %conv.i.i26.i.i.i.i499 = xor i32 %port.sroa.37.0.i.i487, 1 fence release %811 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i500 = getelementptr inbounds nuw i32, ptr %811, i64 %idxprom.i23.i.i.i.i.i483 store atomic i32 %conv.i.i26.i.i.i.i499, ptr %arrayidx.i24.i29.i.i.i.i500 monotonic, align 4 %add.i.i.i.i501 = add i64 %idx.0.i.i.i.i488, 64 %scevgep3122 = getelementptr i8, ptr addrspace(4) %lsr.iv3121, i64 64 %lsr.iv.next3127 = add i64 %lsr.iv3126, -64 br label %Flow3772, !amdgpu.uniform !42 cond.false.i.i.i508: ; preds = %Flow3772 %.lcssa4163 = phi i64 [ %798, %Flow3772 ] %port.sroa.37.0.i.i487.lcssa = phi i32 [ %port.sroa.37.0.i.i487, %Flow3772 ] %.lcssa4162 = phi i32 [ %784, %Flow3772 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4163) %812 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa4162) %813 = icmp ne i32 %812, %port.sroa.37.0.i.i487.lcssa %814 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %813) %815 = extractvalue { i1, i64 } %814, 0 %816 = extractvalue { i1, i64 } %814, 1 br i1 %815, label %while.body.i.i.i.i509.preheader, label %Flow3764 while.body.i.i.i.i509.preheader: ; preds = %cond.false.i.i.i508 br label %while.body.i.i.i.i509, !amdgpu.uniform !42 Flow3764: ; preds = %Flow3763, %cond.false.i.i.i508 call void @llvm.amdgcn.end.cf.i64(i64 %816) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit530, !amdgpu.uniform !42 while.body.i.i.i.i509: ; preds = %while.body.i.i.i.i509.preheader, %while.body.i.i.i.i509 %phi.broken3928 = phi i64 [ 0, %while.body.i.i.i.i509.preheader ], [ %820, %while.body.i.i.i.i509 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %817 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i510 = getelementptr inbounds nuw i32, ptr %817, i64 %idxprom.i23.i.i.i.i.i483, !amdgpu.uniform !42 %818 = load atomic i32, ptr %arrayidx.i.i.i8.i.i510 monotonic, align 4 %819 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %818) %cmp.i.not.i.i.i.i511 = icmp eq i32 %819, %port.sroa.37.0.i.i487.lcssa %820 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i511, i64 %phi.broken3928) %821 = call i1 @llvm.amdgcn.loop.i64(i64 %820) br i1 %821, label %Flow3763, label %while.body.i.i.i.i509 Flow3763: ; preds = %while.body.i.i.i.i509 %.lcssa4161 = phi i64 [ %820, %while.body.i.i.i.i509 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4161) br label %Flow3764, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit530: ; preds = %Flow3764 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %822 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4168, i1 true) %iszero.i.i.i.i.i13.i.i513 = icmp ne i64 %.lcssa4168, 0 %cmp2.i.i.i.i14.i.i514 = icmp eq i64 %822, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i515 = select i1 %iszero.i.i.i.i.i13.i.i513, i1 %cmp2.i.i.i.i14.i.i514, i1 false %823 = and i32 %.lcssa4169, 31 %conv4.i.i.i19.i.i519 = zext i1 %cmp.i.i.i.i15.i.i515 to i32 %shl.i.i.i20.i.i520 = shl nuw i32 %conv4.i.i.i19.i.i519, %823 %xor.i.i.i21.i.i521 = xor i32 %shl.i.i.i20.i.i520, -1 %824 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2497, !amdgpu.uniform !42 825: ; preds = %ComputeEnd2498 %div8.i.i.i16.i.i516 = lshr i32 %.lcssa4169, 5 %idxprom.i.i.i17.i.i517 = zext nneg i32 %div8.i.i.i16.i.i516 to i64 %826 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i517 %sunkaddr3302 = getelementptr inbounds i8, ptr addrspace(1) %826, i64 40 %827 = atomicrmw and ptr addrspace(1) %sunkaddr3302, i32 %.lcssa4160 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %828, !amdgpu.uniform !42 828: ; preds = %825, %ComputeEnd2498 call void @llvm.amdgcn.end.cf.i64(i64 %3291) tail call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i.i531, !amdgpu.uniform !42 for.cond.i.i.i531: ; preds = %828, %for.cond.i.i.i531 %phi.broken3929 = phi i64 [ 0, %828 ], [ %831, %for.cond.i.i.i531 ] %lsr.iv3107 = phi i64 [ %lsr.iv.next3108, %for.cond.i.i.i531 ], [ -1, %828 ] %scevgep3119 = getelementptr i8, ptr %LHSStr, i64 %lsr.iv3107 %scevgep3120 = getelementptr i8, ptr %scevgep3119, i64 1 %829 = addrspacecast ptr %scevgep3120 to ptr addrspace(4) %830 = load i8, ptr addrspace(4) %829, align 1, !tbaa !57, !noalias.addrspace !101 %cmp.i.i.i533 = icmp eq i8 %830, 0 %lsr.iv.next3108 = add i64 %lsr.iv3107, 1 %831 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.i.i533, i64 %phi.broken3929) %832 = call i1 @llvm.amdgcn.loop.i64(i64 %831) br i1 %832, label %for.cond.i.i1.i539.preheader, label %for.cond.i.i.i531 for.cond.i.i1.i539.preheader: ; preds = %for.cond.i.i.i531 %lsr.iv.next3108.lcssa = phi i64 [ %lsr.iv.next3108, %for.cond.i.i.i531 ] %.lcssa4159 = phi i64 [ %831, %for.cond.i.i.i531 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4159) br label %for.cond.i.i1.i539, !amdgpu.uniform !42 for.cond.i.i1.i539: ; preds = %for.cond.i.i1.i539.preheader, %Flow3762 %833 = phi i32 [ %871, %Flow3762 ], [ poison, %for.cond.i.i1.i539.preheader ] %834 = phi i64 [ %872, %Flow3762 ], [ poison, %for.cond.i.i1.i539.preheader ] %835 = phi i32 [ %873, %Flow3762 ], [ poison, %for.cond.i.i1.i539.preheader ] %retval.sroa.6.0.i.i.i540 = phi i32 [ %876, %Flow3762 ], [ undef, %for.cond.i.i1.i539.preheader ] %retval.sroa.2.0.i.i.i542 = phi i64 [ %875, %Flow3762 ], [ undef, %for.cond.i.i1.i539.preheader ] %retval.sroa.8.0.i.i.i543 = phi i32 [ %874, %Flow3762 ], [ undef, %for.cond.i.i1.i539.preheader ] %index.0.i.i.i544 = phi i32 [ %878, %Flow3762 ], [ 0, %for.cond.i.i1.i539.preheader ] %836 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i545 = icmp ult i32 %index.0.i.i.i544, %836 %spec.store.select.i.i.i546 = select i1 %cmp.not.i.i.i545, i32 %index.0.i.i.i544, i32 0 %837 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %838 = and i32 %spec.store.select.i.i.i546, 31 %839 = lshr i64 %837, %sh_prom.i.i.i.i %840 = trunc i64 %839 to i32 %conv4.i.i.i.i.i550 = and i32 %840, 1 %shl.i.i.i.i.i551 = shl nuw i32 %conv4.i.i.i.i.i550, %838 %841 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2501, !amdgpu.uniform !42 842: ; preds = %ComputeEnd2502 %sunkaddr3303 = getelementptr inbounds i8, ptr addrspace(1) %3301, i64 40 %843 = atomicrmw or ptr addrspace(1) %sunkaddr3303, i32 %.lcssa4153 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %844, !amdgpu.uniform !42 844: ; preds = %842, %ComputeEnd2502 %845 = phi i32 [ %843, %842 ], [ poison, %ComputeEnd2502 ] call void @llvm.amdgcn.end.cf.i64(i64 %3310) %846 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %845) %847 = or i32 %846, %.lcssa4154 %shl5.i.i.i.i.i552 = shl nuw i32 1, %838 %and.i.i.i.i.i553 = and i32 %shl5.i.i.i.i.i552, %847 %tobool3.i.i.i.i554 = icmp ne i32 %and.i.i.i.i.i553, 0 %848 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i554) %and.i.i.i.i.i.i555 = and i64 %848, %837 %cmp.i.not.i.i.i556 = icmp ne i64 %837, %and.i.i.i.i.i.i555 br i1 %cmp.i.not.i.i.i556, label %if.then.i.i.i.i557, label %Flow3761, !amdgpu.uniform !42 if.then.i.i.i.i557: ; preds = %844 fence syncscope("agent") acquire %849 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %850 = extractelement <2 x i64> %849, i32 0 %851 = inttoptr i64 %850 to ptr %852 = extractelement <2 x i64> %849, i32 1 %853 = inttoptr i64 %852 to ptr %idxprom.i.i.i.i558 = zext i32 %spec.store.select.i.i.i546 to i64 %arrayidx.i.i.i.i559 = getelementptr inbounds nuw i32, ptr %851, i64 %idxprom.i.i.i.i558, !amdgpu.uniform !42 %854 = load atomic i32, ptr %arrayidx.i.i.i.i559 monotonic, align 4 %855 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %854) %arrayidx.i45.i.i.i560 = getelementptr inbounds nuw i32, ptr %853, i64 %idxprom.i.i.i.i558, !amdgpu.uniform !42 %856 = load atomic i32, ptr %arrayidx.i45.i.i.i560 monotonic, align 4 %857 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %856) %cmp.i46.not.i.i.i561 = icmp ne i32 %855, %857 br i1 %cmp.i46.not.i.i.i561, label %if.then12.i.i.i562, label %Flow3759, !amdgpu.uniform !42 if.then12.i.i.i562: ; preds = %if.then.i.i.i.i557 fence syncscope("agent") release %858 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %837, i1 true) %iszero.i.i.i.i.i.i.i563 = icmp ne i64 %837, 0 %cmp2.i.i.i.i.i.i564 = icmp eq i64 %858, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i565 = select i1 %iszero.i.i.i.i.i.i.i563, i1 %cmp2.i.i.i.i.i.i564, i1 false %conv4.i.i51.i.i.i566 = zext i1 %cmp.i.i.i.i.i.i565 to i32 %shl.i.i52.i.i.i567 = shl nuw i32 %conv4.i.i51.i.i.i566, %838 %xor.i.i.i.i.i568 = xor i32 %shl.i.i52.i.i.i567, -1 %859 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2506, !amdgpu.uniform !42 860: ; preds = %ComputeEnd2507 %sunkaddr3304 = getelementptr inbounds i8, ptr addrspace(1) %3301, i64 40 %861 = atomicrmw and ptr addrspace(1) %sunkaddr3304, i32 %.lcssa4155 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %862, !amdgpu.uniform !42 862: ; preds = %860, %ComputeEnd2507 call void @llvm.amdgcn.end.cf.i64(i64 %3328) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3759, !amdgpu.uniform !42 if.end14.i.i.i628: ; preds = %Flow3759 %863 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %837, i1 true) %iszero.i.i.i.i.i.i629 = icmp ne i64 %837, 0 %cmp2.i.i.i.i.i630 = icmp eq i64 %863, %sh_prom.i.i.i.i %cmp.i.i.i.i.i631 = select i1 %iszero.i.i.i.i.i.i629, i1 %cmp2.i.i.i.i.i630, i1 false %864 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i631) %865 = extractvalue { i1, i64 } %864, 0 %866 = extractvalue { i1, i64 } %864, 1 br i1 %865, label %if.then16.i.i.i633, label %if.end22.i.i.i632 if.then16.i.i.i633: ; preds = %if.end14.i.i.i628 %867 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i634 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %867, i64 %idxprom.i.i.i.i558, i32 1 store i32 1660944387, ptr %opcode.i.i.i634, align 8, !tbaa !77 %arrayidx21.i.i.i635 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %867, i64 %idxprom.i.i.i.i558 store i64 %837, ptr %arrayidx21.i.i.i635, align 8, !tbaa !80 br label %if.end22.i.i.i632, !amdgpu.uniform !42 Flow3760: ; preds = %if.end22.i.i.i632, %Flow3759 %868 = phi i32 [ %855, %if.end22.i.i.i632 ], [ %retval.sroa.8.0.i.i.i543, %Flow3759 ] %869 = phi i64 [ %837, %if.end22.i.i.i632 ], [ %retval.sroa.2.0.i.i.i542, %Flow3759 ] %870 = phi i32 [ %spec.store.select.i.i.i546, %if.end22.i.i.i632 ], [ %retval.sroa.6.0.i.i.i540, %Flow3759 ] br label %cleanup26.i.i.i569, !amdgpu.uniform !42 if.end22.i.i.i632: ; preds = %if.then16.i.i.i633, %if.end14.i.i.i628 call void @llvm.amdgcn.end.cf.i64(i64 %866) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3760, !amdgpu.uniform !42 Flow3761: ; preds = %cleanup26.i.i.i569, %844 %871 = phi i32 [ %870, %cleanup26.i.i.i569 ], [ %833, %844 ] %872 = phi i64 [ %869, %cleanup26.i.i.i569 ], [ %834, %844 ] %873 = phi i32 [ %868, %cleanup26.i.i.i569 ], [ %835, %844 ] %874 = phi i32 [ %868, %cleanup26.i.i.i569 ], [ %retval.sroa.8.0.i.i.i543, %844 ] %875 = phi i64 [ %869, %cleanup26.i.i.i569 ], [ %retval.sroa.2.0.i.i.i542, %844 ] %876 = phi i32 [ %870, %cleanup26.i.i.i569 ], [ %retval.sroa.6.0.i.i.i540, %844 ] %877 = phi i1 [ %cmp.i46.not.i.i.i561, %cleanup26.i.i.i569 ], [ true, %844 ] br i1 %877, label %for.inc.i.i.i574, label %Flow3762, !amdgpu.uniform !42 cleanup26.i.i.i569: ; preds = %Flow3760 br label %Flow3761, !amdgpu.uniform !42 for.inc.i.i.i574: ; preds = %Flow3761 %inc.i.i.i579 = add i32 %spec.store.select.i.i.i546, 1 br label %Flow3762, !amdgpu.uniform !42 Flow3762: ; preds = %for.inc.i.i.i574, %Flow3761 %878 = phi i32 [ %inc.i.i.i579, %for.inc.i.i.i574 ], [ poison, %Flow3761 ] %879 = phi i1 [ false, %for.inc.i.i.i574 ], [ true, %Flow3761 ] br i1 %879, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i580, label %for.cond.i.i1.i539, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i580: ; preds = %Flow3762 %.lcssa4158 = phi i32 [ %871, %Flow3762 ] %.lcssa4157 = phi i64 [ %872, %Flow3762 ] %.lcssa4156 = phi i32 [ %873, %Flow3762 ] %scevgep3118 = getelementptr i8, ptr %LHSStr, i64 %lsr.iv.next3108.lcssa %sub.ptr.lhs.cast.i.i.i536 = ptrtoint ptr %scevgep3118 to i64 %sub.ptr.rhs.cast.i.i.i = ptrtoint ptr %LHSStr to i64 %sub.ptr.sub.i.i.i537 = sub i64 %sub.ptr.lhs.cast.i.i.i536, %sub.ptr.rhs.cast.i.i.i fence acquire %880 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i581 = shl i32 %.lcssa4158, 6 %idxprom.i19.i.i.i.i.i582 = zext i32 %mul.i.i.i.i.i.i581 to i64 %arrayidx.i20.i.i.i.i.i583 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %880, i64 %idxprom.i19.i.i.i.i.i582 %arrayidx.i22.i.i.i.i.i584 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i583, i64 %sh_prom.i.i.i.i store i64 %sub.ptr.sub.i.i.i537, ptr %arrayidx.i22.i.i.i.i.i584, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i585 = tail call i64 @llvm.umin.i64(i64 %sub.ptr.sub.i.i.i537, i64 56) %881 = and i64 %spec.select.i.i.i.i.i.i.i585, 15 %882 = sub i64 %spec.select.i.i.i.i.i.i.i585, %881 %883 = icmp ne i64 %882, 0 %884 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %883) %885 = extractvalue { i1, i64 } %884, 0 %886 = extractvalue { i1, i64 } %884, 1 br i1 %885, label %loop-memcpy-expansion2255.preheader, label %Flow3758 loop-memcpy-expansion2255.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i580 %887 = add nuw nsw i64 %75, 8 %scevgep3115 = getelementptr i8, ptr %880, i64 %887 %888 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i582, 6 %scevgep3116 = getelementptr i8, ptr %scevgep3115, i64 %888 br label %loop-memcpy-expansion2255, !amdgpu.uniform !42 Flow3758: ; preds = %Flow3757, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i580 call void @llvm.amdgcn.end.cf.i64(i64 %886) br label %loop-memcpy-residual-header2258, !amdgpu.uniform !42 loop-memcpy-expansion2255: ; preds = %loop-memcpy-expansion2255.preheader, %loop-memcpy-expansion2255 %phi.broken3930 = phi i64 [ 0, %loop-memcpy-expansion2255.preheader ], [ %893, %loop-memcpy-expansion2255 ] %loop-index2256 = phi i64 [ %891, %loop-memcpy-expansion2255 ], [ 0, %loop-memcpy-expansion2255.preheader ] %889 = getelementptr i8, ptr %LHSStr, i64 %loop-index2256 %890 = load <4 x i32>, ptr %889, align 1 %scevgep3117 = getelementptr i8, ptr %scevgep3116, i64 %loop-index2256 store <4 x i32> %890, ptr %scevgep3117, align 1 %891 = add i64 %loop-index2256, 16 %892 = icmp uge i64 %891, %882 %893 = call i64 @llvm.amdgcn.if.break.i64(i1 %892, i64 %phi.broken3930) %894 = call i1 @llvm.amdgcn.loop.i64(i64 %893) br i1 %894, label %Flow3757, label %loop-memcpy-expansion2255 Flow3756: ; preds = %Flow3754, %Flow3755 %895 = phi i64 [ %2830, %Flow3754 ], [ %2823, %Flow3755 ] call void @llvm.amdgcn.end.cf.i64(i64 %2826) br label %post-loop-memcpy-expansion2254, !amdgpu.uniform !42 loop-memcpy-residual2257: ; preds = %loop-memcpy-residual2257.preheader, %loop-memcpy-residual2257 %phi.broken3931 = phi i64 [ 0, %loop-memcpy-residual2257.preheader ], [ %899, %loop-memcpy-residual2257 ] %residual-loop-index2259 = phi i64 [ %897, %loop-memcpy-residual2257 ], [ 0, %loop-memcpy-residual2257.preheader ] %scevgep3114 = getelementptr i8, ptr %scevgep3113, i64 %residual-loop-index2259 %896 = load i8, ptr %scevgep3114, align 1 %scevgep3112 = getelementptr i8, ptr %scevgep3111, i64 %residual-loop-index2259 store i8 %896, ptr %scevgep3112, align 1 %897 = add i64 %residual-loop-index2259, 1 %898 = icmp uge i64 %897, %881 %899 = call i64 @llvm.amdgcn.if.break.i64(i1 %898, i64 %phi.broken3931) %900 = call i1 @llvm.amdgcn.loop.i64(i64 %899) br i1 %900, label %Flow3754, label %loop-memcpy-residual2257 Flow3754: ; preds = %loop-memcpy-residual2257 %.lcssa4151 = phi i64 [ %899, %loop-memcpy-residual2257 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4151) br label %Flow3756, !amdgpu.uniform !42 post-loop-memcpy-expansion2254: ; preds = %Flow3756 %901 = add i64 %lsr.iv.next3108.lcssa, -56 %tobool.not.i.i.i.i.i.i587 = icmp eq i32 %.lcssa4156, 0 %conv.i.i.i.i.i.i588 = zext i1 %tobool.not.i.i.i.i.i.i587 to i32 fence release %902 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i589 = zext i32 %.lcssa4158 to i64 %arrayidx.i24.i.i.i.i.i590 = getelementptr inbounds nuw i32, ptr %902, i64 %idxprom.i23.i.i.i.i.i589 store atomic i32 %conv.i.i.i.i.i.i588, ptr %arrayidx.i24.i.i.i.i.i590 monotonic, align 4 %903 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i591 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %903, i64 %idxprom.i23.i.i.i.i.i589, !amdgpu.uniform !42 %904 = load i64, ptr %arrayidx.i.i5.i.i591, align 8, !tbaa !80 %scevgep3090 = getelementptr i8, ptr %LHSStr, i64 56 br label %while.cond.i.i.i.i592, !amdgpu.uniform !42 while.cond.i.i.i.i592: ; preds = %post-loop-memcpy-expansion2254, %Flow3753 %phi.broken3934 = phi i64 [ 0, %post-loop-memcpy-expansion2254 ], [ %921, %Flow3753 ] %lsr.iv3098 = phi i64 [ %919, %Flow3753 ], [ %901, %post-loop-memcpy-expansion2254 ] %lsr.iv3091 = phi ptr [ %918, %Flow3753 ], [ %scevgep3090, %post-loop-memcpy-expansion2254 ] %port.sroa.37.0.i.i593 = phi i32 [ %917, %Flow3753 ], [ %conv.i.i.i.i.i.i588, %post-loop-memcpy-expansion2254 ] %idx.0.i.i.i.i594 = phi i64 [ %916, %Flow3753 ], [ 56, %post-loop-memcpy-expansion2254 ] %cmp.i.i.i.i595 = icmp ugt i64 %sub.ptr.sub.i.i.i537, %idx.0.i.i.i.i594 %905 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i595) %and.i.i.i.i6.i.i596 = and i64 %905, %904 %tobool.not.i.i.i.i597 = icmp ne i64 %and.i.i.i.i6.i.i596, 0 %906 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i598 = getelementptr inbounds nuw i32, ptr %906, i64 %idxprom.i23.i.i.i.i.i589, !amdgpu.uniform !42 %907 = load atomic i32, ptr %arrayidx.i22.i.i.i598 monotonic, align 4 %908 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i597) %909 = extractvalue { i1, i64 } %908, 0 %910 = extractvalue { i1, i64 } %908, 1 br i1 %909, label %cond.false.i8.i.i.i.i599, label %Flow3753 cond.false.i8.i.i.i.i599: ; preds = %while.cond.i.i.i.i592 %911 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %907) %912 = icmp ne i32 %911, %port.sroa.37.0.i.i593 br i1 %912, label %while.body.i.i21.i.i.i.i600.preheader, label %Flow3752, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i600.preheader: ; preds = %cond.false.i8.i.i.i.i599 br label %while.body.i.i21.i.i.i.i600, !amdgpu.uniform !42 Flow3752: ; preds = %Flow3751, %cond.false.i8.i.i.i.i599 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i603, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i600: ; preds = %while.body.i.i21.i.i.i.i600.preheader, %while.body.i.i21.i.i.i.i600 tail call void @llvm.amdgcn.s.sleep(i32 2) %913 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i601 = getelementptr inbounds nuw i32, ptr %913, i64 %idxprom.i23.i.i.i.i.i589, !amdgpu.uniform !42 %914 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i601 monotonic, align 4 %915 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %914) %cmp.i.not.i.i23.i.i.i.i602 = icmp eq i32 %915, %port.sroa.37.0.i.i593 br i1 %cmp.i.not.i.i23.i.i.i.i602, label %Flow3751, label %while.body.i.i21.i.i.i.i600, !amdgpu.uniform !42 Flow3751: ; preds = %while.body.i.i21.i.i.i.i600 br label %Flow3752, !amdgpu.uniform !42 Flow3753: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i604, %while.cond.i.i.i.i592 %916 = phi i64 [ %add.i.i.i.i607, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i604 ], [ poison, %while.cond.i.i.i.i592 ] %917 = phi i32 [ %conv.i.i26.i.i.i.i605, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i604 ], [ poison, %while.cond.i.i.i.i592 ] %918 = phi ptr [ %scevgep3092, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i604 ], [ poison, %while.cond.i.i.i.i592 ] %919 = phi i64 [ %lsr.iv.next3099, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i604 ], [ poison, %while.cond.i.i.i.i592 ] %920 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i604 ], [ true, %while.cond.i.i.i.i592 ] call void @llvm.amdgcn.end.cf.i64(i64 %910) %921 = call i64 @llvm.amdgcn.if.break.i64(i1 %920, i64 %phi.broken3934) %922 = call i1 @llvm.amdgcn.loop.i64(i64 %921) br i1 %922, label %cond.false.i.i.i614, label %while.cond.i.i.i.i592 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i603: ; preds = %Flow3752 fence acquire %923 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i595) %924 = extractvalue { i1, i64 } %923, 0 %925 = extractvalue { i1, i64 } %923, 1 br i1 %924, label %if.then.i.i.i.i.i.i.i608, label %Flow3750 if.then.i.i.i.i.i.i.i608: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i603 %sub.i.i.i.i.i.i.i610 = sub nuw i64 %sub.ptr.sub.i.i.i537, %idx.0.i.i.i.i594 %spec.select.i.i.i36.i.i.i.i611 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i610, i64 64) %926 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %927 = and i64 %spec.select.i.i.i36.i.i.i.i611, 15 %928 = sub i64 %spec.select.i.i.i36.i.i.i.i611, %927 %929 = icmp ne i64 %928, 0 %930 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %929) %931 = extractvalue { i1, i64 } %930, 0 %932 = extractvalue { i1, i64 } %930, 1 br i1 %931, label %loop-memcpy-expansion2249.preheader, label %Flow3749 loop-memcpy-expansion2249.preheader: ; preds = %if.then.i.i.i.i.i.i.i608 %arrayidx.i20.i35.i.i.i.i612 = getelementptr %"struct.rpc::Buffer", ptr %926, i64 %idxprom.i19.i.i.i.i.i582 %arrayidx.i22.i38.i.i.i.i613 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i612, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2249, !amdgpu.uniform !42 Flow3749: ; preds = %Flow3748, %if.then.i.i.i.i.i.i.i608 call void @llvm.amdgcn.end.cf.i64(i64 %932) br label %loop-memcpy-residual-header2252, !amdgpu.uniform !42 loop-memcpy-expansion2249: ; preds = %loop-memcpy-expansion2249.preheader, %loop-memcpy-expansion2249 %phi.broken3932 = phi i64 [ 0, %loop-memcpy-expansion2249.preheader ], [ %937, %loop-memcpy-expansion2249 ] %loop-index2250 = phi i64 [ %935, %loop-memcpy-expansion2249 ], [ 0, %loop-memcpy-expansion2249.preheader ] %scevgep3093 = getelementptr i8, ptr %lsr.iv3091, i64 %loop-index2250 %933 = load <4 x i32>, ptr %scevgep3093, align 1 %934 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i613, i64 %loop-index2250 store <4 x i32> %933, ptr %934, align 1 %935 = add i64 %loop-index2250, 16 %936 = icmp uge i64 %935, %928 %937 = call i64 @llvm.amdgcn.if.break.i64(i1 %936, i64 %phi.broken3932) %938 = call i1 @llvm.amdgcn.loop.i64(i64 %937) br i1 %938, label %Flow3748, label %loop-memcpy-expansion2249 Flow3747: ; preds = %Flow3746, %loop-memcpy-residual-header2252 call void @llvm.amdgcn.end.cf.i64(i64 %2816) br label %Flow3750, !amdgpu.uniform !42 loop-memcpy-residual2251: ; preds = %loop-memcpy-residual2251.preheader, %loop-memcpy-residual2251 %phi.broken3933 = phi i64 [ 0, %loop-memcpy-residual2251.preheader ], [ %942, %loop-memcpy-residual2251 ] %residual-loop-index2253 = phi i64 [ %940, %loop-memcpy-residual2251 ], [ 0, %loop-memcpy-residual2251.preheader ] %scevgep3105 = getelementptr i8, ptr %scevgep3104, i64 %residual-loop-index2253 %939 = load i8, ptr %scevgep3105, align 1 %scevgep3102 = getelementptr i8, ptr %scevgep3101, i64 %residual-loop-index2253 store i8 %939, ptr %scevgep3102, align 1 %940 = add i64 %residual-loop-index2253, 1 %941 = icmp uge i64 %940, %927 %942 = call i64 @llvm.amdgcn.if.break.i64(i1 %941, i64 %phi.broken3933) %943 = call i1 @llvm.amdgcn.loop.i64(i64 %942) br i1 %943, label %Flow3746, label %loop-memcpy-residual2251 Flow3746: ; preds = %loop-memcpy-residual2251 %.lcssa4148 = phi i64 [ %942, %loop-memcpy-residual2251 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4148) br label %Flow3747, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i604: ; preds = %Flow3750 %conv.i.i26.i.i.i.i605 = xor i32 %port.sroa.37.0.i.i593, 1 fence release %944 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i606 = getelementptr inbounds nuw i32, ptr %944, i64 %idxprom.i23.i.i.i.i.i589 store atomic i32 %conv.i.i26.i.i.i.i605, ptr %arrayidx.i24.i29.i.i.i.i606 monotonic, align 4 %add.i.i.i.i607 = add i64 %idx.0.i.i.i.i594, 64 %scevgep3092 = getelementptr i8, ptr %lsr.iv3091, i64 64 %lsr.iv.next3099 = add i64 %lsr.iv3098, -64 br label %Flow3753, !amdgpu.uniform !42 cond.false.i.i.i614: ; preds = %Flow3753 %.lcssa4150 = phi i64 [ %921, %Flow3753 ] %port.sroa.37.0.i.i593.lcssa = phi i32 [ %port.sroa.37.0.i.i593, %Flow3753 ] %.lcssa4149 = phi i32 [ %907, %Flow3753 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4150) %945 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa4149) %946 = icmp ne i32 %945, %port.sroa.37.0.i.i593.lcssa %947 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %946) %948 = extractvalue { i1, i64 } %947, 0 %949 = extractvalue { i1, i64 } %947, 1 br i1 %948, label %while.body.i.i.i.i615.preheader, label %Flow3745 while.body.i.i.i.i615.preheader: ; preds = %cond.false.i.i.i614 br label %while.body.i.i.i.i615, !amdgpu.uniform !42 Flow3745: ; preds = %Flow3744, %cond.false.i.i.i614 call void @llvm.amdgcn.end.cf.i64(i64 %949) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit636, !amdgpu.uniform !42 while.body.i.i.i.i615: ; preds = %while.body.i.i.i.i615.preheader, %while.body.i.i.i.i615 %phi.broken3935 = phi i64 [ 0, %while.body.i.i.i.i615.preheader ], [ %953, %while.body.i.i.i.i615 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %950 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i616 = getelementptr inbounds nuw i32, ptr %950, i64 %idxprom.i23.i.i.i.i.i589, !amdgpu.uniform !42 %951 = load atomic i32, ptr %arrayidx.i.i.i8.i.i616 monotonic, align 4 %952 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %951) %cmp.i.not.i.i.i.i617 = icmp eq i32 %952, %port.sroa.37.0.i.i593.lcssa %953 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i617, i64 %phi.broken3935) %954 = call i1 @llvm.amdgcn.loop.i64(i64 %953) br i1 %954, label %Flow3744, label %while.body.i.i.i.i615 Flow3744: ; preds = %while.body.i.i.i.i615 %.lcssa4146 = phi i64 [ %953, %while.body.i.i.i.i615 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4146) br label %Flow3745, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit636: ; preds = %Flow3745 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %955 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4157, i1 true) %iszero.i.i.i.i.i13.i.i619 = icmp ne i64 %.lcssa4157, 0 %cmp2.i.i.i.i14.i.i620 = icmp eq i64 %955, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i621 = select i1 %iszero.i.i.i.i.i13.i.i619, i1 %cmp2.i.i.i.i14.i.i620, i1 false %956 = and i32 %.lcssa4158, 31 %conv4.i.i.i19.i.i625 = zext i1 %cmp.i.i.i.i15.i.i621 to i32 %shl.i.i.i20.i.i626 = shl nuw i32 %conv4.i.i.i19.i.i625, %956 %xor.i.i.i21.i.i627 = xor i32 %shl.i.i.i20.i.i626, -1 %957 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2510, !amdgpu.uniform !42 958: ; preds = %ComputeEnd2511 %div8.i.i.i16.i.i622 = lshr i32 %.lcssa4158, 5 %idxprom.i.i.i17.i.i623 = zext nneg i32 %div8.i.i.i16.i.i622 to i64 %959 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i623 %sunkaddr3305 = getelementptr inbounds i8, ptr addrspace(1) %959, i64 40 %960 = atomicrmw and ptr addrspace(1) %sunkaddr3305, i32 %.lcssa4145 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %961, !amdgpu.uniform !42 961: ; preds = %958, %ComputeEnd2511 call void @llvm.amdgcn.end.cf.i64(i64 %3345) tail call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i.i638, !amdgpu.uniform !42 for.cond.i.i.i638: ; preds = %961, %Flow3743 %962 = phi i32 [ %1000, %Flow3743 ], [ poison, %961 ] %963 = phi i64 [ %1001, %Flow3743 ], [ poison, %961 ] %964 = phi i32 [ %1002, %Flow3743 ], [ poison, %961 ] %retval.sroa.6.0.i.i.i639 = phi i32 [ %1005, %Flow3743 ], [ undef, %961 ] %retval.sroa.2.0.i.i.i641 = phi i64 [ %1004, %Flow3743 ], [ undef, %961 ] %retval.sroa.8.0.i.i.i642 = phi i32 [ %1003, %Flow3743 ], [ undef, %961 ] %index.0.i.i.i643 = phi i32 [ %1007, %Flow3743 ], [ 0, %961 ] %965 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i644 = icmp ult i32 %index.0.i.i.i643, %965 %spec.store.select.i.i.i645 = select i1 %cmp.not.i.i.i644, i32 %index.0.i.i.i643, i32 0 %966 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %967 = and i32 %spec.store.select.i.i.i645, 31 %968 = lshr i64 %966, %sh_prom.i.i.i.i %969 = trunc i64 %968 to i32 %conv4.i.i.i.i.i649 = and i32 %969, 1 %shl.i.i.i.i.i650 = shl nuw i32 %conv4.i.i.i.i.i649, %967 %970 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2514, !amdgpu.uniform !42 971: ; preds = %ComputeEnd2515 %sunkaddr3306 = getelementptr inbounds i8, ptr addrspace(1) %3355, i64 40 %972 = atomicrmw or ptr addrspace(1) %sunkaddr3306, i32 %.lcssa4139 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %973, !amdgpu.uniform !42 973: ; preds = %971, %ComputeEnd2515 %974 = phi i32 [ %972, %971 ], [ poison, %ComputeEnd2515 ] call void @llvm.amdgcn.end.cf.i64(i64 %3364) %975 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %974) %976 = or i32 %975, %.lcssa4140 %shl5.i.i.i.i.i651 = shl nuw i32 1, %967 %and.i.i.i.i.i652 = and i32 %shl5.i.i.i.i.i651, %976 %tobool3.i.i.i.i653 = icmp ne i32 %and.i.i.i.i.i652, 0 %977 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i653) %and.i.i.i.i.i.i654 = and i64 %977, %966 %cmp.i.not.i.i.i655 = icmp ne i64 %966, %and.i.i.i.i.i.i654 br i1 %cmp.i.not.i.i.i655, label %if.then.i.i.i.i656, label %Flow3742, !amdgpu.uniform !42 if.then.i.i.i.i656: ; preds = %973 fence syncscope("agent") acquire %978 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %979 = extractelement <2 x i64> %978, i32 0 %980 = inttoptr i64 %979 to ptr %981 = extractelement <2 x i64> %978, i32 1 %982 = inttoptr i64 %981 to ptr %idxprom.i.i.i.i657 = zext i32 %spec.store.select.i.i.i645 to i64 %arrayidx.i.i.i.i658 = getelementptr inbounds nuw i32, ptr %980, i64 %idxprom.i.i.i.i657, !amdgpu.uniform !42 %983 = load atomic i32, ptr %arrayidx.i.i.i.i658 monotonic, align 4 %984 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %983) %arrayidx.i45.i.i.i659 = getelementptr inbounds nuw i32, ptr %982, i64 %idxprom.i.i.i.i657, !amdgpu.uniform !42 %985 = load atomic i32, ptr %arrayidx.i45.i.i.i659 monotonic, align 4 %986 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %985) %cmp.i46.not.i.i.i660 = icmp ne i32 %984, %986 br i1 %cmp.i46.not.i.i.i660, label %if.then12.i.i.i661, label %Flow3740, !amdgpu.uniform !42 if.then12.i.i.i661: ; preds = %if.then.i.i.i.i656 fence syncscope("agent") release %987 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %966, i1 true) %iszero.i.i.i.i.i.i.i662 = icmp ne i64 %966, 0 %cmp2.i.i.i.i.i.i663 = icmp eq i64 %987, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i664 = select i1 %iszero.i.i.i.i.i.i.i662, i1 %cmp2.i.i.i.i.i.i663, i1 false %conv4.i.i51.i.i.i665 = zext i1 %cmp.i.i.i.i.i.i664 to i32 %shl.i.i52.i.i.i666 = shl nuw i32 %conv4.i.i51.i.i.i665, %967 %xor.i.i.i.i.i667 = xor i32 %shl.i.i52.i.i.i666, -1 %988 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2519, !amdgpu.uniform !42 989: ; preds = %ComputeEnd2520 %sunkaddr3307 = getelementptr inbounds i8, ptr addrspace(1) %3355, i64 40 %990 = atomicrmw and ptr addrspace(1) %sunkaddr3307, i32 %.lcssa4141 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %991, !amdgpu.uniform !42 991: ; preds = %989, %ComputeEnd2520 call void @llvm.amdgcn.end.cf.i64(i64 %3382) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3740, !amdgpu.uniform !42 if.end14.i.i.i725: ; preds = %Flow3740 %992 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %966, i1 true) %iszero.i.i.i.i.i.i726 = icmp ne i64 %966, 0 %cmp2.i.i.i.i.i727 = icmp eq i64 %992, %sh_prom.i.i.i.i %cmp.i.i.i.i.i728 = select i1 %iszero.i.i.i.i.i.i726, i1 %cmp2.i.i.i.i.i727, i1 false %993 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i728) %994 = extractvalue { i1, i64 } %993, 0 %995 = extractvalue { i1, i64 } %993, 1 br i1 %994, label %if.then16.i.i.i730, label %if.end22.i.i.i729 if.then16.i.i.i730: ; preds = %if.end14.i.i.i725 %996 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i731 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %996, i64 %idxprom.i.i.i.i657, i32 1 store i32 1660944387, ptr %opcode.i.i.i731, align 8, !tbaa !77 %arrayidx21.i.i.i732 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %996, i64 %idxprom.i.i.i.i657 store i64 %966, ptr %arrayidx21.i.i.i732, align 8, !tbaa !80 br label %if.end22.i.i.i729, !amdgpu.uniform !42 Flow3741: ; preds = %if.end22.i.i.i729, %Flow3740 %997 = phi i32 [ %984, %if.end22.i.i.i729 ], [ %retval.sroa.8.0.i.i.i642, %Flow3740 ] %998 = phi i64 [ %966, %if.end22.i.i.i729 ], [ %retval.sroa.2.0.i.i.i641, %Flow3740 ] %999 = phi i32 [ %spec.store.select.i.i.i645, %if.end22.i.i.i729 ], [ %retval.sroa.6.0.i.i.i639, %Flow3740 ] br label %cleanup26.i.i.i668, !amdgpu.uniform !42 if.end22.i.i.i729: ; preds = %if.then16.i.i.i730, %if.end14.i.i.i725 call void @llvm.amdgcn.end.cf.i64(i64 %995) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3741, !amdgpu.uniform !42 Flow3742: ; preds = %cleanup26.i.i.i668, %973 %1000 = phi i32 [ %999, %cleanup26.i.i.i668 ], [ %962, %973 ] %1001 = phi i64 [ %998, %cleanup26.i.i.i668 ], [ %963, %973 ] %1002 = phi i32 [ %997, %cleanup26.i.i.i668 ], [ %964, %973 ] %1003 = phi i32 [ %997, %cleanup26.i.i.i668 ], [ %retval.sroa.8.0.i.i.i642, %973 ] %1004 = phi i64 [ %998, %cleanup26.i.i.i668 ], [ %retval.sroa.2.0.i.i.i641, %973 ] %1005 = phi i32 [ %999, %cleanup26.i.i.i668 ], [ %retval.sroa.6.0.i.i.i639, %973 ] %1006 = phi i1 [ %cmp.i46.not.i.i.i660, %cleanup26.i.i.i668 ], [ true, %973 ] br i1 %1006, label %for.inc.i.i.i673, label %Flow3743, !amdgpu.uniform !42 cleanup26.i.i.i668: ; preds = %Flow3741 br label %Flow3742, !amdgpu.uniform !42 for.inc.i.i.i673: ; preds = %Flow3742 %inc.i.i.i678 = add i32 %spec.store.select.i.i.i645, 1 br label %Flow3743, !amdgpu.uniform !42 Flow3743: ; preds = %for.inc.i.i.i673, %Flow3742 %1007 = phi i32 [ %inc.i.i.i678, %for.inc.i.i.i673 ], [ poison, %Flow3742 ] %1008 = phi i1 [ false, %for.inc.i.i.i673 ], [ true, %Flow3742 ] br i1 %1008, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i679, label %for.cond.i.i.i638, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i679: ; preds = %Flow3743 %.lcssa4144 = phi i32 [ %1000, %Flow3743 ] %.lcssa4143 = phi i64 [ %1001, %Flow3743 ] %.lcssa4142 = phi i32 [ %1002, %Flow3743 ] fence acquire %1009 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i680 = shl i32 %.lcssa4144, 6 %idxprom.i19.i.i.i.i.i681 = zext i32 %mul.i.i.i.i.i.i680 to i64 %arrayidx.i20.i.i.i.i.i682 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %1009, i64 %idxprom.i19.i.i.i.i.i681 %arrayidx.i22.i.i.i.i.i683 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i682, i64 %sh_prom.i.i.i.i store i64 1, ptr %arrayidx.i22.i.i.i.i.i683, align 8, !tbaa !82 %arrayidx6.i.i.i.i.i.i.i684 = getelementptr inbounds nuw i8, ptr %arrayidx.i22.i.i.i.i.i683, i64 8 store i8 10, ptr %arrayidx6.i.i.i.i.i.i.i684, align 8 %tobool.not.i.i.i.i.i.i685 = icmp eq i32 %.lcssa4142, 0 %conv.i.i.i.i.i.i686 = zext i1 %tobool.not.i.i.i.i.i.i685 to i32 fence release %1010 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i687 = zext i32 %.lcssa4144 to i64 %arrayidx.i24.i.i.i.i.i688 = getelementptr inbounds nuw i32, ptr %1010, i64 %idxprom.i23.i.i.i.i.i687 store atomic i32 %conv.i.i.i.i.i.i686, ptr %arrayidx.i24.i.i.i.i.i688 monotonic, align 4 %1011 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i689 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1011, i64 %idxprom.i23.i.i.i.i.i687, !amdgpu.uniform !42 %1012 = load i64, ptr %arrayidx.i.i5.i.i689, align 8, !tbaa !80 br label %while.cond.i.i.i.i690, !amdgpu.uniform !42 while.cond.i.i.i.i690: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i679, %Flow3739 %phi.broken3936 = phi i64 [ 0, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i679 ], [ %1027, %Flow3739 ] %port.sroa.37.0.i.i691 = phi i32 [ %1025, %Flow3739 ], [ %conv.i.i.i.i.i.i686, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i679 ] %idx.0.i.i.i.i692 = phi i64 [ %1024, %Flow3739 ], [ 56, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i679 ] %cmp.i.i.i.i693 = icmp eq i64 %idx.0.i.i.i.i692, 0 %1013 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i693) %and.i.i.i.i6.i.i694 = and i64 %1013, %1012 %tobool.not.i.i.i.i695 = icmp ne i64 %and.i.i.i.i6.i.i694, 0 %1014 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i696 = getelementptr inbounds nuw i32, ptr %1014, i64 %idxprom.i23.i.i.i.i.i687, !amdgpu.uniform !42 %1015 = load atomic i32, ptr %arrayidx.i22.i.i.i696 monotonic, align 4 %1016 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i695) %1017 = extractvalue { i1, i64 } %1016, 0 %1018 = extractvalue { i1, i64 } %1016, 1 br i1 %1017, label %cond.false.i8.i.i.i.i697, label %Flow3739 cond.false.i8.i.i.i.i697: ; preds = %while.cond.i.i.i.i690 %1019 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1015) %1020 = icmp ne i32 %1019, %port.sroa.37.0.i.i691 br i1 %1020, label %while.body.i.i21.i.i.i.i698.preheader, label %Flow3738, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i698.preheader: ; preds = %cond.false.i8.i.i.i.i697 br label %while.body.i.i21.i.i.i.i698, !amdgpu.uniform !42 Flow3738: ; preds = %Flow3737, %cond.false.i8.i.i.i.i697 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i701, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i698: ; preds = %while.body.i.i21.i.i.i.i698.preheader, %while.body.i.i21.i.i.i.i698 tail call void @llvm.amdgcn.s.sleep(i32 2) %1021 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i699 = getelementptr inbounds nuw i32, ptr %1021, i64 %idxprom.i23.i.i.i.i.i687, !amdgpu.uniform !42 %1022 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i699 monotonic, align 4 %1023 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1022) %cmp.i.not.i.i23.i.i.i.i700 = icmp eq i32 %1023, %port.sroa.37.0.i.i691 br i1 %cmp.i.not.i.i23.i.i.i.i700, label %Flow3737, label %while.body.i.i21.i.i.i.i698, !amdgpu.uniform !42 Flow3737: ; preds = %while.body.i.i21.i.i.i.i698 br label %Flow3738, !amdgpu.uniform !42 Flow3739: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i702, %while.cond.i.i.i.i690 %1024 = phi i64 [ %add.i.i.i.i705, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i702 ], [ poison, %while.cond.i.i.i.i690 ] %1025 = phi i32 [ %conv.i.i26.i.i.i.i703, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i702 ], [ poison, %while.cond.i.i.i.i690 ] %1026 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i702 ], [ true, %while.cond.i.i.i.i690 ] call void @llvm.amdgcn.end.cf.i64(i64 %1018) %1027 = call i64 @llvm.amdgcn.if.break.i64(i1 %1026, i64 %phi.broken3936) %1028 = call i1 @llvm.amdgcn.loop.i64(i64 %1027) br i1 %1028, label %cond.false.i.i.i711, label %while.cond.i.i.i.i690 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i701: ; preds = %Flow3738 fence acquire br i1 %cmp.i.i.i.i693, label %if.then.i.i.i.i.i.i.i706, label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i702, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i706: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i701 %1029 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %arrayidx.i20.i35.i.i.i.i709 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %1029, i64 %idxprom.i19.i.i.i.i.i681 %arrayidx.i22.i38.i.i.i.i710 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i709, i64 %sh_prom.i.i.i.i store i8 10, ptr %arrayidx.i22.i38.i.i.i.i710, align 1 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i702, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i702: ; preds = %if.then.i.i.i.i.i.i.i706, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i701 %conv.i.i26.i.i.i.i703 = xor i32 %port.sroa.37.0.i.i691, 1 fence release %1030 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i704 = getelementptr inbounds nuw i32, ptr %1030, i64 %idxprom.i23.i.i.i.i.i687 store atomic i32 %conv.i.i26.i.i.i.i703, ptr %arrayidx.i24.i29.i.i.i.i704 monotonic, align 4 %add.i.i.i.i705 = add i64 %idx.0.i.i.i.i692, 64 br label %Flow3739, !amdgpu.uniform !42 cond.false.i.i.i711: ; preds = %Flow3739 %.lcssa4138 = phi i64 [ %1027, %Flow3739 ] %port.sroa.37.0.i.i691.lcssa = phi i32 [ %port.sroa.37.0.i.i691, %Flow3739 ] %.lcssa4137 = phi i32 [ %1015, %Flow3739 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4138) %1031 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa4137) %1032 = icmp ne i32 %1031, %port.sroa.37.0.i.i691.lcssa %1033 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1032) %1034 = extractvalue { i1, i64 } %1033, 0 %1035 = extractvalue { i1, i64 } %1033, 1 br i1 %1034, label %while.body.i.i.i.i712.preheader, label %Flow3736 while.body.i.i.i.i712.preheader: ; preds = %cond.false.i.i.i711 br label %while.body.i.i.i.i712, !amdgpu.uniform !42 Flow3736: ; preds = %Flow3735, %cond.false.i.i.i711 call void @llvm.amdgcn.end.cf.i64(i64 %1035) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit, !amdgpu.uniform !42 while.body.i.i.i.i712: ; preds = %while.body.i.i.i.i712.preheader, %while.body.i.i.i.i712 %phi.broken3937 = phi i64 [ 0, %while.body.i.i.i.i712.preheader ], [ %1039, %while.body.i.i.i.i712 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %1036 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i713 = getelementptr inbounds nuw i32, ptr %1036, i64 %idxprom.i23.i.i.i.i.i687, !amdgpu.uniform !42 %1037 = load atomic i32, ptr %arrayidx.i.i.i8.i.i713 monotonic, align 4 %1038 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1037) %cmp.i.not.i.i.i.i714 = icmp eq i32 %1038, %port.sroa.37.0.i.i691.lcssa %1039 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i714, i64 %phi.broken3937) %1040 = call i1 @llvm.amdgcn.loop.i64(i64 %1039) br i1 %1040, label %Flow3735, label %while.body.i.i.i.i712 Flow3735: ; preds = %while.body.i.i.i.i712 %.lcssa4136 = phi i64 [ %1039, %while.body.i.i.i.i712 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4136) br label %Flow3736, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit: ; preds = %Flow3736 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %1041 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4143, i1 true) %iszero.i.i.i.i.i13.i.i716 = icmp ne i64 %.lcssa4143, 0 %cmp2.i.i.i.i14.i.i717 = icmp eq i64 %1041, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i718 = select i1 %iszero.i.i.i.i.i13.i.i716, i1 %cmp2.i.i.i.i14.i.i717, i1 false %1042 = and i32 %.lcssa4144, 31 %conv4.i.i.i19.i.i722 = zext i1 %cmp.i.i.i.i15.i.i718 to i32 %shl.i.i.i20.i.i723 = shl nuw i32 %conv4.i.i.i19.i.i722, %1042 %xor.i.i.i21.i.i724 = xor i32 %shl.i.i.i20.i.i723, -1 %1043 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2523, !amdgpu.uniform !42 1044: ; preds = %ComputeEnd2524 %div8.i.i.i16.i.i719 = lshr i32 %.lcssa4144, 5 %idxprom.i.i.i17.i.i720 = zext nneg i32 %div8.i.i.i16.i.i719 to i64 %1045 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i720 %sunkaddr3308 = getelementptr inbounds i8, ptr addrspace(1) %1045, i64 40 %1046 = atomicrmw and ptr addrspace(1) %sunkaddr3308, i32 %.lcssa4135 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1047, !amdgpu.uniform !42 1047: ; preds = %1044, %ComputeEnd2524 call void @llvm.amdgcn.end.cf.i64(i64 %3399) tail call void @llvm.amdgcn.wave.barrier() br i1 %cmp2.i.i.i35.i, label %if.then3.i.i.i65.i, label %if.end4.i.i.i54.i, !amdgpu.uniform !42 if.then3.i.i.i65.i: ; preds = %1047 %mul.i.i.i66.i = mul nuw i64 %inc.i.i.i32.i, 11 %div18.i.i.i67.i = lshr i64 %mul.i.i.i66.i, 3 br label %if.end4.i.i.i54.i, !amdgpu.uniform !42 if.end4.i.i.i54.i: ; preds = %if.then3.i.i.i65.i, %1047 %new_capacity.addr.0.i.i.i55.i = phi i64 [ %div18.i.i.i67.i, %if.then3.i.i.i65.i ], [ %inc.i.i.i32.i, %1047 ] %sub.i.i733 = add i64 %new_capacity.addr.0.i.i.i55.i, 7 %div2.i.i734 = and i64 %sub.i.i733, -8 %1048 = load ptr, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %add.ptr.i.i735 = getelementptr inbounds nuw i8, ptr %1048, i64 %div2.i.i734 store ptr %add.ptr.i.i735, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 br i1 %597, label %loop-memcpy-expansion2291.preheader, label %Flow3734, !amdgpu.uniform !42 loop-memcpy-expansion2291.preheader: ; preds = %if.end4.i.i.i54.i br label %loop-memcpy-expansion2291, !amdgpu.uniform !42 Flow3734: ; preds = %Flow3733, %if.end4.i.i.i54.i br label %loop-memcpy-residual-header2294, !amdgpu.uniform !42 loop-memcpy-expansion2291: ; preds = %loop-memcpy-expansion2291.preheader, %loop-memcpy-expansion2291 %loop-index2292 = phi i64 [ %1052, %loop-memcpy-expansion2291 ], [ 0, %loop-memcpy-expansion2291.preheader ] %1049 = getelementptr i8, ptr %3, i64 %loop-index2292, !amdgpu.uniform !42 %1050 = load <4 x i32>, ptr %1049, align 1 %1051 = getelementptr i8, ptr %1048, i64 %loop-index2292 store <4 x i32> %1050, ptr %1051, align 1 %1052 = add i64 %loop-index2292, 16 %1053 = icmp uge i64 %1052, %596 br i1 %1053, label %Flow3733, label %loop-memcpy-expansion2291, !amdgpu.uniform !42 Flow3732: ; preds = %Flow3731, %loop-memcpy-residual-header2294 br label %post-loop-memcpy-expansion2290, !amdgpu.uniform !42 loop-memcpy-residual2293: ; preds = %loop-memcpy-residual2293.preheader, %loop-memcpy-residual2293 %residual-loop-index2295 = phi i64 [ %1055, %loop-memcpy-residual2293 ], [ 0, %loop-memcpy-residual2293.preheader ] %scevgep3089 = getelementptr i8, ptr %scevgep3088, i64 %residual-loop-index2295, !amdgpu.uniform !42 %1054 = load i8, ptr %scevgep3089, align 1 %scevgep3087 = getelementptr i8, ptr %scevgep3086, i64 %residual-loop-index2295 store i8 %1054, ptr %scevgep3087, align 1 %1055 = add i64 %residual-loop-index2295, 1 %1056 = icmp uge i64 %1055, %595 br i1 %1056, label %Flow3731, label %loop-memcpy-residual2293, !amdgpu.uniform !42 Flow3731: ; preds = %loop-memcpy-residual2293 br label %Flow3732, !amdgpu.uniform !42 post-loop-memcpy-expansion2290: ; preds = %Flow3732 %sub.ptr.lhs.cast.i.i736 = ptrtoint ptr %add.ptr.i.i735 to i64 %sub.ptr.sub.i.i737 = sub i64 %sub.ptr.lhs.cast.i.i736, ptrtoint (ptr addrspacecast (ptr addrspace(1) @_ZN12_GLOBAL__N_16memoryE to ptr) to i64) %cmp.i.i738 = icmp ugt i64 %sub.ptr.sub.i.i737, 65335 %cond.i.i739 = select i1 %cmp.i.i738, ptr null, ptr %1048 %cmp.not.i10.i.i62.i = icmp ne ptr %cond.i.i739, addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr) br i1 %cmp.not.i10.i.i62.i, label %if.then.i.i.i63.i, label %for.cond.i.i.i741.preheader, !amdgpu.uniform !42 if.then.i.i.i63.i: ; preds = %post-loop-memcpy-expansion2290 %arrayidx.i.i.i64.i = getelementptr inbounds nuw i8, ptr %1048, i64 %spec.select.i store i8 0, ptr %arrayidx.i.i.i64.i, align 1, !tbaa !57 br label %for.cond.i.i.i741.preheader, !amdgpu.uniform !42 for.cond.i.i.i741.preheader: ; preds = %if.then.i.i.i63.i, %post-loop-memcpy-expansion2290 br label %for.cond.i.i.i741, !amdgpu.uniform !42 for.cond.i.i.i741: ; preds = %for.cond.i.i.i741.preheader, %Flow3730 %1057 = phi i32 [ %1095, %Flow3730 ], [ poison, %for.cond.i.i.i741.preheader ] %1058 = phi i64 [ %1096, %Flow3730 ], [ poison, %for.cond.i.i.i741.preheader ] %1059 = phi i32 [ %1097, %Flow3730 ], [ poison, %for.cond.i.i.i741.preheader ] %retval.sroa.6.0.i.i.i742 = phi i32 [ %1100, %Flow3730 ], [ undef, %for.cond.i.i.i741.preheader ] %retval.sroa.2.0.i.i.i744 = phi i64 [ %1099, %Flow3730 ], [ undef, %for.cond.i.i.i741.preheader ] %retval.sroa.8.0.i.i.i745 = phi i32 [ %1098, %Flow3730 ], [ undef, %for.cond.i.i.i741.preheader ] %index.0.i.i.i746 = phi i32 [ %1102, %Flow3730 ], [ 0, %for.cond.i.i.i741.preheader ] %1060 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i747 = icmp ult i32 %index.0.i.i.i746, %1060 %spec.store.select.i.i.i748 = select i1 %cmp.not.i.i.i747, i32 %index.0.i.i.i746, i32 0 %1061 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %1062 = and i32 %spec.store.select.i.i.i748, 31 %1063 = lshr i64 %1061, %sh_prom.i.i.i.i %1064 = trunc i64 %1063 to i32 %conv4.i.i.i.i.i752 = and i32 %1064, 1 %shl.i.i.i.i.i753 = shl nuw i32 %conv4.i.i.i.i.i752, %1062 %1065 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2527, !amdgpu.uniform !42 1066: ; preds = %ComputeEnd2528 %sunkaddr3309 = getelementptr inbounds i8, ptr addrspace(1) %3409, i64 40 %1067 = atomicrmw or ptr addrspace(1) %sunkaddr3309, i32 %.lcssa4129 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1068, !amdgpu.uniform !42 1068: ; preds = %1066, %ComputeEnd2528 %1069 = phi i32 [ %1067, %1066 ], [ poison, %ComputeEnd2528 ] call void @llvm.amdgcn.end.cf.i64(i64 %3418) %1070 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %1069) %1071 = or i32 %1070, %.lcssa4130 %shl5.i.i.i.i.i754 = shl nuw i32 1, %1062 %and.i.i.i.i.i755 = and i32 %shl5.i.i.i.i.i754, %1071 %tobool3.i.i.i.i756 = icmp ne i32 %and.i.i.i.i.i755, 0 %1072 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i756) %and.i.i.i.i.i.i757 = and i64 %1072, %1061 %cmp.i.not.i.i.i758 = icmp ne i64 %1061, %and.i.i.i.i.i.i757 br i1 %cmp.i.not.i.i.i758, label %if.then.i.i.i.i759, label %Flow3729, !amdgpu.uniform !42 if.then.i.i.i.i759: ; preds = %1068 fence syncscope("agent") acquire %1073 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %1074 = extractelement <2 x i64> %1073, i32 0 %1075 = inttoptr i64 %1074 to ptr %1076 = extractelement <2 x i64> %1073, i32 1 %1077 = inttoptr i64 %1076 to ptr %idxprom.i.i.i.i760 = zext i32 %spec.store.select.i.i.i748 to i64 %arrayidx.i.i.i.i761 = getelementptr inbounds nuw i32, ptr %1075, i64 %idxprom.i.i.i.i760, !amdgpu.uniform !42 %1078 = load atomic i32, ptr %arrayidx.i.i.i.i761 monotonic, align 4 %1079 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1078) %arrayidx.i45.i.i.i762 = getelementptr inbounds nuw i32, ptr %1077, i64 %idxprom.i.i.i.i760, !amdgpu.uniform !42 %1080 = load atomic i32, ptr %arrayidx.i45.i.i.i762 monotonic, align 4 %1081 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1080) %cmp.i46.not.i.i.i763 = icmp ne i32 %1079, %1081 br i1 %cmp.i46.not.i.i.i763, label %if.then12.i.i.i764, label %Flow3727, !amdgpu.uniform !42 if.then12.i.i.i764: ; preds = %if.then.i.i.i.i759 fence syncscope("agent") release %1082 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1061, i1 true) %iszero.i.i.i.i.i.i.i765 = icmp ne i64 %1061, 0 %cmp2.i.i.i.i.i.i766 = icmp eq i64 %1082, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i767 = select i1 %iszero.i.i.i.i.i.i.i765, i1 %cmp2.i.i.i.i.i.i766, i1 false %conv4.i.i51.i.i.i768 = zext i1 %cmp.i.i.i.i.i.i767 to i32 %shl.i.i52.i.i.i769 = shl nuw i32 %conv4.i.i51.i.i.i768, %1062 %xor.i.i.i.i.i770 = xor i32 %shl.i.i52.i.i.i769, -1 %1083 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2532, !amdgpu.uniform !42 1084: ; preds = %ComputeEnd2533 %sunkaddr3310 = getelementptr inbounds i8, ptr addrspace(1) %3409, i64 40 %1085 = atomicrmw and ptr addrspace(1) %sunkaddr3310, i32 %.lcssa4131 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1086, !amdgpu.uniform !42 1086: ; preds = %1084, %ComputeEnd2533 call void @llvm.amdgcn.end.cf.i64(i64 %3436) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3727, !amdgpu.uniform !42 if.end14.i.i.i830: ; preds = %Flow3727 %1087 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1061, i1 true) %iszero.i.i.i.i.i.i831 = icmp ne i64 %1061, 0 %cmp2.i.i.i.i.i832 = icmp eq i64 %1087, %sh_prom.i.i.i.i %cmp.i.i.i.i.i833 = select i1 %iszero.i.i.i.i.i.i831, i1 %cmp2.i.i.i.i.i832, i1 false %1088 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i833) %1089 = extractvalue { i1, i64 } %1088, 0 %1090 = extractvalue { i1, i64 } %1088, 1 br i1 %1089, label %if.then16.i.i.i835, label %if.end22.i.i.i834 if.then16.i.i.i835: ; preds = %if.end14.i.i.i830 %1091 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i836 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1091, i64 %idxprom.i.i.i.i760, i32 1 store i32 1660944387, ptr %opcode.i.i.i836, align 8, !tbaa !77 %arrayidx21.i.i.i837 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1091, i64 %idxprom.i.i.i.i760 store i64 %1061, ptr %arrayidx21.i.i.i837, align 8, !tbaa !80 br label %if.end22.i.i.i834, !amdgpu.uniform !42 Flow3728: ; preds = %if.end22.i.i.i834, %Flow3727 %1092 = phi i32 [ %1079, %if.end22.i.i.i834 ], [ %retval.sroa.8.0.i.i.i745, %Flow3727 ] %1093 = phi i64 [ %1061, %if.end22.i.i.i834 ], [ %retval.sroa.2.0.i.i.i744, %Flow3727 ] %1094 = phi i32 [ %spec.store.select.i.i.i748, %if.end22.i.i.i834 ], [ %retval.sroa.6.0.i.i.i742, %Flow3727 ] br label %cleanup26.i.i.i771, !amdgpu.uniform !42 if.end22.i.i.i834: ; preds = %if.then16.i.i.i835, %if.end14.i.i.i830 call void @llvm.amdgcn.end.cf.i64(i64 %1090) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3728, !amdgpu.uniform !42 Flow3729: ; preds = %cleanup26.i.i.i771, %1068 %1095 = phi i32 [ %1094, %cleanup26.i.i.i771 ], [ %1057, %1068 ] %1096 = phi i64 [ %1093, %cleanup26.i.i.i771 ], [ %1058, %1068 ] %1097 = phi i32 [ %1092, %cleanup26.i.i.i771 ], [ %1059, %1068 ] %1098 = phi i32 [ %1092, %cleanup26.i.i.i771 ], [ %retval.sroa.8.0.i.i.i745, %1068 ] %1099 = phi i64 [ %1093, %cleanup26.i.i.i771 ], [ %retval.sroa.2.0.i.i.i744, %1068 ] %1100 = phi i32 [ %1094, %cleanup26.i.i.i771 ], [ %retval.sroa.6.0.i.i.i742, %1068 ] %1101 = phi i1 [ %cmp.i46.not.i.i.i763, %cleanup26.i.i.i771 ], [ true, %1068 ] br i1 %1101, label %for.inc.i.i.i776, label %Flow3730, !amdgpu.uniform !42 cleanup26.i.i.i771: ; preds = %Flow3728 br label %Flow3729, !amdgpu.uniform !42 for.inc.i.i.i776: ; preds = %Flow3729 %inc.i.i.i781 = add i32 %spec.store.select.i.i.i748, 1 br label %Flow3730, !amdgpu.uniform !42 Flow3730: ; preds = %for.inc.i.i.i776, %Flow3729 %1102 = phi i32 [ %inc.i.i.i781, %for.inc.i.i.i776 ], [ poison, %Flow3729 ] %1103 = phi i1 [ false, %for.inc.i.i.i776 ], [ true, %Flow3729 ] br i1 %1103, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i782, label %for.cond.i.i.i741, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i782: ; preds = %Flow3730 %.lcssa4134 = phi i32 [ %1095, %Flow3730 ] %.lcssa4133 = phi i64 [ %1096, %Flow3730 ] %.lcssa4132 = phi i32 [ %1097, %Flow3730 ] fence acquire %1104 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i783 = shl i32 %.lcssa4134, 6 %idxprom.i19.i.i.i.i.i784 = zext i32 %mul.i.i.i.i.i.i783 to i64 %arrayidx.i20.i.i.i.i.i785 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %1104, i64 %idxprom.i19.i.i.i.i.i784 %arrayidx.i22.i.i.i.i.i786 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i785, i64 %sh_prom.i.i.i.i store i64 %spec.select.i, ptr %arrayidx.i22.i.i.i.i.i786, align 8, !tbaa !82 br i1 %656, label %loop-memcpy-expansion2243.preheader, label %Flow3726, !amdgpu.uniform !42 loop-memcpy-expansion2243.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i782 %1105 = add nuw nsw i64 %75, 8 %scevgep3083 = getelementptr i8, ptr %1104, i64 %1105 %1106 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i784, 6 %scevgep3084 = getelementptr i8, ptr %scevgep3083, i64 %1106 br label %loop-memcpy-expansion2243, !amdgpu.uniform !42 Flow3726: ; preds = %Flow3725, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i782 br label %loop-memcpy-residual-header2246, !amdgpu.uniform !42 loop-memcpy-expansion2243: ; preds = %loop-memcpy-expansion2243.preheader, %loop-memcpy-expansion2243 %loop-index2244 = phi i64 [ %1109, %loop-memcpy-expansion2243 ], [ 0, %loop-memcpy-expansion2243.preheader ] %1107 = getelementptr i8, ptr %1048, i64 %loop-index2244, !amdgpu.uniform !42 %1108 = load <4 x i32>, ptr %1107, align 1 %scevgep3085 = getelementptr i8, ptr %scevgep3084, i64 %loop-index2244 store <4 x i32> %1108, ptr %scevgep3085, align 1 %1109 = add i64 %loop-index2244, 16 %1110 = icmp uge i64 %1109, %655 br i1 %1110, label %Flow3725, label %loop-memcpy-expansion2243, !amdgpu.uniform !42 Flow3724: ; preds = %Flow3722, %Flow3723 %1111 = phi i64 [ %2812, %Flow3722 ], [ %2808, %Flow3723 ] br label %post-loop-memcpy-expansion2242, !amdgpu.uniform !42 loop-memcpy-residual2245: ; preds = %loop-memcpy-residual2245.preheader, %loop-memcpy-residual2245 %residual-loop-index2247 = phi i64 [ %1113, %loop-memcpy-residual2245 ], [ 0, %loop-memcpy-residual2245.preheader ] %scevgep3082 = getelementptr i8, ptr %scevgep3081, i64 %residual-loop-index2247, !amdgpu.uniform !42 %1112 = load i8, ptr %scevgep3082, align 1 %scevgep3080 = getelementptr i8, ptr %scevgep3079, i64 %residual-loop-index2247 store i8 %1112, ptr %scevgep3080, align 1 %1113 = add i64 %residual-loop-index2247, 1 %1114 = icmp uge i64 %1113, %654 br i1 %1114, label %Flow3722, label %loop-memcpy-residual2245, !amdgpu.uniform !42 Flow3722: ; preds = %loop-memcpy-residual2245 br label %Flow3724, !amdgpu.uniform !42 post-loop-memcpy-expansion2242: ; preds = %Flow3724 %tobool.not.i.i.i.i.i.i789 = icmp eq i32 %.lcssa4132, 0 %conv.i.i.i.i.i.i790 = zext i1 %tobool.not.i.i.i.i.i.i789 to i32 fence release %1115 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i791 = zext i32 %.lcssa4134 to i64 %arrayidx.i24.i.i.i.i.i792 = getelementptr inbounds nuw i32, ptr %1115, i64 %idxprom.i23.i.i.i.i.i791 store atomic i32 %conv.i.i.i.i.i.i790, ptr %arrayidx.i24.i.i.i.i.i792 monotonic, align 4 %1116 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i793 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1116, i64 %idxprom.i23.i.i.i.i.i791, !amdgpu.uniform !42 %1117 = load i64, ptr %arrayidx.i.i5.i.i793, align 8, !tbaa !80 %scevgep3064 = getelementptr i8, ptr %1048, i64 56 br label %while.cond.i.i.i.i794, !amdgpu.uniform !42 while.cond.i.i.i.i794: ; preds = %post-loop-memcpy-expansion2242, %Flow3721 %phi.broken3938 = phi i64 [ 0, %post-loop-memcpy-expansion2242 ], [ %1134, %Flow3721 ] %lsr.iv3071 = phi i64 [ %1132, %Flow3721 ], [ %670, %post-loop-memcpy-expansion2242 ] %lsr.iv3065 = phi ptr [ %1131, %Flow3721 ], [ %scevgep3064, %post-loop-memcpy-expansion2242 ] %port.sroa.37.0.i.i795 = phi i32 [ %1130, %Flow3721 ], [ %conv.i.i.i.i.i.i790, %post-loop-memcpy-expansion2242 ] %idx.0.i.i.i.i796 = phi i64 [ %1129, %Flow3721 ], [ 56, %post-loop-memcpy-expansion2242 ] %cmp.i.i.i.i797 = icmp ugt i64 %spec.select.i, %idx.0.i.i.i.i796 %1118 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i797) %and.i.i.i.i6.i.i798 = and i64 %1118, %1117 %tobool.not.i.i.i.i799 = icmp ne i64 %and.i.i.i.i6.i.i798, 0 %1119 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i800 = getelementptr inbounds nuw i32, ptr %1119, i64 %idxprom.i23.i.i.i.i.i791, !amdgpu.uniform !42 %1120 = load atomic i32, ptr %arrayidx.i22.i.i.i800 monotonic, align 4 %1121 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i799) %1122 = extractvalue { i1, i64 } %1121, 0 %1123 = extractvalue { i1, i64 } %1121, 1 br i1 %1122, label %cond.false.i8.i.i.i.i801, label %Flow3721 cond.false.i8.i.i.i.i801: ; preds = %while.cond.i.i.i.i794 %1124 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1120) %1125 = icmp ne i32 %1124, %port.sroa.37.0.i.i795 br i1 %1125, label %while.body.i.i21.i.i.i.i802.preheader, label %Flow3720, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i802.preheader: ; preds = %cond.false.i8.i.i.i.i801 br label %while.body.i.i21.i.i.i.i802, !amdgpu.uniform !42 Flow3720: ; preds = %Flow3719, %cond.false.i8.i.i.i.i801 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i805, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i802: ; preds = %while.body.i.i21.i.i.i.i802.preheader, %while.body.i.i21.i.i.i.i802 tail call void @llvm.amdgcn.s.sleep(i32 2) %1126 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i803 = getelementptr inbounds nuw i32, ptr %1126, i64 %idxprom.i23.i.i.i.i.i791, !amdgpu.uniform !42 %1127 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i803 monotonic, align 4 %1128 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1127) %cmp.i.not.i.i23.i.i.i.i804 = icmp eq i32 %1128, %port.sroa.37.0.i.i795 br i1 %cmp.i.not.i.i23.i.i.i.i804, label %Flow3719, label %while.body.i.i21.i.i.i.i802, !amdgpu.uniform !42 Flow3719: ; preds = %while.body.i.i21.i.i.i.i802 br label %Flow3720, !amdgpu.uniform !42 Flow3721: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i806, %while.cond.i.i.i.i794 %1129 = phi i64 [ %add.i.i.i.i809, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i806 ], [ poison, %while.cond.i.i.i.i794 ] %1130 = phi i32 [ %conv.i.i26.i.i.i.i807, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i806 ], [ poison, %while.cond.i.i.i.i794 ] %1131 = phi ptr [ %scevgep3066, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i806 ], [ poison, %while.cond.i.i.i.i794 ] %1132 = phi i64 [ %lsr.iv.next3072, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i806 ], [ poison, %while.cond.i.i.i.i794 ] %1133 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i806 ], [ true, %while.cond.i.i.i.i794 ] call void @llvm.amdgcn.end.cf.i64(i64 %1123) %1134 = call i64 @llvm.amdgcn.if.break.i64(i1 %1133, i64 %phi.broken3938) %1135 = call i1 @llvm.amdgcn.loop.i64(i64 %1134) br i1 %1135, label %cond.false.i.i.i816, label %while.cond.i.i.i.i794 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i805: ; preds = %Flow3720 fence acquire br i1 %cmp.i.i.i.i797, label %if.then.i.i.i.i.i.i.i810, label %Flow3718, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i810: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i805 %sub.i.i.i.i.i.i.i812 = sub nuw i64 %spec.select.i, %idx.0.i.i.i.i796 %spec.select.i.i.i36.i.i.i.i813 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i812, i64 64) %1136 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %1137 = and i64 %spec.select.i.i.i36.i.i.i.i813, 15 %1138 = sub i64 %spec.select.i.i.i36.i.i.i.i813, %1137 %1139 = icmp ne i64 %1138, 0 br i1 %1139, label %loop-memcpy-expansion2237.preheader, label %Flow3717, !amdgpu.uniform !42 loop-memcpy-expansion2237.preheader: ; preds = %if.then.i.i.i.i.i.i.i810 %arrayidx.i20.i35.i.i.i.i814 = getelementptr %"struct.rpc::Buffer", ptr %1136, i64 %idxprom.i19.i.i.i.i.i784 %arrayidx.i22.i38.i.i.i.i815 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i814, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2237, !amdgpu.uniform !42 Flow3717: ; preds = %Flow3716, %if.then.i.i.i.i.i.i.i810 br label %loop-memcpy-residual-header2240, !amdgpu.uniform !42 loop-memcpy-expansion2237: ; preds = %loop-memcpy-expansion2237.preheader, %loop-memcpy-expansion2237 %loop-index2238 = phi i64 [ %1142, %loop-memcpy-expansion2237 ], [ 0, %loop-memcpy-expansion2237.preheader ] %scevgep3067 = getelementptr i8, ptr %lsr.iv3065, i64 %loop-index2238, !amdgpu.uniform !42 %1140 = load <4 x i32>, ptr %scevgep3067, align 1 %1141 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i815, i64 %loop-index2238 store <4 x i32> %1140, ptr %1141, align 1 %1142 = add i64 %loop-index2238, 16 %1143 = icmp uge i64 %1142, %1138 br i1 %1143, label %Flow3716, label %loop-memcpy-expansion2237, !amdgpu.uniform !42 Flow3715: ; preds = %Flow3714, %loop-memcpy-residual-header2240 br label %Flow3718, !amdgpu.uniform !42 loop-memcpy-residual2239: ; preds = %loop-memcpy-residual2239.preheader, %loop-memcpy-residual2239 %residual-loop-index2241 = phi i64 [ %1145, %loop-memcpy-residual2239 ], [ 0, %loop-memcpy-residual2239.preheader ] %scevgep3077 = getelementptr i8, ptr %scevgep3076, i64 %residual-loop-index2241, !amdgpu.uniform !42 %1144 = load i8, ptr %scevgep3077, align 1 %scevgep3075 = getelementptr i8, ptr %scevgep3074, i64 %residual-loop-index2241 store i8 %1144, ptr %scevgep3075, align 1 %1145 = add i64 %residual-loop-index2241, 1 %1146 = icmp uge i64 %1145, %1137 br i1 %1146, label %Flow3714, label %loop-memcpy-residual2239, !amdgpu.uniform !42 Flow3714: ; preds = %loop-memcpy-residual2239 br label %Flow3715, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i806: ; preds = %Flow3718 %conv.i.i26.i.i.i.i807 = xor i32 %port.sroa.37.0.i.i795, 1 fence release %1147 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i808 = getelementptr inbounds nuw i32, ptr %1147, i64 %idxprom.i23.i.i.i.i.i791 store atomic i32 %conv.i.i26.i.i.i.i807, ptr %arrayidx.i24.i29.i.i.i.i808 monotonic, align 4 %add.i.i.i.i809 = add i64 %idx.0.i.i.i.i796, 64 %scevgep3066 = getelementptr i8, ptr %lsr.iv3065, i64 64 %lsr.iv.next3072 = add i64 %lsr.iv3071, -64 br label %Flow3721, !amdgpu.uniform !42 cond.false.i.i.i816: ; preds = %Flow3721 %.lcssa4128 = phi i64 [ %1134, %Flow3721 ] %port.sroa.37.0.i.i795.lcssa = phi i32 [ %port.sroa.37.0.i.i795, %Flow3721 ] %.lcssa4127 = phi i32 [ %1120, %Flow3721 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4128) %1148 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa4127) %1149 = icmp ne i32 %1148, %port.sroa.37.0.i.i795.lcssa %1150 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1149) %1151 = extractvalue { i1, i64 } %1150, 0 %1152 = extractvalue { i1, i64 } %1150, 1 br i1 %1151, label %while.body.i.i.i.i817.preheader, label %Flow3713 while.body.i.i.i.i817.preheader: ; preds = %cond.false.i.i.i816 br label %while.body.i.i.i.i817, !amdgpu.uniform !42 Flow3713: ; preds = %Flow3712, %cond.false.i.i.i816 call void @llvm.amdgcn.end.cf.i64(i64 %1152) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit838, !amdgpu.uniform !42 while.body.i.i.i.i817: ; preds = %while.body.i.i.i.i817.preheader, %while.body.i.i.i.i817 %phi.broken3939 = phi i64 [ 0, %while.body.i.i.i.i817.preheader ], [ %1156, %while.body.i.i.i.i817 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %1153 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i818 = getelementptr inbounds nuw i32, ptr %1153, i64 %idxprom.i23.i.i.i.i.i791, !amdgpu.uniform !42 %1154 = load atomic i32, ptr %arrayidx.i.i.i8.i.i818 monotonic, align 4 %1155 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1154) %cmp.i.not.i.i.i.i819 = icmp eq i32 %1155, %port.sroa.37.0.i.i795.lcssa %1156 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i819, i64 %phi.broken3939) %1157 = call i1 @llvm.amdgcn.loop.i64(i64 %1156) br i1 %1157, label %Flow3712, label %while.body.i.i.i.i817 Flow3712: ; preds = %while.body.i.i.i.i817 %.lcssa4126 = phi i64 [ %1156, %while.body.i.i.i.i817 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4126) br label %Flow3713, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit838: ; preds = %Flow3713 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %1158 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4133, i1 true) %iszero.i.i.i.i.i13.i.i821 = icmp ne i64 %.lcssa4133, 0 %cmp2.i.i.i.i14.i.i822 = icmp eq i64 %1158, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i823 = select i1 %iszero.i.i.i.i.i13.i.i821, i1 %cmp2.i.i.i.i14.i.i822, i1 false %1159 = and i32 %.lcssa4134, 31 %conv4.i.i.i19.i.i827 = zext i1 %cmp.i.i.i.i15.i.i823 to i32 %shl.i.i.i20.i.i828 = shl nuw i32 %conv4.i.i.i19.i.i827, %1159 %xor.i.i.i21.i.i829 = xor i32 %shl.i.i.i20.i.i828, -1 %1160 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2536, !amdgpu.uniform !42 1161: ; preds = %ComputeEnd2537 %div8.i.i.i16.i.i824 = lshr i32 %.lcssa4134, 5 %idxprom.i.i.i17.i.i825 = zext nneg i32 %div8.i.i.i16.i.i824 to i64 %1162 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i825 %sunkaddr3311 = getelementptr inbounds i8, ptr addrspace(1) %1162, i64 40 %1163 = atomicrmw and ptr addrspace(1) %sunkaddr3311, i32 %.lcssa4125 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1164, !amdgpu.uniform !42 1164: ; preds = %1161, %ComputeEnd2537 call void @llvm.amdgcn.end.cf.i64(i64 %3453) tail call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i1.i847, !amdgpu.uniform !42 for.cond.i.i1.i847: ; preds = %1164, %Flow3711 %1165 = phi i32 [ %1203, %Flow3711 ], [ poison, %1164 ] %1166 = phi i64 [ %1204, %Flow3711 ], [ poison, %1164 ] %1167 = phi i32 [ %1205, %Flow3711 ], [ poison, %1164 ] %retval.sroa.6.0.i.i.i848 = phi i32 [ %1208, %Flow3711 ], [ undef, %1164 ] %retval.sroa.2.0.i.i.i850 = phi i64 [ %1207, %Flow3711 ], [ undef, %1164 ] %retval.sroa.8.0.i.i.i851 = phi i32 [ %1206, %Flow3711 ], [ undef, %1164 ] %index.0.i.i.i852 = phi i32 [ %1210, %Flow3711 ], [ 0, %1164 ] %1168 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i853 = icmp ult i32 %index.0.i.i.i852, %1168 %spec.store.select.i.i.i854 = select i1 %cmp.not.i.i.i853, i32 %index.0.i.i.i852, i32 0 %1169 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %1170 = and i32 %spec.store.select.i.i.i854, 31 %1171 = lshr i64 %1169, %sh_prom.i.i.i.i %1172 = trunc i64 %1171 to i32 %conv4.i.i.i.i.i858 = and i32 %1172, 1 %shl.i.i.i.i.i859 = shl nuw i32 %conv4.i.i.i.i.i858, %1170 %1173 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2540, !amdgpu.uniform !42 1174: ; preds = %ComputeEnd2541 %sunkaddr3312 = getelementptr inbounds i8, ptr addrspace(1) %3463, i64 40 %1175 = atomicrmw or ptr addrspace(1) %sunkaddr3312, i32 %.lcssa4119 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1176, !amdgpu.uniform !42 1176: ; preds = %1174, %ComputeEnd2541 %1177 = phi i32 [ %1175, %1174 ], [ poison, %ComputeEnd2541 ] call void @llvm.amdgcn.end.cf.i64(i64 %3472) %1178 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %1177) %1179 = or i32 %1178, %.lcssa4120 %shl5.i.i.i.i.i860 = shl nuw i32 1, %1170 %and.i.i.i.i.i861 = and i32 %shl5.i.i.i.i.i860, %1179 %tobool3.i.i.i.i862 = icmp ne i32 %and.i.i.i.i.i861, 0 %1180 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i862) %and.i.i.i.i.i.i863 = and i64 %1180, %1169 %cmp.i.not.i.i.i864 = icmp ne i64 %1169, %and.i.i.i.i.i.i863 br i1 %cmp.i.not.i.i.i864, label %if.then.i.i.i.i865, label %Flow3710, !amdgpu.uniform !42 if.then.i.i.i.i865: ; preds = %1176 fence syncscope("agent") acquire %1181 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %1182 = extractelement <2 x i64> %1181, i32 0 %1183 = inttoptr i64 %1182 to ptr %1184 = extractelement <2 x i64> %1181, i32 1 %1185 = inttoptr i64 %1184 to ptr %idxprom.i.i.i.i866 = zext i32 %spec.store.select.i.i.i854 to i64 %arrayidx.i.i.i.i867 = getelementptr inbounds nuw i32, ptr %1183, i64 %idxprom.i.i.i.i866, !amdgpu.uniform !42 %1186 = load atomic i32, ptr %arrayidx.i.i.i.i867 monotonic, align 4 %1187 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1186) %arrayidx.i45.i.i.i868 = getelementptr inbounds nuw i32, ptr %1185, i64 %idxprom.i.i.i.i866, !amdgpu.uniform !42 %1188 = load atomic i32, ptr %arrayidx.i45.i.i.i868 monotonic, align 4 %1189 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1188) %cmp.i46.not.i.i.i869 = icmp ne i32 %1187, %1189 br i1 %cmp.i46.not.i.i.i869, label %if.then12.i.i.i870, label %Flow3708, !amdgpu.uniform !42 if.then12.i.i.i870: ; preds = %if.then.i.i.i.i865 fence syncscope("agent") release %1190 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1169, i1 true) %iszero.i.i.i.i.i.i.i871 = icmp ne i64 %1169, 0 %cmp2.i.i.i.i.i.i872 = icmp eq i64 %1190, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i873 = select i1 %iszero.i.i.i.i.i.i.i871, i1 %cmp2.i.i.i.i.i.i872, i1 false %conv4.i.i51.i.i.i874 = zext i1 %cmp.i.i.i.i.i.i873 to i32 %shl.i.i52.i.i.i875 = shl nuw i32 %conv4.i.i51.i.i.i874, %1170 %xor.i.i.i.i.i876 = xor i32 %shl.i.i52.i.i.i875, -1 %1191 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2545, !amdgpu.uniform !42 1192: ; preds = %ComputeEnd2546 %sunkaddr3313 = getelementptr inbounds i8, ptr addrspace(1) %3463, i64 40 %1193 = atomicrmw and ptr addrspace(1) %sunkaddr3313, i32 %.lcssa4121 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1194, !amdgpu.uniform !42 1194: ; preds = %1192, %ComputeEnd2546 call void @llvm.amdgcn.end.cf.i64(i64 %3490) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3708, !amdgpu.uniform !42 if.end14.i.i.i936: ; preds = %Flow3708 %1195 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1169, i1 true) %iszero.i.i.i.i.i.i937 = icmp ne i64 %1169, 0 %cmp2.i.i.i.i.i938 = icmp eq i64 %1195, %sh_prom.i.i.i.i %cmp.i.i.i.i.i939 = select i1 %iszero.i.i.i.i.i.i937, i1 %cmp2.i.i.i.i.i938, i1 false %1196 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i939) %1197 = extractvalue { i1, i64 } %1196, 0 %1198 = extractvalue { i1, i64 } %1196, 1 br i1 %1197, label %if.then16.i.i.i941, label %if.end22.i.i.i940 if.then16.i.i.i941: ; preds = %if.end14.i.i.i936 %1199 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i942 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1199, i64 %idxprom.i.i.i.i866, i32 1 store i32 1660944387, ptr %opcode.i.i.i942, align 8, !tbaa !77 %arrayidx21.i.i.i943 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1199, i64 %idxprom.i.i.i.i866 store i64 %1169, ptr %arrayidx21.i.i.i943, align 8, !tbaa !80 br label %if.end22.i.i.i940, !amdgpu.uniform !42 Flow3709: ; preds = %if.end22.i.i.i940, %Flow3708 %1200 = phi i32 [ %1187, %if.end22.i.i.i940 ], [ %retval.sroa.8.0.i.i.i851, %Flow3708 ] %1201 = phi i64 [ %1169, %if.end22.i.i.i940 ], [ %retval.sroa.2.0.i.i.i850, %Flow3708 ] %1202 = phi i32 [ %spec.store.select.i.i.i854, %if.end22.i.i.i940 ], [ %retval.sroa.6.0.i.i.i848, %Flow3708 ] br label %cleanup26.i.i.i877, !amdgpu.uniform !42 if.end22.i.i.i940: ; preds = %if.then16.i.i.i941, %if.end14.i.i.i936 call void @llvm.amdgcn.end.cf.i64(i64 %1198) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3709, !amdgpu.uniform !42 Flow3710: ; preds = %cleanup26.i.i.i877, %1176 %1203 = phi i32 [ %1202, %cleanup26.i.i.i877 ], [ %1165, %1176 ] %1204 = phi i64 [ %1201, %cleanup26.i.i.i877 ], [ %1166, %1176 ] %1205 = phi i32 [ %1200, %cleanup26.i.i.i877 ], [ %1167, %1176 ] %1206 = phi i32 [ %1200, %cleanup26.i.i.i877 ], [ %retval.sroa.8.0.i.i.i851, %1176 ] %1207 = phi i64 [ %1201, %cleanup26.i.i.i877 ], [ %retval.sroa.2.0.i.i.i850, %1176 ] %1208 = phi i32 [ %1202, %cleanup26.i.i.i877 ], [ %retval.sroa.6.0.i.i.i848, %1176 ] %1209 = phi i1 [ %cmp.i46.not.i.i.i869, %cleanup26.i.i.i877 ], [ true, %1176 ] br i1 %1209, label %for.inc.i.i.i882, label %Flow3711, !amdgpu.uniform !42 cleanup26.i.i.i877: ; preds = %Flow3709 br label %Flow3710, !amdgpu.uniform !42 for.inc.i.i.i882: ; preds = %Flow3710 %inc.i.i.i887 = add i32 %spec.store.select.i.i.i854, 1 br label %Flow3711, !amdgpu.uniform !42 Flow3711: ; preds = %for.inc.i.i.i882, %Flow3710 %1210 = phi i32 [ %inc.i.i.i887, %for.inc.i.i.i882 ], [ poison, %Flow3710 ] %1211 = phi i1 [ false, %for.inc.i.i.i882 ], [ true, %Flow3710 ] br i1 %1211, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i888, label %for.cond.i.i1.i847, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i888: ; preds = %Flow3711 %.lcssa4124 = phi i32 [ %1203, %Flow3711 ] %.lcssa4123 = phi i64 [ %1204, %Flow3711 ] %.lcssa4122 = phi i32 [ %1205, %Flow3711 ] fence acquire %1212 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i889 = shl i32 %.lcssa4124, 6 %idxprom.i19.i.i.i.i.i890 = zext i32 %mul.i.i.i.i.i.i889 to i64 %arrayidx.i20.i.i.i.i.i891 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %1212, i64 %idxprom.i19.i.i.i.i.i890 %arrayidx.i22.i.i.i.i.i892 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i891, i64 %sh_prom.i.i.i.i store i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.35 to ptr), i64 10) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.35 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i892, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i893 = tail call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.35 to ptr), i64 10) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.35 to ptr) to i64)), i64 56) %1213 = and i64 %spec.select.i.i.i.i.i.i.i893, 15 %1214 = sub i64 %spec.select.i.i.i.i.i.i.i893, %1213 %1215 = icmp ne i64 %1214, 0 br i1 %1215, label %loop-memcpy-expansion2369.preheader, label %Flow3707, !amdgpu.uniform !42 loop-memcpy-expansion2369.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i888 %1216 = add nuw nsw i64 %75, 8 %scevgep3061 = getelementptr i8, ptr %1212, i64 %1216 %1217 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i890, 6 %scevgep3062 = getelementptr i8, ptr %scevgep3061, i64 %1217 br label %loop-memcpy-expansion2369, !amdgpu.uniform !42 Flow3707: ; preds = %Flow3706, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i888 br label %loop-memcpy-residual-header2372, !amdgpu.uniform !42 loop-memcpy-expansion2369: ; preds = %loop-memcpy-expansion2369.preheader, %loop-memcpy-expansion2369 %loop-index2370 = phi i64 [ %1220, %loop-memcpy-expansion2369 ], [ 0, %loop-memcpy-expansion2369.preheader ] %1218 = getelementptr i8, ptr addrspace(4) @.str.35, i64 %loop-index2370, !amdgpu.uniform !42 %1219 = load <4 x i32>, ptr addrspace(4) %1218, align 1 %scevgep3063 = getelementptr i8, ptr %scevgep3062, i64 %loop-index2370 store <4 x i32> %1219, ptr %scevgep3063, align 1 %1220 = add i64 %loop-index2370, 16 %1221 = icmp uge i64 %1220, %1214 br i1 %1221, label %Flow3706, label %loop-memcpy-expansion2369, !amdgpu.uniform !42 Flow3705: ; preds = %Flow3703, %Flow3704 %1222 = phi i64 [ %2930, %Flow3703 ], [ %2927, %Flow3704 ] br label %post-loop-memcpy-expansion2368, !amdgpu.uniform !42 loop-memcpy-residual2371: ; preds = %loop-memcpy-residual2371.preheader, %loop-memcpy-residual2371 %residual-loop-index2373 = phi i64 [ %1224, %loop-memcpy-residual2371 ], [ 0, %loop-memcpy-residual2371.preheader ] %scevgep3060 = getelementptr i8, ptr addrspace(4) @.str.35, i64 %residual-loop-index2373, !amdgpu.uniform !42 %1223 = load i8, ptr addrspace(4) %scevgep3060, align 1 %scevgep3059 = getelementptr i8, ptr %scevgep3058, i64 %residual-loop-index2373 store i8 %1223, ptr %scevgep3059, align 1 %1224 = add i64 %residual-loop-index2373, 1 %1225 = icmp uge i64 %1224, %1213 br i1 %1225, label %Flow3703, label %loop-memcpy-residual2371, !amdgpu.uniform !42 Flow3703: ; preds = %loop-memcpy-residual2371 br label %Flow3705, !amdgpu.uniform !42 post-loop-memcpy-expansion2368: ; preds = %Flow3705 %tobool.not.i.i.i.i.i.i895 = icmp eq i32 %.lcssa4122, 0 %conv.i.i.i.i.i.i896 = zext i1 %tobool.not.i.i.i.i.i.i895 to i32 fence release %1226 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i897 = zext i32 %.lcssa4124 to i64 %arrayidx.i24.i.i.i.i.i898 = getelementptr inbounds nuw i32, ptr %1226, i64 %idxprom.i23.i.i.i.i.i897 store atomic i32 %conv.i.i.i.i.i.i896, ptr %arrayidx.i24.i.i.i.i.i898 monotonic, align 4 %1227 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i899 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1227, i64 %idxprom.i23.i.i.i.i.i897, !amdgpu.uniform !42 %1228 = load i64, ptr %arrayidx.i.i5.i.i899, align 8, !tbaa !80 br label %while.cond.i.i.i.i900, !amdgpu.uniform !42 while.cond.i.i.i.i900: ; preds = %post-loop-memcpy-expansion2368, %Flow3701 %phi.broken3940 = phi i64 [ 0, %post-loop-memcpy-expansion2368 ], [ %1245, %Flow3701 ] %lsr.iv3050 = phi i64 [ %1243, %Flow3701 ], [ -46, %post-loop-memcpy-expansion2368 ] %lsr.iv3045 = phi ptr addrspace(4) [ %1242, %Flow3701 ], [ getelementptr (i8, ptr addrspace(4) @.str.35, i64 56), %post-loop-memcpy-expansion2368 ] %port.sroa.37.0.i.i901 = phi i32 [ %1241, %Flow3701 ], [ %conv.i.i.i.i.i.i896, %post-loop-memcpy-expansion2368 ] %idx.0.i.i.i.i902 = phi i64 [ %1240, %Flow3701 ], [ 56, %post-loop-memcpy-expansion2368 ] %cmp.i.i.i.i903 = icmp ult i64 %idx.0.i.i.i.i902, sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.35 to ptr), i64 10) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.35 to ptr) to i64)) %1229 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i903) %and.i.i.i.i6.i.i904 = and i64 %1229, %1228 %tobool.not.i.i.i.i905 = icmp ne i64 %and.i.i.i.i6.i.i904, 0 %1230 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i906 = getelementptr inbounds nuw i32, ptr %1230, i64 %idxprom.i23.i.i.i.i.i897, !amdgpu.uniform !42 %1231 = load atomic i32, ptr %arrayidx.i22.i.i.i906 monotonic, align 4 %1232 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i905) %1233 = extractvalue { i1, i64 } %1232, 0 %1234 = extractvalue { i1, i64 } %1232, 1 br i1 %1233, label %cond.false.i8.i.i.i.i907, label %Flow3701 cond.false.i8.i.i.i.i907: ; preds = %while.cond.i.i.i.i900 %1235 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1231) %1236 = icmp ne i32 %1235, %port.sroa.37.0.i.i901 br i1 %1236, label %while.body.i.i21.i.i.i.i908.preheader, label %Flow3700, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i908.preheader: ; preds = %cond.false.i8.i.i.i.i907 br label %while.body.i.i21.i.i.i.i908, !amdgpu.uniform !42 Flow3700: ; preds = %Flow3698, %cond.false.i8.i.i.i.i907 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i911, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i908: ; preds = %while.body.i.i21.i.i.i.i908.preheader, %while.body.i.i21.i.i.i.i908 tail call void @llvm.amdgcn.s.sleep(i32 2) %1237 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i909 = getelementptr inbounds nuw i32, ptr %1237, i64 %idxprom.i23.i.i.i.i.i897, !amdgpu.uniform !42 %1238 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i909 monotonic, align 4 %1239 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1238) %cmp.i.not.i.i23.i.i.i.i910 = icmp eq i32 %1239, %port.sroa.37.0.i.i901 br i1 %cmp.i.not.i.i23.i.i.i.i910, label %Flow3698, label %while.body.i.i21.i.i.i.i908, !amdgpu.uniform !42 Flow3698: ; preds = %while.body.i.i21.i.i.i.i908 br label %Flow3700, !amdgpu.uniform !42 Flow3701: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i912, %while.cond.i.i.i.i900 %1240 = phi i64 [ %add.i.i.i.i915, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i912 ], [ poison, %while.cond.i.i.i.i900 ] %1241 = phi i32 [ %conv.i.i26.i.i.i.i913, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i912 ], [ poison, %while.cond.i.i.i.i900 ] %1242 = phi ptr addrspace(4) [ %scevgep3046, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i912 ], [ poison, %while.cond.i.i.i.i900 ] %1243 = phi i64 [ %lsr.iv.next3051, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i912 ], [ poison, %while.cond.i.i.i.i900 ] %1244 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i912 ], [ true, %while.cond.i.i.i.i900 ] call void @llvm.amdgcn.end.cf.i64(i64 %1234) %1245 = call i64 @llvm.amdgcn.if.break.i64(i1 %1244, i64 %phi.broken3940) %1246 = call i1 @llvm.amdgcn.loop.i64(i64 %1245) br i1 %1246, label %cond.false.i.i.i922, label %while.cond.i.i.i.i900 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i911: ; preds = %Flow3700 fence acquire br i1 %cmp.i.i.i.i903, label %if.then.i.i.i.i.i.i.i916, label %Flow3697, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i916: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i911 %sub.i.i.i.i.i.i.i918 = sub nuw i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.35 to ptr), i64 10) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.35 to ptr) to i64)), %idx.0.i.i.i.i902 %spec.select.i.i.i36.i.i.i.i919 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i918, i64 64) %1247 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %1248 = and i64 %spec.select.i.i.i36.i.i.i.i919, 15 %1249 = sub i64 %spec.select.i.i.i36.i.i.i.i919, %1248 %1250 = icmp ne i64 %1249, 0 br i1 %1250, label %loop-memcpy-expansion2381.preheader, label %Flow3696, !amdgpu.uniform !42 loop-memcpy-expansion2381.preheader: ; preds = %if.then.i.i.i.i.i.i.i916 %arrayidx.i20.i35.i.i.i.i920 = getelementptr %"struct.rpc::Buffer", ptr %1247, i64 %idxprom.i19.i.i.i.i.i890 %arrayidx.i22.i38.i.i.i.i921 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i920, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2381, !amdgpu.uniform !42 Flow3696: ; preds = %Flow3695, %if.then.i.i.i.i.i.i.i916 br label %loop-memcpy-residual-header2384, !amdgpu.uniform !42 loop-memcpy-expansion2381: ; preds = %loop-memcpy-expansion2381.preheader, %loop-memcpy-expansion2381 %loop-index2382 = phi i64 [ %1253, %loop-memcpy-expansion2381 ], [ 0, %loop-memcpy-expansion2381.preheader ] %scevgep3047 = getelementptr i8, ptr addrspace(4) %lsr.iv3045, i64 %loop-index2382, !amdgpu.uniform !42 %1251 = load <4 x i32>, ptr addrspace(4) %scevgep3047, align 1 %1252 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i921, i64 %loop-index2382 store <4 x i32> %1251, ptr %1252, align 1 %1253 = add i64 %loop-index2382, 16 %1254 = icmp uge i64 %1253, %1249 br i1 %1254, label %Flow3695, label %loop-memcpy-expansion2381, !amdgpu.uniform !42 Flow3693: ; preds = %Flow3692, %loop-memcpy-residual-header2384 br label %Flow3697, !amdgpu.uniform !42 loop-memcpy-residual2383: ; preds = %loop-memcpy-residual2383.preheader, %loop-memcpy-residual2383 %residual-loop-index2385 = phi i64 [ %1256, %loop-memcpy-residual2383 ], [ 0, %loop-memcpy-residual2383.preheader ] %scevgep3056 = getelementptr i8, ptr addrspace(4) %scevgep3055, i64 %residual-loop-index2385, !amdgpu.uniform !42 %1255 = load i8, ptr addrspace(4) %scevgep3056, align 1 %scevgep3054 = getelementptr i8, ptr %scevgep3053, i64 %residual-loop-index2385 store i8 %1255, ptr %scevgep3054, align 1 %1256 = add i64 %residual-loop-index2385, 1 %1257 = icmp uge i64 %1256, %1248 br i1 %1257, label %Flow3692, label %loop-memcpy-residual2383, !amdgpu.uniform !42 Flow3692: ; preds = %loop-memcpy-residual2383 br label %Flow3693, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i912: ; preds = %Flow3697 %conv.i.i26.i.i.i.i913 = xor i32 %port.sroa.37.0.i.i901, 1 fence release %1258 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i914 = getelementptr inbounds nuw i32, ptr %1258, i64 %idxprom.i23.i.i.i.i.i897 store atomic i32 %conv.i.i26.i.i.i.i913, ptr %arrayidx.i24.i29.i.i.i.i914 monotonic, align 4 %add.i.i.i.i915 = add i64 %idx.0.i.i.i.i902, 64 %scevgep3046 = getelementptr i8, ptr addrspace(4) %lsr.iv3045, i64 64 %lsr.iv.next3051 = add i64 %lsr.iv3050, -64 br label %Flow3701, !amdgpu.uniform !42 cond.false.i.i.i922: ; preds = %Flow3701 %.lcssa4118 = phi i64 [ %1245, %Flow3701 ] %port.sroa.37.0.i.i901.lcssa = phi i32 [ %port.sroa.37.0.i.i901, %Flow3701 ] %.lcssa4117 = phi i32 [ %1231, %Flow3701 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4118) %1259 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa4117) %1260 = icmp ne i32 %1259, %port.sroa.37.0.i.i901.lcssa %1261 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1260) %1262 = extractvalue { i1, i64 } %1261, 0 %1263 = extractvalue { i1, i64 } %1261, 1 br i1 %1262, label %while.body.i.i.i.i923.preheader, label %Flow3690 while.body.i.i.i.i923.preheader: ; preds = %cond.false.i.i.i922 br label %while.body.i.i.i.i923, !amdgpu.uniform !42 Flow3690: ; preds = %Flow3688, %cond.false.i.i.i922 call void @llvm.amdgcn.end.cf.i64(i64 %1263) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit944, !amdgpu.uniform !42 while.body.i.i.i.i923: ; preds = %while.body.i.i.i.i923.preheader, %while.body.i.i.i.i923 %phi.broken3941 = phi i64 [ 0, %while.body.i.i.i.i923.preheader ], [ %1267, %while.body.i.i.i.i923 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %1264 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i924 = getelementptr inbounds nuw i32, ptr %1264, i64 %idxprom.i23.i.i.i.i.i897, !amdgpu.uniform !42 %1265 = load atomic i32, ptr %arrayidx.i.i.i8.i.i924 monotonic, align 4 %1266 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1265) %cmp.i.not.i.i.i.i925 = icmp eq i32 %1266, %port.sroa.37.0.i.i901.lcssa %1267 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i925, i64 %phi.broken3941) %1268 = call i1 @llvm.amdgcn.loop.i64(i64 %1267) br i1 %1268, label %Flow3688, label %while.body.i.i.i.i923 Flow3688: ; preds = %while.body.i.i.i.i923 %.lcssa4116 = phi i64 [ %1267, %while.body.i.i.i.i923 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4116) br label %Flow3690, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit944: ; preds = %Flow3690 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %1269 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4123, i1 true) %iszero.i.i.i.i.i13.i.i927 = icmp ne i64 %.lcssa4123, 0 %cmp2.i.i.i.i14.i.i928 = icmp eq i64 %1269, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i929 = select i1 %iszero.i.i.i.i.i13.i.i927, i1 %cmp2.i.i.i.i14.i.i928, i1 false %1270 = and i32 %.lcssa4124, 31 %conv4.i.i.i19.i.i933 = zext i1 %cmp.i.i.i.i15.i.i929 to i32 %shl.i.i.i20.i.i934 = shl nuw i32 %conv4.i.i.i19.i.i933, %1270 %xor.i.i.i21.i.i935 = xor i32 %shl.i.i.i20.i.i934, -1 %1271 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2549, !amdgpu.uniform !42 1272: ; preds = %ComputeEnd2550 %div8.i.i.i16.i.i930 = lshr i32 %.lcssa4124, 5 %idxprom.i.i.i17.i.i931 = zext nneg i32 %div8.i.i.i16.i.i930 to i64 %1273 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i931 %sunkaddr3314 = getelementptr inbounds i8, ptr addrspace(1) %1273, i64 40 %1274 = atomicrmw and ptr addrspace(1) %sunkaddr3314, i32 %.lcssa4115 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1275, !amdgpu.uniform !42 1275: ; preds = %1272, %ComputeEnd2550 call void @llvm.amdgcn.end.cf.i64(i64 %3507) tail call void @llvm.amdgcn.wave.barrier() call void @llvm.lifetime.start.p5(ptr addrspace(5) %buffer.i.i.i) #34, !noalias !114 %cmp7.i.i.i.i.i.i.i = icmp ne i32 %LHS, 0 %1276 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp7.i.i.i.i.i.i.i) %1277 = extractvalue { i1, i64 } %1276, 0 %1278 = extractvalue { i1, i64 } %1276, 1 br i1 %1277, label %while.body.lr.ph.i.i.i.i.i.i.i, label %Flow3687 while.body.lr.ph.i.i.i.i.i.i.i: ; preds = %1275 %retval.0.i.i.i.i.i.i.i = tail call noundef i32 @llvm.abs.i32(i32 %LHS, i1 false) br label %while.body.i.i.i.i.i.i.i, !amdgpu.uniform !42 Flow3687: ; preds = %Flow3686, %1275 %1279 = phi i1 [ %cmp.i.i.i.i.i.i.i.i.i.lcssa, %Flow3686 ], [ false, %1275 ] %1280 = phi i64 [ %writer.sroa.10.1.i.i.i.i.i.lcssa, %Flow3686 ], [ 0, %1275 ] call void @llvm.amdgcn.end.cf.i64(i64 %1278) br label %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i.i, !amdgpu.uniform !42 while.body.i.i.i.i.i.i.i: ; preds = %while.body.lr.ph.i.i.i.i.i.i.i, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i.i %phi.broken3942 = phi i64 [ 0, %while.body.lr.ph.i.i.i.i.i.i.i ], [ %1348, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i.i ] %writer.sroa.10.0.i.i.i.i.i = phi i64 [ %writer.sroa.10.1.i.i.i.i.i, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i.i ], [ 0, %while.body.lr.ph.i.i.i.i.i.i.i ] %value.addr.09.i.i.i.i.i.i.i = phi i32 [ %div.i.i.i.i.i.i.i.i, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i.i ], [ %retval.0.i.i.i.i.i.i.i, %while.body.lr.ph.i.i.i.i.i.i.i ] br label %NodeBlock3382, !amdgpu.uniform !42 NodeBlock3382: ; preds = %while.body.i.i.i.i.i.i.i %div.i.i.i.i.i.i.i.i = udiv i32 %value.addr.09.i.i.i.i.i.i.i, 10 %.neg = mul nuw nsw i32 %div.i.i.i.i.i.i.i.i, 246 %rem.i.i.i.i.i.i.i.i.decomposed = add nuw nsw i32 %.neg, %value.addr.09.i.i.i.i.i.i.i %conv.i.i.i.i.i.i.i.i = trunc i32 %rem.i.i.i.i.i.i.i.i.decomposed to i8 %1281 = zext i8 %conv.i.i.i.i.i.i.i.i to i16 %Pivot3383 = icmp sge i16 %1281, 5 %1282 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3383) %1283 = extractvalue { i1, i64 } %1282, 0 %1284 = extractvalue { i1, i64 } %1282, 1 br i1 %1283, label %NodeBlock3380, label %Flow3685 NodeBlock3380: ; preds = %NodeBlock3382 %Pivot3381 = icmp sge i16 %1281, 7 %1285 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3381) %1286 = extractvalue { i1, i64 } %1285, 0 %1287 = extractvalue { i1, i64 } %1285, 1 br i1 %1286, label %NodeBlock3378, label %Flow3676 NodeBlock3378: ; preds = %NodeBlock3380 %Pivot3379 = icmp sge i16 %1281, 8 %1288 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3379) %1289 = extractvalue { i1, i64 } %1288, 0 %1290 = extractvalue { i1, i64 } %1288, 1 br i1 %1289, label %NodeBlock3376, label %Flow3672 NodeBlock3376: ; preds = %NodeBlock3378 %Pivot3377 = icmp sge i16 %1281, 9 %1291 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3377) %1292 = extractvalue { i1, i64 } %1291, 0 %1293 = extractvalue { i1, i64 } %1291, 1 br i1 %1292, label %sw.bb9.i.i.i.i.i.i.i.i.i, label %Flow3670 Flow3676: ; preds = %Flow3673, %NodeBlock3380 %1294 = phi i8 [ %1338, %Flow3673 ], [ poison, %NodeBlock3380 ] %1295 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %1287) %1296 = extractvalue { i1, i64 } %1295, 0 %1297 = extractvalue { i1, i64 } %1295, 1 br i1 %1296, label %NodeBlock3374, label %Flow3677 NodeBlock3374: ; preds = %Flow3676 %Pivot3375 = icmp sge i16 %1281, 6 %1298 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3375) %1299 = extractvalue { i1, i64 } %1298, 0 %1300 = extractvalue { i1, i64 } %1298, 1 br i1 %1299, label %sw.bb6.i.i.i.i.i.i.i.i.i, label %Flow3674 Flow3685: ; preds = %Flow3677, %NodeBlock3382 %1301 = phi i8 [ %1340, %Flow3677 ], [ poison, %NodeBlock3382 ] %1302 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %1284) %1303 = extractvalue { i1, i64 } %1302, 0 %1304 = extractvalue { i1, i64 } %1302, 1 br i1 %1303, label %NodeBlock3372, label %if.then.i.i.i.i.i.i.i.i NodeBlock3372: ; preds = %Flow3685 %Pivot3373 = icmp sge i16 %1281, 3 %1305 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3373) %1306 = extractvalue { i1, i64 } %1305, 0 %1307 = extractvalue { i1, i64 } %1305, 1 br i1 %1306, label %NodeBlock3370, label %Flow3683 NodeBlock3370: ; preds = %NodeBlock3372 %Pivot3371 = icmp sge i16 %1281, 4 %1308 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3371) %1309 = extractvalue { i1, i64 } %1308, 0 %1310 = extractvalue { i1, i64 } %1308, 1 br i1 %1309, label %sw.bb4.i.i.i.i.i.i.i.i.i, label %Flow3678 Flow3683: ; preds = %Flow3679, %NodeBlock3372 %1311 = phi i8 [ %1341, %Flow3679 ], [ poison, %NodeBlock3372 ] %1312 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %1307) %1313 = extractvalue { i1, i64 } %1312, 0 %1314 = extractvalue { i1, i64 } %1312, 1 br i1 %1313, label %NodeBlock3368, label %Flow3684 NodeBlock3368: ; preds = %Flow3683 %Pivot3369 = icmp sge i16 %1281, 2 %1315 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3369) %1316 = extractvalue { i1, i64 } %1315, 0 %1317 = extractvalue { i1, i64 } %1315, 1 br i1 %1316, label %sw.bb2.i.i.i.i.i.i.i.i.i, label %Flow3681 Flow3681: ; preds = %sw.bb2.i.i.i.i.i.i.i.i.i, %NodeBlock3368 %1318 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %1317) %1319 = extractvalue { i1, i64 } %1318, 0 %1320 = extractvalue { i1, i64 } %1318, 1 br i1 %1319, label %LeafBlock3366, label %Flow3682 LeafBlock3366: ; preds = %Flow3681 %SwitchLeaf3367 = icmp eq i16 %1281, 1 %1321 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %SwitchLeaf3367) %1322 = extractvalue { i1, i64 } %1321, 0 %1323 = extractvalue { i1, i64 } %1321, 1 br i1 %1322, label %sw.bb1.i.i.i.i.i.i.i.i.i, label %Flow3680 sw.bb1.i.i.i.i.i.i.i.i.i: ; preds = %LeafBlock3366 br label %Flow3680, !amdgpu.uniform !42 sw.bb2.i.i.i.i.i.i.i.i.i: ; preds = %NodeBlock3368 br label %Flow3681, !amdgpu.uniform !42 Flow3678: ; preds = %sw.bb4.i.i.i.i.i.i.i.i.i, %NodeBlock3370 %1324 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %1310) %1325 = extractvalue { i1, i64 } %1324, 0 %1326 = extractvalue { i1, i64 } %1324, 1 br i1 %1325, label %sw.bb3.i.i.i.i.i.i.i.i.i, label %Flow3679 sw.bb3.i.i.i.i.i.i.i.i.i: ; preds = %Flow3678 br label %Flow3679, !amdgpu.uniform !42 sw.bb4.i.i.i.i.i.i.i.i.i: ; preds = %NodeBlock3370 br label %Flow3678, !amdgpu.uniform !42 Flow3674: ; preds = %sw.bb6.i.i.i.i.i.i.i.i.i, %NodeBlock3374 %1327 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %1300) %1328 = extractvalue { i1, i64 } %1327, 0 %1329 = extractvalue { i1, i64 } %1327, 1 br i1 %1328, label %sw.bb5.i.i.i.i.i.i.i.i.i, label %Flow3675 sw.bb5.i.i.i.i.i.i.i.i.i: ; preds = %Flow3674 br label %Flow3675, !amdgpu.uniform !42 sw.bb6.i.i.i.i.i.i.i.i.i: ; preds = %NodeBlock3374 br label %Flow3674, !amdgpu.uniform !42 Flow3672: ; preds = %Flow3671, %NodeBlock3378 %1330 = phi i8 [ %1337, %Flow3671 ], [ poison, %NodeBlock3378 ] %1331 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %1290) %1332 = extractvalue { i1, i64 } %1331, 0 %1333 = extractvalue { i1, i64 } %1331, 1 br i1 %1332, label %sw.bb7.i.i.i.i.i.i.i.i.i, label %Flow3673 sw.bb7.i.i.i.i.i.i.i.i.i: ; preds = %Flow3672 br label %Flow3673, !amdgpu.uniform !42 Flow3670: ; preds = %sw.bb9.i.i.i.i.i.i.i.i.i, %NodeBlock3376 %1334 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %1293) %1335 = extractvalue { i1, i64 } %1334, 0 %1336 = extractvalue { i1, i64 } %1334, 1 br i1 %1335, label %sw.bb8.i.i.i.i.i.i.i.i.i, label %Flow3671 sw.bb8.i.i.i.i.i.i.i.i.i: ; preds = %Flow3670 br label %Flow3671, !amdgpu.uniform !42 sw.bb9.i.i.i.i.i.i.i.i.i: ; preds = %NodeBlock3376 br label %Flow3670, !amdgpu.uniform !42 Flow3671: ; preds = %sw.bb8.i.i.i.i.i.i.i.i.i, %Flow3670 %1337 = phi i8 [ 56, %sw.bb8.i.i.i.i.i.i.i.i.i ], [ 57, %Flow3670 ] call void @llvm.amdgcn.end.cf.i64(i64 %1336) br label %Flow3672, !amdgpu.uniform !42 Flow3673: ; preds = %sw.bb7.i.i.i.i.i.i.i.i.i, %Flow3672 %1338 = phi i8 [ 55, %sw.bb7.i.i.i.i.i.i.i.i.i ], [ %1330, %Flow3672 ] call void @llvm.amdgcn.end.cf.i64(i64 %1333) br label %Flow3676, !amdgpu.uniform !42 Flow3675: ; preds = %sw.bb5.i.i.i.i.i.i.i.i.i, %Flow3674 %1339 = phi i8 [ 53, %sw.bb5.i.i.i.i.i.i.i.i.i ], [ 54, %Flow3674 ] call void @llvm.amdgcn.end.cf.i64(i64 %1329) br label %Flow3677, !amdgpu.uniform !42 Flow3677: ; preds = %Flow3675, %Flow3676 %1340 = phi i8 [ %1339, %Flow3675 ], [ %1294, %Flow3676 ] call void @llvm.amdgcn.end.cf.i64(i64 %1297) br label %Flow3685, !amdgpu.uniform !42 Flow3679: ; preds = %sw.bb3.i.i.i.i.i.i.i.i.i, %Flow3678 %1341 = phi i8 [ 51, %sw.bb3.i.i.i.i.i.i.i.i.i ], [ 52, %Flow3678 ] call void @llvm.amdgcn.end.cf.i64(i64 %1326) br label %Flow3683, !amdgpu.uniform !42 Flow3680: ; preds = %sw.bb1.i.i.i.i.i.i.i.i.i, %LeafBlock3366 %1342 = phi i8 [ 49, %sw.bb1.i.i.i.i.i.i.i.i.i ], [ 48, %LeafBlock3366 ] call void @llvm.amdgcn.end.cf.i64(i64 %1323) br label %Flow3682, !amdgpu.uniform !42 Flow3682: ; preds = %Flow3680, %Flow3681 %1343 = phi i8 [ %1342, %Flow3680 ], [ 50, %Flow3681 ] call void @llvm.amdgcn.end.cf.i64(i64 %1320) br label %Flow3684, !amdgpu.uniform !42 Flow3684: ; preds = %Flow3682, %Flow3683 %1344 = phi i8 [ %1343, %Flow3682 ], [ %1311, %Flow3683 ] call void @llvm.amdgcn.end.cf.i64(i64 %1314) br label %if.then.i.i.i.i.i.i.i.i, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i.i: ; preds = %Flow3685, %Flow3684 %retval.0.i.i.i.i.i.i.i.i.i = phi i8 [ %1301, %Flow3685 ], [ %1344, %Flow3684 ] call void @llvm.amdgcn.end.cf.i64(i64 %1304) %cmp.i.i.i.i.i.i.i.i.i = icmp eq i64 %writer.sroa.10.0.i.i.i.i.i, 11 %cmp.i.i.i.i.i.i.i.i.i.inv = xor i1 %cmp.i.i.i.i.i.i.i.i.i, true br i1 %cmp.i.i.i.i.i.i.i.i.i.inv, label %if.then3.i.i.i.i.i.i.i.i, label %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i.i, !amdgpu.uniform !42 if.then3.i.i.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i.i.i %1345 = trunc i64 %writer.sroa.10.0.i.i.i.i.i to i32 %1346 = xor i32 %1345, -1 %1347 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i, i32 %1346 %arrayidx.i.i.i.i.i.i.i.i.i2719 = getelementptr i8, ptr addrspace(5) %1347, i32 11 %inc.i.i.i.i.i.i.i.i = add i64 %writer.sroa.10.0.i.i.i.i.i, 1 store i8 %retval.0.i.i.i.i.i.i.i.i.i, ptr addrspace(5) %arrayidx.i.i.i.i.i.i.i.i.i2719, align 1, !tbaa !57, !noalias !114 br label %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i.i, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i.i: ; preds = %if.then3.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i %writer.sroa.10.1.i.i.i.i.i = phi i64 [ %inc.i.i.i.i.i.i.i.i, %if.then3.i.i.i.i.i.i.i.i ], [ 11, %if.then.i.i.i.i.i.i.i.i ] %cmp.i.i.i.i.i.i.i = icmp ult i32 %value.addr.09.i.i.i.i.i.i.i, 10 %.not.i.i.i.i.i.i.i = or i1 %cmp.i.i.i.i.i.i.i.i.i, %cmp.i.i.i.i.i.i.i %1348 = call i64 @llvm.amdgcn.if.break.i64(i1 %.not.i.i.i.i.i.i.i, i64 %phi.broken3942) %1349 = call i1 @llvm.amdgcn.loop.i64(i64 %1348) br i1 %1349, label %Flow3686, label %while.body.i.i.i.i.i.i.i Flow3686: ; preds = %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i.i %writer.sroa.10.1.i.i.i.i.i.lcssa = phi i64 [ %writer.sroa.10.1.i.i.i.i.i, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i.i ] %.lcssa4114 = phi i64 [ %1348, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i.i ] %cmp.i.i.i.i.i.i.i.i.i.lcssa = phi i1 [ %cmp.i.i.i.i.i.i.i.i.i, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4114) br label %Flow3687, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i.i: ; preds = %Flow3687 %cmp.i19.i.i.i.i.i = icmp ne i64 %1280, 0 %or.cond.not.i.i.i.i.i = select i1 %1279, i1 true, i1 %cmp.i19.i.i.i.i.i %or.cond.not.i.i.i.i.i.inv = xor i1 %or.cond.not.i.i.i.i.i, true %1350 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %or.cond.not.i.i.i.i.i.inv) %1351 = extractvalue { i1, i64 } %1350, 0 %1352 = extractvalue { i1, i64 } %1350, 1 br i1 %1351, label %if.then3.i.i.lr.ph.i.i.i.i.i, label %while.end.i.i.i.i.i.i if.then3.i.i.lr.ph.i.i.i.i.i: ; preds = %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i.i %arrayidx.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr addrspace(5) %buffer.i.i.i, i32 10 store i8 48, ptr addrspace(5) %arrayidx.i.i.i.i.i.i.i.i, align 2, !tbaa !57, !noalias !114 br label %while.end.i.i.i.i.i.i, !amdgpu.uniform !42 while.end.i.i.i.i.i.i: ; preds = %if.then3.i.i.lr.ph.i.i.i.i.i, %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i.i %writer.sroa.10.4.i.i.i.i.i = phi i64 [ 1, %if.then3.i.i.lr.ph.i.i.i.i.i ], [ %1280, %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %1352) %cmp4.i.i.i.i.i.i = icmp sgt i32 %LHS, -1 %brmerge.i.i.i.i.i.i = or i1 %cmp4.i.i.i.i.i.i, %1279 %brmerge.i.i.i.i.i.i.inv = xor i1 %brmerge.i.i.i.i.i.i, true %1353 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %brmerge.i.i.i.i.i.i.inv) %1354 = extractvalue { i1, i64 } %1353, 0 %1355 = extractvalue { i1, i64 } %1353, 1 br i1 %1354, label %if.then.i14.i.i.i.i.i.i, label %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i.i if.then.i14.i.i.i.i.i.i: ; preds = %while.end.i.i.i.i.i.i %cmp.i.i17.i.i.i.i.i.i = icmp ne i64 %writer.sroa.10.4.i.i.i.i.i, 11 %1356 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i17.i.i.i.i.i.i) %1357 = extractvalue { i1, i64 } %1356, 0 %1358 = extractvalue { i1, i64 } %1356, 1 br i1 %1357, label %if.then3.i18.i.i.i.i.i.i, label %Flow3669 if.then3.i18.i.i.i.i.i.i: ; preds = %if.then.i14.i.i.i.i.i.i %1359 = trunc i64 %writer.sroa.10.4.i.i.i.i.i to i32 %1360 = xor i32 %1359, -1 %1361 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i, i32 %1360 %arrayidx.i.i19.i.i.i.i.i.i2720 = getelementptr i8, ptr addrspace(5) %1361, i32 11 %inc.i20.i.i.i.i.i.i = add i64 %writer.sroa.10.4.i.i.i.i.i, 1 store i8 45, ptr addrspace(5) %arrayidx.i.i19.i.i.i.i.i.i2720, align 1, !tbaa !57, !noalias !114 br label %Flow3669, !amdgpu.uniform !42 Flow3669: ; preds = %if.then3.i18.i.i.i.i.i.i, %if.then.i14.i.i.i.i.i.i %1362 = phi i64 [ %inc.i20.i.i.i.i.i.i, %if.then3.i18.i.i.i.i.i.i ], [ 11, %if.then.i14.i.i.i.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %1358) br label %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i.i, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i.i: ; preds = %while.end.i.i.i.i.i.i, %Flow3669 %writer.sroa.10.5.i.i.i.i.i = phi i64 [ %writer.sroa.10.4.i.i.i.i.i, %while.end.i.i.i.i.i.i ], [ %1362, %Flow3669 ] call void @llvm.amdgcn.end.cf.i64(i64 %1355) %written.i.i.i.i.i = getelementptr inbounds nuw i8, ptr addrspace(5) %buffer.i.i.i, i32 16 store i64 %writer.sroa.10.5.i.i.i.i.i, ptr addrspace(5) %written.i.i.i.i.i, align 8, !tbaa !91, !noalias !114 %cmp.i.not.i.i.i.i.i.i = icmp ne i64 %writer.sroa.10.5.i.i.i.i.i, 0 %1363 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.not.i.i.i.i.i.i) %1364 = extractvalue { i1, i64 } %1363, 0 %1365 = extractvalue { i1, i64 } %1363, 1 br i1 %1364, label %if.then.i.i.i.i.i.i.i, label %Flow3668 if.then.i.i.i.i.i.i.i: ; preds = %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i.i %1366 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %writer.sroa.10.5.i.i.i.i.i, i64 1) %ov3316 = extractvalue { i64, i1 } %1366, 1 %ov3316.inv = xor i1 %ov3316, true %1367 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %ov3316.inv) %1368 = extractvalue { i1, i64 } %1367, 0 %1369 = extractvalue { i1, i64 } %1367, 1 br i1 %1368, label %if.end.i.i.i.i.i.i.i.i, label %Flow3667 if.end.i.i.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i.i %math3315 = extractvalue { i64, i1 } %1366, 0 %cmp2.i.i.i.i.i.i.i.i = icmp ult i64 %math3315, 1676976733973595601 %1370 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp2.i.i.i.i.i.i.i.i) %1371 = extractvalue { i1, i64 } %1370, 0 %1372 = extractvalue { i1, i64 } %1370, 1 br i1 %1371, label %if.then3.i.i.i.i4.i.i.i.i, label %if.end4.i.i.i.i.i.i.i.i if.then3.i.i.i.i4.i.i.i.i: ; preds = %if.end.i.i.i.i.i.i.i.i %mul.i.i.i.i.i.i.i.i = mul nuw i64 %math3315, 11 %div18.i.i.i.i.i.i.i.i = lshr i64 %mul.i.i.i.i.i.i.i.i, 3 br label %if.end4.i.i.i.i.i.i.i.i, !amdgpu.uniform !42 Flow3667: ; preds = %if.end4.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i %1373 = phi ptr [ %cond.i.i951, %if.end4.i.i.i.i.i.i.i.i ], [ addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr), %if.then.i.i.i.i.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %1369) br label %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i.i, !amdgpu.uniform !42 if.end4.i.i.i.i.i.i.i.i: ; preds = %if.then3.i.i.i.i4.i.i.i.i, %if.end.i.i.i.i.i.i.i.i %new_capacity.addr.0.i.i.i.i.i.i.i.i = phi i64 [ %div18.i.i.i.i.i.i.i.i, %if.then3.i.i.i.i4.i.i.i.i ], [ %math3315, %if.end.i.i.i.i.i.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %1372) %sub.i.i945 = add i64 %new_capacity.addr.0.i.i.i.i.i.i.i.i, 7 %div2.i.i946 = and i64 %sub.i.i945, -8 %1374 = load ptr, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %add.ptr.i.i947 = getelementptr inbounds nuw i8, ptr %1374, i64 %div2.i.i946 store ptr %add.ptr.i.i947, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %sub.ptr.lhs.cast.i.i948 = ptrtoint ptr %add.ptr.i.i947 to i64 %sub.ptr.sub.i.i949 = sub i64 %sub.ptr.lhs.cast.i.i948, ptrtoint (ptr addrspacecast (ptr addrspace(1) @_ZN12_GLOBAL__N_16memoryE to ptr) to i64) %cmp.i.i950 = icmp ugt i64 %sub.ptr.sub.i.i949, 65335 %cond.i.i951 = select i1 %cmp.i.i950, ptr null, ptr %1374 br label %Flow3667, !amdgpu.uniform !42 Flow3668: ; preds = %Flow3666, %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i.i %1375 = phi ptr [ %1373, %Flow3666 ], [ addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr), %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %1365) br label %if.end.i.i.i.i.i.i.i, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i.i: ; preds = %Flow3667 br label %loadstoreloop2189, !amdgpu.uniform !42 loadstoreloop2189: ; preds = %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i.i, %loadstoreloop2189 %phi.broken3943 = phi i64 [ 0, %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i.i ], [ %1380, %loadstoreloop2189 ] %1376 = phi i64 [ %1378, %loadstoreloop2189 ], [ 0, %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i.i ] %1377 = getelementptr i8, ptr %1373, i64 %1376 store i8 0, ptr %1377, align 1 %1378 = add i64 %1376, 1 %1379 = icmp uge i64 %1378, %writer.sroa.10.5.i.i.i.i.i %1380 = call i64 @llvm.amdgcn.if.break.i64(i1 %1379, i64 %phi.broken3943) %1381 = call i1 @llvm.amdgcn.loop.i64(i64 %1380) br i1 %1381, label %Flow3666, label %loadstoreloop2189 Flow3666: ; preds = %loadstoreloop2189 %.lcssa4113 = phi i64 [ %1380, %loadstoreloop2189 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4113) br label %Flow3668, !amdgpu.uniform !42 if.end.i.i.i.i.i.i.i: ; preds = %Flow3668 %cmp.not.i6.i.i.i.i.i.i.i = icmp ne ptr %1375, addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr) %1382 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.not.i6.i.i.i.i.i.i.i) %1383 = extractvalue { i1, i64 } %1382, 0 %1384 = extractvalue { i1, i64 } %1382, 1 br i1 %1383, label %if.then.i.i.i.i2.i.i.i.i, label %_ZN22__llvm_libc_22_0_0_git7testing8internal13describeValueIiEENS_3cpp9enable_ifIXaasr3cppE13is_integral_vIT_ElestS5_Lm8EENS3_6stringEE4typeES5_.exit.i if.then.i.i.i.i2.i.i.i.i: ; preds = %if.end.i.i.i.i.i.i.i %arrayidx.i.i.i.i3.i.i.i.i = getelementptr inbounds nuw i8, ptr %1375, i64 %writer.sroa.10.5.i.i.i.i.i store i8 0, ptr %arrayidx.i.i.i.i3.i.i.i.i, align 1, !tbaa !57, !noalias !114 br label %_ZN22__llvm_libc_22_0_0_git7testing8internal13describeValueIiEENS_3cpp9enable_ifIXaasr3cppE13is_integral_vIT_ElestS5_Lm8EENS3_6stringEE4typeES5_.exit.i, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing8internal13describeValueIiEENS_3cpp9enable_ifIXaasr3cppE13is_integral_vIT_ElestS5_Lm8EENS3_6stringEE4typeES5_.exit.i: ; preds = %if.then.i.i.i.i2.i.i.i.i, %if.end.i.i.i.i.i.i.i call void @llvm.amdgcn.end.cf.i64(i64 %1384) %1385 = trunc i64 %writer.sroa.10.5.i.i.i.i.i to i32 %1386 = and i64 %writer.sroa.10.5.i.i.i.i.i, 15 %1387 = sub i64 %writer.sroa.10.5.i.i.i.i.i, %1386 %1388 = icmp ne i64 %1387, 0 %1389 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1388) %1390 = extractvalue { i1, i64 } %1389, 0 %1391 = extractvalue { i1, i64 } %1389, 1 br i1 %1390, label %loop-memcpy-expansion2315.preheader, label %Flow3664 loop-memcpy-expansion2315.preheader: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing8internal13describeValueIiEENS_3cpp9enable_ifIXaasr3cppE13is_integral_vIT_ElestS5_Lm8EENS3_6stringEE4typeES5_.exit.i %1392 = sub i32 11, %1385 %scevgep3042 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i, i32 %1392 br label %loop-memcpy-expansion2315, !amdgpu.uniform !42 Flow3664: ; preds = %Flow3663, %_ZN22__llvm_libc_22_0_0_git7testing8internal13describeValueIiEENS_3cpp9enable_ifIXaasr3cppE13is_integral_vIT_ElestS5_Lm8EENS3_6stringEE4typeES5_.exit.i call void @llvm.amdgcn.end.cf.i64(i64 %1391) br label %loop-memcpy-residual-header2318, !amdgpu.uniform !42 loop-memcpy-expansion2315: ; preds = %loop-memcpy-expansion2315.preheader, %loop-memcpy-expansion2315 %phi.broken3944 = phi i64 [ 0, %loop-memcpy-expansion2315.preheader ], [ %1397, %loop-memcpy-expansion2315 ] %lsr.iv3043 = phi ptr addrspace(5) [ %scevgep3044, %loop-memcpy-expansion2315 ], [ %scevgep3042, %loop-memcpy-expansion2315.preheader ] %loop-index2316 = phi i64 [ %1395, %loop-memcpy-expansion2315 ], [ 0, %loop-memcpy-expansion2315.preheader ] %1393 = load <4 x i32>, ptr addrspace(5) %lsr.iv3043, align 1 %1394 = getelementptr i8, ptr %1375, i64 %loop-index2316 store <4 x i32> %1393, ptr %1394, align 1 %1395 = add i64 %loop-index2316, 16 %scevgep3044 = getelementptr i8, ptr addrspace(5) %lsr.iv3043, i32 16 %1396 = icmp uge i64 %1395, %1387 %1397 = call i64 @llvm.amdgcn.if.break.i64(i1 %1396, i64 %phi.broken3944) %1398 = call i1 @llvm.amdgcn.loop.i64(i64 %1397) br i1 %1398, label %Flow3663, label %loop-memcpy-expansion2315 Flow3661: ; preds = %Flow3660, %loop-memcpy-residual-header2318 call void @llvm.amdgcn.end.cf.i64(i64 %2885) br label %post-loop-memcpy-expansion2314, !amdgpu.uniform !42 loop-memcpy-residual2317: ; preds = %loop-memcpy-residual2317.preheader, %loop-memcpy-residual2317 %phi.broken3945 = phi i64 [ 0, %loop-memcpy-residual2317.preheader ], [ %1402, %loop-memcpy-residual2317 ] %lsr.iv3038 = phi ptr addrspace(5) [ %scevgep3039, %loop-memcpy-residual2317 ], [ %scevgep3037, %loop-memcpy-residual2317.preheader ] %residual-loop-index2319 = phi i64 [ %1400, %loop-memcpy-residual2317 ], [ 0, %loop-memcpy-residual2317.preheader ] %1399 = load i8, ptr addrspace(5) %lsr.iv3038, align 1 %scevgep3041 = getelementptr i8, ptr %scevgep3040, i64 %residual-loop-index2319 store i8 %1399, ptr %scevgep3041, align 1 %1400 = add i64 %residual-loop-index2319, 1 %scevgep3039 = getelementptr i8, ptr addrspace(5) %lsr.iv3038, i32 1 %1401 = icmp uge i64 %1400, %1386 %1402 = call i64 @llvm.amdgcn.if.break.i64(i1 %1401, i64 %phi.broken3945) %1403 = call i1 @llvm.amdgcn.loop.i64(i64 %1402) br i1 %1403, label %Flow3660, label %loop-memcpy-residual2317 Flow3660: ; preds = %loop-memcpy-residual2317 %.lcssa4111 = phi i64 [ %1402, %loop-memcpy-residual2317 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4111) br label %Flow3661, !amdgpu.uniform !42 post-loop-memcpy-expansion2314: ; preds = %Flow3661 call void @llvm.lifetime.end.p5(ptr addrspace(5) %buffer.i.i.i) #34, !noalias !114 br label %for.cond.i.i.i953, !amdgpu.uniform !42 for.cond.i.i.i953: ; preds = %post-loop-memcpy-expansion2314, %Flow3658 %1404 = phi i32 [ %1442, %Flow3658 ], [ poison, %post-loop-memcpy-expansion2314 ] %1405 = phi i64 [ %1443, %Flow3658 ], [ poison, %post-loop-memcpy-expansion2314 ] %1406 = phi i32 [ %1444, %Flow3658 ], [ poison, %post-loop-memcpy-expansion2314 ] %retval.sroa.6.0.i.i.i954 = phi i32 [ %1447, %Flow3658 ], [ undef, %post-loop-memcpy-expansion2314 ] %retval.sroa.2.0.i.i.i956 = phi i64 [ %1446, %Flow3658 ], [ undef, %post-loop-memcpy-expansion2314 ] %retval.sroa.8.0.i.i.i957 = phi i32 [ %1445, %Flow3658 ], [ undef, %post-loop-memcpy-expansion2314 ] %index.0.i.i.i958 = phi i32 [ %1449, %Flow3658 ], [ 0, %post-loop-memcpy-expansion2314 ] %1407 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i959 = icmp ult i32 %index.0.i.i.i958, %1407 %spec.store.select.i.i.i960 = select i1 %cmp.not.i.i.i959, i32 %index.0.i.i.i958, i32 0 %1408 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %1409 = and i32 %spec.store.select.i.i.i960, 31 %1410 = lshr i64 %1408, %sh_prom.i.i.i.i %1411 = trunc i64 %1410 to i32 %conv4.i.i.i.i.i964 = and i32 %1411, 1 %shl.i.i.i.i.i965 = shl nuw i32 %conv4.i.i.i.i.i964, %1409 %1412 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2553, !amdgpu.uniform !42 1413: ; preds = %ComputeEnd2554 %sunkaddr3317 = getelementptr inbounds i8, ptr addrspace(1) %3517, i64 40 %1414 = atomicrmw or ptr addrspace(1) %sunkaddr3317, i32 %.lcssa4105 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1415, !amdgpu.uniform !42 1415: ; preds = %1413, %ComputeEnd2554 %1416 = phi i32 [ %1414, %1413 ], [ poison, %ComputeEnd2554 ] call void @llvm.amdgcn.end.cf.i64(i64 %3526) %1417 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %1416) %1418 = or i32 %1417, %.lcssa4106 %shl5.i.i.i.i.i966 = shl nuw i32 1, %1409 %and.i.i.i.i.i967 = and i32 %shl5.i.i.i.i.i966, %1418 %tobool3.i.i.i.i968 = icmp ne i32 %and.i.i.i.i.i967, 0 %1419 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i968) %and.i.i.i.i.i.i969 = and i64 %1419, %1408 %cmp.i.not.i.i.i970 = icmp ne i64 %1408, %and.i.i.i.i.i.i969 br i1 %cmp.i.not.i.i.i970, label %if.then.i.i.i.i971, label %Flow3657, !amdgpu.uniform !42 if.then.i.i.i.i971: ; preds = %1415 fence syncscope("agent") acquire %1420 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %1421 = extractelement <2 x i64> %1420, i32 0 %1422 = inttoptr i64 %1421 to ptr %1423 = extractelement <2 x i64> %1420, i32 1 %1424 = inttoptr i64 %1423 to ptr %idxprom.i.i.i.i972 = zext i32 %spec.store.select.i.i.i960 to i64 %arrayidx.i.i.i.i973 = getelementptr inbounds nuw i32, ptr %1422, i64 %idxprom.i.i.i.i972, !amdgpu.uniform !42 %1425 = load atomic i32, ptr %arrayidx.i.i.i.i973 monotonic, align 4 %1426 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1425) %arrayidx.i45.i.i.i974 = getelementptr inbounds nuw i32, ptr %1424, i64 %idxprom.i.i.i.i972, !amdgpu.uniform !42 %1427 = load atomic i32, ptr %arrayidx.i45.i.i.i974 monotonic, align 4 %1428 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1427) %cmp.i46.not.i.i.i975 = icmp ne i32 %1426, %1428 br i1 %cmp.i46.not.i.i.i975, label %if.then12.i.i.i976, label %Flow3655, !amdgpu.uniform !42 if.then12.i.i.i976: ; preds = %if.then.i.i.i.i971 fence syncscope("agent") release %1429 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1408, i1 true) %iszero.i.i.i.i.i.i.i977 = icmp ne i64 %1408, 0 %cmp2.i.i.i.i.i.i978 = icmp eq i64 %1429, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i979 = select i1 %iszero.i.i.i.i.i.i.i977, i1 %cmp2.i.i.i.i.i.i978, i1 false %conv4.i.i51.i.i.i980 = zext i1 %cmp.i.i.i.i.i.i979 to i32 %shl.i.i52.i.i.i981 = shl nuw i32 %conv4.i.i51.i.i.i980, %1409 %xor.i.i.i.i.i982 = xor i32 %shl.i.i52.i.i.i981, -1 %1430 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2558, !amdgpu.uniform !42 1431: ; preds = %ComputeEnd2559 %sunkaddr3318 = getelementptr inbounds i8, ptr addrspace(1) %3517, i64 40 %1432 = atomicrmw and ptr addrspace(1) %sunkaddr3318, i32 %.lcssa4107 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1433, !amdgpu.uniform !42 1433: ; preds = %1431, %ComputeEnd2559 call void @llvm.amdgcn.end.cf.i64(i64 %3544) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3655, !amdgpu.uniform !42 if.end14.i.i.i1042: ; preds = %Flow3655 %1434 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1408, i1 true) %iszero.i.i.i.i.i.i1043 = icmp ne i64 %1408, 0 %cmp2.i.i.i.i.i1044 = icmp eq i64 %1434, %sh_prom.i.i.i.i %cmp.i.i.i.i.i1045 = select i1 %iszero.i.i.i.i.i.i1043, i1 %cmp2.i.i.i.i.i1044, i1 false %1435 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i1045) %1436 = extractvalue { i1, i64 } %1435, 0 %1437 = extractvalue { i1, i64 } %1435, 1 br i1 %1436, label %if.then16.i.i.i1047, label %if.end22.i.i.i1046 if.then16.i.i.i1047: ; preds = %if.end14.i.i.i1042 %1438 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i1048 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1438, i64 %idxprom.i.i.i.i972, i32 1 store i32 1660944387, ptr %opcode.i.i.i1048, align 8, !tbaa !77 %arrayidx21.i.i.i1049 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1438, i64 %idxprom.i.i.i.i972 store i64 %1408, ptr %arrayidx21.i.i.i1049, align 8, !tbaa !80 br label %if.end22.i.i.i1046, !amdgpu.uniform !42 Flow3656: ; preds = %if.end22.i.i.i1046, %Flow3655 %1439 = phi i32 [ %1426, %if.end22.i.i.i1046 ], [ %retval.sroa.8.0.i.i.i957, %Flow3655 ] %1440 = phi i64 [ %1408, %if.end22.i.i.i1046 ], [ %retval.sroa.2.0.i.i.i956, %Flow3655 ] %1441 = phi i32 [ %spec.store.select.i.i.i960, %if.end22.i.i.i1046 ], [ %retval.sroa.6.0.i.i.i954, %Flow3655 ] br label %cleanup26.i.i.i983, !amdgpu.uniform !42 if.end22.i.i.i1046: ; preds = %if.then16.i.i.i1047, %if.end14.i.i.i1042 call void @llvm.amdgcn.end.cf.i64(i64 %1437) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3656, !amdgpu.uniform !42 Flow3657: ; preds = %cleanup26.i.i.i983, %1415 %1442 = phi i32 [ %1441, %cleanup26.i.i.i983 ], [ %1404, %1415 ] %1443 = phi i64 [ %1440, %cleanup26.i.i.i983 ], [ %1405, %1415 ] %1444 = phi i32 [ %1439, %cleanup26.i.i.i983 ], [ %1406, %1415 ] %1445 = phi i32 [ %1439, %cleanup26.i.i.i983 ], [ %retval.sroa.8.0.i.i.i957, %1415 ] %1446 = phi i64 [ %1440, %cleanup26.i.i.i983 ], [ %retval.sroa.2.0.i.i.i956, %1415 ] %1447 = phi i32 [ %1441, %cleanup26.i.i.i983 ], [ %retval.sroa.6.0.i.i.i954, %1415 ] %1448 = phi i1 [ %cmp.i46.not.i.i.i975, %cleanup26.i.i.i983 ], [ true, %1415 ] br i1 %1448, label %for.inc.i.i.i988, label %Flow3658, !amdgpu.uniform !42 cleanup26.i.i.i983: ; preds = %Flow3656 br label %Flow3657, !amdgpu.uniform !42 for.inc.i.i.i988: ; preds = %Flow3657 %inc.i.i.i993 = add i32 %spec.store.select.i.i.i960, 1 br label %Flow3658, !amdgpu.uniform !42 Flow3658: ; preds = %for.inc.i.i.i988, %Flow3657 %1449 = phi i32 [ %inc.i.i.i993, %for.inc.i.i.i988 ], [ poison, %Flow3657 ] %1450 = phi i1 [ false, %for.inc.i.i.i988 ], [ true, %Flow3657 ] br i1 %1450, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i994, label %for.cond.i.i.i953, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i994: ; preds = %Flow3658 %.lcssa4110 = phi i32 [ %1442, %Flow3658 ] %.lcssa4109 = phi i64 [ %1443, %Flow3658 ] %.lcssa4108 = phi i32 [ %1444, %Flow3658 ] fence acquire %1451 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i995 = shl i32 %.lcssa4110, 6 %idxprom.i19.i.i.i.i.i996 = zext i32 %mul.i.i.i.i.i.i995 to i64 %arrayidx.i20.i.i.i.i.i997 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %1451, i64 %idxprom.i19.i.i.i.i.i996 %arrayidx.i22.i.i.i.i.i998 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i997, i64 %sh_prom.i.i.i.i store i64 %writer.sroa.10.5.i.i.i.i.i, ptr %arrayidx.i22.i.i.i.i.i998, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i999 = tail call i64 @llvm.umin.i64(i64 %writer.sroa.10.5.i.i.i.i.i, i64 56) %1452 = and i64 %spec.select.i.i.i.i.i.i.i999, 15 %1453 = sub i64 %spec.select.i.i.i.i.i.i.i999, %1452 %1454 = icmp ne i64 %1453, 0 %1455 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1454) %1456 = extractvalue { i1, i64 } %1455, 0 %1457 = extractvalue { i1, i64 } %1455, 1 br i1 %1456, label %loop-memcpy-expansion2231.preheader, label %Flow3654 loop-memcpy-expansion2231.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i994 %1458 = add nuw nsw i64 %75, 8 %scevgep3034 = getelementptr i8, ptr %1451, i64 %1458 %1459 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i996, 6 %scevgep3035 = getelementptr i8, ptr %scevgep3034, i64 %1459 br label %loop-memcpy-expansion2231, !amdgpu.uniform !42 Flow3654: ; preds = %Flow3653, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i994 call void @llvm.amdgcn.end.cf.i64(i64 %1457) br label %loop-memcpy-residual-header2234, !amdgpu.uniform !42 loop-memcpy-expansion2231: ; preds = %loop-memcpy-expansion2231.preheader, %loop-memcpy-expansion2231 %phi.broken3946 = phi i64 [ 0, %loop-memcpy-expansion2231.preheader ], [ %1464, %loop-memcpy-expansion2231 ] %loop-index2232 = phi i64 [ %1462, %loop-memcpy-expansion2231 ], [ 0, %loop-memcpy-expansion2231.preheader ] %1460 = getelementptr i8, ptr %1375, i64 %loop-index2232 %1461 = load <4 x i32>, ptr %1460, align 1 %scevgep3036 = getelementptr i8, ptr %scevgep3035, i64 %loop-index2232 store <4 x i32> %1461, ptr %scevgep3036, align 1 %1462 = add i64 %loop-index2232, 16 %1463 = icmp uge i64 %1462, %1453 %1464 = call i64 @llvm.amdgcn.if.break.i64(i1 %1463, i64 %phi.broken3946) %1465 = call i1 @llvm.amdgcn.loop.i64(i64 %1464) br i1 %1465, label %Flow3653, label %loop-memcpy-expansion2231 Flow3651: ; preds = %Flow3648, %Flow3650 %1466 = phi i64 [ %2804, %Flow3648 ], [ %2796, %Flow3650 ] call void @llvm.amdgcn.end.cf.i64(i64 %2799) br label %post-loop-memcpy-expansion2230, !amdgpu.uniform !42 loop-memcpy-residual2233: ; preds = %loop-memcpy-residual2233.preheader, %loop-memcpy-residual2233 %phi.broken3947 = phi i64 [ 0, %loop-memcpy-residual2233.preheader ], [ %1470, %loop-memcpy-residual2233 ] %residual-loop-index2235 = phi i64 [ %1468, %loop-memcpy-residual2233 ], [ 0, %loop-memcpy-residual2233.preheader ] %scevgep3033 = getelementptr i8, ptr %scevgep3032, i64 %residual-loop-index2235 %1467 = load i8, ptr %scevgep3033, align 1 %scevgep3031 = getelementptr i8, ptr %scevgep3030, i64 %residual-loop-index2235 store i8 %1467, ptr %scevgep3031, align 1 %1468 = add i64 %residual-loop-index2235, 1 %1469 = icmp uge i64 %1468, %1452 %1470 = call i64 @llvm.amdgcn.if.break.i64(i1 %1469, i64 %phi.broken3947) %1471 = call i1 @llvm.amdgcn.loop.i64(i64 %1470) br i1 %1471, label %Flow3648, label %loop-memcpy-residual2233 Flow3648: ; preds = %loop-memcpy-residual2233 %.lcssa4103 = phi i64 [ %1470, %loop-memcpy-residual2233 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4103) br label %Flow3651, !amdgpu.uniform !42 post-loop-memcpy-expansion2230: ; preds = %Flow3651 %tobool.not.i.i.i.i.i.i1001 = icmp eq i32 %.lcssa4108, 0 %conv.i.i.i.i.i.i1002 = zext i1 %tobool.not.i.i.i.i.i.i1001 to i32 fence release %1472 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i1003 = zext i32 %.lcssa4110 to i64 %arrayidx.i24.i.i.i.i.i1004 = getelementptr inbounds nuw i32, ptr %1472, i64 %idxprom.i23.i.i.i.i.i1003 store atomic i32 %conv.i.i.i.i.i.i1002, ptr %arrayidx.i24.i.i.i.i.i1004 monotonic, align 4 %1473 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i1005 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1473, i64 %idxprom.i23.i.i.i.i.i1003, !amdgpu.uniform !42 %1474 = load i64, ptr %arrayidx.i.i5.i.i1005, align 8, !tbaa !80 %scevgep3016 = getelementptr i8, ptr %1375, i64 56 %1475 = add i64 %writer.sroa.10.5.i.i.i.i.i, -56 br label %while.cond.i.i.i.i1006, !amdgpu.uniform !42 while.cond.i.i.i.i1006: ; preds = %post-loop-memcpy-expansion2230, %Flow3646 %phi.broken3950 = phi i64 [ 0, %post-loop-memcpy-expansion2230 ], [ %1492, %Flow3646 ] %lsr.iv3022 = phi i64 [ %1490, %Flow3646 ], [ %1475, %post-loop-memcpy-expansion2230 ] %lsr.iv3017 = phi ptr [ %1489, %Flow3646 ], [ %scevgep3016, %post-loop-memcpy-expansion2230 ] %port.sroa.37.0.i.i1007 = phi i32 [ %1488, %Flow3646 ], [ %conv.i.i.i.i.i.i1002, %post-loop-memcpy-expansion2230 ] %idx.0.i.i.i.i1008 = phi i64 [ %1487, %Flow3646 ], [ 56, %post-loop-memcpy-expansion2230 ] %cmp.i.i.i.i1009 = icmp ugt i64 %writer.sroa.10.5.i.i.i.i.i, %idx.0.i.i.i.i1008 %1476 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i1009) %and.i.i.i.i6.i.i1010 = and i64 %1476, %1474 %tobool.not.i.i.i.i1011 = icmp ne i64 %and.i.i.i.i6.i.i1010, 0 %1477 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i1012 = getelementptr inbounds nuw i32, ptr %1477, i64 %idxprom.i23.i.i.i.i.i1003, !amdgpu.uniform !42 %1478 = load atomic i32, ptr %arrayidx.i22.i.i.i1012 monotonic, align 4 %1479 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i1011) %1480 = extractvalue { i1, i64 } %1479, 0 %1481 = extractvalue { i1, i64 } %1479, 1 br i1 %1480, label %cond.false.i8.i.i.i.i1013, label %Flow3646 cond.false.i8.i.i.i.i1013: ; preds = %while.cond.i.i.i.i1006 %1482 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1478) %1483 = icmp ne i32 %1482, %port.sroa.37.0.i.i1007 br i1 %1483, label %while.body.i.i21.i.i.i.i1014.preheader, label %Flow3645, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1014.preheader: ; preds = %cond.false.i8.i.i.i.i1013 br label %while.body.i.i21.i.i.i.i1014, !amdgpu.uniform !42 Flow3645: ; preds = %Flow3643, %cond.false.i8.i.i.i.i1013 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1017, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1014: ; preds = %while.body.i.i21.i.i.i.i1014.preheader, %while.body.i.i21.i.i.i.i1014 tail call void @llvm.amdgcn.s.sleep(i32 2) %1484 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i1015 = getelementptr inbounds nuw i32, ptr %1484, i64 %idxprom.i23.i.i.i.i.i1003, !amdgpu.uniform !42 %1485 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i1015 monotonic, align 4 %1486 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1485) %cmp.i.not.i.i23.i.i.i.i1016 = icmp eq i32 %1486, %port.sroa.37.0.i.i1007 br i1 %cmp.i.not.i.i23.i.i.i.i1016, label %Flow3643, label %while.body.i.i21.i.i.i.i1014, !amdgpu.uniform !42 Flow3643: ; preds = %while.body.i.i21.i.i.i.i1014 br label %Flow3645, !amdgpu.uniform !42 Flow3646: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1018, %while.cond.i.i.i.i1006 %1487 = phi i64 [ %add.i.i.i.i1021, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1018 ], [ poison, %while.cond.i.i.i.i1006 ] %1488 = phi i32 [ %conv.i.i26.i.i.i.i1019, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1018 ], [ poison, %while.cond.i.i.i.i1006 ] %1489 = phi ptr [ %scevgep3018, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1018 ], [ poison, %while.cond.i.i.i.i1006 ] %1490 = phi i64 [ %lsr.iv.next3023, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1018 ], [ poison, %while.cond.i.i.i.i1006 ] %1491 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1018 ], [ true, %while.cond.i.i.i.i1006 ] call void @llvm.amdgcn.end.cf.i64(i64 %1481) %1492 = call i64 @llvm.amdgcn.if.break.i64(i1 %1491, i64 %phi.broken3950) %1493 = call i1 @llvm.amdgcn.loop.i64(i64 %1492) br i1 %1493, label %cond.false.i.i.i1028, label %while.cond.i.i.i.i1006 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1017: ; preds = %Flow3645 fence acquire %1494 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i1009) %1495 = extractvalue { i1, i64 } %1494, 0 %1496 = extractvalue { i1, i64 } %1494, 1 br i1 %1495, label %if.then.i.i.i.i.i.i.i1022, label %Flow3642 if.then.i.i.i.i.i.i.i1022: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1017 %sub.i.i.i.i.i.i.i1024 = sub nuw i64 %writer.sroa.10.5.i.i.i.i.i, %idx.0.i.i.i.i1008 %spec.select.i.i.i36.i.i.i.i1025 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i1024, i64 64) %1497 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %1498 = and i64 %spec.select.i.i.i36.i.i.i.i1025, 15 %1499 = sub i64 %spec.select.i.i.i36.i.i.i.i1025, %1498 %1500 = icmp ne i64 %1499, 0 %1501 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1500) %1502 = extractvalue { i1, i64 } %1501, 0 %1503 = extractvalue { i1, i64 } %1501, 1 br i1 %1502, label %loop-memcpy-expansion2225.preheader, label %Flow3641 loop-memcpy-expansion2225.preheader: ; preds = %if.then.i.i.i.i.i.i.i1022 %arrayidx.i20.i35.i.i.i.i1026 = getelementptr %"struct.rpc::Buffer", ptr %1497, i64 %idxprom.i19.i.i.i.i.i996 %arrayidx.i22.i38.i.i.i.i1027 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i1026, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2225, !amdgpu.uniform !42 Flow3641: ; preds = %Flow3640, %if.then.i.i.i.i.i.i.i1022 call void @llvm.amdgcn.end.cf.i64(i64 %1503) br label %loop-memcpy-residual-header2228, !amdgpu.uniform !42 loop-memcpy-expansion2225: ; preds = %loop-memcpy-expansion2225.preheader, %loop-memcpy-expansion2225 %phi.broken3948 = phi i64 [ 0, %loop-memcpy-expansion2225.preheader ], [ %1508, %loop-memcpy-expansion2225 ] %loop-index2226 = phi i64 [ %1506, %loop-memcpy-expansion2225 ], [ 0, %loop-memcpy-expansion2225.preheader ] %scevgep3019 = getelementptr i8, ptr %lsr.iv3017, i64 %loop-index2226 %1504 = load <4 x i32>, ptr %scevgep3019, align 1 %1505 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i1027, i64 %loop-index2226 store <4 x i32> %1504, ptr %1505, align 1 %1506 = add i64 %loop-index2226, 16 %1507 = icmp uge i64 %1506, %1499 %1508 = call i64 @llvm.amdgcn.if.break.i64(i1 %1507, i64 %phi.broken3948) %1509 = call i1 @llvm.amdgcn.loop.i64(i64 %1508) br i1 %1509, label %Flow3640, label %loop-memcpy-expansion2225 Flow3638: ; preds = %Flow3637, %loop-memcpy-residual-header2228 call void @llvm.amdgcn.end.cf.i64(i64 %2789) br label %Flow3642, !amdgpu.uniform !42 loop-memcpy-residual2227: ; preds = %loop-memcpy-residual2227.preheader, %loop-memcpy-residual2227 %phi.broken3949 = phi i64 [ 0, %loop-memcpy-residual2227.preheader ], [ %1513, %loop-memcpy-residual2227 ] %residual-loop-index2229 = phi i64 [ %1511, %loop-memcpy-residual2227 ], [ 0, %loop-memcpy-residual2227.preheader ] %scevgep3028 = getelementptr i8, ptr %scevgep3027, i64 %residual-loop-index2229 %1510 = load i8, ptr %scevgep3028, align 1 %scevgep3026 = getelementptr i8, ptr %scevgep3025, i64 %residual-loop-index2229 store i8 %1510, ptr %scevgep3026, align 1 %1511 = add i64 %residual-loop-index2229, 1 %1512 = icmp uge i64 %1511, %1498 %1513 = call i64 @llvm.amdgcn.if.break.i64(i1 %1512, i64 %phi.broken3949) %1514 = call i1 @llvm.amdgcn.loop.i64(i64 %1513) br i1 %1514, label %Flow3637, label %loop-memcpy-residual2227 Flow3637: ; preds = %loop-memcpy-residual2227 %.lcssa4100 = phi i64 [ %1513, %loop-memcpy-residual2227 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4100) br label %Flow3638, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1018: ; preds = %Flow3642 %conv.i.i26.i.i.i.i1019 = xor i32 %port.sroa.37.0.i.i1007, 1 fence release %1515 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i1020 = getelementptr inbounds nuw i32, ptr %1515, i64 %idxprom.i23.i.i.i.i.i1003 store atomic i32 %conv.i.i26.i.i.i.i1019, ptr %arrayidx.i24.i29.i.i.i.i1020 monotonic, align 4 %add.i.i.i.i1021 = add i64 %idx.0.i.i.i.i1008, 64 %scevgep3018 = getelementptr i8, ptr %lsr.iv3017, i64 64 %lsr.iv.next3023 = add i64 %lsr.iv3022, -64 br label %Flow3646, !amdgpu.uniform !42 cond.false.i.i.i1028: ; preds = %Flow3646 %.lcssa4102 = phi i64 [ %1492, %Flow3646 ] %port.sroa.37.0.i.i1007.lcssa = phi i32 [ %port.sroa.37.0.i.i1007, %Flow3646 ] %.lcssa4101 = phi i32 [ %1478, %Flow3646 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4102) %1516 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa4101) %1517 = icmp ne i32 %1516, %port.sroa.37.0.i.i1007.lcssa %1518 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1517) %1519 = extractvalue { i1, i64 } %1518, 0 %1520 = extractvalue { i1, i64 } %1518, 1 br i1 %1519, label %while.body.i.i.i.i1029.preheader, label %Flow3635 while.body.i.i.i.i1029.preheader: ; preds = %cond.false.i.i.i1028 br label %while.body.i.i.i.i1029, !amdgpu.uniform !42 Flow3635: ; preds = %Flow3633, %cond.false.i.i.i1028 call void @llvm.amdgcn.end.cf.i64(i64 %1520) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit1050, !amdgpu.uniform !42 while.body.i.i.i.i1029: ; preds = %while.body.i.i.i.i1029.preheader, %while.body.i.i.i.i1029 %phi.broken3951 = phi i64 [ 0, %while.body.i.i.i.i1029.preheader ], [ %1524, %while.body.i.i.i.i1029 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %1521 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i1030 = getelementptr inbounds nuw i32, ptr %1521, i64 %idxprom.i23.i.i.i.i.i1003, !amdgpu.uniform !42 %1522 = load atomic i32, ptr %arrayidx.i.i.i8.i.i1030 monotonic, align 4 %1523 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1522) %cmp.i.not.i.i.i.i1031 = icmp eq i32 %1523, %port.sroa.37.0.i.i1007.lcssa %1524 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i1031, i64 %phi.broken3951) %1525 = call i1 @llvm.amdgcn.loop.i64(i64 %1524) br i1 %1525, label %Flow3633, label %while.body.i.i.i.i1029 Flow3633: ; preds = %while.body.i.i.i.i1029 %.lcssa4098 = phi i64 [ %1524, %while.body.i.i.i.i1029 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4098) br label %Flow3635, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit1050: ; preds = %Flow3635 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %1526 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4109, i1 true) %iszero.i.i.i.i.i13.i.i1033 = icmp ne i64 %.lcssa4109, 0 %cmp2.i.i.i.i14.i.i1034 = icmp eq i64 %1526, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i1035 = select i1 %iszero.i.i.i.i.i13.i.i1033, i1 %cmp2.i.i.i.i14.i.i1034, i1 false %1527 = and i32 %.lcssa4110, 31 %conv4.i.i.i19.i.i1039 = zext i1 %cmp.i.i.i.i15.i.i1035 to i32 %shl.i.i.i20.i.i1040 = shl nuw i32 %conv4.i.i.i19.i.i1039, %1527 %xor.i.i.i21.i.i1041 = xor i32 %shl.i.i.i20.i.i1040, -1 %1528 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2562, !amdgpu.uniform !42 1529: ; preds = %ComputeEnd2563 %div8.i.i.i16.i.i1036 = lshr i32 %.lcssa4110, 5 %idxprom.i.i.i17.i.i1037 = zext nneg i32 %div8.i.i.i16.i.i1036 to i64 %1530 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i1037 %sunkaddr3319 = getelementptr inbounds i8, ptr addrspace(1) %1530, i64 40 %1531 = atomicrmw and ptr addrspace(1) %sunkaddr3319, i32 %.lcssa4097 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1532, !amdgpu.uniform !42 1532: ; preds = %1529, %ComputeEnd2563 call void @llvm.amdgcn.end.cf.i64(i64 %3561) tail call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i.i1054, !amdgpu.uniform !42 for.cond.i.i.i1054: ; preds = %1532, %Flow3632 %1533 = phi i32 [ %1571, %Flow3632 ], [ poison, %1532 ] %1534 = phi i64 [ %1572, %Flow3632 ], [ poison, %1532 ] %1535 = phi i32 [ %1573, %Flow3632 ], [ poison, %1532 ] %retval.sroa.6.0.i.i.i1055 = phi i32 [ %1576, %Flow3632 ], [ undef, %1532 ] %retval.sroa.2.0.i.i.i1057 = phi i64 [ %1575, %Flow3632 ], [ undef, %1532 ] %retval.sroa.8.0.i.i.i1058 = phi i32 [ %1574, %Flow3632 ], [ undef, %1532 ] %index.0.i.i.i1059 = phi i32 [ %1578, %Flow3632 ], [ 0, %1532 ] %1536 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i1060 = icmp ult i32 %index.0.i.i.i1059, %1536 %spec.store.select.i.i.i1061 = select i1 %cmp.not.i.i.i1060, i32 %index.0.i.i.i1059, i32 0 %1537 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %1538 = and i32 %spec.store.select.i.i.i1061, 31 %1539 = lshr i64 %1537, %sh_prom.i.i.i.i %1540 = trunc i64 %1539 to i32 %conv4.i.i.i.i.i1065 = and i32 %1540, 1 %shl.i.i.i.i.i1066 = shl nuw i32 %conv4.i.i.i.i.i1065, %1538 %1541 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2566, !amdgpu.uniform !42 1542: ; preds = %ComputeEnd2567 %sunkaddr3320 = getelementptr inbounds i8, ptr addrspace(1) %3571, i64 40 %1543 = atomicrmw or ptr addrspace(1) %sunkaddr3320, i32 %.lcssa4091 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1544, !amdgpu.uniform !42 1544: ; preds = %1542, %ComputeEnd2567 %1545 = phi i32 [ %1543, %1542 ], [ poison, %ComputeEnd2567 ] call void @llvm.amdgcn.end.cf.i64(i64 %3580) %1546 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %1545) %1547 = or i32 %1546, %.lcssa4092 %shl5.i.i.i.i.i1067 = shl nuw i32 1, %1538 %and.i.i.i.i.i1068 = and i32 %shl5.i.i.i.i.i1067, %1547 %tobool3.i.i.i.i1069 = icmp ne i32 %and.i.i.i.i.i1068, 0 %1548 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i1069) %and.i.i.i.i.i.i1070 = and i64 %1548, %1537 %cmp.i.not.i.i.i1071 = icmp ne i64 %1537, %and.i.i.i.i.i.i1070 br i1 %cmp.i.not.i.i.i1071, label %if.then.i.i.i.i1072, label %Flow3631, !amdgpu.uniform !42 if.then.i.i.i.i1072: ; preds = %1544 fence syncscope("agent") acquire %1549 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %1550 = extractelement <2 x i64> %1549, i32 0 %1551 = inttoptr i64 %1550 to ptr %1552 = extractelement <2 x i64> %1549, i32 1 %1553 = inttoptr i64 %1552 to ptr %idxprom.i.i.i.i1073 = zext i32 %spec.store.select.i.i.i1061 to i64 %arrayidx.i.i.i.i1074 = getelementptr inbounds nuw i32, ptr %1551, i64 %idxprom.i.i.i.i1073, !amdgpu.uniform !42 %1554 = load atomic i32, ptr %arrayidx.i.i.i.i1074 monotonic, align 4 %1555 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1554) %arrayidx.i45.i.i.i1075 = getelementptr inbounds nuw i32, ptr %1553, i64 %idxprom.i.i.i.i1073, !amdgpu.uniform !42 %1556 = load atomic i32, ptr %arrayidx.i45.i.i.i1075 monotonic, align 4 %1557 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1556) %cmp.i46.not.i.i.i1076 = icmp ne i32 %1555, %1557 br i1 %cmp.i46.not.i.i.i1076, label %if.then12.i.i.i1077, label %Flow3629, !amdgpu.uniform !42 if.then12.i.i.i1077: ; preds = %if.then.i.i.i.i1072 fence syncscope("agent") release %1558 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1537, i1 true) %iszero.i.i.i.i.i.i.i1078 = icmp ne i64 %1537, 0 %cmp2.i.i.i.i.i.i1079 = icmp eq i64 %1558, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i1080 = select i1 %iszero.i.i.i.i.i.i.i1078, i1 %cmp2.i.i.i.i.i.i1079, i1 false %conv4.i.i51.i.i.i1081 = zext i1 %cmp.i.i.i.i.i.i1080 to i32 %shl.i.i52.i.i.i1082 = shl nuw i32 %conv4.i.i51.i.i.i1081, %1538 %xor.i.i.i.i.i1083 = xor i32 %shl.i.i52.i.i.i1082, -1 %1559 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2571, !amdgpu.uniform !42 1560: ; preds = %ComputeEnd2572 %sunkaddr3321 = getelementptr inbounds i8, ptr addrspace(1) %3571, i64 40 %1561 = atomicrmw and ptr addrspace(1) %sunkaddr3321, i32 %.lcssa4093 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1562, !amdgpu.uniform !42 1562: ; preds = %1560, %ComputeEnd2572 call void @llvm.amdgcn.end.cf.i64(i64 %3598) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3629, !amdgpu.uniform !42 if.end14.i.i.i1141: ; preds = %Flow3629 %1563 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1537, i1 true) %iszero.i.i.i.i.i.i1142 = icmp ne i64 %1537, 0 %cmp2.i.i.i.i.i1143 = icmp eq i64 %1563, %sh_prom.i.i.i.i %cmp.i.i.i.i.i1144 = select i1 %iszero.i.i.i.i.i.i1142, i1 %cmp2.i.i.i.i.i1143, i1 false %1564 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i1144) %1565 = extractvalue { i1, i64 } %1564, 0 %1566 = extractvalue { i1, i64 } %1564, 1 br i1 %1565, label %if.then16.i.i.i1146, label %if.end22.i.i.i1145 if.then16.i.i.i1146: ; preds = %if.end14.i.i.i1141 %1567 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i1147 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1567, i64 %idxprom.i.i.i.i1073, i32 1 store i32 1660944387, ptr %opcode.i.i.i1147, align 8, !tbaa !77 %arrayidx21.i.i.i1148 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1567, i64 %idxprom.i.i.i.i1073 store i64 %1537, ptr %arrayidx21.i.i.i1148, align 8, !tbaa !80 br label %if.end22.i.i.i1145, !amdgpu.uniform !42 Flow3630: ; preds = %if.end22.i.i.i1145, %Flow3629 %1568 = phi i32 [ %1555, %if.end22.i.i.i1145 ], [ %retval.sroa.8.0.i.i.i1058, %Flow3629 ] %1569 = phi i64 [ %1537, %if.end22.i.i.i1145 ], [ %retval.sroa.2.0.i.i.i1057, %Flow3629 ] %1570 = phi i32 [ %spec.store.select.i.i.i1061, %if.end22.i.i.i1145 ], [ %retval.sroa.6.0.i.i.i1055, %Flow3629 ] br label %cleanup26.i.i.i1084, !amdgpu.uniform !42 if.end22.i.i.i1145: ; preds = %if.then16.i.i.i1146, %if.end14.i.i.i1141 call void @llvm.amdgcn.end.cf.i64(i64 %1566) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3630, !amdgpu.uniform !42 Flow3631: ; preds = %cleanup26.i.i.i1084, %1544 %1571 = phi i32 [ %1570, %cleanup26.i.i.i1084 ], [ %1533, %1544 ] %1572 = phi i64 [ %1569, %cleanup26.i.i.i1084 ], [ %1534, %1544 ] %1573 = phi i32 [ %1568, %cleanup26.i.i.i1084 ], [ %1535, %1544 ] %1574 = phi i32 [ %1568, %cleanup26.i.i.i1084 ], [ %retval.sroa.8.0.i.i.i1058, %1544 ] %1575 = phi i64 [ %1569, %cleanup26.i.i.i1084 ], [ %retval.sroa.2.0.i.i.i1057, %1544 ] %1576 = phi i32 [ %1570, %cleanup26.i.i.i1084 ], [ %retval.sroa.6.0.i.i.i1055, %1544 ] %1577 = phi i1 [ %cmp.i46.not.i.i.i1076, %cleanup26.i.i.i1084 ], [ true, %1544 ] br i1 %1577, label %for.inc.i.i.i1089, label %Flow3632, !amdgpu.uniform !42 cleanup26.i.i.i1084: ; preds = %Flow3630 br label %Flow3631, !amdgpu.uniform !42 for.inc.i.i.i1089: ; preds = %Flow3631 %inc.i.i.i1094 = add i32 %spec.store.select.i.i.i1061, 1 br label %Flow3632, !amdgpu.uniform !42 Flow3632: ; preds = %for.inc.i.i.i1089, %Flow3631 %1578 = phi i32 [ %inc.i.i.i1094, %for.inc.i.i.i1089 ], [ poison, %Flow3631 ] %1579 = phi i1 [ false, %for.inc.i.i.i1089 ], [ true, %Flow3631 ] br i1 %1579, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1095, label %for.cond.i.i.i1054, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1095: ; preds = %Flow3632 %.lcssa4096 = phi i32 [ %1571, %Flow3632 ] %.lcssa4095 = phi i64 [ %1572, %Flow3632 ] %.lcssa4094 = phi i32 [ %1573, %Flow3632 ] fence acquire %1580 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i1096 = shl i32 %.lcssa4096, 6 %idxprom.i19.i.i.i.i.i1097 = zext i32 %mul.i.i.i.i.i.i1096 to i64 %arrayidx.i20.i.i.i.i.i1098 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %1580, i64 %idxprom.i19.i.i.i.i.i1097 %arrayidx.i22.i.i.i.i.i1099 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i1098, i64 %sh_prom.i.i.i.i store i64 1, ptr %arrayidx.i22.i.i.i.i.i1099, align 8, !tbaa !82 %arrayidx6.i.i.i.i.i.i.i1100 = getelementptr inbounds nuw i8, ptr %arrayidx.i22.i.i.i.i.i1099, i64 8 store i8 10, ptr %arrayidx6.i.i.i.i.i.i.i1100, align 8 %tobool.not.i.i.i.i.i.i1101 = icmp eq i32 %.lcssa4094, 0 %conv.i.i.i.i.i.i1102 = zext i1 %tobool.not.i.i.i.i.i.i1101 to i32 fence release %1581 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i1103 = zext i32 %.lcssa4096 to i64 %arrayidx.i24.i.i.i.i.i1104 = getelementptr inbounds nuw i32, ptr %1581, i64 %idxprom.i23.i.i.i.i.i1103 store atomic i32 %conv.i.i.i.i.i.i1102, ptr %arrayidx.i24.i.i.i.i.i1104 monotonic, align 4 %1582 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i1105 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1582, i64 %idxprom.i23.i.i.i.i.i1103, !amdgpu.uniform !42 %1583 = load i64, ptr %arrayidx.i.i5.i.i1105, align 8, !tbaa !80 br label %while.cond.i.i.i.i1106, !amdgpu.uniform !42 while.cond.i.i.i.i1106: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1095, %Flow3628 %phi.broken3952 = phi i64 [ 0, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1095 ], [ %1598, %Flow3628 ] %port.sroa.37.0.i.i1107 = phi i32 [ %1596, %Flow3628 ], [ %conv.i.i.i.i.i.i1102, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1095 ] %idx.0.i.i.i.i1108 = phi i64 [ %1595, %Flow3628 ], [ 56, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1095 ] %cmp.i.i.i.i1109 = icmp eq i64 %idx.0.i.i.i.i1108, 0 %1584 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i1109) %and.i.i.i.i6.i.i1110 = and i64 %1584, %1583 %tobool.not.i.i.i.i1111 = icmp ne i64 %and.i.i.i.i6.i.i1110, 0 %1585 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i1112 = getelementptr inbounds nuw i32, ptr %1585, i64 %idxprom.i23.i.i.i.i.i1103, !amdgpu.uniform !42 %1586 = load atomic i32, ptr %arrayidx.i22.i.i.i1112 monotonic, align 4 %1587 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i1111) %1588 = extractvalue { i1, i64 } %1587, 0 %1589 = extractvalue { i1, i64 } %1587, 1 br i1 %1588, label %cond.false.i8.i.i.i.i1113, label %Flow3628 cond.false.i8.i.i.i.i1113: ; preds = %while.cond.i.i.i.i1106 %1590 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1586) %1591 = icmp ne i32 %1590, %port.sroa.37.0.i.i1107 br i1 %1591, label %while.body.i.i21.i.i.i.i1114.preheader, label %Flow3627, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1114.preheader: ; preds = %cond.false.i8.i.i.i.i1113 br label %while.body.i.i21.i.i.i.i1114, !amdgpu.uniform !42 Flow3627: ; preds = %Flow3625, %cond.false.i8.i.i.i.i1113 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1117, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1114: ; preds = %while.body.i.i21.i.i.i.i1114.preheader, %while.body.i.i21.i.i.i.i1114 tail call void @llvm.amdgcn.s.sleep(i32 2) %1592 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i1115 = getelementptr inbounds nuw i32, ptr %1592, i64 %idxprom.i23.i.i.i.i.i1103, !amdgpu.uniform !42 %1593 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i1115 monotonic, align 4 %1594 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1593) %cmp.i.not.i.i23.i.i.i.i1116 = icmp eq i32 %1594, %port.sroa.37.0.i.i1107 br i1 %cmp.i.not.i.i23.i.i.i.i1116, label %Flow3625, label %while.body.i.i21.i.i.i.i1114, !amdgpu.uniform !42 Flow3625: ; preds = %while.body.i.i21.i.i.i.i1114 br label %Flow3627, !amdgpu.uniform !42 Flow3628: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1118, %while.cond.i.i.i.i1106 %1595 = phi i64 [ %add.i.i.i.i1121, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1118 ], [ poison, %while.cond.i.i.i.i1106 ] %1596 = phi i32 [ %conv.i.i26.i.i.i.i1119, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1118 ], [ poison, %while.cond.i.i.i.i1106 ] %1597 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1118 ], [ true, %while.cond.i.i.i.i1106 ] call void @llvm.amdgcn.end.cf.i64(i64 %1589) %1598 = call i64 @llvm.amdgcn.if.break.i64(i1 %1597, i64 %phi.broken3952) %1599 = call i1 @llvm.amdgcn.loop.i64(i64 %1598) br i1 %1599, label %cond.false.i.i.i1127, label %while.cond.i.i.i.i1106 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1117: ; preds = %Flow3627 fence acquire br i1 %cmp.i.i.i.i1109, label %if.then.i.i.i.i.i.i.i1122, label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1118, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i1122: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1117 %1600 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %arrayidx.i20.i35.i.i.i.i1125 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %1600, i64 %idxprom.i19.i.i.i.i.i1097 %arrayidx.i22.i38.i.i.i.i1126 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i1125, i64 %sh_prom.i.i.i.i store i8 10, ptr %arrayidx.i22.i38.i.i.i.i1126, align 1 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1118, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1118: ; preds = %if.then.i.i.i.i.i.i.i1122, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1117 %conv.i.i26.i.i.i.i1119 = xor i32 %port.sroa.37.0.i.i1107, 1 fence release %1601 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i1120 = getelementptr inbounds nuw i32, ptr %1601, i64 %idxprom.i23.i.i.i.i.i1103 store atomic i32 %conv.i.i26.i.i.i.i1119, ptr %arrayidx.i24.i29.i.i.i.i1120 monotonic, align 4 %add.i.i.i.i1121 = add i64 %idx.0.i.i.i.i1108, 64 br label %Flow3628, !amdgpu.uniform !42 cond.false.i.i.i1127: ; preds = %Flow3628 %.lcssa4090 = phi i64 [ %1598, %Flow3628 ] %port.sroa.37.0.i.i1107.lcssa = phi i32 [ %port.sroa.37.0.i.i1107, %Flow3628 ] %.lcssa4089 = phi i32 [ %1586, %Flow3628 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4090) %1602 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa4089) %1603 = icmp ne i32 %1602, %port.sroa.37.0.i.i1107.lcssa %1604 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1603) %1605 = extractvalue { i1, i64 } %1604, 0 %1606 = extractvalue { i1, i64 } %1604, 1 br i1 %1605, label %while.body.i.i.i.i1128.preheader, label %Flow3624 while.body.i.i.i.i1128.preheader: ; preds = %cond.false.i.i.i1127 br label %while.body.i.i.i.i1128, !amdgpu.uniform !42 Flow3624: ; preds = %Flow3622, %cond.false.i.i.i1127 call void @llvm.amdgcn.end.cf.i64(i64 %1606) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit1149, !amdgpu.uniform !42 while.body.i.i.i.i1128: ; preds = %while.body.i.i.i.i1128.preheader, %while.body.i.i.i.i1128 %phi.broken3953 = phi i64 [ 0, %while.body.i.i.i.i1128.preheader ], [ %1610, %while.body.i.i.i.i1128 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %1607 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i1129 = getelementptr inbounds nuw i32, ptr %1607, i64 %idxprom.i23.i.i.i.i.i1103, !amdgpu.uniform !42 %1608 = load atomic i32, ptr %arrayidx.i.i.i8.i.i1129 monotonic, align 4 %1609 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1608) %cmp.i.not.i.i.i.i1130 = icmp eq i32 %1609, %port.sroa.37.0.i.i1107.lcssa %1610 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i1130, i64 %phi.broken3953) %1611 = call i1 @llvm.amdgcn.loop.i64(i64 %1610) br i1 %1611, label %Flow3622, label %while.body.i.i.i.i1128 Flow3622: ; preds = %while.body.i.i.i.i1128 %.lcssa4088 = phi i64 [ %1610, %while.body.i.i.i.i1128 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4088) br label %Flow3624, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit1149: ; preds = %Flow3624 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %1612 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4095, i1 true) %iszero.i.i.i.i.i13.i.i1132 = icmp ne i64 %.lcssa4095, 0 %cmp2.i.i.i.i14.i.i1133 = icmp eq i64 %1612, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i1134 = select i1 %iszero.i.i.i.i.i13.i.i1132, i1 %cmp2.i.i.i.i14.i.i1133, i1 false %1613 = and i32 %.lcssa4096, 31 %conv4.i.i.i19.i.i1138 = zext i1 %cmp.i.i.i.i15.i.i1134 to i32 %shl.i.i.i20.i.i1139 = shl nuw i32 %conv4.i.i.i19.i.i1138, %1613 %xor.i.i.i21.i.i1140 = xor i32 %shl.i.i.i20.i.i1139, -1 %1614 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2575, !amdgpu.uniform !42 1615: ; preds = %ComputeEnd2576 %div8.i.i.i16.i.i1135 = lshr i32 %.lcssa4096, 5 %idxprom.i.i.i17.i.i1136 = zext nneg i32 %div8.i.i.i16.i.i1135 to i64 %1616 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i1136 %sunkaddr3322 = getelementptr inbounds i8, ptr addrspace(1) %1616, i64 40 %1617 = atomicrmw and ptr addrspace(1) %sunkaddr3322, i32 %.lcssa4087 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1618, !amdgpu.uniform !42 1618: ; preds = %1615, %ComputeEnd2576 call void @llvm.amdgcn.end.cf.i64(i64 %3615) tail call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i1.i1158, !amdgpu.uniform !42 for.cond.i.i1.i1158: ; preds = %1618, %Flow3621 %1619 = phi i32 [ %1657, %Flow3621 ], [ poison, %1618 ] %1620 = phi i64 [ %1658, %Flow3621 ], [ poison, %1618 ] %1621 = phi i32 [ %1659, %Flow3621 ], [ poison, %1618 ] %retval.sroa.6.0.i.i.i1159 = phi i32 [ %1662, %Flow3621 ], [ undef, %1618 ] %retval.sroa.2.0.i.i.i1161 = phi i64 [ %1661, %Flow3621 ], [ undef, %1618 ] %retval.sroa.8.0.i.i.i1162 = phi i32 [ %1660, %Flow3621 ], [ undef, %1618 ] %index.0.i.i.i1163 = phi i32 [ %1664, %Flow3621 ], [ 0, %1618 ] %1622 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i1164 = icmp ult i32 %index.0.i.i.i1163, %1622 %spec.store.select.i.i.i1165 = select i1 %cmp.not.i.i.i1164, i32 %index.0.i.i.i1163, i32 0 %1623 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %1624 = and i32 %spec.store.select.i.i.i1165, 31 %1625 = lshr i64 %1623, %sh_prom.i.i.i.i %1626 = trunc i64 %1625 to i32 %conv4.i.i.i.i.i1169 = and i32 %1626, 1 %shl.i.i.i.i.i1170 = shl nuw i32 %conv4.i.i.i.i.i1169, %1624 %1627 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2579, !amdgpu.uniform !42 1628: ; preds = %ComputeEnd2580 %sunkaddr3323 = getelementptr inbounds i8, ptr addrspace(1) %3625, i64 40 %1629 = atomicrmw or ptr addrspace(1) %sunkaddr3323, i32 %.lcssa4081 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1630, !amdgpu.uniform !42 1630: ; preds = %1628, %ComputeEnd2580 %1631 = phi i32 [ %1629, %1628 ], [ poison, %ComputeEnd2580 ] call void @llvm.amdgcn.end.cf.i64(i64 %3634) %1632 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %1631) %1633 = or i32 %1632, %.lcssa4082 %shl5.i.i.i.i.i1171 = shl nuw i32 1, %1624 %and.i.i.i.i.i1172 = and i32 %shl5.i.i.i.i.i1171, %1633 %tobool3.i.i.i.i1173 = icmp ne i32 %and.i.i.i.i.i1172, 0 %1634 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i1173) %and.i.i.i.i.i.i1174 = and i64 %1634, %1623 %cmp.i.not.i.i.i1175 = icmp ne i64 %1623, %and.i.i.i.i.i.i1174 br i1 %cmp.i.not.i.i.i1175, label %if.then.i.i.i.i1176, label %Flow3620, !amdgpu.uniform !42 if.then.i.i.i.i1176: ; preds = %1630 fence syncscope("agent") acquire %1635 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %1636 = extractelement <2 x i64> %1635, i32 0 %1637 = inttoptr i64 %1636 to ptr %1638 = extractelement <2 x i64> %1635, i32 1 %1639 = inttoptr i64 %1638 to ptr %idxprom.i.i.i.i1177 = zext i32 %spec.store.select.i.i.i1165 to i64 %arrayidx.i.i.i.i1178 = getelementptr inbounds nuw i32, ptr %1637, i64 %idxprom.i.i.i.i1177, !amdgpu.uniform !42 %1640 = load atomic i32, ptr %arrayidx.i.i.i.i1178 monotonic, align 4 %1641 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1640) %arrayidx.i45.i.i.i1179 = getelementptr inbounds nuw i32, ptr %1639, i64 %idxprom.i.i.i.i1177, !amdgpu.uniform !42 %1642 = load atomic i32, ptr %arrayidx.i45.i.i.i1179 monotonic, align 4 %1643 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1642) %cmp.i46.not.i.i.i1180 = icmp ne i32 %1641, %1643 br i1 %cmp.i46.not.i.i.i1180, label %if.then12.i.i.i1181, label %Flow3618, !amdgpu.uniform !42 if.then12.i.i.i1181: ; preds = %if.then.i.i.i.i1176 fence syncscope("agent") release %1644 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1623, i1 true) %iszero.i.i.i.i.i.i.i1182 = icmp ne i64 %1623, 0 %cmp2.i.i.i.i.i.i1183 = icmp eq i64 %1644, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i1184 = select i1 %iszero.i.i.i.i.i.i.i1182, i1 %cmp2.i.i.i.i.i.i1183, i1 false %conv4.i.i51.i.i.i1185 = zext i1 %cmp.i.i.i.i.i.i1184 to i32 %shl.i.i52.i.i.i1186 = shl nuw i32 %conv4.i.i51.i.i.i1185, %1624 %xor.i.i.i.i.i1187 = xor i32 %shl.i.i52.i.i.i1186, -1 %1645 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2584, !amdgpu.uniform !42 1646: ; preds = %ComputeEnd2585 %sunkaddr3324 = getelementptr inbounds i8, ptr addrspace(1) %3625, i64 40 %1647 = atomicrmw and ptr addrspace(1) %sunkaddr3324, i32 %.lcssa4083 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1648, !amdgpu.uniform !42 1648: ; preds = %1646, %ComputeEnd2585 call void @llvm.amdgcn.end.cf.i64(i64 %3652) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3618, !amdgpu.uniform !42 if.end14.i.i.i1247: ; preds = %Flow3618 %1649 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1623, i1 true) %iszero.i.i.i.i.i.i1248 = icmp ne i64 %1623, 0 %cmp2.i.i.i.i.i1249 = icmp eq i64 %1649, %sh_prom.i.i.i.i %cmp.i.i.i.i.i1250 = select i1 %iszero.i.i.i.i.i.i1248, i1 %cmp2.i.i.i.i.i1249, i1 false %1650 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i1250) %1651 = extractvalue { i1, i64 } %1650, 0 %1652 = extractvalue { i1, i64 } %1650, 1 br i1 %1651, label %if.then16.i.i.i1252, label %if.end22.i.i.i1251 if.then16.i.i.i1252: ; preds = %if.end14.i.i.i1247 %1653 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i1253 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1653, i64 %idxprom.i.i.i.i1177, i32 1 store i32 1660944387, ptr %opcode.i.i.i1253, align 8, !tbaa !77 %arrayidx21.i.i.i1254 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1653, i64 %idxprom.i.i.i.i1177 store i64 %1623, ptr %arrayidx21.i.i.i1254, align 8, !tbaa !80 br label %if.end22.i.i.i1251, !amdgpu.uniform !42 Flow3619: ; preds = %if.end22.i.i.i1251, %Flow3618 %1654 = phi i32 [ %1641, %if.end22.i.i.i1251 ], [ %retval.sroa.8.0.i.i.i1162, %Flow3618 ] %1655 = phi i64 [ %1623, %if.end22.i.i.i1251 ], [ %retval.sroa.2.0.i.i.i1161, %Flow3618 ] %1656 = phi i32 [ %spec.store.select.i.i.i1165, %if.end22.i.i.i1251 ], [ %retval.sroa.6.0.i.i.i1159, %Flow3618 ] br label %cleanup26.i.i.i1188, !amdgpu.uniform !42 if.end22.i.i.i1251: ; preds = %if.then16.i.i.i1252, %if.end14.i.i.i1247 call void @llvm.amdgcn.end.cf.i64(i64 %1652) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3619, !amdgpu.uniform !42 Flow3620: ; preds = %cleanup26.i.i.i1188, %1630 %1657 = phi i32 [ %1656, %cleanup26.i.i.i1188 ], [ %1619, %1630 ] %1658 = phi i64 [ %1655, %cleanup26.i.i.i1188 ], [ %1620, %1630 ] %1659 = phi i32 [ %1654, %cleanup26.i.i.i1188 ], [ %1621, %1630 ] %1660 = phi i32 [ %1654, %cleanup26.i.i.i1188 ], [ %retval.sroa.8.0.i.i.i1162, %1630 ] %1661 = phi i64 [ %1655, %cleanup26.i.i.i1188 ], [ %retval.sroa.2.0.i.i.i1161, %1630 ] %1662 = phi i32 [ %1656, %cleanup26.i.i.i1188 ], [ %retval.sroa.6.0.i.i.i1159, %1630 ] %1663 = phi i1 [ %cmp.i46.not.i.i.i1180, %cleanup26.i.i.i1188 ], [ true, %1630 ] br i1 %1663, label %for.inc.i.i.i1193, label %Flow3621, !amdgpu.uniform !42 cleanup26.i.i.i1188: ; preds = %Flow3619 br label %Flow3620, !amdgpu.uniform !42 for.inc.i.i.i1193: ; preds = %Flow3620 %inc.i.i.i1198 = add i32 %spec.store.select.i.i.i1165, 1 br label %Flow3621, !amdgpu.uniform !42 Flow3621: ; preds = %for.inc.i.i.i1193, %Flow3620 %1664 = phi i32 [ %inc.i.i.i1198, %for.inc.i.i.i1193 ], [ poison, %Flow3620 ] %1665 = phi i1 [ false, %for.inc.i.i.i1193 ], [ true, %Flow3620 ] br i1 %1665, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1199, label %for.cond.i.i1.i1158, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1199: ; preds = %Flow3621 %.lcssa4086 = phi i32 [ %1657, %Flow3621 ] %.lcssa4085 = phi i64 [ %1658, %Flow3621 ] %.lcssa4084 = phi i32 [ %1659, %Flow3621 ] fence acquire %1666 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i1200 = shl i32 %.lcssa4086, 6 %idxprom.i19.i.i.i.i.i1201 = zext i32 %mul.i.i.i.i.i.i1200 to i64 %arrayidx.i20.i.i.i.i.i1202 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %1666, i64 %idxprom.i19.i.i.i.i.i1201 %arrayidx.i22.i.i.i.i.i1203 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i1202, i64 %sh_prom.i.i.i.i store i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.36.13 to ptr), i64 6) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.36.13 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i1203, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i1204 = tail call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.36.13 to ptr), i64 6) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.36.13 to ptr) to i64)), i64 56) %1667 = and i64 %spec.select.i.i.i.i.i.i.i1204, 15 %1668 = sub i64 %spec.select.i.i.i.i.i.i.i1204, %1667 %1669 = icmp ne i64 %1668, 0 br i1 %1669, label %loop-memcpy-expansion2387.preheader, label %Flow3617, !amdgpu.uniform !42 loop-memcpy-expansion2387.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1199 %1670 = add nuw nsw i64 %75, 8 %scevgep3013 = getelementptr i8, ptr %1666, i64 %1670 %1671 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1201, 6 %scevgep3014 = getelementptr i8, ptr %scevgep3013, i64 %1671 br label %loop-memcpy-expansion2387, !amdgpu.uniform !42 Flow3617: ; preds = %Flow3616, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1199 br label %loop-memcpy-residual-header2390, !amdgpu.uniform !42 loop-memcpy-expansion2387: ; preds = %loop-memcpy-expansion2387.preheader, %loop-memcpy-expansion2387 %loop-index2388 = phi i64 [ %1674, %loop-memcpy-expansion2387 ], [ 0, %loop-memcpy-expansion2387.preheader ] %1672 = getelementptr i8, ptr addrspace(4) @.str.36.13, i64 %loop-index2388, !amdgpu.uniform !42 %1673 = load <4 x i32>, ptr addrspace(4) %1672, align 1 %scevgep3015 = getelementptr i8, ptr %scevgep3014, i64 %loop-index2388 store <4 x i32> %1673, ptr %scevgep3015, align 1 %1674 = add i64 %loop-index2388, 16 %1675 = icmp uge i64 %1674, %1668 br i1 %1675, label %Flow3616, label %loop-memcpy-expansion2387, !amdgpu.uniform !42 Flow3614: ; preds = %Flow3611, %Flow3613 %1676 = phi i64 [ %2942, %Flow3611 ], [ %2939, %Flow3613 ] br label %post-loop-memcpy-expansion2386, !amdgpu.uniform !42 loop-memcpy-residual2389: ; preds = %loop-memcpy-residual2389.preheader, %loop-memcpy-residual2389 %residual-loop-index2391 = phi i64 [ %1678, %loop-memcpy-residual2389 ], [ 0, %loop-memcpy-residual2389.preheader ] %scevgep3012 = getelementptr i8, ptr addrspace(4) @.str.36.13, i64 %residual-loop-index2391, !amdgpu.uniform !42 %1677 = load i8, ptr addrspace(4) %scevgep3012, align 1 %scevgep3011 = getelementptr i8, ptr %scevgep3010, i64 %residual-loop-index2391 store i8 %1677, ptr %scevgep3011, align 1 %1678 = add i64 %residual-loop-index2391, 1 %1679 = icmp uge i64 %1678, %1667 br i1 %1679, label %Flow3611, label %loop-memcpy-residual2389, !amdgpu.uniform !42 Flow3611: ; preds = %loop-memcpy-residual2389 br label %Flow3614, !amdgpu.uniform !42 post-loop-memcpy-expansion2386: ; preds = %Flow3614 %tobool.not.i.i.i.i.i.i1206 = icmp eq i32 %.lcssa4084, 0 %conv.i.i.i.i.i.i1207 = zext i1 %tobool.not.i.i.i.i.i.i1206 to i32 fence release %1680 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i1208 = zext i32 %.lcssa4086 to i64 %arrayidx.i24.i.i.i.i.i1209 = getelementptr inbounds nuw i32, ptr %1680, i64 %idxprom.i23.i.i.i.i.i1208 store atomic i32 %conv.i.i.i.i.i.i1207, ptr %arrayidx.i24.i.i.i.i.i1209 monotonic, align 4 %1681 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i1210 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1681, i64 %idxprom.i23.i.i.i.i.i1208, !amdgpu.uniform !42 %1682 = load i64, ptr %arrayidx.i.i5.i.i1210, align 8, !tbaa !80 br label %while.cond.i.i.i.i1211, !amdgpu.uniform !42 while.cond.i.i.i.i1211: ; preds = %post-loop-memcpy-expansion2386, %Flow3609 %phi.broken3954 = phi i64 [ 0, %post-loop-memcpy-expansion2386 ], [ %1699, %Flow3609 ] %lsr.iv3002 = phi i64 [ %1697, %Flow3609 ], [ -50, %post-loop-memcpy-expansion2386 ] %lsr.iv2997 = phi ptr addrspace(4) [ %1696, %Flow3609 ], [ getelementptr (i8, ptr addrspace(4) @.str.36.13, i64 56), %post-loop-memcpy-expansion2386 ] %port.sroa.37.0.i.i1212 = phi i32 [ %1695, %Flow3609 ], [ %conv.i.i.i.i.i.i1207, %post-loop-memcpy-expansion2386 ] %idx.0.i.i.i.i1213 = phi i64 [ %1694, %Flow3609 ], [ 56, %post-loop-memcpy-expansion2386 ] %cmp.i.i.i.i1214 = icmp ult i64 %idx.0.i.i.i.i1213, sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.36.13 to ptr), i64 6) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.36.13 to ptr) to i64)) %1683 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i1214) %and.i.i.i.i6.i.i1215 = and i64 %1683, %1682 %tobool.not.i.i.i.i1216 = icmp ne i64 %and.i.i.i.i6.i.i1215, 0 %1684 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i1217 = getelementptr inbounds nuw i32, ptr %1684, i64 %idxprom.i23.i.i.i.i.i1208, !amdgpu.uniform !42 %1685 = load atomic i32, ptr %arrayidx.i22.i.i.i1217 monotonic, align 4 %1686 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i1216) %1687 = extractvalue { i1, i64 } %1686, 0 %1688 = extractvalue { i1, i64 } %1686, 1 br i1 %1687, label %cond.false.i8.i.i.i.i1218, label %Flow3609 cond.false.i8.i.i.i.i1218: ; preds = %while.cond.i.i.i.i1211 %1689 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1685) %1690 = icmp ne i32 %1689, %port.sroa.37.0.i.i1212 br i1 %1690, label %while.body.i.i21.i.i.i.i1219.preheader, label %Flow3608, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1219.preheader: ; preds = %cond.false.i8.i.i.i.i1218 br label %while.body.i.i21.i.i.i.i1219, !amdgpu.uniform !42 Flow3608: ; preds = %Flow3606, %cond.false.i8.i.i.i.i1218 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1222, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1219: ; preds = %while.body.i.i21.i.i.i.i1219.preheader, %while.body.i.i21.i.i.i.i1219 tail call void @llvm.amdgcn.s.sleep(i32 2) %1691 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i1220 = getelementptr inbounds nuw i32, ptr %1691, i64 %idxprom.i23.i.i.i.i.i1208, !amdgpu.uniform !42 %1692 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i1220 monotonic, align 4 %1693 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1692) %cmp.i.not.i.i23.i.i.i.i1221 = icmp eq i32 %1693, %port.sroa.37.0.i.i1212 br i1 %cmp.i.not.i.i23.i.i.i.i1221, label %Flow3606, label %while.body.i.i21.i.i.i.i1219, !amdgpu.uniform !42 Flow3606: ; preds = %while.body.i.i21.i.i.i.i1219 br label %Flow3608, !amdgpu.uniform !42 Flow3609: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1223, %while.cond.i.i.i.i1211 %1694 = phi i64 [ %add.i.i.i.i1226, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1223 ], [ poison, %while.cond.i.i.i.i1211 ] %1695 = phi i32 [ %conv.i.i26.i.i.i.i1224, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1223 ], [ poison, %while.cond.i.i.i.i1211 ] %1696 = phi ptr addrspace(4) [ %scevgep2998, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1223 ], [ poison, %while.cond.i.i.i.i1211 ] %1697 = phi i64 [ %lsr.iv.next3003, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1223 ], [ poison, %while.cond.i.i.i.i1211 ] %1698 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1223 ], [ true, %while.cond.i.i.i.i1211 ] call void @llvm.amdgcn.end.cf.i64(i64 %1688) %1699 = call i64 @llvm.amdgcn.if.break.i64(i1 %1698, i64 %phi.broken3954) %1700 = call i1 @llvm.amdgcn.loop.i64(i64 %1699) br i1 %1700, label %cond.false.i.i.i1233, label %while.cond.i.i.i.i1211 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1222: ; preds = %Flow3608 fence acquire br i1 %cmp.i.i.i.i1214, label %if.then.i.i.i.i.i.i.i1227, label %Flow3605, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i1227: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1222 %sub.i.i.i.i.i.i.i1229 = sub nuw i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.36.13 to ptr), i64 6) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.36.13 to ptr) to i64)), %idx.0.i.i.i.i1213 %spec.select.i.i.i36.i.i.i.i1230 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i1229, i64 64) %1701 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %1702 = and i64 %spec.select.i.i.i36.i.i.i.i1230, 15 %1703 = sub i64 %spec.select.i.i.i36.i.i.i.i1230, %1702 %1704 = icmp ne i64 %1703, 0 br i1 %1704, label %loop-memcpy-expansion2393.preheader, label %Flow3604, !amdgpu.uniform !42 loop-memcpy-expansion2393.preheader: ; preds = %if.then.i.i.i.i.i.i.i1227 %arrayidx.i20.i35.i.i.i.i1231 = getelementptr %"struct.rpc::Buffer", ptr %1701, i64 %idxprom.i19.i.i.i.i.i1201 %arrayidx.i22.i38.i.i.i.i1232 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i1231, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2393, !amdgpu.uniform !42 Flow3604: ; preds = %Flow3603, %if.then.i.i.i.i.i.i.i1227 br label %loop-memcpy-residual-header2396, !amdgpu.uniform !42 loop-memcpy-expansion2393: ; preds = %loop-memcpy-expansion2393.preheader, %loop-memcpy-expansion2393 %loop-index2394 = phi i64 [ %1707, %loop-memcpy-expansion2393 ], [ 0, %loop-memcpy-expansion2393.preheader ] %scevgep2999 = getelementptr i8, ptr addrspace(4) %lsr.iv2997, i64 %loop-index2394, !amdgpu.uniform !42 %1705 = load <4 x i32>, ptr addrspace(4) %scevgep2999, align 1 %1706 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i1232, i64 %loop-index2394 store <4 x i32> %1705, ptr %1706, align 1 %1707 = add i64 %loop-index2394, 16 %1708 = icmp uge i64 %1707, %1703 br i1 %1708, label %Flow3603, label %loop-memcpy-expansion2393, !amdgpu.uniform !42 Flow3601: ; preds = %Flow3600, %loop-memcpy-residual-header2396 br label %Flow3605, !amdgpu.uniform !42 loop-memcpy-residual2395: ; preds = %loop-memcpy-residual2395.preheader, %loop-memcpy-residual2395 %residual-loop-index2397 = phi i64 [ %1710, %loop-memcpy-residual2395 ], [ 0, %loop-memcpy-residual2395.preheader ] %scevgep3008 = getelementptr i8, ptr addrspace(4) %scevgep3007, i64 %residual-loop-index2397, !amdgpu.uniform !42 %1709 = load i8, ptr addrspace(4) %scevgep3008, align 1 %scevgep3006 = getelementptr i8, ptr %scevgep3005, i64 %residual-loop-index2397 store i8 %1709, ptr %scevgep3006, align 1 %1710 = add i64 %residual-loop-index2397, 1 %1711 = icmp uge i64 %1710, %1702 br i1 %1711, label %Flow3600, label %loop-memcpy-residual2395, !amdgpu.uniform !42 Flow3600: ; preds = %loop-memcpy-residual2395 br label %Flow3601, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1223: ; preds = %Flow3605 %conv.i.i26.i.i.i.i1224 = xor i32 %port.sroa.37.0.i.i1212, 1 fence release %1712 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i1225 = getelementptr inbounds nuw i32, ptr %1712, i64 %idxprom.i23.i.i.i.i.i1208 store atomic i32 %conv.i.i26.i.i.i.i1224, ptr %arrayidx.i24.i29.i.i.i.i1225 monotonic, align 4 %add.i.i.i.i1226 = add i64 %idx.0.i.i.i.i1213, 64 %scevgep2998 = getelementptr i8, ptr addrspace(4) %lsr.iv2997, i64 64 %lsr.iv.next3003 = add i64 %lsr.iv3002, -64 br label %Flow3609, !amdgpu.uniform !42 cond.false.i.i.i1233: ; preds = %Flow3609 %.lcssa4080 = phi i64 [ %1699, %Flow3609 ] %port.sroa.37.0.i.i1212.lcssa = phi i32 [ %port.sroa.37.0.i.i1212, %Flow3609 ] %.lcssa4079 = phi i32 [ %1685, %Flow3609 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4080) %1713 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa4079) %1714 = icmp ne i32 %1713, %port.sroa.37.0.i.i1212.lcssa %1715 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1714) %1716 = extractvalue { i1, i64 } %1715, 0 %1717 = extractvalue { i1, i64 } %1715, 1 br i1 %1716, label %while.body.i.i.i.i1234.preheader, label %Flow3598 while.body.i.i.i.i1234.preheader: ; preds = %cond.false.i.i.i1233 br label %while.body.i.i.i.i1234, !amdgpu.uniform !42 Flow3598: ; preds = %Flow3596, %cond.false.i.i.i1233 call void @llvm.amdgcn.end.cf.i64(i64 %1717) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1255, !amdgpu.uniform !42 while.body.i.i.i.i1234: ; preds = %while.body.i.i.i.i1234.preheader, %while.body.i.i.i.i1234 %phi.broken3955 = phi i64 [ 0, %while.body.i.i.i.i1234.preheader ], [ %1721, %while.body.i.i.i.i1234 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %1718 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i1235 = getelementptr inbounds nuw i32, ptr %1718, i64 %idxprom.i23.i.i.i.i.i1208, !amdgpu.uniform !42 %1719 = load atomic i32, ptr %arrayidx.i.i.i8.i.i1235 monotonic, align 4 %1720 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1719) %cmp.i.not.i.i.i.i1236 = icmp eq i32 %1720, %port.sroa.37.0.i.i1212.lcssa %1721 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i1236, i64 %phi.broken3955) %1722 = call i1 @llvm.amdgcn.loop.i64(i64 %1721) br i1 %1722, label %Flow3596, label %while.body.i.i.i.i1234 Flow3596: ; preds = %while.body.i.i.i.i1234 %.lcssa4078 = phi i64 [ %1721, %while.body.i.i.i.i1234 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4078) br label %Flow3598, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1255: ; preds = %Flow3598 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %1723 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4085, i1 true) %iszero.i.i.i.i.i13.i.i1238 = icmp ne i64 %.lcssa4085, 0 %cmp2.i.i.i.i14.i.i1239 = icmp eq i64 %1723, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i1240 = select i1 %iszero.i.i.i.i.i13.i.i1238, i1 %cmp2.i.i.i.i14.i.i1239, i1 false %1724 = and i32 %.lcssa4086, 31 %conv4.i.i.i19.i.i1244 = zext i1 %cmp.i.i.i.i15.i.i1240 to i32 %shl.i.i.i20.i.i1245 = shl nuw i32 %conv4.i.i.i19.i.i1244, %1724 %xor.i.i.i21.i.i1246 = xor i32 %shl.i.i.i20.i.i1245, -1 %1725 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2588, !amdgpu.uniform !42 1726: ; preds = %ComputeEnd2589 %div8.i.i.i16.i.i1241 = lshr i32 %.lcssa4086, 5 %idxprom.i.i.i17.i.i1242 = zext nneg i32 %div8.i.i.i16.i.i1241 to i64 %1727 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i1242 %sunkaddr3325 = getelementptr inbounds i8, ptr addrspace(1) %1727, i64 40 %1728 = atomicrmw and ptr addrspace(1) %sunkaddr3325, i32 %.lcssa4077 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1729, !amdgpu.uniform !42 1729: ; preds = %1726, %ComputeEnd2589 call void @llvm.amdgcn.end.cf.i64(i64 %3669) tail call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i.i1257, !amdgpu.uniform !42 for.cond.i.i.i1257: ; preds = %1729, %Flow3595 %1730 = phi i32 [ %1768, %Flow3595 ], [ poison, %1729 ] %1731 = phi i64 [ %1769, %Flow3595 ], [ poison, %1729 ] %1732 = phi i32 [ %1770, %Flow3595 ], [ poison, %1729 ] %retval.sroa.6.0.i.i.i1258 = phi i32 [ %1773, %Flow3595 ], [ undef, %1729 ] %retval.sroa.2.0.i.i.i1260 = phi i64 [ %1772, %Flow3595 ], [ undef, %1729 ] %retval.sroa.8.0.i.i.i1261 = phi i32 [ %1771, %Flow3595 ], [ undef, %1729 ] %index.0.i.i.i1262 = phi i32 [ %1775, %Flow3595 ], [ 0, %1729 ] %1733 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i1263 = icmp ult i32 %index.0.i.i.i1262, %1733 %spec.store.select.i.i.i1264 = select i1 %cmp.not.i.i.i1263, i32 %index.0.i.i.i1262, i32 0 %1734 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %1735 = and i32 %spec.store.select.i.i.i1264, 31 %1736 = lshr i64 %1734, %sh_prom.i.i.i.i %1737 = trunc i64 %1736 to i32 %conv4.i.i.i.i.i1268 = and i32 %1737, 1 %shl.i.i.i.i.i1269 = shl nuw i32 %conv4.i.i.i.i.i1268, %1735 %1738 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2592, !amdgpu.uniform !42 1739: ; preds = %ComputeEnd2593 %sunkaddr3326 = getelementptr inbounds i8, ptr addrspace(1) %3679, i64 40 %1740 = atomicrmw or ptr addrspace(1) %sunkaddr3326, i32 %.lcssa4071 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1741, !amdgpu.uniform !42 1741: ; preds = %1739, %ComputeEnd2593 %1742 = phi i32 [ %1740, %1739 ], [ poison, %ComputeEnd2593 ] call void @llvm.amdgcn.end.cf.i64(i64 %3688) %1743 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %1742) %1744 = or i32 %1743, %.lcssa4072 %shl5.i.i.i.i.i1270 = shl nuw i32 1, %1735 %and.i.i.i.i.i1271 = and i32 %shl5.i.i.i.i.i1270, %1744 %tobool3.i.i.i.i1272 = icmp ne i32 %and.i.i.i.i.i1271, 0 %1745 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i1272) %and.i.i.i.i.i.i1273 = and i64 %1745, %1734 %cmp.i.not.i.i.i1274 = icmp ne i64 %1734, %and.i.i.i.i.i.i1273 br i1 %cmp.i.not.i.i.i1274, label %if.then.i.i.i.i1275, label %Flow3594, !amdgpu.uniform !42 if.then.i.i.i.i1275: ; preds = %1741 fence syncscope("agent") acquire %1746 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %1747 = extractelement <2 x i64> %1746, i32 0 %1748 = inttoptr i64 %1747 to ptr %1749 = extractelement <2 x i64> %1746, i32 1 %1750 = inttoptr i64 %1749 to ptr %idxprom.i.i.i.i1276 = zext i32 %spec.store.select.i.i.i1264 to i64 %arrayidx.i.i.i.i1277 = getelementptr inbounds nuw i32, ptr %1748, i64 %idxprom.i.i.i.i1276, !amdgpu.uniform !42 %1751 = load atomic i32, ptr %arrayidx.i.i.i.i1277 monotonic, align 4 %1752 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1751) %arrayidx.i45.i.i.i1278 = getelementptr inbounds nuw i32, ptr %1750, i64 %idxprom.i.i.i.i1276, !amdgpu.uniform !42 %1753 = load atomic i32, ptr %arrayidx.i45.i.i.i1278 monotonic, align 4 %1754 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1753) %cmp.i46.not.i.i.i1279 = icmp ne i32 %1752, %1754 br i1 %cmp.i46.not.i.i.i1279, label %if.then12.i.i.i1280, label %Flow3592, !amdgpu.uniform !42 if.then12.i.i.i1280: ; preds = %if.then.i.i.i.i1275 fence syncscope("agent") release %1755 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1734, i1 true) %iszero.i.i.i.i.i.i.i1281 = icmp ne i64 %1734, 0 %cmp2.i.i.i.i.i.i1282 = icmp eq i64 %1755, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i1283 = select i1 %iszero.i.i.i.i.i.i.i1281, i1 %cmp2.i.i.i.i.i.i1282, i1 false %conv4.i.i51.i.i.i1284 = zext i1 %cmp.i.i.i.i.i.i1283 to i32 %shl.i.i52.i.i.i1285 = shl nuw i32 %conv4.i.i51.i.i.i1284, %1735 %xor.i.i.i.i.i1286 = xor i32 %shl.i.i52.i.i.i1285, -1 %1756 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2597, !amdgpu.uniform !42 1757: ; preds = %ComputeEnd2598 %sunkaddr3327 = getelementptr inbounds i8, ptr addrspace(1) %3679, i64 40 %1758 = atomicrmw and ptr addrspace(1) %sunkaddr3327, i32 %.lcssa4073 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1759, !amdgpu.uniform !42 1759: ; preds = %1757, %ComputeEnd2598 call void @llvm.amdgcn.end.cf.i64(i64 %3706) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3592, !amdgpu.uniform !42 if.end14.i.i.i1346: ; preds = %Flow3592 %1760 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1734, i1 true) %iszero.i.i.i.i.i.i1347 = icmp ne i64 %1734, 0 %cmp2.i.i.i.i.i1348 = icmp eq i64 %1760, %sh_prom.i.i.i.i %cmp.i.i.i.i.i1349 = select i1 %iszero.i.i.i.i.i.i1347, i1 %cmp2.i.i.i.i.i1348, i1 false %1761 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i1349) %1762 = extractvalue { i1, i64 } %1761, 0 %1763 = extractvalue { i1, i64 } %1761, 1 br i1 %1762, label %if.then16.i.i.i1351, label %if.end22.i.i.i1350 if.then16.i.i.i1351: ; preds = %if.end14.i.i.i1346 %1764 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i1352 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1764, i64 %idxprom.i.i.i.i1276, i32 1 store i32 1660944387, ptr %opcode.i.i.i1352, align 8, !tbaa !77 %arrayidx21.i.i.i1353 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1764, i64 %idxprom.i.i.i.i1276 store i64 %1734, ptr %arrayidx21.i.i.i1353, align 8, !tbaa !80 br label %if.end22.i.i.i1350, !amdgpu.uniform !42 Flow3593: ; preds = %if.end22.i.i.i1350, %Flow3592 %1765 = phi i32 [ %1752, %if.end22.i.i.i1350 ], [ %retval.sroa.8.0.i.i.i1261, %Flow3592 ] %1766 = phi i64 [ %1734, %if.end22.i.i.i1350 ], [ %retval.sroa.2.0.i.i.i1260, %Flow3592 ] %1767 = phi i32 [ %spec.store.select.i.i.i1264, %if.end22.i.i.i1350 ], [ %retval.sroa.6.0.i.i.i1258, %Flow3592 ] br label %cleanup26.i.i.i1287, !amdgpu.uniform !42 if.end22.i.i.i1350: ; preds = %if.then16.i.i.i1351, %if.end14.i.i.i1346 call void @llvm.amdgcn.end.cf.i64(i64 %1763) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3593, !amdgpu.uniform !42 Flow3594: ; preds = %cleanup26.i.i.i1287, %1741 %1768 = phi i32 [ %1767, %cleanup26.i.i.i1287 ], [ %1730, %1741 ] %1769 = phi i64 [ %1766, %cleanup26.i.i.i1287 ], [ %1731, %1741 ] %1770 = phi i32 [ %1765, %cleanup26.i.i.i1287 ], [ %1732, %1741 ] %1771 = phi i32 [ %1765, %cleanup26.i.i.i1287 ], [ %retval.sroa.8.0.i.i.i1261, %1741 ] %1772 = phi i64 [ %1766, %cleanup26.i.i.i1287 ], [ %retval.sroa.2.0.i.i.i1260, %1741 ] %1773 = phi i32 [ %1767, %cleanup26.i.i.i1287 ], [ %retval.sroa.6.0.i.i.i1258, %1741 ] %1774 = phi i1 [ %cmp.i46.not.i.i.i1279, %cleanup26.i.i.i1287 ], [ true, %1741 ] br i1 %1774, label %for.inc.i.i.i1292, label %Flow3595, !amdgpu.uniform !42 cleanup26.i.i.i1287: ; preds = %Flow3593 br label %Flow3594, !amdgpu.uniform !42 for.inc.i.i.i1292: ; preds = %Flow3594 %inc.i.i.i1297 = add i32 %spec.store.select.i.i.i1264, 1 br label %Flow3595, !amdgpu.uniform !42 Flow3595: ; preds = %for.inc.i.i.i1292, %Flow3594 %1775 = phi i32 [ %inc.i.i.i1297, %for.inc.i.i.i1292 ], [ poison, %Flow3594 ] %1776 = phi i1 [ false, %for.inc.i.i.i1292 ], [ true, %Flow3594 ] br i1 %1776, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1298, label %for.cond.i.i.i1257, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1298: ; preds = %Flow3595 %.lcssa4076 = phi i32 [ %1768, %Flow3595 ] %.lcssa4075 = phi i64 [ %1769, %Flow3595 ] %.lcssa4074 = phi i32 [ %1770, %Flow3595 ] fence acquire %1777 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i1299 = shl i32 %.lcssa4076, 6 %idxprom.i19.i.i.i.i.i1300 = zext i32 %mul.i.i.i.i.i.i1299 to i64 %arrayidx.i20.i.i.i.i.i1301 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %1777, i64 %idxprom.i19.i.i.i.i.i1300 %arrayidx.i22.i.i.i.i.i1302 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i1301, i64 %sh_prom.i.i.i.i store i64 sub (i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.9, i64 8) to ptr) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.9 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i1302, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i1303 = tail call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.9, i64 8) to ptr) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.9 to ptr) to i64)), i64 56) %1778 = and i64 %spec.select.i.i.i.i.i.i.i1303, 15 %1779 = sub i64 %spec.select.i.i.i.i.i.i.i1303, %1778 %1780 = icmp ne i64 %1779, 0 br i1 %1780, label %loop-memcpy-expansion2399.preheader, label %Flow3591, !amdgpu.uniform !42 loop-memcpy-expansion2399.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1298 %1781 = add nuw nsw i64 %75, 8 %scevgep2994 = getelementptr i8, ptr %1777, i64 %1781 %1782 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1300, 6 %scevgep2995 = getelementptr i8, ptr %scevgep2994, i64 %1782 br label %loop-memcpy-expansion2399, !amdgpu.uniform !42 Flow3591: ; preds = %Flow3590, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1298 br label %loop-memcpy-residual-header2402, !amdgpu.uniform !42 loop-memcpy-expansion2399: ; preds = %loop-memcpy-expansion2399.preheader, %loop-memcpy-expansion2399 %loop-index2400 = phi i64 [ %1785, %loop-memcpy-expansion2399 ], [ 0, %loop-memcpy-expansion2399.preheader ] %1783 = getelementptr i8, ptr addrspace(4) @.str.9, i64 %loop-index2400, !amdgpu.uniform !42 %1784 = load <4 x i32>, ptr addrspace(4) %1783, align 1 %scevgep2996 = getelementptr i8, ptr %scevgep2995, i64 %loop-index2400 store <4 x i32> %1784, ptr %scevgep2996, align 1 %1785 = add i64 %loop-index2400, 16 %1786 = icmp uge i64 %1785, %1779 br i1 %1786, label %Flow3590, label %loop-memcpy-expansion2399, !amdgpu.uniform !42 Flow3588: ; preds = %Flow3585, %Flow3587 %1787 = phi i64 [ %2953, %Flow3585 ], [ %2947, %Flow3587 ] br label %post-loop-memcpy-expansion2398, !amdgpu.uniform !42 loop-memcpy-residual2401: ; preds = %loop-memcpy-residual2401.preheader, %loop-memcpy-residual2401 %residual-loop-index2403 = phi i64 [ %1789, %loop-memcpy-residual2401 ], [ 0, %loop-memcpy-residual2401.preheader ] %scevgep2993 = getelementptr i8, ptr addrspace(4) %scevgep2992, i64 %residual-loop-index2403, !amdgpu.uniform !42 %1788 = load i8, ptr addrspace(4) %scevgep2993, align 1 %scevgep2991 = getelementptr i8, ptr %scevgep2990, i64 %residual-loop-index2403 store i8 %1788, ptr %scevgep2991, align 1 %1789 = add i64 %residual-loop-index2403, 1 %1790 = icmp uge i64 %1789, %1778 br i1 %1790, label %Flow3585, label %loop-memcpy-residual2401, !amdgpu.uniform !42 Flow3585: ; preds = %loop-memcpy-residual2401 br label %Flow3588, !amdgpu.uniform !42 post-loop-memcpy-expansion2398: ; preds = %Flow3588 %tobool.not.i.i.i.i.i.i1305 = icmp eq i32 %.lcssa4074, 0 %conv.i.i.i.i.i.i1306 = zext i1 %tobool.not.i.i.i.i.i.i1305 to i32 fence release %1791 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i1307 = zext i32 %.lcssa4076 to i64 %arrayidx.i24.i.i.i.i.i1308 = getelementptr inbounds nuw i32, ptr %1791, i64 %idxprom.i23.i.i.i.i.i1307 store atomic i32 %conv.i.i.i.i.i.i1306, ptr %arrayidx.i24.i.i.i.i.i1308 monotonic, align 4 %1792 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i1309 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1792, i64 %idxprom.i23.i.i.i.i.i1307, !amdgpu.uniform !42 %1793 = load i64, ptr %arrayidx.i.i5.i.i1309, align 8, !tbaa !80 br label %while.cond.i.i.i.i1310, !amdgpu.uniform !42 while.cond.i.i.i.i1310: ; preds = %post-loop-memcpy-expansion2398, %Flow3583 %phi.broken3956 = phi i64 [ 0, %post-loop-memcpy-expansion2398 ], [ %1810, %Flow3583 ] %lsr.iv2982 = phi i64 [ %1808, %Flow3583 ], [ sub (i64 add (i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.9, i64 8) to ptr) to i64), i64 -56), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.9 to ptr) to i64)), %post-loop-memcpy-expansion2398 ] %lsr.iv2977 = phi ptr addrspace(4) [ %1807, %Flow3583 ], [ getelementptr (i8, ptr addrspace(4) @.str.9, i64 56), %post-loop-memcpy-expansion2398 ] %port.sroa.37.0.i.i1311 = phi i32 [ %1806, %Flow3583 ], [ %conv.i.i.i.i.i.i1306, %post-loop-memcpy-expansion2398 ] %idx.0.i.i.i.i1312 = phi i64 [ %1805, %Flow3583 ], [ 56, %post-loop-memcpy-expansion2398 ] %cmp.i.i.i.i1313 = icmp ult i64 %idx.0.i.i.i.i1312, sub (i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.9, i64 8) to ptr) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.9 to ptr) to i64)) %1794 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i1313) %and.i.i.i.i6.i.i1314 = and i64 %1794, %1793 %tobool.not.i.i.i.i1315 = icmp ne i64 %and.i.i.i.i6.i.i1314, 0 %1795 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i1316 = getelementptr inbounds nuw i32, ptr %1795, i64 %idxprom.i23.i.i.i.i.i1307, !amdgpu.uniform !42 %1796 = load atomic i32, ptr %arrayidx.i22.i.i.i1316 monotonic, align 4 %1797 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i1315) %1798 = extractvalue { i1, i64 } %1797, 0 %1799 = extractvalue { i1, i64 } %1797, 1 br i1 %1798, label %cond.false.i8.i.i.i.i1317, label %Flow3583 cond.false.i8.i.i.i.i1317: ; preds = %while.cond.i.i.i.i1310 %1800 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1796) %1801 = icmp ne i32 %1800, %port.sroa.37.0.i.i1311 br i1 %1801, label %while.body.i.i21.i.i.i.i1318.preheader, label %Flow3582, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1318.preheader: ; preds = %cond.false.i8.i.i.i.i1317 br label %while.body.i.i21.i.i.i.i1318, !amdgpu.uniform !42 Flow3582: ; preds = %Flow3580, %cond.false.i8.i.i.i.i1317 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1321, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1318: ; preds = %while.body.i.i21.i.i.i.i1318.preheader, %while.body.i.i21.i.i.i.i1318 tail call void @llvm.amdgcn.s.sleep(i32 2) %1802 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i1319 = getelementptr inbounds nuw i32, ptr %1802, i64 %idxprom.i23.i.i.i.i.i1307, !amdgpu.uniform !42 %1803 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i1319 monotonic, align 4 %1804 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1803) %cmp.i.not.i.i23.i.i.i.i1320 = icmp eq i32 %1804, %port.sroa.37.0.i.i1311 br i1 %cmp.i.not.i.i23.i.i.i.i1320, label %Flow3580, label %while.body.i.i21.i.i.i.i1318, !amdgpu.uniform !42 Flow3580: ; preds = %while.body.i.i21.i.i.i.i1318 br label %Flow3582, !amdgpu.uniform !42 Flow3583: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1322, %while.cond.i.i.i.i1310 %1805 = phi i64 [ %add.i.i.i.i1325, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1322 ], [ poison, %while.cond.i.i.i.i1310 ] %1806 = phi i32 [ %conv.i.i26.i.i.i.i1323, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1322 ], [ poison, %while.cond.i.i.i.i1310 ] %1807 = phi ptr addrspace(4) [ %scevgep2978, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1322 ], [ poison, %while.cond.i.i.i.i1310 ] %1808 = phi i64 [ %lsr.iv.next2983, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1322 ], [ poison, %while.cond.i.i.i.i1310 ] %1809 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1322 ], [ true, %while.cond.i.i.i.i1310 ] call void @llvm.amdgcn.end.cf.i64(i64 %1799) %1810 = call i64 @llvm.amdgcn.if.break.i64(i1 %1809, i64 %phi.broken3956) %1811 = call i1 @llvm.amdgcn.loop.i64(i64 %1810) br i1 %1811, label %cond.false.i.i.i1332, label %while.cond.i.i.i.i1310 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1321: ; preds = %Flow3582 fence acquire br i1 %cmp.i.i.i.i1313, label %if.then.i.i.i.i.i.i.i1326, label %Flow3579, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i1326: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1321 %sub.i.i.i.i.i.i.i1328 = sub nuw i64 sub (i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.9, i64 8) to ptr) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.9 to ptr) to i64)), %idx.0.i.i.i.i1312 %spec.select.i.i.i36.i.i.i.i1329 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i1328, i64 64) %1812 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %1813 = and i64 %spec.select.i.i.i36.i.i.i.i1329, 15 %1814 = sub i64 %spec.select.i.i.i36.i.i.i.i1329, %1813 %1815 = icmp ne i64 %1814, 0 br i1 %1815, label %loop-memcpy-expansion2405.preheader, label %Flow3578, !amdgpu.uniform !42 loop-memcpy-expansion2405.preheader: ; preds = %if.then.i.i.i.i.i.i.i1326 %arrayidx.i20.i35.i.i.i.i1330 = getelementptr %"struct.rpc::Buffer", ptr %1812, i64 %idxprom.i19.i.i.i.i.i1300 %arrayidx.i22.i38.i.i.i.i1331 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i1330, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2405, !amdgpu.uniform !42 Flow3578: ; preds = %Flow3577, %if.then.i.i.i.i.i.i.i1326 br label %loop-memcpy-residual-header2408, !amdgpu.uniform !42 loop-memcpy-expansion2405: ; preds = %loop-memcpy-expansion2405.preheader, %loop-memcpy-expansion2405 %loop-index2406 = phi i64 [ %1818, %loop-memcpy-expansion2405 ], [ 0, %loop-memcpy-expansion2405.preheader ] %scevgep2979 = getelementptr i8, ptr addrspace(4) %lsr.iv2977, i64 %loop-index2406, !amdgpu.uniform !42 %1816 = load <4 x i32>, ptr addrspace(4) %scevgep2979, align 1 %1817 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i1331, i64 %loop-index2406 store <4 x i32> %1816, ptr %1817, align 1 %1818 = add i64 %loop-index2406, 16 %1819 = icmp uge i64 %1818, %1814 br i1 %1819, label %Flow3577, label %loop-memcpy-expansion2405, !amdgpu.uniform !42 Flow3575: ; preds = %Flow3574, %loop-memcpy-residual-header2408 br label %Flow3579, !amdgpu.uniform !42 loop-memcpy-residual2407: ; preds = %loop-memcpy-residual2407.preheader, %loop-memcpy-residual2407 %residual-loop-index2409 = phi i64 [ %1821, %loop-memcpy-residual2407 ], [ 0, %loop-memcpy-residual2407.preheader ] %scevgep2988 = getelementptr i8, ptr addrspace(4) %scevgep2987, i64 %residual-loop-index2409, !amdgpu.uniform !42 %1820 = load i8, ptr addrspace(4) %scevgep2988, align 1 %scevgep2986 = getelementptr i8, ptr %scevgep2985, i64 %residual-loop-index2409 store i8 %1820, ptr %scevgep2986, align 1 %1821 = add i64 %residual-loop-index2409, 1 %1822 = icmp uge i64 %1821, %1813 br i1 %1822, label %Flow3574, label %loop-memcpy-residual2407, !amdgpu.uniform !42 Flow3574: ; preds = %loop-memcpy-residual2407 br label %Flow3575, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1322: ; preds = %Flow3579 %conv.i.i26.i.i.i.i1323 = xor i32 %port.sroa.37.0.i.i1311, 1 fence release %1823 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i1324 = getelementptr inbounds nuw i32, ptr %1823, i64 %idxprom.i23.i.i.i.i.i1307 store atomic i32 %conv.i.i26.i.i.i.i1323, ptr %arrayidx.i24.i29.i.i.i.i1324 monotonic, align 4 %add.i.i.i.i1325 = add i64 %idx.0.i.i.i.i1312, 64 %scevgep2978 = getelementptr i8, ptr addrspace(4) %lsr.iv2977, i64 64 %lsr.iv.next2983 = add i64 %lsr.iv2982, -64 br label %Flow3583, !amdgpu.uniform !42 cond.false.i.i.i1332: ; preds = %Flow3583 %.lcssa4070 = phi i64 [ %1810, %Flow3583 ] %port.sroa.37.0.i.i1311.lcssa = phi i32 [ %port.sroa.37.0.i.i1311, %Flow3583 ] %.lcssa4069 = phi i32 [ %1796, %Flow3583 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4070) %1824 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa4069) %1825 = icmp ne i32 %1824, %port.sroa.37.0.i.i1311.lcssa %1826 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1825) %1827 = extractvalue { i1, i64 } %1826, 0 %1828 = extractvalue { i1, i64 } %1826, 1 br i1 %1827, label %while.body.i.i.i.i1333.preheader, label %Flow3572 while.body.i.i.i.i1333.preheader: ; preds = %cond.false.i.i.i1332 br label %while.body.i.i.i.i1333, !amdgpu.uniform !42 Flow3572: ; preds = %Flow3570, %cond.false.i.i.i1332 call void @llvm.amdgcn.end.cf.i64(i64 %1828) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp11string_viewEEERS1_T_.exit, !amdgpu.uniform !42 while.body.i.i.i.i1333: ; preds = %while.body.i.i.i.i1333.preheader, %while.body.i.i.i.i1333 %phi.broken3957 = phi i64 [ 0, %while.body.i.i.i.i1333.preheader ], [ %1832, %while.body.i.i.i.i1333 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %1829 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i1334 = getelementptr inbounds nuw i32, ptr %1829, i64 %idxprom.i23.i.i.i.i.i1307, !amdgpu.uniform !42 %1830 = load atomic i32, ptr %arrayidx.i.i.i8.i.i1334 monotonic, align 4 %1831 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1830) %cmp.i.not.i.i.i.i1335 = icmp eq i32 %1831, %port.sroa.37.0.i.i1311.lcssa %1832 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i1335, i64 %phi.broken3957) %1833 = call i1 @llvm.amdgcn.loop.i64(i64 %1832) br i1 %1833, label %Flow3570, label %while.body.i.i.i.i1333 Flow3570: ; preds = %while.body.i.i.i.i1333 %.lcssa4068 = phi i64 [ %1832, %while.body.i.i.i.i1333 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4068) br label %Flow3572, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp11string_viewEEERS1_T_.exit: ; preds = %Flow3572 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %1834 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4075, i1 true) %iszero.i.i.i.i.i13.i.i1337 = icmp ne i64 %.lcssa4075, 0 %cmp2.i.i.i.i14.i.i1338 = icmp eq i64 %1834, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i1339 = select i1 %iszero.i.i.i.i.i13.i.i1337, i1 %cmp2.i.i.i.i14.i.i1338, i1 false %1835 = and i32 %.lcssa4076, 31 %conv4.i.i.i19.i.i1343 = zext i1 %cmp.i.i.i.i15.i.i1339 to i32 %shl.i.i.i20.i.i1344 = shl nuw i32 %conv4.i.i.i19.i.i1343, %1835 %xor.i.i.i21.i.i1345 = xor i32 %shl.i.i.i20.i.i1344, -1 %1836 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2601, !amdgpu.uniform !42 1837: ; preds = %ComputeEnd2602 %div8.i.i.i16.i.i1340 = lshr i32 %.lcssa4076, 5 %idxprom.i.i.i17.i.i1341 = zext nneg i32 %div8.i.i.i16.i.i1340 to i64 %1838 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i1341 %sunkaddr3328 = getelementptr inbounds i8, ptr addrspace(1) %1838, i64 40 %1839 = atomicrmw and ptr addrspace(1) %sunkaddr3328, i32 %.lcssa4067 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1840, !amdgpu.uniform !42 1840: ; preds = %1837, %ComputeEnd2602 call void @llvm.amdgcn.end.cf.i64(i64 %3723) tail call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i1.i1362, !amdgpu.uniform !42 for.cond.i.i1.i1362: ; preds = %1840, %Flow3569 %1841 = phi i32 [ %1879, %Flow3569 ], [ poison, %1840 ] %1842 = phi i64 [ %1880, %Flow3569 ], [ poison, %1840 ] %1843 = phi i32 [ %1881, %Flow3569 ], [ poison, %1840 ] %retval.sroa.6.0.i.i.i1363 = phi i32 [ %1884, %Flow3569 ], [ undef, %1840 ] %retval.sroa.2.0.i.i.i1365 = phi i64 [ %1883, %Flow3569 ], [ undef, %1840 ] %retval.sroa.8.0.i.i.i1366 = phi i32 [ %1882, %Flow3569 ], [ undef, %1840 ] %index.0.i.i.i1367 = phi i32 [ %1886, %Flow3569 ], [ 0, %1840 ] %1844 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i1368 = icmp ult i32 %index.0.i.i.i1367, %1844 %spec.store.select.i.i.i1369 = select i1 %cmp.not.i.i.i1368, i32 %index.0.i.i.i1367, i32 0 %1845 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %1846 = and i32 %spec.store.select.i.i.i1369, 31 %1847 = lshr i64 %1845, %sh_prom.i.i.i.i %1848 = trunc i64 %1847 to i32 %conv4.i.i.i.i.i1373 = and i32 %1848, 1 %shl.i.i.i.i.i1374 = shl nuw i32 %conv4.i.i.i.i.i1373, %1846 %1849 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2605, !amdgpu.uniform !42 1850: ; preds = %ComputeEnd2606 %sunkaddr3329 = getelementptr inbounds i8, ptr addrspace(1) %3733, i64 40 %1851 = atomicrmw or ptr addrspace(1) %sunkaddr3329, i32 %.lcssa4061 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1852, !amdgpu.uniform !42 1852: ; preds = %1850, %ComputeEnd2606 %1853 = phi i32 [ %1851, %1850 ], [ poison, %ComputeEnd2606 ] call void @llvm.amdgcn.end.cf.i64(i64 %3742) %1854 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %1853) %1855 = or i32 %1854, %.lcssa4062 %shl5.i.i.i.i.i1375 = shl nuw i32 1, %1846 %and.i.i.i.i.i1376 = and i32 %shl5.i.i.i.i.i1375, %1855 %tobool3.i.i.i.i1377 = icmp ne i32 %and.i.i.i.i.i1376, 0 %1856 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i1377) %and.i.i.i.i.i.i1378 = and i64 %1856, %1845 %cmp.i.not.i.i.i1379 = icmp ne i64 %1845, %and.i.i.i.i.i.i1378 br i1 %cmp.i.not.i.i.i1379, label %if.then.i.i.i.i1380, label %Flow3568, !amdgpu.uniform !42 if.then.i.i.i.i1380: ; preds = %1852 fence syncscope("agent") acquire %1857 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %1858 = extractelement <2 x i64> %1857, i32 0 %1859 = inttoptr i64 %1858 to ptr %1860 = extractelement <2 x i64> %1857, i32 1 %1861 = inttoptr i64 %1860 to ptr %idxprom.i.i.i.i1381 = zext i32 %spec.store.select.i.i.i1369 to i64 %arrayidx.i.i.i.i1382 = getelementptr inbounds nuw i32, ptr %1859, i64 %idxprom.i.i.i.i1381, !amdgpu.uniform !42 %1862 = load atomic i32, ptr %arrayidx.i.i.i.i1382 monotonic, align 4 %1863 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1862) %arrayidx.i45.i.i.i1383 = getelementptr inbounds nuw i32, ptr %1861, i64 %idxprom.i.i.i.i1381, !amdgpu.uniform !42 %1864 = load atomic i32, ptr %arrayidx.i45.i.i.i1383 monotonic, align 4 %1865 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1864) %cmp.i46.not.i.i.i1384 = icmp ne i32 %1863, %1865 br i1 %cmp.i46.not.i.i.i1384, label %if.then12.i.i.i1385, label %Flow3566, !amdgpu.uniform !42 if.then12.i.i.i1385: ; preds = %if.then.i.i.i.i1380 fence syncscope("agent") release %1866 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1845, i1 true) %iszero.i.i.i.i.i.i.i1386 = icmp ne i64 %1845, 0 %cmp2.i.i.i.i.i.i1387 = icmp eq i64 %1866, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i1388 = select i1 %iszero.i.i.i.i.i.i.i1386, i1 %cmp2.i.i.i.i.i.i1387, i1 false %conv4.i.i51.i.i.i1389 = zext i1 %cmp.i.i.i.i.i.i1388 to i32 %shl.i.i52.i.i.i1390 = shl nuw i32 %conv4.i.i51.i.i.i1389, %1846 %xor.i.i.i.i.i1391 = xor i32 %shl.i.i52.i.i.i1390, -1 %1867 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2610, !amdgpu.uniform !42 1868: ; preds = %ComputeEnd2611 %sunkaddr3330 = getelementptr inbounds i8, ptr addrspace(1) %3733, i64 40 %1869 = atomicrmw and ptr addrspace(1) %sunkaddr3330, i32 %.lcssa4063 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1870, !amdgpu.uniform !42 1870: ; preds = %1868, %ComputeEnd2611 call void @llvm.amdgcn.end.cf.i64(i64 %3760) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3566, !amdgpu.uniform !42 if.end14.i.i.i1451: ; preds = %Flow3566 %1871 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1845, i1 true) %iszero.i.i.i.i.i.i1452 = icmp ne i64 %1845, 0 %cmp2.i.i.i.i.i1453 = icmp eq i64 %1871, %sh_prom.i.i.i.i %cmp.i.i.i.i.i1454 = select i1 %iszero.i.i.i.i.i.i1452, i1 %cmp2.i.i.i.i.i1453, i1 false %1872 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i1454) %1873 = extractvalue { i1, i64 } %1872, 0 %1874 = extractvalue { i1, i64 } %1872, 1 br i1 %1873, label %if.then16.i.i.i1456, label %if.end22.i.i.i1455 if.then16.i.i.i1456: ; preds = %if.end14.i.i.i1451 %1875 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i1457 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1875, i64 %idxprom.i.i.i.i1381, i32 1 store i32 1660944387, ptr %opcode.i.i.i1457, align 8, !tbaa !77 %arrayidx21.i.i.i1458 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1875, i64 %idxprom.i.i.i.i1381 store i64 %1845, ptr %arrayidx21.i.i.i1458, align 8, !tbaa !80 br label %if.end22.i.i.i1455, !amdgpu.uniform !42 Flow3567: ; preds = %if.end22.i.i.i1455, %Flow3566 %1876 = phi i32 [ %1863, %if.end22.i.i.i1455 ], [ %retval.sroa.8.0.i.i.i1366, %Flow3566 ] %1877 = phi i64 [ %1845, %if.end22.i.i.i1455 ], [ %retval.sroa.2.0.i.i.i1365, %Flow3566 ] %1878 = phi i32 [ %spec.store.select.i.i.i1369, %if.end22.i.i.i1455 ], [ %retval.sroa.6.0.i.i.i1363, %Flow3566 ] br label %cleanup26.i.i.i1392, !amdgpu.uniform !42 if.end22.i.i.i1455: ; preds = %if.then16.i.i.i1456, %if.end14.i.i.i1451 call void @llvm.amdgcn.end.cf.i64(i64 %1874) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3567, !amdgpu.uniform !42 Flow3568: ; preds = %cleanup26.i.i.i1392, %1852 %1879 = phi i32 [ %1878, %cleanup26.i.i.i1392 ], [ %1841, %1852 ] %1880 = phi i64 [ %1877, %cleanup26.i.i.i1392 ], [ %1842, %1852 ] %1881 = phi i32 [ %1876, %cleanup26.i.i.i1392 ], [ %1843, %1852 ] %1882 = phi i32 [ %1876, %cleanup26.i.i.i1392 ], [ %retval.sroa.8.0.i.i.i1366, %1852 ] %1883 = phi i64 [ %1877, %cleanup26.i.i.i1392 ], [ %retval.sroa.2.0.i.i.i1365, %1852 ] %1884 = phi i32 [ %1878, %cleanup26.i.i.i1392 ], [ %retval.sroa.6.0.i.i.i1363, %1852 ] %1885 = phi i1 [ %cmp.i46.not.i.i.i1384, %cleanup26.i.i.i1392 ], [ true, %1852 ] br i1 %1885, label %for.inc.i.i.i1397, label %Flow3569, !amdgpu.uniform !42 cleanup26.i.i.i1392: ; preds = %Flow3567 br label %Flow3568, !amdgpu.uniform !42 for.inc.i.i.i1397: ; preds = %Flow3568 %inc.i.i.i1402 = add i32 %spec.store.select.i.i.i1369, 1 br label %Flow3569, !amdgpu.uniform !42 Flow3569: ; preds = %for.inc.i.i.i1397, %Flow3568 %1886 = phi i32 [ %inc.i.i.i1402, %for.inc.i.i.i1397 ], [ poison, %Flow3568 ] %1887 = phi i1 [ false, %for.inc.i.i.i1397 ], [ true, %Flow3568 ] br i1 %1887, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1403, label %for.cond.i.i1.i1362, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1403: ; preds = %Flow3569 %.lcssa4066 = phi i32 [ %1879, %Flow3569 ] %.lcssa4065 = phi i64 [ %1880, %Flow3569 ] %.lcssa4064 = phi i32 [ %1881, %Flow3569 ] fence acquire %1888 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i1404 = shl i32 %.lcssa4066, 6 %idxprom.i19.i.i.i.i.i1405 = zext i32 %mul.i.i.i.i.i.i1404 to i64 %arrayidx.i20.i.i.i.i.i1406 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %1888, i64 %idxprom.i19.i.i.i.i.i1405 %arrayidx.i22.i.i.i.i.i1407 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i1406, i64 %sh_prom.i.i.i.i store i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.37.14 to ptr), i64 2) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.37.14 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i1407, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i1408 = tail call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.37.14 to ptr), i64 2) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.37.14 to ptr) to i64)), i64 56) %1889 = and i64 %spec.select.i.i.i.i.i.i.i1408, 15 %1890 = sub i64 %spec.select.i.i.i.i.i.i.i1408, %1889 %1891 = icmp ne i64 %1890, 0 br i1 %1891, label %loop-memcpy-expansion2411.preheader, label %Flow3565, !amdgpu.uniform !42 loop-memcpy-expansion2411.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1403 %1892 = add nuw nsw i64 %75, 8 %scevgep2974 = getelementptr i8, ptr %1888, i64 %1892 %1893 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1405, 6 %scevgep2975 = getelementptr i8, ptr %scevgep2974, i64 %1893 br label %loop-memcpy-expansion2411, !amdgpu.uniform !42 Flow3565: ; preds = %Flow3564, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1403 br label %loop-memcpy-residual-header2414, !amdgpu.uniform !42 loop-memcpy-expansion2411: ; preds = %loop-memcpy-expansion2411.preheader, %loop-memcpy-expansion2411 %loop-index2412 = phi i64 [ %1896, %loop-memcpy-expansion2411 ], [ 0, %loop-memcpy-expansion2411.preheader ] %1894 = getelementptr i8, ptr addrspace(4) @.str.37.14, i64 %loop-index2412, !amdgpu.uniform !42 %1895 = load <4 x i32>, ptr addrspace(4) %1894, align 1 %scevgep2976 = getelementptr i8, ptr %scevgep2975, i64 %loop-index2412 store <4 x i32> %1895, ptr %scevgep2976, align 1 %1896 = add i64 %loop-index2412, 16 %1897 = icmp uge i64 %1896, %1890 br i1 %1897, label %Flow3564, label %loop-memcpy-expansion2411, !amdgpu.uniform !42 Flow3562: ; preds = %Flow3559, %Flow3561 %1898 = phi i64 [ %2961, %Flow3559 ], [ %2958, %Flow3561 ] br label %post-loop-memcpy-expansion2410, !amdgpu.uniform !42 loop-memcpy-residual2413: ; preds = %loop-memcpy-residual2413.preheader, %loop-memcpy-residual2413 %residual-loop-index2415 = phi i64 [ %1900, %loop-memcpy-residual2413 ], [ 0, %loop-memcpy-residual2413.preheader ] %scevgep2973 = getelementptr i8, ptr addrspace(4) @.str.37.14, i64 %residual-loop-index2415, !amdgpu.uniform !42 %1899 = load i8, ptr addrspace(4) %scevgep2973, align 1 %scevgep2972 = getelementptr i8, ptr %scevgep2971, i64 %residual-loop-index2415 store i8 %1899, ptr %scevgep2972, align 1 %1900 = add i64 %residual-loop-index2415, 1 %1901 = icmp uge i64 %1900, %1889 br i1 %1901, label %Flow3559, label %loop-memcpy-residual2413, !amdgpu.uniform !42 Flow3559: ; preds = %loop-memcpy-residual2413 br label %Flow3562, !amdgpu.uniform !42 post-loop-memcpy-expansion2410: ; preds = %Flow3562 %tobool.not.i.i.i.i.i.i1410 = icmp eq i32 %.lcssa4064, 0 %conv.i.i.i.i.i.i1411 = zext i1 %tobool.not.i.i.i.i.i.i1410 to i32 fence release %1902 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i1412 = zext i32 %.lcssa4066 to i64 %arrayidx.i24.i.i.i.i.i1413 = getelementptr inbounds nuw i32, ptr %1902, i64 %idxprom.i23.i.i.i.i.i1412 store atomic i32 %conv.i.i.i.i.i.i1411, ptr %arrayidx.i24.i.i.i.i.i1413 monotonic, align 4 %1903 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i1414 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1903, i64 %idxprom.i23.i.i.i.i.i1412, !amdgpu.uniform !42 %1904 = load i64, ptr %arrayidx.i.i5.i.i1414, align 8, !tbaa !80 br label %while.cond.i.i.i.i1415, !amdgpu.uniform !42 while.cond.i.i.i.i1415: ; preds = %post-loop-memcpy-expansion2410, %Flow3557 %phi.broken3958 = phi i64 [ 0, %post-loop-memcpy-expansion2410 ], [ %1921, %Flow3557 ] %lsr.iv2963 = phi i64 [ %1919, %Flow3557 ], [ -54, %post-loop-memcpy-expansion2410 ] %lsr.iv2958 = phi ptr addrspace(4) [ %1918, %Flow3557 ], [ getelementptr (i8, ptr addrspace(4) @.str.37.14, i64 56), %post-loop-memcpy-expansion2410 ] %port.sroa.37.0.i.i1416 = phi i32 [ %1917, %Flow3557 ], [ %conv.i.i.i.i.i.i1411, %post-loop-memcpy-expansion2410 ] %idx.0.i.i.i.i1417 = phi i64 [ %1916, %Flow3557 ], [ 56, %post-loop-memcpy-expansion2410 ] %cmp.i.i.i.i1418 = icmp ult i64 %idx.0.i.i.i.i1417, sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.37.14 to ptr), i64 2) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.37.14 to ptr) to i64)) %1905 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i1418) %and.i.i.i.i6.i.i1419 = and i64 %1905, %1904 %tobool.not.i.i.i.i1420 = icmp ne i64 %and.i.i.i.i6.i.i1419, 0 %1906 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i1421 = getelementptr inbounds nuw i32, ptr %1906, i64 %idxprom.i23.i.i.i.i.i1412, !amdgpu.uniform !42 %1907 = load atomic i32, ptr %arrayidx.i22.i.i.i1421 monotonic, align 4 %1908 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i1420) %1909 = extractvalue { i1, i64 } %1908, 0 %1910 = extractvalue { i1, i64 } %1908, 1 br i1 %1909, label %cond.false.i8.i.i.i.i1422, label %Flow3557 cond.false.i8.i.i.i.i1422: ; preds = %while.cond.i.i.i.i1415 %1911 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1907) %1912 = icmp ne i32 %1911, %port.sroa.37.0.i.i1416 br i1 %1912, label %while.body.i.i21.i.i.i.i1423.preheader, label %Flow3556, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1423.preheader: ; preds = %cond.false.i8.i.i.i.i1422 br label %while.body.i.i21.i.i.i.i1423, !amdgpu.uniform !42 Flow3556: ; preds = %Flow3554, %cond.false.i8.i.i.i.i1422 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1426, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1423: ; preds = %while.body.i.i21.i.i.i.i1423.preheader, %while.body.i.i21.i.i.i.i1423 tail call void @llvm.amdgcn.s.sleep(i32 2) %1913 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i1424 = getelementptr inbounds nuw i32, ptr %1913, i64 %idxprom.i23.i.i.i.i.i1412, !amdgpu.uniform !42 %1914 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i1424 monotonic, align 4 %1915 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1914) %cmp.i.not.i.i23.i.i.i.i1425 = icmp eq i32 %1915, %port.sroa.37.0.i.i1416 br i1 %cmp.i.not.i.i23.i.i.i.i1425, label %Flow3554, label %while.body.i.i21.i.i.i.i1423, !amdgpu.uniform !42 Flow3554: ; preds = %while.body.i.i21.i.i.i.i1423 br label %Flow3556, !amdgpu.uniform !42 Flow3557: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1427, %while.cond.i.i.i.i1415 %1916 = phi i64 [ %add.i.i.i.i1430, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1427 ], [ poison, %while.cond.i.i.i.i1415 ] %1917 = phi i32 [ %conv.i.i26.i.i.i.i1428, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1427 ], [ poison, %while.cond.i.i.i.i1415 ] %1918 = phi ptr addrspace(4) [ %scevgep2959, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1427 ], [ poison, %while.cond.i.i.i.i1415 ] %1919 = phi i64 [ %lsr.iv.next2964, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1427 ], [ poison, %while.cond.i.i.i.i1415 ] %1920 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1427 ], [ true, %while.cond.i.i.i.i1415 ] call void @llvm.amdgcn.end.cf.i64(i64 %1910) %1921 = call i64 @llvm.amdgcn.if.break.i64(i1 %1920, i64 %phi.broken3958) %1922 = call i1 @llvm.amdgcn.loop.i64(i64 %1921) br i1 %1922, label %cond.false.i.i.i1437, label %while.cond.i.i.i.i1415 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1426: ; preds = %Flow3556 fence acquire br i1 %cmp.i.i.i.i1418, label %if.then.i.i.i.i.i.i.i1431, label %Flow3553, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i1431: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1426 %sub.i.i.i.i.i.i.i1433 = sub nuw i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.37.14 to ptr), i64 2) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.37.14 to ptr) to i64)), %idx.0.i.i.i.i1417 %spec.select.i.i.i36.i.i.i.i1434 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i1433, i64 64) %1923 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %1924 = and i64 %spec.select.i.i.i36.i.i.i.i1434, 15 %1925 = sub i64 %spec.select.i.i.i36.i.i.i.i1434, %1924 %1926 = icmp ne i64 %1925, 0 br i1 %1926, label %loop-memcpy-expansion2417.preheader, label %Flow3552, !amdgpu.uniform !42 loop-memcpy-expansion2417.preheader: ; preds = %if.then.i.i.i.i.i.i.i1431 %arrayidx.i20.i35.i.i.i.i1435 = getelementptr %"struct.rpc::Buffer", ptr %1923, i64 %idxprom.i19.i.i.i.i.i1405 %arrayidx.i22.i38.i.i.i.i1436 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i1435, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2417, !amdgpu.uniform !42 Flow3552: ; preds = %Flow3551, %if.then.i.i.i.i.i.i.i1431 br label %loop-memcpy-residual-header2420, !amdgpu.uniform !42 loop-memcpy-expansion2417: ; preds = %loop-memcpy-expansion2417.preheader, %loop-memcpy-expansion2417 %loop-index2418 = phi i64 [ %1929, %loop-memcpy-expansion2417 ], [ 0, %loop-memcpy-expansion2417.preheader ] %scevgep2960 = getelementptr i8, ptr addrspace(4) %lsr.iv2958, i64 %loop-index2418, !amdgpu.uniform !42 %1927 = load <4 x i32>, ptr addrspace(4) %scevgep2960, align 1 %1928 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i1436, i64 %loop-index2418 store <4 x i32> %1927, ptr %1928, align 1 %1929 = add i64 %loop-index2418, 16 %1930 = icmp uge i64 %1929, %1925 br i1 %1930, label %Flow3551, label %loop-memcpy-expansion2417, !amdgpu.uniform !42 Flow3549: ; preds = %Flow3548, %loop-memcpy-residual-header2420 br label %Flow3553, !amdgpu.uniform !42 loop-memcpy-residual2419: ; preds = %loop-memcpy-residual2419.preheader, %loop-memcpy-residual2419 %residual-loop-index2421 = phi i64 [ %1932, %loop-memcpy-residual2419 ], [ 0, %loop-memcpy-residual2419.preheader ] %scevgep2969 = getelementptr i8, ptr addrspace(4) %scevgep2968, i64 %residual-loop-index2421, !amdgpu.uniform !42 %1931 = load i8, ptr addrspace(4) %scevgep2969, align 1 %scevgep2967 = getelementptr i8, ptr %scevgep2966, i64 %residual-loop-index2421 store i8 %1931, ptr %scevgep2967, align 1 %1932 = add i64 %residual-loop-index2421, 1 %1933 = icmp uge i64 %1932, %1924 br i1 %1933, label %Flow3548, label %loop-memcpy-residual2419, !amdgpu.uniform !42 Flow3548: ; preds = %loop-memcpy-residual2419 br label %Flow3549, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1427: ; preds = %Flow3553 %conv.i.i26.i.i.i.i1428 = xor i32 %port.sroa.37.0.i.i1416, 1 fence release %1934 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i1429 = getelementptr inbounds nuw i32, ptr %1934, i64 %idxprom.i23.i.i.i.i.i1412 store atomic i32 %conv.i.i26.i.i.i.i1428, ptr %arrayidx.i24.i29.i.i.i.i1429 monotonic, align 4 %add.i.i.i.i1430 = add i64 %idx.0.i.i.i.i1417, 64 %scevgep2959 = getelementptr i8, ptr addrspace(4) %lsr.iv2958, i64 64 %lsr.iv.next2964 = add i64 %lsr.iv2963, -64 br label %Flow3557, !amdgpu.uniform !42 cond.false.i.i.i1437: ; preds = %Flow3557 %.lcssa4060 = phi i64 [ %1921, %Flow3557 ] %port.sroa.37.0.i.i1416.lcssa = phi i32 [ %port.sroa.37.0.i.i1416, %Flow3557 ] %.lcssa4059 = phi i32 [ %1907, %Flow3557 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4060) %1935 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa4059) %1936 = icmp ne i32 %1935, %port.sroa.37.0.i.i1416.lcssa %1937 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1936) %1938 = extractvalue { i1, i64 } %1937, 0 %1939 = extractvalue { i1, i64 } %1937, 1 br i1 %1938, label %while.body.i.i.i.i1438.preheader, label %Flow3546 while.body.i.i.i.i1438.preheader: ; preds = %cond.false.i.i.i1437 br label %while.body.i.i.i.i1438, !amdgpu.uniform !42 Flow3546: ; preds = %Flow3544, %cond.false.i.i.i1437 call void @llvm.amdgcn.end.cf.i64(i64 %1939) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1459, !amdgpu.uniform !42 while.body.i.i.i.i1438: ; preds = %while.body.i.i.i.i1438.preheader, %while.body.i.i.i.i1438 %phi.broken3959 = phi i64 [ 0, %while.body.i.i.i.i1438.preheader ], [ %1943, %while.body.i.i.i.i1438 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %1940 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i1439 = getelementptr inbounds nuw i32, ptr %1940, i64 %idxprom.i23.i.i.i.i.i1412, !amdgpu.uniform !42 %1941 = load atomic i32, ptr %arrayidx.i.i.i8.i.i1439 monotonic, align 4 %1942 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1941) %cmp.i.not.i.i.i.i1440 = icmp eq i32 %1942, %port.sroa.37.0.i.i1416.lcssa %1943 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i1440, i64 %phi.broken3959) %1944 = call i1 @llvm.amdgcn.loop.i64(i64 %1943) br i1 %1944, label %Flow3544, label %while.body.i.i.i.i1438 Flow3544: ; preds = %while.body.i.i.i.i1438 %.lcssa4058 = phi i64 [ %1943, %while.body.i.i.i.i1438 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4058) br label %Flow3546, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1459: ; preds = %Flow3546 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %1945 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4065, i1 true) %iszero.i.i.i.i.i13.i.i1442 = icmp ne i64 %.lcssa4065, 0 %cmp2.i.i.i.i14.i.i1443 = icmp eq i64 %1945, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i1444 = select i1 %iszero.i.i.i.i.i13.i.i1442, i1 %cmp2.i.i.i.i14.i.i1443, i1 false %1946 = and i32 %.lcssa4066, 31 %conv4.i.i.i19.i.i1448 = zext i1 %cmp.i.i.i.i15.i.i1444 to i32 %shl.i.i.i20.i.i1449 = shl nuw i32 %conv4.i.i.i19.i.i1448, %1946 %xor.i.i.i21.i.i1450 = xor i32 %shl.i.i.i20.i.i1449, -1 %1947 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2614, !amdgpu.uniform !42 1948: ; preds = %ComputeEnd2615 %div8.i.i.i16.i.i1445 = lshr i32 %.lcssa4066, 5 %idxprom.i.i.i17.i.i1446 = zext nneg i32 %div8.i.i.i16.i.i1445 to i64 %1949 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i1446 %sunkaddr3331 = getelementptr inbounds i8, ptr addrspace(1) %1949, i64 40 %1950 = atomicrmw and ptr addrspace(1) %sunkaddr3331, i32 %.lcssa4057 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1951, !amdgpu.uniform !42 1951: ; preds = %1948, %ComputeEnd2615 call void @llvm.amdgcn.end.cf.i64(i64 %3777) tail call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i.i1460, !amdgpu.uniform !42 for.cond.i.i.i1460: ; preds = %1951, %for.cond.i.i.i1460 %phi.broken3960 = phi i64 [ 0, %1951 ], [ %1954, %for.cond.i.i.i1460 ] %lsr.iv2944 = phi i64 [ %lsr.iv.next2945, %for.cond.i.i.i1460 ], [ -1, %1951 ] %scevgep2956 = getelementptr i8, ptr %RHSStr, i64 %lsr.iv2944 %scevgep2957 = getelementptr i8, ptr %scevgep2956, i64 1 %1952 = addrspacecast ptr %scevgep2957 to ptr addrspace(4) %1953 = load i8, ptr addrspace(4) %1952, align 1, !tbaa !57, !noalias.addrspace !101 %cmp.i.i.i1462 = icmp eq i8 %1953, 0 %lsr.iv.next2945 = add i64 %lsr.iv2944, 1 %1954 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.i.i1462, i64 %phi.broken3960) %1955 = call i1 @llvm.amdgcn.loop.i64(i64 %1954) br i1 %1955, label %for.cond.i.i1.i1469.preheader, label %for.cond.i.i.i1460 for.cond.i.i1.i1469.preheader: ; preds = %for.cond.i.i.i1460 %lsr.iv.next2945.lcssa = phi i64 [ %lsr.iv.next2945, %for.cond.i.i.i1460 ] %.lcssa4056 = phi i64 [ %1954, %for.cond.i.i.i1460 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4056) br label %for.cond.i.i1.i1469, !amdgpu.uniform !42 for.cond.i.i1.i1469: ; preds = %for.cond.i.i1.i1469.preheader, %Flow3543 %1956 = phi i32 [ %1994, %Flow3543 ], [ poison, %for.cond.i.i1.i1469.preheader ] %1957 = phi i64 [ %1995, %Flow3543 ], [ poison, %for.cond.i.i1.i1469.preheader ] %1958 = phi i32 [ %1996, %Flow3543 ], [ poison, %for.cond.i.i1.i1469.preheader ] %retval.sroa.6.0.i.i.i1470 = phi i32 [ %1999, %Flow3543 ], [ undef, %for.cond.i.i1.i1469.preheader ] %retval.sroa.2.0.i.i.i1472 = phi i64 [ %1998, %Flow3543 ], [ undef, %for.cond.i.i1.i1469.preheader ] %retval.sroa.8.0.i.i.i1473 = phi i32 [ %1997, %Flow3543 ], [ undef, %for.cond.i.i1.i1469.preheader ] %index.0.i.i.i1474 = phi i32 [ %2001, %Flow3543 ], [ 0, %for.cond.i.i1.i1469.preheader ] %1959 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i1475 = icmp ult i32 %index.0.i.i.i1474, %1959 %spec.store.select.i.i.i1476 = select i1 %cmp.not.i.i.i1475, i32 %index.0.i.i.i1474, i32 0 %1960 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %1961 = and i32 %spec.store.select.i.i.i1476, 31 %1962 = lshr i64 %1960, %sh_prom.i.i.i.i %1963 = trunc i64 %1962 to i32 %conv4.i.i.i.i.i1480 = and i32 %1963, 1 %shl.i.i.i.i.i1481 = shl nuw i32 %conv4.i.i.i.i.i1480, %1961 %1964 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2618, !amdgpu.uniform !42 1965: ; preds = %ComputeEnd2619 %sunkaddr3332 = getelementptr inbounds i8, ptr addrspace(1) %3787, i64 40 %1966 = atomicrmw or ptr addrspace(1) %sunkaddr3332, i32 %.lcssa4050 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1967, !amdgpu.uniform !42 1967: ; preds = %1965, %ComputeEnd2619 %1968 = phi i32 [ %1966, %1965 ], [ poison, %ComputeEnd2619 ] call void @llvm.amdgcn.end.cf.i64(i64 %3796) %1969 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %1968) %1970 = or i32 %1969, %.lcssa4051 %shl5.i.i.i.i.i1482 = shl nuw i32 1, %1961 %and.i.i.i.i.i1483 = and i32 %shl5.i.i.i.i.i1482, %1970 %tobool3.i.i.i.i1484 = icmp ne i32 %and.i.i.i.i.i1483, 0 %1971 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i1484) %and.i.i.i.i.i.i1485 = and i64 %1971, %1960 %cmp.i.not.i.i.i1486 = icmp ne i64 %1960, %and.i.i.i.i.i.i1485 br i1 %cmp.i.not.i.i.i1486, label %if.then.i.i.i.i1487, label %Flow3542, !amdgpu.uniform !42 if.then.i.i.i.i1487: ; preds = %1967 fence syncscope("agent") acquire %1972 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %1973 = extractelement <2 x i64> %1972, i32 0 %1974 = inttoptr i64 %1973 to ptr %1975 = extractelement <2 x i64> %1972, i32 1 %1976 = inttoptr i64 %1975 to ptr %idxprom.i.i.i.i1488 = zext i32 %spec.store.select.i.i.i1476 to i64 %arrayidx.i.i.i.i1489 = getelementptr inbounds nuw i32, ptr %1974, i64 %idxprom.i.i.i.i1488, !amdgpu.uniform !42 %1977 = load atomic i32, ptr %arrayidx.i.i.i.i1489 monotonic, align 4 %1978 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1977) %arrayidx.i45.i.i.i1490 = getelementptr inbounds nuw i32, ptr %1976, i64 %idxprom.i.i.i.i1488, !amdgpu.uniform !42 %1979 = load atomic i32, ptr %arrayidx.i45.i.i.i1490 monotonic, align 4 %1980 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1979) %cmp.i46.not.i.i.i1491 = icmp ne i32 %1978, %1980 br i1 %cmp.i46.not.i.i.i1491, label %if.then12.i.i.i1492, label %Flow3540, !amdgpu.uniform !42 if.then12.i.i.i1492: ; preds = %if.then.i.i.i.i1487 fence syncscope("agent") release %1981 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1960, i1 true) %iszero.i.i.i.i.i.i.i1493 = icmp ne i64 %1960, 0 %cmp2.i.i.i.i.i.i1494 = icmp eq i64 %1981, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i1495 = select i1 %iszero.i.i.i.i.i.i.i1493, i1 %cmp2.i.i.i.i.i.i1494, i1 false %conv4.i.i51.i.i.i1496 = zext i1 %cmp.i.i.i.i.i.i1495 to i32 %shl.i.i52.i.i.i1497 = shl nuw i32 %conv4.i.i51.i.i.i1496, %1961 %xor.i.i.i.i.i1498 = xor i32 %shl.i.i52.i.i.i1497, -1 %1982 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2623, !amdgpu.uniform !42 1983: ; preds = %ComputeEnd2624 %sunkaddr3333 = getelementptr inbounds i8, ptr addrspace(1) %3787, i64 40 %1984 = atomicrmw and ptr addrspace(1) %sunkaddr3333, i32 %.lcssa4052 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1985, !amdgpu.uniform !42 1985: ; preds = %1983, %ComputeEnd2624 call void @llvm.amdgcn.end.cf.i64(i64 %3814) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3540, !amdgpu.uniform !42 if.end14.i.i.i1558: ; preds = %Flow3540 %1986 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1960, i1 true) %iszero.i.i.i.i.i.i1559 = icmp ne i64 %1960, 0 %cmp2.i.i.i.i.i1560 = icmp eq i64 %1986, %sh_prom.i.i.i.i %cmp.i.i.i.i.i1561 = select i1 %iszero.i.i.i.i.i.i1559, i1 %cmp2.i.i.i.i.i1560, i1 false %1987 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i1561) %1988 = extractvalue { i1, i64 } %1987, 0 %1989 = extractvalue { i1, i64 } %1987, 1 br i1 %1988, label %if.then16.i.i.i1563, label %if.end22.i.i.i1562 if.then16.i.i.i1563: ; preds = %if.end14.i.i.i1558 %1990 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i1564 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1990, i64 %idxprom.i.i.i.i1488, i32 1 store i32 1660944387, ptr %opcode.i.i.i1564, align 8, !tbaa !77 %arrayidx21.i.i.i1565 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1990, i64 %idxprom.i.i.i.i1488 store i64 %1960, ptr %arrayidx21.i.i.i1565, align 8, !tbaa !80 br label %if.end22.i.i.i1562, !amdgpu.uniform !42 Flow3541: ; preds = %if.end22.i.i.i1562, %Flow3540 %1991 = phi i32 [ %1978, %if.end22.i.i.i1562 ], [ %retval.sroa.8.0.i.i.i1473, %Flow3540 ] %1992 = phi i64 [ %1960, %if.end22.i.i.i1562 ], [ %retval.sroa.2.0.i.i.i1472, %Flow3540 ] %1993 = phi i32 [ %spec.store.select.i.i.i1476, %if.end22.i.i.i1562 ], [ %retval.sroa.6.0.i.i.i1470, %Flow3540 ] br label %cleanup26.i.i.i1499, !amdgpu.uniform !42 if.end22.i.i.i1562: ; preds = %if.then16.i.i.i1563, %if.end14.i.i.i1558 call void @llvm.amdgcn.end.cf.i64(i64 %1989) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3541, !amdgpu.uniform !42 Flow3542: ; preds = %cleanup26.i.i.i1499, %1967 %1994 = phi i32 [ %1993, %cleanup26.i.i.i1499 ], [ %1956, %1967 ] %1995 = phi i64 [ %1992, %cleanup26.i.i.i1499 ], [ %1957, %1967 ] %1996 = phi i32 [ %1991, %cleanup26.i.i.i1499 ], [ %1958, %1967 ] %1997 = phi i32 [ %1991, %cleanup26.i.i.i1499 ], [ %retval.sroa.8.0.i.i.i1473, %1967 ] %1998 = phi i64 [ %1992, %cleanup26.i.i.i1499 ], [ %retval.sroa.2.0.i.i.i1472, %1967 ] %1999 = phi i32 [ %1993, %cleanup26.i.i.i1499 ], [ %retval.sroa.6.0.i.i.i1470, %1967 ] %2000 = phi i1 [ %cmp.i46.not.i.i.i1491, %cleanup26.i.i.i1499 ], [ true, %1967 ] br i1 %2000, label %for.inc.i.i.i1504, label %Flow3543, !amdgpu.uniform !42 cleanup26.i.i.i1499: ; preds = %Flow3541 br label %Flow3542, !amdgpu.uniform !42 for.inc.i.i.i1504: ; preds = %Flow3542 %inc.i.i.i1509 = add i32 %spec.store.select.i.i.i1476, 1 br label %Flow3543, !amdgpu.uniform !42 Flow3543: ; preds = %for.inc.i.i.i1504, %Flow3542 %2001 = phi i32 [ %inc.i.i.i1509, %for.inc.i.i.i1504 ], [ poison, %Flow3542 ] %2002 = phi i1 [ false, %for.inc.i.i.i1504 ], [ true, %Flow3542 ] br i1 %2002, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1510, label %for.cond.i.i1.i1469, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1510: ; preds = %Flow3543 %.lcssa4055 = phi i32 [ %1994, %Flow3543 ] %.lcssa4054 = phi i64 [ %1995, %Flow3543 ] %.lcssa4053 = phi i32 [ %1996, %Flow3543 ] %scevgep2955 = getelementptr i8, ptr %RHSStr, i64 %lsr.iv.next2945.lcssa %sub.ptr.lhs.cast.i.i.i1465 = ptrtoint ptr %scevgep2955 to i64 %sub.ptr.rhs.cast.i.i.i1466 = ptrtoint ptr %RHSStr to i64 %sub.ptr.sub.i.i.i1467 = sub i64 %sub.ptr.lhs.cast.i.i.i1465, %sub.ptr.rhs.cast.i.i.i1466 fence acquire %2003 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i1511 = shl i32 %.lcssa4055, 6 %idxprom.i19.i.i.i.i.i1512 = zext i32 %mul.i.i.i.i.i.i1511 to i64 %arrayidx.i20.i.i.i.i.i1513 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %2003, i64 %idxprom.i19.i.i.i.i.i1512 %arrayidx.i22.i.i.i.i.i1514 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i1513, i64 %sh_prom.i.i.i.i store i64 %sub.ptr.sub.i.i.i1467, ptr %arrayidx.i22.i.i.i.i.i1514, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i1515 = tail call i64 @llvm.umin.i64(i64 %sub.ptr.sub.i.i.i1467, i64 56) %2004 = and i64 %spec.select.i.i.i.i.i.i.i1515, 15 %2005 = sub i64 %spec.select.i.i.i.i.i.i.i1515, %2004 %2006 = icmp ne i64 %2005, 0 %2007 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2006) %2008 = extractvalue { i1, i64 } %2007, 0 %2009 = extractvalue { i1, i64 } %2007, 1 br i1 %2008, label %loop-memcpy-expansion2219.preheader, label %Flow3539 loop-memcpy-expansion2219.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1510 %2010 = add nuw nsw i64 %75, 8 %scevgep2952 = getelementptr i8, ptr %2003, i64 %2010 %2011 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1512, 6 %scevgep2953 = getelementptr i8, ptr %scevgep2952, i64 %2011 br label %loop-memcpy-expansion2219, !amdgpu.uniform !42 Flow3539: ; preds = %Flow3538, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1510 call void @llvm.amdgcn.end.cf.i64(i64 %2009) br label %loop-memcpy-residual-header2222, !amdgpu.uniform !42 loop-memcpy-expansion2219: ; preds = %loop-memcpy-expansion2219.preheader, %loop-memcpy-expansion2219 %phi.broken3961 = phi i64 [ 0, %loop-memcpy-expansion2219.preheader ], [ %2016, %loop-memcpy-expansion2219 ] %loop-index2220 = phi i64 [ %2014, %loop-memcpy-expansion2219 ], [ 0, %loop-memcpy-expansion2219.preheader ] %2012 = getelementptr i8, ptr %RHSStr, i64 %loop-index2220 %2013 = load <4 x i32>, ptr %2012, align 1 %scevgep2954 = getelementptr i8, ptr %scevgep2953, i64 %loop-index2220 store <4 x i32> %2013, ptr %scevgep2954, align 1 %2014 = add i64 %loop-index2220, 16 %2015 = icmp uge i64 %2014, %2005 %2016 = call i64 @llvm.amdgcn.if.break.i64(i1 %2015, i64 %phi.broken3961) %2017 = call i1 @llvm.amdgcn.loop.i64(i64 %2016) br i1 %2017, label %Flow3538, label %loop-memcpy-expansion2219 Flow3536: ; preds = %Flow3533, %Flow3535 %2018 = phi i64 [ %2785, %Flow3533 ], [ %2778, %Flow3535 ] call void @llvm.amdgcn.end.cf.i64(i64 %2781) br label %post-loop-memcpy-expansion2218, !amdgpu.uniform !42 loop-memcpy-residual2221: ; preds = %loop-memcpy-residual2221.preheader, %loop-memcpy-residual2221 %phi.broken3962 = phi i64 [ 0, %loop-memcpy-residual2221.preheader ], [ %2022, %loop-memcpy-residual2221 ] %residual-loop-index2223 = phi i64 [ %2020, %loop-memcpy-residual2221 ], [ 0, %loop-memcpy-residual2221.preheader ] %scevgep2951 = getelementptr i8, ptr %scevgep2950, i64 %residual-loop-index2223 %2019 = load i8, ptr %scevgep2951, align 1 %scevgep2949 = getelementptr i8, ptr %scevgep2948, i64 %residual-loop-index2223 store i8 %2019, ptr %scevgep2949, align 1 %2020 = add i64 %residual-loop-index2223, 1 %2021 = icmp uge i64 %2020, %2004 %2022 = call i64 @llvm.amdgcn.if.break.i64(i1 %2021, i64 %phi.broken3962) %2023 = call i1 @llvm.amdgcn.loop.i64(i64 %2022) br i1 %2023, label %Flow3533, label %loop-memcpy-residual2221 Flow3533: ; preds = %loop-memcpy-residual2221 %.lcssa4048 = phi i64 [ %2022, %loop-memcpy-residual2221 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4048) br label %Flow3536, !amdgpu.uniform !42 post-loop-memcpy-expansion2218: ; preds = %Flow3536 %2024 = add i64 %lsr.iv.next2945.lcssa, -56 %tobool.not.i.i.i.i.i.i1517 = icmp eq i32 %.lcssa4053, 0 %conv.i.i.i.i.i.i1518 = zext i1 %tobool.not.i.i.i.i.i.i1517 to i32 fence release %2025 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i1519 = zext i32 %.lcssa4055 to i64 %arrayidx.i24.i.i.i.i.i1520 = getelementptr inbounds nuw i32, ptr %2025, i64 %idxprom.i23.i.i.i.i.i1519 store atomic i32 %conv.i.i.i.i.i.i1518, ptr %arrayidx.i24.i.i.i.i.i1520 monotonic, align 4 %2026 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i1521 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2026, i64 %idxprom.i23.i.i.i.i.i1519, !amdgpu.uniform !42 %2027 = load i64, ptr %arrayidx.i.i5.i.i1521, align 8, !tbaa !80 %scevgep2927 = getelementptr i8, ptr %RHSStr, i64 56 br label %while.cond.i.i.i.i1522, !amdgpu.uniform !42 while.cond.i.i.i.i1522: ; preds = %post-loop-memcpy-expansion2218, %Flow3531 %phi.broken3965 = phi i64 [ 0, %post-loop-memcpy-expansion2218 ], [ %2044, %Flow3531 ] %lsr.iv2935 = phi i64 [ %2042, %Flow3531 ], [ %2024, %post-loop-memcpy-expansion2218 ] %lsr.iv2928 = phi ptr [ %2041, %Flow3531 ], [ %scevgep2927, %post-loop-memcpy-expansion2218 ] %port.sroa.37.0.i.i1523 = phi i32 [ %2040, %Flow3531 ], [ %conv.i.i.i.i.i.i1518, %post-loop-memcpy-expansion2218 ] %idx.0.i.i.i.i1524 = phi i64 [ %2039, %Flow3531 ], [ 56, %post-loop-memcpy-expansion2218 ] %cmp.i.i.i.i1525 = icmp ugt i64 %sub.ptr.sub.i.i.i1467, %idx.0.i.i.i.i1524 %2028 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i1525) %and.i.i.i.i6.i.i1526 = and i64 %2028, %2027 %tobool.not.i.i.i.i1527 = icmp ne i64 %and.i.i.i.i6.i.i1526, 0 %2029 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i1528 = getelementptr inbounds nuw i32, ptr %2029, i64 %idxprom.i23.i.i.i.i.i1519, !amdgpu.uniform !42 %2030 = load atomic i32, ptr %arrayidx.i22.i.i.i1528 monotonic, align 4 %2031 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i1527) %2032 = extractvalue { i1, i64 } %2031, 0 %2033 = extractvalue { i1, i64 } %2031, 1 br i1 %2032, label %cond.false.i8.i.i.i.i1529, label %Flow3531 cond.false.i8.i.i.i.i1529: ; preds = %while.cond.i.i.i.i1522 %2034 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2030) %2035 = icmp ne i32 %2034, %port.sroa.37.0.i.i1523 br i1 %2035, label %while.body.i.i21.i.i.i.i1530.preheader, label %Flow3530, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1530.preheader: ; preds = %cond.false.i8.i.i.i.i1529 br label %while.body.i.i21.i.i.i.i1530, !amdgpu.uniform !42 Flow3530: ; preds = %Flow3528, %cond.false.i8.i.i.i.i1529 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1533, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1530: ; preds = %while.body.i.i21.i.i.i.i1530.preheader, %while.body.i.i21.i.i.i.i1530 tail call void @llvm.amdgcn.s.sleep(i32 2) %2036 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i1531 = getelementptr inbounds nuw i32, ptr %2036, i64 %idxprom.i23.i.i.i.i.i1519, !amdgpu.uniform !42 %2037 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i1531 monotonic, align 4 %2038 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2037) %cmp.i.not.i.i23.i.i.i.i1532 = icmp eq i32 %2038, %port.sroa.37.0.i.i1523 br i1 %cmp.i.not.i.i23.i.i.i.i1532, label %Flow3528, label %while.body.i.i21.i.i.i.i1530, !amdgpu.uniform !42 Flow3528: ; preds = %while.body.i.i21.i.i.i.i1530 br label %Flow3530, !amdgpu.uniform !42 Flow3531: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1534, %while.cond.i.i.i.i1522 %2039 = phi i64 [ %add.i.i.i.i1537, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1534 ], [ poison, %while.cond.i.i.i.i1522 ] %2040 = phi i32 [ %conv.i.i26.i.i.i.i1535, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1534 ], [ poison, %while.cond.i.i.i.i1522 ] %2041 = phi ptr [ %scevgep2929, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1534 ], [ poison, %while.cond.i.i.i.i1522 ] %2042 = phi i64 [ %lsr.iv.next2936, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1534 ], [ poison, %while.cond.i.i.i.i1522 ] %2043 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1534 ], [ true, %while.cond.i.i.i.i1522 ] call void @llvm.amdgcn.end.cf.i64(i64 %2033) %2044 = call i64 @llvm.amdgcn.if.break.i64(i1 %2043, i64 %phi.broken3965) %2045 = call i1 @llvm.amdgcn.loop.i64(i64 %2044) br i1 %2045, label %cond.false.i.i.i1544, label %while.cond.i.i.i.i1522 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1533: ; preds = %Flow3530 fence acquire %2046 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i1525) %2047 = extractvalue { i1, i64 } %2046, 0 %2048 = extractvalue { i1, i64 } %2046, 1 br i1 %2047, label %if.then.i.i.i.i.i.i.i1538, label %Flow3527 if.then.i.i.i.i.i.i.i1538: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1533 %sub.i.i.i.i.i.i.i1540 = sub nuw i64 %sub.ptr.sub.i.i.i1467, %idx.0.i.i.i.i1524 %spec.select.i.i.i36.i.i.i.i1541 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i1540, i64 64) %2049 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %2050 = and i64 %spec.select.i.i.i36.i.i.i.i1541, 15 %2051 = sub i64 %spec.select.i.i.i36.i.i.i.i1541, %2050 %2052 = icmp ne i64 %2051, 0 %2053 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2052) %2054 = extractvalue { i1, i64 } %2053, 0 %2055 = extractvalue { i1, i64 } %2053, 1 br i1 %2054, label %loop-memcpy-expansion2213.preheader, label %Flow3526 loop-memcpy-expansion2213.preheader: ; preds = %if.then.i.i.i.i.i.i.i1538 %arrayidx.i20.i35.i.i.i.i1542 = getelementptr %"struct.rpc::Buffer", ptr %2049, i64 %idxprom.i19.i.i.i.i.i1512 %arrayidx.i22.i38.i.i.i.i1543 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i1542, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2213, !amdgpu.uniform !42 Flow3526: ; preds = %Flow3525, %if.then.i.i.i.i.i.i.i1538 call void @llvm.amdgcn.end.cf.i64(i64 %2055) br label %loop-memcpy-residual-header2216, !amdgpu.uniform !42 loop-memcpy-expansion2213: ; preds = %loop-memcpy-expansion2213.preheader, %loop-memcpy-expansion2213 %phi.broken3963 = phi i64 [ 0, %loop-memcpy-expansion2213.preheader ], [ %2060, %loop-memcpy-expansion2213 ] %loop-index2214 = phi i64 [ %2058, %loop-memcpy-expansion2213 ], [ 0, %loop-memcpy-expansion2213.preheader ] %scevgep2930 = getelementptr i8, ptr %lsr.iv2928, i64 %loop-index2214 %2056 = load <4 x i32>, ptr %scevgep2930, align 1 %2057 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i1543, i64 %loop-index2214 store <4 x i32> %2056, ptr %2057, align 1 %2058 = add i64 %loop-index2214, 16 %2059 = icmp uge i64 %2058, %2051 %2060 = call i64 @llvm.amdgcn.if.break.i64(i1 %2059, i64 %phi.broken3963) %2061 = call i1 @llvm.amdgcn.loop.i64(i64 %2060) br i1 %2061, label %Flow3525, label %loop-memcpy-expansion2213 Flow3523: ; preds = %Flow3522, %loop-memcpy-residual-header2216 call void @llvm.amdgcn.end.cf.i64(i64 %2771) br label %Flow3527, !amdgpu.uniform !42 loop-memcpy-residual2215: ; preds = %loop-memcpy-residual2215.preheader, %loop-memcpy-residual2215 %phi.broken3964 = phi i64 [ 0, %loop-memcpy-residual2215.preheader ], [ %2065, %loop-memcpy-residual2215 ] %residual-loop-index2217 = phi i64 [ %2063, %loop-memcpy-residual2215 ], [ 0, %loop-memcpy-residual2215.preheader ] %scevgep2942 = getelementptr i8, ptr %scevgep2941, i64 %residual-loop-index2217 %2062 = load i8, ptr %scevgep2942, align 1 %scevgep2939 = getelementptr i8, ptr %scevgep2938, i64 %residual-loop-index2217 store i8 %2062, ptr %scevgep2939, align 1 %2063 = add i64 %residual-loop-index2217, 1 %2064 = icmp uge i64 %2063, %2050 %2065 = call i64 @llvm.amdgcn.if.break.i64(i1 %2064, i64 %phi.broken3964) %2066 = call i1 @llvm.amdgcn.loop.i64(i64 %2065) br i1 %2066, label %Flow3522, label %loop-memcpy-residual2215 Flow3522: ; preds = %loop-memcpy-residual2215 %.lcssa4045 = phi i64 [ %2065, %loop-memcpy-residual2215 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4045) br label %Flow3523, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1534: ; preds = %Flow3527 %conv.i.i26.i.i.i.i1535 = xor i32 %port.sroa.37.0.i.i1523, 1 fence release %2067 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i1536 = getelementptr inbounds nuw i32, ptr %2067, i64 %idxprom.i23.i.i.i.i.i1519 store atomic i32 %conv.i.i26.i.i.i.i1535, ptr %arrayidx.i24.i29.i.i.i.i1536 monotonic, align 4 %add.i.i.i.i1537 = add i64 %idx.0.i.i.i.i1524, 64 %scevgep2929 = getelementptr i8, ptr %lsr.iv2928, i64 64 %lsr.iv.next2936 = add i64 %lsr.iv2935, -64 br label %Flow3531, !amdgpu.uniform !42 cond.false.i.i.i1544: ; preds = %Flow3531 %.lcssa4047 = phi i64 [ %2044, %Flow3531 ] %port.sroa.37.0.i.i1523.lcssa = phi i32 [ %port.sroa.37.0.i.i1523, %Flow3531 ] %.lcssa4046 = phi i32 [ %2030, %Flow3531 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4047) %2068 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa4046) %2069 = icmp ne i32 %2068, %port.sroa.37.0.i.i1523.lcssa %2070 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2069) %2071 = extractvalue { i1, i64 } %2070, 0 %2072 = extractvalue { i1, i64 } %2070, 1 br i1 %2071, label %while.body.i.i.i.i1545.preheader, label %Flow3520 while.body.i.i.i.i1545.preheader: ; preds = %cond.false.i.i.i1544 br label %while.body.i.i.i.i1545, !amdgpu.uniform !42 Flow3520: ; preds = %Flow3518, %cond.false.i.i.i1544 call void @llvm.amdgcn.end.cf.i64(i64 %2072) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1566, !amdgpu.uniform !42 while.body.i.i.i.i1545: ; preds = %while.body.i.i.i.i1545.preheader, %while.body.i.i.i.i1545 %phi.broken3966 = phi i64 [ 0, %while.body.i.i.i.i1545.preheader ], [ %2076, %while.body.i.i.i.i1545 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %2073 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i1546 = getelementptr inbounds nuw i32, ptr %2073, i64 %idxprom.i23.i.i.i.i.i1519, !amdgpu.uniform !42 %2074 = load atomic i32, ptr %arrayidx.i.i.i8.i.i1546 monotonic, align 4 %2075 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2074) %cmp.i.not.i.i.i.i1547 = icmp eq i32 %2075, %port.sroa.37.0.i.i1523.lcssa %2076 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i1547, i64 %phi.broken3966) %2077 = call i1 @llvm.amdgcn.loop.i64(i64 %2076) br i1 %2077, label %Flow3518, label %while.body.i.i.i.i1545 Flow3518: ; preds = %while.body.i.i.i.i1545 %.lcssa4043 = phi i64 [ %2076, %while.body.i.i.i.i1545 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4043) br label %Flow3520, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1566: ; preds = %Flow3520 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %2078 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4054, i1 true) %iszero.i.i.i.i.i13.i.i1549 = icmp ne i64 %.lcssa4054, 0 %cmp2.i.i.i.i14.i.i1550 = icmp eq i64 %2078, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i1551 = select i1 %iszero.i.i.i.i.i13.i.i1549, i1 %cmp2.i.i.i.i14.i.i1550, i1 false %2079 = and i32 %.lcssa4055, 31 %conv4.i.i.i19.i.i1555 = zext i1 %cmp.i.i.i.i15.i.i1551 to i32 %shl.i.i.i20.i.i1556 = shl nuw i32 %conv4.i.i.i19.i.i1555, %2079 %xor.i.i.i21.i.i1557 = xor i32 %shl.i.i.i20.i.i1556, -1 %2080 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2627, !amdgpu.uniform !42 2081: ; preds = %ComputeEnd2628 %div8.i.i.i16.i.i1552 = lshr i32 %.lcssa4055, 5 %idxprom.i.i.i17.i.i1553 = zext nneg i32 %div8.i.i.i16.i.i1552 to i64 %2082 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i1553 %sunkaddr3334 = getelementptr inbounds i8, ptr addrspace(1) %2082, i64 40 %2083 = atomicrmw and ptr addrspace(1) %sunkaddr3334, i32 %.lcssa4042 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2084, !amdgpu.uniform !42 2084: ; preds = %2081, %ComputeEnd2628 call void @llvm.amdgcn.end.cf.i64(i64 %3831) tail call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i.i1570, !amdgpu.uniform !42 for.cond.i.i.i1570: ; preds = %2084, %Flow3517 %2085 = phi i32 [ %2123, %Flow3517 ], [ poison, %2084 ] %2086 = phi i64 [ %2124, %Flow3517 ], [ poison, %2084 ] %2087 = phi i32 [ %2125, %Flow3517 ], [ poison, %2084 ] %retval.sroa.6.0.i.i.i1571 = phi i32 [ %2128, %Flow3517 ], [ undef, %2084 ] %retval.sroa.2.0.i.i.i1573 = phi i64 [ %2127, %Flow3517 ], [ undef, %2084 ] %retval.sroa.8.0.i.i.i1574 = phi i32 [ %2126, %Flow3517 ], [ undef, %2084 ] %index.0.i.i.i1575 = phi i32 [ %2130, %Flow3517 ], [ 0, %2084 ] %2088 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i1576 = icmp ult i32 %index.0.i.i.i1575, %2088 %spec.store.select.i.i.i1577 = select i1 %cmp.not.i.i.i1576, i32 %index.0.i.i.i1575, i32 0 %2089 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %2090 = and i32 %spec.store.select.i.i.i1577, 31 %2091 = lshr i64 %2089, %sh_prom.i.i.i.i %2092 = trunc i64 %2091 to i32 %conv4.i.i.i.i.i1581 = and i32 %2092, 1 %shl.i.i.i.i.i1582 = shl nuw i32 %conv4.i.i.i.i.i1581, %2090 %2093 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2631, !amdgpu.uniform !42 2094: ; preds = %ComputeEnd2632 %sunkaddr3335 = getelementptr inbounds i8, ptr addrspace(1) %3841, i64 40 %2095 = atomicrmw or ptr addrspace(1) %sunkaddr3335, i32 %.lcssa4036 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2096, !amdgpu.uniform !42 2096: ; preds = %2094, %ComputeEnd2632 %2097 = phi i32 [ %2095, %2094 ], [ poison, %ComputeEnd2632 ] call void @llvm.amdgcn.end.cf.i64(i64 %3850) %2098 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %2097) %2099 = or i32 %2098, %.lcssa4037 %shl5.i.i.i.i.i1583 = shl nuw i32 1, %2090 %and.i.i.i.i.i1584 = and i32 %shl5.i.i.i.i.i1583, %2099 %tobool3.i.i.i.i1585 = icmp ne i32 %and.i.i.i.i.i1584, 0 %2100 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i1585) %and.i.i.i.i.i.i1586 = and i64 %2100, %2089 %cmp.i.not.i.i.i1587 = icmp ne i64 %2089, %and.i.i.i.i.i.i1586 br i1 %cmp.i.not.i.i.i1587, label %if.then.i.i.i.i1588, label %Flow3516, !amdgpu.uniform !42 if.then.i.i.i.i1588: ; preds = %2096 fence syncscope("agent") acquire %2101 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %2102 = extractelement <2 x i64> %2101, i32 0 %2103 = inttoptr i64 %2102 to ptr %2104 = extractelement <2 x i64> %2101, i32 1 %2105 = inttoptr i64 %2104 to ptr %idxprom.i.i.i.i1589 = zext i32 %spec.store.select.i.i.i1577 to i64 %arrayidx.i.i.i.i1590 = getelementptr inbounds nuw i32, ptr %2103, i64 %idxprom.i.i.i.i1589, !amdgpu.uniform !42 %2106 = load atomic i32, ptr %arrayidx.i.i.i.i1590 monotonic, align 4 %2107 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2106) %arrayidx.i45.i.i.i1591 = getelementptr inbounds nuw i32, ptr %2105, i64 %idxprom.i.i.i.i1589, !amdgpu.uniform !42 %2108 = load atomic i32, ptr %arrayidx.i45.i.i.i1591 monotonic, align 4 %2109 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2108) %cmp.i46.not.i.i.i1592 = icmp ne i32 %2107, %2109 br i1 %cmp.i46.not.i.i.i1592, label %if.then12.i.i.i1593, label %Flow3514, !amdgpu.uniform !42 if.then12.i.i.i1593: ; preds = %if.then.i.i.i.i1588 fence syncscope("agent") release %2110 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %2089, i1 true) %iszero.i.i.i.i.i.i.i1594 = icmp ne i64 %2089, 0 %cmp2.i.i.i.i.i.i1595 = icmp eq i64 %2110, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i1596 = select i1 %iszero.i.i.i.i.i.i.i1594, i1 %cmp2.i.i.i.i.i.i1595, i1 false %conv4.i.i51.i.i.i1597 = zext i1 %cmp.i.i.i.i.i.i1596 to i32 %shl.i.i52.i.i.i1598 = shl nuw i32 %conv4.i.i51.i.i.i1597, %2090 %xor.i.i.i.i.i1599 = xor i32 %shl.i.i52.i.i.i1598, -1 %2111 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2636, !amdgpu.uniform !42 2112: ; preds = %ComputeEnd2637 %sunkaddr3336 = getelementptr inbounds i8, ptr addrspace(1) %3841, i64 40 %2113 = atomicrmw and ptr addrspace(1) %sunkaddr3336, i32 %.lcssa4038 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2114, !amdgpu.uniform !42 2114: ; preds = %2112, %ComputeEnd2637 call void @llvm.amdgcn.end.cf.i64(i64 %3868) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3514, !amdgpu.uniform !42 if.end14.i.i.i1657: ; preds = %Flow3514 %2115 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %2089, i1 true) %iszero.i.i.i.i.i.i1658 = icmp ne i64 %2089, 0 %cmp2.i.i.i.i.i1659 = icmp eq i64 %2115, %sh_prom.i.i.i.i %cmp.i.i.i.i.i1660 = select i1 %iszero.i.i.i.i.i.i1658, i1 %cmp2.i.i.i.i.i1659, i1 false %2116 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i1660) %2117 = extractvalue { i1, i64 } %2116, 0 %2118 = extractvalue { i1, i64 } %2116, 1 br i1 %2117, label %if.then16.i.i.i1662, label %if.end22.i.i.i1661 if.then16.i.i.i1662: ; preds = %if.end14.i.i.i1657 %2119 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i1663 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2119, i64 %idxprom.i.i.i.i1589, i32 1 store i32 1660944387, ptr %opcode.i.i.i1663, align 8, !tbaa !77 %arrayidx21.i.i.i1664 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2119, i64 %idxprom.i.i.i.i1589 store i64 %2089, ptr %arrayidx21.i.i.i1664, align 8, !tbaa !80 br label %if.end22.i.i.i1661, !amdgpu.uniform !42 Flow3515: ; preds = %if.end22.i.i.i1661, %Flow3514 %2120 = phi i32 [ %2107, %if.end22.i.i.i1661 ], [ %retval.sroa.8.0.i.i.i1574, %Flow3514 ] %2121 = phi i64 [ %2089, %if.end22.i.i.i1661 ], [ %retval.sroa.2.0.i.i.i1573, %Flow3514 ] %2122 = phi i32 [ %spec.store.select.i.i.i1577, %if.end22.i.i.i1661 ], [ %retval.sroa.6.0.i.i.i1571, %Flow3514 ] br label %cleanup26.i.i.i1600, !amdgpu.uniform !42 if.end22.i.i.i1661: ; preds = %if.then16.i.i.i1662, %if.end14.i.i.i1657 call void @llvm.amdgcn.end.cf.i64(i64 %2118) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3515, !amdgpu.uniform !42 Flow3516: ; preds = %cleanup26.i.i.i1600, %2096 %2123 = phi i32 [ %2122, %cleanup26.i.i.i1600 ], [ %2085, %2096 ] %2124 = phi i64 [ %2121, %cleanup26.i.i.i1600 ], [ %2086, %2096 ] %2125 = phi i32 [ %2120, %cleanup26.i.i.i1600 ], [ %2087, %2096 ] %2126 = phi i32 [ %2120, %cleanup26.i.i.i1600 ], [ %retval.sroa.8.0.i.i.i1574, %2096 ] %2127 = phi i64 [ %2121, %cleanup26.i.i.i1600 ], [ %retval.sroa.2.0.i.i.i1573, %2096 ] %2128 = phi i32 [ %2122, %cleanup26.i.i.i1600 ], [ %retval.sroa.6.0.i.i.i1571, %2096 ] %2129 = phi i1 [ %cmp.i46.not.i.i.i1592, %cleanup26.i.i.i1600 ], [ true, %2096 ] br i1 %2129, label %for.inc.i.i.i1605, label %Flow3517, !amdgpu.uniform !42 cleanup26.i.i.i1600: ; preds = %Flow3515 br label %Flow3516, !amdgpu.uniform !42 for.inc.i.i.i1605: ; preds = %Flow3516 %inc.i.i.i1610 = add i32 %spec.store.select.i.i.i1577, 1 br label %Flow3517, !amdgpu.uniform !42 Flow3517: ; preds = %for.inc.i.i.i1605, %Flow3516 %2130 = phi i32 [ %inc.i.i.i1610, %for.inc.i.i.i1605 ], [ poison, %Flow3516 ] %2131 = phi i1 [ false, %for.inc.i.i.i1605 ], [ true, %Flow3516 ] br i1 %2131, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1611, label %for.cond.i.i.i1570, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1611: ; preds = %Flow3517 %.lcssa4041 = phi i32 [ %2123, %Flow3517 ] %.lcssa4040 = phi i64 [ %2124, %Flow3517 ] %.lcssa4039 = phi i32 [ %2125, %Flow3517 ] fence acquire %2132 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i1612 = shl i32 %.lcssa4041, 6 %idxprom.i19.i.i.i.i.i1613 = zext i32 %mul.i.i.i.i.i.i1612 to i64 %arrayidx.i20.i.i.i.i.i1614 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %2132, i64 %idxprom.i19.i.i.i.i.i1613 %arrayidx.i22.i.i.i.i.i1615 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i1614, i64 %sh_prom.i.i.i.i store i64 1, ptr %arrayidx.i22.i.i.i.i.i1615, align 8, !tbaa !82 %arrayidx6.i.i.i.i.i.i.i1616 = getelementptr inbounds nuw i8, ptr %arrayidx.i22.i.i.i.i.i1615, i64 8 store i8 10, ptr %arrayidx6.i.i.i.i.i.i.i1616, align 8 %tobool.not.i.i.i.i.i.i1617 = icmp eq i32 %.lcssa4039, 0 %conv.i.i.i.i.i.i1618 = zext i1 %tobool.not.i.i.i.i.i.i1617 to i32 fence release %2133 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i1619 = zext i32 %.lcssa4041 to i64 %arrayidx.i24.i.i.i.i.i1620 = getelementptr inbounds nuw i32, ptr %2133, i64 %idxprom.i23.i.i.i.i.i1619 store atomic i32 %conv.i.i.i.i.i.i1618, ptr %arrayidx.i24.i.i.i.i.i1620 monotonic, align 4 %2134 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i1621 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2134, i64 %idxprom.i23.i.i.i.i.i1619, !amdgpu.uniform !42 %2135 = load i64, ptr %arrayidx.i.i5.i.i1621, align 8, !tbaa !80 br label %while.cond.i.i.i.i1622, !amdgpu.uniform !42 while.cond.i.i.i.i1622: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1611, %Flow3513 %phi.broken3967 = phi i64 [ 0, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1611 ], [ %2150, %Flow3513 ] %port.sroa.37.0.i.i1623 = phi i32 [ %2148, %Flow3513 ], [ %conv.i.i.i.i.i.i1618, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1611 ] %idx.0.i.i.i.i1624 = phi i64 [ %2147, %Flow3513 ], [ 56, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1611 ] %cmp.i.i.i.i1625 = icmp eq i64 %idx.0.i.i.i.i1624, 0 %2136 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i1625) %and.i.i.i.i6.i.i1626 = and i64 %2136, %2135 %tobool.not.i.i.i.i1627 = icmp ne i64 %and.i.i.i.i6.i.i1626, 0 %2137 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i1628 = getelementptr inbounds nuw i32, ptr %2137, i64 %idxprom.i23.i.i.i.i.i1619, !amdgpu.uniform !42 %2138 = load atomic i32, ptr %arrayidx.i22.i.i.i1628 monotonic, align 4 %2139 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i1627) %2140 = extractvalue { i1, i64 } %2139, 0 %2141 = extractvalue { i1, i64 } %2139, 1 br i1 %2140, label %cond.false.i8.i.i.i.i1629, label %Flow3513 cond.false.i8.i.i.i.i1629: ; preds = %while.cond.i.i.i.i1622 %2142 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2138) %2143 = icmp ne i32 %2142, %port.sroa.37.0.i.i1623 br i1 %2143, label %while.body.i.i21.i.i.i.i1630.preheader, label %Flow3512, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1630.preheader: ; preds = %cond.false.i8.i.i.i.i1629 br label %while.body.i.i21.i.i.i.i1630, !amdgpu.uniform !42 Flow3512: ; preds = %Flow3510, %cond.false.i8.i.i.i.i1629 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1633, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1630: ; preds = %while.body.i.i21.i.i.i.i1630.preheader, %while.body.i.i21.i.i.i.i1630 tail call void @llvm.amdgcn.s.sleep(i32 2) %2144 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i1631 = getelementptr inbounds nuw i32, ptr %2144, i64 %idxprom.i23.i.i.i.i.i1619, !amdgpu.uniform !42 %2145 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i1631 monotonic, align 4 %2146 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2145) %cmp.i.not.i.i23.i.i.i.i1632 = icmp eq i32 %2146, %port.sroa.37.0.i.i1623 br i1 %cmp.i.not.i.i23.i.i.i.i1632, label %Flow3510, label %while.body.i.i21.i.i.i.i1630, !amdgpu.uniform !42 Flow3510: ; preds = %while.body.i.i21.i.i.i.i1630 br label %Flow3512, !amdgpu.uniform !42 Flow3513: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1634, %while.cond.i.i.i.i1622 %2147 = phi i64 [ %add.i.i.i.i1637, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1634 ], [ poison, %while.cond.i.i.i.i1622 ] %2148 = phi i32 [ %conv.i.i26.i.i.i.i1635, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1634 ], [ poison, %while.cond.i.i.i.i1622 ] %2149 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1634 ], [ true, %while.cond.i.i.i.i1622 ] call void @llvm.amdgcn.end.cf.i64(i64 %2141) %2150 = call i64 @llvm.amdgcn.if.break.i64(i1 %2149, i64 %phi.broken3967) %2151 = call i1 @llvm.amdgcn.loop.i64(i64 %2150) br i1 %2151, label %cond.false.i.i.i1643, label %while.cond.i.i.i.i1622 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1633: ; preds = %Flow3512 fence acquire br i1 %cmp.i.i.i.i1625, label %if.then.i.i.i.i.i.i.i1638, label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1634, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i1638: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1633 %2152 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %arrayidx.i20.i35.i.i.i.i1641 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %2152, i64 %idxprom.i19.i.i.i.i.i1613 %arrayidx.i22.i38.i.i.i.i1642 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i1641, i64 %sh_prom.i.i.i.i store i8 10, ptr %arrayidx.i22.i38.i.i.i.i1642, align 1 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1634, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1634: ; preds = %if.then.i.i.i.i.i.i.i1638, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1633 %conv.i.i26.i.i.i.i1635 = xor i32 %port.sroa.37.0.i.i1623, 1 fence release %2153 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i1636 = getelementptr inbounds nuw i32, ptr %2153, i64 %idxprom.i23.i.i.i.i.i1619 store atomic i32 %conv.i.i26.i.i.i.i1635, ptr %arrayidx.i24.i29.i.i.i.i1636 monotonic, align 4 %add.i.i.i.i1637 = add i64 %idx.0.i.i.i.i1624, 64 br label %Flow3513, !amdgpu.uniform !42 cond.false.i.i.i1643: ; preds = %Flow3513 %.lcssa4035 = phi i64 [ %2150, %Flow3513 ] %port.sroa.37.0.i.i1623.lcssa = phi i32 [ %port.sroa.37.0.i.i1623, %Flow3513 ] %.lcssa4034 = phi i32 [ %2138, %Flow3513 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4035) %2154 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa4034) %2155 = icmp ne i32 %2154, %port.sroa.37.0.i.i1623.lcssa %2156 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2155) %2157 = extractvalue { i1, i64 } %2156, 0 %2158 = extractvalue { i1, i64 } %2156, 1 br i1 %2157, label %while.body.i.i.i.i1644.preheader, label %Flow3509 while.body.i.i.i.i1644.preheader: ; preds = %cond.false.i.i.i1643 br label %while.body.i.i.i.i1644, !amdgpu.uniform !42 Flow3509: ; preds = %Flow3507, %cond.false.i.i.i1643 call void @llvm.amdgcn.end.cf.i64(i64 %2158) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit1665, !amdgpu.uniform !42 while.body.i.i.i.i1644: ; preds = %while.body.i.i.i.i1644.preheader, %while.body.i.i.i.i1644 %phi.broken3968 = phi i64 [ 0, %while.body.i.i.i.i1644.preheader ], [ %2162, %while.body.i.i.i.i1644 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %2159 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i1645 = getelementptr inbounds nuw i32, ptr %2159, i64 %idxprom.i23.i.i.i.i.i1619, !amdgpu.uniform !42 %2160 = load atomic i32, ptr %arrayidx.i.i.i8.i.i1645 monotonic, align 4 %2161 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2160) %cmp.i.not.i.i.i.i1646 = icmp eq i32 %2161, %port.sroa.37.0.i.i1623.lcssa %2162 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i1646, i64 %phi.broken3968) %2163 = call i1 @llvm.amdgcn.loop.i64(i64 %2162) br i1 %2163, label %Flow3507, label %while.body.i.i.i.i1644 Flow3507: ; preds = %while.body.i.i.i.i1644 %.lcssa4033 = phi i64 [ %2162, %while.body.i.i.i.i1644 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4033) br label %Flow3509, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit1665: ; preds = %Flow3509 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %2164 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4040, i1 true) %iszero.i.i.i.i.i13.i.i1648 = icmp ne i64 %.lcssa4040, 0 %cmp2.i.i.i.i14.i.i1649 = icmp eq i64 %2164, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i1650 = select i1 %iszero.i.i.i.i.i13.i.i1648, i1 %cmp2.i.i.i.i14.i.i1649, i1 false %2165 = and i32 %.lcssa4041, 31 %conv4.i.i.i19.i.i1654 = zext i1 %cmp.i.i.i.i15.i.i1650 to i32 %shl.i.i.i20.i.i1655 = shl nuw i32 %conv4.i.i.i19.i.i1654, %2165 %xor.i.i.i21.i.i1656 = xor i32 %shl.i.i.i20.i.i1655, -1 %2166 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2640, !amdgpu.uniform !42 2167: ; preds = %ComputeEnd2641 %div8.i.i.i16.i.i1651 = lshr i32 %.lcssa4041, 5 %idxprom.i.i.i17.i.i1652 = zext nneg i32 %div8.i.i.i16.i.i1651 to i64 %2168 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i1652 %sunkaddr3337 = getelementptr inbounds i8, ptr addrspace(1) %2168, i64 40 %2169 = atomicrmw and ptr addrspace(1) %sunkaddr3337, i32 %.lcssa4032 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2170, !amdgpu.uniform !42 2170: ; preds = %2167, %ComputeEnd2641 call void @llvm.amdgcn.end.cf.i64(i64 %3885) tail call void @llvm.amdgcn.wave.barrier() br i1 %cmp2.i.i.i35.i, label %if.then3.i.i.i87.i, label %if.end4.i.i.i76.i, !amdgpu.uniform !42 if.then3.i.i.i87.i: ; preds = %2170 %mul.i.i.i88.i = mul nuw i64 %inc.i.i.i32.i, 11 %div18.i.i.i89.i = lshr i64 %mul.i.i.i88.i, 3 br label %if.end4.i.i.i76.i, !amdgpu.uniform !42 if.end4.i.i.i76.i: ; preds = %if.then3.i.i.i87.i, %2170 %new_capacity.addr.0.i.i.i77.i = phi i64 [ %div18.i.i.i89.i, %if.then3.i.i.i87.i ], [ %inc.i.i.i32.i, %2170 ] %sub.i.i1666 = add i64 %new_capacity.addr.0.i.i.i77.i, 7 %div2.i.i1667 = and i64 %sub.i.i1666, -8 %2171 = load ptr, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %add.ptr.i.i1668 = getelementptr inbounds nuw i8, ptr %2171, i64 %div2.i.i1667 store ptr %add.ptr.i.i1668, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 br i1 %597, label %loop-memcpy-expansion2285.preheader, label %Flow3506, !amdgpu.uniform !42 loop-memcpy-expansion2285.preheader: ; preds = %if.end4.i.i.i76.i br label %loop-memcpy-expansion2285, !amdgpu.uniform !42 Flow3506: ; preds = %Flow3505, %if.end4.i.i.i76.i br label %loop-memcpy-residual-header2288, !amdgpu.uniform !42 loop-memcpy-expansion2285: ; preds = %loop-memcpy-expansion2285.preheader, %loop-memcpy-expansion2285 %loop-index2286 = phi i64 [ %2175, %loop-memcpy-expansion2285 ], [ 0, %loop-memcpy-expansion2285.preheader ] %2172 = getelementptr i8, ptr %3, i64 %loop-index2286, !amdgpu.uniform !42 %2173 = load <4 x i32>, ptr %2172, align 1 %2174 = getelementptr i8, ptr %2171, i64 %loop-index2286 store <4 x i32> %2173, ptr %2174, align 1 %2175 = add i64 %loop-index2286, 16 %2176 = icmp uge i64 %2175, %596 br i1 %2176, label %Flow3505, label %loop-memcpy-expansion2285, !amdgpu.uniform !42 Flow3503: ; preds = %Flow3502, %loop-memcpy-residual-header2288 br label %post-loop-memcpy-expansion2284, !amdgpu.uniform !42 loop-memcpy-residual2287: ; preds = %loop-memcpy-residual2287.preheader, %loop-memcpy-residual2287 %residual-loop-index2289 = phi i64 [ %2178, %loop-memcpy-residual2287 ], [ 0, %loop-memcpy-residual2287.preheader ] %scevgep2926 = getelementptr i8, ptr %scevgep2925, i64 %residual-loop-index2289, !amdgpu.uniform !42 %2177 = load i8, ptr %scevgep2926, align 1 %scevgep2924 = getelementptr i8, ptr %scevgep2923, i64 %residual-loop-index2289 store i8 %2177, ptr %scevgep2924, align 1 %2178 = add i64 %residual-loop-index2289, 1 %2179 = icmp uge i64 %2178, %595 br i1 %2179, label %Flow3502, label %loop-memcpy-residual2287, !amdgpu.uniform !42 Flow3502: ; preds = %loop-memcpy-residual2287 br label %Flow3503, !amdgpu.uniform !42 post-loop-memcpy-expansion2284: ; preds = %Flow3503 %sub.ptr.lhs.cast.i.i1669 = ptrtoint ptr %add.ptr.i.i1668 to i64 %sub.ptr.sub.i.i1670 = sub i64 %sub.ptr.lhs.cast.i.i1669, ptrtoint (ptr addrspacecast (ptr addrspace(1) @_ZN12_GLOBAL__N_16memoryE to ptr) to i64) %cmp.i.i1671 = icmp ugt i64 %sub.ptr.sub.i.i1670, 65335 %cond.i.i1672 = select i1 %cmp.i.i1671, ptr null, ptr %2171 %cmp.not.i10.i.i84.i = icmp ne ptr %cond.i.i1672, addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr) br i1 %cmp.not.i10.i.i84.i, label %if.then.i.i.i85.i, label %for.cond.i.i.i1674.preheader, !amdgpu.uniform !42 if.then.i.i.i85.i: ; preds = %post-loop-memcpy-expansion2284 %arrayidx.i.i.i86.i = getelementptr inbounds nuw i8, ptr %2171, i64 %spec.select.i store i8 0, ptr %arrayidx.i.i.i86.i, align 1, !tbaa !57 br label %for.cond.i.i.i1674.preheader, !amdgpu.uniform !42 for.cond.i.i.i1674.preheader: ; preds = %if.then.i.i.i85.i, %post-loop-memcpy-expansion2284 br label %for.cond.i.i.i1674, !amdgpu.uniform !42 for.cond.i.i.i1674: ; preds = %for.cond.i.i.i1674.preheader, %Flow3500 %2180 = phi i32 [ %2218, %Flow3500 ], [ poison, %for.cond.i.i.i1674.preheader ] %2181 = phi i64 [ %2219, %Flow3500 ], [ poison, %for.cond.i.i.i1674.preheader ] %2182 = phi i32 [ %2220, %Flow3500 ], [ poison, %for.cond.i.i.i1674.preheader ] %retval.sroa.6.0.i.i.i1675 = phi i32 [ %2223, %Flow3500 ], [ undef, %for.cond.i.i.i1674.preheader ] %retval.sroa.2.0.i.i.i1677 = phi i64 [ %2222, %Flow3500 ], [ undef, %for.cond.i.i.i1674.preheader ] %retval.sroa.8.0.i.i.i1678 = phi i32 [ %2221, %Flow3500 ], [ undef, %for.cond.i.i.i1674.preheader ] %index.0.i.i.i1679 = phi i32 [ %2225, %Flow3500 ], [ 0, %for.cond.i.i.i1674.preheader ] %2183 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i1680 = icmp ult i32 %index.0.i.i.i1679, %2183 %spec.store.select.i.i.i1681 = select i1 %cmp.not.i.i.i1680, i32 %index.0.i.i.i1679, i32 0 %2184 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %2185 = and i32 %spec.store.select.i.i.i1681, 31 %2186 = lshr i64 %2184, %sh_prom.i.i.i.i %2187 = trunc i64 %2186 to i32 %conv4.i.i.i.i.i1685 = and i32 %2187, 1 %shl.i.i.i.i.i1686 = shl nuw i32 %conv4.i.i.i.i.i1685, %2185 %2188 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2644, !amdgpu.uniform !42 2189: ; preds = %ComputeEnd2645 %sunkaddr3338 = getelementptr inbounds i8, ptr addrspace(1) %3895, i64 40 %2190 = atomicrmw or ptr addrspace(1) %sunkaddr3338, i32 %.lcssa4026 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2191, !amdgpu.uniform !42 2191: ; preds = %2189, %ComputeEnd2645 %2192 = phi i32 [ %2190, %2189 ], [ poison, %ComputeEnd2645 ] call void @llvm.amdgcn.end.cf.i64(i64 %3904) %2193 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %2192) %2194 = or i32 %2193, %.lcssa4027 %shl5.i.i.i.i.i1687 = shl nuw i32 1, %2185 %and.i.i.i.i.i1688 = and i32 %shl5.i.i.i.i.i1687, %2194 %tobool3.i.i.i.i1689 = icmp ne i32 %and.i.i.i.i.i1688, 0 %2195 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i1689) %and.i.i.i.i.i.i1690 = and i64 %2195, %2184 %cmp.i.not.i.i.i1691 = icmp ne i64 %2184, %and.i.i.i.i.i.i1690 br i1 %cmp.i.not.i.i.i1691, label %if.then.i.i.i.i1692, label %Flow3499, !amdgpu.uniform !42 if.then.i.i.i.i1692: ; preds = %2191 fence syncscope("agent") acquire %2196 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %2197 = extractelement <2 x i64> %2196, i32 0 %2198 = inttoptr i64 %2197 to ptr %2199 = extractelement <2 x i64> %2196, i32 1 %2200 = inttoptr i64 %2199 to ptr %idxprom.i.i.i.i1693 = zext i32 %spec.store.select.i.i.i1681 to i64 %arrayidx.i.i.i.i1694 = getelementptr inbounds nuw i32, ptr %2198, i64 %idxprom.i.i.i.i1693, !amdgpu.uniform !42 %2201 = load atomic i32, ptr %arrayidx.i.i.i.i1694 monotonic, align 4 %2202 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2201) %arrayidx.i45.i.i.i1695 = getelementptr inbounds nuw i32, ptr %2200, i64 %idxprom.i.i.i.i1693, !amdgpu.uniform !42 %2203 = load atomic i32, ptr %arrayidx.i45.i.i.i1695 monotonic, align 4 %2204 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2203) %cmp.i46.not.i.i.i1696 = icmp ne i32 %2202, %2204 br i1 %cmp.i46.not.i.i.i1696, label %if.then12.i.i.i1697, label %Flow3497, !amdgpu.uniform !42 if.then12.i.i.i1697: ; preds = %if.then.i.i.i.i1692 fence syncscope("agent") release %2205 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %2184, i1 true) %iszero.i.i.i.i.i.i.i1698 = icmp ne i64 %2184, 0 %cmp2.i.i.i.i.i.i1699 = icmp eq i64 %2205, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i1700 = select i1 %iszero.i.i.i.i.i.i.i1698, i1 %cmp2.i.i.i.i.i.i1699, i1 false %conv4.i.i51.i.i.i1701 = zext i1 %cmp.i.i.i.i.i.i1700 to i32 %shl.i.i52.i.i.i1702 = shl nuw i32 %conv4.i.i51.i.i.i1701, %2185 %xor.i.i.i.i.i1703 = xor i32 %shl.i.i52.i.i.i1702, -1 %2206 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2649, !amdgpu.uniform !42 2207: ; preds = %ComputeEnd2650 %sunkaddr3339 = getelementptr inbounds i8, ptr addrspace(1) %3895, i64 40 %2208 = atomicrmw and ptr addrspace(1) %sunkaddr3339, i32 %.lcssa4028 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2209, !amdgpu.uniform !42 2209: ; preds = %2207, %ComputeEnd2650 call void @llvm.amdgcn.end.cf.i64(i64 %3922) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3497, !amdgpu.uniform !42 if.end14.i.i.i1763: ; preds = %Flow3497 %2210 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %2184, i1 true) %iszero.i.i.i.i.i.i1764 = icmp ne i64 %2184, 0 %cmp2.i.i.i.i.i1765 = icmp eq i64 %2210, %sh_prom.i.i.i.i %cmp.i.i.i.i.i1766 = select i1 %iszero.i.i.i.i.i.i1764, i1 %cmp2.i.i.i.i.i1765, i1 false %2211 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i1766) %2212 = extractvalue { i1, i64 } %2211, 0 %2213 = extractvalue { i1, i64 } %2211, 1 br i1 %2212, label %if.then16.i.i.i1768, label %if.end22.i.i.i1767 if.then16.i.i.i1768: ; preds = %if.end14.i.i.i1763 %2214 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i1769 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2214, i64 %idxprom.i.i.i.i1693, i32 1 store i32 1660944387, ptr %opcode.i.i.i1769, align 8, !tbaa !77 %arrayidx21.i.i.i1770 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2214, i64 %idxprom.i.i.i.i1693 store i64 %2184, ptr %arrayidx21.i.i.i1770, align 8, !tbaa !80 br label %if.end22.i.i.i1767, !amdgpu.uniform !42 Flow3498: ; preds = %if.end22.i.i.i1767, %Flow3497 %2215 = phi i32 [ %2202, %if.end22.i.i.i1767 ], [ %retval.sroa.8.0.i.i.i1678, %Flow3497 ] %2216 = phi i64 [ %2184, %if.end22.i.i.i1767 ], [ %retval.sroa.2.0.i.i.i1677, %Flow3497 ] %2217 = phi i32 [ %spec.store.select.i.i.i1681, %if.end22.i.i.i1767 ], [ %retval.sroa.6.0.i.i.i1675, %Flow3497 ] br label %cleanup26.i.i.i1704, !amdgpu.uniform !42 if.end22.i.i.i1767: ; preds = %if.then16.i.i.i1768, %if.end14.i.i.i1763 call void @llvm.amdgcn.end.cf.i64(i64 %2213) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3498, !amdgpu.uniform !42 Flow3499: ; preds = %cleanup26.i.i.i1704, %2191 %2218 = phi i32 [ %2217, %cleanup26.i.i.i1704 ], [ %2180, %2191 ] %2219 = phi i64 [ %2216, %cleanup26.i.i.i1704 ], [ %2181, %2191 ] %2220 = phi i32 [ %2215, %cleanup26.i.i.i1704 ], [ %2182, %2191 ] %2221 = phi i32 [ %2215, %cleanup26.i.i.i1704 ], [ %retval.sroa.8.0.i.i.i1678, %2191 ] %2222 = phi i64 [ %2216, %cleanup26.i.i.i1704 ], [ %retval.sroa.2.0.i.i.i1677, %2191 ] %2223 = phi i32 [ %2217, %cleanup26.i.i.i1704 ], [ %retval.sroa.6.0.i.i.i1675, %2191 ] %2224 = phi i1 [ %cmp.i46.not.i.i.i1696, %cleanup26.i.i.i1704 ], [ true, %2191 ] br i1 %2224, label %for.inc.i.i.i1709, label %Flow3500, !amdgpu.uniform !42 cleanup26.i.i.i1704: ; preds = %Flow3498 br label %Flow3499, !amdgpu.uniform !42 for.inc.i.i.i1709: ; preds = %Flow3499 %inc.i.i.i1714 = add i32 %spec.store.select.i.i.i1681, 1 br label %Flow3500, !amdgpu.uniform !42 Flow3500: ; preds = %for.inc.i.i.i1709, %Flow3499 %2225 = phi i32 [ %inc.i.i.i1714, %for.inc.i.i.i1709 ], [ poison, %Flow3499 ] %2226 = phi i1 [ false, %for.inc.i.i.i1709 ], [ true, %Flow3499 ] br i1 %2226, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1715, label %for.cond.i.i.i1674, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1715: ; preds = %Flow3500 %.lcssa4031 = phi i32 [ %2218, %Flow3500 ] %.lcssa4030 = phi i64 [ %2219, %Flow3500 ] %.lcssa4029 = phi i32 [ %2220, %Flow3500 ] fence acquire %2227 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i1716 = shl i32 %.lcssa4031, 6 %idxprom.i19.i.i.i.i.i1717 = zext i32 %mul.i.i.i.i.i.i1716 to i64 %arrayidx.i20.i.i.i.i.i1718 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %2227, i64 %idxprom.i19.i.i.i.i.i1717 %arrayidx.i22.i.i.i.i.i1719 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i1718, i64 %sh_prom.i.i.i.i store i64 %spec.select.i, ptr %arrayidx.i22.i.i.i.i.i1719, align 8, !tbaa !82 br i1 %656, label %loop-memcpy-expansion2207.preheader, label %Flow3496, !amdgpu.uniform !42 loop-memcpy-expansion2207.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1715 %2228 = add nuw nsw i64 %75, 8 %scevgep2919 = getelementptr i8, ptr %2227, i64 %2228 %2229 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1717, 6 %scevgep2920 = getelementptr i8, ptr %scevgep2919, i64 %2229 br label %loop-memcpy-expansion2207, !amdgpu.uniform !42 Flow3496: ; preds = %Flow3495, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1715 br label %loop-memcpy-residual-header2210, !amdgpu.uniform !42 loop-memcpy-expansion2207: ; preds = %loop-memcpy-expansion2207.preheader, %loop-memcpy-expansion2207 %loop-index2208 = phi i64 [ %2232, %loop-memcpy-expansion2207 ], [ 0, %loop-memcpy-expansion2207.preheader ] %2230 = getelementptr i8, ptr %2171, i64 %loop-index2208, !amdgpu.uniform !42 %2231 = load <4 x i32>, ptr %2230, align 1 %scevgep2921 = getelementptr i8, ptr %scevgep2920, i64 %loop-index2208 store <4 x i32> %2231, ptr %scevgep2921, align 1 %2232 = add i64 %loop-index2208, 16 %2233 = icmp uge i64 %2232, %655 br i1 %2233, label %Flow3495, label %loop-memcpy-expansion2207, !amdgpu.uniform !42 Flow3493: ; preds = %Flow3490, %Flow3492 %2234 = phi i64 [ %2767, %Flow3490 ], [ %2761, %Flow3492 ] br label %post-loop-memcpy-expansion2206, !amdgpu.uniform !42 loop-memcpy-residual2209: ; preds = %loop-memcpy-residual2209.preheader, %loop-memcpy-residual2209 %residual-loop-index2211 = phi i64 [ %2236, %loop-memcpy-residual2209 ], [ 0, %loop-memcpy-residual2209.preheader ] %scevgep2918 = getelementptr i8, ptr %scevgep2917, i64 %residual-loop-index2211, !amdgpu.uniform !42 %2235 = load i8, ptr %scevgep2918, align 1 %scevgep2916 = getelementptr i8, ptr %scevgep2915, i64 %residual-loop-index2211 store i8 %2235, ptr %scevgep2916, align 1 %2236 = add i64 %residual-loop-index2211, 1 %2237 = icmp uge i64 %2236, %654 br i1 %2237, label %Flow3490, label %loop-memcpy-residual2209, !amdgpu.uniform !42 Flow3490: ; preds = %loop-memcpy-residual2209 br label %Flow3493, !amdgpu.uniform !42 post-loop-memcpy-expansion2206: ; preds = %Flow3493 %tobool.not.i.i.i.i.i.i1722 = icmp eq i32 %.lcssa4029, 0 %conv.i.i.i.i.i.i1723 = zext i1 %tobool.not.i.i.i.i.i.i1722 to i32 fence release %2238 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i1724 = zext i32 %.lcssa4031 to i64 %arrayidx.i24.i.i.i.i.i1725 = getelementptr inbounds nuw i32, ptr %2238, i64 %idxprom.i23.i.i.i.i.i1724 store atomic i32 %conv.i.i.i.i.i.i1723, ptr %arrayidx.i24.i.i.i.i.i1725 monotonic, align 4 %2239 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i1726 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2239, i64 %idxprom.i23.i.i.i.i.i1724, !amdgpu.uniform !42 %2240 = load i64, ptr %arrayidx.i.i5.i.i1726, align 8, !tbaa !80 %scevgep2900 = getelementptr i8, ptr %2171, i64 56 br label %while.cond.i.i.i.i1727, !amdgpu.uniform !42 while.cond.i.i.i.i1727: ; preds = %post-loop-memcpy-expansion2206, %Flow3488 %phi.broken3969 = phi i64 [ 0, %post-loop-memcpy-expansion2206 ], [ %2257, %Flow3488 ] %lsr.iv2907 = phi i64 [ %2255, %Flow3488 ], [ %670, %post-loop-memcpy-expansion2206 ] %lsr.iv2901 = phi ptr [ %2254, %Flow3488 ], [ %scevgep2900, %post-loop-memcpy-expansion2206 ] %port.sroa.37.0.i.i1728 = phi i32 [ %2253, %Flow3488 ], [ %conv.i.i.i.i.i.i1723, %post-loop-memcpy-expansion2206 ] %idx.0.i.i.i.i1729 = phi i64 [ %2252, %Flow3488 ], [ 56, %post-loop-memcpy-expansion2206 ] %cmp.i.i.i.i1730 = icmp ugt i64 %spec.select.i, %idx.0.i.i.i.i1729 %2241 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i1730) %and.i.i.i.i6.i.i1731 = and i64 %2241, %2240 %tobool.not.i.i.i.i1732 = icmp ne i64 %and.i.i.i.i6.i.i1731, 0 %2242 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i1733 = getelementptr inbounds nuw i32, ptr %2242, i64 %idxprom.i23.i.i.i.i.i1724, !amdgpu.uniform !42 %2243 = load atomic i32, ptr %arrayidx.i22.i.i.i1733 monotonic, align 4 %2244 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i1732) %2245 = extractvalue { i1, i64 } %2244, 0 %2246 = extractvalue { i1, i64 } %2244, 1 br i1 %2245, label %cond.false.i8.i.i.i.i1734, label %Flow3488 cond.false.i8.i.i.i.i1734: ; preds = %while.cond.i.i.i.i1727 %2247 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2243) %2248 = icmp ne i32 %2247, %port.sroa.37.0.i.i1728 br i1 %2248, label %while.body.i.i21.i.i.i.i1735.preheader, label %Flow3487, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1735.preheader: ; preds = %cond.false.i8.i.i.i.i1734 br label %while.body.i.i21.i.i.i.i1735, !amdgpu.uniform !42 Flow3487: ; preds = %Flow3485, %cond.false.i8.i.i.i.i1734 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1738, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1735: ; preds = %while.body.i.i21.i.i.i.i1735.preheader, %while.body.i.i21.i.i.i.i1735 tail call void @llvm.amdgcn.s.sleep(i32 2) %2249 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i1736 = getelementptr inbounds nuw i32, ptr %2249, i64 %idxprom.i23.i.i.i.i.i1724, !amdgpu.uniform !42 %2250 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i1736 monotonic, align 4 %2251 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2250) %cmp.i.not.i.i23.i.i.i.i1737 = icmp eq i32 %2251, %port.sroa.37.0.i.i1728 br i1 %cmp.i.not.i.i23.i.i.i.i1737, label %Flow3485, label %while.body.i.i21.i.i.i.i1735, !amdgpu.uniform !42 Flow3485: ; preds = %while.body.i.i21.i.i.i.i1735 br label %Flow3487, !amdgpu.uniform !42 Flow3488: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1739, %while.cond.i.i.i.i1727 %2252 = phi i64 [ %add.i.i.i.i1742, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1739 ], [ poison, %while.cond.i.i.i.i1727 ] %2253 = phi i32 [ %conv.i.i26.i.i.i.i1740, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1739 ], [ poison, %while.cond.i.i.i.i1727 ] %2254 = phi ptr [ %scevgep2902, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1739 ], [ poison, %while.cond.i.i.i.i1727 ] %2255 = phi i64 [ %lsr.iv.next2908, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1739 ], [ poison, %while.cond.i.i.i.i1727 ] %2256 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1739 ], [ true, %while.cond.i.i.i.i1727 ] call void @llvm.amdgcn.end.cf.i64(i64 %2246) %2257 = call i64 @llvm.amdgcn.if.break.i64(i1 %2256, i64 %phi.broken3969) %2258 = call i1 @llvm.amdgcn.loop.i64(i64 %2257) br i1 %2258, label %cond.false.i.i.i1749, label %while.cond.i.i.i.i1727 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1738: ; preds = %Flow3487 fence acquire br i1 %cmp.i.i.i.i1730, label %if.then.i.i.i.i.i.i.i1743, label %Flow3484, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i1743: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1738 %sub.i.i.i.i.i.i.i1745 = sub nuw i64 %spec.select.i, %idx.0.i.i.i.i1729 %spec.select.i.i.i36.i.i.i.i1746 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i1745, i64 64) %2259 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %2260 = and i64 %spec.select.i.i.i36.i.i.i.i1746, 15 %2261 = sub i64 %spec.select.i.i.i36.i.i.i.i1746, %2260 %2262 = icmp ne i64 %2261, 0 br i1 %2262, label %loop-memcpy-expansion2201.preheader, label %Flow3483, !amdgpu.uniform !42 loop-memcpy-expansion2201.preheader: ; preds = %if.then.i.i.i.i.i.i.i1743 %arrayidx.i20.i35.i.i.i.i1747 = getelementptr %"struct.rpc::Buffer", ptr %2259, i64 %idxprom.i19.i.i.i.i.i1717 %arrayidx.i22.i38.i.i.i.i1748 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i1747, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2201, !amdgpu.uniform !42 Flow3483: ; preds = %Flow3482, %if.then.i.i.i.i.i.i.i1743 br label %loop-memcpy-residual-header2204, !amdgpu.uniform !42 loop-memcpy-expansion2201: ; preds = %loop-memcpy-expansion2201.preheader, %loop-memcpy-expansion2201 %loop-index2202 = phi i64 [ %2265, %loop-memcpy-expansion2201 ], [ 0, %loop-memcpy-expansion2201.preheader ] %scevgep2903 = getelementptr i8, ptr %lsr.iv2901, i64 %loop-index2202, !amdgpu.uniform !42 %2263 = load <4 x i32>, ptr %scevgep2903, align 1 %2264 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i1748, i64 %loop-index2202 store <4 x i32> %2263, ptr %2264, align 1 %2265 = add i64 %loop-index2202, 16 %2266 = icmp uge i64 %2265, %2261 br i1 %2266, label %Flow3482, label %loop-memcpy-expansion2201, !amdgpu.uniform !42 Flow3480: ; preds = %Flow3479, %loop-memcpy-residual-header2204 br label %Flow3484, !amdgpu.uniform !42 loop-memcpy-residual2203: ; preds = %loop-memcpy-residual2203.preheader, %loop-memcpy-residual2203 %residual-loop-index2205 = phi i64 [ %2268, %loop-memcpy-residual2203 ], [ 0, %loop-memcpy-residual2203.preheader ] %scevgep2913 = getelementptr i8, ptr %scevgep2912, i64 %residual-loop-index2205, !amdgpu.uniform !42 %2267 = load i8, ptr %scevgep2913, align 1 %scevgep2911 = getelementptr i8, ptr %scevgep2910, i64 %residual-loop-index2205 store i8 %2267, ptr %scevgep2911, align 1 %2268 = add i64 %residual-loop-index2205, 1 %2269 = icmp uge i64 %2268, %2260 br i1 %2269, label %Flow3479, label %loop-memcpy-residual2203, !amdgpu.uniform !42 Flow3479: ; preds = %loop-memcpy-residual2203 br label %Flow3480, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1739: ; preds = %Flow3484 %conv.i.i26.i.i.i.i1740 = xor i32 %port.sroa.37.0.i.i1728, 1 fence release %2270 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i1741 = getelementptr inbounds nuw i32, ptr %2270, i64 %idxprom.i23.i.i.i.i.i1724 store atomic i32 %conv.i.i26.i.i.i.i1740, ptr %arrayidx.i24.i29.i.i.i.i1741 monotonic, align 4 %add.i.i.i.i1742 = add i64 %idx.0.i.i.i.i1729, 64 %scevgep2902 = getelementptr i8, ptr %lsr.iv2901, i64 64 %lsr.iv.next2908 = add i64 %lsr.iv2907, -64 br label %Flow3488, !amdgpu.uniform !42 cond.false.i.i.i1749: ; preds = %Flow3488 %.lcssa4025 = phi i64 [ %2257, %Flow3488 ] %port.sroa.37.0.i.i1728.lcssa = phi i32 [ %port.sroa.37.0.i.i1728, %Flow3488 ] %.lcssa4024 = phi i32 [ %2243, %Flow3488 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4025) %2271 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa4024) %2272 = icmp ne i32 %2271, %port.sroa.37.0.i.i1728.lcssa %2273 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2272) %2274 = extractvalue { i1, i64 } %2273, 0 %2275 = extractvalue { i1, i64 } %2273, 1 br i1 %2274, label %while.body.i.i.i.i1750.preheader, label %Flow3477 while.body.i.i.i.i1750.preheader: ; preds = %cond.false.i.i.i1749 br label %while.body.i.i.i.i1750, !amdgpu.uniform !42 Flow3477: ; preds = %Flow3475, %cond.false.i.i.i1749 call void @llvm.amdgcn.end.cf.i64(i64 %2275) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit1771, !amdgpu.uniform !42 while.body.i.i.i.i1750: ; preds = %while.body.i.i.i.i1750.preheader, %while.body.i.i.i.i1750 %phi.broken3970 = phi i64 [ 0, %while.body.i.i.i.i1750.preheader ], [ %2279, %while.body.i.i.i.i1750 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %2276 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i1751 = getelementptr inbounds nuw i32, ptr %2276, i64 %idxprom.i23.i.i.i.i.i1724, !amdgpu.uniform !42 %2277 = load atomic i32, ptr %arrayidx.i.i.i8.i.i1751 monotonic, align 4 %2278 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2277) %cmp.i.not.i.i.i.i1752 = icmp eq i32 %2278, %port.sroa.37.0.i.i1728.lcssa %2279 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i1752, i64 %phi.broken3970) %2280 = call i1 @llvm.amdgcn.loop.i64(i64 %2279) br i1 %2280, label %Flow3475, label %while.body.i.i.i.i1750 Flow3475: ; preds = %while.body.i.i.i.i1750 %.lcssa4023 = phi i64 [ %2279, %while.body.i.i.i.i1750 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4023) br label %Flow3477, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit1771: ; preds = %Flow3477 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %2281 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4030, i1 true) %iszero.i.i.i.i.i13.i.i1754 = icmp ne i64 %.lcssa4030, 0 %cmp2.i.i.i.i14.i.i1755 = icmp eq i64 %2281, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i1756 = select i1 %iszero.i.i.i.i.i13.i.i1754, i1 %cmp2.i.i.i.i14.i.i1755, i1 false %2282 = and i32 %.lcssa4031, 31 %conv4.i.i.i19.i.i1760 = zext i1 %cmp.i.i.i.i15.i.i1756 to i32 %shl.i.i.i20.i.i1761 = shl nuw i32 %conv4.i.i.i19.i.i1760, %2282 %xor.i.i.i21.i.i1762 = xor i32 %shl.i.i.i20.i.i1761, -1 %2283 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2653, !amdgpu.uniform !42 2284: ; preds = %ComputeEnd2654 %div8.i.i.i16.i.i1757 = lshr i32 %.lcssa4031, 5 %idxprom.i.i.i17.i.i1758 = zext nneg i32 %div8.i.i.i16.i.i1757 to i64 %2285 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i1758 %sunkaddr3340 = getelementptr inbounds i8, ptr addrspace(1) %2285, i64 40 %2286 = atomicrmw and ptr addrspace(1) %sunkaddr3340, i32 %.lcssa4022 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2287, !amdgpu.uniform !42 2287: ; preds = %2284, %ComputeEnd2654 call void @llvm.amdgcn.end.cf.i64(i64 %3939) tail call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i1.i1780, !amdgpu.uniform !42 for.cond.i.i1.i1780: ; preds = %2287, %Flow3474 %2288 = phi i32 [ %2326, %Flow3474 ], [ poison, %2287 ] %2289 = phi i64 [ %2327, %Flow3474 ], [ poison, %2287 ] %2290 = phi i32 [ %2328, %Flow3474 ], [ poison, %2287 ] %retval.sroa.6.0.i.i.i1781 = phi i32 [ %2331, %Flow3474 ], [ undef, %2287 ] %retval.sroa.2.0.i.i.i1783 = phi i64 [ %2330, %Flow3474 ], [ undef, %2287 ] %retval.sroa.8.0.i.i.i1784 = phi i32 [ %2329, %Flow3474 ], [ undef, %2287 ] %index.0.i.i.i1785 = phi i32 [ %2333, %Flow3474 ], [ 0, %2287 ] %2291 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i1786 = icmp ult i32 %index.0.i.i.i1785, %2291 %spec.store.select.i.i.i1787 = select i1 %cmp.not.i.i.i1786, i32 %index.0.i.i.i1785, i32 0 %2292 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %2293 = and i32 %spec.store.select.i.i.i1787, 31 %2294 = lshr i64 %2292, %sh_prom.i.i.i.i %2295 = trunc i64 %2294 to i32 %conv4.i.i.i.i.i1791 = and i32 %2295, 1 %shl.i.i.i.i.i1792 = shl nuw i32 %conv4.i.i.i.i.i1791, %2293 %2296 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2657, !amdgpu.uniform !42 2297: ; preds = %ComputeEnd2658 %sunkaddr3341 = getelementptr inbounds i8, ptr addrspace(1) %3949, i64 40 %2298 = atomicrmw or ptr addrspace(1) %sunkaddr3341, i32 %.lcssa4016 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2299, !amdgpu.uniform !42 2299: ; preds = %2297, %ComputeEnd2658 %2300 = phi i32 [ %2298, %2297 ], [ poison, %ComputeEnd2658 ] call void @llvm.amdgcn.end.cf.i64(i64 %3958) %2301 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %2300) %2302 = or i32 %2301, %.lcssa4017 %shl5.i.i.i.i.i1793 = shl nuw i32 1, %2293 %and.i.i.i.i.i1794 = and i32 %shl5.i.i.i.i.i1793, %2302 %tobool3.i.i.i.i1795 = icmp ne i32 %and.i.i.i.i.i1794, 0 %2303 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i1795) %and.i.i.i.i.i.i1796 = and i64 %2303, %2292 %cmp.i.not.i.i.i1797 = icmp ne i64 %2292, %and.i.i.i.i.i.i1796 br i1 %cmp.i.not.i.i.i1797, label %if.then.i.i.i.i1798, label %Flow3473, !amdgpu.uniform !42 if.then.i.i.i.i1798: ; preds = %2299 fence syncscope("agent") acquire %2304 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %2305 = extractelement <2 x i64> %2304, i32 0 %2306 = inttoptr i64 %2305 to ptr %2307 = extractelement <2 x i64> %2304, i32 1 %2308 = inttoptr i64 %2307 to ptr %idxprom.i.i.i.i1799 = zext i32 %spec.store.select.i.i.i1787 to i64 %arrayidx.i.i.i.i1800 = getelementptr inbounds nuw i32, ptr %2306, i64 %idxprom.i.i.i.i1799, !amdgpu.uniform !42 %2309 = load atomic i32, ptr %arrayidx.i.i.i.i1800 monotonic, align 4 %2310 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2309) %arrayidx.i45.i.i.i1801 = getelementptr inbounds nuw i32, ptr %2308, i64 %idxprom.i.i.i.i1799, !amdgpu.uniform !42 %2311 = load atomic i32, ptr %arrayidx.i45.i.i.i1801 monotonic, align 4 %2312 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2311) %cmp.i46.not.i.i.i1802 = icmp ne i32 %2310, %2312 br i1 %cmp.i46.not.i.i.i1802, label %if.then12.i.i.i1803, label %Flow3471, !amdgpu.uniform !42 if.then12.i.i.i1803: ; preds = %if.then.i.i.i.i1798 fence syncscope("agent") release %2313 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %2292, i1 true) %iszero.i.i.i.i.i.i.i1804 = icmp ne i64 %2292, 0 %cmp2.i.i.i.i.i.i1805 = icmp eq i64 %2313, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i1806 = select i1 %iszero.i.i.i.i.i.i.i1804, i1 %cmp2.i.i.i.i.i.i1805, i1 false %conv4.i.i51.i.i.i1807 = zext i1 %cmp.i.i.i.i.i.i1806 to i32 %shl.i.i52.i.i.i1808 = shl nuw i32 %conv4.i.i51.i.i.i1807, %2293 %xor.i.i.i.i.i1809 = xor i32 %shl.i.i52.i.i.i1808, -1 %2314 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2662, !amdgpu.uniform !42 2315: ; preds = %ComputeEnd2663 %sunkaddr3342 = getelementptr inbounds i8, ptr addrspace(1) %3949, i64 40 %2316 = atomicrmw and ptr addrspace(1) %sunkaddr3342, i32 %.lcssa4018 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2317, !amdgpu.uniform !42 2317: ; preds = %2315, %ComputeEnd2663 call void @llvm.amdgcn.end.cf.i64(i64 %3976) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3471, !amdgpu.uniform !42 if.end14.i.i.i1869: ; preds = %Flow3471 %2318 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %2292, i1 true) %iszero.i.i.i.i.i.i1870 = icmp ne i64 %2292, 0 %cmp2.i.i.i.i.i1871 = icmp eq i64 %2318, %sh_prom.i.i.i.i %cmp.i.i.i.i.i1872 = select i1 %iszero.i.i.i.i.i.i1870, i1 %cmp2.i.i.i.i.i1871, i1 false %2319 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i1872) %2320 = extractvalue { i1, i64 } %2319, 0 %2321 = extractvalue { i1, i64 } %2319, 1 br i1 %2320, label %if.then16.i.i.i1874, label %if.end22.i.i.i1873 if.then16.i.i.i1874: ; preds = %if.end14.i.i.i1869 %2322 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i1875 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2322, i64 %idxprom.i.i.i.i1799, i32 1 store i32 1660944387, ptr %opcode.i.i.i1875, align 8, !tbaa !77 %arrayidx21.i.i.i1876 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2322, i64 %idxprom.i.i.i.i1799 store i64 %2292, ptr %arrayidx21.i.i.i1876, align 8, !tbaa !80 br label %if.end22.i.i.i1873, !amdgpu.uniform !42 Flow3472: ; preds = %if.end22.i.i.i1873, %Flow3471 %2323 = phi i32 [ %2310, %if.end22.i.i.i1873 ], [ %retval.sroa.8.0.i.i.i1784, %Flow3471 ] %2324 = phi i64 [ %2292, %if.end22.i.i.i1873 ], [ %retval.sroa.2.0.i.i.i1783, %Flow3471 ] %2325 = phi i32 [ %spec.store.select.i.i.i1787, %if.end22.i.i.i1873 ], [ %retval.sroa.6.0.i.i.i1781, %Flow3471 ] br label %cleanup26.i.i.i1810, !amdgpu.uniform !42 if.end22.i.i.i1873: ; preds = %if.then16.i.i.i1874, %if.end14.i.i.i1869 call void @llvm.amdgcn.end.cf.i64(i64 %2321) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3472, !amdgpu.uniform !42 Flow3473: ; preds = %cleanup26.i.i.i1810, %2299 %2326 = phi i32 [ %2325, %cleanup26.i.i.i1810 ], [ %2288, %2299 ] %2327 = phi i64 [ %2324, %cleanup26.i.i.i1810 ], [ %2289, %2299 ] %2328 = phi i32 [ %2323, %cleanup26.i.i.i1810 ], [ %2290, %2299 ] %2329 = phi i32 [ %2323, %cleanup26.i.i.i1810 ], [ %retval.sroa.8.0.i.i.i1784, %2299 ] %2330 = phi i64 [ %2324, %cleanup26.i.i.i1810 ], [ %retval.sroa.2.0.i.i.i1783, %2299 ] %2331 = phi i32 [ %2325, %cleanup26.i.i.i1810 ], [ %retval.sroa.6.0.i.i.i1781, %2299 ] %2332 = phi i1 [ %cmp.i46.not.i.i.i1802, %cleanup26.i.i.i1810 ], [ true, %2299 ] br i1 %2332, label %for.inc.i.i.i1815, label %Flow3474, !amdgpu.uniform !42 cleanup26.i.i.i1810: ; preds = %Flow3472 br label %Flow3473, !amdgpu.uniform !42 for.inc.i.i.i1815: ; preds = %Flow3473 %inc.i.i.i1820 = add i32 %spec.store.select.i.i.i1787, 1 br label %Flow3474, !amdgpu.uniform !42 Flow3474: ; preds = %for.inc.i.i.i1815, %Flow3473 %2333 = phi i32 [ %inc.i.i.i1820, %for.inc.i.i.i1815 ], [ poison, %Flow3473 ] %2334 = phi i1 [ false, %for.inc.i.i.i1815 ], [ true, %Flow3473 ] br i1 %2334, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1821, label %for.cond.i.i1.i1780, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1821: ; preds = %Flow3474 %.lcssa4021 = phi i32 [ %2326, %Flow3474 ] %.lcssa4020 = phi i64 [ %2327, %Flow3474 ] %.lcssa4019 = phi i32 [ %2328, %Flow3474 ] fence acquire %2335 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i1822 = shl i32 %.lcssa4021, 6 %idxprom.i19.i.i.i.i.i1823 = zext i32 %mul.i.i.i.i.i.i1822 to i64 %arrayidx.i20.i.i.i.i.i1824 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %2335, i64 %idxprom.i19.i.i.i.i.i1823 %arrayidx.i22.i.i.i.i.i1825 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i1824, i64 %sh_prom.i.i.i.i store i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.35 to ptr), i64 10) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.35 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i1825, align 8, !tbaa !82 br i1 %1215, label %loop-memcpy-expansion2375.preheader, label %Flow3470, !amdgpu.uniform !42 loop-memcpy-expansion2375.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1821 %2336 = add nuw nsw i64 %75, 8 %scevgep2897 = getelementptr i8, ptr %2335, i64 %2336 %2337 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1823, 6 %scevgep2898 = getelementptr i8, ptr %scevgep2897, i64 %2337 br label %loop-memcpy-expansion2375, !amdgpu.uniform !42 Flow3470: ; preds = %Flow3469, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1821 br label %loop-memcpy-residual-header2378, !amdgpu.uniform !42 loop-memcpy-expansion2375: ; preds = %loop-memcpy-expansion2375.preheader, %loop-memcpy-expansion2375 %loop-index2376 = phi i64 [ %2340, %loop-memcpy-expansion2375 ], [ 0, %loop-memcpy-expansion2375.preheader ] %2338 = getelementptr i8, ptr addrspace(4) @.str.35, i64 %loop-index2376, !amdgpu.uniform !42 %2339 = load <4 x i32>, ptr addrspace(4) %2338, align 1 %scevgep2899 = getelementptr i8, ptr %scevgep2898, i64 %loop-index2376 store <4 x i32> %2339, ptr %scevgep2899, align 1 %2340 = add i64 %loop-index2376, 16 %2341 = icmp uge i64 %2340, %1214 br i1 %2341, label %Flow3469, label %loop-memcpy-expansion2375, !amdgpu.uniform !42 Flow3467: ; preds = %Flow3465, %Flow3466 %2342 = phi i64 [ %2934, %Flow3465 ], [ %2931, %Flow3466 ] br label %post-loop-memcpy-expansion2374, !amdgpu.uniform !42 loop-memcpy-residual2377: ; preds = %loop-memcpy-residual2377.preheader, %loop-memcpy-residual2377 %residual-loop-index2379 = phi i64 [ %2344, %loop-memcpy-residual2377 ], [ 0, %loop-memcpy-residual2377.preheader ] %scevgep2896 = getelementptr i8, ptr addrspace(4) @.str.35, i64 %residual-loop-index2379, !amdgpu.uniform !42 %2343 = load i8, ptr addrspace(4) %scevgep2896, align 1 %scevgep2895 = getelementptr i8, ptr %scevgep2894, i64 %residual-loop-index2379 store i8 %2343, ptr %scevgep2895, align 1 %2344 = add i64 %residual-loop-index2379, 1 %2345 = icmp uge i64 %2344, %1213 br i1 %2345, label %Flow3465, label %loop-memcpy-residual2377, !amdgpu.uniform !42 Flow3465: ; preds = %loop-memcpy-residual2377 br label %Flow3467, !amdgpu.uniform !42 post-loop-memcpy-expansion2374: ; preds = %Flow3467 %tobool.not.i.i.i.i.i.i1828 = icmp eq i32 %.lcssa4019, 0 %conv.i.i.i.i.i.i1829 = zext i1 %tobool.not.i.i.i.i.i.i1828 to i32 fence release %2346 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i1830 = zext i32 %.lcssa4021 to i64 %arrayidx.i24.i.i.i.i.i1831 = getelementptr inbounds nuw i32, ptr %2346, i64 %idxprom.i23.i.i.i.i.i1830 store atomic i32 %conv.i.i.i.i.i.i1829, ptr %arrayidx.i24.i.i.i.i.i1831 monotonic, align 4 %2347 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i1832 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2347, i64 %idxprom.i23.i.i.i.i.i1830, !amdgpu.uniform !42 %2348 = load i64, ptr %arrayidx.i.i5.i.i1832, align 8, !tbaa !80 br label %while.cond.i.i.i.i1833, !amdgpu.uniform !42 while.cond.i.i.i.i1833: ; preds = %post-loop-memcpy-expansion2374, %Flow3464 %phi.broken3971 = phi i64 [ 0, %post-loop-memcpy-expansion2374 ], [ %2365, %Flow3464 ] %lsr.iv2886 = phi i64 [ %2363, %Flow3464 ], [ -46, %post-loop-memcpy-expansion2374 ] %lsr.iv2881 = phi ptr addrspace(4) [ %2362, %Flow3464 ], [ getelementptr (i8, ptr addrspace(4) @.str.35, i64 56), %post-loop-memcpy-expansion2374 ] %port.sroa.37.0.i.i1834 = phi i32 [ %2361, %Flow3464 ], [ %conv.i.i.i.i.i.i1829, %post-loop-memcpy-expansion2374 ] %idx.0.i.i.i.i1835 = phi i64 [ %2360, %Flow3464 ], [ 56, %post-loop-memcpy-expansion2374 ] %cmp.i.i.i.i1836 = icmp ult i64 %idx.0.i.i.i.i1835, sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.35 to ptr), i64 10) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.35 to ptr) to i64)) %2349 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i1836) %and.i.i.i.i6.i.i1837 = and i64 %2349, %2348 %tobool.not.i.i.i.i1838 = icmp ne i64 %and.i.i.i.i6.i.i1837, 0 %2350 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i1839 = getelementptr inbounds nuw i32, ptr %2350, i64 %idxprom.i23.i.i.i.i.i1830, !amdgpu.uniform !42 %2351 = load atomic i32, ptr %arrayidx.i22.i.i.i1839 monotonic, align 4 %2352 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i1838) %2353 = extractvalue { i1, i64 } %2352, 0 %2354 = extractvalue { i1, i64 } %2352, 1 br i1 %2353, label %cond.false.i8.i.i.i.i1840, label %Flow3464 cond.false.i8.i.i.i.i1840: ; preds = %while.cond.i.i.i.i1833 %2355 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2351) %2356 = icmp ne i32 %2355, %port.sroa.37.0.i.i1834 br i1 %2356, label %while.body.i.i21.i.i.i.i1841.preheader, label %Flow3463, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1841.preheader: ; preds = %cond.false.i8.i.i.i.i1840 br label %while.body.i.i21.i.i.i.i1841, !amdgpu.uniform !42 Flow3463: ; preds = %Flow3462, %cond.false.i8.i.i.i.i1840 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1844, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1841: ; preds = %while.body.i.i21.i.i.i.i1841.preheader, %while.body.i.i21.i.i.i.i1841 tail call void @llvm.amdgcn.s.sleep(i32 2) %2357 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i1842 = getelementptr inbounds nuw i32, ptr %2357, i64 %idxprom.i23.i.i.i.i.i1830, !amdgpu.uniform !42 %2358 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i1842 monotonic, align 4 %2359 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2358) %cmp.i.not.i.i23.i.i.i.i1843 = icmp eq i32 %2359, %port.sroa.37.0.i.i1834 br i1 %cmp.i.not.i.i23.i.i.i.i1843, label %Flow3462, label %while.body.i.i21.i.i.i.i1841, !amdgpu.uniform !42 Flow3462: ; preds = %while.body.i.i21.i.i.i.i1841 br label %Flow3463, !amdgpu.uniform !42 Flow3464: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1845, %while.cond.i.i.i.i1833 %2360 = phi i64 [ %add.i.i.i.i1848, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1845 ], [ poison, %while.cond.i.i.i.i1833 ] %2361 = phi i32 [ %conv.i.i26.i.i.i.i1846, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1845 ], [ poison, %while.cond.i.i.i.i1833 ] %2362 = phi ptr addrspace(4) [ %scevgep2882, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1845 ], [ poison, %while.cond.i.i.i.i1833 ] %2363 = phi i64 [ %lsr.iv.next2887, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1845 ], [ poison, %while.cond.i.i.i.i1833 ] %2364 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1845 ], [ true, %while.cond.i.i.i.i1833 ] call void @llvm.amdgcn.end.cf.i64(i64 %2354) %2365 = call i64 @llvm.amdgcn.if.break.i64(i1 %2364, i64 %phi.broken3971) %2366 = call i1 @llvm.amdgcn.loop.i64(i64 %2365) br i1 %2366, label %cond.false.i.i.i1855, label %while.cond.i.i.i.i1833 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1844: ; preds = %Flow3463 fence acquire br i1 %cmp.i.i.i.i1836, label %if.then.i.i.i.i.i.i.i1849, label %Flow3461, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i1849: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1844 %sub.i.i.i.i.i.i.i1851 = sub nuw i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.35 to ptr), i64 10) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.35 to ptr) to i64)), %idx.0.i.i.i.i1835 %spec.select.i.i.i36.i.i.i.i1852 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i1851, i64 64) %2367 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %2368 = and i64 %spec.select.i.i.i36.i.i.i.i1852, 15 %2369 = sub i64 %spec.select.i.i.i36.i.i.i.i1852, %2368 %2370 = icmp ne i64 %2369, 0 br i1 %2370, label %loop-memcpy-expansion2423.preheader, label %Flow3460, !amdgpu.uniform !42 loop-memcpy-expansion2423.preheader: ; preds = %if.then.i.i.i.i.i.i.i1849 %arrayidx.i20.i35.i.i.i.i1853 = getelementptr %"struct.rpc::Buffer", ptr %2367, i64 %idxprom.i19.i.i.i.i.i1823 %arrayidx.i22.i38.i.i.i.i1854 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i1853, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2423, !amdgpu.uniform !42 Flow3460: ; preds = %Flow3459, %if.then.i.i.i.i.i.i.i1849 br label %loop-memcpy-residual-header2426, !amdgpu.uniform !42 loop-memcpy-expansion2423: ; preds = %loop-memcpy-expansion2423.preheader, %loop-memcpy-expansion2423 %loop-index2424 = phi i64 [ %2373, %loop-memcpy-expansion2423 ], [ 0, %loop-memcpy-expansion2423.preheader ] %scevgep2883 = getelementptr i8, ptr addrspace(4) %lsr.iv2881, i64 %loop-index2424, !amdgpu.uniform !42 %2371 = load <4 x i32>, ptr addrspace(4) %scevgep2883, align 1 %2372 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i1854, i64 %loop-index2424 store <4 x i32> %2371, ptr %2372, align 1 %2373 = add i64 %loop-index2424, 16 %2374 = icmp uge i64 %2373, %2369 br i1 %2374, label %Flow3459, label %loop-memcpy-expansion2423, !amdgpu.uniform !42 Flow3458: ; preds = %Flow3457, %loop-memcpy-residual-header2426 br label %Flow3461, !amdgpu.uniform !42 loop-memcpy-residual2425: ; preds = %loop-memcpy-residual2425.preheader, %loop-memcpy-residual2425 %residual-loop-index2427 = phi i64 [ %2376, %loop-memcpy-residual2425 ], [ 0, %loop-memcpy-residual2425.preheader ] %scevgep2892 = getelementptr i8, ptr addrspace(4) %scevgep2891, i64 %residual-loop-index2427, !amdgpu.uniform !42 %2375 = load i8, ptr addrspace(4) %scevgep2892, align 1 %scevgep2890 = getelementptr i8, ptr %scevgep2889, i64 %residual-loop-index2427 store i8 %2375, ptr %scevgep2890, align 1 %2376 = add i64 %residual-loop-index2427, 1 %2377 = icmp uge i64 %2376, %2368 br i1 %2377, label %Flow3457, label %loop-memcpy-residual2425, !amdgpu.uniform !42 Flow3457: ; preds = %loop-memcpy-residual2425 br label %Flow3458, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1845: ; preds = %Flow3461 %conv.i.i26.i.i.i.i1846 = xor i32 %port.sroa.37.0.i.i1834, 1 fence release %2378 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i1847 = getelementptr inbounds nuw i32, ptr %2378, i64 %idxprom.i23.i.i.i.i.i1830 store atomic i32 %conv.i.i26.i.i.i.i1846, ptr %arrayidx.i24.i29.i.i.i.i1847 monotonic, align 4 %add.i.i.i.i1848 = add i64 %idx.0.i.i.i.i1835, 64 %scevgep2882 = getelementptr i8, ptr addrspace(4) %lsr.iv2881, i64 64 %lsr.iv.next2887 = add i64 %lsr.iv2886, -64 br label %Flow3464, !amdgpu.uniform !42 cond.false.i.i.i1855: ; preds = %Flow3464 %.lcssa4015 = phi i64 [ %2365, %Flow3464 ] %port.sroa.37.0.i.i1834.lcssa = phi i32 [ %port.sroa.37.0.i.i1834, %Flow3464 ] %.lcssa4014 = phi i32 [ %2351, %Flow3464 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4015) %2379 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa4014) %2380 = icmp ne i32 %2379, %port.sroa.37.0.i.i1834.lcssa %2381 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2380) %2382 = extractvalue { i1, i64 } %2381, 0 %2383 = extractvalue { i1, i64 } %2381, 1 br i1 %2382, label %while.body.i.i.i.i1856.preheader, label %Flow3456 while.body.i.i.i.i1856.preheader: ; preds = %cond.false.i.i.i1855 br label %while.body.i.i.i.i1856, !amdgpu.uniform !42 Flow3456: ; preds = %Flow3455, %cond.false.i.i.i1855 call void @llvm.amdgcn.end.cf.i64(i64 %2383) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1877, !amdgpu.uniform !42 while.body.i.i.i.i1856: ; preds = %while.body.i.i.i.i1856.preheader, %while.body.i.i.i.i1856 %phi.broken3972 = phi i64 [ 0, %while.body.i.i.i.i1856.preheader ], [ %2387, %while.body.i.i.i.i1856 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %2384 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i1857 = getelementptr inbounds nuw i32, ptr %2384, i64 %idxprom.i23.i.i.i.i.i1830, !amdgpu.uniform !42 %2385 = load atomic i32, ptr %arrayidx.i.i.i8.i.i1857 monotonic, align 4 %2386 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2385) %cmp.i.not.i.i.i.i1858 = icmp eq i32 %2386, %port.sroa.37.0.i.i1834.lcssa %2387 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i1858, i64 %phi.broken3972) %2388 = call i1 @llvm.amdgcn.loop.i64(i64 %2387) br i1 %2388, label %Flow3455, label %while.body.i.i.i.i1856 Flow3455: ; preds = %while.body.i.i.i.i1856 %.lcssa4013 = phi i64 [ %2387, %while.body.i.i.i.i1856 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4013) br label %Flow3456, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1877: ; preds = %Flow3456 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %2389 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4020, i1 true) %iszero.i.i.i.i.i13.i.i1860 = icmp ne i64 %.lcssa4020, 0 %cmp2.i.i.i.i14.i.i1861 = icmp eq i64 %2389, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i1862 = select i1 %iszero.i.i.i.i.i13.i.i1860, i1 %cmp2.i.i.i.i14.i.i1861, i1 false %2390 = and i32 %.lcssa4021, 31 %conv4.i.i.i19.i.i1866 = zext i1 %cmp.i.i.i.i15.i.i1862 to i32 %shl.i.i.i20.i.i1867 = shl nuw i32 %conv4.i.i.i19.i.i1866, %2390 %xor.i.i.i21.i.i1868 = xor i32 %shl.i.i.i20.i.i1867, -1 %2391 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2666, !amdgpu.uniform !42 2392: ; preds = %ComputeEnd2667 %div8.i.i.i16.i.i1863 = lshr i32 %.lcssa4021, 5 %idxprom.i.i.i17.i.i1864 = zext nneg i32 %div8.i.i.i16.i.i1863 to i64 %2393 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i1864 %sunkaddr3343 = getelementptr inbounds i8, ptr addrspace(1) %2393, i64 40 %2394 = atomicrmw and ptr addrspace(1) %sunkaddr3343, i32 %.lcssa4012 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2395, !amdgpu.uniform !42 2395: ; preds = %2392, %ComputeEnd2667 call void @llvm.amdgcn.end.cf.i64(i64 %3993) tail call void @llvm.amdgcn.wave.barrier() call void @llvm.lifetime.start.p5(ptr addrspace(5) %buffer.i.i.i) #34, !noalias !121 %cmp7.i.i.i.i.i.i92.i = icmp ne i32 %RHS, 0 %2396 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp7.i.i.i.i.i.i92.i) %2397 = extractvalue { i1, i64 } %2396, 0 %2398 = extractvalue { i1, i64 } %2396, 1 br i1 %2397, label %while.body.lr.ph.i.i.i.i.i.i93.i, label %Flow3454 while.body.lr.ph.i.i.i.i.i.i93.i: ; preds = %2395 %retval.0.i.i.i.i.i.i94.i = tail call noundef i32 @llvm.abs.i32(i32 %RHS, i1 false) br label %while.body.i.i.i.i.i.i95.i, !amdgpu.uniform !42 Flow3454: ; preds = %Flow3453, %2395 %2399 = phi i1 [ %cmp.i.i.i.i.i.i.i.i104.i.lcssa, %Flow3453 ], [ false, %2395 ] %2400 = phi i64 [ %writer.sroa.10.1.i.i.i.i109.i.lcssa, %Flow3453 ], [ 0, %2395 ] call void @llvm.amdgcn.end.cf.i64(i64 %2398) br label %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i112.i, !amdgpu.uniform !42 while.body.i.i.i.i.i.i95.i: ; preds = %while.body.lr.ph.i.i.i.i.i.i93.i, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i108.i %phi.broken3973 = phi i64 [ 0, %while.body.lr.ph.i.i.i.i.i.i93.i ], [ %2468, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i108.i ] %writer.sroa.10.0.i.i.i.i96.i = phi i64 [ %writer.sroa.10.1.i.i.i.i109.i, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i108.i ], [ 0, %while.body.lr.ph.i.i.i.i.i.i93.i ] %value.addr.09.i.i.i.i.i.i97.i = phi i32 [ %div.i.i.i.i.i.i.i100.i, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i108.i ], [ %retval.0.i.i.i.i.i.i94.i, %while.body.lr.ph.i.i.i.i.i.i93.i ] br label %NodeBlock3400, !amdgpu.uniform !42 NodeBlock3400: ; preds = %while.body.i.i.i.i.i.i95.i %div.i.i.i.i.i.i.i100.i = udiv i32 %value.addr.09.i.i.i.i.i.i97.i, 10 %.neg1 = mul nuw nsw i32 %div.i.i.i.i.i.i.i100.i, 246 %rem.i.i.i.i.i.i.i98.i.decomposed = add nuw nsw i32 %.neg1, %value.addr.09.i.i.i.i.i.i97.i %conv.i.i.i.i.i.i.i99.i = trunc i32 %rem.i.i.i.i.i.i.i98.i.decomposed to i8 %2401 = zext i8 %conv.i.i.i.i.i.i.i99.i to i16 %Pivot3401 = icmp sge i16 %2401, 5 %2402 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3401) %2403 = extractvalue { i1, i64 } %2402, 0 %2404 = extractvalue { i1, i64 } %2402, 1 br i1 %2403, label %NodeBlock3398, label %Flow3452 NodeBlock3398: ; preds = %NodeBlock3400 %Pivot3399 = icmp sge i16 %2401, 7 %2405 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3399) %2406 = extractvalue { i1, i64 } %2405, 0 %2407 = extractvalue { i1, i64 } %2405, 1 br i1 %2406, label %NodeBlock3396, label %Flow3443 NodeBlock3396: ; preds = %NodeBlock3398 %Pivot3397 = icmp sge i16 %2401, 8 %2408 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3397) %2409 = extractvalue { i1, i64 } %2408, 0 %2410 = extractvalue { i1, i64 } %2408, 1 br i1 %2409, label %NodeBlock3394, label %Flow3439 NodeBlock3394: ; preds = %NodeBlock3396 %Pivot3395 = icmp sge i16 %2401, 9 %2411 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3395) %2412 = extractvalue { i1, i64 } %2411, 0 %2413 = extractvalue { i1, i64 } %2411, 1 br i1 %2412, label %sw.bb9.i.i.i.i.i.i.i.i101.i, label %Flow3437 Flow3443: ; preds = %Flow3440, %NodeBlock3398 %2414 = phi i8 [ %2458, %Flow3440 ], [ poison, %NodeBlock3398 ] %2415 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %2407) %2416 = extractvalue { i1, i64 } %2415, 0 %2417 = extractvalue { i1, i64 } %2415, 1 br i1 %2416, label %NodeBlock3392, label %Flow3444 NodeBlock3392: ; preds = %Flow3443 %Pivot3393 = icmp sge i16 %2401, 6 %2418 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3393) %2419 = extractvalue { i1, i64 } %2418, 0 %2420 = extractvalue { i1, i64 } %2418, 1 br i1 %2419, label %sw.bb6.i.i.i.i.i.i.i.i157.i, label %Flow3441 Flow3452: ; preds = %Flow3444, %NodeBlock3400 %2421 = phi i8 [ %2460, %Flow3444 ], [ poison, %NodeBlock3400 ] %2422 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %2404) %2423 = extractvalue { i1, i64 } %2422, 0 %2424 = extractvalue { i1, i64 } %2422, 1 br i1 %2423, label %NodeBlock3390, label %if.then.i.i.i.i.i.i.i102.i NodeBlock3390: ; preds = %Flow3452 %Pivot3391 = icmp sge i16 %2401, 3 %2425 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3391) %2426 = extractvalue { i1, i64 } %2425, 0 %2427 = extractvalue { i1, i64 } %2425, 1 br i1 %2426, label %NodeBlock3388, label %Flow3450 NodeBlock3388: ; preds = %NodeBlock3390 %Pivot3389 = icmp sge i16 %2401, 4 %2428 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3389) %2429 = extractvalue { i1, i64 } %2428, 0 %2430 = extractvalue { i1, i64 } %2428, 1 br i1 %2429, label %sw.bb4.i.i.i.i.i.i.i.i159.i, label %Flow3445 Flow3450: ; preds = %Flow3446, %NodeBlock3390 %2431 = phi i8 [ %2461, %Flow3446 ], [ poison, %NodeBlock3390 ] %2432 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %2427) %2433 = extractvalue { i1, i64 } %2432, 0 %2434 = extractvalue { i1, i64 } %2432, 1 br i1 %2433, label %NodeBlock3386, label %Flow3451 NodeBlock3386: ; preds = %Flow3450 %Pivot3387 = icmp sge i16 %2401, 2 %2435 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3387) %2436 = extractvalue { i1, i64 } %2435, 0 %2437 = extractvalue { i1, i64 } %2435, 1 br i1 %2436, label %sw.bb2.i.i.i.i.i.i.i.i161.i, label %Flow3448 Flow3448: ; preds = %sw.bb2.i.i.i.i.i.i.i.i161.i, %NodeBlock3386 %2438 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %2437) %2439 = extractvalue { i1, i64 } %2438, 0 %2440 = extractvalue { i1, i64 } %2438, 1 br i1 %2439, label %LeafBlock3384, label %Flow3449 LeafBlock3384: ; preds = %Flow3448 %SwitchLeaf3385 = icmp eq i16 %2401, 1 %2441 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %SwitchLeaf3385) %2442 = extractvalue { i1, i64 } %2441, 0 %2443 = extractvalue { i1, i64 } %2441, 1 br i1 %2442, label %sw.bb1.i.i.i.i.i.i.i.i162.i, label %Flow3447 sw.bb1.i.i.i.i.i.i.i.i162.i: ; preds = %LeafBlock3384 br label %Flow3447, !amdgpu.uniform !42 sw.bb2.i.i.i.i.i.i.i.i161.i: ; preds = %NodeBlock3386 br label %Flow3448, !amdgpu.uniform !42 Flow3445: ; preds = %sw.bb4.i.i.i.i.i.i.i.i159.i, %NodeBlock3388 %2444 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %2430) %2445 = extractvalue { i1, i64 } %2444, 0 %2446 = extractvalue { i1, i64 } %2444, 1 br i1 %2445, label %sw.bb3.i.i.i.i.i.i.i.i160.i, label %Flow3446 sw.bb3.i.i.i.i.i.i.i.i160.i: ; preds = %Flow3445 br label %Flow3446, !amdgpu.uniform !42 sw.bb4.i.i.i.i.i.i.i.i159.i: ; preds = %NodeBlock3388 br label %Flow3445, !amdgpu.uniform !42 Flow3441: ; preds = %sw.bb6.i.i.i.i.i.i.i.i157.i, %NodeBlock3392 %2447 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %2420) %2448 = extractvalue { i1, i64 } %2447, 0 %2449 = extractvalue { i1, i64 } %2447, 1 br i1 %2448, label %sw.bb5.i.i.i.i.i.i.i.i158.i, label %Flow3442 sw.bb5.i.i.i.i.i.i.i.i158.i: ; preds = %Flow3441 br label %Flow3442, !amdgpu.uniform !42 sw.bb6.i.i.i.i.i.i.i.i157.i: ; preds = %NodeBlock3392 br label %Flow3441, !amdgpu.uniform !42 Flow3439: ; preds = %Flow3438, %NodeBlock3396 %2450 = phi i8 [ %2457, %Flow3438 ], [ poison, %NodeBlock3396 ] %2451 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %2410) %2452 = extractvalue { i1, i64 } %2451, 0 %2453 = extractvalue { i1, i64 } %2451, 1 br i1 %2452, label %sw.bb7.i.i.i.i.i.i.i.i156.i, label %Flow3440 sw.bb7.i.i.i.i.i.i.i.i156.i: ; preds = %Flow3439 br label %Flow3440, !amdgpu.uniform !42 Flow3437: ; preds = %sw.bb9.i.i.i.i.i.i.i.i101.i, %NodeBlock3394 %2454 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %2413) %2455 = extractvalue { i1, i64 } %2454, 0 %2456 = extractvalue { i1, i64 } %2454, 1 br i1 %2455, label %sw.bb8.i.i.i.i.i.i.i.i155.i, label %Flow3438 sw.bb8.i.i.i.i.i.i.i.i155.i: ; preds = %Flow3437 br label %Flow3438, !amdgpu.uniform !42 sw.bb9.i.i.i.i.i.i.i.i101.i: ; preds = %NodeBlock3394 br label %Flow3437, !amdgpu.uniform !42 Flow3438: ; preds = %sw.bb8.i.i.i.i.i.i.i.i155.i, %Flow3437 %2457 = phi i8 [ 56, %sw.bb8.i.i.i.i.i.i.i.i155.i ], [ 57, %Flow3437 ] call void @llvm.amdgcn.end.cf.i64(i64 %2456) br label %Flow3439, !amdgpu.uniform !42 Flow3440: ; preds = %sw.bb7.i.i.i.i.i.i.i.i156.i, %Flow3439 %2458 = phi i8 [ 55, %sw.bb7.i.i.i.i.i.i.i.i156.i ], [ %2450, %Flow3439 ] call void @llvm.amdgcn.end.cf.i64(i64 %2453) br label %Flow3443, !amdgpu.uniform !42 Flow3442: ; preds = %sw.bb5.i.i.i.i.i.i.i.i158.i, %Flow3441 %2459 = phi i8 [ 53, %sw.bb5.i.i.i.i.i.i.i.i158.i ], [ 54, %Flow3441 ] call void @llvm.amdgcn.end.cf.i64(i64 %2449) br label %Flow3444, !amdgpu.uniform !42 Flow3444: ; preds = %Flow3442, %Flow3443 %2460 = phi i8 [ %2459, %Flow3442 ], [ %2414, %Flow3443 ] call void @llvm.amdgcn.end.cf.i64(i64 %2417) br label %Flow3452, !amdgpu.uniform !42 Flow3446: ; preds = %sw.bb3.i.i.i.i.i.i.i.i160.i, %Flow3445 %2461 = phi i8 [ 51, %sw.bb3.i.i.i.i.i.i.i.i160.i ], [ 52, %Flow3445 ] call void @llvm.amdgcn.end.cf.i64(i64 %2446) br label %Flow3450, !amdgpu.uniform !42 Flow3447: ; preds = %sw.bb1.i.i.i.i.i.i.i.i162.i, %LeafBlock3384 %2462 = phi i8 [ 49, %sw.bb1.i.i.i.i.i.i.i.i162.i ], [ 48, %LeafBlock3384 ] call void @llvm.amdgcn.end.cf.i64(i64 %2443) br label %Flow3449, !amdgpu.uniform !42 Flow3449: ; preds = %Flow3447, %Flow3448 %2463 = phi i8 [ %2462, %Flow3447 ], [ 50, %Flow3448 ] call void @llvm.amdgcn.end.cf.i64(i64 %2440) br label %Flow3451, !amdgpu.uniform !42 Flow3451: ; preds = %Flow3449, %Flow3450 %2464 = phi i8 [ %2463, %Flow3449 ], [ %2431, %Flow3450 ] call void @llvm.amdgcn.end.cf.i64(i64 %2434) br label %if.then.i.i.i.i.i.i.i102.i, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i102.i: ; preds = %Flow3452, %Flow3451 %retval.0.i.i.i.i.i.i.i.i103.i = phi i8 [ %2421, %Flow3452 ], [ %2464, %Flow3451 ] call void @llvm.amdgcn.end.cf.i64(i64 %2424) %cmp.i.i.i.i.i.i.i.i104.i = icmp eq i64 %writer.sroa.10.0.i.i.i.i96.i, 11 %cmp.i.i.i.i.i.i.i.i104.i.inv = xor i1 %cmp.i.i.i.i.i.i.i.i104.i, true br i1 %cmp.i.i.i.i.i.i.i.i104.i.inv, label %if.then3.i.i.i.i.i.i.i105.i, label %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i108.i, !amdgpu.uniform !42 if.then3.i.i.i.i.i.i.i105.i: ; preds = %if.then.i.i.i.i.i.i.i102.i %2465 = trunc i64 %writer.sroa.10.0.i.i.i.i96.i to i32 %2466 = xor i32 %2465, -1 %2467 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i, i32 %2466 %arrayidx.i.i.i.i.i.i.i.i106.i2742 = getelementptr i8, ptr addrspace(5) %2467, i32 11 %inc.i.i.i.i.i.i.i107.i = add i64 %writer.sroa.10.0.i.i.i.i96.i, 1 store i8 %retval.0.i.i.i.i.i.i.i.i103.i, ptr addrspace(5) %arrayidx.i.i.i.i.i.i.i.i106.i2742, align 1, !tbaa !57, !noalias !121 br label %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i108.i, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i108.i: ; preds = %if.then3.i.i.i.i.i.i.i105.i, %if.then.i.i.i.i.i.i.i102.i %writer.sroa.10.1.i.i.i.i109.i = phi i64 [ %inc.i.i.i.i.i.i.i107.i, %if.then3.i.i.i.i.i.i.i105.i ], [ 11, %if.then.i.i.i.i.i.i.i102.i ] %cmp.i.i.i.i.i.i110.i = icmp ult i32 %value.addr.09.i.i.i.i.i.i97.i, 10 %.not.i.i.i.i.i.i111.i = or i1 %cmp.i.i.i.i.i.i.i.i104.i, %cmp.i.i.i.i.i.i110.i %2468 = call i64 @llvm.amdgcn.if.break.i64(i1 %.not.i.i.i.i.i.i111.i, i64 %phi.broken3973) %2469 = call i1 @llvm.amdgcn.loop.i64(i64 %2468) br i1 %2469, label %Flow3453, label %while.body.i.i.i.i.i.i95.i Flow3453: ; preds = %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i108.i %writer.sroa.10.1.i.i.i.i109.i.lcssa = phi i64 [ %writer.sroa.10.1.i.i.i.i109.i, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i108.i ] %.lcssa4011 = phi i64 [ %2468, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i108.i ] %cmp.i.i.i.i.i.i.i.i104.i.lcssa = phi i1 [ %cmp.i.i.i.i.i.i.i.i104.i, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i108.i ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4011) br label %Flow3454, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i112.i: ; preds = %Flow3454 %cmp.i19.i.i.i.i115.i = icmp ne i64 %2400, 0 %or.cond.not.i.i.i.i116.i = select i1 %2399, i1 true, i1 %cmp.i19.i.i.i.i115.i %or.cond.not.i.i.i.i116.i.inv = xor i1 %or.cond.not.i.i.i.i116.i, true %2470 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %or.cond.not.i.i.i.i116.i.inv) %2471 = extractvalue { i1, i64 } %2470, 0 %2472 = extractvalue { i1, i64 } %2470, 1 br i1 %2471, label %if.then3.i.i.lr.ph.i.i.i.i117.i, label %while.end.i.i.i.i.i119.i if.then3.i.i.lr.ph.i.i.i.i117.i: ; preds = %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i112.i %arrayidx.i.i.i.i.i.i.i118.i = getelementptr inbounds nuw i8, ptr addrspace(5) %buffer.i.i.i, i32 10 store i8 48, ptr addrspace(5) %arrayidx.i.i.i.i.i.i.i118.i, align 2, !tbaa !57, !noalias !121 br label %while.end.i.i.i.i.i119.i, !amdgpu.uniform !42 while.end.i.i.i.i.i119.i: ; preds = %if.then3.i.i.lr.ph.i.i.i.i117.i, %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i112.i %writer.sroa.10.4.i.i.i.i120.i = phi i64 [ 1, %if.then3.i.i.lr.ph.i.i.i.i117.i ], [ %2400, %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i112.i ] call void @llvm.amdgcn.end.cf.i64(i64 %2472) %cmp4.i.i.i.i.i121.i = icmp sgt i32 %RHS, -1 %brmerge.i.i.i.i.i122.i = or i1 %cmp4.i.i.i.i.i121.i, %2399 %brmerge.i.i.i.i.i122.i.inv = xor i1 %brmerge.i.i.i.i.i122.i, true %2473 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %brmerge.i.i.i.i.i122.i.inv) %2474 = extractvalue { i1, i64 } %2473, 0 %2475 = extractvalue { i1, i64 } %2473, 1 br i1 %2474, label %if.then.i14.i.i.i.i.i123.i, label %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i128.i if.then.i14.i.i.i.i.i123.i: ; preds = %while.end.i.i.i.i.i119.i %cmp.i.i17.i.i.i.i.i124.i = icmp ne i64 %writer.sroa.10.4.i.i.i.i120.i, 11 %2476 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i17.i.i.i.i.i124.i) %2477 = extractvalue { i1, i64 } %2476, 0 %2478 = extractvalue { i1, i64 } %2476, 1 br i1 %2477, label %if.then3.i18.i.i.i.i.i125.i, label %Flow3436 if.then3.i18.i.i.i.i.i125.i: ; preds = %if.then.i14.i.i.i.i.i123.i %2479 = trunc i64 %writer.sroa.10.4.i.i.i.i120.i to i32 %2480 = xor i32 %2479, -1 %2481 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i, i32 %2480 %arrayidx.i.i19.i.i.i.i.i126.i2743 = getelementptr i8, ptr addrspace(5) %2481, i32 11 %inc.i20.i.i.i.i.i127.i = add i64 %writer.sroa.10.4.i.i.i.i120.i, 1 store i8 45, ptr addrspace(5) %arrayidx.i.i19.i.i.i.i.i126.i2743, align 1, !tbaa !57, !noalias !121 br label %Flow3436, !amdgpu.uniform !42 Flow3436: ; preds = %if.then3.i18.i.i.i.i.i125.i, %if.then.i14.i.i.i.i.i123.i %2482 = phi i64 [ %inc.i20.i.i.i.i.i127.i, %if.then3.i18.i.i.i.i.i125.i ], [ 11, %if.then.i14.i.i.i.i.i123.i ] call void @llvm.amdgcn.end.cf.i64(i64 %2478) br label %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i128.i, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i128.i: ; preds = %while.end.i.i.i.i.i119.i, %Flow3436 %writer.sroa.10.5.i.i.i.i129.i = phi i64 [ %writer.sroa.10.4.i.i.i.i120.i, %while.end.i.i.i.i.i119.i ], [ %2482, %Flow3436 ] call void @llvm.amdgcn.end.cf.i64(i64 %2475) %written.i.i.i.i130.i = getelementptr inbounds nuw i8, ptr addrspace(5) %buffer.i.i.i, i32 16 store i64 %writer.sroa.10.5.i.i.i.i129.i, ptr addrspace(5) %written.i.i.i.i130.i, align 8, !tbaa !91, !noalias !121 %cmp.i.not.i.i.i.i.i133.i = icmp ne i64 %writer.sroa.10.5.i.i.i.i129.i, 0 %2483 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.not.i.i.i.i.i133.i) %2484 = extractvalue { i1, i64 } %2483, 0 %2485 = extractvalue { i1, i64 } %2483, 1 br i1 %2484, label %if.then.i.i.i.i.i.i134.i, label %Flow3435 if.then.i.i.i.i.i.i134.i: ; preds = %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i128.i %2486 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %writer.sroa.10.5.i.i.i.i129.i, i64 1) %ov3345 = extractvalue { i64, i1 } %2486, 1 %ov3345.inv = xor i1 %ov3345, true %2487 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %ov3345.inv) %2488 = extractvalue { i1, i64 } %2487, 0 %2489 = extractvalue { i1, i64 } %2487, 1 br i1 %2488, label %if.end.i.i.i.i.i.i.i137.i, label %Flow3434 if.end.i.i.i.i.i.i.i137.i: ; preds = %if.then.i.i.i.i.i.i134.i %math3344 = extractvalue { i64, i1 } %2486, 0 %cmp2.i.i.i.i.i.i.i138.i = icmp ult i64 %math3344, 1676976733973595601 %2490 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp2.i.i.i.i.i.i.i138.i) %2491 = extractvalue { i1, i64 } %2490, 0 %2492 = extractvalue { i1, i64 } %2490, 1 br i1 %2491, label %if.then3.i.i.i.i4.i.i.i152.i, label %if.end4.i.i.i.i.i.i.i139.i if.then3.i.i.i.i4.i.i.i152.i: ; preds = %if.end.i.i.i.i.i.i.i137.i %mul.i.i.i.i.i.i.i153.i = mul nuw i64 %math3344, 11 %div18.i.i.i.i.i.i.i154.i = lshr i64 %mul.i.i.i.i.i.i.i153.i, 3 br label %if.end4.i.i.i.i.i.i.i139.i, !amdgpu.uniform !42 Flow3434: ; preds = %if.end4.i.i.i.i.i.i.i139.i, %if.then.i.i.i.i.i.i134.i %2493 = phi ptr [ %cond.i.i1884, %if.end4.i.i.i.i.i.i.i139.i ], [ addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr), %if.then.i.i.i.i.i.i134.i ] call void @llvm.amdgcn.end.cf.i64(i64 %2489) br label %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i143.i, !amdgpu.uniform !42 if.end4.i.i.i.i.i.i.i139.i: ; preds = %if.then3.i.i.i.i4.i.i.i152.i, %if.end.i.i.i.i.i.i.i137.i %new_capacity.addr.0.i.i.i.i.i.i.i140.i = phi i64 [ %div18.i.i.i.i.i.i.i154.i, %if.then3.i.i.i.i4.i.i.i152.i ], [ %math3344, %if.end.i.i.i.i.i.i.i137.i ] call void @llvm.amdgcn.end.cf.i64(i64 %2492) %sub.i.i1878 = add i64 %new_capacity.addr.0.i.i.i.i.i.i.i140.i, 7 %div2.i.i1879 = and i64 %sub.i.i1878, -8 %2494 = load ptr, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %add.ptr.i.i1880 = getelementptr inbounds nuw i8, ptr %2494, i64 %div2.i.i1879 store ptr %add.ptr.i.i1880, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %sub.ptr.lhs.cast.i.i1881 = ptrtoint ptr %add.ptr.i.i1880 to i64 %sub.ptr.sub.i.i1882 = sub i64 %sub.ptr.lhs.cast.i.i1881, ptrtoint (ptr addrspacecast (ptr addrspace(1) @_ZN12_GLOBAL__N_16memoryE to ptr) to i64) %cmp.i.i1883 = icmp ugt i64 %sub.ptr.sub.i.i1882, 65335 %cond.i.i1884 = select i1 %cmp.i.i1883, ptr null, ptr %2494 br label %Flow3434, !amdgpu.uniform !42 Flow3435: ; preds = %Flow3433, %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i128.i %2495 = phi ptr [ %2493, %Flow3433 ], [ addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr), %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i128.i ] call void @llvm.amdgcn.end.cf.i64(i64 %2485) br label %if.end.i.i.i.i.i.i145.i, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i143.i: ; preds = %Flow3434 br label %loadstoreloop2187, !amdgpu.uniform !42 loadstoreloop2187: ; preds = %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i143.i, %loadstoreloop2187 %phi.broken3974 = phi i64 [ 0, %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i143.i ], [ %2500, %loadstoreloop2187 ] %2496 = phi i64 [ %2498, %loadstoreloop2187 ], [ 0, %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i143.i ] %2497 = getelementptr i8, ptr %2493, i64 %2496 store i8 0, ptr %2497, align 1 %2498 = add i64 %2496, 1 %2499 = icmp uge i64 %2498, %writer.sroa.10.5.i.i.i.i129.i %2500 = call i64 @llvm.amdgcn.if.break.i64(i1 %2499, i64 %phi.broken3974) %2501 = call i1 @llvm.amdgcn.loop.i64(i64 %2500) br i1 %2501, label %Flow3433, label %loadstoreloop2187 Flow3433: ; preds = %loadstoreloop2187 %.lcssa4010 = phi i64 [ %2500, %loadstoreloop2187 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4010) br label %Flow3435, !amdgpu.uniform !42 if.end.i.i.i.i.i.i145.i: ; preds = %Flow3435 %cmp.not.i6.i.i.i.i.i.i147.i = icmp ne ptr %2495, addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr) %2502 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.not.i6.i.i.i.i.i.i147.i) %2503 = extractvalue { i1, i64 } %2502, 0 %2504 = extractvalue { i1, i64 } %2502, 1 br i1 %2503, label %if.then.i.i.i.i2.i.i.i148.i, label %_ZN22__llvm_libc_22_0_0_git7testing8internal13describeValueIiEENS_3cpp9enable_ifIXaasr3cppE13is_integral_vIT_ElestS5_Lm8EENS3_6stringEE4typeES5_.exit164.i if.then.i.i.i.i2.i.i.i148.i: ; preds = %if.end.i.i.i.i.i.i145.i %arrayidx.i.i.i.i3.i.i.i149.i = getelementptr inbounds nuw i8, ptr %2495, i64 %writer.sroa.10.5.i.i.i.i129.i store i8 0, ptr %arrayidx.i.i.i.i3.i.i.i149.i, align 1, !tbaa !57, !noalias !121 br label %_ZN22__llvm_libc_22_0_0_git7testing8internal13describeValueIiEENS_3cpp9enable_ifIXaasr3cppE13is_integral_vIT_ElestS5_Lm8EENS3_6stringEE4typeES5_.exit164.i, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing8internal13describeValueIiEENS_3cpp9enable_ifIXaasr3cppE13is_integral_vIT_ElestS5_Lm8EENS3_6stringEE4typeES5_.exit164.i: ; preds = %if.then.i.i.i.i2.i.i.i148.i, %if.end.i.i.i.i.i.i145.i call void @llvm.amdgcn.end.cf.i64(i64 %2504) %2505 = trunc i64 %writer.sroa.10.5.i.i.i.i129.i to i32 %2506 = and i64 %writer.sroa.10.5.i.i.i.i129.i, 15 %2507 = sub i64 %writer.sroa.10.5.i.i.i.i129.i, %2506 %2508 = icmp ne i64 %2507, 0 %2509 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2508) %2510 = extractvalue { i1, i64 } %2509, 0 %2511 = extractvalue { i1, i64 } %2509, 1 br i1 %2510, label %loop-memcpy-expansion2309.preheader, label %Flow3432 loop-memcpy-expansion2309.preheader: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing8internal13describeValueIiEENS_3cpp9enable_ifIXaasr3cppE13is_integral_vIT_ElestS5_Lm8EENS3_6stringEE4typeES5_.exit164.i %2512 = sub i32 11, %2505 %scevgep2878 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i, i32 %2512 br label %loop-memcpy-expansion2309, !amdgpu.uniform !42 Flow3432: ; preds = %Flow3431, %_ZN22__llvm_libc_22_0_0_git7testing8internal13describeValueIiEENS_3cpp9enable_ifIXaasr3cppE13is_integral_vIT_ElestS5_Lm8EENS3_6stringEE4typeES5_.exit164.i call void @llvm.amdgcn.end.cf.i64(i64 %2511) br label %loop-memcpy-residual-header2312, !amdgpu.uniform !42 loop-memcpy-expansion2309: ; preds = %loop-memcpy-expansion2309.preheader, %loop-memcpy-expansion2309 %phi.broken3975 = phi i64 [ 0, %loop-memcpy-expansion2309.preheader ], [ %2517, %loop-memcpy-expansion2309 ] %lsr.iv2879 = phi ptr addrspace(5) [ %scevgep2880, %loop-memcpy-expansion2309 ], [ %scevgep2878, %loop-memcpy-expansion2309.preheader ] %loop-index2310 = phi i64 [ %2515, %loop-memcpy-expansion2309 ], [ 0, %loop-memcpy-expansion2309.preheader ] %2513 = load <4 x i32>, ptr addrspace(5) %lsr.iv2879, align 1 %2514 = getelementptr i8, ptr %2495, i64 %loop-index2310 store <4 x i32> %2513, ptr %2514, align 1 %2515 = add i64 %loop-index2310, 16 %scevgep2880 = getelementptr i8, ptr addrspace(5) %lsr.iv2879, i32 16 %2516 = icmp uge i64 %2515, %2507 %2517 = call i64 @llvm.amdgcn.if.break.i64(i1 %2516, i64 %phi.broken3975) %2518 = call i1 @llvm.amdgcn.loop.i64(i64 %2517) br i1 %2518, label %Flow3431, label %loop-memcpy-expansion2309 Flow3430: ; preds = %Flow3429, %loop-memcpy-residual-header2312 call void @llvm.amdgcn.end.cf.i64(i64 %2875) br label %post-loop-memcpy-expansion2308, !amdgpu.uniform !42 loop-memcpy-residual2311: ; preds = %loop-memcpy-residual2311.preheader, %loop-memcpy-residual2311 %phi.broken3976 = phi i64 [ 0, %loop-memcpy-residual2311.preheader ], [ %2522, %loop-memcpy-residual2311 ] %lsr.iv2874 = phi ptr addrspace(5) [ %scevgep2875, %loop-memcpy-residual2311 ], [ %scevgep2873, %loop-memcpy-residual2311.preheader ] %residual-loop-index2313 = phi i64 [ %2520, %loop-memcpy-residual2311 ], [ 0, %loop-memcpy-residual2311.preheader ] %2519 = load i8, ptr addrspace(5) %lsr.iv2874, align 1 %scevgep2877 = getelementptr i8, ptr %scevgep2876, i64 %residual-loop-index2313 store i8 %2519, ptr %scevgep2877, align 1 %2520 = add i64 %residual-loop-index2313, 1 %scevgep2875 = getelementptr i8, ptr addrspace(5) %lsr.iv2874, i32 1 %2521 = icmp uge i64 %2520, %2506 %2522 = call i64 @llvm.amdgcn.if.break.i64(i1 %2521, i64 %phi.broken3976) %2523 = call i1 @llvm.amdgcn.loop.i64(i64 %2522) br i1 %2523, label %Flow3429, label %loop-memcpy-residual2311 Flow3429: ; preds = %loop-memcpy-residual2311 %.lcssa4008 = phi i64 [ %2522, %loop-memcpy-residual2311 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4008) br label %Flow3430, !amdgpu.uniform !42 post-loop-memcpy-expansion2308: ; preds = %Flow3430 call void @llvm.lifetime.end.p5(ptr addrspace(5) %buffer.i.i.i) #34, !noalias !121 br label %for.cond.i.i.i1886, !amdgpu.uniform !42 for.cond.i.i.i1886: ; preds = %post-loop-memcpy-expansion2308, %Flow3428 %2524 = phi i32 [ %2562, %Flow3428 ], [ poison, %post-loop-memcpy-expansion2308 ] %2525 = phi i64 [ %2563, %Flow3428 ], [ poison, %post-loop-memcpy-expansion2308 ] %2526 = phi i32 [ %2564, %Flow3428 ], [ poison, %post-loop-memcpy-expansion2308 ] %retval.sroa.6.0.i.i.i1887 = phi i32 [ %2567, %Flow3428 ], [ undef, %post-loop-memcpy-expansion2308 ] %retval.sroa.2.0.i.i.i1889 = phi i64 [ %2566, %Flow3428 ], [ undef, %post-loop-memcpy-expansion2308 ] %retval.sroa.8.0.i.i.i1890 = phi i32 [ %2565, %Flow3428 ], [ undef, %post-loop-memcpy-expansion2308 ] %index.0.i.i.i1891 = phi i32 [ %2569, %Flow3428 ], [ 0, %post-loop-memcpy-expansion2308 ] %2527 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i1892 = icmp ult i32 %index.0.i.i.i1891, %2527 %spec.store.select.i.i.i1893 = select i1 %cmp.not.i.i.i1892, i32 %index.0.i.i.i1891, i32 0 %2528 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %2529 = and i32 %spec.store.select.i.i.i1893, 31 %2530 = lshr i64 %2528, %sh_prom.i.i.i.i %2531 = trunc i64 %2530 to i32 %conv4.i.i.i.i.i1897 = and i32 %2531, 1 %shl.i.i.i.i.i1898 = shl nuw i32 %conv4.i.i.i.i.i1897, %2529 %2532 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2670, !amdgpu.uniform !42 2533: ; preds = %ComputeEnd2671 %sunkaddr3346 = getelementptr inbounds i8, ptr addrspace(1) %4003, i64 40 %2534 = atomicrmw or ptr addrspace(1) %sunkaddr3346, i32 %.lcssa4002 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2535, !amdgpu.uniform !42 2535: ; preds = %2533, %ComputeEnd2671 %2536 = phi i32 [ %2534, %2533 ], [ poison, %ComputeEnd2671 ] call void @llvm.amdgcn.end.cf.i64(i64 %4012) %2537 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %2536) %2538 = or i32 %2537, %.lcssa4003 %shl5.i.i.i.i.i1899 = shl nuw i32 1, %2529 %and.i.i.i.i.i1900 = and i32 %shl5.i.i.i.i.i1899, %2538 %tobool3.i.i.i.i1901 = icmp ne i32 %and.i.i.i.i.i1900, 0 %2539 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i1901) %and.i.i.i.i.i.i1902 = and i64 %2539, %2528 %cmp.i.not.i.i.i1903 = icmp ne i64 %2528, %and.i.i.i.i.i.i1902 br i1 %cmp.i.not.i.i.i1903, label %if.then.i.i.i.i1904, label %Flow3427, !amdgpu.uniform !42 if.then.i.i.i.i1904: ; preds = %2535 fence syncscope("agent") acquire %2540 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %2541 = extractelement <2 x i64> %2540, i32 0 %2542 = inttoptr i64 %2541 to ptr %2543 = extractelement <2 x i64> %2540, i32 1 %2544 = inttoptr i64 %2543 to ptr %idxprom.i.i.i.i1905 = zext i32 %spec.store.select.i.i.i1893 to i64 %arrayidx.i.i.i.i1906 = getelementptr inbounds nuw i32, ptr %2542, i64 %idxprom.i.i.i.i1905, !amdgpu.uniform !42 %2545 = load atomic i32, ptr %arrayidx.i.i.i.i1906 monotonic, align 4 %2546 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2545) %arrayidx.i45.i.i.i1907 = getelementptr inbounds nuw i32, ptr %2544, i64 %idxprom.i.i.i.i1905, !amdgpu.uniform !42 %2547 = load atomic i32, ptr %arrayidx.i45.i.i.i1907 monotonic, align 4 %2548 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2547) %cmp.i46.not.i.i.i1908 = icmp ne i32 %2546, %2548 br i1 %cmp.i46.not.i.i.i1908, label %if.then12.i.i.i1909, label %Flow3425, !amdgpu.uniform !42 if.then12.i.i.i1909: ; preds = %if.then.i.i.i.i1904 fence syncscope("agent") release %2549 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %2528, i1 true) %iszero.i.i.i.i.i.i.i1910 = icmp ne i64 %2528, 0 %cmp2.i.i.i.i.i.i1911 = icmp eq i64 %2549, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i1912 = select i1 %iszero.i.i.i.i.i.i.i1910, i1 %cmp2.i.i.i.i.i.i1911, i1 false %conv4.i.i51.i.i.i1913 = zext i1 %cmp.i.i.i.i.i.i1912 to i32 %shl.i.i52.i.i.i1914 = shl nuw i32 %conv4.i.i51.i.i.i1913, %2529 %xor.i.i.i.i.i1915 = xor i32 %shl.i.i52.i.i.i1914, -1 %2550 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2675, !amdgpu.uniform !42 2551: ; preds = %ComputeEnd2676 %sunkaddr3347 = getelementptr inbounds i8, ptr addrspace(1) %4003, i64 40 %2552 = atomicrmw and ptr addrspace(1) %sunkaddr3347, i32 %.lcssa4004 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2553, !amdgpu.uniform !42 2553: ; preds = %2551, %ComputeEnd2676 call void @llvm.amdgcn.end.cf.i64(i64 %4030) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3425, !amdgpu.uniform !42 if.end14.i.i.i1975: ; preds = %Flow3425 %2554 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %2528, i1 true) %iszero.i.i.i.i.i.i1976 = icmp ne i64 %2528, 0 %cmp2.i.i.i.i.i1977 = icmp eq i64 %2554, %sh_prom.i.i.i.i %cmp.i.i.i.i.i1978 = select i1 %iszero.i.i.i.i.i.i1976, i1 %cmp2.i.i.i.i.i1977, i1 false %2555 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i1978) %2556 = extractvalue { i1, i64 } %2555, 0 %2557 = extractvalue { i1, i64 } %2555, 1 br i1 %2556, label %if.then16.i.i.i1980, label %if.end22.i.i.i1979 if.then16.i.i.i1980: ; preds = %if.end14.i.i.i1975 %2558 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i1981 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2558, i64 %idxprom.i.i.i.i1905, i32 1 store i32 1660944387, ptr %opcode.i.i.i1981, align 8, !tbaa !77 %arrayidx21.i.i.i1982 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2558, i64 %idxprom.i.i.i.i1905 store i64 %2528, ptr %arrayidx21.i.i.i1982, align 8, !tbaa !80 br label %if.end22.i.i.i1979, !amdgpu.uniform !42 Flow3426: ; preds = %if.end22.i.i.i1979, %Flow3425 %2559 = phi i32 [ %2546, %if.end22.i.i.i1979 ], [ %retval.sroa.8.0.i.i.i1890, %Flow3425 ] %2560 = phi i64 [ %2528, %if.end22.i.i.i1979 ], [ %retval.sroa.2.0.i.i.i1889, %Flow3425 ] %2561 = phi i32 [ %spec.store.select.i.i.i1893, %if.end22.i.i.i1979 ], [ %retval.sroa.6.0.i.i.i1887, %Flow3425 ] br label %cleanup26.i.i.i1916, !amdgpu.uniform !42 if.end22.i.i.i1979: ; preds = %if.then16.i.i.i1980, %if.end14.i.i.i1975 call void @llvm.amdgcn.end.cf.i64(i64 %2557) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3426, !amdgpu.uniform !42 Flow3427: ; preds = %cleanup26.i.i.i1916, %2535 %2562 = phi i32 [ %2561, %cleanup26.i.i.i1916 ], [ %2524, %2535 ] %2563 = phi i64 [ %2560, %cleanup26.i.i.i1916 ], [ %2525, %2535 ] %2564 = phi i32 [ %2559, %cleanup26.i.i.i1916 ], [ %2526, %2535 ] %2565 = phi i32 [ %2559, %cleanup26.i.i.i1916 ], [ %retval.sroa.8.0.i.i.i1890, %2535 ] %2566 = phi i64 [ %2560, %cleanup26.i.i.i1916 ], [ %retval.sroa.2.0.i.i.i1889, %2535 ] %2567 = phi i32 [ %2561, %cleanup26.i.i.i1916 ], [ %retval.sroa.6.0.i.i.i1887, %2535 ] %2568 = phi i1 [ %cmp.i46.not.i.i.i1908, %cleanup26.i.i.i1916 ], [ true, %2535 ] br i1 %2568, label %for.inc.i.i.i1921, label %Flow3428, !amdgpu.uniform !42 cleanup26.i.i.i1916: ; preds = %Flow3426 br label %Flow3427, !amdgpu.uniform !42 for.inc.i.i.i1921: ; preds = %Flow3427 %inc.i.i.i1926 = add i32 %spec.store.select.i.i.i1893, 1 br label %Flow3428, !amdgpu.uniform !42 Flow3428: ; preds = %for.inc.i.i.i1921, %Flow3427 %2569 = phi i32 [ %inc.i.i.i1926, %for.inc.i.i.i1921 ], [ poison, %Flow3427 ] %2570 = phi i1 [ false, %for.inc.i.i.i1921 ], [ true, %Flow3427 ] br i1 %2570, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1927, label %for.cond.i.i.i1886, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1927: ; preds = %Flow3428 %.lcssa4007 = phi i32 [ %2562, %Flow3428 ] %.lcssa4006 = phi i64 [ %2563, %Flow3428 ] %.lcssa4005 = phi i32 [ %2564, %Flow3428 ] fence acquire %2571 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i1928 = shl i32 %.lcssa4007, 6 %idxprom.i19.i.i.i.i.i1929 = zext i32 %mul.i.i.i.i.i.i1928 to i64 %arrayidx.i20.i.i.i.i.i1930 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %2571, i64 %idxprom.i19.i.i.i.i.i1929 %arrayidx.i22.i.i.i.i.i1931 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i1930, i64 %sh_prom.i.i.i.i store i64 %writer.sroa.10.5.i.i.i.i129.i, ptr %arrayidx.i22.i.i.i.i.i1931, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i1932 = tail call i64 @llvm.umin.i64(i64 %writer.sroa.10.5.i.i.i.i129.i, i64 56) %2572 = and i64 %spec.select.i.i.i.i.i.i.i1932, 15 %2573 = sub i64 %spec.select.i.i.i.i.i.i.i1932, %2572 %2574 = icmp ne i64 %2573, 0 %2575 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2574) %2576 = extractvalue { i1, i64 } %2575, 0 %2577 = extractvalue { i1, i64 } %2575, 1 br i1 %2576, label %loop-memcpy-expansion2195.preheader, label %Flow3424 loop-memcpy-expansion2195.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1927 %2578 = add nuw nsw i64 %75, 8 %scevgep2870 = getelementptr i8, ptr %2571, i64 %2578 %2579 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1929, 6 %scevgep2871 = getelementptr i8, ptr %scevgep2870, i64 %2579 br label %loop-memcpy-expansion2195, !amdgpu.uniform !42 Flow3424: ; preds = %Flow3423, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1927 call void @llvm.amdgcn.end.cf.i64(i64 %2577) br label %loop-memcpy-residual-header2198, !amdgpu.uniform !42 loop-memcpy-expansion2195: ; preds = %loop-memcpy-expansion2195.preheader, %loop-memcpy-expansion2195 %phi.broken3977 = phi i64 [ 0, %loop-memcpy-expansion2195.preheader ], [ %2584, %loop-memcpy-expansion2195 ] %loop-index2196 = phi i64 [ %2582, %loop-memcpy-expansion2195 ], [ 0, %loop-memcpy-expansion2195.preheader ] %2580 = getelementptr i8, ptr %2495, i64 %loop-index2196 %2581 = load <4 x i32>, ptr %2580, align 1 %scevgep2872 = getelementptr i8, ptr %scevgep2871, i64 %loop-index2196 store <4 x i32> %2581, ptr %scevgep2872, align 1 %2582 = add i64 %loop-index2196, 16 %2583 = icmp uge i64 %2582, %2573 %2584 = call i64 @llvm.amdgcn.if.break.i64(i1 %2583, i64 %phi.broken3977) %2585 = call i1 @llvm.amdgcn.loop.i64(i64 %2584) br i1 %2585, label %Flow3423, label %loop-memcpy-expansion2195 Flow3422: ; preds = %Flow3420, %Flow3421 %2586 = phi i64 [ %2757, %Flow3420 ], [ %2749, %Flow3421 ] call void @llvm.amdgcn.end.cf.i64(i64 %2752) br label %post-loop-memcpy-expansion2194, !amdgpu.uniform !42 loop-memcpy-residual2197: ; preds = %loop-memcpy-residual2197.preheader, %loop-memcpy-residual2197 %phi.broken3978 = phi i64 [ 0, %loop-memcpy-residual2197.preheader ], [ %2590, %loop-memcpy-residual2197 ] %residual-loop-index2199 = phi i64 [ %2588, %loop-memcpy-residual2197 ], [ 0, %loop-memcpy-residual2197.preheader ] %scevgep2869 = getelementptr i8, ptr %scevgep2868, i64 %residual-loop-index2199 %2587 = load i8, ptr %scevgep2869, align 1 %scevgep2867 = getelementptr i8, ptr %scevgep2866, i64 %residual-loop-index2199 store i8 %2587, ptr %scevgep2867, align 1 %2588 = add i64 %residual-loop-index2199, 1 %2589 = icmp uge i64 %2588, %2572 %2590 = call i64 @llvm.amdgcn.if.break.i64(i1 %2589, i64 %phi.broken3978) %2591 = call i1 @llvm.amdgcn.loop.i64(i64 %2590) br i1 %2591, label %Flow3420, label %loop-memcpy-residual2197 Flow3420: ; preds = %loop-memcpy-residual2197 %.lcssa4000 = phi i64 [ %2590, %loop-memcpy-residual2197 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4000) br label %Flow3422, !amdgpu.uniform !42 post-loop-memcpy-expansion2194: ; preds = %Flow3422 %tobool.not.i.i.i.i.i.i1934 = icmp eq i32 %.lcssa4005, 0 %conv.i.i.i.i.i.i1935 = zext i1 %tobool.not.i.i.i.i.i.i1934 to i32 fence release %2592 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i1936 = zext i32 %.lcssa4007 to i64 %arrayidx.i24.i.i.i.i.i1937 = getelementptr inbounds nuw i32, ptr %2592, i64 %idxprom.i23.i.i.i.i.i1936 store atomic i32 %conv.i.i.i.i.i.i1935, ptr %arrayidx.i24.i.i.i.i.i1937 monotonic, align 4 %2593 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i1938 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2593, i64 %idxprom.i23.i.i.i.i.i1936, !amdgpu.uniform !42 %2594 = load i64, ptr %arrayidx.i.i5.i.i1938, align 8, !tbaa !80 %scevgep = getelementptr i8, ptr %2495, i64 56 %2595 = add i64 %writer.sroa.10.5.i.i.i.i129.i, -56 br label %while.cond.i.i.i.i1939, !amdgpu.uniform !42 while.cond.i.i.i.i1939: ; preds = %post-loop-memcpy-expansion2194, %Flow3419 %phi.broken3981 = phi i64 [ 0, %post-loop-memcpy-expansion2194 ], [ %2612, %Flow3419 ] %lsr.iv2860 = phi i64 [ %2610, %Flow3419 ], [ %2595, %post-loop-memcpy-expansion2194 ] %lsr.iv = phi ptr [ %2609, %Flow3419 ], [ %scevgep, %post-loop-memcpy-expansion2194 ] %port.sroa.37.0.i.i1940 = phi i32 [ %2608, %Flow3419 ], [ %conv.i.i.i.i.i.i1935, %post-loop-memcpy-expansion2194 ] %idx.0.i.i.i.i1941 = phi i64 [ %2607, %Flow3419 ], [ 56, %post-loop-memcpy-expansion2194 ] %cmp.i.i.i.i1942 = icmp ugt i64 %writer.sroa.10.5.i.i.i.i129.i, %idx.0.i.i.i.i1941 %2596 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i1942) %and.i.i.i.i6.i.i1943 = and i64 %2596, %2594 %tobool.not.i.i.i.i1944 = icmp ne i64 %and.i.i.i.i6.i.i1943, 0 %2597 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i1945 = getelementptr inbounds nuw i32, ptr %2597, i64 %idxprom.i23.i.i.i.i.i1936, !amdgpu.uniform !42 %2598 = load atomic i32, ptr %arrayidx.i22.i.i.i1945 monotonic, align 4 %2599 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i1944) %2600 = extractvalue { i1, i64 } %2599, 0 %2601 = extractvalue { i1, i64 } %2599, 1 br i1 %2600, label %cond.false.i8.i.i.i.i1946, label %Flow3419 cond.false.i8.i.i.i.i1946: ; preds = %while.cond.i.i.i.i1939 %2602 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2598) %2603 = icmp ne i32 %2602, %port.sroa.37.0.i.i1940 br i1 %2603, label %while.body.i.i21.i.i.i.i1947.preheader, label %Flow3418, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1947.preheader: ; preds = %cond.false.i8.i.i.i.i1946 br label %while.body.i.i21.i.i.i.i1947, !amdgpu.uniform !42 Flow3418: ; preds = %Flow3417, %cond.false.i8.i.i.i.i1946 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1950, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1947: ; preds = %while.body.i.i21.i.i.i.i1947.preheader, %while.body.i.i21.i.i.i.i1947 tail call void @llvm.amdgcn.s.sleep(i32 2) %2604 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i1948 = getelementptr inbounds nuw i32, ptr %2604, i64 %idxprom.i23.i.i.i.i.i1936, !amdgpu.uniform !42 %2605 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i1948 monotonic, align 4 %2606 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2605) %cmp.i.not.i.i23.i.i.i.i1949 = icmp eq i32 %2606, %port.sroa.37.0.i.i1940 br i1 %cmp.i.not.i.i23.i.i.i.i1949, label %Flow3417, label %while.body.i.i21.i.i.i.i1947, !amdgpu.uniform !42 Flow3417: ; preds = %while.body.i.i21.i.i.i.i1947 br label %Flow3418, !amdgpu.uniform !42 Flow3419: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1951, %while.cond.i.i.i.i1939 %2607 = phi i64 [ %add.i.i.i.i1954, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1951 ], [ poison, %while.cond.i.i.i.i1939 ] %2608 = phi i32 [ %conv.i.i26.i.i.i.i1952, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1951 ], [ poison, %while.cond.i.i.i.i1939 ] %2609 = phi ptr [ %scevgep2856, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1951 ], [ poison, %while.cond.i.i.i.i1939 ] %2610 = phi i64 [ %lsr.iv.next, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1951 ], [ poison, %while.cond.i.i.i.i1939 ] %2611 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1951 ], [ true, %while.cond.i.i.i.i1939 ] call void @llvm.amdgcn.end.cf.i64(i64 %2601) %2612 = call i64 @llvm.amdgcn.if.break.i64(i1 %2611, i64 %phi.broken3981) %2613 = call i1 @llvm.amdgcn.loop.i64(i64 %2612) br i1 %2613, label %cond.false.i.i.i1961, label %while.cond.i.i.i.i1939 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1950: ; preds = %Flow3418 fence acquire %2614 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i1942) %2615 = extractvalue { i1, i64 } %2614, 0 %2616 = extractvalue { i1, i64 } %2614, 1 br i1 %2615, label %if.then.i.i.i.i.i.i.i1955, label %Flow3416 if.then.i.i.i.i.i.i.i1955: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1950 %sub.i.i.i.i.i.i.i1957 = sub nuw i64 %writer.sroa.10.5.i.i.i.i129.i, %idx.0.i.i.i.i1941 %spec.select.i.i.i36.i.i.i.i1958 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i1957, i64 64) %2617 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %2618 = and i64 %spec.select.i.i.i36.i.i.i.i1958, 15 %2619 = sub i64 %spec.select.i.i.i36.i.i.i.i1958, %2618 %2620 = icmp ne i64 %2619, 0 %2621 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2620) %2622 = extractvalue { i1, i64 } %2621, 0 %2623 = extractvalue { i1, i64 } %2621, 1 br i1 %2622, label %loop-memcpy-expansion.preheader, label %Flow3415 loop-memcpy-expansion.preheader: ; preds = %if.then.i.i.i.i.i.i.i1955 %arrayidx.i20.i35.i.i.i.i1959 = getelementptr %"struct.rpc::Buffer", ptr %2617, i64 %idxprom.i19.i.i.i.i.i1929 %arrayidx.i22.i38.i.i.i.i1960 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i1959, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion, !amdgpu.uniform !42 Flow3415: ; preds = %Flow3414, %if.then.i.i.i.i.i.i.i1955 call void @llvm.amdgcn.end.cf.i64(i64 %2623) br label %loop-memcpy-residual-header, !amdgpu.uniform !42 loop-memcpy-expansion: ; preds = %loop-memcpy-expansion.preheader, %loop-memcpy-expansion %phi.broken3979 = phi i64 [ 0, %loop-memcpy-expansion.preheader ], [ %2628, %loop-memcpy-expansion ] %loop-index = phi i64 [ %2626, %loop-memcpy-expansion ], [ 0, %loop-memcpy-expansion.preheader ] %scevgep2857 = getelementptr i8, ptr %lsr.iv, i64 %loop-index %2624 = load <4 x i32>, ptr %scevgep2857, align 1 %2625 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i1960, i64 %loop-index store <4 x i32> %2624, ptr %2625, align 1 %2626 = add i64 %loop-index, 16 %2627 = icmp uge i64 %2626, %2619 %2628 = call i64 @llvm.amdgcn.if.break.i64(i1 %2627, i64 %phi.broken3979) %2629 = call i1 @llvm.amdgcn.loop.i64(i64 %2628) br i1 %2629, label %Flow3414, label %loop-memcpy-expansion Flow3413: ; preds = %Flow3412, %loop-memcpy-residual-header call void @llvm.amdgcn.end.cf.i64(i64 %2742) br label %Flow3416, !amdgpu.uniform !42 loop-memcpy-residual: ; preds = %loop-memcpy-residual.preheader, %loop-memcpy-residual %phi.broken3980 = phi i64 [ 0, %loop-memcpy-residual.preheader ], [ %2633, %loop-memcpy-residual ] %residual-loop-index = phi i64 [ %2631, %loop-memcpy-residual ], [ 0, %loop-memcpy-residual.preheader ] %scevgep2864 = getelementptr i8, ptr %scevgep2863, i64 %residual-loop-index %2630 = load i8, ptr %scevgep2864, align 1 %scevgep2862 = getelementptr i8, ptr %scevgep2861, i64 %residual-loop-index store i8 %2630, ptr %scevgep2862, align 1 %2631 = add i64 %residual-loop-index, 1 %2632 = icmp uge i64 %2631, %2618 %2633 = call i64 @llvm.amdgcn.if.break.i64(i1 %2632, i64 %phi.broken3980) %2634 = call i1 @llvm.amdgcn.loop.i64(i64 %2633) br i1 %2634, label %Flow3412, label %loop-memcpy-residual Flow3412: ; preds = %loop-memcpy-residual %.lcssa3997 = phi i64 [ %2633, %loop-memcpy-residual ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3997) br label %Flow3413, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1951: ; preds = %Flow3416 %conv.i.i26.i.i.i.i1952 = xor i32 %port.sroa.37.0.i.i1940, 1 fence release %2635 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i1953 = getelementptr inbounds nuw i32, ptr %2635, i64 %idxprom.i23.i.i.i.i.i1936 store atomic i32 %conv.i.i26.i.i.i.i1952, ptr %arrayidx.i24.i29.i.i.i.i1953 monotonic, align 4 %add.i.i.i.i1954 = add i64 %idx.0.i.i.i.i1941, 64 %scevgep2856 = getelementptr i8, ptr %lsr.iv, i64 64 %lsr.iv.next = add i64 %lsr.iv2860, -64 br label %Flow3419, !amdgpu.uniform !42 cond.false.i.i.i1961: ; preds = %Flow3419 %.lcssa3999 = phi i64 [ %2612, %Flow3419 ] %port.sroa.37.0.i.i1940.lcssa = phi i32 [ %port.sroa.37.0.i.i1940, %Flow3419 ] %.lcssa3998 = phi i32 [ %2598, %Flow3419 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3999) %2636 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa3998) %2637 = icmp ne i32 %2636, %port.sroa.37.0.i.i1940.lcssa %2638 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2637) %2639 = extractvalue { i1, i64 } %2638, 0 %2640 = extractvalue { i1, i64 } %2638, 1 br i1 %2639, label %while.body.i.i.i.i1962.preheader, label %Flow3411 while.body.i.i.i.i1962.preheader: ; preds = %cond.false.i.i.i1961 br label %while.body.i.i.i.i1962, !amdgpu.uniform !42 Flow3411: ; preds = %Flow3410, %cond.false.i.i.i1961 call void @llvm.amdgcn.end.cf.i64(i64 %2640) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit1983, !amdgpu.uniform !42 while.body.i.i.i.i1962: ; preds = %while.body.i.i.i.i1962.preheader, %while.body.i.i.i.i1962 %phi.broken3982 = phi i64 [ 0, %while.body.i.i.i.i1962.preheader ], [ %2644, %while.body.i.i.i.i1962 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %2641 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i1963 = getelementptr inbounds nuw i32, ptr %2641, i64 %idxprom.i23.i.i.i.i.i1936, !amdgpu.uniform !42 %2642 = load atomic i32, ptr %arrayidx.i.i.i8.i.i1963 monotonic, align 4 %2643 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2642) %cmp.i.not.i.i.i.i1964 = icmp eq i32 %2643, %port.sroa.37.0.i.i1940.lcssa %2644 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i1964, i64 %phi.broken3982) %2645 = call i1 @llvm.amdgcn.loop.i64(i64 %2644) br i1 %2645, label %Flow3410, label %while.body.i.i.i.i1962 Flow3410: ; preds = %while.body.i.i.i.i1962 %.lcssa3995 = phi i64 [ %2644, %while.body.i.i.i.i1962 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3995) br label %Flow3411, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit1983: ; preds = %Flow3411 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %2646 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4006, i1 true) %iszero.i.i.i.i.i13.i.i1966 = icmp ne i64 %.lcssa4006, 0 %cmp2.i.i.i.i14.i.i1967 = icmp eq i64 %2646, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i1968 = select i1 %iszero.i.i.i.i.i13.i.i1966, i1 %cmp2.i.i.i.i14.i.i1967, i1 false %2647 = and i32 %.lcssa4007, 31 %conv4.i.i.i19.i.i1972 = zext i1 %cmp.i.i.i.i15.i.i1968 to i32 %shl.i.i.i20.i.i1973 = shl nuw i32 %conv4.i.i.i19.i.i1972, %2647 %xor.i.i.i21.i.i1974 = xor i32 %shl.i.i.i20.i.i1973, -1 %2648 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2679, !amdgpu.uniform !42 2649: ; preds = %ComputeEnd2680 %div8.i.i.i16.i.i1969 = lshr i32 %.lcssa4007, 5 %idxprom.i.i.i17.i.i1970 = zext nneg i32 %div8.i.i.i16.i.i1969 to i64 %2650 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i1970 %sunkaddr3348 = getelementptr inbounds i8, ptr addrspace(1) %2650, i64 40 %2651 = atomicrmw and ptr addrspace(1) %sunkaddr3348, i32 %.lcssa3994 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2652, !amdgpu.uniform !42 2652: ; preds = %2649, %ComputeEnd2680 call void @llvm.amdgcn.end.cf.i64(i64 %4047) tail call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i.i1987, !amdgpu.uniform !42 for.cond.i.i.i1987: ; preds = %2652, %Flow3409 %2653 = phi i32 [ %2691, %Flow3409 ], [ poison, %2652 ] %2654 = phi i64 [ %2692, %Flow3409 ], [ poison, %2652 ] %2655 = phi i32 [ %2693, %Flow3409 ], [ poison, %2652 ] %retval.sroa.6.0.i.i.i1988 = phi i32 [ %2696, %Flow3409 ], [ undef, %2652 ] %retval.sroa.2.0.i.i.i1990 = phi i64 [ %2695, %Flow3409 ], [ undef, %2652 ] %retval.sroa.8.0.i.i.i1991 = phi i32 [ %2694, %Flow3409 ], [ undef, %2652 ] %index.0.i.i.i1992 = phi i32 [ %2698, %Flow3409 ], [ 0, %2652 ] %2656 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i1993 = icmp ult i32 %index.0.i.i.i1992, %2656 %spec.store.select.i.i.i1994 = select i1 %cmp.not.i.i.i1993, i32 %index.0.i.i.i1992, i32 0 %2657 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %2658 = and i32 %spec.store.select.i.i.i1994, 31 %2659 = lshr i64 %2657, %sh_prom.i.i.i.i %2660 = trunc i64 %2659 to i32 %conv4.i.i.i.i.i1998 = and i32 %2660, 1 %shl.i.i.i.i.i1999 = shl nuw i32 %conv4.i.i.i.i.i1998, %2658 %2661 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2683, !amdgpu.uniform !42 2662: ; preds = %ComputeEnd2684 %sunkaddr3349 = getelementptr inbounds i8, ptr addrspace(1) %4057, i64 40 %2663 = atomicrmw or ptr addrspace(1) %sunkaddr3349, i32 %.lcssa3988 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2664, !amdgpu.uniform !42 2664: ; preds = %2662, %ComputeEnd2684 %2665 = phi i32 [ %2663, %2662 ], [ poison, %ComputeEnd2684 ] call void @llvm.amdgcn.end.cf.i64(i64 %4066) %2666 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %2665) %2667 = or i32 %2666, %.lcssa3989 %shl5.i.i.i.i.i2000 = shl nuw i32 1, %2658 %and.i.i.i.i.i2001 = and i32 %shl5.i.i.i.i.i2000, %2667 %tobool3.i.i.i.i2002 = icmp ne i32 %and.i.i.i.i.i2001, 0 %2668 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i2002) %and.i.i.i.i.i.i2003 = and i64 %2668, %2657 %cmp.i.not.i.i.i2004 = icmp ne i64 %2657, %and.i.i.i.i.i.i2003 br i1 %cmp.i.not.i.i.i2004, label %if.then.i.i.i.i2005, label %Flow3408, !amdgpu.uniform !42 if.then.i.i.i.i2005: ; preds = %2664 fence syncscope("agent") acquire %2669 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %2670 = extractelement <2 x i64> %2669, i32 0 %2671 = inttoptr i64 %2670 to ptr %2672 = extractelement <2 x i64> %2669, i32 1 %2673 = inttoptr i64 %2672 to ptr %idxprom.i.i.i.i2006 = zext i32 %spec.store.select.i.i.i1994 to i64 %arrayidx.i.i.i.i2007 = getelementptr inbounds nuw i32, ptr %2671, i64 %idxprom.i.i.i.i2006, !amdgpu.uniform !42 %2674 = load atomic i32, ptr %arrayidx.i.i.i.i2007 monotonic, align 4 %2675 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2674) %arrayidx.i45.i.i.i2008 = getelementptr inbounds nuw i32, ptr %2673, i64 %idxprom.i.i.i.i2006, !amdgpu.uniform !42 %2676 = load atomic i32, ptr %arrayidx.i45.i.i.i2008 monotonic, align 4 %2677 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2676) %cmp.i46.not.i.i.i2009 = icmp ne i32 %2675, %2677 br i1 %cmp.i46.not.i.i.i2009, label %if.then12.i.i.i2010, label %Flow3406, !amdgpu.uniform !42 if.then12.i.i.i2010: ; preds = %if.then.i.i.i.i2005 fence syncscope("agent") release %2678 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %2657, i1 true) %iszero.i.i.i.i.i.i.i2011 = icmp ne i64 %2657, 0 %cmp2.i.i.i.i.i.i2012 = icmp eq i64 %2678, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i2013 = select i1 %iszero.i.i.i.i.i.i.i2011, i1 %cmp2.i.i.i.i.i.i2012, i1 false %conv4.i.i51.i.i.i2014 = zext i1 %cmp.i.i.i.i.i.i2013 to i32 %shl.i.i52.i.i.i2015 = shl nuw i32 %conv4.i.i51.i.i.i2014, %2658 %xor.i.i.i.i.i2016 = xor i32 %shl.i.i52.i.i.i2015, -1 %2679 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2688, !amdgpu.uniform !42 2680: ; preds = %ComputeEnd2689 %sunkaddr3350 = getelementptr inbounds i8, ptr addrspace(1) %4057, i64 40 %2681 = atomicrmw and ptr addrspace(1) %sunkaddr3350, i32 %.lcssa3990 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2682, !amdgpu.uniform !42 2682: ; preds = %2680, %ComputeEnd2689 call void @llvm.amdgcn.end.cf.i64(i64 %4084) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3406, !amdgpu.uniform !42 if.end14.i.i.i2074: ; preds = %Flow3406 %2683 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %2657, i1 true) %iszero.i.i.i.i.i.i2075 = icmp ne i64 %2657, 0 %cmp2.i.i.i.i.i2076 = icmp eq i64 %2683, %sh_prom.i.i.i.i %cmp.i.i.i.i.i2077 = select i1 %iszero.i.i.i.i.i.i2075, i1 %cmp2.i.i.i.i.i2076, i1 false %2684 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i2077) %2685 = extractvalue { i1, i64 } %2684, 0 %2686 = extractvalue { i1, i64 } %2684, 1 br i1 %2685, label %if.then16.i.i.i2079, label %if.end22.i.i.i2078 if.then16.i.i.i2079: ; preds = %if.end14.i.i.i2074 %2687 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i2080 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2687, i64 %idxprom.i.i.i.i2006, i32 1 store i32 1660944387, ptr %opcode.i.i.i2080, align 8, !tbaa !77 %arrayidx21.i.i.i2081 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2687, i64 %idxprom.i.i.i.i2006 store i64 %2657, ptr %arrayidx21.i.i.i2081, align 8, !tbaa !80 br label %if.end22.i.i.i2078, !amdgpu.uniform !42 Flow3407: ; preds = %if.end22.i.i.i2078, %Flow3406 %2688 = phi i32 [ %2675, %if.end22.i.i.i2078 ], [ %retval.sroa.8.0.i.i.i1991, %Flow3406 ] %2689 = phi i64 [ %2657, %if.end22.i.i.i2078 ], [ %retval.sroa.2.0.i.i.i1990, %Flow3406 ] %2690 = phi i32 [ %spec.store.select.i.i.i1994, %if.end22.i.i.i2078 ], [ %retval.sroa.6.0.i.i.i1988, %Flow3406 ] br label %cleanup26.i.i.i2017, !amdgpu.uniform !42 if.end22.i.i.i2078: ; preds = %if.then16.i.i.i2079, %if.end14.i.i.i2074 call void @llvm.amdgcn.end.cf.i64(i64 %2686) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3407, !amdgpu.uniform !42 Flow3408: ; preds = %cleanup26.i.i.i2017, %2664 %2691 = phi i32 [ %2690, %cleanup26.i.i.i2017 ], [ %2653, %2664 ] %2692 = phi i64 [ %2689, %cleanup26.i.i.i2017 ], [ %2654, %2664 ] %2693 = phi i32 [ %2688, %cleanup26.i.i.i2017 ], [ %2655, %2664 ] %2694 = phi i32 [ %2688, %cleanup26.i.i.i2017 ], [ %retval.sroa.8.0.i.i.i1991, %2664 ] %2695 = phi i64 [ %2689, %cleanup26.i.i.i2017 ], [ %retval.sroa.2.0.i.i.i1990, %2664 ] %2696 = phi i32 [ %2690, %cleanup26.i.i.i2017 ], [ %retval.sroa.6.0.i.i.i1988, %2664 ] %2697 = phi i1 [ %cmp.i46.not.i.i.i2009, %cleanup26.i.i.i2017 ], [ true, %2664 ] br i1 %2697, label %for.inc.i.i.i2022, label %Flow3409, !amdgpu.uniform !42 cleanup26.i.i.i2017: ; preds = %Flow3407 br label %Flow3408, !amdgpu.uniform !42 for.inc.i.i.i2022: ; preds = %Flow3408 %inc.i.i.i2027 = add i32 %spec.store.select.i.i.i1994, 1 br label %Flow3409, !amdgpu.uniform !42 Flow3409: ; preds = %for.inc.i.i.i2022, %Flow3408 %2698 = phi i32 [ %inc.i.i.i2027, %for.inc.i.i.i2022 ], [ poison, %Flow3408 ] %2699 = phi i1 [ false, %for.inc.i.i.i2022 ], [ true, %Flow3408 ] br i1 %2699, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2028, label %for.cond.i.i.i1987, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2028: ; preds = %Flow3409 %.lcssa3993 = phi i32 [ %2691, %Flow3409 ] %.lcssa3992 = phi i64 [ %2692, %Flow3409 ] %.lcssa3991 = phi i32 [ %2693, %Flow3409 ] fence acquire %2700 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i2029 = shl i32 %.lcssa3993, 6 %idxprom.i19.i.i.i.i.i2030 = zext i32 %mul.i.i.i.i.i.i2029 to i64 %arrayidx.i20.i.i.i.i.i2031 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %2700, i64 %idxprom.i19.i.i.i.i.i2030 %arrayidx.i22.i.i.i.i.i2032 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i2031, i64 %sh_prom.i.i.i.i store i64 1, ptr %arrayidx.i22.i.i.i.i.i2032, align 8, !tbaa !82 %arrayidx6.i.i.i.i.i.i.i2033 = getelementptr inbounds nuw i8, ptr %arrayidx.i22.i.i.i.i.i2032, i64 8 store i8 10, ptr %arrayidx6.i.i.i.i.i.i.i2033, align 8 %tobool.not.i.i.i.i.i.i2034 = icmp eq i32 %.lcssa3991, 0 %conv.i.i.i.i.i.i2035 = zext i1 %tobool.not.i.i.i.i.i.i2034 to i32 fence release %2701 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i2036 = zext i32 %.lcssa3993 to i64 %arrayidx.i24.i.i.i.i.i2037 = getelementptr inbounds nuw i32, ptr %2701, i64 %idxprom.i23.i.i.i.i.i2036 store atomic i32 %conv.i.i.i.i.i.i2035, ptr %arrayidx.i24.i.i.i.i.i2037 monotonic, align 4 %2702 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i2038 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2702, i64 %idxprom.i23.i.i.i.i.i2036, !amdgpu.uniform !42 %2703 = load i64, ptr %arrayidx.i.i5.i.i2038, align 8, !tbaa !80 br label %while.cond.i.i.i.i2039, !amdgpu.uniform !42 while.cond.i.i.i.i2039: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2028, %Flow3405 %phi.broken3983 = phi i64 [ 0, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2028 ], [ %2718, %Flow3405 ] %port.sroa.37.0.i.i2040 = phi i32 [ %2716, %Flow3405 ], [ %conv.i.i.i.i.i.i2035, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2028 ] %idx.0.i.i.i.i2041 = phi i64 [ %2715, %Flow3405 ], [ 56, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2028 ] %cmp.i.i.i.i2042 = icmp eq i64 %idx.0.i.i.i.i2041, 0 %2704 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i2042) %and.i.i.i.i6.i.i2043 = and i64 %2704, %2703 %tobool.not.i.i.i.i2044 = icmp ne i64 %and.i.i.i.i6.i.i2043, 0 %2705 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i2045 = getelementptr inbounds nuw i32, ptr %2705, i64 %idxprom.i23.i.i.i.i.i2036, !amdgpu.uniform !42 %2706 = load atomic i32, ptr %arrayidx.i22.i.i.i2045 monotonic, align 4 %2707 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i2044) %2708 = extractvalue { i1, i64 } %2707, 0 %2709 = extractvalue { i1, i64 } %2707, 1 br i1 %2708, label %cond.false.i8.i.i.i.i2046, label %Flow3405 cond.false.i8.i.i.i.i2046: ; preds = %while.cond.i.i.i.i2039 %2710 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2706) %2711 = icmp ne i32 %2710, %port.sroa.37.0.i.i2040 br i1 %2711, label %while.body.i.i21.i.i.i.i2047.preheader, label %Flow3404, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i2047.preheader: ; preds = %cond.false.i8.i.i.i.i2046 br label %while.body.i.i21.i.i.i.i2047, !amdgpu.uniform !42 Flow3404: ; preds = %Flow3403, %cond.false.i8.i.i.i.i2046 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i2050, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i2047: ; preds = %while.body.i.i21.i.i.i.i2047.preheader, %while.body.i.i21.i.i.i.i2047 tail call void @llvm.amdgcn.s.sleep(i32 2) %2712 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i2048 = getelementptr inbounds nuw i32, ptr %2712, i64 %idxprom.i23.i.i.i.i.i2036, !amdgpu.uniform !42 %2713 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i2048 monotonic, align 4 %2714 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2713) %cmp.i.not.i.i23.i.i.i.i2049 = icmp eq i32 %2714, %port.sroa.37.0.i.i2040 br i1 %cmp.i.not.i.i23.i.i.i.i2049, label %Flow3403, label %while.body.i.i21.i.i.i.i2047, !amdgpu.uniform !42 Flow3403: ; preds = %while.body.i.i21.i.i.i.i2047 br label %Flow3404, !amdgpu.uniform !42 Flow3405: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2051, %while.cond.i.i.i.i2039 %2715 = phi i64 [ %add.i.i.i.i2054, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2051 ], [ poison, %while.cond.i.i.i.i2039 ] %2716 = phi i32 [ %conv.i.i26.i.i.i.i2052, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2051 ], [ poison, %while.cond.i.i.i.i2039 ] %2717 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2051 ], [ true, %while.cond.i.i.i.i2039 ] call void @llvm.amdgcn.end.cf.i64(i64 %2709) %2718 = call i64 @llvm.amdgcn.if.break.i64(i1 %2717, i64 %phi.broken3983) %2719 = call i1 @llvm.amdgcn.loop.i64(i64 %2718) br i1 %2719, label %cond.false.i.i.i2060, label %while.cond.i.i.i.i2039 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i2050: ; preds = %Flow3404 fence acquire br i1 %cmp.i.i.i.i2042, label %if.then.i.i.i.i.i.i.i2055, label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2051, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i2055: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i2050 %2720 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %arrayidx.i20.i35.i.i.i.i2058 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %2720, i64 %idxprom.i19.i.i.i.i.i2030 %arrayidx.i22.i38.i.i.i.i2059 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i2058, i64 %sh_prom.i.i.i.i store i8 10, ptr %arrayidx.i22.i38.i.i.i.i2059, align 1 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2051, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2051: ; preds = %if.then.i.i.i.i.i.i.i2055, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i2050 %conv.i.i26.i.i.i.i2052 = xor i32 %port.sroa.37.0.i.i2040, 1 fence release %2721 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i2053 = getelementptr inbounds nuw i32, ptr %2721, i64 %idxprom.i23.i.i.i.i.i2036 store atomic i32 %conv.i.i26.i.i.i.i2052, ptr %arrayidx.i24.i29.i.i.i.i2053 monotonic, align 4 %add.i.i.i.i2054 = add i64 %idx.0.i.i.i.i2041, 64 br label %Flow3405, !amdgpu.uniform !42 cond.false.i.i.i2060: ; preds = %Flow3405 %.lcssa3987 = phi i64 [ %2718, %Flow3405 ] %port.sroa.37.0.i.i2040.lcssa = phi i32 [ %port.sroa.37.0.i.i2040, %Flow3405 ] %.lcssa3986 = phi i32 [ %2706, %Flow3405 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3987) %2722 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa3986) %2723 = icmp ne i32 %2722, %port.sroa.37.0.i.i2040.lcssa %2724 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2723) %2725 = extractvalue { i1, i64 } %2724, 0 %2726 = extractvalue { i1, i64 } %2724, 1 br i1 %2725, label %while.body.i.i.i.i2061.preheader, label %Flow3402 while.body.i.i.i.i2061.preheader: ; preds = %cond.false.i.i.i2060 br label %while.body.i.i.i.i2061, !amdgpu.uniform !42 Flow3402: ; preds = %Flow, %cond.false.i.i.i2060 call void @llvm.amdgcn.end.cf.i64(i64 %2726) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit2082, !amdgpu.uniform !42 while.body.i.i.i.i2061: ; preds = %while.body.i.i.i.i2061.preheader, %while.body.i.i.i.i2061 %phi.broken3984 = phi i64 [ 0, %while.body.i.i.i.i2061.preheader ], [ %2730, %while.body.i.i.i.i2061 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %2727 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i2062 = getelementptr inbounds nuw i32, ptr %2727, i64 %idxprom.i23.i.i.i.i.i2036, !amdgpu.uniform !42 %2728 = load atomic i32, ptr %arrayidx.i.i.i8.i.i2062 monotonic, align 4 %2729 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2728) %cmp.i.not.i.i.i.i2063 = icmp eq i32 %2729, %port.sroa.37.0.i.i2040.lcssa %2730 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i2063, i64 %phi.broken3984) %2731 = call i1 @llvm.amdgcn.loop.i64(i64 %2730) br i1 %2731, label %Flow, label %while.body.i.i.i.i2061 Flow: ; preds = %while.body.i.i.i.i2061 %.lcssa3985 = phi i64 [ %2730, %while.body.i.i.i.i2061 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3985) br label %Flow3402, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit2082: ; preds = %Flow3402 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %2732 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa3992, i1 true) %iszero.i.i.i.i.i13.i.i2065 = icmp ne i64 %.lcssa3992, 0 %cmp2.i.i.i.i14.i.i2066 = icmp eq i64 %2732, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i2067 = select i1 %iszero.i.i.i.i.i13.i.i2065, i1 %cmp2.i.i.i.i14.i.i2066, i1 false %2733 = and i32 %.lcssa3993, 31 %conv4.i.i.i19.i.i2071 = zext i1 %cmp.i.i.i.i15.i.i2067 to i32 %shl.i.i.i20.i.i2072 = shl nuw i32 %conv4.i.i.i19.i.i2071, %2733 %xor.i.i.i21.i.i2073 = xor i32 %shl.i.i.i20.i.i2072, -1 %2734 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2692, !amdgpu.uniform !42 2735: ; preds = %ComputeEnd2693 %div8.i.i.i16.i.i2068 = lshr i32 %.lcssa3993, 5 %idxprom.i.i.i17.i.i2069 = zext nneg i32 %div8.i.i.i16.i.i2068 to i64 %2736 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i2069 %sunkaddr3351 = getelementptr inbounds i8, ptr addrspace(1) %2736, i64 40 %2737 = atomicrmw and ptr addrspace(1) %sunkaddr3351, i32 %.lcssa syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2738, !amdgpu.uniform !42 2738: ; preds = %2735, %ComputeEnd2693 call void @llvm.amdgcn.end.cf.i64(i64 %4101) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3909, !amdgpu.uniform !42 _ZZN22__llvm_libc_22_0_0_git7testing8internal4testIiEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationEENKUlbNS_3cpp11string_viewEE_clEbSB_.exit: ; preds = %Flow3909 ret i1 %cmp Flow3414: ; preds = %loop-memcpy-expansion %.lcssa3996 = phi i64 [ %2628, %loop-memcpy-expansion ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3996) br label %Flow3415, !amdgpu.uniform !42 Flow3416: ; preds = %Flow3413, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1950 call void @llvm.amdgcn.end.cf.i64(i64 %2616) br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1951, !amdgpu.uniform !42 loop-memcpy-residual-header: ; preds = %Flow3415 %2739 = icmp ne i64 %2618, 0 %2740 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2739) %2741 = extractvalue { i1, i64 } %2740, 0 %2742 = extractvalue { i1, i64 } %2740, 1 br i1 %2741, label %loop-memcpy-residual.preheader, label %Flow3413 loop-memcpy-residual.preheader: ; preds = %loop-memcpy-residual-header %umin = call i64 @llvm.umin.i64(i64 %lsr.iv2860, i64 64) %2743 = lshr i64 %umin, 4 %2744 = shl nuw nsw i64 %2743, 4 %scevgep2863 = getelementptr i8, ptr %lsr.iv, i64 %2744 %scevgep2858 = getelementptr i8, ptr %2617, i64 %75 %scevgep2859 = getelementptr i8, ptr %scevgep2858, i64 %2586 %scevgep2861 = getelementptr i8, ptr %scevgep2859, i64 %2744 br label %loop-memcpy-residual, !amdgpu.uniform !42 Flow3423: ; preds = %loop-memcpy-expansion2195 %.lcssa4001 = phi i64 [ %2584, %loop-memcpy-expansion2195 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4001) br label %Flow3424, !amdgpu.uniform !42 loop-memcpy-residual-header2198: ; preds = %Flow3424 %2745 = icmp eq i64 %2572, 0 %2746 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2745) %2747 = extractvalue { i1, i64 } %2746, 0 %2748 = extractvalue { i1, i64 } %2746, 1 br i1 %2747, label %loop-memcpy-residual-header2198.post-loop-memcpy-expansion2194_crit_edge, label %Flow3421 loop-memcpy-residual-header2198.post-loop-memcpy-expansion2194_crit_edge: ; preds = %loop-memcpy-residual-header2198 %.pre3284 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1929, 6 br label %Flow3421, !amdgpu.uniform !42 Flow3421: ; preds = %loop-memcpy-residual-header2198.post-loop-memcpy-expansion2194_crit_edge, %loop-memcpy-residual-header2198 %2749 = phi i64 [ %.pre3284, %loop-memcpy-residual-header2198.post-loop-memcpy-expansion2194_crit_edge ], [ poison, %loop-memcpy-residual-header2198 ] %2750 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %2748) %2751 = extractvalue { i1, i64 } %2750, 0 %2752 = extractvalue { i1, i64 } %2750, 1 br i1 %2751, label %loop-memcpy-residual2197.preheader, label %Flow3422 loop-memcpy-residual2197.preheader: ; preds = %Flow3421 %2753 = lshr i64 %spec.select.i.i.i.i.i.i.i1932, 4 %2754 = shl nuw nsw i64 %2753, 4 %2755 = add i64 %75, %2754 %2756 = add i64 %2755, 8 %scevgep2865 = getelementptr i8, ptr %2571, i64 %2756 %2757 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1929, 6 %scevgep2866 = getelementptr i8, ptr %scevgep2865, i64 %2757 %scevgep2868 = getelementptr i8, ptr %2495, i64 %2754 br label %loop-memcpy-residual2197, !amdgpu.uniform !42 Flow3482: ; preds = %loop-memcpy-expansion2201 br label %Flow3483, !amdgpu.uniform !42 Flow3484: ; preds = %Flow3480, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1738 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1739, !amdgpu.uniform !42 loop-memcpy-residual-header2204: ; preds = %Flow3483 %2758 = icmp ne i64 %2260, 0 br i1 %2758, label %loop-memcpy-residual2203.preheader, label %Flow3480, !amdgpu.uniform !42 loop-memcpy-residual2203.preheader: ; preds = %loop-memcpy-residual-header2204 %umin2909 = call i64 @llvm.umin.i64(i64 %lsr.iv2907, i64 64) %2759 = lshr i64 %umin2909, 4 %2760 = shl nuw nsw i64 %2759, 4 %scevgep2912 = getelementptr i8, ptr %lsr.iv2901, i64 %2760 %scevgep2904 = getelementptr i8, ptr %2259, i64 %75 %scevgep2905 = getelementptr i8, ptr %scevgep2904, i64 %2234 %scevgep2910 = getelementptr i8, ptr %scevgep2905, i64 %2760 br label %loop-memcpy-residual2203, !amdgpu.uniform !42 Flow3495: ; preds = %loop-memcpy-expansion2207 br label %Flow3496, !amdgpu.uniform !42 loop-memcpy-residual-header2210: ; preds = %Flow3496 br i1 %2834, label %loop-memcpy-residual-header2210.post-loop-memcpy-expansion2206_crit_edge, label %Flow3492, !amdgpu.uniform !42 loop-memcpy-residual-header2210.post-loop-memcpy-expansion2206_crit_edge: ; preds = %loop-memcpy-residual-header2210 %.pre3280 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1717, 6 br label %Flow3492, !amdgpu.uniform !42 Flow3492: ; preds = %loop-memcpy-residual-header2210.post-loop-memcpy-expansion2206_crit_edge, %loop-memcpy-residual-header2210 %2761 = phi i64 [ %.pre3280, %loop-memcpy-residual-header2210.post-loop-memcpy-expansion2206_crit_edge ], [ poison, %loop-memcpy-residual-header2210 ] %2762 = phi i1 [ false, %loop-memcpy-residual-header2210.post-loop-memcpy-expansion2206_crit_edge ], [ true, %loop-memcpy-residual-header2210 ] br i1 %2762, label %loop-memcpy-residual2209.preheader, label %Flow3493, !amdgpu.uniform !42 loop-memcpy-residual2209.preheader: ; preds = %Flow3492 %2763 = lshr i64 %spec.select.i.i.i.i.i.i.i374, 4 %2764 = shl nuw nsw i64 %2763, 4 %2765 = add i64 %75, %2764 %2766 = add i64 %2765, 8 %scevgep2914 = getelementptr i8, ptr %2227, i64 %2766 %2767 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1717, 6 %scevgep2915 = getelementptr i8, ptr %scevgep2914, i64 %2767 %scevgep2917 = getelementptr i8, ptr %2171, i64 %2764 br label %loop-memcpy-residual2209, !amdgpu.uniform !42 Flow3525: ; preds = %loop-memcpy-expansion2213 %.lcssa4044 = phi i64 [ %2060, %loop-memcpy-expansion2213 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4044) br label %Flow3526, !amdgpu.uniform !42 Flow3527: ; preds = %Flow3523, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1533 call void @llvm.amdgcn.end.cf.i64(i64 %2048) br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1534, !amdgpu.uniform !42 loop-memcpy-residual-header2216: ; preds = %Flow3526 %2768 = icmp ne i64 %2050, 0 %2769 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2768) %2770 = extractvalue { i1, i64 } %2769, 0 %2771 = extractvalue { i1, i64 } %2769, 1 br i1 %2770, label %loop-memcpy-residual2215.preheader, label %Flow3523 loop-memcpy-residual2215.preheader: ; preds = %loop-memcpy-residual-header2216 %umin2940 = call i64 @llvm.umin.i64(i64 %lsr.iv2935, i64 64) %2772 = lshr i64 %umin2940, 4 %2773 = shl nuw nsw i64 %2772, 4 %scevgep2941 = getelementptr i8, ptr %lsr.iv2928, i64 %2773 %scevgep2931 = getelementptr i8, ptr %2049, i64 %75 %scevgep2932 = getelementptr i8, ptr %scevgep2931, i64 %2018 %scevgep2938 = getelementptr i8, ptr %scevgep2932, i64 %2773 br label %loop-memcpy-residual2215, !amdgpu.uniform !42 Flow3538: ; preds = %loop-memcpy-expansion2219 %.lcssa4049 = phi i64 [ %2016, %loop-memcpy-expansion2219 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4049) br label %Flow3539, !amdgpu.uniform !42 loop-memcpy-residual-header2222: ; preds = %Flow3539 %2774 = icmp eq i64 %2004, 0 %2775 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2774) %2776 = extractvalue { i1, i64 } %2775, 0 %2777 = extractvalue { i1, i64 } %2775, 1 br i1 %2776, label %loop-memcpy-residual-header2222.post-loop-memcpy-expansion2218_crit_edge, label %Flow3535 loop-memcpy-residual-header2222.post-loop-memcpy-expansion2218_crit_edge: ; preds = %loop-memcpy-residual-header2222 %.pre3278 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1512, 6 br label %Flow3535, !amdgpu.uniform !42 Flow3535: ; preds = %loop-memcpy-residual-header2222.post-loop-memcpy-expansion2218_crit_edge, %loop-memcpy-residual-header2222 %2778 = phi i64 [ %.pre3278, %loop-memcpy-residual-header2222.post-loop-memcpy-expansion2218_crit_edge ], [ poison, %loop-memcpy-residual-header2222 ] %2779 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %2777) %2780 = extractvalue { i1, i64 } %2779, 0 %2781 = extractvalue { i1, i64 } %2779, 1 br i1 %2780, label %loop-memcpy-residual2221.preheader, label %Flow3536 loop-memcpy-residual2221.preheader: ; preds = %Flow3535 %2782 = add nuw nsw i64 %75, 8 %scevgep2943 = getelementptr i8, ptr %2003, i64 %2782 %umin2946 = call i64 @llvm.umin.i64(i64 %lsr.iv.next2945.lcssa, i64 56) %2783 = lshr i64 %umin2946, 4 %2784 = shl nuw nsw i64 %2783, 4 %scevgep2947 = getelementptr i8, ptr %scevgep2943, i64 %2784 %2785 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1512, 6 %scevgep2948 = getelementptr i8, ptr %scevgep2947, i64 %2785 %scevgep2950 = getelementptr i8, ptr %RHSStr, i64 %2784 br label %loop-memcpy-residual2221, !amdgpu.uniform !42 Flow3640: ; preds = %loop-memcpy-expansion2225 %.lcssa4099 = phi i64 [ %1508, %loop-memcpy-expansion2225 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4099) br label %Flow3641, !amdgpu.uniform !42 Flow3642: ; preds = %Flow3638, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1017 call void @llvm.amdgcn.end.cf.i64(i64 %1496) br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1018, !amdgpu.uniform !42 loop-memcpy-residual-header2228: ; preds = %Flow3641 %2786 = icmp ne i64 %1498, 0 %2787 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2786) %2788 = extractvalue { i1, i64 } %2787, 0 %2789 = extractvalue { i1, i64 } %2787, 1 br i1 %2788, label %loop-memcpy-residual2227.preheader, label %Flow3638 loop-memcpy-residual2227.preheader: ; preds = %loop-memcpy-residual-header2228 %umin3024 = call i64 @llvm.umin.i64(i64 %lsr.iv3022, i64 64) %2790 = lshr i64 %umin3024, 4 %2791 = shl nuw nsw i64 %2790, 4 %scevgep3027 = getelementptr i8, ptr %lsr.iv3017, i64 %2791 %scevgep3020 = getelementptr i8, ptr %1497, i64 %75 %scevgep3021 = getelementptr i8, ptr %scevgep3020, i64 %1466 %scevgep3025 = getelementptr i8, ptr %scevgep3021, i64 %2791 br label %loop-memcpy-residual2227, !amdgpu.uniform !42 Flow3653: ; preds = %loop-memcpy-expansion2231 %.lcssa4104 = phi i64 [ %1464, %loop-memcpy-expansion2231 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4104) br label %Flow3654, !amdgpu.uniform !42 loop-memcpy-residual-header2234: ; preds = %Flow3654 %2792 = icmp eq i64 %1452, 0 %2793 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2792) %2794 = extractvalue { i1, i64 } %2793, 0 %2795 = extractvalue { i1, i64 } %2793, 1 br i1 %2794, label %loop-memcpy-residual-header2234.post-loop-memcpy-expansion2230_crit_edge, label %Flow3650 loop-memcpy-residual-header2234.post-loop-memcpy-expansion2230_crit_edge: ; preds = %loop-memcpy-residual-header2234 %.pre3270 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i996, 6 br label %Flow3650, !amdgpu.uniform !42 Flow3650: ; preds = %loop-memcpy-residual-header2234.post-loop-memcpy-expansion2230_crit_edge, %loop-memcpy-residual-header2234 %2796 = phi i64 [ %.pre3270, %loop-memcpy-residual-header2234.post-loop-memcpy-expansion2230_crit_edge ], [ poison, %loop-memcpy-residual-header2234 ] %2797 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %2795) %2798 = extractvalue { i1, i64 } %2797, 0 %2799 = extractvalue { i1, i64 } %2797, 1 br i1 %2798, label %loop-memcpy-residual2233.preheader, label %Flow3651 loop-memcpy-residual2233.preheader: ; preds = %Flow3650 %2800 = lshr i64 %spec.select.i.i.i.i.i.i.i999, 4 %2801 = shl nuw nsw i64 %2800, 4 %2802 = add i64 %75, %2801 %2803 = add i64 %2802, 8 %scevgep3029 = getelementptr i8, ptr %1451, i64 %2803 %2804 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i996, 6 %scevgep3030 = getelementptr i8, ptr %scevgep3029, i64 %2804 %scevgep3032 = getelementptr i8, ptr %1375, i64 %2801 br label %loop-memcpy-residual2233, !amdgpu.uniform !42 Flow3716: ; preds = %loop-memcpy-expansion2237 br label %Flow3717, !amdgpu.uniform !42 Flow3718: ; preds = %Flow3715, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i805 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i806, !amdgpu.uniform !42 loop-memcpy-residual-header2240: ; preds = %Flow3717 %2805 = icmp ne i64 %1137, 0 br i1 %2805, label %loop-memcpy-residual2239.preheader, label %Flow3715, !amdgpu.uniform !42 loop-memcpy-residual2239.preheader: ; preds = %loop-memcpy-residual-header2240 %umin3073 = call i64 @llvm.umin.i64(i64 %lsr.iv3071, i64 64) %2806 = lshr i64 %umin3073, 4 %2807 = shl nuw nsw i64 %2806, 4 %scevgep3076 = getelementptr i8, ptr %lsr.iv3065, i64 %2807 %scevgep3068 = getelementptr i8, ptr %1136, i64 %75 %scevgep3069 = getelementptr i8, ptr %scevgep3068, i64 %1111 %scevgep3074 = getelementptr i8, ptr %scevgep3069, i64 %2807 br label %loop-memcpy-residual2239, !amdgpu.uniform !42 Flow3725: ; preds = %loop-memcpy-expansion2243 br label %Flow3726, !amdgpu.uniform !42 loop-memcpy-residual-header2246: ; preds = %Flow3726 br i1 %2834, label %loop-memcpy-residual-header2246.post-loop-memcpy-expansion2242_crit_edge, label %Flow3723, !amdgpu.uniform !42 loop-memcpy-residual-header2246.post-loop-memcpy-expansion2242_crit_edge: ; preds = %loop-memcpy-residual-header2246 %.pre3266 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i784, 6 br label %Flow3723, !amdgpu.uniform !42 Flow3723: ; preds = %loop-memcpy-residual-header2246.post-loop-memcpy-expansion2242_crit_edge, %loop-memcpy-residual-header2246 %2808 = phi i64 [ %.pre3266, %loop-memcpy-residual-header2246.post-loop-memcpy-expansion2242_crit_edge ], [ poison, %loop-memcpy-residual-header2246 ] %2809 = phi i1 [ false, %loop-memcpy-residual-header2246.post-loop-memcpy-expansion2242_crit_edge ], [ true, %loop-memcpy-residual-header2246 ] br i1 %2809, label %loop-memcpy-residual2245.preheader, label %Flow3724, !amdgpu.uniform !42 loop-memcpy-residual2245.preheader: ; preds = %Flow3723 %2810 = add i64 %75, %655 %2811 = add i64 %2810, 8 %scevgep3078 = getelementptr i8, ptr %1104, i64 %2811 %2812 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i784, 6 %scevgep3079 = getelementptr i8, ptr %scevgep3078, i64 %2812 %scevgep3081 = getelementptr i8, ptr %1048, i64 %655 br label %loop-memcpy-residual2245, !amdgpu.uniform !42 Flow3748: ; preds = %loop-memcpy-expansion2249 %.lcssa4147 = phi i64 [ %937, %loop-memcpy-expansion2249 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4147) br label %Flow3749, !amdgpu.uniform !42 Flow3750: ; preds = %Flow3747, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i603 call void @llvm.amdgcn.end.cf.i64(i64 %925) br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i604, !amdgpu.uniform !42 loop-memcpy-residual-header2252: ; preds = %Flow3749 %2813 = icmp ne i64 %927, 0 %2814 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2813) %2815 = extractvalue { i1, i64 } %2814, 0 %2816 = extractvalue { i1, i64 } %2814, 1 br i1 %2815, label %loop-memcpy-residual2251.preheader, label %Flow3747 loop-memcpy-residual2251.preheader: ; preds = %loop-memcpy-residual-header2252 %umin3103 = call i64 @llvm.umin.i64(i64 %lsr.iv3098, i64 64) %2817 = lshr i64 %umin3103, 4 %2818 = shl nuw nsw i64 %2817, 4 %scevgep3104 = getelementptr i8, ptr %lsr.iv3091, i64 %2818 %scevgep3094 = getelementptr i8, ptr %926, i64 %75 %scevgep3095 = getelementptr i8, ptr %scevgep3094, i64 %895 %scevgep3101 = getelementptr i8, ptr %scevgep3095, i64 %2818 br label %loop-memcpy-residual2251, !amdgpu.uniform !42 Flow3757: ; preds = %loop-memcpy-expansion2255 %.lcssa4152 = phi i64 [ %893, %loop-memcpy-expansion2255 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4152) br label %Flow3758, !amdgpu.uniform !42 loop-memcpy-residual-header2258: ; preds = %Flow3758 %2819 = icmp eq i64 %881, 0 %2820 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2819) %2821 = extractvalue { i1, i64 } %2820, 0 %2822 = extractvalue { i1, i64 } %2820, 1 br i1 %2821, label %loop-memcpy-residual-header2258.post-loop-memcpy-expansion2254_crit_edge, label %Flow3755 loop-memcpy-residual-header2258.post-loop-memcpy-expansion2254_crit_edge: ; preds = %loop-memcpy-residual-header2258 %.pre3264 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i582, 6 br label %Flow3755, !amdgpu.uniform !42 Flow3755: ; preds = %loop-memcpy-residual-header2258.post-loop-memcpy-expansion2254_crit_edge, %loop-memcpy-residual-header2258 %2823 = phi i64 [ %.pre3264, %loop-memcpy-residual-header2258.post-loop-memcpy-expansion2254_crit_edge ], [ poison, %loop-memcpy-residual-header2258 ] %2824 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %2822) %2825 = extractvalue { i1, i64 } %2824, 0 %2826 = extractvalue { i1, i64 } %2824, 1 br i1 %2825, label %loop-memcpy-residual2257.preheader, label %Flow3756 loop-memcpy-residual2257.preheader: ; preds = %Flow3755 %2827 = add nuw nsw i64 %75, 8 %scevgep3106 = getelementptr i8, ptr %880, i64 %2827 %umin3109 = call i64 @llvm.umin.i64(i64 %lsr.iv.next3108.lcssa, i64 56) %2828 = lshr i64 %umin3109, 4 %2829 = shl nuw nsw i64 %2828, 4 %scevgep3110 = getelementptr i8, ptr %scevgep3106, i64 %2829 %2830 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i582, 6 %scevgep3111 = getelementptr i8, ptr %scevgep3110, i64 %2830 %scevgep3113 = getelementptr i8, ptr %LHSStr, i64 %2829 br label %loop-memcpy-residual2257, !amdgpu.uniform !42 Flow3786: ; preds = %loop-memcpy-expansion2261 br label %Flow3787, !amdgpu.uniform !42 Flow3788: ; preds = %Flow3785, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i392 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i393, !amdgpu.uniform !42 loop-memcpy-residual-header2264: ; preds = %Flow3787 %2831 = icmp ne i64 %690, 0 br i1 %2831, label %loop-memcpy-residual2263.preheader, label %Flow3785, !amdgpu.uniform !42 loop-memcpy-residual2263.preheader: ; preds = %loop-memcpy-residual-header2264 %umin3149 = call i64 @llvm.umin.i64(i64 %lsr.iv3147, i64 64) %2832 = lshr i64 %umin3149, 4 %2833 = shl nuw nsw i64 %2832, 4 %scevgep3152 = getelementptr i8, ptr %lsr.iv3141, i64 %2833 %scevgep3144 = getelementptr i8, ptr %689, i64 %75 %scevgep3145 = getelementptr i8, ptr %scevgep3144, i64 %663 %scevgep3150 = getelementptr i8, ptr %scevgep3145, i64 %2833 br label %loop-memcpy-residual2263, !amdgpu.uniform !42 Flow3795: ; preds = %loop-memcpy-expansion2267 br label %Flow3796, !amdgpu.uniform !42 loop-memcpy-residual-header2270: ; preds = %Flow3796 %2834 = icmp eq i64 %654, 0 br i1 %2834, label %loop-memcpy-residual-header2270.post-loop-memcpy-expansion2266_crit_edge, label %Flow3793, !amdgpu.uniform !42 loop-memcpy-residual-header2270.post-loop-memcpy-expansion2266_crit_edge: ; preds = %loop-memcpy-residual-header2270 %.pre3260 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i371, 6 br label %Flow3793, !amdgpu.uniform !42 Flow3793: ; preds = %loop-memcpy-residual-header2270.post-loop-memcpy-expansion2266_crit_edge, %loop-memcpy-residual-header2270 %2835 = phi i64 [ %.pre3260, %loop-memcpy-residual-header2270.post-loop-memcpy-expansion2266_crit_edge ], [ poison, %loop-memcpy-residual-header2270 ] %2836 = phi i1 [ false, %loop-memcpy-residual-header2270.post-loop-memcpy-expansion2266_crit_edge ], [ true, %loop-memcpy-residual-header2270 ] br i1 %2836, label %loop-memcpy-residual2269.preheader, label %Flow3794, !amdgpu.uniform !42 loop-memcpy-residual2269.preheader: ; preds = %Flow3793 %2837 = add i64 %75, %655 %2838 = add i64 %2837, 8 %scevgep3154 = getelementptr i8, ptr %653, i64 %2838 %2839 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i371, 6 %scevgep3155 = getelementptr i8, ptr %scevgep3154, i64 %2839 %scevgep3157 = getelementptr i8, ptr %594, i64 %655 br label %loop-memcpy-residual2269, !amdgpu.uniform !42 Flow3828: ; preds = %loop-memcpy-expansion2273 %.lcssa4192 = phi i64 [ %458, %loop-memcpy-expansion2273 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4192) br label %Flow3829, !amdgpu.uniform !42 Flow3830: ; preds = %Flow3827, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i181 call void @llvm.amdgcn.end.cf.i64(i64 %446) br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i182, !amdgpu.uniform !42 loop-memcpy-residual-header2276: ; preds = %Flow3829 %2840 = icmp ne i64 %448, 0 %2841 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2840) %2842 = extractvalue { i1, i64 } %2841, 0 %2843 = extractvalue { i1, i64 } %2841, 1 br i1 %2842, label %loop-memcpy-residual2275.preheader, label %Flow3827 loop-memcpy-residual2275.preheader: ; preds = %loop-memcpy-residual-header2276 %umin3193 = call i64 @llvm.umin.i64(i64 %lsr.iv3191, i64 64) %2844 = lshr i64 %umin3193, 4 %2845 = shl nuw nsw i64 %2844, 4 %scevgep3196 = getelementptr i8, ptr %lsr.iv3186, i64 %2845 %scevgep3189 = getelementptr i8, ptr %447, i64 %75 %scevgep3190 = getelementptr i8, ptr %scevgep3189, i64 %416 %scevgep3194 = getelementptr i8, ptr %scevgep3190, i64 %2845 br label %loop-memcpy-residual2275, !amdgpu.uniform !42 Flow3837: ; preds = %loop-memcpy-expansion2279 %.lcssa4197 = phi i64 [ %414, %loop-memcpy-expansion2279 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4197) br label %Flow3838, !amdgpu.uniform !42 loop-memcpy-residual-header2282: ; preds = %Flow3838 %2846 = icmp eq i64 %402, 0 %2847 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2846) %2848 = extractvalue { i1, i64 } %2847, 0 %2849 = extractvalue { i1, i64 } %2847, 1 br i1 %2848, label %loop-memcpy-residual-header2282.post-loop-memcpy-expansion2278_crit_edge, label %Flow3835 loop-memcpy-residual-header2282.post-loop-memcpy-expansion2278_crit_edge: ; preds = %loop-memcpy-residual-header2282 %.pre3256 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i160, 6 br label %Flow3835, !amdgpu.uniform !42 Flow3835: ; preds = %loop-memcpy-residual-header2282.post-loop-memcpy-expansion2278_crit_edge, %loop-memcpy-residual-header2282 %2850 = phi i64 [ %.pre3256, %loop-memcpy-residual-header2282.post-loop-memcpy-expansion2278_crit_edge ], [ poison, %loop-memcpy-residual-header2282 ] %2851 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %2849) %2852 = extractvalue { i1, i64 } %2851, 0 %2853 = extractvalue { i1, i64 } %2851, 1 br i1 %2852, label %loop-memcpy-residual2281.preheader, label %Flow3836 loop-memcpy-residual2281.preheader: ; preds = %Flow3835 %2854 = lshr i64 %spec.select.i.i.i.i.i.i.i163, 4 %2855 = shl nuw nsw i64 %2854, 4 %2856 = add i64 %75, %2855 %2857 = add i64 %2856, 8 %scevgep3198 = getelementptr i8, ptr %401, i64 %2857 %2858 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i160, 6 %scevgep3199 = getelementptr i8, ptr %scevgep3198, i64 %2858 %scevgep3201 = getelementptr i8, ptr %325, i64 %2855 br label %loop-memcpy-residual2281, !amdgpu.uniform !42 Flow3505: ; preds = %loop-memcpy-expansion2285 br label %Flow3506, !amdgpu.uniform !42 loop-memcpy-residual-header2288: ; preds = %Flow3506 br i1 %2861, label %loop-memcpy-residual2287.preheader, label %Flow3503, !amdgpu.uniform !42 loop-memcpy-residual2287.preheader: ; preds = %loop-memcpy-residual-header2288 %2859 = sub i64 sub (i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.9, i64 8) to ptr) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.9 to ptr) to i64)), %umin3146 %2860 = sub i64 %2859, %595 %scevgep2923 = getelementptr i8, ptr %2171, i64 %2860 %scevgep2925 = getelementptr i8, ptr %3, i64 %2860 br label %loop-memcpy-residual2287, !amdgpu.uniform !42 Flow3733: ; preds = %loop-memcpy-expansion2291 br label %Flow3734, !amdgpu.uniform !42 loop-memcpy-residual-header2294: ; preds = %Flow3734 br i1 %2861, label %loop-memcpy-residual2293.preheader, label %Flow3732, !amdgpu.uniform !42 loop-memcpy-residual2293.preheader: ; preds = %loop-memcpy-residual-header2294 %scevgep3086 = getelementptr i8, ptr %1048, i64 %596 %scevgep3088 = getelementptr i8, ptr %3, i64 %596 br label %loop-memcpy-residual2293, !amdgpu.uniform !42 Flow3803: ; preds = %loop-memcpy-expansion2297 br label %Flow3804, !amdgpu.uniform !42 loop-memcpy-residual-header2300: ; preds = %Flow3804 %2861 = icmp ne i64 %595, 0 br i1 %2861, label %loop-memcpy-residual2299.preheader, label %Flow3802, !amdgpu.uniform !42 loop-memcpy-residual2299.preheader: ; preds = %loop-memcpy-residual-header2300 %scevgep3162 = getelementptr i8, ptr %594, i64 %596 %scevgep3164 = getelementptr i8, ptr %3, i64 %596 br label %loop-memcpy-residual2299, !amdgpu.uniform !42 Flow3845: ; preds = %loop-memcpy-expansion2303 %.lcssa4205 = phi i64 [ %347, %loop-memcpy-expansion2303 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4205) br label %Flow3846, !amdgpu.uniform !42 loop-memcpy-residual-header2306: ; preds = %Flow3846 %2862 = icmp ne i64 %336, 0 %2863 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2862) %2864 = extractvalue { i1, i64 } %2863, 0 %2865 = extractvalue { i1, i64 } %2863, 1 br i1 %2864, label %loop-memcpy-residual2305.preheader, label %Flow3844 loop-memcpy-residual2305.preheader: ; preds = %loop-memcpy-residual-header2306 %2866 = lshr i64 %writer.sroa.10.4.i.i.i.i, 4 %2867 = trunc i64 %2866 to i32 %2868 = shl i32 %2867, 4 %2869 = add i32 %2868, 11 %2870 = sub i32 %2869, %335 %scevgep3206 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i, i32 %2870 %2871 = shl nuw i64 %2866, 4 %scevgep3209 = getelementptr i8, ptr %325, i64 %2871 br label %loop-memcpy-residual2305, !amdgpu.uniform !42 Flow3431: ; preds = %loop-memcpy-expansion2309 %.lcssa4009 = phi i64 [ %2517, %loop-memcpy-expansion2309 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4009) br label %Flow3432, !amdgpu.uniform !42 loop-memcpy-residual-header2312: ; preds = %Flow3432 %2872 = icmp ne i64 %2506, 0 %2873 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2872) %2874 = extractvalue { i1, i64 } %2873, 0 %2875 = extractvalue { i1, i64 } %2873, 1 br i1 %2874, label %loop-memcpy-residual2311.preheader, label %Flow3430 loop-memcpy-residual2311.preheader: ; preds = %loop-memcpy-residual-header2312 %2876 = lshr i64 %writer.sroa.10.5.i.i.i.i129.i, 4 %2877 = trunc i64 %2876 to i32 %2878 = shl i32 %2877, 4 %2879 = add i32 %2878, 11 %2880 = sub i32 %2879, %2505 %scevgep2873 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i, i32 %2880 %2881 = shl nuw i64 %2876, 4 %scevgep2876 = getelementptr i8, ptr %2495, i64 %2881 br label %loop-memcpy-residual2311, !amdgpu.uniform !42 Flow3663: ; preds = %loop-memcpy-expansion2315 %.lcssa4112 = phi i64 [ %1397, %loop-memcpy-expansion2315 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4112) br label %Flow3664, !amdgpu.uniform !42 loop-memcpy-residual-header2318: ; preds = %Flow3664 %2882 = icmp ne i64 %1386, 0 %2883 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2882) %2884 = extractvalue { i1, i64 } %2883, 0 %2885 = extractvalue { i1, i64 } %2883, 1 br i1 %2884, label %loop-memcpy-residual2317.preheader, label %Flow3661 loop-memcpy-residual2317.preheader: ; preds = %loop-memcpy-residual-header2318 %2886 = lshr i64 %writer.sroa.10.5.i.i.i.i.i, 4 %2887 = trunc i64 %2886 to i32 %2888 = shl i32 %2887, 4 %2889 = add i32 %2888, 11 %2890 = sub i32 %2889, %1385 %scevgep3037 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i, i32 %2890 %2891 = shl nuw i64 %2886, 4 %scevgep3040 = getelementptr i8, ptr %1375, i64 %2891 br label %loop-memcpy-residual2317, !amdgpu.uniform !42 Flow3898: ; preds = %loop-memcpy-expansion2321 br label %Flow3899, !amdgpu.uniform !42 loop-memcpy-residual-header2324: ; preds = %Flow3899 %2892 = icmp eq i64 %65, 0 br i1 %2892, label %loop-memcpy-residual-header2324.post-loop-memcpy-expansion2320_crit_edge, label %Flow3896, !amdgpu.uniform !42 loop-memcpy-residual-header2324.post-loop-memcpy-expansion2320_crit_edge: ; preds = %loop-memcpy-residual-header2324 %.pre = shl nuw nsw i64 %sh_prom.i.i.i.i, 6 %.pre3252 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i, 6 br label %Flow3896, !amdgpu.uniform !42 Flow3896: ; preds = %loop-memcpy-residual-header2324.post-loop-memcpy-expansion2320_crit_edge, %loop-memcpy-residual-header2324 %2893 = phi i64 [ %.pre, %loop-memcpy-residual-header2324.post-loop-memcpy-expansion2320_crit_edge ], [ poison, %loop-memcpy-residual-header2324 ] %2894 = phi i64 [ %.pre3252, %loop-memcpy-residual-header2324.post-loop-memcpy-expansion2320_crit_edge ], [ poison, %loop-memcpy-residual-header2324 ] %2895 = phi i1 [ false, %loop-memcpy-residual-header2324.post-loop-memcpy-expansion2320_crit_edge ], [ true, %loop-memcpy-residual-header2324 ] br i1 %2895, label %loop-memcpy-residual2323.preheader, label %Flow3897, !amdgpu.uniform !42 loop-memcpy-residual2323.preheader: ; preds = %Flow3896 %2896 = shl nuw nsw i64 %sh_prom.i.i.i.i, 6 %2897 = add nuw nsw i64 %2896, 56 %scevgep3245 = getelementptr i8, ptr %64, i64 %2897 %2898 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i, 6 %scevgep3246 = getelementptr i8, ptr %scevgep3245, i64 %2898 br label %loop-memcpy-residual2323, !amdgpu.uniform !42 Flow3889: ; preds = %loop-memcpy-expansion2327 br label %Flow3890, !amdgpu.uniform !42 Flow3891: ; preds = %Flow3888, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i, !amdgpu.uniform !42 loop-memcpy-residual-header2330: ; preds = %Flow3890 %2899 = icmp ne i64 %102, 0 br i1 %2899, label %loop-memcpy-residual2329.preheader, label %Flow3888, !amdgpu.uniform !42 loop-memcpy-residual2329.preheader: ; preds = %loop-memcpy-residual-header2330 %umin3240 = call i64 @llvm.umin.i64(i64 %lsr.iv3238, i64 64) %2900 = lshr i64 %umin3240, 4 %2901 = shl nuw nsw i64 %2900, 4 %scevgep3243 = getelementptr i8, ptr addrspace(4) %lsr.iv3233, i64 %2901 %scevgep3236 = getelementptr i8, ptr %101, i64 %75 %scevgep3237 = getelementptr i8, ptr %scevgep3236, i64 %76 %scevgep3241 = getelementptr i8, ptr %scevgep3237, i64 %2901 br label %loop-memcpy-residual2329, !amdgpu.uniform !42 Flow3879: ; preds = %loop-memcpy-expansion2333 br label %Flow3880, !amdgpu.uniform !42 loop-memcpy-residual-header2336: ; preds = %Flow3880 %2902 = icmp eq i64 %178, 0 br i1 %2902, label %loop-memcpy-residual-header2336.post-loop-memcpy-expansion2332_crit_edge, label %Flow3877, !amdgpu.uniform !42 loop-memcpy-residual-header2336.post-loop-memcpy-expansion2332_crit_edge: ; preds = %loop-memcpy-residual-header2336 %.pre3254 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i56, 6 br label %Flow3877, !amdgpu.uniform !42 Flow3877: ; preds = %loop-memcpy-residual-header2336.post-loop-memcpy-expansion2332_crit_edge, %loop-memcpy-residual-header2336 %2903 = phi i64 [ %.pre3254, %loop-memcpy-residual-header2336.post-loop-memcpy-expansion2332_crit_edge ], [ poison, %loop-memcpy-residual-header2336 ] %2904 = phi i1 [ false, %loop-memcpy-residual-header2336.post-loop-memcpy-expansion2332_crit_edge ], [ true, %loop-memcpy-residual-header2336 ] br i1 %2904, label %loop-memcpy-residual2335.preheader, label %Flow3878, !amdgpu.uniform !42 loop-memcpy-residual2335.preheader: ; preds = %Flow3877 %2905 = add nuw nsw i64 %75, 8 %scevgep3226 = getelementptr i8, ptr %177, i64 %2905 %2906 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i56, 6 %scevgep3227 = getelementptr i8, ptr %scevgep3226, i64 %2906 br label %loop-memcpy-residual2335, !amdgpu.uniform !42 Flow3870: ; preds = %loop-memcpy-expansion2339 br label %Flow3871, !amdgpu.uniform !42 Flow3872: ; preds = %Flow3869, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i77 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i78, !amdgpu.uniform !42 loop-memcpy-residual-header2342: ; preds = %Flow3871 %2907 = icmp ne i64 %213, 0 br i1 %2907, label %loop-memcpy-residual2341.preheader, label %Flow3869, !amdgpu.uniform !42 loop-memcpy-residual2341.preheader: ; preds = %loop-memcpy-residual-header2342 %umin3221 = call i64 @llvm.umin.i64(i64 %lsr.iv3219, i64 64) %2908 = lshr i64 %umin3221, 4 %2909 = shl nuw nsw i64 %2908, 4 %scevgep3224 = getelementptr i8, ptr addrspace(4) %lsr.iv3214, i64 %2909 %scevgep3217 = getelementptr i8, ptr %212, i64 %75 %scevgep3218 = getelementptr i8, ptr %scevgep3217, i64 %187 %scevgep3222 = getelementptr i8, ptr %scevgep3218, i64 %2909 br label %loop-memcpy-residual2341, !amdgpu.uniform !42 Flow3818: ; preds = %loop-memcpy-expansion2345 br label %Flow3819, !amdgpu.uniform !42 loop-memcpy-residual-header2348: ; preds = %Flow3819 %2910 = icmp eq i64 %531, 0 br i1 %2910, label %loop-memcpy-residual-header2348.post-loop-memcpy-expansion2344_crit_edge, label %Flow3816, !amdgpu.uniform !42 loop-memcpy-residual-header2348.post-loop-memcpy-expansion2344_crit_edge: ; preds = %loop-memcpy-residual-header2348 %.pre3258 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i265, 6 br label %Flow3816, !amdgpu.uniform !42 Flow3816: ; preds = %loop-memcpy-residual-header2348.post-loop-memcpy-expansion2344_crit_edge, %loop-memcpy-residual-header2348 %2911 = phi i64 [ %.pre3258, %loop-memcpy-residual-header2348.post-loop-memcpy-expansion2344_crit_edge ], [ poison, %loop-memcpy-residual-header2348 ] %2912 = phi i1 [ false, %loop-memcpy-residual-header2348.post-loop-memcpy-expansion2344_crit_edge ], [ true, %loop-memcpy-residual-header2348 ] br i1 %2912, label %loop-memcpy-residual2347.preheader, label %Flow3817, !amdgpu.uniform !42 loop-memcpy-residual2347.preheader: ; preds = %Flow3816 %2913 = add nuw nsw i64 %75, 8 %scevgep3178 = getelementptr i8, ptr %530, i64 %2913 %2914 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i265, 6 %scevgep3179 = getelementptr i8, ptr %scevgep3178, i64 %2914 br label %loop-memcpy-residual2347, !amdgpu.uniform !42 Flow3809: ; preds = %loop-memcpy-expansion2351 br label %Flow3810, !amdgpu.uniform !42 Flow3811: ; preds = %Flow3808, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i286 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i287, !amdgpu.uniform !42 loop-memcpy-residual-header2354: ; preds = %Flow3810 %2915 = icmp ne i64 %566, 0 br i1 %2915, label %loop-memcpy-residual2353.preheader, label %Flow3808, !amdgpu.uniform !42 loop-memcpy-residual2353.preheader: ; preds = %loop-memcpy-residual-header2354 %umin3173 = call i64 @llvm.umin.i64(i64 %lsr.iv3171, i64 64) %2916 = lshr i64 %umin3173, 4 %2917 = shl nuw nsw i64 %2916, 4 %scevgep3176 = getelementptr i8, ptr addrspace(4) %lsr.iv3166, i64 %2917 %scevgep3169 = getelementptr i8, ptr %565, i64 %75 %scevgep3170 = getelementptr i8, ptr %scevgep3169, i64 %540 %scevgep3174 = getelementptr i8, ptr %scevgep3170, i64 %2917 br label %loop-memcpy-residual2353, !amdgpu.uniform !42 Flow3776: ; preds = %loop-memcpy-expansion2357 br label %Flow3777, !amdgpu.uniform !42 loop-memcpy-residual-header2360: ; preds = %Flow3777 %2918 = icmp eq i64 %766, 0 br i1 %2918, label %loop-memcpy-residual-header2360.post-loop-memcpy-expansion2356_crit_edge, label %Flow3774, !amdgpu.uniform !42 loop-memcpy-residual-header2360.post-loop-memcpy-expansion2356_crit_edge: ; preds = %loop-memcpy-residual-header2360 %.pre3262 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i476, 6 br label %Flow3774, !amdgpu.uniform !42 Flow3774: ; preds = %loop-memcpy-residual-header2360.post-loop-memcpy-expansion2356_crit_edge, %loop-memcpy-residual-header2360 %2919 = phi i64 [ %.pre3262, %loop-memcpy-residual-header2360.post-loop-memcpy-expansion2356_crit_edge ], [ poison, %loop-memcpy-residual-header2360 ] %2920 = phi i1 [ false, %loop-memcpy-residual-header2360.post-loop-memcpy-expansion2356_crit_edge ], [ true, %loop-memcpy-residual-header2360 ] br i1 %2920, label %loop-memcpy-residual2359.preheader, label %Flow3775, !amdgpu.uniform !42 loop-memcpy-residual2359.preheader: ; preds = %Flow3774 %2921 = add nuw nsw i64 %75, 8 %scevgep3133 = getelementptr i8, ptr %765, i64 %2921 %2922 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i476, 6 %scevgep3134 = getelementptr i8, ptr %scevgep3133, i64 %2922 br label %loop-memcpy-residual2359, !amdgpu.uniform !42 Flow3767: ; preds = %loop-memcpy-expansion2363 br label %Flow3768, !amdgpu.uniform !42 Flow3769: ; preds = %Flow3766, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i497 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i498, !amdgpu.uniform !42 loop-memcpy-residual-header2366: ; preds = %Flow3768 %2923 = icmp ne i64 %801, 0 br i1 %2923, label %loop-memcpy-residual2365.preheader, label %Flow3766, !amdgpu.uniform !42 loop-memcpy-residual2365.preheader: ; preds = %loop-memcpy-residual-header2366 %umin3128 = call i64 @llvm.umin.i64(i64 %lsr.iv3126, i64 64) %2924 = lshr i64 %umin3128, 4 %2925 = shl nuw nsw i64 %2924, 4 %scevgep3131 = getelementptr i8, ptr addrspace(4) %lsr.iv3121, i64 %2925 %scevgep3124 = getelementptr i8, ptr %800, i64 %75 %scevgep3125 = getelementptr i8, ptr %scevgep3124, i64 %775 %scevgep3129 = getelementptr i8, ptr %scevgep3125, i64 %2925 br label %loop-memcpy-residual2365, !amdgpu.uniform !42 Flow3706: ; preds = %loop-memcpy-expansion2369 br label %Flow3707, !amdgpu.uniform !42 loop-memcpy-residual-header2372: ; preds = %Flow3707 %2926 = icmp eq i64 %1213, 0 br i1 %2926, label %loop-memcpy-residual-header2372.post-loop-memcpy-expansion2368_crit_edge, label %Flow3704, !amdgpu.uniform !42 loop-memcpy-residual-header2372.post-loop-memcpy-expansion2368_crit_edge: ; preds = %loop-memcpy-residual-header2372 %.pre3268 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i890, 6 br label %Flow3704, !amdgpu.uniform !42 Flow3704: ; preds = %loop-memcpy-residual-header2372.post-loop-memcpy-expansion2368_crit_edge, %loop-memcpy-residual-header2372 %2927 = phi i64 [ %.pre3268, %loop-memcpy-residual-header2372.post-loop-memcpy-expansion2368_crit_edge ], [ poison, %loop-memcpy-residual-header2372 ] %2928 = phi i1 [ false, %loop-memcpy-residual-header2372.post-loop-memcpy-expansion2368_crit_edge ], [ true, %loop-memcpy-residual-header2372 ] br i1 %2928, label %loop-memcpy-residual2371.preheader, label %Flow3705, !amdgpu.uniform !42 loop-memcpy-residual2371.preheader: ; preds = %Flow3704 %2929 = add nuw nsw i64 %75, 8 %scevgep3057 = getelementptr i8, ptr %1212, i64 %2929 %2930 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i890, 6 %scevgep3058 = getelementptr i8, ptr %scevgep3057, i64 %2930 br label %loop-memcpy-residual2371, !amdgpu.uniform !42 Flow3469: ; preds = %loop-memcpy-expansion2375 br label %Flow3470, !amdgpu.uniform !42 loop-memcpy-residual-header2378: ; preds = %Flow3470 br i1 %2926, label %loop-memcpy-residual-header2378.post-loop-memcpy-expansion2374_crit_edge, label %Flow3466, !amdgpu.uniform !42 loop-memcpy-residual-header2378.post-loop-memcpy-expansion2374_crit_edge: ; preds = %loop-memcpy-residual-header2378 %.pre3282 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1823, 6 br label %Flow3466, !amdgpu.uniform !42 Flow3466: ; preds = %loop-memcpy-residual-header2378.post-loop-memcpy-expansion2374_crit_edge, %loop-memcpy-residual-header2378 %2931 = phi i64 [ %.pre3282, %loop-memcpy-residual-header2378.post-loop-memcpy-expansion2374_crit_edge ], [ poison, %loop-memcpy-residual-header2378 ] %2932 = phi i1 [ false, %loop-memcpy-residual-header2378.post-loop-memcpy-expansion2374_crit_edge ], [ true, %loop-memcpy-residual-header2378 ] br i1 %2932, label %loop-memcpy-residual2377.preheader, label %Flow3467, !amdgpu.uniform !42 loop-memcpy-residual2377.preheader: ; preds = %Flow3466 %2933 = add nuw nsw i64 %75, 8 %scevgep2893 = getelementptr i8, ptr %2335, i64 %2933 %2934 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1823, 6 %scevgep2894 = getelementptr i8, ptr %scevgep2893, i64 %2934 br label %loop-memcpy-residual2377, !amdgpu.uniform !42 Flow3695: ; preds = %loop-memcpy-expansion2381 br label %Flow3696, !amdgpu.uniform !42 Flow3697: ; preds = %Flow3693, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i911 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i912, !amdgpu.uniform !42 loop-memcpy-residual-header2384: ; preds = %Flow3696 %2935 = icmp ne i64 %1248, 0 br i1 %2935, label %loop-memcpy-residual2383.preheader, label %Flow3693, !amdgpu.uniform !42 loop-memcpy-residual2383.preheader: ; preds = %loop-memcpy-residual-header2384 %umin3052 = call i64 @llvm.umin.i64(i64 %lsr.iv3050, i64 64) %2936 = lshr i64 %umin3052, 4 %2937 = shl nuw nsw i64 %2936, 4 %scevgep3055 = getelementptr i8, ptr addrspace(4) %lsr.iv3045, i64 %2937 %scevgep3048 = getelementptr i8, ptr %1247, i64 %75 %scevgep3049 = getelementptr i8, ptr %scevgep3048, i64 %1222 %scevgep3053 = getelementptr i8, ptr %scevgep3049, i64 %2937 br label %loop-memcpy-residual2383, !amdgpu.uniform !42 Flow3616: ; preds = %loop-memcpy-expansion2387 br label %Flow3617, !amdgpu.uniform !42 loop-memcpy-residual-header2390: ; preds = %Flow3617 %2938 = icmp eq i64 %1667, 0 br i1 %2938, label %loop-memcpy-residual-header2390.post-loop-memcpy-expansion2386_crit_edge, label %Flow3613, !amdgpu.uniform !42 loop-memcpy-residual-header2390.post-loop-memcpy-expansion2386_crit_edge: ; preds = %loop-memcpy-residual-header2390 %.pre3272 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1201, 6 br label %Flow3613, !amdgpu.uniform !42 Flow3613: ; preds = %loop-memcpy-residual-header2390.post-loop-memcpy-expansion2386_crit_edge, %loop-memcpy-residual-header2390 %2939 = phi i64 [ %.pre3272, %loop-memcpy-residual-header2390.post-loop-memcpy-expansion2386_crit_edge ], [ poison, %loop-memcpy-residual-header2390 ] %2940 = phi i1 [ false, %loop-memcpy-residual-header2390.post-loop-memcpy-expansion2386_crit_edge ], [ true, %loop-memcpy-residual-header2390 ] br i1 %2940, label %loop-memcpy-residual2389.preheader, label %Flow3614, !amdgpu.uniform !42 loop-memcpy-residual2389.preheader: ; preds = %Flow3613 %2941 = add nuw nsw i64 %75, 8 %scevgep3009 = getelementptr i8, ptr %1666, i64 %2941 %2942 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1201, 6 %scevgep3010 = getelementptr i8, ptr %scevgep3009, i64 %2942 br label %loop-memcpy-residual2389, !amdgpu.uniform !42 Flow3603: ; preds = %loop-memcpy-expansion2393 br label %Flow3604, !amdgpu.uniform !42 Flow3605: ; preds = %Flow3601, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1222 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1223, !amdgpu.uniform !42 loop-memcpy-residual-header2396: ; preds = %Flow3604 %2943 = icmp ne i64 %1702, 0 br i1 %2943, label %loop-memcpy-residual2395.preheader, label %Flow3601, !amdgpu.uniform !42 loop-memcpy-residual2395.preheader: ; preds = %loop-memcpy-residual-header2396 %umin3004 = call i64 @llvm.umin.i64(i64 %lsr.iv3002, i64 64) %2944 = lshr i64 %umin3004, 4 %2945 = shl nuw nsw i64 %2944, 4 %scevgep3007 = getelementptr i8, ptr addrspace(4) %lsr.iv2997, i64 %2945 %scevgep3000 = getelementptr i8, ptr %1701, i64 %75 %scevgep3001 = getelementptr i8, ptr %scevgep3000, i64 %1676 %scevgep3005 = getelementptr i8, ptr %scevgep3001, i64 %2945 br label %loop-memcpy-residual2395, !amdgpu.uniform !42 Flow3590: ; preds = %loop-memcpy-expansion2399 br label %Flow3591, !amdgpu.uniform !42 loop-memcpy-residual-header2402: ; preds = %Flow3591 %2946 = icmp eq i64 %1778, 0 br i1 %2946, label %loop-memcpy-residual-header2402.post-loop-memcpy-expansion2398_crit_edge, label %Flow3587, !amdgpu.uniform !42 loop-memcpy-residual-header2402.post-loop-memcpy-expansion2398_crit_edge: ; preds = %loop-memcpy-residual-header2402 %.pre3274 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1300, 6 br label %Flow3587, !amdgpu.uniform !42 Flow3587: ; preds = %loop-memcpy-residual-header2402.post-loop-memcpy-expansion2398_crit_edge, %loop-memcpy-residual-header2402 %2947 = phi i64 [ %.pre3274, %loop-memcpy-residual-header2402.post-loop-memcpy-expansion2398_crit_edge ], [ poison, %loop-memcpy-residual-header2402 ] %2948 = phi i1 [ false, %loop-memcpy-residual-header2402.post-loop-memcpy-expansion2398_crit_edge ], [ true, %loop-memcpy-residual-header2402 ] br i1 %2948, label %loop-memcpy-residual2401.preheader, label %Flow3588, !amdgpu.uniform !42 loop-memcpy-residual2401.preheader: ; preds = %Flow3587 %2949 = lshr i64 %spec.select.i.i.i.i.i.i.i1303, 4 %2950 = shl nuw nsw i64 %2949, 4 %2951 = add i64 %75, %2950 %2952 = add i64 %2951, 8 %scevgep2989 = getelementptr i8, ptr %1777, i64 %2952 %2953 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1300, 6 %scevgep2990 = getelementptr i8, ptr %scevgep2989, i64 %2953 %scevgep2992 = getelementptr i8, ptr addrspace(4) @.str.9, i64 %2950 br label %loop-memcpy-residual2401, !amdgpu.uniform !42 Flow3577: ; preds = %loop-memcpy-expansion2405 br label %Flow3578, !amdgpu.uniform !42 Flow3579: ; preds = %Flow3575, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1321 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1322, !amdgpu.uniform !42 loop-memcpy-residual-header2408: ; preds = %Flow3578 %2954 = icmp ne i64 %1813, 0 br i1 %2954, label %loop-memcpy-residual2407.preheader, label %Flow3575, !amdgpu.uniform !42 loop-memcpy-residual2407.preheader: ; preds = %loop-memcpy-residual-header2408 %umin2984 = call i64 @llvm.umin.i64(i64 %lsr.iv2982, i64 64) %2955 = lshr i64 %umin2984, 4 %2956 = shl nuw nsw i64 %2955, 4 %scevgep2987 = getelementptr i8, ptr addrspace(4) %lsr.iv2977, i64 %2956 %scevgep2980 = getelementptr i8, ptr %1812, i64 %75 %scevgep2981 = getelementptr i8, ptr %scevgep2980, i64 %1787 %scevgep2985 = getelementptr i8, ptr %scevgep2981, i64 %2956 br label %loop-memcpy-residual2407, !amdgpu.uniform !42 Flow3564: ; preds = %loop-memcpy-expansion2411 br label %Flow3565, !amdgpu.uniform !42 loop-memcpy-residual-header2414: ; preds = %Flow3565 %2957 = icmp eq i64 %1889, 0 br i1 %2957, label %loop-memcpy-residual-header2414.post-loop-memcpy-expansion2410_crit_edge, label %Flow3561, !amdgpu.uniform !42 loop-memcpy-residual-header2414.post-loop-memcpy-expansion2410_crit_edge: ; preds = %loop-memcpy-residual-header2414 %.pre3276 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1405, 6 br label %Flow3561, !amdgpu.uniform !42 Flow3561: ; preds = %loop-memcpy-residual-header2414.post-loop-memcpy-expansion2410_crit_edge, %loop-memcpy-residual-header2414 %2958 = phi i64 [ %.pre3276, %loop-memcpy-residual-header2414.post-loop-memcpy-expansion2410_crit_edge ], [ poison, %loop-memcpy-residual-header2414 ] %2959 = phi i1 [ false, %loop-memcpy-residual-header2414.post-loop-memcpy-expansion2410_crit_edge ], [ true, %loop-memcpy-residual-header2414 ] br i1 %2959, label %loop-memcpy-residual2413.preheader, label %Flow3562, !amdgpu.uniform !42 loop-memcpy-residual2413.preheader: ; preds = %Flow3561 %2960 = add nuw nsw i64 %75, 8 %scevgep2970 = getelementptr i8, ptr %1888, i64 %2960 %2961 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1405, 6 %scevgep2971 = getelementptr i8, ptr %scevgep2970, i64 %2961 br label %loop-memcpy-residual2413, !amdgpu.uniform !42 Flow3551: ; preds = %loop-memcpy-expansion2417 br label %Flow3552, !amdgpu.uniform !42 Flow3553: ; preds = %Flow3549, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1426 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1427, !amdgpu.uniform !42 loop-memcpy-residual-header2420: ; preds = %Flow3552 %2962 = icmp ne i64 %1924, 0 br i1 %2962, label %loop-memcpy-residual2419.preheader, label %Flow3549, !amdgpu.uniform !42 loop-memcpy-residual2419.preheader: ; preds = %loop-memcpy-residual-header2420 %umin2965 = call i64 @llvm.umin.i64(i64 %lsr.iv2963, i64 64) %2963 = lshr i64 %umin2965, 4 %2964 = shl nuw nsw i64 %2963, 4 %scevgep2968 = getelementptr i8, ptr addrspace(4) %lsr.iv2958, i64 %2964 %scevgep2961 = getelementptr i8, ptr %1923, i64 %75 %scevgep2962 = getelementptr i8, ptr %scevgep2961, i64 %1898 %scevgep2966 = getelementptr i8, ptr %scevgep2962, i64 %2964 br label %loop-memcpy-residual2419, !amdgpu.uniform !42 Flow3459: ; preds = %loop-memcpy-expansion2423 br label %Flow3460, !amdgpu.uniform !42 Flow3461: ; preds = %Flow3458, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1844 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1845, !amdgpu.uniform !42 loop-memcpy-residual-header2426: ; preds = %Flow3460 %2965 = icmp ne i64 %2368, 0 br i1 %2965, label %loop-memcpy-residual2425.preheader, label %Flow3458, !amdgpu.uniform !42 loop-memcpy-residual2425.preheader: ; preds = %loop-memcpy-residual-header2426 %umin2888 = call i64 @llvm.umin.i64(i64 %lsr.iv2886, i64 64) %2966 = lshr i64 %umin2888, 4 %2967 = shl nuw nsw i64 %2966, 4 %scevgep2891 = getelementptr i8, ptr addrspace(4) %lsr.iv2881, i64 %2967 %scevgep2884 = getelementptr i8, ptr %2367, i64 %75 %scevgep2885 = getelementptr i8, ptr %scevgep2884, i64 %2342 %scevgep2889 = getelementptr i8, ptr %scevgep2885, i64 %2967 br label %loop-memcpy-residual2425, !amdgpu.uniform !42 ComputeLoop: ; preds = %for.cond.i.i1.i, %ComputeLoop %Accumulator = phi i32 [ %2972, %ComputeLoop ], [ 0, %for.cond.i.i1.i ] %OldValuePhi = phi i32 [ %2971, %ComputeLoop ], [ poison, %for.cond.i.i1.i ] %ActiveBits = phi i64 [ %2975, %ComputeLoop ], [ %25, %for.cond.i.i1.i ] %2968 = call i64 @llvm.cttz.i64(i64 %ActiveBits, i1 true) %2969 = trunc i64 %2968 to i32 %2970 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i, i32 %2969) %2971 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator, i32 %2969, i32 %OldValuePhi) %2972 = or i32 %Accumulator, %2970 %2973 = shl i64 1, %2968 %2974 = xor i64 %2973, -1 %2975 = and i64 %ActiveBits, %2974 %2976 = icmp eq i64 %2975, 0 br i1 %2976, label %ComputeEnd, label %ComputeLoop, !amdgpu.uniform !42 ComputeEnd: ; preds = %ComputeLoop %.lcssa4223 = phi i32 [ %2971, %ComputeLoop ] %.lcssa4222 = phi i32 [ %2972, %ComputeLoop ] %div8.i.i.i.i.i = lshr i32 %spec.store.select.i.i.i, 5 %idxprom.i.i.i.i.i = zext nneg i32 %div8.i.i.i.i.i to i64 %2977 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i %2978 = trunc i64 %25 to i32 %2979 = lshr i64 %25, 32 %2980 = trunc i64 %2979 to i32 %2981 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %2978, i32 0) %2982 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %2980, i32 %2981) %2983 = icmp eq i32 %2982, 0 %2984 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2983) %2985 = extractvalue { i1, i64 } %2984, 0 %2986 = extractvalue { i1, i64 } %2984, 1 br i1 %2985, label %26, label %28 Flow3900: ; preds = %46, %if.then.i.i.i.i2 %2987 = phi i1 [ false, %46 ], [ true, %if.then.i.i.i.i2 ] br i1 %2987, label %if.end14.i.i.i, label %Flow3901, !amdgpu.uniform !42 ComputeLoop2428: ; preds = %if.then12.i.i.i, %ComputeLoop2428 %Accumulator2430 = phi i32 [ %2991, %ComputeLoop2428 ], [ -1, %if.then12.i.i.i ] %ActiveBits2431 = phi i64 [ %2994, %ComputeLoop2428 ], [ %43, %if.then12.i.i.i ] %2988 = call i64 @llvm.cttz.i64(i64 %ActiveBits2431, i1 true) %2989 = trunc i64 %2988 to i32 %2990 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i, i32 %2989) %2991 = and i32 %Accumulator2430, %2990 %2992 = shl i64 1, %2988 %2993 = xor i64 %2992, -1 %2994 = and i64 %ActiveBits2431, %2993 %2995 = icmp eq i64 %2994, 0 br i1 %2995, label %ComputeEnd2429, label %ComputeLoop2428, !amdgpu.uniform !42 ComputeEnd2429: ; preds = %ComputeLoop2428 %.lcssa4224 = phi i32 [ %2991, %ComputeLoop2428 ] %2996 = trunc i64 %43 to i32 %2997 = lshr i64 %43, 32 %2998 = trunc i64 %2997 to i32 %2999 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %2996, i32 0) %3000 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %2998, i32 %2999) %3001 = icmp eq i32 %3000, 0 %3002 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3001) %3003 = extractvalue { i1, i64 } %3002, 0 %3004 = extractvalue { i1, i64 } %3002, 1 br i1 %3003, label %44, label %46 ComputeLoop2432: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit, %ComputeLoop2432 %Accumulator2434 = phi i32 [ %3008, %ComputeLoop2432 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit ] %ActiveBits2435 = phi i64 [ %3011, %ComputeLoop2432 ], [ %125, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit ] %3005 = call i64 @llvm.cttz.i64(i64 %ActiveBits2435, i1 true) %3006 = trunc i64 %3005 to i32 %3007 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i, i32 %3006) %3008 = and i32 %Accumulator2434, %3007 %3009 = shl i64 1, %3005 %3010 = xor i64 %3009, -1 %3011 = and i64 %ActiveBits2435, %3010 %3012 = icmp eq i64 %3011, 0 br i1 %3012, label %ComputeEnd2433, label %ComputeLoop2432, !amdgpu.uniform !42 ComputeEnd2433: ; preds = %ComputeLoop2432 %.lcssa4218 = phi i32 [ %3008, %ComputeLoop2432 ] %3013 = trunc i64 %125 to i32 %3014 = lshr i64 %125, 32 %3015 = trunc i64 %3014 to i32 %3016 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3013, i32 0) %3017 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3015, i32 %3016) %3018 = icmp eq i32 %3017, 0 %3019 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3018) %3020 = extractvalue { i1, i64 } %3019, 0 %3021 = extractvalue { i1, i64 } %3019, 1 br i1 %3020, label %126, label %129 ComputeLoop2436: ; preds = %for.cond.i.i1.i13, %ComputeLoop2436 %Accumulator2438 = phi i32 [ %3026, %ComputeLoop2436 ], [ 0, %for.cond.i.i1.i13 ] %OldValuePhi2439 = phi i32 [ %3025, %ComputeLoop2436 ], [ poison, %for.cond.i.i1.i13 ] %ActiveBits2440 = phi i64 [ %3029, %ComputeLoop2436 ], [ %138, %for.cond.i.i1.i13 ] %3022 = call i64 @llvm.cttz.i64(i64 %ActiveBits2440, i1 true) %3023 = trunc i64 %3022 to i32 %3024 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i25, i32 %3023) %3025 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2438, i32 %3023, i32 %OldValuePhi2439) %3026 = or i32 %Accumulator2438, %3024 %3027 = shl i64 1, %3022 %3028 = xor i64 %3027, -1 %3029 = and i64 %ActiveBits2440, %3028 %3030 = icmp eq i64 %3029, 0 br i1 %3030, label %ComputeEnd2437, label %ComputeLoop2436, !amdgpu.uniform !42 ComputeEnd2437: ; preds = %ComputeLoop2436 %.lcssa4213 = phi i32 [ %3025, %ComputeLoop2436 ] %.lcssa4212 = phi i32 [ %3026, %ComputeLoop2436 ] %div8.i.i.i.i.i21 = lshr i32 %spec.store.select.i.i.i20, 5 %idxprom.i.i.i.i.i22 = zext nneg i32 %div8.i.i.i.i.i21 to i64 %3031 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i22 %3032 = trunc i64 %138 to i32 %3033 = lshr i64 %138, 32 %3034 = trunc i64 %3033 to i32 %3035 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3032, i32 0) %3036 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3034, i32 %3035) %3037 = icmp eq i32 %3036, 0 %3038 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3037) %3039 = extractvalue { i1, i64 } %3038, 0 %3040 = extractvalue { i1, i64 } %3038, 1 br i1 %3039, label %139, label %141 Flow3881: ; preds = %159, %if.then.i.i.i.i31 %3041 = phi i1 [ false, %159 ], [ true, %if.then.i.i.i.i31 ] br i1 %3041, label %if.end14.i.i.i101, label %Flow3882, !amdgpu.uniform !42 ComputeLoop2441: ; preds = %if.then12.i.i.i36, %ComputeLoop2441 %Accumulator2443 = phi i32 [ %3045, %ComputeLoop2441 ], [ -1, %if.then12.i.i.i36 ] %ActiveBits2444 = phi i64 [ %3048, %ComputeLoop2441 ], [ %156, %if.then12.i.i.i36 ] %3042 = call i64 @llvm.cttz.i64(i64 %ActiveBits2444, i1 true) %3043 = trunc i64 %3042 to i32 %3044 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i42, i32 %3043) %3045 = and i32 %Accumulator2443, %3044 %3046 = shl i64 1, %3042 %3047 = xor i64 %3046, -1 %3048 = and i64 %ActiveBits2444, %3047 %3049 = icmp eq i64 %3048, 0 br i1 %3049, label %ComputeEnd2442, label %ComputeLoop2441, !amdgpu.uniform !42 ComputeEnd2442: ; preds = %ComputeLoop2441 %.lcssa4214 = phi i32 [ %3045, %ComputeLoop2441 ] %3050 = trunc i64 %156 to i32 %3051 = lshr i64 %156, 32 %3052 = trunc i64 %3051 to i32 %3053 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3050, i32 0) %3054 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3052, i32 %3053) %3055 = icmp eq i32 %3054, 0 %3056 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3055) %3057 = extractvalue { i1, i64 } %3056, 0 %3058 = extractvalue { i1, i64 } %3056, 1 br i1 %3057, label %157, label %159 ComputeLoop2445: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit109, %ComputeLoop2445 %Accumulator2447 = phi i32 [ %3062, %ComputeLoop2445 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit109 ] %ActiveBits2448 = phi i64 [ %3065, %ComputeLoop2445 ], [ %236, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit109 ] %3059 = call i64 @llvm.cttz.i64(i64 %ActiveBits2448, i1 true) %3060 = trunc i64 %3059 to i32 %3061 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i100, i32 %3060) %3062 = and i32 %Accumulator2447, %3061 %3063 = shl i64 1, %3059 %3064 = xor i64 %3063, -1 %3065 = and i64 %ActiveBits2448, %3064 %3066 = icmp eq i64 %3065, 0 br i1 %3066, label %ComputeEnd2446, label %ComputeLoop2445, !amdgpu.uniform !42 ComputeEnd2446: ; preds = %ComputeLoop2445 %.lcssa4208 = phi i32 [ %3062, %ComputeLoop2445 ] %3067 = trunc i64 %236 to i32 %3068 = lshr i64 %236, 32 %3069 = trunc i64 %3068 to i32 %3070 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3067, i32 0) %3071 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3069, i32 %3070) %3072 = icmp eq i32 %3071, 0 %3073 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3072) %3074 = extractvalue { i1, i64 } %3073, 0 %3075 = extractvalue { i1, i64 } %3073, 1 br i1 %3074, label %237, label %240 ComputeLoop2449: ; preds = %for.cond.i.i.i118, %ComputeLoop2449 %Accumulator2451 = phi i32 [ %3080, %ComputeLoop2449 ], [ 0, %for.cond.i.i.i118 ] %OldValuePhi2452 = phi i32 [ %3079, %ComputeLoop2449 ], [ poison, %for.cond.i.i.i118 ] %ActiveBits2453 = phi i64 [ %3083, %ComputeLoop2449 ], [ %362, %for.cond.i.i.i118 ] %3076 = call i64 @llvm.cttz.i64(i64 %ActiveBits2453, i1 true) %3077 = trunc i64 %3076 to i32 %3078 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i130, i32 %3077) %3079 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2451, i32 %3077, i32 %OldValuePhi2452) %3080 = or i32 %Accumulator2451, %3078 %3081 = shl i64 1, %3076 %3082 = xor i64 %3081, -1 %3083 = and i64 %ActiveBits2453, %3082 %3084 = icmp eq i64 %3083, 0 br i1 %3084, label %ComputeEnd2450, label %ComputeLoop2449, !amdgpu.uniform !42 ComputeEnd2450: ; preds = %ComputeLoop2449 %.lcssa4199 = phi i32 [ %3079, %ComputeLoop2449 ] %.lcssa4198 = phi i32 [ %3080, %ComputeLoop2449 ] %div8.i.i.i.i.i126 = lshr i32 %spec.store.select.i.i.i125, 5 %idxprom.i.i.i.i.i127 = zext nneg i32 %div8.i.i.i.i.i126 to i64 %3085 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i127 %3086 = trunc i64 %362 to i32 %3087 = lshr i64 %362, 32 %3088 = trunc i64 %3087 to i32 %3089 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3086, i32 0) %3090 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3088, i32 %3089) %3091 = icmp eq i32 %3090, 0 %3092 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3091) %3093 = extractvalue { i1, i64 } %3092, 0 %3094 = extractvalue { i1, i64 } %3092, 1 br i1 %3093, label %363, label %365 Flow3839: ; preds = %383, %if.then.i.i.i.i136 %3095 = phi i1 [ false, %383 ], [ true, %if.then.i.i.i.i136 ] br i1 %3095, label %if.end14.i.i.i206, label %Flow3840, !amdgpu.uniform !42 ComputeLoop2454: ; preds = %if.then12.i.i.i141, %ComputeLoop2454 %Accumulator2456 = phi i32 [ %3099, %ComputeLoop2454 ], [ -1, %if.then12.i.i.i141 ] %ActiveBits2457 = phi i64 [ %3102, %ComputeLoop2454 ], [ %380, %if.then12.i.i.i141 ] %3096 = call i64 @llvm.cttz.i64(i64 %ActiveBits2457, i1 true) %3097 = trunc i64 %3096 to i32 %3098 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i146, i32 %3097) %3099 = and i32 %Accumulator2456, %3098 %3100 = shl i64 1, %3096 %3101 = xor i64 %3100, -1 %3102 = and i64 %ActiveBits2457, %3101 %3103 = icmp eq i64 %3102, 0 br i1 %3103, label %ComputeEnd2455, label %ComputeLoop2454, !amdgpu.uniform !42 ComputeEnd2455: ; preds = %ComputeLoop2454 %.lcssa4200 = phi i32 [ %3099, %ComputeLoop2454 ] %3104 = trunc i64 %380 to i32 %3105 = lshr i64 %380, 32 %3106 = trunc i64 %3105 to i32 %3107 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3104, i32 0) %3108 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3106, i32 %3107) %3109 = icmp eq i32 %3108, 0 %3110 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3109) %3111 = extractvalue { i1, i64 } %3110, 0 %3112 = extractvalue { i1, i64 } %3110, 1 br i1 %3111, label %381, label %383 ComputeLoop2458: ; preds = %_ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i, %ComputeLoop2458 %Accumulator2460 = phi i32 [ %3116, %ComputeLoop2458 ], [ -1, %_ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i ] %ActiveBits2461 = phi i64 [ %3119, %ComputeLoop2458 ], [ %478, %_ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i ] %3113 = call i64 @llvm.cttz.i64(i64 %ActiveBits2461, i1 true) %3114 = trunc i64 %3113 to i32 %3115 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i203, i32 %3114) %3116 = and i32 %Accumulator2460, %3115 %3117 = shl i64 1, %3113 %3118 = xor i64 %3117, -1 %3119 = and i64 %ActiveBits2461, %3118 %3120 = icmp eq i64 %3119, 0 br i1 %3120, label %ComputeEnd2459, label %ComputeLoop2458, !amdgpu.uniform !42 ComputeEnd2459: ; preds = %ComputeLoop2458 %.lcssa4190 = phi i32 [ %3116, %ComputeLoop2458 ] %3121 = trunc i64 %478 to i32 %3122 = lshr i64 %478, 32 %3123 = trunc i64 %3122 to i32 %3124 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3121, i32 0) %3125 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3123, i32 %3124) %3126 = icmp eq i32 %3125, 0 %3127 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3126) %3128 = extractvalue { i1, i64 } %3127, 0 %3129 = extractvalue { i1, i64 } %3127, 1 br i1 %3128, label %479, label %482 ComputeLoop2462: ; preds = %for.cond.i.i1.i222, %ComputeLoop2462 %Accumulator2464 = phi i32 [ %3134, %ComputeLoop2462 ], [ 0, %for.cond.i.i1.i222 ] %OldValuePhi2465 = phi i32 [ %3133, %ComputeLoop2462 ], [ poison, %for.cond.i.i1.i222 ] %ActiveBits2466 = phi i64 [ %3137, %ComputeLoop2462 ], [ %491, %for.cond.i.i1.i222 ] %3130 = call i64 @llvm.cttz.i64(i64 %ActiveBits2466, i1 true) %3131 = trunc i64 %3130 to i32 %3132 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i234, i32 %3131) %3133 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2464, i32 %3131, i32 %OldValuePhi2465) %3134 = or i32 %Accumulator2464, %3132 %3135 = shl i64 1, %3130 %3136 = xor i64 %3135, -1 %3137 = and i64 %ActiveBits2466, %3136 %3138 = icmp eq i64 %3137, 0 br i1 %3138, label %ComputeEnd2463, label %ComputeLoop2462, !amdgpu.uniform !42 ComputeEnd2463: ; preds = %ComputeLoop2462 %.lcssa4185 = phi i32 [ %3133, %ComputeLoop2462 ] %.lcssa4184 = phi i32 [ %3134, %ComputeLoop2462 ] %div8.i.i.i.i.i230 = lshr i32 %spec.store.select.i.i.i229, 5 %idxprom.i.i.i.i.i231 = zext nneg i32 %div8.i.i.i.i.i230 to i64 %3139 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i231 %3140 = trunc i64 %491 to i32 %3141 = lshr i64 %491, 32 %3142 = trunc i64 %3141 to i32 %3143 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3140, i32 0) %3144 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3142, i32 %3143) %3145 = icmp eq i32 %3144, 0 %3146 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3145) %3147 = extractvalue { i1, i64 } %3146, 0 %3148 = extractvalue { i1, i64 } %3146, 1 br i1 %3147, label %492, label %494 Flow3820: ; preds = %512, %if.then.i.i.i.i240 %3149 = phi i1 [ false, %512 ], [ true, %if.then.i.i.i.i240 ] br i1 %3149, label %if.end14.i.i.i311, label %Flow3821, !amdgpu.uniform !42 ComputeLoop2467: ; preds = %if.then12.i.i.i245, %ComputeLoop2467 %Accumulator2469 = phi i32 [ %3153, %ComputeLoop2467 ], [ -1, %if.then12.i.i.i245 ] %ActiveBits2470 = phi i64 [ %3156, %ComputeLoop2467 ], [ %509, %if.then12.i.i.i245 ] %3150 = call i64 @llvm.cttz.i64(i64 %ActiveBits2470, i1 true) %3151 = trunc i64 %3150 to i32 %3152 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i251, i32 %3151) %3153 = and i32 %Accumulator2469, %3152 %3154 = shl i64 1, %3150 %3155 = xor i64 %3154, -1 %3156 = and i64 %ActiveBits2470, %3155 %3157 = icmp eq i64 %3156, 0 br i1 %3157, label %ComputeEnd2468, label %ComputeLoop2467, !amdgpu.uniform !42 ComputeEnd2468: ; preds = %ComputeLoop2467 %.lcssa4186 = phi i32 [ %3153, %ComputeLoop2467 ] %3158 = trunc i64 %509 to i32 %3159 = lshr i64 %509, 32 %3160 = trunc i64 %3159 to i32 %3161 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3158, i32 0) %3162 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3160, i32 %3161) %3163 = icmp eq i32 %3162, 0 %3164 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3163) %3165 = extractvalue { i1, i64 } %3164, 0 %3166 = extractvalue { i1, i64 } %3164, 1 br i1 %3165, label %510, label %512 ComputeLoop2471: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit319, %ComputeLoop2471 %Accumulator2473 = phi i32 [ %3170, %ComputeLoop2471 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit319 ] %ActiveBits2474 = phi i64 [ %3173, %ComputeLoop2471 ], [ %589, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit319 ] %3167 = call i64 @llvm.cttz.i64(i64 %ActiveBits2474, i1 true) %3168 = trunc i64 %3167 to i32 %3169 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i310, i32 %3168) %3170 = and i32 %Accumulator2473, %3169 %3171 = shl i64 1, %3167 %3172 = xor i64 %3171, -1 %3173 = and i64 %ActiveBits2474, %3172 %3174 = icmp eq i64 %3173, 0 br i1 %3174, label %ComputeEnd2472, label %ComputeLoop2471, !amdgpu.uniform !42 ComputeEnd2472: ; preds = %ComputeLoop2471 %.lcssa4180 = phi i32 [ %3170, %ComputeLoop2471 ] %3175 = trunc i64 %589 to i32 %3176 = lshr i64 %589, 32 %3177 = trunc i64 %3176 to i32 %3178 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3175, i32 0) %3179 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3177, i32 %3178) %3180 = icmp eq i32 %3179, 0 %3181 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3180) %3182 = extractvalue { i1, i64 } %3181, 0 %3183 = extractvalue { i1, i64 } %3181, 1 br i1 %3182, label %590, label %593 ComputeLoop2475: ; preds = %for.cond.i.i.i328, %ComputeLoop2475 %Accumulator2477 = phi i32 [ %3188, %ComputeLoop2475 ], [ 0, %for.cond.i.i.i328 ] %OldValuePhi2478 = phi i32 [ %3187, %ComputeLoop2475 ], [ poison, %for.cond.i.i.i328 ] %ActiveBits2479 = phi i64 [ %3191, %ComputeLoop2475 ], [ %614, %for.cond.i.i.i328 ] %3184 = call i64 @llvm.cttz.i64(i64 %ActiveBits2479, i1 true) %3185 = trunc i64 %3184 to i32 %3186 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i340, i32 %3185) %3187 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2477, i32 %3185, i32 %OldValuePhi2478) %3188 = or i32 %Accumulator2477, %3186 %3189 = shl i64 1, %3184 %3190 = xor i64 %3189, -1 %3191 = and i64 %ActiveBits2479, %3190 %3192 = icmp eq i64 %3191, 0 br i1 %3192, label %ComputeEnd2476, label %ComputeLoop2475, !amdgpu.uniform !42 ComputeEnd2476: ; preds = %ComputeLoop2475 %.lcssa4175 = phi i32 [ %3187, %ComputeLoop2475 ] %.lcssa4174 = phi i32 [ %3188, %ComputeLoop2475 ] %div8.i.i.i.i.i336 = lshr i32 %spec.store.select.i.i.i335, 5 %idxprom.i.i.i.i.i337 = zext nneg i32 %div8.i.i.i.i.i336 to i64 %3193 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i337 %3194 = trunc i64 %614 to i32 %3195 = lshr i64 %614, 32 %3196 = trunc i64 %3195 to i32 %3197 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3194, i32 0) %3198 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3196, i32 %3197) %3199 = icmp eq i32 %3198, 0 %3200 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3199) %3201 = extractvalue { i1, i64 } %3200, 0 %3202 = extractvalue { i1, i64 } %3200, 1 br i1 %3201, label %615, label %617 Flow3797: ; preds = %635, %if.then.i.i.i.i346 %3203 = phi i1 [ false, %635 ], [ true, %if.then.i.i.i.i346 ] br i1 %3203, label %if.end14.i.i.i417, label %Flow3798, !amdgpu.uniform !42 ComputeLoop2480: ; preds = %if.then12.i.i.i351, %ComputeLoop2480 %Accumulator2482 = phi i32 [ %3207, %ComputeLoop2480 ], [ -1, %if.then12.i.i.i351 ] %ActiveBits2483 = phi i64 [ %3210, %ComputeLoop2480 ], [ %632, %if.then12.i.i.i351 ] %3204 = call i64 @llvm.cttz.i64(i64 %ActiveBits2483, i1 true) %3205 = trunc i64 %3204 to i32 %3206 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i357, i32 %3205) %3207 = and i32 %Accumulator2482, %3206 %3208 = shl i64 1, %3204 %3209 = xor i64 %3208, -1 %3210 = and i64 %ActiveBits2483, %3209 %3211 = icmp eq i64 %3210, 0 br i1 %3211, label %ComputeEnd2481, label %ComputeLoop2480, !amdgpu.uniform !42 ComputeEnd2481: ; preds = %ComputeLoop2480 %.lcssa4176 = phi i32 [ %3207, %ComputeLoop2480 ] %3212 = trunc i64 %632 to i32 %3213 = lshr i64 %632, 32 %3214 = trunc i64 %3213 to i32 %3215 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3212, i32 0) %3216 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3214, i32 %3215) %3217 = icmp eq i32 %3216, 0 %3218 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3217) %3219 = extractvalue { i1, i64 } %3218, 0 %3220 = extractvalue { i1, i64 } %3218, 1 br i1 %3219, label %633, label %635 ComputeLoop2484: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit, %ComputeLoop2484 %Accumulator2486 = phi i32 [ %3224, %ComputeLoop2484 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit ] %ActiveBits2487 = phi i64 [ %3227, %ComputeLoop2484 ], [ %713, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit ] %3221 = call i64 @llvm.cttz.i64(i64 %ActiveBits2487, i1 true) %3222 = trunc i64 %3221 to i32 %3223 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i416, i32 %3222) %3224 = and i32 %Accumulator2486, %3223 %3225 = shl i64 1, %3221 %3226 = xor i64 %3225, -1 %3227 = and i64 %ActiveBits2487, %3226 %3228 = icmp eq i64 %3227, 0 br i1 %3228, label %ComputeEnd2485, label %ComputeLoop2484, !amdgpu.uniform !42 ComputeEnd2485: ; preds = %ComputeLoop2484 %.lcssa4170 = phi i32 [ %3224, %ComputeLoop2484 ] %3229 = trunc i64 %713 to i32 %3230 = lshr i64 %713, 32 %3231 = trunc i64 %3230 to i32 %3232 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3229, i32 0) %3233 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3231, i32 %3232) %3234 = icmp eq i32 %3233, 0 %3235 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3234) %3236 = extractvalue { i1, i64 } %3235, 0 %3237 = extractvalue { i1, i64 } %3235, 1 br i1 %3236, label %714, label %717 ComputeLoop2488: ; preds = %for.cond.i.i1.i433, %ComputeLoop2488 %Accumulator2490 = phi i32 [ %3242, %ComputeLoop2488 ], [ 0, %for.cond.i.i1.i433 ] %OldValuePhi2491 = phi i32 [ %3241, %ComputeLoop2488 ], [ poison, %for.cond.i.i1.i433 ] %ActiveBits2492 = phi i64 [ %3245, %ComputeLoop2488 ], [ %726, %for.cond.i.i1.i433 ] %3238 = call i64 @llvm.cttz.i64(i64 %ActiveBits2492, i1 true) %3239 = trunc i64 %3238 to i32 %3240 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i445, i32 %3239) %3241 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2490, i32 %3239, i32 %OldValuePhi2491) %3242 = or i32 %Accumulator2490, %3240 %3243 = shl i64 1, %3238 %3244 = xor i64 %3243, -1 %3245 = and i64 %ActiveBits2492, %3244 %3246 = icmp eq i64 %3245, 0 br i1 %3246, label %ComputeEnd2489, label %ComputeLoop2488, !amdgpu.uniform !42 ComputeEnd2489: ; preds = %ComputeLoop2488 %.lcssa4165 = phi i32 [ %3241, %ComputeLoop2488 ] %.lcssa4164 = phi i32 [ %3242, %ComputeLoop2488 ] %div8.i.i.i.i.i441 = lshr i32 %spec.store.select.i.i.i440, 5 %idxprom.i.i.i.i.i442 = zext nneg i32 %div8.i.i.i.i.i441 to i64 %3247 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i442 %3248 = trunc i64 %726 to i32 %3249 = lshr i64 %726, 32 %3250 = trunc i64 %3249 to i32 %3251 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3248, i32 0) %3252 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3250, i32 %3251) %3253 = icmp eq i32 %3252, 0 %3254 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3253) %3255 = extractvalue { i1, i64 } %3254, 0 %3256 = extractvalue { i1, i64 } %3254, 1 br i1 %3255, label %727, label %729 Flow3778: ; preds = %747, %if.then.i.i.i.i451 %3257 = phi i1 [ false, %747 ], [ true, %if.then.i.i.i.i451 ] br i1 %3257, label %if.end14.i.i.i522, label %Flow3779, !amdgpu.uniform !42 ComputeLoop2493: ; preds = %if.then12.i.i.i456, %ComputeLoop2493 %Accumulator2495 = phi i32 [ %3261, %ComputeLoop2493 ], [ -1, %if.then12.i.i.i456 ] %ActiveBits2496 = phi i64 [ %3264, %ComputeLoop2493 ], [ %744, %if.then12.i.i.i456 ] %3258 = call i64 @llvm.cttz.i64(i64 %ActiveBits2496, i1 true) %3259 = trunc i64 %3258 to i32 %3260 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i462, i32 %3259) %3261 = and i32 %Accumulator2495, %3260 %3262 = shl i64 1, %3258 %3263 = xor i64 %3262, -1 %3264 = and i64 %ActiveBits2496, %3263 %3265 = icmp eq i64 %3264, 0 br i1 %3265, label %ComputeEnd2494, label %ComputeLoop2493, !amdgpu.uniform !42 ComputeEnd2494: ; preds = %ComputeLoop2493 %.lcssa4166 = phi i32 [ %3261, %ComputeLoop2493 ] %3266 = trunc i64 %744 to i32 %3267 = lshr i64 %744, 32 %3268 = trunc i64 %3267 to i32 %3269 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3266, i32 0) %3270 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3268, i32 %3269) %3271 = icmp eq i32 %3270, 0 %3272 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3271) %3273 = extractvalue { i1, i64 } %3272, 0 %3274 = extractvalue { i1, i64 } %3272, 1 br i1 %3273, label %745, label %747 ComputeLoop2497: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit530, %ComputeLoop2497 %Accumulator2499 = phi i32 [ %3278, %ComputeLoop2497 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit530 ] %ActiveBits2500 = phi i64 [ %3281, %ComputeLoop2497 ], [ %824, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit530 ] %3275 = call i64 @llvm.cttz.i64(i64 %ActiveBits2500, i1 true) %3276 = trunc i64 %3275 to i32 %3277 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i521, i32 %3276) %3278 = and i32 %Accumulator2499, %3277 %3279 = shl i64 1, %3275 %3280 = xor i64 %3279, -1 %3281 = and i64 %ActiveBits2500, %3280 %3282 = icmp eq i64 %3281, 0 br i1 %3282, label %ComputeEnd2498, label %ComputeLoop2497, !amdgpu.uniform !42 ComputeEnd2498: ; preds = %ComputeLoop2497 %.lcssa4160 = phi i32 [ %3278, %ComputeLoop2497 ] %3283 = trunc i64 %824 to i32 %3284 = lshr i64 %824, 32 %3285 = trunc i64 %3284 to i32 %3286 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3283, i32 0) %3287 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3285, i32 %3286) %3288 = icmp eq i32 %3287, 0 %3289 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3288) %3290 = extractvalue { i1, i64 } %3289, 0 %3291 = extractvalue { i1, i64 } %3289, 1 br i1 %3290, label %825, label %828 ComputeLoop2501: ; preds = %for.cond.i.i1.i539, %ComputeLoop2501 %Accumulator2503 = phi i32 [ %3296, %ComputeLoop2501 ], [ 0, %for.cond.i.i1.i539 ] %OldValuePhi2504 = phi i32 [ %3295, %ComputeLoop2501 ], [ poison, %for.cond.i.i1.i539 ] %ActiveBits2505 = phi i64 [ %3299, %ComputeLoop2501 ], [ %841, %for.cond.i.i1.i539 ] %3292 = call i64 @llvm.cttz.i64(i64 %ActiveBits2505, i1 true) %3293 = trunc i64 %3292 to i32 %3294 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i551, i32 %3293) %3295 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2503, i32 %3293, i32 %OldValuePhi2504) %3296 = or i32 %Accumulator2503, %3294 %3297 = shl i64 1, %3292 %3298 = xor i64 %3297, -1 %3299 = and i64 %ActiveBits2505, %3298 %3300 = icmp eq i64 %3299, 0 br i1 %3300, label %ComputeEnd2502, label %ComputeLoop2501, !amdgpu.uniform !42 ComputeEnd2502: ; preds = %ComputeLoop2501 %.lcssa4154 = phi i32 [ %3295, %ComputeLoop2501 ] %.lcssa4153 = phi i32 [ %3296, %ComputeLoop2501 ] %div8.i.i.i.i.i547 = lshr i32 %spec.store.select.i.i.i546, 5 %idxprom.i.i.i.i.i548 = zext nneg i32 %div8.i.i.i.i.i547 to i64 %3301 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i548 %3302 = trunc i64 %841 to i32 %3303 = lshr i64 %841, 32 %3304 = trunc i64 %3303 to i32 %3305 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3302, i32 0) %3306 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3304, i32 %3305) %3307 = icmp eq i32 %3306, 0 %3308 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3307) %3309 = extractvalue { i1, i64 } %3308, 0 %3310 = extractvalue { i1, i64 } %3308, 1 br i1 %3309, label %842, label %844 Flow3759: ; preds = %862, %if.then.i.i.i.i557 %3311 = phi i1 [ false, %862 ], [ true, %if.then.i.i.i.i557 ] br i1 %3311, label %if.end14.i.i.i628, label %Flow3760, !amdgpu.uniform !42 ComputeLoop2506: ; preds = %if.then12.i.i.i562, %ComputeLoop2506 %Accumulator2508 = phi i32 [ %3315, %ComputeLoop2506 ], [ -1, %if.then12.i.i.i562 ] %ActiveBits2509 = phi i64 [ %3318, %ComputeLoop2506 ], [ %859, %if.then12.i.i.i562 ] %3312 = call i64 @llvm.cttz.i64(i64 %ActiveBits2509, i1 true) %3313 = trunc i64 %3312 to i32 %3314 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i568, i32 %3313) %3315 = and i32 %Accumulator2508, %3314 %3316 = shl i64 1, %3312 %3317 = xor i64 %3316, -1 %3318 = and i64 %ActiveBits2509, %3317 %3319 = icmp eq i64 %3318, 0 br i1 %3319, label %ComputeEnd2507, label %ComputeLoop2506, !amdgpu.uniform !42 ComputeEnd2507: ; preds = %ComputeLoop2506 %.lcssa4155 = phi i32 [ %3315, %ComputeLoop2506 ] %3320 = trunc i64 %859 to i32 %3321 = lshr i64 %859, 32 %3322 = trunc i64 %3321 to i32 %3323 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3320, i32 0) %3324 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3322, i32 %3323) %3325 = icmp eq i32 %3324, 0 %3326 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3325) %3327 = extractvalue { i1, i64 } %3326, 0 %3328 = extractvalue { i1, i64 } %3326, 1 br i1 %3327, label %860, label %862 ComputeLoop2510: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit636, %ComputeLoop2510 %Accumulator2512 = phi i32 [ %3332, %ComputeLoop2510 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit636 ] %ActiveBits2513 = phi i64 [ %3335, %ComputeLoop2510 ], [ %957, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit636 ] %3329 = call i64 @llvm.cttz.i64(i64 %ActiveBits2513, i1 true) %3330 = trunc i64 %3329 to i32 %3331 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i627, i32 %3330) %3332 = and i32 %Accumulator2512, %3331 %3333 = shl i64 1, %3329 %3334 = xor i64 %3333, -1 %3335 = and i64 %ActiveBits2513, %3334 %3336 = icmp eq i64 %3335, 0 br i1 %3336, label %ComputeEnd2511, label %ComputeLoop2510, !amdgpu.uniform !42 ComputeEnd2511: ; preds = %ComputeLoop2510 %.lcssa4145 = phi i32 [ %3332, %ComputeLoop2510 ] %3337 = trunc i64 %957 to i32 %3338 = lshr i64 %957, 32 %3339 = trunc i64 %3338 to i32 %3340 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3337, i32 0) %3341 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3339, i32 %3340) %3342 = icmp eq i32 %3341, 0 %3343 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3342) %3344 = extractvalue { i1, i64 } %3343, 0 %3345 = extractvalue { i1, i64 } %3343, 1 br i1 %3344, label %958, label %961 ComputeLoop2514: ; preds = %for.cond.i.i.i638, %ComputeLoop2514 %Accumulator2516 = phi i32 [ %3350, %ComputeLoop2514 ], [ 0, %for.cond.i.i.i638 ] %OldValuePhi2517 = phi i32 [ %3349, %ComputeLoop2514 ], [ poison, %for.cond.i.i.i638 ] %ActiveBits2518 = phi i64 [ %3353, %ComputeLoop2514 ], [ %970, %for.cond.i.i.i638 ] %3346 = call i64 @llvm.cttz.i64(i64 %ActiveBits2518, i1 true) %3347 = trunc i64 %3346 to i32 %3348 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i650, i32 %3347) %3349 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2516, i32 %3347, i32 %OldValuePhi2517) %3350 = or i32 %Accumulator2516, %3348 %3351 = shl i64 1, %3346 %3352 = xor i64 %3351, -1 %3353 = and i64 %ActiveBits2518, %3352 %3354 = icmp eq i64 %3353, 0 br i1 %3354, label %ComputeEnd2515, label %ComputeLoop2514, !amdgpu.uniform !42 ComputeEnd2515: ; preds = %ComputeLoop2514 %.lcssa4140 = phi i32 [ %3349, %ComputeLoop2514 ] %.lcssa4139 = phi i32 [ %3350, %ComputeLoop2514 ] %div8.i.i.i.i.i646 = lshr i32 %spec.store.select.i.i.i645, 5 %idxprom.i.i.i.i.i647 = zext nneg i32 %div8.i.i.i.i.i646 to i64 %3355 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i647 %3356 = trunc i64 %970 to i32 %3357 = lshr i64 %970, 32 %3358 = trunc i64 %3357 to i32 %3359 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3356, i32 0) %3360 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3358, i32 %3359) %3361 = icmp eq i32 %3360, 0 %3362 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3361) %3363 = extractvalue { i1, i64 } %3362, 0 %3364 = extractvalue { i1, i64 } %3362, 1 br i1 %3363, label %971, label %973 Flow3740: ; preds = %991, %if.then.i.i.i.i656 %3365 = phi i1 [ false, %991 ], [ true, %if.then.i.i.i.i656 ] br i1 %3365, label %if.end14.i.i.i725, label %Flow3741, !amdgpu.uniform !42 ComputeLoop2519: ; preds = %if.then12.i.i.i661, %ComputeLoop2519 %Accumulator2521 = phi i32 [ %3369, %ComputeLoop2519 ], [ -1, %if.then12.i.i.i661 ] %ActiveBits2522 = phi i64 [ %3372, %ComputeLoop2519 ], [ %988, %if.then12.i.i.i661 ] %3366 = call i64 @llvm.cttz.i64(i64 %ActiveBits2522, i1 true) %3367 = trunc i64 %3366 to i32 %3368 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i667, i32 %3367) %3369 = and i32 %Accumulator2521, %3368 %3370 = shl i64 1, %3366 %3371 = xor i64 %3370, -1 %3372 = and i64 %ActiveBits2522, %3371 %3373 = icmp eq i64 %3372, 0 br i1 %3373, label %ComputeEnd2520, label %ComputeLoop2519, !amdgpu.uniform !42 ComputeEnd2520: ; preds = %ComputeLoop2519 %.lcssa4141 = phi i32 [ %3369, %ComputeLoop2519 ] %3374 = trunc i64 %988 to i32 %3375 = lshr i64 %988, 32 %3376 = trunc i64 %3375 to i32 %3377 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3374, i32 0) %3378 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3376, i32 %3377) %3379 = icmp eq i32 %3378, 0 %3380 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3379) %3381 = extractvalue { i1, i64 } %3380, 0 %3382 = extractvalue { i1, i64 } %3380, 1 br i1 %3381, label %989, label %991 ComputeLoop2523: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit, %ComputeLoop2523 %Accumulator2525 = phi i32 [ %3386, %ComputeLoop2523 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit ] %ActiveBits2526 = phi i64 [ %3389, %ComputeLoop2523 ], [ %1043, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit ] %3383 = call i64 @llvm.cttz.i64(i64 %ActiveBits2526, i1 true) %3384 = trunc i64 %3383 to i32 %3385 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i724, i32 %3384) %3386 = and i32 %Accumulator2525, %3385 %3387 = shl i64 1, %3383 %3388 = xor i64 %3387, -1 %3389 = and i64 %ActiveBits2526, %3388 %3390 = icmp eq i64 %3389, 0 br i1 %3390, label %ComputeEnd2524, label %ComputeLoop2523, !amdgpu.uniform !42 ComputeEnd2524: ; preds = %ComputeLoop2523 %.lcssa4135 = phi i32 [ %3386, %ComputeLoop2523 ] %3391 = trunc i64 %1043 to i32 %3392 = lshr i64 %1043, 32 %3393 = trunc i64 %3392 to i32 %3394 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3391, i32 0) %3395 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3393, i32 %3394) %3396 = icmp eq i32 %3395, 0 %3397 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3396) %3398 = extractvalue { i1, i64 } %3397, 0 %3399 = extractvalue { i1, i64 } %3397, 1 br i1 %3398, label %1044, label %1047 ComputeLoop2527: ; preds = %for.cond.i.i.i741, %ComputeLoop2527 %Accumulator2529 = phi i32 [ %3404, %ComputeLoop2527 ], [ 0, %for.cond.i.i.i741 ] %OldValuePhi2530 = phi i32 [ %3403, %ComputeLoop2527 ], [ poison, %for.cond.i.i.i741 ] %ActiveBits2531 = phi i64 [ %3407, %ComputeLoop2527 ], [ %1065, %for.cond.i.i.i741 ] %3400 = call i64 @llvm.cttz.i64(i64 %ActiveBits2531, i1 true) %3401 = trunc i64 %3400 to i32 %3402 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i753, i32 %3401) %3403 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2529, i32 %3401, i32 %OldValuePhi2530) %3404 = or i32 %Accumulator2529, %3402 %3405 = shl i64 1, %3400 %3406 = xor i64 %3405, -1 %3407 = and i64 %ActiveBits2531, %3406 %3408 = icmp eq i64 %3407, 0 br i1 %3408, label %ComputeEnd2528, label %ComputeLoop2527, !amdgpu.uniform !42 ComputeEnd2528: ; preds = %ComputeLoop2527 %.lcssa4130 = phi i32 [ %3403, %ComputeLoop2527 ] %.lcssa4129 = phi i32 [ %3404, %ComputeLoop2527 ] %div8.i.i.i.i.i749 = lshr i32 %spec.store.select.i.i.i748, 5 %idxprom.i.i.i.i.i750 = zext nneg i32 %div8.i.i.i.i.i749 to i64 %3409 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i750 %3410 = trunc i64 %1065 to i32 %3411 = lshr i64 %1065, 32 %3412 = trunc i64 %3411 to i32 %3413 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3410, i32 0) %3414 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3412, i32 %3413) %3415 = icmp eq i32 %3414, 0 %3416 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3415) %3417 = extractvalue { i1, i64 } %3416, 0 %3418 = extractvalue { i1, i64 } %3416, 1 br i1 %3417, label %1066, label %1068 Flow3727: ; preds = %1086, %if.then.i.i.i.i759 %3419 = phi i1 [ false, %1086 ], [ true, %if.then.i.i.i.i759 ] br i1 %3419, label %if.end14.i.i.i830, label %Flow3728, !amdgpu.uniform !42 ComputeLoop2532: ; preds = %if.then12.i.i.i764, %ComputeLoop2532 %Accumulator2534 = phi i32 [ %3423, %ComputeLoop2532 ], [ -1, %if.then12.i.i.i764 ] %ActiveBits2535 = phi i64 [ %3426, %ComputeLoop2532 ], [ %1083, %if.then12.i.i.i764 ] %3420 = call i64 @llvm.cttz.i64(i64 %ActiveBits2535, i1 true) %3421 = trunc i64 %3420 to i32 %3422 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i770, i32 %3421) %3423 = and i32 %Accumulator2534, %3422 %3424 = shl i64 1, %3420 %3425 = xor i64 %3424, -1 %3426 = and i64 %ActiveBits2535, %3425 %3427 = icmp eq i64 %3426, 0 br i1 %3427, label %ComputeEnd2533, label %ComputeLoop2532, !amdgpu.uniform !42 ComputeEnd2533: ; preds = %ComputeLoop2532 %.lcssa4131 = phi i32 [ %3423, %ComputeLoop2532 ] %3428 = trunc i64 %1083 to i32 %3429 = lshr i64 %1083, 32 %3430 = trunc i64 %3429 to i32 %3431 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3428, i32 0) %3432 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3430, i32 %3431) %3433 = icmp eq i32 %3432, 0 %3434 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3433) %3435 = extractvalue { i1, i64 } %3434, 0 %3436 = extractvalue { i1, i64 } %3434, 1 br i1 %3435, label %1084, label %1086 ComputeLoop2536: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit838, %ComputeLoop2536 %Accumulator2538 = phi i32 [ %3440, %ComputeLoop2536 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit838 ] %ActiveBits2539 = phi i64 [ %3443, %ComputeLoop2536 ], [ %1160, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit838 ] %3437 = call i64 @llvm.cttz.i64(i64 %ActiveBits2539, i1 true) %3438 = trunc i64 %3437 to i32 %3439 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i829, i32 %3438) %3440 = and i32 %Accumulator2538, %3439 %3441 = shl i64 1, %3437 %3442 = xor i64 %3441, -1 %3443 = and i64 %ActiveBits2539, %3442 %3444 = icmp eq i64 %3443, 0 br i1 %3444, label %ComputeEnd2537, label %ComputeLoop2536, !amdgpu.uniform !42 ComputeEnd2537: ; preds = %ComputeLoop2536 %.lcssa4125 = phi i32 [ %3440, %ComputeLoop2536 ] %3445 = trunc i64 %1160 to i32 %3446 = lshr i64 %1160, 32 %3447 = trunc i64 %3446 to i32 %3448 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3445, i32 0) %3449 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3447, i32 %3448) %3450 = icmp eq i32 %3449, 0 %3451 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3450) %3452 = extractvalue { i1, i64 } %3451, 0 %3453 = extractvalue { i1, i64 } %3451, 1 br i1 %3452, label %1161, label %1164 ComputeLoop2540: ; preds = %for.cond.i.i1.i847, %ComputeLoop2540 %Accumulator2542 = phi i32 [ %3458, %ComputeLoop2540 ], [ 0, %for.cond.i.i1.i847 ] %OldValuePhi2543 = phi i32 [ %3457, %ComputeLoop2540 ], [ poison, %for.cond.i.i1.i847 ] %ActiveBits2544 = phi i64 [ %3461, %ComputeLoop2540 ], [ %1173, %for.cond.i.i1.i847 ] %3454 = call i64 @llvm.cttz.i64(i64 %ActiveBits2544, i1 true) %3455 = trunc i64 %3454 to i32 %3456 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i859, i32 %3455) %3457 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2542, i32 %3455, i32 %OldValuePhi2543) %3458 = or i32 %Accumulator2542, %3456 %3459 = shl i64 1, %3454 %3460 = xor i64 %3459, -1 %3461 = and i64 %ActiveBits2544, %3460 %3462 = icmp eq i64 %3461, 0 br i1 %3462, label %ComputeEnd2541, label %ComputeLoop2540, !amdgpu.uniform !42 ComputeEnd2541: ; preds = %ComputeLoop2540 %.lcssa4120 = phi i32 [ %3457, %ComputeLoop2540 ] %.lcssa4119 = phi i32 [ %3458, %ComputeLoop2540 ] %div8.i.i.i.i.i855 = lshr i32 %spec.store.select.i.i.i854, 5 %idxprom.i.i.i.i.i856 = zext nneg i32 %div8.i.i.i.i.i855 to i64 %3463 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i856 %3464 = trunc i64 %1173 to i32 %3465 = lshr i64 %1173, 32 %3466 = trunc i64 %3465 to i32 %3467 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3464, i32 0) %3468 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3466, i32 %3467) %3469 = icmp eq i32 %3468, 0 %3470 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3469) %3471 = extractvalue { i1, i64 } %3470, 0 %3472 = extractvalue { i1, i64 } %3470, 1 br i1 %3471, label %1174, label %1176 Flow3708: ; preds = %1194, %if.then.i.i.i.i865 %3473 = phi i1 [ false, %1194 ], [ true, %if.then.i.i.i.i865 ] br i1 %3473, label %if.end14.i.i.i936, label %Flow3709, !amdgpu.uniform !42 ComputeLoop2545: ; preds = %if.then12.i.i.i870, %ComputeLoop2545 %Accumulator2547 = phi i32 [ %3477, %ComputeLoop2545 ], [ -1, %if.then12.i.i.i870 ] %ActiveBits2548 = phi i64 [ %3480, %ComputeLoop2545 ], [ %1191, %if.then12.i.i.i870 ] %3474 = call i64 @llvm.cttz.i64(i64 %ActiveBits2548, i1 true) %3475 = trunc i64 %3474 to i32 %3476 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i876, i32 %3475) %3477 = and i32 %Accumulator2547, %3476 %3478 = shl i64 1, %3474 %3479 = xor i64 %3478, -1 %3480 = and i64 %ActiveBits2548, %3479 %3481 = icmp eq i64 %3480, 0 br i1 %3481, label %ComputeEnd2546, label %ComputeLoop2545, !amdgpu.uniform !42 ComputeEnd2546: ; preds = %ComputeLoop2545 %.lcssa4121 = phi i32 [ %3477, %ComputeLoop2545 ] %3482 = trunc i64 %1191 to i32 %3483 = lshr i64 %1191, 32 %3484 = trunc i64 %3483 to i32 %3485 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3482, i32 0) %3486 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3484, i32 %3485) %3487 = icmp eq i32 %3486, 0 %3488 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3487) %3489 = extractvalue { i1, i64 } %3488, 0 %3490 = extractvalue { i1, i64 } %3488, 1 br i1 %3489, label %1192, label %1194 ComputeLoop2549: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit944, %ComputeLoop2549 %Accumulator2551 = phi i32 [ %3494, %ComputeLoop2549 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit944 ] %ActiveBits2552 = phi i64 [ %3497, %ComputeLoop2549 ], [ %1271, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit944 ] %3491 = call i64 @llvm.cttz.i64(i64 %ActiveBits2552, i1 true) %3492 = trunc i64 %3491 to i32 %3493 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i935, i32 %3492) %3494 = and i32 %Accumulator2551, %3493 %3495 = shl i64 1, %3491 %3496 = xor i64 %3495, -1 %3497 = and i64 %ActiveBits2552, %3496 %3498 = icmp eq i64 %3497, 0 br i1 %3498, label %ComputeEnd2550, label %ComputeLoop2549, !amdgpu.uniform !42 ComputeEnd2550: ; preds = %ComputeLoop2549 %.lcssa4115 = phi i32 [ %3494, %ComputeLoop2549 ] %3499 = trunc i64 %1271 to i32 %3500 = lshr i64 %1271, 32 %3501 = trunc i64 %3500 to i32 %3502 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3499, i32 0) %3503 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3501, i32 %3502) %3504 = icmp eq i32 %3503, 0 %3505 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3504) %3506 = extractvalue { i1, i64 } %3505, 0 %3507 = extractvalue { i1, i64 } %3505, 1 br i1 %3506, label %1272, label %1275 ComputeLoop2553: ; preds = %for.cond.i.i.i953, %ComputeLoop2553 %Accumulator2555 = phi i32 [ %3512, %ComputeLoop2553 ], [ 0, %for.cond.i.i.i953 ] %OldValuePhi2556 = phi i32 [ %3511, %ComputeLoop2553 ], [ poison, %for.cond.i.i.i953 ] %ActiveBits2557 = phi i64 [ %3515, %ComputeLoop2553 ], [ %1412, %for.cond.i.i.i953 ] %3508 = call i64 @llvm.cttz.i64(i64 %ActiveBits2557, i1 true) %3509 = trunc i64 %3508 to i32 %3510 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i965, i32 %3509) %3511 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2555, i32 %3509, i32 %OldValuePhi2556) %3512 = or i32 %Accumulator2555, %3510 %3513 = shl i64 1, %3508 %3514 = xor i64 %3513, -1 %3515 = and i64 %ActiveBits2557, %3514 %3516 = icmp eq i64 %3515, 0 br i1 %3516, label %ComputeEnd2554, label %ComputeLoop2553, !amdgpu.uniform !42 ComputeEnd2554: ; preds = %ComputeLoop2553 %.lcssa4106 = phi i32 [ %3511, %ComputeLoop2553 ] %.lcssa4105 = phi i32 [ %3512, %ComputeLoop2553 ] %div8.i.i.i.i.i961 = lshr i32 %spec.store.select.i.i.i960, 5 %idxprom.i.i.i.i.i962 = zext nneg i32 %div8.i.i.i.i.i961 to i64 %3517 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i962 %3518 = trunc i64 %1412 to i32 %3519 = lshr i64 %1412, 32 %3520 = trunc i64 %3519 to i32 %3521 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3518, i32 0) %3522 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3520, i32 %3521) %3523 = icmp eq i32 %3522, 0 %3524 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3523) %3525 = extractvalue { i1, i64 } %3524, 0 %3526 = extractvalue { i1, i64 } %3524, 1 br i1 %3525, label %1413, label %1415 Flow3655: ; preds = %1433, %if.then.i.i.i.i971 %3527 = phi i1 [ false, %1433 ], [ true, %if.then.i.i.i.i971 ] br i1 %3527, label %if.end14.i.i.i1042, label %Flow3656, !amdgpu.uniform !42 ComputeLoop2558: ; preds = %if.then12.i.i.i976, %ComputeLoop2558 %Accumulator2560 = phi i32 [ %3531, %ComputeLoop2558 ], [ -1, %if.then12.i.i.i976 ] %ActiveBits2561 = phi i64 [ %3534, %ComputeLoop2558 ], [ %1430, %if.then12.i.i.i976 ] %3528 = call i64 @llvm.cttz.i64(i64 %ActiveBits2561, i1 true) %3529 = trunc i64 %3528 to i32 %3530 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i982, i32 %3529) %3531 = and i32 %Accumulator2560, %3530 %3532 = shl i64 1, %3528 %3533 = xor i64 %3532, -1 %3534 = and i64 %ActiveBits2561, %3533 %3535 = icmp eq i64 %3534, 0 br i1 %3535, label %ComputeEnd2559, label %ComputeLoop2558, !amdgpu.uniform !42 ComputeEnd2559: ; preds = %ComputeLoop2558 %.lcssa4107 = phi i32 [ %3531, %ComputeLoop2558 ] %3536 = trunc i64 %1430 to i32 %3537 = lshr i64 %1430, 32 %3538 = trunc i64 %3537 to i32 %3539 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3536, i32 0) %3540 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3538, i32 %3539) %3541 = icmp eq i32 %3540, 0 %3542 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3541) %3543 = extractvalue { i1, i64 } %3542, 0 %3544 = extractvalue { i1, i64 } %3542, 1 br i1 %3543, label %1431, label %1433 ComputeLoop2562: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit1050, %ComputeLoop2562 %Accumulator2564 = phi i32 [ %3548, %ComputeLoop2562 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit1050 ] %ActiveBits2565 = phi i64 [ %3551, %ComputeLoop2562 ], [ %1528, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit1050 ] %3545 = call i64 @llvm.cttz.i64(i64 %ActiveBits2565, i1 true) %3546 = trunc i64 %3545 to i32 %3547 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i1041, i32 %3546) %3548 = and i32 %Accumulator2564, %3547 %3549 = shl i64 1, %3545 %3550 = xor i64 %3549, -1 %3551 = and i64 %ActiveBits2565, %3550 %3552 = icmp eq i64 %3551, 0 br i1 %3552, label %ComputeEnd2563, label %ComputeLoop2562, !amdgpu.uniform !42 ComputeEnd2563: ; preds = %ComputeLoop2562 %.lcssa4097 = phi i32 [ %3548, %ComputeLoop2562 ] %3553 = trunc i64 %1528 to i32 %3554 = lshr i64 %1528, 32 %3555 = trunc i64 %3554 to i32 %3556 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3553, i32 0) %3557 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3555, i32 %3556) %3558 = icmp eq i32 %3557, 0 %3559 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3558) %3560 = extractvalue { i1, i64 } %3559, 0 %3561 = extractvalue { i1, i64 } %3559, 1 br i1 %3560, label %1529, label %1532 ComputeLoop2566: ; preds = %for.cond.i.i.i1054, %ComputeLoop2566 %Accumulator2568 = phi i32 [ %3566, %ComputeLoop2566 ], [ 0, %for.cond.i.i.i1054 ] %OldValuePhi2569 = phi i32 [ %3565, %ComputeLoop2566 ], [ poison, %for.cond.i.i.i1054 ] %ActiveBits2570 = phi i64 [ %3569, %ComputeLoop2566 ], [ %1541, %for.cond.i.i.i1054 ] %3562 = call i64 @llvm.cttz.i64(i64 %ActiveBits2570, i1 true) %3563 = trunc i64 %3562 to i32 %3564 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i1066, i32 %3563) %3565 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2568, i32 %3563, i32 %OldValuePhi2569) %3566 = or i32 %Accumulator2568, %3564 %3567 = shl i64 1, %3562 %3568 = xor i64 %3567, -1 %3569 = and i64 %ActiveBits2570, %3568 %3570 = icmp eq i64 %3569, 0 br i1 %3570, label %ComputeEnd2567, label %ComputeLoop2566, !amdgpu.uniform !42 ComputeEnd2567: ; preds = %ComputeLoop2566 %.lcssa4092 = phi i32 [ %3565, %ComputeLoop2566 ] %.lcssa4091 = phi i32 [ %3566, %ComputeLoop2566 ] %div8.i.i.i.i.i1062 = lshr i32 %spec.store.select.i.i.i1061, 5 %idxprom.i.i.i.i.i1063 = zext nneg i32 %div8.i.i.i.i.i1062 to i64 %3571 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i1063 %3572 = trunc i64 %1541 to i32 %3573 = lshr i64 %1541, 32 %3574 = trunc i64 %3573 to i32 %3575 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3572, i32 0) %3576 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3574, i32 %3575) %3577 = icmp eq i32 %3576, 0 %3578 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3577) %3579 = extractvalue { i1, i64 } %3578, 0 %3580 = extractvalue { i1, i64 } %3578, 1 br i1 %3579, label %1542, label %1544 Flow3629: ; preds = %1562, %if.then.i.i.i.i1072 %3581 = phi i1 [ false, %1562 ], [ true, %if.then.i.i.i.i1072 ] br i1 %3581, label %if.end14.i.i.i1141, label %Flow3630, !amdgpu.uniform !42 ComputeLoop2571: ; preds = %if.then12.i.i.i1077, %ComputeLoop2571 %Accumulator2573 = phi i32 [ %3585, %ComputeLoop2571 ], [ -1, %if.then12.i.i.i1077 ] %ActiveBits2574 = phi i64 [ %3588, %ComputeLoop2571 ], [ %1559, %if.then12.i.i.i1077 ] %3582 = call i64 @llvm.cttz.i64(i64 %ActiveBits2574, i1 true) %3583 = trunc i64 %3582 to i32 %3584 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i1083, i32 %3583) %3585 = and i32 %Accumulator2573, %3584 %3586 = shl i64 1, %3582 %3587 = xor i64 %3586, -1 %3588 = and i64 %ActiveBits2574, %3587 %3589 = icmp eq i64 %3588, 0 br i1 %3589, label %ComputeEnd2572, label %ComputeLoop2571, !amdgpu.uniform !42 ComputeEnd2572: ; preds = %ComputeLoop2571 %.lcssa4093 = phi i32 [ %3585, %ComputeLoop2571 ] %3590 = trunc i64 %1559 to i32 %3591 = lshr i64 %1559, 32 %3592 = trunc i64 %3591 to i32 %3593 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3590, i32 0) %3594 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3592, i32 %3593) %3595 = icmp eq i32 %3594, 0 %3596 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3595) %3597 = extractvalue { i1, i64 } %3596, 0 %3598 = extractvalue { i1, i64 } %3596, 1 br i1 %3597, label %1560, label %1562 ComputeLoop2575: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit1149, %ComputeLoop2575 %Accumulator2577 = phi i32 [ %3602, %ComputeLoop2575 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit1149 ] %ActiveBits2578 = phi i64 [ %3605, %ComputeLoop2575 ], [ %1614, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit1149 ] %3599 = call i64 @llvm.cttz.i64(i64 %ActiveBits2578, i1 true) %3600 = trunc i64 %3599 to i32 %3601 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i1140, i32 %3600) %3602 = and i32 %Accumulator2577, %3601 %3603 = shl i64 1, %3599 %3604 = xor i64 %3603, -1 %3605 = and i64 %ActiveBits2578, %3604 %3606 = icmp eq i64 %3605, 0 br i1 %3606, label %ComputeEnd2576, label %ComputeLoop2575, !amdgpu.uniform !42 ComputeEnd2576: ; preds = %ComputeLoop2575 %.lcssa4087 = phi i32 [ %3602, %ComputeLoop2575 ] %3607 = trunc i64 %1614 to i32 %3608 = lshr i64 %1614, 32 %3609 = trunc i64 %3608 to i32 %3610 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3607, i32 0) %3611 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3609, i32 %3610) %3612 = icmp eq i32 %3611, 0 %3613 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3612) %3614 = extractvalue { i1, i64 } %3613, 0 %3615 = extractvalue { i1, i64 } %3613, 1 br i1 %3614, label %1615, label %1618 ComputeLoop2579: ; preds = %for.cond.i.i1.i1158, %ComputeLoop2579 %Accumulator2581 = phi i32 [ %3620, %ComputeLoop2579 ], [ 0, %for.cond.i.i1.i1158 ] %OldValuePhi2582 = phi i32 [ %3619, %ComputeLoop2579 ], [ poison, %for.cond.i.i1.i1158 ] %ActiveBits2583 = phi i64 [ %3623, %ComputeLoop2579 ], [ %1627, %for.cond.i.i1.i1158 ] %3616 = call i64 @llvm.cttz.i64(i64 %ActiveBits2583, i1 true) %3617 = trunc i64 %3616 to i32 %3618 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i1170, i32 %3617) %3619 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2581, i32 %3617, i32 %OldValuePhi2582) %3620 = or i32 %Accumulator2581, %3618 %3621 = shl i64 1, %3616 %3622 = xor i64 %3621, -1 %3623 = and i64 %ActiveBits2583, %3622 %3624 = icmp eq i64 %3623, 0 br i1 %3624, label %ComputeEnd2580, label %ComputeLoop2579, !amdgpu.uniform !42 ComputeEnd2580: ; preds = %ComputeLoop2579 %.lcssa4082 = phi i32 [ %3619, %ComputeLoop2579 ] %.lcssa4081 = phi i32 [ %3620, %ComputeLoop2579 ] %div8.i.i.i.i.i1166 = lshr i32 %spec.store.select.i.i.i1165, 5 %idxprom.i.i.i.i.i1167 = zext nneg i32 %div8.i.i.i.i.i1166 to i64 %3625 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i1167 %3626 = trunc i64 %1627 to i32 %3627 = lshr i64 %1627, 32 %3628 = trunc i64 %3627 to i32 %3629 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3626, i32 0) %3630 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3628, i32 %3629) %3631 = icmp eq i32 %3630, 0 %3632 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3631) %3633 = extractvalue { i1, i64 } %3632, 0 %3634 = extractvalue { i1, i64 } %3632, 1 br i1 %3633, label %1628, label %1630 Flow3618: ; preds = %1648, %if.then.i.i.i.i1176 %3635 = phi i1 [ false, %1648 ], [ true, %if.then.i.i.i.i1176 ] br i1 %3635, label %if.end14.i.i.i1247, label %Flow3619, !amdgpu.uniform !42 ComputeLoop2584: ; preds = %if.then12.i.i.i1181, %ComputeLoop2584 %Accumulator2586 = phi i32 [ %3639, %ComputeLoop2584 ], [ -1, %if.then12.i.i.i1181 ] %ActiveBits2587 = phi i64 [ %3642, %ComputeLoop2584 ], [ %1645, %if.then12.i.i.i1181 ] %3636 = call i64 @llvm.cttz.i64(i64 %ActiveBits2587, i1 true) %3637 = trunc i64 %3636 to i32 %3638 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i1187, i32 %3637) %3639 = and i32 %Accumulator2586, %3638 %3640 = shl i64 1, %3636 %3641 = xor i64 %3640, -1 %3642 = and i64 %ActiveBits2587, %3641 %3643 = icmp eq i64 %3642, 0 br i1 %3643, label %ComputeEnd2585, label %ComputeLoop2584, !amdgpu.uniform !42 ComputeEnd2585: ; preds = %ComputeLoop2584 %.lcssa4083 = phi i32 [ %3639, %ComputeLoop2584 ] %3644 = trunc i64 %1645 to i32 %3645 = lshr i64 %1645, 32 %3646 = trunc i64 %3645 to i32 %3647 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3644, i32 0) %3648 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3646, i32 %3647) %3649 = icmp eq i32 %3648, 0 %3650 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3649) %3651 = extractvalue { i1, i64 } %3650, 0 %3652 = extractvalue { i1, i64 } %3650, 1 br i1 %3651, label %1646, label %1648 ComputeLoop2588: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1255, %ComputeLoop2588 %Accumulator2590 = phi i32 [ %3656, %ComputeLoop2588 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1255 ] %ActiveBits2591 = phi i64 [ %3659, %ComputeLoop2588 ], [ %1725, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1255 ] %3653 = call i64 @llvm.cttz.i64(i64 %ActiveBits2591, i1 true) %3654 = trunc i64 %3653 to i32 %3655 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i1246, i32 %3654) %3656 = and i32 %Accumulator2590, %3655 %3657 = shl i64 1, %3653 %3658 = xor i64 %3657, -1 %3659 = and i64 %ActiveBits2591, %3658 %3660 = icmp eq i64 %3659, 0 br i1 %3660, label %ComputeEnd2589, label %ComputeLoop2588, !amdgpu.uniform !42 ComputeEnd2589: ; preds = %ComputeLoop2588 %.lcssa4077 = phi i32 [ %3656, %ComputeLoop2588 ] %3661 = trunc i64 %1725 to i32 %3662 = lshr i64 %1725, 32 %3663 = trunc i64 %3662 to i32 %3664 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3661, i32 0) %3665 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3663, i32 %3664) %3666 = icmp eq i32 %3665, 0 %3667 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3666) %3668 = extractvalue { i1, i64 } %3667, 0 %3669 = extractvalue { i1, i64 } %3667, 1 br i1 %3668, label %1726, label %1729 ComputeLoop2592: ; preds = %for.cond.i.i.i1257, %ComputeLoop2592 %Accumulator2594 = phi i32 [ %3674, %ComputeLoop2592 ], [ 0, %for.cond.i.i.i1257 ] %OldValuePhi2595 = phi i32 [ %3673, %ComputeLoop2592 ], [ poison, %for.cond.i.i.i1257 ] %ActiveBits2596 = phi i64 [ %3677, %ComputeLoop2592 ], [ %1738, %for.cond.i.i.i1257 ] %3670 = call i64 @llvm.cttz.i64(i64 %ActiveBits2596, i1 true) %3671 = trunc i64 %3670 to i32 %3672 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i1269, i32 %3671) %3673 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2594, i32 %3671, i32 %OldValuePhi2595) %3674 = or i32 %Accumulator2594, %3672 %3675 = shl i64 1, %3670 %3676 = xor i64 %3675, -1 %3677 = and i64 %ActiveBits2596, %3676 %3678 = icmp eq i64 %3677, 0 br i1 %3678, label %ComputeEnd2593, label %ComputeLoop2592, !amdgpu.uniform !42 ComputeEnd2593: ; preds = %ComputeLoop2592 %.lcssa4072 = phi i32 [ %3673, %ComputeLoop2592 ] %.lcssa4071 = phi i32 [ %3674, %ComputeLoop2592 ] %div8.i.i.i.i.i1265 = lshr i32 %spec.store.select.i.i.i1264, 5 %idxprom.i.i.i.i.i1266 = zext nneg i32 %div8.i.i.i.i.i1265 to i64 %3679 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i1266 %3680 = trunc i64 %1738 to i32 %3681 = lshr i64 %1738, 32 %3682 = trunc i64 %3681 to i32 %3683 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3680, i32 0) %3684 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3682, i32 %3683) %3685 = icmp eq i32 %3684, 0 %3686 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3685) %3687 = extractvalue { i1, i64 } %3686, 0 %3688 = extractvalue { i1, i64 } %3686, 1 br i1 %3687, label %1739, label %1741 Flow3592: ; preds = %1759, %if.then.i.i.i.i1275 %3689 = phi i1 [ false, %1759 ], [ true, %if.then.i.i.i.i1275 ] br i1 %3689, label %if.end14.i.i.i1346, label %Flow3593, !amdgpu.uniform !42 ComputeLoop2597: ; preds = %if.then12.i.i.i1280, %ComputeLoop2597 %Accumulator2599 = phi i32 [ %3693, %ComputeLoop2597 ], [ -1, %if.then12.i.i.i1280 ] %ActiveBits2600 = phi i64 [ %3696, %ComputeLoop2597 ], [ %1756, %if.then12.i.i.i1280 ] %3690 = call i64 @llvm.cttz.i64(i64 %ActiveBits2600, i1 true) %3691 = trunc i64 %3690 to i32 %3692 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i1286, i32 %3691) %3693 = and i32 %Accumulator2599, %3692 %3694 = shl i64 1, %3690 %3695 = xor i64 %3694, -1 %3696 = and i64 %ActiveBits2600, %3695 %3697 = icmp eq i64 %3696, 0 br i1 %3697, label %ComputeEnd2598, label %ComputeLoop2597, !amdgpu.uniform !42 ComputeEnd2598: ; preds = %ComputeLoop2597 %.lcssa4073 = phi i32 [ %3693, %ComputeLoop2597 ] %3698 = trunc i64 %1756 to i32 %3699 = lshr i64 %1756, 32 %3700 = trunc i64 %3699 to i32 %3701 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3698, i32 0) %3702 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3700, i32 %3701) %3703 = icmp eq i32 %3702, 0 %3704 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3703) %3705 = extractvalue { i1, i64 } %3704, 0 %3706 = extractvalue { i1, i64 } %3704, 1 br i1 %3705, label %1757, label %1759 ComputeLoop2601: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp11string_viewEEERS1_T_.exit, %ComputeLoop2601 %Accumulator2603 = phi i32 [ %3710, %ComputeLoop2601 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp11string_viewEEERS1_T_.exit ] %ActiveBits2604 = phi i64 [ %3713, %ComputeLoop2601 ], [ %1836, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp11string_viewEEERS1_T_.exit ] %3707 = call i64 @llvm.cttz.i64(i64 %ActiveBits2604, i1 true) %3708 = trunc i64 %3707 to i32 %3709 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i1345, i32 %3708) %3710 = and i32 %Accumulator2603, %3709 %3711 = shl i64 1, %3707 %3712 = xor i64 %3711, -1 %3713 = and i64 %ActiveBits2604, %3712 %3714 = icmp eq i64 %3713, 0 br i1 %3714, label %ComputeEnd2602, label %ComputeLoop2601, !amdgpu.uniform !42 ComputeEnd2602: ; preds = %ComputeLoop2601 %.lcssa4067 = phi i32 [ %3710, %ComputeLoop2601 ] %3715 = trunc i64 %1836 to i32 %3716 = lshr i64 %1836, 32 %3717 = trunc i64 %3716 to i32 %3718 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3715, i32 0) %3719 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3717, i32 %3718) %3720 = icmp eq i32 %3719, 0 %3721 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3720) %3722 = extractvalue { i1, i64 } %3721, 0 %3723 = extractvalue { i1, i64 } %3721, 1 br i1 %3722, label %1837, label %1840 ComputeLoop2605: ; preds = %for.cond.i.i1.i1362, %ComputeLoop2605 %Accumulator2607 = phi i32 [ %3728, %ComputeLoop2605 ], [ 0, %for.cond.i.i1.i1362 ] %OldValuePhi2608 = phi i32 [ %3727, %ComputeLoop2605 ], [ poison, %for.cond.i.i1.i1362 ] %ActiveBits2609 = phi i64 [ %3731, %ComputeLoop2605 ], [ %1849, %for.cond.i.i1.i1362 ] %3724 = call i64 @llvm.cttz.i64(i64 %ActiveBits2609, i1 true) %3725 = trunc i64 %3724 to i32 %3726 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i1374, i32 %3725) %3727 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2607, i32 %3725, i32 %OldValuePhi2608) %3728 = or i32 %Accumulator2607, %3726 %3729 = shl i64 1, %3724 %3730 = xor i64 %3729, -1 %3731 = and i64 %ActiveBits2609, %3730 %3732 = icmp eq i64 %3731, 0 br i1 %3732, label %ComputeEnd2606, label %ComputeLoop2605, !amdgpu.uniform !42 ComputeEnd2606: ; preds = %ComputeLoop2605 %.lcssa4062 = phi i32 [ %3727, %ComputeLoop2605 ] %.lcssa4061 = phi i32 [ %3728, %ComputeLoop2605 ] %div8.i.i.i.i.i1370 = lshr i32 %spec.store.select.i.i.i1369, 5 %idxprom.i.i.i.i.i1371 = zext nneg i32 %div8.i.i.i.i.i1370 to i64 %3733 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i1371 %3734 = trunc i64 %1849 to i32 %3735 = lshr i64 %1849, 32 %3736 = trunc i64 %3735 to i32 %3737 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3734, i32 0) %3738 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3736, i32 %3737) %3739 = icmp eq i32 %3738, 0 %3740 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3739) %3741 = extractvalue { i1, i64 } %3740, 0 %3742 = extractvalue { i1, i64 } %3740, 1 br i1 %3741, label %1850, label %1852 Flow3566: ; preds = %1870, %if.then.i.i.i.i1380 %3743 = phi i1 [ false, %1870 ], [ true, %if.then.i.i.i.i1380 ] br i1 %3743, label %if.end14.i.i.i1451, label %Flow3567, !amdgpu.uniform !42 ComputeLoop2610: ; preds = %if.then12.i.i.i1385, %ComputeLoop2610 %Accumulator2612 = phi i32 [ %3747, %ComputeLoop2610 ], [ -1, %if.then12.i.i.i1385 ] %ActiveBits2613 = phi i64 [ %3750, %ComputeLoop2610 ], [ %1867, %if.then12.i.i.i1385 ] %3744 = call i64 @llvm.cttz.i64(i64 %ActiveBits2613, i1 true) %3745 = trunc i64 %3744 to i32 %3746 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i1391, i32 %3745) %3747 = and i32 %Accumulator2612, %3746 %3748 = shl i64 1, %3744 %3749 = xor i64 %3748, -1 %3750 = and i64 %ActiveBits2613, %3749 %3751 = icmp eq i64 %3750, 0 br i1 %3751, label %ComputeEnd2611, label %ComputeLoop2610, !amdgpu.uniform !42 ComputeEnd2611: ; preds = %ComputeLoop2610 %.lcssa4063 = phi i32 [ %3747, %ComputeLoop2610 ] %3752 = trunc i64 %1867 to i32 %3753 = lshr i64 %1867, 32 %3754 = trunc i64 %3753 to i32 %3755 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3752, i32 0) %3756 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3754, i32 %3755) %3757 = icmp eq i32 %3756, 0 %3758 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3757) %3759 = extractvalue { i1, i64 } %3758, 0 %3760 = extractvalue { i1, i64 } %3758, 1 br i1 %3759, label %1868, label %1870 ComputeLoop2614: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1459, %ComputeLoop2614 %Accumulator2616 = phi i32 [ %3764, %ComputeLoop2614 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1459 ] %ActiveBits2617 = phi i64 [ %3767, %ComputeLoop2614 ], [ %1947, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1459 ] %3761 = call i64 @llvm.cttz.i64(i64 %ActiveBits2617, i1 true) %3762 = trunc i64 %3761 to i32 %3763 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i1450, i32 %3762) %3764 = and i32 %Accumulator2616, %3763 %3765 = shl i64 1, %3761 %3766 = xor i64 %3765, -1 %3767 = and i64 %ActiveBits2617, %3766 %3768 = icmp eq i64 %3767, 0 br i1 %3768, label %ComputeEnd2615, label %ComputeLoop2614, !amdgpu.uniform !42 ComputeEnd2615: ; preds = %ComputeLoop2614 %.lcssa4057 = phi i32 [ %3764, %ComputeLoop2614 ] %3769 = trunc i64 %1947 to i32 %3770 = lshr i64 %1947, 32 %3771 = trunc i64 %3770 to i32 %3772 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3769, i32 0) %3773 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3771, i32 %3772) %3774 = icmp eq i32 %3773, 0 %3775 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3774) %3776 = extractvalue { i1, i64 } %3775, 0 %3777 = extractvalue { i1, i64 } %3775, 1 br i1 %3776, label %1948, label %1951 ComputeLoop2618: ; preds = %for.cond.i.i1.i1469, %ComputeLoop2618 %Accumulator2620 = phi i32 [ %3782, %ComputeLoop2618 ], [ 0, %for.cond.i.i1.i1469 ] %OldValuePhi2621 = phi i32 [ %3781, %ComputeLoop2618 ], [ poison, %for.cond.i.i1.i1469 ] %ActiveBits2622 = phi i64 [ %3785, %ComputeLoop2618 ], [ %1964, %for.cond.i.i1.i1469 ] %3778 = call i64 @llvm.cttz.i64(i64 %ActiveBits2622, i1 true) %3779 = trunc i64 %3778 to i32 %3780 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i1481, i32 %3779) %3781 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2620, i32 %3779, i32 %OldValuePhi2621) %3782 = or i32 %Accumulator2620, %3780 %3783 = shl i64 1, %3778 %3784 = xor i64 %3783, -1 %3785 = and i64 %ActiveBits2622, %3784 %3786 = icmp eq i64 %3785, 0 br i1 %3786, label %ComputeEnd2619, label %ComputeLoop2618, !amdgpu.uniform !42 ComputeEnd2619: ; preds = %ComputeLoop2618 %.lcssa4051 = phi i32 [ %3781, %ComputeLoop2618 ] %.lcssa4050 = phi i32 [ %3782, %ComputeLoop2618 ] %div8.i.i.i.i.i1477 = lshr i32 %spec.store.select.i.i.i1476, 5 %idxprom.i.i.i.i.i1478 = zext nneg i32 %div8.i.i.i.i.i1477 to i64 %3787 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i1478 %3788 = trunc i64 %1964 to i32 %3789 = lshr i64 %1964, 32 %3790 = trunc i64 %3789 to i32 %3791 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3788, i32 0) %3792 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3790, i32 %3791) %3793 = icmp eq i32 %3792, 0 %3794 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3793) %3795 = extractvalue { i1, i64 } %3794, 0 %3796 = extractvalue { i1, i64 } %3794, 1 br i1 %3795, label %1965, label %1967 Flow3540: ; preds = %1985, %if.then.i.i.i.i1487 %3797 = phi i1 [ false, %1985 ], [ true, %if.then.i.i.i.i1487 ] br i1 %3797, label %if.end14.i.i.i1558, label %Flow3541, !amdgpu.uniform !42 ComputeLoop2623: ; preds = %if.then12.i.i.i1492, %ComputeLoop2623 %Accumulator2625 = phi i32 [ %3801, %ComputeLoop2623 ], [ -1, %if.then12.i.i.i1492 ] %ActiveBits2626 = phi i64 [ %3804, %ComputeLoop2623 ], [ %1982, %if.then12.i.i.i1492 ] %3798 = call i64 @llvm.cttz.i64(i64 %ActiveBits2626, i1 true) %3799 = trunc i64 %3798 to i32 %3800 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i1498, i32 %3799) %3801 = and i32 %Accumulator2625, %3800 %3802 = shl i64 1, %3798 %3803 = xor i64 %3802, -1 %3804 = and i64 %ActiveBits2626, %3803 %3805 = icmp eq i64 %3804, 0 br i1 %3805, label %ComputeEnd2624, label %ComputeLoop2623, !amdgpu.uniform !42 ComputeEnd2624: ; preds = %ComputeLoop2623 %.lcssa4052 = phi i32 [ %3801, %ComputeLoop2623 ] %3806 = trunc i64 %1982 to i32 %3807 = lshr i64 %1982, 32 %3808 = trunc i64 %3807 to i32 %3809 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3806, i32 0) %3810 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3808, i32 %3809) %3811 = icmp eq i32 %3810, 0 %3812 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3811) %3813 = extractvalue { i1, i64 } %3812, 0 %3814 = extractvalue { i1, i64 } %3812, 1 br i1 %3813, label %1983, label %1985 ComputeLoop2627: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1566, %ComputeLoop2627 %Accumulator2629 = phi i32 [ %3818, %ComputeLoop2627 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1566 ] %ActiveBits2630 = phi i64 [ %3821, %ComputeLoop2627 ], [ %2080, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1566 ] %3815 = call i64 @llvm.cttz.i64(i64 %ActiveBits2630, i1 true) %3816 = trunc i64 %3815 to i32 %3817 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i1557, i32 %3816) %3818 = and i32 %Accumulator2629, %3817 %3819 = shl i64 1, %3815 %3820 = xor i64 %3819, -1 %3821 = and i64 %ActiveBits2630, %3820 %3822 = icmp eq i64 %3821, 0 br i1 %3822, label %ComputeEnd2628, label %ComputeLoop2627, !amdgpu.uniform !42 ComputeEnd2628: ; preds = %ComputeLoop2627 %.lcssa4042 = phi i32 [ %3818, %ComputeLoop2627 ] %3823 = trunc i64 %2080 to i32 %3824 = lshr i64 %2080, 32 %3825 = trunc i64 %3824 to i32 %3826 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3823, i32 0) %3827 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3825, i32 %3826) %3828 = icmp eq i32 %3827, 0 %3829 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3828) %3830 = extractvalue { i1, i64 } %3829, 0 %3831 = extractvalue { i1, i64 } %3829, 1 br i1 %3830, label %2081, label %2084 ComputeLoop2631: ; preds = %for.cond.i.i.i1570, %ComputeLoop2631 %Accumulator2633 = phi i32 [ %3836, %ComputeLoop2631 ], [ 0, %for.cond.i.i.i1570 ] %OldValuePhi2634 = phi i32 [ %3835, %ComputeLoop2631 ], [ poison, %for.cond.i.i.i1570 ] %ActiveBits2635 = phi i64 [ %3839, %ComputeLoop2631 ], [ %2093, %for.cond.i.i.i1570 ] %3832 = call i64 @llvm.cttz.i64(i64 %ActiveBits2635, i1 true) %3833 = trunc i64 %3832 to i32 %3834 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i1582, i32 %3833) %3835 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2633, i32 %3833, i32 %OldValuePhi2634) %3836 = or i32 %Accumulator2633, %3834 %3837 = shl i64 1, %3832 %3838 = xor i64 %3837, -1 %3839 = and i64 %ActiveBits2635, %3838 %3840 = icmp eq i64 %3839, 0 br i1 %3840, label %ComputeEnd2632, label %ComputeLoop2631, !amdgpu.uniform !42 ComputeEnd2632: ; preds = %ComputeLoop2631 %.lcssa4037 = phi i32 [ %3835, %ComputeLoop2631 ] %.lcssa4036 = phi i32 [ %3836, %ComputeLoop2631 ] %div8.i.i.i.i.i1578 = lshr i32 %spec.store.select.i.i.i1577, 5 %idxprom.i.i.i.i.i1579 = zext nneg i32 %div8.i.i.i.i.i1578 to i64 %3841 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i1579 %3842 = trunc i64 %2093 to i32 %3843 = lshr i64 %2093, 32 %3844 = trunc i64 %3843 to i32 %3845 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3842, i32 0) %3846 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3844, i32 %3845) %3847 = icmp eq i32 %3846, 0 %3848 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3847) %3849 = extractvalue { i1, i64 } %3848, 0 %3850 = extractvalue { i1, i64 } %3848, 1 br i1 %3849, label %2094, label %2096 Flow3514: ; preds = %2114, %if.then.i.i.i.i1588 %3851 = phi i1 [ false, %2114 ], [ true, %if.then.i.i.i.i1588 ] br i1 %3851, label %if.end14.i.i.i1657, label %Flow3515, !amdgpu.uniform !42 ComputeLoop2636: ; preds = %if.then12.i.i.i1593, %ComputeLoop2636 %Accumulator2638 = phi i32 [ %3855, %ComputeLoop2636 ], [ -1, %if.then12.i.i.i1593 ] %ActiveBits2639 = phi i64 [ %3858, %ComputeLoop2636 ], [ %2111, %if.then12.i.i.i1593 ] %3852 = call i64 @llvm.cttz.i64(i64 %ActiveBits2639, i1 true) %3853 = trunc i64 %3852 to i32 %3854 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i1599, i32 %3853) %3855 = and i32 %Accumulator2638, %3854 %3856 = shl i64 1, %3852 %3857 = xor i64 %3856, -1 %3858 = and i64 %ActiveBits2639, %3857 %3859 = icmp eq i64 %3858, 0 br i1 %3859, label %ComputeEnd2637, label %ComputeLoop2636, !amdgpu.uniform !42 ComputeEnd2637: ; preds = %ComputeLoop2636 %.lcssa4038 = phi i32 [ %3855, %ComputeLoop2636 ] %3860 = trunc i64 %2111 to i32 %3861 = lshr i64 %2111, 32 %3862 = trunc i64 %3861 to i32 %3863 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3860, i32 0) %3864 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3862, i32 %3863) %3865 = icmp eq i32 %3864, 0 %3866 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3865) %3867 = extractvalue { i1, i64 } %3866, 0 %3868 = extractvalue { i1, i64 } %3866, 1 br i1 %3867, label %2112, label %2114 ComputeLoop2640: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit1665, %ComputeLoop2640 %Accumulator2642 = phi i32 [ %3872, %ComputeLoop2640 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit1665 ] %ActiveBits2643 = phi i64 [ %3875, %ComputeLoop2640 ], [ %2166, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit1665 ] %3869 = call i64 @llvm.cttz.i64(i64 %ActiveBits2643, i1 true) %3870 = trunc i64 %3869 to i32 %3871 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i1656, i32 %3870) %3872 = and i32 %Accumulator2642, %3871 %3873 = shl i64 1, %3869 %3874 = xor i64 %3873, -1 %3875 = and i64 %ActiveBits2643, %3874 %3876 = icmp eq i64 %3875, 0 br i1 %3876, label %ComputeEnd2641, label %ComputeLoop2640, !amdgpu.uniform !42 ComputeEnd2641: ; preds = %ComputeLoop2640 %.lcssa4032 = phi i32 [ %3872, %ComputeLoop2640 ] %3877 = trunc i64 %2166 to i32 %3878 = lshr i64 %2166, 32 %3879 = trunc i64 %3878 to i32 %3880 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3877, i32 0) %3881 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3879, i32 %3880) %3882 = icmp eq i32 %3881, 0 %3883 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3882) %3884 = extractvalue { i1, i64 } %3883, 0 %3885 = extractvalue { i1, i64 } %3883, 1 br i1 %3884, label %2167, label %2170 ComputeLoop2644: ; preds = %for.cond.i.i.i1674, %ComputeLoop2644 %Accumulator2646 = phi i32 [ %3890, %ComputeLoop2644 ], [ 0, %for.cond.i.i.i1674 ] %OldValuePhi2647 = phi i32 [ %3889, %ComputeLoop2644 ], [ poison, %for.cond.i.i.i1674 ] %ActiveBits2648 = phi i64 [ %3893, %ComputeLoop2644 ], [ %2188, %for.cond.i.i.i1674 ] %3886 = call i64 @llvm.cttz.i64(i64 %ActiveBits2648, i1 true) %3887 = trunc i64 %3886 to i32 %3888 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i1686, i32 %3887) %3889 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2646, i32 %3887, i32 %OldValuePhi2647) %3890 = or i32 %Accumulator2646, %3888 %3891 = shl i64 1, %3886 %3892 = xor i64 %3891, -1 %3893 = and i64 %ActiveBits2648, %3892 %3894 = icmp eq i64 %3893, 0 br i1 %3894, label %ComputeEnd2645, label %ComputeLoop2644, !amdgpu.uniform !42 ComputeEnd2645: ; preds = %ComputeLoop2644 %.lcssa4027 = phi i32 [ %3889, %ComputeLoop2644 ] %.lcssa4026 = phi i32 [ %3890, %ComputeLoop2644 ] %div8.i.i.i.i.i1682 = lshr i32 %spec.store.select.i.i.i1681, 5 %idxprom.i.i.i.i.i1683 = zext nneg i32 %div8.i.i.i.i.i1682 to i64 %3895 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i1683 %3896 = trunc i64 %2188 to i32 %3897 = lshr i64 %2188, 32 %3898 = trunc i64 %3897 to i32 %3899 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3896, i32 0) %3900 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3898, i32 %3899) %3901 = icmp eq i32 %3900, 0 %3902 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3901) %3903 = extractvalue { i1, i64 } %3902, 0 %3904 = extractvalue { i1, i64 } %3902, 1 br i1 %3903, label %2189, label %2191 Flow3497: ; preds = %2209, %if.then.i.i.i.i1692 %3905 = phi i1 [ false, %2209 ], [ true, %if.then.i.i.i.i1692 ] br i1 %3905, label %if.end14.i.i.i1763, label %Flow3498, !amdgpu.uniform !42 ComputeLoop2649: ; preds = %if.then12.i.i.i1697, %ComputeLoop2649 %Accumulator2651 = phi i32 [ %3909, %ComputeLoop2649 ], [ -1, %if.then12.i.i.i1697 ] %ActiveBits2652 = phi i64 [ %3912, %ComputeLoop2649 ], [ %2206, %if.then12.i.i.i1697 ] %3906 = call i64 @llvm.cttz.i64(i64 %ActiveBits2652, i1 true) %3907 = trunc i64 %3906 to i32 %3908 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i1703, i32 %3907) %3909 = and i32 %Accumulator2651, %3908 %3910 = shl i64 1, %3906 %3911 = xor i64 %3910, -1 %3912 = and i64 %ActiveBits2652, %3911 %3913 = icmp eq i64 %3912, 0 br i1 %3913, label %ComputeEnd2650, label %ComputeLoop2649, !amdgpu.uniform !42 ComputeEnd2650: ; preds = %ComputeLoop2649 %.lcssa4028 = phi i32 [ %3909, %ComputeLoop2649 ] %3914 = trunc i64 %2206 to i32 %3915 = lshr i64 %2206, 32 %3916 = trunc i64 %3915 to i32 %3917 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3914, i32 0) %3918 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3916, i32 %3917) %3919 = icmp eq i32 %3918, 0 %3920 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3919) %3921 = extractvalue { i1, i64 } %3920, 0 %3922 = extractvalue { i1, i64 } %3920, 1 br i1 %3921, label %2207, label %2209 ComputeLoop2653: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit1771, %ComputeLoop2653 %Accumulator2655 = phi i32 [ %3926, %ComputeLoop2653 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit1771 ] %ActiveBits2656 = phi i64 [ %3929, %ComputeLoop2653 ], [ %2283, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit1771 ] %3923 = call i64 @llvm.cttz.i64(i64 %ActiveBits2656, i1 true) %3924 = trunc i64 %3923 to i32 %3925 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i1762, i32 %3924) %3926 = and i32 %Accumulator2655, %3925 %3927 = shl i64 1, %3923 %3928 = xor i64 %3927, -1 %3929 = and i64 %ActiveBits2656, %3928 %3930 = icmp eq i64 %3929, 0 br i1 %3930, label %ComputeEnd2654, label %ComputeLoop2653, !amdgpu.uniform !42 ComputeEnd2654: ; preds = %ComputeLoop2653 %.lcssa4022 = phi i32 [ %3926, %ComputeLoop2653 ] %3931 = trunc i64 %2283 to i32 %3932 = lshr i64 %2283, 32 %3933 = trunc i64 %3932 to i32 %3934 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3931, i32 0) %3935 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3933, i32 %3934) %3936 = icmp eq i32 %3935, 0 %3937 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3936) %3938 = extractvalue { i1, i64 } %3937, 0 %3939 = extractvalue { i1, i64 } %3937, 1 br i1 %3938, label %2284, label %2287 ComputeLoop2657: ; preds = %for.cond.i.i1.i1780, %ComputeLoop2657 %Accumulator2659 = phi i32 [ %3944, %ComputeLoop2657 ], [ 0, %for.cond.i.i1.i1780 ] %OldValuePhi2660 = phi i32 [ %3943, %ComputeLoop2657 ], [ poison, %for.cond.i.i1.i1780 ] %ActiveBits2661 = phi i64 [ %3947, %ComputeLoop2657 ], [ %2296, %for.cond.i.i1.i1780 ] %3940 = call i64 @llvm.cttz.i64(i64 %ActiveBits2661, i1 true) %3941 = trunc i64 %3940 to i32 %3942 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i1792, i32 %3941) %3943 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2659, i32 %3941, i32 %OldValuePhi2660) %3944 = or i32 %Accumulator2659, %3942 %3945 = shl i64 1, %3940 %3946 = xor i64 %3945, -1 %3947 = and i64 %ActiveBits2661, %3946 %3948 = icmp eq i64 %3947, 0 br i1 %3948, label %ComputeEnd2658, label %ComputeLoop2657, !amdgpu.uniform !42 ComputeEnd2658: ; preds = %ComputeLoop2657 %.lcssa4017 = phi i32 [ %3943, %ComputeLoop2657 ] %.lcssa4016 = phi i32 [ %3944, %ComputeLoop2657 ] %div8.i.i.i.i.i1788 = lshr i32 %spec.store.select.i.i.i1787, 5 %idxprom.i.i.i.i.i1789 = zext nneg i32 %div8.i.i.i.i.i1788 to i64 %3949 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i1789 %3950 = trunc i64 %2296 to i32 %3951 = lshr i64 %2296, 32 %3952 = trunc i64 %3951 to i32 %3953 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3950, i32 0) %3954 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3952, i32 %3953) %3955 = icmp eq i32 %3954, 0 %3956 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3955) %3957 = extractvalue { i1, i64 } %3956, 0 %3958 = extractvalue { i1, i64 } %3956, 1 br i1 %3957, label %2297, label %2299 Flow3471: ; preds = %2317, %if.then.i.i.i.i1798 %3959 = phi i1 [ false, %2317 ], [ true, %if.then.i.i.i.i1798 ] br i1 %3959, label %if.end14.i.i.i1869, label %Flow3472, !amdgpu.uniform !42 ComputeLoop2662: ; preds = %if.then12.i.i.i1803, %ComputeLoop2662 %Accumulator2664 = phi i32 [ %3963, %ComputeLoop2662 ], [ -1, %if.then12.i.i.i1803 ] %ActiveBits2665 = phi i64 [ %3966, %ComputeLoop2662 ], [ %2314, %if.then12.i.i.i1803 ] %3960 = call i64 @llvm.cttz.i64(i64 %ActiveBits2665, i1 true) %3961 = trunc i64 %3960 to i32 %3962 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i1809, i32 %3961) %3963 = and i32 %Accumulator2664, %3962 %3964 = shl i64 1, %3960 %3965 = xor i64 %3964, -1 %3966 = and i64 %ActiveBits2665, %3965 %3967 = icmp eq i64 %3966, 0 br i1 %3967, label %ComputeEnd2663, label %ComputeLoop2662, !amdgpu.uniform !42 ComputeEnd2663: ; preds = %ComputeLoop2662 %.lcssa4018 = phi i32 [ %3963, %ComputeLoop2662 ] %3968 = trunc i64 %2314 to i32 %3969 = lshr i64 %2314, 32 %3970 = trunc i64 %3969 to i32 %3971 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3968, i32 0) %3972 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3970, i32 %3971) %3973 = icmp eq i32 %3972, 0 %3974 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3973) %3975 = extractvalue { i1, i64 } %3974, 0 %3976 = extractvalue { i1, i64 } %3974, 1 br i1 %3975, label %2315, label %2317 ComputeLoop2666: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1877, %ComputeLoop2666 %Accumulator2668 = phi i32 [ %3980, %ComputeLoop2666 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1877 ] %ActiveBits2669 = phi i64 [ %3983, %ComputeLoop2666 ], [ %2391, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1877 ] %3977 = call i64 @llvm.cttz.i64(i64 %ActiveBits2669, i1 true) %3978 = trunc i64 %3977 to i32 %3979 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i1868, i32 %3978) %3980 = and i32 %Accumulator2668, %3979 %3981 = shl i64 1, %3977 %3982 = xor i64 %3981, -1 %3983 = and i64 %ActiveBits2669, %3982 %3984 = icmp eq i64 %3983, 0 br i1 %3984, label %ComputeEnd2667, label %ComputeLoop2666, !amdgpu.uniform !42 ComputeEnd2667: ; preds = %ComputeLoop2666 %.lcssa4012 = phi i32 [ %3980, %ComputeLoop2666 ] %3985 = trunc i64 %2391 to i32 %3986 = lshr i64 %2391, 32 %3987 = trunc i64 %3986 to i32 %3988 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3985, i32 0) %3989 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3987, i32 %3988) %3990 = icmp eq i32 %3989, 0 %3991 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3990) %3992 = extractvalue { i1, i64 } %3991, 0 %3993 = extractvalue { i1, i64 } %3991, 1 br i1 %3992, label %2392, label %2395 ComputeLoop2670: ; preds = %for.cond.i.i.i1886, %ComputeLoop2670 %Accumulator2672 = phi i32 [ %3998, %ComputeLoop2670 ], [ 0, %for.cond.i.i.i1886 ] %OldValuePhi2673 = phi i32 [ %3997, %ComputeLoop2670 ], [ poison, %for.cond.i.i.i1886 ] %ActiveBits2674 = phi i64 [ %4001, %ComputeLoop2670 ], [ %2532, %for.cond.i.i.i1886 ] %3994 = call i64 @llvm.cttz.i64(i64 %ActiveBits2674, i1 true) %3995 = trunc i64 %3994 to i32 %3996 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i1898, i32 %3995) %3997 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2672, i32 %3995, i32 %OldValuePhi2673) %3998 = or i32 %Accumulator2672, %3996 %3999 = shl i64 1, %3994 %4000 = xor i64 %3999, -1 %4001 = and i64 %ActiveBits2674, %4000 %4002 = icmp eq i64 %4001, 0 br i1 %4002, label %ComputeEnd2671, label %ComputeLoop2670, !amdgpu.uniform !42 ComputeEnd2671: ; preds = %ComputeLoop2670 %.lcssa4003 = phi i32 [ %3997, %ComputeLoop2670 ] %.lcssa4002 = phi i32 [ %3998, %ComputeLoop2670 ] %div8.i.i.i.i.i1894 = lshr i32 %spec.store.select.i.i.i1893, 5 %idxprom.i.i.i.i.i1895 = zext nneg i32 %div8.i.i.i.i.i1894 to i64 %4003 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i1895 %4004 = trunc i64 %2532 to i32 %4005 = lshr i64 %2532, 32 %4006 = trunc i64 %4005 to i32 %4007 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %4004, i32 0) %4008 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %4006, i32 %4007) %4009 = icmp eq i32 %4008, 0 %4010 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %4009) %4011 = extractvalue { i1, i64 } %4010, 0 %4012 = extractvalue { i1, i64 } %4010, 1 br i1 %4011, label %2533, label %2535 Flow3425: ; preds = %2553, %if.then.i.i.i.i1904 %4013 = phi i1 [ false, %2553 ], [ true, %if.then.i.i.i.i1904 ] br i1 %4013, label %if.end14.i.i.i1975, label %Flow3426, !amdgpu.uniform !42 ComputeLoop2675: ; preds = %if.then12.i.i.i1909, %ComputeLoop2675 %Accumulator2677 = phi i32 [ %4017, %ComputeLoop2675 ], [ -1, %if.then12.i.i.i1909 ] %ActiveBits2678 = phi i64 [ %4020, %ComputeLoop2675 ], [ %2550, %if.then12.i.i.i1909 ] %4014 = call i64 @llvm.cttz.i64(i64 %ActiveBits2678, i1 true) %4015 = trunc i64 %4014 to i32 %4016 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i1915, i32 %4015) %4017 = and i32 %Accumulator2677, %4016 %4018 = shl i64 1, %4014 %4019 = xor i64 %4018, -1 %4020 = and i64 %ActiveBits2678, %4019 %4021 = icmp eq i64 %4020, 0 br i1 %4021, label %ComputeEnd2676, label %ComputeLoop2675, !amdgpu.uniform !42 ComputeEnd2676: ; preds = %ComputeLoop2675 %.lcssa4004 = phi i32 [ %4017, %ComputeLoop2675 ] %4022 = trunc i64 %2550 to i32 %4023 = lshr i64 %2550, 32 %4024 = trunc i64 %4023 to i32 %4025 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %4022, i32 0) %4026 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %4024, i32 %4025) %4027 = icmp eq i32 %4026, 0 %4028 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %4027) %4029 = extractvalue { i1, i64 } %4028, 0 %4030 = extractvalue { i1, i64 } %4028, 1 br i1 %4029, label %2551, label %2553 ComputeLoop2679: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit1983, %ComputeLoop2679 %Accumulator2681 = phi i32 [ %4034, %ComputeLoop2679 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit1983 ] %ActiveBits2682 = phi i64 [ %4037, %ComputeLoop2679 ], [ %2648, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit1983 ] %4031 = call i64 @llvm.cttz.i64(i64 %ActiveBits2682, i1 true) %4032 = trunc i64 %4031 to i32 %4033 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i1974, i32 %4032) %4034 = and i32 %Accumulator2681, %4033 %4035 = shl i64 1, %4031 %4036 = xor i64 %4035, -1 %4037 = and i64 %ActiveBits2682, %4036 %4038 = icmp eq i64 %4037, 0 br i1 %4038, label %ComputeEnd2680, label %ComputeLoop2679, !amdgpu.uniform !42 ComputeEnd2680: ; preds = %ComputeLoop2679 %.lcssa3994 = phi i32 [ %4034, %ComputeLoop2679 ] %4039 = trunc i64 %2648 to i32 %4040 = lshr i64 %2648, 32 %4041 = trunc i64 %4040 to i32 %4042 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %4039, i32 0) %4043 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %4041, i32 %4042) %4044 = icmp eq i32 %4043, 0 %4045 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %4044) %4046 = extractvalue { i1, i64 } %4045, 0 %4047 = extractvalue { i1, i64 } %4045, 1 br i1 %4046, label %2649, label %2652 ComputeLoop2683: ; preds = %for.cond.i.i.i1987, %ComputeLoop2683 %Accumulator2685 = phi i32 [ %4052, %ComputeLoop2683 ], [ 0, %for.cond.i.i.i1987 ] %OldValuePhi2686 = phi i32 [ %4051, %ComputeLoop2683 ], [ poison, %for.cond.i.i.i1987 ] %ActiveBits2687 = phi i64 [ %4055, %ComputeLoop2683 ], [ %2661, %for.cond.i.i.i1987 ] %4048 = call i64 @llvm.cttz.i64(i64 %ActiveBits2687, i1 true) %4049 = trunc i64 %4048 to i32 %4050 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i1999, i32 %4049) %4051 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2685, i32 %4049, i32 %OldValuePhi2686) %4052 = or i32 %Accumulator2685, %4050 %4053 = shl i64 1, %4048 %4054 = xor i64 %4053, -1 %4055 = and i64 %ActiveBits2687, %4054 %4056 = icmp eq i64 %4055, 0 br i1 %4056, label %ComputeEnd2684, label %ComputeLoop2683, !amdgpu.uniform !42 ComputeEnd2684: ; preds = %ComputeLoop2683 %.lcssa3989 = phi i32 [ %4051, %ComputeLoop2683 ] %.lcssa3988 = phi i32 [ %4052, %ComputeLoop2683 ] %div8.i.i.i.i.i1995 = lshr i32 %spec.store.select.i.i.i1994, 5 %idxprom.i.i.i.i.i1996 = zext nneg i32 %div8.i.i.i.i.i1995 to i64 %4057 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i1996 %4058 = trunc i64 %2661 to i32 %4059 = lshr i64 %2661, 32 %4060 = trunc i64 %4059 to i32 %4061 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %4058, i32 0) %4062 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %4060, i32 %4061) %4063 = icmp eq i32 %4062, 0 %4064 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %4063) %4065 = extractvalue { i1, i64 } %4064, 0 %4066 = extractvalue { i1, i64 } %4064, 1 br i1 %4065, label %2662, label %2664 Flow3406: ; preds = %2682, %if.then.i.i.i.i2005 %4067 = phi i1 [ false, %2682 ], [ true, %if.then.i.i.i.i2005 ] br i1 %4067, label %if.end14.i.i.i2074, label %Flow3407, !amdgpu.uniform !42 ComputeLoop2688: ; preds = %if.then12.i.i.i2010, %ComputeLoop2688 %Accumulator2690 = phi i32 [ %4071, %ComputeLoop2688 ], [ -1, %if.then12.i.i.i2010 ] %ActiveBits2691 = phi i64 [ %4074, %ComputeLoop2688 ], [ %2679, %if.then12.i.i.i2010 ] %4068 = call i64 @llvm.cttz.i64(i64 %ActiveBits2691, i1 true) %4069 = trunc i64 %4068 to i32 %4070 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i2016, i32 %4069) %4071 = and i32 %Accumulator2690, %4070 %4072 = shl i64 1, %4068 %4073 = xor i64 %4072, -1 %4074 = and i64 %ActiveBits2691, %4073 %4075 = icmp eq i64 %4074, 0 br i1 %4075, label %ComputeEnd2689, label %ComputeLoop2688, !amdgpu.uniform !42 ComputeEnd2689: ; preds = %ComputeLoop2688 %.lcssa3990 = phi i32 [ %4071, %ComputeLoop2688 ] %4076 = trunc i64 %2679 to i32 %4077 = lshr i64 %2679, 32 %4078 = trunc i64 %4077 to i32 %4079 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %4076, i32 0) %4080 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %4078, i32 %4079) %4081 = icmp eq i32 %4080, 0 %4082 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %4081) %4083 = extractvalue { i1, i64 } %4082, 0 %4084 = extractvalue { i1, i64 } %4082, 1 br i1 %4083, label %2680, label %2682 ComputeLoop2692: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit2082, %ComputeLoop2692 %Accumulator2694 = phi i32 [ %4088, %ComputeLoop2692 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit2082 ] %ActiveBits2695 = phi i64 [ %4091, %ComputeLoop2692 ], [ %2734, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit2082 ] %4085 = call i64 @llvm.cttz.i64(i64 %ActiveBits2695, i1 true) %4086 = trunc i64 %4085 to i32 %4087 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i2073, i32 %4086) %4088 = and i32 %Accumulator2694, %4087 %4089 = shl i64 1, %4085 %4090 = xor i64 %4089, -1 %4091 = and i64 %ActiveBits2695, %4090 %4092 = icmp eq i64 %4091, 0 br i1 %4092, label %ComputeEnd2693, label %ComputeLoop2692, !amdgpu.uniform !42 ComputeEnd2693: ; preds = %ComputeLoop2692 %.lcssa = phi i32 [ %4088, %ComputeLoop2692 ] %4093 = trunc i64 %2734 to i32 %4094 = lshr i64 %2734, 32 %4095 = trunc i64 %4094 to i32 %4096 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %4093, i32 0) %4097 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %4095, i32 %4096) %4098 = icmp eq i32 %4097, 0 %4099 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %4098) %4100 = extractvalue { i1, i64 } %4099, 0 %4101 = extractvalue { i1, i64 } %4099, 1 br i1 %4100, label %2735, label %2738 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.abs.i32(i32, i1 immarg) #2 ; Function Attrs: convergent mustprogress nofree norecurse nounwind define internal fastcc noundef zeroext i1 @_ZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationE(ptr noundef writeonly captures(none) %Ctx, i1 noundef zeroext %LHS, i1 noundef zeroext %RHS, ptr noundef %LHSStr, ptr noundef %RHSStr, i32 %Loc.coerce1) unnamed_addr #8 comdat { entry: %LHS.inv = xor i1 %LHS, true %RHS.inv = xor i1 %RHS, true %buffer.i.i.i = alloca %"class.__llvm_libc_22_0_0_git::IntegerToString", align 8, addrspace(5) %buffer.i.i.i93.i = alloca %"class.__llvm_libc_22_0_0_git::IntegerToString", align 8, addrspace(5) %buffer.i.i.i.i = alloca %"class.__llvm_libc_22_0_0_git::IntegerToString", align 8, addrspace(5) %0 = xor i1 %LHS, %RHS %1 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %0) %2 = extractvalue { i1, i64 } %1, 0 %3 = extractvalue { i1, i64 } %1, 1 br i1 %2, label %if.end.i, label %Flow3776 if.end.i: ; preds = %entry store i8 1, ptr %Ctx, align 1, !tbaa !65 %spec.select.i = tail call i64 @llvm.usub.sat.i64(i64 sub (i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.9, i64 8) to ptr) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.9 to ptr) to i64)), i64 2) %cmp.i.not.i.i = icmp uge i64 sub (i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.9, i64 8) to ptr) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.9 to ptr) to i64)), 3 br i1 %cmp.i.not.i.i, label %if.then.i.i.i, label %Flow3775, !amdgpu.uniform !42 if.then.i.i.i: ; preds = %if.end.i %inc.i.i.i.i = add nuw i64 %spec.select.i, 1 %cmp2.i.i.i.i = icmp ult i64 %spec.select.i, 1676976733973595600 br i1 %cmp2.i.i.i.i, label %if.then3.i.i.i.i, label %if.end4.i.i.i.i, !amdgpu.uniform !42 if.then3.i.i.i.i: ; preds = %if.then.i.i.i %mul.i.i.i.i = mul nuw i64 %inc.i.i.i.i, 11 %div18.i.i.i.i = lshr i64 %mul.i.i.i.i, 3 br label %if.end4.i.i.i.i, !amdgpu.uniform !42 Flow3775: ; preds = %Flow3774, %if.end.i %4 = phi ptr [ %cond.i.i, %Flow3774 ], [ addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr), %if.end.i ] br label %if.end.i.i.i, !amdgpu.uniform !42 if.end4.i.i.i.i: ; preds = %if.then3.i.i.i.i, %if.then.i.i.i %new_capacity.addr.0.i.i.i.i = phi i64 [ %div18.i.i.i.i, %if.then3.i.i.i.i ], [ %inc.i.i.i.i, %if.then.i.i.i ] %sub.i.i = add i64 %new_capacity.addr.0.i.i.i.i, 7 %div2.i.i = and i64 %sub.i.i, -8 %5 = load ptr, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %add.ptr.i.i = getelementptr inbounds nuw i8, ptr %5, i64 %div2.i.i store ptr %add.ptr.i.i, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %sub.ptr.lhs.cast.i.i = ptrtoint ptr %add.ptr.i.i to i64 %sub.ptr.sub.i.i = sub i64 %sub.ptr.lhs.cast.i.i, ptrtoint (ptr addrspacecast (ptr addrspace(1) @_ZN12_GLOBAL__N_16memoryE to ptr) to i64) %cmp.i.i = icmp ugt i64 %sub.ptr.sub.i.i, 65335 %cond.i.i = select i1 %cmp.i.i, ptr null, ptr %5 %6 = icmp ne i64 0, %spec.select.i br i1 %6, label %loadstoreloop2181.preheader, label %Flow3774, !amdgpu.uniform !42 loadstoreloop2181.preheader: ; preds = %if.end4.i.i.i.i br label %loadstoreloop2181, !amdgpu.uniform !42 Flow3774: ; preds = %Flow3773, %if.end4.i.i.i.i br label %Flow3775, !amdgpu.uniform !42 loadstoreloop2181: ; preds = %loadstoreloop2181.preheader, %loadstoreloop2181 %7 = phi i64 [ %9, %loadstoreloop2181 ], [ 0, %loadstoreloop2181.preheader ] %8 = getelementptr i8, ptr %5, i64 %7 store i8 0, ptr %8, align 1 %9 = add i64 %7, 1 %10 = icmp uge i64 %9, %spec.select.i br i1 %10, label %Flow3773, label %loadstoreloop2181, !amdgpu.uniform !42 Flow3773: ; preds = %loadstoreloop2181 br label %Flow3774, !amdgpu.uniform !42 Flow3776: ; preds = %2546, %entry call void @llvm.amdgcn.end.cf.i64(i64 %3) br label %_ZZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationEENKUlbNS_3cpp11string_viewEE_clEbSB_.exit, !amdgpu.uniform !42 if.end.i.i.i: ; preds = %Flow3775 %cmp.not.i6.i.i.i = icmp ne ptr %4, addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr) br i1 %cmp.not.i6.i.i.i, label %if.then.i.i.i.i, label %_ZN22__llvm_libc_22_0_0_git3cpp6stringC2Emc.exit.i, !amdgpu.uniform !42 if.then.i.i.i.i: ; preds = %if.end.i.i.i %arrayidx.i.i.i.i = getelementptr inbounds nuw i8, ptr %4, i64 %spec.select.i store i8 0, ptr %arrayidx.i.i.i.i, align 1, !tbaa !57 br label %_ZN22__llvm_libc_22_0_0_git3cpp6stringC2Emc.exit.i, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git3cpp6stringC2Emc.exit.i: ; preds = %if.then.i.i.i.i, %if.end.i.i.i %11 = icmp ne i64 0, %spec.select.i br i1 %11, label %loadstoreloop2179.preheader, label %Flow3772, !amdgpu.uniform !42 loadstoreloop2179.preheader: ; preds = %_ZN22__llvm_libc_22_0_0_git3cpp6stringC2Emc.exit.i br label %loadstoreloop2179, !amdgpu.uniform !42 Flow3772: ; preds = %Flow3771, %_ZN22__llvm_libc_22_0_0_git3cpp6stringC2Emc.exit.i br label %split2178, !amdgpu.uniform !42 loadstoreloop2179: ; preds = %loadstoreloop2179.preheader, %loadstoreloop2179 %12 = phi i64 [ %14, %loadstoreloop2179 ], [ 0, %loadstoreloop2179.preheader ] %13 = getelementptr i8, ptr %4, i64 %12 store i8 32, ptr %13, align 1 %14 = add i64 %12, 1 %15 = icmp uge i64 %14, %spec.select.i br i1 %15, label %Flow3771, label %loadstoreloop2179, !amdgpu.uniform !42 Flow3771: ; preds = %loadstoreloop2179 br label %Flow3772, !amdgpu.uniform !42 split2178: ; preds = %Flow3772 %16 = tail call i32 @llvm.amdgcn.mbcnt.lo(i32 -1, i32 0) %17 = tail call noundef i32 @llvm.amdgcn.mbcnt.hi(i32 -1, i32 %16) %sh_prom.i.i.i.i = zext i32 %17 to i64 br label %for.cond.i.i1.i, !amdgpu.uniform !42 for.cond.i.i1.i: ; preds = %split2178, %Flow3770 %18 = phi i32 [ %56, %Flow3770 ], [ poison, %split2178 ] %19 = phi i64 [ %57, %Flow3770 ], [ poison, %split2178 ] %20 = phi i32 [ %58, %Flow3770 ], [ poison, %split2178 ] %retval.sroa.6.0.i.i.i = phi i32 [ %61, %Flow3770 ], [ undef, %split2178 ] %retval.sroa.2.0.i.i.i = phi i64 [ %60, %Flow3770 ], [ undef, %split2178 ] %retval.sroa.8.0.i.i.i = phi i32 [ %59, %Flow3770 ], [ undef, %split2178 ] %index.0.i.i.i = phi i32 [ %63, %Flow3770 ], [ 0, %split2178 ] %21 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i = icmp ult i32 %index.0.i.i.i, %21 %spec.store.select.i.i.i = select i1 %cmp.not.i.i.i, i32 %index.0.i.i.i, i32 0 %22 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %23 = and i32 %spec.store.select.i.i.i, 31 %24 = lshr i64 %22, %sh_prom.i.i.i.i %25 = trunc i64 %24 to i32 %conv4.i.i.i.i.i = and i32 %25, 1 %shl.i.i.i.i.i = shl nuw i32 %conv4.i.i.i.i.i, %23 %26 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop, !amdgpu.uniform !42 27: ; preds = %ComputeEnd %sunkaddr = getelementptr inbounds i8, ptr addrspace(1) %2753, i64 40 %28 = atomicrmw or ptr addrspace(1) %sunkaddr, i32 %.lcssa4081 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %29, !amdgpu.uniform !42 29: ; preds = %27, %ComputeEnd %30 = phi i32 [ %28, %27 ], [ poison, %ComputeEnd ] call void @llvm.amdgcn.end.cf.i64(i64 %2762) %31 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %30) %32 = or i32 %31, %.lcssa4082 %shl5.i.i.i.i.i = shl nuw i32 1, %23 %and.i.i.i.i.i = and i32 %shl5.i.i.i.i.i, %32 %tobool3.i.i.i.i = icmp ne i32 %and.i.i.i.i.i, 0 %33 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i) %and.i.i.i.i.i.i = and i64 %33, %22 %cmp.i.not.i.i.i = icmp ne i64 %22, %and.i.i.i.i.i.i br i1 %cmp.i.not.i.i.i, label %if.then.i.i.i.i1, label %Flow3769, !amdgpu.uniform !42 if.then.i.i.i.i1: ; preds = %29 fence syncscope("agent") acquire %34 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %35 = extractelement <2 x i64> %34, i32 0 %36 = inttoptr i64 %35 to ptr %37 = extractelement <2 x i64> %34, i32 1 %38 = inttoptr i64 %37 to ptr %idxprom.i.i.i.i = zext i32 %spec.store.select.i.i.i to i64 %arrayidx.i.i.i.i2 = getelementptr inbounds nuw i32, ptr %36, i64 %idxprom.i.i.i.i, !amdgpu.uniform !42 %39 = load atomic i32, ptr %arrayidx.i.i.i.i2 monotonic, align 4 %40 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %39) %arrayidx.i45.i.i.i = getelementptr inbounds nuw i32, ptr %38, i64 %idxprom.i.i.i.i, !amdgpu.uniform !42 %41 = load atomic i32, ptr %arrayidx.i45.i.i.i monotonic, align 4 %42 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %41) %cmp.i46.not.i.i.i = icmp ne i32 %40, %42 br i1 %cmp.i46.not.i.i.i, label %if.then12.i.i.i, label %Flow3767, !amdgpu.uniform !42 if.then12.i.i.i: ; preds = %if.then.i.i.i.i1 fence syncscope("agent") release %43 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %22, i1 true) %iszero.i.i.i.i.i.i.i = icmp ne i64 %22, 0 %cmp2.i.i.i.i.i.i = icmp eq i64 %43, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i = select i1 %iszero.i.i.i.i.i.i.i, i1 %cmp2.i.i.i.i.i.i, i1 false %conv4.i.i51.i.i.i = zext i1 %cmp.i.i.i.i.i.i to i32 %shl.i.i52.i.i.i = shl nuw i32 %conv4.i.i51.i.i.i, %23 %xor.i.i.i.i.i = xor i32 %shl.i.i52.i.i.i, -1 %44 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2416, !amdgpu.uniform !42 45: ; preds = %ComputeEnd2417 %sunkaddr3238 = getelementptr inbounds i8, ptr addrspace(1) %2753, i64 40 %46 = atomicrmw and ptr addrspace(1) %sunkaddr3238, i32 %.lcssa4083 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %47, !amdgpu.uniform !42 47: ; preds = %45, %ComputeEnd2417 call void @llvm.amdgcn.end.cf.i64(i64 %2780) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3767, !amdgpu.uniform !42 if.end14.i.i.i: ; preds = %Flow3767 %48 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %22, i1 true) %iszero.i.i.i.i.i.i = icmp ne i64 %22, 0 %cmp2.i.i.i.i.i = icmp eq i64 %48, %sh_prom.i.i.i.i %cmp.i.i.i.i.i = select i1 %iszero.i.i.i.i.i.i, i1 %cmp2.i.i.i.i.i, i1 false %49 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i) %50 = extractvalue { i1, i64 } %49, 0 %51 = extractvalue { i1, i64 } %49, 1 br i1 %50, label %if.then16.i.i.i, label %if.end22.i.i.i if.then16.i.i.i: ; preds = %if.end14.i.i.i %52 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i = getelementptr inbounds nuw %"struct.rpc::Header", ptr %52, i64 %idxprom.i.i.i.i, i32 1 store i32 1660944387, ptr %opcode.i.i.i, align 8, !tbaa !77 %arrayidx21.i.i.i = getelementptr inbounds nuw %"struct.rpc::Header", ptr %52, i64 %idxprom.i.i.i.i store i64 %22, ptr %arrayidx21.i.i.i, align 8, !tbaa !80 br label %if.end22.i.i.i, !amdgpu.uniform !42 Flow3768: ; preds = %if.end22.i.i.i, %Flow3767 %53 = phi i32 [ %40, %if.end22.i.i.i ], [ %retval.sroa.8.0.i.i.i, %Flow3767 ] %54 = phi i64 [ %22, %if.end22.i.i.i ], [ %retval.sroa.2.0.i.i.i, %Flow3767 ] %55 = phi i32 [ %spec.store.select.i.i.i, %if.end22.i.i.i ], [ %retval.sroa.6.0.i.i.i, %Flow3767 ] br label %cleanup26.i.i.i, !amdgpu.uniform !42 if.end22.i.i.i: ; preds = %if.then16.i.i.i, %if.end14.i.i.i call void @llvm.amdgcn.end.cf.i64(i64 %51) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3768, !amdgpu.uniform !42 Flow3769: ; preds = %cleanup26.i.i.i, %29 %56 = phi i32 [ %55, %cleanup26.i.i.i ], [ %18, %29 ] %57 = phi i64 [ %54, %cleanup26.i.i.i ], [ %19, %29 ] %58 = phi i32 [ %53, %cleanup26.i.i.i ], [ %20, %29 ] %59 = phi i32 [ %53, %cleanup26.i.i.i ], [ %retval.sroa.8.0.i.i.i, %29 ] %60 = phi i64 [ %54, %cleanup26.i.i.i ], [ %retval.sroa.2.0.i.i.i, %29 ] %61 = phi i32 [ %55, %cleanup26.i.i.i ], [ %retval.sroa.6.0.i.i.i, %29 ] %62 = phi i1 [ %cmp.i46.not.i.i.i, %cleanup26.i.i.i ], [ true, %29 ] br i1 %62, label %for.inc.i.i.i, label %Flow3770, !amdgpu.uniform !42 cleanup26.i.i.i: ; preds = %Flow3768 br label %Flow3769, !amdgpu.uniform !42 for.inc.i.i.i: ; preds = %Flow3769 %inc.i.i.i = add i32 %spec.store.select.i.i.i, 1 br label %Flow3770, !amdgpu.uniform !42 Flow3770: ; preds = %for.inc.i.i.i, %Flow3769 %63 = phi i32 [ %inc.i.i.i, %for.inc.i.i.i ], [ poison, %Flow3769 ] %64 = phi i1 [ false, %for.inc.i.i.i ], [ true, %Flow3769 ] br i1 %64, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i, label %for.cond.i.i1.i, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i: ; preds = %Flow3770 %.lcssa4086 = phi i32 [ %56, %Flow3770 ] %.lcssa4085 = phi i64 [ %57, %Flow3770 ] %.lcssa4084 = phi i32 [ %58, %Flow3770 ] fence acquire %65 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i = shl i32 %.lcssa4086, 6 %idxprom.i19.i.i.i.i.i = zext i32 %mul.i.i.i.i.i.i to i64 %arrayidx.i20.i.i.i.i.i = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %65, i64 %idxprom.i19.i.i.i.i.i %arrayidx.i22.i.i.i.i.i = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i, i64 %sh_prom.i.i.i.i store i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.2 to ptr), i64 81) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.2 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i = tail call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.2 to ptr), i64 81) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.2 to ptr) to i64)), i64 56) %66 = and i64 %spec.select.i.i.i.i.i.i.i, 15 %67 = sub i64 %spec.select.i.i.i.i.i.i.i, %66 %68 = icmp ne i64 %67, 0 br i1 %68, label %loop-memcpy-expansion2309.preheader, label %Flow3766, !amdgpu.uniform !42 loop-memcpy-expansion2309.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i %69 = shl nuw nsw i64 %sh_prom.i.i.i.i, 6 %70 = add nuw nsw i64 %69, 8 %scevgep3205 = getelementptr i8, ptr %65, i64 %70 %71 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i, 6 %scevgep3206 = getelementptr i8, ptr %scevgep3205, i64 %71 br label %loop-memcpy-expansion2309, !amdgpu.uniform !42 Flow3766: ; preds = %Flow3765, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i br label %loop-memcpy-residual-header2312, !amdgpu.uniform !42 loop-memcpy-expansion2309: ; preds = %loop-memcpy-expansion2309.preheader, %loop-memcpy-expansion2309 %loop-index2310 = phi i64 [ %74, %loop-memcpy-expansion2309 ], [ 0, %loop-memcpy-expansion2309.preheader ] %72 = getelementptr i8, ptr addrspace(4) @.str.2, i64 %loop-index2310, !amdgpu.uniform !42 %73 = load <4 x i32>, ptr addrspace(4) %72, align 1 %scevgep3207 = getelementptr i8, ptr %scevgep3206, i64 %loop-index2310 store <4 x i32> %73, ptr %scevgep3207, align 1 %74 = add i64 %loop-index2310, 16 %75 = icmp uge i64 %74, %67 br i1 %75, label %Flow3765, label %loop-memcpy-expansion2309, !amdgpu.uniform !42 Flow3764: ; preds = %Flow3762, %Flow3763 %76 = phi i64 [ %2672, %Flow3762 ], [ %2669, %Flow3763 ] %77 = phi i64 [ %2674, %Flow3762 ], [ %2670, %Flow3763 ] br label %post-loop-memcpy-expansion2308, !amdgpu.uniform !42 loop-memcpy-residual2311: ; preds = %loop-memcpy-residual2311.preheader, %loop-memcpy-residual2311 %residual-loop-index2313 = phi i64 [ %79, %loop-memcpy-residual2311 ], [ 0, %loop-memcpy-residual2311.preheader ] %scevgep3204 = getelementptr i8, ptr addrspace(4) getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.2, i64 48), i64 %residual-loop-index2313, !amdgpu.uniform !42 %78 = load i8, ptr addrspace(4) %scevgep3204, align 1 %scevgep3203 = getelementptr i8, ptr %scevgep3202, i64 %residual-loop-index2313 store i8 %78, ptr %scevgep3203, align 1 %79 = add i64 %residual-loop-index2313, 1 %80 = icmp uge i64 %79, %66 br i1 %80, label %Flow3762, label %loop-memcpy-residual2311, !amdgpu.uniform !42 Flow3762: ; preds = %loop-memcpy-residual2311 br label %Flow3764, !amdgpu.uniform !42 post-loop-memcpy-expansion2308: ; preds = %Flow3764 %tobool.not.i.i.i.i.i.i = icmp eq i32 %.lcssa4084, 0 %conv.i.i.i.i.i.i = zext i1 %tobool.not.i.i.i.i.i.i to i32 fence release %81 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i = zext i32 %.lcssa4086 to i64 %arrayidx.i24.i.i.i.i.i = getelementptr inbounds nuw i32, ptr %81, i64 %idxprom.i23.i.i.i.i.i store atomic i32 %conv.i.i.i.i.i.i, ptr %arrayidx.i24.i.i.i.i.i monotonic, align 4 %82 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i = getelementptr inbounds nuw %"struct.rpc::Header", ptr %82, i64 %idxprom.i23.i.i.i.i.i, !amdgpu.uniform !42 %83 = load i64, ptr %arrayidx.i.i5.i.i, align 8, !tbaa !80 br label %while.cond.i.i.i.i, !amdgpu.uniform !42 while.cond.i.i.i.i: ; preds = %post-loop-memcpy-expansion2308, %Flow3761 %phi.broken = phi i64 [ 0, %post-loop-memcpy-expansion2308 ], [ %100, %Flow3761 ] %lsr.iv3194 = phi i64 [ %98, %Flow3761 ], [ 25, %post-loop-memcpy-expansion2308 ] %lsr.iv3189 = phi ptr addrspace(4) [ %97, %Flow3761 ], [ getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.2, i64 56), %post-loop-memcpy-expansion2308 ] %port.sroa.37.0.i.i = phi i32 [ %96, %Flow3761 ], [ %conv.i.i.i.i.i.i, %post-loop-memcpy-expansion2308 ] %idx.0.i.i.i.i = phi i64 [ %95, %Flow3761 ], [ 56, %post-loop-memcpy-expansion2308 ] %cmp.i.i.i.i = icmp ult i64 %idx.0.i.i.i.i, sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.2 to ptr), i64 81) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.2 to ptr) to i64)) %84 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i) %and.i.i.i.i6.i.i = and i64 %84, %83 %tobool.not.i.i.i.i = icmp ne i64 %and.i.i.i.i6.i.i, 0 %85 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i = getelementptr inbounds nuw i32, ptr %85, i64 %idxprom.i23.i.i.i.i.i, !amdgpu.uniform !42 %86 = load atomic i32, ptr %arrayidx.i22.i.i.i monotonic, align 4 %87 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i) %88 = extractvalue { i1, i64 } %87, 0 %89 = extractvalue { i1, i64 } %87, 1 br i1 %88, label %cond.false.i8.i.i.i.i, label %Flow3761 cond.false.i8.i.i.i.i: ; preds = %while.cond.i.i.i.i %90 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %86) %91 = icmp ne i32 %90, %port.sroa.37.0.i.i br i1 %91, label %while.body.i.i21.i.i.i.i.preheader, label %Flow3760, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i.preheader: ; preds = %cond.false.i8.i.i.i.i br label %while.body.i.i21.i.i.i.i, !amdgpu.uniform !42 Flow3760: ; preds = %Flow3759, %cond.false.i8.i.i.i.i br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i: ; preds = %while.body.i.i21.i.i.i.i.preheader, %while.body.i.i21.i.i.i.i tail call void @llvm.amdgcn.s.sleep(i32 2) %92 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i = getelementptr inbounds nuw i32, ptr %92, i64 %idxprom.i23.i.i.i.i.i, !amdgpu.uniform !42 %93 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i monotonic, align 4 %94 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %93) %cmp.i.not.i.i23.i.i.i.i = icmp eq i32 %94, %port.sroa.37.0.i.i br i1 %cmp.i.not.i.i23.i.i.i.i, label %Flow3759, label %while.body.i.i21.i.i.i.i, !amdgpu.uniform !42 Flow3759: ; preds = %while.body.i.i21.i.i.i.i br label %Flow3760, !amdgpu.uniform !42 Flow3761: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i, %while.cond.i.i.i.i %95 = phi i64 [ %add.i.i.i.i, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i ], [ poison, %while.cond.i.i.i.i ] %96 = phi i32 [ %conv.i.i26.i.i.i.i, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i ], [ poison, %while.cond.i.i.i.i ] %97 = phi ptr addrspace(4) [ %scevgep3190, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i ], [ poison, %while.cond.i.i.i.i ] %98 = phi i64 [ %lsr.iv.next3195, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i ], [ poison, %while.cond.i.i.i.i ] %99 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i ], [ true, %while.cond.i.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %89) %100 = call i64 @llvm.amdgcn.if.break.i64(i1 %99, i64 %phi.broken) %101 = call i1 @llvm.amdgcn.loop.i64(i64 %100) br i1 %101, label %cond.false.i.i.i, label %while.cond.i.i.i.i _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i: ; preds = %Flow3760 fence acquire br i1 %cmp.i.i.i.i, label %if.then.i.i.i.i.i.i.i, label %Flow3758, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i %sub.i.i.i.i.i.i.i = sub nuw i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.2 to ptr), i64 81) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.2 to ptr) to i64)), %idx.0.i.i.i.i %spec.select.i.i.i36.i.i.i.i = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i, i64 64) %102 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %103 = and i64 %spec.select.i.i.i36.i.i.i.i, 15 %104 = sub i64 %spec.select.i.i.i36.i.i.i.i, %103 %105 = icmp ne i64 %104, 0 br i1 %105, label %loop-memcpy-expansion2315.preheader, label %Flow3757, !amdgpu.uniform !42 loop-memcpy-expansion2315.preheader: ; preds = %if.then.i.i.i.i.i.i.i %arrayidx.i20.i35.i.i.i.i = getelementptr %"struct.rpc::Buffer", ptr %102, i64 %idxprom.i19.i.i.i.i.i %arrayidx.i22.i38.i.i.i.i = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2315, !amdgpu.uniform !42 Flow3757: ; preds = %Flow3756, %if.then.i.i.i.i.i.i.i br label %loop-memcpy-residual-header2318, !amdgpu.uniform !42 loop-memcpy-expansion2315: ; preds = %loop-memcpy-expansion2315.preheader, %loop-memcpy-expansion2315 %loop-index2316 = phi i64 [ %108, %loop-memcpy-expansion2315 ], [ 0, %loop-memcpy-expansion2315.preheader ] %scevgep3191 = getelementptr i8, ptr addrspace(4) %lsr.iv3189, i64 %loop-index2316, !amdgpu.uniform !42 %106 = load <4 x i32>, ptr addrspace(4) %scevgep3191, align 1 %107 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i, i64 %loop-index2316 store <4 x i32> %106, ptr %107, align 1 %108 = add i64 %loop-index2316, 16 %109 = icmp uge i64 %108, %104 br i1 %109, label %Flow3756, label %loop-memcpy-expansion2315, !amdgpu.uniform !42 Flow3755: ; preds = %Flow3754, %loop-memcpy-residual-header2318 br label %Flow3758, !amdgpu.uniform !42 loop-memcpy-residual2317: ; preds = %loop-memcpy-residual2317.preheader, %loop-memcpy-residual2317 %residual-loop-index2319 = phi i64 [ %111, %loop-memcpy-residual2317 ], [ 0, %loop-memcpy-residual2317.preheader ] %scevgep3200 = getelementptr i8, ptr addrspace(4) %scevgep3199, i64 %residual-loop-index2319, !amdgpu.uniform !42 %110 = load i8, ptr addrspace(4) %scevgep3200, align 1 %scevgep3198 = getelementptr i8, ptr %scevgep3197, i64 %residual-loop-index2319 store i8 %110, ptr %scevgep3198, align 1 %111 = add i64 %residual-loop-index2319, 1 %112 = icmp uge i64 %111, %103 br i1 %112, label %Flow3754, label %loop-memcpy-residual2317, !amdgpu.uniform !42 Flow3754: ; preds = %loop-memcpy-residual2317 br label %Flow3755, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i: ; preds = %Flow3758 %conv.i.i26.i.i.i.i = xor i32 %port.sroa.37.0.i.i, 1 fence release %113 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i = getelementptr inbounds nuw i32, ptr %113, i64 %idxprom.i23.i.i.i.i.i store atomic i32 %conv.i.i26.i.i.i.i, ptr %arrayidx.i24.i29.i.i.i.i monotonic, align 4 %add.i.i.i.i = add i64 %idx.0.i.i.i.i, 64 %scevgep3190 = getelementptr i8, ptr addrspace(4) %lsr.iv3189, i64 64 %lsr.iv.next3195 = add i64 %lsr.iv3194, -64 br label %Flow3761, !amdgpu.uniform !42 cond.false.i.i.i: ; preds = %Flow3761 %.lcssa4080 = phi i64 [ %100, %Flow3761 ] %port.sroa.37.0.i.i.lcssa = phi i32 [ %port.sroa.37.0.i.i, %Flow3761 ] %.lcssa4079 = phi i32 [ %86, %Flow3761 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4080) %114 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa4079) %115 = icmp ne i32 %114, %port.sroa.37.0.i.i.lcssa %116 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %115) %117 = extractvalue { i1, i64 } %116, 0 %118 = extractvalue { i1, i64 } %116, 1 br i1 %117, label %while.body.i.i.i.i.preheader, label %Flow3753 while.body.i.i.i.i.preheader: ; preds = %cond.false.i.i.i br label %while.body.i.i.i.i, !amdgpu.uniform !42 Flow3753: ; preds = %Flow3752, %cond.false.i.i.i call void @llvm.amdgcn.end.cf.i64(i64 %118) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit, !amdgpu.uniform !42 while.body.i.i.i.i: ; preds = %while.body.i.i.i.i.preheader, %while.body.i.i.i.i %phi.broken3777 = phi i64 [ 0, %while.body.i.i.i.i.preheader ], [ %122, %while.body.i.i.i.i ] tail call void @llvm.amdgcn.s.sleep(i32 2) %119 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i = getelementptr inbounds nuw i32, ptr %119, i64 %idxprom.i23.i.i.i.i.i, !amdgpu.uniform !42 %120 = load atomic i32, ptr %arrayidx.i.i.i8.i.i monotonic, align 4 %121 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %120) %cmp.i.not.i.i.i.i = icmp eq i32 %121, %port.sroa.37.0.i.i.lcssa %122 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i, i64 %phi.broken3777) %123 = call i1 @llvm.amdgcn.loop.i64(i64 %122) br i1 %123, label %Flow3752, label %while.body.i.i.i.i Flow3752: ; preds = %while.body.i.i.i.i %.lcssa4078 = phi i64 [ %122, %while.body.i.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4078) br label %Flow3753, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit: ; preds = %Flow3753 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %124 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4085, i1 true) %iszero.i.i.i.i.i13.i.i = icmp ne i64 %.lcssa4085, 0 %cmp2.i.i.i.i14.i.i = icmp eq i64 %124, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i = select i1 %iszero.i.i.i.i.i13.i.i, i1 %cmp2.i.i.i.i14.i.i, i1 false %125 = and i32 %.lcssa4086, 31 %conv4.i.i.i19.i.i = zext i1 %cmp.i.i.i.i15.i.i to i32 %shl.i.i.i20.i.i = shl nuw i32 %conv4.i.i.i19.i.i, %125 %xor.i.i.i21.i.i = xor i32 %shl.i.i.i20.i.i, -1 %126 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2420, !amdgpu.uniform !42 127: ; preds = %ComputeEnd2421 %div8.i.i.i16.i.i = lshr i32 %.lcssa4086, 5 %idxprom.i.i.i17.i.i = zext nneg i32 %div8.i.i.i16.i.i to i64 %128 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i %sunkaddr3239 = getelementptr inbounds i8, ptr addrspace(1) %128, i64 40 %129 = atomicrmw and ptr addrspace(1) %sunkaddr3239, i32 %.lcssa4077 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %130, !amdgpu.uniform !42 130: ; preds = %127, %ComputeEnd2421 call void @llvm.amdgcn.end.cf.i64(i64 %2797) tail call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i1.i11, !amdgpu.uniform !42 for.cond.i.i1.i11: ; preds = %130, %Flow3751 %131 = phi i32 [ %169, %Flow3751 ], [ poison, %130 ] %132 = phi i64 [ %170, %Flow3751 ], [ poison, %130 ] %133 = phi i32 [ %171, %Flow3751 ], [ poison, %130 ] %retval.sroa.6.0.i.i.i12 = phi i32 [ %174, %Flow3751 ], [ undef, %130 ] %retval.sroa.2.0.i.i.i14 = phi i64 [ %173, %Flow3751 ], [ undef, %130 ] %retval.sroa.8.0.i.i.i15 = phi i32 [ %172, %Flow3751 ], [ undef, %130 ] %index.0.i.i.i16 = phi i32 [ %176, %Flow3751 ], [ 0, %130 ] %134 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i17 = icmp ult i32 %index.0.i.i.i16, %134 %spec.store.select.i.i.i18 = select i1 %cmp.not.i.i.i17, i32 %index.0.i.i.i16, i32 0 %135 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %136 = and i32 %spec.store.select.i.i.i18, 31 %137 = lshr i64 %135, %sh_prom.i.i.i.i %138 = trunc i64 %137 to i32 %conv4.i.i.i.i.i22 = and i32 %138, 1 %shl.i.i.i.i.i23 = shl nuw i32 %conv4.i.i.i.i.i22, %136 %139 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2424, !amdgpu.uniform !42 140: ; preds = %ComputeEnd2425 %sunkaddr3240 = getelementptr inbounds i8, ptr addrspace(1) %2807, i64 40 %141 = atomicrmw or ptr addrspace(1) %sunkaddr3240, i32 %.lcssa4071 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %142, !amdgpu.uniform !42 142: ; preds = %140, %ComputeEnd2425 %143 = phi i32 [ %141, %140 ], [ poison, %ComputeEnd2425 ] call void @llvm.amdgcn.end.cf.i64(i64 %2816) %144 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %143) %145 = or i32 %144, %.lcssa4072 %shl5.i.i.i.i.i24 = shl nuw i32 1, %136 %and.i.i.i.i.i25 = and i32 %shl5.i.i.i.i.i24, %145 %tobool3.i.i.i.i26 = icmp ne i32 %and.i.i.i.i.i25, 0 %146 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i26) %and.i.i.i.i.i.i27 = and i64 %146, %135 %cmp.i.not.i.i.i28 = icmp ne i64 %135, %and.i.i.i.i.i.i27 br i1 %cmp.i.not.i.i.i28, label %if.then.i.i.i.i29, label %Flow3750, !amdgpu.uniform !42 if.then.i.i.i.i29: ; preds = %142 fence syncscope("agent") acquire %147 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %148 = extractelement <2 x i64> %147, i32 0 %149 = inttoptr i64 %148 to ptr %150 = extractelement <2 x i64> %147, i32 1 %151 = inttoptr i64 %150 to ptr %idxprom.i.i.i.i30 = zext i32 %spec.store.select.i.i.i18 to i64 %arrayidx.i.i.i.i31 = getelementptr inbounds nuw i32, ptr %149, i64 %idxprom.i.i.i.i30, !amdgpu.uniform !42 %152 = load atomic i32, ptr %arrayidx.i.i.i.i31 monotonic, align 4 %153 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %152) %arrayidx.i45.i.i.i32 = getelementptr inbounds nuw i32, ptr %151, i64 %idxprom.i.i.i.i30, !amdgpu.uniform !42 %154 = load atomic i32, ptr %arrayidx.i45.i.i.i32 monotonic, align 4 %155 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %154) %cmp.i46.not.i.i.i33 = icmp ne i32 %153, %155 br i1 %cmp.i46.not.i.i.i33, label %if.then12.i.i.i34, label %Flow3748, !amdgpu.uniform !42 if.then12.i.i.i34: ; preds = %if.then.i.i.i.i29 fence syncscope("agent") release %156 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %135, i1 true) %iszero.i.i.i.i.i.i.i35 = icmp ne i64 %135, 0 %cmp2.i.i.i.i.i.i36 = icmp eq i64 %156, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i37 = select i1 %iszero.i.i.i.i.i.i.i35, i1 %cmp2.i.i.i.i.i.i36, i1 false %conv4.i.i51.i.i.i38 = zext i1 %cmp.i.i.i.i.i.i37 to i32 %shl.i.i52.i.i.i39 = shl nuw i32 %conv4.i.i51.i.i.i38, %136 %xor.i.i.i.i.i40 = xor i32 %shl.i.i52.i.i.i39, -1 %157 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2429, !amdgpu.uniform !42 158: ; preds = %ComputeEnd2430 %sunkaddr3241 = getelementptr inbounds i8, ptr addrspace(1) %2807, i64 40 %159 = atomicrmw and ptr addrspace(1) %sunkaddr3241, i32 %.lcssa4073 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %160, !amdgpu.uniform !42 160: ; preds = %158, %ComputeEnd2430 call void @llvm.amdgcn.end.cf.i64(i64 %2834) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3748, !amdgpu.uniform !42 if.end14.i.i.i99: ; preds = %Flow3748 %161 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %135, i1 true) %iszero.i.i.i.i.i.i100 = icmp ne i64 %135, 0 %cmp2.i.i.i.i.i101 = icmp eq i64 %161, %sh_prom.i.i.i.i %cmp.i.i.i.i.i102 = select i1 %iszero.i.i.i.i.i.i100, i1 %cmp2.i.i.i.i.i101, i1 false %162 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i102) %163 = extractvalue { i1, i64 } %162, 0 %164 = extractvalue { i1, i64 } %162, 1 br i1 %163, label %if.then16.i.i.i104, label %if.end22.i.i.i103 if.then16.i.i.i104: ; preds = %if.end14.i.i.i99 %165 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i105 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %165, i64 %idxprom.i.i.i.i30, i32 1 store i32 1660944387, ptr %opcode.i.i.i105, align 8, !tbaa !77 %arrayidx21.i.i.i106 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %165, i64 %idxprom.i.i.i.i30 store i64 %135, ptr %arrayidx21.i.i.i106, align 8, !tbaa !80 br label %if.end22.i.i.i103, !amdgpu.uniform !42 Flow3749: ; preds = %if.end22.i.i.i103, %Flow3748 %166 = phi i32 [ %153, %if.end22.i.i.i103 ], [ %retval.sroa.8.0.i.i.i15, %Flow3748 ] %167 = phi i64 [ %135, %if.end22.i.i.i103 ], [ %retval.sroa.2.0.i.i.i14, %Flow3748 ] %168 = phi i32 [ %spec.store.select.i.i.i18, %if.end22.i.i.i103 ], [ %retval.sroa.6.0.i.i.i12, %Flow3748 ] br label %cleanup26.i.i.i41, !amdgpu.uniform !42 if.end22.i.i.i103: ; preds = %if.then16.i.i.i104, %if.end14.i.i.i99 call void @llvm.amdgcn.end.cf.i64(i64 %164) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3749, !amdgpu.uniform !42 Flow3750: ; preds = %cleanup26.i.i.i41, %142 %169 = phi i32 [ %168, %cleanup26.i.i.i41 ], [ %131, %142 ] %170 = phi i64 [ %167, %cleanup26.i.i.i41 ], [ %132, %142 ] %171 = phi i32 [ %166, %cleanup26.i.i.i41 ], [ %133, %142 ] %172 = phi i32 [ %166, %cleanup26.i.i.i41 ], [ %retval.sroa.8.0.i.i.i15, %142 ] %173 = phi i64 [ %167, %cleanup26.i.i.i41 ], [ %retval.sroa.2.0.i.i.i14, %142 ] %174 = phi i32 [ %168, %cleanup26.i.i.i41 ], [ %retval.sroa.6.0.i.i.i12, %142 ] %175 = phi i1 [ %cmp.i46.not.i.i.i33, %cleanup26.i.i.i41 ], [ true, %142 ] br i1 %175, label %for.inc.i.i.i46, label %Flow3751, !amdgpu.uniform !42 cleanup26.i.i.i41: ; preds = %Flow3749 br label %Flow3750, !amdgpu.uniform !42 for.inc.i.i.i46: ; preds = %Flow3750 %inc.i.i.i51 = add i32 %spec.store.select.i.i.i18, 1 br label %Flow3751, !amdgpu.uniform !42 Flow3751: ; preds = %for.inc.i.i.i46, %Flow3750 %176 = phi i32 [ %inc.i.i.i51, %for.inc.i.i.i46 ], [ poison, %Flow3750 ] %177 = phi i1 [ false, %for.inc.i.i.i46 ], [ true, %Flow3750 ] br i1 %177, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i52, label %for.cond.i.i1.i11, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i52: ; preds = %Flow3751 %.lcssa4076 = phi i32 [ %169, %Flow3751 ] %.lcssa4075 = phi i64 [ %170, %Flow3751 ] %.lcssa4074 = phi i32 [ %171, %Flow3751 ] fence acquire %178 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i53 = shl i32 %.lcssa4076, 6 %idxprom.i19.i.i.i.i.i54 = zext i32 %mul.i.i.i.i.i.i53 to i64 %arrayidx.i20.i.i.i.i.i55 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %178, i64 %idxprom.i19.i.i.i.i.i54 %arrayidx.i22.i.i.i.i.i56 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i55, i64 %sh_prom.i.i.i.i store i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.6.10 to ptr), i64 1) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.6.10 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i56, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i57 = tail call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.6.10 to ptr), i64 1) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.6.10 to ptr) to i64)), i64 56) %179 = and i64 %spec.select.i.i.i.i.i.i.i57, 15 %180 = sub i64 %spec.select.i.i.i.i.i.i.i57, %179 %181 = icmp ne i64 %180, 0 br i1 %181, label %loop-memcpy-expansion2321.preheader, label %Flow3747, !amdgpu.uniform !42 loop-memcpy-expansion2321.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i52 %182 = add nuw nsw i64 %76, 8 %scevgep3186 = getelementptr i8, ptr %178, i64 %182 %183 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i54, 6 %scevgep3187 = getelementptr i8, ptr %scevgep3186, i64 %183 br label %loop-memcpy-expansion2321, !amdgpu.uniform !42 Flow3747: ; preds = %Flow3746, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i52 br label %loop-memcpy-residual-header2324, !amdgpu.uniform !42 loop-memcpy-expansion2321: ; preds = %loop-memcpy-expansion2321.preheader, %loop-memcpy-expansion2321 %loop-index2322 = phi i64 [ %186, %loop-memcpy-expansion2321 ], [ 0, %loop-memcpy-expansion2321.preheader ] %184 = getelementptr i8, ptr addrspace(4) @.str.6.10, i64 %loop-index2322, !amdgpu.uniform !42 %185 = load <4 x i32>, ptr addrspace(4) %184, align 1 %scevgep3188 = getelementptr i8, ptr %scevgep3187, i64 %loop-index2322 store <4 x i32> %185, ptr %scevgep3188, align 1 %186 = add i64 %loop-index2322, 16 %187 = icmp uge i64 %186, %180 br i1 %187, label %Flow3746, label %loop-memcpy-expansion2321, !amdgpu.uniform !42 Flow3745: ; preds = %Flow3743, %Flow3744 %188 = phi i64 [ %2682, %Flow3743 ], [ %2679, %Flow3744 ] br label %post-loop-memcpy-expansion2320, !amdgpu.uniform !42 loop-memcpy-residual2323: ; preds = %loop-memcpy-residual2323.preheader, %loop-memcpy-residual2323 %residual-loop-index2325 = phi i64 [ %190, %loop-memcpy-residual2323 ], [ 0, %loop-memcpy-residual2323.preheader ] %scevgep3185 = getelementptr i8, ptr addrspace(4) @.str.6.10, i64 %residual-loop-index2325, !amdgpu.uniform !42 %189 = load i8, ptr addrspace(4) %scevgep3185, align 1 %scevgep3184 = getelementptr i8, ptr %scevgep3183, i64 %residual-loop-index2325 store i8 %189, ptr %scevgep3184, align 1 %190 = add i64 %residual-loop-index2325, 1 %191 = icmp uge i64 %190, %179 br i1 %191, label %Flow3743, label %loop-memcpy-residual2323, !amdgpu.uniform !42 Flow3743: ; preds = %loop-memcpy-residual2323 br label %Flow3745, !amdgpu.uniform !42 post-loop-memcpy-expansion2320: ; preds = %Flow3745 %tobool.not.i.i.i.i.i.i59 = icmp eq i32 %.lcssa4074, 0 %conv.i.i.i.i.i.i60 = zext i1 %tobool.not.i.i.i.i.i.i59 to i32 fence release %192 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i61 = zext i32 %.lcssa4076 to i64 %arrayidx.i24.i.i.i.i.i62 = getelementptr inbounds nuw i32, ptr %192, i64 %idxprom.i23.i.i.i.i.i61 store atomic i32 %conv.i.i.i.i.i.i60, ptr %arrayidx.i24.i.i.i.i.i62 monotonic, align 4 %193 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i63 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %193, i64 %idxprom.i23.i.i.i.i.i61, !amdgpu.uniform !42 %194 = load i64, ptr %arrayidx.i.i5.i.i63, align 8, !tbaa !80 br label %while.cond.i.i.i.i64, !amdgpu.uniform !42 while.cond.i.i.i.i64: ; preds = %post-loop-memcpy-expansion2320, %Flow3742 %phi.broken3778 = phi i64 [ 0, %post-loop-memcpy-expansion2320 ], [ %211, %Flow3742 ] %lsr.iv3175 = phi i64 [ %209, %Flow3742 ], [ -55, %post-loop-memcpy-expansion2320 ] %lsr.iv3170 = phi ptr addrspace(4) [ %208, %Flow3742 ], [ getelementptr (i8, ptr addrspace(4) @.str.6.10, i64 56), %post-loop-memcpy-expansion2320 ] %port.sroa.37.0.i.i65 = phi i32 [ %207, %Flow3742 ], [ %conv.i.i.i.i.i.i60, %post-loop-memcpy-expansion2320 ] %idx.0.i.i.i.i66 = phi i64 [ %206, %Flow3742 ], [ 56, %post-loop-memcpy-expansion2320 ] %cmp.i.i.i.i67 = icmp ult i64 %idx.0.i.i.i.i66, sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.6.10 to ptr), i64 1) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.6.10 to ptr) to i64)) %195 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i67) %and.i.i.i.i6.i.i68 = and i64 %195, %194 %tobool.not.i.i.i.i69 = icmp ne i64 %and.i.i.i.i6.i.i68, 0 %196 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i70 = getelementptr inbounds nuw i32, ptr %196, i64 %idxprom.i23.i.i.i.i.i61, !amdgpu.uniform !42 %197 = load atomic i32, ptr %arrayidx.i22.i.i.i70 monotonic, align 4 %198 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i69) %199 = extractvalue { i1, i64 } %198, 0 %200 = extractvalue { i1, i64 } %198, 1 br i1 %199, label %cond.false.i8.i.i.i.i71, label %Flow3742 cond.false.i8.i.i.i.i71: ; preds = %while.cond.i.i.i.i64 %201 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %197) %202 = icmp ne i32 %201, %port.sroa.37.0.i.i65 br i1 %202, label %while.body.i.i21.i.i.i.i72.preheader, label %Flow3741, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i72.preheader: ; preds = %cond.false.i8.i.i.i.i71 br label %while.body.i.i21.i.i.i.i72, !amdgpu.uniform !42 Flow3741: ; preds = %Flow3740, %cond.false.i8.i.i.i.i71 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i75, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i72: ; preds = %while.body.i.i21.i.i.i.i72.preheader, %while.body.i.i21.i.i.i.i72 tail call void @llvm.amdgcn.s.sleep(i32 2) %203 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i73 = getelementptr inbounds nuw i32, ptr %203, i64 %idxprom.i23.i.i.i.i.i61, !amdgpu.uniform !42 %204 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i73 monotonic, align 4 %205 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %204) %cmp.i.not.i.i23.i.i.i.i74 = icmp eq i32 %205, %port.sroa.37.0.i.i65 br i1 %cmp.i.not.i.i23.i.i.i.i74, label %Flow3740, label %while.body.i.i21.i.i.i.i72, !amdgpu.uniform !42 Flow3740: ; preds = %while.body.i.i21.i.i.i.i72 br label %Flow3741, !amdgpu.uniform !42 Flow3742: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i76, %while.cond.i.i.i.i64 %206 = phi i64 [ %add.i.i.i.i79, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i76 ], [ poison, %while.cond.i.i.i.i64 ] %207 = phi i32 [ %conv.i.i26.i.i.i.i77, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i76 ], [ poison, %while.cond.i.i.i.i64 ] %208 = phi ptr addrspace(4) [ %scevgep3171, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i76 ], [ poison, %while.cond.i.i.i.i64 ] %209 = phi i64 [ %lsr.iv.next3176, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i76 ], [ poison, %while.cond.i.i.i.i64 ] %210 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i76 ], [ true, %while.cond.i.i.i.i64 ] call void @llvm.amdgcn.end.cf.i64(i64 %200) %211 = call i64 @llvm.amdgcn.if.break.i64(i1 %210, i64 %phi.broken3778) %212 = call i1 @llvm.amdgcn.loop.i64(i64 %211) br i1 %212, label %cond.false.i.i.i86, label %while.cond.i.i.i.i64 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i75: ; preds = %Flow3741 fence acquire br i1 %cmp.i.i.i.i67, label %if.then.i.i.i.i.i.i.i80, label %Flow3739, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i80: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i75 %sub.i.i.i.i.i.i.i82 = sub nuw i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.6.10 to ptr), i64 1) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.6.10 to ptr) to i64)), %idx.0.i.i.i.i66 %spec.select.i.i.i36.i.i.i.i83 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i82, i64 64) %213 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %214 = and i64 %spec.select.i.i.i36.i.i.i.i83, 15 %215 = sub i64 %spec.select.i.i.i36.i.i.i.i83, %214 %216 = icmp ne i64 %215, 0 br i1 %216, label %loop-memcpy-expansion2327.preheader, label %Flow3738, !amdgpu.uniform !42 loop-memcpy-expansion2327.preheader: ; preds = %if.then.i.i.i.i.i.i.i80 %arrayidx.i20.i35.i.i.i.i84 = getelementptr %"struct.rpc::Buffer", ptr %213, i64 %idxprom.i19.i.i.i.i.i54 %arrayidx.i22.i38.i.i.i.i85 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i84, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2327, !amdgpu.uniform !42 Flow3738: ; preds = %Flow3737, %if.then.i.i.i.i.i.i.i80 br label %loop-memcpy-residual-header2330, !amdgpu.uniform !42 loop-memcpy-expansion2327: ; preds = %loop-memcpy-expansion2327.preheader, %loop-memcpy-expansion2327 %loop-index2328 = phi i64 [ %219, %loop-memcpy-expansion2327 ], [ 0, %loop-memcpy-expansion2327.preheader ] %scevgep3172 = getelementptr i8, ptr addrspace(4) %lsr.iv3170, i64 %loop-index2328, !amdgpu.uniform !42 %217 = load <4 x i32>, ptr addrspace(4) %scevgep3172, align 1 %218 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i85, i64 %loop-index2328 store <4 x i32> %217, ptr %218, align 1 %219 = add i64 %loop-index2328, 16 %220 = icmp uge i64 %219, %215 br i1 %220, label %Flow3737, label %loop-memcpy-expansion2327, !amdgpu.uniform !42 Flow3736: ; preds = %Flow3735, %loop-memcpy-residual-header2330 br label %Flow3739, !amdgpu.uniform !42 loop-memcpy-residual2329: ; preds = %loop-memcpy-residual2329.preheader, %loop-memcpy-residual2329 %residual-loop-index2331 = phi i64 [ %222, %loop-memcpy-residual2329 ], [ 0, %loop-memcpy-residual2329.preheader ] %scevgep3181 = getelementptr i8, ptr addrspace(4) %scevgep3180, i64 %residual-loop-index2331, !amdgpu.uniform !42 %221 = load i8, ptr addrspace(4) %scevgep3181, align 1 %scevgep3179 = getelementptr i8, ptr %scevgep3178, i64 %residual-loop-index2331 store i8 %221, ptr %scevgep3179, align 1 %222 = add i64 %residual-loop-index2331, 1 %223 = icmp uge i64 %222, %214 br i1 %223, label %Flow3735, label %loop-memcpy-residual2329, !amdgpu.uniform !42 Flow3735: ; preds = %loop-memcpy-residual2329 br label %Flow3736, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i76: ; preds = %Flow3739 %conv.i.i26.i.i.i.i77 = xor i32 %port.sroa.37.0.i.i65, 1 fence release %224 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i78 = getelementptr inbounds nuw i32, ptr %224, i64 %idxprom.i23.i.i.i.i.i61 store atomic i32 %conv.i.i26.i.i.i.i77, ptr %arrayidx.i24.i29.i.i.i.i78 monotonic, align 4 %add.i.i.i.i79 = add i64 %idx.0.i.i.i.i66, 64 %scevgep3171 = getelementptr i8, ptr addrspace(4) %lsr.iv3170, i64 64 %lsr.iv.next3176 = add i64 %lsr.iv3175, -64 br label %Flow3742, !amdgpu.uniform !42 cond.false.i.i.i86: ; preds = %Flow3742 %.lcssa4070 = phi i64 [ %211, %Flow3742 ] %port.sroa.37.0.i.i65.lcssa = phi i32 [ %port.sroa.37.0.i.i65, %Flow3742 ] %.lcssa4069 = phi i32 [ %197, %Flow3742 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4070) %225 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa4069) %226 = icmp ne i32 %225, %port.sroa.37.0.i.i65.lcssa %227 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %226) %228 = extractvalue { i1, i64 } %227, 0 %229 = extractvalue { i1, i64 } %227, 1 br i1 %228, label %while.body.i.i.i.i87.preheader, label %Flow3734 while.body.i.i.i.i87.preheader: ; preds = %cond.false.i.i.i86 br label %while.body.i.i.i.i87, !amdgpu.uniform !42 Flow3734: ; preds = %Flow3733, %cond.false.i.i.i86 call void @llvm.amdgcn.end.cf.i64(i64 %229) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit107, !amdgpu.uniform !42 while.body.i.i.i.i87: ; preds = %while.body.i.i.i.i87.preheader, %while.body.i.i.i.i87 %phi.broken3779 = phi i64 [ 0, %while.body.i.i.i.i87.preheader ], [ %233, %while.body.i.i.i.i87 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %230 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i88 = getelementptr inbounds nuw i32, ptr %230, i64 %idxprom.i23.i.i.i.i.i61, !amdgpu.uniform !42 %231 = load atomic i32, ptr %arrayidx.i.i.i8.i.i88 monotonic, align 4 %232 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %231) %cmp.i.not.i.i.i.i89 = icmp eq i32 %232, %port.sroa.37.0.i.i65.lcssa %233 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i89, i64 %phi.broken3779) %234 = call i1 @llvm.amdgcn.loop.i64(i64 %233) br i1 %234, label %Flow3733, label %while.body.i.i.i.i87 Flow3733: ; preds = %while.body.i.i.i.i87 %.lcssa4068 = phi i64 [ %233, %while.body.i.i.i.i87 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4068) br label %Flow3734, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit107: ; preds = %Flow3734 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %235 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4075, i1 true) %iszero.i.i.i.i.i13.i.i90 = icmp ne i64 %.lcssa4075, 0 %cmp2.i.i.i.i14.i.i91 = icmp eq i64 %235, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i92 = select i1 %iszero.i.i.i.i.i13.i.i90, i1 %cmp2.i.i.i.i14.i.i91, i1 false %236 = and i32 %.lcssa4076, 31 %conv4.i.i.i19.i.i96 = zext i1 %cmp.i.i.i.i15.i.i92 to i32 %shl.i.i.i20.i.i97 = shl nuw i32 %conv4.i.i.i19.i.i96, %236 %xor.i.i.i21.i.i98 = xor i32 %shl.i.i.i20.i.i97, -1 %237 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2433, !amdgpu.uniform !42 238: ; preds = %ComputeEnd2434 %div8.i.i.i16.i.i93 = lshr i32 %.lcssa4076, 5 %idxprom.i.i.i17.i.i94 = zext nneg i32 %div8.i.i.i16.i.i93 to i64 %239 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i94 %sunkaddr3242 = getelementptr inbounds i8, ptr addrspace(1) %239, i64 40 %240 = atomicrmw and ptr addrspace(1) %sunkaddr3242, i32 %.lcssa4067 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %241, !amdgpu.uniform !42 241: ; preds = %238, %ComputeEnd2434 call void @llvm.amdgcn.end.cf.i64(i64 %2851) tail call void @llvm.amdgcn.wave.barrier() call void @llvm.lifetime.start.p5(ptr addrspace(5) %buffer.i.i.i) #34, !noalias !128 %cmp7.i.i.i.i.i.i = icmp ne i32 %Loc.coerce1, 0 %242 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp7.i.i.i.i.i.i) %243 = extractvalue { i1, i64 } %242, 0 %244 = extractvalue { i1, i64 } %242, 1 br i1 %243, label %while.body.lr.ph.i.i.i.i.i.i, label %Flow3732 while.body.lr.ph.i.i.i.i.i.i: ; preds = %241 %retval.0.i.i.i.i.i.i = tail call noundef i32 @llvm.abs.i32(i32 %Loc.coerce1, i1 false) br label %while.body.i.i.i.i.i.i, !amdgpu.uniform !42 Flow3732: ; preds = %Flow3731, %241 %245 = phi i1 [ %cmp.i.i.i.i.i.i.i.i.lcssa, %Flow3731 ], [ false, %241 ] %246 = phi i64 [ %writer.sroa.10.1.i.i.i.i.lcssa, %Flow3731 ], [ 0, %241 ] call void @llvm.amdgcn.end.cf.i64(i64 %244) br label %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i, !amdgpu.uniform !42 while.body.i.i.i.i.i.i: ; preds = %while.body.lr.ph.i.i.i.i.i.i, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i %phi.broken3780 = phi i64 [ 0, %while.body.lr.ph.i.i.i.i.i.i ], [ %314, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i ] %writer.sroa.10.0.i.i.i.i = phi i64 [ %writer.sroa.10.1.i.i.i.i, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i ], [ 0, %while.body.lr.ph.i.i.i.i.i.i ] %value.addr.09.i.i.i.i.i.i = phi i32 [ %div.i.i.i.i.i.i.i, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i ], [ %retval.0.i.i.i.i.i.i, %while.body.lr.ph.i.i.i.i.i.i ] br label %NodeBlock3312, !amdgpu.uniform !42 NodeBlock3312: ; preds = %while.body.i.i.i.i.i.i %div.i.i.i.i.i.i.i = udiv i32 %value.addr.09.i.i.i.i.i.i, 10 %.neg.i = mul i32 %div.i.i.i.i.i.i.i, 246 %rem.i.i.i.i.i.i.decomposed.i = add i32 %.neg.i, %value.addr.09.i.i.i.i.i.i %conv.i.i.i.i.i.i.i = trunc i32 %rem.i.i.i.i.i.i.decomposed.i to i8 %247 = zext i8 %conv.i.i.i.i.i.i.i to i16 %Pivot3313 = icmp sge i16 %247, 5 %248 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3313) %249 = extractvalue { i1, i64 } %248, 0 %250 = extractvalue { i1, i64 } %248, 1 br i1 %249, label %NodeBlock3310, label %Flow3730 NodeBlock3310: ; preds = %NodeBlock3312 %Pivot3311 = icmp sge i16 %247, 7 %251 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3311) %252 = extractvalue { i1, i64 } %251, 0 %253 = extractvalue { i1, i64 } %251, 1 br i1 %252, label %NodeBlock3308, label %Flow3721 NodeBlock3308: ; preds = %NodeBlock3310 %Pivot3309 = icmp sge i16 %247, 8 %254 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3309) %255 = extractvalue { i1, i64 } %254, 0 %256 = extractvalue { i1, i64 } %254, 1 br i1 %255, label %NodeBlock3306, label %Flow3717 NodeBlock3306: ; preds = %NodeBlock3308 %Pivot3307 = icmp sge i16 %247, 9 %257 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3307) %258 = extractvalue { i1, i64 } %257, 0 %259 = extractvalue { i1, i64 } %257, 1 br i1 %258, label %sw.bb9.i.i.i.i.i.i.i.i, label %Flow3715 Flow3721: ; preds = %Flow3718, %NodeBlock3310 %260 = phi i8 [ %304, %Flow3718 ], [ poison, %NodeBlock3310 ] %261 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %253) %262 = extractvalue { i1, i64 } %261, 0 %263 = extractvalue { i1, i64 } %261, 1 br i1 %262, label %NodeBlock3304, label %Flow3722 NodeBlock3304: ; preds = %Flow3721 %Pivot3305 = icmp sge i16 %247, 6 %264 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3305) %265 = extractvalue { i1, i64 } %264, 0 %266 = extractvalue { i1, i64 } %264, 1 br i1 %265, label %sw.bb6.i.i.i.i.i.i.i.i, label %Flow3719 Flow3730: ; preds = %Flow3722, %NodeBlock3312 %267 = phi i8 [ %306, %Flow3722 ], [ poison, %NodeBlock3312 ] %268 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %250) %269 = extractvalue { i1, i64 } %268, 0 %270 = extractvalue { i1, i64 } %268, 1 br i1 %269, label %NodeBlock3302, label %if.then.i.i.i.i.i.i.i108 NodeBlock3302: ; preds = %Flow3730 %Pivot3303 = icmp sge i16 %247, 3 %271 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3303) %272 = extractvalue { i1, i64 } %271, 0 %273 = extractvalue { i1, i64 } %271, 1 br i1 %272, label %NodeBlock3300, label %Flow3728 NodeBlock3300: ; preds = %NodeBlock3302 %Pivot3301 = icmp sge i16 %247, 4 %274 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot3301) %275 = extractvalue { i1, i64 } %274, 0 %276 = extractvalue { i1, i64 } %274, 1 br i1 %275, label %sw.bb4.i.i.i.i.i.i.i.i, label %Flow3723 Flow3728: ; preds = %Flow3724, %NodeBlock3302 %277 = phi i8 [ %307, %Flow3724 ], [ poison, %NodeBlock3302 ] %278 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %273) %279 = extractvalue { i1, i64 } %278, 0 %280 = extractvalue { i1, i64 } %278, 1 br i1 %279, label %NodeBlock, label %Flow3729 NodeBlock: ; preds = %Flow3728 %Pivot = icmp sge i16 %247, 2 %281 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot) %282 = extractvalue { i1, i64 } %281, 0 %283 = extractvalue { i1, i64 } %281, 1 br i1 %282, label %sw.bb2.i.i.i.i.i.i.i.i, label %Flow3726 Flow3726: ; preds = %sw.bb2.i.i.i.i.i.i.i.i, %NodeBlock %284 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %283) %285 = extractvalue { i1, i64 } %284, 0 %286 = extractvalue { i1, i64 } %284, 1 br i1 %285, label %LeafBlock, label %Flow3727 LeafBlock: ; preds = %Flow3726 %SwitchLeaf = icmp eq i16 %247, 1 %287 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %SwitchLeaf) %288 = extractvalue { i1, i64 } %287, 0 %289 = extractvalue { i1, i64 } %287, 1 br i1 %288, label %sw.bb1.i.i.i.i.i.i.i.i, label %Flow3725 sw.bb1.i.i.i.i.i.i.i.i: ; preds = %LeafBlock br label %Flow3725, !amdgpu.uniform !42 sw.bb2.i.i.i.i.i.i.i.i: ; preds = %NodeBlock br label %Flow3726, !amdgpu.uniform !42 Flow3723: ; preds = %sw.bb4.i.i.i.i.i.i.i.i, %NodeBlock3300 %290 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %276) %291 = extractvalue { i1, i64 } %290, 0 %292 = extractvalue { i1, i64 } %290, 1 br i1 %291, label %sw.bb3.i.i.i.i.i.i.i.i, label %Flow3724 sw.bb3.i.i.i.i.i.i.i.i: ; preds = %Flow3723 br label %Flow3724, !amdgpu.uniform !42 sw.bb4.i.i.i.i.i.i.i.i: ; preds = %NodeBlock3300 br label %Flow3723, !amdgpu.uniform !42 Flow3719: ; preds = %sw.bb6.i.i.i.i.i.i.i.i, %NodeBlock3304 %293 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %266) %294 = extractvalue { i1, i64 } %293, 0 %295 = extractvalue { i1, i64 } %293, 1 br i1 %294, label %sw.bb5.i.i.i.i.i.i.i.i, label %Flow3720 sw.bb5.i.i.i.i.i.i.i.i: ; preds = %Flow3719 br label %Flow3720, !amdgpu.uniform !42 sw.bb6.i.i.i.i.i.i.i.i: ; preds = %NodeBlock3304 br label %Flow3719, !amdgpu.uniform !42 Flow3717: ; preds = %Flow3716, %NodeBlock3308 %296 = phi i8 [ %303, %Flow3716 ], [ poison, %NodeBlock3308 ] %297 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %256) %298 = extractvalue { i1, i64 } %297, 0 %299 = extractvalue { i1, i64 } %297, 1 br i1 %298, label %sw.bb7.i.i.i.i.i.i.i.i, label %Flow3718 sw.bb7.i.i.i.i.i.i.i.i: ; preds = %Flow3717 br label %Flow3718, !amdgpu.uniform !42 Flow3715: ; preds = %sw.bb9.i.i.i.i.i.i.i.i, %NodeBlock3306 %300 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %259) %301 = extractvalue { i1, i64 } %300, 0 %302 = extractvalue { i1, i64 } %300, 1 br i1 %301, label %sw.bb8.i.i.i.i.i.i.i.i, label %Flow3716 sw.bb8.i.i.i.i.i.i.i.i: ; preds = %Flow3715 br label %Flow3716, !amdgpu.uniform !42 sw.bb9.i.i.i.i.i.i.i.i: ; preds = %NodeBlock3306 br label %Flow3715, !amdgpu.uniform !42 Flow3716: ; preds = %sw.bb8.i.i.i.i.i.i.i.i, %Flow3715 %303 = phi i8 [ 56, %sw.bb8.i.i.i.i.i.i.i.i ], [ 57, %Flow3715 ] call void @llvm.amdgcn.end.cf.i64(i64 %302) br label %Flow3717, !amdgpu.uniform !42 Flow3718: ; preds = %sw.bb7.i.i.i.i.i.i.i.i, %Flow3717 %304 = phi i8 [ 55, %sw.bb7.i.i.i.i.i.i.i.i ], [ %296, %Flow3717 ] call void @llvm.amdgcn.end.cf.i64(i64 %299) br label %Flow3721, !amdgpu.uniform !42 Flow3720: ; preds = %sw.bb5.i.i.i.i.i.i.i.i, %Flow3719 %305 = phi i8 [ 53, %sw.bb5.i.i.i.i.i.i.i.i ], [ 54, %Flow3719 ] call void @llvm.amdgcn.end.cf.i64(i64 %295) br label %Flow3722, !amdgpu.uniform !42 Flow3722: ; preds = %Flow3720, %Flow3721 %306 = phi i8 [ %305, %Flow3720 ], [ %260, %Flow3721 ] call void @llvm.amdgcn.end.cf.i64(i64 %263) br label %Flow3730, !amdgpu.uniform !42 Flow3724: ; preds = %sw.bb3.i.i.i.i.i.i.i.i, %Flow3723 %307 = phi i8 [ 51, %sw.bb3.i.i.i.i.i.i.i.i ], [ 52, %Flow3723 ] call void @llvm.amdgcn.end.cf.i64(i64 %292) br label %Flow3728, !amdgpu.uniform !42 Flow3725: ; preds = %sw.bb1.i.i.i.i.i.i.i.i, %LeafBlock %308 = phi i8 [ 49, %sw.bb1.i.i.i.i.i.i.i.i ], [ 48, %LeafBlock ] call void @llvm.amdgcn.end.cf.i64(i64 %289) br label %Flow3727, !amdgpu.uniform !42 Flow3727: ; preds = %Flow3725, %Flow3726 %309 = phi i8 [ %308, %Flow3725 ], [ 50, %Flow3726 ] call void @llvm.amdgcn.end.cf.i64(i64 %286) br label %Flow3729, !amdgpu.uniform !42 Flow3729: ; preds = %Flow3727, %Flow3728 %310 = phi i8 [ %309, %Flow3727 ], [ %277, %Flow3728 ] call void @llvm.amdgcn.end.cf.i64(i64 %280) br label %if.then.i.i.i.i.i.i.i108, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i108: ; preds = %Flow3730, %Flow3729 %retval.0.i.i.i.i.i.i.i.i = phi i8 [ %267, %Flow3730 ], [ %310, %Flow3729 ] call void @llvm.amdgcn.end.cf.i64(i64 %270) %cmp.i.i.i.i.i.i.i.i = icmp eq i64 %writer.sroa.10.0.i.i.i.i, 11 %cmp.i.i.i.i.i.i.i.i.inv = xor i1 %cmp.i.i.i.i.i.i.i.i, true br i1 %cmp.i.i.i.i.i.i.i.i.inv, label %if.then3.i.i.i.i.i.i.i, label %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i, !amdgpu.uniform !42 if.then3.i.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i.i108 %311 = trunc i64 %writer.sroa.10.0.i.i.i.i to i32 %312 = xor i32 %311, -1 %313 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i, i32 %312 %arrayidx.i.i.i.i.i.i.i.i1092688 = getelementptr i8, ptr addrspace(5) %313, i32 11 %inc.i.i.i.i.i.i.i = add i64 %writer.sroa.10.0.i.i.i.i, 1 store i8 %retval.0.i.i.i.i.i.i.i.i, ptr addrspace(5) %arrayidx.i.i.i.i.i.i.i.i1092688, align 1, !tbaa !57, !noalias !128 br label %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i: ; preds = %if.then3.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i108 %writer.sroa.10.1.i.i.i.i = phi i64 [ %inc.i.i.i.i.i.i.i, %if.then3.i.i.i.i.i.i.i ], [ 11, %if.then.i.i.i.i.i.i.i108 ] %cmp.i.i.i.i.i.i110 = icmp ult i32 %value.addr.09.i.i.i.i.i.i, 10 %.not.i.i.i.i.i.i = or i1 %cmp.i.i.i.i.i.i.i.i, %cmp.i.i.i.i.i.i110 %314 = call i64 @llvm.amdgcn.if.break.i64(i1 %.not.i.i.i.i.i.i, i64 %phi.broken3780) %315 = call i1 @llvm.amdgcn.loop.i64(i64 %314) br i1 %315, label %Flow3731, label %while.body.i.i.i.i.i.i Flow3731: ; preds = %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i %writer.sroa.10.1.i.i.i.i.lcssa = phi i64 [ %writer.sroa.10.1.i.i.i.i, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i ] %.lcssa4066 = phi i64 [ %314, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i ] %cmp.i.i.i.i.i.i.i.i.lcssa = phi i1 [ %cmp.i.i.i.i.i.i.i.i, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4066) br label %Flow3732, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i: ; preds = %Flow3732 %cmp.i19.i.i.i.i = icmp ne i64 %246, 0 %or.cond.not.i.i.i.i = select i1 %245, i1 true, i1 %cmp.i19.i.i.i.i %or.cond.not.i.i.i.i.inv = xor i1 %or.cond.not.i.i.i.i, true %316 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %or.cond.not.i.i.i.i.inv) %317 = extractvalue { i1, i64 } %316, 0 %318 = extractvalue { i1, i64 } %316, 1 br i1 %317, label %if.then3.i.i.lr.ph.i.i.i.i, label %while.end.i.i.i.i.i if.then3.i.i.lr.ph.i.i.i.i: ; preds = %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i %arrayidx.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr addrspace(5) %buffer.i.i.i, i32 10 store i8 48, ptr addrspace(5) %arrayidx.i.i.i.i.i.i.i, align 2, !tbaa !57, !noalias !128 br label %while.end.i.i.i.i.i, !amdgpu.uniform !42 while.end.i.i.i.i.i: ; preds = %if.then3.i.i.lr.ph.i.i.i.i, %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i %writer.sroa.10.4.i.i.i.i = phi i64 [ 1, %if.then3.i.i.lr.ph.i.i.i.i ], [ %246, %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %318) %cmp4.i.i.i.i.i = icmp sgt i32 %Loc.coerce1, -1 %brmerge.i.i.i.i.i = or i1 %cmp4.i.i.i.i.i, %245 %brmerge.i.i.i.i.i.inv = xor i1 %brmerge.i.i.i.i.i, true %319 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %brmerge.i.i.i.i.i.inv) %320 = extractvalue { i1, i64 } %319, 0 %321 = extractvalue { i1, i64 } %319, 1 br i1 %320, label %if.then.i14.i.i.i.i.i, label %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i if.then.i14.i.i.i.i.i: ; preds = %while.end.i.i.i.i.i %cmp.i.i17.i.i.i.i.i = icmp ne i64 %writer.sroa.10.4.i.i.i.i, 11 %322 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i17.i.i.i.i.i) %323 = extractvalue { i1, i64 } %322, 0 %324 = extractvalue { i1, i64 } %322, 1 br i1 %323, label %if.then3.i18.i.i.i.i.i, label %Flow3714 if.then3.i18.i.i.i.i.i: ; preds = %if.then.i14.i.i.i.i.i %325 = trunc i64 %writer.sroa.10.4.i.i.i.i to i32 %326 = xor i32 %325, -1 %327 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i, i32 %326 %arrayidx.i.i19.i.i.i.i.i2689 = getelementptr i8, ptr addrspace(5) %327, i32 11 %inc.i20.i.i.i.i.i = add i64 %writer.sroa.10.4.i.i.i.i, 1 store i8 45, ptr addrspace(5) %arrayidx.i.i19.i.i.i.i.i2689, align 1, !tbaa !57, !noalias !128 br label %Flow3714, !amdgpu.uniform !42 Flow3714: ; preds = %if.then3.i18.i.i.i.i.i, %if.then.i14.i.i.i.i.i %328 = phi i64 [ %inc.i20.i.i.i.i.i, %if.then3.i18.i.i.i.i.i ], [ 11, %if.then.i14.i.i.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %324) br label %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i: ; preds = %while.end.i.i.i.i.i, %Flow3714 %writer.sroa.10.5.i.i.i.i = phi i64 [ %writer.sroa.10.4.i.i.i.i, %while.end.i.i.i.i.i ], [ %328, %Flow3714 ] call void @llvm.amdgcn.end.cf.i64(i64 %321) %written.i.i.i.i = getelementptr inbounds nuw i8, ptr addrspace(5) %buffer.i.i.i, i32 16 store i64 %writer.sroa.10.5.i.i.i.i, ptr addrspace(5) %written.i.i.i.i, align 8, !tbaa !91, !noalias !128 %cmp.i.not.i.i.i.i.i = icmp ne i64 %writer.sroa.10.5.i.i.i.i, 0 %329 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.not.i.i.i.i.i) %330 = extractvalue { i1, i64 } %329, 0 %331 = extractvalue { i1, i64 } %329, 1 br i1 %330, label %if.then.i.i.i.i.i.i, label %Flow3713 if.then.i.i.i.i.i.i: ; preds = %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i %332 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %writer.sroa.10.5.i.i.i.i, i64 1) %ov = extractvalue { i64, i1 } %332, 1 %ov.inv = xor i1 %ov, true %333 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %ov.inv) %334 = extractvalue { i1, i64 } %333, 0 %335 = extractvalue { i1, i64 } %333, 1 br i1 %334, label %if.end.i.i.i.i.i.i.i111, label %Flow3712 if.end.i.i.i.i.i.i.i111: ; preds = %if.then.i.i.i.i.i.i %math = extractvalue { i64, i1 } %332, 0 %cmp2.i.i.i.i.i.i.i = icmp ult i64 %math, 1676976733973595601 %336 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp2.i.i.i.i.i.i.i) %337 = extractvalue { i1, i64 } %336, 0 %338 = extractvalue { i1, i64 } %336, 1 br i1 %337, label %if.then3.i.i.i.i4.i.i.i, label %if.end4.i.i.i.i.i.i.i if.then3.i.i.i.i4.i.i.i: ; preds = %if.end.i.i.i.i.i.i.i111 %mul.i.i.i.i.i.i.i = mul nuw i64 %math, 11 %div18.i.i.i.i.i.i.i = lshr i64 %mul.i.i.i.i.i.i.i, 3 br label %if.end4.i.i.i.i.i.i.i, !amdgpu.uniform !42 Flow3712: ; preds = %if.end4.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i %339 = phi ptr [ %cond.i.i.i, %if.end4.i.i.i.i.i.i.i ], [ addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr), %if.then.i.i.i.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %335) br label %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i, !amdgpu.uniform !42 if.end4.i.i.i.i.i.i.i: ; preds = %if.then3.i.i.i.i4.i.i.i, %if.end.i.i.i.i.i.i.i111 %new_capacity.addr.0.i.i.i.i.i.i.i = phi i64 [ %div18.i.i.i.i.i.i.i, %if.then3.i.i.i.i4.i.i.i ], [ %math, %if.end.i.i.i.i.i.i.i111 ] call void @llvm.amdgcn.end.cf.i64(i64 %338) %sub.i.i.i = add i64 %new_capacity.addr.0.i.i.i.i.i.i.i, 7 %div2.i.i.i = and i64 %sub.i.i.i, -8 %340 = load ptr, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %add.ptr.i.i.i = getelementptr inbounds nuw i8, ptr %340, i64 %div2.i.i.i store ptr %add.ptr.i.i.i, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %sub.ptr.lhs.cast.i.i.i112 = ptrtoint ptr %add.ptr.i.i.i to i64 %sub.ptr.sub.i.i.i113 = sub i64 %sub.ptr.lhs.cast.i.i.i112, ptrtoint (ptr addrspacecast (ptr addrspace(1) @_ZN12_GLOBAL__N_16memoryE to ptr) to i64) %cmp.i.i.i114 = icmp ugt i64 %sub.ptr.sub.i.i.i113, 65335 %cond.i.i.i = select i1 %cmp.i.i.i114, ptr null, ptr %340 br label %Flow3712, !amdgpu.uniform !42 Flow3713: ; preds = %Flow3711, %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i %341 = phi ptr [ %339, %Flow3711 ], [ addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr), %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %331) br label %if.end.i.i.i.i.i.i, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i: ; preds = %Flow3712 br label %loadstoreloop, !amdgpu.uniform !42 loadstoreloop: ; preds = %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i, %loadstoreloop %phi.broken3781 = phi i64 [ 0, %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i ], [ %346, %loadstoreloop ] %342 = phi i64 [ %344, %loadstoreloop ], [ 0, %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i ] %343 = getelementptr i8, ptr %339, i64 %342 store i8 0, ptr %343, align 1 %344 = add i64 %342, 1 %345 = icmp uge i64 %344, %writer.sroa.10.5.i.i.i.i %346 = call i64 @llvm.amdgcn.if.break.i64(i1 %345, i64 %phi.broken3781) %347 = call i1 @llvm.amdgcn.loop.i64(i64 %346) br i1 %347, label %Flow3711, label %loadstoreloop Flow3711: ; preds = %loadstoreloop %.lcssa4065 = phi i64 [ %346, %loadstoreloop ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4065) br label %Flow3713, !amdgpu.uniform !42 if.end.i.i.i.i.i.i: ; preds = %Flow3713 %cmp.not.i6.i.i.i.i.i.i = icmp ne ptr %341, addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr) %348 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.not.i6.i.i.i.i.i.i) %349 = extractvalue { i1, i64 } %348, 0 %350 = extractvalue { i1, i64 } %348, 1 br i1 %349, label %if.then.i.i.i.i2.i.i.i, label %_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi.exit.i if.then.i.i.i.i2.i.i.i: ; preds = %if.end.i.i.i.i.i.i %arrayidx.i.i.i.i3.i.i.i = getelementptr inbounds nuw i8, ptr %341, i64 %writer.sroa.10.5.i.i.i.i store i8 0, ptr %arrayidx.i.i.i.i3.i.i.i, align 1, !tbaa !57, !noalias !128 br label %_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi.exit.i, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi.exit.i: ; preds = %if.then.i.i.i.i2.i.i.i, %if.end.i.i.i.i.i.i call void @llvm.amdgcn.end.cf.i64(i64 %350) %351 = trunc i64 %writer.sroa.10.5.i.i.i.i to i32 %352 = and i64 %writer.sroa.10.5.i.i.i.i, 15 %353 = sub i64 %writer.sroa.10.5.i.i.i.i, %352 %354 = icmp ne i64 %353, 0 %355 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %354) %356 = extractvalue { i1, i64 } %355, 0 %357 = extractvalue { i1, i64 } %355, 1 br i1 %356, label %loop-memcpy-expansion2291.preheader, label %Flow3710 loop-memcpy-expansion2291.preheader: ; preds = %_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi.exit.i %358 = sub i32 11, %351 %scevgep3167 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i, i32 %358 br label %loop-memcpy-expansion2291, !amdgpu.uniform !42 Flow3710: ; preds = %Flow3709, %_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi.exit.i call void @llvm.amdgcn.end.cf.i64(i64 %357) br label %loop-memcpy-residual-header2294, !amdgpu.uniform !42 loop-memcpy-expansion2291: ; preds = %loop-memcpy-expansion2291.preheader, %loop-memcpy-expansion2291 %phi.broken3782 = phi i64 [ 0, %loop-memcpy-expansion2291.preheader ], [ %363, %loop-memcpy-expansion2291 ] %lsr.iv3168 = phi ptr addrspace(5) [ %scevgep3169, %loop-memcpy-expansion2291 ], [ %scevgep3167, %loop-memcpy-expansion2291.preheader ] %loop-index2292 = phi i64 [ %361, %loop-memcpy-expansion2291 ], [ 0, %loop-memcpy-expansion2291.preheader ] %359 = load <4 x i32>, ptr addrspace(5) %lsr.iv3168, align 1 %360 = getelementptr i8, ptr %341, i64 %loop-index2292 store <4 x i32> %359, ptr %360, align 1 %361 = add i64 %loop-index2292, 16 %scevgep3169 = getelementptr i8, ptr addrspace(5) %lsr.iv3168, i32 16 %362 = icmp uge i64 %361, %353 %363 = call i64 @llvm.amdgcn.if.break.i64(i1 %362, i64 %phi.broken3782) %364 = call i1 @llvm.amdgcn.loop.i64(i64 %363) br i1 %364, label %Flow3709, label %loop-memcpy-expansion2291 Flow3708: ; preds = %Flow3707, %loop-memcpy-residual-header2294 call void @llvm.amdgcn.end.cf.i64(i64 %2651) br label %post-loop-memcpy-expansion2290, !amdgpu.uniform !42 loop-memcpy-residual2293: ; preds = %loop-memcpy-residual2293.preheader, %loop-memcpy-residual2293 %phi.broken3783 = phi i64 [ 0, %loop-memcpy-residual2293.preheader ], [ %368, %loop-memcpy-residual2293 ] %lsr.iv3163 = phi ptr addrspace(5) [ %scevgep3164, %loop-memcpy-residual2293 ], [ %scevgep3162, %loop-memcpy-residual2293.preheader ] %residual-loop-index2295 = phi i64 [ %366, %loop-memcpy-residual2293 ], [ 0, %loop-memcpy-residual2293.preheader ] %365 = load i8, ptr addrspace(5) %lsr.iv3163, align 1 %scevgep3166 = getelementptr i8, ptr %scevgep3165, i64 %residual-loop-index2295 store i8 %365, ptr %scevgep3166, align 1 %366 = add i64 %residual-loop-index2295, 1 %scevgep3164 = getelementptr i8, ptr addrspace(5) %lsr.iv3163, i32 1 %367 = icmp uge i64 %366, %352 %368 = call i64 @llvm.amdgcn.if.break.i64(i1 %367, i64 %phi.broken3783) %369 = call i1 @llvm.amdgcn.loop.i64(i64 %368) br i1 %369, label %Flow3707, label %loop-memcpy-residual2293 Flow3707: ; preds = %loop-memcpy-residual2293 %.lcssa4063 = phi i64 [ %368, %loop-memcpy-residual2293 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4063) br label %Flow3708, !amdgpu.uniform !42 post-loop-memcpy-expansion2290: ; preds = %Flow3708 call void @llvm.lifetime.end.p5(ptr addrspace(5) %buffer.i.i.i) #34, !noalias !128 br label %for.cond.i.i.i116, !amdgpu.uniform !42 for.cond.i.i.i116: ; preds = %post-loop-memcpy-expansion2290, %Flow3706 %370 = phi i32 [ %408, %Flow3706 ], [ poison, %post-loop-memcpy-expansion2290 ] %371 = phi i64 [ %409, %Flow3706 ], [ poison, %post-loop-memcpy-expansion2290 ] %372 = phi i32 [ %410, %Flow3706 ], [ poison, %post-loop-memcpy-expansion2290 ] %retval.sroa.6.0.i.i.i117 = phi i32 [ %413, %Flow3706 ], [ undef, %post-loop-memcpy-expansion2290 ] %retval.sroa.2.0.i.i.i119 = phi i64 [ %412, %Flow3706 ], [ undef, %post-loop-memcpy-expansion2290 ] %retval.sroa.8.0.i.i.i120 = phi i32 [ %411, %Flow3706 ], [ undef, %post-loop-memcpy-expansion2290 ] %index.0.i.i.i121 = phi i32 [ %415, %Flow3706 ], [ 0, %post-loop-memcpy-expansion2290 ] %373 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i122 = icmp ult i32 %index.0.i.i.i121, %373 %spec.store.select.i.i.i123 = select i1 %cmp.not.i.i.i122, i32 %index.0.i.i.i121, i32 0 %374 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %375 = and i32 %spec.store.select.i.i.i123, 31 %376 = lshr i64 %374, %sh_prom.i.i.i.i %377 = trunc i64 %376 to i32 %conv4.i.i.i.i.i127 = and i32 %377, 1 %shl.i.i.i.i.i128 = shl nuw i32 %conv4.i.i.i.i.i127, %375 %378 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2437, !amdgpu.uniform !42 379: ; preds = %ComputeEnd2438 %sunkaddr3243 = getelementptr inbounds i8, ptr addrspace(1) %2861, i64 40 %380 = atomicrmw or ptr addrspace(1) %sunkaddr3243, i32 %.lcssa4057 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %381, !amdgpu.uniform !42 381: ; preds = %379, %ComputeEnd2438 %382 = phi i32 [ %380, %379 ], [ poison, %ComputeEnd2438 ] call void @llvm.amdgcn.end.cf.i64(i64 %2870) %383 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %382) %384 = or i32 %383, %.lcssa4058 %shl5.i.i.i.i.i129 = shl nuw i32 1, %375 %and.i.i.i.i.i130 = and i32 %shl5.i.i.i.i.i129, %384 %tobool3.i.i.i.i131 = icmp ne i32 %and.i.i.i.i.i130, 0 %385 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i131) %and.i.i.i.i.i.i132 = and i64 %385, %374 %cmp.i.not.i.i.i133 = icmp ne i64 %374, %and.i.i.i.i.i.i132 br i1 %cmp.i.not.i.i.i133, label %if.then.i.i.i.i134, label %Flow3705, !amdgpu.uniform !42 if.then.i.i.i.i134: ; preds = %381 fence syncscope("agent") acquire %386 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %387 = extractelement <2 x i64> %386, i32 0 %388 = inttoptr i64 %387 to ptr %389 = extractelement <2 x i64> %386, i32 1 %390 = inttoptr i64 %389 to ptr %idxprom.i.i.i.i135 = zext i32 %spec.store.select.i.i.i123 to i64 %arrayidx.i.i.i.i136 = getelementptr inbounds nuw i32, ptr %388, i64 %idxprom.i.i.i.i135, !amdgpu.uniform !42 %391 = load atomic i32, ptr %arrayidx.i.i.i.i136 monotonic, align 4 %392 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %391) %arrayidx.i45.i.i.i137 = getelementptr inbounds nuw i32, ptr %390, i64 %idxprom.i.i.i.i135, !amdgpu.uniform !42 %393 = load atomic i32, ptr %arrayidx.i45.i.i.i137 monotonic, align 4 %394 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %393) %cmp.i46.not.i.i.i138 = icmp ne i32 %392, %394 br i1 %cmp.i46.not.i.i.i138, label %if.then12.i.i.i139, label %Flow3703, !amdgpu.uniform !42 if.then12.i.i.i139: ; preds = %if.then.i.i.i.i134 fence syncscope("agent") release %395 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %374, i1 true) %iszero.i.i.i.i.i.i.i140 = icmp ne i64 %374, 0 %cmp2.i.i.i.i.i.i141 = icmp eq i64 %395, %sh_prom.i.i.i.i %cmp.i.i.i.i.i2.i = select i1 %iszero.i.i.i.i.i.i.i140, i1 %cmp2.i.i.i.i.i.i141, i1 false %conv4.i.i51.i.i.i142 = zext i1 %cmp.i.i.i.i.i2.i to i32 %shl.i.i52.i.i.i143 = shl nuw i32 %conv4.i.i51.i.i.i142, %375 %xor.i.i.i.i.i144 = xor i32 %shl.i.i52.i.i.i143, -1 %396 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2442, !amdgpu.uniform !42 397: ; preds = %ComputeEnd2443 %sunkaddr3244 = getelementptr inbounds i8, ptr addrspace(1) %2861, i64 40 %398 = atomicrmw and ptr addrspace(1) %sunkaddr3244, i32 %.lcssa4059 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %399, !amdgpu.uniform !42 399: ; preds = %397, %ComputeEnd2443 call void @llvm.amdgcn.end.cf.i64(i64 %2888) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3703, !amdgpu.uniform !42 if.end14.i.i.i204: ; preds = %Flow3703 %400 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %374, i1 true) %iszero.i.i.i.i.i.i205 = icmp ne i64 %374, 0 %cmp2.i.i.i.i.i206 = icmp eq i64 %400, %sh_prom.i.i.i.i %cmp.i.i.i.i.i207 = select i1 %iszero.i.i.i.i.i.i205, i1 %cmp2.i.i.i.i.i206, i1 false %401 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i207) %402 = extractvalue { i1, i64 } %401, 0 %403 = extractvalue { i1, i64 } %401, 1 br i1 %402, label %if.then16.i.i.i209, label %if.end22.i.i.i208 if.then16.i.i.i209: ; preds = %if.end14.i.i.i204 %404 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i210 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %404, i64 %idxprom.i.i.i.i135, i32 1 store i32 1660944387, ptr %opcode.i.i.i210, align 8, !tbaa !77 %arrayidx21.i.i.i211 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %404, i64 %idxprom.i.i.i.i135 store i64 %374, ptr %arrayidx21.i.i.i211, align 8, !tbaa !80 br label %if.end22.i.i.i208, !amdgpu.uniform !42 Flow3704: ; preds = %if.end22.i.i.i208, %Flow3703 %405 = phi i32 [ %392, %if.end22.i.i.i208 ], [ %retval.sroa.8.0.i.i.i120, %Flow3703 ] %406 = phi i64 [ %374, %if.end22.i.i.i208 ], [ %retval.sroa.2.0.i.i.i119, %Flow3703 ] %407 = phi i32 [ %spec.store.select.i.i.i123, %if.end22.i.i.i208 ], [ %retval.sroa.6.0.i.i.i117, %Flow3703 ] br label %cleanup26.i.i.i145, !amdgpu.uniform !42 if.end22.i.i.i208: ; preds = %if.then16.i.i.i209, %if.end14.i.i.i204 call void @llvm.amdgcn.end.cf.i64(i64 %403) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3704, !amdgpu.uniform !42 Flow3705: ; preds = %cleanup26.i.i.i145, %381 %408 = phi i32 [ %407, %cleanup26.i.i.i145 ], [ %370, %381 ] %409 = phi i64 [ %406, %cleanup26.i.i.i145 ], [ %371, %381 ] %410 = phi i32 [ %405, %cleanup26.i.i.i145 ], [ %372, %381 ] %411 = phi i32 [ %405, %cleanup26.i.i.i145 ], [ %retval.sroa.8.0.i.i.i120, %381 ] %412 = phi i64 [ %406, %cleanup26.i.i.i145 ], [ %retval.sroa.2.0.i.i.i119, %381 ] %413 = phi i32 [ %407, %cleanup26.i.i.i145 ], [ %retval.sroa.6.0.i.i.i117, %381 ] %414 = phi i1 [ %cmp.i46.not.i.i.i138, %cleanup26.i.i.i145 ], [ true, %381 ] br i1 %414, label %for.inc.i.i.i150, label %Flow3706, !amdgpu.uniform !42 cleanup26.i.i.i145: ; preds = %Flow3704 br label %Flow3705, !amdgpu.uniform !42 for.inc.i.i.i150: ; preds = %Flow3705 %inc.i.i.i155 = add i32 %spec.store.select.i.i.i123, 1 br label %Flow3706, !amdgpu.uniform !42 Flow3706: ; preds = %for.inc.i.i.i150, %Flow3705 %415 = phi i32 [ %inc.i.i.i155, %for.inc.i.i.i150 ], [ poison, %Flow3705 ] %416 = phi i1 [ false, %for.inc.i.i.i150 ], [ true, %Flow3705 ] br i1 %416, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i156, label %for.cond.i.i.i116, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i156: ; preds = %Flow3706 %.lcssa4062 = phi i32 [ %408, %Flow3706 ] %.lcssa4061 = phi i64 [ %409, %Flow3706 ] %.lcssa4060 = phi i32 [ %410, %Flow3706 ] fence acquire %417 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i157 = shl i32 %.lcssa4062, 6 %idxprom.i19.i.i.i.i.i158 = zext i32 %mul.i.i.i.i.i.i157 to i64 %arrayidx.i20.i.i.i.i.i159 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %417, i64 %idxprom.i19.i.i.i.i.i158 %arrayidx.i22.i.i.i.i.i160 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i159, i64 %sh_prom.i.i.i.i store i64 %writer.sroa.10.5.i.i.i.i, ptr %arrayidx.i22.i.i.i.i.i160, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i161 = tail call i64 @llvm.umin.i64(i64 %writer.sroa.10.5.i.i.i.i, i64 56) %418 = and i64 %spec.select.i.i.i.i.i.i.i161, 15 %419 = sub i64 %spec.select.i.i.i.i.i.i.i161, %418 %420 = icmp ne i64 %419, 0 %421 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %420) %422 = extractvalue { i1, i64 } %421, 0 %423 = extractvalue { i1, i64 } %421, 1 br i1 %422, label %loop-memcpy-expansion2267.preheader, label %Flow3702 loop-memcpy-expansion2267.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i156 %424 = add nuw nsw i64 %76, 8 %scevgep3159 = getelementptr i8, ptr %417, i64 %424 %425 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i158, 6 %scevgep3160 = getelementptr i8, ptr %scevgep3159, i64 %425 br label %loop-memcpy-expansion2267, !amdgpu.uniform !42 Flow3702: ; preds = %Flow3701, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i156 call void @llvm.amdgcn.end.cf.i64(i64 %423) br label %loop-memcpy-residual-header2270, !amdgpu.uniform !42 loop-memcpy-expansion2267: ; preds = %loop-memcpy-expansion2267.preheader, %loop-memcpy-expansion2267 %phi.broken3784 = phi i64 [ 0, %loop-memcpy-expansion2267.preheader ], [ %430, %loop-memcpy-expansion2267 ] %loop-index2268 = phi i64 [ %428, %loop-memcpy-expansion2267 ], [ 0, %loop-memcpy-expansion2267.preheader ] %426 = getelementptr i8, ptr %341, i64 %loop-index2268 %427 = load <4 x i32>, ptr %426, align 1 %scevgep3161 = getelementptr i8, ptr %scevgep3160, i64 %loop-index2268 store <4 x i32> %427, ptr %scevgep3161, align 1 %428 = add i64 %loop-index2268, 16 %429 = icmp uge i64 %428, %419 %430 = call i64 @llvm.amdgcn.if.break.i64(i1 %429, i64 %phi.broken3784) %431 = call i1 @llvm.amdgcn.loop.i64(i64 %430) br i1 %431, label %Flow3701, label %loop-memcpy-expansion2267 Flow3700: ; preds = %Flow3698, %Flow3699 %432 = phi i64 [ %2644, %Flow3698 ], [ %2636, %Flow3699 ] call void @llvm.amdgcn.end.cf.i64(i64 %2639) br label %post-loop-memcpy-expansion2266, !amdgpu.uniform !42 loop-memcpy-residual2269: ; preds = %loop-memcpy-residual2269.preheader, %loop-memcpy-residual2269 %phi.broken3785 = phi i64 [ 0, %loop-memcpy-residual2269.preheader ], [ %436, %loop-memcpy-residual2269 ] %residual-loop-index2271 = phi i64 [ %434, %loop-memcpy-residual2269 ], [ 0, %loop-memcpy-residual2269.preheader ] %scevgep3158 = getelementptr i8, ptr %scevgep3157, i64 %residual-loop-index2271 %433 = load i8, ptr %scevgep3158, align 1 %scevgep3156 = getelementptr i8, ptr %scevgep3155, i64 %residual-loop-index2271 store i8 %433, ptr %scevgep3156, align 1 %434 = add i64 %residual-loop-index2271, 1 %435 = icmp uge i64 %434, %418 %436 = call i64 @llvm.amdgcn.if.break.i64(i1 %435, i64 %phi.broken3785) %437 = call i1 @llvm.amdgcn.loop.i64(i64 %436) br i1 %437, label %Flow3698, label %loop-memcpy-residual2269 Flow3698: ; preds = %loop-memcpy-residual2269 %.lcssa4055 = phi i64 [ %436, %loop-memcpy-residual2269 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4055) br label %Flow3700, !amdgpu.uniform !42 post-loop-memcpy-expansion2266: ; preds = %Flow3700 %tobool.not.i.i.i.i.i.i163 = icmp eq i32 %.lcssa4060, 0 %conv.i.i.i.i.i.i164 = zext i1 %tobool.not.i.i.i.i.i.i163 to i32 fence release %438 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i165 = zext i32 %.lcssa4062 to i64 %arrayidx.i24.i.i.i.i.i166 = getelementptr inbounds nuw i32, ptr %438, i64 %idxprom.i23.i.i.i.i.i165 store atomic i32 %conv.i.i.i.i.i.i164, ptr %arrayidx.i24.i.i.i.i.i166 monotonic, align 4 %439 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i167 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %439, i64 %idxprom.i23.i.i.i.i.i165, !amdgpu.uniform !42 %440 = load i64, ptr %arrayidx.i.i5.i.i167, align 8, !tbaa !80 %scevgep3141 = getelementptr i8, ptr %341, i64 56 %441 = add i64 %writer.sroa.10.5.i.i.i.i, -56 br label %while.cond.i.i.i.i168, !amdgpu.uniform !42 while.cond.i.i.i.i168: ; preds = %post-loop-memcpy-expansion2266, %Flow3697 %phi.broken3788 = phi i64 [ 0, %post-loop-memcpy-expansion2266 ], [ %458, %Flow3697 ] %lsr.iv3147 = phi i64 [ %456, %Flow3697 ], [ %441, %post-loop-memcpy-expansion2266 ] %lsr.iv3142 = phi ptr [ %455, %Flow3697 ], [ %scevgep3141, %post-loop-memcpy-expansion2266 ] %port.sroa.37.0.i.i169 = phi i32 [ %454, %Flow3697 ], [ %conv.i.i.i.i.i.i164, %post-loop-memcpy-expansion2266 ] %idx.0.i.i.i.i170 = phi i64 [ %453, %Flow3697 ], [ 56, %post-loop-memcpy-expansion2266 ] %cmp.i.i.i.i171 = icmp ugt i64 %writer.sroa.10.5.i.i.i.i, %idx.0.i.i.i.i170 %442 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i171) %and.i.i.i.i6.i.i172 = and i64 %442, %440 %tobool.not.i.i.i.i173 = icmp ne i64 %and.i.i.i.i6.i.i172, 0 %443 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i174 = getelementptr inbounds nuw i32, ptr %443, i64 %idxprom.i23.i.i.i.i.i165, !amdgpu.uniform !42 %444 = load atomic i32, ptr %arrayidx.i22.i.i.i174 monotonic, align 4 %445 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i173) %446 = extractvalue { i1, i64 } %445, 0 %447 = extractvalue { i1, i64 } %445, 1 br i1 %446, label %cond.false.i8.i.i.i.i175, label %Flow3697 cond.false.i8.i.i.i.i175: ; preds = %while.cond.i.i.i.i168 %448 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %444) %449 = icmp ne i32 %448, %port.sroa.37.0.i.i169 br i1 %449, label %while.body.i.i21.i.i.i.i176.preheader, label %Flow3696, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i176.preheader: ; preds = %cond.false.i8.i.i.i.i175 br label %while.body.i.i21.i.i.i.i176, !amdgpu.uniform !42 Flow3696: ; preds = %Flow3695, %cond.false.i8.i.i.i.i175 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i179, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i176: ; preds = %while.body.i.i21.i.i.i.i176.preheader, %while.body.i.i21.i.i.i.i176 tail call void @llvm.amdgcn.s.sleep(i32 2) %450 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i177 = getelementptr inbounds nuw i32, ptr %450, i64 %idxprom.i23.i.i.i.i.i165, !amdgpu.uniform !42 %451 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i177 monotonic, align 4 %452 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %451) %cmp.i.not.i.i23.i.i.i.i178 = icmp eq i32 %452, %port.sroa.37.0.i.i169 br i1 %cmp.i.not.i.i23.i.i.i.i178, label %Flow3695, label %while.body.i.i21.i.i.i.i176, !amdgpu.uniform !42 Flow3695: ; preds = %while.body.i.i21.i.i.i.i176 br label %Flow3696, !amdgpu.uniform !42 Flow3697: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i180, %while.cond.i.i.i.i168 %453 = phi i64 [ %add.i.i.i.i183, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i180 ], [ poison, %while.cond.i.i.i.i168 ] %454 = phi i32 [ %conv.i.i26.i.i.i.i181, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i180 ], [ poison, %while.cond.i.i.i.i168 ] %455 = phi ptr [ %scevgep3143, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i180 ], [ poison, %while.cond.i.i.i.i168 ] %456 = phi i64 [ %lsr.iv.next3148, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i180 ], [ poison, %while.cond.i.i.i.i168 ] %457 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i180 ], [ true, %while.cond.i.i.i.i168 ] call void @llvm.amdgcn.end.cf.i64(i64 %447) %458 = call i64 @llvm.amdgcn.if.break.i64(i1 %457, i64 %phi.broken3788) %459 = call i1 @llvm.amdgcn.loop.i64(i64 %458) br i1 %459, label %cond.false.i.i.i189, label %while.cond.i.i.i.i168 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i179: ; preds = %Flow3696 fence acquire %460 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i171) %461 = extractvalue { i1, i64 } %460, 0 %462 = extractvalue { i1, i64 } %460, 1 br i1 %461, label %if.then.i.i.i.i.i.i3.i, label %Flow3694 if.then.i.i.i.i.i.i3.i: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i179 %sub.i.i.i.i.i.i.i185 = sub nuw i64 %writer.sroa.10.5.i.i.i.i, %idx.0.i.i.i.i170 %spec.select.i.i.i36.i.i.i.i186 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i185, i64 64) %463 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %464 = and i64 %spec.select.i.i.i36.i.i.i.i186, 15 %465 = sub i64 %spec.select.i.i.i36.i.i.i.i186, %464 %466 = icmp ne i64 %465, 0 %467 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %466) %468 = extractvalue { i1, i64 } %467, 0 %469 = extractvalue { i1, i64 } %467, 1 br i1 %468, label %loop-memcpy-expansion2261.preheader, label %Flow3693 loop-memcpy-expansion2261.preheader: ; preds = %if.then.i.i.i.i.i.i3.i %arrayidx.i20.i35.i.i.i.i187 = getelementptr %"struct.rpc::Buffer", ptr %463, i64 %idxprom.i19.i.i.i.i.i158 %arrayidx.i22.i38.i.i.i.i188 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i187, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2261, !amdgpu.uniform !42 Flow3693: ; preds = %Flow3692, %if.then.i.i.i.i.i.i3.i call void @llvm.amdgcn.end.cf.i64(i64 %469) br label %loop-memcpy-residual-header2264, !amdgpu.uniform !42 loop-memcpy-expansion2261: ; preds = %loop-memcpy-expansion2261.preheader, %loop-memcpy-expansion2261 %phi.broken3786 = phi i64 [ 0, %loop-memcpy-expansion2261.preheader ], [ %474, %loop-memcpy-expansion2261 ] %loop-index2262 = phi i64 [ %472, %loop-memcpy-expansion2261 ], [ 0, %loop-memcpy-expansion2261.preheader ] %scevgep3144 = getelementptr i8, ptr %lsr.iv3142, i64 %loop-index2262 %470 = load <4 x i32>, ptr %scevgep3144, align 1 %471 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i188, i64 %loop-index2262 store <4 x i32> %470, ptr %471, align 1 %472 = add i64 %loop-index2262, 16 %473 = icmp uge i64 %472, %465 %474 = call i64 @llvm.amdgcn.if.break.i64(i1 %473, i64 %phi.broken3786) %475 = call i1 @llvm.amdgcn.loop.i64(i64 %474) br i1 %475, label %Flow3692, label %loop-memcpy-expansion2261 Flow3691: ; preds = %Flow3690, %loop-memcpy-residual-header2264 call void @llvm.amdgcn.end.cf.i64(i64 %2629) br label %Flow3694, !amdgpu.uniform !42 loop-memcpy-residual2263: ; preds = %loop-memcpy-residual2263.preheader, %loop-memcpy-residual2263 %phi.broken3787 = phi i64 [ 0, %loop-memcpy-residual2263.preheader ], [ %479, %loop-memcpy-residual2263 ] %residual-loop-index2265 = phi i64 [ %477, %loop-memcpy-residual2263 ], [ 0, %loop-memcpy-residual2263.preheader ] %scevgep3153 = getelementptr i8, ptr %scevgep3152, i64 %residual-loop-index2265 %476 = load i8, ptr %scevgep3153, align 1 %scevgep3151 = getelementptr i8, ptr %scevgep3150, i64 %residual-loop-index2265 store i8 %476, ptr %scevgep3151, align 1 %477 = add i64 %residual-loop-index2265, 1 %478 = icmp uge i64 %477, %464 %479 = call i64 @llvm.amdgcn.if.break.i64(i1 %478, i64 %phi.broken3787) %480 = call i1 @llvm.amdgcn.loop.i64(i64 %479) br i1 %480, label %Flow3690, label %loop-memcpy-residual2263 Flow3690: ; preds = %loop-memcpy-residual2263 %.lcssa4052 = phi i64 [ %479, %loop-memcpy-residual2263 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4052) br label %Flow3691, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i180: ; preds = %Flow3694 %conv.i.i26.i.i.i.i181 = xor i32 %port.sroa.37.0.i.i169, 1 fence release %481 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i182 = getelementptr inbounds nuw i32, ptr %481, i64 %idxprom.i23.i.i.i.i.i165 store atomic i32 %conv.i.i26.i.i.i.i181, ptr %arrayidx.i24.i29.i.i.i.i182 monotonic, align 4 %add.i.i.i.i183 = add i64 %idx.0.i.i.i.i170, 64 %scevgep3143 = getelementptr i8, ptr %lsr.iv3142, i64 64 %lsr.iv.next3148 = add i64 %lsr.iv3147, -64 br label %Flow3697, !amdgpu.uniform !42 cond.false.i.i.i189: ; preds = %Flow3697 %.lcssa4054 = phi i64 [ %458, %Flow3697 ] %port.sroa.37.0.i.i169.lcssa = phi i32 [ %port.sroa.37.0.i.i169, %Flow3697 ] %.lcssa4053 = phi i32 [ %444, %Flow3697 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4054) %482 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa4053) %483 = icmp ne i32 %482, %port.sroa.37.0.i.i169.lcssa %484 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %483) %485 = extractvalue { i1, i64 } %484, 0 %486 = extractvalue { i1, i64 } %484, 1 br i1 %485, label %while.body.i.i.i.i190.preheader, label %Flow3689 while.body.i.i.i.i190.preheader: ; preds = %cond.false.i.i.i189 br label %while.body.i.i.i.i190, !amdgpu.uniform !42 Flow3689: ; preds = %Flow3688, %cond.false.i.i.i189 call void @llvm.amdgcn.end.cf.i64(i64 %486) br label %_ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i, !amdgpu.uniform !42 while.body.i.i.i.i190: ; preds = %while.body.i.i.i.i190.preheader, %while.body.i.i.i.i190 %phi.broken3789 = phi i64 [ 0, %while.body.i.i.i.i190.preheader ], [ %490, %while.body.i.i.i.i190 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %487 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i191 = getelementptr inbounds nuw i32, ptr %487, i64 %idxprom.i23.i.i.i.i.i165, !amdgpu.uniform !42 %488 = load atomic i32, ptr %arrayidx.i.i.i8.i.i191 monotonic, align 4 %489 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %488) %cmp.i.not.i.i.i.i192 = icmp eq i32 %489, %port.sroa.37.0.i.i169.lcssa %490 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i192, i64 %phi.broken3789) %491 = call i1 @llvm.amdgcn.loop.i64(i64 %490) br i1 %491, label %Flow3688, label %while.body.i.i.i.i190 Flow3688: ; preds = %while.body.i.i.i.i190 %.lcssa4050 = phi i64 [ %490, %while.body.i.i.i.i190 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4050) br label %Flow3689, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i: ; preds = %Flow3689 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %492 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4061, i1 true) %iszero.i.i.i.i.i13.i.i193 = icmp ne i64 %.lcssa4061, 0 %cmp2.i.i.i.i14.i.i194 = icmp eq i64 %492, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i195 = select i1 %iszero.i.i.i.i.i13.i.i193, i1 %cmp2.i.i.i.i14.i.i194, i1 false %493 = and i32 %.lcssa4062, 31 %conv4.i.i.i19.i.i199 = zext i1 %cmp.i.i.i.i15.i.i195 to i32 %shl.i.i.i20.i.i200 = shl nuw i32 %conv4.i.i.i19.i.i199, %493 %xor.i.i.i21.i.i201 = xor i32 %shl.i.i.i20.i.i200, -1 %494 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2446, !amdgpu.uniform !42 495: ; preds = %ComputeEnd2447 %div8.i.i.i16.i.i196 = lshr i32 %.lcssa4062, 5 %idxprom.i.i.i17.i.i197 = zext nneg i32 %div8.i.i.i16.i.i196 to i64 %496 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i197 %sunkaddr3245 = getelementptr inbounds i8, ptr addrspace(1) %496, i64 40 %497 = atomicrmw and ptr addrspace(1) %sunkaddr3245, i32 %.lcssa4049 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %498, !amdgpu.uniform !42 498: ; preds = %495, %ComputeEnd2447 call void @llvm.amdgcn.end.cf.i64(i64 %2905) tail call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i1.i220, !amdgpu.uniform !42 for.cond.i.i1.i220: ; preds = %498, %Flow3687 %499 = phi i32 [ %537, %Flow3687 ], [ poison, %498 ] %500 = phi i64 [ %538, %Flow3687 ], [ poison, %498 ] %501 = phi i32 [ %539, %Flow3687 ], [ poison, %498 ] %retval.sroa.6.0.i.i.i221 = phi i32 [ %542, %Flow3687 ], [ undef, %498 ] %retval.sroa.2.0.i.i.i223 = phi i64 [ %541, %Flow3687 ], [ undef, %498 ] %retval.sroa.8.0.i.i.i224 = phi i32 [ %540, %Flow3687 ], [ undef, %498 ] %index.0.i.i.i225 = phi i32 [ %544, %Flow3687 ], [ 0, %498 ] %502 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i226 = icmp ult i32 %index.0.i.i.i225, %502 %spec.store.select.i.i.i227 = select i1 %cmp.not.i.i.i226, i32 %index.0.i.i.i225, i32 0 %503 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %504 = and i32 %spec.store.select.i.i.i227, 31 %505 = lshr i64 %503, %sh_prom.i.i.i.i %506 = trunc i64 %505 to i32 %conv4.i.i.i.i.i231 = and i32 %506, 1 %shl.i.i.i.i.i232 = shl nuw i32 %conv4.i.i.i.i.i231, %504 %507 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2450, !amdgpu.uniform !42 508: ; preds = %ComputeEnd2451 %sunkaddr3246 = getelementptr inbounds i8, ptr addrspace(1) %2915, i64 40 %509 = atomicrmw or ptr addrspace(1) %sunkaddr3246, i32 %.lcssa4043 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %510, !amdgpu.uniform !42 510: ; preds = %508, %ComputeEnd2451 %511 = phi i32 [ %509, %508 ], [ poison, %ComputeEnd2451 ] call void @llvm.amdgcn.end.cf.i64(i64 %2924) %512 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %511) %513 = or i32 %512, %.lcssa4044 %shl5.i.i.i.i.i233 = shl nuw i32 1, %504 %and.i.i.i.i.i234 = and i32 %shl5.i.i.i.i.i233, %513 %tobool3.i.i.i.i235 = icmp ne i32 %and.i.i.i.i.i234, 0 %514 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i235) %and.i.i.i.i.i.i236 = and i64 %514, %503 %cmp.i.not.i.i.i237 = icmp ne i64 %503, %and.i.i.i.i.i.i236 br i1 %cmp.i.not.i.i.i237, label %if.then.i.i.i.i238, label %Flow3686, !amdgpu.uniform !42 if.then.i.i.i.i238: ; preds = %510 fence syncscope("agent") acquire %515 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %516 = extractelement <2 x i64> %515, i32 0 %517 = inttoptr i64 %516 to ptr %518 = extractelement <2 x i64> %515, i32 1 %519 = inttoptr i64 %518 to ptr %idxprom.i.i.i.i239 = zext i32 %spec.store.select.i.i.i227 to i64 %arrayidx.i.i.i.i240 = getelementptr inbounds nuw i32, ptr %517, i64 %idxprom.i.i.i.i239, !amdgpu.uniform !42 %520 = load atomic i32, ptr %arrayidx.i.i.i.i240 monotonic, align 4 %521 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %520) %arrayidx.i45.i.i.i241 = getelementptr inbounds nuw i32, ptr %519, i64 %idxprom.i.i.i.i239, !amdgpu.uniform !42 %522 = load atomic i32, ptr %arrayidx.i45.i.i.i241 monotonic, align 4 %523 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %522) %cmp.i46.not.i.i.i242 = icmp ne i32 %521, %523 br i1 %cmp.i46.not.i.i.i242, label %if.then12.i.i.i243, label %Flow3684, !amdgpu.uniform !42 if.then12.i.i.i243: ; preds = %if.then.i.i.i.i238 fence syncscope("agent") release %524 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %503, i1 true) %iszero.i.i.i.i.i.i.i244 = icmp ne i64 %503, 0 %cmp2.i.i.i.i.i.i245 = icmp eq i64 %524, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i246 = select i1 %iszero.i.i.i.i.i.i.i244, i1 %cmp2.i.i.i.i.i.i245, i1 false %conv4.i.i51.i.i.i247 = zext i1 %cmp.i.i.i.i.i.i246 to i32 %shl.i.i52.i.i.i248 = shl nuw i32 %conv4.i.i51.i.i.i247, %504 %xor.i.i.i.i.i249 = xor i32 %shl.i.i52.i.i.i248, -1 %525 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2455, !amdgpu.uniform !42 526: ; preds = %ComputeEnd2456 %sunkaddr3247 = getelementptr inbounds i8, ptr addrspace(1) %2915, i64 40 %527 = atomicrmw and ptr addrspace(1) %sunkaddr3247, i32 %.lcssa4045 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %528, !amdgpu.uniform !42 528: ; preds = %526, %ComputeEnd2456 call void @llvm.amdgcn.end.cf.i64(i64 %2942) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3684, !amdgpu.uniform !42 if.end14.i.i.i309: ; preds = %Flow3684 %529 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %503, i1 true) %iszero.i.i.i.i.i.i310 = icmp ne i64 %503, 0 %cmp2.i.i.i.i.i311 = icmp eq i64 %529, %sh_prom.i.i.i.i %cmp.i.i.i.i.i312 = select i1 %iszero.i.i.i.i.i.i310, i1 %cmp2.i.i.i.i.i311, i1 false %530 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i312) %531 = extractvalue { i1, i64 } %530, 0 %532 = extractvalue { i1, i64 } %530, 1 br i1 %531, label %if.then16.i.i.i314, label %if.end22.i.i.i313 if.then16.i.i.i314: ; preds = %if.end14.i.i.i309 %533 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i315 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %533, i64 %idxprom.i.i.i.i239, i32 1 store i32 1660944387, ptr %opcode.i.i.i315, align 8, !tbaa !77 %arrayidx21.i.i.i316 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %533, i64 %idxprom.i.i.i.i239 store i64 %503, ptr %arrayidx21.i.i.i316, align 8, !tbaa !80 br label %if.end22.i.i.i313, !amdgpu.uniform !42 Flow3685: ; preds = %if.end22.i.i.i313, %Flow3684 %534 = phi i32 [ %521, %if.end22.i.i.i313 ], [ %retval.sroa.8.0.i.i.i224, %Flow3684 ] %535 = phi i64 [ %503, %if.end22.i.i.i313 ], [ %retval.sroa.2.0.i.i.i223, %Flow3684 ] %536 = phi i32 [ %spec.store.select.i.i.i227, %if.end22.i.i.i313 ], [ %retval.sroa.6.0.i.i.i221, %Flow3684 ] br label %cleanup26.i.i.i250, !amdgpu.uniform !42 if.end22.i.i.i313: ; preds = %if.then16.i.i.i314, %if.end14.i.i.i309 call void @llvm.amdgcn.end.cf.i64(i64 %532) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3685, !amdgpu.uniform !42 Flow3686: ; preds = %cleanup26.i.i.i250, %510 %537 = phi i32 [ %536, %cleanup26.i.i.i250 ], [ %499, %510 ] %538 = phi i64 [ %535, %cleanup26.i.i.i250 ], [ %500, %510 ] %539 = phi i32 [ %534, %cleanup26.i.i.i250 ], [ %501, %510 ] %540 = phi i32 [ %534, %cleanup26.i.i.i250 ], [ %retval.sroa.8.0.i.i.i224, %510 ] %541 = phi i64 [ %535, %cleanup26.i.i.i250 ], [ %retval.sroa.2.0.i.i.i223, %510 ] %542 = phi i32 [ %536, %cleanup26.i.i.i250 ], [ %retval.sroa.6.0.i.i.i221, %510 ] %543 = phi i1 [ %cmp.i46.not.i.i.i242, %cleanup26.i.i.i250 ], [ true, %510 ] br i1 %543, label %for.inc.i.i.i255, label %Flow3687, !amdgpu.uniform !42 cleanup26.i.i.i250: ; preds = %Flow3685 br label %Flow3686, !amdgpu.uniform !42 for.inc.i.i.i255: ; preds = %Flow3686 %inc.i.i.i260 = add i32 %spec.store.select.i.i.i227, 1 br label %Flow3687, !amdgpu.uniform !42 Flow3687: ; preds = %for.inc.i.i.i255, %Flow3686 %544 = phi i32 [ %inc.i.i.i260, %for.inc.i.i.i255 ], [ poison, %Flow3686 ] %545 = phi i1 [ false, %for.inc.i.i.i255 ], [ true, %Flow3686 ] br i1 %545, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i261, label %for.cond.i.i1.i220, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i261: ; preds = %Flow3687 %.lcssa4048 = phi i32 [ %537, %Flow3687 ] %.lcssa4047 = phi i64 [ %538, %Flow3687 ] %.lcssa4046 = phi i32 [ %539, %Flow3687 ] fence acquire %546 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i262 = shl i32 %.lcssa4048, 6 %idxprom.i19.i.i.i.i.i263 = zext i32 %mul.i.i.i.i.i.i262 to i64 %arrayidx.i20.i.i.i.i.i264 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %546, i64 %idxprom.i19.i.i.i.i.i263 %arrayidx.i22.i.i.i.i.i265 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i264, i64 %sh_prom.i.i.i.i store i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.7.11 to ptr), i64 10) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.7.11 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i265, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i266 = tail call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.7.11 to ptr), i64 10) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.7.11 to ptr) to i64)), i64 56) %547 = and i64 %spec.select.i.i.i.i.i.i.i266, 15 %548 = sub i64 %spec.select.i.i.i.i.i.i.i266, %547 %549 = icmp ne i64 %548, 0 br i1 %549, label %loop-memcpy-expansion2333.preheader, label %Flow3683, !amdgpu.uniform !42 loop-memcpy-expansion2333.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i261 %550 = add nuw nsw i64 %76, 8 %scevgep3138 = getelementptr i8, ptr %546, i64 %550 %551 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i263, 6 %scevgep3139 = getelementptr i8, ptr %scevgep3138, i64 %551 br label %loop-memcpy-expansion2333, !amdgpu.uniform !42 Flow3683: ; preds = %Flow3682, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i261 br label %loop-memcpy-residual-header2336, !amdgpu.uniform !42 loop-memcpy-expansion2333: ; preds = %loop-memcpy-expansion2333.preheader, %loop-memcpy-expansion2333 %loop-index2334 = phi i64 [ %554, %loop-memcpy-expansion2333 ], [ 0, %loop-memcpy-expansion2333.preheader ] %552 = getelementptr i8, ptr addrspace(4) @.str.7.11, i64 %loop-index2334, !amdgpu.uniform !42 %553 = load <4 x i32>, ptr addrspace(4) %552, align 1 %scevgep3140 = getelementptr i8, ptr %scevgep3139, i64 %loop-index2334 store <4 x i32> %553, ptr %scevgep3140, align 1 %554 = add i64 %loop-index2334, 16 %555 = icmp uge i64 %554, %548 br i1 %555, label %Flow3682, label %loop-memcpy-expansion2333, !amdgpu.uniform !42 Flow3681: ; preds = %Flow3679, %Flow3680 %556 = phi i64 [ %2690, %Flow3679 ], [ %2687, %Flow3680 ] br label %post-loop-memcpy-expansion2332, !amdgpu.uniform !42 loop-memcpy-residual2335: ; preds = %loop-memcpy-residual2335.preheader, %loop-memcpy-residual2335 %residual-loop-index2337 = phi i64 [ %558, %loop-memcpy-residual2335 ], [ 0, %loop-memcpy-residual2335.preheader ] %scevgep3137 = getelementptr i8, ptr addrspace(4) @.str.7.11, i64 %residual-loop-index2337, !amdgpu.uniform !42 %557 = load i8, ptr addrspace(4) %scevgep3137, align 1 %scevgep3136 = getelementptr i8, ptr %scevgep3135, i64 %residual-loop-index2337 store i8 %557, ptr %scevgep3136, align 1 %558 = add i64 %residual-loop-index2337, 1 %559 = icmp uge i64 %558, %547 br i1 %559, label %Flow3679, label %loop-memcpy-residual2335, !amdgpu.uniform !42 Flow3679: ; preds = %loop-memcpy-residual2335 br label %Flow3681, !amdgpu.uniform !42 post-loop-memcpy-expansion2332: ; preds = %Flow3681 %tobool.not.i.i.i.i.i.i268 = icmp eq i32 %.lcssa4046, 0 %conv.i.i.i.i.i.i269 = zext i1 %tobool.not.i.i.i.i.i.i268 to i32 fence release %560 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i270 = zext i32 %.lcssa4048 to i64 %arrayidx.i24.i.i.i.i.i271 = getelementptr inbounds nuw i32, ptr %560, i64 %idxprom.i23.i.i.i.i.i270 store atomic i32 %conv.i.i.i.i.i.i269, ptr %arrayidx.i24.i.i.i.i.i271 monotonic, align 4 %561 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i272 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %561, i64 %idxprom.i23.i.i.i.i.i270, !amdgpu.uniform !42 %562 = load i64, ptr %arrayidx.i.i5.i.i272, align 8, !tbaa !80 br label %while.cond.i.i.i.i273, !amdgpu.uniform !42 while.cond.i.i.i.i273: ; preds = %post-loop-memcpy-expansion2332, %Flow3678 %phi.broken3790 = phi i64 [ 0, %post-loop-memcpy-expansion2332 ], [ %579, %Flow3678 ] %lsr.iv3127 = phi i64 [ %577, %Flow3678 ], [ -46, %post-loop-memcpy-expansion2332 ] %lsr.iv3122 = phi ptr addrspace(4) [ %576, %Flow3678 ], [ getelementptr (i8, ptr addrspace(4) @.str.7.11, i64 56), %post-loop-memcpy-expansion2332 ] %port.sroa.37.0.i.i274 = phi i32 [ %575, %Flow3678 ], [ %conv.i.i.i.i.i.i269, %post-loop-memcpy-expansion2332 ] %idx.0.i.i.i.i275 = phi i64 [ %574, %Flow3678 ], [ 56, %post-loop-memcpy-expansion2332 ] %cmp.i.i.i.i276 = icmp ult i64 %idx.0.i.i.i.i275, sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.7.11 to ptr), i64 10) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.7.11 to ptr) to i64)) %563 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i276) %and.i.i.i.i6.i.i277 = and i64 %563, %562 %tobool.not.i.i.i.i278 = icmp ne i64 %and.i.i.i.i6.i.i277, 0 %564 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i279 = getelementptr inbounds nuw i32, ptr %564, i64 %idxprom.i23.i.i.i.i.i270, !amdgpu.uniform !42 %565 = load atomic i32, ptr %arrayidx.i22.i.i.i279 monotonic, align 4 %566 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i278) %567 = extractvalue { i1, i64 } %566, 0 %568 = extractvalue { i1, i64 } %566, 1 br i1 %567, label %cond.false.i8.i.i.i.i280, label %Flow3678 cond.false.i8.i.i.i.i280: ; preds = %while.cond.i.i.i.i273 %569 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %565) %570 = icmp ne i32 %569, %port.sroa.37.0.i.i274 br i1 %570, label %while.body.i.i21.i.i.i.i281.preheader, label %Flow3677, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i281.preheader: ; preds = %cond.false.i8.i.i.i.i280 br label %while.body.i.i21.i.i.i.i281, !amdgpu.uniform !42 Flow3677: ; preds = %Flow3676, %cond.false.i8.i.i.i.i280 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i284, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i281: ; preds = %while.body.i.i21.i.i.i.i281.preheader, %while.body.i.i21.i.i.i.i281 tail call void @llvm.amdgcn.s.sleep(i32 2) %571 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i282 = getelementptr inbounds nuw i32, ptr %571, i64 %idxprom.i23.i.i.i.i.i270, !amdgpu.uniform !42 %572 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i282 monotonic, align 4 %573 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %572) %cmp.i.not.i.i23.i.i.i.i283 = icmp eq i32 %573, %port.sroa.37.0.i.i274 br i1 %cmp.i.not.i.i23.i.i.i.i283, label %Flow3676, label %while.body.i.i21.i.i.i.i281, !amdgpu.uniform !42 Flow3676: ; preds = %while.body.i.i21.i.i.i.i281 br label %Flow3677, !amdgpu.uniform !42 Flow3678: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i285, %while.cond.i.i.i.i273 %574 = phi i64 [ %add.i.i.i.i288, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i285 ], [ poison, %while.cond.i.i.i.i273 ] %575 = phi i32 [ %conv.i.i26.i.i.i.i286, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i285 ], [ poison, %while.cond.i.i.i.i273 ] %576 = phi ptr addrspace(4) [ %scevgep3123, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i285 ], [ poison, %while.cond.i.i.i.i273 ] %577 = phi i64 [ %lsr.iv.next3128, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i285 ], [ poison, %while.cond.i.i.i.i273 ] %578 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i285 ], [ true, %while.cond.i.i.i.i273 ] call void @llvm.amdgcn.end.cf.i64(i64 %568) %579 = call i64 @llvm.amdgcn.if.break.i64(i1 %578, i64 %phi.broken3790) %580 = call i1 @llvm.amdgcn.loop.i64(i64 %579) br i1 %580, label %cond.false.i.i.i295, label %while.cond.i.i.i.i273 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i284: ; preds = %Flow3677 fence acquire br i1 %cmp.i.i.i.i276, label %if.then.i.i.i.i.i.i.i289, label %Flow3675, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i289: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i284 %sub.i.i.i.i.i.i.i291 = sub nuw i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.7.11 to ptr), i64 10) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.7.11 to ptr) to i64)), %idx.0.i.i.i.i275 %spec.select.i.i.i36.i.i.i.i292 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i291, i64 64) %581 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %582 = and i64 %spec.select.i.i.i36.i.i.i.i292, 15 %583 = sub i64 %spec.select.i.i.i36.i.i.i.i292, %582 %584 = icmp ne i64 %583, 0 br i1 %584, label %loop-memcpy-expansion2339.preheader, label %Flow3674, !amdgpu.uniform !42 loop-memcpy-expansion2339.preheader: ; preds = %if.then.i.i.i.i.i.i.i289 %arrayidx.i20.i35.i.i.i.i293 = getelementptr %"struct.rpc::Buffer", ptr %581, i64 %idxprom.i19.i.i.i.i.i263 %arrayidx.i22.i38.i.i.i.i294 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i293, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2339, !amdgpu.uniform !42 Flow3674: ; preds = %Flow3673, %if.then.i.i.i.i.i.i.i289 br label %loop-memcpy-residual-header2342, !amdgpu.uniform !42 loop-memcpy-expansion2339: ; preds = %loop-memcpy-expansion2339.preheader, %loop-memcpy-expansion2339 %loop-index2340 = phi i64 [ %587, %loop-memcpy-expansion2339 ], [ 0, %loop-memcpy-expansion2339.preheader ] %scevgep3124 = getelementptr i8, ptr addrspace(4) %lsr.iv3122, i64 %loop-index2340, !amdgpu.uniform !42 %585 = load <4 x i32>, ptr addrspace(4) %scevgep3124, align 1 %586 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i294, i64 %loop-index2340 store <4 x i32> %585, ptr %586, align 1 %587 = add i64 %loop-index2340, 16 %588 = icmp uge i64 %587, %583 br i1 %588, label %Flow3673, label %loop-memcpy-expansion2339, !amdgpu.uniform !42 Flow3672: ; preds = %Flow3671, %loop-memcpy-residual-header2342 br label %Flow3675, !amdgpu.uniform !42 loop-memcpy-residual2341: ; preds = %loop-memcpy-residual2341.preheader, %loop-memcpy-residual2341 %residual-loop-index2343 = phi i64 [ %590, %loop-memcpy-residual2341 ], [ 0, %loop-memcpy-residual2341.preheader ] %scevgep3133 = getelementptr i8, ptr addrspace(4) %scevgep3132, i64 %residual-loop-index2343, !amdgpu.uniform !42 %589 = load i8, ptr addrspace(4) %scevgep3133, align 1 %scevgep3131 = getelementptr i8, ptr %scevgep3130, i64 %residual-loop-index2343 store i8 %589, ptr %scevgep3131, align 1 %590 = add i64 %residual-loop-index2343, 1 %591 = icmp uge i64 %590, %582 br i1 %591, label %Flow3671, label %loop-memcpy-residual2341, !amdgpu.uniform !42 Flow3671: ; preds = %loop-memcpy-residual2341 br label %Flow3672, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i285: ; preds = %Flow3675 %conv.i.i26.i.i.i.i286 = xor i32 %port.sroa.37.0.i.i274, 1 fence release %592 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i287 = getelementptr inbounds nuw i32, ptr %592, i64 %idxprom.i23.i.i.i.i.i270 store atomic i32 %conv.i.i26.i.i.i.i286, ptr %arrayidx.i24.i29.i.i.i.i287 monotonic, align 4 %add.i.i.i.i288 = add i64 %idx.0.i.i.i.i275, 64 %scevgep3123 = getelementptr i8, ptr addrspace(4) %lsr.iv3122, i64 64 %lsr.iv.next3128 = add i64 %lsr.iv3127, -64 br label %Flow3678, !amdgpu.uniform !42 cond.false.i.i.i295: ; preds = %Flow3678 %.lcssa4042 = phi i64 [ %579, %Flow3678 ] %port.sroa.37.0.i.i274.lcssa = phi i32 [ %port.sroa.37.0.i.i274, %Flow3678 ] %.lcssa4041 = phi i32 [ %565, %Flow3678 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4042) %593 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa4041) %594 = icmp ne i32 %593, %port.sroa.37.0.i.i274.lcssa %595 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %594) %596 = extractvalue { i1, i64 } %595, 0 %597 = extractvalue { i1, i64 } %595, 1 br i1 %596, label %while.body.i.i.i.i296.preheader, label %Flow3670 while.body.i.i.i.i296.preheader: ; preds = %cond.false.i.i.i295 br label %while.body.i.i.i.i296, !amdgpu.uniform !42 Flow3670: ; preds = %Flow3669, %cond.false.i.i.i295 call void @llvm.amdgcn.end.cf.i64(i64 %597) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit317, !amdgpu.uniform !42 while.body.i.i.i.i296: ; preds = %while.body.i.i.i.i296.preheader, %while.body.i.i.i.i296 %phi.broken3791 = phi i64 [ 0, %while.body.i.i.i.i296.preheader ], [ %601, %while.body.i.i.i.i296 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %598 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i297 = getelementptr inbounds nuw i32, ptr %598, i64 %idxprom.i23.i.i.i.i.i270, !amdgpu.uniform !42 %599 = load atomic i32, ptr %arrayidx.i.i.i8.i.i297 monotonic, align 4 %600 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %599) %cmp.i.not.i.i.i.i298 = icmp eq i32 %600, %port.sroa.37.0.i.i274.lcssa %601 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i298, i64 %phi.broken3791) %602 = call i1 @llvm.amdgcn.loop.i64(i64 %601) br i1 %602, label %Flow3669, label %while.body.i.i.i.i296 Flow3669: ; preds = %while.body.i.i.i.i296 %.lcssa4040 = phi i64 [ %601, %while.body.i.i.i.i296 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4040) br label %Flow3670, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit317: ; preds = %Flow3670 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %603 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4047, i1 true) %iszero.i.i.i.i.i13.i.i300 = icmp ne i64 %.lcssa4047, 0 %cmp2.i.i.i.i14.i.i301 = icmp eq i64 %603, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i302 = select i1 %iszero.i.i.i.i.i13.i.i300, i1 %cmp2.i.i.i.i14.i.i301, i1 false %604 = and i32 %.lcssa4048, 31 %conv4.i.i.i19.i.i306 = zext i1 %cmp.i.i.i.i15.i.i302 to i32 %shl.i.i.i20.i.i307 = shl nuw i32 %conv4.i.i.i19.i.i306, %604 %xor.i.i.i21.i.i308 = xor i32 %shl.i.i.i20.i.i307, -1 %605 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2459, !amdgpu.uniform !42 606: ; preds = %ComputeEnd2460 %div8.i.i.i16.i.i303 = lshr i32 %.lcssa4048, 5 %idxprom.i.i.i17.i.i304 = zext nneg i32 %div8.i.i.i16.i.i303 to i64 %607 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i304 %sunkaddr3248 = getelementptr inbounds i8, ptr addrspace(1) %607, i64 40 %608 = atomicrmw and ptr addrspace(1) %sunkaddr3248, i32 %.lcssa4039 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %609, !amdgpu.uniform !42 609: ; preds = %606, %ComputeEnd2460 call void @llvm.amdgcn.end.cf.i64(i64 %2959) tail call void @llvm.amdgcn.wave.barrier() %inc.i.i.i34.i = add nuw i64 %spec.select.i, 1 %cmp2.i.i.i37.i = icmp ult i64 %spec.select.i, 1676976733973595600 br i1 %cmp2.i.i.i37.i, label %if.then3.i.i.i46.i, label %if.end4.i.i.i38.i, !amdgpu.uniform !42 if.then3.i.i.i46.i: ; preds = %609 %mul.i.i.i47.i = mul nuw i64 %inc.i.i.i34.i, 11 %div18.i.i.i48.i = lshr i64 %mul.i.i.i47.i, 3 br label %if.end4.i.i.i38.i, !amdgpu.uniform !42 if.end4.i.i.i38.i: ; preds = %if.then3.i.i.i46.i, %609 %new_capacity.addr.0.i.i.i39.i = phi i64 [ %div18.i.i.i48.i, %if.then3.i.i.i46.i ], [ %inc.i.i.i34.i, %609 ] %sub.i.i318 = add i64 %new_capacity.addr.0.i.i.i39.i, 7 %div2.i.i319 = and i64 %sub.i.i318, -8 %610 = load ptr, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %add.ptr.i.i320 = getelementptr inbounds nuw i8, ptr %610, i64 %div2.i.i319 store ptr %add.ptr.i.i320, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %611 = and i64 %spec.select.i, 15 %612 = sub i64 %spec.select.i, %611 %613 = icmp ne i64 %612, 0 br i1 %613, label %loop-memcpy-expansion2285.preheader, label %Flow3668, !amdgpu.uniform !42 loop-memcpy-expansion2285.preheader: ; preds = %if.end4.i.i.i38.i br label %loop-memcpy-expansion2285, !amdgpu.uniform !42 Flow3668: ; preds = %Flow3667, %if.end4.i.i.i38.i br label %loop-memcpy-residual-header2288, !amdgpu.uniform !42 loop-memcpy-expansion2285: ; preds = %loop-memcpy-expansion2285.preheader, %loop-memcpy-expansion2285 %loop-index2286 = phi i64 [ %617, %loop-memcpy-expansion2285 ], [ 0, %loop-memcpy-expansion2285.preheader ] %614 = getelementptr i8, ptr %4, i64 %loop-index2286, !amdgpu.uniform !42 %615 = load <4 x i32>, ptr %614, align 1 %616 = getelementptr i8, ptr %610, i64 %loop-index2286 store <4 x i32> %615, ptr %616, align 1 %617 = add i64 %loop-index2286, 16 %618 = icmp uge i64 %617, %612 br i1 %618, label %Flow3667, label %loop-memcpy-expansion2285, !amdgpu.uniform !42 Flow3666: ; preds = %Flow3665, %loop-memcpy-residual-header2288 br label %post-loop-memcpy-expansion2284, !amdgpu.uniform !42 loop-memcpy-residual2287: ; preds = %loop-memcpy-residual2287.preheader, %loop-memcpy-residual2287 %residual-loop-index2289 = phi i64 [ %620, %loop-memcpy-residual2287 ], [ 0, %loop-memcpy-residual2287.preheader ] %scevgep3121 = getelementptr i8, ptr %scevgep3120, i64 %residual-loop-index2289, !amdgpu.uniform !42 %619 = load i8, ptr %scevgep3121, align 1 %scevgep3119 = getelementptr i8, ptr %scevgep3118, i64 %residual-loop-index2289 store i8 %619, ptr %scevgep3119, align 1 %620 = add i64 %residual-loop-index2289, 1 %621 = icmp uge i64 %620, %611 br i1 %621, label %Flow3665, label %loop-memcpy-residual2287, !amdgpu.uniform !42 Flow3665: ; preds = %loop-memcpy-residual2287 br label %Flow3666, !amdgpu.uniform !42 post-loop-memcpy-expansion2284: ; preds = %Flow3666 %sub.ptr.lhs.cast.i.i321 = ptrtoint ptr %add.ptr.i.i320 to i64 %sub.ptr.sub.i.i322 = sub i64 %sub.ptr.lhs.cast.i.i321, ptrtoint (ptr addrspacecast (ptr addrspace(1) @_ZN12_GLOBAL__N_16memoryE to ptr) to i64) %cmp.i.i323 = icmp ugt i64 %sub.ptr.sub.i.i322, 65335 %cond.i.i324 = select i1 %cmp.i.i323, ptr null, ptr %610 %cmp.not.i10.i.i.i = icmp ne ptr %cond.i.i324, addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr) br i1 %cmp.not.i10.i.i.i, label %if.then.i.i.i44.i, label %for.cond.i.i.i326.preheader, !amdgpu.uniform !42 if.then.i.i.i44.i: ; preds = %post-loop-memcpy-expansion2284 %arrayidx.i.i.i45.i = getelementptr inbounds nuw i8, ptr %610, i64 %spec.select.i store i8 0, ptr %arrayidx.i.i.i45.i, align 1, !tbaa !57 br label %for.cond.i.i.i326.preheader, !amdgpu.uniform !42 for.cond.i.i.i326.preheader: ; preds = %if.then.i.i.i44.i, %post-loop-memcpy-expansion2284 br label %for.cond.i.i.i326, !amdgpu.uniform !42 for.cond.i.i.i326: ; preds = %for.cond.i.i.i326.preheader, %Flow3664 %622 = phi i32 [ %660, %Flow3664 ], [ poison, %for.cond.i.i.i326.preheader ] %623 = phi i64 [ %661, %Flow3664 ], [ poison, %for.cond.i.i.i326.preheader ] %624 = phi i32 [ %662, %Flow3664 ], [ poison, %for.cond.i.i.i326.preheader ] %retval.sroa.6.0.i.i.i327 = phi i32 [ %665, %Flow3664 ], [ undef, %for.cond.i.i.i326.preheader ] %retval.sroa.2.0.i.i.i329 = phi i64 [ %664, %Flow3664 ], [ undef, %for.cond.i.i.i326.preheader ] %retval.sroa.8.0.i.i.i330 = phi i32 [ %663, %Flow3664 ], [ undef, %for.cond.i.i.i326.preheader ] %index.0.i.i.i331 = phi i32 [ %667, %Flow3664 ], [ 0, %for.cond.i.i.i326.preheader ] %625 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i332 = icmp ult i32 %index.0.i.i.i331, %625 %spec.store.select.i.i.i333 = select i1 %cmp.not.i.i.i332, i32 %index.0.i.i.i331, i32 0 %626 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %627 = and i32 %spec.store.select.i.i.i333, 31 %628 = lshr i64 %626, %sh_prom.i.i.i.i %629 = trunc i64 %628 to i32 %conv4.i.i.i.i.i337 = and i32 %629, 1 %shl.i.i.i.i.i338 = shl nuw i32 %conv4.i.i.i.i.i337, %627 %630 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2463, !amdgpu.uniform !42 631: ; preds = %ComputeEnd2464 %sunkaddr3249 = getelementptr inbounds i8, ptr addrspace(1) %2969, i64 40 %632 = atomicrmw or ptr addrspace(1) %sunkaddr3249, i32 %.lcssa4033 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %633, !amdgpu.uniform !42 633: ; preds = %631, %ComputeEnd2464 %634 = phi i32 [ %632, %631 ], [ poison, %ComputeEnd2464 ] call void @llvm.amdgcn.end.cf.i64(i64 %2978) %635 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %634) %636 = or i32 %635, %.lcssa4034 %shl5.i.i.i.i.i339 = shl nuw i32 1, %627 %and.i.i.i.i.i340 = and i32 %shl5.i.i.i.i.i339, %636 %tobool3.i.i.i.i341 = icmp ne i32 %and.i.i.i.i.i340, 0 %637 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i341) %and.i.i.i.i.i.i342 = and i64 %637, %626 %cmp.i.not.i.i.i343 = icmp ne i64 %626, %and.i.i.i.i.i.i342 br i1 %cmp.i.not.i.i.i343, label %if.then.i.i.i.i344, label %Flow3663, !amdgpu.uniform !42 if.then.i.i.i.i344: ; preds = %633 fence syncscope("agent") acquire %638 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %639 = extractelement <2 x i64> %638, i32 0 %640 = inttoptr i64 %639 to ptr %641 = extractelement <2 x i64> %638, i32 1 %642 = inttoptr i64 %641 to ptr %idxprom.i.i.i.i345 = zext i32 %spec.store.select.i.i.i333 to i64 %arrayidx.i.i.i.i346 = getelementptr inbounds nuw i32, ptr %640, i64 %idxprom.i.i.i.i345, !amdgpu.uniform !42 %643 = load atomic i32, ptr %arrayidx.i.i.i.i346 monotonic, align 4 %644 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %643) %arrayidx.i45.i.i.i347 = getelementptr inbounds nuw i32, ptr %642, i64 %idxprom.i.i.i.i345, !amdgpu.uniform !42 %645 = load atomic i32, ptr %arrayidx.i45.i.i.i347 monotonic, align 4 %646 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %645) %cmp.i46.not.i.i.i348 = icmp ne i32 %644, %646 br i1 %cmp.i46.not.i.i.i348, label %if.then12.i.i.i349, label %Flow3661, !amdgpu.uniform !42 if.then12.i.i.i349: ; preds = %if.then.i.i.i.i344 fence syncscope("agent") release %647 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %626, i1 true) %iszero.i.i.i.i.i.i.i350 = icmp ne i64 %626, 0 %cmp2.i.i.i.i.i.i351 = icmp eq i64 %647, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i352 = select i1 %iszero.i.i.i.i.i.i.i350, i1 %cmp2.i.i.i.i.i.i351, i1 false %conv4.i.i51.i.i.i353 = zext i1 %cmp.i.i.i.i.i.i352 to i32 %shl.i.i52.i.i.i354 = shl nuw i32 %conv4.i.i51.i.i.i353, %627 %xor.i.i.i.i.i355 = xor i32 %shl.i.i52.i.i.i354, -1 %648 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2468, !amdgpu.uniform !42 649: ; preds = %ComputeEnd2469 %sunkaddr3250 = getelementptr inbounds i8, ptr addrspace(1) %2969, i64 40 %650 = atomicrmw and ptr addrspace(1) %sunkaddr3250, i32 %.lcssa4035 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %651, !amdgpu.uniform !42 651: ; preds = %649, %ComputeEnd2469 call void @llvm.amdgcn.end.cf.i64(i64 %2996) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3661, !amdgpu.uniform !42 if.end14.i.i.i415: ; preds = %Flow3661 %652 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %626, i1 true) %iszero.i.i.i.i.i.i416 = icmp ne i64 %626, 0 %cmp2.i.i.i.i.i417 = icmp eq i64 %652, %sh_prom.i.i.i.i %cmp.i.i.i.i.i418 = select i1 %iszero.i.i.i.i.i.i416, i1 %cmp2.i.i.i.i.i417, i1 false %653 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i418) %654 = extractvalue { i1, i64 } %653, 0 %655 = extractvalue { i1, i64 } %653, 1 br i1 %654, label %if.then16.i.i.i420, label %if.end22.i.i.i419 if.then16.i.i.i420: ; preds = %if.end14.i.i.i415 %656 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i421 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %656, i64 %idxprom.i.i.i.i345, i32 1 store i32 1660944387, ptr %opcode.i.i.i421, align 8, !tbaa !77 %arrayidx21.i.i.i422 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %656, i64 %idxprom.i.i.i.i345 store i64 %626, ptr %arrayidx21.i.i.i422, align 8, !tbaa !80 br label %if.end22.i.i.i419, !amdgpu.uniform !42 Flow3662: ; preds = %if.end22.i.i.i419, %Flow3661 %657 = phi i32 [ %644, %if.end22.i.i.i419 ], [ %retval.sroa.8.0.i.i.i330, %Flow3661 ] %658 = phi i64 [ %626, %if.end22.i.i.i419 ], [ %retval.sroa.2.0.i.i.i329, %Flow3661 ] %659 = phi i32 [ %spec.store.select.i.i.i333, %if.end22.i.i.i419 ], [ %retval.sroa.6.0.i.i.i327, %Flow3661 ] br label %cleanup26.i.i.i356, !amdgpu.uniform !42 if.end22.i.i.i419: ; preds = %if.then16.i.i.i420, %if.end14.i.i.i415 call void @llvm.amdgcn.end.cf.i64(i64 %655) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3662, !amdgpu.uniform !42 Flow3663: ; preds = %cleanup26.i.i.i356, %633 %660 = phi i32 [ %659, %cleanup26.i.i.i356 ], [ %622, %633 ] %661 = phi i64 [ %658, %cleanup26.i.i.i356 ], [ %623, %633 ] %662 = phi i32 [ %657, %cleanup26.i.i.i356 ], [ %624, %633 ] %663 = phi i32 [ %657, %cleanup26.i.i.i356 ], [ %retval.sroa.8.0.i.i.i330, %633 ] %664 = phi i64 [ %658, %cleanup26.i.i.i356 ], [ %retval.sroa.2.0.i.i.i329, %633 ] %665 = phi i32 [ %659, %cleanup26.i.i.i356 ], [ %retval.sroa.6.0.i.i.i327, %633 ] %666 = phi i1 [ %cmp.i46.not.i.i.i348, %cleanup26.i.i.i356 ], [ true, %633 ] br i1 %666, label %for.inc.i.i.i361, label %Flow3664, !amdgpu.uniform !42 cleanup26.i.i.i356: ; preds = %Flow3662 br label %Flow3663, !amdgpu.uniform !42 for.inc.i.i.i361: ; preds = %Flow3663 %inc.i.i.i366 = add i32 %spec.store.select.i.i.i333, 1 br label %Flow3664, !amdgpu.uniform !42 Flow3664: ; preds = %for.inc.i.i.i361, %Flow3663 %667 = phi i32 [ %inc.i.i.i366, %for.inc.i.i.i361 ], [ poison, %Flow3663 ] %668 = phi i1 [ false, %for.inc.i.i.i361 ], [ true, %Flow3663 ] br i1 %668, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i367, label %for.cond.i.i.i326, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i367: ; preds = %Flow3664 %.lcssa4038 = phi i32 [ %660, %Flow3664 ] %.lcssa4037 = phi i64 [ %661, %Flow3664 ] %.lcssa4036 = phi i32 [ %662, %Flow3664 ] fence acquire %669 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i368 = shl i32 %.lcssa4038, 6 %idxprom.i19.i.i.i.i.i369 = zext i32 %mul.i.i.i.i.i.i368 to i64 %arrayidx.i20.i.i.i.i.i370 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %669, i64 %idxprom.i19.i.i.i.i.i369 %arrayidx.i22.i.i.i.i.i371 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i370, i64 %sh_prom.i.i.i.i store i64 %spec.select.i, ptr %arrayidx.i22.i.i.i.i.i371, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i372 = tail call i64 @llvm.umin.i64(i64 %spec.select.i, i64 56) %670 = and i64 %spec.select.i.i.i.i.i.i.i372, 15 %671 = sub i64 %spec.select.i.i.i.i.i.i.i372, %670 %672 = icmp ne i64 %671, 0 br i1 %672, label %loop-memcpy-expansion2255.preheader, label %Flow3660, !amdgpu.uniform !42 loop-memcpy-expansion2255.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i367 %673 = add nuw nsw i64 %76, 8 %scevgep3115 = getelementptr i8, ptr %669, i64 %673 %674 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i369, 6 %scevgep3116 = getelementptr i8, ptr %scevgep3115, i64 %674 br label %loop-memcpy-expansion2255, !amdgpu.uniform !42 Flow3660: ; preds = %Flow3659, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i367 br label %loop-memcpy-residual-header2258, !amdgpu.uniform !42 loop-memcpy-expansion2255: ; preds = %loop-memcpy-expansion2255.preheader, %loop-memcpy-expansion2255 %loop-index2256 = phi i64 [ %677, %loop-memcpy-expansion2255 ], [ 0, %loop-memcpy-expansion2255.preheader ] %675 = getelementptr i8, ptr %610, i64 %loop-index2256, !amdgpu.uniform !42 %676 = load <4 x i32>, ptr %675, align 1 %scevgep3117 = getelementptr i8, ptr %scevgep3116, i64 %loop-index2256 store <4 x i32> %676, ptr %scevgep3117, align 1 %677 = add i64 %loop-index2256, 16 %678 = icmp uge i64 %677, %671 br i1 %678, label %Flow3659, label %loop-memcpy-expansion2255, !amdgpu.uniform !42 Flow3658: ; preds = %Flow3656, %Flow3657 %679 = phi i64 [ %2625, %Flow3656 ], [ %2621, %Flow3657 ] br label %post-loop-memcpy-expansion2254, !amdgpu.uniform !42 loop-memcpy-residual2257: ; preds = %loop-memcpy-residual2257.preheader, %loop-memcpy-residual2257 %residual-loop-index2259 = phi i64 [ %681, %loop-memcpy-residual2257 ], [ 0, %loop-memcpy-residual2257.preheader ] %scevgep3114 = getelementptr i8, ptr %scevgep3113, i64 %residual-loop-index2259, !amdgpu.uniform !42 %680 = load i8, ptr %scevgep3114, align 1 %scevgep3112 = getelementptr i8, ptr %scevgep3111, i64 %residual-loop-index2259 store i8 %680, ptr %scevgep3112, align 1 %681 = add i64 %residual-loop-index2259, 1 %682 = icmp uge i64 %681, %670 br i1 %682, label %Flow3656, label %loop-memcpy-residual2257, !amdgpu.uniform !42 Flow3656: ; preds = %loop-memcpy-residual2257 br label %Flow3658, !amdgpu.uniform !42 post-loop-memcpy-expansion2254: ; preds = %Flow3658 %tobool.not.i.i.i.i.i.i374 = icmp eq i32 %.lcssa4036, 0 %conv.i.i.i.i.i.i375 = zext i1 %tobool.not.i.i.i.i.i.i374 to i32 fence release %683 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i376 = zext i32 %.lcssa4038 to i64 %arrayidx.i24.i.i.i.i.i377 = getelementptr inbounds nuw i32, ptr %683, i64 %idxprom.i23.i.i.i.i.i376 store atomic i32 %conv.i.i.i.i.i.i375, ptr %arrayidx.i24.i.i.i.i.i377 monotonic, align 4 %684 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i378 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %684, i64 %idxprom.i23.i.i.i.i.i376, !amdgpu.uniform !42 %685 = load i64, ptr %arrayidx.i.i5.i.i378, align 8, !tbaa !80 %scevgep3096 = getelementptr i8, ptr %610, i64 56 %umin3102 = call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.9, i64 8) to ptr) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.9 to ptr) to i64)), i64 2) %686 = sub i64 sub (i64 add (i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.9, i64 8) to ptr) to i64), i64 -56), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.9 to ptr) to i64)), %umin3102 br label %while.cond.i.i.i.i379, !amdgpu.uniform !42 while.cond.i.i.i.i379: ; preds = %post-loop-memcpy-expansion2254, %Flow3655 %phi.broken3792 = phi i64 [ 0, %post-loop-memcpy-expansion2254 ], [ %703, %Flow3655 ] %lsr.iv3103 = phi i64 [ %701, %Flow3655 ], [ %686, %post-loop-memcpy-expansion2254 ] %lsr.iv3097 = phi ptr [ %700, %Flow3655 ], [ %scevgep3096, %post-loop-memcpy-expansion2254 ] %port.sroa.37.0.i.i380 = phi i32 [ %699, %Flow3655 ], [ %conv.i.i.i.i.i.i375, %post-loop-memcpy-expansion2254 ] %idx.0.i.i.i.i381 = phi i64 [ %698, %Flow3655 ], [ 56, %post-loop-memcpy-expansion2254 ] %cmp.i.i.i.i382 = icmp ugt i64 %spec.select.i, %idx.0.i.i.i.i381 %687 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i382) %and.i.i.i.i6.i.i383 = and i64 %687, %685 %tobool.not.i.i.i.i384 = icmp ne i64 %and.i.i.i.i6.i.i383, 0 %688 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i385 = getelementptr inbounds nuw i32, ptr %688, i64 %idxprom.i23.i.i.i.i.i376, !amdgpu.uniform !42 %689 = load atomic i32, ptr %arrayidx.i22.i.i.i385 monotonic, align 4 %690 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i384) %691 = extractvalue { i1, i64 } %690, 0 %692 = extractvalue { i1, i64 } %690, 1 br i1 %691, label %cond.false.i8.i.i.i.i386, label %Flow3655 cond.false.i8.i.i.i.i386: ; preds = %while.cond.i.i.i.i379 %693 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %689) %694 = icmp ne i32 %693, %port.sroa.37.0.i.i380 br i1 %694, label %while.body.i.i21.i.i.i.i387.preheader, label %Flow3654, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i387.preheader: ; preds = %cond.false.i8.i.i.i.i386 br label %while.body.i.i21.i.i.i.i387, !amdgpu.uniform !42 Flow3654: ; preds = %Flow3653, %cond.false.i8.i.i.i.i386 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i390, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i387: ; preds = %while.body.i.i21.i.i.i.i387.preheader, %while.body.i.i21.i.i.i.i387 tail call void @llvm.amdgcn.s.sleep(i32 2) %695 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i388 = getelementptr inbounds nuw i32, ptr %695, i64 %idxprom.i23.i.i.i.i.i376, !amdgpu.uniform !42 %696 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i388 monotonic, align 4 %697 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %696) %cmp.i.not.i.i23.i.i.i.i389 = icmp eq i32 %697, %port.sroa.37.0.i.i380 br i1 %cmp.i.not.i.i23.i.i.i.i389, label %Flow3653, label %while.body.i.i21.i.i.i.i387, !amdgpu.uniform !42 Flow3653: ; preds = %while.body.i.i21.i.i.i.i387 br label %Flow3654, !amdgpu.uniform !42 Flow3655: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i391, %while.cond.i.i.i.i379 %698 = phi i64 [ %add.i.i.i.i394, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i391 ], [ poison, %while.cond.i.i.i.i379 ] %699 = phi i32 [ %conv.i.i26.i.i.i.i392, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i391 ], [ poison, %while.cond.i.i.i.i379 ] %700 = phi ptr [ %scevgep3098, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i391 ], [ poison, %while.cond.i.i.i.i379 ] %701 = phi i64 [ %lsr.iv.next3104, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i391 ], [ poison, %while.cond.i.i.i.i379 ] %702 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i391 ], [ true, %while.cond.i.i.i.i379 ] call void @llvm.amdgcn.end.cf.i64(i64 %692) %703 = call i64 @llvm.amdgcn.if.break.i64(i1 %702, i64 %phi.broken3792) %704 = call i1 @llvm.amdgcn.loop.i64(i64 %703) br i1 %704, label %cond.false.i.i.i401, label %while.cond.i.i.i.i379 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i390: ; preds = %Flow3654 fence acquire br i1 %cmp.i.i.i.i382, label %if.then.i.i.i.i.i.i.i395, label %Flow3652, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i395: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i390 %sub.i.i.i.i.i.i.i397 = sub nuw i64 %spec.select.i, %idx.0.i.i.i.i381 %spec.select.i.i.i36.i.i.i.i398 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i397, i64 64) %705 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %706 = and i64 %spec.select.i.i.i36.i.i.i.i398, 15 %707 = sub i64 %spec.select.i.i.i36.i.i.i.i398, %706 %708 = icmp ne i64 %707, 0 br i1 %708, label %loop-memcpy-expansion2249.preheader, label %Flow3651, !amdgpu.uniform !42 loop-memcpy-expansion2249.preheader: ; preds = %if.then.i.i.i.i.i.i.i395 %arrayidx.i20.i35.i.i.i.i399 = getelementptr %"struct.rpc::Buffer", ptr %705, i64 %idxprom.i19.i.i.i.i.i369 %arrayidx.i22.i38.i.i.i.i400 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i399, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2249, !amdgpu.uniform !42 Flow3651: ; preds = %Flow3650, %if.then.i.i.i.i.i.i.i395 br label %loop-memcpy-residual-header2252, !amdgpu.uniform !42 loop-memcpy-expansion2249: ; preds = %loop-memcpy-expansion2249.preheader, %loop-memcpy-expansion2249 %loop-index2250 = phi i64 [ %711, %loop-memcpy-expansion2249 ], [ 0, %loop-memcpy-expansion2249.preheader ] %scevgep3099 = getelementptr i8, ptr %lsr.iv3097, i64 %loop-index2250, !amdgpu.uniform !42 %709 = load <4 x i32>, ptr %scevgep3099, align 1 %710 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i400, i64 %loop-index2250 store <4 x i32> %709, ptr %710, align 1 %711 = add i64 %loop-index2250, 16 %712 = icmp uge i64 %711, %707 br i1 %712, label %Flow3650, label %loop-memcpy-expansion2249, !amdgpu.uniform !42 Flow3649: ; preds = %Flow3648, %loop-memcpy-residual-header2252 br label %Flow3652, !amdgpu.uniform !42 loop-memcpy-residual2251: ; preds = %loop-memcpy-residual2251.preheader, %loop-memcpy-residual2251 %residual-loop-index2253 = phi i64 [ %714, %loop-memcpy-residual2251 ], [ 0, %loop-memcpy-residual2251.preheader ] %scevgep3109 = getelementptr i8, ptr %scevgep3108, i64 %residual-loop-index2253, !amdgpu.uniform !42 %713 = load i8, ptr %scevgep3109, align 1 %scevgep3107 = getelementptr i8, ptr %scevgep3106, i64 %residual-loop-index2253 store i8 %713, ptr %scevgep3107, align 1 %714 = add i64 %residual-loop-index2253, 1 %715 = icmp uge i64 %714, %706 br i1 %715, label %Flow3648, label %loop-memcpy-residual2251, !amdgpu.uniform !42 Flow3648: ; preds = %loop-memcpy-residual2251 br label %Flow3649, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i391: ; preds = %Flow3652 %conv.i.i26.i.i.i.i392 = xor i32 %port.sroa.37.0.i.i380, 1 fence release %716 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i393 = getelementptr inbounds nuw i32, ptr %716, i64 %idxprom.i23.i.i.i.i.i376 store atomic i32 %conv.i.i26.i.i.i.i392, ptr %arrayidx.i24.i29.i.i.i.i393 monotonic, align 4 %add.i.i.i.i394 = add i64 %idx.0.i.i.i.i381, 64 %scevgep3098 = getelementptr i8, ptr %lsr.iv3097, i64 64 %lsr.iv.next3104 = add i64 %lsr.iv3103, -64 br label %Flow3655, !amdgpu.uniform !42 cond.false.i.i.i401: ; preds = %Flow3655 %.lcssa4032 = phi i64 [ %703, %Flow3655 ] %port.sroa.37.0.i.i380.lcssa = phi i32 [ %port.sroa.37.0.i.i380, %Flow3655 ] %.lcssa4031 = phi i32 [ %689, %Flow3655 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4032) %717 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa4031) %718 = icmp ne i32 %717, %port.sroa.37.0.i.i380.lcssa %719 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %718) %720 = extractvalue { i1, i64 } %719, 0 %721 = extractvalue { i1, i64 } %719, 1 br i1 %720, label %while.body.i.i.i.i402.preheader, label %Flow3647 while.body.i.i.i.i402.preheader: ; preds = %cond.false.i.i.i401 br label %while.body.i.i.i.i402, !amdgpu.uniform !42 Flow3647: ; preds = %Flow3646, %cond.false.i.i.i401 call void @llvm.amdgcn.end.cf.i64(i64 %721) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit, !amdgpu.uniform !42 while.body.i.i.i.i402: ; preds = %while.body.i.i.i.i402.preheader, %while.body.i.i.i.i402 %phi.broken3793 = phi i64 [ 0, %while.body.i.i.i.i402.preheader ], [ %725, %while.body.i.i.i.i402 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %722 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i403 = getelementptr inbounds nuw i32, ptr %722, i64 %idxprom.i23.i.i.i.i.i376, !amdgpu.uniform !42 %723 = load atomic i32, ptr %arrayidx.i.i.i8.i.i403 monotonic, align 4 %724 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %723) %cmp.i.not.i.i.i.i404 = icmp eq i32 %724, %port.sroa.37.0.i.i380.lcssa %725 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i404, i64 %phi.broken3793) %726 = call i1 @llvm.amdgcn.loop.i64(i64 %725) br i1 %726, label %Flow3646, label %while.body.i.i.i.i402 Flow3646: ; preds = %while.body.i.i.i.i402 %.lcssa4030 = phi i64 [ %725, %while.body.i.i.i.i402 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4030) br label %Flow3647, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit: ; preds = %Flow3647 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %727 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4037, i1 true) %iszero.i.i.i.i.i13.i.i406 = icmp ne i64 %.lcssa4037, 0 %cmp2.i.i.i.i14.i.i407 = icmp eq i64 %727, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i408 = select i1 %iszero.i.i.i.i.i13.i.i406, i1 %cmp2.i.i.i.i14.i.i407, i1 false %728 = and i32 %.lcssa4038, 31 %conv4.i.i.i19.i.i412 = zext i1 %cmp.i.i.i.i15.i.i408 to i32 %shl.i.i.i20.i.i413 = shl nuw i32 %conv4.i.i.i19.i.i412, %728 %xor.i.i.i21.i.i414 = xor i32 %shl.i.i.i20.i.i413, -1 %729 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2472, !amdgpu.uniform !42 730: ; preds = %ComputeEnd2473 %div8.i.i.i16.i.i409 = lshr i32 %.lcssa4038, 5 %idxprom.i.i.i17.i.i410 = zext nneg i32 %div8.i.i.i16.i.i409 to i64 %731 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i410 %sunkaddr3251 = getelementptr inbounds i8, ptr addrspace(1) %731, i64 40 %732 = atomicrmw and ptr addrspace(1) %sunkaddr3251, i32 %.lcssa4029 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %733, !amdgpu.uniform !42 733: ; preds = %730, %ComputeEnd2473 call void @llvm.amdgcn.end.cf.i64(i64 %3013) tail call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i1.i431, !amdgpu.uniform !42 for.cond.i.i1.i431: ; preds = %733, %Flow3645 %734 = phi i32 [ %772, %Flow3645 ], [ poison, %733 ] %735 = phi i64 [ %773, %Flow3645 ], [ poison, %733 ] %736 = phi i32 [ %774, %Flow3645 ], [ poison, %733 ] %retval.sroa.6.0.i.i.i432 = phi i32 [ %777, %Flow3645 ], [ undef, %733 ] %retval.sroa.2.0.i.i.i434 = phi i64 [ %776, %Flow3645 ], [ undef, %733 ] %retval.sroa.8.0.i.i.i435 = phi i32 [ %775, %Flow3645 ], [ undef, %733 ] %index.0.i.i.i436 = phi i32 [ %779, %Flow3645 ], [ 0, %733 ] %737 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i437 = icmp ult i32 %index.0.i.i.i436, %737 %spec.store.select.i.i.i438 = select i1 %cmp.not.i.i.i437, i32 %index.0.i.i.i436, i32 0 %738 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %739 = and i32 %spec.store.select.i.i.i438, 31 %740 = lshr i64 %738, %sh_prom.i.i.i.i %741 = trunc i64 %740 to i32 %conv4.i.i.i.i.i442 = and i32 %741, 1 %shl.i.i.i.i.i443 = shl nuw i32 %conv4.i.i.i.i.i442, %739 %742 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2476, !amdgpu.uniform !42 743: ; preds = %ComputeEnd2477 %sunkaddr3252 = getelementptr inbounds i8, ptr addrspace(1) %3023, i64 40 %744 = atomicrmw or ptr addrspace(1) %sunkaddr3252, i32 %.lcssa4023 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %745, !amdgpu.uniform !42 745: ; preds = %743, %ComputeEnd2477 %746 = phi i32 [ %744, %743 ], [ poison, %ComputeEnd2477 ] call void @llvm.amdgcn.end.cf.i64(i64 %3032) %747 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %746) %748 = or i32 %747, %.lcssa4024 %shl5.i.i.i.i.i444 = shl nuw i32 1, %739 %and.i.i.i.i.i445 = and i32 %shl5.i.i.i.i.i444, %748 %tobool3.i.i.i.i446 = icmp ne i32 %and.i.i.i.i.i445, 0 %749 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i446) %and.i.i.i.i.i.i447 = and i64 %749, %738 %cmp.i.not.i.i.i448 = icmp ne i64 %738, %and.i.i.i.i.i.i447 br i1 %cmp.i.not.i.i.i448, label %if.then.i.i.i.i449, label %Flow3644, !amdgpu.uniform !42 if.then.i.i.i.i449: ; preds = %745 fence syncscope("agent") acquire %750 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %751 = extractelement <2 x i64> %750, i32 0 %752 = inttoptr i64 %751 to ptr %753 = extractelement <2 x i64> %750, i32 1 %754 = inttoptr i64 %753 to ptr %idxprom.i.i.i.i450 = zext i32 %spec.store.select.i.i.i438 to i64 %arrayidx.i.i.i.i451 = getelementptr inbounds nuw i32, ptr %752, i64 %idxprom.i.i.i.i450, !amdgpu.uniform !42 %755 = load atomic i32, ptr %arrayidx.i.i.i.i451 monotonic, align 4 %756 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %755) %arrayidx.i45.i.i.i452 = getelementptr inbounds nuw i32, ptr %754, i64 %idxprom.i.i.i.i450, !amdgpu.uniform !42 %757 = load atomic i32, ptr %arrayidx.i45.i.i.i452 monotonic, align 4 %758 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %757) %cmp.i46.not.i.i.i453 = icmp ne i32 %756, %758 br i1 %cmp.i46.not.i.i.i453, label %if.then12.i.i.i454, label %Flow3642, !amdgpu.uniform !42 if.then12.i.i.i454: ; preds = %if.then.i.i.i.i449 fence syncscope("agent") release %759 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %738, i1 true) %iszero.i.i.i.i.i.i.i455 = icmp ne i64 %738, 0 %cmp2.i.i.i.i.i.i456 = icmp eq i64 %759, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i457 = select i1 %iszero.i.i.i.i.i.i.i455, i1 %cmp2.i.i.i.i.i.i456, i1 false %conv4.i.i51.i.i.i458 = zext i1 %cmp.i.i.i.i.i.i457 to i32 %shl.i.i52.i.i.i459 = shl nuw i32 %conv4.i.i51.i.i.i458, %739 %xor.i.i.i.i.i460 = xor i32 %shl.i.i52.i.i.i459, -1 %760 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2481, !amdgpu.uniform !42 761: ; preds = %ComputeEnd2482 %sunkaddr3253 = getelementptr inbounds i8, ptr addrspace(1) %3023, i64 40 %762 = atomicrmw and ptr addrspace(1) %sunkaddr3253, i32 %.lcssa4025 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %763, !amdgpu.uniform !42 763: ; preds = %761, %ComputeEnd2482 call void @llvm.amdgcn.end.cf.i64(i64 %3050) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3642, !amdgpu.uniform !42 if.end14.i.i.i520: ; preds = %Flow3642 %764 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %738, i1 true) %iszero.i.i.i.i.i.i521 = icmp ne i64 %738, 0 %cmp2.i.i.i.i.i522 = icmp eq i64 %764, %sh_prom.i.i.i.i %cmp.i.i.i.i.i523 = select i1 %iszero.i.i.i.i.i.i521, i1 %cmp2.i.i.i.i.i522, i1 false %765 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i523) %766 = extractvalue { i1, i64 } %765, 0 %767 = extractvalue { i1, i64 } %765, 1 br i1 %766, label %if.then16.i.i.i525, label %if.end22.i.i.i524 if.then16.i.i.i525: ; preds = %if.end14.i.i.i520 %768 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i526 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %768, i64 %idxprom.i.i.i.i450, i32 1 store i32 1660944387, ptr %opcode.i.i.i526, align 8, !tbaa !77 %arrayidx21.i.i.i527 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %768, i64 %idxprom.i.i.i.i450 store i64 %738, ptr %arrayidx21.i.i.i527, align 8, !tbaa !80 br label %if.end22.i.i.i524, !amdgpu.uniform !42 Flow3643: ; preds = %if.end22.i.i.i524, %Flow3642 %769 = phi i32 [ %756, %if.end22.i.i.i524 ], [ %retval.sroa.8.0.i.i.i435, %Flow3642 ] %770 = phi i64 [ %738, %if.end22.i.i.i524 ], [ %retval.sroa.2.0.i.i.i434, %Flow3642 ] %771 = phi i32 [ %spec.store.select.i.i.i438, %if.end22.i.i.i524 ], [ %retval.sroa.6.0.i.i.i432, %Flow3642 ] br label %cleanup26.i.i.i461, !amdgpu.uniform !42 if.end22.i.i.i524: ; preds = %if.then16.i.i.i525, %if.end14.i.i.i520 call void @llvm.amdgcn.end.cf.i64(i64 %767) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3643, !amdgpu.uniform !42 Flow3644: ; preds = %cleanup26.i.i.i461, %745 %772 = phi i32 [ %771, %cleanup26.i.i.i461 ], [ %734, %745 ] %773 = phi i64 [ %770, %cleanup26.i.i.i461 ], [ %735, %745 ] %774 = phi i32 [ %769, %cleanup26.i.i.i461 ], [ %736, %745 ] %775 = phi i32 [ %769, %cleanup26.i.i.i461 ], [ %retval.sroa.8.0.i.i.i435, %745 ] %776 = phi i64 [ %770, %cleanup26.i.i.i461 ], [ %retval.sroa.2.0.i.i.i434, %745 ] %777 = phi i32 [ %771, %cleanup26.i.i.i461 ], [ %retval.sroa.6.0.i.i.i432, %745 ] %778 = phi i1 [ %cmp.i46.not.i.i.i453, %cleanup26.i.i.i461 ], [ true, %745 ] br i1 %778, label %for.inc.i.i.i466, label %Flow3645, !amdgpu.uniform !42 cleanup26.i.i.i461: ; preds = %Flow3643 br label %Flow3644, !amdgpu.uniform !42 for.inc.i.i.i466: ; preds = %Flow3644 %inc.i.i.i471 = add i32 %spec.store.select.i.i.i438, 1 br label %Flow3645, !amdgpu.uniform !42 Flow3645: ; preds = %for.inc.i.i.i466, %Flow3644 %779 = phi i32 [ %inc.i.i.i471, %for.inc.i.i.i466 ], [ poison, %Flow3644 ] %780 = phi i1 [ false, %for.inc.i.i.i466 ], [ true, %Flow3644 ] br i1 %780, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i472, label %for.cond.i.i1.i431, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i472: ; preds = %Flow3645 %.lcssa4028 = phi i32 [ %772, %Flow3645 ] %.lcssa4027 = phi i64 [ %773, %Flow3645 ] %.lcssa4026 = phi i32 [ %774, %Flow3645 ] fence acquire %781 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i473 = shl i32 %.lcssa4028, 6 %idxprom.i19.i.i.i.i.i474 = zext i32 %mul.i.i.i.i.i.i473 to i64 %arrayidx.i20.i.i.i.i.i475 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %781, i64 %idxprom.i19.i.i.i.i.i474 %arrayidx.i22.i.i.i.i.i476 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i475, i64 %sh_prom.i.i.i.i store i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.34.12 to ptr), i64 10) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.34.12 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i476, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i477 = tail call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.34.12 to ptr), i64 10) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.34.12 to ptr) to i64)), i64 56) %782 = and i64 %spec.select.i.i.i.i.i.i.i477, 15 %783 = sub i64 %spec.select.i.i.i.i.i.i.i477, %782 %784 = icmp ne i64 %783, 0 br i1 %784, label %loop-memcpy-expansion2345.preheader, label %Flow3641, !amdgpu.uniform !42 loop-memcpy-expansion2345.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i472 %785 = add nuw nsw i64 %76, 8 %scevgep3093 = getelementptr i8, ptr %781, i64 %785 %786 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i474, 6 %scevgep3094 = getelementptr i8, ptr %scevgep3093, i64 %786 br label %loop-memcpy-expansion2345, !amdgpu.uniform !42 Flow3641: ; preds = %Flow3640, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i472 br label %loop-memcpy-residual-header2348, !amdgpu.uniform !42 loop-memcpy-expansion2345: ; preds = %loop-memcpy-expansion2345.preheader, %loop-memcpy-expansion2345 %loop-index2346 = phi i64 [ %789, %loop-memcpy-expansion2345 ], [ 0, %loop-memcpy-expansion2345.preheader ] %787 = getelementptr i8, ptr addrspace(4) @.str.34.12, i64 %loop-index2346, !amdgpu.uniform !42 %788 = load <4 x i32>, ptr addrspace(4) %787, align 1 %scevgep3095 = getelementptr i8, ptr %scevgep3094, i64 %loop-index2346 store <4 x i32> %788, ptr %scevgep3095, align 1 %789 = add i64 %loop-index2346, 16 %790 = icmp uge i64 %789, %783 br i1 %790, label %Flow3640, label %loop-memcpy-expansion2345, !amdgpu.uniform !42 Flow3639: ; preds = %Flow3637, %Flow3638 %791 = phi i64 [ %2698, %Flow3637 ], [ %2695, %Flow3638 ] br label %post-loop-memcpy-expansion2344, !amdgpu.uniform !42 loop-memcpy-residual2347: ; preds = %loop-memcpy-residual2347.preheader, %loop-memcpy-residual2347 %residual-loop-index2349 = phi i64 [ %793, %loop-memcpy-residual2347 ], [ 0, %loop-memcpy-residual2347.preheader ] %scevgep3092 = getelementptr i8, ptr addrspace(4) @.str.34.12, i64 %residual-loop-index2349, !amdgpu.uniform !42 %792 = load i8, ptr addrspace(4) %scevgep3092, align 1 %scevgep3091 = getelementptr i8, ptr %scevgep3090, i64 %residual-loop-index2349 store i8 %792, ptr %scevgep3091, align 1 %793 = add i64 %residual-loop-index2349, 1 %794 = icmp uge i64 %793, %782 br i1 %794, label %Flow3637, label %loop-memcpy-residual2347, !amdgpu.uniform !42 Flow3637: ; preds = %loop-memcpy-residual2347 br label %Flow3639, !amdgpu.uniform !42 post-loop-memcpy-expansion2344: ; preds = %Flow3639 %tobool.not.i.i.i.i.i.i479 = icmp eq i32 %.lcssa4026, 0 %conv.i.i.i.i.i.i480 = zext i1 %tobool.not.i.i.i.i.i.i479 to i32 fence release %795 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i481 = zext i32 %.lcssa4028 to i64 %arrayidx.i24.i.i.i.i.i482 = getelementptr inbounds nuw i32, ptr %795, i64 %idxprom.i23.i.i.i.i.i481 store atomic i32 %conv.i.i.i.i.i.i480, ptr %arrayidx.i24.i.i.i.i.i482 monotonic, align 4 %796 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i483 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %796, i64 %idxprom.i23.i.i.i.i.i481, !amdgpu.uniform !42 %797 = load i64, ptr %arrayidx.i.i5.i.i483, align 8, !tbaa !80 br label %while.cond.i.i.i.i484, !amdgpu.uniform !42 while.cond.i.i.i.i484: ; preds = %post-loop-memcpy-expansion2344, %Flow3636 %phi.broken3794 = phi i64 [ 0, %post-loop-memcpy-expansion2344 ], [ %814, %Flow3636 ] %lsr.iv3082 = phi i64 [ %812, %Flow3636 ], [ -46, %post-loop-memcpy-expansion2344 ] %lsr.iv3077 = phi ptr addrspace(4) [ %811, %Flow3636 ], [ getelementptr (i8, ptr addrspace(4) @.str.34.12, i64 56), %post-loop-memcpy-expansion2344 ] %port.sroa.37.0.i.i485 = phi i32 [ %810, %Flow3636 ], [ %conv.i.i.i.i.i.i480, %post-loop-memcpy-expansion2344 ] %idx.0.i.i.i.i486 = phi i64 [ %809, %Flow3636 ], [ 56, %post-loop-memcpy-expansion2344 ] %cmp.i.i.i.i487 = icmp ult i64 %idx.0.i.i.i.i486, sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.34.12 to ptr), i64 10) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.34.12 to ptr) to i64)) %798 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i487) %and.i.i.i.i6.i.i488 = and i64 %798, %797 %tobool.not.i.i.i.i489 = icmp ne i64 %and.i.i.i.i6.i.i488, 0 %799 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i490 = getelementptr inbounds nuw i32, ptr %799, i64 %idxprom.i23.i.i.i.i.i481, !amdgpu.uniform !42 %800 = load atomic i32, ptr %arrayidx.i22.i.i.i490 monotonic, align 4 %801 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i489) %802 = extractvalue { i1, i64 } %801, 0 %803 = extractvalue { i1, i64 } %801, 1 br i1 %802, label %cond.false.i8.i.i.i.i491, label %Flow3636 cond.false.i8.i.i.i.i491: ; preds = %while.cond.i.i.i.i484 %804 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %800) %805 = icmp ne i32 %804, %port.sroa.37.0.i.i485 br i1 %805, label %while.body.i.i21.i.i.i.i492.preheader, label %Flow3635, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i492.preheader: ; preds = %cond.false.i8.i.i.i.i491 br label %while.body.i.i21.i.i.i.i492, !amdgpu.uniform !42 Flow3635: ; preds = %Flow3634, %cond.false.i8.i.i.i.i491 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i495, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i492: ; preds = %while.body.i.i21.i.i.i.i492.preheader, %while.body.i.i21.i.i.i.i492 tail call void @llvm.amdgcn.s.sleep(i32 2) %806 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i493 = getelementptr inbounds nuw i32, ptr %806, i64 %idxprom.i23.i.i.i.i.i481, !amdgpu.uniform !42 %807 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i493 monotonic, align 4 %808 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %807) %cmp.i.not.i.i23.i.i.i.i494 = icmp eq i32 %808, %port.sroa.37.0.i.i485 br i1 %cmp.i.not.i.i23.i.i.i.i494, label %Flow3634, label %while.body.i.i21.i.i.i.i492, !amdgpu.uniform !42 Flow3634: ; preds = %while.body.i.i21.i.i.i.i492 br label %Flow3635, !amdgpu.uniform !42 Flow3636: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i496, %while.cond.i.i.i.i484 %809 = phi i64 [ %add.i.i.i.i499, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i496 ], [ poison, %while.cond.i.i.i.i484 ] %810 = phi i32 [ %conv.i.i26.i.i.i.i497, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i496 ], [ poison, %while.cond.i.i.i.i484 ] %811 = phi ptr addrspace(4) [ %scevgep3078, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i496 ], [ poison, %while.cond.i.i.i.i484 ] %812 = phi i64 [ %lsr.iv.next3083, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i496 ], [ poison, %while.cond.i.i.i.i484 ] %813 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i496 ], [ true, %while.cond.i.i.i.i484 ] call void @llvm.amdgcn.end.cf.i64(i64 %803) %814 = call i64 @llvm.amdgcn.if.break.i64(i1 %813, i64 %phi.broken3794) %815 = call i1 @llvm.amdgcn.loop.i64(i64 %814) br i1 %815, label %cond.false.i.i.i506, label %while.cond.i.i.i.i484 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i495: ; preds = %Flow3635 fence acquire br i1 %cmp.i.i.i.i487, label %if.then.i.i.i.i.i.i.i500, label %Flow3633, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i500: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i495 %sub.i.i.i.i.i.i.i502 = sub nuw i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.34.12 to ptr), i64 10) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.34.12 to ptr) to i64)), %idx.0.i.i.i.i486 %spec.select.i.i.i36.i.i.i.i503 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i502, i64 64) %816 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %817 = and i64 %spec.select.i.i.i36.i.i.i.i503, 15 %818 = sub i64 %spec.select.i.i.i36.i.i.i.i503, %817 %819 = icmp ne i64 %818, 0 br i1 %819, label %loop-memcpy-expansion2351.preheader, label %Flow3632, !amdgpu.uniform !42 loop-memcpy-expansion2351.preheader: ; preds = %if.then.i.i.i.i.i.i.i500 %arrayidx.i20.i35.i.i.i.i504 = getelementptr %"struct.rpc::Buffer", ptr %816, i64 %idxprom.i19.i.i.i.i.i474 %arrayidx.i22.i38.i.i.i.i505 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i504, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2351, !amdgpu.uniform !42 Flow3632: ; preds = %Flow3631, %if.then.i.i.i.i.i.i.i500 br label %loop-memcpy-residual-header2354, !amdgpu.uniform !42 loop-memcpy-expansion2351: ; preds = %loop-memcpy-expansion2351.preheader, %loop-memcpy-expansion2351 %loop-index2352 = phi i64 [ %822, %loop-memcpy-expansion2351 ], [ 0, %loop-memcpy-expansion2351.preheader ] %scevgep3079 = getelementptr i8, ptr addrspace(4) %lsr.iv3077, i64 %loop-index2352, !amdgpu.uniform !42 %820 = load <4 x i32>, ptr addrspace(4) %scevgep3079, align 1 %821 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i505, i64 %loop-index2352 store <4 x i32> %820, ptr %821, align 1 %822 = add i64 %loop-index2352, 16 %823 = icmp uge i64 %822, %818 br i1 %823, label %Flow3631, label %loop-memcpy-expansion2351, !amdgpu.uniform !42 Flow3630: ; preds = %Flow3629, %loop-memcpy-residual-header2354 br label %Flow3633, !amdgpu.uniform !42 loop-memcpy-residual2353: ; preds = %loop-memcpy-residual2353.preheader, %loop-memcpy-residual2353 %residual-loop-index2355 = phi i64 [ %825, %loop-memcpy-residual2353 ], [ 0, %loop-memcpy-residual2353.preheader ] %scevgep3088 = getelementptr i8, ptr addrspace(4) %scevgep3087, i64 %residual-loop-index2355, !amdgpu.uniform !42 %824 = load i8, ptr addrspace(4) %scevgep3088, align 1 %scevgep3086 = getelementptr i8, ptr %scevgep3085, i64 %residual-loop-index2355 store i8 %824, ptr %scevgep3086, align 1 %825 = add i64 %residual-loop-index2355, 1 %826 = icmp uge i64 %825, %817 br i1 %826, label %Flow3629, label %loop-memcpy-residual2353, !amdgpu.uniform !42 Flow3629: ; preds = %loop-memcpy-residual2353 br label %Flow3630, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i496: ; preds = %Flow3633 %conv.i.i26.i.i.i.i497 = xor i32 %port.sroa.37.0.i.i485, 1 fence release %827 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i498 = getelementptr inbounds nuw i32, ptr %827, i64 %idxprom.i23.i.i.i.i.i481 store atomic i32 %conv.i.i26.i.i.i.i497, ptr %arrayidx.i24.i29.i.i.i.i498 monotonic, align 4 %add.i.i.i.i499 = add i64 %idx.0.i.i.i.i486, 64 %scevgep3078 = getelementptr i8, ptr addrspace(4) %lsr.iv3077, i64 64 %lsr.iv.next3083 = add i64 %lsr.iv3082, -64 br label %Flow3636, !amdgpu.uniform !42 cond.false.i.i.i506: ; preds = %Flow3636 %.lcssa4022 = phi i64 [ %814, %Flow3636 ] %port.sroa.37.0.i.i485.lcssa = phi i32 [ %port.sroa.37.0.i.i485, %Flow3636 ] %.lcssa4021 = phi i32 [ %800, %Flow3636 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4022) %828 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa4021) %829 = icmp ne i32 %828, %port.sroa.37.0.i.i485.lcssa %830 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %829) %831 = extractvalue { i1, i64 } %830, 0 %832 = extractvalue { i1, i64 } %830, 1 br i1 %831, label %while.body.i.i.i.i507.preheader, label %Flow3628 while.body.i.i.i.i507.preheader: ; preds = %cond.false.i.i.i506 br label %while.body.i.i.i.i507, !amdgpu.uniform !42 Flow3628: ; preds = %Flow3627, %cond.false.i.i.i506 call void @llvm.amdgcn.end.cf.i64(i64 %832) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit528, !amdgpu.uniform !42 while.body.i.i.i.i507: ; preds = %while.body.i.i.i.i507.preheader, %while.body.i.i.i.i507 %phi.broken3795 = phi i64 [ 0, %while.body.i.i.i.i507.preheader ], [ %836, %while.body.i.i.i.i507 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %833 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i508 = getelementptr inbounds nuw i32, ptr %833, i64 %idxprom.i23.i.i.i.i.i481, !amdgpu.uniform !42 %834 = load atomic i32, ptr %arrayidx.i.i.i8.i.i508 monotonic, align 4 %835 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %834) %cmp.i.not.i.i.i.i509 = icmp eq i32 %835, %port.sroa.37.0.i.i485.lcssa %836 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i509, i64 %phi.broken3795) %837 = call i1 @llvm.amdgcn.loop.i64(i64 %836) br i1 %837, label %Flow3627, label %while.body.i.i.i.i507 Flow3627: ; preds = %while.body.i.i.i.i507 %.lcssa4020 = phi i64 [ %836, %while.body.i.i.i.i507 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4020) br label %Flow3628, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit528: ; preds = %Flow3628 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %838 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4027, i1 true) %iszero.i.i.i.i.i13.i.i511 = icmp ne i64 %.lcssa4027, 0 %cmp2.i.i.i.i14.i.i512 = icmp eq i64 %838, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i513 = select i1 %iszero.i.i.i.i.i13.i.i511, i1 %cmp2.i.i.i.i14.i.i512, i1 false %839 = and i32 %.lcssa4028, 31 %conv4.i.i.i19.i.i517 = zext i1 %cmp.i.i.i.i15.i.i513 to i32 %shl.i.i.i20.i.i518 = shl nuw i32 %conv4.i.i.i19.i.i517, %839 %xor.i.i.i21.i.i519 = xor i32 %shl.i.i.i20.i.i518, -1 %840 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2485, !amdgpu.uniform !42 841: ; preds = %ComputeEnd2486 %div8.i.i.i16.i.i514 = lshr i32 %.lcssa4028, 5 %idxprom.i.i.i17.i.i515 = zext nneg i32 %div8.i.i.i16.i.i514 to i64 %842 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i515 %sunkaddr3254 = getelementptr inbounds i8, ptr addrspace(1) %842, i64 40 %843 = atomicrmw and ptr addrspace(1) %sunkaddr3254, i32 %.lcssa4019 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %844, !amdgpu.uniform !42 844: ; preds = %841, %ComputeEnd2486 call void @llvm.amdgcn.end.cf.i64(i64 %3067) tail call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i.i529, !amdgpu.uniform !42 for.cond.i.i.i529: ; preds = %844, %for.cond.i.i.i529 %phi.broken3796 = phi i64 [ 0, %844 ], [ %847, %for.cond.i.i.i529 ] %lsr.iv3063 = phi i64 [ %lsr.iv.next3064, %for.cond.i.i.i529 ], [ -1, %844 ] %scevgep3075 = getelementptr i8, ptr %LHSStr, i64 %lsr.iv3063 %scevgep3076 = getelementptr i8, ptr %scevgep3075, i64 1 %845 = addrspacecast ptr %scevgep3076 to ptr addrspace(4) %846 = load i8, ptr addrspace(4) %845, align 1, !tbaa !57, !noalias.addrspace !101 %cmp.i.i.i531 = icmp eq i8 %846, 0 %lsr.iv.next3064 = add i64 %lsr.iv3063, 1 %847 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.i.i531, i64 %phi.broken3796) %848 = call i1 @llvm.amdgcn.loop.i64(i64 %847) br i1 %848, label %for.cond.i.i1.i537.preheader, label %for.cond.i.i.i529 for.cond.i.i1.i537.preheader: ; preds = %for.cond.i.i.i529 %lsr.iv.next3064.lcssa = phi i64 [ %lsr.iv.next3064, %for.cond.i.i.i529 ] %.lcssa4018 = phi i64 [ %847, %for.cond.i.i.i529 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4018) br label %for.cond.i.i1.i537, !amdgpu.uniform !42 for.cond.i.i1.i537: ; preds = %for.cond.i.i1.i537.preheader, %Flow3626 %849 = phi i32 [ %887, %Flow3626 ], [ poison, %for.cond.i.i1.i537.preheader ] %850 = phi i64 [ %888, %Flow3626 ], [ poison, %for.cond.i.i1.i537.preheader ] %851 = phi i32 [ %889, %Flow3626 ], [ poison, %for.cond.i.i1.i537.preheader ] %retval.sroa.6.0.i.i.i538 = phi i32 [ %892, %Flow3626 ], [ undef, %for.cond.i.i1.i537.preheader ] %retval.sroa.2.0.i.i.i540 = phi i64 [ %891, %Flow3626 ], [ undef, %for.cond.i.i1.i537.preheader ] %retval.sroa.8.0.i.i.i541 = phi i32 [ %890, %Flow3626 ], [ undef, %for.cond.i.i1.i537.preheader ] %index.0.i.i.i542 = phi i32 [ %894, %Flow3626 ], [ 0, %for.cond.i.i1.i537.preheader ] %852 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i543 = icmp ult i32 %index.0.i.i.i542, %852 %spec.store.select.i.i.i544 = select i1 %cmp.not.i.i.i543, i32 %index.0.i.i.i542, i32 0 %853 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %854 = and i32 %spec.store.select.i.i.i544, 31 %855 = lshr i64 %853, %sh_prom.i.i.i.i %856 = trunc i64 %855 to i32 %conv4.i.i.i.i.i548 = and i32 %856, 1 %shl.i.i.i.i.i549 = shl nuw i32 %conv4.i.i.i.i.i548, %854 %857 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2489, !amdgpu.uniform !42 858: ; preds = %ComputeEnd2490 %sunkaddr3255 = getelementptr inbounds i8, ptr addrspace(1) %3077, i64 40 %859 = atomicrmw or ptr addrspace(1) %sunkaddr3255, i32 %.lcssa4012 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %860, !amdgpu.uniform !42 860: ; preds = %858, %ComputeEnd2490 %861 = phi i32 [ %859, %858 ], [ poison, %ComputeEnd2490 ] call void @llvm.amdgcn.end.cf.i64(i64 %3086) %862 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %861) %863 = or i32 %862, %.lcssa4013 %shl5.i.i.i.i.i550 = shl nuw i32 1, %854 %and.i.i.i.i.i551 = and i32 %shl5.i.i.i.i.i550, %863 %tobool3.i.i.i.i552 = icmp ne i32 %and.i.i.i.i.i551, 0 %864 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i552) %and.i.i.i.i.i.i553 = and i64 %864, %853 %cmp.i.not.i.i.i554 = icmp ne i64 %853, %and.i.i.i.i.i.i553 br i1 %cmp.i.not.i.i.i554, label %if.then.i.i.i.i555, label %Flow3625, !amdgpu.uniform !42 if.then.i.i.i.i555: ; preds = %860 fence syncscope("agent") acquire %865 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %866 = extractelement <2 x i64> %865, i32 0 %867 = inttoptr i64 %866 to ptr %868 = extractelement <2 x i64> %865, i32 1 %869 = inttoptr i64 %868 to ptr %idxprom.i.i.i.i556 = zext i32 %spec.store.select.i.i.i544 to i64 %arrayidx.i.i.i.i557 = getelementptr inbounds nuw i32, ptr %867, i64 %idxprom.i.i.i.i556, !amdgpu.uniform !42 %870 = load atomic i32, ptr %arrayidx.i.i.i.i557 monotonic, align 4 %871 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %870) %arrayidx.i45.i.i.i558 = getelementptr inbounds nuw i32, ptr %869, i64 %idxprom.i.i.i.i556, !amdgpu.uniform !42 %872 = load atomic i32, ptr %arrayidx.i45.i.i.i558 monotonic, align 4 %873 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %872) %cmp.i46.not.i.i.i559 = icmp ne i32 %871, %873 br i1 %cmp.i46.not.i.i.i559, label %if.then12.i.i.i560, label %Flow3623, !amdgpu.uniform !42 if.then12.i.i.i560: ; preds = %if.then.i.i.i.i555 fence syncscope("agent") release %874 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %853, i1 true) %iszero.i.i.i.i.i.i.i561 = icmp ne i64 %853, 0 %cmp2.i.i.i.i.i.i562 = icmp eq i64 %874, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i563 = select i1 %iszero.i.i.i.i.i.i.i561, i1 %cmp2.i.i.i.i.i.i562, i1 false %conv4.i.i51.i.i.i564 = zext i1 %cmp.i.i.i.i.i.i563 to i32 %shl.i.i52.i.i.i565 = shl nuw i32 %conv4.i.i51.i.i.i564, %854 %xor.i.i.i.i.i566 = xor i32 %shl.i.i52.i.i.i565, -1 %875 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2494, !amdgpu.uniform !42 876: ; preds = %ComputeEnd2495 %sunkaddr3256 = getelementptr inbounds i8, ptr addrspace(1) %3077, i64 40 %877 = atomicrmw and ptr addrspace(1) %sunkaddr3256, i32 %.lcssa4014 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %878, !amdgpu.uniform !42 878: ; preds = %876, %ComputeEnd2495 call void @llvm.amdgcn.end.cf.i64(i64 %3104) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3623, !amdgpu.uniform !42 if.end14.i.i.i626: ; preds = %Flow3623 %879 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %853, i1 true) %iszero.i.i.i.i.i.i627 = icmp ne i64 %853, 0 %cmp2.i.i.i.i.i628 = icmp eq i64 %879, %sh_prom.i.i.i.i %cmp.i.i.i.i.i629 = select i1 %iszero.i.i.i.i.i.i627, i1 %cmp2.i.i.i.i.i628, i1 false %880 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i629) %881 = extractvalue { i1, i64 } %880, 0 %882 = extractvalue { i1, i64 } %880, 1 br i1 %881, label %if.then16.i.i.i631, label %if.end22.i.i.i630 if.then16.i.i.i631: ; preds = %if.end14.i.i.i626 %883 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i632 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %883, i64 %idxprom.i.i.i.i556, i32 1 store i32 1660944387, ptr %opcode.i.i.i632, align 8, !tbaa !77 %arrayidx21.i.i.i633 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %883, i64 %idxprom.i.i.i.i556 store i64 %853, ptr %arrayidx21.i.i.i633, align 8, !tbaa !80 br label %if.end22.i.i.i630, !amdgpu.uniform !42 Flow3624: ; preds = %if.end22.i.i.i630, %Flow3623 %884 = phi i32 [ %871, %if.end22.i.i.i630 ], [ %retval.sroa.8.0.i.i.i541, %Flow3623 ] %885 = phi i64 [ %853, %if.end22.i.i.i630 ], [ %retval.sroa.2.0.i.i.i540, %Flow3623 ] %886 = phi i32 [ %spec.store.select.i.i.i544, %if.end22.i.i.i630 ], [ %retval.sroa.6.0.i.i.i538, %Flow3623 ] br label %cleanup26.i.i.i567, !amdgpu.uniform !42 if.end22.i.i.i630: ; preds = %if.then16.i.i.i631, %if.end14.i.i.i626 call void @llvm.amdgcn.end.cf.i64(i64 %882) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3624, !amdgpu.uniform !42 Flow3625: ; preds = %cleanup26.i.i.i567, %860 %887 = phi i32 [ %886, %cleanup26.i.i.i567 ], [ %849, %860 ] %888 = phi i64 [ %885, %cleanup26.i.i.i567 ], [ %850, %860 ] %889 = phi i32 [ %884, %cleanup26.i.i.i567 ], [ %851, %860 ] %890 = phi i32 [ %884, %cleanup26.i.i.i567 ], [ %retval.sroa.8.0.i.i.i541, %860 ] %891 = phi i64 [ %885, %cleanup26.i.i.i567 ], [ %retval.sroa.2.0.i.i.i540, %860 ] %892 = phi i32 [ %886, %cleanup26.i.i.i567 ], [ %retval.sroa.6.0.i.i.i538, %860 ] %893 = phi i1 [ %cmp.i46.not.i.i.i559, %cleanup26.i.i.i567 ], [ true, %860 ] br i1 %893, label %for.inc.i.i.i572, label %Flow3626, !amdgpu.uniform !42 cleanup26.i.i.i567: ; preds = %Flow3624 br label %Flow3625, !amdgpu.uniform !42 for.inc.i.i.i572: ; preds = %Flow3625 %inc.i.i.i577 = add i32 %spec.store.select.i.i.i544, 1 br label %Flow3626, !amdgpu.uniform !42 Flow3626: ; preds = %for.inc.i.i.i572, %Flow3625 %894 = phi i32 [ %inc.i.i.i577, %for.inc.i.i.i572 ], [ poison, %Flow3625 ] %895 = phi i1 [ false, %for.inc.i.i.i572 ], [ true, %Flow3625 ] br i1 %895, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i578, label %for.cond.i.i1.i537, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i578: ; preds = %Flow3626 %.lcssa4017 = phi i32 [ %887, %Flow3626 ] %.lcssa4016 = phi i64 [ %888, %Flow3626 ] %.lcssa4015 = phi i32 [ %889, %Flow3626 ] %scevgep3074 = getelementptr i8, ptr %LHSStr, i64 %lsr.iv.next3064.lcssa %sub.ptr.lhs.cast.i.i.i534 = ptrtoint ptr %scevgep3074 to i64 %sub.ptr.rhs.cast.i.i.i = ptrtoint ptr %LHSStr to i64 %sub.ptr.sub.i.i.i535 = sub i64 %sub.ptr.lhs.cast.i.i.i534, %sub.ptr.rhs.cast.i.i.i fence acquire %896 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i579 = shl i32 %.lcssa4017, 6 %idxprom.i19.i.i.i.i.i580 = zext i32 %mul.i.i.i.i.i.i579 to i64 %arrayidx.i20.i.i.i.i.i581 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %896, i64 %idxprom.i19.i.i.i.i.i580 %arrayidx.i22.i.i.i.i.i582 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i581, i64 %sh_prom.i.i.i.i store i64 %sub.ptr.sub.i.i.i535, ptr %arrayidx.i22.i.i.i.i.i582, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i583 = tail call i64 @llvm.umin.i64(i64 %sub.ptr.sub.i.i.i535, i64 56) %897 = and i64 %spec.select.i.i.i.i.i.i.i583, 15 %898 = sub i64 %spec.select.i.i.i.i.i.i.i583, %897 %899 = icmp ne i64 %898, 0 %900 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %899) %901 = extractvalue { i1, i64 } %900, 0 %902 = extractvalue { i1, i64 } %900, 1 br i1 %901, label %loop-memcpy-expansion2243.preheader, label %Flow3622 loop-memcpy-expansion2243.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i578 %903 = add nuw nsw i64 %76, 8 %scevgep3071 = getelementptr i8, ptr %896, i64 %903 %904 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i580, 6 %scevgep3072 = getelementptr i8, ptr %scevgep3071, i64 %904 br label %loop-memcpy-expansion2243, !amdgpu.uniform !42 Flow3622: ; preds = %Flow3621, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i578 call void @llvm.amdgcn.end.cf.i64(i64 %902) br label %loop-memcpy-residual-header2246, !amdgpu.uniform !42 loop-memcpy-expansion2243: ; preds = %loop-memcpy-expansion2243.preheader, %loop-memcpy-expansion2243 %phi.broken3797 = phi i64 [ 0, %loop-memcpy-expansion2243.preheader ], [ %909, %loop-memcpy-expansion2243 ] %loop-index2244 = phi i64 [ %907, %loop-memcpy-expansion2243 ], [ 0, %loop-memcpy-expansion2243.preheader ] %905 = getelementptr i8, ptr %LHSStr, i64 %loop-index2244 %906 = load <4 x i32>, ptr %905, align 1 %scevgep3073 = getelementptr i8, ptr %scevgep3072, i64 %loop-index2244 store <4 x i32> %906, ptr %scevgep3073, align 1 %907 = add i64 %loop-index2244, 16 %908 = icmp uge i64 %907, %898 %909 = call i64 @llvm.amdgcn.if.break.i64(i1 %908, i64 %phi.broken3797) %910 = call i1 @llvm.amdgcn.loop.i64(i64 %909) br i1 %910, label %Flow3621, label %loop-memcpy-expansion2243 Flow3620: ; preds = %Flow3618, %Flow3619 %911 = phi i64 [ %2616, %Flow3618 ], [ %2609, %Flow3619 ] call void @llvm.amdgcn.end.cf.i64(i64 %2612) br label %post-loop-memcpy-expansion2242, !amdgpu.uniform !42 loop-memcpy-residual2245: ; preds = %loop-memcpy-residual2245.preheader, %loop-memcpy-residual2245 %phi.broken3798 = phi i64 [ 0, %loop-memcpy-residual2245.preheader ], [ %915, %loop-memcpy-residual2245 ] %residual-loop-index2247 = phi i64 [ %913, %loop-memcpy-residual2245 ], [ 0, %loop-memcpy-residual2245.preheader ] %scevgep3070 = getelementptr i8, ptr %scevgep3069, i64 %residual-loop-index2247 %912 = load i8, ptr %scevgep3070, align 1 %scevgep3068 = getelementptr i8, ptr %scevgep3067, i64 %residual-loop-index2247 store i8 %912, ptr %scevgep3068, align 1 %913 = add i64 %residual-loop-index2247, 1 %914 = icmp uge i64 %913, %897 %915 = call i64 @llvm.amdgcn.if.break.i64(i1 %914, i64 %phi.broken3798) %916 = call i1 @llvm.amdgcn.loop.i64(i64 %915) br i1 %916, label %Flow3618, label %loop-memcpy-residual2245 Flow3618: ; preds = %loop-memcpy-residual2245 %.lcssa4010 = phi i64 [ %915, %loop-memcpy-residual2245 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4010) br label %Flow3620, !amdgpu.uniform !42 post-loop-memcpy-expansion2242: ; preds = %Flow3620 %917 = add i64 %lsr.iv.next3064.lcssa, -56 %tobool.not.i.i.i.i.i.i585 = icmp eq i32 %.lcssa4015, 0 %conv.i.i.i.i.i.i586 = zext i1 %tobool.not.i.i.i.i.i.i585 to i32 fence release %918 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i587 = zext i32 %.lcssa4017 to i64 %arrayidx.i24.i.i.i.i.i588 = getelementptr inbounds nuw i32, ptr %918, i64 %idxprom.i23.i.i.i.i.i587 store atomic i32 %conv.i.i.i.i.i.i586, ptr %arrayidx.i24.i.i.i.i.i588 monotonic, align 4 %919 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i589 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %919, i64 %idxprom.i23.i.i.i.i.i587, !amdgpu.uniform !42 %920 = load i64, ptr %arrayidx.i.i5.i.i589, align 8, !tbaa !80 %scevgep3046 = getelementptr i8, ptr %LHSStr, i64 56 br label %while.cond.i.i.i.i590, !amdgpu.uniform !42 while.cond.i.i.i.i590: ; preds = %post-loop-memcpy-expansion2242, %Flow3617 %phi.broken3801 = phi i64 [ 0, %post-loop-memcpy-expansion2242 ], [ %937, %Flow3617 ] %lsr.iv3054 = phi i64 [ %935, %Flow3617 ], [ %917, %post-loop-memcpy-expansion2242 ] %lsr.iv3047 = phi ptr [ %934, %Flow3617 ], [ %scevgep3046, %post-loop-memcpy-expansion2242 ] %port.sroa.37.0.i.i591 = phi i32 [ %933, %Flow3617 ], [ %conv.i.i.i.i.i.i586, %post-loop-memcpy-expansion2242 ] %idx.0.i.i.i.i592 = phi i64 [ %932, %Flow3617 ], [ 56, %post-loop-memcpy-expansion2242 ] %cmp.i.i.i.i593 = icmp ugt i64 %sub.ptr.sub.i.i.i535, %idx.0.i.i.i.i592 %921 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i593) %and.i.i.i.i6.i.i594 = and i64 %921, %920 %tobool.not.i.i.i.i595 = icmp ne i64 %and.i.i.i.i6.i.i594, 0 %922 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i596 = getelementptr inbounds nuw i32, ptr %922, i64 %idxprom.i23.i.i.i.i.i587, !amdgpu.uniform !42 %923 = load atomic i32, ptr %arrayidx.i22.i.i.i596 monotonic, align 4 %924 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i595) %925 = extractvalue { i1, i64 } %924, 0 %926 = extractvalue { i1, i64 } %924, 1 br i1 %925, label %cond.false.i8.i.i.i.i597, label %Flow3617 cond.false.i8.i.i.i.i597: ; preds = %while.cond.i.i.i.i590 %927 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %923) %928 = icmp ne i32 %927, %port.sroa.37.0.i.i591 br i1 %928, label %while.body.i.i21.i.i.i.i598.preheader, label %Flow3616, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i598.preheader: ; preds = %cond.false.i8.i.i.i.i597 br label %while.body.i.i21.i.i.i.i598, !amdgpu.uniform !42 Flow3616: ; preds = %Flow3615, %cond.false.i8.i.i.i.i597 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i601, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i598: ; preds = %while.body.i.i21.i.i.i.i598.preheader, %while.body.i.i21.i.i.i.i598 tail call void @llvm.amdgcn.s.sleep(i32 2) %929 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i599 = getelementptr inbounds nuw i32, ptr %929, i64 %idxprom.i23.i.i.i.i.i587, !amdgpu.uniform !42 %930 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i599 monotonic, align 4 %931 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %930) %cmp.i.not.i.i23.i.i.i.i600 = icmp eq i32 %931, %port.sroa.37.0.i.i591 br i1 %cmp.i.not.i.i23.i.i.i.i600, label %Flow3615, label %while.body.i.i21.i.i.i.i598, !amdgpu.uniform !42 Flow3615: ; preds = %while.body.i.i21.i.i.i.i598 br label %Flow3616, !amdgpu.uniform !42 Flow3617: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i602, %while.cond.i.i.i.i590 %932 = phi i64 [ %add.i.i.i.i605, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i602 ], [ poison, %while.cond.i.i.i.i590 ] %933 = phi i32 [ %conv.i.i26.i.i.i.i603, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i602 ], [ poison, %while.cond.i.i.i.i590 ] %934 = phi ptr [ %scevgep3048, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i602 ], [ poison, %while.cond.i.i.i.i590 ] %935 = phi i64 [ %lsr.iv.next3055, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i602 ], [ poison, %while.cond.i.i.i.i590 ] %936 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i602 ], [ true, %while.cond.i.i.i.i590 ] call void @llvm.amdgcn.end.cf.i64(i64 %926) %937 = call i64 @llvm.amdgcn.if.break.i64(i1 %936, i64 %phi.broken3801) %938 = call i1 @llvm.amdgcn.loop.i64(i64 %937) br i1 %938, label %cond.false.i.i.i612, label %while.cond.i.i.i.i590 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i601: ; preds = %Flow3616 fence acquire %939 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i593) %940 = extractvalue { i1, i64 } %939, 0 %941 = extractvalue { i1, i64 } %939, 1 br i1 %940, label %if.then.i.i.i.i.i.i.i606, label %Flow3614 if.then.i.i.i.i.i.i.i606: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i601 %sub.i.i.i.i.i.i.i608 = sub nuw i64 %sub.ptr.sub.i.i.i535, %idx.0.i.i.i.i592 %spec.select.i.i.i36.i.i.i.i609 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i608, i64 64) %942 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %943 = and i64 %spec.select.i.i.i36.i.i.i.i609, 15 %944 = sub i64 %spec.select.i.i.i36.i.i.i.i609, %943 %945 = icmp ne i64 %944, 0 %946 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %945) %947 = extractvalue { i1, i64 } %946, 0 %948 = extractvalue { i1, i64 } %946, 1 br i1 %947, label %loop-memcpy-expansion2237.preheader, label %Flow3613 loop-memcpy-expansion2237.preheader: ; preds = %if.then.i.i.i.i.i.i.i606 %arrayidx.i20.i35.i.i.i.i610 = getelementptr %"struct.rpc::Buffer", ptr %942, i64 %idxprom.i19.i.i.i.i.i580 %arrayidx.i22.i38.i.i.i.i611 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i610, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2237, !amdgpu.uniform !42 Flow3613: ; preds = %Flow3612, %if.then.i.i.i.i.i.i.i606 call void @llvm.amdgcn.end.cf.i64(i64 %948) br label %loop-memcpy-residual-header2240, !amdgpu.uniform !42 loop-memcpy-expansion2237: ; preds = %loop-memcpy-expansion2237.preheader, %loop-memcpy-expansion2237 %phi.broken3799 = phi i64 [ 0, %loop-memcpy-expansion2237.preheader ], [ %953, %loop-memcpy-expansion2237 ] %loop-index2238 = phi i64 [ %951, %loop-memcpy-expansion2237 ], [ 0, %loop-memcpy-expansion2237.preheader ] %scevgep3049 = getelementptr i8, ptr %lsr.iv3047, i64 %loop-index2238 %949 = load <4 x i32>, ptr %scevgep3049, align 1 %950 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i611, i64 %loop-index2238 store <4 x i32> %949, ptr %950, align 1 %951 = add i64 %loop-index2238, 16 %952 = icmp uge i64 %951, %944 %953 = call i64 @llvm.amdgcn.if.break.i64(i1 %952, i64 %phi.broken3799) %954 = call i1 @llvm.amdgcn.loop.i64(i64 %953) br i1 %954, label %Flow3612, label %loop-memcpy-expansion2237 Flow3611: ; preds = %Flow3610, %loop-memcpy-residual-header2240 call void @llvm.amdgcn.end.cf.i64(i64 %2602) br label %Flow3614, !amdgpu.uniform !42 loop-memcpy-residual2239: ; preds = %loop-memcpy-residual2239.preheader, %loop-memcpy-residual2239 %phi.broken3800 = phi i64 [ 0, %loop-memcpy-residual2239.preheader ], [ %958, %loop-memcpy-residual2239 ] %residual-loop-index2241 = phi i64 [ %956, %loop-memcpy-residual2239 ], [ 0, %loop-memcpy-residual2239.preheader ] %scevgep3061 = getelementptr i8, ptr %scevgep3060, i64 %residual-loop-index2241 %955 = load i8, ptr %scevgep3061, align 1 %scevgep3058 = getelementptr i8, ptr %scevgep3057, i64 %residual-loop-index2241 store i8 %955, ptr %scevgep3058, align 1 %956 = add i64 %residual-loop-index2241, 1 %957 = icmp uge i64 %956, %943 %958 = call i64 @llvm.amdgcn.if.break.i64(i1 %957, i64 %phi.broken3800) %959 = call i1 @llvm.amdgcn.loop.i64(i64 %958) br i1 %959, label %Flow3610, label %loop-memcpy-residual2239 Flow3610: ; preds = %loop-memcpy-residual2239 %.lcssa4007 = phi i64 [ %958, %loop-memcpy-residual2239 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4007) br label %Flow3611, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i602: ; preds = %Flow3614 %conv.i.i26.i.i.i.i603 = xor i32 %port.sroa.37.0.i.i591, 1 fence release %960 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i604 = getelementptr inbounds nuw i32, ptr %960, i64 %idxprom.i23.i.i.i.i.i587 store atomic i32 %conv.i.i26.i.i.i.i603, ptr %arrayidx.i24.i29.i.i.i.i604 monotonic, align 4 %add.i.i.i.i605 = add i64 %idx.0.i.i.i.i592, 64 %scevgep3048 = getelementptr i8, ptr %lsr.iv3047, i64 64 %lsr.iv.next3055 = add i64 %lsr.iv3054, -64 br label %Flow3617, !amdgpu.uniform !42 cond.false.i.i.i612: ; preds = %Flow3617 %.lcssa4009 = phi i64 [ %937, %Flow3617 ] %port.sroa.37.0.i.i591.lcssa = phi i32 [ %port.sroa.37.0.i.i591, %Flow3617 ] %.lcssa4008 = phi i32 [ %923, %Flow3617 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4009) %961 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa4008) %962 = icmp ne i32 %961, %port.sroa.37.0.i.i591.lcssa %963 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %962) %964 = extractvalue { i1, i64 } %963, 0 %965 = extractvalue { i1, i64 } %963, 1 br i1 %964, label %while.body.i.i.i.i613.preheader, label %Flow3609 while.body.i.i.i.i613.preheader: ; preds = %cond.false.i.i.i612 br label %while.body.i.i.i.i613, !amdgpu.uniform !42 Flow3609: ; preds = %Flow3608, %cond.false.i.i.i612 call void @llvm.amdgcn.end.cf.i64(i64 %965) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit634, !amdgpu.uniform !42 while.body.i.i.i.i613: ; preds = %while.body.i.i.i.i613.preheader, %while.body.i.i.i.i613 %phi.broken3802 = phi i64 [ 0, %while.body.i.i.i.i613.preheader ], [ %969, %while.body.i.i.i.i613 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %966 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i614 = getelementptr inbounds nuw i32, ptr %966, i64 %idxprom.i23.i.i.i.i.i587, !amdgpu.uniform !42 %967 = load atomic i32, ptr %arrayidx.i.i.i8.i.i614 monotonic, align 4 %968 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %967) %cmp.i.not.i.i.i.i615 = icmp eq i32 %968, %port.sroa.37.0.i.i591.lcssa %969 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i615, i64 %phi.broken3802) %970 = call i1 @llvm.amdgcn.loop.i64(i64 %969) br i1 %970, label %Flow3608, label %while.body.i.i.i.i613 Flow3608: ; preds = %while.body.i.i.i.i613 %.lcssa4005 = phi i64 [ %969, %while.body.i.i.i.i613 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4005) br label %Flow3609, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit634: ; preds = %Flow3609 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %971 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4016, i1 true) %iszero.i.i.i.i.i13.i.i617 = icmp ne i64 %.lcssa4016, 0 %cmp2.i.i.i.i14.i.i618 = icmp eq i64 %971, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i619 = select i1 %iszero.i.i.i.i.i13.i.i617, i1 %cmp2.i.i.i.i14.i.i618, i1 false %972 = and i32 %.lcssa4017, 31 %conv4.i.i.i19.i.i623 = zext i1 %cmp.i.i.i.i15.i.i619 to i32 %shl.i.i.i20.i.i624 = shl nuw i32 %conv4.i.i.i19.i.i623, %972 %xor.i.i.i21.i.i625 = xor i32 %shl.i.i.i20.i.i624, -1 %973 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2498, !amdgpu.uniform !42 974: ; preds = %ComputeEnd2499 %div8.i.i.i16.i.i620 = lshr i32 %.lcssa4017, 5 %idxprom.i.i.i17.i.i621 = zext nneg i32 %div8.i.i.i16.i.i620 to i64 %975 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i621 %sunkaddr3257 = getelementptr inbounds i8, ptr addrspace(1) %975, i64 40 %976 = atomicrmw and ptr addrspace(1) %sunkaddr3257, i32 %.lcssa4004 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %977, !amdgpu.uniform !42 977: ; preds = %974, %ComputeEnd2499 call void @llvm.amdgcn.end.cf.i64(i64 %3121) tail call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i.i636, !amdgpu.uniform !42 for.cond.i.i.i636: ; preds = %977, %Flow3607 %978 = phi i32 [ %1016, %Flow3607 ], [ poison, %977 ] %979 = phi i64 [ %1017, %Flow3607 ], [ poison, %977 ] %980 = phi i32 [ %1018, %Flow3607 ], [ poison, %977 ] %retval.sroa.6.0.i.i.i637 = phi i32 [ %1021, %Flow3607 ], [ undef, %977 ] %retval.sroa.2.0.i.i.i639 = phi i64 [ %1020, %Flow3607 ], [ undef, %977 ] %retval.sroa.8.0.i.i.i640 = phi i32 [ %1019, %Flow3607 ], [ undef, %977 ] %index.0.i.i.i641 = phi i32 [ %1023, %Flow3607 ], [ 0, %977 ] %981 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i642 = icmp ult i32 %index.0.i.i.i641, %981 %spec.store.select.i.i.i643 = select i1 %cmp.not.i.i.i642, i32 %index.0.i.i.i641, i32 0 %982 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %983 = and i32 %spec.store.select.i.i.i643, 31 %984 = lshr i64 %982, %sh_prom.i.i.i.i %985 = trunc i64 %984 to i32 %conv4.i.i.i.i.i647 = and i32 %985, 1 %shl.i.i.i.i.i648 = shl nuw i32 %conv4.i.i.i.i.i647, %983 %986 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2502, !amdgpu.uniform !42 987: ; preds = %ComputeEnd2503 %sunkaddr3258 = getelementptr inbounds i8, ptr addrspace(1) %3131, i64 40 %988 = atomicrmw or ptr addrspace(1) %sunkaddr3258, i32 %.lcssa3998 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %989, !amdgpu.uniform !42 989: ; preds = %987, %ComputeEnd2503 %990 = phi i32 [ %988, %987 ], [ poison, %ComputeEnd2503 ] call void @llvm.amdgcn.end.cf.i64(i64 %3140) %991 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %990) %992 = or i32 %991, %.lcssa3999 %shl5.i.i.i.i.i649 = shl nuw i32 1, %983 %and.i.i.i.i.i650 = and i32 %shl5.i.i.i.i.i649, %992 %tobool3.i.i.i.i651 = icmp ne i32 %and.i.i.i.i.i650, 0 %993 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i651) %and.i.i.i.i.i.i652 = and i64 %993, %982 %cmp.i.not.i.i.i653 = icmp ne i64 %982, %and.i.i.i.i.i.i652 br i1 %cmp.i.not.i.i.i653, label %if.then.i.i.i.i654, label %Flow3606, !amdgpu.uniform !42 if.then.i.i.i.i654: ; preds = %989 fence syncscope("agent") acquire %994 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %995 = extractelement <2 x i64> %994, i32 0 %996 = inttoptr i64 %995 to ptr %997 = extractelement <2 x i64> %994, i32 1 %998 = inttoptr i64 %997 to ptr %idxprom.i.i.i.i655 = zext i32 %spec.store.select.i.i.i643 to i64 %arrayidx.i.i.i.i656 = getelementptr inbounds nuw i32, ptr %996, i64 %idxprom.i.i.i.i655, !amdgpu.uniform !42 %999 = load atomic i32, ptr %arrayidx.i.i.i.i656 monotonic, align 4 %1000 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %999) %arrayidx.i45.i.i.i657 = getelementptr inbounds nuw i32, ptr %998, i64 %idxprom.i.i.i.i655, !amdgpu.uniform !42 %1001 = load atomic i32, ptr %arrayidx.i45.i.i.i657 monotonic, align 4 %1002 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1001) %cmp.i46.not.i.i.i658 = icmp ne i32 %1000, %1002 br i1 %cmp.i46.not.i.i.i658, label %if.then12.i.i.i659, label %Flow3604, !amdgpu.uniform !42 if.then12.i.i.i659: ; preds = %if.then.i.i.i.i654 fence syncscope("agent") release %1003 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %982, i1 true) %iszero.i.i.i.i.i.i.i660 = icmp ne i64 %982, 0 %cmp2.i.i.i.i.i.i661 = icmp eq i64 %1003, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i662 = select i1 %iszero.i.i.i.i.i.i.i660, i1 %cmp2.i.i.i.i.i.i661, i1 false %conv4.i.i51.i.i.i663 = zext i1 %cmp.i.i.i.i.i.i662 to i32 %shl.i.i52.i.i.i664 = shl nuw i32 %conv4.i.i51.i.i.i663, %983 %xor.i.i.i.i.i665 = xor i32 %shl.i.i52.i.i.i664, -1 %1004 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2507, !amdgpu.uniform !42 1005: ; preds = %ComputeEnd2508 %sunkaddr3259 = getelementptr inbounds i8, ptr addrspace(1) %3131, i64 40 %1006 = atomicrmw and ptr addrspace(1) %sunkaddr3259, i32 %.lcssa4000 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1007, !amdgpu.uniform !42 1007: ; preds = %1005, %ComputeEnd2508 call void @llvm.amdgcn.end.cf.i64(i64 %3158) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3604, !amdgpu.uniform !42 if.end14.i.i.i723: ; preds = %Flow3604 %1008 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %982, i1 true) %iszero.i.i.i.i.i.i724 = icmp ne i64 %982, 0 %cmp2.i.i.i.i.i725 = icmp eq i64 %1008, %sh_prom.i.i.i.i %cmp.i.i.i.i.i726 = select i1 %iszero.i.i.i.i.i.i724, i1 %cmp2.i.i.i.i.i725, i1 false %1009 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i726) %1010 = extractvalue { i1, i64 } %1009, 0 %1011 = extractvalue { i1, i64 } %1009, 1 br i1 %1010, label %if.then16.i.i.i728, label %if.end22.i.i.i727 if.then16.i.i.i728: ; preds = %if.end14.i.i.i723 %1012 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i729 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1012, i64 %idxprom.i.i.i.i655, i32 1 store i32 1660944387, ptr %opcode.i.i.i729, align 8, !tbaa !77 %arrayidx21.i.i.i730 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1012, i64 %idxprom.i.i.i.i655 store i64 %982, ptr %arrayidx21.i.i.i730, align 8, !tbaa !80 br label %if.end22.i.i.i727, !amdgpu.uniform !42 Flow3605: ; preds = %if.end22.i.i.i727, %Flow3604 %1013 = phi i32 [ %1000, %if.end22.i.i.i727 ], [ %retval.sroa.8.0.i.i.i640, %Flow3604 ] %1014 = phi i64 [ %982, %if.end22.i.i.i727 ], [ %retval.sroa.2.0.i.i.i639, %Flow3604 ] %1015 = phi i32 [ %spec.store.select.i.i.i643, %if.end22.i.i.i727 ], [ %retval.sroa.6.0.i.i.i637, %Flow3604 ] br label %cleanup26.i.i.i666, !amdgpu.uniform !42 if.end22.i.i.i727: ; preds = %if.then16.i.i.i728, %if.end14.i.i.i723 call void @llvm.amdgcn.end.cf.i64(i64 %1011) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3605, !amdgpu.uniform !42 Flow3606: ; preds = %cleanup26.i.i.i666, %989 %1016 = phi i32 [ %1015, %cleanup26.i.i.i666 ], [ %978, %989 ] %1017 = phi i64 [ %1014, %cleanup26.i.i.i666 ], [ %979, %989 ] %1018 = phi i32 [ %1013, %cleanup26.i.i.i666 ], [ %980, %989 ] %1019 = phi i32 [ %1013, %cleanup26.i.i.i666 ], [ %retval.sroa.8.0.i.i.i640, %989 ] %1020 = phi i64 [ %1014, %cleanup26.i.i.i666 ], [ %retval.sroa.2.0.i.i.i639, %989 ] %1021 = phi i32 [ %1015, %cleanup26.i.i.i666 ], [ %retval.sroa.6.0.i.i.i637, %989 ] %1022 = phi i1 [ %cmp.i46.not.i.i.i658, %cleanup26.i.i.i666 ], [ true, %989 ] br i1 %1022, label %for.inc.i.i.i671, label %Flow3607, !amdgpu.uniform !42 cleanup26.i.i.i666: ; preds = %Flow3605 br label %Flow3606, !amdgpu.uniform !42 for.inc.i.i.i671: ; preds = %Flow3606 %inc.i.i.i676 = add i32 %spec.store.select.i.i.i643, 1 br label %Flow3607, !amdgpu.uniform !42 Flow3607: ; preds = %for.inc.i.i.i671, %Flow3606 %1023 = phi i32 [ %inc.i.i.i676, %for.inc.i.i.i671 ], [ poison, %Flow3606 ] %1024 = phi i1 [ false, %for.inc.i.i.i671 ], [ true, %Flow3606 ] br i1 %1024, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i677, label %for.cond.i.i.i636, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i677: ; preds = %Flow3607 %.lcssa4003 = phi i32 [ %1016, %Flow3607 ] %.lcssa4002 = phi i64 [ %1017, %Flow3607 ] %.lcssa4001 = phi i32 [ %1018, %Flow3607 ] fence acquire %1025 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i678 = shl i32 %.lcssa4003, 6 %idxprom.i19.i.i.i.i.i679 = zext i32 %mul.i.i.i.i.i.i678 to i64 %arrayidx.i20.i.i.i.i.i680 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %1025, i64 %idxprom.i19.i.i.i.i.i679 %arrayidx.i22.i.i.i.i.i681 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i680, i64 %sh_prom.i.i.i.i store i64 1, ptr %arrayidx.i22.i.i.i.i.i681, align 8, !tbaa !82 %arrayidx6.i.i.i.i.i.i.i682 = getelementptr inbounds nuw i8, ptr %arrayidx.i22.i.i.i.i.i681, i64 8 store i8 10, ptr %arrayidx6.i.i.i.i.i.i.i682, align 8 %tobool.not.i.i.i.i.i.i683 = icmp eq i32 %.lcssa4001, 0 %conv.i.i.i.i.i.i684 = zext i1 %tobool.not.i.i.i.i.i.i683 to i32 fence release %1026 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i685 = zext i32 %.lcssa4003 to i64 %arrayidx.i24.i.i.i.i.i686 = getelementptr inbounds nuw i32, ptr %1026, i64 %idxprom.i23.i.i.i.i.i685 store atomic i32 %conv.i.i.i.i.i.i684, ptr %arrayidx.i24.i.i.i.i.i686 monotonic, align 4 %1027 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i687 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1027, i64 %idxprom.i23.i.i.i.i.i685, !amdgpu.uniform !42 %1028 = load i64, ptr %arrayidx.i.i5.i.i687, align 8, !tbaa !80 br label %while.cond.i.i.i.i688, !amdgpu.uniform !42 while.cond.i.i.i.i688: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i677, %Flow3603 %phi.broken3803 = phi i64 [ 0, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i677 ], [ %1043, %Flow3603 ] %port.sroa.37.0.i.i689 = phi i32 [ %1041, %Flow3603 ], [ %conv.i.i.i.i.i.i684, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i677 ] %idx.0.i.i.i.i690 = phi i64 [ %1040, %Flow3603 ], [ 56, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i677 ] %cmp.i.i.i.i691 = icmp eq i64 %idx.0.i.i.i.i690, 0 %1029 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i691) %and.i.i.i.i6.i.i692 = and i64 %1029, %1028 %tobool.not.i.i.i.i693 = icmp ne i64 %and.i.i.i.i6.i.i692, 0 %1030 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i694 = getelementptr inbounds nuw i32, ptr %1030, i64 %idxprom.i23.i.i.i.i.i685, !amdgpu.uniform !42 %1031 = load atomic i32, ptr %arrayidx.i22.i.i.i694 monotonic, align 4 %1032 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i693) %1033 = extractvalue { i1, i64 } %1032, 0 %1034 = extractvalue { i1, i64 } %1032, 1 br i1 %1033, label %cond.false.i8.i.i.i.i695, label %Flow3603 cond.false.i8.i.i.i.i695: ; preds = %while.cond.i.i.i.i688 %1035 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1031) %1036 = icmp ne i32 %1035, %port.sroa.37.0.i.i689 br i1 %1036, label %while.body.i.i21.i.i.i.i696.preheader, label %Flow3602, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i696.preheader: ; preds = %cond.false.i8.i.i.i.i695 br label %while.body.i.i21.i.i.i.i696, !amdgpu.uniform !42 Flow3602: ; preds = %Flow3601, %cond.false.i8.i.i.i.i695 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i699, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i696: ; preds = %while.body.i.i21.i.i.i.i696.preheader, %while.body.i.i21.i.i.i.i696 tail call void @llvm.amdgcn.s.sleep(i32 2) %1037 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i697 = getelementptr inbounds nuw i32, ptr %1037, i64 %idxprom.i23.i.i.i.i.i685, !amdgpu.uniform !42 %1038 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i697 monotonic, align 4 %1039 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1038) %cmp.i.not.i.i23.i.i.i.i698 = icmp eq i32 %1039, %port.sroa.37.0.i.i689 br i1 %cmp.i.not.i.i23.i.i.i.i698, label %Flow3601, label %while.body.i.i21.i.i.i.i696, !amdgpu.uniform !42 Flow3601: ; preds = %while.body.i.i21.i.i.i.i696 br label %Flow3602, !amdgpu.uniform !42 Flow3603: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i700, %while.cond.i.i.i.i688 %1040 = phi i64 [ %add.i.i.i.i703, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i700 ], [ poison, %while.cond.i.i.i.i688 ] %1041 = phi i32 [ %conv.i.i26.i.i.i.i701, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i700 ], [ poison, %while.cond.i.i.i.i688 ] %1042 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i700 ], [ true, %while.cond.i.i.i.i688 ] call void @llvm.amdgcn.end.cf.i64(i64 %1034) %1043 = call i64 @llvm.amdgcn.if.break.i64(i1 %1042, i64 %phi.broken3803) %1044 = call i1 @llvm.amdgcn.loop.i64(i64 %1043) br i1 %1044, label %cond.false.i.i.i709, label %while.cond.i.i.i.i688 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i699: ; preds = %Flow3602 fence acquire br i1 %cmp.i.i.i.i691, label %if.then.i.i.i.i.i.i.i704, label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i700, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i704: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i699 %1045 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %arrayidx.i20.i35.i.i.i.i707 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %1045, i64 %idxprom.i19.i.i.i.i.i679 %arrayidx.i22.i38.i.i.i.i708 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i707, i64 %sh_prom.i.i.i.i store i8 10, ptr %arrayidx.i22.i38.i.i.i.i708, align 1 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i700, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i700: ; preds = %if.then.i.i.i.i.i.i.i704, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i699 %conv.i.i26.i.i.i.i701 = xor i32 %port.sroa.37.0.i.i689, 1 fence release %1046 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i702 = getelementptr inbounds nuw i32, ptr %1046, i64 %idxprom.i23.i.i.i.i.i685 store atomic i32 %conv.i.i26.i.i.i.i701, ptr %arrayidx.i24.i29.i.i.i.i702 monotonic, align 4 %add.i.i.i.i703 = add i64 %idx.0.i.i.i.i690, 64 br label %Flow3603, !amdgpu.uniform !42 cond.false.i.i.i709: ; preds = %Flow3603 %.lcssa3997 = phi i64 [ %1043, %Flow3603 ] %port.sroa.37.0.i.i689.lcssa = phi i32 [ %port.sroa.37.0.i.i689, %Flow3603 ] %.lcssa3996 = phi i32 [ %1031, %Flow3603 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3997) %1047 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa3996) %1048 = icmp ne i32 %1047, %port.sroa.37.0.i.i689.lcssa %1049 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1048) %1050 = extractvalue { i1, i64 } %1049, 0 %1051 = extractvalue { i1, i64 } %1049, 1 br i1 %1050, label %while.body.i.i.i.i710.preheader, label %Flow3600 while.body.i.i.i.i710.preheader: ; preds = %cond.false.i.i.i709 br label %while.body.i.i.i.i710, !amdgpu.uniform !42 Flow3600: ; preds = %Flow3599, %cond.false.i.i.i709 call void @llvm.amdgcn.end.cf.i64(i64 %1051) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit, !amdgpu.uniform !42 while.body.i.i.i.i710: ; preds = %while.body.i.i.i.i710.preheader, %while.body.i.i.i.i710 %phi.broken3804 = phi i64 [ 0, %while.body.i.i.i.i710.preheader ], [ %1055, %while.body.i.i.i.i710 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %1052 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i711 = getelementptr inbounds nuw i32, ptr %1052, i64 %idxprom.i23.i.i.i.i.i685, !amdgpu.uniform !42 %1053 = load atomic i32, ptr %arrayidx.i.i.i8.i.i711 monotonic, align 4 %1054 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1053) %cmp.i.not.i.i.i.i712 = icmp eq i32 %1054, %port.sroa.37.0.i.i689.lcssa %1055 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i712, i64 %phi.broken3804) %1056 = call i1 @llvm.amdgcn.loop.i64(i64 %1055) br i1 %1056, label %Flow3599, label %while.body.i.i.i.i710 Flow3599: ; preds = %while.body.i.i.i.i710 %.lcssa3995 = phi i64 [ %1055, %while.body.i.i.i.i710 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3995) br label %Flow3600, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit: ; preds = %Flow3600 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %1057 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa4002, i1 true) %iszero.i.i.i.i.i13.i.i714 = icmp ne i64 %.lcssa4002, 0 %cmp2.i.i.i.i14.i.i715 = icmp eq i64 %1057, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i716 = select i1 %iszero.i.i.i.i.i13.i.i714, i1 %cmp2.i.i.i.i14.i.i715, i1 false %1058 = and i32 %.lcssa4003, 31 %conv4.i.i.i19.i.i720 = zext i1 %cmp.i.i.i.i15.i.i716 to i32 %shl.i.i.i20.i.i721 = shl nuw i32 %conv4.i.i.i19.i.i720, %1058 %xor.i.i.i21.i.i722 = xor i32 %shl.i.i.i20.i.i721, -1 %1059 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2511, !amdgpu.uniform !42 1060: ; preds = %ComputeEnd2512 %div8.i.i.i16.i.i717 = lshr i32 %.lcssa4003, 5 %idxprom.i.i.i17.i.i718 = zext nneg i32 %div8.i.i.i16.i.i717 to i64 %1061 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i718 %sunkaddr3260 = getelementptr inbounds i8, ptr addrspace(1) %1061, i64 40 %1062 = atomicrmw and ptr addrspace(1) %sunkaddr3260, i32 %.lcssa3994 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1063, !amdgpu.uniform !42 1063: ; preds = %1060, %ComputeEnd2512 call void @llvm.amdgcn.end.cf.i64(i64 %3175) tail call void @llvm.amdgcn.wave.barrier() br i1 %cmp2.i.i.i37.i, label %if.then3.i.i.i67.i, label %if.end4.i.i.i56.i, !amdgpu.uniform !42 if.then3.i.i.i67.i: ; preds = %1063 %mul.i.i.i68.i = mul nuw i64 %inc.i.i.i34.i, 11 %div18.i.i.i69.i = lshr i64 %mul.i.i.i68.i, 3 br label %if.end4.i.i.i56.i, !amdgpu.uniform !42 if.end4.i.i.i56.i: ; preds = %if.then3.i.i.i67.i, %1063 %new_capacity.addr.0.i.i.i57.i = phi i64 [ %div18.i.i.i69.i, %if.then3.i.i.i67.i ], [ %inc.i.i.i34.i, %1063 ] %sub.i.i731 = add i64 %new_capacity.addr.0.i.i.i57.i, 7 %div2.i.i732 = and i64 %sub.i.i731, -8 %1064 = load ptr, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %add.ptr.i.i733 = getelementptr inbounds nuw i8, ptr %1064, i64 %div2.i.i732 store ptr %add.ptr.i.i733, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 br i1 %613, label %loop-memcpy-expansion2279.preheader, label %Flow3598, !amdgpu.uniform !42 loop-memcpy-expansion2279.preheader: ; preds = %if.end4.i.i.i56.i br label %loop-memcpy-expansion2279, !amdgpu.uniform !42 Flow3598: ; preds = %Flow3597, %if.end4.i.i.i56.i br label %loop-memcpy-residual-header2282, !amdgpu.uniform !42 loop-memcpy-expansion2279: ; preds = %loop-memcpy-expansion2279.preheader, %loop-memcpy-expansion2279 %loop-index2280 = phi i64 [ %1068, %loop-memcpy-expansion2279 ], [ 0, %loop-memcpy-expansion2279.preheader ] %1065 = getelementptr i8, ptr %4, i64 %loop-index2280, !amdgpu.uniform !42 %1066 = load <4 x i32>, ptr %1065, align 1 %1067 = getelementptr i8, ptr %1064, i64 %loop-index2280 store <4 x i32> %1066, ptr %1067, align 1 %1068 = add i64 %loop-index2280, 16 %1069 = icmp uge i64 %1068, %612 br i1 %1069, label %Flow3597, label %loop-memcpy-expansion2279, !amdgpu.uniform !42 Flow3596: ; preds = %Flow3595, %loop-memcpy-residual-header2282 br label %post-loop-memcpy-expansion2278, !amdgpu.uniform !42 loop-memcpy-residual2281: ; preds = %loop-memcpy-residual2281.preheader, %loop-memcpy-residual2281 %residual-loop-index2283 = phi i64 [ %1071, %loop-memcpy-residual2281 ], [ 0, %loop-memcpy-residual2281.preheader ] %scevgep3045 = getelementptr i8, ptr %scevgep3044, i64 %residual-loop-index2283, !amdgpu.uniform !42 %1070 = load i8, ptr %scevgep3045, align 1 %scevgep3043 = getelementptr i8, ptr %scevgep3042, i64 %residual-loop-index2283 store i8 %1070, ptr %scevgep3043, align 1 %1071 = add i64 %residual-loop-index2283, 1 %1072 = icmp uge i64 %1071, %611 br i1 %1072, label %Flow3595, label %loop-memcpy-residual2281, !amdgpu.uniform !42 Flow3595: ; preds = %loop-memcpy-residual2281 br label %Flow3596, !amdgpu.uniform !42 post-loop-memcpy-expansion2278: ; preds = %Flow3596 %sub.ptr.lhs.cast.i.i734 = ptrtoint ptr %add.ptr.i.i733 to i64 %sub.ptr.sub.i.i735 = sub i64 %sub.ptr.lhs.cast.i.i734, ptrtoint (ptr addrspacecast (ptr addrspace(1) @_ZN12_GLOBAL__N_16memoryE to ptr) to i64) %cmp.i.i736 = icmp ugt i64 %sub.ptr.sub.i.i735, 65335 %cond.i.i737 = select i1 %cmp.i.i736, ptr null, ptr %1064 %cmp.not.i10.i.i64.i = icmp ne ptr %cond.i.i737, addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr) br i1 %cmp.not.i10.i.i64.i, label %if.then.i.i.i65.i, label %for.cond.i.i.i739.preheader, !amdgpu.uniform !42 if.then.i.i.i65.i: ; preds = %post-loop-memcpy-expansion2278 %arrayidx.i.i.i66.i = getelementptr inbounds nuw i8, ptr %1064, i64 %spec.select.i store i8 0, ptr %arrayidx.i.i.i66.i, align 1, !tbaa !57 br label %for.cond.i.i.i739.preheader, !amdgpu.uniform !42 for.cond.i.i.i739.preheader: ; preds = %if.then.i.i.i65.i, %post-loop-memcpy-expansion2278 br label %for.cond.i.i.i739, !amdgpu.uniform !42 for.cond.i.i.i739: ; preds = %for.cond.i.i.i739.preheader, %Flow3594 %1073 = phi i32 [ %1111, %Flow3594 ], [ poison, %for.cond.i.i.i739.preheader ] %1074 = phi i64 [ %1112, %Flow3594 ], [ poison, %for.cond.i.i.i739.preheader ] %1075 = phi i32 [ %1113, %Flow3594 ], [ poison, %for.cond.i.i.i739.preheader ] %retval.sroa.6.0.i.i.i740 = phi i32 [ %1116, %Flow3594 ], [ undef, %for.cond.i.i.i739.preheader ] %retval.sroa.2.0.i.i.i742 = phi i64 [ %1115, %Flow3594 ], [ undef, %for.cond.i.i.i739.preheader ] %retval.sroa.8.0.i.i.i743 = phi i32 [ %1114, %Flow3594 ], [ undef, %for.cond.i.i.i739.preheader ] %index.0.i.i.i744 = phi i32 [ %1118, %Flow3594 ], [ 0, %for.cond.i.i.i739.preheader ] %1076 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i745 = icmp ult i32 %index.0.i.i.i744, %1076 %spec.store.select.i.i.i746 = select i1 %cmp.not.i.i.i745, i32 %index.0.i.i.i744, i32 0 %1077 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %1078 = and i32 %spec.store.select.i.i.i746, 31 %1079 = lshr i64 %1077, %sh_prom.i.i.i.i %1080 = trunc i64 %1079 to i32 %conv4.i.i.i.i.i750 = and i32 %1080, 1 %shl.i.i.i.i.i751 = shl nuw i32 %conv4.i.i.i.i.i750, %1078 %1081 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2515, !amdgpu.uniform !42 1082: ; preds = %ComputeEnd2516 %sunkaddr3261 = getelementptr inbounds i8, ptr addrspace(1) %3185, i64 40 %1083 = atomicrmw or ptr addrspace(1) %sunkaddr3261, i32 %.lcssa3988 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1084, !amdgpu.uniform !42 1084: ; preds = %1082, %ComputeEnd2516 %1085 = phi i32 [ %1083, %1082 ], [ poison, %ComputeEnd2516 ] call void @llvm.amdgcn.end.cf.i64(i64 %3194) %1086 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %1085) %1087 = or i32 %1086, %.lcssa3989 %shl5.i.i.i.i.i752 = shl nuw i32 1, %1078 %and.i.i.i.i.i753 = and i32 %shl5.i.i.i.i.i752, %1087 %tobool3.i.i.i.i754 = icmp ne i32 %and.i.i.i.i.i753, 0 %1088 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i754) %and.i.i.i.i.i.i755 = and i64 %1088, %1077 %cmp.i.not.i.i.i756 = icmp ne i64 %1077, %and.i.i.i.i.i.i755 br i1 %cmp.i.not.i.i.i756, label %if.then.i.i.i.i757, label %Flow3593, !amdgpu.uniform !42 if.then.i.i.i.i757: ; preds = %1084 fence syncscope("agent") acquire %1089 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %1090 = extractelement <2 x i64> %1089, i32 0 %1091 = inttoptr i64 %1090 to ptr %1092 = extractelement <2 x i64> %1089, i32 1 %1093 = inttoptr i64 %1092 to ptr %idxprom.i.i.i.i758 = zext i32 %spec.store.select.i.i.i746 to i64 %arrayidx.i.i.i.i759 = getelementptr inbounds nuw i32, ptr %1091, i64 %idxprom.i.i.i.i758, !amdgpu.uniform !42 %1094 = load atomic i32, ptr %arrayidx.i.i.i.i759 monotonic, align 4 %1095 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1094) %arrayidx.i45.i.i.i760 = getelementptr inbounds nuw i32, ptr %1093, i64 %idxprom.i.i.i.i758, !amdgpu.uniform !42 %1096 = load atomic i32, ptr %arrayidx.i45.i.i.i760 monotonic, align 4 %1097 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1096) %cmp.i46.not.i.i.i761 = icmp ne i32 %1095, %1097 br i1 %cmp.i46.not.i.i.i761, label %if.then12.i.i.i762, label %Flow3591, !amdgpu.uniform !42 if.then12.i.i.i762: ; preds = %if.then.i.i.i.i757 fence syncscope("agent") release %1098 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1077, i1 true) %iszero.i.i.i.i.i.i.i763 = icmp ne i64 %1077, 0 %cmp2.i.i.i.i.i.i764 = icmp eq i64 %1098, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i765 = select i1 %iszero.i.i.i.i.i.i.i763, i1 %cmp2.i.i.i.i.i.i764, i1 false %conv4.i.i51.i.i.i766 = zext i1 %cmp.i.i.i.i.i.i765 to i32 %shl.i.i52.i.i.i767 = shl nuw i32 %conv4.i.i51.i.i.i766, %1078 %xor.i.i.i.i.i768 = xor i32 %shl.i.i52.i.i.i767, -1 %1099 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2520, !amdgpu.uniform !42 1100: ; preds = %ComputeEnd2521 %sunkaddr3262 = getelementptr inbounds i8, ptr addrspace(1) %3185, i64 40 %1101 = atomicrmw and ptr addrspace(1) %sunkaddr3262, i32 %.lcssa3990 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1102, !amdgpu.uniform !42 1102: ; preds = %1100, %ComputeEnd2521 call void @llvm.amdgcn.end.cf.i64(i64 %3212) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3591, !amdgpu.uniform !42 if.end14.i.i.i828: ; preds = %Flow3591 %1103 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1077, i1 true) %iszero.i.i.i.i.i.i829 = icmp ne i64 %1077, 0 %cmp2.i.i.i.i.i830 = icmp eq i64 %1103, %sh_prom.i.i.i.i %cmp.i.i.i.i.i831 = select i1 %iszero.i.i.i.i.i.i829, i1 %cmp2.i.i.i.i.i830, i1 false %1104 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i831) %1105 = extractvalue { i1, i64 } %1104, 0 %1106 = extractvalue { i1, i64 } %1104, 1 br i1 %1105, label %if.then16.i.i.i833, label %if.end22.i.i.i832 if.then16.i.i.i833: ; preds = %if.end14.i.i.i828 %1107 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i834 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1107, i64 %idxprom.i.i.i.i758, i32 1 store i32 1660944387, ptr %opcode.i.i.i834, align 8, !tbaa !77 %arrayidx21.i.i.i835 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1107, i64 %idxprom.i.i.i.i758 store i64 %1077, ptr %arrayidx21.i.i.i835, align 8, !tbaa !80 br label %if.end22.i.i.i832, !amdgpu.uniform !42 Flow3592: ; preds = %if.end22.i.i.i832, %Flow3591 %1108 = phi i32 [ %1095, %if.end22.i.i.i832 ], [ %retval.sroa.8.0.i.i.i743, %Flow3591 ] %1109 = phi i64 [ %1077, %if.end22.i.i.i832 ], [ %retval.sroa.2.0.i.i.i742, %Flow3591 ] %1110 = phi i32 [ %spec.store.select.i.i.i746, %if.end22.i.i.i832 ], [ %retval.sroa.6.0.i.i.i740, %Flow3591 ] br label %cleanup26.i.i.i769, !amdgpu.uniform !42 if.end22.i.i.i832: ; preds = %if.then16.i.i.i833, %if.end14.i.i.i828 call void @llvm.amdgcn.end.cf.i64(i64 %1106) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3592, !amdgpu.uniform !42 Flow3593: ; preds = %cleanup26.i.i.i769, %1084 %1111 = phi i32 [ %1110, %cleanup26.i.i.i769 ], [ %1073, %1084 ] %1112 = phi i64 [ %1109, %cleanup26.i.i.i769 ], [ %1074, %1084 ] %1113 = phi i32 [ %1108, %cleanup26.i.i.i769 ], [ %1075, %1084 ] %1114 = phi i32 [ %1108, %cleanup26.i.i.i769 ], [ %retval.sroa.8.0.i.i.i743, %1084 ] %1115 = phi i64 [ %1109, %cleanup26.i.i.i769 ], [ %retval.sroa.2.0.i.i.i742, %1084 ] %1116 = phi i32 [ %1110, %cleanup26.i.i.i769 ], [ %retval.sroa.6.0.i.i.i740, %1084 ] %1117 = phi i1 [ %cmp.i46.not.i.i.i761, %cleanup26.i.i.i769 ], [ true, %1084 ] br i1 %1117, label %for.inc.i.i.i774, label %Flow3594, !amdgpu.uniform !42 cleanup26.i.i.i769: ; preds = %Flow3592 br label %Flow3593, !amdgpu.uniform !42 for.inc.i.i.i774: ; preds = %Flow3593 %inc.i.i.i779 = add i32 %spec.store.select.i.i.i746, 1 br label %Flow3594, !amdgpu.uniform !42 Flow3594: ; preds = %for.inc.i.i.i774, %Flow3593 %1118 = phi i32 [ %inc.i.i.i779, %for.inc.i.i.i774 ], [ poison, %Flow3593 ] %1119 = phi i1 [ false, %for.inc.i.i.i774 ], [ true, %Flow3593 ] br i1 %1119, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i780, label %for.cond.i.i.i739, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i780: ; preds = %Flow3594 %.lcssa3993 = phi i32 [ %1111, %Flow3594 ] %.lcssa3992 = phi i64 [ %1112, %Flow3594 ] %.lcssa3991 = phi i32 [ %1113, %Flow3594 ] fence acquire %1120 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i781 = shl i32 %.lcssa3993, 6 %idxprom.i19.i.i.i.i.i782 = zext i32 %mul.i.i.i.i.i.i781 to i64 %arrayidx.i20.i.i.i.i.i783 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %1120, i64 %idxprom.i19.i.i.i.i.i782 %arrayidx.i22.i.i.i.i.i784 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i783, i64 %sh_prom.i.i.i.i store i64 %spec.select.i, ptr %arrayidx.i22.i.i.i.i.i784, align 8, !tbaa !82 br i1 %672, label %loop-memcpy-expansion2231.preheader, label %Flow3590, !amdgpu.uniform !42 loop-memcpy-expansion2231.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i780 %1121 = add nuw nsw i64 %76, 8 %scevgep3039 = getelementptr i8, ptr %1120, i64 %1121 %1122 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i782, 6 %scevgep3040 = getelementptr i8, ptr %scevgep3039, i64 %1122 br label %loop-memcpy-expansion2231, !amdgpu.uniform !42 Flow3590: ; preds = %Flow3589, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i780 br label %loop-memcpy-residual-header2234, !amdgpu.uniform !42 loop-memcpy-expansion2231: ; preds = %loop-memcpy-expansion2231.preheader, %loop-memcpy-expansion2231 %loop-index2232 = phi i64 [ %1125, %loop-memcpy-expansion2231 ], [ 0, %loop-memcpy-expansion2231.preheader ] %1123 = getelementptr i8, ptr %1064, i64 %loop-index2232, !amdgpu.uniform !42 %1124 = load <4 x i32>, ptr %1123, align 1 %scevgep3041 = getelementptr i8, ptr %scevgep3040, i64 %loop-index2232 store <4 x i32> %1124, ptr %scevgep3041, align 1 %1125 = add i64 %loop-index2232, 16 %1126 = icmp uge i64 %1125, %671 br i1 %1126, label %Flow3589, label %loop-memcpy-expansion2231, !amdgpu.uniform !42 Flow3588: ; preds = %Flow3586, %Flow3587 %1127 = phi i64 [ %2598, %Flow3586 ], [ %2594, %Flow3587 ] br label %post-loop-memcpy-expansion2230, !amdgpu.uniform !42 loop-memcpy-residual2233: ; preds = %loop-memcpy-residual2233.preheader, %loop-memcpy-residual2233 %residual-loop-index2235 = phi i64 [ %1129, %loop-memcpy-residual2233 ], [ 0, %loop-memcpy-residual2233.preheader ] %scevgep3038 = getelementptr i8, ptr %scevgep3037, i64 %residual-loop-index2235, !amdgpu.uniform !42 %1128 = load i8, ptr %scevgep3038, align 1 %scevgep3036 = getelementptr i8, ptr %scevgep3035, i64 %residual-loop-index2235 store i8 %1128, ptr %scevgep3036, align 1 %1129 = add i64 %residual-loop-index2235, 1 %1130 = icmp uge i64 %1129, %670 br i1 %1130, label %Flow3586, label %loop-memcpy-residual2233, !amdgpu.uniform !42 Flow3586: ; preds = %loop-memcpy-residual2233 br label %Flow3588, !amdgpu.uniform !42 post-loop-memcpy-expansion2230: ; preds = %Flow3588 %tobool.not.i.i.i.i.i.i787 = icmp eq i32 %.lcssa3991, 0 %conv.i.i.i.i.i.i788 = zext i1 %tobool.not.i.i.i.i.i.i787 to i32 fence release %1131 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i789 = zext i32 %.lcssa3993 to i64 %arrayidx.i24.i.i.i.i.i790 = getelementptr inbounds nuw i32, ptr %1131, i64 %idxprom.i23.i.i.i.i.i789 store atomic i32 %conv.i.i.i.i.i.i788, ptr %arrayidx.i24.i.i.i.i.i790 monotonic, align 4 %1132 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i791 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1132, i64 %idxprom.i23.i.i.i.i.i789, !amdgpu.uniform !42 %1133 = load i64, ptr %arrayidx.i.i5.i.i791, align 8, !tbaa !80 %scevgep3020 = getelementptr i8, ptr %1064, i64 56 br label %while.cond.i.i.i.i792, !amdgpu.uniform !42 while.cond.i.i.i.i792: ; preds = %post-loop-memcpy-expansion2230, %Flow3585 %phi.broken3805 = phi i64 [ 0, %post-loop-memcpy-expansion2230 ], [ %1150, %Flow3585 ] %lsr.iv3027 = phi i64 [ %1148, %Flow3585 ], [ %686, %post-loop-memcpy-expansion2230 ] %lsr.iv3021 = phi ptr [ %1147, %Flow3585 ], [ %scevgep3020, %post-loop-memcpy-expansion2230 ] %port.sroa.37.0.i.i793 = phi i32 [ %1146, %Flow3585 ], [ %conv.i.i.i.i.i.i788, %post-loop-memcpy-expansion2230 ] %idx.0.i.i.i.i794 = phi i64 [ %1145, %Flow3585 ], [ 56, %post-loop-memcpy-expansion2230 ] %cmp.i.i.i.i795 = icmp ugt i64 %spec.select.i, %idx.0.i.i.i.i794 %1134 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i795) %and.i.i.i.i6.i.i796 = and i64 %1134, %1133 %tobool.not.i.i.i.i797 = icmp ne i64 %and.i.i.i.i6.i.i796, 0 %1135 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i798 = getelementptr inbounds nuw i32, ptr %1135, i64 %idxprom.i23.i.i.i.i.i789, !amdgpu.uniform !42 %1136 = load atomic i32, ptr %arrayidx.i22.i.i.i798 monotonic, align 4 %1137 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i797) %1138 = extractvalue { i1, i64 } %1137, 0 %1139 = extractvalue { i1, i64 } %1137, 1 br i1 %1138, label %cond.false.i8.i.i.i.i799, label %Flow3585 cond.false.i8.i.i.i.i799: ; preds = %while.cond.i.i.i.i792 %1140 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1136) %1141 = icmp ne i32 %1140, %port.sroa.37.0.i.i793 br i1 %1141, label %while.body.i.i21.i.i.i.i800.preheader, label %Flow3584, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i800.preheader: ; preds = %cond.false.i8.i.i.i.i799 br label %while.body.i.i21.i.i.i.i800, !amdgpu.uniform !42 Flow3584: ; preds = %Flow3583, %cond.false.i8.i.i.i.i799 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i803, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i800: ; preds = %while.body.i.i21.i.i.i.i800.preheader, %while.body.i.i21.i.i.i.i800 tail call void @llvm.amdgcn.s.sleep(i32 2) %1142 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i801 = getelementptr inbounds nuw i32, ptr %1142, i64 %idxprom.i23.i.i.i.i.i789, !amdgpu.uniform !42 %1143 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i801 monotonic, align 4 %1144 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1143) %cmp.i.not.i.i23.i.i.i.i802 = icmp eq i32 %1144, %port.sroa.37.0.i.i793 br i1 %cmp.i.not.i.i23.i.i.i.i802, label %Flow3583, label %while.body.i.i21.i.i.i.i800, !amdgpu.uniform !42 Flow3583: ; preds = %while.body.i.i21.i.i.i.i800 br label %Flow3584, !amdgpu.uniform !42 Flow3585: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i804, %while.cond.i.i.i.i792 %1145 = phi i64 [ %add.i.i.i.i807, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i804 ], [ poison, %while.cond.i.i.i.i792 ] %1146 = phi i32 [ %conv.i.i26.i.i.i.i805, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i804 ], [ poison, %while.cond.i.i.i.i792 ] %1147 = phi ptr [ %scevgep3022, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i804 ], [ poison, %while.cond.i.i.i.i792 ] %1148 = phi i64 [ %lsr.iv.next3028, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i804 ], [ poison, %while.cond.i.i.i.i792 ] %1149 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i804 ], [ true, %while.cond.i.i.i.i792 ] call void @llvm.amdgcn.end.cf.i64(i64 %1139) %1150 = call i64 @llvm.amdgcn.if.break.i64(i1 %1149, i64 %phi.broken3805) %1151 = call i1 @llvm.amdgcn.loop.i64(i64 %1150) br i1 %1151, label %cond.false.i.i.i814, label %while.cond.i.i.i.i792 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i803: ; preds = %Flow3584 fence acquire br i1 %cmp.i.i.i.i795, label %if.then.i.i.i.i.i.i.i808, label %Flow3582, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i808: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i803 %sub.i.i.i.i.i.i.i810 = sub nuw i64 %spec.select.i, %idx.0.i.i.i.i794 %spec.select.i.i.i36.i.i.i.i811 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i810, i64 64) %1152 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %1153 = and i64 %spec.select.i.i.i36.i.i.i.i811, 15 %1154 = sub i64 %spec.select.i.i.i36.i.i.i.i811, %1153 %1155 = icmp ne i64 %1154, 0 br i1 %1155, label %loop-memcpy-expansion2225.preheader, label %Flow3581, !amdgpu.uniform !42 loop-memcpy-expansion2225.preheader: ; preds = %if.then.i.i.i.i.i.i.i808 %arrayidx.i20.i35.i.i.i.i812 = getelementptr %"struct.rpc::Buffer", ptr %1152, i64 %idxprom.i19.i.i.i.i.i782 %arrayidx.i22.i38.i.i.i.i813 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i812, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2225, !amdgpu.uniform !42 Flow3581: ; preds = %Flow3580, %if.then.i.i.i.i.i.i.i808 br label %loop-memcpy-residual-header2228, !amdgpu.uniform !42 loop-memcpy-expansion2225: ; preds = %loop-memcpy-expansion2225.preheader, %loop-memcpy-expansion2225 %loop-index2226 = phi i64 [ %1158, %loop-memcpy-expansion2225 ], [ 0, %loop-memcpy-expansion2225.preheader ] %scevgep3023 = getelementptr i8, ptr %lsr.iv3021, i64 %loop-index2226, !amdgpu.uniform !42 %1156 = load <4 x i32>, ptr %scevgep3023, align 1 %1157 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i813, i64 %loop-index2226 store <4 x i32> %1156, ptr %1157, align 1 %1158 = add i64 %loop-index2226, 16 %1159 = icmp uge i64 %1158, %1154 br i1 %1159, label %Flow3580, label %loop-memcpy-expansion2225, !amdgpu.uniform !42 Flow3579: ; preds = %Flow3578, %loop-memcpy-residual-header2228 br label %Flow3582, !amdgpu.uniform !42 loop-memcpy-residual2227: ; preds = %loop-memcpy-residual2227.preheader, %loop-memcpy-residual2227 %residual-loop-index2229 = phi i64 [ %1161, %loop-memcpy-residual2227 ], [ 0, %loop-memcpy-residual2227.preheader ] %scevgep3033 = getelementptr i8, ptr %scevgep3032, i64 %residual-loop-index2229, !amdgpu.uniform !42 %1160 = load i8, ptr %scevgep3033, align 1 %scevgep3031 = getelementptr i8, ptr %scevgep3030, i64 %residual-loop-index2229 store i8 %1160, ptr %scevgep3031, align 1 %1161 = add i64 %residual-loop-index2229, 1 %1162 = icmp uge i64 %1161, %1153 br i1 %1162, label %Flow3578, label %loop-memcpy-residual2227, !amdgpu.uniform !42 Flow3578: ; preds = %loop-memcpy-residual2227 br label %Flow3579, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i804: ; preds = %Flow3582 %conv.i.i26.i.i.i.i805 = xor i32 %port.sroa.37.0.i.i793, 1 fence release %1163 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i806 = getelementptr inbounds nuw i32, ptr %1163, i64 %idxprom.i23.i.i.i.i.i789 store atomic i32 %conv.i.i26.i.i.i.i805, ptr %arrayidx.i24.i29.i.i.i.i806 monotonic, align 4 %add.i.i.i.i807 = add i64 %idx.0.i.i.i.i794, 64 %scevgep3022 = getelementptr i8, ptr %lsr.iv3021, i64 64 %lsr.iv.next3028 = add i64 %lsr.iv3027, -64 br label %Flow3585, !amdgpu.uniform !42 cond.false.i.i.i814: ; preds = %Flow3585 %.lcssa3987 = phi i64 [ %1150, %Flow3585 ] %port.sroa.37.0.i.i793.lcssa = phi i32 [ %port.sroa.37.0.i.i793, %Flow3585 ] %.lcssa3986 = phi i32 [ %1136, %Flow3585 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3987) %1164 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa3986) %1165 = icmp ne i32 %1164, %port.sroa.37.0.i.i793.lcssa %1166 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1165) %1167 = extractvalue { i1, i64 } %1166, 0 %1168 = extractvalue { i1, i64 } %1166, 1 br i1 %1167, label %while.body.i.i.i.i815.preheader, label %Flow3577 while.body.i.i.i.i815.preheader: ; preds = %cond.false.i.i.i814 br label %while.body.i.i.i.i815, !amdgpu.uniform !42 Flow3577: ; preds = %Flow3576, %cond.false.i.i.i814 call void @llvm.amdgcn.end.cf.i64(i64 %1168) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit836, !amdgpu.uniform !42 while.body.i.i.i.i815: ; preds = %while.body.i.i.i.i815.preheader, %while.body.i.i.i.i815 %phi.broken3806 = phi i64 [ 0, %while.body.i.i.i.i815.preheader ], [ %1172, %while.body.i.i.i.i815 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %1169 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i816 = getelementptr inbounds nuw i32, ptr %1169, i64 %idxprom.i23.i.i.i.i.i789, !amdgpu.uniform !42 %1170 = load atomic i32, ptr %arrayidx.i.i.i8.i.i816 monotonic, align 4 %1171 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1170) %cmp.i.not.i.i.i.i817 = icmp eq i32 %1171, %port.sroa.37.0.i.i793.lcssa %1172 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i817, i64 %phi.broken3806) %1173 = call i1 @llvm.amdgcn.loop.i64(i64 %1172) br i1 %1173, label %Flow3576, label %while.body.i.i.i.i815 Flow3576: ; preds = %while.body.i.i.i.i815 %.lcssa3985 = phi i64 [ %1172, %while.body.i.i.i.i815 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3985) br label %Flow3577, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit836: ; preds = %Flow3577 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %1174 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa3992, i1 true) %iszero.i.i.i.i.i13.i.i819 = icmp ne i64 %.lcssa3992, 0 %cmp2.i.i.i.i14.i.i820 = icmp eq i64 %1174, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i821 = select i1 %iszero.i.i.i.i.i13.i.i819, i1 %cmp2.i.i.i.i14.i.i820, i1 false %1175 = and i32 %.lcssa3993, 31 %conv4.i.i.i19.i.i825 = zext i1 %cmp.i.i.i.i15.i.i821 to i32 %shl.i.i.i20.i.i826 = shl nuw i32 %conv4.i.i.i19.i.i825, %1175 %xor.i.i.i21.i.i827 = xor i32 %shl.i.i.i20.i.i826, -1 %1176 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2524, !amdgpu.uniform !42 1177: ; preds = %ComputeEnd2525 %div8.i.i.i16.i.i822 = lshr i32 %.lcssa3993, 5 %idxprom.i.i.i17.i.i823 = zext nneg i32 %div8.i.i.i16.i.i822 to i64 %1178 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i823 %sunkaddr3263 = getelementptr inbounds i8, ptr addrspace(1) %1178, i64 40 %1179 = atomicrmw and ptr addrspace(1) %sunkaddr3263, i32 %.lcssa3984 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1180, !amdgpu.uniform !42 1180: ; preds = %1177, %ComputeEnd2525 call void @llvm.amdgcn.end.cf.i64(i64 %3229) tail call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i1.i845, !amdgpu.uniform !42 for.cond.i.i1.i845: ; preds = %1180, %Flow3575 %1181 = phi i32 [ %1219, %Flow3575 ], [ poison, %1180 ] %1182 = phi i64 [ %1220, %Flow3575 ], [ poison, %1180 ] %1183 = phi i32 [ %1221, %Flow3575 ], [ poison, %1180 ] %retval.sroa.6.0.i.i.i846 = phi i32 [ %1224, %Flow3575 ], [ undef, %1180 ] %retval.sroa.2.0.i.i.i848 = phi i64 [ %1223, %Flow3575 ], [ undef, %1180 ] %retval.sroa.8.0.i.i.i849 = phi i32 [ %1222, %Flow3575 ], [ undef, %1180 ] %index.0.i.i.i850 = phi i32 [ %1226, %Flow3575 ], [ 0, %1180 ] %1184 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i851 = icmp ult i32 %index.0.i.i.i850, %1184 %spec.store.select.i.i.i852 = select i1 %cmp.not.i.i.i851, i32 %index.0.i.i.i850, i32 0 %1185 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %1186 = and i32 %spec.store.select.i.i.i852, 31 %1187 = lshr i64 %1185, %sh_prom.i.i.i.i %1188 = trunc i64 %1187 to i32 %conv4.i.i.i.i.i856 = and i32 %1188, 1 %shl.i.i.i.i.i857 = shl nuw i32 %conv4.i.i.i.i.i856, %1186 %1189 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2528, !amdgpu.uniform !42 1190: ; preds = %ComputeEnd2529 %sunkaddr3264 = getelementptr inbounds i8, ptr addrspace(1) %3239, i64 40 %1191 = atomicrmw or ptr addrspace(1) %sunkaddr3264, i32 %.lcssa3978 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1192, !amdgpu.uniform !42 1192: ; preds = %1190, %ComputeEnd2529 %1193 = phi i32 [ %1191, %1190 ], [ poison, %ComputeEnd2529 ] call void @llvm.amdgcn.end.cf.i64(i64 %3248) %1194 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %1193) %1195 = or i32 %1194, %.lcssa3979 %shl5.i.i.i.i.i858 = shl nuw i32 1, %1186 %and.i.i.i.i.i859 = and i32 %shl5.i.i.i.i.i858, %1195 %tobool3.i.i.i.i860 = icmp ne i32 %and.i.i.i.i.i859, 0 %1196 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i860) %and.i.i.i.i.i.i861 = and i64 %1196, %1185 %cmp.i.not.i.i.i862 = icmp ne i64 %1185, %and.i.i.i.i.i.i861 br i1 %cmp.i.not.i.i.i862, label %if.then.i.i.i.i863, label %Flow3574, !amdgpu.uniform !42 if.then.i.i.i.i863: ; preds = %1192 fence syncscope("agent") acquire %1197 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %1198 = extractelement <2 x i64> %1197, i32 0 %1199 = inttoptr i64 %1198 to ptr %1200 = extractelement <2 x i64> %1197, i32 1 %1201 = inttoptr i64 %1200 to ptr %idxprom.i.i.i.i864 = zext i32 %spec.store.select.i.i.i852 to i64 %arrayidx.i.i.i.i865 = getelementptr inbounds nuw i32, ptr %1199, i64 %idxprom.i.i.i.i864, !amdgpu.uniform !42 %1202 = load atomic i32, ptr %arrayidx.i.i.i.i865 monotonic, align 4 %1203 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1202) %arrayidx.i45.i.i.i866 = getelementptr inbounds nuw i32, ptr %1201, i64 %idxprom.i.i.i.i864, !amdgpu.uniform !42 %1204 = load atomic i32, ptr %arrayidx.i45.i.i.i866 monotonic, align 4 %1205 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1204) %cmp.i46.not.i.i.i867 = icmp ne i32 %1203, %1205 br i1 %cmp.i46.not.i.i.i867, label %if.then12.i.i.i868, label %Flow3572, !amdgpu.uniform !42 if.then12.i.i.i868: ; preds = %if.then.i.i.i.i863 fence syncscope("agent") release %1206 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1185, i1 true) %iszero.i.i.i.i.i.i.i869 = icmp ne i64 %1185, 0 %cmp2.i.i.i.i.i.i870 = icmp eq i64 %1206, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i871 = select i1 %iszero.i.i.i.i.i.i.i869, i1 %cmp2.i.i.i.i.i.i870, i1 false %conv4.i.i51.i.i.i872 = zext i1 %cmp.i.i.i.i.i.i871 to i32 %shl.i.i52.i.i.i873 = shl nuw i32 %conv4.i.i51.i.i.i872, %1186 %xor.i.i.i.i.i874 = xor i32 %shl.i.i52.i.i.i873, -1 %1207 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2533, !amdgpu.uniform !42 1208: ; preds = %ComputeEnd2534 %sunkaddr3265 = getelementptr inbounds i8, ptr addrspace(1) %3239, i64 40 %1209 = atomicrmw and ptr addrspace(1) %sunkaddr3265, i32 %.lcssa3980 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1210, !amdgpu.uniform !42 1210: ; preds = %1208, %ComputeEnd2534 call void @llvm.amdgcn.end.cf.i64(i64 %3266) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3572, !amdgpu.uniform !42 if.end14.i.i.i934: ; preds = %Flow3572 %1211 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1185, i1 true) %iszero.i.i.i.i.i.i935 = icmp ne i64 %1185, 0 %cmp2.i.i.i.i.i936 = icmp eq i64 %1211, %sh_prom.i.i.i.i %cmp.i.i.i.i.i937 = select i1 %iszero.i.i.i.i.i.i935, i1 %cmp2.i.i.i.i.i936, i1 false %1212 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i937) %1213 = extractvalue { i1, i64 } %1212, 0 %1214 = extractvalue { i1, i64 } %1212, 1 br i1 %1213, label %if.then16.i.i.i939, label %if.end22.i.i.i938 if.then16.i.i.i939: ; preds = %if.end14.i.i.i934 %1215 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i940 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1215, i64 %idxprom.i.i.i.i864, i32 1 store i32 1660944387, ptr %opcode.i.i.i940, align 8, !tbaa !77 %arrayidx21.i.i.i941 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1215, i64 %idxprom.i.i.i.i864 store i64 %1185, ptr %arrayidx21.i.i.i941, align 8, !tbaa !80 br label %if.end22.i.i.i938, !amdgpu.uniform !42 Flow3573: ; preds = %if.end22.i.i.i938, %Flow3572 %1216 = phi i32 [ %1203, %if.end22.i.i.i938 ], [ %retval.sroa.8.0.i.i.i849, %Flow3572 ] %1217 = phi i64 [ %1185, %if.end22.i.i.i938 ], [ %retval.sroa.2.0.i.i.i848, %Flow3572 ] %1218 = phi i32 [ %spec.store.select.i.i.i852, %if.end22.i.i.i938 ], [ %retval.sroa.6.0.i.i.i846, %Flow3572 ] br label %cleanup26.i.i.i875, !amdgpu.uniform !42 if.end22.i.i.i938: ; preds = %if.then16.i.i.i939, %if.end14.i.i.i934 call void @llvm.amdgcn.end.cf.i64(i64 %1214) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3573, !amdgpu.uniform !42 Flow3574: ; preds = %cleanup26.i.i.i875, %1192 %1219 = phi i32 [ %1218, %cleanup26.i.i.i875 ], [ %1181, %1192 ] %1220 = phi i64 [ %1217, %cleanup26.i.i.i875 ], [ %1182, %1192 ] %1221 = phi i32 [ %1216, %cleanup26.i.i.i875 ], [ %1183, %1192 ] %1222 = phi i32 [ %1216, %cleanup26.i.i.i875 ], [ %retval.sroa.8.0.i.i.i849, %1192 ] %1223 = phi i64 [ %1217, %cleanup26.i.i.i875 ], [ %retval.sroa.2.0.i.i.i848, %1192 ] %1224 = phi i32 [ %1218, %cleanup26.i.i.i875 ], [ %retval.sroa.6.0.i.i.i846, %1192 ] %1225 = phi i1 [ %cmp.i46.not.i.i.i867, %cleanup26.i.i.i875 ], [ true, %1192 ] br i1 %1225, label %for.inc.i.i.i880, label %Flow3575, !amdgpu.uniform !42 cleanup26.i.i.i875: ; preds = %Flow3573 br label %Flow3574, !amdgpu.uniform !42 for.inc.i.i.i880: ; preds = %Flow3574 %inc.i.i.i885 = add i32 %spec.store.select.i.i.i852, 1 br label %Flow3575, !amdgpu.uniform !42 Flow3575: ; preds = %for.inc.i.i.i880, %Flow3574 %1226 = phi i32 [ %inc.i.i.i885, %for.inc.i.i.i880 ], [ poison, %Flow3574 ] %1227 = phi i1 [ false, %for.inc.i.i.i880 ], [ true, %Flow3574 ] br i1 %1227, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i886, label %for.cond.i.i1.i845, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i886: ; preds = %Flow3575 %.lcssa3983 = phi i32 [ %1219, %Flow3575 ] %.lcssa3982 = phi i64 [ %1220, %Flow3575 ] %.lcssa3981 = phi i32 [ %1221, %Flow3575 ] fence acquire %1228 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i887 = shl i32 %.lcssa3983, 6 %idxprom.i19.i.i.i.i.i888 = zext i32 %mul.i.i.i.i.i.i887 to i64 %arrayidx.i20.i.i.i.i.i889 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %1228, i64 %idxprom.i19.i.i.i.i.i888 %arrayidx.i22.i.i.i.i.i890 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i889, i64 %sh_prom.i.i.i.i store i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.35 to ptr), i64 10) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.35 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i890, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i891 = tail call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.35 to ptr), i64 10) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.35 to ptr) to i64)), i64 56) %1229 = and i64 %spec.select.i.i.i.i.i.i.i891, 15 %1230 = sub i64 %spec.select.i.i.i.i.i.i.i891, %1229 %1231 = icmp ne i64 %1230, 0 br i1 %1231, label %loop-memcpy-expansion2357.preheader, label %Flow3571, !amdgpu.uniform !42 loop-memcpy-expansion2357.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i886 %1232 = add nuw nsw i64 %76, 8 %scevgep3017 = getelementptr i8, ptr %1228, i64 %1232 %1233 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i888, 6 %scevgep3018 = getelementptr i8, ptr %scevgep3017, i64 %1233 br label %loop-memcpy-expansion2357, !amdgpu.uniform !42 Flow3571: ; preds = %Flow3570, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i886 br label %loop-memcpy-residual-header2360, !amdgpu.uniform !42 loop-memcpy-expansion2357: ; preds = %loop-memcpy-expansion2357.preheader, %loop-memcpy-expansion2357 %loop-index2358 = phi i64 [ %1236, %loop-memcpy-expansion2357 ], [ 0, %loop-memcpy-expansion2357.preheader ] %1234 = getelementptr i8, ptr addrspace(4) @.str.35, i64 %loop-index2358, !amdgpu.uniform !42 %1235 = load <4 x i32>, ptr addrspace(4) %1234, align 1 %scevgep3019 = getelementptr i8, ptr %scevgep3018, i64 %loop-index2358 store <4 x i32> %1235, ptr %scevgep3019, align 1 %1236 = add i64 %loop-index2358, 16 %1237 = icmp uge i64 %1236, %1230 br i1 %1237, label %Flow3570, label %loop-memcpy-expansion2357, !amdgpu.uniform !42 Flow3569: ; preds = %Flow3567, %Flow3568 %1238 = phi i64 [ %2706, %Flow3567 ], [ %2703, %Flow3568 ] br label %post-loop-memcpy-expansion2356, !amdgpu.uniform !42 loop-memcpy-residual2359: ; preds = %loop-memcpy-residual2359.preheader, %loop-memcpy-residual2359 %residual-loop-index2361 = phi i64 [ %1240, %loop-memcpy-residual2359 ], [ 0, %loop-memcpy-residual2359.preheader ] %scevgep3016 = getelementptr i8, ptr addrspace(4) @.str.35, i64 %residual-loop-index2361, !amdgpu.uniform !42 %1239 = load i8, ptr addrspace(4) %scevgep3016, align 1 %scevgep3015 = getelementptr i8, ptr %scevgep3014, i64 %residual-loop-index2361 store i8 %1239, ptr %scevgep3015, align 1 %1240 = add i64 %residual-loop-index2361, 1 %1241 = icmp uge i64 %1240, %1229 br i1 %1241, label %Flow3567, label %loop-memcpy-residual2359, !amdgpu.uniform !42 Flow3567: ; preds = %loop-memcpy-residual2359 br label %Flow3569, !amdgpu.uniform !42 post-loop-memcpy-expansion2356: ; preds = %Flow3569 %tobool.not.i.i.i.i.i.i893 = icmp eq i32 %.lcssa3981, 0 %conv.i.i.i.i.i.i894 = zext i1 %tobool.not.i.i.i.i.i.i893 to i32 fence release %1242 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i895 = zext i32 %.lcssa3983 to i64 %arrayidx.i24.i.i.i.i.i896 = getelementptr inbounds nuw i32, ptr %1242, i64 %idxprom.i23.i.i.i.i.i895 store atomic i32 %conv.i.i.i.i.i.i894, ptr %arrayidx.i24.i.i.i.i.i896 monotonic, align 4 %1243 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i897 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1243, i64 %idxprom.i23.i.i.i.i.i895, !amdgpu.uniform !42 %1244 = load i64, ptr %arrayidx.i.i5.i.i897, align 8, !tbaa !80 br label %while.cond.i.i.i.i898, !amdgpu.uniform !42 while.cond.i.i.i.i898: ; preds = %post-loop-memcpy-expansion2356, %Flow3565 %phi.broken3807 = phi i64 [ 0, %post-loop-memcpy-expansion2356 ], [ %1261, %Flow3565 ] %lsr.iv3006 = phi i64 [ %1259, %Flow3565 ], [ -46, %post-loop-memcpy-expansion2356 ] %lsr.iv3001 = phi ptr addrspace(4) [ %1258, %Flow3565 ], [ getelementptr (i8, ptr addrspace(4) @.str.35, i64 56), %post-loop-memcpy-expansion2356 ] %port.sroa.37.0.i.i899 = phi i32 [ %1257, %Flow3565 ], [ %conv.i.i.i.i.i.i894, %post-loop-memcpy-expansion2356 ] %idx.0.i.i.i.i900 = phi i64 [ %1256, %Flow3565 ], [ 56, %post-loop-memcpy-expansion2356 ] %cmp.i.i.i.i901 = icmp ult i64 %idx.0.i.i.i.i900, sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.35 to ptr), i64 10) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.35 to ptr) to i64)) %1245 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i901) %and.i.i.i.i6.i.i902 = and i64 %1245, %1244 %tobool.not.i.i.i.i903 = icmp ne i64 %and.i.i.i.i6.i.i902, 0 %1246 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i904 = getelementptr inbounds nuw i32, ptr %1246, i64 %idxprom.i23.i.i.i.i.i895, !amdgpu.uniform !42 %1247 = load atomic i32, ptr %arrayidx.i22.i.i.i904 monotonic, align 4 %1248 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i903) %1249 = extractvalue { i1, i64 } %1248, 0 %1250 = extractvalue { i1, i64 } %1248, 1 br i1 %1249, label %cond.false.i8.i.i.i.i905, label %Flow3565 cond.false.i8.i.i.i.i905: ; preds = %while.cond.i.i.i.i898 %1251 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1247) %1252 = icmp ne i32 %1251, %port.sroa.37.0.i.i899 br i1 %1252, label %while.body.i.i21.i.i.i.i906.preheader, label %Flow3564, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i906.preheader: ; preds = %cond.false.i8.i.i.i.i905 br label %while.body.i.i21.i.i.i.i906, !amdgpu.uniform !42 Flow3564: ; preds = %Flow3562, %cond.false.i8.i.i.i.i905 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i909, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i906: ; preds = %while.body.i.i21.i.i.i.i906.preheader, %while.body.i.i21.i.i.i.i906 tail call void @llvm.amdgcn.s.sleep(i32 2) %1253 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i907 = getelementptr inbounds nuw i32, ptr %1253, i64 %idxprom.i23.i.i.i.i.i895, !amdgpu.uniform !42 %1254 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i907 monotonic, align 4 %1255 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1254) %cmp.i.not.i.i23.i.i.i.i908 = icmp eq i32 %1255, %port.sroa.37.0.i.i899 br i1 %cmp.i.not.i.i23.i.i.i.i908, label %Flow3562, label %while.body.i.i21.i.i.i.i906, !amdgpu.uniform !42 Flow3562: ; preds = %while.body.i.i21.i.i.i.i906 br label %Flow3564, !amdgpu.uniform !42 Flow3565: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i910, %while.cond.i.i.i.i898 %1256 = phi i64 [ %add.i.i.i.i913, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i910 ], [ poison, %while.cond.i.i.i.i898 ] %1257 = phi i32 [ %conv.i.i26.i.i.i.i911, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i910 ], [ poison, %while.cond.i.i.i.i898 ] %1258 = phi ptr addrspace(4) [ %scevgep3002, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i910 ], [ poison, %while.cond.i.i.i.i898 ] %1259 = phi i64 [ %lsr.iv.next3007, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i910 ], [ poison, %while.cond.i.i.i.i898 ] %1260 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i910 ], [ true, %while.cond.i.i.i.i898 ] call void @llvm.amdgcn.end.cf.i64(i64 %1250) %1261 = call i64 @llvm.amdgcn.if.break.i64(i1 %1260, i64 %phi.broken3807) %1262 = call i1 @llvm.amdgcn.loop.i64(i64 %1261) br i1 %1262, label %cond.false.i.i.i920, label %while.cond.i.i.i.i898 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i909: ; preds = %Flow3564 fence acquire br i1 %cmp.i.i.i.i901, label %if.then.i.i.i.i.i.i.i914, label %Flow3561, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i914: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i909 %sub.i.i.i.i.i.i.i916 = sub nuw i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.35 to ptr), i64 10) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.35 to ptr) to i64)), %idx.0.i.i.i.i900 %spec.select.i.i.i36.i.i.i.i917 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i916, i64 64) %1263 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %1264 = and i64 %spec.select.i.i.i36.i.i.i.i917, 15 %1265 = sub i64 %spec.select.i.i.i36.i.i.i.i917, %1264 %1266 = icmp ne i64 %1265, 0 br i1 %1266, label %loop-memcpy-expansion2369.preheader, label %Flow3560, !amdgpu.uniform !42 loop-memcpy-expansion2369.preheader: ; preds = %if.then.i.i.i.i.i.i.i914 %arrayidx.i20.i35.i.i.i.i918 = getelementptr %"struct.rpc::Buffer", ptr %1263, i64 %idxprom.i19.i.i.i.i.i888 %arrayidx.i22.i38.i.i.i.i919 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i918, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2369, !amdgpu.uniform !42 Flow3560: ; preds = %Flow3559, %if.then.i.i.i.i.i.i.i914 br label %loop-memcpy-residual-header2372, !amdgpu.uniform !42 loop-memcpy-expansion2369: ; preds = %loop-memcpy-expansion2369.preheader, %loop-memcpy-expansion2369 %loop-index2370 = phi i64 [ %1269, %loop-memcpy-expansion2369 ], [ 0, %loop-memcpy-expansion2369.preheader ] %scevgep3003 = getelementptr i8, ptr addrspace(4) %lsr.iv3001, i64 %loop-index2370, !amdgpu.uniform !42 %1267 = load <4 x i32>, ptr addrspace(4) %scevgep3003, align 1 %1268 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i919, i64 %loop-index2370 store <4 x i32> %1267, ptr %1268, align 1 %1269 = add i64 %loop-index2370, 16 %1270 = icmp uge i64 %1269, %1265 br i1 %1270, label %Flow3559, label %loop-memcpy-expansion2369, !amdgpu.uniform !42 Flow3557: ; preds = %Flow3556, %loop-memcpy-residual-header2372 br label %Flow3561, !amdgpu.uniform !42 loop-memcpy-residual2371: ; preds = %loop-memcpy-residual2371.preheader, %loop-memcpy-residual2371 %residual-loop-index2373 = phi i64 [ %1272, %loop-memcpy-residual2371 ], [ 0, %loop-memcpy-residual2371.preheader ] %scevgep3012 = getelementptr i8, ptr addrspace(4) %scevgep3011, i64 %residual-loop-index2373, !amdgpu.uniform !42 %1271 = load i8, ptr addrspace(4) %scevgep3012, align 1 %scevgep3010 = getelementptr i8, ptr %scevgep3009, i64 %residual-loop-index2373 store i8 %1271, ptr %scevgep3010, align 1 %1272 = add i64 %residual-loop-index2373, 1 %1273 = icmp uge i64 %1272, %1264 br i1 %1273, label %Flow3556, label %loop-memcpy-residual2371, !amdgpu.uniform !42 Flow3556: ; preds = %loop-memcpy-residual2371 br label %Flow3557, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i910: ; preds = %Flow3561 %conv.i.i26.i.i.i.i911 = xor i32 %port.sroa.37.0.i.i899, 1 fence release %1274 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i912 = getelementptr inbounds nuw i32, ptr %1274, i64 %idxprom.i23.i.i.i.i.i895 store atomic i32 %conv.i.i26.i.i.i.i911, ptr %arrayidx.i24.i29.i.i.i.i912 monotonic, align 4 %add.i.i.i.i913 = add i64 %idx.0.i.i.i.i900, 64 %scevgep3002 = getelementptr i8, ptr addrspace(4) %lsr.iv3001, i64 64 %lsr.iv.next3007 = add i64 %lsr.iv3006, -64 br label %Flow3565, !amdgpu.uniform !42 cond.false.i.i.i920: ; preds = %Flow3565 %.lcssa3977 = phi i64 [ %1261, %Flow3565 ] %port.sroa.37.0.i.i899.lcssa = phi i32 [ %port.sroa.37.0.i.i899, %Flow3565 ] %.lcssa3976 = phi i32 [ %1247, %Flow3565 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3977) %1275 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa3976) %1276 = icmp ne i32 %1275, %port.sroa.37.0.i.i899.lcssa %1277 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1276) %1278 = extractvalue { i1, i64 } %1277, 0 %1279 = extractvalue { i1, i64 } %1277, 1 br i1 %1278, label %while.body.i.i.i.i921.preheader, label %Flow3554 while.body.i.i.i.i921.preheader: ; preds = %cond.false.i.i.i920 br label %while.body.i.i.i.i921, !amdgpu.uniform !42 Flow3554: ; preds = %Flow3552, %cond.false.i.i.i920 call void @llvm.amdgcn.end.cf.i64(i64 %1279) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit942, !amdgpu.uniform !42 while.body.i.i.i.i921: ; preds = %while.body.i.i.i.i921.preheader, %while.body.i.i.i.i921 %phi.broken3808 = phi i64 [ 0, %while.body.i.i.i.i921.preheader ], [ %1283, %while.body.i.i.i.i921 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %1280 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i922 = getelementptr inbounds nuw i32, ptr %1280, i64 %idxprom.i23.i.i.i.i.i895, !amdgpu.uniform !42 %1281 = load atomic i32, ptr %arrayidx.i.i.i8.i.i922 monotonic, align 4 %1282 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1281) %cmp.i.not.i.i.i.i923 = icmp eq i32 %1282, %port.sroa.37.0.i.i899.lcssa %1283 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i923, i64 %phi.broken3808) %1284 = call i1 @llvm.amdgcn.loop.i64(i64 %1283) br i1 %1284, label %Flow3552, label %while.body.i.i.i.i921 Flow3552: ; preds = %while.body.i.i.i.i921 %.lcssa3975 = phi i64 [ %1283, %while.body.i.i.i.i921 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3975) br label %Flow3554, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit942: ; preds = %Flow3554 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %1285 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa3982, i1 true) %iszero.i.i.i.i.i13.i.i925 = icmp ne i64 %.lcssa3982, 0 %cmp2.i.i.i.i14.i.i926 = icmp eq i64 %1285, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i927 = select i1 %iszero.i.i.i.i.i13.i.i925, i1 %cmp2.i.i.i.i14.i.i926, i1 false %1286 = and i32 %.lcssa3983, 31 %conv4.i.i.i19.i.i931 = zext i1 %cmp.i.i.i.i15.i.i927 to i32 %shl.i.i.i20.i.i932 = shl nuw i32 %conv4.i.i.i19.i.i931, %1286 %xor.i.i.i21.i.i933 = xor i32 %shl.i.i.i20.i.i932, -1 %1287 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2537, !amdgpu.uniform !42 1288: ; preds = %ComputeEnd2538 %div8.i.i.i16.i.i928 = lshr i32 %.lcssa3983, 5 %idxprom.i.i.i17.i.i929 = zext nneg i32 %div8.i.i.i16.i.i928 to i64 %1289 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i929 %sunkaddr3266 = getelementptr inbounds i8, ptr addrspace(1) %1289, i64 40 %1290 = atomicrmw and ptr addrspace(1) %sunkaddr3266, i32 %.lcssa3974 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1291, !amdgpu.uniform !42 1291: ; preds = %1288, %ComputeEnd2538 call void @llvm.amdgcn.end.cf.i64(i64 %3283) tail call void @llvm.amdgcn.wave.barrier() call void @llvm.lifetime.start.p5(ptr addrspace(5) %buffer.i.i.i) #34, !noalias !133 %1292 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %LHS) %1293 = extractvalue { i1, i64 } %1292, 0 %1294 = extractvalue { i1, i64 } %1292, 1 br i1 %1293, label %if.then3.i.i.i.i.i.i.i.i, label %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i.i if.then3.i.i.i.i.i.i.i.i: ; preds = %1291 %arrayidx.i.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr addrspace(5) %buffer.i.i.i, i32 10 store i8 49, ptr addrspace(5) %arrayidx.i.i.i.i.i.i.i.i.i, align 2, !tbaa !57, !noalias !133 br label %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i.i, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i.i: ; preds = %if.then3.i.i.i.i.i.i.i.i, %1291 %writer.sroa.10.2.i.i.i.i.i = phi i64 [ 1, %if.then3.i.i.i.i.i.i.i.i ], [ 0, %1291 ] call void @llvm.amdgcn.end.cf.i64(i64 %1294) %1295 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %LHS.inv) %1296 = extractvalue { i1, i64 } %1295, 0 %1297 = extractvalue { i1, i64 } %1295, 1 br i1 %1296, label %if.then3.i.i.lr.ph.i.i.i.i.i, label %while.end.i.i.i.i.i.i if.then3.i.i.lr.ph.i.i.i.i.i: ; preds = %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i.i %arrayidx.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr addrspace(5) %buffer.i.i.i, i32 10 store i8 48, ptr addrspace(5) %arrayidx.i.i.i.i.i.i.i.i, align 2, !tbaa !57, !noalias !133 br label %while.end.i.i.i.i.i.i, !amdgpu.uniform !42 while.end.i.i.i.i.i.i: ; preds = %if.then3.i.i.lr.ph.i.i.i.i.i, %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i.i %writer.sroa.10.4.i.i.i.i.i = phi i64 [ 1, %if.then3.i.i.lr.ph.i.i.i.i.i ], [ %writer.sroa.10.2.i.i.i.i.i, %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %1297) %written.i.i.i.i.i = getelementptr inbounds nuw i8, ptr addrspace(5) %buffer.i.i.i, i32 16 store i64 %writer.sroa.10.4.i.i.i.i.i, ptr addrspace(5) %written.i.i.i.i.i, align 8, !tbaa !91, !noalias !133 %cmp.i.not.i.i.i.i.i.i = icmp ne i64 %writer.sroa.10.4.i.i.i.i.i, 0 %1298 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.not.i.i.i.i.i.i) %1299 = extractvalue { i1, i64 } %1298, 0 %1300 = extractvalue { i1, i64 } %1298, 1 br i1 %1299, label %if.end4.i.i.i.i.i.i.i.i, label %if.end.i.i.i.i.i.i.i if.end4.i.i.i.i.i.i.i.i: ; preds = %while.end.i.i.i.i.i.i %1301 = load ptr, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %add.ptr.i.i943 = getelementptr inbounds nuw i8, ptr %1301, i64 8 store ptr %add.ptr.i.i943, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %sub.ptr.lhs.cast.i.i944 = ptrtoint ptr %add.ptr.i.i943 to i64 %sub.ptr.sub.i.i945 = sub i64 %sub.ptr.lhs.cast.i.i944, ptrtoint (ptr addrspacecast (ptr addrspace(1) @_ZN12_GLOBAL__N_16memoryE to ptr) to i64) %cmp.i.i946 = icmp ugt i64 %sub.ptr.sub.i.i945, 65335 %cond.i.i947 = select i1 %cmp.i.i946, ptr null, ptr %1301 store i8 0, ptr %1301, align 1, !noalias !140 br label %if.end.i.i.i.i.i.i.i, !amdgpu.uniform !42 if.end.i.i.i.i.i.i.i: ; preds = %if.end4.i.i.i.i.i.i.i.i, %while.end.i.i.i.i.i.i %agg.tmp13.i.sroa.0.0 = phi ptr [ %cond.i.i947, %if.end4.i.i.i.i.i.i.i.i ], [ addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr), %while.end.i.i.i.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %1300) %cmp.not.i6.i.i.i.i.i.i.i = icmp ne ptr %agg.tmp13.i.sroa.0.0, addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr) %1302 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.not.i6.i.i.i.i.i.i.i) %1303 = extractvalue { i1, i64 } %1302, 0 %1304 = extractvalue { i1, i64 } %1302, 1 br i1 %1303, label %if.then.i.i.i.i2.i.i.i.i, label %_ZN22__llvm_libc_22_0_0_git7testing8internal13describeValueIbEENS_3cpp9enable_ifIXaasr3cppE13is_integral_vIT_ElestS5_Lm8EENS3_6stringEE4typeES5_.exit.i if.then.i.i.i.i2.i.i.i.i: ; preds = %if.end.i.i.i.i.i.i.i %arrayidx.i.i.i.i3.i.i.i.i = getelementptr inbounds nuw i8, ptr %agg.tmp13.i.sroa.0.0, i64 %writer.sroa.10.4.i.i.i.i.i store i8 0, ptr %arrayidx.i.i.i.i3.i.i.i.i, align 1, !tbaa !57, !noalias !133 br label %_ZN22__llvm_libc_22_0_0_git7testing8internal13describeValueIbEENS_3cpp9enable_ifIXaasr3cppE13is_integral_vIT_ElestS5_Lm8EENS3_6stringEE4typeES5_.exit.i, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing8internal13describeValueIbEENS_3cpp9enable_ifIXaasr3cppE13is_integral_vIT_ElestS5_Lm8EENS3_6stringEE4typeES5_.exit.i: ; preds = %if.then.i.i.i.i2.i.i.i.i, %if.end.i.i.i.i.i.i.i call void @llvm.amdgcn.end.cf.i64(i64 %1304) %1305 = trunc i64 %writer.sroa.10.4.i.i.i.i.i to i32 %1306 = and i64 %writer.sroa.10.4.i.i.i.i.i, 15 %1307 = sub i64 %writer.sroa.10.4.i.i.i.i.i, %1306 %1308 = icmp ne i64 %1307, 0 %1309 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1308) %1310 = extractvalue { i1, i64 } %1309, 0 %1311 = extractvalue { i1, i64 } %1309, 1 br i1 %1310, label %loop-memcpy-expansion2303.preheader, label %Flow3551 loop-memcpy-expansion2303.preheader: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing8internal13describeValueIbEENS_3cpp9enable_ifIXaasr3cppE13is_integral_vIT_ElestS5_Lm8EENS3_6stringEE4typeES5_.exit.i %1312 = sub i32 11, %1305 %scevgep2998 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i, i32 %1312 br label %loop-memcpy-expansion2303, !amdgpu.uniform !42 Flow3551: ; preds = %Flow3550, %_ZN22__llvm_libc_22_0_0_git7testing8internal13describeValueIbEENS_3cpp9enable_ifIXaasr3cppE13is_integral_vIT_ElestS5_Lm8EENS3_6stringEE4typeES5_.exit.i call void @llvm.amdgcn.end.cf.i64(i64 %1311) br label %loop-memcpy-residual-header2306, !amdgpu.uniform !42 loop-memcpy-expansion2303: ; preds = %loop-memcpy-expansion2303.preheader, %loop-memcpy-expansion2303 %phi.broken3809 = phi i64 [ 0, %loop-memcpy-expansion2303.preheader ], [ %1317, %loop-memcpy-expansion2303 ] %lsr.iv2999 = phi ptr addrspace(5) [ %scevgep3000, %loop-memcpy-expansion2303 ], [ %scevgep2998, %loop-memcpy-expansion2303.preheader ] %loop-index2304 = phi i64 [ %1315, %loop-memcpy-expansion2303 ], [ 0, %loop-memcpy-expansion2303.preheader ] %1313 = load <4 x i32>, ptr addrspace(5) %lsr.iv2999, align 1 %1314 = getelementptr i8, ptr %agg.tmp13.i.sroa.0.0, i64 %loop-index2304 store <4 x i32> %1313, ptr %1314, align 1 %1315 = add i64 %loop-index2304, 16 %scevgep3000 = getelementptr i8, ptr addrspace(5) %lsr.iv2999, i32 16 %1316 = icmp uge i64 %1315, %1307 %1317 = call i64 @llvm.amdgcn.if.break.i64(i1 %1316, i64 %phi.broken3809) %1318 = call i1 @llvm.amdgcn.loop.i64(i64 %1317) br i1 %1318, label %Flow3550, label %loop-memcpy-expansion2303 Flow3548: ; preds = %Flow3547, %loop-memcpy-residual-header2306 call void @llvm.amdgcn.end.cf.i64(i64 %2666) br label %post-loop-memcpy-expansion2302, !amdgpu.uniform !42 loop-memcpy-residual2305: ; preds = %loop-memcpy-residual2305.preheader, %loop-memcpy-residual2305 %phi.broken3810 = phi i64 [ 0, %loop-memcpy-residual2305.preheader ], [ %1322, %loop-memcpy-residual2305 ] %lsr.iv2995 = phi ptr addrspace(5) [ %scevgep2996, %loop-memcpy-residual2305 ], [ %scevgep2994, %loop-memcpy-residual2305.preheader ] %residual-loop-index2307 = phi i64 [ %1320, %loop-memcpy-residual2305 ], [ 0, %loop-memcpy-residual2305.preheader ] %1319 = load i8, ptr addrspace(5) %lsr.iv2995, align 1 %scevgep2997 = getelementptr i8, ptr %agg.tmp13.i.sroa.0.0, i64 %residual-loop-index2307 store i8 %1319, ptr %scevgep2997, align 1 %1320 = add i64 %residual-loop-index2307, 1 %scevgep2996 = getelementptr i8, ptr addrspace(5) %lsr.iv2995, i32 1 %1321 = icmp uge i64 %1320, %1306 %1322 = call i64 @llvm.amdgcn.if.break.i64(i1 %1321, i64 %phi.broken3810) %1323 = call i1 @llvm.amdgcn.loop.i64(i64 %1322) br i1 %1323, label %Flow3547, label %loop-memcpy-residual2305 Flow3547: ; preds = %loop-memcpy-residual2305 %.lcssa3972 = phi i64 [ %1322, %loop-memcpy-residual2305 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3972) br label %Flow3548, !amdgpu.uniform !42 post-loop-memcpy-expansion2302: ; preds = %Flow3548 call void @llvm.lifetime.end.p5(ptr addrspace(5) %buffer.i.i.i) #34, !noalias !133 br label %for.cond.i.i.i949, !amdgpu.uniform !42 for.cond.i.i.i949: ; preds = %post-loop-memcpy-expansion2302, %Flow3545 %1324 = phi i32 [ %1362, %Flow3545 ], [ poison, %post-loop-memcpy-expansion2302 ] %1325 = phi i64 [ %1363, %Flow3545 ], [ poison, %post-loop-memcpy-expansion2302 ] %1326 = phi i32 [ %1364, %Flow3545 ], [ poison, %post-loop-memcpy-expansion2302 ] %retval.sroa.6.0.i.i.i950 = phi i32 [ %1367, %Flow3545 ], [ undef, %post-loop-memcpy-expansion2302 ] %retval.sroa.2.0.i.i.i952 = phi i64 [ %1366, %Flow3545 ], [ undef, %post-loop-memcpy-expansion2302 ] %retval.sroa.8.0.i.i.i953 = phi i32 [ %1365, %Flow3545 ], [ undef, %post-loop-memcpy-expansion2302 ] %index.0.i.i.i954 = phi i32 [ %1369, %Flow3545 ], [ 0, %post-loop-memcpy-expansion2302 ] %1327 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i955 = icmp ult i32 %index.0.i.i.i954, %1327 %spec.store.select.i.i.i956 = select i1 %cmp.not.i.i.i955, i32 %index.0.i.i.i954, i32 0 %1328 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %1329 = and i32 %spec.store.select.i.i.i956, 31 %1330 = lshr i64 %1328, %sh_prom.i.i.i.i %1331 = trunc i64 %1330 to i32 %conv4.i.i.i.i.i960 = and i32 %1331, 1 %shl.i.i.i.i.i961 = shl nuw i32 %conv4.i.i.i.i.i960, %1329 %1332 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2541, !amdgpu.uniform !42 1333: ; preds = %ComputeEnd2542 %sunkaddr3267 = getelementptr inbounds i8, ptr addrspace(1) %3293, i64 40 %1334 = atomicrmw or ptr addrspace(1) %sunkaddr3267, i32 %.lcssa3966 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1335, !amdgpu.uniform !42 1335: ; preds = %1333, %ComputeEnd2542 %1336 = phi i32 [ %1334, %1333 ], [ poison, %ComputeEnd2542 ] call void @llvm.amdgcn.end.cf.i64(i64 %3302) %1337 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %1336) %1338 = or i32 %1337, %.lcssa3967 %shl5.i.i.i.i.i962 = shl nuw i32 1, %1329 %and.i.i.i.i.i963 = and i32 %shl5.i.i.i.i.i962, %1338 %tobool3.i.i.i.i964 = icmp ne i32 %and.i.i.i.i.i963, 0 %1339 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i964) %and.i.i.i.i.i.i965 = and i64 %1339, %1328 %cmp.i.not.i.i.i966 = icmp ne i64 %1328, %and.i.i.i.i.i.i965 br i1 %cmp.i.not.i.i.i966, label %if.then.i.i.i.i967, label %Flow3544, !amdgpu.uniform !42 if.then.i.i.i.i967: ; preds = %1335 fence syncscope("agent") acquire %1340 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %1341 = extractelement <2 x i64> %1340, i32 0 %1342 = inttoptr i64 %1341 to ptr %1343 = extractelement <2 x i64> %1340, i32 1 %1344 = inttoptr i64 %1343 to ptr %idxprom.i.i.i.i968 = zext i32 %spec.store.select.i.i.i956 to i64 %arrayidx.i.i.i.i969 = getelementptr inbounds nuw i32, ptr %1342, i64 %idxprom.i.i.i.i968, !amdgpu.uniform !42 %1345 = load atomic i32, ptr %arrayidx.i.i.i.i969 monotonic, align 4 %1346 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1345) %arrayidx.i45.i.i.i970 = getelementptr inbounds nuw i32, ptr %1344, i64 %idxprom.i.i.i.i968, !amdgpu.uniform !42 %1347 = load atomic i32, ptr %arrayidx.i45.i.i.i970 monotonic, align 4 %1348 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1347) %cmp.i46.not.i.i.i971 = icmp ne i32 %1346, %1348 br i1 %cmp.i46.not.i.i.i971, label %if.then12.i.i.i972, label %Flow3542, !amdgpu.uniform !42 if.then12.i.i.i972: ; preds = %if.then.i.i.i.i967 fence syncscope("agent") release %1349 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1328, i1 true) %iszero.i.i.i.i.i.i.i973 = icmp ne i64 %1328, 0 %cmp2.i.i.i.i.i.i974 = icmp eq i64 %1349, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i975 = select i1 %iszero.i.i.i.i.i.i.i973, i1 %cmp2.i.i.i.i.i.i974, i1 false %conv4.i.i51.i.i.i976 = zext i1 %cmp.i.i.i.i.i.i975 to i32 %shl.i.i52.i.i.i977 = shl nuw i32 %conv4.i.i51.i.i.i976, %1329 %xor.i.i.i.i.i978 = xor i32 %shl.i.i52.i.i.i977, -1 %1350 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2546, !amdgpu.uniform !42 1351: ; preds = %ComputeEnd2547 %sunkaddr3268 = getelementptr inbounds i8, ptr addrspace(1) %3293, i64 40 %1352 = atomicrmw and ptr addrspace(1) %sunkaddr3268, i32 %.lcssa3968 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1353, !amdgpu.uniform !42 1353: ; preds = %1351, %ComputeEnd2547 call void @llvm.amdgcn.end.cf.i64(i64 %3320) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3542, !amdgpu.uniform !42 if.end14.i.i.i1038: ; preds = %Flow3542 %1354 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1328, i1 true) %iszero.i.i.i.i.i.i1039 = icmp ne i64 %1328, 0 %cmp2.i.i.i.i.i1040 = icmp eq i64 %1354, %sh_prom.i.i.i.i %cmp.i.i.i.i.i1041 = select i1 %iszero.i.i.i.i.i.i1039, i1 %cmp2.i.i.i.i.i1040, i1 false %1355 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i1041) %1356 = extractvalue { i1, i64 } %1355, 0 %1357 = extractvalue { i1, i64 } %1355, 1 br i1 %1356, label %if.then16.i.i.i1043, label %if.end22.i.i.i1042 if.then16.i.i.i1043: ; preds = %if.end14.i.i.i1038 %1358 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i1044 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1358, i64 %idxprom.i.i.i.i968, i32 1 store i32 1660944387, ptr %opcode.i.i.i1044, align 8, !tbaa !77 %arrayidx21.i.i.i1045 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1358, i64 %idxprom.i.i.i.i968 store i64 %1328, ptr %arrayidx21.i.i.i1045, align 8, !tbaa !80 br label %if.end22.i.i.i1042, !amdgpu.uniform !42 Flow3543: ; preds = %if.end22.i.i.i1042, %Flow3542 %1359 = phi i32 [ %1346, %if.end22.i.i.i1042 ], [ %retval.sroa.8.0.i.i.i953, %Flow3542 ] %1360 = phi i64 [ %1328, %if.end22.i.i.i1042 ], [ %retval.sroa.2.0.i.i.i952, %Flow3542 ] %1361 = phi i32 [ %spec.store.select.i.i.i956, %if.end22.i.i.i1042 ], [ %retval.sroa.6.0.i.i.i950, %Flow3542 ] br label %cleanup26.i.i.i979, !amdgpu.uniform !42 if.end22.i.i.i1042: ; preds = %if.then16.i.i.i1043, %if.end14.i.i.i1038 call void @llvm.amdgcn.end.cf.i64(i64 %1357) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3543, !amdgpu.uniform !42 Flow3544: ; preds = %cleanup26.i.i.i979, %1335 %1362 = phi i32 [ %1361, %cleanup26.i.i.i979 ], [ %1324, %1335 ] %1363 = phi i64 [ %1360, %cleanup26.i.i.i979 ], [ %1325, %1335 ] %1364 = phi i32 [ %1359, %cleanup26.i.i.i979 ], [ %1326, %1335 ] %1365 = phi i32 [ %1359, %cleanup26.i.i.i979 ], [ %retval.sroa.8.0.i.i.i953, %1335 ] %1366 = phi i64 [ %1360, %cleanup26.i.i.i979 ], [ %retval.sroa.2.0.i.i.i952, %1335 ] %1367 = phi i32 [ %1361, %cleanup26.i.i.i979 ], [ %retval.sroa.6.0.i.i.i950, %1335 ] %1368 = phi i1 [ %cmp.i46.not.i.i.i971, %cleanup26.i.i.i979 ], [ true, %1335 ] br i1 %1368, label %for.inc.i.i.i984, label %Flow3545, !amdgpu.uniform !42 cleanup26.i.i.i979: ; preds = %Flow3543 br label %Flow3544, !amdgpu.uniform !42 for.inc.i.i.i984: ; preds = %Flow3544 %inc.i.i.i989 = add i32 %spec.store.select.i.i.i956, 1 br label %Flow3545, !amdgpu.uniform !42 Flow3545: ; preds = %for.inc.i.i.i984, %Flow3544 %1369 = phi i32 [ %inc.i.i.i989, %for.inc.i.i.i984 ], [ poison, %Flow3544 ] %1370 = phi i1 [ false, %for.inc.i.i.i984 ], [ true, %Flow3544 ] br i1 %1370, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i990, label %for.cond.i.i.i949, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i990: ; preds = %Flow3545 %.lcssa3971 = phi i32 [ %1362, %Flow3545 ] %.lcssa3970 = phi i64 [ %1363, %Flow3545 ] %.lcssa3969 = phi i32 [ %1364, %Flow3545 ] fence acquire %1371 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i991 = shl i32 %.lcssa3971, 6 %idxprom.i19.i.i.i.i.i992 = zext i32 %mul.i.i.i.i.i.i991 to i64 %arrayidx.i20.i.i.i.i.i993 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %1371, i64 %idxprom.i19.i.i.i.i.i992 %arrayidx.i22.i.i.i.i.i994 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i993, i64 %sh_prom.i.i.i.i store i64 %writer.sroa.10.4.i.i.i.i.i, ptr %arrayidx.i22.i.i.i.i.i994, align 8, !tbaa !82 %1372 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1308) %1373 = extractvalue { i1, i64 } %1372, 0 %1374 = extractvalue { i1, i64 } %1372, 1 br i1 %1373, label %loop-memcpy-expansion2219.preheader, label %Flow3541 loop-memcpy-expansion2219.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i990 %1375 = add nuw nsw i64 %76, 8 %scevgep2991 = getelementptr i8, ptr %1371, i64 %1375 %1376 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i992, 6 %scevgep2992 = getelementptr i8, ptr %scevgep2991, i64 %1376 br label %loop-memcpy-expansion2219, !amdgpu.uniform !42 Flow3541: ; preds = %Flow3540, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i990 call void @llvm.amdgcn.end.cf.i64(i64 %1374) br label %loop-memcpy-residual-header2222, !amdgpu.uniform !42 loop-memcpy-expansion2219: ; preds = %loop-memcpy-expansion2219.preheader, %loop-memcpy-expansion2219 %phi.broken3811 = phi i64 [ 0, %loop-memcpy-expansion2219.preheader ], [ %1381, %loop-memcpy-expansion2219 ] %loop-index2220 = phi i64 [ %1379, %loop-memcpy-expansion2219 ], [ 0, %loop-memcpy-expansion2219.preheader ] %1377 = getelementptr i8, ptr %agg.tmp13.i.sroa.0.0, i64 %loop-index2220 %1378 = load <4 x i32>, ptr %1377, align 1 %scevgep2993 = getelementptr i8, ptr %scevgep2992, i64 %loop-index2220 store <4 x i32> %1378, ptr %scevgep2993, align 1 %1379 = add i64 %loop-index2220, 16 %1380 = icmp uge i64 %1379, %1307 %1381 = call i64 @llvm.amdgcn.if.break.i64(i1 %1380, i64 %phi.broken3811) %1382 = call i1 @llvm.amdgcn.loop.i64(i64 %1381) br i1 %1382, label %Flow3540, label %loop-memcpy-expansion2219 Flow3538: ; preds = %Flow3537, %loop-memcpy-residual-header2222 call void @llvm.amdgcn.end.cf.i64(i64 %2588) br label %post-loop-memcpy-expansion2218, !amdgpu.uniform !42 loop-memcpy-residual2221: ; preds = %loop-memcpy-residual2221.preheader, %loop-memcpy-residual2221 %phi.broken3812 = phi i64 [ 0, %loop-memcpy-residual2221.preheader ], [ %1386, %loop-memcpy-residual2221 ] %residual-loop-index2223 = phi i64 [ %1384, %loop-memcpy-residual2221 ], [ 0, %loop-memcpy-residual2221.preheader ] %scevgep2990 = getelementptr i8, ptr %agg.tmp13.i.sroa.0.0, i64 %residual-loop-index2223 %1383 = load i8, ptr %scevgep2990, align 1 %scevgep2989 = getelementptr i8, ptr %scevgep2988, i64 %residual-loop-index2223 store i8 %1383, ptr %scevgep2989, align 1 %1384 = add i64 %residual-loop-index2223, 1 %1385 = icmp uge i64 %1384, %1306 %1386 = call i64 @llvm.amdgcn.if.break.i64(i1 %1385, i64 %phi.broken3812) %1387 = call i1 @llvm.amdgcn.loop.i64(i64 %1386) br i1 %1387, label %Flow3537, label %loop-memcpy-residual2221 Flow3537: ; preds = %loop-memcpy-residual2221 %.lcssa3964 = phi i64 [ %1386, %loop-memcpy-residual2221 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3964) br label %Flow3538, !amdgpu.uniform !42 post-loop-memcpy-expansion2218: ; preds = %Flow3538 %tobool.not.i.i.i.i.i.i997 = icmp eq i32 %.lcssa3969, 0 %conv.i.i.i.i.i.i998 = zext i1 %tobool.not.i.i.i.i.i.i997 to i32 fence release %1388 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i999 = zext i32 %.lcssa3971 to i64 %arrayidx.i24.i.i.i.i.i1000 = getelementptr inbounds nuw i32, ptr %1388, i64 %idxprom.i23.i.i.i.i.i999 store atomic i32 %conv.i.i.i.i.i.i998, ptr %arrayidx.i24.i.i.i.i.i1000 monotonic, align 4 %1389 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i1001 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1389, i64 %idxprom.i23.i.i.i.i.i999, !amdgpu.uniform !42 %1390 = load i64, ptr %arrayidx.i.i5.i.i1001, align 8, !tbaa !80 br label %while.cond.i.i.i.i1002, !amdgpu.uniform !42 while.cond.i.i.i.i1002: ; preds = %post-loop-memcpy-expansion2218, %Flow3535 %phi.broken3815 = phi i64 [ 0, %post-loop-memcpy-expansion2218 ], [ %1405, %Flow3535 ] %port.sroa.37.0.i.i1003 = phi i32 [ %1403, %Flow3535 ], [ %conv.i.i.i.i.i.i998, %post-loop-memcpy-expansion2218 ] %idx.0.i.i.i.i1004 = phi i64 [ %1402, %Flow3535 ], [ 56, %post-loop-memcpy-expansion2218 ] %cmp.i.i.i.i1005 = icmp ult i64 %idx.0.i.i.i.i1004, %writer.sroa.10.4.i.i.i.i.i %1391 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i1005) %and.i.i.i.i6.i.i1006 = and i64 %1391, %1390 %tobool.not.i.i.i.i1007 = icmp ne i64 %and.i.i.i.i6.i.i1006, 0 %1392 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i1008 = getelementptr inbounds nuw i32, ptr %1392, i64 %idxprom.i23.i.i.i.i.i999, !amdgpu.uniform !42 %1393 = load atomic i32, ptr %arrayidx.i22.i.i.i1008 monotonic, align 4 %1394 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i1007) %1395 = extractvalue { i1, i64 } %1394, 0 %1396 = extractvalue { i1, i64 } %1394, 1 br i1 %1395, label %cond.false.i8.i.i.i.i1009, label %Flow3535 cond.false.i8.i.i.i.i1009: ; preds = %while.cond.i.i.i.i1002 %1397 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1393) %1398 = icmp ne i32 %1397, %port.sroa.37.0.i.i1003 br i1 %1398, label %while.body.i.i21.i.i.i.i1010.preheader, label %Flow3534, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1010.preheader: ; preds = %cond.false.i8.i.i.i.i1009 br label %while.body.i.i21.i.i.i.i1010, !amdgpu.uniform !42 Flow3534: ; preds = %Flow3532, %cond.false.i8.i.i.i.i1009 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1013, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1010: ; preds = %while.body.i.i21.i.i.i.i1010.preheader, %while.body.i.i21.i.i.i.i1010 tail call void @llvm.amdgcn.s.sleep(i32 2) %1399 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i1011 = getelementptr inbounds nuw i32, ptr %1399, i64 %idxprom.i23.i.i.i.i.i999, !amdgpu.uniform !42 %1400 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i1011 monotonic, align 4 %1401 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1400) %cmp.i.not.i.i23.i.i.i.i1012 = icmp eq i32 %1401, %port.sroa.37.0.i.i1003 br i1 %cmp.i.not.i.i23.i.i.i.i1012, label %Flow3532, label %while.body.i.i21.i.i.i.i1010, !amdgpu.uniform !42 Flow3532: ; preds = %while.body.i.i21.i.i.i.i1010 br label %Flow3534, !amdgpu.uniform !42 Flow3535: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1014, %while.cond.i.i.i.i1002 %1402 = phi i64 [ %add.i.i.i.i1017, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1014 ], [ poison, %while.cond.i.i.i.i1002 ] %1403 = phi i32 [ %conv.i.i26.i.i.i.i1015, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1014 ], [ poison, %while.cond.i.i.i.i1002 ] %1404 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1014 ], [ true, %while.cond.i.i.i.i1002 ] call void @llvm.amdgcn.end.cf.i64(i64 %1396) %1405 = call i64 @llvm.amdgcn.if.break.i64(i1 %1404, i64 %phi.broken3815) %1406 = call i1 @llvm.amdgcn.loop.i64(i64 %1405) br i1 %1406, label %cond.false.i.i.i1024, label %while.cond.i.i.i.i1002 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1013: ; preds = %Flow3534 fence acquire %1407 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i1005) %1408 = extractvalue { i1, i64 } %1407, 0 %1409 = extractvalue { i1, i64 } %1407, 1 br i1 %1408, label %if.then.i.i.i.i.i.i.i1018, label %Flow3531 if.then.i.i.i.i.i.i.i1018: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1013 %1410 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %arrayidx.i20.i35.i.i.i.i1022 = getelementptr %"struct.rpc::Buffer", ptr %1410, i64 %idxprom.i19.i.i.i.i.i992 %arrayidx.i22.i38.i.i.i.i1023 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i1022, i64 %sh_prom.i.i.i.i %1411 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1308) %1412 = extractvalue { i1, i64 } %1411, 0 %1413 = extractvalue { i1, i64 } %1411, 1 br i1 %1412, label %loop-memcpy-expansion2213.preheader, label %Flow3530 loop-memcpy-expansion2213.preheader: ; preds = %if.then.i.i.i.i.i.i.i1018 br label %loop-memcpy-expansion2213, !amdgpu.uniform !42 Flow3530: ; preds = %Flow3529, %if.then.i.i.i.i.i.i.i1018 call void @llvm.amdgcn.end.cf.i64(i64 %1413) br label %loop-memcpy-residual-header2216, !amdgpu.uniform !42 loop-memcpy-expansion2213: ; preds = %loop-memcpy-expansion2213.preheader, %loop-memcpy-expansion2213 %phi.broken3813 = phi i64 [ 0, %loop-memcpy-expansion2213.preheader ], [ %1419, %loop-memcpy-expansion2213 ] %loop-index2214 = phi i64 [ %1417, %loop-memcpy-expansion2213 ], [ 0, %loop-memcpy-expansion2213.preheader ] %1414 = getelementptr i8, ptr %agg.tmp13.i.sroa.0.0, i64 %loop-index2214 %1415 = load <4 x i32>, ptr %1414, align 1 %1416 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i1023, i64 %loop-index2214 store <4 x i32> %1415, ptr %1416, align 1 %1417 = add i64 %loop-index2214, 16 %1418 = icmp uge i64 %1417, %1307 %1419 = call i64 @llvm.amdgcn.if.break.i64(i1 %1418, i64 %phi.broken3813) %1420 = call i1 @llvm.amdgcn.loop.i64(i64 %1419) br i1 %1420, label %Flow3529, label %loop-memcpy-expansion2213 Flow3527: ; preds = %Flow3526, %loop-memcpy-residual-header2216 call void @llvm.amdgcn.end.cf.i64(i64 %2585) br label %Flow3531, !amdgpu.uniform !42 loop-memcpy-residual2215: ; preds = %loop-memcpy-residual2215.preheader, %loop-memcpy-residual2215 %phi.broken3814 = phi i64 [ 0, %loop-memcpy-residual2215.preheader ], [ %1425, %loop-memcpy-residual2215 ] %residual-loop-index2217 = phi i64 [ %1423, %loop-memcpy-residual2215 ], [ 0, %loop-memcpy-residual2215.preheader ] %scevgep2986 = getelementptr i8, ptr %agg.tmp13.i.sroa.0.0, i64 %residual-loop-index2217 %1421 = load i8, ptr %scevgep2986, align 1 %1422 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i1023, i64 %residual-loop-index2217 store i8 %1421, ptr %1422, align 1 %1423 = add i64 %residual-loop-index2217, 1 %1424 = icmp uge i64 %1423, %1306 %1425 = call i64 @llvm.amdgcn.if.break.i64(i1 %1424, i64 %phi.broken3814) %1426 = call i1 @llvm.amdgcn.loop.i64(i64 %1425) br i1 %1426, label %Flow3526, label %loop-memcpy-residual2215 Flow3526: ; preds = %loop-memcpy-residual2215 %.lcssa3961 = phi i64 [ %1425, %loop-memcpy-residual2215 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3961) br label %Flow3527, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1014: ; preds = %Flow3531 %conv.i.i26.i.i.i.i1015 = xor i32 %port.sroa.37.0.i.i1003, 1 fence release %1427 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i1016 = getelementptr inbounds nuw i32, ptr %1427, i64 %idxprom.i23.i.i.i.i.i999 store atomic i32 %conv.i.i26.i.i.i.i1015, ptr %arrayidx.i24.i29.i.i.i.i1016 monotonic, align 4 %add.i.i.i.i1017 = add i64 %idx.0.i.i.i.i1004, 64 br label %Flow3535, !amdgpu.uniform !42 cond.false.i.i.i1024: ; preds = %Flow3535 %.lcssa3963 = phi i64 [ %1405, %Flow3535 ] %port.sroa.37.0.i.i1003.lcssa = phi i32 [ %port.sroa.37.0.i.i1003, %Flow3535 ] %.lcssa3962 = phi i32 [ %1393, %Flow3535 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3963) %1428 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa3962) %1429 = icmp ne i32 %1428, %port.sroa.37.0.i.i1003.lcssa %1430 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1429) %1431 = extractvalue { i1, i64 } %1430, 0 %1432 = extractvalue { i1, i64 } %1430, 1 br i1 %1431, label %while.body.i.i.i.i1025.preheader, label %Flow3524 while.body.i.i.i.i1025.preheader: ; preds = %cond.false.i.i.i1024 br label %while.body.i.i.i.i1025, !amdgpu.uniform !42 Flow3524: ; preds = %Flow3522, %cond.false.i.i.i1024 call void @llvm.amdgcn.end.cf.i64(i64 %1432) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit1046, !amdgpu.uniform !42 while.body.i.i.i.i1025: ; preds = %while.body.i.i.i.i1025.preheader, %while.body.i.i.i.i1025 %phi.broken3816 = phi i64 [ 0, %while.body.i.i.i.i1025.preheader ], [ %1436, %while.body.i.i.i.i1025 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %1433 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i1026 = getelementptr inbounds nuw i32, ptr %1433, i64 %idxprom.i23.i.i.i.i.i999, !amdgpu.uniform !42 %1434 = load atomic i32, ptr %arrayidx.i.i.i8.i.i1026 monotonic, align 4 %1435 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1434) %cmp.i.not.i.i.i.i1027 = icmp eq i32 %1435, %port.sroa.37.0.i.i1003.lcssa %1436 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i1027, i64 %phi.broken3816) %1437 = call i1 @llvm.amdgcn.loop.i64(i64 %1436) br i1 %1437, label %Flow3522, label %while.body.i.i.i.i1025 Flow3522: ; preds = %while.body.i.i.i.i1025 %.lcssa3959 = phi i64 [ %1436, %while.body.i.i.i.i1025 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3959) br label %Flow3524, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit1046: ; preds = %Flow3524 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %1438 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa3970, i1 true) %iszero.i.i.i.i.i13.i.i1029 = icmp ne i64 %.lcssa3970, 0 %cmp2.i.i.i.i14.i.i1030 = icmp eq i64 %1438, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i1031 = select i1 %iszero.i.i.i.i.i13.i.i1029, i1 %cmp2.i.i.i.i14.i.i1030, i1 false %1439 = and i32 %.lcssa3971, 31 %conv4.i.i.i19.i.i1035 = zext i1 %cmp.i.i.i.i15.i.i1031 to i32 %shl.i.i.i20.i.i1036 = shl nuw i32 %conv4.i.i.i19.i.i1035, %1439 %xor.i.i.i21.i.i1037 = xor i32 %shl.i.i.i20.i.i1036, -1 %1440 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2550, !amdgpu.uniform !42 1441: ; preds = %ComputeEnd2551 %div8.i.i.i16.i.i1032 = lshr i32 %.lcssa3971, 5 %idxprom.i.i.i17.i.i1033 = zext nneg i32 %div8.i.i.i16.i.i1032 to i64 %1442 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i1033 %sunkaddr3269 = getelementptr inbounds i8, ptr addrspace(1) %1442, i64 40 %1443 = atomicrmw and ptr addrspace(1) %sunkaddr3269, i32 %.lcssa3958 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1444, !amdgpu.uniform !42 1444: ; preds = %1441, %ComputeEnd2551 call void @llvm.amdgcn.end.cf.i64(i64 %3337) tail call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i.i1050, !amdgpu.uniform !42 for.cond.i.i.i1050: ; preds = %1444, %Flow3521 %1445 = phi i32 [ %1483, %Flow3521 ], [ poison, %1444 ] %1446 = phi i64 [ %1484, %Flow3521 ], [ poison, %1444 ] %1447 = phi i32 [ %1485, %Flow3521 ], [ poison, %1444 ] %retval.sroa.6.0.i.i.i1051 = phi i32 [ %1488, %Flow3521 ], [ undef, %1444 ] %retval.sroa.2.0.i.i.i1053 = phi i64 [ %1487, %Flow3521 ], [ undef, %1444 ] %retval.sroa.8.0.i.i.i1054 = phi i32 [ %1486, %Flow3521 ], [ undef, %1444 ] %index.0.i.i.i1055 = phi i32 [ %1490, %Flow3521 ], [ 0, %1444 ] %1448 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i1056 = icmp ult i32 %index.0.i.i.i1055, %1448 %spec.store.select.i.i.i1057 = select i1 %cmp.not.i.i.i1056, i32 %index.0.i.i.i1055, i32 0 %1449 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %1450 = and i32 %spec.store.select.i.i.i1057, 31 %1451 = lshr i64 %1449, %sh_prom.i.i.i.i %1452 = trunc i64 %1451 to i32 %conv4.i.i.i.i.i1061 = and i32 %1452, 1 %shl.i.i.i.i.i1062 = shl nuw i32 %conv4.i.i.i.i.i1061, %1450 %1453 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2554, !amdgpu.uniform !42 1454: ; preds = %ComputeEnd2555 %sunkaddr3270 = getelementptr inbounds i8, ptr addrspace(1) %3347, i64 40 %1455 = atomicrmw or ptr addrspace(1) %sunkaddr3270, i32 %.lcssa3952 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1456, !amdgpu.uniform !42 1456: ; preds = %1454, %ComputeEnd2555 %1457 = phi i32 [ %1455, %1454 ], [ poison, %ComputeEnd2555 ] call void @llvm.amdgcn.end.cf.i64(i64 %3356) %1458 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %1457) %1459 = or i32 %1458, %.lcssa3953 %shl5.i.i.i.i.i1063 = shl nuw i32 1, %1450 %and.i.i.i.i.i1064 = and i32 %shl5.i.i.i.i.i1063, %1459 %tobool3.i.i.i.i1065 = icmp ne i32 %and.i.i.i.i.i1064, 0 %1460 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i1065) %and.i.i.i.i.i.i1066 = and i64 %1460, %1449 %cmp.i.not.i.i.i1067 = icmp ne i64 %1449, %and.i.i.i.i.i.i1066 br i1 %cmp.i.not.i.i.i1067, label %if.then.i.i.i.i1068, label %Flow3520, !amdgpu.uniform !42 if.then.i.i.i.i1068: ; preds = %1456 fence syncscope("agent") acquire %1461 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %1462 = extractelement <2 x i64> %1461, i32 0 %1463 = inttoptr i64 %1462 to ptr %1464 = extractelement <2 x i64> %1461, i32 1 %1465 = inttoptr i64 %1464 to ptr %idxprom.i.i.i.i1069 = zext i32 %spec.store.select.i.i.i1057 to i64 %arrayidx.i.i.i.i1070 = getelementptr inbounds nuw i32, ptr %1463, i64 %idxprom.i.i.i.i1069, !amdgpu.uniform !42 %1466 = load atomic i32, ptr %arrayidx.i.i.i.i1070 monotonic, align 4 %1467 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1466) %arrayidx.i45.i.i.i1071 = getelementptr inbounds nuw i32, ptr %1465, i64 %idxprom.i.i.i.i1069, !amdgpu.uniform !42 %1468 = load atomic i32, ptr %arrayidx.i45.i.i.i1071 monotonic, align 4 %1469 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1468) %cmp.i46.not.i.i.i1072 = icmp ne i32 %1467, %1469 br i1 %cmp.i46.not.i.i.i1072, label %if.then12.i.i.i1073, label %Flow3518, !amdgpu.uniform !42 if.then12.i.i.i1073: ; preds = %if.then.i.i.i.i1068 fence syncscope("agent") release %1470 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1449, i1 true) %iszero.i.i.i.i.i.i.i1074 = icmp ne i64 %1449, 0 %cmp2.i.i.i.i.i.i1075 = icmp eq i64 %1470, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i1076 = select i1 %iszero.i.i.i.i.i.i.i1074, i1 %cmp2.i.i.i.i.i.i1075, i1 false %conv4.i.i51.i.i.i1077 = zext i1 %cmp.i.i.i.i.i.i1076 to i32 %shl.i.i52.i.i.i1078 = shl nuw i32 %conv4.i.i51.i.i.i1077, %1450 %xor.i.i.i.i.i1079 = xor i32 %shl.i.i52.i.i.i1078, -1 %1471 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2559, !amdgpu.uniform !42 1472: ; preds = %ComputeEnd2560 %sunkaddr3271 = getelementptr inbounds i8, ptr addrspace(1) %3347, i64 40 %1473 = atomicrmw and ptr addrspace(1) %sunkaddr3271, i32 %.lcssa3954 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1474, !amdgpu.uniform !42 1474: ; preds = %1472, %ComputeEnd2560 call void @llvm.amdgcn.end.cf.i64(i64 %3374) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3518, !amdgpu.uniform !42 if.end14.i.i.i1137: ; preds = %Flow3518 %1475 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1449, i1 true) %iszero.i.i.i.i.i.i1138 = icmp ne i64 %1449, 0 %cmp2.i.i.i.i.i1139 = icmp eq i64 %1475, %sh_prom.i.i.i.i %cmp.i.i.i.i.i1140 = select i1 %iszero.i.i.i.i.i.i1138, i1 %cmp2.i.i.i.i.i1139, i1 false %1476 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i1140) %1477 = extractvalue { i1, i64 } %1476, 0 %1478 = extractvalue { i1, i64 } %1476, 1 br i1 %1477, label %if.then16.i.i.i1142, label %if.end22.i.i.i1141 if.then16.i.i.i1142: ; preds = %if.end14.i.i.i1137 %1479 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i1143 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1479, i64 %idxprom.i.i.i.i1069, i32 1 store i32 1660944387, ptr %opcode.i.i.i1143, align 8, !tbaa !77 %arrayidx21.i.i.i1144 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1479, i64 %idxprom.i.i.i.i1069 store i64 %1449, ptr %arrayidx21.i.i.i1144, align 8, !tbaa !80 br label %if.end22.i.i.i1141, !amdgpu.uniform !42 Flow3519: ; preds = %if.end22.i.i.i1141, %Flow3518 %1480 = phi i32 [ %1467, %if.end22.i.i.i1141 ], [ %retval.sroa.8.0.i.i.i1054, %Flow3518 ] %1481 = phi i64 [ %1449, %if.end22.i.i.i1141 ], [ %retval.sroa.2.0.i.i.i1053, %Flow3518 ] %1482 = phi i32 [ %spec.store.select.i.i.i1057, %if.end22.i.i.i1141 ], [ %retval.sroa.6.0.i.i.i1051, %Flow3518 ] br label %cleanup26.i.i.i1080, !amdgpu.uniform !42 if.end22.i.i.i1141: ; preds = %if.then16.i.i.i1142, %if.end14.i.i.i1137 call void @llvm.amdgcn.end.cf.i64(i64 %1478) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3519, !amdgpu.uniform !42 Flow3520: ; preds = %cleanup26.i.i.i1080, %1456 %1483 = phi i32 [ %1482, %cleanup26.i.i.i1080 ], [ %1445, %1456 ] %1484 = phi i64 [ %1481, %cleanup26.i.i.i1080 ], [ %1446, %1456 ] %1485 = phi i32 [ %1480, %cleanup26.i.i.i1080 ], [ %1447, %1456 ] %1486 = phi i32 [ %1480, %cleanup26.i.i.i1080 ], [ %retval.sroa.8.0.i.i.i1054, %1456 ] %1487 = phi i64 [ %1481, %cleanup26.i.i.i1080 ], [ %retval.sroa.2.0.i.i.i1053, %1456 ] %1488 = phi i32 [ %1482, %cleanup26.i.i.i1080 ], [ %retval.sroa.6.0.i.i.i1051, %1456 ] %1489 = phi i1 [ %cmp.i46.not.i.i.i1072, %cleanup26.i.i.i1080 ], [ true, %1456 ] br i1 %1489, label %for.inc.i.i.i1085, label %Flow3521, !amdgpu.uniform !42 cleanup26.i.i.i1080: ; preds = %Flow3519 br label %Flow3520, !amdgpu.uniform !42 for.inc.i.i.i1085: ; preds = %Flow3520 %inc.i.i.i1090 = add i32 %spec.store.select.i.i.i1057, 1 br label %Flow3521, !amdgpu.uniform !42 Flow3521: ; preds = %for.inc.i.i.i1085, %Flow3520 %1490 = phi i32 [ %inc.i.i.i1090, %for.inc.i.i.i1085 ], [ poison, %Flow3520 ] %1491 = phi i1 [ false, %for.inc.i.i.i1085 ], [ true, %Flow3520 ] br i1 %1491, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1091, label %for.cond.i.i.i1050, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1091: ; preds = %Flow3521 %.lcssa3957 = phi i32 [ %1483, %Flow3521 ] %.lcssa3956 = phi i64 [ %1484, %Flow3521 ] %.lcssa3955 = phi i32 [ %1485, %Flow3521 ] fence acquire %1492 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i1092 = shl i32 %.lcssa3957, 6 %idxprom.i19.i.i.i.i.i1093 = zext i32 %mul.i.i.i.i.i.i1092 to i64 %arrayidx.i20.i.i.i.i.i1094 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %1492, i64 %idxprom.i19.i.i.i.i.i1093 %arrayidx.i22.i.i.i.i.i1095 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i1094, i64 %sh_prom.i.i.i.i store i64 1, ptr %arrayidx.i22.i.i.i.i.i1095, align 8, !tbaa !82 %arrayidx6.i.i.i.i.i.i.i1096 = getelementptr inbounds nuw i8, ptr %arrayidx.i22.i.i.i.i.i1095, i64 8 store i8 10, ptr %arrayidx6.i.i.i.i.i.i.i1096, align 8 %tobool.not.i.i.i.i.i.i1097 = icmp eq i32 %.lcssa3955, 0 %conv.i.i.i.i.i.i1098 = zext i1 %tobool.not.i.i.i.i.i.i1097 to i32 fence release %1493 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i1099 = zext i32 %.lcssa3957 to i64 %arrayidx.i24.i.i.i.i.i1100 = getelementptr inbounds nuw i32, ptr %1493, i64 %idxprom.i23.i.i.i.i.i1099 store atomic i32 %conv.i.i.i.i.i.i1098, ptr %arrayidx.i24.i.i.i.i.i1100 monotonic, align 4 %1494 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i1101 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1494, i64 %idxprom.i23.i.i.i.i.i1099, !amdgpu.uniform !42 %1495 = load i64, ptr %arrayidx.i.i5.i.i1101, align 8, !tbaa !80 br label %while.cond.i.i.i.i1102, !amdgpu.uniform !42 while.cond.i.i.i.i1102: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1091, %Flow3517 %phi.broken3817 = phi i64 [ 0, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1091 ], [ %1510, %Flow3517 ] %port.sroa.37.0.i.i1103 = phi i32 [ %1508, %Flow3517 ], [ %conv.i.i.i.i.i.i1098, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1091 ] %idx.0.i.i.i.i1104 = phi i64 [ %1507, %Flow3517 ], [ 56, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1091 ] %cmp.i.i.i.i1105 = icmp eq i64 %idx.0.i.i.i.i1104, 0 %1496 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i1105) %and.i.i.i.i6.i.i1106 = and i64 %1496, %1495 %tobool.not.i.i.i.i1107 = icmp ne i64 %and.i.i.i.i6.i.i1106, 0 %1497 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i1108 = getelementptr inbounds nuw i32, ptr %1497, i64 %idxprom.i23.i.i.i.i.i1099, !amdgpu.uniform !42 %1498 = load atomic i32, ptr %arrayidx.i22.i.i.i1108 monotonic, align 4 %1499 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i1107) %1500 = extractvalue { i1, i64 } %1499, 0 %1501 = extractvalue { i1, i64 } %1499, 1 br i1 %1500, label %cond.false.i8.i.i.i.i1109, label %Flow3517 cond.false.i8.i.i.i.i1109: ; preds = %while.cond.i.i.i.i1102 %1502 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1498) %1503 = icmp ne i32 %1502, %port.sroa.37.0.i.i1103 br i1 %1503, label %while.body.i.i21.i.i.i.i1110.preheader, label %Flow3516, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1110.preheader: ; preds = %cond.false.i8.i.i.i.i1109 br label %while.body.i.i21.i.i.i.i1110, !amdgpu.uniform !42 Flow3516: ; preds = %Flow3514, %cond.false.i8.i.i.i.i1109 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1113, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1110: ; preds = %while.body.i.i21.i.i.i.i1110.preheader, %while.body.i.i21.i.i.i.i1110 tail call void @llvm.amdgcn.s.sleep(i32 2) %1504 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i1111 = getelementptr inbounds nuw i32, ptr %1504, i64 %idxprom.i23.i.i.i.i.i1099, !amdgpu.uniform !42 %1505 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i1111 monotonic, align 4 %1506 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1505) %cmp.i.not.i.i23.i.i.i.i1112 = icmp eq i32 %1506, %port.sroa.37.0.i.i1103 br i1 %cmp.i.not.i.i23.i.i.i.i1112, label %Flow3514, label %while.body.i.i21.i.i.i.i1110, !amdgpu.uniform !42 Flow3514: ; preds = %while.body.i.i21.i.i.i.i1110 br label %Flow3516, !amdgpu.uniform !42 Flow3517: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1114, %while.cond.i.i.i.i1102 %1507 = phi i64 [ %add.i.i.i.i1117, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1114 ], [ poison, %while.cond.i.i.i.i1102 ] %1508 = phi i32 [ %conv.i.i26.i.i.i.i1115, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1114 ], [ poison, %while.cond.i.i.i.i1102 ] %1509 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1114 ], [ true, %while.cond.i.i.i.i1102 ] call void @llvm.amdgcn.end.cf.i64(i64 %1501) %1510 = call i64 @llvm.amdgcn.if.break.i64(i1 %1509, i64 %phi.broken3817) %1511 = call i1 @llvm.amdgcn.loop.i64(i64 %1510) br i1 %1511, label %cond.false.i.i.i1123, label %while.cond.i.i.i.i1102 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1113: ; preds = %Flow3516 fence acquire br i1 %cmp.i.i.i.i1105, label %if.then.i.i.i.i.i.i.i1118, label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1114, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i1118: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1113 %1512 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %arrayidx.i20.i35.i.i.i.i1121 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %1512, i64 %idxprom.i19.i.i.i.i.i1093 %arrayidx.i22.i38.i.i.i.i1122 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i1121, i64 %sh_prom.i.i.i.i store i8 10, ptr %arrayidx.i22.i38.i.i.i.i1122, align 1 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1114, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1114: ; preds = %if.then.i.i.i.i.i.i.i1118, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1113 %conv.i.i26.i.i.i.i1115 = xor i32 %port.sroa.37.0.i.i1103, 1 fence release %1513 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i1116 = getelementptr inbounds nuw i32, ptr %1513, i64 %idxprom.i23.i.i.i.i.i1099 store atomic i32 %conv.i.i26.i.i.i.i1115, ptr %arrayidx.i24.i29.i.i.i.i1116 monotonic, align 4 %add.i.i.i.i1117 = add i64 %idx.0.i.i.i.i1104, 64 br label %Flow3517, !amdgpu.uniform !42 cond.false.i.i.i1123: ; preds = %Flow3517 %.lcssa3951 = phi i64 [ %1510, %Flow3517 ] %port.sroa.37.0.i.i1103.lcssa = phi i32 [ %port.sroa.37.0.i.i1103, %Flow3517 ] %.lcssa3950 = phi i32 [ %1498, %Flow3517 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3951) %1514 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa3950) %1515 = icmp ne i32 %1514, %port.sroa.37.0.i.i1103.lcssa %1516 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1515) %1517 = extractvalue { i1, i64 } %1516, 0 %1518 = extractvalue { i1, i64 } %1516, 1 br i1 %1517, label %while.body.i.i.i.i1124.preheader, label %Flow3513 while.body.i.i.i.i1124.preheader: ; preds = %cond.false.i.i.i1123 br label %while.body.i.i.i.i1124, !amdgpu.uniform !42 Flow3513: ; preds = %Flow3511, %cond.false.i.i.i1123 call void @llvm.amdgcn.end.cf.i64(i64 %1518) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit1145, !amdgpu.uniform !42 while.body.i.i.i.i1124: ; preds = %while.body.i.i.i.i1124.preheader, %while.body.i.i.i.i1124 %phi.broken3818 = phi i64 [ 0, %while.body.i.i.i.i1124.preheader ], [ %1522, %while.body.i.i.i.i1124 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %1519 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i1125 = getelementptr inbounds nuw i32, ptr %1519, i64 %idxprom.i23.i.i.i.i.i1099, !amdgpu.uniform !42 %1520 = load atomic i32, ptr %arrayidx.i.i.i8.i.i1125 monotonic, align 4 %1521 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1520) %cmp.i.not.i.i.i.i1126 = icmp eq i32 %1521, %port.sroa.37.0.i.i1103.lcssa %1522 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i1126, i64 %phi.broken3818) %1523 = call i1 @llvm.amdgcn.loop.i64(i64 %1522) br i1 %1523, label %Flow3511, label %while.body.i.i.i.i1124 Flow3511: ; preds = %while.body.i.i.i.i1124 %.lcssa3949 = phi i64 [ %1522, %while.body.i.i.i.i1124 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3949) br label %Flow3513, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit1145: ; preds = %Flow3513 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %1524 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa3956, i1 true) %iszero.i.i.i.i.i13.i.i1128 = icmp ne i64 %.lcssa3956, 0 %cmp2.i.i.i.i14.i.i1129 = icmp eq i64 %1524, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i1130 = select i1 %iszero.i.i.i.i.i13.i.i1128, i1 %cmp2.i.i.i.i14.i.i1129, i1 false %1525 = and i32 %.lcssa3957, 31 %conv4.i.i.i19.i.i1134 = zext i1 %cmp.i.i.i.i15.i.i1130 to i32 %shl.i.i.i20.i.i1135 = shl nuw i32 %conv4.i.i.i19.i.i1134, %1525 %xor.i.i.i21.i.i1136 = xor i32 %shl.i.i.i20.i.i1135, -1 %1526 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2563, !amdgpu.uniform !42 1527: ; preds = %ComputeEnd2564 %div8.i.i.i16.i.i1131 = lshr i32 %.lcssa3957, 5 %idxprom.i.i.i17.i.i1132 = zext nneg i32 %div8.i.i.i16.i.i1131 to i64 %1528 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i1132 %sunkaddr3272 = getelementptr inbounds i8, ptr addrspace(1) %1528, i64 40 %1529 = atomicrmw and ptr addrspace(1) %sunkaddr3272, i32 %.lcssa3948 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1530, !amdgpu.uniform !42 1530: ; preds = %1527, %ComputeEnd2564 call void @llvm.amdgcn.end.cf.i64(i64 %3391) tail call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i1.i1154, !amdgpu.uniform !42 for.cond.i.i1.i1154: ; preds = %1530, %Flow3510 %1531 = phi i32 [ %1569, %Flow3510 ], [ poison, %1530 ] %1532 = phi i64 [ %1570, %Flow3510 ], [ poison, %1530 ] %1533 = phi i32 [ %1571, %Flow3510 ], [ poison, %1530 ] %retval.sroa.6.0.i.i.i1155 = phi i32 [ %1574, %Flow3510 ], [ undef, %1530 ] %retval.sroa.2.0.i.i.i1157 = phi i64 [ %1573, %Flow3510 ], [ undef, %1530 ] %retval.sroa.8.0.i.i.i1158 = phi i32 [ %1572, %Flow3510 ], [ undef, %1530 ] %index.0.i.i.i1159 = phi i32 [ %1576, %Flow3510 ], [ 0, %1530 ] %1534 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i1160 = icmp ult i32 %index.0.i.i.i1159, %1534 %spec.store.select.i.i.i1161 = select i1 %cmp.not.i.i.i1160, i32 %index.0.i.i.i1159, i32 0 %1535 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %1536 = and i32 %spec.store.select.i.i.i1161, 31 %1537 = lshr i64 %1535, %sh_prom.i.i.i.i %1538 = trunc i64 %1537 to i32 %conv4.i.i.i.i.i1165 = and i32 %1538, 1 %shl.i.i.i.i.i1166 = shl nuw i32 %conv4.i.i.i.i.i1165, %1536 %1539 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2567, !amdgpu.uniform !42 1540: ; preds = %ComputeEnd2568 %sunkaddr3273 = getelementptr inbounds i8, ptr addrspace(1) %3401, i64 40 %1541 = atomicrmw or ptr addrspace(1) %sunkaddr3273, i32 %.lcssa3942 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1542, !amdgpu.uniform !42 1542: ; preds = %1540, %ComputeEnd2568 %1543 = phi i32 [ %1541, %1540 ], [ poison, %ComputeEnd2568 ] call void @llvm.amdgcn.end.cf.i64(i64 %3410) %1544 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %1543) %1545 = or i32 %1544, %.lcssa3943 %shl5.i.i.i.i.i1167 = shl nuw i32 1, %1536 %and.i.i.i.i.i1168 = and i32 %shl5.i.i.i.i.i1167, %1545 %tobool3.i.i.i.i1169 = icmp ne i32 %and.i.i.i.i.i1168, 0 %1546 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i1169) %and.i.i.i.i.i.i1170 = and i64 %1546, %1535 %cmp.i.not.i.i.i1171 = icmp ne i64 %1535, %and.i.i.i.i.i.i1170 br i1 %cmp.i.not.i.i.i1171, label %if.then.i.i.i.i1172, label %Flow3509, !amdgpu.uniform !42 if.then.i.i.i.i1172: ; preds = %1542 fence syncscope("agent") acquire %1547 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %1548 = extractelement <2 x i64> %1547, i32 0 %1549 = inttoptr i64 %1548 to ptr %1550 = extractelement <2 x i64> %1547, i32 1 %1551 = inttoptr i64 %1550 to ptr %idxprom.i.i.i.i1173 = zext i32 %spec.store.select.i.i.i1161 to i64 %arrayidx.i.i.i.i1174 = getelementptr inbounds nuw i32, ptr %1549, i64 %idxprom.i.i.i.i1173, !amdgpu.uniform !42 %1552 = load atomic i32, ptr %arrayidx.i.i.i.i1174 monotonic, align 4 %1553 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1552) %arrayidx.i45.i.i.i1175 = getelementptr inbounds nuw i32, ptr %1551, i64 %idxprom.i.i.i.i1173, !amdgpu.uniform !42 %1554 = load atomic i32, ptr %arrayidx.i45.i.i.i1175 monotonic, align 4 %1555 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1554) %cmp.i46.not.i.i.i1176 = icmp ne i32 %1553, %1555 br i1 %cmp.i46.not.i.i.i1176, label %if.then12.i.i.i1177, label %Flow3507, !amdgpu.uniform !42 if.then12.i.i.i1177: ; preds = %if.then.i.i.i.i1172 fence syncscope("agent") release %1556 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1535, i1 true) %iszero.i.i.i.i.i.i.i1178 = icmp ne i64 %1535, 0 %cmp2.i.i.i.i.i.i1179 = icmp eq i64 %1556, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i1180 = select i1 %iszero.i.i.i.i.i.i.i1178, i1 %cmp2.i.i.i.i.i.i1179, i1 false %conv4.i.i51.i.i.i1181 = zext i1 %cmp.i.i.i.i.i.i1180 to i32 %shl.i.i52.i.i.i1182 = shl nuw i32 %conv4.i.i51.i.i.i1181, %1536 %xor.i.i.i.i.i1183 = xor i32 %shl.i.i52.i.i.i1182, -1 %1557 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2572, !amdgpu.uniform !42 1558: ; preds = %ComputeEnd2573 %sunkaddr3274 = getelementptr inbounds i8, ptr addrspace(1) %3401, i64 40 %1559 = atomicrmw and ptr addrspace(1) %sunkaddr3274, i32 %.lcssa3944 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1560, !amdgpu.uniform !42 1560: ; preds = %1558, %ComputeEnd2573 call void @llvm.amdgcn.end.cf.i64(i64 %3428) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3507, !amdgpu.uniform !42 if.end14.i.i.i1243: ; preds = %Flow3507 %1561 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1535, i1 true) %iszero.i.i.i.i.i.i1244 = icmp ne i64 %1535, 0 %cmp2.i.i.i.i.i1245 = icmp eq i64 %1561, %sh_prom.i.i.i.i %cmp.i.i.i.i.i1246 = select i1 %iszero.i.i.i.i.i.i1244, i1 %cmp2.i.i.i.i.i1245, i1 false %1562 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i1246) %1563 = extractvalue { i1, i64 } %1562, 0 %1564 = extractvalue { i1, i64 } %1562, 1 br i1 %1563, label %if.then16.i.i.i1248, label %if.end22.i.i.i1247 if.then16.i.i.i1248: ; preds = %if.end14.i.i.i1243 %1565 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i1249 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1565, i64 %idxprom.i.i.i.i1173, i32 1 store i32 1660944387, ptr %opcode.i.i.i1249, align 8, !tbaa !77 %arrayidx21.i.i.i1250 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1565, i64 %idxprom.i.i.i.i1173 store i64 %1535, ptr %arrayidx21.i.i.i1250, align 8, !tbaa !80 br label %if.end22.i.i.i1247, !amdgpu.uniform !42 Flow3508: ; preds = %if.end22.i.i.i1247, %Flow3507 %1566 = phi i32 [ %1553, %if.end22.i.i.i1247 ], [ %retval.sroa.8.0.i.i.i1158, %Flow3507 ] %1567 = phi i64 [ %1535, %if.end22.i.i.i1247 ], [ %retval.sroa.2.0.i.i.i1157, %Flow3507 ] %1568 = phi i32 [ %spec.store.select.i.i.i1161, %if.end22.i.i.i1247 ], [ %retval.sroa.6.0.i.i.i1155, %Flow3507 ] br label %cleanup26.i.i.i1184, !amdgpu.uniform !42 if.end22.i.i.i1247: ; preds = %if.then16.i.i.i1248, %if.end14.i.i.i1243 call void @llvm.amdgcn.end.cf.i64(i64 %1564) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3508, !amdgpu.uniform !42 Flow3509: ; preds = %cleanup26.i.i.i1184, %1542 %1569 = phi i32 [ %1568, %cleanup26.i.i.i1184 ], [ %1531, %1542 ] %1570 = phi i64 [ %1567, %cleanup26.i.i.i1184 ], [ %1532, %1542 ] %1571 = phi i32 [ %1566, %cleanup26.i.i.i1184 ], [ %1533, %1542 ] %1572 = phi i32 [ %1566, %cleanup26.i.i.i1184 ], [ %retval.sroa.8.0.i.i.i1158, %1542 ] %1573 = phi i64 [ %1567, %cleanup26.i.i.i1184 ], [ %retval.sroa.2.0.i.i.i1157, %1542 ] %1574 = phi i32 [ %1568, %cleanup26.i.i.i1184 ], [ %retval.sroa.6.0.i.i.i1155, %1542 ] %1575 = phi i1 [ %cmp.i46.not.i.i.i1176, %cleanup26.i.i.i1184 ], [ true, %1542 ] br i1 %1575, label %for.inc.i.i.i1189, label %Flow3510, !amdgpu.uniform !42 cleanup26.i.i.i1184: ; preds = %Flow3508 br label %Flow3509, !amdgpu.uniform !42 for.inc.i.i.i1189: ; preds = %Flow3509 %inc.i.i.i1194 = add i32 %spec.store.select.i.i.i1161, 1 br label %Flow3510, !amdgpu.uniform !42 Flow3510: ; preds = %for.inc.i.i.i1189, %Flow3509 %1576 = phi i32 [ %inc.i.i.i1194, %for.inc.i.i.i1189 ], [ poison, %Flow3509 ] %1577 = phi i1 [ false, %for.inc.i.i.i1189 ], [ true, %Flow3509 ] br i1 %1577, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1195, label %for.cond.i.i1.i1154, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1195: ; preds = %Flow3510 %.lcssa3947 = phi i32 [ %1569, %Flow3510 ] %.lcssa3946 = phi i64 [ %1570, %Flow3510 ] %.lcssa3945 = phi i32 [ %1571, %Flow3510 ] fence acquire %1578 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i1196 = shl i32 %.lcssa3947, 6 %idxprom.i19.i.i.i.i.i1197 = zext i32 %mul.i.i.i.i.i.i1196 to i64 %arrayidx.i20.i.i.i.i.i1198 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %1578, i64 %idxprom.i19.i.i.i.i.i1197 %arrayidx.i22.i.i.i.i.i1199 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i1198, i64 %sh_prom.i.i.i.i store i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.36.13 to ptr), i64 6) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.36.13 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i1199, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i1200 = tail call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.36.13 to ptr), i64 6) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.36.13 to ptr) to i64)), i64 56) %1579 = and i64 %spec.select.i.i.i.i.i.i.i1200, 15 %1580 = sub i64 %spec.select.i.i.i.i.i.i.i1200, %1579 %1581 = icmp ne i64 %1580, 0 br i1 %1581, label %loop-memcpy-expansion2375.preheader, label %Flow3506, !amdgpu.uniform !42 loop-memcpy-expansion2375.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1195 %1582 = add nuw nsw i64 %76, 8 %scevgep2983 = getelementptr i8, ptr %1578, i64 %1582 %1583 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1197, 6 %scevgep2984 = getelementptr i8, ptr %scevgep2983, i64 %1583 br label %loop-memcpy-expansion2375, !amdgpu.uniform !42 Flow3506: ; preds = %Flow3505, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1195 br label %loop-memcpy-residual-header2378, !amdgpu.uniform !42 loop-memcpy-expansion2375: ; preds = %loop-memcpy-expansion2375.preheader, %loop-memcpy-expansion2375 %loop-index2376 = phi i64 [ %1586, %loop-memcpy-expansion2375 ], [ 0, %loop-memcpy-expansion2375.preheader ] %1584 = getelementptr i8, ptr addrspace(4) @.str.36.13, i64 %loop-index2376, !amdgpu.uniform !42 %1585 = load <4 x i32>, ptr addrspace(4) %1584, align 1 %scevgep2985 = getelementptr i8, ptr %scevgep2984, i64 %loop-index2376 store <4 x i32> %1585, ptr %scevgep2985, align 1 %1586 = add i64 %loop-index2376, 16 %1587 = icmp uge i64 %1586, %1580 br i1 %1587, label %Flow3505, label %loop-memcpy-expansion2375, !amdgpu.uniform !42 Flow3503: ; preds = %Flow3500, %Flow3502 %1588 = phi i64 [ %2718, %Flow3500 ], [ %2715, %Flow3502 ] br label %post-loop-memcpy-expansion2374, !amdgpu.uniform !42 loop-memcpy-residual2377: ; preds = %loop-memcpy-residual2377.preheader, %loop-memcpy-residual2377 %residual-loop-index2379 = phi i64 [ %1590, %loop-memcpy-residual2377 ], [ 0, %loop-memcpy-residual2377.preheader ] %scevgep2982 = getelementptr i8, ptr addrspace(4) @.str.36.13, i64 %residual-loop-index2379, !amdgpu.uniform !42 %1589 = load i8, ptr addrspace(4) %scevgep2982, align 1 %scevgep2981 = getelementptr i8, ptr %scevgep2980, i64 %residual-loop-index2379 store i8 %1589, ptr %scevgep2981, align 1 %1590 = add i64 %residual-loop-index2379, 1 %1591 = icmp uge i64 %1590, %1579 br i1 %1591, label %Flow3500, label %loop-memcpy-residual2377, !amdgpu.uniform !42 Flow3500: ; preds = %loop-memcpy-residual2377 br label %Flow3503, !amdgpu.uniform !42 post-loop-memcpy-expansion2374: ; preds = %Flow3503 %tobool.not.i.i.i.i.i.i1202 = icmp eq i32 %.lcssa3945, 0 %conv.i.i.i.i.i.i1203 = zext i1 %tobool.not.i.i.i.i.i.i1202 to i32 fence release %1592 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i1204 = zext i32 %.lcssa3947 to i64 %arrayidx.i24.i.i.i.i.i1205 = getelementptr inbounds nuw i32, ptr %1592, i64 %idxprom.i23.i.i.i.i.i1204 store atomic i32 %conv.i.i.i.i.i.i1203, ptr %arrayidx.i24.i.i.i.i.i1205 monotonic, align 4 %1593 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i1206 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1593, i64 %idxprom.i23.i.i.i.i.i1204, !amdgpu.uniform !42 %1594 = load i64, ptr %arrayidx.i.i5.i.i1206, align 8, !tbaa !80 br label %while.cond.i.i.i.i1207, !amdgpu.uniform !42 while.cond.i.i.i.i1207: ; preds = %post-loop-memcpy-expansion2374, %Flow3498 %phi.broken3819 = phi i64 [ 0, %post-loop-memcpy-expansion2374 ], [ %1611, %Flow3498 ] %lsr.iv2972 = phi i64 [ %1609, %Flow3498 ], [ -50, %post-loop-memcpy-expansion2374 ] %lsr.iv2967 = phi ptr addrspace(4) [ %1608, %Flow3498 ], [ getelementptr (i8, ptr addrspace(4) @.str.36.13, i64 56), %post-loop-memcpy-expansion2374 ] %port.sroa.37.0.i.i1208 = phi i32 [ %1607, %Flow3498 ], [ %conv.i.i.i.i.i.i1203, %post-loop-memcpy-expansion2374 ] %idx.0.i.i.i.i1209 = phi i64 [ %1606, %Flow3498 ], [ 56, %post-loop-memcpy-expansion2374 ] %cmp.i.i.i.i1210 = icmp ult i64 %idx.0.i.i.i.i1209, sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.36.13 to ptr), i64 6) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.36.13 to ptr) to i64)) %1595 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i1210) %and.i.i.i.i6.i.i1211 = and i64 %1595, %1594 %tobool.not.i.i.i.i1212 = icmp ne i64 %and.i.i.i.i6.i.i1211, 0 %1596 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i1213 = getelementptr inbounds nuw i32, ptr %1596, i64 %idxprom.i23.i.i.i.i.i1204, !amdgpu.uniform !42 %1597 = load atomic i32, ptr %arrayidx.i22.i.i.i1213 monotonic, align 4 %1598 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i1212) %1599 = extractvalue { i1, i64 } %1598, 0 %1600 = extractvalue { i1, i64 } %1598, 1 br i1 %1599, label %cond.false.i8.i.i.i.i1214, label %Flow3498 cond.false.i8.i.i.i.i1214: ; preds = %while.cond.i.i.i.i1207 %1601 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1597) %1602 = icmp ne i32 %1601, %port.sroa.37.0.i.i1208 br i1 %1602, label %while.body.i.i21.i.i.i.i1215.preheader, label %Flow3497, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1215.preheader: ; preds = %cond.false.i8.i.i.i.i1214 br label %while.body.i.i21.i.i.i.i1215, !amdgpu.uniform !42 Flow3497: ; preds = %Flow3495, %cond.false.i8.i.i.i.i1214 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1218, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1215: ; preds = %while.body.i.i21.i.i.i.i1215.preheader, %while.body.i.i21.i.i.i.i1215 tail call void @llvm.amdgcn.s.sleep(i32 2) %1603 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i1216 = getelementptr inbounds nuw i32, ptr %1603, i64 %idxprom.i23.i.i.i.i.i1204, !amdgpu.uniform !42 %1604 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i1216 monotonic, align 4 %1605 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1604) %cmp.i.not.i.i23.i.i.i.i1217 = icmp eq i32 %1605, %port.sroa.37.0.i.i1208 br i1 %cmp.i.not.i.i23.i.i.i.i1217, label %Flow3495, label %while.body.i.i21.i.i.i.i1215, !amdgpu.uniform !42 Flow3495: ; preds = %while.body.i.i21.i.i.i.i1215 br label %Flow3497, !amdgpu.uniform !42 Flow3498: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1219, %while.cond.i.i.i.i1207 %1606 = phi i64 [ %add.i.i.i.i1222, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1219 ], [ poison, %while.cond.i.i.i.i1207 ] %1607 = phi i32 [ %conv.i.i26.i.i.i.i1220, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1219 ], [ poison, %while.cond.i.i.i.i1207 ] %1608 = phi ptr addrspace(4) [ %scevgep2968, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1219 ], [ poison, %while.cond.i.i.i.i1207 ] %1609 = phi i64 [ %lsr.iv.next2973, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1219 ], [ poison, %while.cond.i.i.i.i1207 ] %1610 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1219 ], [ true, %while.cond.i.i.i.i1207 ] call void @llvm.amdgcn.end.cf.i64(i64 %1600) %1611 = call i64 @llvm.amdgcn.if.break.i64(i1 %1610, i64 %phi.broken3819) %1612 = call i1 @llvm.amdgcn.loop.i64(i64 %1611) br i1 %1612, label %cond.false.i.i.i1229, label %while.cond.i.i.i.i1207 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1218: ; preds = %Flow3497 fence acquire br i1 %cmp.i.i.i.i1210, label %if.then.i.i.i.i.i.i.i1223, label %Flow3494, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i1223: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1218 %sub.i.i.i.i.i.i.i1225 = sub nuw i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.36.13 to ptr), i64 6) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.36.13 to ptr) to i64)), %idx.0.i.i.i.i1209 %spec.select.i.i.i36.i.i.i.i1226 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i1225, i64 64) %1613 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %1614 = and i64 %spec.select.i.i.i36.i.i.i.i1226, 15 %1615 = sub i64 %spec.select.i.i.i36.i.i.i.i1226, %1614 %1616 = icmp ne i64 %1615, 0 br i1 %1616, label %loop-memcpy-expansion2381.preheader, label %Flow3493, !amdgpu.uniform !42 loop-memcpy-expansion2381.preheader: ; preds = %if.then.i.i.i.i.i.i.i1223 %arrayidx.i20.i35.i.i.i.i1227 = getelementptr %"struct.rpc::Buffer", ptr %1613, i64 %idxprom.i19.i.i.i.i.i1197 %arrayidx.i22.i38.i.i.i.i1228 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i1227, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2381, !amdgpu.uniform !42 Flow3493: ; preds = %Flow3492, %if.then.i.i.i.i.i.i.i1223 br label %loop-memcpy-residual-header2384, !amdgpu.uniform !42 loop-memcpy-expansion2381: ; preds = %loop-memcpy-expansion2381.preheader, %loop-memcpy-expansion2381 %loop-index2382 = phi i64 [ %1619, %loop-memcpy-expansion2381 ], [ 0, %loop-memcpy-expansion2381.preheader ] %scevgep2969 = getelementptr i8, ptr addrspace(4) %lsr.iv2967, i64 %loop-index2382, !amdgpu.uniform !42 %1617 = load <4 x i32>, ptr addrspace(4) %scevgep2969, align 1 %1618 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i1228, i64 %loop-index2382 store <4 x i32> %1617, ptr %1618, align 1 %1619 = add i64 %loop-index2382, 16 %1620 = icmp uge i64 %1619, %1615 br i1 %1620, label %Flow3492, label %loop-memcpy-expansion2381, !amdgpu.uniform !42 Flow3490: ; preds = %Flow3489, %loop-memcpy-residual-header2384 br label %Flow3494, !amdgpu.uniform !42 loop-memcpy-residual2383: ; preds = %loop-memcpy-residual2383.preheader, %loop-memcpy-residual2383 %residual-loop-index2385 = phi i64 [ %1622, %loop-memcpy-residual2383 ], [ 0, %loop-memcpy-residual2383.preheader ] %scevgep2978 = getelementptr i8, ptr addrspace(4) %scevgep2977, i64 %residual-loop-index2385, !amdgpu.uniform !42 %1621 = load i8, ptr addrspace(4) %scevgep2978, align 1 %scevgep2976 = getelementptr i8, ptr %scevgep2975, i64 %residual-loop-index2385 store i8 %1621, ptr %scevgep2976, align 1 %1622 = add i64 %residual-loop-index2385, 1 %1623 = icmp uge i64 %1622, %1614 br i1 %1623, label %Flow3489, label %loop-memcpy-residual2383, !amdgpu.uniform !42 Flow3489: ; preds = %loop-memcpy-residual2383 br label %Flow3490, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1219: ; preds = %Flow3494 %conv.i.i26.i.i.i.i1220 = xor i32 %port.sroa.37.0.i.i1208, 1 fence release %1624 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i1221 = getelementptr inbounds nuw i32, ptr %1624, i64 %idxprom.i23.i.i.i.i.i1204 store atomic i32 %conv.i.i26.i.i.i.i1220, ptr %arrayidx.i24.i29.i.i.i.i1221 monotonic, align 4 %add.i.i.i.i1222 = add i64 %idx.0.i.i.i.i1209, 64 %scevgep2968 = getelementptr i8, ptr addrspace(4) %lsr.iv2967, i64 64 %lsr.iv.next2973 = add i64 %lsr.iv2972, -64 br label %Flow3498, !amdgpu.uniform !42 cond.false.i.i.i1229: ; preds = %Flow3498 %.lcssa3941 = phi i64 [ %1611, %Flow3498 ] %port.sroa.37.0.i.i1208.lcssa = phi i32 [ %port.sroa.37.0.i.i1208, %Flow3498 ] %.lcssa3940 = phi i32 [ %1597, %Flow3498 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3941) %1625 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa3940) %1626 = icmp ne i32 %1625, %port.sroa.37.0.i.i1208.lcssa %1627 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1626) %1628 = extractvalue { i1, i64 } %1627, 0 %1629 = extractvalue { i1, i64 } %1627, 1 br i1 %1628, label %while.body.i.i.i.i1230.preheader, label %Flow3487 while.body.i.i.i.i1230.preheader: ; preds = %cond.false.i.i.i1229 br label %while.body.i.i.i.i1230, !amdgpu.uniform !42 Flow3487: ; preds = %Flow3485, %cond.false.i.i.i1229 call void @llvm.amdgcn.end.cf.i64(i64 %1629) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1251, !amdgpu.uniform !42 while.body.i.i.i.i1230: ; preds = %while.body.i.i.i.i1230.preheader, %while.body.i.i.i.i1230 %phi.broken3820 = phi i64 [ 0, %while.body.i.i.i.i1230.preheader ], [ %1633, %while.body.i.i.i.i1230 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %1630 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i1231 = getelementptr inbounds nuw i32, ptr %1630, i64 %idxprom.i23.i.i.i.i.i1204, !amdgpu.uniform !42 %1631 = load atomic i32, ptr %arrayidx.i.i.i8.i.i1231 monotonic, align 4 %1632 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1631) %cmp.i.not.i.i.i.i1232 = icmp eq i32 %1632, %port.sroa.37.0.i.i1208.lcssa %1633 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i1232, i64 %phi.broken3820) %1634 = call i1 @llvm.amdgcn.loop.i64(i64 %1633) br i1 %1634, label %Flow3485, label %while.body.i.i.i.i1230 Flow3485: ; preds = %while.body.i.i.i.i1230 %.lcssa3939 = phi i64 [ %1633, %while.body.i.i.i.i1230 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3939) br label %Flow3487, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1251: ; preds = %Flow3487 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %1635 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa3946, i1 true) %iszero.i.i.i.i.i13.i.i1234 = icmp ne i64 %.lcssa3946, 0 %cmp2.i.i.i.i14.i.i1235 = icmp eq i64 %1635, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i1236 = select i1 %iszero.i.i.i.i.i13.i.i1234, i1 %cmp2.i.i.i.i14.i.i1235, i1 false %1636 = and i32 %.lcssa3947, 31 %conv4.i.i.i19.i.i1240 = zext i1 %cmp.i.i.i.i15.i.i1236 to i32 %shl.i.i.i20.i.i1241 = shl nuw i32 %conv4.i.i.i19.i.i1240, %1636 %xor.i.i.i21.i.i1242 = xor i32 %shl.i.i.i20.i.i1241, -1 %1637 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2576, !amdgpu.uniform !42 1638: ; preds = %ComputeEnd2577 %div8.i.i.i16.i.i1237 = lshr i32 %.lcssa3947, 5 %idxprom.i.i.i17.i.i1238 = zext nneg i32 %div8.i.i.i16.i.i1237 to i64 %1639 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i1238 %sunkaddr3275 = getelementptr inbounds i8, ptr addrspace(1) %1639, i64 40 %1640 = atomicrmw and ptr addrspace(1) %sunkaddr3275, i32 %.lcssa3938 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1641, !amdgpu.uniform !42 1641: ; preds = %1638, %ComputeEnd2577 call void @llvm.amdgcn.end.cf.i64(i64 %3445) tail call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i.i1253, !amdgpu.uniform !42 for.cond.i.i.i1253: ; preds = %1641, %Flow3484 %1642 = phi i32 [ %1680, %Flow3484 ], [ poison, %1641 ] %1643 = phi i64 [ %1681, %Flow3484 ], [ poison, %1641 ] %1644 = phi i32 [ %1682, %Flow3484 ], [ poison, %1641 ] %retval.sroa.6.0.i.i.i1254 = phi i32 [ %1685, %Flow3484 ], [ undef, %1641 ] %retval.sroa.2.0.i.i.i1256 = phi i64 [ %1684, %Flow3484 ], [ undef, %1641 ] %retval.sroa.8.0.i.i.i1257 = phi i32 [ %1683, %Flow3484 ], [ undef, %1641 ] %index.0.i.i.i1258 = phi i32 [ %1687, %Flow3484 ], [ 0, %1641 ] %1645 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i1259 = icmp ult i32 %index.0.i.i.i1258, %1645 %spec.store.select.i.i.i1260 = select i1 %cmp.not.i.i.i1259, i32 %index.0.i.i.i1258, i32 0 %1646 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %1647 = and i32 %spec.store.select.i.i.i1260, 31 %1648 = lshr i64 %1646, %sh_prom.i.i.i.i %1649 = trunc i64 %1648 to i32 %conv4.i.i.i.i.i1264 = and i32 %1649, 1 %shl.i.i.i.i.i1265 = shl nuw i32 %conv4.i.i.i.i.i1264, %1647 %1650 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2580, !amdgpu.uniform !42 1651: ; preds = %ComputeEnd2581 %sunkaddr3276 = getelementptr inbounds i8, ptr addrspace(1) %3455, i64 40 %1652 = atomicrmw or ptr addrspace(1) %sunkaddr3276, i32 %.lcssa3932 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1653, !amdgpu.uniform !42 1653: ; preds = %1651, %ComputeEnd2581 %1654 = phi i32 [ %1652, %1651 ], [ poison, %ComputeEnd2581 ] call void @llvm.amdgcn.end.cf.i64(i64 %3464) %1655 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %1654) %1656 = or i32 %1655, %.lcssa3933 %shl5.i.i.i.i.i1266 = shl nuw i32 1, %1647 %and.i.i.i.i.i1267 = and i32 %shl5.i.i.i.i.i1266, %1656 %tobool3.i.i.i.i1268 = icmp ne i32 %and.i.i.i.i.i1267, 0 %1657 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i1268) %and.i.i.i.i.i.i1269 = and i64 %1657, %1646 %cmp.i.not.i.i.i1270 = icmp ne i64 %1646, %and.i.i.i.i.i.i1269 br i1 %cmp.i.not.i.i.i1270, label %if.then.i.i.i.i1271, label %Flow3483, !amdgpu.uniform !42 if.then.i.i.i.i1271: ; preds = %1653 fence syncscope("agent") acquire %1658 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %1659 = extractelement <2 x i64> %1658, i32 0 %1660 = inttoptr i64 %1659 to ptr %1661 = extractelement <2 x i64> %1658, i32 1 %1662 = inttoptr i64 %1661 to ptr %idxprom.i.i.i.i1272 = zext i32 %spec.store.select.i.i.i1260 to i64 %arrayidx.i.i.i.i1273 = getelementptr inbounds nuw i32, ptr %1660, i64 %idxprom.i.i.i.i1272, !amdgpu.uniform !42 %1663 = load atomic i32, ptr %arrayidx.i.i.i.i1273 monotonic, align 4 %1664 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1663) %arrayidx.i45.i.i.i1274 = getelementptr inbounds nuw i32, ptr %1662, i64 %idxprom.i.i.i.i1272, !amdgpu.uniform !42 %1665 = load atomic i32, ptr %arrayidx.i45.i.i.i1274 monotonic, align 4 %1666 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1665) %cmp.i46.not.i.i.i1275 = icmp ne i32 %1664, %1666 br i1 %cmp.i46.not.i.i.i1275, label %if.then12.i.i.i1276, label %Flow3481, !amdgpu.uniform !42 if.then12.i.i.i1276: ; preds = %if.then.i.i.i.i1271 fence syncscope("agent") release %1667 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1646, i1 true) %iszero.i.i.i.i.i.i.i1277 = icmp ne i64 %1646, 0 %cmp2.i.i.i.i.i.i1278 = icmp eq i64 %1667, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i1279 = select i1 %iszero.i.i.i.i.i.i.i1277, i1 %cmp2.i.i.i.i.i.i1278, i1 false %conv4.i.i51.i.i.i1280 = zext i1 %cmp.i.i.i.i.i.i1279 to i32 %shl.i.i52.i.i.i1281 = shl nuw i32 %conv4.i.i51.i.i.i1280, %1647 %xor.i.i.i.i.i1282 = xor i32 %shl.i.i52.i.i.i1281, -1 %1668 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2585, !amdgpu.uniform !42 1669: ; preds = %ComputeEnd2586 %sunkaddr3277 = getelementptr inbounds i8, ptr addrspace(1) %3455, i64 40 %1670 = atomicrmw and ptr addrspace(1) %sunkaddr3277, i32 %.lcssa3934 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1671, !amdgpu.uniform !42 1671: ; preds = %1669, %ComputeEnd2586 call void @llvm.amdgcn.end.cf.i64(i64 %3482) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3481, !amdgpu.uniform !42 if.end14.i.i.i1342: ; preds = %Flow3481 %1672 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1646, i1 true) %iszero.i.i.i.i.i.i1343 = icmp ne i64 %1646, 0 %cmp2.i.i.i.i.i1344 = icmp eq i64 %1672, %sh_prom.i.i.i.i %cmp.i.i.i.i.i1345 = select i1 %iszero.i.i.i.i.i.i1343, i1 %cmp2.i.i.i.i.i1344, i1 false %1673 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i1345) %1674 = extractvalue { i1, i64 } %1673, 0 %1675 = extractvalue { i1, i64 } %1673, 1 br i1 %1674, label %if.then16.i.i.i1347, label %if.end22.i.i.i1346 if.then16.i.i.i1347: ; preds = %if.end14.i.i.i1342 %1676 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i1348 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1676, i64 %idxprom.i.i.i.i1272, i32 1 store i32 1660944387, ptr %opcode.i.i.i1348, align 8, !tbaa !77 %arrayidx21.i.i.i1349 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1676, i64 %idxprom.i.i.i.i1272 store i64 %1646, ptr %arrayidx21.i.i.i1349, align 8, !tbaa !80 br label %if.end22.i.i.i1346, !amdgpu.uniform !42 Flow3482: ; preds = %if.end22.i.i.i1346, %Flow3481 %1677 = phi i32 [ %1664, %if.end22.i.i.i1346 ], [ %retval.sroa.8.0.i.i.i1257, %Flow3481 ] %1678 = phi i64 [ %1646, %if.end22.i.i.i1346 ], [ %retval.sroa.2.0.i.i.i1256, %Flow3481 ] %1679 = phi i32 [ %spec.store.select.i.i.i1260, %if.end22.i.i.i1346 ], [ %retval.sroa.6.0.i.i.i1254, %Flow3481 ] br label %cleanup26.i.i.i1283, !amdgpu.uniform !42 if.end22.i.i.i1346: ; preds = %if.then16.i.i.i1347, %if.end14.i.i.i1342 call void @llvm.amdgcn.end.cf.i64(i64 %1675) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3482, !amdgpu.uniform !42 Flow3483: ; preds = %cleanup26.i.i.i1283, %1653 %1680 = phi i32 [ %1679, %cleanup26.i.i.i1283 ], [ %1642, %1653 ] %1681 = phi i64 [ %1678, %cleanup26.i.i.i1283 ], [ %1643, %1653 ] %1682 = phi i32 [ %1677, %cleanup26.i.i.i1283 ], [ %1644, %1653 ] %1683 = phi i32 [ %1677, %cleanup26.i.i.i1283 ], [ %retval.sroa.8.0.i.i.i1257, %1653 ] %1684 = phi i64 [ %1678, %cleanup26.i.i.i1283 ], [ %retval.sroa.2.0.i.i.i1256, %1653 ] %1685 = phi i32 [ %1679, %cleanup26.i.i.i1283 ], [ %retval.sroa.6.0.i.i.i1254, %1653 ] %1686 = phi i1 [ %cmp.i46.not.i.i.i1275, %cleanup26.i.i.i1283 ], [ true, %1653 ] br i1 %1686, label %for.inc.i.i.i1288, label %Flow3484, !amdgpu.uniform !42 cleanup26.i.i.i1283: ; preds = %Flow3482 br label %Flow3483, !amdgpu.uniform !42 for.inc.i.i.i1288: ; preds = %Flow3483 %inc.i.i.i1293 = add i32 %spec.store.select.i.i.i1260, 1 br label %Flow3484, !amdgpu.uniform !42 Flow3484: ; preds = %for.inc.i.i.i1288, %Flow3483 %1687 = phi i32 [ %inc.i.i.i1293, %for.inc.i.i.i1288 ], [ poison, %Flow3483 ] %1688 = phi i1 [ false, %for.inc.i.i.i1288 ], [ true, %Flow3483 ] br i1 %1688, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1294, label %for.cond.i.i.i1253, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1294: ; preds = %Flow3484 %.lcssa3937 = phi i32 [ %1680, %Flow3484 ] %.lcssa3936 = phi i64 [ %1681, %Flow3484 ] %.lcssa3935 = phi i32 [ %1682, %Flow3484 ] fence acquire %1689 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i1295 = shl i32 %.lcssa3937, 6 %idxprom.i19.i.i.i.i.i1296 = zext i32 %mul.i.i.i.i.i.i1295 to i64 %arrayidx.i20.i.i.i.i.i1297 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %1689, i64 %idxprom.i19.i.i.i.i.i1296 %arrayidx.i22.i.i.i.i.i1298 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i1297, i64 %sh_prom.i.i.i.i store i64 sub (i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.9, i64 8) to ptr) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.9 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i1298, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i1299 = tail call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.9, i64 8) to ptr) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.9 to ptr) to i64)), i64 56) %1690 = and i64 %spec.select.i.i.i.i.i.i.i1299, 15 %1691 = sub i64 %spec.select.i.i.i.i.i.i.i1299, %1690 %1692 = icmp ne i64 %1691, 0 br i1 %1692, label %loop-memcpy-expansion2387.preheader, label %Flow3480, !amdgpu.uniform !42 loop-memcpy-expansion2387.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1294 %1693 = add nuw nsw i64 %76, 8 %scevgep2964 = getelementptr i8, ptr %1689, i64 %1693 %1694 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1296, 6 %scevgep2965 = getelementptr i8, ptr %scevgep2964, i64 %1694 br label %loop-memcpy-expansion2387, !amdgpu.uniform !42 Flow3480: ; preds = %Flow3479, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1294 br label %loop-memcpy-residual-header2390, !amdgpu.uniform !42 loop-memcpy-expansion2387: ; preds = %loop-memcpy-expansion2387.preheader, %loop-memcpy-expansion2387 %loop-index2388 = phi i64 [ %1697, %loop-memcpy-expansion2387 ], [ 0, %loop-memcpy-expansion2387.preheader ] %1695 = getelementptr i8, ptr addrspace(4) @.str.9, i64 %loop-index2388, !amdgpu.uniform !42 %1696 = load <4 x i32>, ptr addrspace(4) %1695, align 1 %scevgep2966 = getelementptr i8, ptr %scevgep2965, i64 %loop-index2388 store <4 x i32> %1696, ptr %scevgep2966, align 1 %1697 = add i64 %loop-index2388, 16 %1698 = icmp uge i64 %1697, %1691 br i1 %1698, label %Flow3479, label %loop-memcpy-expansion2387, !amdgpu.uniform !42 Flow3477: ; preds = %Flow3474, %Flow3476 %1699 = phi i64 [ %2729, %Flow3474 ], [ %2723, %Flow3476 ] br label %post-loop-memcpy-expansion2386, !amdgpu.uniform !42 loop-memcpy-residual2389: ; preds = %loop-memcpy-residual2389.preheader, %loop-memcpy-residual2389 %residual-loop-index2391 = phi i64 [ %1701, %loop-memcpy-residual2389 ], [ 0, %loop-memcpy-residual2389.preheader ] %scevgep2963 = getelementptr i8, ptr addrspace(4) %scevgep2962, i64 %residual-loop-index2391, !amdgpu.uniform !42 %1700 = load i8, ptr addrspace(4) %scevgep2963, align 1 %scevgep2961 = getelementptr i8, ptr %scevgep2960, i64 %residual-loop-index2391 store i8 %1700, ptr %scevgep2961, align 1 %1701 = add i64 %residual-loop-index2391, 1 %1702 = icmp uge i64 %1701, %1690 br i1 %1702, label %Flow3474, label %loop-memcpy-residual2389, !amdgpu.uniform !42 Flow3474: ; preds = %loop-memcpy-residual2389 br label %Flow3477, !amdgpu.uniform !42 post-loop-memcpy-expansion2386: ; preds = %Flow3477 %tobool.not.i.i.i.i.i.i1301 = icmp eq i32 %.lcssa3935, 0 %conv.i.i.i.i.i.i1302 = zext i1 %tobool.not.i.i.i.i.i.i1301 to i32 fence release %1703 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i1303 = zext i32 %.lcssa3937 to i64 %arrayidx.i24.i.i.i.i.i1304 = getelementptr inbounds nuw i32, ptr %1703, i64 %idxprom.i23.i.i.i.i.i1303 store atomic i32 %conv.i.i.i.i.i.i1302, ptr %arrayidx.i24.i.i.i.i.i1304 monotonic, align 4 %1704 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i1305 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1704, i64 %idxprom.i23.i.i.i.i.i1303, !amdgpu.uniform !42 %1705 = load i64, ptr %arrayidx.i.i5.i.i1305, align 8, !tbaa !80 br label %while.cond.i.i.i.i1306, !amdgpu.uniform !42 while.cond.i.i.i.i1306: ; preds = %post-loop-memcpy-expansion2386, %Flow3472 %phi.broken3821 = phi i64 [ 0, %post-loop-memcpy-expansion2386 ], [ %1722, %Flow3472 ] %lsr.iv2952 = phi i64 [ %1720, %Flow3472 ], [ sub (i64 add (i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.9, i64 8) to ptr) to i64), i64 -56), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.9 to ptr) to i64)), %post-loop-memcpy-expansion2386 ] %lsr.iv2947 = phi ptr addrspace(4) [ %1719, %Flow3472 ], [ getelementptr (i8, ptr addrspace(4) @.str.9, i64 56), %post-loop-memcpy-expansion2386 ] %port.sroa.37.0.i.i1307 = phi i32 [ %1718, %Flow3472 ], [ %conv.i.i.i.i.i.i1302, %post-loop-memcpy-expansion2386 ] %idx.0.i.i.i.i1308 = phi i64 [ %1717, %Flow3472 ], [ 56, %post-loop-memcpy-expansion2386 ] %cmp.i.i.i.i1309 = icmp ult i64 %idx.0.i.i.i.i1308, sub (i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.9, i64 8) to ptr) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.9 to ptr) to i64)) %1706 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i1309) %and.i.i.i.i6.i.i1310 = and i64 %1706, %1705 %tobool.not.i.i.i.i1311 = icmp ne i64 %and.i.i.i.i6.i.i1310, 0 %1707 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i1312 = getelementptr inbounds nuw i32, ptr %1707, i64 %idxprom.i23.i.i.i.i.i1303, !amdgpu.uniform !42 %1708 = load atomic i32, ptr %arrayidx.i22.i.i.i1312 monotonic, align 4 %1709 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i1311) %1710 = extractvalue { i1, i64 } %1709, 0 %1711 = extractvalue { i1, i64 } %1709, 1 br i1 %1710, label %cond.false.i8.i.i.i.i1313, label %Flow3472 cond.false.i8.i.i.i.i1313: ; preds = %while.cond.i.i.i.i1306 %1712 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1708) %1713 = icmp ne i32 %1712, %port.sroa.37.0.i.i1307 br i1 %1713, label %while.body.i.i21.i.i.i.i1314.preheader, label %Flow3471, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1314.preheader: ; preds = %cond.false.i8.i.i.i.i1313 br label %while.body.i.i21.i.i.i.i1314, !amdgpu.uniform !42 Flow3471: ; preds = %Flow3469, %cond.false.i8.i.i.i.i1313 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1317, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1314: ; preds = %while.body.i.i21.i.i.i.i1314.preheader, %while.body.i.i21.i.i.i.i1314 tail call void @llvm.amdgcn.s.sleep(i32 2) %1714 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i1315 = getelementptr inbounds nuw i32, ptr %1714, i64 %idxprom.i23.i.i.i.i.i1303, !amdgpu.uniform !42 %1715 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i1315 monotonic, align 4 %1716 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1715) %cmp.i.not.i.i23.i.i.i.i1316 = icmp eq i32 %1716, %port.sroa.37.0.i.i1307 br i1 %cmp.i.not.i.i23.i.i.i.i1316, label %Flow3469, label %while.body.i.i21.i.i.i.i1314, !amdgpu.uniform !42 Flow3469: ; preds = %while.body.i.i21.i.i.i.i1314 br label %Flow3471, !amdgpu.uniform !42 Flow3472: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1318, %while.cond.i.i.i.i1306 %1717 = phi i64 [ %add.i.i.i.i1321, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1318 ], [ poison, %while.cond.i.i.i.i1306 ] %1718 = phi i32 [ %conv.i.i26.i.i.i.i1319, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1318 ], [ poison, %while.cond.i.i.i.i1306 ] %1719 = phi ptr addrspace(4) [ %scevgep2948, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1318 ], [ poison, %while.cond.i.i.i.i1306 ] %1720 = phi i64 [ %lsr.iv.next2953, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1318 ], [ poison, %while.cond.i.i.i.i1306 ] %1721 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1318 ], [ true, %while.cond.i.i.i.i1306 ] call void @llvm.amdgcn.end.cf.i64(i64 %1711) %1722 = call i64 @llvm.amdgcn.if.break.i64(i1 %1721, i64 %phi.broken3821) %1723 = call i1 @llvm.amdgcn.loop.i64(i64 %1722) br i1 %1723, label %cond.false.i.i.i1328, label %while.cond.i.i.i.i1306 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1317: ; preds = %Flow3471 fence acquire br i1 %cmp.i.i.i.i1309, label %if.then.i.i.i.i.i.i.i1322, label %Flow3468, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i1322: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1317 %sub.i.i.i.i.i.i.i1324 = sub nuw i64 sub (i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.9, i64 8) to ptr) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.9 to ptr) to i64)), %idx.0.i.i.i.i1308 %spec.select.i.i.i36.i.i.i.i1325 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i1324, i64 64) %1724 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %1725 = and i64 %spec.select.i.i.i36.i.i.i.i1325, 15 %1726 = sub i64 %spec.select.i.i.i36.i.i.i.i1325, %1725 %1727 = icmp ne i64 %1726, 0 br i1 %1727, label %loop-memcpy-expansion2393.preheader, label %Flow3467, !amdgpu.uniform !42 loop-memcpy-expansion2393.preheader: ; preds = %if.then.i.i.i.i.i.i.i1322 %arrayidx.i20.i35.i.i.i.i1326 = getelementptr %"struct.rpc::Buffer", ptr %1724, i64 %idxprom.i19.i.i.i.i.i1296 %arrayidx.i22.i38.i.i.i.i1327 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i1326, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2393, !amdgpu.uniform !42 Flow3467: ; preds = %Flow3466, %if.then.i.i.i.i.i.i.i1322 br label %loop-memcpy-residual-header2396, !amdgpu.uniform !42 loop-memcpy-expansion2393: ; preds = %loop-memcpy-expansion2393.preheader, %loop-memcpy-expansion2393 %loop-index2394 = phi i64 [ %1730, %loop-memcpy-expansion2393 ], [ 0, %loop-memcpy-expansion2393.preheader ] %scevgep2949 = getelementptr i8, ptr addrspace(4) %lsr.iv2947, i64 %loop-index2394, !amdgpu.uniform !42 %1728 = load <4 x i32>, ptr addrspace(4) %scevgep2949, align 1 %1729 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i1327, i64 %loop-index2394 store <4 x i32> %1728, ptr %1729, align 1 %1730 = add i64 %loop-index2394, 16 %1731 = icmp uge i64 %1730, %1726 br i1 %1731, label %Flow3466, label %loop-memcpy-expansion2393, !amdgpu.uniform !42 Flow3464: ; preds = %Flow3463, %loop-memcpy-residual-header2396 br label %Flow3468, !amdgpu.uniform !42 loop-memcpy-residual2395: ; preds = %loop-memcpy-residual2395.preheader, %loop-memcpy-residual2395 %residual-loop-index2397 = phi i64 [ %1733, %loop-memcpy-residual2395 ], [ 0, %loop-memcpy-residual2395.preheader ] %scevgep2958 = getelementptr i8, ptr addrspace(4) %scevgep2957, i64 %residual-loop-index2397, !amdgpu.uniform !42 %1732 = load i8, ptr addrspace(4) %scevgep2958, align 1 %scevgep2956 = getelementptr i8, ptr %scevgep2955, i64 %residual-loop-index2397 store i8 %1732, ptr %scevgep2956, align 1 %1733 = add i64 %residual-loop-index2397, 1 %1734 = icmp uge i64 %1733, %1725 br i1 %1734, label %Flow3463, label %loop-memcpy-residual2395, !amdgpu.uniform !42 Flow3463: ; preds = %loop-memcpy-residual2395 br label %Flow3464, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1318: ; preds = %Flow3468 %conv.i.i26.i.i.i.i1319 = xor i32 %port.sroa.37.0.i.i1307, 1 fence release %1735 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i1320 = getelementptr inbounds nuw i32, ptr %1735, i64 %idxprom.i23.i.i.i.i.i1303 store atomic i32 %conv.i.i26.i.i.i.i1319, ptr %arrayidx.i24.i29.i.i.i.i1320 monotonic, align 4 %add.i.i.i.i1321 = add i64 %idx.0.i.i.i.i1308, 64 %scevgep2948 = getelementptr i8, ptr addrspace(4) %lsr.iv2947, i64 64 %lsr.iv.next2953 = add i64 %lsr.iv2952, -64 br label %Flow3472, !amdgpu.uniform !42 cond.false.i.i.i1328: ; preds = %Flow3472 %.lcssa3931 = phi i64 [ %1722, %Flow3472 ] %port.sroa.37.0.i.i1307.lcssa = phi i32 [ %port.sroa.37.0.i.i1307, %Flow3472 ] %.lcssa3930 = phi i32 [ %1708, %Flow3472 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3931) %1736 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa3930) %1737 = icmp ne i32 %1736, %port.sroa.37.0.i.i1307.lcssa %1738 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1737) %1739 = extractvalue { i1, i64 } %1738, 0 %1740 = extractvalue { i1, i64 } %1738, 1 br i1 %1739, label %while.body.i.i.i.i1329.preheader, label %Flow3461 while.body.i.i.i.i1329.preheader: ; preds = %cond.false.i.i.i1328 br label %while.body.i.i.i.i1329, !amdgpu.uniform !42 Flow3461: ; preds = %Flow3459, %cond.false.i.i.i1328 call void @llvm.amdgcn.end.cf.i64(i64 %1740) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp11string_viewEEERS1_T_.exit, !amdgpu.uniform !42 while.body.i.i.i.i1329: ; preds = %while.body.i.i.i.i1329.preheader, %while.body.i.i.i.i1329 %phi.broken3822 = phi i64 [ 0, %while.body.i.i.i.i1329.preheader ], [ %1744, %while.body.i.i.i.i1329 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %1741 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i1330 = getelementptr inbounds nuw i32, ptr %1741, i64 %idxprom.i23.i.i.i.i.i1303, !amdgpu.uniform !42 %1742 = load atomic i32, ptr %arrayidx.i.i.i8.i.i1330 monotonic, align 4 %1743 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1742) %cmp.i.not.i.i.i.i1331 = icmp eq i32 %1743, %port.sroa.37.0.i.i1307.lcssa %1744 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i1331, i64 %phi.broken3822) %1745 = call i1 @llvm.amdgcn.loop.i64(i64 %1744) br i1 %1745, label %Flow3459, label %while.body.i.i.i.i1329 Flow3459: ; preds = %while.body.i.i.i.i1329 %.lcssa3929 = phi i64 [ %1744, %while.body.i.i.i.i1329 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3929) br label %Flow3461, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp11string_viewEEERS1_T_.exit: ; preds = %Flow3461 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %1746 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa3936, i1 true) %iszero.i.i.i.i.i13.i.i1333 = icmp ne i64 %.lcssa3936, 0 %cmp2.i.i.i.i14.i.i1334 = icmp eq i64 %1746, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i1335 = select i1 %iszero.i.i.i.i.i13.i.i1333, i1 %cmp2.i.i.i.i14.i.i1334, i1 false %1747 = and i32 %.lcssa3937, 31 %conv4.i.i.i19.i.i1339 = zext i1 %cmp.i.i.i.i15.i.i1335 to i32 %shl.i.i.i20.i.i1340 = shl nuw i32 %conv4.i.i.i19.i.i1339, %1747 %xor.i.i.i21.i.i1341 = xor i32 %shl.i.i.i20.i.i1340, -1 %1748 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2589, !amdgpu.uniform !42 1749: ; preds = %ComputeEnd2590 %div8.i.i.i16.i.i1336 = lshr i32 %.lcssa3937, 5 %idxprom.i.i.i17.i.i1337 = zext nneg i32 %div8.i.i.i16.i.i1336 to i64 %1750 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i1337 %sunkaddr3278 = getelementptr inbounds i8, ptr addrspace(1) %1750, i64 40 %1751 = atomicrmw and ptr addrspace(1) %sunkaddr3278, i32 %.lcssa3928 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1752, !amdgpu.uniform !42 1752: ; preds = %1749, %ComputeEnd2590 call void @llvm.amdgcn.end.cf.i64(i64 %3499) tail call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i1.i1358, !amdgpu.uniform !42 for.cond.i.i1.i1358: ; preds = %1752, %Flow3458 %1753 = phi i32 [ %1791, %Flow3458 ], [ poison, %1752 ] %1754 = phi i64 [ %1792, %Flow3458 ], [ poison, %1752 ] %1755 = phi i32 [ %1793, %Flow3458 ], [ poison, %1752 ] %retval.sroa.6.0.i.i.i1359 = phi i32 [ %1796, %Flow3458 ], [ undef, %1752 ] %retval.sroa.2.0.i.i.i1361 = phi i64 [ %1795, %Flow3458 ], [ undef, %1752 ] %retval.sroa.8.0.i.i.i1362 = phi i32 [ %1794, %Flow3458 ], [ undef, %1752 ] %index.0.i.i.i1363 = phi i32 [ %1798, %Flow3458 ], [ 0, %1752 ] %1756 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i1364 = icmp ult i32 %index.0.i.i.i1363, %1756 %spec.store.select.i.i.i1365 = select i1 %cmp.not.i.i.i1364, i32 %index.0.i.i.i1363, i32 0 %1757 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %1758 = and i32 %spec.store.select.i.i.i1365, 31 %1759 = lshr i64 %1757, %sh_prom.i.i.i.i %1760 = trunc i64 %1759 to i32 %conv4.i.i.i.i.i1369 = and i32 %1760, 1 %shl.i.i.i.i.i1370 = shl nuw i32 %conv4.i.i.i.i.i1369, %1758 %1761 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2593, !amdgpu.uniform !42 1762: ; preds = %ComputeEnd2594 %sunkaddr3279 = getelementptr inbounds i8, ptr addrspace(1) %3509, i64 40 %1763 = atomicrmw or ptr addrspace(1) %sunkaddr3279, i32 %.lcssa3922 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1764, !amdgpu.uniform !42 1764: ; preds = %1762, %ComputeEnd2594 %1765 = phi i32 [ %1763, %1762 ], [ poison, %ComputeEnd2594 ] call void @llvm.amdgcn.end.cf.i64(i64 %3518) %1766 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %1765) %1767 = or i32 %1766, %.lcssa3923 %shl5.i.i.i.i.i1371 = shl nuw i32 1, %1758 %and.i.i.i.i.i1372 = and i32 %shl5.i.i.i.i.i1371, %1767 %tobool3.i.i.i.i1373 = icmp ne i32 %and.i.i.i.i.i1372, 0 %1768 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i1373) %and.i.i.i.i.i.i1374 = and i64 %1768, %1757 %cmp.i.not.i.i.i1375 = icmp ne i64 %1757, %and.i.i.i.i.i.i1374 br i1 %cmp.i.not.i.i.i1375, label %if.then.i.i.i.i1376, label %Flow3457, !amdgpu.uniform !42 if.then.i.i.i.i1376: ; preds = %1764 fence syncscope("agent") acquire %1769 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %1770 = extractelement <2 x i64> %1769, i32 0 %1771 = inttoptr i64 %1770 to ptr %1772 = extractelement <2 x i64> %1769, i32 1 %1773 = inttoptr i64 %1772 to ptr %idxprom.i.i.i.i1377 = zext i32 %spec.store.select.i.i.i1365 to i64 %arrayidx.i.i.i.i1378 = getelementptr inbounds nuw i32, ptr %1771, i64 %idxprom.i.i.i.i1377, !amdgpu.uniform !42 %1774 = load atomic i32, ptr %arrayidx.i.i.i.i1378 monotonic, align 4 %1775 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1774) %arrayidx.i45.i.i.i1379 = getelementptr inbounds nuw i32, ptr %1773, i64 %idxprom.i.i.i.i1377, !amdgpu.uniform !42 %1776 = load atomic i32, ptr %arrayidx.i45.i.i.i1379 monotonic, align 4 %1777 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1776) %cmp.i46.not.i.i.i1380 = icmp ne i32 %1775, %1777 br i1 %cmp.i46.not.i.i.i1380, label %if.then12.i.i.i1381, label %Flow3455, !amdgpu.uniform !42 if.then12.i.i.i1381: ; preds = %if.then.i.i.i.i1376 fence syncscope("agent") release %1778 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1757, i1 true) %iszero.i.i.i.i.i.i.i1382 = icmp ne i64 %1757, 0 %cmp2.i.i.i.i.i.i1383 = icmp eq i64 %1778, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i1384 = select i1 %iszero.i.i.i.i.i.i.i1382, i1 %cmp2.i.i.i.i.i.i1383, i1 false %conv4.i.i51.i.i.i1385 = zext i1 %cmp.i.i.i.i.i.i1384 to i32 %shl.i.i52.i.i.i1386 = shl nuw i32 %conv4.i.i51.i.i.i1385, %1758 %xor.i.i.i.i.i1387 = xor i32 %shl.i.i52.i.i.i1386, -1 %1779 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2598, !amdgpu.uniform !42 1780: ; preds = %ComputeEnd2599 %sunkaddr3280 = getelementptr inbounds i8, ptr addrspace(1) %3509, i64 40 %1781 = atomicrmw and ptr addrspace(1) %sunkaddr3280, i32 %.lcssa3924 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1782, !amdgpu.uniform !42 1782: ; preds = %1780, %ComputeEnd2599 call void @llvm.amdgcn.end.cf.i64(i64 %3536) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3455, !amdgpu.uniform !42 if.end14.i.i.i1447: ; preds = %Flow3455 %1783 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1757, i1 true) %iszero.i.i.i.i.i.i1448 = icmp ne i64 %1757, 0 %cmp2.i.i.i.i.i1449 = icmp eq i64 %1783, %sh_prom.i.i.i.i %cmp.i.i.i.i.i1450 = select i1 %iszero.i.i.i.i.i.i1448, i1 %cmp2.i.i.i.i.i1449, i1 false %1784 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i1450) %1785 = extractvalue { i1, i64 } %1784, 0 %1786 = extractvalue { i1, i64 } %1784, 1 br i1 %1785, label %if.then16.i.i.i1452, label %if.end22.i.i.i1451 if.then16.i.i.i1452: ; preds = %if.end14.i.i.i1447 %1787 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i1453 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1787, i64 %idxprom.i.i.i.i1377, i32 1 store i32 1660944387, ptr %opcode.i.i.i1453, align 8, !tbaa !77 %arrayidx21.i.i.i1454 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1787, i64 %idxprom.i.i.i.i1377 store i64 %1757, ptr %arrayidx21.i.i.i1454, align 8, !tbaa !80 br label %if.end22.i.i.i1451, !amdgpu.uniform !42 Flow3456: ; preds = %if.end22.i.i.i1451, %Flow3455 %1788 = phi i32 [ %1775, %if.end22.i.i.i1451 ], [ %retval.sroa.8.0.i.i.i1362, %Flow3455 ] %1789 = phi i64 [ %1757, %if.end22.i.i.i1451 ], [ %retval.sroa.2.0.i.i.i1361, %Flow3455 ] %1790 = phi i32 [ %spec.store.select.i.i.i1365, %if.end22.i.i.i1451 ], [ %retval.sroa.6.0.i.i.i1359, %Flow3455 ] br label %cleanup26.i.i.i1388, !amdgpu.uniform !42 if.end22.i.i.i1451: ; preds = %if.then16.i.i.i1452, %if.end14.i.i.i1447 call void @llvm.amdgcn.end.cf.i64(i64 %1786) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3456, !amdgpu.uniform !42 Flow3457: ; preds = %cleanup26.i.i.i1388, %1764 %1791 = phi i32 [ %1790, %cleanup26.i.i.i1388 ], [ %1753, %1764 ] %1792 = phi i64 [ %1789, %cleanup26.i.i.i1388 ], [ %1754, %1764 ] %1793 = phi i32 [ %1788, %cleanup26.i.i.i1388 ], [ %1755, %1764 ] %1794 = phi i32 [ %1788, %cleanup26.i.i.i1388 ], [ %retval.sroa.8.0.i.i.i1362, %1764 ] %1795 = phi i64 [ %1789, %cleanup26.i.i.i1388 ], [ %retval.sroa.2.0.i.i.i1361, %1764 ] %1796 = phi i32 [ %1790, %cleanup26.i.i.i1388 ], [ %retval.sroa.6.0.i.i.i1359, %1764 ] %1797 = phi i1 [ %cmp.i46.not.i.i.i1380, %cleanup26.i.i.i1388 ], [ true, %1764 ] br i1 %1797, label %for.inc.i.i.i1393, label %Flow3458, !amdgpu.uniform !42 cleanup26.i.i.i1388: ; preds = %Flow3456 br label %Flow3457, !amdgpu.uniform !42 for.inc.i.i.i1393: ; preds = %Flow3457 %inc.i.i.i1398 = add i32 %spec.store.select.i.i.i1365, 1 br label %Flow3458, !amdgpu.uniform !42 Flow3458: ; preds = %for.inc.i.i.i1393, %Flow3457 %1798 = phi i32 [ %inc.i.i.i1398, %for.inc.i.i.i1393 ], [ poison, %Flow3457 ] %1799 = phi i1 [ false, %for.inc.i.i.i1393 ], [ true, %Flow3457 ] br i1 %1799, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1399, label %for.cond.i.i1.i1358, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1399: ; preds = %Flow3458 %.lcssa3927 = phi i32 [ %1791, %Flow3458 ] %.lcssa3926 = phi i64 [ %1792, %Flow3458 ] %.lcssa3925 = phi i32 [ %1793, %Flow3458 ] fence acquire %1800 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i1400 = shl i32 %.lcssa3927, 6 %idxprom.i19.i.i.i.i.i1401 = zext i32 %mul.i.i.i.i.i.i1400 to i64 %arrayidx.i20.i.i.i.i.i1402 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %1800, i64 %idxprom.i19.i.i.i.i.i1401 %arrayidx.i22.i.i.i.i.i1403 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i1402, i64 %sh_prom.i.i.i.i store i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.37.14 to ptr), i64 2) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.37.14 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i1403, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i1404 = tail call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.37.14 to ptr), i64 2) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.37.14 to ptr) to i64)), i64 56) %1801 = and i64 %spec.select.i.i.i.i.i.i.i1404, 15 %1802 = sub i64 %spec.select.i.i.i.i.i.i.i1404, %1801 %1803 = icmp ne i64 %1802, 0 br i1 %1803, label %loop-memcpy-expansion2399.preheader, label %Flow3454, !amdgpu.uniform !42 loop-memcpy-expansion2399.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1399 %1804 = add nuw nsw i64 %76, 8 %scevgep2944 = getelementptr i8, ptr %1800, i64 %1804 %1805 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1401, 6 %scevgep2945 = getelementptr i8, ptr %scevgep2944, i64 %1805 br label %loop-memcpy-expansion2399, !amdgpu.uniform !42 Flow3454: ; preds = %Flow3453, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1399 br label %loop-memcpy-residual-header2402, !amdgpu.uniform !42 loop-memcpy-expansion2399: ; preds = %loop-memcpy-expansion2399.preheader, %loop-memcpy-expansion2399 %loop-index2400 = phi i64 [ %1808, %loop-memcpy-expansion2399 ], [ 0, %loop-memcpy-expansion2399.preheader ] %1806 = getelementptr i8, ptr addrspace(4) @.str.37.14, i64 %loop-index2400, !amdgpu.uniform !42 %1807 = load <4 x i32>, ptr addrspace(4) %1806, align 1 %scevgep2946 = getelementptr i8, ptr %scevgep2945, i64 %loop-index2400 store <4 x i32> %1807, ptr %scevgep2946, align 1 %1808 = add i64 %loop-index2400, 16 %1809 = icmp uge i64 %1808, %1802 br i1 %1809, label %Flow3453, label %loop-memcpy-expansion2399, !amdgpu.uniform !42 Flow3451: ; preds = %Flow3448, %Flow3450 %1810 = phi i64 [ %2737, %Flow3448 ], [ %2734, %Flow3450 ] br label %post-loop-memcpy-expansion2398, !amdgpu.uniform !42 loop-memcpy-residual2401: ; preds = %loop-memcpy-residual2401.preheader, %loop-memcpy-residual2401 %residual-loop-index2403 = phi i64 [ %1812, %loop-memcpy-residual2401 ], [ 0, %loop-memcpy-residual2401.preheader ] %scevgep2943 = getelementptr i8, ptr addrspace(4) @.str.37.14, i64 %residual-loop-index2403, !amdgpu.uniform !42 %1811 = load i8, ptr addrspace(4) %scevgep2943, align 1 %scevgep2942 = getelementptr i8, ptr %scevgep2941, i64 %residual-loop-index2403 store i8 %1811, ptr %scevgep2942, align 1 %1812 = add i64 %residual-loop-index2403, 1 %1813 = icmp uge i64 %1812, %1801 br i1 %1813, label %Flow3448, label %loop-memcpy-residual2401, !amdgpu.uniform !42 Flow3448: ; preds = %loop-memcpy-residual2401 br label %Flow3451, !amdgpu.uniform !42 post-loop-memcpy-expansion2398: ; preds = %Flow3451 %tobool.not.i.i.i.i.i.i1406 = icmp eq i32 %.lcssa3925, 0 %conv.i.i.i.i.i.i1407 = zext i1 %tobool.not.i.i.i.i.i.i1406 to i32 fence release %1814 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i1408 = zext i32 %.lcssa3927 to i64 %arrayidx.i24.i.i.i.i.i1409 = getelementptr inbounds nuw i32, ptr %1814, i64 %idxprom.i23.i.i.i.i.i1408 store atomic i32 %conv.i.i.i.i.i.i1407, ptr %arrayidx.i24.i.i.i.i.i1409 monotonic, align 4 %1815 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i1410 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1815, i64 %idxprom.i23.i.i.i.i.i1408, !amdgpu.uniform !42 %1816 = load i64, ptr %arrayidx.i.i5.i.i1410, align 8, !tbaa !80 br label %while.cond.i.i.i.i1411, !amdgpu.uniform !42 while.cond.i.i.i.i1411: ; preds = %post-loop-memcpy-expansion2398, %Flow3446 %phi.broken3823 = phi i64 [ 0, %post-loop-memcpy-expansion2398 ], [ %1833, %Flow3446 ] %lsr.iv2933 = phi i64 [ %1831, %Flow3446 ], [ -54, %post-loop-memcpy-expansion2398 ] %lsr.iv2928 = phi ptr addrspace(4) [ %1830, %Flow3446 ], [ getelementptr (i8, ptr addrspace(4) @.str.37.14, i64 56), %post-loop-memcpy-expansion2398 ] %port.sroa.37.0.i.i1412 = phi i32 [ %1829, %Flow3446 ], [ %conv.i.i.i.i.i.i1407, %post-loop-memcpy-expansion2398 ] %idx.0.i.i.i.i1413 = phi i64 [ %1828, %Flow3446 ], [ 56, %post-loop-memcpy-expansion2398 ] %cmp.i.i.i.i1414 = icmp ult i64 %idx.0.i.i.i.i1413, sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.37.14 to ptr), i64 2) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.37.14 to ptr) to i64)) %1817 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i1414) %and.i.i.i.i6.i.i1415 = and i64 %1817, %1816 %tobool.not.i.i.i.i1416 = icmp ne i64 %and.i.i.i.i6.i.i1415, 0 %1818 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i1417 = getelementptr inbounds nuw i32, ptr %1818, i64 %idxprom.i23.i.i.i.i.i1408, !amdgpu.uniform !42 %1819 = load atomic i32, ptr %arrayidx.i22.i.i.i1417 monotonic, align 4 %1820 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i1416) %1821 = extractvalue { i1, i64 } %1820, 0 %1822 = extractvalue { i1, i64 } %1820, 1 br i1 %1821, label %cond.false.i8.i.i.i.i1418, label %Flow3446 cond.false.i8.i.i.i.i1418: ; preds = %while.cond.i.i.i.i1411 %1823 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1819) %1824 = icmp ne i32 %1823, %port.sroa.37.0.i.i1412 br i1 %1824, label %while.body.i.i21.i.i.i.i1419.preheader, label %Flow3445, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1419.preheader: ; preds = %cond.false.i8.i.i.i.i1418 br label %while.body.i.i21.i.i.i.i1419, !amdgpu.uniform !42 Flow3445: ; preds = %Flow3443, %cond.false.i8.i.i.i.i1418 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1422, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1419: ; preds = %while.body.i.i21.i.i.i.i1419.preheader, %while.body.i.i21.i.i.i.i1419 tail call void @llvm.amdgcn.s.sleep(i32 2) %1825 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i1420 = getelementptr inbounds nuw i32, ptr %1825, i64 %idxprom.i23.i.i.i.i.i1408, !amdgpu.uniform !42 %1826 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i1420 monotonic, align 4 %1827 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1826) %cmp.i.not.i.i23.i.i.i.i1421 = icmp eq i32 %1827, %port.sroa.37.0.i.i1412 br i1 %cmp.i.not.i.i23.i.i.i.i1421, label %Flow3443, label %while.body.i.i21.i.i.i.i1419, !amdgpu.uniform !42 Flow3443: ; preds = %while.body.i.i21.i.i.i.i1419 br label %Flow3445, !amdgpu.uniform !42 Flow3446: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1423, %while.cond.i.i.i.i1411 %1828 = phi i64 [ %add.i.i.i.i1426, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1423 ], [ poison, %while.cond.i.i.i.i1411 ] %1829 = phi i32 [ %conv.i.i26.i.i.i.i1424, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1423 ], [ poison, %while.cond.i.i.i.i1411 ] %1830 = phi ptr addrspace(4) [ %scevgep2929, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1423 ], [ poison, %while.cond.i.i.i.i1411 ] %1831 = phi i64 [ %lsr.iv.next2934, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1423 ], [ poison, %while.cond.i.i.i.i1411 ] %1832 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1423 ], [ true, %while.cond.i.i.i.i1411 ] call void @llvm.amdgcn.end.cf.i64(i64 %1822) %1833 = call i64 @llvm.amdgcn.if.break.i64(i1 %1832, i64 %phi.broken3823) %1834 = call i1 @llvm.amdgcn.loop.i64(i64 %1833) br i1 %1834, label %cond.false.i.i.i1433, label %while.cond.i.i.i.i1411 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1422: ; preds = %Flow3445 fence acquire br i1 %cmp.i.i.i.i1414, label %if.then.i.i.i.i.i.i.i1427, label %Flow3442, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i1427: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1422 %sub.i.i.i.i.i.i.i1429 = sub nuw i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.37.14 to ptr), i64 2) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.37.14 to ptr) to i64)), %idx.0.i.i.i.i1413 %spec.select.i.i.i36.i.i.i.i1430 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i1429, i64 64) %1835 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %1836 = and i64 %spec.select.i.i.i36.i.i.i.i1430, 15 %1837 = sub i64 %spec.select.i.i.i36.i.i.i.i1430, %1836 %1838 = icmp ne i64 %1837, 0 br i1 %1838, label %loop-memcpy-expansion2405.preheader, label %Flow3441, !amdgpu.uniform !42 loop-memcpy-expansion2405.preheader: ; preds = %if.then.i.i.i.i.i.i.i1427 %arrayidx.i20.i35.i.i.i.i1431 = getelementptr %"struct.rpc::Buffer", ptr %1835, i64 %idxprom.i19.i.i.i.i.i1401 %arrayidx.i22.i38.i.i.i.i1432 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i1431, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2405, !amdgpu.uniform !42 Flow3441: ; preds = %Flow3440, %if.then.i.i.i.i.i.i.i1427 br label %loop-memcpy-residual-header2408, !amdgpu.uniform !42 loop-memcpy-expansion2405: ; preds = %loop-memcpy-expansion2405.preheader, %loop-memcpy-expansion2405 %loop-index2406 = phi i64 [ %1841, %loop-memcpy-expansion2405 ], [ 0, %loop-memcpy-expansion2405.preheader ] %scevgep2930 = getelementptr i8, ptr addrspace(4) %lsr.iv2928, i64 %loop-index2406, !amdgpu.uniform !42 %1839 = load <4 x i32>, ptr addrspace(4) %scevgep2930, align 1 %1840 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i1432, i64 %loop-index2406 store <4 x i32> %1839, ptr %1840, align 1 %1841 = add i64 %loop-index2406, 16 %1842 = icmp uge i64 %1841, %1837 br i1 %1842, label %Flow3440, label %loop-memcpy-expansion2405, !amdgpu.uniform !42 Flow3438: ; preds = %Flow3437, %loop-memcpy-residual-header2408 br label %Flow3442, !amdgpu.uniform !42 loop-memcpy-residual2407: ; preds = %loop-memcpy-residual2407.preheader, %loop-memcpy-residual2407 %residual-loop-index2409 = phi i64 [ %1844, %loop-memcpy-residual2407 ], [ 0, %loop-memcpy-residual2407.preheader ] %scevgep2939 = getelementptr i8, ptr addrspace(4) %scevgep2938, i64 %residual-loop-index2409, !amdgpu.uniform !42 %1843 = load i8, ptr addrspace(4) %scevgep2939, align 1 %scevgep2937 = getelementptr i8, ptr %scevgep2936, i64 %residual-loop-index2409 store i8 %1843, ptr %scevgep2937, align 1 %1844 = add i64 %residual-loop-index2409, 1 %1845 = icmp uge i64 %1844, %1836 br i1 %1845, label %Flow3437, label %loop-memcpy-residual2407, !amdgpu.uniform !42 Flow3437: ; preds = %loop-memcpy-residual2407 br label %Flow3438, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1423: ; preds = %Flow3442 %conv.i.i26.i.i.i.i1424 = xor i32 %port.sroa.37.0.i.i1412, 1 fence release %1846 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i1425 = getelementptr inbounds nuw i32, ptr %1846, i64 %idxprom.i23.i.i.i.i.i1408 store atomic i32 %conv.i.i26.i.i.i.i1424, ptr %arrayidx.i24.i29.i.i.i.i1425 monotonic, align 4 %add.i.i.i.i1426 = add i64 %idx.0.i.i.i.i1413, 64 %scevgep2929 = getelementptr i8, ptr addrspace(4) %lsr.iv2928, i64 64 %lsr.iv.next2934 = add i64 %lsr.iv2933, -64 br label %Flow3446, !amdgpu.uniform !42 cond.false.i.i.i1433: ; preds = %Flow3446 %.lcssa3921 = phi i64 [ %1833, %Flow3446 ] %port.sroa.37.0.i.i1412.lcssa = phi i32 [ %port.sroa.37.0.i.i1412, %Flow3446 ] %.lcssa3920 = phi i32 [ %1819, %Flow3446 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3921) %1847 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa3920) %1848 = icmp ne i32 %1847, %port.sroa.37.0.i.i1412.lcssa %1849 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1848) %1850 = extractvalue { i1, i64 } %1849, 0 %1851 = extractvalue { i1, i64 } %1849, 1 br i1 %1850, label %while.body.i.i.i.i1434.preheader, label %Flow3435 while.body.i.i.i.i1434.preheader: ; preds = %cond.false.i.i.i1433 br label %while.body.i.i.i.i1434, !amdgpu.uniform !42 Flow3435: ; preds = %Flow3433, %cond.false.i.i.i1433 call void @llvm.amdgcn.end.cf.i64(i64 %1851) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1455, !amdgpu.uniform !42 while.body.i.i.i.i1434: ; preds = %while.body.i.i.i.i1434.preheader, %while.body.i.i.i.i1434 %phi.broken3824 = phi i64 [ 0, %while.body.i.i.i.i1434.preheader ], [ %1855, %while.body.i.i.i.i1434 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %1852 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i1435 = getelementptr inbounds nuw i32, ptr %1852, i64 %idxprom.i23.i.i.i.i.i1408, !amdgpu.uniform !42 %1853 = load atomic i32, ptr %arrayidx.i.i.i8.i.i1435 monotonic, align 4 %1854 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1853) %cmp.i.not.i.i.i.i1436 = icmp eq i32 %1854, %port.sroa.37.0.i.i1412.lcssa %1855 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i1436, i64 %phi.broken3824) %1856 = call i1 @llvm.amdgcn.loop.i64(i64 %1855) br i1 %1856, label %Flow3433, label %while.body.i.i.i.i1434 Flow3433: ; preds = %while.body.i.i.i.i1434 %.lcssa3919 = phi i64 [ %1855, %while.body.i.i.i.i1434 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3919) br label %Flow3435, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1455: ; preds = %Flow3435 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %1857 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa3926, i1 true) %iszero.i.i.i.i.i13.i.i1438 = icmp ne i64 %.lcssa3926, 0 %cmp2.i.i.i.i14.i.i1439 = icmp eq i64 %1857, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i1440 = select i1 %iszero.i.i.i.i.i13.i.i1438, i1 %cmp2.i.i.i.i14.i.i1439, i1 false %1858 = and i32 %.lcssa3927, 31 %conv4.i.i.i19.i.i1444 = zext i1 %cmp.i.i.i.i15.i.i1440 to i32 %shl.i.i.i20.i.i1445 = shl nuw i32 %conv4.i.i.i19.i.i1444, %1858 %xor.i.i.i21.i.i1446 = xor i32 %shl.i.i.i20.i.i1445, -1 %1859 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2602, !amdgpu.uniform !42 1860: ; preds = %ComputeEnd2603 %div8.i.i.i16.i.i1441 = lshr i32 %.lcssa3927, 5 %idxprom.i.i.i17.i.i1442 = zext nneg i32 %div8.i.i.i16.i.i1441 to i64 %1861 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i1442 %sunkaddr3281 = getelementptr inbounds i8, ptr addrspace(1) %1861, i64 40 %1862 = atomicrmw and ptr addrspace(1) %sunkaddr3281, i32 %.lcssa3918 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1863, !amdgpu.uniform !42 1863: ; preds = %1860, %ComputeEnd2603 call void @llvm.amdgcn.end.cf.i64(i64 %3553) tail call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i.i1456, !amdgpu.uniform !42 for.cond.i.i.i1456: ; preds = %1863, %for.cond.i.i.i1456 %phi.broken3825 = phi i64 [ 0, %1863 ], [ %1866, %for.cond.i.i.i1456 ] %lsr.iv2914 = phi i64 [ %lsr.iv.next2915, %for.cond.i.i.i1456 ], [ -1, %1863 ] %scevgep2926 = getelementptr i8, ptr %RHSStr, i64 %lsr.iv2914 %scevgep2927 = getelementptr i8, ptr %scevgep2926, i64 1 %1864 = addrspacecast ptr %scevgep2927 to ptr addrspace(4) %1865 = load i8, ptr addrspace(4) %1864, align 1, !tbaa !57, !noalias.addrspace !101 %cmp.i.i.i1458 = icmp eq i8 %1865, 0 %lsr.iv.next2915 = add i64 %lsr.iv2914, 1 %1866 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.i.i1458, i64 %phi.broken3825) %1867 = call i1 @llvm.amdgcn.loop.i64(i64 %1866) br i1 %1867, label %for.cond.i.i1.i1465.preheader, label %for.cond.i.i.i1456 for.cond.i.i1.i1465.preheader: ; preds = %for.cond.i.i.i1456 %lsr.iv.next2915.lcssa = phi i64 [ %lsr.iv.next2915, %for.cond.i.i.i1456 ] %.lcssa3917 = phi i64 [ %1866, %for.cond.i.i.i1456 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3917) br label %for.cond.i.i1.i1465, !amdgpu.uniform !42 for.cond.i.i1.i1465: ; preds = %for.cond.i.i1.i1465.preheader, %Flow3432 %1868 = phi i32 [ %1906, %Flow3432 ], [ poison, %for.cond.i.i1.i1465.preheader ] %1869 = phi i64 [ %1907, %Flow3432 ], [ poison, %for.cond.i.i1.i1465.preheader ] %1870 = phi i32 [ %1908, %Flow3432 ], [ poison, %for.cond.i.i1.i1465.preheader ] %retval.sroa.6.0.i.i.i1466 = phi i32 [ %1911, %Flow3432 ], [ undef, %for.cond.i.i1.i1465.preheader ] %retval.sroa.2.0.i.i.i1468 = phi i64 [ %1910, %Flow3432 ], [ undef, %for.cond.i.i1.i1465.preheader ] %retval.sroa.8.0.i.i.i1469 = phi i32 [ %1909, %Flow3432 ], [ undef, %for.cond.i.i1.i1465.preheader ] %index.0.i.i.i1470 = phi i32 [ %1913, %Flow3432 ], [ 0, %for.cond.i.i1.i1465.preheader ] %1871 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i1471 = icmp ult i32 %index.0.i.i.i1470, %1871 %spec.store.select.i.i.i1472 = select i1 %cmp.not.i.i.i1471, i32 %index.0.i.i.i1470, i32 0 %1872 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %1873 = and i32 %spec.store.select.i.i.i1472, 31 %1874 = lshr i64 %1872, %sh_prom.i.i.i.i %1875 = trunc i64 %1874 to i32 %conv4.i.i.i.i.i1476 = and i32 %1875, 1 %shl.i.i.i.i.i1477 = shl nuw i32 %conv4.i.i.i.i.i1476, %1873 %1876 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2606, !amdgpu.uniform !42 1877: ; preds = %ComputeEnd2607 %sunkaddr3282 = getelementptr inbounds i8, ptr addrspace(1) %3563, i64 40 %1878 = atomicrmw or ptr addrspace(1) %sunkaddr3282, i32 %.lcssa3911 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1879, !amdgpu.uniform !42 1879: ; preds = %1877, %ComputeEnd2607 %1880 = phi i32 [ %1878, %1877 ], [ poison, %ComputeEnd2607 ] call void @llvm.amdgcn.end.cf.i64(i64 %3572) %1881 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %1880) %1882 = or i32 %1881, %.lcssa3912 %shl5.i.i.i.i.i1478 = shl nuw i32 1, %1873 %and.i.i.i.i.i1479 = and i32 %shl5.i.i.i.i.i1478, %1882 %tobool3.i.i.i.i1480 = icmp ne i32 %and.i.i.i.i.i1479, 0 %1883 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i1480) %and.i.i.i.i.i.i1481 = and i64 %1883, %1872 %cmp.i.not.i.i.i1482 = icmp ne i64 %1872, %and.i.i.i.i.i.i1481 br i1 %cmp.i.not.i.i.i1482, label %if.then.i.i.i.i1483, label %Flow3431, !amdgpu.uniform !42 if.then.i.i.i.i1483: ; preds = %1879 fence syncscope("agent") acquire %1884 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %1885 = extractelement <2 x i64> %1884, i32 0 %1886 = inttoptr i64 %1885 to ptr %1887 = extractelement <2 x i64> %1884, i32 1 %1888 = inttoptr i64 %1887 to ptr %idxprom.i.i.i.i1484 = zext i32 %spec.store.select.i.i.i1472 to i64 %arrayidx.i.i.i.i1485 = getelementptr inbounds nuw i32, ptr %1886, i64 %idxprom.i.i.i.i1484, !amdgpu.uniform !42 %1889 = load atomic i32, ptr %arrayidx.i.i.i.i1485 monotonic, align 4 %1890 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1889) %arrayidx.i45.i.i.i1486 = getelementptr inbounds nuw i32, ptr %1888, i64 %idxprom.i.i.i.i1484, !amdgpu.uniform !42 %1891 = load atomic i32, ptr %arrayidx.i45.i.i.i1486 monotonic, align 4 %1892 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1891) %cmp.i46.not.i.i.i1487 = icmp ne i32 %1890, %1892 br i1 %cmp.i46.not.i.i.i1487, label %if.then12.i.i.i1488, label %Flow3429, !amdgpu.uniform !42 if.then12.i.i.i1488: ; preds = %if.then.i.i.i.i1483 fence syncscope("agent") release %1893 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1872, i1 true) %iszero.i.i.i.i.i.i.i1489 = icmp ne i64 %1872, 0 %cmp2.i.i.i.i.i.i1490 = icmp eq i64 %1893, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i1491 = select i1 %iszero.i.i.i.i.i.i.i1489, i1 %cmp2.i.i.i.i.i.i1490, i1 false %conv4.i.i51.i.i.i1492 = zext i1 %cmp.i.i.i.i.i.i1491 to i32 %shl.i.i52.i.i.i1493 = shl nuw i32 %conv4.i.i51.i.i.i1492, %1873 %xor.i.i.i.i.i1494 = xor i32 %shl.i.i52.i.i.i1493, -1 %1894 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2611, !amdgpu.uniform !42 1895: ; preds = %ComputeEnd2612 %sunkaddr3283 = getelementptr inbounds i8, ptr addrspace(1) %3563, i64 40 %1896 = atomicrmw and ptr addrspace(1) %sunkaddr3283, i32 %.lcssa3913 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1897, !amdgpu.uniform !42 1897: ; preds = %1895, %ComputeEnd2612 call void @llvm.amdgcn.end.cf.i64(i64 %3590) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3429, !amdgpu.uniform !42 if.end14.i.i.i1554: ; preds = %Flow3429 %1898 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1872, i1 true) %iszero.i.i.i.i.i.i1555 = icmp ne i64 %1872, 0 %cmp2.i.i.i.i.i1556 = icmp eq i64 %1898, %sh_prom.i.i.i.i %cmp.i.i.i.i.i1557 = select i1 %iszero.i.i.i.i.i.i1555, i1 %cmp2.i.i.i.i.i1556, i1 false %1899 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i1557) %1900 = extractvalue { i1, i64 } %1899, 0 %1901 = extractvalue { i1, i64 } %1899, 1 br i1 %1900, label %if.then16.i.i.i1559, label %if.end22.i.i.i1558 if.then16.i.i.i1559: ; preds = %if.end14.i.i.i1554 %1902 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i1560 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1902, i64 %idxprom.i.i.i.i1484, i32 1 store i32 1660944387, ptr %opcode.i.i.i1560, align 8, !tbaa !77 %arrayidx21.i.i.i1561 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1902, i64 %idxprom.i.i.i.i1484 store i64 %1872, ptr %arrayidx21.i.i.i1561, align 8, !tbaa !80 br label %if.end22.i.i.i1558, !amdgpu.uniform !42 Flow3430: ; preds = %if.end22.i.i.i1558, %Flow3429 %1903 = phi i32 [ %1890, %if.end22.i.i.i1558 ], [ %retval.sroa.8.0.i.i.i1469, %Flow3429 ] %1904 = phi i64 [ %1872, %if.end22.i.i.i1558 ], [ %retval.sroa.2.0.i.i.i1468, %Flow3429 ] %1905 = phi i32 [ %spec.store.select.i.i.i1472, %if.end22.i.i.i1558 ], [ %retval.sroa.6.0.i.i.i1466, %Flow3429 ] br label %cleanup26.i.i.i1495, !amdgpu.uniform !42 if.end22.i.i.i1558: ; preds = %if.then16.i.i.i1559, %if.end14.i.i.i1554 call void @llvm.amdgcn.end.cf.i64(i64 %1901) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3430, !amdgpu.uniform !42 Flow3431: ; preds = %cleanup26.i.i.i1495, %1879 %1906 = phi i32 [ %1905, %cleanup26.i.i.i1495 ], [ %1868, %1879 ] %1907 = phi i64 [ %1904, %cleanup26.i.i.i1495 ], [ %1869, %1879 ] %1908 = phi i32 [ %1903, %cleanup26.i.i.i1495 ], [ %1870, %1879 ] %1909 = phi i32 [ %1903, %cleanup26.i.i.i1495 ], [ %retval.sroa.8.0.i.i.i1469, %1879 ] %1910 = phi i64 [ %1904, %cleanup26.i.i.i1495 ], [ %retval.sroa.2.0.i.i.i1468, %1879 ] %1911 = phi i32 [ %1905, %cleanup26.i.i.i1495 ], [ %retval.sroa.6.0.i.i.i1466, %1879 ] %1912 = phi i1 [ %cmp.i46.not.i.i.i1487, %cleanup26.i.i.i1495 ], [ true, %1879 ] br i1 %1912, label %for.inc.i.i.i1500, label %Flow3432, !amdgpu.uniform !42 cleanup26.i.i.i1495: ; preds = %Flow3430 br label %Flow3431, !amdgpu.uniform !42 for.inc.i.i.i1500: ; preds = %Flow3431 %inc.i.i.i1505 = add i32 %spec.store.select.i.i.i1472, 1 br label %Flow3432, !amdgpu.uniform !42 Flow3432: ; preds = %for.inc.i.i.i1500, %Flow3431 %1913 = phi i32 [ %inc.i.i.i1505, %for.inc.i.i.i1500 ], [ poison, %Flow3431 ] %1914 = phi i1 [ false, %for.inc.i.i.i1500 ], [ true, %Flow3431 ] br i1 %1914, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1506, label %for.cond.i.i1.i1465, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1506: ; preds = %Flow3432 %.lcssa3916 = phi i32 [ %1906, %Flow3432 ] %.lcssa3915 = phi i64 [ %1907, %Flow3432 ] %.lcssa3914 = phi i32 [ %1908, %Flow3432 ] %scevgep2925 = getelementptr i8, ptr %RHSStr, i64 %lsr.iv.next2915.lcssa %sub.ptr.lhs.cast.i.i.i1461 = ptrtoint ptr %scevgep2925 to i64 %sub.ptr.rhs.cast.i.i.i1462 = ptrtoint ptr %RHSStr to i64 %sub.ptr.sub.i.i.i1463 = sub i64 %sub.ptr.lhs.cast.i.i.i1461, %sub.ptr.rhs.cast.i.i.i1462 fence acquire %1915 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i1507 = shl i32 %.lcssa3916, 6 %idxprom.i19.i.i.i.i.i1508 = zext i32 %mul.i.i.i.i.i.i1507 to i64 %arrayidx.i20.i.i.i.i.i1509 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %1915, i64 %idxprom.i19.i.i.i.i.i1508 %arrayidx.i22.i.i.i.i.i1510 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i1509, i64 %sh_prom.i.i.i.i store i64 %sub.ptr.sub.i.i.i1463, ptr %arrayidx.i22.i.i.i.i.i1510, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i1511 = tail call i64 @llvm.umin.i64(i64 %sub.ptr.sub.i.i.i1463, i64 56) %1916 = and i64 %spec.select.i.i.i.i.i.i.i1511, 15 %1917 = sub i64 %spec.select.i.i.i.i.i.i.i1511, %1916 %1918 = icmp ne i64 %1917, 0 %1919 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1918) %1920 = extractvalue { i1, i64 } %1919, 0 %1921 = extractvalue { i1, i64 } %1919, 1 br i1 %1920, label %loop-memcpy-expansion2207.preheader, label %Flow3428 loop-memcpy-expansion2207.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1506 %1922 = add nuw nsw i64 %76, 8 %scevgep2922 = getelementptr i8, ptr %1915, i64 %1922 %1923 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1508, 6 %scevgep2923 = getelementptr i8, ptr %scevgep2922, i64 %1923 br label %loop-memcpy-expansion2207, !amdgpu.uniform !42 Flow3428: ; preds = %Flow3427, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1506 call void @llvm.amdgcn.end.cf.i64(i64 %1921) br label %loop-memcpy-residual-header2210, !amdgpu.uniform !42 loop-memcpy-expansion2207: ; preds = %loop-memcpy-expansion2207.preheader, %loop-memcpy-expansion2207 %phi.broken3826 = phi i64 [ 0, %loop-memcpy-expansion2207.preheader ], [ %1928, %loop-memcpy-expansion2207 ] %loop-index2208 = phi i64 [ %1926, %loop-memcpy-expansion2207 ], [ 0, %loop-memcpy-expansion2207.preheader ] %1924 = getelementptr i8, ptr %RHSStr, i64 %loop-index2208 %1925 = load <4 x i32>, ptr %1924, align 1 %scevgep2924 = getelementptr i8, ptr %scevgep2923, i64 %loop-index2208 store <4 x i32> %1925, ptr %scevgep2924, align 1 %1926 = add i64 %loop-index2208, 16 %1927 = icmp uge i64 %1926, %1917 %1928 = call i64 @llvm.amdgcn.if.break.i64(i1 %1927, i64 %phi.broken3826) %1929 = call i1 @llvm.amdgcn.loop.i64(i64 %1928) br i1 %1929, label %Flow3427, label %loop-memcpy-expansion2207 Flow3425: ; preds = %Flow3422, %Flow3424 %1930 = phi i64 [ %2582, %Flow3422 ], [ %2575, %Flow3424 ] call void @llvm.amdgcn.end.cf.i64(i64 %2578) br label %post-loop-memcpy-expansion2206, !amdgpu.uniform !42 loop-memcpy-residual2209: ; preds = %loop-memcpy-residual2209.preheader, %loop-memcpy-residual2209 %phi.broken3827 = phi i64 [ 0, %loop-memcpy-residual2209.preheader ], [ %1934, %loop-memcpy-residual2209 ] %residual-loop-index2211 = phi i64 [ %1932, %loop-memcpy-residual2209 ], [ 0, %loop-memcpy-residual2209.preheader ] %scevgep2921 = getelementptr i8, ptr %scevgep2920, i64 %residual-loop-index2211 %1931 = load i8, ptr %scevgep2921, align 1 %scevgep2919 = getelementptr i8, ptr %scevgep2918, i64 %residual-loop-index2211 store i8 %1931, ptr %scevgep2919, align 1 %1932 = add i64 %residual-loop-index2211, 1 %1933 = icmp uge i64 %1932, %1916 %1934 = call i64 @llvm.amdgcn.if.break.i64(i1 %1933, i64 %phi.broken3827) %1935 = call i1 @llvm.amdgcn.loop.i64(i64 %1934) br i1 %1935, label %Flow3422, label %loop-memcpy-residual2209 Flow3422: ; preds = %loop-memcpy-residual2209 %.lcssa3909 = phi i64 [ %1934, %loop-memcpy-residual2209 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3909) br label %Flow3425, !amdgpu.uniform !42 post-loop-memcpy-expansion2206: ; preds = %Flow3425 %1936 = add i64 %lsr.iv.next2915.lcssa, -56 %tobool.not.i.i.i.i.i.i1513 = icmp eq i32 %.lcssa3914, 0 %conv.i.i.i.i.i.i1514 = zext i1 %tobool.not.i.i.i.i.i.i1513 to i32 fence release %1937 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i1515 = zext i32 %.lcssa3916 to i64 %arrayidx.i24.i.i.i.i.i1516 = getelementptr inbounds nuw i32, ptr %1937, i64 %idxprom.i23.i.i.i.i.i1515 store atomic i32 %conv.i.i.i.i.i.i1514, ptr %arrayidx.i24.i.i.i.i.i1516 monotonic, align 4 %1938 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i1517 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1938, i64 %idxprom.i23.i.i.i.i.i1515, !amdgpu.uniform !42 %1939 = load i64, ptr %arrayidx.i.i5.i.i1517, align 8, !tbaa !80 %scevgep2897 = getelementptr i8, ptr %RHSStr, i64 56 br label %while.cond.i.i.i.i1518, !amdgpu.uniform !42 while.cond.i.i.i.i1518: ; preds = %post-loop-memcpy-expansion2206, %Flow3420 %phi.broken3830 = phi i64 [ 0, %post-loop-memcpy-expansion2206 ], [ %1956, %Flow3420 ] %lsr.iv2905 = phi i64 [ %1954, %Flow3420 ], [ %1936, %post-loop-memcpy-expansion2206 ] %lsr.iv2898 = phi ptr [ %1953, %Flow3420 ], [ %scevgep2897, %post-loop-memcpy-expansion2206 ] %port.sroa.37.0.i.i1519 = phi i32 [ %1952, %Flow3420 ], [ %conv.i.i.i.i.i.i1514, %post-loop-memcpy-expansion2206 ] %idx.0.i.i.i.i1520 = phi i64 [ %1951, %Flow3420 ], [ 56, %post-loop-memcpy-expansion2206 ] %cmp.i.i.i.i1521 = icmp ugt i64 %sub.ptr.sub.i.i.i1463, %idx.0.i.i.i.i1520 %1940 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i1521) %and.i.i.i.i6.i.i1522 = and i64 %1940, %1939 %tobool.not.i.i.i.i1523 = icmp ne i64 %and.i.i.i.i6.i.i1522, 0 %1941 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i1524 = getelementptr inbounds nuw i32, ptr %1941, i64 %idxprom.i23.i.i.i.i.i1515, !amdgpu.uniform !42 %1942 = load atomic i32, ptr %arrayidx.i22.i.i.i1524 monotonic, align 4 %1943 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i1523) %1944 = extractvalue { i1, i64 } %1943, 0 %1945 = extractvalue { i1, i64 } %1943, 1 br i1 %1944, label %cond.false.i8.i.i.i.i1525, label %Flow3420 cond.false.i8.i.i.i.i1525: ; preds = %while.cond.i.i.i.i1518 %1946 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1942) %1947 = icmp ne i32 %1946, %port.sroa.37.0.i.i1519 br i1 %1947, label %while.body.i.i21.i.i.i.i1526.preheader, label %Flow3419, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1526.preheader: ; preds = %cond.false.i8.i.i.i.i1525 br label %while.body.i.i21.i.i.i.i1526, !amdgpu.uniform !42 Flow3419: ; preds = %Flow3417, %cond.false.i8.i.i.i.i1525 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1529, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1526: ; preds = %while.body.i.i21.i.i.i.i1526.preheader, %while.body.i.i21.i.i.i.i1526 tail call void @llvm.amdgcn.s.sleep(i32 2) %1948 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i1527 = getelementptr inbounds nuw i32, ptr %1948, i64 %idxprom.i23.i.i.i.i.i1515, !amdgpu.uniform !42 %1949 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i1527 monotonic, align 4 %1950 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1949) %cmp.i.not.i.i23.i.i.i.i1528 = icmp eq i32 %1950, %port.sroa.37.0.i.i1519 br i1 %cmp.i.not.i.i23.i.i.i.i1528, label %Flow3417, label %while.body.i.i21.i.i.i.i1526, !amdgpu.uniform !42 Flow3417: ; preds = %while.body.i.i21.i.i.i.i1526 br label %Flow3419, !amdgpu.uniform !42 Flow3420: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1530, %while.cond.i.i.i.i1518 %1951 = phi i64 [ %add.i.i.i.i1533, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1530 ], [ poison, %while.cond.i.i.i.i1518 ] %1952 = phi i32 [ %conv.i.i26.i.i.i.i1531, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1530 ], [ poison, %while.cond.i.i.i.i1518 ] %1953 = phi ptr [ %scevgep2899, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1530 ], [ poison, %while.cond.i.i.i.i1518 ] %1954 = phi i64 [ %lsr.iv.next2906, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1530 ], [ poison, %while.cond.i.i.i.i1518 ] %1955 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1530 ], [ true, %while.cond.i.i.i.i1518 ] call void @llvm.amdgcn.end.cf.i64(i64 %1945) %1956 = call i64 @llvm.amdgcn.if.break.i64(i1 %1955, i64 %phi.broken3830) %1957 = call i1 @llvm.amdgcn.loop.i64(i64 %1956) br i1 %1957, label %cond.false.i.i.i1540, label %while.cond.i.i.i.i1518 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1529: ; preds = %Flow3419 fence acquire %1958 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i1521) %1959 = extractvalue { i1, i64 } %1958, 0 %1960 = extractvalue { i1, i64 } %1958, 1 br i1 %1959, label %if.then.i.i.i.i.i.i.i1534, label %Flow3416 if.then.i.i.i.i.i.i.i1534: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1529 %sub.i.i.i.i.i.i.i1536 = sub nuw i64 %sub.ptr.sub.i.i.i1463, %idx.0.i.i.i.i1520 %spec.select.i.i.i36.i.i.i.i1537 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i1536, i64 64) %1961 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %1962 = and i64 %spec.select.i.i.i36.i.i.i.i1537, 15 %1963 = sub i64 %spec.select.i.i.i36.i.i.i.i1537, %1962 %1964 = icmp ne i64 %1963, 0 %1965 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1964) %1966 = extractvalue { i1, i64 } %1965, 0 %1967 = extractvalue { i1, i64 } %1965, 1 br i1 %1966, label %loop-memcpy-expansion2201.preheader, label %Flow3415 loop-memcpy-expansion2201.preheader: ; preds = %if.then.i.i.i.i.i.i.i1534 %arrayidx.i20.i35.i.i.i.i1538 = getelementptr %"struct.rpc::Buffer", ptr %1961, i64 %idxprom.i19.i.i.i.i.i1508 %arrayidx.i22.i38.i.i.i.i1539 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i1538, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2201, !amdgpu.uniform !42 Flow3415: ; preds = %Flow3414, %if.then.i.i.i.i.i.i.i1534 call void @llvm.amdgcn.end.cf.i64(i64 %1967) br label %loop-memcpy-residual-header2204, !amdgpu.uniform !42 loop-memcpy-expansion2201: ; preds = %loop-memcpy-expansion2201.preheader, %loop-memcpy-expansion2201 %phi.broken3828 = phi i64 [ 0, %loop-memcpy-expansion2201.preheader ], [ %1972, %loop-memcpy-expansion2201 ] %loop-index2202 = phi i64 [ %1970, %loop-memcpy-expansion2201 ], [ 0, %loop-memcpy-expansion2201.preheader ] %scevgep2900 = getelementptr i8, ptr %lsr.iv2898, i64 %loop-index2202 %1968 = load <4 x i32>, ptr %scevgep2900, align 1 %1969 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i1539, i64 %loop-index2202 store <4 x i32> %1968, ptr %1969, align 1 %1970 = add i64 %loop-index2202, 16 %1971 = icmp uge i64 %1970, %1963 %1972 = call i64 @llvm.amdgcn.if.break.i64(i1 %1971, i64 %phi.broken3828) %1973 = call i1 @llvm.amdgcn.loop.i64(i64 %1972) br i1 %1973, label %Flow3414, label %loop-memcpy-expansion2201 Flow3412: ; preds = %Flow3411, %loop-memcpy-residual-header2204 call void @llvm.amdgcn.end.cf.i64(i64 %2568) br label %Flow3416, !amdgpu.uniform !42 loop-memcpy-residual2203: ; preds = %loop-memcpy-residual2203.preheader, %loop-memcpy-residual2203 %phi.broken3829 = phi i64 [ 0, %loop-memcpy-residual2203.preheader ], [ %1977, %loop-memcpy-residual2203 ] %residual-loop-index2205 = phi i64 [ %1975, %loop-memcpy-residual2203 ], [ 0, %loop-memcpy-residual2203.preheader ] %scevgep2912 = getelementptr i8, ptr %scevgep2911, i64 %residual-loop-index2205 %1974 = load i8, ptr %scevgep2912, align 1 %scevgep2909 = getelementptr i8, ptr %scevgep2908, i64 %residual-loop-index2205 store i8 %1974, ptr %scevgep2909, align 1 %1975 = add i64 %residual-loop-index2205, 1 %1976 = icmp uge i64 %1975, %1962 %1977 = call i64 @llvm.amdgcn.if.break.i64(i1 %1976, i64 %phi.broken3829) %1978 = call i1 @llvm.amdgcn.loop.i64(i64 %1977) br i1 %1978, label %Flow3411, label %loop-memcpy-residual2203 Flow3411: ; preds = %loop-memcpy-residual2203 %.lcssa3906 = phi i64 [ %1977, %loop-memcpy-residual2203 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3906) br label %Flow3412, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1530: ; preds = %Flow3416 %conv.i.i26.i.i.i.i1531 = xor i32 %port.sroa.37.0.i.i1519, 1 fence release %1979 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i1532 = getelementptr inbounds nuw i32, ptr %1979, i64 %idxprom.i23.i.i.i.i.i1515 store atomic i32 %conv.i.i26.i.i.i.i1531, ptr %arrayidx.i24.i29.i.i.i.i1532 monotonic, align 4 %add.i.i.i.i1533 = add i64 %idx.0.i.i.i.i1520, 64 %scevgep2899 = getelementptr i8, ptr %lsr.iv2898, i64 64 %lsr.iv.next2906 = add i64 %lsr.iv2905, -64 br label %Flow3420, !amdgpu.uniform !42 cond.false.i.i.i1540: ; preds = %Flow3420 %.lcssa3908 = phi i64 [ %1956, %Flow3420 ] %port.sroa.37.0.i.i1519.lcssa = phi i32 [ %port.sroa.37.0.i.i1519, %Flow3420 ] %.lcssa3907 = phi i32 [ %1942, %Flow3420 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3908) %1980 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa3907) %1981 = icmp ne i32 %1980, %port.sroa.37.0.i.i1519.lcssa %1982 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1981) %1983 = extractvalue { i1, i64 } %1982, 0 %1984 = extractvalue { i1, i64 } %1982, 1 br i1 %1983, label %while.body.i.i.i.i1541.preheader, label %Flow3409 while.body.i.i.i.i1541.preheader: ; preds = %cond.false.i.i.i1540 br label %while.body.i.i.i.i1541, !amdgpu.uniform !42 Flow3409: ; preds = %Flow3407, %cond.false.i.i.i1540 call void @llvm.amdgcn.end.cf.i64(i64 %1984) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1562, !amdgpu.uniform !42 while.body.i.i.i.i1541: ; preds = %while.body.i.i.i.i1541.preheader, %while.body.i.i.i.i1541 %phi.broken3831 = phi i64 [ 0, %while.body.i.i.i.i1541.preheader ], [ %1988, %while.body.i.i.i.i1541 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %1985 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i1542 = getelementptr inbounds nuw i32, ptr %1985, i64 %idxprom.i23.i.i.i.i.i1515, !amdgpu.uniform !42 %1986 = load atomic i32, ptr %arrayidx.i.i.i8.i.i1542 monotonic, align 4 %1987 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1986) %cmp.i.not.i.i.i.i1543 = icmp eq i32 %1987, %port.sroa.37.0.i.i1519.lcssa %1988 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i1543, i64 %phi.broken3831) %1989 = call i1 @llvm.amdgcn.loop.i64(i64 %1988) br i1 %1989, label %Flow3407, label %while.body.i.i.i.i1541 Flow3407: ; preds = %while.body.i.i.i.i1541 %.lcssa3904 = phi i64 [ %1988, %while.body.i.i.i.i1541 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3904) br label %Flow3409, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1562: ; preds = %Flow3409 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %1990 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa3915, i1 true) %iszero.i.i.i.i.i13.i.i1545 = icmp ne i64 %.lcssa3915, 0 %cmp2.i.i.i.i14.i.i1546 = icmp eq i64 %1990, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i1547 = select i1 %iszero.i.i.i.i.i13.i.i1545, i1 %cmp2.i.i.i.i14.i.i1546, i1 false %1991 = and i32 %.lcssa3916, 31 %conv4.i.i.i19.i.i1551 = zext i1 %cmp.i.i.i.i15.i.i1547 to i32 %shl.i.i.i20.i.i1552 = shl nuw i32 %conv4.i.i.i19.i.i1551, %1991 %xor.i.i.i21.i.i1553 = xor i32 %shl.i.i.i20.i.i1552, -1 %1992 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2615, !amdgpu.uniform !42 1993: ; preds = %ComputeEnd2616 %div8.i.i.i16.i.i1548 = lshr i32 %.lcssa3916, 5 %idxprom.i.i.i17.i.i1549 = zext nneg i32 %div8.i.i.i16.i.i1548 to i64 %1994 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i1549 %sunkaddr3284 = getelementptr inbounds i8, ptr addrspace(1) %1994, i64 40 %1995 = atomicrmw and ptr addrspace(1) %sunkaddr3284, i32 %.lcssa3903 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1996, !amdgpu.uniform !42 1996: ; preds = %1993, %ComputeEnd2616 call void @llvm.amdgcn.end.cf.i64(i64 %3607) tail call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i.i1566, !amdgpu.uniform !42 for.cond.i.i.i1566: ; preds = %1996, %Flow3406 %1997 = phi i32 [ %2035, %Flow3406 ], [ poison, %1996 ] %1998 = phi i64 [ %2036, %Flow3406 ], [ poison, %1996 ] %1999 = phi i32 [ %2037, %Flow3406 ], [ poison, %1996 ] %retval.sroa.6.0.i.i.i1567 = phi i32 [ %2040, %Flow3406 ], [ undef, %1996 ] %retval.sroa.2.0.i.i.i1569 = phi i64 [ %2039, %Flow3406 ], [ undef, %1996 ] %retval.sroa.8.0.i.i.i1570 = phi i32 [ %2038, %Flow3406 ], [ undef, %1996 ] %index.0.i.i.i1571 = phi i32 [ %2042, %Flow3406 ], [ 0, %1996 ] %2000 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i1572 = icmp ult i32 %index.0.i.i.i1571, %2000 %spec.store.select.i.i.i1573 = select i1 %cmp.not.i.i.i1572, i32 %index.0.i.i.i1571, i32 0 %2001 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %2002 = and i32 %spec.store.select.i.i.i1573, 31 %2003 = lshr i64 %2001, %sh_prom.i.i.i.i %2004 = trunc i64 %2003 to i32 %conv4.i.i.i.i.i1577 = and i32 %2004, 1 %shl.i.i.i.i.i1578 = shl nuw i32 %conv4.i.i.i.i.i1577, %2002 %2005 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2619, !amdgpu.uniform !42 2006: ; preds = %ComputeEnd2620 %sunkaddr3285 = getelementptr inbounds i8, ptr addrspace(1) %3617, i64 40 %2007 = atomicrmw or ptr addrspace(1) %sunkaddr3285, i32 %.lcssa3897 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2008, !amdgpu.uniform !42 2008: ; preds = %2006, %ComputeEnd2620 %2009 = phi i32 [ %2007, %2006 ], [ poison, %ComputeEnd2620 ] call void @llvm.amdgcn.end.cf.i64(i64 %3626) %2010 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %2009) %2011 = or i32 %2010, %.lcssa3898 %shl5.i.i.i.i.i1579 = shl nuw i32 1, %2002 %and.i.i.i.i.i1580 = and i32 %shl5.i.i.i.i.i1579, %2011 %tobool3.i.i.i.i1581 = icmp ne i32 %and.i.i.i.i.i1580, 0 %2012 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i1581) %and.i.i.i.i.i.i1582 = and i64 %2012, %2001 %cmp.i.not.i.i.i1583 = icmp ne i64 %2001, %and.i.i.i.i.i.i1582 br i1 %cmp.i.not.i.i.i1583, label %if.then.i.i.i.i1584, label %Flow3405, !amdgpu.uniform !42 if.then.i.i.i.i1584: ; preds = %2008 fence syncscope("agent") acquire %2013 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %2014 = extractelement <2 x i64> %2013, i32 0 %2015 = inttoptr i64 %2014 to ptr %2016 = extractelement <2 x i64> %2013, i32 1 %2017 = inttoptr i64 %2016 to ptr %idxprom.i.i.i.i1585 = zext i32 %spec.store.select.i.i.i1573 to i64 %arrayidx.i.i.i.i1586 = getelementptr inbounds nuw i32, ptr %2015, i64 %idxprom.i.i.i.i1585, !amdgpu.uniform !42 %2018 = load atomic i32, ptr %arrayidx.i.i.i.i1586 monotonic, align 4 %2019 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2018) %arrayidx.i45.i.i.i1587 = getelementptr inbounds nuw i32, ptr %2017, i64 %idxprom.i.i.i.i1585, !amdgpu.uniform !42 %2020 = load atomic i32, ptr %arrayidx.i45.i.i.i1587 monotonic, align 4 %2021 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2020) %cmp.i46.not.i.i.i1588 = icmp ne i32 %2019, %2021 br i1 %cmp.i46.not.i.i.i1588, label %if.then12.i.i.i1589, label %Flow3403, !amdgpu.uniform !42 if.then12.i.i.i1589: ; preds = %if.then.i.i.i.i1584 fence syncscope("agent") release %2022 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %2001, i1 true) %iszero.i.i.i.i.i.i.i1590 = icmp ne i64 %2001, 0 %cmp2.i.i.i.i.i.i1591 = icmp eq i64 %2022, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i1592 = select i1 %iszero.i.i.i.i.i.i.i1590, i1 %cmp2.i.i.i.i.i.i1591, i1 false %conv4.i.i51.i.i.i1593 = zext i1 %cmp.i.i.i.i.i.i1592 to i32 %shl.i.i52.i.i.i1594 = shl nuw i32 %conv4.i.i51.i.i.i1593, %2002 %xor.i.i.i.i.i1595 = xor i32 %shl.i.i52.i.i.i1594, -1 %2023 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2624, !amdgpu.uniform !42 2024: ; preds = %ComputeEnd2625 %sunkaddr3286 = getelementptr inbounds i8, ptr addrspace(1) %3617, i64 40 %2025 = atomicrmw and ptr addrspace(1) %sunkaddr3286, i32 %.lcssa3899 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2026, !amdgpu.uniform !42 2026: ; preds = %2024, %ComputeEnd2625 call void @llvm.amdgcn.end.cf.i64(i64 %3644) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3403, !amdgpu.uniform !42 if.end14.i.i.i1653: ; preds = %Flow3403 %2027 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %2001, i1 true) %iszero.i.i.i.i.i.i1654 = icmp ne i64 %2001, 0 %cmp2.i.i.i.i.i1655 = icmp eq i64 %2027, %sh_prom.i.i.i.i %cmp.i.i.i.i.i1656 = select i1 %iszero.i.i.i.i.i.i1654, i1 %cmp2.i.i.i.i.i1655, i1 false %2028 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i1656) %2029 = extractvalue { i1, i64 } %2028, 0 %2030 = extractvalue { i1, i64 } %2028, 1 br i1 %2029, label %if.then16.i.i.i1658, label %if.end22.i.i.i1657 if.then16.i.i.i1658: ; preds = %if.end14.i.i.i1653 %2031 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i1659 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2031, i64 %idxprom.i.i.i.i1585, i32 1 store i32 1660944387, ptr %opcode.i.i.i1659, align 8, !tbaa !77 %arrayidx21.i.i.i1660 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2031, i64 %idxprom.i.i.i.i1585 store i64 %2001, ptr %arrayidx21.i.i.i1660, align 8, !tbaa !80 br label %if.end22.i.i.i1657, !amdgpu.uniform !42 Flow3404: ; preds = %if.end22.i.i.i1657, %Flow3403 %2032 = phi i32 [ %2019, %if.end22.i.i.i1657 ], [ %retval.sroa.8.0.i.i.i1570, %Flow3403 ] %2033 = phi i64 [ %2001, %if.end22.i.i.i1657 ], [ %retval.sroa.2.0.i.i.i1569, %Flow3403 ] %2034 = phi i32 [ %spec.store.select.i.i.i1573, %if.end22.i.i.i1657 ], [ %retval.sroa.6.0.i.i.i1567, %Flow3403 ] br label %cleanup26.i.i.i1596, !amdgpu.uniform !42 if.end22.i.i.i1657: ; preds = %if.then16.i.i.i1658, %if.end14.i.i.i1653 call void @llvm.amdgcn.end.cf.i64(i64 %2030) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3404, !amdgpu.uniform !42 Flow3405: ; preds = %cleanup26.i.i.i1596, %2008 %2035 = phi i32 [ %2034, %cleanup26.i.i.i1596 ], [ %1997, %2008 ] %2036 = phi i64 [ %2033, %cleanup26.i.i.i1596 ], [ %1998, %2008 ] %2037 = phi i32 [ %2032, %cleanup26.i.i.i1596 ], [ %1999, %2008 ] %2038 = phi i32 [ %2032, %cleanup26.i.i.i1596 ], [ %retval.sroa.8.0.i.i.i1570, %2008 ] %2039 = phi i64 [ %2033, %cleanup26.i.i.i1596 ], [ %retval.sroa.2.0.i.i.i1569, %2008 ] %2040 = phi i32 [ %2034, %cleanup26.i.i.i1596 ], [ %retval.sroa.6.0.i.i.i1567, %2008 ] %2041 = phi i1 [ %cmp.i46.not.i.i.i1588, %cleanup26.i.i.i1596 ], [ true, %2008 ] br i1 %2041, label %for.inc.i.i.i1601, label %Flow3406, !amdgpu.uniform !42 cleanup26.i.i.i1596: ; preds = %Flow3404 br label %Flow3405, !amdgpu.uniform !42 for.inc.i.i.i1601: ; preds = %Flow3405 %inc.i.i.i1606 = add i32 %spec.store.select.i.i.i1573, 1 br label %Flow3406, !amdgpu.uniform !42 Flow3406: ; preds = %for.inc.i.i.i1601, %Flow3405 %2042 = phi i32 [ %inc.i.i.i1606, %for.inc.i.i.i1601 ], [ poison, %Flow3405 ] %2043 = phi i1 [ false, %for.inc.i.i.i1601 ], [ true, %Flow3405 ] br i1 %2043, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1607, label %for.cond.i.i.i1566, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1607: ; preds = %Flow3406 %.lcssa3902 = phi i32 [ %2035, %Flow3406 ] %.lcssa3901 = phi i64 [ %2036, %Flow3406 ] %.lcssa3900 = phi i32 [ %2037, %Flow3406 ] fence acquire %2044 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i1608 = shl i32 %.lcssa3902, 6 %idxprom.i19.i.i.i.i.i1609 = zext i32 %mul.i.i.i.i.i.i1608 to i64 %arrayidx.i20.i.i.i.i.i1610 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %2044, i64 %idxprom.i19.i.i.i.i.i1609 %arrayidx.i22.i.i.i.i.i1611 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i1610, i64 %sh_prom.i.i.i.i store i64 1, ptr %arrayidx.i22.i.i.i.i.i1611, align 8, !tbaa !82 %arrayidx6.i.i.i.i.i.i.i1612 = getelementptr inbounds nuw i8, ptr %arrayidx.i22.i.i.i.i.i1611, i64 8 store i8 10, ptr %arrayidx6.i.i.i.i.i.i.i1612, align 8 %tobool.not.i.i.i.i.i.i1613 = icmp eq i32 %.lcssa3900, 0 %conv.i.i.i.i.i.i1614 = zext i1 %tobool.not.i.i.i.i.i.i1613 to i32 fence release %2045 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i1615 = zext i32 %.lcssa3902 to i64 %arrayidx.i24.i.i.i.i.i1616 = getelementptr inbounds nuw i32, ptr %2045, i64 %idxprom.i23.i.i.i.i.i1615 store atomic i32 %conv.i.i.i.i.i.i1614, ptr %arrayidx.i24.i.i.i.i.i1616 monotonic, align 4 %2046 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i1617 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2046, i64 %idxprom.i23.i.i.i.i.i1615, !amdgpu.uniform !42 %2047 = load i64, ptr %arrayidx.i.i5.i.i1617, align 8, !tbaa !80 br label %while.cond.i.i.i.i1618, !amdgpu.uniform !42 while.cond.i.i.i.i1618: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1607, %Flow3402 %phi.broken3832 = phi i64 [ 0, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1607 ], [ %2062, %Flow3402 ] %port.sroa.37.0.i.i1619 = phi i32 [ %2060, %Flow3402 ], [ %conv.i.i.i.i.i.i1614, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1607 ] %idx.0.i.i.i.i1620 = phi i64 [ %2059, %Flow3402 ], [ 56, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1607 ] %cmp.i.i.i.i1621 = icmp eq i64 %idx.0.i.i.i.i1620, 0 %2048 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i1621) %and.i.i.i.i6.i.i1622 = and i64 %2048, %2047 %tobool.not.i.i.i.i1623 = icmp ne i64 %and.i.i.i.i6.i.i1622, 0 %2049 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i1624 = getelementptr inbounds nuw i32, ptr %2049, i64 %idxprom.i23.i.i.i.i.i1615, !amdgpu.uniform !42 %2050 = load atomic i32, ptr %arrayidx.i22.i.i.i1624 monotonic, align 4 %2051 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i1623) %2052 = extractvalue { i1, i64 } %2051, 0 %2053 = extractvalue { i1, i64 } %2051, 1 br i1 %2052, label %cond.false.i8.i.i.i.i1625, label %Flow3402 cond.false.i8.i.i.i.i1625: ; preds = %while.cond.i.i.i.i1618 %2054 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2050) %2055 = icmp ne i32 %2054, %port.sroa.37.0.i.i1619 br i1 %2055, label %while.body.i.i21.i.i.i.i1626.preheader, label %Flow3401, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1626.preheader: ; preds = %cond.false.i8.i.i.i.i1625 br label %while.body.i.i21.i.i.i.i1626, !amdgpu.uniform !42 Flow3401: ; preds = %Flow3399, %cond.false.i8.i.i.i.i1625 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1629, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1626: ; preds = %while.body.i.i21.i.i.i.i1626.preheader, %while.body.i.i21.i.i.i.i1626 tail call void @llvm.amdgcn.s.sleep(i32 2) %2056 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i1627 = getelementptr inbounds nuw i32, ptr %2056, i64 %idxprom.i23.i.i.i.i.i1615, !amdgpu.uniform !42 %2057 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i1627 monotonic, align 4 %2058 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2057) %cmp.i.not.i.i23.i.i.i.i1628 = icmp eq i32 %2058, %port.sroa.37.0.i.i1619 br i1 %cmp.i.not.i.i23.i.i.i.i1628, label %Flow3399, label %while.body.i.i21.i.i.i.i1626, !amdgpu.uniform !42 Flow3399: ; preds = %while.body.i.i21.i.i.i.i1626 br label %Flow3401, !amdgpu.uniform !42 Flow3402: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1630, %while.cond.i.i.i.i1618 %2059 = phi i64 [ %add.i.i.i.i1633, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1630 ], [ poison, %while.cond.i.i.i.i1618 ] %2060 = phi i32 [ %conv.i.i26.i.i.i.i1631, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1630 ], [ poison, %while.cond.i.i.i.i1618 ] %2061 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1630 ], [ true, %while.cond.i.i.i.i1618 ] call void @llvm.amdgcn.end.cf.i64(i64 %2053) %2062 = call i64 @llvm.amdgcn.if.break.i64(i1 %2061, i64 %phi.broken3832) %2063 = call i1 @llvm.amdgcn.loop.i64(i64 %2062) br i1 %2063, label %cond.false.i.i.i1639, label %while.cond.i.i.i.i1618 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1629: ; preds = %Flow3401 fence acquire br i1 %cmp.i.i.i.i1621, label %if.then.i.i.i.i.i.i.i1634, label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1630, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i1634: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1629 %2064 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %arrayidx.i20.i35.i.i.i.i1637 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %2064, i64 %idxprom.i19.i.i.i.i.i1609 %arrayidx.i22.i38.i.i.i.i1638 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i1637, i64 %sh_prom.i.i.i.i store i8 10, ptr %arrayidx.i22.i38.i.i.i.i1638, align 1 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1630, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1630: ; preds = %if.then.i.i.i.i.i.i.i1634, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1629 %conv.i.i26.i.i.i.i1631 = xor i32 %port.sroa.37.0.i.i1619, 1 fence release %2065 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i1632 = getelementptr inbounds nuw i32, ptr %2065, i64 %idxprom.i23.i.i.i.i.i1615 store atomic i32 %conv.i.i26.i.i.i.i1631, ptr %arrayidx.i24.i29.i.i.i.i1632 monotonic, align 4 %add.i.i.i.i1633 = add i64 %idx.0.i.i.i.i1620, 64 br label %Flow3402, !amdgpu.uniform !42 cond.false.i.i.i1639: ; preds = %Flow3402 %.lcssa3896 = phi i64 [ %2062, %Flow3402 ] %port.sroa.37.0.i.i1619.lcssa = phi i32 [ %port.sroa.37.0.i.i1619, %Flow3402 ] %.lcssa3895 = phi i32 [ %2050, %Flow3402 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3896) %2066 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa3895) %2067 = icmp ne i32 %2066, %port.sroa.37.0.i.i1619.lcssa %2068 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2067) %2069 = extractvalue { i1, i64 } %2068, 0 %2070 = extractvalue { i1, i64 } %2068, 1 br i1 %2069, label %while.body.i.i.i.i1640.preheader, label %Flow3398 while.body.i.i.i.i1640.preheader: ; preds = %cond.false.i.i.i1639 br label %while.body.i.i.i.i1640, !amdgpu.uniform !42 Flow3398: ; preds = %Flow3396, %cond.false.i.i.i1639 call void @llvm.amdgcn.end.cf.i64(i64 %2070) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit1661, !amdgpu.uniform !42 while.body.i.i.i.i1640: ; preds = %while.body.i.i.i.i1640.preheader, %while.body.i.i.i.i1640 %phi.broken3833 = phi i64 [ 0, %while.body.i.i.i.i1640.preheader ], [ %2074, %while.body.i.i.i.i1640 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %2071 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i1641 = getelementptr inbounds nuw i32, ptr %2071, i64 %idxprom.i23.i.i.i.i.i1615, !amdgpu.uniform !42 %2072 = load atomic i32, ptr %arrayidx.i.i.i8.i.i1641 monotonic, align 4 %2073 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2072) %cmp.i.not.i.i.i.i1642 = icmp eq i32 %2073, %port.sroa.37.0.i.i1619.lcssa %2074 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i1642, i64 %phi.broken3833) %2075 = call i1 @llvm.amdgcn.loop.i64(i64 %2074) br i1 %2075, label %Flow3396, label %while.body.i.i.i.i1640 Flow3396: ; preds = %while.body.i.i.i.i1640 %.lcssa3894 = phi i64 [ %2074, %while.body.i.i.i.i1640 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3894) br label %Flow3398, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit1661: ; preds = %Flow3398 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %2076 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa3901, i1 true) %iszero.i.i.i.i.i13.i.i1644 = icmp ne i64 %.lcssa3901, 0 %cmp2.i.i.i.i14.i.i1645 = icmp eq i64 %2076, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i1646 = select i1 %iszero.i.i.i.i.i13.i.i1644, i1 %cmp2.i.i.i.i14.i.i1645, i1 false %2077 = and i32 %.lcssa3902, 31 %conv4.i.i.i19.i.i1650 = zext i1 %cmp.i.i.i.i15.i.i1646 to i32 %shl.i.i.i20.i.i1651 = shl nuw i32 %conv4.i.i.i19.i.i1650, %2077 %xor.i.i.i21.i.i1652 = xor i32 %shl.i.i.i20.i.i1651, -1 %2078 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2628, !amdgpu.uniform !42 2079: ; preds = %ComputeEnd2629 %div8.i.i.i16.i.i1647 = lshr i32 %.lcssa3902, 5 %idxprom.i.i.i17.i.i1648 = zext nneg i32 %div8.i.i.i16.i.i1647 to i64 %2080 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i1648 %sunkaddr3287 = getelementptr inbounds i8, ptr addrspace(1) %2080, i64 40 %2081 = atomicrmw and ptr addrspace(1) %sunkaddr3287, i32 %.lcssa3893 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2082, !amdgpu.uniform !42 2082: ; preds = %2079, %ComputeEnd2629 call void @llvm.amdgcn.end.cf.i64(i64 %3661) tail call void @llvm.amdgcn.wave.barrier() br i1 %cmp2.i.i.i37.i, label %if.then3.i.i.i89.i, label %if.end4.i.i.i78.i, !amdgpu.uniform !42 if.then3.i.i.i89.i: ; preds = %2082 %mul.i.i.i90.i = mul nuw i64 %inc.i.i.i34.i, 11 %div18.i.i.i91.i = lshr i64 %mul.i.i.i90.i, 3 br label %if.end4.i.i.i78.i, !amdgpu.uniform !42 if.end4.i.i.i78.i: ; preds = %if.then3.i.i.i89.i, %2082 %new_capacity.addr.0.i.i.i79.i = phi i64 [ %div18.i.i.i91.i, %if.then3.i.i.i89.i ], [ %inc.i.i.i34.i, %2082 ] %sub.i.i1662 = add i64 %new_capacity.addr.0.i.i.i79.i, 7 %div2.i.i1663 = and i64 %sub.i.i1662, -8 %2083 = load ptr, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %add.ptr.i.i1664 = getelementptr inbounds nuw i8, ptr %2083, i64 %div2.i.i1663 store ptr %add.ptr.i.i1664, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 br i1 %613, label %loop-memcpy-expansion2273.preheader, label %Flow3395, !amdgpu.uniform !42 loop-memcpy-expansion2273.preheader: ; preds = %if.end4.i.i.i78.i br label %loop-memcpy-expansion2273, !amdgpu.uniform !42 Flow3395: ; preds = %Flow3394, %if.end4.i.i.i78.i br label %loop-memcpy-residual-header2276, !amdgpu.uniform !42 loop-memcpy-expansion2273: ; preds = %loop-memcpy-expansion2273.preheader, %loop-memcpy-expansion2273 %loop-index2274 = phi i64 [ %2087, %loop-memcpy-expansion2273 ], [ 0, %loop-memcpy-expansion2273.preheader ] %2084 = getelementptr i8, ptr %4, i64 %loop-index2274, !amdgpu.uniform !42 %2085 = load <4 x i32>, ptr %2084, align 1 %2086 = getelementptr i8, ptr %2083, i64 %loop-index2274 store <4 x i32> %2085, ptr %2086, align 1 %2087 = add i64 %loop-index2274, 16 %2088 = icmp uge i64 %2087, %612 br i1 %2088, label %Flow3394, label %loop-memcpy-expansion2273, !amdgpu.uniform !42 Flow3392: ; preds = %Flow3391, %loop-memcpy-residual-header2276 br label %post-loop-memcpy-expansion2272, !amdgpu.uniform !42 loop-memcpy-residual2275: ; preds = %loop-memcpy-residual2275.preheader, %loop-memcpy-residual2275 %residual-loop-index2277 = phi i64 [ %2090, %loop-memcpy-residual2275 ], [ 0, %loop-memcpy-residual2275.preheader ] %scevgep2896 = getelementptr i8, ptr %scevgep2895, i64 %residual-loop-index2277, !amdgpu.uniform !42 %2089 = load i8, ptr %scevgep2896, align 1 %scevgep2894 = getelementptr i8, ptr %scevgep2893, i64 %residual-loop-index2277 store i8 %2089, ptr %scevgep2894, align 1 %2090 = add i64 %residual-loop-index2277, 1 %2091 = icmp uge i64 %2090, %611 br i1 %2091, label %Flow3391, label %loop-memcpy-residual2275, !amdgpu.uniform !42 Flow3391: ; preds = %loop-memcpy-residual2275 br label %Flow3392, !amdgpu.uniform !42 post-loop-memcpy-expansion2272: ; preds = %Flow3392 %sub.ptr.lhs.cast.i.i1665 = ptrtoint ptr %add.ptr.i.i1664 to i64 %sub.ptr.sub.i.i1666 = sub i64 %sub.ptr.lhs.cast.i.i1665, ptrtoint (ptr addrspacecast (ptr addrspace(1) @_ZN12_GLOBAL__N_16memoryE to ptr) to i64) %cmp.i.i1667 = icmp ugt i64 %sub.ptr.sub.i.i1666, 65335 %cond.i.i1668 = select i1 %cmp.i.i1667, ptr null, ptr %2083 %cmp.not.i10.i.i86.i = icmp ne ptr %cond.i.i1668, addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr) br i1 %cmp.not.i10.i.i86.i, label %if.then.i.i.i87.i, label %for.cond.i.i.i1670.preheader, !amdgpu.uniform !42 if.then.i.i.i87.i: ; preds = %post-loop-memcpy-expansion2272 %arrayidx.i.i.i88.i = getelementptr inbounds nuw i8, ptr %2083, i64 %spec.select.i store i8 0, ptr %arrayidx.i.i.i88.i, align 1, !tbaa !57 br label %for.cond.i.i.i1670.preheader, !amdgpu.uniform !42 for.cond.i.i.i1670.preheader: ; preds = %if.then.i.i.i87.i, %post-loop-memcpy-expansion2272 br label %for.cond.i.i.i1670, !amdgpu.uniform !42 for.cond.i.i.i1670: ; preds = %for.cond.i.i.i1670.preheader, %Flow3389 %2092 = phi i32 [ %2130, %Flow3389 ], [ poison, %for.cond.i.i.i1670.preheader ] %2093 = phi i64 [ %2131, %Flow3389 ], [ poison, %for.cond.i.i.i1670.preheader ] %2094 = phi i32 [ %2132, %Flow3389 ], [ poison, %for.cond.i.i.i1670.preheader ] %retval.sroa.6.0.i.i.i1671 = phi i32 [ %2135, %Flow3389 ], [ undef, %for.cond.i.i.i1670.preheader ] %retval.sroa.2.0.i.i.i1673 = phi i64 [ %2134, %Flow3389 ], [ undef, %for.cond.i.i.i1670.preheader ] %retval.sroa.8.0.i.i.i1674 = phi i32 [ %2133, %Flow3389 ], [ undef, %for.cond.i.i.i1670.preheader ] %index.0.i.i.i1675 = phi i32 [ %2137, %Flow3389 ], [ 0, %for.cond.i.i.i1670.preheader ] %2095 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i1676 = icmp ult i32 %index.0.i.i.i1675, %2095 %spec.store.select.i.i.i1677 = select i1 %cmp.not.i.i.i1676, i32 %index.0.i.i.i1675, i32 0 %2096 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %2097 = and i32 %spec.store.select.i.i.i1677, 31 %2098 = lshr i64 %2096, %sh_prom.i.i.i.i %2099 = trunc i64 %2098 to i32 %conv4.i.i.i.i.i1681 = and i32 %2099, 1 %shl.i.i.i.i.i1682 = shl nuw i32 %conv4.i.i.i.i.i1681, %2097 %2100 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2632, !amdgpu.uniform !42 2101: ; preds = %ComputeEnd2633 %sunkaddr3288 = getelementptr inbounds i8, ptr addrspace(1) %3671, i64 40 %2102 = atomicrmw or ptr addrspace(1) %sunkaddr3288, i32 %.lcssa3887 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2103, !amdgpu.uniform !42 2103: ; preds = %2101, %ComputeEnd2633 %2104 = phi i32 [ %2102, %2101 ], [ poison, %ComputeEnd2633 ] call void @llvm.amdgcn.end.cf.i64(i64 %3680) %2105 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %2104) %2106 = or i32 %2105, %.lcssa3888 %shl5.i.i.i.i.i1683 = shl nuw i32 1, %2097 %and.i.i.i.i.i1684 = and i32 %shl5.i.i.i.i.i1683, %2106 %tobool3.i.i.i.i1685 = icmp ne i32 %and.i.i.i.i.i1684, 0 %2107 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i1685) %and.i.i.i.i.i.i1686 = and i64 %2107, %2096 %cmp.i.not.i.i.i1687 = icmp ne i64 %2096, %and.i.i.i.i.i.i1686 br i1 %cmp.i.not.i.i.i1687, label %if.then.i.i.i.i1688, label %Flow3388, !amdgpu.uniform !42 if.then.i.i.i.i1688: ; preds = %2103 fence syncscope("agent") acquire %2108 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %2109 = extractelement <2 x i64> %2108, i32 0 %2110 = inttoptr i64 %2109 to ptr %2111 = extractelement <2 x i64> %2108, i32 1 %2112 = inttoptr i64 %2111 to ptr %idxprom.i.i.i.i1689 = zext i32 %spec.store.select.i.i.i1677 to i64 %arrayidx.i.i.i.i1690 = getelementptr inbounds nuw i32, ptr %2110, i64 %idxprom.i.i.i.i1689, !amdgpu.uniform !42 %2113 = load atomic i32, ptr %arrayidx.i.i.i.i1690 monotonic, align 4 %2114 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2113) %arrayidx.i45.i.i.i1691 = getelementptr inbounds nuw i32, ptr %2112, i64 %idxprom.i.i.i.i1689, !amdgpu.uniform !42 %2115 = load atomic i32, ptr %arrayidx.i45.i.i.i1691 monotonic, align 4 %2116 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2115) %cmp.i46.not.i.i.i1692 = icmp ne i32 %2114, %2116 br i1 %cmp.i46.not.i.i.i1692, label %if.then12.i.i.i1693, label %Flow3386, !amdgpu.uniform !42 if.then12.i.i.i1693: ; preds = %if.then.i.i.i.i1688 fence syncscope("agent") release %2117 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %2096, i1 true) %iszero.i.i.i.i.i.i.i1694 = icmp ne i64 %2096, 0 %cmp2.i.i.i.i.i.i1695 = icmp eq i64 %2117, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i1696 = select i1 %iszero.i.i.i.i.i.i.i1694, i1 %cmp2.i.i.i.i.i.i1695, i1 false %conv4.i.i51.i.i.i1697 = zext i1 %cmp.i.i.i.i.i.i1696 to i32 %shl.i.i52.i.i.i1698 = shl nuw i32 %conv4.i.i51.i.i.i1697, %2097 %xor.i.i.i.i.i1699 = xor i32 %shl.i.i52.i.i.i1698, -1 %2118 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2637, !amdgpu.uniform !42 2119: ; preds = %ComputeEnd2638 %sunkaddr3289 = getelementptr inbounds i8, ptr addrspace(1) %3671, i64 40 %2120 = atomicrmw and ptr addrspace(1) %sunkaddr3289, i32 %.lcssa3889 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2121, !amdgpu.uniform !42 2121: ; preds = %2119, %ComputeEnd2638 call void @llvm.amdgcn.end.cf.i64(i64 %3698) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3386, !amdgpu.uniform !42 if.end14.i.i.i1759: ; preds = %Flow3386 %2122 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %2096, i1 true) %iszero.i.i.i.i.i.i1760 = icmp ne i64 %2096, 0 %cmp2.i.i.i.i.i1761 = icmp eq i64 %2122, %sh_prom.i.i.i.i %cmp.i.i.i.i.i1762 = select i1 %iszero.i.i.i.i.i.i1760, i1 %cmp2.i.i.i.i.i1761, i1 false %2123 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i1762) %2124 = extractvalue { i1, i64 } %2123, 0 %2125 = extractvalue { i1, i64 } %2123, 1 br i1 %2124, label %if.then16.i.i.i1764, label %if.end22.i.i.i1763 if.then16.i.i.i1764: ; preds = %if.end14.i.i.i1759 %2126 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i1765 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2126, i64 %idxprom.i.i.i.i1689, i32 1 store i32 1660944387, ptr %opcode.i.i.i1765, align 8, !tbaa !77 %arrayidx21.i.i.i1766 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2126, i64 %idxprom.i.i.i.i1689 store i64 %2096, ptr %arrayidx21.i.i.i1766, align 8, !tbaa !80 br label %if.end22.i.i.i1763, !amdgpu.uniform !42 Flow3387: ; preds = %if.end22.i.i.i1763, %Flow3386 %2127 = phi i32 [ %2114, %if.end22.i.i.i1763 ], [ %retval.sroa.8.0.i.i.i1674, %Flow3386 ] %2128 = phi i64 [ %2096, %if.end22.i.i.i1763 ], [ %retval.sroa.2.0.i.i.i1673, %Flow3386 ] %2129 = phi i32 [ %spec.store.select.i.i.i1677, %if.end22.i.i.i1763 ], [ %retval.sroa.6.0.i.i.i1671, %Flow3386 ] br label %cleanup26.i.i.i1700, !amdgpu.uniform !42 if.end22.i.i.i1763: ; preds = %if.then16.i.i.i1764, %if.end14.i.i.i1759 call void @llvm.amdgcn.end.cf.i64(i64 %2125) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3387, !amdgpu.uniform !42 Flow3388: ; preds = %cleanup26.i.i.i1700, %2103 %2130 = phi i32 [ %2129, %cleanup26.i.i.i1700 ], [ %2092, %2103 ] %2131 = phi i64 [ %2128, %cleanup26.i.i.i1700 ], [ %2093, %2103 ] %2132 = phi i32 [ %2127, %cleanup26.i.i.i1700 ], [ %2094, %2103 ] %2133 = phi i32 [ %2127, %cleanup26.i.i.i1700 ], [ %retval.sroa.8.0.i.i.i1674, %2103 ] %2134 = phi i64 [ %2128, %cleanup26.i.i.i1700 ], [ %retval.sroa.2.0.i.i.i1673, %2103 ] %2135 = phi i32 [ %2129, %cleanup26.i.i.i1700 ], [ %retval.sroa.6.0.i.i.i1671, %2103 ] %2136 = phi i1 [ %cmp.i46.not.i.i.i1692, %cleanup26.i.i.i1700 ], [ true, %2103 ] br i1 %2136, label %for.inc.i.i.i1705, label %Flow3389, !amdgpu.uniform !42 cleanup26.i.i.i1700: ; preds = %Flow3387 br label %Flow3388, !amdgpu.uniform !42 for.inc.i.i.i1705: ; preds = %Flow3388 %inc.i.i.i1710 = add i32 %spec.store.select.i.i.i1677, 1 br label %Flow3389, !amdgpu.uniform !42 Flow3389: ; preds = %for.inc.i.i.i1705, %Flow3388 %2137 = phi i32 [ %inc.i.i.i1710, %for.inc.i.i.i1705 ], [ poison, %Flow3388 ] %2138 = phi i1 [ false, %for.inc.i.i.i1705 ], [ true, %Flow3388 ] br i1 %2138, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1711, label %for.cond.i.i.i1670, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1711: ; preds = %Flow3389 %.lcssa3892 = phi i32 [ %2130, %Flow3389 ] %.lcssa3891 = phi i64 [ %2131, %Flow3389 ] %.lcssa3890 = phi i32 [ %2132, %Flow3389 ] fence acquire %2139 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i1712 = shl i32 %.lcssa3892, 6 %idxprom.i19.i.i.i.i.i1713 = zext i32 %mul.i.i.i.i.i.i1712 to i64 %arrayidx.i20.i.i.i.i.i1714 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %2139, i64 %idxprom.i19.i.i.i.i.i1713 %arrayidx.i22.i.i.i.i.i1715 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i1714, i64 %sh_prom.i.i.i.i store i64 %spec.select.i, ptr %arrayidx.i22.i.i.i.i.i1715, align 8, !tbaa !82 br i1 %672, label %loop-memcpy-expansion2195.preheader, label %Flow3385, !amdgpu.uniform !42 loop-memcpy-expansion2195.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1711 %2140 = add nuw nsw i64 %76, 8 %scevgep2889 = getelementptr i8, ptr %2139, i64 %2140 %2141 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1713, 6 %scevgep2890 = getelementptr i8, ptr %scevgep2889, i64 %2141 br label %loop-memcpy-expansion2195, !amdgpu.uniform !42 Flow3385: ; preds = %Flow3384, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1711 br label %loop-memcpy-residual-header2198, !amdgpu.uniform !42 loop-memcpy-expansion2195: ; preds = %loop-memcpy-expansion2195.preheader, %loop-memcpy-expansion2195 %loop-index2196 = phi i64 [ %2144, %loop-memcpy-expansion2195 ], [ 0, %loop-memcpy-expansion2195.preheader ] %2142 = getelementptr i8, ptr %2083, i64 %loop-index2196, !amdgpu.uniform !42 %2143 = load <4 x i32>, ptr %2142, align 1 %scevgep2891 = getelementptr i8, ptr %scevgep2890, i64 %loop-index2196 store <4 x i32> %2143, ptr %scevgep2891, align 1 %2144 = add i64 %loop-index2196, 16 %2145 = icmp uge i64 %2144, %671 br i1 %2145, label %Flow3384, label %loop-memcpy-expansion2195, !amdgpu.uniform !42 Flow3382: ; preds = %Flow3379, %Flow3381 %2146 = phi i64 [ %2564, %Flow3379 ], [ %2558, %Flow3381 ] br label %post-loop-memcpy-expansion2194, !amdgpu.uniform !42 loop-memcpy-residual2197: ; preds = %loop-memcpy-residual2197.preheader, %loop-memcpy-residual2197 %residual-loop-index2199 = phi i64 [ %2148, %loop-memcpy-residual2197 ], [ 0, %loop-memcpy-residual2197.preheader ] %scevgep2888 = getelementptr i8, ptr %scevgep2887, i64 %residual-loop-index2199, !amdgpu.uniform !42 %2147 = load i8, ptr %scevgep2888, align 1 %scevgep2886 = getelementptr i8, ptr %scevgep2885, i64 %residual-loop-index2199 store i8 %2147, ptr %scevgep2886, align 1 %2148 = add i64 %residual-loop-index2199, 1 %2149 = icmp uge i64 %2148, %670 br i1 %2149, label %Flow3379, label %loop-memcpy-residual2197, !amdgpu.uniform !42 Flow3379: ; preds = %loop-memcpy-residual2197 br label %Flow3382, !amdgpu.uniform !42 post-loop-memcpy-expansion2194: ; preds = %Flow3382 %tobool.not.i.i.i.i.i.i1718 = icmp eq i32 %.lcssa3890, 0 %conv.i.i.i.i.i.i1719 = zext i1 %tobool.not.i.i.i.i.i.i1718 to i32 fence release %2150 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i1720 = zext i32 %.lcssa3892 to i64 %arrayidx.i24.i.i.i.i.i1721 = getelementptr inbounds nuw i32, ptr %2150, i64 %idxprom.i23.i.i.i.i.i1720 store atomic i32 %conv.i.i.i.i.i.i1719, ptr %arrayidx.i24.i.i.i.i.i1721 monotonic, align 4 %2151 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i1722 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2151, i64 %idxprom.i23.i.i.i.i.i1720, !amdgpu.uniform !42 %2152 = load i64, ptr %arrayidx.i.i5.i.i1722, align 8, !tbaa !80 %scevgep2870 = getelementptr i8, ptr %2083, i64 56 br label %while.cond.i.i.i.i1723, !amdgpu.uniform !42 while.cond.i.i.i.i1723: ; preds = %post-loop-memcpy-expansion2194, %Flow3377 %phi.broken3834 = phi i64 [ 0, %post-loop-memcpy-expansion2194 ], [ %2169, %Flow3377 ] %lsr.iv2877 = phi i64 [ %2167, %Flow3377 ], [ %686, %post-loop-memcpy-expansion2194 ] %lsr.iv2871 = phi ptr [ %2166, %Flow3377 ], [ %scevgep2870, %post-loop-memcpy-expansion2194 ] %port.sroa.37.0.i.i1724 = phi i32 [ %2165, %Flow3377 ], [ %conv.i.i.i.i.i.i1719, %post-loop-memcpy-expansion2194 ] %idx.0.i.i.i.i1725 = phi i64 [ %2164, %Flow3377 ], [ 56, %post-loop-memcpy-expansion2194 ] %cmp.i.i.i.i1726 = icmp ugt i64 %spec.select.i, %idx.0.i.i.i.i1725 %2153 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i1726) %and.i.i.i.i6.i.i1727 = and i64 %2153, %2152 %tobool.not.i.i.i.i1728 = icmp ne i64 %and.i.i.i.i6.i.i1727, 0 %2154 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i1729 = getelementptr inbounds nuw i32, ptr %2154, i64 %idxprom.i23.i.i.i.i.i1720, !amdgpu.uniform !42 %2155 = load atomic i32, ptr %arrayidx.i22.i.i.i1729 monotonic, align 4 %2156 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i1728) %2157 = extractvalue { i1, i64 } %2156, 0 %2158 = extractvalue { i1, i64 } %2156, 1 br i1 %2157, label %cond.false.i8.i.i.i.i1730, label %Flow3377 cond.false.i8.i.i.i.i1730: ; preds = %while.cond.i.i.i.i1723 %2159 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2155) %2160 = icmp ne i32 %2159, %port.sroa.37.0.i.i1724 br i1 %2160, label %while.body.i.i21.i.i.i.i1731.preheader, label %Flow3376, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1731.preheader: ; preds = %cond.false.i8.i.i.i.i1730 br label %while.body.i.i21.i.i.i.i1731, !amdgpu.uniform !42 Flow3376: ; preds = %Flow3374, %cond.false.i8.i.i.i.i1730 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1734, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1731: ; preds = %while.body.i.i21.i.i.i.i1731.preheader, %while.body.i.i21.i.i.i.i1731 tail call void @llvm.amdgcn.s.sleep(i32 2) %2161 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i1732 = getelementptr inbounds nuw i32, ptr %2161, i64 %idxprom.i23.i.i.i.i.i1720, !amdgpu.uniform !42 %2162 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i1732 monotonic, align 4 %2163 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2162) %cmp.i.not.i.i23.i.i.i.i1733 = icmp eq i32 %2163, %port.sroa.37.0.i.i1724 br i1 %cmp.i.not.i.i23.i.i.i.i1733, label %Flow3374, label %while.body.i.i21.i.i.i.i1731, !amdgpu.uniform !42 Flow3374: ; preds = %while.body.i.i21.i.i.i.i1731 br label %Flow3376, !amdgpu.uniform !42 Flow3377: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1735, %while.cond.i.i.i.i1723 %2164 = phi i64 [ %add.i.i.i.i1738, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1735 ], [ poison, %while.cond.i.i.i.i1723 ] %2165 = phi i32 [ %conv.i.i26.i.i.i.i1736, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1735 ], [ poison, %while.cond.i.i.i.i1723 ] %2166 = phi ptr [ %scevgep2872, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1735 ], [ poison, %while.cond.i.i.i.i1723 ] %2167 = phi i64 [ %lsr.iv.next2878, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1735 ], [ poison, %while.cond.i.i.i.i1723 ] %2168 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1735 ], [ true, %while.cond.i.i.i.i1723 ] call void @llvm.amdgcn.end.cf.i64(i64 %2158) %2169 = call i64 @llvm.amdgcn.if.break.i64(i1 %2168, i64 %phi.broken3834) %2170 = call i1 @llvm.amdgcn.loop.i64(i64 %2169) br i1 %2170, label %cond.false.i.i.i1745, label %while.cond.i.i.i.i1723 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1734: ; preds = %Flow3376 fence acquire br i1 %cmp.i.i.i.i1726, label %if.then.i.i.i.i.i.i.i1739, label %Flow3373, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i1739: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1734 %sub.i.i.i.i.i.i.i1741 = sub nuw i64 %spec.select.i, %idx.0.i.i.i.i1725 %spec.select.i.i.i36.i.i.i.i1742 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i1741, i64 64) %2171 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %2172 = and i64 %spec.select.i.i.i36.i.i.i.i1742, 15 %2173 = sub i64 %spec.select.i.i.i36.i.i.i.i1742, %2172 %2174 = icmp ne i64 %2173, 0 br i1 %2174, label %loop-memcpy-expansion2189.preheader, label %Flow3372, !amdgpu.uniform !42 loop-memcpy-expansion2189.preheader: ; preds = %if.then.i.i.i.i.i.i.i1739 %arrayidx.i20.i35.i.i.i.i1743 = getelementptr %"struct.rpc::Buffer", ptr %2171, i64 %idxprom.i19.i.i.i.i.i1713 %arrayidx.i22.i38.i.i.i.i1744 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i1743, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2189, !amdgpu.uniform !42 Flow3372: ; preds = %Flow3371, %if.then.i.i.i.i.i.i.i1739 br label %loop-memcpy-residual-header2192, !amdgpu.uniform !42 loop-memcpy-expansion2189: ; preds = %loop-memcpy-expansion2189.preheader, %loop-memcpy-expansion2189 %loop-index2190 = phi i64 [ %2177, %loop-memcpy-expansion2189 ], [ 0, %loop-memcpy-expansion2189.preheader ] %scevgep2873 = getelementptr i8, ptr %lsr.iv2871, i64 %loop-index2190, !amdgpu.uniform !42 %2175 = load <4 x i32>, ptr %scevgep2873, align 1 %2176 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i1744, i64 %loop-index2190 store <4 x i32> %2175, ptr %2176, align 1 %2177 = add i64 %loop-index2190, 16 %2178 = icmp uge i64 %2177, %2173 br i1 %2178, label %Flow3371, label %loop-memcpy-expansion2189, !amdgpu.uniform !42 Flow3369: ; preds = %Flow3368, %loop-memcpy-residual-header2192 br label %Flow3373, !amdgpu.uniform !42 loop-memcpy-residual2191: ; preds = %loop-memcpy-residual2191.preheader, %loop-memcpy-residual2191 %residual-loop-index2193 = phi i64 [ %2180, %loop-memcpy-residual2191 ], [ 0, %loop-memcpy-residual2191.preheader ] %scevgep2883 = getelementptr i8, ptr %scevgep2882, i64 %residual-loop-index2193, !amdgpu.uniform !42 %2179 = load i8, ptr %scevgep2883, align 1 %scevgep2881 = getelementptr i8, ptr %scevgep2880, i64 %residual-loop-index2193 store i8 %2179, ptr %scevgep2881, align 1 %2180 = add i64 %residual-loop-index2193, 1 %2181 = icmp uge i64 %2180, %2172 br i1 %2181, label %Flow3368, label %loop-memcpy-residual2191, !amdgpu.uniform !42 Flow3368: ; preds = %loop-memcpy-residual2191 br label %Flow3369, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1735: ; preds = %Flow3373 %conv.i.i26.i.i.i.i1736 = xor i32 %port.sroa.37.0.i.i1724, 1 fence release %2182 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i1737 = getelementptr inbounds nuw i32, ptr %2182, i64 %idxprom.i23.i.i.i.i.i1720 store atomic i32 %conv.i.i26.i.i.i.i1736, ptr %arrayidx.i24.i29.i.i.i.i1737 monotonic, align 4 %add.i.i.i.i1738 = add i64 %idx.0.i.i.i.i1725, 64 %scevgep2872 = getelementptr i8, ptr %lsr.iv2871, i64 64 %lsr.iv.next2878 = add i64 %lsr.iv2877, -64 br label %Flow3377, !amdgpu.uniform !42 cond.false.i.i.i1745: ; preds = %Flow3377 %.lcssa3886 = phi i64 [ %2169, %Flow3377 ] %port.sroa.37.0.i.i1724.lcssa = phi i32 [ %port.sroa.37.0.i.i1724, %Flow3377 ] %.lcssa3885 = phi i32 [ %2155, %Flow3377 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3886) %2183 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa3885) %2184 = icmp ne i32 %2183, %port.sroa.37.0.i.i1724.lcssa %2185 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2184) %2186 = extractvalue { i1, i64 } %2185, 0 %2187 = extractvalue { i1, i64 } %2185, 1 br i1 %2186, label %while.body.i.i.i.i1746.preheader, label %Flow3366 while.body.i.i.i.i1746.preheader: ; preds = %cond.false.i.i.i1745 br label %while.body.i.i.i.i1746, !amdgpu.uniform !42 Flow3366: ; preds = %Flow3364, %cond.false.i.i.i1745 call void @llvm.amdgcn.end.cf.i64(i64 %2187) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit1767, !amdgpu.uniform !42 while.body.i.i.i.i1746: ; preds = %while.body.i.i.i.i1746.preheader, %while.body.i.i.i.i1746 %phi.broken3835 = phi i64 [ 0, %while.body.i.i.i.i1746.preheader ], [ %2191, %while.body.i.i.i.i1746 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %2188 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i1747 = getelementptr inbounds nuw i32, ptr %2188, i64 %idxprom.i23.i.i.i.i.i1720, !amdgpu.uniform !42 %2189 = load atomic i32, ptr %arrayidx.i.i.i8.i.i1747 monotonic, align 4 %2190 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2189) %cmp.i.not.i.i.i.i1748 = icmp eq i32 %2190, %port.sroa.37.0.i.i1724.lcssa %2191 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i1748, i64 %phi.broken3835) %2192 = call i1 @llvm.amdgcn.loop.i64(i64 %2191) br i1 %2192, label %Flow3364, label %while.body.i.i.i.i1746 Flow3364: ; preds = %while.body.i.i.i.i1746 %.lcssa3884 = phi i64 [ %2191, %while.body.i.i.i.i1746 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3884) br label %Flow3366, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit1767: ; preds = %Flow3366 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %2193 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa3891, i1 true) %iszero.i.i.i.i.i13.i.i1750 = icmp ne i64 %.lcssa3891, 0 %cmp2.i.i.i.i14.i.i1751 = icmp eq i64 %2193, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i1752 = select i1 %iszero.i.i.i.i.i13.i.i1750, i1 %cmp2.i.i.i.i14.i.i1751, i1 false %2194 = and i32 %.lcssa3892, 31 %conv4.i.i.i19.i.i1756 = zext i1 %cmp.i.i.i.i15.i.i1752 to i32 %shl.i.i.i20.i.i1757 = shl nuw i32 %conv4.i.i.i19.i.i1756, %2194 %xor.i.i.i21.i.i1758 = xor i32 %shl.i.i.i20.i.i1757, -1 %2195 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2641, !amdgpu.uniform !42 2196: ; preds = %ComputeEnd2642 %div8.i.i.i16.i.i1753 = lshr i32 %.lcssa3892, 5 %idxprom.i.i.i17.i.i1754 = zext nneg i32 %div8.i.i.i16.i.i1753 to i64 %2197 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i1754 %sunkaddr3290 = getelementptr inbounds i8, ptr addrspace(1) %2197, i64 40 %2198 = atomicrmw and ptr addrspace(1) %sunkaddr3290, i32 %.lcssa3883 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2199, !amdgpu.uniform !42 2199: ; preds = %2196, %ComputeEnd2642 call void @llvm.amdgcn.end.cf.i64(i64 %3715) tail call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i1.i1776, !amdgpu.uniform !42 for.cond.i.i1.i1776: ; preds = %2199, %Flow3363 %2200 = phi i32 [ %2238, %Flow3363 ], [ poison, %2199 ] %2201 = phi i64 [ %2239, %Flow3363 ], [ poison, %2199 ] %2202 = phi i32 [ %2240, %Flow3363 ], [ poison, %2199 ] %retval.sroa.6.0.i.i.i1777 = phi i32 [ %2243, %Flow3363 ], [ undef, %2199 ] %retval.sroa.2.0.i.i.i1779 = phi i64 [ %2242, %Flow3363 ], [ undef, %2199 ] %retval.sroa.8.0.i.i.i1780 = phi i32 [ %2241, %Flow3363 ], [ undef, %2199 ] %index.0.i.i.i1781 = phi i32 [ %2245, %Flow3363 ], [ 0, %2199 ] %2203 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i1782 = icmp ult i32 %index.0.i.i.i1781, %2203 %spec.store.select.i.i.i1783 = select i1 %cmp.not.i.i.i1782, i32 %index.0.i.i.i1781, i32 0 %2204 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %2205 = and i32 %spec.store.select.i.i.i1783, 31 %2206 = lshr i64 %2204, %sh_prom.i.i.i.i %2207 = trunc i64 %2206 to i32 %conv4.i.i.i.i.i1787 = and i32 %2207, 1 %shl.i.i.i.i.i1788 = shl nuw i32 %conv4.i.i.i.i.i1787, %2205 %2208 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2645, !amdgpu.uniform !42 2209: ; preds = %ComputeEnd2646 %sunkaddr3291 = getelementptr inbounds i8, ptr addrspace(1) %3725, i64 40 %2210 = atomicrmw or ptr addrspace(1) %sunkaddr3291, i32 %.lcssa3877 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2211, !amdgpu.uniform !42 2211: ; preds = %2209, %ComputeEnd2646 %2212 = phi i32 [ %2210, %2209 ], [ poison, %ComputeEnd2646 ] call void @llvm.amdgcn.end.cf.i64(i64 %3734) %2213 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %2212) %2214 = or i32 %2213, %.lcssa3878 %shl5.i.i.i.i.i1789 = shl nuw i32 1, %2205 %and.i.i.i.i.i1790 = and i32 %shl5.i.i.i.i.i1789, %2214 %tobool3.i.i.i.i1791 = icmp ne i32 %and.i.i.i.i.i1790, 0 %2215 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i1791) %and.i.i.i.i.i.i1792 = and i64 %2215, %2204 %cmp.i.not.i.i.i1793 = icmp ne i64 %2204, %and.i.i.i.i.i.i1792 br i1 %cmp.i.not.i.i.i1793, label %if.then.i.i.i.i1794, label %Flow3362, !amdgpu.uniform !42 if.then.i.i.i.i1794: ; preds = %2211 fence syncscope("agent") acquire %2216 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %2217 = extractelement <2 x i64> %2216, i32 0 %2218 = inttoptr i64 %2217 to ptr %2219 = extractelement <2 x i64> %2216, i32 1 %2220 = inttoptr i64 %2219 to ptr %idxprom.i.i.i.i1795 = zext i32 %spec.store.select.i.i.i1783 to i64 %arrayidx.i.i.i.i1796 = getelementptr inbounds nuw i32, ptr %2218, i64 %idxprom.i.i.i.i1795, !amdgpu.uniform !42 %2221 = load atomic i32, ptr %arrayidx.i.i.i.i1796 monotonic, align 4 %2222 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2221) %arrayidx.i45.i.i.i1797 = getelementptr inbounds nuw i32, ptr %2220, i64 %idxprom.i.i.i.i1795, !amdgpu.uniform !42 %2223 = load atomic i32, ptr %arrayidx.i45.i.i.i1797 monotonic, align 4 %2224 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2223) %cmp.i46.not.i.i.i1798 = icmp ne i32 %2222, %2224 br i1 %cmp.i46.not.i.i.i1798, label %if.then12.i.i.i1799, label %Flow3360, !amdgpu.uniform !42 if.then12.i.i.i1799: ; preds = %if.then.i.i.i.i1794 fence syncscope("agent") release %2225 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %2204, i1 true) %iszero.i.i.i.i.i.i.i1800 = icmp ne i64 %2204, 0 %cmp2.i.i.i.i.i.i1801 = icmp eq i64 %2225, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i1802 = select i1 %iszero.i.i.i.i.i.i.i1800, i1 %cmp2.i.i.i.i.i.i1801, i1 false %conv4.i.i51.i.i.i1803 = zext i1 %cmp.i.i.i.i.i.i1802 to i32 %shl.i.i52.i.i.i1804 = shl nuw i32 %conv4.i.i51.i.i.i1803, %2205 %xor.i.i.i.i.i1805 = xor i32 %shl.i.i52.i.i.i1804, -1 %2226 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2650, !amdgpu.uniform !42 2227: ; preds = %ComputeEnd2651 %sunkaddr3292 = getelementptr inbounds i8, ptr addrspace(1) %3725, i64 40 %2228 = atomicrmw and ptr addrspace(1) %sunkaddr3292, i32 %.lcssa3879 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2229, !amdgpu.uniform !42 2229: ; preds = %2227, %ComputeEnd2651 call void @llvm.amdgcn.end.cf.i64(i64 %3752) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3360, !amdgpu.uniform !42 if.end14.i.i.i1865: ; preds = %Flow3360 %2230 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %2204, i1 true) %iszero.i.i.i.i.i.i1866 = icmp ne i64 %2204, 0 %cmp2.i.i.i.i.i1867 = icmp eq i64 %2230, %sh_prom.i.i.i.i %cmp.i.i.i.i.i1868 = select i1 %iszero.i.i.i.i.i.i1866, i1 %cmp2.i.i.i.i.i1867, i1 false %2231 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i1868) %2232 = extractvalue { i1, i64 } %2231, 0 %2233 = extractvalue { i1, i64 } %2231, 1 br i1 %2232, label %if.then16.i.i.i1870, label %if.end22.i.i.i1869 if.then16.i.i.i1870: ; preds = %if.end14.i.i.i1865 %2234 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i1871 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2234, i64 %idxprom.i.i.i.i1795, i32 1 store i32 1660944387, ptr %opcode.i.i.i1871, align 8, !tbaa !77 %arrayidx21.i.i.i1872 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2234, i64 %idxprom.i.i.i.i1795 store i64 %2204, ptr %arrayidx21.i.i.i1872, align 8, !tbaa !80 br label %if.end22.i.i.i1869, !amdgpu.uniform !42 Flow3361: ; preds = %if.end22.i.i.i1869, %Flow3360 %2235 = phi i32 [ %2222, %if.end22.i.i.i1869 ], [ %retval.sroa.8.0.i.i.i1780, %Flow3360 ] %2236 = phi i64 [ %2204, %if.end22.i.i.i1869 ], [ %retval.sroa.2.0.i.i.i1779, %Flow3360 ] %2237 = phi i32 [ %spec.store.select.i.i.i1783, %if.end22.i.i.i1869 ], [ %retval.sroa.6.0.i.i.i1777, %Flow3360 ] br label %cleanup26.i.i.i1806, !amdgpu.uniform !42 if.end22.i.i.i1869: ; preds = %if.then16.i.i.i1870, %if.end14.i.i.i1865 call void @llvm.amdgcn.end.cf.i64(i64 %2233) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3361, !amdgpu.uniform !42 Flow3362: ; preds = %cleanup26.i.i.i1806, %2211 %2238 = phi i32 [ %2237, %cleanup26.i.i.i1806 ], [ %2200, %2211 ] %2239 = phi i64 [ %2236, %cleanup26.i.i.i1806 ], [ %2201, %2211 ] %2240 = phi i32 [ %2235, %cleanup26.i.i.i1806 ], [ %2202, %2211 ] %2241 = phi i32 [ %2235, %cleanup26.i.i.i1806 ], [ %retval.sroa.8.0.i.i.i1780, %2211 ] %2242 = phi i64 [ %2236, %cleanup26.i.i.i1806 ], [ %retval.sroa.2.0.i.i.i1779, %2211 ] %2243 = phi i32 [ %2237, %cleanup26.i.i.i1806 ], [ %retval.sroa.6.0.i.i.i1777, %2211 ] %2244 = phi i1 [ %cmp.i46.not.i.i.i1798, %cleanup26.i.i.i1806 ], [ true, %2211 ] br i1 %2244, label %for.inc.i.i.i1811, label %Flow3363, !amdgpu.uniform !42 cleanup26.i.i.i1806: ; preds = %Flow3361 br label %Flow3362, !amdgpu.uniform !42 for.inc.i.i.i1811: ; preds = %Flow3362 %inc.i.i.i1816 = add i32 %spec.store.select.i.i.i1783, 1 br label %Flow3363, !amdgpu.uniform !42 Flow3363: ; preds = %for.inc.i.i.i1811, %Flow3362 %2245 = phi i32 [ %inc.i.i.i1816, %for.inc.i.i.i1811 ], [ poison, %Flow3362 ] %2246 = phi i1 [ false, %for.inc.i.i.i1811 ], [ true, %Flow3362 ] br i1 %2246, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1817, label %for.cond.i.i1.i1776, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1817: ; preds = %Flow3363 %.lcssa3882 = phi i32 [ %2238, %Flow3363 ] %.lcssa3881 = phi i64 [ %2239, %Flow3363 ] %.lcssa3880 = phi i32 [ %2240, %Flow3363 ] fence acquire %2247 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i1818 = shl i32 %.lcssa3882, 6 %idxprom.i19.i.i.i.i.i1819 = zext i32 %mul.i.i.i.i.i.i1818 to i64 %arrayidx.i20.i.i.i.i.i1820 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %2247, i64 %idxprom.i19.i.i.i.i.i1819 %arrayidx.i22.i.i.i.i.i1821 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i1820, i64 %sh_prom.i.i.i.i store i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.35 to ptr), i64 10) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.35 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i1821, align 8, !tbaa !82 br i1 %1231, label %loop-memcpy-expansion2363.preheader, label %Flow3359, !amdgpu.uniform !42 loop-memcpy-expansion2363.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1817 %2248 = add nuw nsw i64 %76, 8 %scevgep2867 = getelementptr i8, ptr %2247, i64 %2248 %2249 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1819, 6 %scevgep2868 = getelementptr i8, ptr %scevgep2867, i64 %2249 br label %loop-memcpy-expansion2363, !amdgpu.uniform !42 Flow3359: ; preds = %Flow3358, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1817 br label %loop-memcpy-residual-header2366, !amdgpu.uniform !42 loop-memcpy-expansion2363: ; preds = %loop-memcpy-expansion2363.preheader, %loop-memcpy-expansion2363 %loop-index2364 = phi i64 [ %2252, %loop-memcpy-expansion2363 ], [ 0, %loop-memcpy-expansion2363.preheader ] %2250 = getelementptr i8, ptr addrspace(4) @.str.35, i64 %loop-index2364, !amdgpu.uniform !42 %2251 = load <4 x i32>, ptr addrspace(4) %2250, align 1 %scevgep2869 = getelementptr i8, ptr %scevgep2868, i64 %loop-index2364 store <4 x i32> %2251, ptr %scevgep2869, align 1 %2252 = add i64 %loop-index2364, 16 %2253 = icmp uge i64 %2252, %1230 br i1 %2253, label %Flow3358, label %loop-memcpy-expansion2363, !amdgpu.uniform !42 Flow3356: ; preds = %Flow3354, %Flow3355 %2254 = phi i64 [ %2710, %Flow3354 ], [ %2707, %Flow3355 ] br label %post-loop-memcpy-expansion2362, !amdgpu.uniform !42 loop-memcpy-residual2365: ; preds = %loop-memcpy-residual2365.preheader, %loop-memcpy-residual2365 %residual-loop-index2367 = phi i64 [ %2256, %loop-memcpy-residual2365 ], [ 0, %loop-memcpy-residual2365.preheader ] %scevgep2866 = getelementptr i8, ptr addrspace(4) @.str.35, i64 %residual-loop-index2367, !amdgpu.uniform !42 %2255 = load i8, ptr addrspace(4) %scevgep2866, align 1 %scevgep2865 = getelementptr i8, ptr %scevgep2864, i64 %residual-loop-index2367 store i8 %2255, ptr %scevgep2865, align 1 %2256 = add i64 %residual-loop-index2367, 1 %2257 = icmp uge i64 %2256, %1229 br i1 %2257, label %Flow3354, label %loop-memcpy-residual2365, !amdgpu.uniform !42 Flow3354: ; preds = %loop-memcpy-residual2365 br label %Flow3356, !amdgpu.uniform !42 post-loop-memcpy-expansion2362: ; preds = %Flow3356 %tobool.not.i.i.i.i.i.i1824 = icmp eq i32 %.lcssa3880, 0 %conv.i.i.i.i.i.i1825 = zext i1 %tobool.not.i.i.i.i.i.i1824 to i32 fence release %2258 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i1826 = zext i32 %.lcssa3882 to i64 %arrayidx.i24.i.i.i.i.i1827 = getelementptr inbounds nuw i32, ptr %2258, i64 %idxprom.i23.i.i.i.i.i1826 store atomic i32 %conv.i.i.i.i.i.i1825, ptr %arrayidx.i24.i.i.i.i.i1827 monotonic, align 4 %2259 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i1828 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2259, i64 %idxprom.i23.i.i.i.i.i1826, !amdgpu.uniform !42 %2260 = load i64, ptr %arrayidx.i.i5.i.i1828, align 8, !tbaa !80 br label %while.cond.i.i.i.i1829, !amdgpu.uniform !42 while.cond.i.i.i.i1829: ; preds = %post-loop-memcpy-expansion2362, %Flow3353 %phi.broken3836 = phi i64 [ 0, %post-loop-memcpy-expansion2362 ], [ %2277, %Flow3353 ] %lsr.iv2858 = phi i64 [ %2275, %Flow3353 ], [ -46, %post-loop-memcpy-expansion2362 ] %lsr.iv2853 = phi ptr addrspace(4) [ %2274, %Flow3353 ], [ getelementptr (i8, ptr addrspace(4) @.str.35, i64 56), %post-loop-memcpy-expansion2362 ] %port.sroa.37.0.i.i1830 = phi i32 [ %2273, %Flow3353 ], [ %conv.i.i.i.i.i.i1825, %post-loop-memcpy-expansion2362 ] %idx.0.i.i.i.i1831 = phi i64 [ %2272, %Flow3353 ], [ 56, %post-loop-memcpy-expansion2362 ] %cmp.i.i.i.i1832 = icmp ult i64 %idx.0.i.i.i.i1831, sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.35 to ptr), i64 10) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.35 to ptr) to i64)) %2261 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i1832) %and.i.i.i.i6.i.i1833 = and i64 %2261, %2260 %tobool.not.i.i.i.i1834 = icmp ne i64 %and.i.i.i.i6.i.i1833, 0 %2262 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i1835 = getelementptr inbounds nuw i32, ptr %2262, i64 %idxprom.i23.i.i.i.i.i1826, !amdgpu.uniform !42 %2263 = load atomic i32, ptr %arrayidx.i22.i.i.i1835 monotonic, align 4 %2264 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i1834) %2265 = extractvalue { i1, i64 } %2264, 0 %2266 = extractvalue { i1, i64 } %2264, 1 br i1 %2265, label %cond.false.i8.i.i.i.i1836, label %Flow3353 cond.false.i8.i.i.i.i1836: ; preds = %while.cond.i.i.i.i1829 %2267 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2263) %2268 = icmp ne i32 %2267, %port.sroa.37.0.i.i1830 br i1 %2268, label %while.body.i.i21.i.i.i.i1837.preheader, label %Flow3352, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1837.preheader: ; preds = %cond.false.i8.i.i.i.i1836 br label %while.body.i.i21.i.i.i.i1837, !amdgpu.uniform !42 Flow3352: ; preds = %Flow3351, %cond.false.i8.i.i.i.i1836 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1840, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1837: ; preds = %while.body.i.i21.i.i.i.i1837.preheader, %while.body.i.i21.i.i.i.i1837 tail call void @llvm.amdgcn.s.sleep(i32 2) %2269 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i1838 = getelementptr inbounds nuw i32, ptr %2269, i64 %idxprom.i23.i.i.i.i.i1826, !amdgpu.uniform !42 %2270 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i1838 monotonic, align 4 %2271 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2270) %cmp.i.not.i.i23.i.i.i.i1839 = icmp eq i32 %2271, %port.sroa.37.0.i.i1830 br i1 %cmp.i.not.i.i23.i.i.i.i1839, label %Flow3351, label %while.body.i.i21.i.i.i.i1837, !amdgpu.uniform !42 Flow3351: ; preds = %while.body.i.i21.i.i.i.i1837 br label %Flow3352, !amdgpu.uniform !42 Flow3353: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1841, %while.cond.i.i.i.i1829 %2272 = phi i64 [ %add.i.i.i.i1844, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1841 ], [ poison, %while.cond.i.i.i.i1829 ] %2273 = phi i32 [ %conv.i.i26.i.i.i.i1842, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1841 ], [ poison, %while.cond.i.i.i.i1829 ] %2274 = phi ptr addrspace(4) [ %scevgep2854, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1841 ], [ poison, %while.cond.i.i.i.i1829 ] %2275 = phi i64 [ %lsr.iv.next, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1841 ], [ poison, %while.cond.i.i.i.i1829 ] %2276 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1841 ], [ true, %while.cond.i.i.i.i1829 ] call void @llvm.amdgcn.end.cf.i64(i64 %2266) %2277 = call i64 @llvm.amdgcn.if.break.i64(i1 %2276, i64 %phi.broken3836) %2278 = call i1 @llvm.amdgcn.loop.i64(i64 %2277) br i1 %2278, label %cond.false.i.i.i1851, label %while.cond.i.i.i.i1829 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1840: ; preds = %Flow3352 fence acquire br i1 %cmp.i.i.i.i1832, label %if.then.i.i.i.i.i.i.i1845, label %Flow3350, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i1845: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1840 %sub.i.i.i.i.i.i.i1847 = sub nuw i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.35 to ptr), i64 10) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.35 to ptr) to i64)), %idx.0.i.i.i.i1831 %spec.select.i.i.i36.i.i.i.i1848 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i1847, i64 64) %2279 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %2280 = and i64 %spec.select.i.i.i36.i.i.i.i1848, 15 %2281 = sub i64 %spec.select.i.i.i36.i.i.i.i1848, %2280 %2282 = icmp ne i64 %2281, 0 br i1 %2282, label %loop-memcpy-expansion2411.preheader, label %Flow3349, !amdgpu.uniform !42 loop-memcpy-expansion2411.preheader: ; preds = %if.then.i.i.i.i.i.i.i1845 %arrayidx.i20.i35.i.i.i.i1849 = getelementptr %"struct.rpc::Buffer", ptr %2279, i64 %idxprom.i19.i.i.i.i.i1819 %arrayidx.i22.i38.i.i.i.i1850 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i1849, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion2411, !amdgpu.uniform !42 Flow3349: ; preds = %Flow3348, %if.then.i.i.i.i.i.i.i1845 br label %loop-memcpy-residual-header2414, !amdgpu.uniform !42 loop-memcpy-expansion2411: ; preds = %loop-memcpy-expansion2411.preheader, %loop-memcpy-expansion2411 %loop-index2412 = phi i64 [ %2285, %loop-memcpy-expansion2411 ], [ 0, %loop-memcpy-expansion2411.preheader ] %scevgep2855 = getelementptr i8, ptr addrspace(4) %lsr.iv2853, i64 %loop-index2412, !amdgpu.uniform !42 %2283 = load <4 x i32>, ptr addrspace(4) %scevgep2855, align 1 %2284 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i1850, i64 %loop-index2412 store <4 x i32> %2283, ptr %2284, align 1 %2285 = add i64 %loop-index2412, 16 %2286 = icmp uge i64 %2285, %2281 br i1 %2286, label %Flow3348, label %loop-memcpy-expansion2411, !amdgpu.uniform !42 Flow3347: ; preds = %Flow3346, %loop-memcpy-residual-header2414 br label %Flow3350, !amdgpu.uniform !42 loop-memcpy-residual2413: ; preds = %loop-memcpy-residual2413.preheader, %loop-memcpy-residual2413 %residual-loop-index2415 = phi i64 [ %2288, %loop-memcpy-residual2413 ], [ 0, %loop-memcpy-residual2413.preheader ] %scevgep2862 = getelementptr i8, ptr addrspace(4) %scevgep2861, i64 %residual-loop-index2415, !amdgpu.uniform !42 %2287 = load i8, ptr addrspace(4) %scevgep2862, align 1 %scevgep2860 = getelementptr i8, ptr %scevgep2859, i64 %residual-loop-index2415 store i8 %2287, ptr %scevgep2860, align 1 %2288 = add i64 %residual-loop-index2415, 1 %2289 = icmp uge i64 %2288, %2280 br i1 %2289, label %Flow3346, label %loop-memcpy-residual2413, !amdgpu.uniform !42 Flow3346: ; preds = %loop-memcpy-residual2413 br label %Flow3347, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1841: ; preds = %Flow3350 %conv.i.i26.i.i.i.i1842 = xor i32 %port.sroa.37.0.i.i1830, 1 fence release %2290 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i1843 = getelementptr inbounds nuw i32, ptr %2290, i64 %idxprom.i23.i.i.i.i.i1826 store atomic i32 %conv.i.i26.i.i.i.i1842, ptr %arrayidx.i24.i29.i.i.i.i1843 monotonic, align 4 %add.i.i.i.i1844 = add i64 %idx.0.i.i.i.i1831, 64 %scevgep2854 = getelementptr i8, ptr addrspace(4) %lsr.iv2853, i64 64 %lsr.iv.next = add i64 %lsr.iv2858, -64 br label %Flow3353, !amdgpu.uniform !42 cond.false.i.i.i1851: ; preds = %Flow3353 %.lcssa3876 = phi i64 [ %2277, %Flow3353 ] %port.sroa.37.0.i.i1830.lcssa = phi i32 [ %port.sroa.37.0.i.i1830, %Flow3353 ] %.lcssa3875 = phi i32 [ %2263, %Flow3353 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3876) %2291 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa3875) %2292 = icmp ne i32 %2291, %port.sroa.37.0.i.i1830.lcssa %2293 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2292) %2294 = extractvalue { i1, i64 } %2293, 0 %2295 = extractvalue { i1, i64 } %2293, 1 br i1 %2294, label %while.body.i.i.i.i1852.preheader, label %Flow3345 while.body.i.i.i.i1852.preheader: ; preds = %cond.false.i.i.i1851 br label %while.body.i.i.i.i1852, !amdgpu.uniform !42 Flow3345: ; preds = %Flow3344, %cond.false.i.i.i1851 call void @llvm.amdgcn.end.cf.i64(i64 %2295) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1873, !amdgpu.uniform !42 while.body.i.i.i.i1852: ; preds = %while.body.i.i.i.i1852.preheader, %while.body.i.i.i.i1852 %phi.broken3837 = phi i64 [ 0, %while.body.i.i.i.i1852.preheader ], [ %2299, %while.body.i.i.i.i1852 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %2296 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i1853 = getelementptr inbounds nuw i32, ptr %2296, i64 %idxprom.i23.i.i.i.i.i1826, !amdgpu.uniform !42 %2297 = load atomic i32, ptr %arrayidx.i.i.i8.i.i1853 monotonic, align 4 %2298 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2297) %cmp.i.not.i.i.i.i1854 = icmp eq i32 %2298, %port.sroa.37.0.i.i1830.lcssa %2299 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i1854, i64 %phi.broken3837) %2300 = call i1 @llvm.amdgcn.loop.i64(i64 %2299) br i1 %2300, label %Flow3344, label %while.body.i.i.i.i1852 Flow3344: ; preds = %while.body.i.i.i.i1852 %.lcssa3874 = phi i64 [ %2299, %while.body.i.i.i.i1852 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3874) br label %Flow3345, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1873: ; preds = %Flow3345 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %2301 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa3881, i1 true) %iszero.i.i.i.i.i13.i.i1856 = icmp ne i64 %.lcssa3881, 0 %cmp2.i.i.i.i14.i.i1857 = icmp eq i64 %2301, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i1858 = select i1 %iszero.i.i.i.i.i13.i.i1856, i1 %cmp2.i.i.i.i14.i.i1857, i1 false %2302 = and i32 %.lcssa3882, 31 %conv4.i.i.i19.i.i1862 = zext i1 %cmp.i.i.i.i15.i.i1858 to i32 %shl.i.i.i20.i.i1863 = shl nuw i32 %conv4.i.i.i19.i.i1862, %2302 %xor.i.i.i21.i.i1864 = xor i32 %shl.i.i.i20.i.i1863, -1 %2303 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2654, !amdgpu.uniform !42 2304: ; preds = %ComputeEnd2655 %div8.i.i.i16.i.i1859 = lshr i32 %.lcssa3882, 5 %idxprom.i.i.i17.i.i1860 = zext nneg i32 %div8.i.i.i16.i.i1859 to i64 %2305 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i1860 %sunkaddr3293 = getelementptr inbounds i8, ptr addrspace(1) %2305, i64 40 %2306 = atomicrmw and ptr addrspace(1) %sunkaddr3293, i32 %.lcssa3873 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2307, !amdgpu.uniform !42 2307: ; preds = %2304, %ComputeEnd2655 call void @llvm.amdgcn.end.cf.i64(i64 %3769) tail call void @llvm.amdgcn.wave.barrier() call void @llvm.lifetime.start.p5(ptr addrspace(5) %buffer.i.i.i) #34, !noalias !141 %2308 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %RHS) %2309 = extractvalue { i1, i64 } %2308, 0 %2310 = extractvalue { i1, i64 } %2308, 1 br i1 %2309, label %if.then3.i.i.i.i.i.i.i114.i, label %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i94.i if.then3.i.i.i.i.i.i.i114.i: ; preds = %2307 %arrayidx.i.i.i.i.i.i.i.i115.i = getelementptr inbounds nuw i8, ptr addrspace(5) %buffer.i.i.i, i32 10 store i8 49, ptr addrspace(5) %arrayidx.i.i.i.i.i.i.i.i115.i, align 2, !tbaa !57, !noalias !141 br label %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i94.i, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i94.i: ; preds = %if.then3.i.i.i.i.i.i.i114.i, %2307 %writer.sroa.10.2.i.i.i.i95.i = phi i64 [ 1, %if.then3.i.i.i.i.i.i.i114.i ], [ 0, %2307 ] call void @llvm.amdgcn.end.cf.i64(i64 %2310) %2311 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %RHS.inv) %2312 = extractvalue { i1, i64 } %2311, 0 %2313 = extractvalue { i1, i64 } %2311, 1 br i1 %2312, label %if.then3.i.i.lr.ph.i.i.i.i96.i, label %while.end.i.i.i.i.i98.i if.then3.i.i.lr.ph.i.i.i.i96.i: ; preds = %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i94.i %arrayidx.i.i.i.i.i.i.i97.i = getelementptr inbounds nuw i8, ptr addrspace(5) %buffer.i.i.i, i32 10 store i8 48, ptr addrspace(5) %arrayidx.i.i.i.i.i.i.i97.i, align 2, !tbaa !57, !noalias !141 br label %while.end.i.i.i.i.i98.i, !amdgpu.uniform !42 while.end.i.i.i.i.i98.i: ; preds = %if.then3.i.i.lr.ph.i.i.i.i96.i, %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i94.i %writer.sroa.10.4.i.i.i.i99.i = phi i64 [ 1, %if.then3.i.i.lr.ph.i.i.i.i96.i ], [ %writer.sroa.10.2.i.i.i.i95.i, %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i94.i ] call void @llvm.amdgcn.end.cf.i64(i64 %2313) %written.i.i.i.i100.i = getelementptr inbounds nuw i8, ptr addrspace(5) %buffer.i.i.i, i32 16 store i64 %writer.sroa.10.4.i.i.i.i99.i, ptr addrspace(5) %written.i.i.i.i100.i, align 8, !tbaa !91, !noalias !141 %cmp.i.not.i.i.i.i.i103.i = icmp ne i64 %writer.sroa.10.4.i.i.i.i99.i, 0 %2314 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.not.i.i.i.i.i103.i) %2315 = extractvalue { i1, i64 } %2314, 0 %2316 = extractvalue { i1, i64 } %2314, 1 br i1 %2315, label %if.end4.i.i.i.i.i.i.i104.i, label %if.end.i.i.i.i.i.i107.i if.end4.i.i.i.i.i.i.i104.i: ; preds = %while.end.i.i.i.i.i98.i %2317 = load ptr, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %add.ptr.i.i1874 = getelementptr inbounds nuw i8, ptr %2317, i64 8 store ptr %add.ptr.i.i1874, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %sub.ptr.lhs.cast.i.i1875 = ptrtoint ptr %add.ptr.i.i1874 to i64 %sub.ptr.sub.i.i1876 = sub i64 %sub.ptr.lhs.cast.i.i1875, ptrtoint (ptr addrspacecast (ptr addrspace(1) @_ZN12_GLOBAL__N_16memoryE to ptr) to i64) %cmp.i.i1877 = icmp ugt i64 %sub.ptr.sub.i.i1876, 65335 %cond.i.i1878 = select i1 %cmp.i.i1877, ptr null, ptr %2317 store i8 0, ptr %2317, align 1, !noalias !148 br label %if.end.i.i.i.i.i.i107.i, !amdgpu.uniform !42 if.end.i.i.i.i.i.i107.i: ; preds = %if.end4.i.i.i.i.i.i.i104.i, %while.end.i.i.i.i.i98.i %agg.tmp27.i.sroa.0.0 = phi ptr [ %cond.i.i1878, %if.end4.i.i.i.i.i.i.i104.i ], [ addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr), %while.end.i.i.i.i.i98.i ] call void @llvm.amdgcn.end.cf.i64(i64 %2316) %cmp.not.i6.i.i.i.i.i.i109.i = icmp ne ptr %agg.tmp27.i.sroa.0.0, addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr) %2318 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.not.i6.i.i.i.i.i.i109.i) %2319 = extractvalue { i1, i64 } %2318, 0 %2320 = extractvalue { i1, i64 } %2318, 1 br i1 %2319, label %if.then.i.i.i.i2.i.i.i110.i, label %_ZN22__llvm_libc_22_0_0_git7testing8internal13describeValueIbEENS_3cpp9enable_ifIXaasr3cppE13is_integral_vIT_ElestS5_Lm8EENS3_6stringEE4typeES5_.exit116.i if.then.i.i.i.i2.i.i.i110.i: ; preds = %if.end.i.i.i.i.i.i107.i %arrayidx.i.i.i.i3.i.i.i111.i = getelementptr inbounds nuw i8, ptr %agg.tmp27.i.sroa.0.0, i64 %writer.sroa.10.4.i.i.i.i99.i store i8 0, ptr %arrayidx.i.i.i.i3.i.i.i111.i, align 1, !tbaa !57, !noalias !141 br label %_ZN22__llvm_libc_22_0_0_git7testing8internal13describeValueIbEENS_3cpp9enable_ifIXaasr3cppE13is_integral_vIT_ElestS5_Lm8EENS3_6stringEE4typeES5_.exit116.i, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing8internal13describeValueIbEENS_3cpp9enable_ifIXaasr3cppE13is_integral_vIT_ElestS5_Lm8EENS3_6stringEE4typeES5_.exit116.i: ; preds = %if.then.i.i.i.i2.i.i.i110.i, %if.end.i.i.i.i.i.i107.i call void @llvm.amdgcn.end.cf.i64(i64 %2320) %2321 = trunc i64 %writer.sroa.10.4.i.i.i.i99.i to i32 %2322 = and i64 %writer.sroa.10.4.i.i.i.i99.i, 15 %2323 = sub i64 %writer.sroa.10.4.i.i.i.i99.i, %2322 %2324 = icmp ne i64 %2323, 0 %2325 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2324) %2326 = extractvalue { i1, i64 } %2325, 0 %2327 = extractvalue { i1, i64 } %2325, 1 br i1 %2326, label %loop-memcpy-expansion2297.preheader, label %Flow3343 loop-memcpy-expansion2297.preheader: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing8internal13describeValueIbEENS_3cpp9enable_ifIXaasr3cppE13is_integral_vIT_ElestS5_Lm8EENS3_6stringEE4typeES5_.exit116.i %2328 = sub i32 11, %2321 %scevgep2850 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i, i32 %2328 br label %loop-memcpy-expansion2297, !amdgpu.uniform !42 Flow3343: ; preds = %Flow3342, %_ZN22__llvm_libc_22_0_0_git7testing8internal13describeValueIbEENS_3cpp9enable_ifIXaasr3cppE13is_integral_vIT_ElestS5_Lm8EENS3_6stringEE4typeES5_.exit116.i call void @llvm.amdgcn.end.cf.i64(i64 %2327) br label %loop-memcpy-residual-header2300, !amdgpu.uniform !42 loop-memcpy-expansion2297: ; preds = %loop-memcpy-expansion2297.preheader, %loop-memcpy-expansion2297 %phi.broken3838 = phi i64 [ 0, %loop-memcpy-expansion2297.preheader ], [ %2333, %loop-memcpy-expansion2297 ] %lsr.iv2851 = phi ptr addrspace(5) [ %scevgep2852, %loop-memcpy-expansion2297 ], [ %scevgep2850, %loop-memcpy-expansion2297.preheader ] %loop-index2298 = phi i64 [ %2331, %loop-memcpy-expansion2297 ], [ 0, %loop-memcpy-expansion2297.preheader ] %2329 = load <4 x i32>, ptr addrspace(5) %lsr.iv2851, align 1 %2330 = getelementptr i8, ptr %agg.tmp27.i.sroa.0.0, i64 %loop-index2298 store <4 x i32> %2329, ptr %2330, align 1 %2331 = add i64 %loop-index2298, 16 %scevgep2852 = getelementptr i8, ptr addrspace(5) %lsr.iv2851, i32 16 %2332 = icmp uge i64 %2331, %2323 %2333 = call i64 @llvm.amdgcn.if.break.i64(i1 %2332, i64 %phi.broken3838) %2334 = call i1 @llvm.amdgcn.loop.i64(i64 %2333) br i1 %2334, label %Flow3342, label %loop-memcpy-expansion2297 Flow3341: ; preds = %Flow3340, %loop-memcpy-residual-header2300 call void @llvm.amdgcn.end.cf.i64(i64 %2661) br label %post-loop-memcpy-expansion2296, !amdgpu.uniform !42 loop-memcpy-residual2299: ; preds = %loop-memcpy-residual2299.preheader, %loop-memcpy-residual2299 %phi.broken3839 = phi i64 [ 0, %loop-memcpy-residual2299.preheader ], [ %2338, %loop-memcpy-residual2299 ] %lsr.iv = phi ptr addrspace(5) [ %scevgep2848, %loop-memcpy-residual2299 ], [ %scevgep2847, %loop-memcpy-residual2299.preheader ] %residual-loop-index2301 = phi i64 [ %2336, %loop-memcpy-residual2299 ], [ 0, %loop-memcpy-residual2299.preheader ] %2335 = load i8, ptr addrspace(5) %lsr.iv, align 1 %scevgep2849 = getelementptr i8, ptr %agg.tmp27.i.sroa.0.0, i64 %residual-loop-index2301 store i8 %2335, ptr %scevgep2849, align 1 %2336 = add i64 %residual-loop-index2301, 1 %scevgep2848 = getelementptr i8, ptr addrspace(5) %lsr.iv, i32 1 %2337 = icmp uge i64 %2336, %2322 %2338 = call i64 @llvm.amdgcn.if.break.i64(i1 %2337, i64 %phi.broken3839) %2339 = call i1 @llvm.amdgcn.loop.i64(i64 %2338) br i1 %2339, label %Flow3340, label %loop-memcpy-residual2299 Flow3340: ; preds = %loop-memcpy-residual2299 %.lcssa3871 = phi i64 [ %2338, %loop-memcpy-residual2299 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3871) br label %Flow3341, !amdgpu.uniform !42 post-loop-memcpy-expansion2296: ; preds = %Flow3341 call void @llvm.lifetime.end.p5(ptr addrspace(5) %buffer.i.i.i) #34, !noalias !141 br label %for.cond.i.i.i1880, !amdgpu.uniform !42 for.cond.i.i.i1880: ; preds = %post-loop-memcpy-expansion2296, %Flow3339 %2340 = phi i32 [ %2378, %Flow3339 ], [ poison, %post-loop-memcpy-expansion2296 ] %2341 = phi i64 [ %2379, %Flow3339 ], [ poison, %post-loop-memcpy-expansion2296 ] %2342 = phi i32 [ %2380, %Flow3339 ], [ poison, %post-loop-memcpy-expansion2296 ] %retval.sroa.6.0.i.i.i1881 = phi i32 [ %2383, %Flow3339 ], [ undef, %post-loop-memcpy-expansion2296 ] %retval.sroa.2.0.i.i.i1883 = phi i64 [ %2382, %Flow3339 ], [ undef, %post-loop-memcpy-expansion2296 ] %retval.sroa.8.0.i.i.i1884 = phi i32 [ %2381, %Flow3339 ], [ undef, %post-loop-memcpy-expansion2296 ] %index.0.i.i.i1885 = phi i32 [ %2385, %Flow3339 ], [ 0, %post-loop-memcpy-expansion2296 ] %2343 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i1886 = icmp ult i32 %index.0.i.i.i1885, %2343 %spec.store.select.i.i.i1887 = select i1 %cmp.not.i.i.i1886, i32 %index.0.i.i.i1885, i32 0 %2344 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %2345 = and i32 %spec.store.select.i.i.i1887, 31 %2346 = lshr i64 %2344, %sh_prom.i.i.i.i %2347 = trunc i64 %2346 to i32 %conv4.i.i.i.i.i1891 = and i32 %2347, 1 %shl.i.i.i.i.i1892 = shl nuw i32 %conv4.i.i.i.i.i1891, %2345 %2348 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2658, !amdgpu.uniform !42 2349: ; preds = %ComputeEnd2659 %sunkaddr3294 = getelementptr inbounds i8, ptr addrspace(1) %3779, i64 40 %2350 = atomicrmw or ptr addrspace(1) %sunkaddr3294, i32 %.lcssa3865 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2351, !amdgpu.uniform !42 2351: ; preds = %2349, %ComputeEnd2659 %2352 = phi i32 [ %2350, %2349 ], [ poison, %ComputeEnd2659 ] call void @llvm.amdgcn.end.cf.i64(i64 %3788) %2353 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %2352) %2354 = or i32 %2353, %.lcssa3866 %shl5.i.i.i.i.i1893 = shl nuw i32 1, %2345 %and.i.i.i.i.i1894 = and i32 %shl5.i.i.i.i.i1893, %2354 %tobool3.i.i.i.i1895 = icmp ne i32 %and.i.i.i.i.i1894, 0 %2355 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i1895) %and.i.i.i.i.i.i1896 = and i64 %2355, %2344 %cmp.i.not.i.i.i1897 = icmp ne i64 %2344, %and.i.i.i.i.i.i1896 br i1 %cmp.i.not.i.i.i1897, label %if.then.i.i.i.i1898, label %Flow3338, !amdgpu.uniform !42 if.then.i.i.i.i1898: ; preds = %2351 fence syncscope("agent") acquire %2356 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %2357 = extractelement <2 x i64> %2356, i32 0 %2358 = inttoptr i64 %2357 to ptr %2359 = extractelement <2 x i64> %2356, i32 1 %2360 = inttoptr i64 %2359 to ptr %idxprom.i.i.i.i1899 = zext i32 %spec.store.select.i.i.i1887 to i64 %arrayidx.i.i.i.i1900 = getelementptr inbounds nuw i32, ptr %2358, i64 %idxprom.i.i.i.i1899, !amdgpu.uniform !42 %2361 = load atomic i32, ptr %arrayidx.i.i.i.i1900 monotonic, align 4 %2362 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2361) %arrayidx.i45.i.i.i1901 = getelementptr inbounds nuw i32, ptr %2360, i64 %idxprom.i.i.i.i1899, !amdgpu.uniform !42 %2363 = load atomic i32, ptr %arrayidx.i45.i.i.i1901 monotonic, align 4 %2364 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2363) %cmp.i46.not.i.i.i1902 = icmp ne i32 %2362, %2364 br i1 %cmp.i46.not.i.i.i1902, label %if.then12.i.i.i1903, label %Flow3336, !amdgpu.uniform !42 if.then12.i.i.i1903: ; preds = %if.then.i.i.i.i1898 fence syncscope("agent") release %2365 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %2344, i1 true) %iszero.i.i.i.i.i.i.i1904 = icmp ne i64 %2344, 0 %cmp2.i.i.i.i.i.i1905 = icmp eq i64 %2365, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i1906 = select i1 %iszero.i.i.i.i.i.i.i1904, i1 %cmp2.i.i.i.i.i.i1905, i1 false %conv4.i.i51.i.i.i1907 = zext i1 %cmp.i.i.i.i.i.i1906 to i32 %shl.i.i52.i.i.i1908 = shl nuw i32 %conv4.i.i51.i.i.i1907, %2345 %xor.i.i.i.i.i1909 = xor i32 %shl.i.i52.i.i.i1908, -1 %2366 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2663, !amdgpu.uniform !42 2367: ; preds = %ComputeEnd2664 %sunkaddr3295 = getelementptr inbounds i8, ptr addrspace(1) %3779, i64 40 %2368 = atomicrmw and ptr addrspace(1) %sunkaddr3295, i32 %.lcssa3867 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2369, !amdgpu.uniform !42 2369: ; preds = %2367, %ComputeEnd2664 call void @llvm.amdgcn.end.cf.i64(i64 %3806) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3336, !amdgpu.uniform !42 if.end14.i.i.i1969: ; preds = %Flow3336 %2370 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %2344, i1 true) %iszero.i.i.i.i.i.i1970 = icmp ne i64 %2344, 0 %cmp2.i.i.i.i.i1971 = icmp eq i64 %2370, %sh_prom.i.i.i.i %cmp.i.i.i.i.i1972 = select i1 %iszero.i.i.i.i.i.i1970, i1 %cmp2.i.i.i.i.i1971, i1 false %2371 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i1972) %2372 = extractvalue { i1, i64 } %2371, 0 %2373 = extractvalue { i1, i64 } %2371, 1 br i1 %2372, label %if.then16.i.i.i1974, label %if.end22.i.i.i1973 if.then16.i.i.i1974: ; preds = %if.end14.i.i.i1969 %2374 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i1975 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2374, i64 %idxprom.i.i.i.i1899, i32 1 store i32 1660944387, ptr %opcode.i.i.i1975, align 8, !tbaa !77 %arrayidx21.i.i.i1976 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2374, i64 %idxprom.i.i.i.i1899 store i64 %2344, ptr %arrayidx21.i.i.i1976, align 8, !tbaa !80 br label %if.end22.i.i.i1973, !amdgpu.uniform !42 Flow3337: ; preds = %if.end22.i.i.i1973, %Flow3336 %2375 = phi i32 [ %2362, %if.end22.i.i.i1973 ], [ %retval.sroa.8.0.i.i.i1884, %Flow3336 ] %2376 = phi i64 [ %2344, %if.end22.i.i.i1973 ], [ %retval.sroa.2.0.i.i.i1883, %Flow3336 ] %2377 = phi i32 [ %spec.store.select.i.i.i1887, %if.end22.i.i.i1973 ], [ %retval.sroa.6.0.i.i.i1881, %Flow3336 ] br label %cleanup26.i.i.i1910, !amdgpu.uniform !42 if.end22.i.i.i1973: ; preds = %if.then16.i.i.i1974, %if.end14.i.i.i1969 call void @llvm.amdgcn.end.cf.i64(i64 %2373) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3337, !amdgpu.uniform !42 Flow3338: ; preds = %cleanup26.i.i.i1910, %2351 %2378 = phi i32 [ %2377, %cleanup26.i.i.i1910 ], [ %2340, %2351 ] %2379 = phi i64 [ %2376, %cleanup26.i.i.i1910 ], [ %2341, %2351 ] %2380 = phi i32 [ %2375, %cleanup26.i.i.i1910 ], [ %2342, %2351 ] %2381 = phi i32 [ %2375, %cleanup26.i.i.i1910 ], [ %retval.sroa.8.0.i.i.i1884, %2351 ] %2382 = phi i64 [ %2376, %cleanup26.i.i.i1910 ], [ %retval.sroa.2.0.i.i.i1883, %2351 ] %2383 = phi i32 [ %2377, %cleanup26.i.i.i1910 ], [ %retval.sroa.6.0.i.i.i1881, %2351 ] %2384 = phi i1 [ %cmp.i46.not.i.i.i1902, %cleanup26.i.i.i1910 ], [ true, %2351 ] br i1 %2384, label %for.inc.i.i.i1915, label %Flow3339, !amdgpu.uniform !42 cleanup26.i.i.i1910: ; preds = %Flow3337 br label %Flow3338, !amdgpu.uniform !42 for.inc.i.i.i1915: ; preds = %Flow3338 %inc.i.i.i1920 = add i32 %spec.store.select.i.i.i1887, 1 br label %Flow3339, !amdgpu.uniform !42 Flow3339: ; preds = %for.inc.i.i.i1915, %Flow3338 %2385 = phi i32 [ %inc.i.i.i1920, %for.inc.i.i.i1915 ], [ poison, %Flow3338 ] %2386 = phi i1 [ false, %for.inc.i.i.i1915 ], [ true, %Flow3338 ] br i1 %2386, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1921, label %for.cond.i.i.i1880, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1921: ; preds = %Flow3339 %.lcssa3870 = phi i32 [ %2378, %Flow3339 ] %.lcssa3869 = phi i64 [ %2379, %Flow3339 ] %.lcssa3868 = phi i32 [ %2380, %Flow3339 ] fence acquire %2387 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i1922 = shl i32 %.lcssa3870, 6 %idxprom.i19.i.i.i.i.i1923 = zext i32 %mul.i.i.i.i.i.i1922 to i64 %arrayidx.i20.i.i.i.i.i1924 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %2387, i64 %idxprom.i19.i.i.i.i.i1923 %arrayidx.i22.i.i.i.i.i1925 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i1924, i64 %sh_prom.i.i.i.i store i64 %writer.sroa.10.4.i.i.i.i99.i, ptr %arrayidx.i22.i.i.i.i.i1925, align 8, !tbaa !82 %2388 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2324) %2389 = extractvalue { i1, i64 } %2388, 0 %2390 = extractvalue { i1, i64 } %2388, 1 br i1 %2389, label %loop-memcpy-expansion2183.preheader, label %Flow3335 loop-memcpy-expansion2183.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1921 %2391 = add nuw nsw i64 %76, 8 %scevgep2844 = getelementptr i8, ptr %2387, i64 %2391 %2392 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1923, 6 %scevgep2845 = getelementptr i8, ptr %scevgep2844, i64 %2392 br label %loop-memcpy-expansion2183, !amdgpu.uniform !42 Flow3335: ; preds = %Flow3334, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1921 call void @llvm.amdgcn.end.cf.i64(i64 %2390) br label %loop-memcpy-residual-header2186, !amdgpu.uniform !42 loop-memcpy-expansion2183: ; preds = %loop-memcpy-expansion2183.preheader, %loop-memcpy-expansion2183 %phi.broken3840 = phi i64 [ 0, %loop-memcpy-expansion2183.preheader ], [ %2397, %loop-memcpy-expansion2183 ] %loop-index2184 = phi i64 [ %2395, %loop-memcpy-expansion2183 ], [ 0, %loop-memcpy-expansion2183.preheader ] %2393 = getelementptr i8, ptr %agg.tmp27.i.sroa.0.0, i64 %loop-index2184 %2394 = load <4 x i32>, ptr %2393, align 1 %scevgep2846 = getelementptr i8, ptr %scevgep2845, i64 %loop-index2184 store <4 x i32> %2394, ptr %scevgep2846, align 1 %2395 = add i64 %loop-index2184, 16 %2396 = icmp uge i64 %2395, %2323 %2397 = call i64 @llvm.amdgcn.if.break.i64(i1 %2396, i64 %phi.broken3840) %2398 = call i1 @llvm.amdgcn.loop.i64(i64 %2397) br i1 %2398, label %Flow3334, label %loop-memcpy-expansion2183 Flow3333: ; preds = %Flow3332, %loop-memcpy-residual-header2186 call void @llvm.amdgcn.end.cf.i64(i64 %2552) br label %post-loop-memcpy-expansion2182, !amdgpu.uniform !42 loop-memcpy-residual2185: ; preds = %loop-memcpy-residual2185.preheader, %loop-memcpy-residual2185 %phi.broken3841 = phi i64 [ 0, %loop-memcpy-residual2185.preheader ], [ %2402, %loop-memcpy-residual2185 ] %residual-loop-index2187 = phi i64 [ %2400, %loop-memcpy-residual2185 ], [ 0, %loop-memcpy-residual2185.preheader ] %scevgep2843 = getelementptr i8, ptr %agg.tmp27.i.sroa.0.0, i64 %residual-loop-index2187 %2399 = load i8, ptr %scevgep2843, align 1 %scevgep2842 = getelementptr i8, ptr %scevgep2841, i64 %residual-loop-index2187 store i8 %2399, ptr %scevgep2842, align 1 %2400 = add i64 %residual-loop-index2187, 1 %2401 = icmp uge i64 %2400, %2322 %2402 = call i64 @llvm.amdgcn.if.break.i64(i1 %2401, i64 %phi.broken3841) %2403 = call i1 @llvm.amdgcn.loop.i64(i64 %2402) br i1 %2403, label %Flow3332, label %loop-memcpy-residual2185 Flow3332: ; preds = %loop-memcpy-residual2185 %.lcssa3863 = phi i64 [ %2402, %loop-memcpy-residual2185 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3863) br label %Flow3333, !amdgpu.uniform !42 post-loop-memcpy-expansion2182: ; preds = %Flow3333 %tobool.not.i.i.i.i.i.i1928 = icmp eq i32 %.lcssa3868, 0 %conv.i.i.i.i.i.i1929 = zext i1 %tobool.not.i.i.i.i.i.i1928 to i32 fence release %2404 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i1930 = zext i32 %.lcssa3870 to i64 %arrayidx.i24.i.i.i.i.i1931 = getelementptr inbounds nuw i32, ptr %2404, i64 %idxprom.i23.i.i.i.i.i1930 store atomic i32 %conv.i.i.i.i.i.i1929, ptr %arrayidx.i24.i.i.i.i.i1931 monotonic, align 4 %2405 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i1932 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2405, i64 %idxprom.i23.i.i.i.i.i1930, !amdgpu.uniform !42 %2406 = load i64, ptr %arrayidx.i.i5.i.i1932, align 8, !tbaa !80 br label %while.cond.i.i.i.i1933, !amdgpu.uniform !42 while.cond.i.i.i.i1933: ; preds = %post-loop-memcpy-expansion2182, %Flow3331 %phi.broken3844 = phi i64 [ 0, %post-loop-memcpy-expansion2182 ], [ %2421, %Flow3331 ] %port.sroa.37.0.i.i1934 = phi i32 [ %2419, %Flow3331 ], [ %conv.i.i.i.i.i.i1929, %post-loop-memcpy-expansion2182 ] %idx.0.i.i.i.i1935 = phi i64 [ %2418, %Flow3331 ], [ 56, %post-loop-memcpy-expansion2182 ] %cmp.i.i.i.i1936 = icmp ult i64 %idx.0.i.i.i.i1935, %writer.sroa.10.4.i.i.i.i99.i %2407 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i1936) %and.i.i.i.i6.i.i1937 = and i64 %2407, %2406 %tobool.not.i.i.i.i1938 = icmp ne i64 %and.i.i.i.i6.i.i1937, 0 %2408 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i1939 = getelementptr inbounds nuw i32, ptr %2408, i64 %idxprom.i23.i.i.i.i.i1930, !amdgpu.uniform !42 %2409 = load atomic i32, ptr %arrayidx.i22.i.i.i1939 monotonic, align 4 %2410 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i1938) %2411 = extractvalue { i1, i64 } %2410, 0 %2412 = extractvalue { i1, i64 } %2410, 1 br i1 %2411, label %cond.false.i8.i.i.i.i1940, label %Flow3331 cond.false.i8.i.i.i.i1940: ; preds = %while.cond.i.i.i.i1933 %2413 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2409) %2414 = icmp ne i32 %2413, %port.sroa.37.0.i.i1934 br i1 %2414, label %while.body.i.i21.i.i.i.i1941.preheader, label %Flow3330, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1941.preheader: ; preds = %cond.false.i8.i.i.i.i1940 br label %while.body.i.i21.i.i.i.i1941, !amdgpu.uniform !42 Flow3330: ; preds = %Flow3329, %cond.false.i8.i.i.i.i1940 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1944, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1941: ; preds = %while.body.i.i21.i.i.i.i1941.preheader, %while.body.i.i21.i.i.i.i1941 tail call void @llvm.amdgcn.s.sleep(i32 2) %2415 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i1942 = getelementptr inbounds nuw i32, ptr %2415, i64 %idxprom.i23.i.i.i.i.i1930, !amdgpu.uniform !42 %2416 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i1942 monotonic, align 4 %2417 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2416) %cmp.i.not.i.i23.i.i.i.i1943 = icmp eq i32 %2417, %port.sroa.37.0.i.i1934 br i1 %cmp.i.not.i.i23.i.i.i.i1943, label %Flow3329, label %while.body.i.i21.i.i.i.i1941, !amdgpu.uniform !42 Flow3329: ; preds = %while.body.i.i21.i.i.i.i1941 br label %Flow3330, !amdgpu.uniform !42 Flow3331: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1945, %while.cond.i.i.i.i1933 %2418 = phi i64 [ %add.i.i.i.i1948, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1945 ], [ poison, %while.cond.i.i.i.i1933 ] %2419 = phi i32 [ %conv.i.i26.i.i.i.i1946, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1945 ], [ poison, %while.cond.i.i.i.i1933 ] %2420 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1945 ], [ true, %while.cond.i.i.i.i1933 ] call void @llvm.amdgcn.end.cf.i64(i64 %2412) %2421 = call i64 @llvm.amdgcn.if.break.i64(i1 %2420, i64 %phi.broken3844) %2422 = call i1 @llvm.amdgcn.loop.i64(i64 %2421) br i1 %2422, label %cond.false.i.i.i1955, label %while.cond.i.i.i.i1933 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1944: ; preds = %Flow3330 fence acquire %2423 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i1936) %2424 = extractvalue { i1, i64 } %2423, 0 %2425 = extractvalue { i1, i64 } %2423, 1 br i1 %2424, label %if.then.i.i.i.i.i.i.i1949, label %Flow3328 if.then.i.i.i.i.i.i.i1949: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1944 %2426 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %arrayidx.i20.i35.i.i.i.i1953 = getelementptr %"struct.rpc::Buffer", ptr %2426, i64 %idxprom.i19.i.i.i.i.i1923 %arrayidx.i22.i38.i.i.i.i1954 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i1953, i64 %sh_prom.i.i.i.i %2427 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2324) %2428 = extractvalue { i1, i64 } %2427, 0 %2429 = extractvalue { i1, i64 } %2427, 1 br i1 %2428, label %loop-memcpy-expansion.preheader, label %Flow3327 loop-memcpy-expansion.preheader: ; preds = %if.then.i.i.i.i.i.i.i1949 br label %loop-memcpy-expansion, !amdgpu.uniform !42 Flow3327: ; preds = %Flow3326, %if.then.i.i.i.i.i.i.i1949 call void @llvm.amdgcn.end.cf.i64(i64 %2429) br label %loop-memcpy-residual-header, !amdgpu.uniform !42 loop-memcpy-expansion: ; preds = %loop-memcpy-expansion.preheader, %loop-memcpy-expansion %phi.broken3842 = phi i64 [ 0, %loop-memcpy-expansion.preheader ], [ %2435, %loop-memcpy-expansion ] %loop-index = phi i64 [ %2433, %loop-memcpy-expansion ], [ 0, %loop-memcpy-expansion.preheader ] %2430 = getelementptr i8, ptr %agg.tmp27.i.sroa.0.0, i64 %loop-index %2431 = load <4 x i32>, ptr %2430, align 1 %2432 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i1954, i64 %loop-index store <4 x i32> %2431, ptr %2432, align 1 %2433 = add i64 %loop-index, 16 %2434 = icmp uge i64 %2433, %2323 %2435 = call i64 @llvm.amdgcn.if.break.i64(i1 %2434, i64 %phi.broken3842) %2436 = call i1 @llvm.amdgcn.loop.i64(i64 %2435) br i1 %2436, label %Flow3326, label %loop-memcpy-expansion Flow3325: ; preds = %Flow3324, %loop-memcpy-residual-header call void @llvm.amdgcn.end.cf.i64(i64 %2549) br label %Flow3328, !amdgpu.uniform !42 loop-memcpy-residual: ; preds = %loop-memcpy-residual.preheader, %loop-memcpy-residual %phi.broken3843 = phi i64 [ 0, %loop-memcpy-residual.preheader ], [ %2441, %loop-memcpy-residual ] %residual-loop-index = phi i64 [ %2439, %loop-memcpy-residual ], [ 0, %loop-memcpy-residual.preheader ] %scevgep = getelementptr i8, ptr %agg.tmp27.i.sroa.0.0, i64 %residual-loop-index %2437 = load i8, ptr %scevgep, align 1 %2438 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i1954, i64 %residual-loop-index store i8 %2437, ptr %2438, align 1 %2439 = add i64 %residual-loop-index, 1 %2440 = icmp uge i64 %2439, %2322 %2441 = call i64 @llvm.amdgcn.if.break.i64(i1 %2440, i64 %phi.broken3843) %2442 = call i1 @llvm.amdgcn.loop.i64(i64 %2441) br i1 %2442, label %Flow3324, label %loop-memcpy-residual Flow3324: ; preds = %loop-memcpy-residual %.lcssa3860 = phi i64 [ %2441, %loop-memcpy-residual ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3860) br label %Flow3325, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1945: ; preds = %Flow3328 %conv.i.i26.i.i.i.i1946 = xor i32 %port.sroa.37.0.i.i1934, 1 fence release %2443 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i1947 = getelementptr inbounds nuw i32, ptr %2443, i64 %idxprom.i23.i.i.i.i.i1930 store atomic i32 %conv.i.i26.i.i.i.i1946, ptr %arrayidx.i24.i29.i.i.i.i1947 monotonic, align 4 %add.i.i.i.i1948 = add i64 %idx.0.i.i.i.i1935, 64 br label %Flow3331, !amdgpu.uniform !42 cond.false.i.i.i1955: ; preds = %Flow3331 %.lcssa3862 = phi i64 [ %2421, %Flow3331 ] %port.sroa.37.0.i.i1934.lcssa = phi i32 [ %port.sroa.37.0.i.i1934, %Flow3331 ] %.lcssa3861 = phi i32 [ %2409, %Flow3331 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3862) %2444 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa3861) %2445 = icmp ne i32 %2444, %port.sroa.37.0.i.i1934.lcssa %2446 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2445) %2447 = extractvalue { i1, i64 } %2446, 0 %2448 = extractvalue { i1, i64 } %2446, 1 br i1 %2447, label %while.body.i.i.i.i1956.preheader, label %Flow3323 while.body.i.i.i.i1956.preheader: ; preds = %cond.false.i.i.i1955 br label %while.body.i.i.i.i1956, !amdgpu.uniform !42 Flow3323: ; preds = %Flow3322, %cond.false.i.i.i1955 call void @llvm.amdgcn.end.cf.i64(i64 %2448) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit1977, !amdgpu.uniform !42 while.body.i.i.i.i1956: ; preds = %while.body.i.i.i.i1956.preheader, %while.body.i.i.i.i1956 %phi.broken3845 = phi i64 [ 0, %while.body.i.i.i.i1956.preheader ], [ %2452, %while.body.i.i.i.i1956 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %2449 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i1957 = getelementptr inbounds nuw i32, ptr %2449, i64 %idxprom.i23.i.i.i.i.i1930, !amdgpu.uniform !42 %2450 = load atomic i32, ptr %arrayidx.i.i.i8.i.i1957 monotonic, align 4 %2451 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2450) %cmp.i.not.i.i.i.i1958 = icmp eq i32 %2451, %port.sroa.37.0.i.i1934.lcssa %2452 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i1958, i64 %phi.broken3845) %2453 = call i1 @llvm.amdgcn.loop.i64(i64 %2452) br i1 %2453, label %Flow3322, label %while.body.i.i.i.i1956 Flow3322: ; preds = %while.body.i.i.i.i1956 %.lcssa3858 = phi i64 [ %2452, %while.body.i.i.i.i1956 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3858) br label %Flow3323, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit1977: ; preds = %Flow3323 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %2454 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa3869, i1 true) %iszero.i.i.i.i.i13.i.i1960 = icmp ne i64 %.lcssa3869, 0 %cmp2.i.i.i.i14.i.i1961 = icmp eq i64 %2454, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i1962 = select i1 %iszero.i.i.i.i.i13.i.i1960, i1 %cmp2.i.i.i.i14.i.i1961, i1 false %2455 = and i32 %.lcssa3870, 31 %conv4.i.i.i19.i.i1966 = zext i1 %cmp.i.i.i.i15.i.i1962 to i32 %shl.i.i.i20.i.i1967 = shl nuw i32 %conv4.i.i.i19.i.i1966, %2455 %xor.i.i.i21.i.i1968 = xor i32 %shl.i.i.i20.i.i1967, -1 %2456 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2667, !amdgpu.uniform !42 2457: ; preds = %ComputeEnd2668 %div8.i.i.i16.i.i1963 = lshr i32 %.lcssa3870, 5 %idxprom.i.i.i17.i.i1964 = zext nneg i32 %div8.i.i.i16.i.i1963 to i64 %2458 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i1964 %sunkaddr3296 = getelementptr inbounds i8, ptr addrspace(1) %2458, i64 40 %2459 = atomicrmw and ptr addrspace(1) %sunkaddr3296, i32 %.lcssa3857 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2460, !amdgpu.uniform !42 2460: ; preds = %2457, %ComputeEnd2668 call void @llvm.amdgcn.end.cf.i64(i64 %3823) tail call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i.i1981, !amdgpu.uniform !42 for.cond.i.i.i1981: ; preds = %2460, %Flow3321 %2461 = phi i32 [ %2499, %Flow3321 ], [ poison, %2460 ] %2462 = phi i64 [ %2500, %Flow3321 ], [ poison, %2460 ] %2463 = phi i32 [ %2501, %Flow3321 ], [ poison, %2460 ] %retval.sroa.6.0.i.i.i1982 = phi i32 [ %2504, %Flow3321 ], [ undef, %2460 ] %retval.sroa.2.0.i.i.i1984 = phi i64 [ %2503, %Flow3321 ], [ undef, %2460 ] %retval.sroa.8.0.i.i.i1985 = phi i32 [ %2502, %Flow3321 ], [ undef, %2460 ] %index.0.i.i.i1986 = phi i32 [ %2506, %Flow3321 ], [ 0, %2460 ] %2464 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i1987 = icmp ult i32 %index.0.i.i.i1986, %2464 %spec.store.select.i.i.i1988 = select i1 %cmp.not.i.i.i1987, i32 %index.0.i.i.i1986, i32 0 %2465 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %2466 = and i32 %spec.store.select.i.i.i1988, 31 %2467 = lshr i64 %2465, %sh_prom.i.i.i.i %2468 = trunc i64 %2467 to i32 %conv4.i.i.i.i.i1992 = and i32 %2468, 1 %shl.i.i.i.i.i1993 = shl nuw i32 %conv4.i.i.i.i.i1992, %2466 %2469 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2671, !amdgpu.uniform !42 2470: ; preds = %ComputeEnd2672 %sunkaddr3297 = getelementptr inbounds i8, ptr addrspace(1) %3833, i64 40 %2471 = atomicrmw or ptr addrspace(1) %sunkaddr3297, i32 %.lcssa3851 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2472, !amdgpu.uniform !42 2472: ; preds = %2470, %ComputeEnd2672 %2473 = phi i32 [ %2471, %2470 ], [ poison, %ComputeEnd2672 ] call void @llvm.amdgcn.end.cf.i64(i64 %3842) %2474 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %2473) %2475 = or i32 %2474, %.lcssa3852 %shl5.i.i.i.i.i1994 = shl nuw i32 1, %2466 %and.i.i.i.i.i1995 = and i32 %shl5.i.i.i.i.i1994, %2475 %tobool3.i.i.i.i1996 = icmp ne i32 %and.i.i.i.i.i1995, 0 %2476 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i1996) %and.i.i.i.i.i.i1997 = and i64 %2476, %2465 %cmp.i.not.i.i.i1998 = icmp ne i64 %2465, %and.i.i.i.i.i.i1997 br i1 %cmp.i.not.i.i.i1998, label %if.then.i.i.i.i1999, label %Flow3320, !amdgpu.uniform !42 if.then.i.i.i.i1999: ; preds = %2472 fence syncscope("agent") acquire %2477 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %2478 = extractelement <2 x i64> %2477, i32 0 %2479 = inttoptr i64 %2478 to ptr %2480 = extractelement <2 x i64> %2477, i32 1 %2481 = inttoptr i64 %2480 to ptr %idxprom.i.i.i.i2000 = zext i32 %spec.store.select.i.i.i1988 to i64 %arrayidx.i.i.i.i2001 = getelementptr inbounds nuw i32, ptr %2479, i64 %idxprom.i.i.i.i2000, !amdgpu.uniform !42 %2482 = load atomic i32, ptr %arrayidx.i.i.i.i2001 monotonic, align 4 %2483 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2482) %arrayidx.i45.i.i.i2002 = getelementptr inbounds nuw i32, ptr %2481, i64 %idxprom.i.i.i.i2000, !amdgpu.uniform !42 %2484 = load atomic i32, ptr %arrayidx.i45.i.i.i2002 monotonic, align 4 %2485 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2484) %cmp.i46.not.i.i.i2003 = icmp ne i32 %2483, %2485 br i1 %cmp.i46.not.i.i.i2003, label %if.then12.i.i.i2004, label %Flow3318, !amdgpu.uniform !42 if.then12.i.i.i2004: ; preds = %if.then.i.i.i.i1999 fence syncscope("agent") release %2486 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %2465, i1 true) %iszero.i.i.i.i.i.i.i2005 = icmp ne i64 %2465, 0 %cmp2.i.i.i.i.i.i2006 = icmp eq i64 %2486, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i2007 = select i1 %iszero.i.i.i.i.i.i.i2005, i1 %cmp2.i.i.i.i.i.i2006, i1 false %conv4.i.i51.i.i.i2008 = zext i1 %cmp.i.i.i.i.i.i2007 to i32 %shl.i.i52.i.i.i2009 = shl nuw i32 %conv4.i.i51.i.i.i2008, %2466 %xor.i.i.i.i.i2010 = xor i32 %shl.i.i52.i.i.i2009, -1 %2487 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2676, !amdgpu.uniform !42 2488: ; preds = %ComputeEnd2677 %sunkaddr3298 = getelementptr inbounds i8, ptr addrspace(1) %3833, i64 40 %2489 = atomicrmw and ptr addrspace(1) %sunkaddr3298, i32 %.lcssa3853 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2490, !amdgpu.uniform !42 2490: ; preds = %2488, %ComputeEnd2677 call void @llvm.amdgcn.end.cf.i64(i64 %3860) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3318, !amdgpu.uniform !42 if.end14.i.i.i2068: ; preds = %Flow3318 %2491 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %2465, i1 true) %iszero.i.i.i.i.i.i2069 = icmp ne i64 %2465, 0 %cmp2.i.i.i.i.i2070 = icmp eq i64 %2491, %sh_prom.i.i.i.i %cmp.i.i.i.i.i2071 = select i1 %iszero.i.i.i.i.i.i2069, i1 %cmp2.i.i.i.i.i2070, i1 false %2492 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i2071) %2493 = extractvalue { i1, i64 } %2492, 0 %2494 = extractvalue { i1, i64 } %2492, 1 br i1 %2493, label %if.then16.i.i.i2073, label %if.end22.i.i.i2072 if.then16.i.i.i2073: ; preds = %if.end14.i.i.i2068 %2495 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i2074 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2495, i64 %idxprom.i.i.i.i2000, i32 1 store i32 1660944387, ptr %opcode.i.i.i2074, align 8, !tbaa !77 %arrayidx21.i.i.i2075 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2495, i64 %idxprom.i.i.i.i2000 store i64 %2465, ptr %arrayidx21.i.i.i2075, align 8, !tbaa !80 br label %if.end22.i.i.i2072, !amdgpu.uniform !42 Flow3319: ; preds = %if.end22.i.i.i2072, %Flow3318 %2496 = phi i32 [ %2483, %if.end22.i.i.i2072 ], [ %retval.sroa.8.0.i.i.i1985, %Flow3318 ] %2497 = phi i64 [ %2465, %if.end22.i.i.i2072 ], [ %retval.sroa.2.0.i.i.i1984, %Flow3318 ] %2498 = phi i32 [ %spec.store.select.i.i.i1988, %if.end22.i.i.i2072 ], [ %retval.sroa.6.0.i.i.i1982, %Flow3318 ] br label %cleanup26.i.i.i2011, !amdgpu.uniform !42 if.end22.i.i.i2072: ; preds = %if.then16.i.i.i2073, %if.end14.i.i.i2068 call void @llvm.amdgcn.end.cf.i64(i64 %2494) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3319, !amdgpu.uniform !42 Flow3320: ; preds = %cleanup26.i.i.i2011, %2472 %2499 = phi i32 [ %2498, %cleanup26.i.i.i2011 ], [ %2461, %2472 ] %2500 = phi i64 [ %2497, %cleanup26.i.i.i2011 ], [ %2462, %2472 ] %2501 = phi i32 [ %2496, %cleanup26.i.i.i2011 ], [ %2463, %2472 ] %2502 = phi i32 [ %2496, %cleanup26.i.i.i2011 ], [ %retval.sroa.8.0.i.i.i1985, %2472 ] %2503 = phi i64 [ %2497, %cleanup26.i.i.i2011 ], [ %retval.sroa.2.0.i.i.i1984, %2472 ] %2504 = phi i32 [ %2498, %cleanup26.i.i.i2011 ], [ %retval.sroa.6.0.i.i.i1982, %2472 ] %2505 = phi i1 [ %cmp.i46.not.i.i.i2003, %cleanup26.i.i.i2011 ], [ true, %2472 ] br i1 %2505, label %for.inc.i.i.i2016, label %Flow3321, !amdgpu.uniform !42 cleanup26.i.i.i2011: ; preds = %Flow3319 br label %Flow3320, !amdgpu.uniform !42 for.inc.i.i.i2016: ; preds = %Flow3320 %inc.i.i.i2021 = add i32 %spec.store.select.i.i.i1988, 1 br label %Flow3321, !amdgpu.uniform !42 Flow3321: ; preds = %for.inc.i.i.i2016, %Flow3320 %2506 = phi i32 [ %inc.i.i.i2021, %for.inc.i.i.i2016 ], [ poison, %Flow3320 ] %2507 = phi i1 [ false, %for.inc.i.i.i2016 ], [ true, %Flow3320 ] br i1 %2507, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2022, label %for.cond.i.i.i1981, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2022: ; preds = %Flow3321 %.lcssa3856 = phi i32 [ %2499, %Flow3321 ] %.lcssa3855 = phi i64 [ %2500, %Flow3321 ] %.lcssa3854 = phi i32 [ %2501, %Flow3321 ] fence acquire %2508 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i2023 = shl i32 %.lcssa3856, 6 %idxprom.i19.i.i.i.i.i2024 = zext i32 %mul.i.i.i.i.i.i2023 to i64 %arrayidx.i20.i.i.i.i.i2025 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %2508, i64 %idxprom.i19.i.i.i.i.i2024 %arrayidx.i22.i.i.i.i.i2026 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i2025, i64 %sh_prom.i.i.i.i store i64 1, ptr %arrayidx.i22.i.i.i.i.i2026, align 8, !tbaa !82 %arrayidx6.i.i.i.i.i.i.i2027 = getelementptr inbounds nuw i8, ptr %arrayidx.i22.i.i.i.i.i2026, i64 8 store i8 10, ptr %arrayidx6.i.i.i.i.i.i.i2027, align 8 %tobool.not.i.i.i.i.i.i2028 = icmp eq i32 %.lcssa3854, 0 %conv.i.i.i.i.i.i2029 = zext i1 %tobool.not.i.i.i.i.i.i2028 to i32 fence release %2509 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i2030 = zext i32 %.lcssa3856 to i64 %arrayidx.i24.i.i.i.i.i2031 = getelementptr inbounds nuw i32, ptr %2509, i64 %idxprom.i23.i.i.i.i.i2030 store atomic i32 %conv.i.i.i.i.i.i2029, ptr %arrayidx.i24.i.i.i.i.i2031 monotonic, align 4 %2510 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i2032 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2510, i64 %idxprom.i23.i.i.i.i.i2030, !amdgpu.uniform !42 %2511 = load i64, ptr %arrayidx.i.i5.i.i2032, align 8, !tbaa !80 br label %while.cond.i.i.i.i2033, !amdgpu.uniform !42 while.cond.i.i.i.i2033: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2022, %Flow3317 %phi.broken3846 = phi i64 [ 0, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2022 ], [ %2526, %Flow3317 ] %port.sroa.37.0.i.i2034 = phi i32 [ %2524, %Flow3317 ], [ %conv.i.i.i.i.i.i2029, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2022 ] %idx.0.i.i.i.i2035 = phi i64 [ %2523, %Flow3317 ], [ 56, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2022 ] %cmp.i.i.i.i2036 = icmp eq i64 %idx.0.i.i.i.i2035, 0 %2512 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i2036) %and.i.i.i.i6.i.i2037 = and i64 %2512, %2511 %tobool.not.i.i.i.i2038 = icmp ne i64 %and.i.i.i.i6.i.i2037, 0 %2513 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i2039 = getelementptr inbounds nuw i32, ptr %2513, i64 %idxprom.i23.i.i.i.i.i2030, !amdgpu.uniform !42 %2514 = load atomic i32, ptr %arrayidx.i22.i.i.i2039 monotonic, align 4 %2515 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i2038) %2516 = extractvalue { i1, i64 } %2515, 0 %2517 = extractvalue { i1, i64 } %2515, 1 br i1 %2516, label %cond.false.i8.i.i.i.i2040, label %Flow3317 cond.false.i8.i.i.i.i2040: ; preds = %while.cond.i.i.i.i2033 %2518 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2514) %2519 = icmp ne i32 %2518, %port.sroa.37.0.i.i2034 br i1 %2519, label %while.body.i.i21.i.i.i.i2041.preheader, label %Flow3316, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i2041.preheader: ; preds = %cond.false.i8.i.i.i.i2040 br label %while.body.i.i21.i.i.i.i2041, !amdgpu.uniform !42 Flow3316: ; preds = %Flow3315, %cond.false.i8.i.i.i.i2040 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i2044, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i2041: ; preds = %while.body.i.i21.i.i.i.i2041.preheader, %while.body.i.i21.i.i.i.i2041 tail call void @llvm.amdgcn.s.sleep(i32 2) %2520 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i2042 = getelementptr inbounds nuw i32, ptr %2520, i64 %idxprom.i23.i.i.i.i.i2030, !amdgpu.uniform !42 %2521 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i2042 monotonic, align 4 %2522 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2521) %cmp.i.not.i.i23.i.i.i.i2043 = icmp eq i32 %2522, %port.sroa.37.0.i.i2034 br i1 %cmp.i.not.i.i23.i.i.i.i2043, label %Flow3315, label %while.body.i.i21.i.i.i.i2041, !amdgpu.uniform !42 Flow3315: ; preds = %while.body.i.i21.i.i.i.i2041 br label %Flow3316, !amdgpu.uniform !42 Flow3317: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2045, %while.cond.i.i.i.i2033 %2523 = phi i64 [ %add.i.i.i.i2048, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2045 ], [ poison, %while.cond.i.i.i.i2033 ] %2524 = phi i32 [ %conv.i.i26.i.i.i.i2046, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2045 ], [ poison, %while.cond.i.i.i.i2033 ] %2525 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2045 ], [ true, %while.cond.i.i.i.i2033 ] call void @llvm.amdgcn.end.cf.i64(i64 %2517) %2526 = call i64 @llvm.amdgcn.if.break.i64(i1 %2525, i64 %phi.broken3846) %2527 = call i1 @llvm.amdgcn.loop.i64(i64 %2526) br i1 %2527, label %cond.false.i.i.i2054, label %while.cond.i.i.i.i2033 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i2044: ; preds = %Flow3316 fence acquire br i1 %cmp.i.i.i.i2036, label %if.then.i.i.i.i.i.i.i2049, label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2045, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i2049: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i2044 %2528 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %arrayidx.i20.i35.i.i.i.i2052 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %2528, i64 %idxprom.i19.i.i.i.i.i2024 %arrayidx.i22.i38.i.i.i.i2053 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i2052, i64 %sh_prom.i.i.i.i store i8 10, ptr %arrayidx.i22.i38.i.i.i.i2053, align 1 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2045, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2045: ; preds = %if.then.i.i.i.i.i.i.i2049, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i2044 %conv.i.i26.i.i.i.i2046 = xor i32 %port.sroa.37.0.i.i2034, 1 fence release %2529 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i2047 = getelementptr inbounds nuw i32, ptr %2529, i64 %idxprom.i23.i.i.i.i.i2030 store atomic i32 %conv.i.i26.i.i.i.i2046, ptr %arrayidx.i24.i29.i.i.i.i2047 monotonic, align 4 %add.i.i.i.i2048 = add i64 %idx.0.i.i.i.i2035, 64 br label %Flow3317, !amdgpu.uniform !42 cond.false.i.i.i2054: ; preds = %Flow3317 %.lcssa3850 = phi i64 [ %2526, %Flow3317 ] %port.sroa.37.0.i.i2034.lcssa = phi i32 [ %port.sroa.37.0.i.i2034, %Flow3317 ] %.lcssa3849 = phi i32 [ %2514, %Flow3317 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3850) %2530 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa3849) %2531 = icmp ne i32 %2530, %port.sroa.37.0.i.i2034.lcssa %2532 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2531) %2533 = extractvalue { i1, i64 } %2532, 0 %2534 = extractvalue { i1, i64 } %2532, 1 br i1 %2533, label %while.body.i.i.i.i2055.preheader, label %Flow3314 while.body.i.i.i.i2055.preheader: ; preds = %cond.false.i.i.i2054 br label %while.body.i.i.i.i2055, !amdgpu.uniform !42 Flow3314: ; preds = %Flow, %cond.false.i.i.i2054 call void @llvm.amdgcn.end.cf.i64(i64 %2534) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit2076, !amdgpu.uniform !42 while.body.i.i.i.i2055: ; preds = %while.body.i.i.i.i2055.preheader, %while.body.i.i.i.i2055 %phi.broken3847 = phi i64 [ 0, %while.body.i.i.i.i2055.preheader ], [ %2538, %while.body.i.i.i.i2055 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %2535 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i2056 = getelementptr inbounds nuw i32, ptr %2535, i64 %idxprom.i23.i.i.i.i.i2030, !amdgpu.uniform !42 %2536 = load atomic i32, ptr %arrayidx.i.i.i8.i.i2056 monotonic, align 4 %2537 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2536) %cmp.i.not.i.i.i.i2057 = icmp eq i32 %2537, %port.sroa.37.0.i.i2034.lcssa %2538 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i2057, i64 %phi.broken3847) %2539 = call i1 @llvm.amdgcn.loop.i64(i64 %2538) br i1 %2539, label %Flow, label %while.body.i.i.i.i2055 Flow: ; preds = %while.body.i.i.i.i2055 %.lcssa3848 = phi i64 [ %2538, %while.body.i.i.i.i2055 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3848) br label %Flow3314, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit2076: ; preds = %Flow3314 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %2540 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa3855, i1 true) %iszero.i.i.i.i.i13.i.i2059 = icmp ne i64 %.lcssa3855, 0 %cmp2.i.i.i.i14.i.i2060 = icmp eq i64 %2540, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i2061 = select i1 %iszero.i.i.i.i.i13.i.i2059, i1 %cmp2.i.i.i.i14.i.i2060, i1 false %2541 = and i32 %.lcssa3856, 31 %conv4.i.i.i19.i.i2065 = zext i1 %cmp.i.i.i.i15.i.i2061 to i32 %shl.i.i.i20.i.i2066 = shl nuw i32 %conv4.i.i.i19.i.i2065, %2541 %xor.i.i.i21.i.i2067 = xor i32 %shl.i.i.i20.i.i2066, -1 %2542 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2680, !amdgpu.uniform !42 2543: ; preds = %ComputeEnd2681 %div8.i.i.i16.i.i2062 = lshr i32 %.lcssa3856, 5 %idxprom.i.i.i17.i.i2063 = zext nneg i32 %div8.i.i.i16.i.i2062 to i64 %2544 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i2063 %sunkaddr3299 = getelementptr inbounds i8, ptr addrspace(1) %2544, i64 40 %2545 = atomicrmw and ptr addrspace(1) %sunkaddr3299, i32 %.lcssa syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2546, !amdgpu.uniform !42 2546: ; preds = %2543, %ComputeEnd2681 call void @llvm.amdgcn.end.cf.i64(i64 %3877) tail call void @llvm.amdgcn.wave.barrier() br label %Flow3776, !amdgpu.uniform !42 _ZZN22__llvm_libc_22_0_0_git7testing8internal4testIbEEbPNS1_10RunContextENS0_8TestCondET_S6_PKcS8_NS1_8LocationEENKUlbNS_3cpp11string_viewEE_clEbSB_.exit: ; preds = %Flow3776 %cmp = xor i1 %0, true ret i1 %cmp Flow3326: ; preds = %loop-memcpy-expansion %.lcssa3859 = phi i64 [ %2435, %loop-memcpy-expansion ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3859) br label %Flow3327, !amdgpu.uniform !42 Flow3328: ; preds = %Flow3325, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1944 call void @llvm.amdgcn.end.cf.i64(i64 %2425) br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1945, !amdgpu.uniform !42 loop-memcpy-residual-header: ; preds = %Flow3327 %2547 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2658) %2548 = extractvalue { i1, i64 } %2547, 0 %2549 = extractvalue { i1, i64 } %2547, 1 br i1 %2548, label %loop-memcpy-residual.preheader, label %Flow3325 loop-memcpy-residual.preheader: ; preds = %loop-memcpy-residual-header br label %loop-memcpy-residual, !amdgpu.uniform !42 Flow3334: ; preds = %loop-memcpy-expansion2183 %.lcssa3864 = phi i64 [ %2397, %loop-memcpy-expansion2183 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3864) br label %Flow3335, !amdgpu.uniform !42 loop-memcpy-residual-header2186: ; preds = %Flow3335 %2550 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2658) %2551 = extractvalue { i1, i64 } %2550, 0 %2552 = extractvalue { i1, i64 } %2550, 1 br i1 %2551, label %loop-memcpy-residual2185.preheader, label %Flow3333 loop-memcpy-residual2185.preheader: ; preds = %loop-memcpy-residual-header2186 %2553 = add nuw nsw i64 %76, 8 %scevgep2840 = getelementptr i8, ptr %2387, i64 %2553 %2554 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1923, 6 %scevgep2841 = getelementptr i8, ptr %scevgep2840, i64 %2554 br label %loop-memcpy-residual2185, !amdgpu.uniform !42 Flow3371: ; preds = %loop-memcpy-expansion2189 br label %Flow3372, !amdgpu.uniform !42 Flow3373: ; preds = %Flow3369, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1734 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1735, !amdgpu.uniform !42 loop-memcpy-residual-header2192: ; preds = %Flow3372 %2555 = icmp ne i64 %2172, 0 br i1 %2555, label %loop-memcpy-residual2191.preheader, label %Flow3369, !amdgpu.uniform !42 loop-memcpy-residual2191.preheader: ; preds = %loop-memcpy-residual-header2192 %umin2879 = call i64 @llvm.umin.i64(i64 %lsr.iv2877, i64 64) %2556 = lshr i64 %umin2879, 4 %2557 = shl nuw nsw i64 %2556, 4 %scevgep2882 = getelementptr i8, ptr %lsr.iv2871, i64 %2557 %scevgep2874 = getelementptr i8, ptr %2171, i64 %76 %scevgep2875 = getelementptr i8, ptr %scevgep2874, i64 %2146 %scevgep2880 = getelementptr i8, ptr %scevgep2875, i64 %2557 br label %loop-memcpy-residual2191, !amdgpu.uniform !42 Flow3384: ; preds = %loop-memcpy-expansion2195 br label %Flow3385, !amdgpu.uniform !42 loop-memcpy-residual-header2198: ; preds = %Flow3385 br i1 %2620, label %loop-memcpy-residual-header2198.post-loop-memcpy-expansion2194_crit_edge, label %Flow3381, !amdgpu.uniform !42 loop-memcpy-residual-header2198.post-loop-memcpy-expansion2194_crit_edge: ; preds = %loop-memcpy-residual-header2198 %.pre3234 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1713, 6 br label %Flow3381, !amdgpu.uniform !42 Flow3381: ; preds = %loop-memcpy-residual-header2198.post-loop-memcpy-expansion2194_crit_edge, %loop-memcpy-residual-header2198 %2558 = phi i64 [ %.pre3234, %loop-memcpy-residual-header2198.post-loop-memcpy-expansion2194_crit_edge ], [ poison, %loop-memcpy-residual-header2198 ] %2559 = phi i1 [ false, %loop-memcpy-residual-header2198.post-loop-memcpy-expansion2194_crit_edge ], [ true, %loop-memcpy-residual-header2198 ] br i1 %2559, label %loop-memcpy-residual2197.preheader, label %Flow3382, !amdgpu.uniform !42 loop-memcpy-residual2197.preheader: ; preds = %Flow3381 %2560 = lshr i64 %spec.select.i.i.i.i.i.i.i372, 4 %2561 = shl nuw nsw i64 %2560, 4 %2562 = add i64 %76, %2561 %2563 = add i64 %2562, 8 %scevgep2884 = getelementptr i8, ptr %2139, i64 %2563 %2564 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1713, 6 %scevgep2885 = getelementptr i8, ptr %scevgep2884, i64 %2564 %scevgep2887 = getelementptr i8, ptr %2083, i64 %2561 br label %loop-memcpy-residual2197, !amdgpu.uniform !42 Flow3414: ; preds = %loop-memcpy-expansion2201 %.lcssa3905 = phi i64 [ %1972, %loop-memcpy-expansion2201 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3905) br label %Flow3415, !amdgpu.uniform !42 Flow3416: ; preds = %Flow3412, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1529 call void @llvm.amdgcn.end.cf.i64(i64 %1960) br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1530, !amdgpu.uniform !42 loop-memcpy-residual-header2204: ; preds = %Flow3415 %2565 = icmp ne i64 %1962, 0 %2566 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2565) %2567 = extractvalue { i1, i64 } %2566, 0 %2568 = extractvalue { i1, i64 } %2566, 1 br i1 %2567, label %loop-memcpy-residual2203.preheader, label %Flow3412 loop-memcpy-residual2203.preheader: ; preds = %loop-memcpy-residual-header2204 %umin2910 = call i64 @llvm.umin.i64(i64 %lsr.iv2905, i64 64) %2569 = lshr i64 %umin2910, 4 %2570 = shl nuw nsw i64 %2569, 4 %scevgep2911 = getelementptr i8, ptr %lsr.iv2898, i64 %2570 %scevgep2901 = getelementptr i8, ptr %1961, i64 %76 %scevgep2902 = getelementptr i8, ptr %scevgep2901, i64 %1930 %scevgep2908 = getelementptr i8, ptr %scevgep2902, i64 %2570 br label %loop-memcpy-residual2203, !amdgpu.uniform !42 Flow3427: ; preds = %loop-memcpy-expansion2207 %.lcssa3910 = phi i64 [ %1928, %loop-memcpy-expansion2207 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3910) br label %Flow3428, !amdgpu.uniform !42 loop-memcpy-residual-header2210: ; preds = %Flow3428 %2571 = icmp eq i64 %1916, 0 %2572 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2571) %2573 = extractvalue { i1, i64 } %2572, 0 %2574 = extractvalue { i1, i64 } %2572, 1 br i1 %2573, label %loop-memcpy-residual-header2210.post-loop-memcpy-expansion2206_crit_edge, label %Flow3424 loop-memcpy-residual-header2210.post-loop-memcpy-expansion2206_crit_edge: ; preds = %loop-memcpy-residual-header2210 %.pre3232 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1508, 6 br label %Flow3424, !amdgpu.uniform !42 Flow3424: ; preds = %loop-memcpy-residual-header2210.post-loop-memcpy-expansion2206_crit_edge, %loop-memcpy-residual-header2210 %2575 = phi i64 [ %.pre3232, %loop-memcpy-residual-header2210.post-loop-memcpy-expansion2206_crit_edge ], [ poison, %loop-memcpy-residual-header2210 ] %2576 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %2574) %2577 = extractvalue { i1, i64 } %2576, 0 %2578 = extractvalue { i1, i64 } %2576, 1 br i1 %2577, label %loop-memcpy-residual2209.preheader, label %Flow3425 loop-memcpy-residual2209.preheader: ; preds = %Flow3424 %2579 = add nuw nsw i64 %76, 8 %scevgep2913 = getelementptr i8, ptr %1915, i64 %2579 %umin2916 = call i64 @llvm.umin.i64(i64 %lsr.iv.next2915.lcssa, i64 56) %2580 = lshr i64 %umin2916, 4 %2581 = shl nuw nsw i64 %2580, 4 %scevgep2917 = getelementptr i8, ptr %scevgep2913, i64 %2581 %2582 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1508, 6 %scevgep2918 = getelementptr i8, ptr %scevgep2917, i64 %2582 %scevgep2920 = getelementptr i8, ptr %RHSStr, i64 %2581 br label %loop-memcpy-residual2209, !amdgpu.uniform !42 Flow3529: ; preds = %loop-memcpy-expansion2213 %.lcssa3960 = phi i64 [ %1419, %loop-memcpy-expansion2213 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3960) br label %Flow3530, !amdgpu.uniform !42 Flow3531: ; preds = %Flow3527, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1013 call void @llvm.amdgcn.end.cf.i64(i64 %1409) br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1014, !amdgpu.uniform !42 loop-memcpy-residual-header2216: ; preds = %Flow3530 %2583 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2663) %2584 = extractvalue { i1, i64 } %2583, 0 %2585 = extractvalue { i1, i64 } %2583, 1 br i1 %2584, label %loop-memcpy-residual2215.preheader, label %Flow3527 loop-memcpy-residual2215.preheader: ; preds = %loop-memcpy-residual-header2216 br label %loop-memcpy-residual2215, !amdgpu.uniform !42 Flow3540: ; preds = %loop-memcpy-expansion2219 %.lcssa3965 = phi i64 [ %1381, %loop-memcpy-expansion2219 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3965) br label %Flow3541, !amdgpu.uniform !42 loop-memcpy-residual-header2222: ; preds = %Flow3541 %2586 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2663) %2587 = extractvalue { i1, i64 } %2586, 0 %2588 = extractvalue { i1, i64 } %2586, 1 br i1 %2587, label %loop-memcpy-residual2221.preheader, label %Flow3538 loop-memcpy-residual2221.preheader: ; preds = %loop-memcpy-residual-header2222 %2589 = add nuw nsw i64 %76, 8 %scevgep2987 = getelementptr i8, ptr %1371, i64 %2589 %2590 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i992, 6 %scevgep2988 = getelementptr i8, ptr %scevgep2987, i64 %2590 br label %loop-memcpy-residual2221, !amdgpu.uniform !42 Flow3580: ; preds = %loop-memcpy-expansion2225 br label %Flow3581, !amdgpu.uniform !42 Flow3582: ; preds = %Flow3579, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i803 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i804, !amdgpu.uniform !42 loop-memcpy-residual-header2228: ; preds = %Flow3581 %2591 = icmp ne i64 %1153, 0 br i1 %2591, label %loop-memcpy-residual2227.preheader, label %Flow3579, !amdgpu.uniform !42 loop-memcpy-residual2227.preheader: ; preds = %loop-memcpy-residual-header2228 %umin3029 = call i64 @llvm.umin.i64(i64 %lsr.iv3027, i64 64) %2592 = lshr i64 %umin3029, 4 %2593 = shl nuw nsw i64 %2592, 4 %scevgep3032 = getelementptr i8, ptr %lsr.iv3021, i64 %2593 %scevgep3024 = getelementptr i8, ptr %1152, i64 %76 %scevgep3025 = getelementptr i8, ptr %scevgep3024, i64 %1127 %scevgep3030 = getelementptr i8, ptr %scevgep3025, i64 %2593 br label %loop-memcpy-residual2227, !amdgpu.uniform !42 Flow3589: ; preds = %loop-memcpy-expansion2231 br label %Flow3590, !amdgpu.uniform !42 loop-memcpy-residual-header2234: ; preds = %Flow3590 br i1 %2620, label %loop-memcpy-residual-header2234.post-loop-memcpy-expansion2230_crit_edge, label %Flow3587, !amdgpu.uniform !42 loop-memcpy-residual-header2234.post-loop-memcpy-expansion2230_crit_edge: ; preds = %loop-memcpy-residual-header2234 %.pre3222 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i782, 6 br label %Flow3587, !amdgpu.uniform !42 Flow3587: ; preds = %loop-memcpy-residual-header2234.post-loop-memcpy-expansion2230_crit_edge, %loop-memcpy-residual-header2234 %2594 = phi i64 [ %.pre3222, %loop-memcpy-residual-header2234.post-loop-memcpy-expansion2230_crit_edge ], [ poison, %loop-memcpy-residual-header2234 ] %2595 = phi i1 [ false, %loop-memcpy-residual-header2234.post-loop-memcpy-expansion2230_crit_edge ], [ true, %loop-memcpy-residual-header2234 ] br i1 %2595, label %loop-memcpy-residual2233.preheader, label %Flow3588, !amdgpu.uniform !42 loop-memcpy-residual2233.preheader: ; preds = %Flow3587 %2596 = add i64 %76, %671 %2597 = add i64 %2596, 8 %scevgep3034 = getelementptr i8, ptr %1120, i64 %2597 %2598 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i782, 6 %scevgep3035 = getelementptr i8, ptr %scevgep3034, i64 %2598 %scevgep3037 = getelementptr i8, ptr %1064, i64 %671 br label %loop-memcpy-residual2233, !amdgpu.uniform !42 Flow3612: ; preds = %loop-memcpy-expansion2237 %.lcssa4006 = phi i64 [ %953, %loop-memcpy-expansion2237 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4006) br label %Flow3613, !amdgpu.uniform !42 Flow3614: ; preds = %Flow3611, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i601 call void @llvm.amdgcn.end.cf.i64(i64 %941) br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i602, !amdgpu.uniform !42 loop-memcpy-residual-header2240: ; preds = %Flow3613 %2599 = icmp ne i64 %943, 0 %2600 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2599) %2601 = extractvalue { i1, i64 } %2600, 0 %2602 = extractvalue { i1, i64 } %2600, 1 br i1 %2601, label %loop-memcpy-residual2239.preheader, label %Flow3611 loop-memcpy-residual2239.preheader: ; preds = %loop-memcpy-residual-header2240 %umin3059 = call i64 @llvm.umin.i64(i64 %lsr.iv3054, i64 64) %2603 = lshr i64 %umin3059, 4 %2604 = shl nuw nsw i64 %2603, 4 %scevgep3060 = getelementptr i8, ptr %lsr.iv3047, i64 %2604 %scevgep3050 = getelementptr i8, ptr %942, i64 %76 %scevgep3051 = getelementptr i8, ptr %scevgep3050, i64 %911 %scevgep3057 = getelementptr i8, ptr %scevgep3051, i64 %2604 br label %loop-memcpy-residual2239, !amdgpu.uniform !42 Flow3621: ; preds = %loop-memcpy-expansion2243 %.lcssa4011 = phi i64 [ %909, %loop-memcpy-expansion2243 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4011) br label %Flow3622, !amdgpu.uniform !42 loop-memcpy-residual-header2246: ; preds = %Flow3622 %2605 = icmp eq i64 %897, 0 %2606 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2605) %2607 = extractvalue { i1, i64 } %2606, 0 %2608 = extractvalue { i1, i64 } %2606, 1 br i1 %2607, label %loop-memcpy-residual-header2246.post-loop-memcpy-expansion2242_crit_edge, label %Flow3619 loop-memcpy-residual-header2246.post-loop-memcpy-expansion2242_crit_edge: ; preds = %loop-memcpy-residual-header2246 %.pre3220 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i580, 6 br label %Flow3619, !amdgpu.uniform !42 Flow3619: ; preds = %loop-memcpy-residual-header2246.post-loop-memcpy-expansion2242_crit_edge, %loop-memcpy-residual-header2246 %2609 = phi i64 [ %.pre3220, %loop-memcpy-residual-header2246.post-loop-memcpy-expansion2242_crit_edge ], [ poison, %loop-memcpy-residual-header2246 ] %2610 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %2608) %2611 = extractvalue { i1, i64 } %2610, 0 %2612 = extractvalue { i1, i64 } %2610, 1 br i1 %2611, label %loop-memcpy-residual2245.preheader, label %Flow3620 loop-memcpy-residual2245.preheader: ; preds = %Flow3619 %2613 = add nuw nsw i64 %76, 8 %scevgep3062 = getelementptr i8, ptr %896, i64 %2613 %umin3065 = call i64 @llvm.umin.i64(i64 %lsr.iv.next3064.lcssa, i64 56) %2614 = lshr i64 %umin3065, 4 %2615 = shl nuw nsw i64 %2614, 4 %scevgep3066 = getelementptr i8, ptr %scevgep3062, i64 %2615 %2616 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i580, 6 %scevgep3067 = getelementptr i8, ptr %scevgep3066, i64 %2616 %scevgep3069 = getelementptr i8, ptr %LHSStr, i64 %2615 br label %loop-memcpy-residual2245, !amdgpu.uniform !42 Flow3650: ; preds = %loop-memcpy-expansion2249 br label %Flow3651, !amdgpu.uniform !42 Flow3652: ; preds = %Flow3649, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i390 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i391, !amdgpu.uniform !42 loop-memcpy-residual-header2252: ; preds = %Flow3651 %2617 = icmp ne i64 %706, 0 br i1 %2617, label %loop-memcpy-residual2251.preheader, label %Flow3649, !amdgpu.uniform !42 loop-memcpy-residual2251.preheader: ; preds = %loop-memcpy-residual-header2252 %umin3105 = call i64 @llvm.umin.i64(i64 %lsr.iv3103, i64 64) %2618 = lshr i64 %umin3105, 4 %2619 = shl nuw nsw i64 %2618, 4 %scevgep3108 = getelementptr i8, ptr %lsr.iv3097, i64 %2619 %scevgep3100 = getelementptr i8, ptr %705, i64 %76 %scevgep3101 = getelementptr i8, ptr %scevgep3100, i64 %679 %scevgep3106 = getelementptr i8, ptr %scevgep3101, i64 %2619 br label %loop-memcpy-residual2251, !amdgpu.uniform !42 Flow3659: ; preds = %loop-memcpy-expansion2255 br label %Flow3660, !amdgpu.uniform !42 loop-memcpy-residual-header2258: ; preds = %Flow3660 %2620 = icmp eq i64 %670, 0 br i1 %2620, label %loop-memcpy-residual-header2258.post-loop-memcpy-expansion2254_crit_edge, label %Flow3657, !amdgpu.uniform !42 loop-memcpy-residual-header2258.post-loop-memcpy-expansion2254_crit_edge: ; preds = %loop-memcpy-residual-header2258 %.pre3216 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i369, 6 br label %Flow3657, !amdgpu.uniform !42 Flow3657: ; preds = %loop-memcpy-residual-header2258.post-loop-memcpy-expansion2254_crit_edge, %loop-memcpy-residual-header2258 %2621 = phi i64 [ %.pre3216, %loop-memcpy-residual-header2258.post-loop-memcpy-expansion2254_crit_edge ], [ poison, %loop-memcpy-residual-header2258 ] %2622 = phi i1 [ false, %loop-memcpy-residual-header2258.post-loop-memcpy-expansion2254_crit_edge ], [ true, %loop-memcpy-residual-header2258 ] br i1 %2622, label %loop-memcpy-residual2257.preheader, label %Flow3658, !amdgpu.uniform !42 loop-memcpy-residual2257.preheader: ; preds = %Flow3657 %2623 = add i64 %76, %671 %2624 = add i64 %2623, 8 %scevgep3110 = getelementptr i8, ptr %669, i64 %2624 %2625 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i369, 6 %scevgep3111 = getelementptr i8, ptr %scevgep3110, i64 %2625 %scevgep3113 = getelementptr i8, ptr %610, i64 %671 br label %loop-memcpy-residual2257, !amdgpu.uniform !42 Flow3692: ; preds = %loop-memcpy-expansion2261 %.lcssa4051 = phi i64 [ %474, %loop-memcpy-expansion2261 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4051) br label %Flow3693, !amdgpu.uniform !42 Flow3694: ; preds = %Flow3691, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i179 call void @llvm.amdgcn.end.cf.i64(i64 %462) br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i180, !amdgpu.uniform !42 loop-memcpy-residual-header2264: ; preds = %Flow3693 %2626 = icmp ne i64 %464, 0 %2627 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2626) %2628 = extractvalue { i1, i64 } %2627, 0 %2629 = extractvalue { i1, i64 } %2627, 1 br i1 %2628, label %loop-memcpy-residual2263.preheader, label %Flow3691 loop-memcpy-residual2263.preheader: ; preds = %loop-memcpy-residual-header2264 %umin3149 = call i64 @llvm.umin.i64(i64 %lsr.iv3147, i64 64) %2630 = lshr i64 %umin3149, 4 %2631 = shl nuw nsw i64 %2630, 4 %scevgep3152 = getelementptr i8, ptr %lsr.iv3142, i64 %2631 %scevgep3145 = getelementptr i8, ptr %463, i64 %76 %scevgep3146 = getelementptr i8, ptr %scevgep3145, i64 %432 %scevgep3150 = getelementptr i8, ptr %scevgep3146, i64 %2631 br label %loop-memcpy-residual2263, !amdgpu.uniform !42 Flow3701: ; preds = %loop-memcpy-expansion2267 %.lcssa4056 = phi i64 [ %430, %loop-memcpy-expansion2267 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4056) br label %Flow3702, !amdgpu.uniform !42 loop-memcpy-residual-header2270: ; preds = %Flow3702 %2632 = icmp eq i64 %418, 0 %2633 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2632) %2634 = extractvalue { i1, i64 } %2633, 0 %2635 = extractvalue { i1, i64 } %2633, 1 br i1 %2634, label %loop-memcpy-residual-header2270.post-loop-memcpy-expansion2266_crit_edge, label %Flow3699 loop-memcpy-residual-header2270.post-loop-memcpy-expansion2266_crit_edge: ; preds = %loop-memcpy-residual-header2270 %.pre3212 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i158, 6 br label %Flow3699, !amdgpu.uniform !42 Flow3699: ; preds = %loop-memcpy-residual-header2270.post-loop-memcpy-expansion2266_crit_edge, %loop-memcpy-residual-header2270 %2636 = phi i64 [ %.pre3212, %loop-memcpy-residual-header2270.post-loop-memcpy-expansion2266_crit_edge ], [ poison, %loop-memcpy-residual-header2270 ] %2637 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %2635) %2638 = extractvalue { i1, i64 } %2637, 0 %2639 = extractvalue { i1, i64 } %2637, 1 br i1 %2638, label %loop-memcpy-residual2269.preheader, label %Flow3700 loop-memcpy-residual2269.preheader: ; preds = %Flow3699 %2640 = lshr i64 %spec.select.i.i.i.i.i.i.i161, 4 %2641 = shl nuw nsw i64 %2640, 4 %2642 = add i64 %76, %2641 %2643 = add i64 %2642, 8 %scevgep3154 = getelementptr i8, ptr %417, i64 %2643 %2644 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i158, 6 %scevgep3155 = getelementptr i8, ptr %scevgep3154, i64 %2644 %scevgep3157 = getelementptr i8, ptr %341, i64 %2641 br label %loop-memcpy-residual2269, !amdgpu.uniform !42 Flow3394: ; preds = %loop-memcpy-expansion2273 br label %Flow3395, !amdgpu.uniform !42 loop-memcpy-residual-header2276: ; preds = %Flow3395 br i1 %2647, label %loop-memcpy-residual2275.preheader, label %Flow3392, !amdgpu.uniform !42 loop-memcpy-residual2275.preheader: ; preds = %loop-memcpy-residual-header2276 %2645 = sub i64 sub (i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.9, i64 8) to ptr) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.9 to ptr) to i64)), %umin3102 %2646 = sub i64 %2645, %611 %scevgep2893 = getelementptr i8, ptr %2083, i64 %2646 %scevgep2895 = getelementptr i8, ptr %4, i64 %2646 br label %loop-memcpy-residual2275, !amdgpu.uniform !42 Flow3597: ; preds = %loop-memcpy-expansion2279 br label %Flow3598, !amdgpu.uniform !42 loop-memcpy-residual-header2282: ; preds = %Flow3598 br i1 %2647, label %loop-memcpy-residual2281.preheader, label %Flow3596, !amdgpu.uniform !42 loop-memcpy-residual2281.preheader: ; preds = %loop-memcpy-residual-header2282 %scevgep3042 = getelementptr i8, ptr %1064, i64 %612 %scevgep3044 = getelementptr i8, ptr %4, i64 %612 br label %loop-memcpy-residual2281, !amdgpu.uniform !42 Flow3667: ; preds = %loop-memcpy-expansion2285 br label %Flow3668, !amdgpu.uniform !42 loop-memcpy-residual-header2288: ; preds = %Flow3668 %2647 = icmp ne i64 %611, 0 br i1 %2647, label %loop-memcpy-residual2287.preheader, label %Flow3666, !amdgpu.uniform !42 loop-memcpy-residual2287.preheader: ; preds = %loop-memcpy-residual-header2288 %scevgep3118 = getelementptr i8, ptr %610, i64 %612 %scevgep3120 = getelementptr i8, ptr %4, i64 %612 br label %loop-memcpy-residual2287, !amdgpu.uniform !42 Flow3709: ; preds = %loop-memcpy-expansion2291 %.lcssa4064 = phi i64 [ %363, %loop-memcpy-expansion2291 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa4064) br label %Flow3710, !amdgpu.uniform !42 loop-memcpy-residual-header2294: ; preds = %Flow3710 %2648 = icmp ne i64 %352, 0 %2649 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2648) %2650 = extractvalue { i1, i64 } %2649, 0 %2651 = extractvalue { i1, i64 } %2649, 1 br i1 %2650, label %loop-memcpy-residual2293.preheader, label %Flow3708 loop-memcpy-residual2293.preheader: ; preds = %loop-memcpy-residual-header2294 %2652 = lshr i64 %writer.sroa.10.5.i.i.i.i, 4 %2653 = trunc i64 %2652 to i32 %2654 = shl i32 %2653, 4 %2655 = add i32 %2654, 11 %2656 = sub i32 %2655, %351 %scevgep3162 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i, i32 %2656 %2657 = shl nuw i64 %2652, 4 %scevgep3165 = getelementptr i8, ptr %341, i64 %2657 br label %loop-memcpy-residual2293, !amdgpu.uniform !42 Flow3342: ; preds = %loop-memcpy-expansion2297 %.lcssa3872 = phi i64 [ %2333, %loop-memcpy-expansion2297 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3872) br label %Flow3343, !amdgpu.uniform !42 loop-memcpy-residual-header2300: ; preds = %Flow3343 %2658 = icmp ne i64 %2322, 0 %2659 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2658) %2660 = extractvalue { i1, i64 } %2659, 0 %2661 = extractvalue { i1, i64 } %2659, 1 br i1 %2660, label %loop-memcpy-residual2299.preheader, label %Flow3341 loop-memcpy-residual2299.preheader: ; preds = %loop-memcpy-residual-header2300 %2662 = sub i32 11, %2321 %scevgep2847 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i, i32 %2662 br label %loop-memcpy-residual2299, !amdgpu.uniform !42 Flow3550: ; preds = %loop-memcpy-expansion2303 %.lcssa3973 = phi i64 [ %1317, %loop-memcpy-expansion2303 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa3973) br label %Flow3551, !amdgpu.uniform !42 loop-memcpy-residual-header2306: ; preds = %Flow3551 %2663 = icmp ne i64 %1306, 0 %2664 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2663) %2665 = extractvalue { i1, i64 } %2664, 0 %2666 = extractvalue { i1, i64 } %2664, 1 br i1 %2665, label %loop-memcpy-residual2305.preheader, label %Flow3548 loop-memcpy-residual2305.preheader: ; preds = %loop-memcpy-residual-header2306 %2667 = sub i32 11, %1305 %scevgep2994 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i, i32 %2667 br label %loop-memcpy-residual2305, !amdgpu.uniform !42 Flow3765: ; preds = %loop-memcpy-expansion2309 br label %Flow3766, !amdgpu.uniform !42 loop-memcpy-residual-header2312: ; preds = %Flow3766 %2668 = icmp eq i64 %66, 0 br i1 %2668, label %loop-memcpy-residual-header2312.post-loop-memcpy-expansion2308_crit_edge, label %Flow3763, !amdgpu.uniform !42 loop-memcpy-residual-header2312.post-loop-memcpy-expansion2308_crit_edge: ; preds = %loop-memcpy-residual-header2312 %.pre = shl nuw nsw i64 %sh_prom.i.i.i.i, 6 %.pre3208 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i, 6 br label %Flow3763, !amdgpu.uniform !42 Flow3763: ; preds = %loop-memcpy-residual-header2312.post-loop-memcpy-expansion2308_crit_edge, %loop-memcpy-residual-header2312 %2669 = phi i64 [ %.pre, %loop-memcpy-residual-header2312.post-loop-memcpy-expansion2308_crit_edge ], [ poison, %loop-memcpy-residual-header2312 ] %2670 = phi i64 [ %.pre3208, %loop-memcpy-residual-header2312.post-loop-memcpy-expansion2308_crit_edge ], [ poison, %loop-memcpy-residual-header2312 ] %2671 = phi i1 [ false, %loop-memcpy-residual-header2312.post-loop-memcpy-expansion2308_crit_edge ], [ true, %loop-memcpy-residual-header2312 ] br i1 %2671, label %loop-memcpy-residual2311.preheader, label %Flow3764, !amdgpu.uniform !42 loop-memcpy-residual2311.preheader: ; preds = %Flow3763 %2672 = shl nuw nsw i64 %sh_prom.i.i.i.i, 6 %2673 = add nuw nsw i64 %2672, 56 %scevgep3201 = getelementptr i8, ptr %65, i64 %2673 %2674 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i, 6 %scevgep3202 = getelementptr i8, ptr %scevgep3201, i64 %2674 br label %loop-memcpy-residual2311, !amdgpu.uniform !42 Flow3756: ; preds = %loop-memcpy-expansion2315 br label %Flow3757, !amdgpu.uniform !42 Flow3758: ; preds = %Flow3755, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i, !amdgpu.uniform !42 loop-memcpy-residual-header2318: ; preds = %Flow3757 %2675 = icmp ne i64 %103, 0 br i1 %2675, label %loop-memcpy-residual2317.preheader, label %Flow3755, !amdgpu.uniform !42 loop-memcpy-residual2317.preheader: ; preds = %loop-memcpy-residual-header2318 %umin3196 = call i64 @llvm.umin.i64(i64 %lsr.iv3194, i64 64) %2676 = lshr i64 %umin3196, 4 %2677 = shl nuw nsw i64 %2676, 4 %scevgep3199 = getelementptr i8, ptr addrspace(4) %lsr.iv3189, i64 %2677 %scevgep3192 = getelementptr i8, ptr %102, i64 %76 %scevgep3193 = getelementptr i8, ptr %scevgep3192, i64 %77 %scevgep3197 = getelementptr i8, ptr %scevgep3193, i64 %2677 br label %loop-memcpy-residual2317, !amdgpu.uniform !42 Flow3746: ; preds = %loop-memcpy-expansion2321 br label %Flow3747, !amdgpu.uniform !42 loop-memcpy-residual-header2324: ; preds = %Flow3747 %2678 = icmp eq i64 %179, 0 br i1 %2678, label %loop-memcpy-residual-header2324.post-loop-memcpy-expansion2320_crit_edge, label %Flow3744, !amdgpu.uniform !42 loop-memcpy-residual-header2324.post-loop-memcpy-expansion2320_crit_edge: ; preds = %loop-memcpy-residual-header2324 %.pre3210 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i54, 6 br label %Flow3744, !amdgpu.uniform !42 Flow3744: ; preds = %loop-memcpy-residual-header2324.post-loop-memcpy-expansion2320_crit_edge, %loop-memcpy-residual-header2324 %2679 = phi i64 [ %.pre3210, %loop-memcpy-residual-header2324.post-loop-memcpy-expansion2320_crit_edge ], [ poison, %loop-memcpy-residual-header2324 ] %2680 = phi i1 [ false, %loop-memcpy-residual-header2324.post-loop-memcpy-expansion2320_crit_edge ], [ true, %loop-memcpy-residual-header2324 ] br i1 %2680, label %loop-memcpy-residual2323.preheader, label %Flow3745, !amdgpu.uniform !42 loop-memcpy-residual2323.preheader: ; preds = %Flow3744 %2681 = add nuw nsw i64 %76, 8 %scevgep3182 = getelementptr i8, ptr %178, i64 %2681 %2682 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i54, 6 %scevgep3183 = getelementptr i8, ptr %scevgep3182, i64 %2682 br label %loop-memcpy-residual2323, !amdgpu.uniform !42 Flow3737: ; preds = %loop-memcpy-expansion2327 br label %Flow3738, !amdgpu.uniform !42 Flow3739: ; preds = %Flow3736, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i75 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i76, !amdgpu.uniform !42 loop-memcpy-residual-header2330: ; preds = %Flow3738 %2683 = icmp ne i64 %214, 0 br i1 %2683, label %loop-memcpy-residual2329.preheader, label %Flow3736, !amdgpu.uniform !42 loop-memcpy-residual2329.preheader: ; preds = %loop-memcpy-residual-header2330 %umin3177 = call i64 @llvm.umin.i64(i64 %lsr.iv3175, i64 64) %2684 = lshr i64 %umin3177, 4 %2685 = shl nuw nsw i64 %2684, 4 %scevgep3180 = getelementptr i8, ptr addrspace(4) %lsr.iv3170, i64 %2685 %scevgep3173 = getelementptr i8, ptr %213, i64 %76 %scevgep3174 = getelementptr i8, ptr %scevgep3173, i64 %188 %scevgep3178 = getelementptr i8, ptr %scevgep3174, i64 %2685 br label %loop-memcpy-residual2329, !amdgpu.uniform !42 Flow3682: ; preds = %loop-memcpy-expansion2333 br label %Flow3683, !amdgpu.uniform !42 loop-memcpy-residual-header2336: ; preds = %Flow3683 %2686 = icmp eq i64 %547, 0 br i1 %2686, label %loop-memcpy-residual-header2336.post-loop-memcpy-expansion2332_crit_edge, label %Flow3680, !amdgpu.uniform !42 loop-memcpy-residual-header2336.post-loop-memcpy-expansion2332_crit_edge: ; preds = %loop-memcpy-residual-header2336 %.pre3214 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i263, 6 br label %Flow3680, !amdgpu.uniform !42 Flow3680: ; preds = %loop-memcpy-residual-header2336.post-loop-memcpy-expansion2332_crit_edge, %loop-memcpy-residual-header2336 %2687 = phi i64 [ %.pre3214, %loop-memcpy-residual-header2336.post-loop-memcpy-expansion2332_crit_edge ], [ poison, %loop-memcpy-residual-header2336 ] %2688 = phi i1 [ false, %loop-memcpy-residual-header2336.post-loop-memcpy-expansion2332_crit_edge ], [ true, %loop-memcpy-residual-header2336 ] br i1 %2688, label %loop-memcpy-residual2335.preheader, label %Flow3681, !amdgpu.uniform !42 loop-memcpy-residual2335.preheader: ; preds = %Flow3680 %2689 = add nuw nsw i64 %76, 8 %scevgep3134 = getelementptr i8, ptr %546, i64 %2689 %2690 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i263, 6 %scevgep3135 = getelementptr i8, ptr %scevgep3134, i64 %2690 br label %loop-memcpy-residual2335, !amdgpu.uniform !42 Flow3673: ; preds = %loop-memcpy-expansion2339 br label %Flow3674, !amdgpu.uniform !42 Flow3675: ; preds = %Flow3672, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i284 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i285, !amdgpu.uniform !42 loop-memcpy-residual-header2342: ; preds = %Flow3674 %2691 = icmp ne i64 %582, 0 br i1 %2691, label %loop-memcpy-residual2341.preheader, label %Flow3672, !amdgpu.uniform !42 loop-memcpy-residual2341.preheader: ; preds = %loop-memcpy-residual-header2342 %umin3129 = call i64 @llvm.umin.i64(i64 %lsr.iv3127, i64 64) %2692 = lshr i64 %umin3129, 4 %2693 = shl nuw nsw i64 %2692, 4 %scevgep3132 = getelementptr i8, ptr addrspace(4) %lsr.iv3122, i64 %2693 %scevgep3125 = getelementptr i8, ptr %581, i64 %76 %scevgep3126 = getelementptr i8, ptr %scevgep3125, i64 %556 %scevgep3130 = getelementptr i8, ptr %scevgep3126, i64 %2693 br label %loop-memcpy-residual2341, !amdgpu.uniform !42 Flow3640: ; preds = %loop-memcpy-expansion2345 br label %Flow3641, !amdgpu.uniform !42 loop-memcpy-residual-header2348: ; preds = %Flow3641 %2694 = icmp eq i64 %782, 0 br i1 %2694, label %loop-memcpy-residual-header2348.post-loop-memcpy-expansion2344_crit_edge, label %Flow3638, !amdgpu.uniform !42 loop-memcpy-residual-header2348.post-loop-memcpy-expansion2344_crit_edge: ; preds = %loop-memcpy-residual-header2348 %.pre3218 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i474, 6 br label %Flow3638, !amdgpu.uniform !42 Flow3638: ; preds = %loop-memcpy-residual-header2348.post-loop-memcpy-expansion2344_crit_edge, %loop-memcpy-residual-header2348 %2695 = phi i64 [ %.pre3218, %loop-memcpy-residual-header2348.post-loop-memcpy-expansion2344_crit_edge ], [ poison, %loop-memcpy-residual-header2348 ] %2696 = phi i1 [ false, %loop-memcpy-residual-header2348.post-loop-memcpy-expansion2344_crit_edge ], [ true, %loop-memcpy-residual-header2348 ] br i1 %2696, label %loop-memcpy-residual2347.preheader, label %Flow3639, !amdgpu.uniform !42 loop-memcpy-residual2347.preheader: ; preds = %Flow3638 %2697 = add nuw nsw i64 %76, 8 %scevgep3089 = getelementptr i8, ptr %781, i64 %2697 %2698 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i474, 6 %scevgep3090 = getelementptr i8, ptr %scevgep3089, i64 %2698 br label %loop-memcpy-residual2347, !amdgpu.uniform !42 Flow3631: ; preds = %loop-memcpy-expansion2351 br label %Flow3632, !amdgpu.uniform !42 Flow3633: ; preds = %Flow3630, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i495 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i496, !amdgpu.uniform !42 loop-memcpy-residual-header2354: ; preds = %Flow3632 %2699 = icmp ne i64 %817, 0 br i1 %2699, label %loop-memcpy-residual2353.preheader, label %Flow3630, !amdgpu.uniform !42 loop-memcpy-residual2353.preheader: ; preds = %loop-memcpy-residual-header2354 %umin3084 = call i64 @llvm.umin.i64(i64 %lsr.iv3082, i64 64) %2700 = lshr i64 %umin3084, 4 %2701 = shl nuw nsw i64 %2700, 4 %scevgep3087 = getelementptr i8, ptr addrspace(4) %lsr.iv3077, i64 %2701 %scevgep3080 = getelementptr i8, ptr %816, i64 %76 %scevgep3081 = getelementptr i8, ptr %scevgep3080, i64 %791 %scevgep3085 = getelementptr i8, ptr %scevgep3081, i64 %2701 br label %loop-memcpy-residual2353, !amdgpu.uniform !42 Flow3570: ; preds = %loop-memcpy-expansion2357 br label %Flow3571, !amdgpu.uniform !42 loop-memcpy-residual-header2360: ; preds = %Flow3571 %2702 = icmp eq i64 %1229, 0 br i1 %2702, label %loop-memcpy-residual-header2360.post-loop-memcpy-expansion2356_crit_edge, label %Flow3568, !amdgpu.uniform !42 loop-memcpy-residual-header2360.post-loop-memcpy-expansion2356_crit_edge: ; preds = %loop-memcpy-residual-header2360 %.pre3224 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i888, 6 br label %Flow3568, !amdgpu.uniform !42 Flow3568: ; preds = %loop-memcpy-residual-header2360.post-loop-memcpy-expansion2356_crit_edge, %loop-memcpy-residual-header2360 %2703 = phi i64 [ %.pre3224, %loop-memcpy-residual-header2360.post-loop-memcpy-expansion2356_crit_edge ], [ poison, %loop-memcpy-residual-header2360 ] %2704 = phi i1 [ false, %loop-memcpy-residual-header2360.post-loop-memcpy-expansion2356_crit_edge ], [ true, %loop-memcpy-residual-header2360 ] br i1 %2704, label %loop-memcpy-residual2359.preheader, label %Flow3569, !amdgpu.uniform !42 loop-memcpy-residual2359.preheader: ; preds = %Flow3568 %2705 = add nuw nsw i64 %76, 8 %scevgep3013 = getelementptr i8, ptr %1228, i64 %2705 %2706 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i888, 6 %scevgep3014 = getelementptr i8, ptr %scevgep3013, i64 %2706 br label %loop-memcpy-residual2359, !amdgpu.uniform !42 Flow3358: ; preds = %loop-memcpy-expansion2363 br label %Flow3359, !amdgpu.uniform !42 loop-memcpy-residual-header2366: ; preds = %Flow3359 br i1 %2702, label %loop-memcpy-residual-header2366.post-loop-memcpy-expansion2362_crit_edge, label %Flow3355, !amdgpu.uniform !42 loop-memcpy-residual-header2366.post-loop-memcpy-expansion2362_crit_edge: ; preds = %loop-memcpy-residual-header2366 %.pre3236 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1819, 6 br label %Flow3355, !amdgpu.uniform !42 Flow3355: ; preds = %loop-memcpy-residual-header2366.post-loop-memcpy-expansion2362_crit_edge, %loop-memcpy-residual-header2366 %2707 = phi i64 [ %.pre3236, %loop-memcpy-residual-header2366.post-loop-memcpy-expansion2362_crit_edge ], [ poison, %loop-memcpy-residual-header2366 ] %2708 = phi i1 [ false, %loop-memcpy-residual-header2366.post-loop-memcpy-expansion2362_crit_edge ], [ true, %loop-memcpy-residual-header2366 ] br i1 %2708, label %loop-memcpy-residual2365.preheader, label %Flow3356, !amdgpu.uniform !42 loop-memcpy-residual2365.preheader: ; preds = %Flow3355 %2709 = add nuw nsw i64 %76, 8 %scevgep2863 = getelementptr i8, ptr %2247, i64 %2709 %2710 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1819, 6 %scevgep2864 = getelementptr i8, ptr %scevgep2863, i64 %2710 br label %loop-memcpy-residual2365, !amdgpu.uniform !42 Flow3559: ; preds = %loop-memcpy-expansion2369 br label %Flow3560, !amdgpu.uniform !42 Flow3561: ; preds = %Flow3557, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i909 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i910, !amdgpu.uniform !42 loop-memcpy-residual-header2372: ; preds = %Flow3560 %2711 = icmp ne i64 %1264, 0 br i1 %2711, label %loop-memcpy-residual2371.preheader, label %Flow3557, !amdgpu.uniform !42 loop-memcpy-residual2371.preheader: ; preds = %loop-memcpy-residual-header2372 %umin3008 = call i64 @llvm.umin.i64(i64 %lsr.iv3006, i64 64) %2712 = lshr i64 %umin3008, 4 %2713 = shl nuw nsw i64 %2712, 4 %scevgep3011 = getelementptr i8, ptr addrspace(4) %lsr.iv3001, i64 %2713 %scevgep3004 = getelementptr i8, ptr %1263, i64 %76 %scevgep3005 = getelementptr i8, ptr %scevgep3004, i64 %1238 %scevgep3009 = getelementptr i8, ptr %scevgep3005, i64 %2713 br label %loop-memcpy-residual2371, !amdgpu.uniform !42 Flow3505: ; preds = %loop-memcpy-expansion2375 br label %Flow3506, !amdgpu.uniform !42 loop-memcpy-residual-header2378: ; preds = %Flow3506 %2714 = icmp eq i64 %1579, 0 br i1 %2714, label %loop-memcpy-residual-header2378.post-loop-memcpy-expansion2374_crit_edge, label %Flow3502, !amdgpu.uniform !42 loop-memcpy-residual-header2378.post-loop-memcpy-expansion2374_crit_edge: ; preds = %loop-memcpy-residual-header2378 %.pre3226 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1197, 6 br label %Flow3502, !amdgpu.uniform !42 Flow3502: ; preds = %loop-memcpy-residual-header2378.post-loop-memcpy-expansion2374_crit_edge, %loop-memcpy-residual-header2378 %2715 = phi i64 [ %.pre3226, %loop-memcpy-residual-header2378.post-loop-memcpy-expansion2374_crit_edge ], [ poison, %loop-memcpy-residual-header2378 ] %2716 = phi i1 [ false, %loop-memcpy-residual-header2378.post-loop-memcpy-expansion2374_crit_edge ], [ true, %loop-memcpy-residual-header2378 ] br i1 %2716, label %loop-memcpy-residual2377.preheader, label %Flow3503, !amdgpu.uniform !42 loop-memcpy-residual2377.preheader: ; preds = %Flow3502 %2717 = add nuw nsw i64 %76, 8 %scevgep2979 = getelementptr i8, ptr %1578, i64 %2717 %2718 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1197, 6 %scevgep2980 = getelementptr i8, ptr %scevgep2979, i64 %2718 br label %loop-memcpy-residual2377, !amdgpu.uniform !42 Flow3492: ; preds = %loop-memcpy-expansion2381 br label %Flow3493, !amdgpu.uniform !42 Flow3494: ; preds = %Flow3490, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1218 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1219, !amdgpu.uniform !42 loop-memcpy-residual-header2384: ; preds = %Flow3493 %2719 = icmp ne i64 %1614, 0 br i1 %2719, label %loop-memcpy-residual2383.preheader, label %Flow3490, !amdgpu.uniform !42 loop-memcpy-residual2383.preheader: ; preds = %loop-memcpy-residual-header2384 %umin2974 = call i64 @llvm.umin.i64(i64 %lsr.iv2972, i64 64) %2720 = lshr i64 %umin2974, 4 %2721 = shl nuw nsw i64 %2720, 4 %scevgep2977 = getelementptr i8, ptr addrspace(4) %lsr.iv2967, i64 %2721 %scevgep2970 = getelementptr i8, ptr %1613, i64 %76 %scevgep2971 = getelementptr i8, ptr %scevgep2970, i64 %1588 %scevgep2975 = getelementptr i8, ptr %scevgep2971, i64 %2721 br label %loop-memcpy-residual2383, !amdgpu.uniform !42 Flow3479: ; preds = %loop-memcpy-expansion2387 br label %Flow3480, !amdgpu.uniform !42 loop-memcpy-residual-header2390: ; preds = %Flow3480 %2722 = icmp eq i64 %1690, 0 br i1 %2722, label %loop-memcpy-residual-header2390.post-loop-memcpy-expansion2386_crit_edge, label %Flow3476, !amdgpu.uniform !42 loop-memcpy-residual-header2390.post-loop-memcpy-expansion2386_crit_edge: ; preds = %loop-memcpy-residual-header2390 %.pre3228 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1296, 6 br label %Flow3476, !amdgpu.uniform !42 Flow3476: ; preds = %loop-memcpy-residual-header2390.post-loop-memcpy-expansion2386_crit_edge, %loop-memcpy-residual-header2390 %2723 = phi i64 [ %.pre3228, %loop-memcpy-residual-header2390.post-loop-memcpy-expansion2386_crit_edge ], [ poison, %loop-memcpy-residual-header2390 ] %2724 = phi i1 [ false, %loop-memcpy-residual-header2390.post-loop-memcpy-expansion2386_crit_edge ], [ true, %loop-memcpy-residual-header2390 ] br i1 %2724, label %loop-memcpy-residual2389.preheader, label %Flow3477, !amdgpu.uniform !42 loop-memcpy-residual2389.preheader: ; preds = %Flow3476 %2725 = lshr i64 %spec.select.i.i.i.i.i.i.i1299, 4 %2726 = shl nuw nsw i64 %2725, 4 %2727 = add i64 %76, %2726 %2728 = add i64 %2727, 8 %scevgep2959 = getelementptr i8, ptr %1689, i64 %2728 %2729 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1296, 6 %scevgep2960 = getelementptr i8, ptr %scevgep2959, i64 %2729 %scevgep2962 = getelementptr i8, ptr addrspace(4) @.str.9, i64 %2726 br label %loop-memcpy-residual2389, !amdgpu.uniform !42 Flow3466: ; preds = %loop-memcpy-expansion2393 br label %Flow3467, !amdgpu.uniform !42 Flow3468: ; preds = %Flow3464, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1317 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1318, !amdgpu.uniform !42 loop-memcpy-residual-header2396: ; preds = %Flow3467 %2730 = icmp ne i64 %1725, 0 br i1 %2730, label %loop-memcpy-residual2395.preheader, label %Flow3464, !amdgpu.uniform !42 loop-memcpy-residual2395.preheader: ; preds = %loop-memcpy-residual-header2396 %umin2954 = call i64 @llvm.umin.i64(i64 %lsr.iv2952, i64 64) %2731 = lshr i64 %umin2954, 4 %2732 = shl nuw nsw i64 %2731, 4 %scevgep2957 = getelementptr i8, ptr addrspace(4) %lsr.iv2947, i64 %2732 %scevgep2950 = getelementptr i8, ptr %1724, i64 %76 %scevgep2951 = getelementptr i8, ptr %scevgep2950, i64 %1699 %scevgep2955 = getelementptr i8, ptr %scevgep2951, i64 %2732 br label %loop-memcpy-residual2395, !amdgpu.uniform !42 Flow3453: ; preds = %loop-memcpy-expansion2399 br label %Flow3454, !amdgpu.uniform !42 loop-memcpy-residual-header2402: ; preds = %Flow3454 %2733 = icmp eq i64 %1801, 0 br i1 %2733, label %loop-memcpy-residual-header2402.post-loop-memcpy-expansion2398_crit_edge, label %Flow3450, !amdgpu.uniform !42 loop-memcpy-residual-header2402.post-loop-memcpy-expansion2398_crit_edge: ; preds = %loop-memcpy-residual-header2402 %.pre3230 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1401, 6 br label %Flow3450, !amdgpu.uniform !42 Flow3450: ; preds = %loop-memcpy-residual-header2402.post-loop-memcpy-expansion2398_crit_edge, %loop-memcpy-residual-header2402 %2734 = phi i64 [ %.pre3230, %loop-memcpy-residual-header2402.post-loop-memcpy-expansion2398_crit_edge ], [ poison, %loop-memcpy-residual-header2402 ] %2735 = phi i1 [ false, %loop-memcpy-residual-header2402.post-loop-memcpy-expansion2398_crit_edge ], [ true, %loop-memcpy-residual-header2402 ] br i1 %2735, label %loop-memcpy-residual2401.preheader, label %Flow3451, !amdgpu.uniform !42 loop-memcpy-residual2401.preheader: ; preds = %Flow3450 %2736 = add nuw nsw i64 %76, 8 %scevgep2940 = getelementptr i8, ptr %1800, i64 %2736 %2737 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1401, 6 %scevgep2941 = getelementptr i8, ptr %scevgep2940, i64 %2737 br label %loop-memcpy-residual2401, !amdgpu.uniform !42 Flow3440: ; preds = %loop-memcpy-expansion2405 br label %Flow3441, !amdgpu.uniform !42 Flow3442: ; preds = %Flow3438, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1422 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1423, !amdgpu.uniform !42 loop-memcpy-residual-header2408: ; preds = %Flow3441 %2738 = icmp ne i64 %1836, 0 br i1 %2738, label %loop-memcpy-residual2407.preheader, label %Flow3438, !amdgpu.uniform !42 loop-memcpy-residual2407.preheader: ; preds = %loop-memcpy-residual-header2408 %umin2935 = call i64 @llvm.umin.i64(i64 %lsr.iv2933, i64 64) %2739 = lshr i64 %umin2935, 4 %2740 = shl nuw nsw i64 %2739, 4 %scevgep2938 = getelementptr i8, ptr addrspace(4) %lsr.iv2928, i64 %2740 %scevgep2931 = getelementptr i8, ptr %1835, i64 %76 %scevgep2932 = getelementptr i8, ptr %scevgep2931, i64 %1810 %scevgep2936 = getelementptr i8, ptr %scevgep2932, i64 %2740 br label %loop-memcpy-residual2407, !amdgpu.uniform !42 Flow3348: ; preds = %loop-memcpy-expansion2411 br label %Flow3349, !amdgpu.uniform !42 Flow3350: ; preds = %Flow3347, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1840 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1841, !amdgpu.uniform !42 loop-memcpy-residual-header2414: ; preds = %Flow3349 %2741 = icmp ne i64 %2280, 0 br i1 %2741, label %loop-memcpy-residual2413.preheader, label %Flow3347, !amdgpu.uniform !42 loop-memcpy-residual2413.preheader: ; preds = %loop-memcpy-residual-header2414 %umin = call i64 @llvm.umin.i64(i64 %lsr.iv2858, i64 64) %2742 = lshr i64 %umin, 4 %2743 = shl nuw nsw i64 %2742, 4 %scevgep2861 = getelementptr i8, ptr addrspace(4) %lsr.iv2853, i64 %2743 %scevgep2856 = getelementptr i8, ptr %2279, i64 %76 %scevgep2857 = getelementptr i8, ptr %scevgep2856, i64 %2254 %scevgep2859 = getelementptr i8, ptr %scevgep2857, i64 %2743 br label %loop-memcpy-residual2413, !amdgpu.uniform !42 ComputeLoop: ; preds = %for.cond.i.i1.i, %ComputeLoop %Accumulator = phi i32 [ %2748, %ComputeLoop ], [ 0, %for.cond.i.i1.i ] %OldValuePhi = phi i32 [ %2747, %ComputeLoop ], [ poison, %for.cond.i.i1.i ] %ActiveBits = phi i64 [ %2751, %ComputeLoop ], [ %26, %for.cond.i.i1.i ] %2744 = call i64 @llvm.cttz.i64(i64 %ActiveBits, i1 true) %2745 = trunc i64 %2744 to i32 %2746 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i, i32 %2745) %2747 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator, i32 %2745, i32 %OldValuePhi) %2748 = or i32 %Accumulator, %2746 %2749 = shl i64 1, %2744 %2750 = xor i64 %2749, -1 %2751 = and i64 %ActiveBits, %2750 %2752 = icmp eq i64 %2751, 0 br i1 %2752, label %ComputeEnd, label %ComputeLoop, !amdgpu.uniform !42 ComputeEnd: ; preds = %ComputeLoop %.lcssa4082 = phi i32 [ %2747, %ComputeLoop ] %.lcssa4081 = phi i32 [ %2748, %ComputeLoop ] %div8.i.i.i.i.i = lshr i32 %spec.store.select.i.i.i, 5 %idxprom.i.i.i.i.i = zext nneg i32 %div8.i.i.i.i.i to i64 %2753 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i %2754 = trunc i64 %26 to i32 %2755 = lshr i64 %26, 32 %2756 = trunc i64 %2755 to i32 %2757 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %2754, i32 0) %2758 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %2756, i32 %2757) %2759 = icmp eq i32 %2758, 0 %2760 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2759) %2761 = extractvalue { i1, i64 } %2760, 0 %2762 = extractvalue { i1, i64 } %2760, 1 br i1 %2761, label %27, label %29 Flow3767: ; preds = %47, %if.then.i.i.i.i1 %2763 = phi i1 [ false, %47 ], [ true, %if.then.i.i.i.i1 ] br i1 %2763, label %if.end14.i.i.i, label %Flow3768, !amdgpu.uniform !42 ComputeLoop2416: ; preds = %if.then12.i.i.i, %ComputeLoop2416 %Accumulator2418 = phi i32 [ %2767, %ComputeLoop2416 ], [ -1, %if.then12.i.i.i ] %ActiveBits2419 = phi i64 [ %2770, %ComputeLoop2416 ], [ %44, %if.then12.i.i.i ] %2764 = call i64 @llvm.cttz.i64(i64 %ActiveBits2419, i1 true) %2765 = trunc i64 %2764 to i32 %2766 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i, i32 %2765) %2767 = and i32 %Accumulator2418, %2766 %2768 = shl i64 1, %2764 %2769 = xor i64 %2768, -1 %2770 = and i64 %ActiveBits2419, %2769 %2771 = icmp eq i64 %2770, 0 br i1 %2771, label %ComputeEnd2417, label %ComputeLoop2416, !amdgpu.uniform !42 ComputeEnd2417: ; preds = %ComputeLoop2416 %.lcssa4083 = phi i32 [ %2767, %ComputeLoop2416 ] %2772 = trunc i64 %44 to i32 %2773 = lshr i64 %44, 32 %2774 = trunc i64 %2773 to i32 %2775 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %2772, i32 0) %2776 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %2774, i32 %2775) %2777 = icmp eq i32 %2776, 0 %2778 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2777) %2779 = extractvalue { i1, i64 } %2778, 0 %2780 = extractvalue { i1, i64 } %2778, 1 br i1 %2779, label %45, label %47 ComputeLoop2420: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit, %ComputeLoop2420 %Accumulator2422 = phi i32 [ %2784, %ComputeLoop2420 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit ] %ActiveBits2423 = phi i64 [ %2787, %ComputeLoop2420 ], [ %126, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit ] %2781 = call i64 @llvm.cttz.i64(i64 %ActiveBits2423, i1 true) %2782 = trunc i64 %2781 to i32 %2783 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i, i32 %2782) %2784 = and i32 %Accumulator2422, %2783 %2785 = shl i64 1, %2781 %2786 = xor i64 %2785, -1 %2787 = and i64 %ActiveBits2423, %2786 %2788 = icmp eq i64 %2787, 0 br i1 %2788, label %ComputeEnd2421, label %ComputeLoop2420, !amdgpu.uniform !42 ComputeEnd2421: ; preds = %ComputeLoop2420 %.lcssa4077 = phi i32 [ %2784, %ComputeLoop2420 ] %2789 = trunc i64 %126 to i32 %2790 = lshr i64 %126, 32 %2791 = trunc i64 %2790 to i32 %2792 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %2789, i32 0) %2793 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %2791, i32 %2792) %2794 = icmp eq i32 %2793, 0 %2795 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2794) %2796 = extractvalue { i1, i64 } %2795, 0 %2797 = extractvalue { i1, i64 } %2795, 1 br i1 %2796, label %127, label %130 ComputeLoop2424: ; preds = %for.cond.i.i1.i11, %ComputeLoop2424 %Accumulator2426 = phi i32 [ %2802, %ComputeLoop2424 ], [ 0, %for.cond.i.i1.i11 ] %OldValuePhi2427 = phi i32 [ %2801, %ComputeLoop2424 ], [ poison, %for.cond.i.i1.i11 ] %ActiveBits2428 = phi i64 [ %2805, %ComputeLoop2424 ], [ %139, %for.cond.i.i1.i11 ] %2798 = call i64 @llvm.cttz.i64(i64 %ActiveBits2428, i1 true) %2799 = trunc i64 %2798 to i32 %2800 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i23, i32 %2799) %2801 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2426, i32 %2799, i32 %OldValuePhi2427) %2802 = or i32 %Accumulator2426, %2800 %2803 = shl i64 1, %2798 %2804 = xor i64 %2803, -1 %2805 = and i64 %ActiveBits2428, %2804 %2806 = icmp eq i64 %2805, 0 br i1 %2806, label %ComputeEnd2425, label %ComputeLoop2424, !amdgpu.uniform !42 ComputeEnd2425: ; preds = %ComputeLoop2424 %.lcssa4072 = phi i32 [ %2801, %ComputeLoop2424 ] %.lcssa4071 = phi i32 [ %2802, %ComputeLoop2424 ] %div8.i.i.i.i.i19 = lshr i32 %spec.store.select.i.i.i18, 5 %idxprom.i.i.i.i.i20 = zext nneg i32 %div8.i.i.i.i.i19 to i64 %2807 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i20 %2808 = trunc i64 %139 to i32 %2809 = lshr i64 %139, 32 %2810 = trunc i64 %2809 to i32 %2811 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %2808, i32 0) %2812 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %2810, i32 %2811) %2813 = icmp eq i32 %2812, 0 %2814 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2813) %2815 = extractvalue { i1, i64 } %2814, 0 %2816 = extractvalue { i1, i64 } %2814, 1 br i1 %2815, label %140, label %142 Flow3748: ; preds = %160, %if.then.i.i.i.i29 %2817 = phi i1 [ false, %160 ], [ true, %if.then.i.i.i.i29 ] br i1 %2817, label %if.end14.i.i.i99, label %Flow3749, !amdgpu.uniform !42 ComputeLoop2429: ; preds = %if.then12.i.i.i34, %ComputeLoop2429 %Accumulator2431 = phi i32 [ %2821, %ComputeLoop2429 ], [ -1, %if.then12.i.i.i34 ] %ActiveBits2432 = phi i64 [ %2824, %ComputeLoop2429 ], [ %157, %if.then12.i.i.i34 ] %2818 = call i64 @llvm.cttz.i64(i64 %ActiveBits2432, i1 true) %2819 = trunc i64 %2818 to i32 %2820 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i40, i32 %2819) %2821 = and i32 %Accumulator2431, %2820 %2822 = shl i64 1, %2818 %2823 = xor i64 %2822, -1 %2824 = and i64 %ActiveBits2432, %2823 %2825 = icmp eq i64 %2824, 0 br i1 %2825, label %ComputeEnd2430, label %ComputeLoop2429, !amdgpu.uniform !42 ComputeEnd2430: ; preds = %ComputeLoop2429 %.lcssa4073 = phi i32 [ %2821, %ComputeLoop2429 ] %2826 = trunc i64 %157 to i32 %2827 = lshr i64 %157, 32 %2828 = trunc i64 %2827 to i32 %2829 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %2826, i32 0) %2830 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %2828, i32 %2829) %2831 = icmp eq i32 %2830, 0 %2832 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2831) %2833 = extractvalue { i1, i64 } %2832, 0 %2834 = extractvalue { i1, i64 } %2832, 1 br i1 %2833, label %158, label %160 ComputeLoop2433: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit107, %ComputeLoop2433 %Accumulator2435 = phi i32 [ %2838, %ComputeLoop2433 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit107 ] %ActiveBits2436 = phi i64 [ %2841, %ComputeLoop2433 ], [ %237, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit107 ] %2835 = call i64 @llvm.cttz.i64(i64 %ActiveBits2436, i1 true) %2836 = trunc i64 %2835 to i32 %2837 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i98, i32 %2836) %2838 = and i32 %Accumulator2435, %2837 %2839 = shl i64 1, %2835 %2840 = xor i64 %2839, -1 %2841 = and i64 %ActiveBits2436, %2840 %2842 = icmp eq i64 %2841, 0 br i1 %2842, label %ComputeEnd2434, label %ComputeLoop2433, !amdgpu.uniform !42 ComputeEnd2434: ; preds = %ComputeLoop2433 %.lcssa4067 = phi i32 [ %2838, %ComputeLoop2433 ] %2843 = trunc i64 %237 to i32 %2844 = lshr i64 %237, 32 %2845 = trunc i64 %2844 to i32 %2846 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %2843, i32 0) %2847 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %2845, i32 %2846) %2848 = icmp eq i32 %2847, 0 %2849 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2848) %2850 = extractvalue { i1, i64 } %2849, 0 %2851 = extractvalue { i1, i64 } %2849, 1 br i1 %2850, label %238, label %241 ComputeLoop2437: ; preds = %for.cond.i.i.i116, %ComputeLoop2437 %Accumulator2439 = phi i32 [ %2856, %ComputeLoop2437 ], [ 0, %for.cond.i.i.i116 ] %OldValuePhi2440 = phi i32 [ %2855, %ComputeLoop2437 ], [ poison, %for.cond.i.i.i116 ] %ActiveBits2441 = phi i64 [ %2859, %ComputeLoop2437 ], [ %378, %for.cond.i.i.i116 ] %2852 = call i64 @llvm.cttz.i64(i64 %ActiveBits2441, i1 true) %2853 = trunc i64 %2852 to i32 %2854 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i128, i32 %2853) %2855 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2439, i32 %2853, i32 %OldValuePhi2440) %2856 = or i32 %Accumulator2439, %2854 %2857 = shl i64 1, %2852 %2858 = xor i64 %2857, -1 %2859 = and i64 %ActiveBits2441, %2858 %2860 = icmp eq i64 %2859, 0 br i1 %2860, label %ComputeEnd2438, label %ComputeLoop2437, !amdgpu.uniform !42 ComputeEnd2438: ; preds = %ComputeLoop2437 %.lcssa4058 = phi i32 [ %2855, %ComputeLoop2437 ] %.lcssa4057 = phi i32 [ %2856, %ComputeLoop2437 ] %div8.i.i.i.i.i124 = lshr i32 %spec.store.select.i.i.i123, 5 %idxprom.i.i.i.i.i125 = zext nneg i32 %div8.i.i.i.i.i124 to i64 %2861 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i125 %2862 = trunc i64 %378 to i32 %2863 = lshr i64 %378, 32 %2864 = trunc i64 %2863 to i32 %2865 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %2862, i32 0) %2866 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %2864, i32 %2865) %2867 = icmp eq i32 %2866, 0 %2868 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2867) %2869 = extractvalue { i1, i64 } %2868, 0 %2870 = extractvalue { i1, i64 } %2868, 1 br i1 %2869, label %379, label %381 Flow3703: ; preds = %399, %if.then.i.i.i.i134 %2871 = phi i1 [ false, %399 ], [ true, %if.then.i.i.i.i134 ] br i1 %2871, label %if.end14.i.i.i204, label %Flow3704, !amdgpu.uniform !42 ComputeLoop2442: ; preds = %if.then12.i.i.i139, %ComputeLoop2442 %Accumulator2444 = phi i32 [ %2875, %ComputeLoop2442 ], [ -1, %if.then12.i.i.i139 ] %ActiveBits2445 = phi i64 [ %2878, %ComputeLoop2442 ], [ %396, %if.then12.i.i.i139 ] %2872 = call i64 @llvm.cttz.i64(i64 %ActiveBits2445, i1 true) %2873 = trunc i64 %2872 to i32 %2874 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i144, i32 %2873) %2875 = and i32 %Accumulator2444, %2874 %2876 = shl i64 1, %2872 %2877 = xor i64 %2876, -1 %2878 = and i64 %ActiveBits2445, %2877 %2879 = icmp eq i64 %2878, 0 br i1 %2879, label %ComputeEnd2443, label %ComputeLoop2442, !amdgpu.uniform !42 ComputeEnd2443: ; preds = %ComputeLoop2442 %.lcssa4059 = phi i32 [ %2875, %ComputeLoop2442 ] %2880 = trunc i64 %396 to i32 %2881 = lshr i64 %396, 32 %2882 = trunc i64 %2881 to i32 %2883 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %2880, i32 0) %2884 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %2882, i32 %2883) %2885 = icmp eq i32 %2884, 0 %2886 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2885) %2887 = extractvalue { i1, i64 } %2886, 0 %2888 = extractvalue { i1, i64 } %2886, 1 br i1 %2887, label %397, label %399 ComputeLoop2446: ; preds = %_ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i, %ComputeLoop2446 %Accumulator2448 = phi i32 [ %2892, %ComputeLoop2446 ], [ -1, %_ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i ] %ActiveBits2449 = phi i64 [ %2895, %ComputeLoop2446 ], [ %494, %_ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i ] %2889 = call i64 @llvm.cttz.i64(i64 %ActiveBits2449, i1 true) %2890 = trunc i64 %2889 to i32 %2891 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i201, i32 %2890) %2892 = and i32 %Accumulator2448, %2891 %2893 = shl i64 1, %2889 %2894 = xor i64 %2893, -1 %2895 = and i64 %ActiveBits2449, %2894 %2896 = icmp eq i64 %2895, 0 br i1 %2896, label %ComputeEnd2447, label %ComputeLoop2446, !amdgpu.uniform !42 ComputeEnd2447: ; preds = %ComputeLoop2446 %.lcssa4049 = phi i32 [ %2892, %ComputeLoop2446 ] %2897 = trunc i64 %494 to i32 %2898 = lshr i64 %494, 32 %2899 = trunc i64 %2898 to i32 %2900 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %2897, i32 0) %2901 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %2899, i32 %2900) %2902 = icmp eq i32 %2901, 0 %2903 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2902) %2904 = extractvalue { i1, i64 } %2903, 0 %2905 = extractvalue { i1, i64 } %2903, 1 br i1 %2904, label %495, label %498 ComputeLoop2450: ; preds = %for.cond.i.i1.i220, %ComputeLoop2450 %Accumulator2452 = phi i32 [ %2910, %ComputeLoop2450 ], [ 0, %for.cond.i.i1.i220 ] %OldValuePhi2453 = phi i32 [ %2909, %ComputeLoop2450 ], [ poison, %for.cond.i.i1.i220 ] %ActiveBits2454 = phi i64 [ %2913, %ComputeLoop2450 ], [ %507, %for.cond.i.i1.i220 ] %2906 = call i64 @llvm.cttz.i64(i64 %ActiveBits2454, i1 true) %2907 = trunc i64 %2906 to i32 %2908 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i232, i32 %2907) %2909 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2452, i32 %2907, i32 %OldValuePhi2453) %2910 = or i32 %Accumulator2452, %2908 %2911 = shl i64 1, %2906 %2912 = xor i64 %2911, -1 %2913 = and i64 %ActiveBits2454, %2912 %2914 = icmp eq i64 %2913, 0 br i1 %2914, label %ComputeEnd2451, label %ComputeLoop2450, !amdgpu.uniform !42 ComputeEnd2451: ; preds = %ComputeLoop2450 %.lcssa4044 = phi i32 [ %2909, %ComputeLoop2450 ] %.lcssa4043 = phi i32 [ %2910, %ComputeLoop2450 ] %div8.i.i.i.i.i228 = lshr i32 %spec.store.select.i.i.i227, 5 %idxprom.i.i.i.i.i229 = zext nneg i32 %div8.i.i.i.i.i228 to i64 %2915 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i229 %2916 = trunc i64 %507 to i32 %2917 = lshr i64 %507, 32 %2918 = trunc i64 %2917 to i32 %2919 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %2916, i32 0) %2920 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %2918, i32 %2919) %2921 = icmp eq i32 %2920, 0 %2922 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2921) %2923 = extractvalue { i1, i64 } %2922, 0 %2924 = extractvalue { i1, i64 } %2922, 1 br i1 %2923, label %508, label %510 Flow3684: ; preds = %528, %if.then.i.i.i.i238 %2925 = phi i1 [ false, %528 ], [ true, %if.then.i.i.i.i238 ] br i1 %2925, label %if.end14.i.i.i309, label %Flow3685, !amdgpu.uniform !42 ComputeLoop2455: ; preds = %if.then12.i.i.i243, %ComputeLoop2455 %Accumulator2457 = phi i32 [ %2929, %ComputeLoop2455 ], [ -1, %if.then12.i.i.i243 ] %ActiveBits2458 = phi i64 [ %2932, %ComputeLoop2455 ], [ %525, %if.then12.i.i.i243 ] %2926 = call i64 @llvm.cttz.i64(i64 %ActiveBits2458, i1 true) %2927 = trunc i64 %2926 to i32 %2928 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i249, i32 %2927) %2929 = and i32 %Accumulator2457, %2928 %2930 = shl i64 1, %2926 %2931 = xor i64 %2930, -1 %2932 = and i64 %ActiveBits2458, %2931 %2933 = icmp eq i64 %2932, 0 br i1 %2933, label %ComputeEnd2456, label %ComputeLoop2455, !amdgpu.uniform !42 ComputeEnd2456: ; preds = %ComputeLoop2455 %.lcssa4045 = phi i32 [ %2929, %ComputeLoop2455 ] %2934 = trunc i64 %525 to i32 %2935 = lshr i64 %525, 32 %2936 = trunc i64 %2935 to i32 %2937 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %2934, i32 0) %2938 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %2936, i32 %2937) %2939 = icmp eq i32 %2938, 0 %2940 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2939) %2941 = extractvalue { i1, i64 } %2940, 0 %2942 = extractvalue { i1, i64 } %2940, 1 br i1 %2941, label %526, label %528 ComputeLoop2459: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit317, %ComputeLoop2459 %Accumulator2461 = phi i32 [ %2946, %ComputeLoop2459 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit317 ] %ActiveBits2462 = phi i64 [ %2949, %ComputeLoop2459 ], [ %605, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit317 ] %2943 = call i64 @llvm.cttz.i64(i64 %ActiveBits2462, i1 true) %2944 = trunc i64 %2943 to i32 %2945 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i308, i32 %2944) %2946 = and i32 %Accumulator2461, %2945 %2947 = shl i64 1, %2943 %2948 = xor i64 %2947, -1 %2949 = and i64 %ActiveBits2462, %2948 %2950 = icmp eq i64 %2949, 0 br i1 %2950, label %ComputeEnd2460, label %ComputeLoop2459, !amdgpu.uniform !42 ComputeEnd2460: ; preds = %ComputeLoop2459 %.lcssa4039 = phi i32 [ %2946, %ComputeLoop2459 ] %2951 = trunc i64 %605 to i32 %2952 = lshr i64 %605, 32 %2953 = trunc i64 %2952 to i32 %2954 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %2951, i32 0) %2955 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %2953, i32 %2954) %2956 = icmp eq i32 %2955, 0 %2957 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2956) %2958 = extractvalue { i1, i64 } %2957, 0 %2959 = extractvalue { i1, i64 } %2957, 1 br i1 %2958, label %606, label %609 ComputeLoop2463: ; preds = %for.cond.i.i.i326, %ComputeLoop2463 %Accumulator2465 = phi i32 [ %2964, %ComputeLoop2463 ], [ 0, %for.cond.i.i.i326 ] %OldValuePhi2466 = phi i32 [ %2963, %ComputeLoop2463 ], [ poison, %for.cond.i.i.i326 ] %ActiveBits2467 = phi i64 [ %2967, %ComputeLoop2463 ], [ %630, %for.cond.i.i.i326 ] %2960 = call i64 @llvm.cttz.i64(i64 %ActiveBits2467, i1 true) %2961 = trunc i64 %2960 to i32 %2962 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i338, i32 %2961) %2963 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2465, i32 %2961, i32 %OldValuePhi2466) %2964 = or i32 %Accumulator2465, %2962 %2965 = shl i64 1, %2960 %2966 = xor i64 %2965, -1 %2967 = and i64 %ActiveBits2467, %2966 %2968 = icmp eq i64 %2967, 0 br i1 %2968, label %ComputeEnd2464, label %ComputeLoop2463, !amdgpu.uniform !42 ComputeEnd2464: ; preds = %ComputeLoop2463 %.lcssa4034 = phi i32 [ %2963, %ComputeLoop2463 ] %.lcssa4033 = phi i32 [ %2964, %ComputeLoop2463 ] %div8.i.i.i.i.i334 = lshr i32 %spec.store.select.i.i.i333, 5 %idxprom.i.i.i.i.i335 = zext nneg i32 %div8.i.i.i.i.i334 to i64 %2969 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i335 %2970 = trunc i64 %630 to i32 %2971 = lshr i64 %630, 32 %2972 = trunc i64 %2971 to i32 %2973 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %2970, i32 0) %2974 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %2972, i32 %2973) %2975 = icmp eq i32 %2974, 0 %2976 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2975) %2977 = extractvalue { i1, i64 } %2976, 0 %2978 = extractvalue { i1, i64 } %2976, 1 br i1 %2977, label %631, label %633 Flow3661: ; preds = %651, %if.then.i.i.i.i344 %2979 = phi i1 [ false, %651 ], [ true, %if.then.i.i.i.i344 ] br i1 %2979, label %if.end14.i.i.i415, label %Flow3662, !amdgpu.uniform !42 ComputeLoop2468: ; preds = %if.then12.i.i.i349, %ComputeLoop2468 %Accumulator2470 = phi i32 [ %2983, %ComputeLoop2468 ], [ -1, %if.then12.i.i.i349 ] %ActiveBits2471 = phi i64 [ %2986, %ComputeLoop2468 ], [ %648, %if.then12.i.i.i349 ] %2980 = call i64 @llvm.cttz.i64(i64 %ActiveBits2471, i1 true) %2981 = trunc i64 %2980 to i32 %2982 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i355, i32 %2981) %2983 = and i32 %Accumulator2470, %2982 %2984 = shl i64 1, %2980 %2985 = xor i64 %2984, -1 %2986 = and i64 %ActiveBits2471, %2985 %2987 = icmp eq i64 %2986, 0 br i1 %2987, label %ComputeEnd2469, label %ComputeLoop2468, !amdgpu.uniform !42 ComputeEnd2469: ; preds = %ComputeLoop2468 %.lcssa4035 = phi i32 [ %2983, %ComputeLoop2468 ] %2988 = trunc i64 %648 to i32 %2989 = lshr i64 %648, 32 %2990 = trunc i64 %2989 to i32 %2991 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %2988, i32 0) %2992 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %2990, i32 %2991) %2993 = icmp eq i32 %2992, 0 %2994 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2993) %2995 = extractvalue { i1, i64 } %2994, 0 %2996 = extractvalue { i1, i64 } %2994, 1 br i1 %2995, label %649, label %651 ComputeLoop2472: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit, %ComputeLoop2472 %Accumulator2474 = phi i32 [ %3000, %ComputeLoop2472 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit ] %ActiveBits2475 = phi i64 [ %3003, %ComputeLoop2472 ], [ %729, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit ] %2997 = call i64 @llvm.cttz.i64(i64 %ActiveBits2475, i1 true) %2998 = trunc i64 %2997 to i32 %2999 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i414, i32 %2998) %3000 = and i32 %Accumulator2474, %2999 %3001 = shl i64 1, %2997 %3002 = xor i64 %3001, -1 %3003 = and i64 %ActiveBits2475, %3002 %3004 = icmp eq i64 %3003, 0 br i1 %3004, label %ComputeEnd2473, label %ComputeLoop2472, !amdgpu.uniform !42 ComputeEnd2473: ; preds = %ComputeLoop2472 %.lcssa4029 = phi i32 [ %3000, %ComputeLoop2472 ] %3005 = trunc i64 %729 to i32 %3006 = lshr i64 %729, 32 %3007 = trunc i64 %3006 to i32 %3008 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3005, i32 0) %3009 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3007, i32 %3008) %3010 = icmp eq i32 %3009, 0 %3011 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3010) %3012 = extractvalue { i1, i64 } %3011, 0 %3013 = extractvalue { i1, i64 } %3011, 1 br i1 %3012, label %730, label %733 ComputeLoop2476: ; preds = %for.cond.i.i1.i431, %ComputeLoop2476 %Accumulator2478 = phi i32 [ %3018, %ComputeLoop2476 ], [ 0, %for.cond.i.i1.i431 ] %OldValuePhi2479 = phi i32 [ %3017, %ComputeLoop2476 ], [ poison, %for.cond.i.i1.i431 ] %ActiveBits2480 = phi i64 [ %3021, %ComputeLoop2476 ], [ %742, %for.cond.i.i1.i431 ] %3014 = call i64 @llvm.cttz.i64(i64 %ActiveBits2480, i1 true) %3015 = trunc i64 %3014 to i32 %3016 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i443, i32 %3015) %3017 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2478, i32 %3015, i32 %OldValuePhi2479) %3018 = or i32 %Accumulator2478, %3016 %3019 = shl i64 1, %3014 %3020 = xor i64 %3019, -1 %3021 = and i64 %ActiveBits2480, %3020 %3022 = icmp eq i64 %3021, 0 br i1 %3022, label %ComputeEnd2477, label %ComputeLoop2476, !amdgpu.uniform !42 ComputeEnd2477: ; preds = %ComputeLoop2476 %.lcssa4024 = phi i32 [ %3017, %ComputeLoop2476 ] %.lcssa4023 = phi i32 [ %3018, %ComputeLoop2476 ] %div8.i.i.i.i.i439 = lshr i32 %spec.store.select.i.i.i438, 5 %idxprom.i.i.i.i.i440 = zext nneg i32 %div8.i.i.i.i.i439 to i64 %3023 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i440 %3024 = trunc i64 %742 to i32 %3025 = lshr i64 %742, 32 %3026 = trunc i64 %3025 to i32 %3027 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3024, i32 0) %3028 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3026, i32 %3027) %3029 = icmp eq i32 %3028, 0 %3030 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3029) %3031 = extractvalue { i1, i64 } %3030, 0 %3032 = extractvalue { i1, i64 } %3030, 1 br i1 %3031, label %743, label %745 Flow3642: ; preds = %763, %if.then.i.i.i.i449 %3033 = phi i1 [ false, %763 ], [ true, %if.then.i.i.i.i449 ] br i1 %3033, label %if.end14.i.i.i520, label %Flow3643, !amdgpu.uniform !42 ComputeLoop2481: ; preds = %if.then12.i.i.i454, %ComputeLoop2481 %Accumulator2483 = phi i32 [ %3037, %ComputeLoop2481 ], [ -1, %if.then12.i.i.i454 ] %ActiveBits2484 = phi i64 [ %3040, %ComputeLoop2481 ], [ %760, %if.then12.i.i.i454 ] %3034 = call i64 @llvm.cttz.i64(i64 %ActiveBits2484, i1 true) %3035 = trunc i64 %3034 to i32 %3036 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i460, i32 %3035) %3037 = and i32 %Accumulator2483, %3036 %3038 = shl i64 1, %3034 %3039 = xor i64 %3038, -1 %3040 = and i64 %ActiveBits2484, %3039 %3041 = icmp eq i64 %3040, 0 br i1 %3041, label %ComputeEnd2482, label %ComputeLoop2481, !amdgpu.uniform !42 ComputeEnd2482: ; preds = %ComputeLoop2481 %.lcssa4025 = phi i32 [ %3037, %ComputeLoop2481 ] %3042 = trunc i64 %760 to i32 %3043 = lshr i64 %760, 32 %3044 = trunc i64 %3043 to i32 %3045 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3042, i32 0) %3046 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3044, i32 %3045) %3047 = icmp eq i32 %3046, 0 %3048 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3047) %3049 = extractvalue { i1, i64 } %3048, 0 %3050 = extractvalue { i1, i64 } %3048, 1 br i1 %3049, label %761, label %763 ComputeLoop2485: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit528, %ComputeLoop2485 %Accumulator2487 = phi i32 [ %3054, %ComputeLoop2485 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit528 ] %ActiveBits2488 = phi i64 [ %3057, %ComputeLoop2485 ], [ %840, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit528 ] %3051 = call i64 @llvm.cttz.i64(i64 %ActiveBits2488, i1 true) %3052 = trunc i64 %3051 to i32 %3053 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i519, i32 %3052) %3054 = and i32 %Accumulator2487, %3053 %3055 = shl i64 1, %3051 %3056 = xor i64 %3055, -1 %3057 = and i64 %ActiveBits2488, %3056 %3058 = icmp eq i64 %3057, 0 br i1 %3058, label %ComputeEnd2486, label %ComputeLoop2485, !amdgpu.uniform !42 ComputeEnd2486: ; preds = %ComputeLoop2485 %.lcssa4019 = phi i32 [ %3054, %ComputeLoop2485 ] %3059 = trunc i64 %840 to i32 %3060 = lshr i64 %840, 32 %3061 = trunc i64 %3060 to i32 %3062 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3059, i32 0) %3063 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3061, i32 %3062) %3064 = icmp eq i32 %3063, 0 %3065 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3064) %3066 = extractvalue { i1, i64 } %3065, 0 %3067 = extractvalue { i1, i64 } %3065, 1 br i1 %3066, label %841, label %844 ComputeLoop2489: ; preds = %for.cond.i.i1.i537, %ComputeLoop2489 %Accumulator2491 = phi i32 [ %3072, %ComputeLoop2489 ], [ 0, %for.cond.i.i1.i537 ] %OldValuePhi2492 = phi i32 [ %3071, %ComputeLoop2489 ], [ poison, %for.cond.i.i1.i537 ] %ActiveBits2493 = phi i64 [ %3075, %ComputeLoop2489 ], [ %857, %for.cond.i.i1.i537 ] %3068 = call i64 @llvm.cttz.i64(i64 %ActiveBits2493, i1 true) %3069 = trunc i64 %3068 to i32 %3070 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i549, i32 %3069) %3071 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2491, i32 %3069, i32 %OldValuePhi2492) %3072 = or i32 %Accumulator2491, %3070 %3073 = shl i64 1, %3068 %3074 = xor i64 %3073, -1 %3075 = and i64 %ActiveBits2493, %3074 %3076 = icmp eq i64 %3075, 0 br i1 %3076, label %ComputeEnd2490, label %ComputeLoop2489, !amdgpu.uniform !42 ComputeEnd2490: ; preds = %ComputeLoop2489 %.lcssa4013 = phi i32 [ %3071, %ComputeLoop2489 ] %.lcssa4012 = phi i32 [ %3072, %ComputeLoop2489 ] %div8.i.i.i.i.i545 = lshr i32 %spec.store.select.i.i.i544, 5 %idxprom.i.i.i.i.i546 = zext nneg i32 %div8.i.i.i.i.i545 to i64 %3077 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i546 %3078 = trunc i64 %857 to i32 %3079 = lshr i64 %857, 32 %3080 = trunc i64 %3079 to i32 %3081 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3078, i32 0) %3082 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3080, i32 %3081) %3083 = icmp eq i32 %3082, 0 %3084 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3083) %3085 = extractvalue { i1, i64 } %3084, 0 %3086 = extractvalue { i1, i64 } %3084, 1 br i1 %3085, label %858, label %860 Flow3623: ; preds = %878, %if.then.i.i.i.i555 %3087 = phi i1 [ false, %878 ], [ true, %if.then.i.i.i.i555 ] br i1 %3087, label %if.end14.i.i.i626, label %Flow3624, !amdgpu.uniform !42 ComputeLoop2494: ; preds = %if.then12.i.i.i560, %ComputeLoop2494 %Accumulator2496 = phi i32 [ %3091, %ComputeLoop2494 ], [ -1, %if.then12.i.i.i560 ] %ActiveBits2497 = phi i64 [ %3094, %ComputeLoop2494 ], [ %875, %if.then12.i.i.i560 ] %3088 = call i64 @llvm.cttz.i64(i64 %ActiveBits2497, i1 true) %3089 = trunc i64 %3088 to i32 %3090 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i566, i32 %3089) %3091 = and i32 %Accumulator2496, %3090 %3092 = shl i64 1, %3088 %3093 = xor i64 %3092, -1 %3094 = and i64 %ActiveBits2497, %3093 %3095 = icmp eq i64 %3094, 0 br i1 %3095, label %ComputeEnd2495, label %ComputeLoop2494, !amdgpu.uniform !42 ComputeEnd2495: ; preds = %ComputeLoop2494 %.lcssa4014 = phi i32 [ %3091, %ComputeLoop2494 ] %3096 = trunc i64 %875 to i32 %3097 = lshr i64 %875, 32 %3098 = trunc i64 %3097 to i32 %3099 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3096, i32 0) %3100 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3098, i32 %3099) %3101 = icmp eq i32 %3100, 0 %3102 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3101) %3103 = extractvalue { i1, i64 } %3102, 0 %3104 = extractvalue { i1, i64 } %3102, 1 br i1 %3103, label %876, label %878 ComputeLoop2498: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit634, %ComputeLoop2498 %Accumulator2500 = phi i32 [ %3108, %ComputeLoop2498 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit634 ] %ActiveBits2501 = phi i64 [ %3111, %ComputeLoop2498 ], [ %973, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit634 ] %3105 = call i64 @llvm.cttz.i64(i64 %ActiveBits2501, i1 true) %3106 = trunc i64 %3105 to i32 %3107 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i625, i32 %3106) %3108 = and i32 %Accumulator2500, %3107 %3109 = shl i64 1, %3105 %3110 = xor i64 %3109, -1 %3111 = and i64 %ActiveBits2501, %3110 %3112 = icmp eq i64 %3111, 0 br i1 %3112, label %ComputeEnd2499, label %ComputeLoop2498, !amdgpu.uniform !42 ComputeEnd2499: ; preds = %ComputeLoop2498 %.lcssa4004 = phi i32 [ %3108, %ComputeLoop2498 ] %3113 = trunc i64 %973 to i32 %3114 = lshr i64 %973, 32 %3115 = trunc i64 %3114 to i32 %3116 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3113, i32 0) %3117 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3115, i32 %3116) %3118 = icmp eq i32 %3117, 0 %3119 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3118) %3120 = extractvalue { i1, i64 } %3119, 0 %3121 = extractvalue { i1, i64 } %3119, 1 br i1 %3120, label %974, label %977 ComputeLoop2502: ; preds = %for.cond.i.i.i636, %ComputeLoop2502 %Accumulator2504 = phi i32 [ %3126, %ComputeLoop2502 ], [ 0, %for.cond.i.i.i636 ] %OldValuePhi2505 = phi i32 [ %3125, %ComputeLoop2502 ], [ poison, %for.cond.i.i.i636 ] %ActiveBits2506 = phi i64 [ %3129, %ComputeLoop2502 ], [ %986, %for.cond.i.i.i636 ] %3122 = call i64 @llvm.cttz.i64(i64 %ActiveBits2506, i1 true) %3123 = trunc i64 %3122 to i32 %3124 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i648, i32 %3123) %3125 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2504, i32 %3123, i32 %OldValuePhi2505) %3126 = or i32 %Accumulator2504, %3124 %3127 = shl i64 1, %3122 %3128 = xor i64 %3127, -1 %3129 = and i64 %ActiveBits2506, %3128 %3130 = icmp eq i64 %3129, 0 br i1 %3130, label %ComputeEnd2503, label %ComputeLoop2502, !amdgpu.uniform !42 ComputeEnd2503: ; preds = %ComputeLoop2502 %.lcssa3999 = phi i32 [ %3125, %ComputeLoop2502 ] %.lcssa3998 = phi i32 [ %3126, %ComputeLoop2502 ] %div8.i.i.i.i.i644 = lshr i32 %spec.store.select.i.i.i643, 5 %idxprom.i.i.i.i.i645 = zext nneg i32 %div8.i.i.i.i.i644 to i64 %3131 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i645 %3132 = trunc i64 %986 to i32 %3133 = lshr i64 %986, 32 %3134 = trunc i64 %3133 to i32 %3135 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3132, i32 0) %3136 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3134, i32 %3135) %3137 = icmp eq i32 %3136, 0 %3138 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3137) %3139 = extractvalue { i1, i64 } %3138, 0 %3140 = extractvalue { i1, i64 } %3138, 1 br i1 %3139, label %987, label %989 Flow3604: ; preds = %1007, %if.then.i.i.i.i654 %3141 = phi i1 [ false, %1007 ], [ true, %if.then.i.i.i.i654 ] br i1 %3141, label %if.end14.i.i.i723, label %Flow3605, !amdgpu.uniform !42 ComputeLoop2507: ; preds = %if.then12.i.i.i659, %ComputeLoop2507 %Accumulator2509 = phi i32 [ %3145, %ComputeLoop2507 ], [ -1, %if.then12.i.i.i659 ] %ActiveBits2510 = phi i64 [ %3148, %ComputeLoop2507 ], [ %1004, %if.then12.i.i.i659 ] %3142 = call i64 @llvm.cttz.i64(i64 %ActiveBits2510, i1 true) %3143 = trunc i64 %3142 to i32 %3144 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i665, i32 %3143) %3145 = and i32 %Accumulator2509, %3144 %3146 = shl i64 1, %3142 %3147 = xor i64 %3146, -1 %3148 = and i64 %ActiveBits2510, %3147 %3149 = icmp eq i64 %3148, 0 br i1 %3149, label %ComputeEnd2508, label %ComputeLoop2507, !amdgpu.uniform !42 ComputeEnd2508: ; preds = %ComputeLoop2507 %.lcssa4000 = phi i32 [ %3145, %ComputeLoop2507 ] %3150 = trunc i64 %1004 to i32 %3151 = lshr i64 %1004, 32 %3152 = trunc i64 %3151 to i32 %3153 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3150, i32 0) %3154 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3152, i32 %3153) %3155 = icmp eq i32 %3154, 0 %3156 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3155) %3157 = extractvalue { i1, i64 } %3156, 0 %3158 = extractvalue { i1, i64 } %3156, 1 br i1 %3157, label %1005, label %1007 ComputeLoop2511: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit, %ComputeLoop2511 %Accumulator2513 = phi i32 [ %3162, %ComputeLoop2511 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit ] %ActiveBits2514 = phi i64 [ %3165, %ComputeLoop2511 ], [ %1059, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit ] %3159 = call i64 @llvm.cttz.i64(i64 %ActiveBits2514, i1 true) %3160 = trunc i64 %3159 to i32 %3161 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i722, i32 %3160) %3162 = and i32 %Accumulator2513, %3161 %3163 = shl i64 1, %3159 %3164 = xor i64 %3163, -1 %3165 = and i64 %ActiveBits2514, %3164 %3166 = icmp eq i64 %3165, 0 br i1 %3166, label %ComputeEnd2512, label %ComputeLoop2511, !amdgpu.uniform !42 ComputeEnd2512: ; preds = %ComputeLoop2511 %.lcssa3994 = phi i32 [ %3162, %ComputeLoop2511 ] %3167 = trunc i64 %1059 to i32 %3168 = lshr i64 %1059, 32 %3169 = trunc i64 %3168 to i32 %3170 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3167, i32 0) %3171 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3169, i32 %3170) %3172 = icmp eq i32 %3171, 0 %3173 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3172) %3174 = extractvalue { i1, i64 } %3173, 0 %3175 = extractvalue { i1, i64 } %3173, 1 br i1 %3174, label %1060, label %1063 ComputeLoop2515: ; preds = %for.cond.i.i.i739, %ComputeLoop2515 %Accumulator2517 = phi i32 [ %3180, %ComputeLoop2515 ], [ 0, %for.cond.i.i.i739 ] %OldValuePhi2518 = phi i32 [ %3179, %ComputeLoop2515 ], [ poison, %for.cond.i.i.i739 ] %ActiveBits2519 = phi i64 [ %3183, %ComputeLoop2515 ], [ %1081, %for.cond.i.i.i739 ] %3176 = call i64 @llvm.cttz.i64(i64 %ActiveBits2519, i1 true) %3177 = trunc i64 %3176 to i32 %3178 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i751, i32 %3177) %3179 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2517, i32 %3177, i32 %OldValuePhi2518) %3180 = or i32 %Accumulator2517, %3178 %3181 = shl i64 1, %3176 %3182 = xor i64 %3181, -1 %3183 = and i64 %ActiveBits2519, %3182 %3184 = icmp eq i64 %3183, 0 br i1 %3184, label %ComputeEnd2516, label %ComputeLoop2515, !amdgpu.uniform !42 ComputeEnd2516: ; preds = %ComputeLoop2515 %.lcssa3989 = phi i32 [ %3179, %ComputeLoop2515 ] %.lcssa3988 = phi i32 [ %3180, %ComputeLoop2515 ] %div8.i.i.i.i.i747 = lshr i32 %spec.store.select.i.i.i746, 5 %idxprom.i.i.i.i.i748 = zext nneg i32 %div8.i.i.i.i.i747 to i64 %3185 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i748 %3186 = trunc i64 %1081 to i32 %3187 = lshr i64 %1081, 32 %3188 = trunc i64 %3187 to i32 %3189 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3186, i32 0) %3190 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3188, i32 %3189) %3191 = icmp eq i32 %3190, 0 %3192 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3191) %3193 = extractvalue { i1, i64 } %3192, 0 %3194 = extractvalue { i1, i64 } %3192, 1 br i1 %3193, label %1082, label %1084 Flow3591: ; preds = %1102, %if.then.i.i.i.i757 %3195 = phi i1 [ false, %1102 ], [ true, %if.then.i.i.i.i757 ] br i1 %3195, label %if.end14.i.i.i828, label %Flow3592, !amdgpu.uniform !42 ComputeLoop2520: ; preds = %if.then12.i.i.i762, %ComputeLoop2520 %Accumulator2522 = phi i32 [ %3199, %ComputeLoop2520 ], [ -1, %if.then12.i.i.i762 ] %ActiveBits2523 = phi i64 [ %3202, %ComputeLoop2520 ], [ %1099, %if.then12.i.i.i762 ] %3196 = call i64 @llvm.cttz.i64(i64 %ActiveBits2523, i1 true) %3197 = trunc i64 %3196 to i32 %3198 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i768, i32 %3197) %3199 = and i32 %Accumulator2522, %3198 %3200 = shl i64 1, %3196 %3201 = xor i64 %3200, -1 %3202 = and i64 %ActiveBits2523, %3201 %3203 = icmp eq i64 %3202, 0 br i1 %3203, label %ComputeEnd2521, label %ComputeLoop2520, !amdgpu.uniform !42 ComputeEnd2521: ; preds = %ComputeLoop2520 %.lcssa3990 = phi i32 [ %3199, %ComputeLoop2520 ] %3204 = trunc i64 %1099 to i32 %3205 = lshr i64 %1099, 32 %3206 = trunc i64 %3205 to i32 %3207 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3204, i32 0) %3208 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3206, i32 %3207) %3209 = icmp eq i32 %3208, 0 %3210 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3209) %3211 = extractvalue { i1, i64 } %3210, 0 %3212 = extractvalue { i1, i64 } %3210, 1 br i1 %3211, label %1100, label %1102 ComputeLoop2524: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit836, %ComputeLoop2524 %Accumulator2526 = phi i32 [ %3216, %ComputeLoop2524 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit836 ] %ActiveBits2527 = phi i64 [ %3219, %ComputeLoop2524 ], [ %1176, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit836 ] %3213 = call i64 @llvm.cttz.i64(i64 %ActiveBits2527, i1 true) %3214 = trunc i64 %3213 to i32 %3215 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i827, i32 %3214) %3216 = and i32 %Accumulator2526, %3215 %3217 = shl i64 1, %3213 %3218 = xor i64 %3217, -1 %3219 = and i64 %ActiveBits2527, %3218 %3220 = icmp eq i64 %3219, 0 br i1 %3220, label %ComputeEnd2525, label %ComputeLoop2524, !amdgpu.uniform !42 ComputeEnd2525: ; preds = %ComputeLoop2524 %.lcssa3984 = phi i32 [ %3216, %ComputeLoop2524 ] %3221 = trunc i64 %1176 to i32 %3222 = lshr i64 %1176, 32 %3223 = trunc i64 %3222 to i32 %3224 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3221, i32 0) %3225 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3223, i32 %3224) %3226 = icmp eq i32 %3225, 0 %3227 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3226) %3228 = extractvalue { i1, i64 } %3227, 0 %3229 = extractvalue { i1, i64 } %3227, 1 br i1 %3228, label %1177, label %1180 ComputeLoop2528: ; preds = %for.cond.i.i1.i845, %ComputeLoop2528 %Accumulator2530 = phi i32 [ %3234, %ComputeLoop2528 ], [ 0, %for.cond.i.i1.i845 ] %OldValuePhi2531 = phi i32 [ %3233, %ComputeLoop2528 ], [ poison, %for.cond.i.i1.i845 ] %ActiveBits2532 = phi i64 [ %3237, %ComputeLoop2528 ], [ %1189, %for.cond.i.i1.i845 ] %3230 = call i64 @llvm.cttz.i64(i64 %ActiveBits2532, i1 true) %3231 = trunc i64 %3230 to i32 %3232 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i857, i32 %3231) %3233 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2530, i32 %3231, i32 %OldValuePhi2531) %3234 = or i32 %Accumulator2530, %3232 %3235 = shl i64 1, %3230 %3236 = xor i64 %3235, -1 %3237 = and i64 %ActiveBits2532, %3236 %3238 = icmp eq i64 %3237, 0 br i1 %3238, label %ComputeEnd2529, label %ComputeLoop2528, !amdgpu.uniform !42 ComputeEnd2529: ; preds = %ComputeLoop2528 %.lcssa3979 = phi i32 [ %3233, %ComputeLoop2528 ] %.lcssa3978 = phi i32 [ %3234, %ComputeLoop2528 ] %div8.i.i.i.i.i853 = lshr i32 %spec.store.select.i.i.i852, 5 %idxprom.i.i.i.i.i854 = zext nneg i32 %div8.i.i.i.i.i853 to i64 %3239 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i854 %3240 = trunc i64 %1189 to i32 %3241 = lshr i64 %1189, 32 %3242 = trunc i64 %3241 to i32 %3243 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3240, i32 0) %3244 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3242, i32 %3243) %3245 = icmp eq i32 %3244, 0 %3246 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3245) %3247 = extractvalue { i1, i64 } %3246, 0 %3248 = extractvalue { i1, i64 } %3246, 1 br i1 %3247, label %1190, label %1192 Flow3572: ; preds = %1210, %if.then.i.i.i.i863 %3249 = phi i1 [ false, %1210 ], [ true, %if.then.i.i.i.i863 ] br i1 %3249, label %if.end14.i.i.i934, label %Flow3573, !amdgpu.uniform !42 ComputeLoop2533: ; preds = %if.then12.i.i.i868, %ComputeLoop2533 %Accumulator2535 = phi i32 [ %3253, %ComputeLoop2533 ], [ -1, %if.then12.i.i.i868 ] %ActiveBits2536 = phi i64 [ %3256, %ComputeLoop2533 ], [ %1207, %if.then12.i.i.i868 ] %3250 = call i64 @llvm.cttz.i64(i64 %ActiveBits2536, i1 true) %3251 = trunc i64 %3250 to i32 %3252 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i874, i32 %3251) %3253 = and i32 %Accumulator2535, %3252 %3254 = shl i64 1, %3250 %3255 = xor i64 %3254, -1 %3256 = and i64 %ActiveBits2536, %3255 %3257 = icmp eq i64 %3256, 0 br i1 %3257, label %ComputeEnd2534, label %ComputeLoop2533, !amdgpu.uniform !42 ComputeEnd2534: ; preds = %ComputeLoop2533 %.lcssa3980 = phi i32 [ %3253, %ComputeLoop2533 ] %3258 = trunc i64 %1207 to i32 %3259 = lshr i64 %1207, 32 %3260 = trunc i64 %3259 to i32 %3261 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3258, i32 0) %3262 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3260, i32 %3261) %3263 = icmp eq i32 %3262, 0 %3264 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3263) %3265 = extractvalue { i1, i64 } %3264, 0 %3266 = extractvalue { i1, i64 } %3264, 1 br i1 %3265, label %1208, label %1210 ComputeLoop2537: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit942, %ComputeLoop2537 %Accumulator2539 = phi i32 [ %3270, %ComputeLoop2537 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit942 ] %ActiveBits2540 = phi i64 [ %3273, %ComputeLoop2537 ], [ %1287, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit942 ] %3267 = call i64 @llvm.cttz.i64(i64 %ActiveBits2540, i1 true) %3268 = trunc i64 %3267 to i32 %3269 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i933, i32 %3268) %3270 = and i32 %Accumulator2539, %3269 %3271 = shl i64 1, %3267 %3272 = xor i64 %3271, -1 %3273 = and i64 %ActiveBits2540, %3272 %3274 = icmp eq i64 %3273, 0 br i1 %3274, label %ComputeEnd2538, label %ComputeLoop2537, !amdgpu.uniform !42 ComputeEnd2538: ; preds = %ComputeLoop2537 %.lcssa3974 = phi i32 [ %3270, %ComputeLoop2537 ] %3275 = trunc i64 %1287 to i32 %3276 = lshr i64 %1287, 32 %3277 = trunc i64 %3276 to i32 %3278 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3275, i32 0) %3279 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3277, i32 %3278) %3280 = icmp eq i32 %3279, 0 %3281 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3280) %3282 = extractvalue { i1, i64 } %3281, 0 %3283 = extractvalue { i1, i64 } %3281, 1 br i1 %3282, label %1288, label %1291 ComputeLoop2541: ; preds = %for.cond.i.i.i949, %ComputeLoop2541 %Accumulator2543 = phi i32 [ %3288, %ComputeLoop2541 ], [ 0, %for.cond.i.i.i949 ] %OldValuePhi2544 = phi i32 [ %3287, %ComputeLoop2541 ], [ poison, %for.cond.i.i.i949 ] %ActiveBits2545 = phi i64 [ %3291, %ComputeLoop2541 ], [ %1332, %for.cond.i.i.i949 ] %3284 = call i64 @llvm.cttz.i64(i64 %ActiveBits2545, i1 true) %3285 = trunc i64 %3284 to i32 %3286 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i961, i32 %3285) %3287 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2543, i32 %3285, i32 %OldValuePhi2544) %3288 = or i32 %Accumulator2543, %3286 %3289 = shl i64 1, %3284 %3290 = xor i64 %3289, -1 %3291 = and i64 %ActiveBits2545, %3290 %3292 = icmp eq i64 %3291, 0 br i1 %3292, label %ComputeEnd2542, label %ComputeLoop2541, !amdgpu.uniform !42 ComputeEnd2542: ; preds = %ComputeLoop2541 %.lcssa3967 = phi i32 [ %3287, %ComputeLoop2541 ] %.lcssa3966 = phi i32 [ %3288, %ComputeLoop2541 ] %div8.i.i.i.i.i957 = lshr i32 %spec.store.select.i.i.i956, 5 %idxprom.i.i.i.i.i958 = zext nneg i32 %div8.i.i.i.i.i957 to i64 %3293 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i958 %3294 = trunc i64 %1332 to i32 %3295 = lshr i64 %1332, 32 %3296 = trunc i64 %3295 to i32 %3297 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3294, i32 0) %3298 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3296, i32 %3297) %3299 = icmp eq i32 %3298, 0 %3300 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3299) %3301 = extractvalue { i1, i64 } %3300, 0 %3302 = extractvalue { i1, i64 } %3300, 1 br i1 %3301, label %1333, label %1335 Flow3542: ; preds = %1353, %if.then.i.i.i.i967 %3303 = phi i1 [ false, %1353 ], [ true, %if.then.i.i.i.i967 ] br i1 %3303, label %if.end14.i.i.i1038, label %Flow3543, !amdgpu.uniform !42 ComputeLoop2546: ; preds = %if.then12.i.i.i972, %ComputeLoop2546 %Accumulator2548 = phi i32 [ %3307, %ComputeLoop2546 ], [ -1, %if.then12.i.i.i972 ] %ActiveBits2549 = phi i64 [ %3310, %ComputeLoop2546 ], [ %1350, %if.then12.i.i.i972 ] %3304 = call i64 @llvm.cttz.i64(i64 %ActiveBits2549, i1 true) %3305 = trunc i64 %3304 to i32 %3306 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i978, i32 %3305) %3307 = and i32 %Accumulator2548, %3306 %3308 = shl i64 1, %3304 %3309 = xor i64 %3308, -1 %3310 = and i64 %ActiveBits2549, %3309 %3311 = icmp eq i64 %3310, 0 br i1 %3311, label %ComputeEnd2547, label %ComputeLoop2546, !amdgpu.uniform !42 ComputeEnd2547: ; preds = %ComputeLoop2546 %.lcssa3968 = phi i32 [ %3307, %ComputeLoop2546 ] %3312 = trunc i64 %1350 to i32 %3313 = lshr i64 %1350, 32 %3314 = trunc i64 %3313 to i32 %3315 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3312, i32 0) %3316 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3314, i32 %3315) %3317 = icmp eq i32 %3316, 0 %3318 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3317) %3319 = extractvalue { i1, i64 } %3318, 0 %3320 = extractvalue { i1, i64 } %3318, 1 br i1 %3319, label %1351, label %1353 ComputeLoop2550: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit1046, %ComputeLoop2550 %Accumulator2552 = phi i32 [ %3324, %ComputeLoop2550 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit1046 ] %ActiveBits2553 = phi i64 [ %3327, %ComputeLoop2550 ], [ %1440, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit1046 ] %3321 = call i64 @llvm.cttz.i64(i64 %ActiveBits2553, i1 true) %3322 = trunc i64 %3321 to i32 %3323 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i1037, i32 %3322) %3324 = and i32 %Accumulator2552, %3323 %3325 = shl i64 1, %3321 %3326 = xor i64 %3325, -1 %3327 = and i64 %ActiveBits2553, %3326 %3328 = icmp eq i64 %3327, 0 br i1 %3328, label %ComputeEnd2551, label %ComputeLoop2550, !amdgpu.uniform !42 ComputeEnd2551: ; preds = %ComputeLoop2550 %.lcssa3958 = phi i32 [ %3324, %ComputeLoop2550 ] %3329 = trunc i64 %1440 to i32 %3330 = lshr i64 %1440, 32 %3331 = trunc i64 %3330 to i32 %3332 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3329, i32 0) %3333 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3331, i32 %3332) %3334 = icmp eq i32 %3333, 0 %3335 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3334) %3336 = extractvalue { i1, i64 } %3335, 0 %3337 = extractvalue { i1, i64 } %3335, 1 br i1 %3336, label %1441, label %1444 ComputeLoop2554: ; preds = %for.cond.i.i.i1050, %ComputeLoop2554 %Accumulator2556 = phi i32 [ %3342, %ComputeLoop2554 ], [ 0, %for.cond.i.i.i1050 ] %OldValuePhi2557 = phi i32 [ %3341, %ComputeLoop2554 ], [ poison, %for.cond.i.i.i1050 ] %ActiveBits2558 = phi i64 [ %3345, %ComputeLoop2554 ], [ %1453, %for.cond.i.i.i1050 ] %3338 = call i64 @llvm.cttz.i64(i64 %ActiveBits2558, i1 true) %3339 = trunc i64 %3338 to i32 %3340 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i1062, i32 %3339) %3341 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2556, i32 %3339, i32 %OldValuePhi2557) %3342 = or i32 %Accumulator2556, %3340 %3343 = shl i64 1, %3338 %3344 = xor i64 %3343, -1 %3345 = and i64 %ActiveBits2558, %3344 %3346 = icmp eq i64 %3345, 0 br i1 %3346, label %ComputeEnd2555, label %ComputeLoop2554, !amdgpu.uniform !42 ComputeEnd2555: ; preds = %ComputeLoop2554 %.lcssa3953 = phi i32 [ %3341, %ComputeLoop2554 ] %.lcssa3952 = phi i32 [ %3342, %ComputeLoop2554 ] %div8.i.i.i.i.i1058 = lshr i32 %spec.store.select.i.i.i1057, 5 %idxprom.i.i.i.i.i1059 = zext nneg i32 %div8.i.i.i.i.i1058 to i64 %3347 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i1059 %3348 = trunc i64 %1453 to i32 %3349 = lshr i64 %1453, 32 %3350 = trunc i64 %3349 to i32 %3351 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3348, i32 0) %3352 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3350, i32 %3351) %3353 = icmp eq i32 %3352, 0 %3354 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3353) %3355 = extractvalue { i1, i64 } %3354, 0 %3356 = extractvalue { i1, i64 } %3354, 1 br i1 %3355, label %1454, label %1456 Flow3518: ; preds = %1474, %if.then.i.i.i.i1068 %3357 = phi i1 [ false, %1474 ], [ true, %if.then.i.i.i.i1068 ] br i1 %3357, label %if.end14.i.i.i1137, label %Flow3519, !amdgpu.uniform !42 ComputeLoop2559: ; preds = %if.then12.i.i.i1073, %ComputeLoop2559 %Accumulator2561 = phi i32 [ %3361, %ComputeLoop2559 ], [ -1, %if.then12.i.i.i1073 ] %ActiveBits2562 = phi i64 [ %3364, %ComputeLoop2559 ], [ %1471, %if.then12.i.i.i1073 ] %3358 = call i64 @llvm.cttz.i64(i64 %ActiveBits2562, i1 true) %3359 = trunc i64 %3358 to i32 %3360 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i1079, i32 %3359) %3361 = and i32 %Accumulator2561, %3360 %3362 = shl i64 1, %3358 %3363 = xor i64 %3362, -1 %3364 = and i64 %ActiveBits2562, %3363 %3365 = icmp eq i64 %3364, 0 br i1 %3365, label %ComputeEnd2560, label %ComputeLoop2559, !amdgpu.uniform !42 ComputeEnd2560: ; preds = %ComputeLoop2559 %.lcssa3954 = phi i32 [ %3361, %ComputeLoop2559 ] %3366 = trunc i64 %1471 to i32 %3367 = lshr i64 %1471, 32 %3368 = trunc i64 %3367 to i32 %3369 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3366, i32 0) %3370 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3368, i32 %3369) %3371 = icmp eq i32 %3370, 0 %3372 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3371) %3373 = extractvalue { i1, i64 } %3372, 0 %3374 = extractvalue { i1, i64 } %3372, 1 br i1 %3373, label %1472, label %1474 ComputeLoop2563: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit1145, %ComputeLoop2563 %Accumulator2565 = phi i32 [ %3378, %ComputeLoop2563 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit1145 ] %ActiveBits2566 = phi i64 [ %3381, %ComputeLoop2563 ], [ %1526, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit1145 ] %3375 = call i64 @llvm.cttz.i64(i64 %ActiveBits2566, i1 true) %3376 = trunc i64 %3375 to i32 %3377 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i1136, i32 %3376) %3378 = and i32 %Accumulator2565, %3377 %3379 = shl i64 1, %3375 %3380 = xor i64 %3379, -1 %3381 = and i64 %ActiveBits2566, %3380 %3382 = icmp eq i64 %3381, 0 br i1 %3382, label %ComputeEnd2564, label %ComputeLoop2563, !amdgpu.uniform !42 ComputeEnd2564: ; preds = %ComputeLoop2563 %.lcssa3948 = phi i32 [ %3378, %ComputeLoop2563 ] %3383 = trunc i64 %1526 to i32 %3384 = lshr i64 %1526, 32 %3385 = trunc i64 %3384 to i32 %3386 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3383, i32 0) %3387 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3385, i32 %3386) %3388 = icmp eq i32 %3387, 0 %3389 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3388) %3390 = extractvalue { i1, i64 } %3389, 0 %3391 = extractvalue { i1, i64 } %3389, 1 br i1 %3390, label %1527, label %1530 ComputeLoop2567: ; preds = %for.cond.i.i1.i1154, %ComputeLoop2567 %Accumulator2569 = phi i32 [ %3396, %ComputeLoop2567 ], [ 0, %for.cond.i.i1.i1154 ] %OldValuePhi2570 = phi i32 [ %3395, %ComputeLoop2567 ], [ poison, %for.cond.i.i1.i1154 ] %ActiveBits2571 = phi i64 [ %3399, %ComputeLoop2567 ], [ %1539, %for.cond.i.i1.i1154 ] %3392 = call i64 @llvm.cttz.i64(i64 %ActiveBits2571, i1 true) %3393 = trunc i64 %3392 to i32 %3394 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i1166, i32 %3393) %3395 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2569, i32 %3393, i32 %OldValuePhi2570) %3396 = or i32 %Accumulator2569, %3394 %3397 = shl i64 1, %3392 %3398 = xor i64 %3397, -1 %3399 = and i64 %ActiveBits2571, %3398 %3400 = icmp eq i64 %3399, 0 br i1 %3400, label %ComputeEnd2568, label %ComputeLoop2567, !amdgpu.uniform !42 ComputeEnd2568: ; preds = %ComputeLoop2567 %.lcssa3943 = phi i32 [ %3395, %ComputeLoop2567 ] %.lcssa3942 = phi i32 [ %3396, %ComputeLoop2567 ] %div8.i.i.i.i.i1162 = lshr i32 %spec.store.select.i.i.i1161, 5 %idxprom.i.i.i.i.i1163 = zext nneg i32 %div8.i.i.i.i.i1162 to i64 %3401 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i1163 %3402 = trunc i64 %1539 to i32 %3403 = lshr i64 %1539, 32 %3404 = trunc i64 %3403 to i32 %3405 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3402, i32 0) %3406 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3404, i32 %3405) %3407 = icmp eq i32 %3406, 0 %3408 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3407) %3409 = extractvalue { i1, i64 } %3408, 0 %3410 = extractvalue { i1, i64 } %3408, 1 br i1 %3409, label %1540, label %1542 Flow3507: ; preds = %1560, %if.then.i.i.i.i1172 %3411 = phi i1 [ false, %1560 ], [ true, %if.then.i.i.i.i1172 ] br i1 %3411, label %if.end14.i.i.i1243, label %Flow3508, !amdgpu.uniform !42 ComputeLoop2572: ; preds = %if.then12.i.i.i1177, %ComputeLoop2572 %Accumulator2574 = phi i32 [ %3415, %ComputeLoop2572 ], [ -1, %if.then12.i.i.i1177 ] %ActiveBits2575 = phi i64 [ %3418, %ComputeLoop2572 ], [ %1557, %if.then12.i.i.i1177 ] %3412 = call i64 @llvm.cttz.i64(i64 %ActiveBits2575, i1 true) %3413 = trunc i64 %3412 to i32 %3414 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i1183, i32 %3413) %3415 = and i32 %Accumulator2574, %3414 %3416 = shl i64 1, %3412 %3417 = xor i64 %3416, -1 %3418 = and i64 %ActiveBits2575, %3417 %3419 = icmp eq i64 %3418, 0 br i1 %3419, label %ComputeEnd2573, label %ComputeLoop2572, !amdgpu.uniform !42 ComputeEnd2573: ; preds = %ComputeLoop2572 %.lcssa3944 = phi i32 [ %3415, %ComputeLoop2572 ] %3420 = trunc i64 %1557 to i32 %3421 = lshr i64 %1557, 32 %3422 = trunc i64 %3421 to i32 %3423 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3420, i32 0) %3424 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3422, i32 %3423) %3425 = icmp eq i32 %3424, 0 %3426 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3425) %3427 = extractvalue { i1, i64 } %3426, 0 %3428 = extractvalue { i1, i64 } %3426, 1 br i1 %3427, label %1558, label %1560 ComputeLoop2576: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1251, %ComputeLoop2576 %Accumulator2578 = phi i32 [ %3432, %ComputeLoop2576 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1251 ] %ActiveBits2579 = phi i64 [ %3435, %ComputeLoop2576 ], [ %1637, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1251 ] %3429 = call i64 @llvm.cttz.i64(i64 %ActiveBits2579, i1 true) %3430 = trunc i64 %3429 to i32 %3431 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i1242, i32 %3430) %3432 = and i32 %Accumulator2578, %3431 %3433 = shl i64 1, %3429 %3434 = xor i64 %3433, -1 %3435 = and i64 %ActiveBits2579, %3434 %3436 = icmp eq i64 %3435, 0 br i1 %3436, label %ComputeEnd2577, label %ComputeLoop2576, !amdgpu.uniform !42 ComputeEnd2577: ; preds = %ComputeLoop2576 %.lcssa3938 = phi i32 [ %3432, %ComputeLoop2576 ] %3437 = trunc i64 %1637 to i32 %3438 = lshr i64 %1637, 32 %3439 = trunc i64 %3438 to i32 %3440 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3437, i32 0) %3441 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3439, i32 %3440) %3442 = icmp eq i32 %3441, 0 %3443 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3442) %3444 = extractvalue { i1, i64 } %3443, 0 %3445 = extractvalue { i1, i64 } %3443, 1 br i1 %3444, label %1638, label %1641 ComputeLoop2580: ; preds = %for.cond.i.i.i1253, %ComputeLoop2580 %Accumulator2582 = phi i32 [ %3450, %ComputeLoop2580 ], [ 0, %for.cond.i.i.i1253 ] %OldValuePhi2583 = phi i32 [ %3449, %ComputeLoop2580 ], [ poison, %for.cond.i.i.i1253 ] %ActiveBits2584 = phi i64 [ %3453, %ComputeLoop2580 ], [ %1650, %for.cond.i.i.i1253 ] %3446 = call i64 @llvm.cttz.i64(i64 %ActiveBits2584, i1 true) %3447 = trunc i64 %3446 to i32 %3448 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i1265, i32 %3447) %3449 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2582, i32 %3447, i32 %OldValuePhi2583) %3450 = or i32 %Accumulator2582, %3448 %3451 = shl i64 1, %3446 %3452 = xor i64 %3451, -1 %3453 = and i64 %ActiveBits2584, %3452 %3454 = icmp eq i64 %3453, 0 br i1 %3454, label %ComputeEnd2581, label %ComputeLoop2580, !amdgpu.uniform !42 ComputeEnd2581: ; preds = %ComputeLoop2580 %.lcssa3933 = phi i32 [ %3449, %ComputeLoop2580 ] %.lcssa3932 = phi i32 [ %3450, %ComputeLoop2580 ] %div8.i.i.i.i.i1261 = lshr i32 %spec.store.select.i.i.i1260, 5 %idxprom.i.i.i.i.i1262 = zext nneg i32 %div8.i.i.i.i.i1261 to i64 %3455 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i1262 %3456 = trunc i64 %1650 to i32 %3457 = lshr i64 %1650, 32 %3458 = trunc i64 %3457 to i32 %3459 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3456, i32 0) %3460 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3458, i32 %3459) %3461 = icmp eq i32 %3460, 0 %3462 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3461) %3463 = extractvalue { i1, i64 } %3462, 0 %3464 = extractvalue { i1, i64 } %3462, 1 br i1 %3463, label %1651, label %1653 Flow3481: ; preds = %1671, %if.then.i.i.i.i1271 %3465 = phi i1 [ false, %1671 ], [ true, %if.then.i.i.i.i1271 ] br i1 %3465, label %if.end14.i.i.i1342, label %Flow3482, !amdgpu.uniform !42 ComputeLoop2585: ; preds = %if.then12.i.i.i1276, %ComputeLoop2585 %Accumulator2587 = phi i32 [ %3469, %ComputeLoop2585 ], [ -1, %if.then12.i.i.i1276 ] %ActiveBits2588 = phi i64 [ %3472, %ComputeLoop2585 ], [ %1668, %if.then12.i.i.i1276 ] %3466 = call i64 @llvm.cttz.i64(i64 %ActiveBits2588, i1 true) %3467 = trunc i64 %3466 to i32 %3468 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i1282, i32 %3467) %3469 = and i32 %Accumulator2587, %3468 %3470 = shl i64 1, %3466 %3471 = xor i64 %3470, -1 %3472 = and i64 %ActiveBits2588, %3471 %3473 = icmp eq i64 %3472, 0 br i1 %3473, label %ComputeEnd2586, label %ComputeLoop2585, !amdgpu.uniform !42 ComputeEnd2586: ; preds = %ComputeLoop2585 %.lcssa3934 = phi i32 [ %3469, %ComputeLoop2585 ] %3474 = trunc i64 %1668 to i32 %3475 = lshr i64 %1668, 32 %3476 = trunc i64 %3475 to i32 %3477 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3474, i32 0) %3478 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3476, i32 %3477) %3479 = icmp eq i32 %3478, 0 %3480 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3479) %3481 = extractvalue { i1, i64 } %3480, 0 %3482 = extractvalue { i1, i64 } %3480, 1 br i1 %3481, label %1669, label %1671 ComputeLoop2589: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp11string_viewEEERS1_T_.exit, %ComputeLoop2589 %Accumulator2591 = phi i32 [ %3486, %ComputeLoop2589 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp11string_viewEEERS1_T_.exit ] %ActiveBits2592 = phi i64 [ %3489, %ComputeLoop2589 ], [ %1748, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp11string_viewEEERS1_T_.exit ] %3483 = call i64 @llvm.cttz.i64(i64 %ActiveBits2592, i1 true) %3484 = trunc i64 %3483 to i32 %3485 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i1341, i32 %3484) %3486 = and i32 %Accumulator2591, %3485 %3487 = shl i64 1, %3483 %3488 = xor i64 %3487, -1 %3489 = and i64 %ActiveBits2592, %3488 %3490 = icmp eq i64 %3489, 0 br i1 %3490, label %ComputeEnd2590, label %ComputeLoop2589, !amdgpu.uniform !42 ComputeEnd2590: ; preds = %ComputeLoop2589 %.lcssa3928 = phi i32 [ %3486, %ComputeLoop2589 ] %3491 = trunc i64 %1748 to i32 %3492 = lshr i64 %1748, 32 %3493 = trunc i64 %3492 to i32 %3494 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3491, i32 0) %3495 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3493, i32 %3494) %3496 = icmp eq i32 %3495, 0 %3497 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3496) %3498 = extractvalue { i1, i64 } %3497, 0 %3499 = extractvalue { i1, i64 } %3497, 1 br i1 %3498, label %1749, label %1752 ComputeLoop2593: ; preds = %for.cond.i.i1.i1358, %ComputeLoop2593 %Accumulator2595 = phi i32 [ %3504, %ComputeLoop2593 ], [ 0, %for.cond.i.i1.i1358 ] %OldValuePhi2596 = phi i32 [ %3503, %ComputeLoop2593 ], [ poison, %for.cond.i.i1.i1358 ] %ActiveBits2597 = phi i64 [ %3507, %ComputeLoop2593 ], [ %1761, %for.cond.i.i1.i1358 ] %3500 = call i64 @llvm.cttz.i64(i64 %ActiveBits2597, i1 true) %3501 = trunc i64 %3500 to i32 %3502 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i1370, i32 %3501) %3503 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2595, i32 %3501, i32 %OldValuePhi2596) %3504 = or i32 %Accumulator2595, %3502 %3505 = shl i64 1, %3500 %3506 = xor i64 %3505, -1 %3507 = and i64 %ActiveBits2597, %3506 %3508 = icmp eq i64 %3507, 0 br i1 %3508, label %ComputeEnd2594, label %ComputeLoop2593, !amdgpu.uniform !42 ComputeEnd2594: ; preds = %ComputeLoop2593 %.lcssa3923 = phi i32 [ %3503, %ComputeLoop2593 ] %.lcssa3922 = phi i32 [ %3504, %ComputeLoop2593 ] %div8.i.i.i.i.i1366 = lshr i32 %spec.store.select.i.i.i1365, 5 %idxprom.i.i.i.i.i1367 = zext nneg i32 %div8.i.i.i.i.i1366 to i64 %3509 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i1367 %3510 = trunc i64 %1761 to i32 %3511 = lshr i64 %1761, 32 %3512 = trunc i64 %3511 to i32 %3513 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3510, i32 0) %3514 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3512, i32 %3513) %3515 = icmp eq i32 %3514, 0 %3516 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3515) %3517 = extractvalue { i1, i64 } %3516, 0 %3518 = extractvalue { i1, i64 } %3516, 1 br i1 %3517, label %1762, label %1764 Flow3455: ; preds = %1782, %if.then.i.i.i.i1376 %3519 = phi i1 [ false, %1782 ], [ true, %if.then.i.i.i.i1376 ] br i1 %3519, label %if.end14.i.i.i1447, label %Flow3456, !amdgpu.uniform !42 ComputeLoop2598: ; preds = %if.then12.i.i.i1381, %ComputeLoop2598 %Accumulator2600 = phi i32 [ %3523, %ComputeLoop2598 ], [ -1, %if.then12.i.i.i1381 ] %ActiveBits2601 = phi i64 [ %3526, %ComputeLoop2598 ], [ %1779, %if.then12.i.i.i1381 ] %3520 = call i64 @llvm.cttz.i64(i64 %ActiveBits2601, i1 true) %3521 = trunc i64 %3520 to i32 %3522 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i1387, i32 %3521) %3523 = and i32 %Accumulator2600, %3522 %3524 = shl i64 1, %3520 %3525 = xor i64 %3524, -1 %3526 = and i64 %ActiveBits2601, %3525 %3527 = icmp eq i64 %3526, 0 br i1 %3527, label %ComputeEnd2599, label %ComputeLoop2598, !amdgpu.uniform !42 ComputeEnd2599: ; preds = %ComputeLoop2598 %.lcssa3924 = phi i32 [ %3523, %ComputeLoop2598 ] %3528 = trunc i64 %1779 to i32 %3529 = lshr i64 %1779, 32 %3530 = trunc i64 %3529 to i32 %3531 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3528, i32 0) %3532 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3530, i32 %3531) %3533 = icmp eq i32 %3532, 0 %3534 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3533) %3535 = extractvalue { i1, i64 } %3534, 0 %3536 = extractvalue { i1, i64 } %3534, 1 br i1 %3535, label %1780, label %1782 ComputeLoop2602: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1455, %ComputeLoop2602 %Accumulator2604 = phi i32 [ %3540, %ComputeLoop2602 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1455 ] %ActiveBits2605 = phi i64 [ %3543, %ComputeLoop2602 ], [ %1859, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1455 ] %3537 = call i64 @llvm.cttz.i64(i64 %ActiveBits2605, i1 true) %3538 = trunc i64 %3537 to i32 %3539 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i1446, i32 %3538) %3540 = and i32 %Accumulator2604, %3539 %3541 = shl i64 1, %3537 %3542 = xor i64 %3541, -1 %3543 = and i64 %ActiveBits2605, %3542 %3544 = icmp eq i64 %3543, 0 br i1 %3544, label %ComputeEnd2603, label %ComputeLoop2602, !amdgpu.uniform !42 ComputeEnd2603: ; preds = %ComputeLoop2602 %.lcssa3918 = phi i32 [ %3540, %ComputeLoop2602 ] %3545 = trunc i64 %1859 to i32 %3546 = lshr i64 %1859, 32 %3547 = trunc i64 %3546 to i32 %3548 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3545, i32 0) %3549 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3547, i32 %3548) %3550 = icmp eq i32 %3549, 0 %3551 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3550) %3552 = extractvalue { i1, i64 } %3551, 0 %3553 = extractvalue { i1, i64 } %3551, 1 br i1 %3552, label %1860, label %1863 ComputeLoop2606: ; preds = %for.cond.i.i1.i1465, %ComputeLoop2606 %Accumulator2608 = phi i32 [ %3558, %ComputeLoop2606 ], [ 0, %for.cond.i.i1.i1465 ] %OldValuePhi2609 = phi i32 [ %3557, %ComputeLoop2606 ], [ poison, %for.cond.i.i1.i1465 ] %ActiveBits2610 = phi i64 [ %3561, %ComputeLoop2606 ], [ %1876, %for.cond.i.i1.i1465 ] %3554 = call i64 @llvm.cttz.i64(i64 %ActiveBits2610, i1 true) %3555 = trunc i64 %3554 to i32 %3556 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i1477, i32 %3555) %3557 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2608, i32 %3555, i32 %OldValuePhi2609) %3558 = or i32 %Accumulator2608, %3556 %3559 = shl i64 1, %3554 %3560 = xor i64 %3559, -1 %3561 = and i64 %ActiveBits2610, %3560 %3562 = icmp eq i64 %3561, 0 br i1 %3562, label %ComputeEnd2607, label %ComputeLoop2606, !amdgpu.uniform !42 ComputeEnd2607: ; preds = %ComputeLoop2606 %.lcssa3912 = phi i32 [ %3557, %ComputeLoop2606 ] %.lcssa3911 = phi i32 [ %3558, %ComputeLoop2606 ] %div8.i.i.i.i.i1473 = lshr i32 %spec.store.select.i.i.i1472, 5 %idxprom.i.i.i.i.i1474 = zext nneg i32 %div8.i.i.i.i.i1473 to i64 %3563 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i1474 %3564 = trunc i64 %1876 to i32 %3565 = lshr i64 %1876, 32 %3566 = trunc i64 %3565 to i32 %3567 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3564, i32 0) %3568 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3566, i32 %3567) %3569 = icmp eq i32 %3568, 0 %3570 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3569) %3571 = extractvalue { i1, i64 } %3570, 0 %3572 = extractvalue { i1, i64 } %3570, 1 br i1 %3571, label %1877, label %1879 Flow3429: ; preds = %1897, %if.then.i.i.i.i1483 %3573 = phi i1 [ false, %1897 ], [ true, %if.then.i.i.i.i1483 ] br i1 %3573, label %if.end14.i.i.i1554, label %Flow3430, !amdgpu.uniform !42 ComputeLoop2611: ; preds = %if.then12.i.i.i1488, %ComputeLoop2611 %Accumulator2613 = phi i32 [ %3577, %ComputeLoop2611 ], [ -1, %if.then12.i.i.i1488 ] %ActiveBits2614 = phi i64 [ %3580, %ComputeLoop2611 ], [ %1894, %if.then12.i.i.i1488 ] %3574 = call i64 @llvm.cttz.i64(i64 %ActiveBits2614, i1 true) %3575 = trunc i64 %3574 to i32 %3576 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i1494, i32 %3575) %3577 = and i32 %Accumulator2613, %3576 %3578 = shl i64 1, %3574 %3579 = xor i64 %3578, -1 %3580 = and i64 %ActiveBits2614, %3579 %3581 = icmp eq i64 %3580, 0 br i1 %3581, label %ComputeEnd2612, label %ComputeLoop2611, !amdgpu.uniform !42 ComputeEnd2612: ; preds = %ComputeLoop2611 %.lcssa3913 = phi i32 [ %3577, %ComputeLoop2611 ] %3582 = trunc i64 %1894 to i32 %3583 = lshr i64 %1894, 32 %3584 = trunc i64 %3583 to i32 %3585 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3582, i32 0) %3586 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3584, i32 %3585) %3587 = icmp eq i32 %3586, 0 %3588 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3587) %3589 = extractvalue { i1, i64 } %3588, 0 %3590 = extractvalue { i1, i64 } %3588, 1 br i1 %3589, label %1895, label %1897 ComputeLoop2615: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1562, %ComputeLoop2615 %Accumulator2617 = phi i32 [ %3594, %ComputeLoop2615 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1562 ] %ActiveBits2618 = phi i64 [ %3597, %ComputeLoop2615 ], [ %1992, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1562 ] %3591 = call i64 @llvm.cttz.i64(i64 %ActiveBits2618, i1 true) %3592 = trunc i64 %3591 to i32 %3593 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i1553, i32 %3592) %3594 = and i32 %Accumulator2617, %3593 %3595 = shl i64 1, %3591 %3596 = xor i64 %3595, -1 %3597 = and i64 %ActiveBits2618, %3596 %3598 = icmp eq i64 %3597, 0 br i1 %3598, label %ComputeEnd2616, label %ComputeLoop2615, !amdgpu.uniform !42 ComputeEnd2616: ; preds = %ComputeLoop2615 %.lcssa3903 = phi i32 [ %3594, %ComputeLoop2615 ] %3599 = trunc i64 %1992 to i32 %3600 = lshr i64 %1992, 32 %3601 = trunc i64 %3600 to i32 %3602 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3599, i32 0) %3603 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3601, i32 %3602) %3604 = icmp eq i32 %3603, 0 %3605 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3604) %3606 = extractvalue { i1, i64 } %3605, 0 %3607 = extractvalue { i1, i64 } %3605, 1 br i1 %3606, label %1993, label %1996 ComputeLoop2619: ; preds = %for.cond.i.i.i1566, %ComputeLoop2619 %Accumulator2621 = phi i32 [ %3612, %ComputeLoop2619 ], [ 0, %for.cond.i.i.i1566 ] %OldValuePhi2622 = phi i32 [ %3611, %ComputeLoop2619 ], [ poison, %for.cond.i.i.i1566 ] %ActiveBits2623 = phi i64 [ %3615, %ComputeLoop2619 ], [ %2005, %for.cond.i.i.i1566 ] %3608 = call i64 @llvm.cttz.i64(i64 %ActiveBits2623, i1 true) %3609 = trunc i64 %3608 to i32 %3610 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i1578, i32 %3609) %3611 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2621, i32 %3609, i32 %OldValuePhi2622) %3612 = or i32 %Accumulator2621, %3610 %3613 = shl i64 1, %3608 %3614 = xor i64 %3613, -1 %3615 = and i64 %ActiveBits2623, %3614 %3616 = icmp eq i64 %3615, 0 br i1 %3616, label %ComputeEnd2620, label %ComputeLoop2619, !amdgpu.uniform !42 ComputeEnd2620: ; preds = %ComputeLoop2619 %.lcssa3898 = phi i32 [ %3611, %ComputeLoop2619 ] %.lcssa3897 = phi i32 [ %3612, %ComputeLoop2619 ] %div8.i.i.i.i.i1574 = lshr i32 %spec.store.select.i.i.i1573, 5 %idxprom.i.i.i.i.i1575 = zext nneg i32 %div8.i.i.i.i.i1574 to i64 %3617 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i1575 %3618 = trunc i64 %2005 to i32 %3619 = lshr i64 %2005, 32 %3620 = trunc i64 %3619 to i32 %3621 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3618, i32 0) %3622 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3620, i32 %3621) %3623 = icmp eq i32 %3622, 0 %3624 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3623) %3625 = extractvalue { i1, i64 } %3624, 0 %3626 = extractvalue { i1, i64 } %3624, 1 br i1 %3625, label %2006, label %2008 Flow3403: ; preds = %2026, %if.then.i.i.i.i1584 %3627 = phi i1 [ false, %2026 ], [ true, %if.then.i.i.i.i1584 ] br i1 %3627, label %if.end14.i.i.i1653, label %Flow3404, !amdgpu.uniform !42 ComputeLoop2624: ; preds = %if.then12.i.i.i1589, %ComputeLoop2624 %Accumulator2626 = phi i32 [ %3631, %ComputeLoop2624 ], [ -1, %if.then12.i.i.i1589 ] %ActiveBits2627 = phi i64 [ %3634, %ComputeLoop2624 ], [ %2023, %if.then12.i.i.i1589 ] %3628 = call i64 @llvm.cttz.i64(i64 %ActiveBits2627, i1 true) %3629 = trunc i64 %3628 to i32 %3630 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i1595, i32 %3629) %3631 = and i32 %Accumulator2626, %3630 %3632 = shl i64 1, %3628 %3633 = xor i64 %3632, -1 %3634 = and i64 %ActiveBits2627, %3633 %3635 = icmp eq i64 %3634, 0 br i1 %3635, label %ComputeEnd2625, label %ComputeLoop2624, !amdgpu.uniform !42 ComputeEnd2625: ; preds = %ComputeLoop2624 %.lcssa3899 = phi i32 [ %3631, %ComputeLoop2624 ] %3636 = trunc i64 %2023 to i32 %3637 = lshr i64 %2023, 32 %3638 = trunc i64 %3637 to i32 %3639 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3636, i32 0) %3640 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3638, i32 %3639) %3641 = icmp eq i32 %3640, 0 %3642 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3641) %3643 = extractvalue { i1, i64 } %3642, 0 %3644 = extractvalue { i1, i64 } %3642, 1 br i1 %3643, label %2024, label %2026 ComputeLoop2628: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit1661, %ComputeLoop2628 %Accumulator2630 = phi i32 [ %3648, %ComputeLoop2628 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit1661 ] %ActiveBits2631 = phi i64 [ %3651, %ComputeLoop2628 ], [ %2078, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit1661 ] %3645 = call i64 @llvm.cttz.i64(i64 %ActiveBits2631, i1 true) %3646 = trunc i64 %3645 to i32 %3647 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i1652, i32 %3646) %3648 = and i32 %Accumulator2630, %3647 %3649 = shl i64 1, %3645 %3650 = xor i64 %3649, -1 %3651 = and i64 %ActiveBits2631, %3650 %3652 = icmp eq i64 %3651, 0 br i1 %3652, label %ComputeEnd2629, label %ComputeLoop2628, !amdgpu.uniform !42 ComputeEnd2629: ; preds = %ComputeLoop2628 %.lcssa3893 = phi i32 [ %3648, %ComputeLoop2628 ] %3653 = trunc i64 %2078 to i32 %3654 = lshr i64 %2078, 32 %3655 = trunc i64 %3654 to i32 %3656 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3653, i32 0) %3657 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3655, i32 %3656) %3658 = icmp eq i32 %3657, 0 %3659 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3658) %3660 = extractvalue { i1, i64 } %3659, 0 %3661 = extractvalue { i1, i64 } %3659, 1 br i1 %3660, label %2079, label %2082 ComputeLoop2632: ; preds = %for.cond.i.i.i1670, %ComputeLoop2632 %Accumulator2634 = phi i32 [ %3666, %ComputeLoop2632 ], [ 0, %for.cond.i.i.i1670 ] %OldValuePhi2635 = phi i32 [ %3665, %ComputeLoop2632 ], [ poison, %for.cond.i.i.i1670 ] %ActiveBits2636 = phi i64 [ %3669, %ComputeLoop2632 ], [ %2100, %for.cond.i.i.i1670 ] %3662 = call i64 @llvm.cttz.i64(i64 %ActiveBits2636, i1 true) %3663 = trunc i64 %3662 to i32 %3664 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i1682, i32 %3663) %3665 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2634, i32 %3663, i32 %OldValuePhi2635) %3666 = or i32 %Accumulator2634, %3664 %3667 = shl i64 1, %3662 %3668 = xor i64 %3667, -1 %3669 = and i64 %ActiveBits2636, %3668 %3670 = icmp eq i64 %3669, 0 br i1 %3670, label %ComputeEnd2633, label %ComputeLoop2632, !amdgpu.uniform !42 ComputeEnd2633: ; preds = %ComputeLoop2632 %.lcssa3888 = phi i32 [ %3665, %ComputeLoop2632 ] %.lcssa3887 = phi i32 [ %3666, %ComputeLoop2632 ] %div8.i.i.i.i.i1678 = lshr i32 %spec.store.select.i.i.i1677, 5 %idxprom.i.i.i.i.i1679 = zext nneg i32 %div8.i.i.i.i.i1678 to i64 %3671 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i1679 %3672 = trunc i64 %2100 to i32 %3673 = lshr i64 %2100, 32 %3674 = trunc i64 %3673 to i32 %3675 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3672, i32 0) %3676 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3674, i32 %3675) %3677 = icmp eq i32 %3676, 0 %3678 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3677) %3679 = extractvalue { i1, i64 } %3678, 0 %3680 = extractvalue { i1, i64 } %3678, 1 br i1 %3679, label %2101, label %2103 Flow3386: ; preds = %2121, %if.then.i.i.i.i1688 %3681 = phi i1 [ false, %2121 ], [ true, %if.then.i.i.i.i1688 ] br i1 %3681, label %if.end14.i.i.i1759, label %Flow3387, !amdgpu.uniform !42 ComputeLoop2637: ; preds = %if.then12.i.i.i1693, %ComputeLoop2637 %Accumulator2639 = phi i32 [ %3685, %ComputeLoop2637 ], [ -1, %if.then12.i.i.i1693 ] %ActiveBits2640 = phi i64 [ %3688, %ComputeLoop2637 ], [ %2118, %if.then12.i.i.i1693 ] %3682 = call i64 @llvm.cttz.i64(i64 %ActiveBits2640, i1 true) %3683 = trunc i64 %3682 to i32 %3684 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i1699, i32 %3683) %3685 = and i32 %Accumulator2639, %3684 %3686 = shl i64 1, %3682 %3687 = xor i64 %3686, -1 %3688 = and i64 %ActiveBits2640, %3687 %3689 = icmp eq i64 %3688, 0 br i1 %3689, label %ComputeEnd2638, label %ComputeLoop2637, !amdgpu.uniform !42 ComputeEnd2638: ; preds = %ComputeLoop2637 %.lcssa3889 = phi i32 [ %3685, %ComputeLoop2637 ] %3690 = trunc i64 %2118 to i32 %3691 = lshr i64 %2118, 32 %3692 = trunc i64 %3691 to i32 %3693 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3690, i32 0) %3694 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3692, i32 %3693) %3695 = icmp eq i32 %3694, 0 %3696 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3695) %3697 = extractvalue { i1, i64 } %3696, 0 %3698 = extractvalue { i1, i64 } %3696, 1 br i1 %3697, label %2119, label %2121 ComputeLoop2641: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit1767, %ComputeLoop2641 %Accumulator2643 = phi i32 [ %3702, %ComputeLoop2641 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit1767 ] %ActiveBits2644 = phi i64 [ %3705, %ComputeLoop2641 ], [ %2195, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit1767 ] %3699 = call i64 @llvm.cttz.i64(i64 %ActiveBits2644, i1 true) %3700 = trunc i64 %3699 to i32 %3701 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i1758, i32 %3700) %3702 = and i32 %Accumulator2643, %3701 %3703 = shl i64 1, %3699 %3704 = xor i64 %3703, -1 %3705 = and i64 %ActiveBits2644, %3704 %3706 = icmp eq i64 %3705, 0 br i1 %3706, label %ComputeEnd2642, label %ComputeLoop2641, !amdgpu.uniform !42 ComputeEnd2642: ; preds = %ComputeLoop2641 %.lcssa3883 = phi i32 [ %3702, %ComputeLoop2641 ] %3707 = trunc i64 %2195 to i32 %3708 = lshr i64 %2195, 32 %3709 = trunc i64 %3708 to i32 %3710 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3707, i32 0) %3711 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3709, i32 %3710) %3712 = icmp eq i32 %3711, 0 %3713 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3712) %3714 = extractvalue { i1, i64 } %3713, 0 %3715 = extractvalue { i1, i64 } %3713, 1 br i1 %3714, label %2196, label %2199 ComputeLoop2645: ; preds = %for.cond.i.i1.i1776, %ComputeLoop2645 %Accumulator2647 = phi i32 [ %3720, %ComputeLoop2645 ], [ 0, %for.cond.i.i1.i1776 ] %OldValuePhi2648 = phi i32 [ %3719, %ComputeLoop2645 ], [ poison, %for.cond.i.i1.i1776 ] %ActiveBits2649 = phi i64 [ %3723, %ComputeLoop2645 ], [ %2208, %for.cond.i.i1.i1776 ] %3716 = call i64 @llvm.cttz.i64(i64 %ActiveBits2649, i1 true) %3717 = trunc i64 %3716 to i32 %3718 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i1788, i32 %3717) %3719 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2647, i32 %3717, i32 %OldValuePhi2648) %3720 = or i32 %Accumulator2647, %3718 %3721 = shl i64 1, %3716 %3722 = xor i64 %3721, -1 %3723 = and i64 %ActiveBits2649, %3722 %3724 = icmp eq i64 %3723, 0 br i1 %3724, label %ComputeEnd2646, label %ComputeLoop2645, !amdgpu.uniform !42 ComputeEnd2646: ; preds = %ComputeLoop2645 %.lcssa3878 = phi i32 [ %3719, %ComputeLoop2645 ] %.lcssa3877 = phi i32 [ %3720, %ComputeLoop2645 ] %div8.i.i.i.i.i1784 = lshr i32 %spec.store.select.i.i.i1783, 5 %idxprom.i.i.i.i.i1785 = zext nneg i32 %div8.i.i.i.i.i1784 to i64 %3725 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i1785 %3726 = trunc i64 %2208 to i32 %3727 = lshr i64 %2208, 32 %3728 = trunc i64 %3727 to i32 %3729 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3726, i32 0) %3730 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3728, i32 %3729) %3731 = icmp eq i32 %3730, 0 %3732 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3731) %3733 = extractvalue { i1, i64 } %3732, 0 %3734 = extractvalue { i1, i64 } %3732, 1 br i1 %3733, label %2209, label %2211 Flow3360: ; preds = %2229, %if.then.i.i.i.i1794 %3735 = phi i1 [ false, %2229 ], [ true, %if.then.i.i.i.i1794 ] br i1 %3735, label %if.end14.i.i.i1865, label %Flow3361, !amdgpu.uniform !42 ComputeLoop2650: ; preds = %if.then12.i.i.i1799, %ComputeLoop2650 %Accumulator2652 = phi i32 [ %3739, %ComputeLoop2650 ], [ -1, %if.then12.i.i.i1799 ] %ActiveBits2653 = phi i64 [ %3742, %ComputeLoop2650 ], [ %2226, %if.then12.i.i.i1799 ] %3736 = call i64 @llvm.cttz.i64(i64 %ActiveBits2653, i1 true) %3737 = trunc i64 %3736 to i32 %3738 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i1805, i32 %3737) %3739 = and i32 %Accumulator2652, %3738 %3740 = shl i64 1, %3736 %3741 = xor i64 %3740, -1 %3742 = and i64 %ActiveBits2653, %3741 %3743 = icmp eq i64 %3742, 0 br i1 %3743, label %ComputeEnd2651, label %ComputeLoop2650, !amdgpu.uniform !42 ComputeEnd2651: ; preds = %ComputeLoop2650 %.lcssa3879 = phi i32 [ %3739, %ComputeLoop2650 ] %3744 = trunc i64 %2226 to i32 %3745 = lshr i64 %2226, 32 %3746 = trunc i64 %3745 to i32 %3747 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3744, i32 0) %3748 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3746, i32 %3747) %3749 = icmp eq i32 %3748, 0 %3750 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3749) %3751 = extractvalue { i1, i64 } %3750, 0 %3752 = extractvalue { i1, i64 } %3750, 1 br i1 %3751, label %2227, label %2229 ComputeLoop2654: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1873, %ComputeLoop2654 %Accumulator2656 = phi i32 [ %3756, %ComputeLoop2654 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1873 ] %ActiveBits2657 = phi i64 [ %3759, %ComputeLoop2654 ], [ %2303, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1873 ] %3753 = call i64 @llvm.cttz.i64(i64 %ActiveBits2657, i1 true) %3754 = trunc i64 %3753 to i32 %3755 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i1864, i32 %3754) %3756 = and i32 %Accumulator2656, %3755 %3757 = shl i64 1, %3753 %3758 = xor i64 %3757, -1 %3759 = and i64 %ActiveBits2657, %3758 %3760 = icmp eq i64 %3759, 0 br i1 %3760, label %ComputeEnd2655, label %ComputeLoop2654, !amdgpu.uniform !42 ComputeEnd2655: ; preds = %ComputeLoop2654 %.lcssa3873 = phi i32 [ %3756, %ComputeLoop2654 ] %3761 = trunc i64 %2303 to i32 %3762 = lshr i64 %2303, 32 %3763 = trunc i64 %3762 to i32 %3764 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3761, i32 0) %3765 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3763, i32 %3764) %3766 = icmp eq i32 %3765, 0 %3767 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3766) %3768 = extractvalue { i1, i64 } %3767, 0 %3769 = extractvalue { i1, i64 } %3767, 1 br i1 %3768, label %2304, label %2307 ComputeLoop2658: ; preds = %for.cond.i.i.i1880, %ComputeLoop2658 %Accumulator2660 = phi i32 [ %3774, %ComputeLoop2658 ], [ 0, %for.cond.i.i.i1880 ] %OldValuePhi2661 = phi i32 [ %3773, %ComputeLoop2658 ], [ poison, %for.cond.i.i.i1880 ] %ActiveBits2662 = phi i64 [ %3777, %ComputeLoop2658 ], [ %2348, %for.cond.i.i.i1880 ] %3770 = call i64 @llvm.cttz.i64(i64 %ActiveBits2662, i1 true) %3771 = trunc i64 %3770 to i32 %3772 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i1892, i32 %3771) %3773 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2660, i32 %3771, i32 %OldValuePhi2661) %3774 = or i32 %Accumulator2660, %3772 %3775 = shl i64 1, %3770 %3776 = xor i64 %3775, -1 %3777 = and i64 %ActiveBits2662, %3776 %3778 = icmp eq i64 %3777, 0 br i1 %3778, label %ComputeEnd2659, label %ComputeLoop2658, !amdgpu.uniform !42 ComputeEnd2659: ; preds = %ComputeLoop2658 %.lcssa3866 = phi i32 [ %3773, %ComputeLoop2658 ] %.lcssa3865 = phi i32 [ %3774, %ComputeLoop2658 ] %div8.i.i.i.i.i1888 = lshr i32 %spec.store.select.i.i.i1887, 5 %idxprom.i.i.i.i.i1889 = zext nneg i32 %div8.i.i.i.i.i1888 to i64 %3779 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i1889 %3780 = trunc i64 %2348 to i32 %3781 = lshr i64 %2348, 32 %3782 = trunc i64 %3781 to i32 %3783 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3780, i32 0) %3784 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3782, i32 %3783) %3785 = icmp eq i32 %3784, 0 %3786 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3785) %3787 = extractvalue { i1, i64 } %3786, 0 %3788 = extractvalue { i1, i64 } %3786, 1 br i1 %3787, label %2349, label %2351 Flow3336: ; preds = %2369, %if.then.i.i.i.i1898 %3789 = phi i1 [ false, %2369 ], [ true, %if.then.i.i.i.i1898 ] br i1 %3789, label %if.end14.i.i.i1969, label %Flow3337, !amdgpu.uniform !42 ComputeLoop2663: ; preds = %if.then12.i.i.i1903, %ComputeLoop2663 %Accumulator2665 = phi i32 [ %3793, %ComputeLoop2663 ], [ -1, %if.then12.i.i.i1903 ] %ActiveBits2666 = phi i64 [ %3796, %ComputeLoop2663 ], [ %2366, %if.then12.i.i.i1903 ] %3790 = call i64 @llvm.cttz.i64(i64 %ActiveBits2666, i1 true) %3791 = trunc i64 %3790 to i32 %3792 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i1909, i32 %3791) %3793 = and i32 %Accumulator2665, %3792 %3794 = shl i64 1, %3790 %3795 = xor i64 %3794, -1 %3796 = and i64 %ActiveBits2666, %3795 %3797 = icmp eq i64 %3796, 0 br i1 %3797, label %ComputeEnd2664, label %ComputeLoop2663, !amdgpu.uniform !42 ComputeEnd2664: ; preds = %ComputeLoop2663 %.lcssa3867 = phi i32 [ %3793, %ComputeLoop2663 ] %3798 = trunc i64 %2366 to i32 %3799 = lshr i64 %2366, 32 %3800 = trunc i64 %3799 to i32 %3801 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3798, i32 0) %3802 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3800, i32 %3801) %3803 = icmp eq i32 %3802, 0 %3804 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3803) %3805 = extractvalue { i1, i64 } %3804, 0 %3806 = extractvalue { i1, i64 } %3804, 1 br i1 %3805, label %2367, label %2369 ComputeLoop2667: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit1977, %ComputeLoop2667 %Accumulator2669 = phi i32 [ %3810, %ComputeLoop2667 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit1977 ] %ActiveBits2670 = phi i64 [ %3813, %ComputeLoop2667 ], [ %2456, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsINS_3cpp6stringEEERS1_T_.exit1977 ] %3807 = call i64 @llvm.cttz.i64(i64 %ActiveBits2670, i1 true) %3808 = trunc i64 %3807 to i32 %3809 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i1968, i32 %3808) %3810 = and i32 %Accumulator2669, %3809 %3811 = shl i64 1, %3807 %3812 = xor i64 %3811, -1 %3813 = and i64 %ActiveBits2670, %3812 %3814 = icmp eq i64 %3813, 0 br i1 %3814, label %ComputeEnd2668, label %ComputeLoop2667, !amdgpu.uniform !42 ComputeEnd2668: ; preds = %ComputeLoop2667 %.lcssa3857 = phi i32 [ %3810, %ComputeLoop2667 ] %3815 = trunc i64 %2456 to i32 %3816 = lshr i64 %2456, 32 %3817 = trunc i64 %3816 to i32 %3818 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3815, i32 0) %3819 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3817, i32 %3818) %3820 = icmp eq i32 %3819, 0 %3821 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3820) %3822 = extractvalue { i1, i64 } %3821, 0 %3823 = extractvalue { i1, i64 } %3821, 1 br i1 %3822, label %2457, label %2460 ComputeLoop2671: ; preds = %for.cond.i.i.i1981, %ComputeLoop2671 %Accumulator2673 = phi i32 [ %3828, %ComputeLoop2671 ], [ 0, %for.cond.i.i.i1981 ] %OldValuePhi2674 = phi i32 [ %3827, %ComputeLoop2671 ], [ poison, %for.cond.i.i.i1981 ] %ActiveBits2675 = phi i64 [ %3831, %ComputeLoop2671 ], [ %2469, %for.cond.i.i.i1981 ] %3824 = call i64 @llvm.cttz.i64(i64 %ActiveBits2675, i1 true) %3825 = trunc i64 %3824 to i32 %3826 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i1993, i32 %3825) %3827 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator2673, i32 %3825, i32 %OldValuePhi2674) %3828 = or i32 %Accumulator2673, %3826 %3829 = shl i64 1, %3824 %3830 = xor i64 %3829, -1 %3831 = and i64 %ActiveBits2675, %3830 %3832 = icmp eq i64 %3831, 0 br i1 %3832, label %ComputeEnd2672, label %ComputeLoop2671, !amdgpu.uniform !42 ComputeEnd2672: ; preds = %ComputeLoop2671 %.lcssa3852 = phi i32 [ %3827, %ComputeLoop2671 ] %.lcssa3851 = phi i32 [ %3828, %ComputeLoop2671 ] %div8.i.i.i.i.i1989 = lshr i32 %spec.store.select.i.i.i1988, 5 %idxprom.i.i.i.i.i1990 = zext nneg i32 %div8.i.i.i.i.i1989 to i64 %3833 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i1990 %3834 = trunc i64 %2469 to i32 %3835 = lshr i64 %2469, 32 %3836 = trunc i64 %3835 to i32 %3837 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3834, i32 0) %3838 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3836, i32 %3837) %3839 = icmp eq i32 %3838, 0 %3840 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3839) %3841 = extractvalue { i1, i64 } %3840, 0 %3842 = extractvalue { i1, i64 } %3840, 1 br i1 %3841, label %2470, label %2472 Flow3318: ; preds = %2490, %if.then.i.i.i.i1999 %3843 = phi i1 [ false, %2490 ], [ true, %if.then.i.i.i.i1999 ] br i1 %3843, label %if.end14.i.i.i2068, label %Flow3319, !amdgpu.uniform !42 ComputeLoop2676: ; preds = %if.then12.i.i.i2004, %ComputeLoop2676 %Accumulator2678 = phi i32 [ %3847, %ComputeLoop2676 ], [ -1, %if.then12.i.i.i2004 ] %ActiveBits2679 = phi i64 [ %3850, %ComputeLoop2676 ], [ %2487, %if.then12.i.i.i2004 ] %3844 = call i64 @llvm.cttz.i64(i64 %ActiveBits2679, i1 true) %3845 = trunc i64 %3844 to i32 %3846 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i2010, i32 %3845) %3847 = and i32 %Accumulator2678, %3846 %3848 = shl i64 1, %3844 %3849 = xor i64 %3848, -1 %3850 = and i64 %ActiveBits2679, %3849 %3851 = icmp eq i64 %3850, 0 br i1 %3851, label %ComputeEnd2677, label %ComputeLoop2676, !amdgpu.uniform !42 ComputeEnd2677: ; preds = %ComputeLoop2676 %.lcssa3853 = phi i32 [ %3847, %ComputeLoop2676 ] %3852 = trunc i64 %2487 to i32 %3853 = lshr i64 %2487, 32 %3854 = trunc i64 %3853 to i32 %3855 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3852, i32 0) %3856 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3854, i32 %3855) %3857 = icmp eq i32 %3856, 0 %3858 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3857) %3859 = extractvalue { i1, i64 } %3858, 0 %3860 = extractvalue { i1, i64 } %3858, 1 br i1 %3859, label %2488, label %2490 ComputeLoop2680: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit2076, %ComputeLoop2680 %Accumulator2682 = phi i32 [ %3864, %ComputeLoop2680 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit2076 ] %ActiveBits2683 = phi i64 [ %3867, %ComputeLoop2680 ], [ %2542, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit2076 ] %3861 = call i64 @llvm.cttz.i64(i64 %ActiveBits2683, i1 true) %3862 = trunc i64 %3861 to i32 %3863 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i2067, i32 %3862) %3864 = and i32 %Accumulator2682, %3863 %3865 = shl i64 1, %3861 %3866 = xor i64 %3865, -1 %3867 = and i64 %ActiveBits2683, %3866 %3868 = icmp eq i64 %3867, 0 br i1 %3868, label %ComputeEnd2681, label %ComputeLoop2680, !amdgpu.uniform !42 ComputeEnd2681: ; preds = %ComputeLoop2680 %.lcssa = phi i32 [ %3864, %ComputeLoop2680 ] %3869 = trunc i64 %2542 to i32 %3870 = lshr i64 %2542, 32 %3871 = trunc i64 %3870 to i32 %3872 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %3869, i32 0) %3873 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %3871, i32 %3872) %3874 = icmp eq i32 %3873, 0 %3875 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3874) %3876 = extractvalue { i1, i64 } %3875, 0 %3877 = extractvalue { i1, i64 } %3875, 1 br i1 %3876, label %2543, label %2546 } ; Function Attrs: convergent mustprogress nounwind define internal fastcc noundef range(i32 0, 2) i32 @_ZN22__llvm_libc_22_0_0_git7testing4Test8runTestsERKNS0_11TestOptionsE(ptr noundef nonnull readonly align 8 captures(none) dereferenceable(10) %Options) unnamed_addr #13 align 2 { entry: %buffer.i.i.i2988 = alloca %"class.__llvm_libc_22_0_0_git::IntegerToString.21", align 8, addrspace(5) %buffer.i.i.i4144 = alloca %"class.__llvm_libc_22_0_0_git::IntegerToString", align 8, addrspace(5) %buffer.i.i.i3760 = alloca %"class.__llvm_libc_22_0_0_git::IntegerToString", align 8, addrspace(5) %buffer.i.i.i3369 = alloca %"class.__llvm_libc_22_0_0_git::IntegerToString", align 8, addrspace(5) %buffer.i.i.i2713 = alloca %"class.__llvm_libc_22_0_0_git::IntegerToString.21", align 8, addrspace(5) %buffer.i.i.i2448 = alloca %"class.__llvm_libc_22_0_0_git::IntegerToString.21", align 8, addrspace(5) %buffer.i.i.i = alloca %"class.__llvm_libc_22_0_0_git::IntegerToString", align 8, addrspace(5) %Ctx = alloca %"struct.__llvm_libc_22_0_0_git::testing::TestLogger", align 1, addrspace(5), !amdgpu.uniform !42 %PrintColor = getelementptr inbounds nuw i8, ptr %Options, i64 8 %0 = load i8, ptr %PrintColor, align 8, !tbaa !149, !range !152, !noundef !42 %T.04.i = load ptr, ptr addrspace(1) @_ZN22__llvm_libc_22_0_0_git7testing4Test5StartE, align 8, !tbaa !63 %tobool.not5.i = icmp ne ptr %T.04.i, null br i1 %tobool.not5.i, label %for.inc.i.preheader, label %Flow8611, !amdgpu.uniform !42 for.inc.i.preheader: ; preds = %entry br label %for.inc.i, !amdgpu.uniform !42 Flow8611: ; preds = %Flow8610, %entry %1 = phi i32 [ %inc.i.lcssa, %Flow8610 ], [ 0, %entry ] br label %_ZN22__llvm_libc_22_0_0_git7testing4Test11getNumTestsEv.exit, !amdgpu.uniform !42 for.inc.i: ; preds = %for.inc.i.preheader, %for.inc.i %phi.broken = phi i64 [ 0, %for.inc.i.preheader ], [ %2, %for.inc.i ] %T.07.i = phi ptr [ %T.0.i, %for.inc.i ], [ %T.04.i, %for.inc.i.preheader ] %N.06.i = phi i32 [ %inc.i, %for.inc.i ], [ 0, %for.inc.i.preheader ] %Next.i = getelementptr inbounds nuw i8, ptr %T.07.i, i64 8 %inc.i = add nuw i32 %N.06.i, 1 %T.0.i = load ptr, ptr %Next.i, align 8, !tbaa !63 %tobool.not.i = icmp eq ptr %T.0.i, null %2 = call i64 @llvm.amdgcn.if.break.i64(i1 %tobool.not.i, i64 %phi.broken) %3 = call i1 @llvm.amdgcn.loop.i64(i64 %2) br i1 %3, label %Flow8610, label %for.inc.i Flow8610: ; preds = %for.inc.i %inc.i.lcssa = phi i32 [ %inc.i, %for.inc.i ] %.lcssa9365 = phi i64 [ %2, %for.inc.i ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9365) br label %Flow8611, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing4Test11getNumTestsEv.exit: ; preds = %Flow8611 %loadedv = trunc nuw i8 %0 to i1 %cond = select i1 %loadedv, ptr addrspace(4) @.str.8.26, ptr addrspace(4) @.str.9.27 %cond6 = select i1 %loadedv, ptr addrspace(4) @.str.11.29, ptr addrspace(4) @.str.9.27 %tobool.not = icmp ne i32 %1, 0 %4 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not) %5 = extractvalue { i1, i64 } %4, 0 %6 = extractvalue { i1, i64 } %4, 1 br i1 %5, label %for.cond.i.i.i.preheader, label %Flow8609 for.cond.i.i.i.preheader: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing4Test11getNumTestsEv.exit %scevgep7277 = getelementptr i8, ptr addrspace(4) %cond, i64 -1 br label %for.cond.i.i.i, !amdgpu.uniform !42 Flow8609: ; preds = %1099, %_ZN22__llvm_libc_22_0_0_git7testing4Test11getNumTestsEv.exit %7 = phi ptr [ %T.0201.pre, %1099 ], [ %T.04.i, %_ZN22__llvm_libc_22_0_0_git7testing4Test11getNumTestsEv.exit ] call void @llvm.amdgcn.end.cf.i64(i64 %6) br label %if.end16, !amdgpu.uniform !42 for.cond.i.i.i: ; preds = %for.cond.i.i.i.preheader, %for.cond.i.i.i %phi.broken8612 = phi i64 [ 0, %for.cond.i.i.i.preheader ], [ %9, %for.cond.i.i.i ] %lsr.iv7278 = phi ptr addrspace(4) [ %scevgep7280, %for.cond.i.i.i ], [ %scevgep7277, %for.cond.i.i.i.preheader ] %scevgep7280 = getelementptr i8, ptr addrspace(4) %lsr.iv7278, i64 1 %8 = load i8, ptr addrspace(4) %scevgep7280, align 1, !tbaa !57 %cmp.i.i.i = icmp eq i8 %8, 0 %9 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.i.i, i64 %phi.broken8612) %10 = call i1 @llvm.amdgcn.loop.i64(i64 %9) br i1 %10, label %_ZN22__llvm_libc_22_0_0_git3cpp11string_viewC2EPKc.exit.i, label %for.cond.i.i.i _ZN22__llvm_libc_22_0_0_git3cpp11string_viewC2EPKc.exit.i: ; preds = %for.cond.i.i.i %scevgep7280.lcssa = phi ptr addrspace(4) [ %scevgep7280, %for.cond.i.i.i ] %.lcssa9364 = phi i64 [ %9, %for.cond.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9364) %11 = tail call i32 @llvm.amdgcn.mbcnt.lo(i32 -1, i32 0) %12 = tail call noundef i32 @llvm.amdgcn.mbcnt.hi(i32 -1, i32 %11) %sh_prom.i.i.i.i = zext i32 %12 to i64 br label %for.cond.i.i1.i, !amdgpu.uniform !42 for.cond.i.i1.i: ; preds = %_ZN22__llvm_libc_22_0_0_git3cpp11string_viewC2EPKc.exit.i, %Flow8608 %13 = phi i32 [ %51, %Flow8608 ], [ poison, %_ZN22__llvm_libc_22_0_0_git3cpp11string_viewC2EPKc.exit.i ] %14 = phi i64 [ %52, %Flow8608 ], [ poison, %_ZN22__llvm_libc_22_0_0_git3cpp11string_viewC2EPKc.exit.i ] %15 = phi i32 [ %53, %Flow8608 ], [ poison, %_ZN22__llvm_libc_22_0_0_git3cpp11string_viewC2EPKc.exit.i ] %retval.sroa.6.0.i.i.i = phi i32 [ %56, %Flow8608 ], [ undef, %_ZN22__llvm_libc_22_0_0_git3cpp11string_viewC2EPKc.exit.i ] %retval.sroa.2.0.i.i.i = phi i64 [ %55, %Flow8608 ], [ undef, %_ZN22__llvm_libc_22_0_0_git3cpp11string_viewC2EPKc.exit.i ] %retval.sroa.8.0.i.i.i = phi i32 [ %54, %Flow8608 ], [ undef, %_ZN22__llvm_libc_22_0_0_git3cpp11string_viewC2EPKc.exit.i ] %index.0.i.i.i = phi i32 [ %58, %Flow8608 ], [ 0, %_ZN22__llvm_libc_22_0_0_git3cpp11string_viewC2EPKc.exit.i ] %16 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i = icmp ult i32 %index.0.i.i.i, %16 %spec.store.select.i.i.i = select i1 %cmp.not.i.i.i, i32 %index.0.i.i.i, i32 0 %17 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %18 = and i32 %spec.store.select.i.i.i, 31 %19 = lshr i64 %17, %sh_prom.i.i.i.i %20 = trunc i64 %19 to i32 %conv4.i.i.i.i.i = and i32 %20, 1 %shl.i.i.i.i.i = shl nuw i32 %conv4.i.i.i.i.i, %18 %21 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop, !amdgpu.uniform !42 22: ; preds = %ComputeEnd %sunkaddr = getelementptr inbounds i8, ptr addrspace(1) %6698, i64 40 %23 = atomicrmw or ptr addrspace(1) %sunkaddr, i32 %.lcssa9358 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %24, !amdgpu.uniform !42 24: ; preds = %22, %ComputeEnd %25 = phi i32 [ %23, %22 ], [ poison, %ComputeEnd ] call void @llvm.amdgcn.end.cf.i64(i64 %6707) %26 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %25) %27 = or i32 %26, %.lcssa9359 %shl5.i.i.i.i.i = shl nuw i32 1, %18 %and.i.i.i.i.i = and i32 %shl5.i.i.i.i.i, %27 %tobool3.i.i.i.i = icmp ne i32 %and.i.i.i.i.i, 0 %28 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i) %and.i.i.i.i.i.i = and i64 %28, %17 %cmp.i.not.i.i.i = icmp ne i64 %17, %and.i.i.i.i.i.i br i1 %cmp.i.not.i.i.i, label %if.then.i.i.i.i2, label %Flow8607, !amdgpu.uniform !42 if.then.i.i.i.i2: ; preds = %24 fence syncscope("agent") acquire %29 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %30 = extractelement <2 x i64> %29, i32 0 %31 = inttoptr i64 %30 to ptr %32 = extractelement <2 x i64> %29, i32 1 %33 = inttoptr i64 %32 to ptr %idxprom.i.i.i.i = zext i32 %spec.store.select.i.i.i to i64 %arrayidx.i.i.i.i3 = getelementptr inbounds nuw i32, ptr %31, i64 %idxprom.i.i.i.i, !amdgpu.uniform !42 %34 = load atomic i32, ptr %arrayidx.i.i.i.i3 monotonic, align 4 %35 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %34) %arrayidx.i45.i.i.i = getelementptr inbounds nuw i32, ptr %33, i64 %idxprom.i.i.i.i, !amdgpu.uniform !42 %36 = load atomic i32, ptr %arrayidx.i45.i.i.i monotonic, align 4 %37 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %36) %cmp.i46.not.i.i.i = icmp ne i32 %35, %37 br i1 %cmp.i46.not.i.i.i, label %if.then12.i.i.i, label %Flow8605, !amdgpu.uniform !42 if.then12.i.i.i: ; preds = %if.then.i.i.i.i2 fence syncscope("agent") release %38 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %17, i1 true) %iszero.i.i.i.i.i.i.i = icmp ne i64 %17, 0 %cmp2.i.i.i.i.i.i = icmp eq i64 %38, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i = select i1 %iszero.i.i.i.i.i.i.i, i1 %cmp2.i.i.i.i.i.i, i1 false %conv4.i.i51.i.i.i = zext i1 %cmp.i.i.i.i.i.i to i32 %shl.i.i52.i.i.i = shl nuw i32 %conv4.i.i51.i.i.i, %18 %xor.i.i.i.i.i = xor i32 %shl.i.i52.i.i.i, -1 %39 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5468, !amdgpu.uniform !42 40: ; preds = %ComputeEnd5469 %sunkaddr7363 = getelementptr inbounds i8, ptr addrspace(1) %6698, i64 40 %41 = atomicrmw and ptr addrspace(1) %sunkaddr7363, i32 %.lcssa9360 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %42, !amdgpu.uniform !42 42: ; preds = %40, %ComputeEnd5469 call void @llvm.amdgcn.end.cf.i64(i64 %6725) tail call void @llvm.amdgcn.wave.barrier() br label %Flow8605, !amdgpu.uniform !42 if.end14.i.i.i: ; preds = %Flow8605 %43 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %17, i1 true) %iszero.i.i.i.i.i.i = icmp ne i64 %17, 0 %cmp2.i.i.i.i.i = icmp eq i64 %43, %sh_prom.i.i.i.i %cmp.i.i.i.i.i = select i1 %iszero.i.i.i.i.i.i, i1 %cmp2.i.i.i.i.i, i1 false %44 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i) %45 = extractvalue { i1, i64 } %44, 0 %46 = extractvalue { i1, i64 } %44, 1 br i1 %45, label %if.then16.i.i.i, label %if.end22.i.i.i if.then16.i.i.i: ; preds = %if.end14.i.i.i %47 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i = getelementptr inbounds nuw %"struct.rpc::Header", ptr %47, i64 %idxprom.i.i.i.i, i32 1 store i32 1660944387, ptr %opcode.i.i.i, align 8, !tbaa !77 %arrayidx21.i.i.i = getelementptr inbounds nuw %"struct.rpc::Header", ptr %47, i64 %idxprom.i.i.i.i store i64 %17, ptr %arrayidx21.i.i.i, align 8, !tbaa !80 br label %if.end22.i.i.i, !amdgpu.uniform !42 Flow8606: ; preds = %if.end22.i.i.i, %Flow8605 %48 = phi i32 [ %35, %if.end22.i.i.i ], [ %retval.sroa.8.0.i.i.i, %Flow8605 ] %49 = phi i64 [ %17, %if.end22.i.i.i ], [ %retval.sroa.2.0.i.i.i, %Flow8605 ] %50 = phi i32 [ %spec.store.select.i.i.i, %if.end22.i.i.i ], [ %retval.sroa.6.0.i.i.i, %Flow8605 ] br label %cleanup26.i.i.i, !amdgpu.uniform !42 if.end22.i.i.i: ; preds = %if.then16.i.i.i, %if.end14.i.i.i call void @llvm.amdgcn.end.cf.i64(i64 %46) tail call void @llvm.amdgcn.wave.barrier() br label %Flow8606, !amdgpu.uniform !42 Flow8607: ; preds = %cleanup26.i.i.i, %24 %51 = phi i32 [ %50, %cleanup26.i.i.i ], [ %13, %24 ] %52 = phi i64 [ %49, %cleanup26.i.i.i ], [ %14, %24 ] %53 = phi i32 [ %48, %cleanup26.i.i.i ], [ %15, %24 ] %54 = phi i32 [ %48, %cleanup26.i.i.i ], [ %retval.sroa.8.0.i.i.i, %24 ] %55 = phi i64 [ %49, %cleanup26.i.i.i ], [ %retval.sroa.2.0.i.i.i, %24 ] %56 = phi i32 [ %50, %cleanup26.i.i.i ], [ %retval.sroa.6.0.i.i.i, %24 ] %57 = phi i1 [ %cmp.i46.not.i.i.i, %cleanup26.i.i.i ], [ true, %24 ] br i1 %57, label %for.inc.i.i.i, label %Flow8608, !amdgpu.uniform !42 cleanup26.i.i.i: ; preds = %Flow8606 br label %Flow8607, !amdgpu.uniform !42 for.inc.i.i.i: ; preds = %Flow8607 %inc.i.i.i = add i32 %spec.store.select.i.i.i, 1 br label %Flow8608, !amdgpu.uniform !42 Flow8608: ; preds = %for.inc.i.i.i, %Flow8607 %58 = phi i32 [ %inc.i.i.i, %for.inc.i.i.i ], [ poison, %Flow8607 ] %59 = phi i1 [ false, %for.inc.i.i.i ], [ true, %Flow8607 ] br i1 %59, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i, label %for.cond.i.i1.i, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i: ; preds = %Flow8608 %.lcssa9363 = phi i32 [ %51, %Flow8608 ] %.lcssa9362 = phi i64 [ %52, %Flow8608 ] %.lcssa9361 = phi i32 [ %53, %Flow8608 ] %60 = addrspacecast ptr addrspace(4) %scevgep7280.lcssa to ptr %61 = addrspacecast ptr addrspace(4) %cond to ptr %sub.ptr.lhs.cast.i.i.i = ptrtoint ptr %60 to i64 %sub.ptr.rhs.cast.i.i.i = ptrtoint ptr %61 to i64 %sub.ptr.sub.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i, %sub.ptr.rhs.cast.i.i.i fence acquire %62 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i = shl i32 %.lcssa9363, 6 %idxprom.i19.i.i.i.i.i = zext i32 %mul.i.i.i.i.i.i to i64 %arrayidx.i20.i.i.i.i.i = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %62, i64 %idxprom.i19.i.i.i.i.i %arrayidx.i22.i.i.i.i.i = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i, i64 %sh_prom.i.i.i.i store i64 %sub.ptr.sub.i.i.i, ptr %arrayidx.i22.i.i.i.i.i, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i = tail call i64 @llvm.umin.i64(i64 %sub.ptr.sub.i.i.i, i64 56) %63 = and i64 %spec.select.i.i.i.i.i.i.i, 15 %64 = sub i64 %spec.select.i.i.i.i.i.i.i, %63 %65 = icmp ne i64 %64, 0 %66 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %65) %67 = extractvalue { i1, i64 } %66, 0 %68 = extractvalue { i1, i64 } %66, 1 br i1 %67, label %loop-memcpy-expansion5145.preheader, label %Flow8604 loop-memcpy-expansion5145.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i %69 = shl nuw nsw i64 %sh_prom.i.i.i.i, 6 %70 = add nuw nsw i64 %69, 8 %scevgep7274 = getelementptr i8, ptr %62, i64 %70 %71 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i, 6 %scevgep7275 = getelementptr i8, ptr %scevgep7274, i64 %71 br label %loop-memcpy-expansion5145, !amdgpu.uniform !42 Flow8604: ; preds = %Flow8603, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i call void @llvm.amdgcn.end.cf.i64(i64 %68) br label %loop-memcpy-residual-header5148, !amdgpu.uniform !42 loop-memcpy-expansion5145: ; preds = %loop-memcpy-expansion5145.preheader, %loop-memcpy-expansion5145 %phi.broken8613 = phi i64 [ 0, %loop-memcpy-expansion5145.preheader ], [ %76, %loop-memcpy-expansion5145 ] %loop-index5146 = phi i64 [ %74, %loop-memcpy-expansion5145 ], [ 0, %loop-memcpy-expansion5145.preheader ] %72 = getelementptr i8, ptr addrspace(4) %cond, i64 %loop-index5146 %73 = load <4 x i32>, ptr addrspace(4) %72, align 1 %scevgep7276 = getelementptr i8, ptr %scevgep7275, i64 %loop-index5146 store <4 x i32> %73, ptr %scevgep7276, align 1 %74 = add i64 %loop-index5146, 16 %75 = icmp uge i64 %74, %64 %76 = call i64 @llvm.amdgcn.if.break.i64(i1 %75, i64 %phi.broken8613) %77 = call i1 @llvm.amdgcn.loop.i64(i64 %76) br i1 %77, label %Flow8603, label %loop-memcpy-expansion5145 Flow8602: ; preds = %Flow8600, %Flow8601 %78 = phi i64 [ %6424, %Flow8600 ], [ %6419, %Flow8601 ] %79 = phi i64 [ %6429, %Flow8600 ], [ %6420, %Flow8601 ] call void @llvm.amdgcn.end.cf.i64(i64 %6423) br label %post-loop-memcpy-expansion5144, !amdgpu.uniform !42 loop-memcpy-residual5147: ; preds = %loop-memcpy-residual5147.preheader, %loop-memcpy-residual5147 %phi.broken8614 = phi i64 [ 0, %loop-memcpy-residual5147.preheader ], [ %83, %loop-memcpy-residual5147 ] %residual-loop-index5149 = phi i64 [ %81, %loop-memcpy-residual5147 ], [ 0, %loop-memcpy-residual5147.preheader ] %scevgep7273 = getelementptr i8, ptr addrspace(4) %scevgep7272, i64 %residual-loop-index5149 %80 = load i8, ptr addrspace(4) %scevgep7273, align 1 %scevgep7271 = getelementptr i8, ptr %scevgep7270, i64 %residual-loop-index5149 store i8 %80, ptr %scevgep7271, align 1 %81 = add i64 %residual-loop-index5149, 1 %82 = icmp uge i64 %81, %63 %83 = call i64 @llvm.amdgcn.if.break.i64(i1 %82, i64 %phi.broken8614) %84 = call i1 @llvm.amdgcn.loop.i64(i64 %83) br i1 %84, label %Flow8600, label %loop-memcpy-residual5147 Flow8600: ; preds = %loop-memcpy-residual5147 %.lcssa9356 = phi i64 [ %83, %loop-memcpy-residual5147 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9356) br label %Flow8602, !amdgpu.uniform !42 post-loop-memcpy-expansion5144: ; preds = %Flow8602 %85 = addrspacecast ptr addrspace(4) %cond to ptr %86 = addrspacecast ptr addrspace(4) %scevgep7280.lcssa to ptr %87 = ptrtoint ptr %85 to i64 %88 = ptrtoint ptr %86 to i64 %tobool.not.i.i.i.i.i.i = icmp eq i32 %.lcssa9361, 0 %conv.i.i.i.i.i.i = zext i1 %tobool.not.i.i.i.i.i.i to i32 fence release %89 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i = zext i32 %.lcssa9363 to i64 %arrayidx.i24.i.i.i.i.i = getelementptr inbounds nuw i32, ptr %89, i64 %idxprom.i23.i.i.i.i.i store atomic i32 %conv.i.i.i.i.i.i, ptr %arrayidx.i24.i.i.i.i.i monotonic, align 4 %90 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i = getelementptr inbounds nuw %"struct.rpc::Header", ptr %90, i64 %idxprom.i23.i.i.i.i.i, !amdgpu.uniform !42 %91 = load i64, ptr %arrayidx.i.i5.i.i, align 8, !tbaa !80 %scevgep7256 = getelementptr i8, ptr addrspace(4) %cond, i64 56 %92 = add i64 %88, -56 %93 = sub i64 %92, %87 br label %while.cond.i.i.i.i, !amdgpu.uniform !42 while.cond.i.i.i.i: ; preds = %post-loop-memcpy-expansion5144, %Flow8599 %phi.broken8617 = phi i64 [ 0, %post-loop-memcpy-expansion5144 ], [ %110, %Flow8599 ] %lsr.iv7262 = phi i64 [ %108, %Flow8599 ], [ %93, %post-loop-memcpy-expansion5144 ] %lsr.iv7257 = phi ptr addrspace(4) [ %107, %Flow8599 ], [ %scevgep7256, %post-loop-memcpy-expansion5144 ] %port.sroa.37.0.i.i = phi i32 [ %106, %Flow8599 ], [ %conv.i.i.i.i.i.i, %post-loop-memcpy-expansion5144 ] %idx.0.i.i.i.i = phi i64 [ %105, %Flow8599 ], [ 56, %post-loop-memcpy-expansion5144 ] %cmp.i.i.i.i4 = icmp ugt i64 %sub.ptr.sub.i.i.i, %idx.0.i.i.i.i %94 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i4) %and.i.i.i.i6.i.i = and i64 %94, %91 %tobool.not.i.i.i.i = icmp ne i64 %and.i.i.i.i6.i.i, 0 %95 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i = getelementptr inbounds nuw i32, ptr %95, i64 %idxprom.i23.i.i.i.i.i, !amdgpu.uniform !42 %96 = load atomic i32, ptr %arrayidx.i22.i.i.i monotonic, align 4 %97 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i) %98 = extractvalue { i1, i64 } %97, 0 %99 = extractvalue { i1, i64 } %97, 1 br i1 %98, label %cond.false.i8.i.i.i.i, label %Flow8599 cond.false.i8.i.i.i.i: ; preds = %while.cond.i.i.i.i %100 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %96) %101 = icmp ne i32 %100, %port.sroa.37.0.i.i br i1 %101, label %while.body.i.i21.i.i.i.i.preheader, label %Flow8598, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i.preheader: ; preds = %cond.false.i8.i.i.i.i br label %while.body.i.i21.i.i.i.i, !amdgpu.uniform !42 Flow8598: ; preds = %Flow8597, %cond.false.i8.i.i.i.i br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i: ; preds = %while.body.i.i21.i.i.i.i.preheader, %while.body.i.i21.i.i.i.i tail call void @llvm.amdgcn.s.sleep(i32 2) %102 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i = getelementptr inbounds nuw i32, ptr %102, i64 %idxprom.i23.i.i.i.i.i, !amdgpu.uniform !42 %103 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i monotonic, align 4 %104 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %103) %cmp.i.not.i.i23.i.i.i.i = icmp eq i32 %104, %port.sroa.37.0.i.i br i1 %cmp.i.not.i.i23.i.i.i.i, label %Flow8597, label %while.body.i.i21.i.i.i.i, !amdgpu.uniform !42 Flow8597: ; preds = %while.body.i.i21.i.i.i.i br label %Flow8598, !amdgpu.uniform !42 Flow8599: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i, %while.cond.i.i.i.i %105 = phi i64 [ %add.i.i.i.i, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i ], [ poison, %while.cond.i.i.i.i ] %106 = phi i32 [ %conv.i.i26.i.i.i.i, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i ], [ poison, %while.cond.i.i.i.i ] %107 = phi ptr addrspace(4) [ %scevgep7258, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i ], [ poison, %while.cond.i.i.i.i ] %108 = phi i64 [ %lsr.iv.next7263, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i ], [ poison, %while.cond.i.i.i.i ] %109 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i ], [ true, %while.cond.i.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %99) %110 = call i64 @llvm.amdgcn.if.break.i64(i1 %109, i64 %phi.broken8617) %111 = call i1 @llvm.amdgcn.loop.i64(i64 %110) br i1 %111, label %cond.false.i.i.i, label %while.cond.i.i.i.i _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i: ; preds = %Flow8598 fence acquire %112 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i4) %113 = extractvalue { i1, i64 } %112, 0 %114 = extractvalue { i1, i64 } %112, 1 br i1 %113, label %if.then.i.i.i.i.i.i.i, label %Flow8596 if.then.i.i.i.i.i.i.i: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i %sub.i.i.i.i.i.i.i = sub nuw i64 %sub.ptr.sub.i.i.i, %idx.0.i.i.i.i %spec.select.i.i.i36.i.i.i.i = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i, i64 64) %115 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %116 = and i64 %spec.select.i.i.i36.i.i.i.i, 15 %117 = sub i64 %spec.select.i.i.i36.i.i.i.i, %116 %118 = icmp ne i64 %117, 0 %119 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %118) %120 = extractvalue { i1, i64 } %119, 0 %121 = extractvalue { i1, i64 } %119, 1 br i1 %120, label %loop-memcpy-expansion5163.preheader, label %Flow8595 loop-memcpy-expansion5163.preheader: ; preds = %if.then.i.i.i.i.i.i.i %arrayidx.i20.i35.i.i.i.i = getelementptr %"struct.rpc::Buffer", ptr %115, i64 %idxprom.i19.i.i.i.i.i %arrayidx.i22.i38.i.i.i.i = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion5163, !amdgpu.uniform !42 Flow8595: ; preds = %Flow8594, %if.then.i.i.i.i.i.i.i call void @llvm.amdgcn.end.cf.i64(i64 %121) br label %loop-memcpy-residual-header5166, !amdgpu.uniform !42 loop-memcpy-expansion5163: ; preds = %loop-memcpy-expansion5163.preheader, %loop-memcpy-expansion5163 %phi.broken8615 = phi i64 [ 0, %loop-memcpy-expansion5163.preheader ], [ %126, %loop-memcpy-expansion5163 ] %loop-index5164 = phi i64 [ %124, %loop-memcpy-expansion5163 ], [ 0, %loop-memcpy-expansion5163.preheader ] %scevgep7259 = getelementptr i8, ptr addrspace(4) %lsr.iv7257, i64 %loop-index5164 %122 = load <4 x i32>, ptr addrspace(4) %scevgep7259, align 1 %123 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i, i64 %loop-index5164 store <4 x i32> %122, ptr %123, align 1 %124 = add i64 %loop-index5164, 16 %125 = icmp uge i64 %124, %117 %126 = call i64 @llvm.amdgcn.if.break.i64(i1 %125, i64 %phi.broken8615) %127 = call i1 @llvm.amdgcn.loop.i64(i64 %126) br i1 %127, label %Flow8594, label %loop-memcpy-expansion5163 Flow8593: ; preds = %Flow8592, %loop-memcpy-residual-header5166 call void @llvm.amdgcn.end.cf.i64(i64 %6455) br label %Flow8596, !amdgpu.uniform !42 loop-memcpy-residual5165: ; preds = %loop-memcpy-residual5165.preheader, %loop-memcpy-residual5165 %phi.broken8616 = phi i64 [ 0, %loop-memcpy-residual5165.preheader ], [ %131, %loop-memcpy-residual5165 ] %residual-loop-index5167 = phi i64 [ %129, %loop-memcpy-residual5165 ], [ 0, %loop-memcpy-residual5165.preheader ] %scevgep7268 = getelementptr i8, ptr addrspace(4) %scevgep7267, i64 %residual-loop-index5167 %128 = load i8, ptr addrspace(4) %scevgep7268, align 1 %scevgep7266 = getelementptr i8, ptr %scevgep7265, i64 %residual-loop-index5167 store i8 %128, ptr %scevgep7266, align 1 %129 = add i64 %residual-loop-index5167, 1 %130 = icmp uge i64 %129, %116 %131 = call i64 @llvm.amdgcn.if.break.i64(i1 %130, i64 %phi.broken8616) %132 = call i1 @llvm.amdgcn.loop.i64(i64 %131) br i1 %132, label %Flow8592, label %loop-memcpy-residual5165 Flow8592: ; preds = %loop-memcpy-residual5165 %.lcssa9353 = phi i64 [ %131, %loop-memcpy-residual5165 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9353) br label %Flow8593, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i: ; preds = %Flow8596 %conv.i.i26.i.i.i.i = xor i32 %port.sroa.37.0.i.i, 1 fence release %133 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i = getelementptr inbounds nuw i32, ptr %133, i64 %idxprom.i23.i.i.i.i.i store atomic i32 %conv.i.i26.i.i.i.i, ptr %arrayidx.i24.i29.i.i.i.i monotonic, align 4 %add.i.i.i.i = add i64 %idx.0.i.i.i.i, 64 %scevgep7258 = getelementptr i8, ptr addrspace(4) %lsr.iv7257, i64 64 %lsr.iv.next7263 = add i64 %lsr.iv7262, -64 br label %Flow8599, !amdgpu.uniform !42 cond.false.i.i.i: ; preds = %Flow8599 %.lcssa9355 = phi i64 [ %110, %Flow8599 ] %port.sroa.37.0.i.i.lcssa = phi i32 [ %port.sroa.37.0.i.i, %Flow8599 ] %.lcssa9354 = phi i32 [ %96, %Flow8599 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9355) %134 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa9354) %135 = icmp ne i32 %134, %port.sroa.37.0.i.i.lcssa %136 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %135) %137 = extractvalue { i1, i64 } %136, 0 %138 = extractvalue { i1, i64 } %136, 1 br i1 %137, label %while.body.i.i.i.i.preheader, label %Flow8591 while.body.i.i.i.i.preheader: ; preds = %cond.false.i.i.i br label %while.body.i.i.i.i, !amdgpu.uniform !42 Flow8591: ; preds = %Flow8590, %cond.false.i.i.i call void @llvm.amdgcn.end.cf.i64(i64 %138) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit, !amdgpu.uniform !42 while.body.i.i.i.i: ; preds = %while.body.i.i.i.i.preheader, %while.body.i.i.i.i %phi.broken8618 = phi i64 [ 0, %while.body.i.i.i.i.preheader ], [ %142, %while.body.i.i.i.i ] tail call void @llvm.amdgcn.s.sleep(i32 2) %139 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i = getelementptr inbounds nuw i32, ptr %139, i64 %idxprom.i23.i.i.i.i.i, !amdgpu.uniform !42 %140 = load atomic i32, ptr %arrayidx.i.i.i8.i.i monotonic, align 4 %141 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %140) %cmp.i.not.i.i.i.i = icmp eq i32 %141, %port.sroa.37.0.i.i.lcssa %142 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i, i64 %phi.broken8618) %143 = call i1 @llvm.amdgcn.loop.i64(i64 %142) br i1 %143, label %Flow8590, label %while.body.i.i.i.i Flow8590: ; preds = %while.body.i.i.i.i %.lcssa9351 = phi i64 [ %142, %while.body.i.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9351) br label %Flow8591, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit: ; preds = %Flow8591 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %144 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa9362, i1 true) %iszero.i.i.i.i.i13.i.i = icmp ne i64 %.lcssa9362, 0 %cmp2.i.i.i.i14.i.i = icmp eq i64 %144, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i = select i1 %iszero.i.i.i.i.i13.i.i, i1 %cmp2.i.i.i.i14.i.i, i1 false %145 = and i32 %.lcssa9363, 31 %conv4.i.i.i19.i.i = zext i1 %cmp.i.i.i.i15.i.i to i32 %shl.i.i.i20.i.i = shl nuw i32 %conv4.i.i.i19.i.i, %145 %xor.i.i.i21.i.i = xor i32 %shl.i.i.i20.i.i, -1 %146 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5472, !amdgpu.uniform !42 147: ; preds = %ComputeEnd5473 %div8.i.i.i16.i.i = lshr i32 %.lcssa9363, 5 %idxprom.i.i.i17.i.i = zext nneg i32 %div8.i.i.i16.i.i to i64 %148 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i %sunkaddr7364 = getelementptr inbounds i8, ptr addrspace(1) %148, i64 40 %149 = atomicrmw and ptr addrspace(1) %sunkaddr7364, i32 %.lcssa9350 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %150, !amdgpu.uniform !42 150: ; preds = %147, %ComputeEnd5473 call void @llvm.amdgcn.end.cf.i64(i64 %6742) tail call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i1.i13, !amdgpu.uniform !42 for.cond.i.i1.i13: ; preds = %150, %Flow8589 %151 = phi i32 [ %189, %Flow8589 ], [ poison, %150 ] %152 = phi i64 [ %190, %Flow8589 ], [ poison, %150 ] %153 = phi i32 [ %191, %Flow8589 ], [ poison, %150 ] %retval.sroa.6.0.i.i.i14 = phi i32 [ %194, %Flow8589 ], [ undef, %150 ] %retval.sroa.2.0.i.i.i16 = phi i64 [ %193, %Flow8589 ], [ undef, %150 ] %retval.sroa.8.0.i.i.i17 = phi i32 [ %192, %Flow8589 ], [ undef, %150 ] %index.0.i.i.i18 = phi i32 [ %196, %Flow8589 ], [ 0, %150 ] %154 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i19 = icmp ult i32 %index.0.i.i.i18, %154 %spec.store.select.i.i.i20 = select i1 %cmp.not.i.i.i19, i32 %index.0.i.i.i18, i32 0 %155 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %156 = and i32 %spec.store.select.i.i.i20, 31 %157 = lshr i64 %155, %sh_prom.i.i.i.i %158 = trunc i64 %157 to i32 %conv4.i.i.i.i.i24 = and i32 %158, 1 %shl.i.i.i.i.i25 = shl nuw i32 %conv4.i.i.i.i.i24, %156 %159 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5476, !amdgpu.uniform !42 160: ; preds = %ComputeEnd5477 %sunkaddr7365 = getelementptr inbounds i8, ptr addrspace(1) %6752, i64 40 %161 = atomicrmw or ptr addrspace(1) %sunkaddr7365, i32 %.lcssa9344 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %162, !amdgpu.uniform !42 162: ; preds = %160, %ComputeEnd5477 %163 = phi i32 [ %161, %160 ], [ poison, %ComputeEnd5477 ] call void @llvm.amdgcn.end.cf.i64(i64 %6761) %164 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %163) %165 = or i32 %164, %.lcssa9345 %shl5.i.i.i.i.i26 = shl nuw i32 1, %156 %and.i.i.i.i.i27 = and i32 %shl5.i.i.i.i.i26, %165 %tobool3.i.i.i.i28 = icmp ne i32 %and.i.i.i.i.i27, 0 %166 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i28) %and.i.i.i.i.i.i29 = and i64 %166, %155 %cmp.i.not.i.i.i30 = icmp ne i64 %155, %and.i.i.i.i.i.i29 br i1 %cmp.i.not.i.i.i30, label %if.then.i.i.i.i31, label %Flow8588, !amdgpu.uniform !42 if.then.i.i.i.i31: ; preds = %162 fence syncscope("agent") acquire %167 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %168 = extractelement <2 x i64> %167, i32 0 %169 = inttoptr i64 %168 to ptr %170 = extractelement <2 x i64> %167, i32 1 %171 = inttoptr i64 %170 to ptr %idxprom.i.i.i.i32 = zext i32 %spec.store.select.i.i.i20 to i64 %arrayidx.i.i.i.i33 = getelementptr inbounds nuw i32, ptr %169, i64 %idxprom.i.i.i.i32, !amdgpu.uniform !42 %172 = load atomic i32, ptr %arrayidx.i.i.i.i33 monotonic, align 4 %173 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %172) %arrayidx.i45.i.i.i34 = getelementptr inbounds nuw i32, ptr %171, i64 %idxprom.i.i.i.i32, !amdgpu.uniform !42 %174 = load atomic i32, ptr %arrayidx.i45.i.i.i34 monotonic, align 4 %175 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %174) %cmp.i46.not.i.i.i35 = icmp ne i32 %173, %175 br i1 %cmp.i46.not.i.i.i35, label %if.then12.i.i.i36, label %Flow8586, !amdgpu.uniform !42 if.then12.i.i.i36: ; preds = %if.then.i.i.i.i31 fence syncscope("agent") release %176 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %155, i1 true) %iszero.i.i.i.i.i.i.i37 = icmp ne i64 %155, 0 %cmp2.i.i.i.i.i.i38 = icmp eq i64 %176, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i39 = select i1 %iszero.i.i.i.i.i.i.i37, i1 %cmp2.i.i.i.i.i.i38, i1 false %conv4.i.i51.i.i.i40 = zext i1 %cmp.i.i.i.i.i.i39 to i32 %shl.i.i52.i.i.i41 = shl nuw i32 %conv4.i.i51.i.i.i40, %156 %xor.i.i.i.i.i42 = xor i32 %shl.i.i52.i.i.i41, -1 %177 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5481, !amdgpu.uniform !42 178: ; preds = %ComputeEnd5482 %sunkaddr7366 = getelementptr inbounds i8, ptr addrspace(1) %6752, i64 40 %179 = atomicrmw and ptr addrspace(1) %sunkaddr7366, i32 %.lcssa9346 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %180, !amdgpu.uniform !42 180: ; preds = %178, %ComputeEnd5482 call void @llvm.amdgcn.end.cf.i64(i64 %6779) tail call void @llvm.amdgcn.wave.barrier() br label %Flow8586, !amdgpu.uniform !42 if.end14.i.i.i101: ; preds = %Flow8586 %181 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %155, i1 true) %iszero.i.i.i.i.i.i102 = icmp ne i64 %155, 0 %cmp2.i.i.i.i.i103 = icmp eq i64 %181, %sh_prom.i.i.i.i %cmp.i.i.i.i.i104 = select i1 %iszero.i.i.i.i.i.i102, i1 %cmp2.i.i.i.i.i103, i1 false %182 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i104) %183 = extractvalue { i1, i64 } %182, 0 %184 = extractvalue { i1, i64 } %182, 1 br i1 %183, label %if.then16.i.i.i106, label %if.end22.i.i.i105 if.then16.i.i.i106: ; preds = %if.end14.i.i.i101 %185 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i107 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %185, i64 %idxprom.i.i.i.i32, i32 1 store i32 1660944387, ptr %opcode.i.i.i107, align 8, !tbaa !77 %arrayidx21.i.i.i108 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %185, i64 %idxprom.i.i.i.i32 store i64 %155, ptr %arrayidx21.i.i.i108, align 8, !tbaa !80 br label %if.end22.i.i.i105, !amdgpu.uniform !42 Flow8587: ; preds = %if.end22.i.i.i105, %Flow8586 %186 = phi i32 [ %173, %if.end22.i.i.i105 ], [ %retval.sroa.8.0.i.i.i17, %Flow8586 ] %187 = phi i64 [ %155, %if.end22.i.i.i105 ], [ %retval.sroa.2.0.i.i.i16, %Flow8586 ] %188 = phi i32 [ %spec.store.select.i.i.i20, %if.end22.i.i.i105 ], [ %retval.sroa.6.0.i.i.i14, %Flow8586 ] br label %cleanup26.i.i.i43, !amdgpu.uniform !42 if.end22.i.i.i105: ; preds = %if.then16.i.i.i106, %if.end14.i.i.i101 call void @llvm.amdgcn.end.cf.i64(i64 %184) tail call void @llvm.amdgcn.wave.barrier() br label %Flow8587, !amdgpu.uniform !42 Flow8588: ; preds = %cleanup26.i.i.i43, %162 %189 = phi i32 [ %188, %cleanup26.i.i.i43 ], [ %151, %162 ] %190 = phi i64 [ %187, %cleanup26.i.i.i43 ], [ %152, %162 ] %191 = phi i32 [ %186, %cleanup26.i.i.i43 ], [ %153, %162 ] %192 = phi i32 [ %186, %cleanup26.i.i.i43 ], [ %retval.sroa.8.0.i.i.i17, %162 ] %193 = phi i64 [ %187, %cleanup26.i.i.i43 ], [ %retval.sroa.2.0.i.i.i16, %162 ] %194 = phi i32 [ %188, %cleanup26.i.i.i43 ], [ %retval.sroa.6.0.i.i.i14, %162 ] %195 = phi i1 [ %cmp.i46.not.i.i.i35, %cleanup26.i.i.i43 ], [ true, %162 ] br i1 %195, label %for.inc.i.i.i48, label %Flow8589, !amdgpu.uniform !42 cleanup26.i.i.i43: ; preds = %Flow8587 br label %Flow8588, !amdgpu.uniform !42 for.inc.i.i.i48: ; preds = %Flow8588 %inc.i.i.i53 = add i32 %spec.store.select.i.i.i20, 1 br label %Flow8589, !amdgpu.uniform !42 Flow8589: ; preds = %for.inc.i.i.i48, %Flow8588 %196 = phi i32 [ %inc.i.i.i53, %for.inc.i.i.i48 ], [ poison, %Flow8588 ] %197 = phi i1 [ false, %for.inc.i.i.i48 ], [ true, %Flow8588 ] br i1 %197, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i54, label %for.cond.i.i1.i13, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i54: ; preds = %Flow8589 %.lcssa9349 = phi i32 [ %189, %Flow8589 ] %.lcssa9348 = phi i64 [ %190, %Flow8589 ] %.lcssa9347 = phi i32 [ %191, %Flow8589 ] fence acquire %198 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i55 = shl i32 %.lcssa9349, 6 %idxprom.i19.i.i.i.i.i56 = zext i32 %mul.i.i.i.i.i.i55 to i64 %arrayidx.i20.i.i.i.i.i57 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %198, i64 %idxprom.i19.i.i.i.i.i56 %arrayidx.i22.i.i.i.i.i58 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i57, i64 %sh_prom.i.i.i.i store i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.12.30 to ptr), i64 13) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.12.30 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i58, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i59 = tail call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.12.30 to ptr), i64 13) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.12.30 to ptr) to i64)), i64 56) %199 = and i64 %spec.select.i.i.i.i.i.i.i59, 15 %200 = sub i64 %spec.select.i.i.i.i.i.i.i59, %199 %201 = icmp ne i64 %200, 0 br i1 %201, label %loop-memcpy-expansion5169.preheader, label %Flow8585, !amdgpu.uniform !42 loop-memcpy-expansion5169.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i54 %202 = add nuw nsw i64 %78, 8 %scevgep7253 = getelementptr i8, ptr %198, i64 %202 %203 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i56, 6 %scevgep7254 = getelementptr i8, ptr %scevgep7253, i64 %203 br label %loop-memcpy-expansion5169, !amdgpu.uniform !42 Flow8585: ; preds = %Flow8584, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i54 br label %loop-memcpy-residual-header5172, !amdgpu.uniform !42 loop-memcpy-expansion5169: ; preds = %loop-memcpy-expansion5169.preheader, %loop-memcpy-expansion5169 %loop-index5170 = phi i64 [ %206, %loop-memcpy-expansion5169 ], [ 0, %loop-memcpy-expansion5169.preheader ] %204 = getelementptr i8, ptr addrspace(4) @.str.12.30, i64 %loop-index5170, !amdgpu.uniform !42 %205 = load <4 x i32>, ptr addrspace(4) %204, align 1 %scevgep7255 = getelementptr i8, ptr %scevgep7254, i64 %loop-index5170 store <4 x i32> %205, ptr %scevgep7255, align 1 %206 = add i64 %loop-index5170, 16 %207 = icmp uge i64 %206, %200 br i1 %207, label %Flow8584, label %loop-memcpy-expansion5169, !amdgpu.uniform !42 Flow8583: ; preds = %Flow8581, %Flow8582 %208 = phi i64 [ %6462, %Flow8581 ], [ %6459, %Flow8582 ] br label %post-loop-memcpy-expansion5168, !amdgpu.uniform !42 loop-memcpy-residual5171: ; preds = %loop-memcpy-residual5171.preheader, %loop-memcpy-residual5171 %residual-loop-index5173 = phi i64 [ %210, %loop-memcpy-residual5171 ], [ 0, %loop-memcpy-residual5171.preheader ] %scevgep7252 = getelementptr i8, ptr addrspace(4) @.str.12.30, i64 %residual-loop-index5173, !amdgpu.uniform !42 %209 = load i8, ptr addrspace(4) %scevgep7252, align 1 %scevgep7251 = getelementptr i8, ptr %scevgep7250, i64 %residual-loop-index5173 store i8 %209, ptr %scevgep7251, align 1 %210 = add i64 %residual-loop-index5173, 1 %211 = icmp uge i64 %210, %199 br i1 %211, label %Flow8581, label %loop-memcpy-residual5171, !amdgpu.uniform !42 Flow8581: ; preds = %loop-memcpy-residual5171 br label %Flow8583, !amdgpu.uniform !42 post-loop-memcpy-expansion5168: ; preds = %Flow8583 %tobool.not.i.i.i.i.i.i61 = icmp eq i32 %.lcssa9347, 0 %conv.i.i.i.i.i.i62 = zext i1 %tobool.not.i.i.i.i.i.i61 to i32 fence release %212 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i63 = zext i32 %.lcssa9349 to i64 %arrayidx.i24.i.i.i.i.i64 = getelementptr inbounds nuw i32, ptr %212, i64 %idxprom.i23.i.i.i.i.i63 store atomic i32 %conv.i.i.i.i.i.i62, ptr %arrayidx.i24.i.i.i.i.i64 monotonic, align 4 %213 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i65 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %213, i64 %idxprom.i23.i.i.i.i.i63, !amdgpu.uniform !42 %214 = load i64, ptr %arrayidx.i.i5.i.i65, align 8, !tbaa !80 br label %while.cond.i.i.i.i66, !amdgpu.uniform !42 while.cond.i.i.i.i66: ; preds = %post-loop-memcpy-expansion5168, %Flow8580 %phi.broken8619 = phi i64 [ 0, %post-loop-memcpy-expansion5168 ], [ %231, %Flow8580 ] %lsr.iv7242 = phi i64 [ %229, %Flow8580 ], [ -43, %post-loop-memcpy-expansion5168 ] %lsr.iv7237 = phi ptr addrspace(4) [ %228, %Flow8580 ], [ getelementptr (i8, ptr addrspace(4) @.str.12.30, i64 56), %post-loop-memcpy-expansion5168 ] %port.sroa.37.0.i.i67 = phi i32 [ %227, %Flow8580 ], [ %conv.i.i.i.i.i.i62, %post-loop-memcpy-expansion5168 ] %idx.0.i.i.i.i68 = phi i64 [ %226, %Flow8580 ], [ 56, %post-loop-memcpy-expansion5168 ] %cmp.i.i.i.i69 = icmp ult i64 %idx.0.i.i.i.i68, sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.12.30 to ptr), i64 13) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.12.30 to ptr) to i64)) %215 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i69) %and.i.i.i.i6.i.i70 = and i64 %215, %214 %tobool.not.i.i.i.i71 = icmp ne i64 %and.i.i.i.i6.i.i70, 0 %216 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i72 = getelementptr inbounds nuw i32, ptr %216, i64 %idxprom.i23.i.i.i.i.i63, !amdgpu.uniform !42 %217 = load atomic i32, ptr %arrayidx.i22.i.i.i72 monotonic, align 4 %218 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i71) %219 = extractvalue { i1, i64 } %218, 0 %220 = extractvalue { i1, i64 } %218, 1 br i1 %219, label %cond.false.i8.i.i.i.i73, label %Flow8580 cond.false.i8.i.i.i.i73: ; preds = %while.cond.i.i.i.i66 %221 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %217) %222 = icmp ne i32 %221, %port.sroa.37.0.i.i67 br i1 %222, label %while.body.i.i21.i.i.i.i74.preheader, label %Flow8579, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i74.preheader: ; preds = %cond.false.i8.i.i.i.i73 br label %while.body.i.i21.i.i.i.i74, !amdgpu.uniform !42 Flow8579: ; preds = %Flow8578, %cond.false.i8.i.i.i.i73 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i77, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i74: ; preds = %while.body.i.i21.i.i.i.i74.preheader, %while.body.i.i21.i.i.i.i74 tail call void @llvm.amdgcn.s.sleep(i32 2) %223 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i75 = getelementptr inbounds nuw i32, ptr %223, i64 %idxprom.i23.i.i.i.i.i63, !amdgpu.uniform !42 %224 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i75 monotonic, align 4 %225 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %224) %cmp.i.not.i.i23.i.i.i.i76 = icmp eq i32 %225, %port.sroa.37.0.i.i67 br i1 %cmp.i.not.i.i23.i.i.i.i76, label %Flow8578, label %while.body.i.i21.i.i.i.i74, !amdgpu.uniform !42 Flow8578: ; preds = %while.body.i.i21.i.i.i.i74 br label %Flow8579, !amdgpu.uniform !42 Flow8580: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i78, %while.cond.i.i.i.i66 %226 = phi i64 [ %add.i.i.i.i81, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i78 ], [ poison, %while.cond.i.i.i.i66 ] %227 = phi i32 [ %conv.i.i26.i.i.i.i79, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i78 ], [ poison, %while.cond.i.i.i.i66 ] %228 = phi ptr addrspace(4) [ %scevgep7238, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i78 ], [ poison, %while.cond.i.i.i.i66 ] %229 = phi i64 [ %lsr.iv.next7243, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i78 ], [ poison, %while.cond.i.i.i.i66 ] %230 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i78 ], [ true, %while.cond.i.i.i.i66 ] call void @llvm.amdgcn.end.cf.i64(i64 %220) %231 = call i64 @llvm.amdgcn.if.break.i64(i1 %230, i64 %phi.broken8619) %232 = call i1 @llvm.amdgcn.loop.i64(i64 %231) br i1 %232, label %cond.false.i.i.i88, label %while.cond.i.i.i.i66 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i77: ; preds = %Flow8579 fence acquire br i1 %cmp.i.i.i.i69, label %if.then.i.i.i.i.i.i.i82, label %Flow8577, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i82: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i77 %sub.i.i.i.i.i.i.i84 = sub nuw i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.12.30 to ptr), i64 13) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.12.30 to ptr) to i64)), %idx.0.i.i.i.i68 %spec.select.i.i.i36.i.i.i.i85 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i84, i64 64) %233 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %234 = and i64 %spec.select.i.i.i36.i.i.i.i85, 15 %235 = sub i64 %spec.select.i.i.i36.i.i.i.i85, %234 %236 = icmp ne i64 %235, 0 br i1 %236, label %loop-memcpy-expansion5175.preheader, label %Flow8576, !amdgpu.uniform !42 loop-memcpy-expansion5175.preheader: ; preds = %if.then.i.i.i.i.i.i.i82 %arrayidx.i20.i35.i.i.i.i86 = getelementptr %"struct.rpc::Buffer", ptr %233, i64 %idxprom.i19.i.i.i.i.i56 %arrayidx.i22.i38.i.i.i.i87 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i86, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion5175, !amdgpu.uniform !42 Flow8576: ; preds = %Flow8575, %if.then.i.i.i.i.i.i.i82 br label %loop-memcpy-residual-header5178, !amdgpu.uniform !42 loop-memcpy-expansion5175: ; preds = %loop-memcpy-expansion5175.preheader, %loop-memcpy-expansion5175 %loop-index5176 = phi i64 [ %239, %loop-memcpy-expansion5175 ], [ 0, %loop-memcpy-expansion5175.preheader ] %scevgep7239 = getelementptr i8, ptr addrspace(4) %lsr.iv7237, i64 %loop-index5176, !amdgpu.uniform !42 %237 = load <4 x i32>, ptr addrspace(4) %scevgep7239, align 1 %238 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i87, i64 %loop-index5176 store <4 x i32> %237, ptr %238, align 1 %239 = add i64 %loop-index5176, 16 %240 = icmp uge i64 %239, %235 br i1 %240, label %Flow8575, label %loop-memcpy-expansion5175, !amdgpu.uniform !42 Flow8574: ; preds = %Flow8573, %loop-memcpy-residual-header5178 br label %Flow8577, !amdgpu.uniform !42 loop-memcpy-residual5177: ; preds = %loop-memcpy-residual5177.preheader, %loop-memcpy-residual5177 %residual-loop-index5179 = phi i64 [ %242, %loop-memcpy-residual5177 ], [ 0, %loop-memcpy-residual5177.preheader ] %scevgep7248 = getelementptr i8, ptr addrspace(4) %scevgep7247, i64 %residual-loop-index5179, !amdgpu.uniform !42 %241 = load i8, ptr addrspace(4) %scevgep7248, align 1 %scevgep7246 = getelementptr i8, ptr %scevgep7245, i64 %residual-loop-index5179 store i8 %241, ptr %scevgep7246, align 1 %242 = add i64 %residual-loop-index5179, 1 %243 = icmp uge i64 %242, %234 br i1 %243, label %Flow8573, label %loop-memcpy-residual5177, !amdgpu.uniform !42 Flow8573: ; preds = %loop-memcpy-residual5177 br label %Flow8574, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i78: ; preds = %Flow8577 %conv.i.i26.i.i.i.i79 = xor i32 %port.sroa.37.0.i.i67, 1 fence release %244 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i80 = getelementptr inbounds nuw i32, ptr %244, i64 %idxprom.i23.i.i.i.i.i63 store atomic i32 %conv.i.i26.i.i.i.i79, ptr %arrayidx.i24.i29.i.i.i.i80 monotonic, align 4 %add.i.i.i.i81 = add i64 %idx.0.i.i.i.i68, 64 %scevgep7238 = getelementptr i8, ptr addrspace(4) %lsr.iv7237, i64 64 %lsr.iv.next7243 = add i64 %lsr.iv7242, -64 br label %Flow8580, !amdgpu.uniform !42 cond.false.i.i.i88: ; preds = %Flow8580 %.lcssa9343 = phi i64 [ %231, %Flow8580 ] %port.sroa.37.0.i.i67.lcssa = phi i32 [ %port.sroa.37.0.i.i67, %Flow8580 ] %.lcssa9342 = phi i32 [ %217, %Flow8580 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9343) %245 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa9342) %246 = icmp ne i32 %245, %port.sroa.37.0.i.i67.lcssa %247 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %246) %248 = extractvalue { i1, i64 } %247, 0 %249 = extractvalue { i1, i64 } %247, 1 br i1 %248, label %while.body.i.i.i.i89.preheader, label %Flow8572 while.body.i.i.i.i89.preheader: ; preds = %cond.false.i.i.i88 br label %while.body.i.i.i.i89, !amdgpu.uniform !42 Flow8572: ; preds = %Flow8571, %cond.false.i.i.i88 call void @llvm.amdgcn.end.cf.i64(i64 %249) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit109, !amdgpu.uniform !42 while.body.i.i.i.i89: ; preds = %while.body.i.i.i.i89.preheader, %while.body.i.i.i.i89 %phi.broken8620 = phi i64 [ 0, %while.body.i.i.i.i89.preheader ], [ %253, %while.body.i.i.i.i89 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %250 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i90 = getelementptr inbounds nuw i32, ptr %250, i64 %idxprom.i23.i.i.i.i.i63, !amdgpu.uniform !42 %251 = load atomic i32, ptr %arrayidx.i.i.i8.i.i90 monotonic, align 4 %252 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %251) %cmp.i.not.i.i.i.i91 = icmp eq i32 %252, %port.sroa.37.0.i.i67.lcssa %253 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i91, i64 %phi.broken8620) %254 = call i1 @llvm.amdgcn.loop.i64(i64 %253) br i1 %254, label %Flow8571, label %while.body.i.i.i.i89 Flow8571: ; preds = %while.body.i.i.i.i89 %.lcssa9341 = phi i64 [ %253, %while.body.i.i.i.i89 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9341) br label %Flow8572, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit109: ; preds = %Flow8572 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %255 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa9348, i1 true) %iszero.i.i.i.i.i13.i.i92 = icmp ne i64 %.lcssa9348, 0 %cmp2.i.i.i.i14.i.i93 = icmp eq i64 %255, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i94 = select i1 %iszero.i.i.i.i.i13.i.i92, i1 %cmp2.i.i.i.i14.i.i93, i1 false %256 = and i32 %.lcssa9349, 31 %conv4.i.i.i19.i.i98 = zext i1 %cmp.i.i.i.i15.i.i94 to i32 %shl.i.i.i20.i.i99 = shl nuw i32 %conv4.i.i.i19.i.i98, %256 %xor.i.i.i21.i.i100 = xor i32 %shl.i.i.i20.i.i99, -1 %257 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5485, !amdgpu.uniform !42 258: ; preds = %ComputeEnd5486 %div8.i.i.i16.i.i95 = lshr i32 %.lcssa9349, 5 %idxprom.i.i.i17.i.i96 = zext nneg i32 %div8.i.i.i16.i.i95 to i64 %259 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i96 %sunkaddr7367 = getelementptr inbounds i8, ptr addrspace(1) %259, i64 40 %260 = atomicrmw and ptr addrspace(1) %sunkaddr7367, i32 %.lcssa9340 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %261, !amdgpu.uniform !42 261: ; preds = %258, %ComputeEnd5486 call void @llvm.amdgcn.end.cf.i64(i64 %6796) tail call void @llvm.amdgcn.wave.barrier() %scevgep7233 = getelementptr i8, ptr addrspace(4) %cond6, i64 -1 br label %for.cond.i.i.i110, !amdgpu.uniform !42 for.cond.i.i.i110: ; preds = %261, %for.cond.i.i.i110 %phi.broken8621 = phi i64 [ 0, %261 ], [ %263, %for.cond.i.i.i110 ] %lsr.iv7234 = phi ptr addrspace(4) [ %scevgep7236, %for.cond.i.i.i110 ], [ %scevgep7233, %261 ] %scevgep7236 = getelementptr i8, ptr addrspace(4) %lsr.iv7234, i64 1 %262 = load i8, ptr addrspace(4) %scevgep7236, align 1, !tbaa !57 %cmp.i.i.i112 = icmp eq i8 %262, 0 %263 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.i.i112, i64 %phi.broken8621) %264 = call i1 @llvm.amdgcn.loop.i64(i64 %263) br i1 %264, label %for.cond.i.i1.i119.preheader, label %for.cond.i.i.i110 for.cond.i.i1.i119.preheader: ; preds = %for.cond.i.i.i110 %scevgep7236.lcssa = phi ptr addrspace(4) [ %scevgep7236, %for.cond.i.i.i110 ] %.lcssa9339 = phi i64 [ %263, %for.cond.i.i.i110 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9339) br label %for.cond.i.i1.i119, !amdgpu.uniform !42 for.cond.i.i1.i119: ; preds = %for.cond.i.i1.i119.preheader, %Flow8570 %265 = phi i32 [ %303, %Flow8570 ], [ poison, %for.cond.i.i1.i119.preheader ] %266 = phi i64 [ %304, %Flow8570 ], [ poison, %for.cond.i.i1.i119.preheader ] %267 = phi i32 [ %305, %Flow8570 ], [ poison, %for.cond.i.i1.i119.preheader ] %retval.sroa.6.0.i.i.i120 = phi i32 [ %308, %Flow8570 ], [ undef, %for.cond.i.i1.i119.preheader ] %retval.sroa.2.0.i.i.i122 = phi i64 [ %307, %Flow8570 ], [ undef, %for.cond.i.i1.i119.preheader ] %retval.sroa.8.0.i.i.i123 = phi i32 [ %306, %Flow8570 ], [ undef, %for.cond.i.i1.i119.preheader ] %index.0.i.i.i124 = phi i32 [ %310, %Flow8570 ], [ 0, %for.cond.i.i1.i119.preheader ] %268 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i125 = icmp ult i32 %index.0.i.i.i124, %268 %spec.store.select.i.i.i126 = select i1 %cmp.not.i.i.i125, i32 %index.0.i.i.i124, i32 0 %269 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %270 = and i32 %spec.store.select.i.i.i126, 31 %271 = lshr i64 %269, %sh_prom.i.i.i.i %272 = trunc i64 %271 to i32 %conv4.i.i.i.i.i130 = and i32 %272, 1 %shl.i.i.i.i.i131 = shl nuw i32 %conv4.i.i.i.i.i130, %270 %273 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5489, !amdgpu.uniform !42 274: ; preds = %ComputeEnd5490 %sunkaddr7368 = getelementptr inbounds i8, ptr addrspace(1) %6806, i64 40 %275 = atomicrmw or ptr addrspace(1) %sunkaddr7368, i32 %.lcssa9333 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %276, !amdgpu.uniform !42 276: ; preds = %274, %ComputeEnd5490 %277 = phi i32 [ %275, %274 ], [ poison, %ComputeEnd5490 ] call void @llvm.amdgcn.end.cf.i64(i64 %6815) %278 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %277) %279 = or i32 %278, %.lcssa9334 %shl5.i.i.i.i.i132 = shl nuw i32 1, %270 %and.i.i.i.i.i133 = and i32 %shl5.i.i.i.i.i132, %279 %tobool3.i.i.i.i134 = icmp ne i32 %and.i.i.i.i.i133, 0 %280 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i134) %and.i.i.i.i.i.i135 = and i64 %280, %269 %cmp.i.not.i.i.i136 = icmp ne i64 %269, %and.i.i.i.i.i.i135 br i1 %cmp.i.not.i.i.i136, label %if.then.i.i.i.i137, label %Flow8569, !amdgpu.uniform !42 if.then.i.i.i.i137: ; preds = %276 fence syncscope("agent") acquire %281 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %282 = extractelement <2 x i64> %281, i32 0 %283 = inttoptr i64 %282 to ptr %284 = extractelement <2 x i64> %281, i32 1 %285 = inttoptr i64 %284 to ptr %idxprom.i.i.i.i138 = zext i32 %spec.store.select.i.i.i126 to i64 %arrayidx.i.i.i.i139 = getelementptr inbounds nuw i32, ptr %283, i64 %idxprom.i.i.i.i138, !amdgpu.uniform !42 %286 = load atomic i32, ptr %arrayidx.i.i.i.i139 monotonic, align 4 %287 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %286) %arrayidx.i45.i.i.i140 = getelementptr inbounds nuw i32, ptr %285, i64 %idxprom.i.i.i.i138, !amdgpu.uniform !42 %288 = load atomic i32, ptr %arrayidx.i45.i.i.i140 monotonic, align 4 %289 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %288) %cmp.i46.not.i.i.i141 = icmp ne i32 %287, %289 br i1 %cmp.i46.not.i.i.i141, label %if.then12.i.i.i142, label %Flow8567, !amdgpu.uniform !42 if.then12.i.i.i142: ; preds = %if.then.i.i.i.i137 fence syncscope("agent") release %290 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %269, i1 true) %iszero.i.i.i.i.i.i.i143 = icmp ne i64 %269, 0 %cmp2.i.i.i.i.i.i144 = icmp eq i64 %290, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i145 = select i1 %iszero.i.i.i.i.i.i.i143, i1 %cmp2.i.i.i.i.i.i144, i1 false %conv4.i.i51.i.i.i146 = zext i1 %cmp.i.i.i.i.i.i145 to i32 %shl.i.i52.i.i.i147 = shl nuw i32 %conv4.i.i51.i.i.i146, %270 %xor.i.i.i.i.i148 = xor i32 %shl.i.i52.i.i.i147, -1 %291 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5494, !amdgpu.uniform !42 292: ; preds = %ComputeEnd5495 %sunkaddr7369 = getelementptr inbounds i8, ptr addrspace(1) %6806, i64 40 %293 = atomicrmw and ptr addrspace(1) %sunkaddr7369, i32 %.lcssa9335 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %294, !amdgpu.uniform !42 294: ; preds = %292, %ComputeEnd5495 call void @llvm.amdgcn.end.cf.i64(i64 %6833) tail call void @llvm.amdgcn.wave.barrier() br label %Flow8567, !amdgpu.uniform !42 if.end14.i.i.i207: ; preds = %Flow8567 %295 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %269, i1 true) %iszero.i.i.i.i.i.i208 = icmp ne i64 %269, 0 %cmp2.i.i.i.i.i209 = icmp eq i64 %295, %sh_prom.i.i.i.i %cmp.i.i.i.i.i210 = select i1 %iszero.i.i.i.i.i.i208, i1 %cmp2.i.i.i.i.i209, i1 false %296 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i210) %297 = extractvalue { i1, i64 } %296, 0 %298 = extractvalue { i1, i64 } %296, 1 br i1 %297, label %if.then16.i.i.i212, label %if.end22.i.i.i211 if.then16.i.i.i212: ; preds = %if.end14.i.i.i207 %299 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i213 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %299, i64 %idxprom.i.i.i.i138, i32 1 store i32 1660944387, ptr %opcode.i.i.i213, align 8, !tbaa !77 %arrayidx21.i.i.i214 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %299, i64 %idxprom.i.i.i.i138 store i64 %269, ptr %arrayidx21.i.i.i214, align 8, !tbaa !80 br label %if.end22.i.i.i211, !amdgpu.uniform !42 Flow8568: ; preds = %if.end22.i.i.i211, %Flow8567 %300 = phi i32 [ %287, %if.end22.i.i.i211 ], [ %retval.sroa.8.0.i.i.i123, %Flow8567 ] %301 = phi i64 [ %269, %if.end22.i.i.i211 ], [ %retval.sroa.2.0.i.i.i122, %Flow8567 ] %302 = phi i32 [ %spec.store.select.i.i.i126, %if.end22.i.i.i211 ], [ %retval.sroa.6.0.i.i.i120, %Flow8567 ] br label %cleanup26.i.i.i149, !amdgpu.uniform !42 if.end22.i.i.i211: ; preds = %if.then16.i.i.i212, %if.end14.i.i.i207 call void @llvm.amdgcn.end.cf.i64(i64 %298) tail call void @llvm.amdgcn.wave.barrier() br label %Flow8568, !amdgpu.uniform !42 Flow8569: ; preds = %cleanup26.i.i.i149, %276 %303 = phi i32 [ %302, %cleanup26.i.i.i149 ], [ %265, %276 ] %304 = phi i64 [ %301, %cleanup26.i.i.i149 ], [ %266, %276 ] %305 = phi i32 [ %300, %cleanup26.i.i.i149 ], [ %267, %276 ] %306 = phi i32 [ %300, %cleanup26.i.i.i149 ], [ %retval.sroa.8.0.i.i.i123, %276 ] %307 = phi i64 [ %301, %cleanup26.i.i.i149 ], [ %retval.sroa.2.0.i.i.i122, %276 ] %308 = phi i32 [ %302, %cleanup26.i.i.i149 ], [ %retval.sroa.6.0.i.i.i120, %276 ] %309 = phi i1 [ %cmp.i46.not.i.i.i141, %cleanup26.i.i.i149 ], [ true, %276 ] br i1 %309, label %for.inc.i.i.i154, label %Flow8570, !amdgpu.uniform !42 cleanup26.i.i.i149: ; preds = %Flow8568 br label %Flow8569, !amdgpu.uniform !42 for.inc.i.i.i154: ; preds = %Flow8569 %inc.i.i.i159 = add i32 %spec.store.select.i.i.i126, 1 br label %Flow8570, !amdgpu.uniform !42 Flow8570: ; preds = %for.inc.i.i.i154, %Flow8569 %310 = phi i32 [ %inc.i.i.i159, %for.inc.i.i.i154 ], [ poison, %Flow8569 ] %311 = phi i1 [ false, %for.inc.i.i.i154 ], [ true, %Flow8569 ] br i1 %311, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i160, label %for.cond.i.i1.i119, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i160: ; preds = %Flow8570 %.lcssa9338 = phi i32 [ %303, %Flow8570 ] %.lcssa9337 = phi i64 [ %304, %Flow8570 ] %.lcssa9336 = phi i32 [ %305, %Flow8570 ] %312 = addrspacecast ptr addrspace(4) %scevgep7236.lcssa to ptr %313 = addrspacecast ptr addrspace(4) %cond6 to ptr %sub.ptr.lhs.cast.i.i.i115 = ptrtoint ptr %312 to i64 %sub.ptr.rhs.cast.i.i.i116 = ptrtoint ptr %313 to i64 %sub.ptr.sub.i.i.i117 = sub i64 %sub.ptr.lhs.cast.i.i.i115, %sub.ptr.rhs.cast.i.i.i116 fence acquire %314 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i161 = shl i32 %.lcssa9338, 6 %idxprom.i19.i.i.i.i.i162 = zext i32 %mul.i.i.i.i.i.i161 to i64 %arrayidx.i20.i.i.i.i.i163 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %314, i64 %idxprom.i19.i.i.i.i.i162 %arrayidx.i22.i.i.i.i.i164 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i163, i64 %sh_prom.i.i.i.i store i64 %sub.ptr.sub.i.i.i117, ptr %arrayidx.i22.i.i.i.i.i164, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i165 = tail call i64 @llvm.umin.i64(i64 %sub.ptr.sub.i.i.i117, i64 56) %315 = and i64 %spec.select.i.i.i.i.i.i.i165, 15 %316 = sub i64 %spec.select.i.i.i.i.i.i.i165, %315 %317 = icmp ne i64 %316, 0 %318 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %317) %319 = extractvalue { i1, i64 } %318, 0 %320 = extractvalue { i1, i64 } %318, 1 br i1 %319, label %loop-memcpy-expansion5181.preheader, label %Flow8566 loop-memcpy-expansion5181.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i160 %321 = add nuw nsw i64 %78, 8 %scevgep7230 = getelementptr i8, ptr %314, i64 %321 %322 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i162, 6 %scevgep7231 = getelementptr i8, ptr %scevgep7230, i64 %322 br label %loop-memcpy-expansion5181, !amdgpu.uniform !42 Flow8566: ; preds = %Flow8565, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i160 call void @llvm.amdgcn.end.cf.i64(i64 %320) br label %loop-memcpy-residual-header5184, !amdgpu.uniform !42 loop-memcpy-expansion5181: ; preds = %loop-memcpy-expansion5181.preheader, %loop-memcpy-expansion5181 %phi.broken8622 = phi i64 [ 0, %loop-memcpy-expansion5181.preheader ], [ %327, %loop-memcpy-expansion5181 ] %loop-index5182 = phi i64 [ %325, %loop-memcpy-expansion5181 ], [ 0, %loop-memcpy-expansion5181.preheader ] %323 = getelementptr i8, ptr addrspace(4) %cond6, i64 %loop-index5182 %324 = load <4 x i32>, ptr addrspace(4) %323, align 1 %scevgep7232 = getelementptr i8, ptr %scevgep7231, i64 %loop-index5182 store <4 x i32> %324, ptr %scevgep7232, align 1 %325 = add i64 %loop-index5182, 16 %326 = icmp uge i64 %325, %316 %327 = call i64 @llvm.amdgcn.if.break.i64(i1 %326, i64 %phi.broken8622) %328 = call i1 @llvm.amdgcn.loop.i64(i64 %327) br i1 %328, label %Flow8565, label %loop-memcpy-expansion5181 Flow8564: ; preds = %Flow8562, %Flow8563 %329 = phi i64 [ %6478, %Flow8562 ], [ %6470, %Flow8563 ] call void @llvm.amdgcn.end.cf.i64(i64 %6473) br label %post-loop-memcpy-expansion5180, !amdgpu.uniform !42 loop-memcpy-residual5183: ; preds = %loop-memcpy-residual5183.preheader, %loop-memcpy-residual5183 %phi.broken8623 = phi i64 [ 0, %loop-memcpy-residual5183.preheader ], [ %333, %loop-memcpy-residual5183 ] %residual-loop-index5185 = phi i64 [ %331, %loop-memcpy-residual5183 ], [ 0, %loop-memcpy-residual5183.preheader ] %scevgep7229 = getelementptr i8, ptr addrspace(4) %scevgep7228, i64 %residual-loop-index5185 %330 = load i8, ptr addrspace(4) %scevgep7229, align 1 %scevgep7227 = getelementptr i8, ptr %scevgep7226, i64 %residual-loop-index5185 store i8 %330, ptr %scevgep7227, align 1 %331 = add i64 %residual-loop-index5185, 1 %332 = icmp uge i64 %331, %315 %333 = call i64 @llvm.amdgcn.if.break.i64(i1 %332, i64 %phi.broken8623) %334 = call i1 @llvm.amdgcn.loop.i64(i64 %333) br i1 %334, label %Flow8562, label %loop-memcpy-residual5183 Flow8562: ; preds = %loop-memcpy-residual5183 %.lcssa9331 = phi i64 [ %333, %loop-memcpy-residual5183 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9331) br label %Flow8564, !amdgpu.uniform !42 post-loop-memcpy-expansion5180: ; preds = %Flow8564 %335 = addrspacecast ptr addrspace(4) %cond6 to ptr %336 = addrspacecast ptr addrspace(4) %scevgep7236.lcssa to ptr %337 = ptrtoint ptr %335 to i64 %338 = ptrtoint ptr %336 to i64 %tobool.not.i.i.i.i.i.i167 = icmp eq i32 %.lcssa9336, 0 %conv.i.i.i.i.i.i168 = zext i1 %tobool.not.i.i.i.i.i.i167 to i32 fence release %339 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i169 = zext i32 %.lcssa9338 to i64 %arrayidx.i24.i.i.i.i.i170 = getelementptr inbounds nuw i32, ptr %339, i64 %idxprom.i23.i.i.i.i.i169 store atomic i32 %conv.i.i.i.i.i.i168, ptr %arrayidx.i24.i.i.i.i.i170 monotonic, align 4 %340 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i171 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %340, i64 %idxprom.i23.i.i.i.i.i169, !amdgpu.uniform !42 %341 = load i64, ptr %arrayidx.i.i5.i.i171, align 8, !tbaa !80 %scevgep7212 = getelementptr i8, ptr addrspace(4) %cond6, i64 56 %342 = add i64 %338, -56 %343 = sub i64 %342, %337 br label %while.cond.i.i.i.i172, !amdgpu.uniform !42 while.cond.i.i.i.i172: ; preds = %post-loop-memcpy-expansion5180, %Flow8561 %phi.broken8626 = phi i64 [ 0, %post-loop-memcpy-expansion5180 ], [ %360, %Flow8561 ] %lsr.iv7218 = phi i64 [ %358, %Flow8561 ], [ %343, %post-loop-memcpy-expansion5180 ] %lsr.iv7213 = phi ptr addrspace(4) [ %357, %Flow8561 ], [ %scevgep7212, %post-loop-memcpy-expansion5180 ] %port.sroa.37.0.i.i173 = phi i32 [ %356, %Flow8561 ], [ %conv.i.i.i.i.i.i168, %post-loop-memcpy-expansion5180 ] %idx.0.i.i.i.i174 = phi i64 [ %355, %Flow8561 ], [ 56, %post-loop-memcpy-expansion5180 ] %cmp.i.i.i.i175 = icmp ugt i64 %sub.ptr.sub.i.i.i117, %idx.0.i.i.i.i174 %344 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i175) %and.i.i.i.i6.i.i176 = and i64 %344, %341 %tobool.not.i.i.i.i177 = icmp ne i64 %and.i.i.i.i6.i.i176, 0 %345 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i178 = getelementptr inbounds nuw i32, ptr %345, i64 %idxprom.i23.i.i.i.i.i169, !amdgpu.uniform !42 %346 = load atomic i32, ptr %arrayidx.i22.i.i.i178 monotonic, align 4 %347 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i177) %348 = extractvalue { i1, i64 } %347, 0 %349 = extractvalue { i1, i64 } %347, 1 br i1 %348, label %cond.false.i8.i.i.i.i179, label %Flow8561 cond.false.i8.i.i.i.i179: ; preds = %while.cond.i.i.i.i172 %350 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %346) %351 = icmp ne i32 %350, %port.sroa.37.0.i.i173 br i1 %351, label %while.body.i.i21.i.i.i.i180.preheader, label %Flow8560, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i180.preheader: ; preds = %cond.false.i8.i.i.i.i179 br label %while.body.i.i21.i.i.i.i180, !amdgpu.uniform !42 Flow8560: ; preds = %Flow8559, %cond.false.i8.i.i.i.i179 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i183, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i180: ; preds = %while.body.i.i21.i.i.i.i180.preheader, %while.body.i.i21.i.i.i.i180 tail call void @llvm.amdgcn.s.sleep(i32 2) %352 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i181 = getelementptr inbounds nuw i32, ptr %352, i64 %idxprom.i23.i.i.i.i.i169, !amdgpu.uniform !42 %353 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i181 monotonic, align 4 %354 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %353) %cmp.i.not.i.i23.i.i.i.i182 = icmp eq i32 %354, %port.sroa.37.0.i.i173 br i1 %cmp.i.not.i.i23.i.i.i.i182, label %Flow8559, label %while.body.i.i21.i.i.i.i180, !amdgpu.uniform !42 Flow8559: ; preds = %while.body.i.i21.i.i.i.i180 br label %Flow8560, !amdgpu.uniform !42 Flow8561: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i184, %while.cond.i.i.i.i172 %355 = phi i64 [ %add.i.i.i.i187, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i184 ], [ poison, %while.cond.i.i.i.i172 ] %356 = phi i32 [ %conv.i.i26.i.i.i.i185, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i184 ], [ poison, %while.cond.i.i.i.i172 ] %357 = phi ptr addrspace(4) [ %scevgep7214, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i184 ], [ poison, %while.cond.i.i.i.i172 ] %358 = phi i64 [ %lsr.iv.next7219, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i184 ], [ poison, %while.cond.i.i.i.i172 ] %359 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i184 ], [ true, %while.cond.i.i.i.i172 ] call void @llvm.amdgcn.end.cf.i64(i64 %349) %360 = call i64 @llvm.amdgcn.if.break.i64(i1 %359, i64 %phi.broken8626) %361 = call i1 @llvm.amdgcn.loop.i64(i64 %360) br i1 %361, label %cond.false.i.i.i194, label %while.cond.i.i.i.i172 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i183: ; preds = %Flow8560 fence acquire %362 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i175) %363 = extractvalue { i1, i64 } %362, 0 %364 = extractvalue { i1, i64 } %362, 1 br i1 %363, label %if.then.i.i.i.i.i.i.i188, label %Flow8558 if.then.i.i.i.i.i.i.i188: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i183 %sub.i.i.i.i.i.i.i190 = sub nuw i64 %sub.ptr.sub.i.i.i117, %idx.0.i.i.i.i174 %spec.select.i.i.i36.i.i.i.i191 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i190, i64 64) %365 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %366 = and i64 %spec.select.i.i.i36.i.i.i.i191, 15 %367 = sub i64 %spec.select.i.i.i36.i.i.i.i191, %366 %368 = icmp ne i64 %367, 0 %369 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %368) %370 = extractvalue { i1, i64 } %369, 0 %371 = extractvalue { i1, i64 } %369, 1 br i1 %370, label %loop-memcpy-expansion5205.preheader, label %Flow8557 loop-memcpy-expansion5205.preheader: ; preds = %if.then.i.i.i.i.i.i.i188 %arrayidx.i20.i35.i.i.i.i192 = getelementptr %"struct.rpc::Buffer", ptr %365, i64 %idxprom.i19.i.i.i.i.i162 %arrayidx.i22.i38.i.i.i.i193 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i192, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion5205, !amdgpu.uniform !42 Flow8557: ; preds = %Flow8556, %if.then.i.i.i.i.i.i.i188 call void @llvm.amdgcn.end.cf.i64(i64 %371) br label %loop-memcpy-residual-header5208, !amdgpu.uniform !42 loop-memcpy-expansion5205: ; preds = %loop-memcpy-expansion5205.preheader, %loop-memcpy-expansion5205 %phi.broken8624 = phi i64 [ 0, %loop-memcpy-expansion5205.preheader ], [ %376, %loop-memcpy-expansion5205 ] %loop-index5206 = phi i64 [ %374, %loop-memcpy-expansion5205 ], [ 0, %loop-memcpy-expansion5205.preheader ] %scevgep7215 = getelementptr i8, ptr addrspace(4) %lsr.iv7213, i64 %loop-index5206 %372 = load <4 x i32>, ptr addrspace(4) %scevgep7215, align 1 %373 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i193, i64 %loop-index5206 store <4 x i32> %372, ptr %373, align 1 %374 = add i64 %loop-index5206, 16 %375 = icmp uge i64 %374, %367 %376 = call i64 @llvm.amdgcn.if.break.i64(i1 %375, i64 %phi.broken8624) %377 = call i1 @llvm.amdgcn.loop.i64(i64 %376) br i1 %377, label %Flow8556, label %loop-memcpy-expansion5205 Flow8555: ; preds = %Flow8554, %loop-memcpy-residual-header5208 call void @llvm.amdgcn.end.cf.i64(i64 %6512) br label %Flow8558, !amdgpu.uniform !42 loop-memcpy-residual5207: ; preds = %loop-memcpy-residual5207.preheader, %loop-memcpy-residual5207 %phi.broken8625 = phi i64 [ 0, %loop-memcpy-residual5207.preheader ], [ %381, %loop-memcpy-residual5207 ] %residual-loop-index5209 = phi i64 [ %379, %loop-memcpy-residual5207 ], [ 0, %loop-memcpy-residual5207.preheader ] %scevgep7224 = getelementptr i8, ptr addrspace(4) %scevgep7223, i64 %residual-loop-index5209 %378 = load i8, ptr addrspace(4) %scevgep7224, align 1 %scevgep7222 = getelementptr i8, ptr %scevgep7221, i64 %residual-loop-index5209 store i8 %378, ptr %scevgep7222, align 1 %379 = add i64 %residual-loop-index5209, 1 %380 = icmp uge i64 %379, %366 %381 = call i64 @llvm.amdgcn.if.break.i64(i1 %380, i64 %phi.broken8625) %382 = call i1 @llvm.amdgcn.loop.i64(i64 %381) br i1 %382, label %Flow8554, label %loop-memcpy-residual5207 Flow8554: ; preds = %loop-memcpy-residual5207 %.lcssa9328 = phi i64 [ %381, %loop-memcpy-residual5207 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9328) br label %Flow8555, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i184: ; preds = %Flow8558 %conv.i.i26.i.i.i.i185 = xor i32 %port.sroa.37.0.i.i173, 1 fence release %383 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i186 = getelementptr inbounds nuw i32, ptr %383, i64 %idxprom.i23.i.i.i.i.i169 store atomic i32 %conv.i.i26.i.i.i.i185, ptr %arrayidx.i24.i29.i.i.i.i186 monotonic, align 4 %add.i.i.i.i187 = add i64 %idx.0.i.i.i.i174, 64 %scevgep7214 = getelementptr i8, ptr addrspace(4) %lsr.iv7213, i64 64 %lsr.iv.next7219 = add i64 %lsr.iv7218, -64 br label %Flow8561, !amdgpu.uniform !42 cond.false.i.i.i194: ; preds = %Flow8561 %.lcssa9330 = phi i64 [ %360, %Flow8561 ] %port.sroa.37.0.i.i173.lcssa = phi i32 [ %port.sroa.37.0.i.i173, %Flow8561 ] %.lcssa9329 = phi i32 [ %346, %Flow8561 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9330) %384 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa9329) %385 = icmp ne i32 %384, %port.sroa.37.0.i.i173.lcssa %386 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %385) %387 = extractvalue { i1, i64 } %386, 0 %388 = extractvalue { i1, i64 } %386, 1 br i1 %387, label %while.body.i.i.i.i195.preheader, label %Flow8553 while.body.i.i.i.i195.preheader: ; preds = %cond.false.i.i.i194 br label %while.body.i.i.i.i195, !amdgpu.uniform !42 Flow8553: ; preds = %Flow8552, %cond.false.i.i.i194 call void @llvm.amdgcn.end.cf.i64(i64 %388) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit215, !amdgpu.uniform !42 while.body.i.i.i.i195: ; preds = %while.body.i.i.i.i195.preheader, %while.body.i.i.i.i195 %phi.broken8627 = phi i64 [ 0, %while.body.i.i.i.i195.preheader ], [ %392, %while.body.i.i.i.i195 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %389 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i196 = getelementptr inbounds nuw i32, ptr %389, i64 %idxprom.i23.i.i.i.i.i169, !amdgpu.uniform !42 %390 = load atomic i32, ptr %arrayidx.i.i.i8.i.i196 monotonic, align 4 %391 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %390) %cmp.i.not.i.i.i.i197 = icmp eq i32 %391, %port.sroa.37.0.i.i173.lcssa %392 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i197, i64 %phi.broken8627) %393 = call i1 @llvm.amdgcn.loop.i64(i64 %392) br i1 %393, label %Flow8552, label %while.body.i.i.i.i195 Flow8552: ; preds = %while.body.i.i.i.i195 %.lcssa9326 = phi i64 [ %392, %while.body.i.i.i.i195 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9326) br label %Flow8553, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit215: ; preds = %Flow8553 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %394 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa9337, i1 true) %iszero.i.i.i.i.i13.i.i198 = icmp ne i64 %.lcssa9337, 0 %cmp2.i.i.i.i14.i.i199 = icmp eq i64 %394, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i200 = select i1 %iszero.i.i.i.i.i13.i.i198, i1 %cmp2.i.i.i.i14.i.i199, i1 false %395 = and i32 %.lcssa9338, 31 %conv4.i.i.i19.i.i204 = zext i1 %cmp.i.i.i.i15.i.i200 to i32 %shl.i.i.i20.i.i205 = shl nuw i32 %conv4.i.i.i19.i.i204, %395 %xor.i.i.i21.i.i206 = xor i32 %shl.i.i.i20.i.i205, -1 %396 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5498, !amdgpu.uniform !42 397: ; preds = %ComputeEnd5499 %div8.i.i.i16.i.i201 = lshr i32 %.lcssa9338, 5 %idxprom.i.i.i17.i.i202 = zext nneg i32 %div8.i.i.i16.i.i201 to i64 %398 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i202 %sunkaddr7370 = getelementptr inbounds i8, ptr addrspace(1) %398, i64 40 %399 = atomicrmw and ptr addrspace(1) %sunkaddr7370, i32 %.lcssa9325 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %400, !amdgpu.uniform !42 400: ; preds = %397, %ComputeEnd5499 call void @llvm.amdgcn.end.cf.i64(i64 %6850) tail call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i1.i224, !amdgpu.uniform !42 for.cond.i.i1.i224: ; preds = %400, %Flow8551 %401 = phi i32 [ %439, %Flow8551 ], [ poison, %400 ] %402 = phi i64 [ %440, %Flow8551 ], [ poison, %400 ] %403 = phi i32 [ %441, %Flow8551 ], [ poison, %400 ] %retval.sroa.6.0.i.i.i225 = phi i32 [ %444, %Flow8551 ], [ undef, %400 ] %retval.sroa.2.0.i.i.i227 = phi i64 [ %443, %Flow8551 ], [ undef, %400 ] %retval.sroa.8.0.i.i.i228 = phi i32 [ %442, %Flow8551 ], [ undef, %400 ] %index.0.i.i.i229 = phi i32 [ %446, %Flow8551 ], [ 0, %400 ] %404 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i230 = icmp ult i32 %index.0.i.i.i229, %404 %spec.store.select.i.i.i231 = select i1 %cmp.not.i.i.i230, i32 %index.0.i.i.i229, i32 0 %405 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %406 = and i32 %spec.store.select.i.i.i231, 31 %407 = lshr i64 %405, %sh_prom.i.i.i.i %408 = trunc i64 %407 to i32 %conv4.i.i.i.i.i235 = and i32 %408, 1 %shl.i.i.i.i.i236 = shl nuw i32 %conv4.i.i.i.i.i235, %406 %409 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5502, !amdgpu.uniform !42 410: ; preds = %ComputeEnd5503 %sunkaddr7371 = getelementptr inbounds i8, ptr addrspace(1) %6860, i64 40 %411 = atomicrmw or ptr addrspace(1) %sunkaddr7371, i32 %.lcssa9319 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %412, !amdgpu.uniform !42 412: ; preds = %410, %ComputeEnd5503 %413 = phi i32 [ %411, %410 ], [ poison, %ComputeEnd5503 ] call void @llvm.amdgcn.end.cf.i64(i64 %6869) %414 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %413) %415 = or i32 %414, %.lcssa9320 %shl5.i.i.i.i.i237 = shl nuw i32 1, %406 %and.i.i.i.i.i238 = and i32 %shl5.i.i.i.i.i237, %415 %tobool3.i.i.i.i239 = icmp ne i32 %and.i.i.i.i.i238, 0 %416 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i239) %and.i.i.i.i.i.i240 = and i64 %416, %405 %cmp.i.not.i.i.i241 = icmp ne i64 %405, %and.i.i.i.i.i.i240 br i1 %cmp.i.not.i.i.i241, label %if.then.i.i.i.i242, label %Flow8550, !amdgpu.uniform !42 if.then.i.i.i.i242: ; preds = %412 fence syncscope("agent") acquire %417 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %418 = extractelement <2 x i64> %417, i32 0 %419 = inttoptr i64 %418 to ptr %420 = extractelement <2 x i64> %417, i32 1 %421 = inttoptr i64 %420 to ptr %idxprom.i.i.i.i243 = zext i32 %spec.store.select.i.i.i231 to i64 %arrayidx.i.i.i.i244 = getelementptr inbounds nuw i32, ptr %419, i64 %idxprom.i.i.i.i243, !amdgpu.uniform !42 %422 = load atomic i32, ptr %arrayidx.i.i.i.i244 monotonic, align 4 %423 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %422) %arrayidx.i45.i.i.i245 = getelementptr inbounds nuw i32, ptr %421, i64 %idxprom.i.i.i.i243, !amdgpu.uniform !42 %424 = load atomic i32, ptr %arrayidx.i45.i.i.i245 monotonic, align 4 %425 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %424) %cmp.i46.not.i.i.i246 = icmp ne i32 %423, %425 br i1 %cmp.i46.not.i.i.i246, label %if.then12.i.i.i247, label %Flow8548, !amdgpu.uniform !42 if.then12.i.i.i247: ; preds = %if.then.i.i.i.i242 fence syncscope("agent") release %426 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %405, i1 true) %iszero.i.i.i.i.i.i.i248 = icmp ne i64 %405, 0 %cmp2.i.i.i.i.i.i249 = icmp eq i64 %426, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i250 = select i1 %iszero.i.i.i.i.i.i.i248, i1 %cmp2.i.i.i.i.i.i249, i1 false %conv4.i.i51.i.i.i251 = zext i1 %cmp.i.i.i.i.i.i250 to i32 %shl.i.i52.i.i.i252 = shl nuw i32 %conv4.i.i51.i.i.i251, %406 %xor.i.i.i.i.i253 = xor i32 %shl.i.i52.i.i.i252, -1 %427 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5507, !amdgpu.uniform !42 428: ; preds = %ComputeEnd5508 %sunkaddr7372 = getelementptr inbounds i8, ptr addrspace(1) %6860, i64 40 %429 = atomicrmw and ptr addrspace(1) %sunkaddr7372, i32 %.lcssa9321 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %430, !amdgpu.uniform !42 430: ; preds = %428, %ComputeEnd5508 call void @llvm.amdgcn.end.cf.i64(i64 %6887) tail call void @llvm.amdgcn.wave.barrier() br label %Flow8548, !amdgpu.uniform !42 if.end14.i.i.i312: ; preds = %Flow8548 %431 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %405, i1 true) %iszero.i.i.i.i.i.i313 = icmp ne i64 %405, 0 %cmp2.i.i.i.i.i314 = icmp eq i64 %431, %sh_prom.i.i.i.i %cmp.i.i.i.i.i315 = select i1 %iszero.i.i.i.i.i.i313, i1 %cmp2.i.i.i.i.i314, i1 false %432 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i315) %433 = extractvalue { i1, i64 } %432, 0 %434 = extractvalue { i1, i64 } %432, 1 br i1 %433, label %if.then16.i.i.i317, label %if.end22.i.i.i316 if.then16.i.i.i317: ; preds = %if.end14.i.i.i312 %435 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i318 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %435, i64 %idxprom.i.i.i.i243, i32 1 store i32 1660944387, ptr %opcode.i.i.i318, align 8, !tbaa !77 %arrayidx21.i.i.i319 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %435, i64 %idxprom.i.i.i.i243 store i64 %405, ptr %arrayidx21.i.i.i319, align 8, !tbaa !80 br label %if.end22.i.i.i316, !amdgpu.uniform !42 Flow8549: ; preds = %if.end22.i.i.i316, %Flow8548 %436 = phi i32 [ %423, %if.end22.i.i.i316 ], [ %retval.sroa.8.0.i.i.i228, %Flow8548 ] %437 = phi i64 [ %405, %if.end22.i.i.i316 ], [ %retval.sroa.2.0.i.i.i227, %Flow8548 ] %438 = phi i32 [ %spec.store.select.i.i.i231, %if.end22.i.i.i316 ], [ %retval.sroa.6.0.i.i.i225, %Flow8548 ] br label %cleanup26.i.i.i254, !amdgpu.uniform !42 if.end22.i.i.i316: ; preds = %if.then16.i.i.i317, %if.end14.i.i.i312 call void @llvm.amdgcn.end.cf.i64(i64 %434) tail call void @llvm.amdgcn.wave.barrier() br label %Flow8549, !amdgpu.uniform !42 Flow8550: ; preds = %cleanup26.i.i.i254, %412 %439 = phi i32 [ %438, %cleanup26.i.i.i254 ], [ %401, %412 ] %440 = phi i64 [ %437, %cleanup26.i.i.i254 ], [ %402, %412 ] %441 = phi i32 [ %436, %cleanup26.i.i.i254 ], [ %403, %412 ] %442 = phi i32 [ %436, %cleanup26.i.i.i254 ], [ %retval.sroa.8.0.i.i.i228, %412 ] %443 = phi i64 [ %437, %cleanup26.i.i.i254 ], [ %retval.sroa.2.0.i.i.i227, %412 ] %444 = phi i32 [ %438, %cleanup26.i.i.i254 ], [ %retval.sroa.6.0.i.i.i225, %412 ] %445 = phi i1 [ %cmp.i46.not.i.i.i246, %cleanup26.i.i.i254 ], [ true, %412 ] br i1 %445, label %for.inc.i.i.i259, label %Flow8551, !amdgpu.uniform !42 cleanup26.i.i.i254: ; preds = %Flow8549 br label %Flow8550, !amdgpu.uniform !42 for.inc.i.i.i259: ; preds = %Flow8550 %inc.i.i.i264 = add i32 %spec.store.select.i.i.i231, 1 br label %Flow8551, !amdgpu.uniform !42 Flow8551: ; preds = %for.inc.i.i.i259, %Flow8550 %446 = phi i32 [ %inc.i.i.i264, %for.inc.i.i.i259 ], [ poison, %Flow8550 ] %447 = phi i1 [ false, %for.inc.i.i.i259 ], [ true, %Flow8550 ] br i1 %447, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i265, label %for.cond.i.i1.i224, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i265: ; preds = %Flow8551 %.lcssa9324 = phi i32 [ %439, %Flow8551 ] %.lcssa9323 = phi i64 [ %440, %Flow8551 ] %.lcssa9322 = phi i32 [ %441, %Flow8551 ] fence acquire %448 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i266 = shl i32 %.lcssa9324, 6 %idxprom.i19.i.i.i.i.i267 = zext i32 %mul.i.i.i.i.i.i266 to i64 %arrayidx.i20.i.i.i.i.i268 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %448, i64 %idxprom.i19.i.i.i.i.i267 %arrayidx.i22.i.i.i.i.i269 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i268, i64 %sh_prom.i.i.i.i store i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.13.31 to ptr), i64 8) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.13.31 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i269, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i270 = tail call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.13.31 to ptr), i64 8) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.13.31 to ptr) to i64)), i64 56) %449 = and i64 %spec.select.i.i.i.i.i.i.i270, 15 %450 = sub i64 %spec.select.i.i.i.i.i.i.i270, %449 %451 = icmp ne i64 %450, 0 br i1 %451, label %loop-memcpy-expansion5211.preheader, label %Flow8547, !amdgpu.uniform !42 loop-memcpy-expansion5211.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i265 %452 = add nuw nsw i64 %78, 8 %scevgep7209 = getelementptr i8, ptr %448, i64 %452 %453 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i267, 6 %scevgep7210 = getelementptr i8, ptr %scevgep7209, i64 %453 br label %loop-memcpy-expansion5211, !amdgpu.uniform !42 Flow8547: ; preds = %Flow8546, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i265 br label %loop-memcpy-residual-header5214, !amdgpu.uniform !42 loop-memcpy-expansion5211: ; preds = %loop-memcpy-expansion5211.preheader, %loop-memcpy-expansion5211 %loop-index5212 = phi i64 [ %456, %loop-memcpy-expansion5211 ], [ 0, %loop-memcpy-expansion5211.preheader ] %454 = getelementptr i8, ptr addrspace(4) @.str.13.31, i64 %loop-index5212, !amdgpu.uniform !42 %455 = load <4 x i32>, ptr addrspace(4) %454, align 1 %scevgep7211 = getelementptr i8, ptr %scevgep7210, i64 %loop-index5212 store <4 x i32> %455, ptr %scevgep7211, align 1 %456 = add i64 %loop-index5212, 16 %457 = icmp uge i64 %456, %450 br i1 %457, label %Flow8546, label %loop-memcpy-expansion5211, !amdgpu.uniform !42 Flow8545: ; preds = %Flow8543, %Flow8544 %458 = phi i64 [ %6519, %Flow8543 ], [ %6516, %Flow8544 ] br label %post-loop-memcpy-expansion5210, !amdgpu.uniform !42 loop-memcpy-residual5213: ; preds = %loop-memcpy-residual5213.preheader, %loop-memcpy-residual5213 %residual-loop-index5215 = phi i64 [ %460, %loop-memcpy-residual5213 ], [ 0, %loop-memcpy-residual5213.preheader ] %scevgep7208 = getelementptr i8, ptr addrspace(4) @.str.13.31, i64 %residual-loop-index5215, !amdgpu.uniform !42 %459 = load i8, ptr addrspace(4) %scevgep7208, align 1 %scevgep7207 = getelementptr i8, ptr %scevgep7206, i64 %residual-loop-index5215 store i8 %459, ptr %scevgep7207, align 1 %460 = add i64 %residual-loop-index5215, 1 %461 = icmp uge i64 %460, %449 br i1 %461, label %Flow8543, label %loop-memcpy-residual5213, !amdgpu.uniform !42 Flow8543: ; preds = %loop-memcpy-residual5213 br label %Flow8545, !amdgpu.uniform !42 post-loop-memcpy-expansion5210: ; preds = %Flow8545 %tobool.not.i.i.i.i.i.i272 = icmp eq i32 %.lcssa9322, 0 %conv.i.i.i.i.i.i273 = zext i1 %tobool.not.i.i.i.i.i.i272 to i32 fence release %462 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i274 = zext i32 %.lcssa9324 to i64 %arrayidx.i24.i.i.i.i.i275 = getelementptr inbounds nuw i32, ptr %462, i64 %idxprom.i23.i.i.i.i.i274 store atomic i32 %conv.i.i.i.i.i.i273, ptr %arrayidx.i24.i.i.i.i.i275 monotonic, align 4 %463 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i276 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %463, i64 %idxprom.i23.i.i.i.i.i274, !amdgpu.uniform !42 %464 = load i64, ptr %arrayidx.i.i5.i.i276, align 8, !tbaa !80 br label %while.cond.i.i.i.i277, !amdgpu.uniform !42 while.cond.i.i.i.i277: ; preds = %post-loop-memcpy-expansion5210, %Flow8542 %phi.broken8628 = phi i64 [ 0, %post-loop-memcpy-expansion5210 ], [ %481, %Flow8542 ] %lsr.iv7198 = phi i64 [ %479, %Flow8542 ], [ -48, %post-loop-memcpy-expansion5210 ] %lsr.iv7193 = phi ptr addrspace(4) [ %478, %Flow8542 ], [ getelementptr (i8, ptr addrspace(4) @.str.13.31, i64 56), %post-loop-memcpy-expansion5210 ] %port.sroa.37.0.i.i278 = phi i32 [ %477, %Flow8542 ], [ %conv.i.i.i.i.i.i273, %post-loop-memcpy-expansion5210 ] %idx.0.i.i.i.i279 = phi i64 [ %476, %Flow8542 ], [ 56, %post-loop-memcpy-expansion5210 ] %cmp.i.i.i.i280 = icmp ult i64 %idx.0.i.i.i.i279, sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.13.31 to ptr), i64 8) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.13.31 to ptr) to i64)) %465 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i280) %and.i.i.i.i6.i.i281 = and i64 %465, %464 %tobool.not.i.i.i.i282 = icmp ne i64 %and.i.i.i.i6.i.i281, 0 %466 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i283 = getelementptr inbounds nuw i32, ptr %466, i64 %idxprom.i23.i.i.i.i.i274, !amdgpu.uniform !42 %467 = load atomic i32, ptr %arrayidx.i22.i.i.i283 monotonic, align 4 %468 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i282) %469 = extractvalue { i1, i64 } %468, 0 %470 = extractvalue { i1, i64 } %468, 1 br i1 %469, label %cond.false.i8.i.i.i.i284, label %Flow8542 cond.false.i8.i.i.i.i284: ; preds = %while.cond.i.i.i.i277 %471 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %467) %472 = icmp ne i32 %471, %port.sroa.37.0.i.i278 br i1 %472, label %while.body.i.i21.i.i.i.i285.preheader, label %Flow8541, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i285.preheader: ; preds = %cond.false.i8.i.i.i.i284 br label %while.body.i.i21.i.i.i.i285, !amdgpu.uniform !42 Flow8541: ; preds = %Flow8540, %cond.false.i8.i.i.i.i284 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i288, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i285: ; preds = %while.body.i.i21.i.i.i.i285.preheader, %while.body.i.i21.i.i.i.i285 tail call void @llvm.amdgcn.s.sleep(i32 2) %473 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i286 = getelementptr inbounds nuw i32, ptr %473, i64 %idxprom.i23.i.i.i.i.i274, !amdgpu.uniform !42 %474 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i286 monotonic, align 4 %475 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %474) %cmp.i.not.i.i23.i.i.i.i287 = icmp eq i32 %475, %port.sroa.37.0.i.i278 br i1 %cmp.i.not.i.i23.i.i.i.i287, label %Flow8540, label %while.body.i.i21.i.i.i.i285, !amdgpu.uniform !42 Flow8540: ; preds = %while.body.i.i21.i.i.i.i285 br label %Flow8541, !amdgpu.uniform !42 Flow8542: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i289, %while.cond.i.i.i.i277 %476 = phi i64 [ %add.i.i.i.i292, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i289 ], [ poison, %while.cond.i.i.i.i277 ] %477 = phi i32 [ %conv.i.i26.i.i.i.i290, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i289 ], [ poison, %while.cond.i.i.i.i277 ] %478 = phi ptr addrspace(4) [ %scevgep7194, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i289 ], [ poison, %while.cond.i.i.i.i277 ] %479 = phi i64 [ %lsr.iv.next7199, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i289 ], [ poison, %while.cond.i.i.i.i277 ] %480 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i289 ], [ true, %while.cond.i.i.i.i277 ] call void @llvm.amdgcn.end.cf.i64(i64 %470) %481 = call i64 @llvm.amdgcn.if.break.i64(i1 %480, i64 %phi.broken8628) %482 = call i1 @llvm.amdgcn.loop.i64(i64 %481) br i1 %482, label %cond.false.i.i.i299, label %while.cond.i.i.i.i277 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i288: ; preds = %Flow8541 fence acquire br i1 %cmp.i.i.i.i280, label %if.then.i.i.i.i.i.i.i293, label %Flow8539, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i293: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i288 %sub.i.i.i.i.i.i.i295 = sub nuw i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.13.31 to ptr), i64 8) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.13.31 to ptr) to i64)), %idx.0.i.i.i.i279 %spec.select.i.i.i36.i.i.i.i296 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i295, i64 64) %483 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %484 = and i64 %spec.select.i.i.i36.i.i.i.i296, 15 %485 = sub i64 %spec.select.i.i.i36.i.i.i.i296, %484 %486 = icmp ne i64 %485, 0 br i1 %486, label %loop-memcpy-expansion5217.preheader, label %Flow8538, !amdgpu.uniform !42 loop-memcpy-expansion5217.preheader: ; preds = %if.then.i.i.i.i.i.i.i293 %arrayidx.i20.i35.i.i.i.i297 = getelementptr %"struct.rpc::Buffer", ptr %483, i64 %idxprom.i19.i.i.i.i.i267 %arrayidx.i22.i38.i.i.i.i298 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i297, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion5217, !amdgpu.uniform !42 Flow8538: ; preds = %Flow8537, %if.then.i.i.i.i.i.i.i293 br label %loop-memcpy-residual-header5220, !amdgpu.uniform !42 loop-memcpy-expansion5217: ; preds = %loop-memcpy-expansion5217.preheader, %loop-memcpy-expansion5217 %loop-index5218 = phi i64 [ %489, %loop-memcpy-expansion5217 ], [ 0, %loop-memcpy-expansion5217.preheader ] %scevgep7195 = getelementptr i8, ptr addrspace(4) %lsr.iv7193, i64 %loop-index5218, !amdgpu.uniform !42 %487 = load <4 x i32>, ptr addrspace(4) %scevgep7195, align 1 %488 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i298, i64 %loop-index5218 store <4 x i32> %487, ptr %488, align 1 %489 = add i64 %loop-index5218, 16 %490 = icmp uge i64 %489, %485 br i1 %490, label %Flow8537, label %loop-memcpy-expansion5217, !amdgpu.uniform !42 Flow8536: ; preds = %Flow8535, %loop-memcpy-residual-header5220 br label %Flow8539, !amdgpu.uniform !42 loop-memcpy-residual5219: ; preds = %loop-memcpy-residual5219.preheader, %loop-memcpy-residual5219 %residual-loop-index5221 = phi i64 [ %492, %loop-memcpy-residual5219 ], [ 0, %loop-memcpy-residual5219.preheader ] %scevgep7204 = getelementptr i8, ptr addrspace(4) %scevgep7203, i64 %residual-loop-index5221, !amdgpu.uniform !42 %491 = load i8, ptr addrspace(4) %scevgep7204, align 1 %scevgep7202 = getelementptr i8, ptr %scevgep7201, i64 %residual-loop-index5221 store i8 %491, ptr %scevgep7202, align 1 %492 = add i64 %residual-loop-index5221, 1 %493 = icmp uge i64 %492, %484 br i1 %493, label %Flow8535, label %loop-memcpy-residual5219, !amdgpu.uniform !42 Flow8535: ; preds = %loop-memcpy-residual5219 br label %Flow8536, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i289: ; preds = %Flow8539 %conv.i.i26.i.i.i.i290 = xor i32 %port.sroa.37.0.i.i278, 1 fence release %494 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i291 = getelementptr inbounds nuw i32, ptr %494, i64 %idxprom.i23.i.i.i.i.i274 store atomic i32 %conv.i.i26.i.i.i.i290, ptr %arrayidx.i24.i29.i.i.i.i291 monotonic, align 4 %add.i.i.i.i292 = add i64 %idx.0.i.i.i.i279, 64 %scevgep7194 = getelementptr i8, ptr addrspace(4) %lsr.iv7193, i64 64 %lsr.iv.next7199 = add i64 %lsr.iv7198, -64 br label %Flow8542, !amdgpu.uniform !42 cond.false.i.i.i299: ; preds = %Flow8542 %.lcssa9318 = phi i64 [ %481, %Flow8542 ] %port.sroa.37.0.i.i278.lcssa = phi i32 [ %port.sroa.37.0.i.i278, %Flow8542 ] %.lcssa9317 = phi i32 [ %467, %Flow8542 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9318) %495 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa9317) %496 = icmp ne i32 %495, %port.sroa.37.0.i.i278.lcssa %497 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %496) %498 = extractvalue { i1, i64 } %497, 0 %499 = extractvalue { i1, i64 } %497, 1 br i1 %498, label %while.body.i.i.i.i300.preheader, label %Flow8534 while.body.i.i.i.i300.preheader: ; preds = %cond.false.i.i.i299 br label %while.body.i.i.i.i300, !amdgpu.uniform !42 Flow8534: ; preds = %Flow8533, %cond.false.i.i.i299 call void @llvm.amdgcn.end.cf.i64(i64 %499) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit320, !amdgpu.uniform !42 while.body.i.i.i.i300: ; preds = %while.body.i.i.i.i300.preheader, %while.body.i.i.i.i300 %phi.broken8629 = phi i64 [ 0, %while.body.i.i.i.i300.preheader ], [ %503, %while.body.i.i.i.i300 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %500 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i301 = getelementptr inbounds nuw i32, ptr %500, i64 %idxprom.i23.i.i.i.i.i274, !amdgpu.uniform !42 %501 = load atomic i32, ptr %arrayidx.i.i.i8.i.i301 monotonic, align 4 %502 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %501) %cmp.i.not.i.i.i.i302 = icmp eq i32 %502, %port.sroa.37.0.i.i278.lcssa %503 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i302, i64 %phi.broken8629) %504 = call i1 @llvm.amdgcn.loop.i64(i64 %503) br i1 %504, label %Flow8533, label %while.body.i.i.i.i300 Flow8533: ; preds = %while.body.i.i.i.i300 %.lcssa9316 = phi i64 [ %503, %while.body.i.i.i.i300 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9316) br label %Flow8534, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit320: ; preds = %Flow8534 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %505 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa9323, i1 true) %iszero.i.i.i.i.i13.i.i303 = icmp ne i64 %.lcssa9323, 0 %cmp2.i.i.i.i14.i.i304 = icmp eq i64 %505, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i305 = select i1 %iszero.i.i.i.i.i13.i.i303, i1 %cmp2.i.i.i.i14.i.i304, i1 false %506 = and i32 %.lcssa9324, 31 %conv4.i.i.i19.i.i309 = zext i1 %cmp.i.i.i.i15.i.i305 to i32 %shl.i.i.i20.i.i310 = shl nuw i32 %conv4.i.i.i19.i.i309, %506 %xor.i.i.i21.i.i311 = xor i32 %shl.i.i.i20.i.i310, -1 %507 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5511, !amdgpu.uniform !42 508: ; preds = %ComputeEnd5512 %div8.i.i.i16.i.i306 = lshr i32 %.lcssa9324, 5 %idxprom.i.i.i17.i.i307 = zext nneg i32 %div8.i.i.i16.i.i306 to i64 %509 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i307 %sunkaddr7373 = getelementptr inbounds i8, ptr addrspace(1) %509, i64 40 %510 = atomicrmw and ptr addrspace(1) %sunkaddr7373, i32 %.lcssa9315 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %511, !amdgpu.uniform !42 511: ; preds = %508, %ComputeEnd5512 call void @llvm.amdgcn.end.cf.i64(i64 %6904) tail call void @llvm.amdgcn.wave.barrier() call void @llvm.lifetime.start.p5(ptr addrspace(5) %buffer.i.i.i2988) #34, !noalias !153 %retval.0.i.i.i.i.i.i = tail call noundef i32 @llvm.abs.i32(i32 %1, i1 false) br label %while.body.i.i.i.i.i.i, !amdgpu.uniform !42 while.body.i.i.i.i.i.i: ; preds = %511, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i %phi.broken8630 = phi i64 [ 0, %511 ], [ %579, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i ] %writer.sroa.10.0.i.i.i.i = phi i64 [ %writer.sroa.10.1.i.i.i.i, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i ], [ 0, %511 ] %value.addr.09.i.i.i.i.i.i = phi i32 [ %div.i.i.i.i.i.i.i, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i ], [ %retval.0.i.i.i.i.i.i, %511 ] br label %NodeBlock7523, !amdgpu.uniform !42 NodeBlock7523: ; preds = %while.body.i.i.i.i.i.i %div.i.i.i.i.i.i.i = udiv i32 %value.addr.09.i.i.i.i.i.i, 10 %.neg.i = mul i32 %div.i.i.i.i.i.i.i, 246 %rem.i.i.i.i.i.i.decomposed.i = add i32 %.neg.i, %value.addr.09.i.i.i.i.i.i %conv.i.i.i.i.i.i.i = trunc i32 %rem.i.i.i.i.i.i.decomposed.i to i8 %512 = zext i8 %conv.i.i.i.i.i.i.i to i16 %Pivot7524 = icmp sge i16 %512, 5 %513 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot7524) %514 = extractvalue { i1, i64 } %513, 0 %515 = extractvalue { i1, i64 } %513, 1 br i1 %514, label %NodeBlock7521, label %Flow8532 NodeBlock7521: ; preds = %NodeBlock7523 %Pivot7522 = icmp sge i16 %512, 7 %516 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot7522) %517 = extractvalue { i1, i64 } %516, 0 %518 = extractvalue { i1, i64 } %516, 1 br i1 %517, label %NodeBlock7519, label %Flow8523 NodeBlock7519: ; preds = %NodeBlock7521 %Pivot7520 = icmp sge i16 %512, 8 %519 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot7520) %520 = extractvalue { i1, i64 } %519, 0 %521 = extractvalue { i1, i64 } %519, 1 br i1 %520, label %NodeBlock7517, label %Flow8519 NodeBlock7517: ; preds = %NodeBlock7519 %Pivot7518 = icmp sge i16 %512, 9 %522 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot7518) %523 = extractvalue { i1, i64 } %522, 0 %524 = extractvalue { i1, i64 } %522, 1 br i1 %523, label %sw.bb9.i.i.i.i.i.i.i.i, label %Flow8517 Flow8523: ; preds = %Flow8520, %NodeBlock7521 %525 = phi i8 [ %569, %Flow8520 ], [ poison, %NodeBlock7521 ] %526 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %518) %527 = extractvalue { i1, i64 } %526, 0 %528 = extractvalue { i1, i64 } %526, 1 br i1 %527, label %NodeBlock7515, label %Flow8524 NodeBlock7515: ; preds = %Flow8523 %Pivot7516 = icmp sge i16 %512, 6 %529 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot7516) %530 = extractvalue { i1, i64 } %529, 0 %531 = extractvalue { i1, i64 } %529, 1 br i1 %530, label %sw.bb6.i.i.i.i.i.i.i.i, label %Flow8521 Flow8532: ; preds = %Flow8524, %NodeBlock7523 %532 = phi i8 [ %571, %Flow8524 ], [ poison, %NodeBlock7523 ] %533 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %515) %534 = extractvalue { i1, i64 } %533, 0 %535 = extractvalue { i1, i64 } %533, 1 br i1 %534, label %NodeBlock7513, label %if.then.i.i.i.i.i.i.i321 NodeBlock7513: ; preds = %Flow8532 %Pivot7514 = icmp sge i16 %512, 3 %536 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot7514) %537 = extractvalue { i1, i64 } %536, 0 %538 = extractvalue { i1, i64 } %536, 1 br i1 %537, label %NodeBlock7511, label %Flow8530 NodeBlock7511: ; preds = %NodeBlock7513 %Pivot7512 = icmp sge i16 %512, 4 %539 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot7512) %540 = extractvalue { i1, i64 } %539, 0 %541 = extractvalue { i1, i64 } %539, 1 br i1 %540, label %sw.bb4.i.i.i.i.i.i.i.i, label %Flow8525 Flow8530: ; preds = %Flow8526, %NodeBlock7513 %542 = phi i8 [ %572, %Flow8526 ], [ poison, %NodeBlock7513 ] %543 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %538) %544 = extractvalue { i1, i64 } %543, 0 %545 = extractvalue { i1, i64 } %543, 1 br i1 %544, label %NodeBlock, label %Flow8531 NodeBlock: ; preds = %Flow8530 %Pivot = icmp sge i16 %512, 2 %546 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot) %547 = extractvalue { i1, i64 } %546, 0 %548 = extractvalue { i1, i64 } %546, 1 br i1 %547, label %sw.bb2.i.i.i.i.i.i.i.i, label %Flow8528 Flow8528: ; preds = %sw.bb2.i.i.i.i.i.i.i.i, %NodeBlock %549 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %548) %550 = extractvalue { i1, i64 } %549, 0 %551 = extractvalue { i1, i64 } %549, 1 br i1 %550, label %LeafBlock, label %Flow8529 LeafBlock: ; preds = %Flow8528 %SwitchLeaf = icmp eq i16 %512, 1 %552 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %SwitchLeaf) %553 = extractvalue { i1, i64 } %552, 0 %554 = extractvalue { i1, i64 } %552, 1 br i1 %553, label %sw.bb1.i.i.i.i.i.i.i.i, label %Flow8527 sw.bb1.i.i.i.i.i.i.i.i: ; preds = %LeafBlock br label %Flow8527, !amdgpu.uniform !42 sw.bb2.i.i.i.i.i.i.i.i: ; preds = %NodeBlock br label %Flow8528, !amdgpu.uniform !42 Flow8525: ; preds = %sw.bb4.i.i.i.i.i.i.i.i, %NodeBlock7511 %555 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %541) %556 = extractvalue { i1, i64 } %555, 0 %557 = extractvalue { i1, i64 } %555, 1 br i1 %556, label %sw.bb3.i.i.i.i.i.i.i.i, label %Flow8526 sw.bb3.i.i.i.i.i.i.i.i: ; preds = %Flow8525 br label %Flow8526, !amdgpu.uniform !42 sw.bb4.i.i.i.i.i.i.i.i: ; preds = %NodeBlock7511 br label %Flow8525, !amdgpu.uniform !42 Flow8521: ; preds = %sw.bb6.i.i.i.i.i.i.i.i, %NodeBlock7515 %558 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %531) %559 = extractvalue { i1, i64 } %558, 0 %560 = extractvalue { i1, i64 } %558, 1 br i1 %559, label %sw.bb5.i.i.i.i.i.i.i.i, label %Flow8522 sw.bb5.i.i.i.i.i.i.i.i: ; preds = %Flow8521 br label %Flow8522, !amdgpu.uniform !42 sw.bb6.i.i.i.i.i.i.i.i: ; preds = %NodeBlock7515 br label %Flow8521, !amdgpu.uniform !42 Flow8519: ; preds = %Flow8518, %NodeBlock7519 %561 = phi i8 [ %568, %Flow8518 ], [ poison, %NodeBlock7519 ] %562 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %521) %563 = extractvalue { i1, i64 } %562, 0 %564 = extractvalue { i1, i64 } %562, 1 br i1 %563, label %sw.bb7.i.i.i.i.i.i.i.i, label %Flow8520 sw.bb7.i.i.i.i.i.i.i.i: ; preds = %Flow8519 br label %Flow8520, !amdgpu.uniform !42 Flow8517: ; preds = %sw.bb9.i.i.i.i.i.i.i.i, %NodeBlock7517 %565 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %524) %566 = extractvalue { i1, i64 } %565, 0 %567 = extractvalue { i1, i64 } %565, 1 br i1 %566, label %sw.bb8.i.i.i.i.i.i.i.i, label %Flow8518 sw.bb8.i.i.i.i.i.i.i.i: ; preds = %Flow8517 br label %Flow8518, !amdgpu.uniform !42 sw.bb9.i.i.i.i.i.i.i.i: ; preds = %NodeBlock7517 br label %Flow8517, !amdgpu.uniform !42 Flow8518: ; preds = %sw.bb8.i.i.i.i.i.i.i.i, %Flow8517 %568 = phi i8 [ 56, %sw.bb8.i.i.i.i.i.i.i.i ], [ 57, %Flow8517 ] call void @llvm.amdgcn.end.cf.i64(i64 %567) br label %Flow8519, !amdgpu.uniform !42 Flow8520: ; preds = %sw.bb7.i.i.i.i.i.i.i.i, %Flow8519 %569 = phi i8 [ 55, %sw.bb7.i.i.i.i.i.i.i.i ], [ %561, %Flow8519 ] call void @llvm.amdgcn.end.cf.i64(i64 %564) br label %Flow8523, !amdgpu.uniform !42 Flow8522: ; preds = %sw.bb5.i.i.i.i.i.i.i.i, %Flow8521 %570 = phi i8 [ 53, %sw.bb5.i.i.i.i.i.i.i.i ], [ 54, %Flow8521 ] call void @llvm.amdgcn.end.cf.i64(i64 %560) br label %Flow8524, !amdgpu.uniform !42 Flow8524: ; preds = %Flow8522, %Flow8523 %571 = phi i8 [ %570, %Flow8522 ], [ %525, %Flow8523 ] call void @llvm.amdgcn.end.cf.i64(i64 %528) br label %Flow8532, !amdgpu.uniform !42 Flow8526: ; preds = %sw.bb3.i.i.i.i.i.i.i.i, %Flow8525 %572 = phi i8 [ 51, %sw.bb3.i.i.i.i.i.i.i.i ], [ 52, %Flow8525 ] call void @llvm.amdgcn.end.cf.i64(i64 %557) br label %Flow8530, !amdgpu.uniform !42 Flow8527: ; preds = %sw.bb1.i.i.i.i.i.i.i.i, %LeafBlock %573 = phi i8 [ 49, %sw.bb1.i.i.i.i.i.i.i.i ], [ 48, %LeafBlock ] call void @llvm.amdgcn.end.cf.i64(i64 %554) br label %Flow8529, !amdgpu.uniform !42 Flow8529: ; preds = %Flow8527, %Flow8528 %574 = phi i8 [ %573, %Flow8527 ], [ 50, %Flow8528 ] call void @llvm.amdgcn.end.cf.i64(i64 %551) br label %Flow8531, !amdgpu.uniform !42 Flow8531: ; preds = %Flow8529, %Flow8530 %575 = phi i8 [ %574, %Flow8529 ], [ %542, %Flow8530 ] call void @llvm.amdgcn.end.cf.i64(i64 %545) br label %if.then.i.i.i.i.i.i.i321, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i321: ; preds = %Flow8532, %Flow8531 %retval.0.i.i.i.i.i.i.i.i = phi i8 [ %532, %Flow8532 ], [ %575, %Flow8531 ] call void @llvm.amdgcn.end.cf.i64(i64 %535) %cmp.i.i.i.i.i.i.i.i = icmp eq i64 %writer.sroa.10.0.i.i.i.i, 11 %cmp.i.i.i.i.i.i.i.i.inv = xor i1 %cmp.i.i.i.i.i.i.i.i, true br i1 %cmp.i.i.i.i.i.i.i.i.inv, label %if.then3.i.i.i.i.i.i.i, label %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i, !amdgpu.uniform !42 if.then3.i.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i.i321 %576 = trunc i64 %writer.sroa.10.0.i.i.i.i to i32 %577 = xor i32 %576, -1 %578 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i2988, i32 %577 %arrayidx.i.i.i.i.i.i.i.i6017 = getelementptr i8, ptr addrspace(5) %578, i32 11 %inc.i.i.i.i.i.i.i = add i64 %writer.sroa.10.0.i.i.i.i, 1 store i8 %retval.0.i.i.i.i.i.i.i.i, ptr addrspace(5) %arrayidx.i.i.i.i.i.i.i.i6017, align 1, !tbaa !57, !noalias !153 br label %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i: ; preds = %if.then3.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i321 %writer.sroa.10.1.i.i.i.i = phi i64 [ %inc.i.i.i.i.i.i.i, %if.then3.i.i.i.i.i.i.i ], [ 11, %if.then.i.i.i.i.i.i.i321 ] %cmp.i.i.i.i.i.i322 = icmp ult i32 %value.addr.09.i.i.i.i.i.i, 10 %.not.i.i.i.i.i.i = or i1 %cmp.i.i.i.i.i.i.i.i, %cmp.i.i.i.i.i.i322 %579 = call i64 @llvm.amdgcn.if.break.i64(i1 %.not.i.i.i.i.i.i, i64 %phi.broken8630) %580 = call i1 @llvm.amdgcn.loop.i64(i64 %579) br i1 %580, label %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i, label %while.body.i.i.i.i.i.i _ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i: ; preds = %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i %writer.sroa.10.1.i.i.i.i.lcssa = phi i64 [ %writer.sroa.10.1.i.i.i.i, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i ] %.lcssa9314 = phi i64 [ %579, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i ] %cmp.i.i.i.i.i.i.i.i.lcssa = phi i1 [ %cmp.i.i.i.i.i.i.i.i, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9314) %cmp.i19.i.i.i.i = icmp ne i64 %writer.sroa.10.1.i.i.i.i.lcssa, 0 %or.cond.not.i.i.i.i = select i1 %cmp.i.i.i.i.i.i.i.i.lcssa, i1 true, i1 %cmp.i19.i.i.i.i %or.cond.not.i.i.i.i.inv = xor i1 %or.cond.not.i.i.i.i, true %581 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %or.cond.not.i.i.i.i.inv) %582 = extractvalue { i1, i64 } %581, 0 %583 = extractvalue { i1, i64 } %581, 1 br i1 %582, label %if.then3.i.i.lr.ph.i.i.i.i, label %while.end.i.i.i.i.i if.then3.i.i.lr.ph.i.i.i.i: ; preds = %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i %arrayidx.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr addrspace(5) %buffer.i.i.i2988, i32 10 store i8 48, ptr addrspace(5) %arrayidx.i.i.i.i.i.i.i, align 2, !tbaa !57, !noalias !153 br label %while.end.i.i.i.i.i, !amdgpu.uniform !42 while.end.i.i.i.i.i: ; preds = %if.then3.i.i.lr.ph.i.i.i.i, %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i %writer.sroa.10.4.i.i.i.i = phi i64 [ 1, %if.then3.i.i.lr.ph.i.i.i.i ], [ %writer.sroa.10.1.i.i.i.i.lcssa, %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %583) %cmp4.i.i.i.i.i = icmp sgt i32 %1, -1 %brmerge.i.i.i.i.i = or i1 %cmp4.i.i.i.i.i, %cmp.i.i.i.i.i.i.i.i.lcssa %brmerge.i.i.i.i.i.inv = xor i1 %brmerge.i.i.i.i.i, true %584 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %brmerge.i.i.i.i.i.inv) %585 = extractvalue { i1, i64 } %584, 0 %586 = extractvalue { i1, i64 } %584, 1 br i1 %585, label %if.then.i14.i.i.i.i.i, label %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i if.then.i14.i.i.i.i.i: ; preds = %while.end.i.i.i.i.i %cmp.i.i17.i.i.i.i.i = icmp ne i64 %writer.sroa.10.4.i.i.i.i, 11 %587 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i17.i.i.i.i.i) %588 = extractvalue { i1, i64 } %587, 0 %589 = extractvalue { i1, i64 } %587, 1 br i1 %588, label %if.then3.i18.i.i.i.i.i, label %Flow8516 if.then3.i18.i.i.i.i.i: ; preds = %if.then.i14.i.i.i.i.i %590 = trunc i64 %writer.sroa.10.4.i.i.i.i to i32 %591 = xor i32 %590, -1 %592 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i2988, i32 %591 %arrayidx.i.i19.i.i.i.i.i6018 = getelementptr i8, ptr addrspace(5) %592, i32 11 %inc.i20.i.i.i.i.i = add i64 %writer.sroa.10.4.i.i.i.i, 1 store i8 45, ptr addrspace(5) %arrayidx.i.i19.i.i.i.i.i6018, align 1, !tbaa !57, !noalias !153 br label %Flow8516, !amdgpu.uniform !42 Flow8516: ; preds = %if.then3.i18.i.i.i.i.i, %if.then.i14.i.i.i.i.i %593 = phi i64 [ %inc.i20.i.i.i.i.i, %if.then3.i18.i.i.i.i.i ], [ 11, %if.then.i14.i.i.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %589) br label %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i: ; preds = %while.end.i.i.i.i.i, %Flow8516 %writer.sroa.10.5.i.i.i.i = phi i64 [ %writer.sroa.10.4.i.i.i.i, %while.end.i.i.i.i.i ], [ %593, %Flow8516 ] call void @llvm.amdgcn.end.cf.i64(i64 %586) %written.i.i.i.i = getelementptr inbounds nuw i8, ptr addrspace(5) %buffer.i.i.i2988, i32 16 store i64 %writer.sroa.10.5.i.i.i.i, ptr addrspace(5) %written.i.i.i.i, align 8, !tbaa !91, !noalias !153 %cmp.i.not.i.i.i.i.i = icmp ne i64 %writer.sroa.10.5.i.i.i.i, 0 %594 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.not.i.i.i.i.i) %595 = extractvalue { i1, i64 } %594, 0 %596 = extractvalue { i1, i64 } %594, 1 br i1 %595, label %if.then.i.i.i.i.i.i, label %Flow8515 if.then.i.i.i.i.i.i: ; preds = %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i %597 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %writer.sroa.10.5.i.i.i.i, i64 1) %ov = extractvalue { i64, i1 } %597, 1 %ov.inv = xor i1 %ov, true %598 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %ov.inv) %599 = extractvalue { i1, i64 } %598, 0 %600 = extractvalue { i1, i64 } %598, 1 br i1 %599, label %if.end.i.i.i.i.i.i.i, label %Flow8514 if.end.i.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i %math = extractvalue { i64, i1 } %597, 0 %cmp2.i.i.i.i.i.i.i = icmp ult i64 %math, 1676976733973595601 %601 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp2.i.i.i.i.i.i.i) %602 = extractvalue { i1, i64 } %601, 0 %603 = extractvalue { i1, i64 } %601, 1 br i1 %602, label %if.then3.i.i.i.i4.i.i.i, label %if.end4.i.i.i.i.i.i.i if.then3.i.i.i.i4.i.i.i: ; preds = %if.end.i.i.i.i.i.i.i %mul.i.i.i.i.i.i.i = mul nuw i64 %math, 11 %div18.i.i.i.i.i.i.i = lshr i64 %mul.i.i.i.i.i.i.i, 3 br label %if.end4.i.i.i.i.i.i.i, !amdgpu.uniform !42 Flow8514: ; preds = %if.end4.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i %604 = phi ptr [ %cond.i.i.i, %if.end4.i.i.i.i.i.i.i ], [ addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr), %if.then.i.i.i.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %600) br label %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i, !amdgpu.uniform !42 if.end4.i.i.i.i.i.i.i: ; preds = %if.then3.i.i.i.i4.i.i.i, %if.end.i.i.i.i.i.i.i %new_capacity.addr.0.i.i.i.i.i.i.i = phi i64 [ %div18.i.i.i.i.i.i.i, %if.then3.i.i.i.i4.i.i.i ], [ %math, %if.end.i.i.i.i.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %603) %sub.i.i.i = add i64 %new_capacity.addr.0.i.i.i.i.i.i.i, 7 %div2.i.i.i = and i64 %sub.i.i.i, -8 %605 = load ptr, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %add.ptr.i.i.i = getelementptr inbounds nuw i8, ptr %605, i64 %div2.i.i.i store ptr %add.ptr.i.i.i, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %sub.ptr.lhs.cast.i.i.i323 = ptrtoint ptr %add.ptr.i.i.i to i64 %sub.ptr.sub.i.i.i324 = sub i64 %sub.ptr.lhs.cast.i.i.i323, ptrtoint (ptr addrspacecast (ptr addrspace(1) @_ZN12_GLOBAL__N_16memoryE to ptr) to i64) %cmp.i.i.i325 = icmp ugt i64 %sub.ptr.sub.i.i.i324, 65335 %cond.i.i.i = select i1 %cmp.i.i.i325, ptr null, ptr %605 br label %Flow8514, !amdgpu.uniform !42 Flow8515: ; preds = %Flow8513, %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i %606 = phi ptr [ %604, %Flow8513 ], [ addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr), %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %596) br label %if.end.i.i.i.i.i.i, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i: ; preds = %Flow8514 br label %loadstoreloop4959, !amdgpu.uniform !42 loadstoreloop4959: ; preds = %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i, %loadstoreloop4959 %phi.broken8631 = phi i64 [ 0, %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i ], [ %611, %loadstoreloop4959 ] %607 = phi i64 [ %609, %loadstoreloop4959 ], [ 0, %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i ] %608 = getelementptr i8, ptr %604, i64 %607 store i8 0, ptr %608, align 1 %609 = add i64 %607, 1 %610 = icmp uge i64 %609, %writer.sroa.10.5.i.i.i.i %611 = call i64 @llvm.amdgcn.if.break.i64(i1 %610, i64 %phi.broken8631) %612 = call i1 @llvm.amdgcn.loop.i64(i64 %611) br i1 %612, label %Flow8513, label %loadstoreloop4959 Flow8513: ; preds = %loadstoreloop4959 %.lcssa9313 = phi i64 [ %611, %loadstoreloop4959 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9313) br label %Flow8515, !amdgpu.uniform !42 if.end.i.i.i.i.i.i: ; preds = %Flow8515 %cmp.not.i6.i.i.i.i.i.i = icmp ne ptr %606, addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr) %613 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.not.i6.i.i.i.i.i.i) %614 = extractvalue { i1, i64 } %613, 0 %615 = extractvalue { i1, i64 } %613, 1 br i1 %614, label %if.then.i.i.i.i2.i.i.i, label %_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi.exit.i if.then.i.i.i.i2.i.i.i: ; preds = %if.end.i.i.i.i.i.i %arrayidx.i.i.i.i3.i.i.i = getelementptr inbounds nuw i8, ptr %606, i64 %writer.sroa.10.5.i.i.i.i store i8 0, ptr %arrayidx.i.i.i.i3.i.i.i, align 1, !tbaa !57, !noalias !153 br label %_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi.exit.i, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi.exit.i: ; preds = %if.then.i.i.i.i2.i.i.i, %if.end.i.i.i.i.i.i call void @llvm.amdgcn.end.cf.i64(i64 %615) %616 = trunc i64 %writer.sroa.10.5.i.i.i.i to i32 %617 = and i64 %writer.sroa.10.5.i.i.i.i, 15 %618 = sub i64 %writer.sroa.10.5.i.i.i.i, %617 %619 = icmp ne i64 %618, 0 %620 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %619) %621 = extractvalue { i1, i64 } %620, 0 %622 = extractvalue { i1, i64 } %620, 1 br i1 %621, label %loop-memcpy-expansion5139.preheader, label %Flow8512 loop-memcpy-expansion5139.preheader: ; preds = %_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi.exit.i %623 = sub i32 11, %616 %scevgep7190 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i2988, i32 %623 br label %loop-memcpy-expansion5139, !amdgpu.uniform !42 Flow8512: ; preds = %Flow8511, %_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi.exit.i call void @llvm.amdgcn.end.cf.i64(i64 %622) br label %loop-memcpy-residual-header5142, !amdgpu.uniform !42 loop-memcpy-expansion5139: ; preds = %loop-memcpy-expansion5139.preheader, %loop-memcpy-expansion5139 %phi.broken8632 = phi i64 [ 0, %loop-memcpy-expansion5139.preheader ], [ %628, %loop-memcpy-expansion5139 ] %lsr.iv7191 = phi ptr addrspace(5) [ %scevgep7192, %loop-memcpy-expansion5139 ], [ %scevgep7190, %loop-memcpy-expansion5139.preheader ] %loop-index5140 = phi i64 [ %626, %loop-memcpy-expansion5139 ], [ 0, %loop-memcpy-expansion5139.preheader ] %624 = load <4 x i32>, ptr addrspace(5) %lsr.iv7191, align 1 %625 = getelementptr i8, ptr %606, i64 %loop-index5140 store <4 x i32> %624, ptr %625, align 1 %626 = add i64 %loop-index5140, 16 %scevgep7192 = getelementptr i8, ptr addrspace(5) %lsr.iv7191, i32 16 %627 = icmp uge i64 %626, %618 %628 = call i64 @llvm.amdgcn.if.break.i64(i1 %627, i64 %phi.broken8632) %629 = call i1 @llvm.amdgcn.loop.i64(i64 %628) br i1 %629, label %Flow8511, label %loop-memcpy-expansion5139 Flow8510: ; preds = %Flow8509, %loop-memcpy-residual-header5142 call void @llvm.amdgcn.end.cf.i64(i64 %6408) br label %post-loop-memcpy-expansion5138, !amdgpu.uniform !42 loop-memcpy-residual5141: ; preds = %loop-memcpy-residual5141.preheader, %loop-memcpy-residual5141 %phi.broken8633 = phi i64 [ 0, %loop-memcpy-residual5141.preheader ], [ %633, %loop-memcpy-residual5141 ] %lsr.iv7186 = phi ptr addrspace(5) [ %scevgep7187, %loop-memcpy-residual5141 ], [ %scevgep7185, %loop-memcpy-residual5141.preheader ] %residual-loop-index5143 = phi i64 [ %631, %loop-memcpy-residual5141 ], [ 0, %loop-memcpy-residual5141.preheader ] %630 = load i8, ptr addrspace(5) %lsr.iv7186, align 1 %scevgep7189 = getelementptr i8, ptr %scevgep7188, i64 %residual-loop-index5143 store i8 %630, ptr %scevgep7189, align 1 %631 = add i64 %residual-loop-index5143, 1 %scevgep7187 = getelementptr i8, ptr addrspace(5) %lsr.iv7186, i32 1 %632 = icmp uge i64 %631, %617 %633 = call i64 @llvm.amdgcn.if.break.i64(i1 %632, i64 %phi.broken8633) %634 = call i1 @llvm.amdgcn.loop.i64(i64 %633) br i1 %634, label %Flow8509, label %loop-memcpy-residual5141 Flow8509: ; preds = %loop-memcpy-residual5141 %.lcssa9311 = phi i64 [ %633, %loop-memcpy-residual5141 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9311) br label %Flow8510, !amdgpu.uniform !42 post-loop-memcpy-expansion5138: ; preds = %Flow8510 call void @llvm.lifetime.end.p5(ptr addrspace(5) %buffer.i.i.i2988) #34, !noalias !153 br label %for.cond.i.i.i327, !amdgpu.uniform !42 for.cond.i.i.i327: ; preds = %post-loop-memcpy-expansion5138, %Flow8508 %635 = phi i32 [ %673, %Flow8508 ], [ poison, %post-loop-memcpy-expansion5138 ] %636 = phi i64 [ %674, %Flow8508 ], [ poison, %post-loop-memcpy-expansion5138 ] %637 = phi i32 [ %675, %Flow8508 ], [ poison, %post-loop-memcpy-expansion5138 ] %retval.sroa.6.0.i.i.i328 = phi i32 [ %678, %Flow8508 ], [ undef, %post-loop-memcpy-expansion5138 ] %retval.sroa.2.0.i.i.i330 = phi i64 [ %677, %Flow8508 ], [ undef, %post-loop-memcpy-expansion5138 ] %retval.sroa.8.0.i.i.i331 = phi i32 [ %676, %Flow8508 ], [ undef, %post-loop-memcpy-expansion5138 ] %index.0.i.i.i332 = phi i32 [ %680, %Flow8508 ], [ 0, %post-loop-memcpy-expansion5138 ] %638 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i333 = icmp ult i32 %index.0.i.i.i332, %638 %spec.store.select.i.i.i334 = select i1 %cmp.not.i.i.i333, i32 %index.0.i.i.i332, i32 0 %639 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %640 = and i32 %spec.store.select.i.i.i334, 31 %641 = lshr i64 %639, %sh_prom.i.i.i.i %642 = trunc i64 %641 to i32 %conv4.i.i.i.i.i338 = and i32 %642, 1 %shl.i.i.i.i.i339 = shl nuw i32 %conv4.i.i.i.i.i338, %640 %643 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5515, !amdgpu.uniform !42 644: ; preds = %ComputeEnd5516 %sunkaddr7374 = getelementptr inbounds i8, ptr addrspace(1) %6914, i64 40 %645 = atomicrmw or ptr addrspace(1) %sunkaddr7374, i32 %.lcssa9305 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %646, !amdgpu.uniform !42 646: ; preds = %644, %ComputeEnd5516 %647 = phi i32 [ %645, %644 ], [ poison, %ComputeEnd5516 ] call void @llvm.amdgcn.end.cf.i64(i64 %6923) %648 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %647) %649 = or i32 %648, %.lcssa9306 %shl5.i.i.i.i.i340 = shl nuw i32 1, %640 %and.i.i.i.i.i341 = and i32 %shl5.i.i.i.i.i340, %649 %tobool3.i.i.i.i342 = icmp ne i32 %and.i.i.i.i.i341, 0 %650 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i342) %and.i.i.i.i.i.i343 = and i64 %650, %639 %cmp.i.not.i.i.i344 = icmp ne i64 %639, %and.i.i.i.i.i.i343 br i1 %cmp.i.not.i.i.i344, label %if.then.i.i.i.i345, label %Flow8507, !amdgpu.uniform !42 if.then.i.i.i.i345: ; preds = %646 fence syncscope("agent") acquire %651 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %652 = extractelement <2 x i64> %651, i32 0 %653 = inttoptr i64 %652 to ptr %654 = extractelement <2 x i64> %651, i32 1 %655 = inttoptr i64 %654 to ptr %idxprom.i.i.i.i346 = zext i32 %spec.store.select.i.i.i334 to i64 %arrayidx.i.i.i.i347 = getelementptr inbounds nuw i32, ptr %653, i64 %idxprom.i.i.i.i346, !amdgpu.uniform !42 %656 = load atomic i32, ptr %arrayidx.i.i.i.i347 monotonic, align 4 %657 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %656) %arrayidx.i45.i.i.i348 = getelementptr inbounds nuw i32, ptr %655, i64 %idxprom.i.i.i.i346, !amdgpu.uniform !42 %658 = load atomic i32, ptr %arrayidx.i45.i.i.i348 monotonic, align 4 %659 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %658) %cmp.i46.not.i.i.i349 = icmp ne i32 %657, %659 br i1 %cmp.i46.not.i.i.i349, label %if.then12.i.i.i350, label %Flow8505, !amdgpu.uniform !42 if.then12.i.i.i350: ; preds = %if.then.i.i.i.i345 fence syncscope("agent") release %660 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %639, i1 true) %iszero.i.i.i.i.i.i.i351 = icmp ne i64 %639, 0 %cmp2.i.i.i.i.i.i352 = icmp eq i64 %660, %sh_prom.i.i.i.i %cmp.i.i.i.i.i2.i = select i1 %iszero.i.i.i.i.i.i.i351, i1 %cmp2.i.i.i.i.i.i352, i1 false %conv4.i.i51.i.i.i353 = zext i1 %cmp.i.i.i.i.i2.i to i32 %shl.i.i52.i.i.i354 = shl nuw i32 %conv4.i.i51.i.i.i353, %640 %xor.i.i.i.i.i355 = xor i32 %shl.i.i52.i.i.i354, -1 %661 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5520, !amdgpu.uniform !42 662: ; preds = %ComputeEnd5521 %sunkaddr7375 = getelementptr inbounds i8, ptr addrspace(1) %6914, i64 40 %663 = atomicrmw and ptr addrspace(1) %sunkaddr7375, i32 %.lcssa9307 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %664, !amdgpu.uniform !42 664: ; preds = %662, %ComputeEnd5521 call void @llvm.amdgcn.end.cf.i64(i64 %6941) tail call void @llvm.amdgcn.wave.barrier() br label %Flow8505, !amdgpu.uniform !42 if.end14.i.i.i413: ; preds = %Flow8505 %665 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %639, i1 true) %iszero.i.i.i.i.i.i414 = icmp ne i64 %639, 0 %cmp2.i.i.i.i.i415 = icmp eq i64 %665, %sh_prom.i.i.i.i %cmp.i.i.i.i.i416 = select i1 %iszero.i.i.i.i.i.i414, i1 %cmp2.i.i.i.i.i415, i1 false %666 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i416) %667 = extractvalue { i1, i64 } %666, 0 %668 = extractvalue { i1, i64 } %666, 1 br i1 %667, label %if.then16.i.i.i418, label %if.end22.i.i.i417 if.then16.i.i.i418: ; preds = %if.end14.i.i.i413 %669 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i419 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %669, i64 %idxprom.i.i.i.i346, i32 1 store i32 1660944387, ptr %opcode.i.i.i419, align 8, !tbaa !77 %arrayidx21.i.i.i420 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %669, i64 %idxprom.i.i.i.i346 store i64 %639, ptr %arrayidx21.i.i.i420, align 8, !tbaa !80 br label %if.end22.i.i.i417, !amdgpu.uniform !42 Flow8506: ; preds = %if.end22.i.i.i417, %Flow8505 %670 = phi i32 [ %657, %if.end22.i.i.i417 ], [ %retval.sroa.8.0.i.i.i331, %Flow8505 ] %671 = phi i64 [ %639, %if.end22.i.i.i417 ], [ %retval.sroa.2.0.i.i.i330, %Flow8505 ] %672 = phi i32 [ %spec.store.select.i.i.i334, %if.end22.i.i.i417 ], [ %retval.sroa.6.0.i.i.i328, %Flow8505 ] br label %cleanup26.i.i.i356, !amdgpu.uniform !42 if.end22.i.i.i417: ; preds = %if.then16.i.i.i418, %if.end14.i.i.i413 call void @llvm.amdgcn.end.cf.i64(i64 %668) tail call void @llvm.amdgcn.wave.barrier() br label %Flow8506, !amdgpu.uniform !42 Flow8507: ; preds = %cleanup26.i.i.i356, %646 %673 = phi i32 [ %672, %cleanup26.i.i.i356 ], [ %635, %646 ] %674 = phi i64 [ %671, %cleanup26.i.i.i356 ], [ %636, %646 ] %675 = phi i32 [ %670, %cleanup26.i.i.i356 ], [ %637, %646 ] %676 = phi i32 [ %670, %cleanup26.i.i.i356 ], [ %retval.sroa.8.0.i.i.i331, %646 ] %677 = phi i64 [ %671, %cleanup26.i.i.i356 ], [ %retval.sroa.2.0.i.i.i330, %646 ] %678 = phi i32 [ %672, %cleanup26.i.i.i356 ], [ %retval.sroa.6.0.i.i.i328, %646 ] %679 = phi i1 [ %cmp.i46.not.i.i.i349, %cleanup26.i.i.i356 ], [ true, %646 ] br i1 %679, label %for.inc.i.i.i361, label %Flow8508, !amdgpu.uniform !42 cleanup26.i.i.i356: ; preds = %Flow8506 br label %Flow8507, !amdgpu.uniform !42 for.inc.i.i.i361: ; preds = %Flow8507 %inc.i.i.i366 = add i32 %spec.store.select.i.i.i334, 1 br label %Flow8508, !amdgpu.uniform !42 Flow8508: ; preds = %for.inc.i.i.i361, %Flow8507 %680 = phi i32 [ %inc.i.i.i366, %for.inc.i.i.i361 ], [ poison, %Flow8507 ] %681 = phi i1 [ false, %for.inc.i.i.i361 ], [ true, %Flow8507 ] br i1 %681, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i367, label %for.cond.i.i.i327, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i367: ; preds = %Flow8508 %.lcssa9310 = phi i32 [ %673, %Flow8508 ] %.lcssa9309 = phi i64 [ %674, %Flow8508 ] %.lcssa9308 = phi i32 [ %675, %Flow8508 ] fence acquire %682 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i368 = shl i32 %.lcssa9310, 6 %idxprom.i19.i.i.i.i.i369 = zext i32 %mul.i.i.i.i.i.i368 to i64 %arrayidx.i20.i.i.i.i.i370 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %682, i64 %idxprom.i19.i.i.i.i.i369 %arrayidx.i22.i.i.i.i.i371 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i370, i64 %sh_prom.i.i.i.i store i64 %writer.sroa.10.5.i.i.i.i, ptr %arrayidx.i22.i.i.i.i.i371, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i372 = tail call i64 @llvm.umin.i64(i64 %writer.sroa.10.5.i.i.i.i, i64 56) %683 = and i64 %spec.select.i.i.i.i.i.i.i372, 15 %684 = sub i64 %spec.select.i.i.i.i.i.i.i372, %683 %685 = icmp ne i64 %684, 0 %686 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %685) %687 = extractvalue { i1, i64 } %686, 0 %688 = extractvalue { i1, i64 } %686, 1 br i1 %687, label %loop-memcpy-expansion5085.preheader, label %Flow8504 loop-memcpy-expansion5085.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i367 %689 = add nuw nsw i64 %78, 8 %scevgep7182 = getelementptr i8, ptr %682, i64 %689 %690 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i369, 6 %scevgep7183 = getelementptr i8, ptr %scevgep7182, i64 %690 br label %loop-memcpy-expansion5085, !amdgpu.uniform !42 Flow8504: ; preds = %Flow8503, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i367 call void @llvm.amdgcn.end.cf.i64(i64 %688) br label %loop-memcpy-residual-header5088, !amdgpu.uniform !42 loop-memcpy-expansion5085: ; preds = %loop-memcpy-expansion5085.preheader, %loop-memcpy-expansion5085 %phi.broken8634 = phi i64 [ 0, %loop-memcpy-expansion5085.preheader ], [ %695, %loop-memcpy-expansion5085 ] %loop-index5086 = phi i64 [ %693, %loop-memcpy-expansion5085 ], [ 0, %loop-memcpy-expansion5085.preheader ] %691 = getelementptr i8, ptr %606, i64 %loop-index5086 %692 = load <4 x i32>, ptr %691, align 1 %scevgep7184 = getelementptr i8, ptr %scevgep7183, i64 %loop-index5086 store <4 x i32> %692, ptr %scevgep7184, align 1 %693 = add i64 %loop-index5086, 16 %694 = icmp uge i64 %693, %684 %695 = call i64 @llvm.amdgcn.if.break.i64(i1 %694, i64 %phi.broken8634) %696 = call i1 @llvm.amdgcn.loop.i64(i64 %695) br i1 %696, label %Flow8503, label %loop-memcpy-expansion5085 Flow8502: ; preds = %Flow8500, %Flow8501 %697 = phi i64 [ %6351, %Flow8500 ], [ %6343, %Flow8501 ] call void @llvm.amdgcn.end.cf.i64(i64 %6346) br label %post-loop-memcpy-expansion5084, !amdgpu.uniform !42 loop-memcpy-residual5087: ; preds = %loop-memcpy-residual5087.preheader, %loop-memcpy-residual5087 %phi.broken8635 = phi i64 [ 0, %loop-memcpy-residual5087.preheader ], [ %701, %loop-memcpy-residual5087 ] %residual-loop-index5089 = phi i64 [ %699, %loop-memcpy-residual5087 ], [ 0, %loop-memcpy-residual5087.preheader ] %scevgep7181 = getelementptr i8, ptr %scevgep7180, i64 %residual-loop-index5089 %698 = load i8, ptr %scevgep7181, align 1 %scevgep7179 = getelementptr i8, ptr %scevgep7178, i64 %residual-loop-index5089 store i8 %698, ptr %scevgep7179, align 1 %699 = add i64 %residual-loop-index5089, 1 %700 = icmp uge i64 %699, %683 %701 = call i64 @llvm.amdgcn.if.break.i64(i1 %700, i64 %phi.broken8635) %702 = call i1 @llvm.amdgcn.loop.i64(i64 %701) br i1 %702, label %Flow8500, label %loop-memcpy-residual5087 Flow8500: ; preds = %loop-memcpy-residual5087 %.lcssa9303 = phi i64 [ %701, %loop-memcpy-residual5087 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9303) br label %Flow8502, !amdgpu.uniform !42 post-loop-memcpy-expansion5084: ; preds = %Flow8502 %tobool.not.i.i.i.i.i.i374 = icmp eq i32 %.lcssa9308, 0 %conv.i.i.i.i.i.i375 = zext i1 %tobool.not.i.i.i.i.i.i374 to i32 fence release %703 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i376 = zext i32 %.lcssa9310 to i64 %arrayidx.i24.i.i.i.i.i377 = getelementptr inbounds nuw i32, ptr %703, i64 %idxprom.i23.i.i.i.i.i376 store atomic i32 %conv.i.i.i.i.i.i375, ptr %arrayidx.i24.i.i.i.i.i377 monotonic, align 4 %704 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i378 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %704, i64 %idxprom.i23.i.i.i.i.i376, !amdgpu.uniform !42 %705 = load i64, ptr %arrayidx.i.i5.i.i378, align 8, !tbaa !80 %scevgep7164 = getelementptr i8, ptr %606, i64 56 %706 = add i64 %writer.sroa.10.5.i.i.i.i, -56 br label %while.cond.i.i.i.i379, !amdgpu.uniform !42 while.cond.i.i.i.i379: ; preds = %post-loop-memcpy-expansion5084, %Flow8499 %phi.broken8638 = phi i64 [ 0, %post-loop-memcpy-expansion5084 ], [ %723, %Flow8499 ] %lsr.iv7170 = phi i64 [ %721, %Flow8499 ], [ %706, %post-loop-memcpy-expansion5084 ] %lsr.iv7165 = phi ptr [ %720, %Flow8499 ], [ %scevgep7164, %post-loop-memcpy-expansion5084 ] %port.sroa.37.0.i.i380 = phi i32 [ %719, %Flow8499 ], [ %conv.i.i.i.i.i.i375, %post-loop-memcpy-expansion5084 ] %idx.0.i.i.i.i381 = phi i64 [ %718, %Flow8499 ], [ 56, %post-loop-memcpy-expansion5084 ] %cmp.i.i.i.i382 = icmp ugt i64 %writer.sroa.10.5.i.i.i.i, %idx.0.i.i.i.i381 %707 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i382) %and.i.i.i.i6.i.i383 = and i64 %707, %705 %tobool.not.i.i.i.i384 = icmp ne i64 %and.i.i.i.i6.i.i383, 0 %708 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i385 = getelementptr inbounds nuw i32, ptr %708, i64 %idxprom.i23.i.i.i.i.i376, !amdgpu.uniform !42 %709 = load atomic i32, ptr %arrayidx.i22.i.i.i385 monotonic, align 4 %710 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i384) %711 = extractvalue { i1, i64 } %710, 0 %712 = extractvalue { i1, i64 } %710, 1 br i1 %711, label %cond.false.i8.i.i.i.i386, label %Flow8499 cond.false.i8.i.i.i.i386: ; preds = %while.cond.i.i.i.i379 %713 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %709) %714 = icmp ne i32 %713, %port.sroa.37.0.i.i380 br i1 %714, label %while.body.i.i21.i.i.i.i387.preheader, label %Flow8498, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i387.preheader: ; preds = %cond.false.i8.i.i.i.i386 br label %while.body.i.i21.i.i.i.i387, !amdgpu.uniform !42 Flow8498: ; preds = %Flow8497, %cond.false.i8.i.i.i.i386 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i390, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i387: ; preds = %while.body.i.i21.i.i.i.i387.preheader, %while.body.i.i21.i.i.i.i387 tail call void @llvm.amdgcn.s.sleep(i32 2) %715 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i388 = getelementptr inbounds nuw i32, ptr %715, i64 %idxprom.i23.i.i.i.i.i376, !amdgpu.uniform !42 %716 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i388 monotonic, align 4 %717 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %716) %cmp.i.not.i.i23.i.i.i.i389 = icmp eq i32 %717, %port.sroa.37.0.i.i380 br i1 %cmp.i.not.i.i23.i.i.i.i389, label %Flow8497, label %while.body.i.i21.i.i.i.i387, !amdgpu.uniform !42 Flow8497: ; preds = %while.body.i.i21.i.i.i.i387 br label %Flow8498, !amdgpu.uniform !42 Flow8499: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i391, %while.cond.i.i.i.i379 %718 = phi i64 [ %add.i.i.i.i394, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i391 ], [ poison, %while.cond.i.i.i.i379 ] %719 = phi i32 [ %conv.i.i26.i.i.i.i392, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i391 ], [ poison, %while.cond.i.i.i.i379 ] %720 = phi ptr [ %scevgep7166, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i391 ], [ poison, %while.cond.i.i.i.i379 ] %721 = phi i64 [ %lsr.iv.next7171, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i391 ], [ poison, %while.cond.i.i.i.i379 ] %722 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i391 ], [ true, %while.cond.i.i.i.i379 ] call void @llvm.amdgcn.end.cf.i64(i64 %712) %723 = call i64 @llvm.amdgcn.if.break.i64(i1 %722, i64 %phi.broken8638) %724 = call i1 @llvm.amdgcn.loop.i64(i64 %723) br i1 %724, label %cond.false.i.i.i400, label %while.cond.i.i.i.i379 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i390: ; preds = %Flow8498 fence acquire %725 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i382) %726 = extractvalue { i1, i64 } %725, 0 %727 = extractvalue { i1, i64 } %725, 1 br i1 %726, label %if.then.i.i.i.i.i.i3.i, label %Flow8496 if.then.i.i.i.i.i.i3.i: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i390 %sub.i.i.i.i.i.i.i396 = sub nuw i64 %writer.sroa.10.5.i.i.i.i, %idx.0.i.i.i.i381 %spec.select.i.i.i36.i.i.i.i397 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i396, i64 64) %728 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %729 = and i64 %spec.select.i.i.i36.i.i.i.i397, 15 %730 = sub i64 %spec.select.i.i.i36.i.i.i.i397, %729 %731 = icmp ne i64 %730, 0 %732 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %731) %733 = extractvalue { i1, i64 } %732, 0 %734 = extractvalue { i1, i64 } %732, 1 br i1 %733, label %loop-memcpy-expansion5079.preheader, label %Flow8495 loop-memcpy-expansion5079.preheader: ; preds = %if.then.i.i.i.i.i.i3.i %arrayidx.i20.i35.i.i.i.i398 = getelementptr %"struct.rpc::Buffer", ptr %728, i64 %idxprom.i19.i.i.i.i.i369 %arrayidx.i22.i38.i.i.i.i399 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i398, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion5079, !amdgpu.uniform !42 Flow8495: ; preds = %Flow8494, %if.then.i.i.i.i.i.i3.i call void @llvm.amdgcn.end.cf.i64(i64 %734) br label %loop-memcpy-residual-header5082, !amdgpu.uniform !42 loop-memcpy-expansion5079: ; preds = %loop-memcpy-expansion5079.preheader, %loop-memcpy-expansion5079 %phi.broken8636 = phi i64 [ 0, %loop-memcpy-expansion5079.preheader ], [ %739, %loop-memcpy-expansion5079 ] %loop-index5080 = phi i64 [ %737, %loop-memcpy-expansion5079 ], [ 0, %loop-memcpy-expansion5079.preheader ] %scevgep7167 = getelementptr i8, ptr %lsr.iv7165, i64 %loop-index5080 %735 = load <4 x i32>, ptr %scevgep7167, align 1 %736 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i399, i64 %loop-index5080 store <4 x i32> %735, ptr %736, align 1 %737 = add i64 %loop-index5080, 16 %738 = icmp uge i64 %737, %730 %739 = call i64 @llvm.amdgcn.if.break.i64(i1 %738, i64 %phi.broken8636) %740 = call i1 @llvm.amdgcn.loop.i64(i64 %739) br i1 %740, label %Flow8494, label %loop-memcpy-expansion5079 Flow8493: ; preds = %Flow8492, %loop-memcpy-residual-header5082 call void @llvm.amdgcn.end.cf.i64(i64 %6336) br label %Flow8496, !amdgpu.uniform !42 loop-memcpy-residual5081: ; preds = %loop-memcpy-residual5081.preheader, %loop-memcpy-residual5081 %phi.broken8637 = phi i64 [ 0, %loop-memcpy-residual5081.preheader ], [ %744, %loop-memcpy-residual5081 ] %residual-loop-index5083 = phi i64 [ %742, %loop-memcpy-residual5081 ], [ 0, %loop-memcpy-residual5081.preheader ] %scevgep7176 = getelementptr i8, ptr %scevgep7175, i64 %residual-loop-index5083 %741 = load i8, ptr %scevgep7176, align 1 %scevgep7174 = getelementptr i8, ptr %scevgep7173, i64 %residual-loop-index5083 store i8 %741, ptr %scevgep7174, align 1 %742 = add i64 %residual-loop-index5083, 1 %743 = icmp uge i64 %742, %729 %744 = call i64 @llvm.amdgcn.if.break.i64(i1 %743, i64 %phi.broken8637) %745 = call i1 @llvm.amdgcn.loop.i64(i64 %744) br i1 %745, label %Flow8492, label %loop-memcpy-residual5081 Flow8492: ; preds = %loop-memcpy-residual5081 %.lcssa9300 = phi i64 [ %744, %loop-memcpy-residual5081 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9300) br label %Flow8493, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i391: ; preds = %Flow8496 %conv.i.i26.i.i.i.i392 = xor i32 %port.sroa.37.0.i.i380, 1 fence release %746 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i393 = getelementptr inbounds nuw i32, ptr %746, i64 %idxprom.i23.i.i.i.i.i376 store atomic i32 %conv.i.i26.i.i.i.i392, ptr %arrayidx.i24.i29.i.i.i.i393 monotonic, align 4 %add.i.i.i.i394 = add i64 %idx.0.i.i.i.i381, 64 %scevgep7166 = getelementptr i8, ptr %lsr.iv7165, i64 64 %lsr.iv.next7171 = add i64 %lsr.iv7170, -64 br label %Flow8499, !amdgpu.uniform !42 cond.false.i.i.i400: ; preds = %Flow8499 %.lcssa9302 = phi i64 [ %723, %Flow8499 ] %port.sroa.37.0.i.i380.lcssa = phi i32 [ %port.sroa.37.0.i.i380, %Flow8499 ] %.lcssa9301 = phi i32 [ %709, %Flow8499 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9302) %747 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa9301) %748 = icmp ne i32 %747, %port.sroa.37.0.i.i380.lcssa %749 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %748) %750 = extractvalue { i1, i64 } %749, 0 %751 = extractvalue { i1, i64 } %749, 1 br i1 %750, label %while.body.i.i.i.i401.preheader, label %Flow8491 while.body.i.i.i.i401.preheader: ; preds = %cond.false.i.i.i400 br label %while.body.i.i.i.i401, !amdgpu.uniform !42 Flow8491: ; preds = %Flow8490, %cond.false.i.i.i400 call void @llvm.amdgcn.end.cf.i64(i64 %751) br label %_ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i, !amdgpu.uniform !42 while.body.i.i.i.i401: ; preds = %while.body.i.i.i.i401.preheader, %while.body.i.i.i.i401 %phi.broken8639 = phi i64 [ 0, %while.body.i.i.i.i401.preheader ], [ %755, %while.body.i.i.i.i401 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %752 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i402 = getelementptr inbounds nuw i32, ptr %752, i64 %idxprom.i23.i.i.i.i.i376, !amdgpu.uniform !42 %753 = load atomic i32, ptr %arrayidx.i.i.i8.i.i402 monotonic, align 4 %754 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %753) %cmp.i.not.i.i.i.i403 = icmp eq i32 %754, %port.sroa.37.0.i.i380.lcssa %755 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i403, i64 %phi.broken8639) %756 = call i1 @llvm.amdgcn.loop.i64(i64 %755) br i1 %756, label %Flow8490, label %while.body.i.i.i.i401 Flow8490: ; preds = %while.body.i.i.i.i401 %.lcssa9298 = phi i64 [ %755, %while.body.i.i.i.i401 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9298) br label %Flow8491, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i: ; preds = %Flow8491 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %757 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa9309, i1 true) %iszero.i.i.i.i.i13.i.i404 = icmp ne i64 %.lcssa9309, 0 %cmp2.i.i.i.i14.i.i405 = icmp eq i64 %757, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i406 = select i1 %iszero.i.i.i.i.i13.i.i404, i1 %cmp2.i.i.i.i14.i.i405, i1 false %758 = and i32 %.lcssa9310, 31 %conv4.i.i.i19.i.i410 = zext i1 %cmp.i.i.i.i15.i.i406 to i32 %shl.i.i.i20.i.i411 = shl nuw i32 %conv4.i.i.i19.i.i410, %758 %xor.i.i.i21.i.i412 = xor i32 %shl.i.i.i20.i.i411, -1 %759 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5524, !amdgpu.uniform !42 760: ; preds = %ComputeEnd5525 %div8.i.i.i16.i.i407 = lshr i32 %.lcssa9310, 5 %idxprom.i.i.i17.i.i408 = zext nneg i32 %div8.i.i.i16.i.i407 to i64 %761 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i408 %sunkaddr7376 = getelementptr inbounds i8, ptr addrspace(1) %761, i64 40 %762 = atomicrmw and ptr addrspace(1) %sunkaddr7376, i32 %.lcssa9297 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %763, !amdgpu.uniform !42 763: ; preds = %760, %ComputeEnd5525 call void @llvm.amdgcn.end.cf.i64(i64 %6958) tail call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i1.i429, !amdgpu.uniform !42 for.cond.i.i1.i429: ; preds = %763, %Flow8489 %764 = phi i32 [ %802, %Flow8489 ], [ poison, %763 ] %765 = phi i64 [ %803, %Flow8489 ], [ poison, %763 ] %766 = phi i32 [ %804, %Flow8489 ], [ poison, %763 ] %retval.sroa.6.0.i.i.i430 = phi i32 [ %807, %Flow8489 ], [ undef, %763 ] %retval.sroa.2.0.i.i.i432 = phi i64 [ %806, %Flow8489 ], [ undef, %763 ] %retval.sroa.8.0.i.i.i433 = phi i32 [ %805, %Flow8489 ], [ undef, %763 ] %index.0.i.i.i434 = phi i32 [ %809, %Flow8489 ], [ 0, %763 ] %767 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i435 = icmp ult i32 %index.0.i.i.i434, %767 %spec.store.select.i.i.i436 = select i1 %cmp.not.i.i.i435, i32 %index.0.i.i.i434, i32 0 %768 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %769 = and i32 %spec.store.select.i.i.i436, 31 %770 = lshr i64 %768, %sh_prom.i.i.i.i %771 = trunc i64 %770 to i32 %conv4.i.i.i.i.i440 = and i32 %771, 1 %shl.i.i.i.i.i441 = shl nuw i32 %conv4.i.i.i.i.i440, %769 %772 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5528, !amdgpu.uniform !42 773: ; preds = %ComputeEnd5529 %sunkaddr7377 = getelementptr inbounds i8, ptr addrspace(1) %6968, i64 40 %774 = atomicrmw or ptr addrspace(1) %sunkaddr7377, i32 %.lcssa9291 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %775, !amdgpu.uniform !42 775: ; preds = %773, %ComputeEnd5529 %776 = phi i32 [ %774, %773 ], [ poison, %ComputeEnd5529 ] call void @llvm.amdgcn.end.cf.i64(i64 %6977) %777 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %776) %778 = or i32 %777, %.lcssa9292 %shl5.i.i.i.i.i442 = shl nuw i32 1, %769 %and.i.i.i.i.i443 = and i32 %shl5.i.i.i.i.i442, %778 %tobool3.i.i.i.i444 = icmp ne i32 %and.i.i.i.i.i443, 0 %779 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i444) %and.i.i.i.i.i.i445 = and i64 %779, %768 %cmp.i.not.i.i.i446 = icmp ne i64 %768, %and.i.i.i.i.i.i445 br i1 %cmp.i.not.i.i.i446, label %if.then.i.i.i.i447, label %Flow8488, !amdgpu.uniform !42 if.then.i.i.i.i447: ; preds = %775 fence syncscope("agent") acquire %780 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %781 = extractelement <2 x i64> %780, i32 0 %782 = inttoptr i64 %781 to ptr %783 = extractelement <2 x i64> %780, i32 1 %784 = inttoptr i64 %783 to ptr %idxprom.i.i.i.i448 = zext i32 %spec.store.select.i.i.i436 to i64 %arrayidx.i.i.i.i449 = getelementptr inbounds nuw i32, ptr %782, i64 %idxprom.i.i.i.i448, !amdgpu.uniform !42 %785 = load atomic i32, ptr %arrayidx.i.i.i.i449 monotonic, align 4 %786 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %785) %arrayidx.i45.i.i.i450 = getelementptr inbounds nuw i32, ptr %784, i64 %idxprom.i.i.i.i448, !amdgpu.uniform !42 %787 = load atomic i32, ptr %arrayidx.i45.i.i.i450 monotonic, align 4 %788 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %787) %cmp.i46.not.i.i.i451 = icmp ne i32 %786, %788 br i1 %cmp.i46.not.i.i.i451, label %if.then12.i.i.i452, label %Flow8486, !amdgpu.uniform !42 if.then12.i.i.i452: ; preds = %if.then.i.i.i.i447 fence syncscope("agent") release %789 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %768, i1 true) %iszero.i.i.i.i.i.i.i453 = icmp ne i64 %768, 0 %cmp2.i.i.i.i.i.i454 = icmp eq i64 %789, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i455 = select i1 %iszero.i.i.i.i.i.i.i453, i1 %cmp2.i.i.i.i.i.i454, i1 false %conv4.i.i51.i.i.i456 = zext i1 %cmp.i.i.i.i.i.i455 to i32 %shl.i.i52.i.i.i457 = shl nuw i32 %conv4.i.i51.i.i.i456, %769 %xor.i.i.i.i.i458 = xor i32 %shl.i.i52.i.i.i457, -1 %790 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5533, !amdgpu.uniform !42 791: ; preds = %ComputeEnd5534 %sunkaddr7378 = getelementptr inbounds i8, ptr addrspace(1) %6968, i64 40 %792 = atomicrmw and ptr addrspace(1) %sunkaddr7378, i32 %.lcssa9293 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %793, !amdgpu.uniform !42 793: ; preds = %791, %ComputeEnd5534 call void @llvm.amdgcn.end.cf.i64(i64 %6995) tail call void @llvm.amdgcn.wave.barrier() br label %Flow8486, !amdgpu.uniform !42 if.end14.i.i.i518: ; preds = %Flow8486 %794 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %768, i1 true) %iszero.i.i.i.i.i.i519 = icmp ne i64 %768, 0 %cmp2.i.i.i.i.i520 = icmp eq i64 %794, %sh_prom.i.i.i.i %cmp.i.i.i.i.i521 = select i1 %iszero.i.i.i.i.i.i519, i1 %cmp2.i.i.i.i.i520, i1 false %795 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i521) %796 = extractvalue { i1, i64 } %795, 0 %797 = extractvalue { i1, i64 } %795, 1 br i1 %796, label %if.then16.i.i.i523, label %if.end22.i.i.i522 if.then16.i.i.i523: ; preds = %if.end14.i.i.i518 %798 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i524 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %798, i64 %idxprom.i.i.i.i448, i32 1 store i32 1660944387, ptr %opcode.i.i.i524, align 8, !tbaa !77 %arrayidx21.i.i.i525 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %798, i64 %idxprom.i.i.i.i448 store i64 %768, ptr %arrayidx21.i.i.i525, align 8, !tbaa !80 br label %if.end22.i.i.i522, !amdgpu.uniform !42 Flow8487: ; preds = %if.end22.i.i.i522, %Flow8486 %799 = phi i32 [ %786, %if.end22.i.i.i522 ], [ %retval.sroa.8.0.i.i.i433, %Flow8486 ] %800 = phi i64 [ %768, %if.end22.i.i.i522 ], [ %retval.sroa.2.0.i.i.i432, %Flow8486 ] %801 = phi i32 [ %spec.store.select.i.i.i436, %if.end22.i.i.i522 ], [ %retval.sroa.6.0.i.i.i430, %Flow8486 ] br label %cleanup26.i.i.i459, !amdgpu.uniform !42 if.end22.i.i.i522: ; preds = %if.then16.i.i.i523, %if.end14.i.i.i518 call void @llvm.amdgcn.end.cf.i64(i64 %797) tail call void @llvm.amdgcn.wave.barrier() br label %Flow8487, !amdgpu.uniform !42 Flow8488: ; preds = %cleanup26.i.i.i459, %775 %802 = phi i32 [ %801, %cleanup26.i.i.i459 ], [ %764, %775 ] %803 = phi i64 [ %800, %cleanup26.i.i.i459 ], [ %765, %775 ] %804 = phi i32 [ %799, %cleanup26.i.i.i459 ], [ %766, %775 ] %805 = phi i32 [ %799, %cleanup26.i.i.i459 ], [ %retval.sroa.8.0.i.i.i433, %775 ] %806 = phi i64 [ %800, %cleanup26.i.i.i459 ], [ %retval.sroa.2.0.i.i.i432, %775 ] %807 = phi i32 [ %801, %cleanup26.i.i.i459 ], [ %retval.sroa.6.0.i.i.i430, %775 ] %808 = phi i1 [ %cmp.i46.not.i.i.i451, %cleanup26.i.i.i459 ], [ true, %775 ] br i1 %808, label %for.inc.i.i.i464, label %Flow8489, !amdgpu.uniform !42 cleanup26.i.i.i459: ; preds = %Flow8487 br label %Flow8488, !amdgpu.uniform !42 for.inc.i.i.i464: ; preds = %Flow8488 %inc.i.i.i469 = add i32 %spec.store.select.i.i.i436, 1 br label %Flow8489, !amdgpu.uniform !42 Flow8489: ; preds = %for.inc.i.i.i464, %Flow8488 %809 = phi i32 [ %inc.i.i.i469, %for.inc.i.i.i464 ], [ poison, %Flow8488 ] %810 = phi i1 [ false, %for.inc.i.i.i464 ], [ true, %Flow8488 ] br i1 %810, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i470, label %for.cond.i.i1.i429, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i470: ; preds = %Flow8489 %.lcssa9296 = phi i32 [ %802, %Flow8489 ] %.lcssa9295 = phi i64 [ %803, %Flow8489 ] %.lcssa9294 = phi i32 [ %804, %Flow8489 ] fence acquire %811 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i471 = shl i32 %.lcssa9296, 6 %idxprom.i19.i.i.i.i.i472 = zext i32 %mul.i.i.i.i.i.i471 to i64 %arrayidx.i20.i.i.i.i.i473 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %811, i64 %idxprom.i19.i.i.i.i.i472 %arrayidx.i22.i.i.i.i.i474 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i473, i64 %sh_prom.i.i.i.i store i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.14.32 to ptr), i64 5) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.14.32 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i474, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i475 = tail call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.14.32 to ptr), i64 5) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.14.32 to ptr) to i64)), i64 56) %812 = and i64 %spec.select.i.i.i.i.i.i.i475, 15 %813 = sub i64 %spec.select.i.i.i.i.i.i.i475, %812 %814 = icmp ne i64 %813, 0 br i1 %814, label %loop-memcpy-expansion5223.preheader, label %Flow8485, !amdgpu.uniform !42 loop-memcpy-expansion5223.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i470 %815 = add nuw nsw i64 %78, 8 %scevgep7161 = getelementptr i8, ptr %811, i64 %815 %816 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i472, 6 %scevgep7162 = getelementptr i8, ptr %scevgep7161, i64 %816 br label %loop-memcpy-expansion5223, !amdgpu.uniform !42 Flow8485: ; preds = %Flow8484, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i470 br label %loop-memcpy-residual-header5226, !amdgpu.uniform !42 loop-memcpy-expansion5223: ; preds = %loop-memcpy-expansion5223.preheader, %loop-memcpy-expansion5223 %loop-index5224 = phi i64 [ %819, %loop-memcpy-expansion5223 ], [ 0, %loop-memcpy-expansion5223.preheader ] %817 = getelementptr i8, ptr addrspace(4) @.str.14.32, i64 %loop-index5224, !amdgpu.uniform !42 %818 = load <4 x i32>, ptr addrspace(4) %817, align 1 %scevgep7163 = getelementptr i8, ptr %scevgep7162, i64 %loop-index5224 store <4 x i32> %818, ptr %scevgep7163, align 1 %819 = add i64 %loop-index5224, 16 %820 = icmp uge i64 %819, %813 br i1 %820, label %Flow8484, label %loop-memcpy-expansion5223, !amdgpu.uniform !42 Flow8483: ; preds = %Flow8481, %Flow8482 %821 = phi i64 [ %6525, %Flow8481 ], [ %6522, %Flow8482 ] br label %post-loop-memcpy-expansion5222, !amdgpu.uniform !42 loop-memcpy-residual5225: ; preds = %loop-memcpy-residual5225.preheader, %loop-memcpy-residual5225 %residual-loop-index5227 = phi i64 [ %823, %loop-memcpy-residual5225 ], [ 0, %loop-memcpy-residual5225.preheader ] %scevgep7160 = getelementptr i8, ptr addrspace(4) @.str.14.32, i64 %residual-loop-index5227, !amdgpu.uniform !42 %822 = load i8, ptr addrspace(4) %scevgep7160, align 1 %scevgep7159 = getelementptr i8, ptr %scevgep7158, i64 %residual-loop-index5227 store i8 %822, ptr %scevgep7159, align 1 %823 = add i64 %residual-loop-index5227, 1 %824 = icmp uge i64 %823, %812 br i1 %824, label %Flow8481, label %loop-memcpy-residual5225, !amdgpu.uniform !42 Flow8481: ; preds = %loop-memcpy-residual5225 br label %Flow8483, !amdgpu.uniform !42 post-loop-memcpy-expansion5222: ; preds = %Flow8483 %tobool.not.i.i.i.i.i.i477 = icmp eq i32 %.lcssa9294, 0 %conv.i.i.i.i.i.i478 = zext i1 %tobool.not.i.i.i.i.i.i477 to i32 fence release %825 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i479 = zext i32 %.lcssa9296 to i64 %arrayidx.i24.i.i.i.i.i480 = getelementptr inbounds nuw i32, ptr %825, i64 %idxprom.i23.i.i.i.i.i479 store atomic i32 %conv.i.i.i.i.i.i478, ptr %arrayidx.i24.i.i.i.i.i480 monotonic, align 4 %826 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i481 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %826, i64 %idxprom.i23.i.i.i.i.i479, !amdgpu.uniform !42 %827 = load i64, ptr %arrayidx.i.i5.i.i481, align 8, !tbaa !80 br label %while.cond.i.i.i.i482, !amdgpu.uniform !42 while.cond.i.i.i.i482: ; preds = %post-loop-memcpy-expansion5222, %Flow8480 %phi.broken8640 = phi i64 [ 0, %post-loop-memcpy-expansion5222 ], [ %844, %Flow8480 ] %lsr.iv7150 = phi i64 [ %842, %Flow8480 ], [ -51, %post-loop-memcpy-expansion5222 ] %lsr.iv7145 = phi ptr addrspace(4) [ %841, %Flow8480 ], [ getelementptr (i8, ptr addrspace(4) @.str.14.32, i64 56), %post-loop-memcpy-expansion5222 ] %port.sroa.37.0.i.i483 = phi i32 [ %840, %Flow8480 ], [ %conv.i.i.i.i.i.i478, %post-loop-memcpy-expansion5222 ] %idx.0.i.i.i.i484 = phi i64 [ %839, %Flow8480 ], [ 56, %post-loop-memcpy-expansion5222 ] %cmp.i.i.i.i485 = icmp ult i64 %idx.0.i.i.i.i484, sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.14.32 to ptr), i64 5) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.14.32 to ptr) to i64)) %828 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i485) %and.i.i.i.i6.i.i486 = and i64 %828, %827 %tobool.not.i.i.i.i487 = icmp ne i64 %and.i.i.i.i6.i.i486, 0 %829 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i488 = getelementptr inbounds nuw i32, ptr %829, i64 %idxprom.i23.i.i.i.i.i479, !amdgpu.uniform !42 %830 = load atomic i32, ptr %arrayidx.i22.i.i.i488 monotonic, align 4 %831 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i487) %832 = extractvalue { i1, i64 } %831, 0 %833 = extractvalue { i1, i64 } %831, 1 br i1 %832, label %cond.false.i8.i.i.i.i489, label %Flow8480 cond.false.i8.i.i.i.i489: ; preds = %while.cond.i.i.i.i482 %834 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %830) %835 = icmp ne i32 %834, %port.sroa.37.0.i.i483 br i1 %835, label %while.body.i.i21.i.i.i.i490.preheader, label %Flow8479, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i490.preheader: ; preds = %cond.false.i8.i.i.i.i489 br label %while.body.i.i21.i.i.i.i490, !amdgpu.uniform !42 Flow8479: ; preds = %Flow8478, %cond.false.i8.i.i.i.i489 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i493, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i490: ; preds = %while.body.i.i21.i.i.i.i490.preheader, %while.body.i.i21.i.i.i.i490 tail call void @llvm.amdgcn.s.sleep(i32 2) %836 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i491 = getelementptr inbounds nuw i32, ptr %836, i64 %idxprom.i23.i.i.i.i.i479, !amdgpu.uniform !42 %837 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i491 monotonic, align 4 %838 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %837) %cmp.i.not.i.i23.i.i.i.i492 = icmp eq i32 %838, %port.sroa.37.0.i.i483 br i1 %cmp.i.not.i.i23.i.i.i.i492, label %Flow8478, label %while.body.i.i21.i.i.i.i490, !amdgpu.uniform !42 Flow8478: ; preds = %while.body.i.i21.i.i.i.i490 br label %Flow8479, !amdgpu.uniform !42 Flow8480: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i494, %while.cond.i.i.i.i482 %839 = phi i64 [ %add.i.i.i.i497, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i494 ], [ poison, %while.cond.i.i.i.i482 ] %840 = phi i32 [ %conv.i.i26.i.i.i.i495, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i494 ], [ poison, %while.cond.i.i.i.i482 ] %841 = phi ptr addrspace(4) [ %scevgep7146, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i494 ], [ poison, %while.cond.i.i.i.i482 ] %842 = phi i64 [ %lsr.iv.next7151, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i494 ], [ poison, %while.cond.i.i.i.i482 ] %843 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i494 ], [ true, %while.cond.i.i.i.i482 ] call void @llvm.amdgcn.end.cf.i64(i64 %833) %844 = call i64 @llvm.amdgcn.if.break.i64(i1 %843, i64 %phi.broken8640) %845 = call i1 @llvm.amdgcn.loop.i64(i64 %844) br i1 %845, label %cond.false.i.i.i504, label %while.cond.i.i.i.i482 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i493: ; preds = %Flow8479 fence acquire br i1 %cmp.i.i.i.i485, label %if.then.i.i.i.i.i.i.i498, label %Flow8477, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i498: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i493 %sub.i.i.i.i.i.i.i500 = sub nuw i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.14.32 to ptr), i64 5) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.14.32 to ptr) to i64)), %idx.0.i.i.i.i484 %spec.select.i.i.i36.i.i.i.i501 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i500, i64 64) %846 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %847 = and i64 %spec.select.i.i.i36.i.i.i.i501, 15 %848 = sub i64 %spec.select.i.i.i36.i.i.i.i501, %847 %849 = icmp ne i64 %848, 0 br i1 %849, label %loop-memcpy-expansion5229.preheader, label %Flow8476, !amdgpu.uniform !42 loop-memcpy-expansion5229.preheader: ; preds = %if.then.i.i.i.i.i.i.i498 %arrayidx.i20.i35.i.i.i.i502 = getelementptr %"struct.rpc::Buffer", ptr %846, i64 %idxprom.i19.i.i.i.i.i472 %arrayidx.i22.i38.i.i.i.i503 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i502, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion5229, !amdgpu.uniform !42 Flow8476: ; preds = %Flow8475, %if.then.i.i.i.i.i.i.i498 br label %loop-memcpy-residual-header5232, !amdgpu.uniform !42 loop-memcpy-expansion5229: ; preds = %loop-memcpy-expansion5229.preheader, %loop-memcpy-expansion5229 %loop-index5230 = phi i64 [ %852, %loop-memcpy-expansion5229 ], [ 0, %loop-memcpy-expansion5229.preheader ] %scevgep7147 = getelementptr i8, ptr addrspace(4) %lsr.iv7145, i64 %loop-index5230, !amdgpu.uniform !42 %850 = load <4 x i32>, ptr addrspace(4) %scevgep7147, align 1 %851 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i503, i64 %loop-index5230 store <4 x i32> %850, ptr %851, align 1 %852 = add i64 %loop-index5230, 16 %853 = icmp uge i64 %852, %848 br i1 %853, label %Flow8475, label %loop-memcpy-expansion5229, !amdgpu.uniform !42 Flow8474: ; preds = %Flow8473, %loop-memcpy-residual-header5232 br label %Flow8477, !amdgpu.uniform !42 loop-memcpy-residual5231: ; preds = %loop-memcpy-residual5231.preheader, %loop-memcpy-residual5231 %residual-loop-index5233 = phi i64 [ %855, %loop-memcpy-residual5231 ], [ 0, %loop-memcpy-residual5231.preheader ] %scevgep7156 = getelementptr i8, ptr addrspace(4) %scevgep7155, i64 %residual-loop-index5233, !amdgpu.uniform !42 %854 = load i8, ptr addrspace(4) %scevgep7156, align 1 %scevgep7154 = getelementptr i8, ptr %scevgep7153, i64 %residual-loop-index5233 store i8 %854, ptr %scevgep7154, align 1 %855 = add i64 %residual-loop-index5233, 1 %856 = icmp uge i64 %855, %847 br i1 %856, label %Flow8473, label %loop-memcpy-residual5231, !amdgpu.uniform !42 Flow8473: ; preds = %loop-memcpy-residual5231 br label %Flow8474, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i494: ; preds = %Flow8477 %conv.i.i26.i.i.i.i495 = xor i32 %port.sroa.37.0.i.i483, 1 fence release %857 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i496 = getelementptr inbounds nuw i32, ptr %857, i64 %idxprom.i23.i.i.i.i.i479 store atomic i32 %conv.i.i26.i.i.i.i495, ptr %arrayidx.i24.i29.i.i.i.i496 monotonic, align 4 %add.i.i.i.i497 = add i64 %idx.0.i.i.i.i484, 64 %scevgep7146 = getelementptr i8, ptr addrspace(4) %lsr.iv7145, i64 64 %lsr.iv.next7151 = add i64 %lsr.iv7150, -64 br label %Flow8480, !amdgpu.uniform !42 cond.false.i.i.i504: ; preds = %Flow8480 %.lcssa9290 = phi i64 [ %844, %Flow8480 ] %port.sroa.37.0.i.i483.lcssa = phi i32 [ %port.sroa.37.0.i.i483, %Flow8480 ] %.lcssa9289 = phi i32 [ %830, %Flow8480 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9290) %858 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa9289) %859 = icmp ne i32 %858, %port.sroa.37.0.i.i483.lcssa %860 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %859) %861 = extractvalue { i1, i64 } %860, 0 %862 = extractvalue { i1, i64 } %860, 1 br i1 %861, label %while.body.i.i.i.i505.preheader, label %Flow8472 while.body.i.i.i.i505.preheader: ; preds = %cond.false.i.i.i504 br label %while.body.i.i.i.i505, !amdgpu.uniform !42 Flow8472: ; preds = %Flow8471, %cond.false.i.i.i504 call void @llvm.amdgcn.end.cf.i64(i64 %862) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit526, !amdgpu.uniform !42 while.body.i.i.i.i505: ; preds = %while.body.i.i.i.i505.preheader, %while.body.i.i.i.i505 %phi.broken8641 = phi i64 [ 0, %while.body.i.i.i.i505.preheader ], [ %866, %while.body.i.i.i.i505 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %863 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i506 = getelementptr inbounds nuw i32, ptr %863, i64 %idxprom.i23.i.i.i.i.i479, !amdgpu.uniform !42 %864 = load atomic i32, ptr %arrayidx.i.i.i8.i.i506 monotonic, align 4 %865 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %864) %cmp.i.not.i.i.i.i507 = icmp eq i32 %865, %port.sroa.37.0.i.i483.lcssa %866 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i507, i64 %phi.broken8641) %867 = call i1 @llvm.amdgcn.loop.i64(i64 %866) br i1 %867, label %Flow8471, label %while.body.i.i.i.i505 Flow8471: ; preds = %while.body.i.i.i.i505 %.lcssa9288 = phi i64 [ %866, %while.body.i.i.i.i505 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9288) br label %Flow8472, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit526: ; preds = %Flow8472 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %868 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa9295, i1 true) %iszero.i.i.i.i.i13.i.i509 = icmp ne i64 %.lcssa9295, 0 %cmp2.i.i.i.i14.i.i510 = icmp eq i64 %868, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i511 = select i1 %iszero.i.i.i.i.i13.i.i509, i1 %cmp2.i.i.i.i14.i.i510, i1 false %869 = and i32 %.lcssa9296, 31 %conv4.i.i.i19.i.i515 = zext i1 %cmp.i.i.i.i15.i.i511 to i32 %shl.i.i.i20.i.i516 = shl nuw i32 %conv4.i.i.i19.i.i515, %869 %xor.i.i.i21.i.i517 = xor i32 %shl.i.i.i20.i.i516, -1 %870 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5537, !amdgpu.uniform !42 871: ; preds = %ComputeEnd5538 %div8.i.i.i16.i.i512 = lshr i32 %.lcssa9296, 5 %idxprom.i.i.i17.i.i513 = zext nneg i32 %div8.i.i.i16.i.i512 to i64 %872 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i513 %sunkaddr7379 = getelementptr inbounds i8, ptr addrspace(1) %872, i64 40 %873 = atomicrmw and ptr addrspace(1) %sunkaddr7379, i32 %.lcssa9287 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %874, !amdgpu.uniform !42 874: ; preds = %871, %ComputeEnd5538 call void @llvm.amdgcn.end.cf.i64(i64 %7012) tail call void @llvm.amdgcn.wave.barrier() %cmp = icmp sgt i32 %1, 1 %875 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp) %876 = extractvalue { i1, i64 } %875, 0 %877 = extractvalue { i1, i64 } %875, 1 br i1 %876, label %for.cond.i.i1.i535.preheader, label %Flow8470 for.cond.i.i1.i535.preheader: ; preds = %874 br label %for.cond.i.i1.i535, !amdgpu.uniform !42 Flow8470: ; preds = %988, %874 call void @llvm.amdgcn.end.cf.i64(i64 %877) br label %for.cond.i.i1.i641.preheader, !amdgpu.uniform !42 for.cond.i.i1.i535: ; preds = %for.cond.i.i1.i535.preheader, %Flow8469 %878 = phi i32 [ %916, %Flow8469 ], [ poison, %for.cond.i.i1.i535.preheader ] %879 = phi i64 [ %917, %Flow8469 ], [ poison, %for.cond.i.i1.i535.preheader ] %880 = phi i32 [ %918, %Flow8469 ], [ poison, %for.cond.i.i1.i535.preheader ] %retval.sroa.6.0.i.i.i536 = phi i32 [ %921, %Flow8469 ], [ undef, %for.cond.i.i1.i535.preheader ] %retval.sroa.2.0.i.i.i538 = phi i64 [ %920, %Flow8469 ], [ undef, %for.cond.i.i1.i535.preheader ] %retval.sroa.8.0.i.i.i539 = phi i32 [ %919, %Flow8469 ], [ undef, %for.cond.i.i1.i535.preheader ] %index.0.i.i.i540 = phi i32 [ %923, %Flow8469 ], [ 0, %for.cond.i.i1.i535.preheader ] %881 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i541 = icmp ult i32 %index.0.i.i.i540, %881 %spec.store.select.i.i.i542 = select i1 %cmp.not.i.i.i541, i32 %index.0.i.i.i540, i32 0 %882 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %883 = and i32 %spec.store.select.i.i.i542, 31 %884 = lshr i64 %882, %sh_prom.i.i.i.i %885 = trunc i64 %884 to i32 %conv4.i.i.i.i.i546 = and i32 %885, 1 %shl.i.i.i.i.i547 = shl nuw i32 %conv4.i.i.i.i.i546, %883 %886 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5541, !amdgpu.uniform !42 887: ; preds = %ComputeEnd5542 %sunkaddr7380 = getelementptr inbounds i8, ptr addrspace(1) %7022, i64 40 %888 = atomicrmw or ptr addrspace(1) %sunkaddr7380, i32 %.lcssa9281 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %889, !amdgpu.uniform !42 889: ; preds = %887, %ComputeEnd5542 %890 = phi i32 [ %888, %887 ], [ poison, %ComputeEnd5542 ] call void @llvm.amdgcn.end.cf.i64(i64 %7031) %891 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %890) %892 = or i32 %891, %.lcssa9282 %shl5.i.i.i.i.i548 = shl nuw i32 1, %883 %and.i.i.i.i.i549 = and i32 %shl5.i.i.i.i.i548, %892 %tobool3.i.i.i.i550 = icmp ne i32 %and.i.i.i.i.i549, 0 %893 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i550) %and.i.i.i.i.i.i551 = and i64 %893, %882 %cmp.i.not.i.i.i552 = icmp ne i64 %882, %and.i.i.i.i.i.i551 br i1 %cmp.i.not.i.i.i552, label %if.then.i.i.i.i553, label %Flow8468, !amdgpu.uniform !42 if.then.i.i.i.i553: ; preds = %889 fence syncscope("agent") acquire %894 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %895 = extractelement <2 x i64> %894, i32 0 %896 = inttoptr i64 %895 to ptr %897 = extractelement <2 x i64> %894, i32 1 %898 = inttoptr i64 %897 to ptr %idxprom.i.i.i.i554 = zext i32 %spec.store.select.i.i.i542 to i64 %arrayidx.i.i.i.i555 = getelementptr inbounds nuw i32, ptr %896, i64 %idxprom.i.i.i.i554, !amdgpu.uniform !42 %899 = load atomic i32, ptr %arrayidx.i.i.i.i555 monotonic, align 4 %900 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %899) %arrayidx.i45.i.i.i556 = getelementptr inbounds nuw i32, ptr %898, i64 %idxprom.i.i.i.i554, !amdgpu.uniform !42 %901 = load atomic i32, ptr %arrayidx.i45.i.i.i556 monotonic, align 4 %902 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %901) %cmp.i46.not.i.i.i557 = icmp ne i32 %900, %902 br i1 %cmp.i46.not.i.i.i557, label %if.then12.i.i.i558, label %Flow8466, !amdgpu.uniform !42 if.then12.i.i.i558: ; preds = %if.then.i.i.i.i553 fence syncscope("agent") release %903 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %882, i1 true) %iszero.i.i.i.i.i.i.i559 = icmp ne i64 %882, 0 %cmp2.i.i.i.i.i.i560 = icmp eq i64 %903, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i561 = select i1 %iszero.i.i.i.i.i.i.i559, i1 %cmp2.i.i.i.i.i.i560, i1 false %conv4.i.i51.i.i.i562 = zext i1 %cmp.i.i.i.i.i.i561 to i32 %shl.i.i52.i.i.i563 = shl nuw i32 %conv4.i.i51.i.i.i562, %883 %xor.i.i.i.i.i564 = xor i32 %shl.i.i52.i.i.i563, -1 %904 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5546, !amdgpu.uniform !42 905: ; preds = %ComputeEnd5547 %sunkaddr7381 = getelementptr inbounds i8, ptr addrspace(1) %7022, i64 40 %906 = atomicrmw and ptr addrspace(1) %sunkaddr7381, i32 %.lcssa9283 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %907, !amdgpu.uniform !42 907: ; preds = %905, %ComputeEnd5547 call void @llvm.amdgcn.end.cf.i64(i64 %7049) tail call void @llvm.amdgcn.wave.barrier() br label %Flow8466, !amdgpu.uniform !42 if.end14.i.i.i624: ; preds = %Flow8466 %908 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %882, i1 true) %iszero.i.i.i.i.i.i625 = icmp ne i64 %882, 0 %cmp2.i.i.i.i.i626 = icmp eq i64 %908, %sh_prom.i.i.i.i %cmp.i.i.i.i.i627 = select i1 %iszero.i.i.i.i.i.i625, i1 %cmp2.i.i.i.i.i626, i1 false %909 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i627) %910 = extractvalue { i1, i64 } %909, 0 %911 = extractvalue { i1, i64 } %909, 1 br i1 %910, label %if.then16.i.i.i629, label %if.end22.i.i.i628 if.then16.i.i.i629: ; preds = %if.end14.i.i.i624 %912 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i630 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %912, i64 %idxprom.i.i.i.i554, i32 1 store i32 1660944387, ptr %opcode.i.i.i630, align 8, !tbaa !77 %arrayidx21.i.i.i631 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %912, i64 %idxprom.i.i.i.i554 store i64 %882, ptr %arrayidx21.i.i.i631, align 8, !tbaa !80 br label %if.end22.i.i.i628, !amdgpu.uniform !42 Flow8467: ; preds = %if.end22.i.i.i628, %Flow8466 %913 = phi i32 [ %900, %if.end22.i.i.i628 ], [ %retval.sroa.8.0.i.i.i539, %Flow8466 ] %914 = phi i64 [ %882, %if.end22.i.i.i628 ], [ %retval.sroa.2.0.i.i.i538, %Flow8466 ] %915 = phi i32 [ %spec.store.select.i.i.i542, %if.end22.i.i.i628 ], [ %retval.sroa.6.0.i.i.i536, %Flow8466 ] br label %cleanup26.i.i.i565, !amdgpu.uniform !42 if.end22.i.i.i628: ; preds = %if.then16.i.i.i629, %if.end14.i.i.i624 call void @llvm.amdgcn.end.cf.i64(i64 %911) tail call void @llvm.amdgcn.wave.barrier() br label %Flow8467, !amdgpu.uniform !42 Flow8468: ; preds = %cleanup26.i.i.i565, %889 %916 = phi i32 [ %915, %cleanup26.i.i.i565 ], [ %878, %889 ] %917 = phi i64 [ %914, %cleanup26.i.i.i565 ], [ %879, %889 ] %918 = phi i32 [ %913, %cleanup26.i.i.i565 ], [ %880, %889 ] %919 = phi i32 [ %913, %cleanup26.i.i.i565 ], [ %retval.sroa.8.0.i.i.i539, %889 ] %920 = phi i64 [ %914, %cleanup26.i.i.i565 ], [ %retval.sroa.2.0.i.i.i538, %889 ] %921 = phi i32 [ %915, %cleanup26.i.i.i565 ], [ %retval.sroa.6.0.i.i.i536, %889 ] %922 = phi i1 [ %cmp.i46.not.i.i.i557, %cleanup26.i.i.i565 ], [ true, %889 ] br i1 %922, label %for.inc.i.i.i570, label %Flow8469, !amdgpu.uniform !42 cleanup26.i.i.i565: ; preds = %Flow8467 br label %Flow8468, !amdgpu.uniform !42 for.inc.i.i.i570: ; preds = %Flow8468 %inc.i.i.i575 = add i32 %spec.store.select.i.i.i542, 1 br label %Flow8469, !amdgpu.uniform !42 Flow8469: ; preds = %for.inc.i.i.i570, %Flow8468 %923 = phi i32 [ %inc.i.i.i575, %for.inc.i.i.i570 ], [ poison, %Flow8468 ] %924 = phi i1 [ false, %for.inc.i.i.i570 ], [ true, %Flow8468 ] br i1 %924, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i576, label %for.cond.i.i1.i535, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i576: ; preds = %Flow8469 %.lcssa9286 = phi i32 [ %916, %Flow8469 ] %.lcssa9285 = phi i64 [ %917, %Flow8469 ] %.lcssa9284 = phi i32 [ %918, %Flow8469 ] fence acquire %925 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i577 = shl i32 %.lcssa9286, 6 %idxprom.i19.i.i.i.i.i578 = zext i32 %mul.i.i.i.i.i.i577 to i64 %arrayidx.i20.i.i.i.i.i579 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %925, i64 %idxprom.i19.i.i.i.i.i578 %arrayidx.i22.i.i.i.i.i580 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i579, i64 %sh_prom.i.i.i.i store i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.15.33 to ptr), i64 1) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.15.33 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i580, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i581 = tail call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.15.33 to ptr), i64 1) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.15.33 to ptr) to i64)), i64 56) %926 = and i64 %spec.select.i.i.i.i.i.i.i581, 15 %927 = sub i64 %spec.select.i.i.i.i.i.i.i581, %926 %928 = icmp ne i64 %927, 0 br i1 %928, label %loop-memcpy-expansion5235.preheader, label %Flow8465, !amdgpu.uniform !42 loop-memcpy-expansion5235.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i576 %929 = add nuw nsw i64 %78, 8 %scevgep7142 = getelementptr i8, ptr %925, i64 %929 %930 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i578, 6 %scevgep7143 = getelementptr i8, ptr %scevgep7142, i64 %930 br label %loop-memcpy-expansion5235, !amdgpu.uniform !42 Flow8465: ; preds = %Flow8464, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i576 br label %loop-memcpy-residual-header5238, !amdgpu.uniform !42 loop-memcpy-expansion5235: ; preds = %loop-memcpy-expansion5235.preheader, %loop-memcpy-expansion5235 %loop-index5236 = phi i64 [ %933, %loop-memcpy-expansion5235 ], [ 0, %loop-memcpy-expansion5235.preheader ] %931 = getelementptr i8, ptr addrspace(4) @.str.15.33, i64 %loop-index5236, !amdgpu.uniform !42 %932 = load <4 x i32>, ptr addrspace(4) %931, align 1 %scevgep7144 = getelementptr i8, ptr %scevgep7143, i64 %loop-index5236 store <4 x i32> %932, ptr %scevgep7144, align 1 %933 = add i64 %loop-index5236, 16 %934 = icmp uge i64 %933, %927 br i1 %934, label %Flow8464, label %loop-memcpy-expansion5235, !amdgpu.uniform !42 Flow8463: ; preds = %Flow8461, %Flow8462 %935 = phi i64 [ %6533, %Flow8461 ], [ %6530, %Flow8462 ] br label %post-loop-memcpy-expansion5234, !amdgpu.uniform !42 loop-memcpy-residual5237: ; preds = %loop-memcpy-residual5237.preheader, %loop-memcpy-residual5237 %residual-loop-index5239 = phi i64 [ %937, %loop-memcpy-residual5237 ], [ 0, %loop-memcpy-residual5237.preheader ] %scevgep7141 = getelementptr i8, ptr addrspace(4) @.str.15.33, i64 %residual-loop-index5239, !amdgpu.uniform !42 %936 = load i8, ptr addrspace(4) %scevgep7141, align 1 %scevgep7140 = getelementptr i8, ptr %scevgep7139, i64 %residual-loop-index5239 store i8 %936, ptr %scevgep7140, align 1 %937 = add i64 %residual-loop-index5239, 1 %938 = icmp uge i64 %937, %926 br i1 %938, label %Flow8461, label %loop-memcpy-residual5237, !amdgpu.uniform !42 Flow8461: ; preds = %loop-memcpy-residual5237 br label %Flow8463, !amdgpu.uniform !42 post-loop-memcpy-expansion5234: ; preds = %Flow8463 %tobool.not.i.i.i.i.i.i583 = icmp eq i32 %.lcssa9284, 0 %conv.i.i.i.i.i.i584 = zext i1 %tobool.not.i.i.i.i.i.i583 to i32 fence release %939 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i585 = zext i32 %.lcssa9286 to i64 %arrayidx.i24.i.i.i.i.i586 = getelementptr inbounds nuw i32, ptr %939, i64 %idxprom.i23.i.i.i.i.i585 store atomic i32 %conv.i.i.i.i.i.i584, ptr %arrayidx.i24.i.i.i.i.i586 monotonic, align 4 %940 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i587 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %940, i64 %idxprom.i23.i.i.i.i.i585, !amdgpu.uniform !42 %941 = load i64, ptr %arrayidx.i.i5.i.i587, align 8, !tbaa !80 br label %while.cond.i.i.i.i588, !amdgpu.uniform !42 while.cond.i.i.i.i588: ; preds = %post-loop-memcpy-expansion5234, %Flow8460 %phi.broken8642 = phi i64 [ 0, %post-loop-memcpy-expansion5234 ], [ %958, %Flow8460 ] %lsr.iv7131 = phi i64 [ %956, %Flow8460 ], [ -55, %post-loop-memcpy-expansion5234 ] %lsr.iv7126 = phi ptr addrspace(4) [ %955, %Flow8460 ], [ getelementptr (i8, ptr addrspace(4) @.str.15.33, i64 56), %post-loop-memcpy-expansion5234 ] %port.sroa.37.0.i.i589 = phi i32 [ %954, %Flow8460 ], [ %conv.i.i.i.i.i.i584, %post-loop-memcpy-expansion5234 ] %idx.0.i.i.i.i590 = phi i64 [ %953, %Flow8460 ], [ 56, %post-loop-memcpy-expansion5234 ] %cmp.i.i.i.i591 = icmp ult i64 %idx.0.i.i.i.i590, sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.15.33 to ptr), i64 1) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.15.33 to ptr) to i64)) %942 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i591) %and.i.i.i.i6.i.i592 = and i64 %942, %941 %tobool.not.i.i.i.i593 = icmp ne i64 %and.i.i.i.i6.i.i592, 0 %943 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i594 = getelementptr inbounds nuw i32, ptr %943, i64 %idxprom.i23.i.i.i.i.i585, !amdgpu.uniform !42 %944 = load atomic i32, ptr %arrayidx.i22.i.i.i594 monotonic, align 4 %945 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i593) %946 = extractvalue { i1, i64 } %945, 0 %947 = extractvalue { i1, i64 } %945, 1 br i1 %946, label %cond.false.i8.i.i.i.i595, label %Flow8460 cond.false.i8.i.i.i.i595: ; preds = %while.cond.i.i.i.i588 %948 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %944) %949 = icmp ne i32 %948, %port.sroa.37.0.i.i589 br i1 %949, label %while.body.i.i21.i.i.i.i596.preheader, label %Flow8459, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i596.preheader: ; preds = %cond.false.i8.i.i.i.i595 br label %while.body.i.i21.i.i.i.i596, !amdgpu.uniform !42 Flow8459: ; preds = %Flow8458, %cond.false.i8.i.i.i.i595 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i599, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i596: ; preds = %while.body.i.i21.i.i.i.i596.preheader, %while.body.i.i21.i.i.i.i596 tail call void @llvm.amdgcn.s.sleep(i32 2) %950 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i597 = getelementptr inbounds nuw i32, ptr %950, i64 %idxprom.i23.i.i.i.i.i585, !amdgpu.uniform !42 %951 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i597 monotonic, align 4 %952 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %951) %cmp.i.not.i.i23.i.i.i.i598 = icmp eq i32 %952, %port.sroa.37.0.i.i589 br i1 %cmp.i.not.i.i23.i.i.i.i598, label %Flow8458, label %while.body.i.i21.i.i.i.i596, !amdgpu.uniform !42 Flow8458: ; preds = %while.body.i.i21.i.i.i.i596 br label %Flow8459, !amdgpu.uniform !42 Flow8460: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i600, %while.cond.i.i.i.i588 %953 = phi i64 [ %add.i.i.i.i603, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i600 ], [ poison, %while.cond.i.i.i.i588 ] %954 = phi i32 [ %conv.i.i26.i.i.i.i601, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i600 ], [ poison, %while.cond.i.i.i.i588 ] %955 = phi ptr addrspace(4) [ %scevgep7127, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i600 ], [ poison, %while.cond.i.i.i.i588 ] %956 = phi i64 [ %lsr.iv.next7132, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i600 ], [ poison, %while.cond.i.i.i.i588 ] %957 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i600 ], [ true, %while.cond.i.i.i.i588 ] call void @llvm.amdgcn.end.cf.i64(i64 %947) %958 = call i64 @llvm.amdgcn.if.break.i64(i1 %957, i64 %phi.broken8642) %959 = call i1 @llvm.amdgcn.loop.i64(i64 %958) br i1 %959, label %cond.false.i.i.i610, label %while.cond.i.i.i.i588 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i599: ; preds = %Flow8459 fence acquire br i1 %cmp.i.i.i.i591, label %if.then.i.i.i.i.i.i.i604, label %Flow8457, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i604: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i599 %sub.i.i.i.i.i.i.i606 = sub nuw i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.15.33 to ptr), i64 1) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.15.33 to ptr) to i64)), %idx.0.i.i.i.i590 %spec.select.i.i.i36.i.i.i.i607 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i606, i64 64) %960 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %961 = and i64 %spec.select.i.i.i36.i.i.i.i607, 15 %962 = sub i64 %spec.select.i.i.i36.i.i.i.i607, %961 %963 = icmp ne i64 %962, 0 br i1 %963, label %loop-memcpy-expansion5241.preheader, label %Flow8456, !amdgpu.uniform !42 loop-memcpy-expansion5241.preheader: ; preds = %if.then.i.i.i.i.i.i.i604 %arrayidx.i20.i35.i.i.i.i608 = getelementptr %"struct.rpc::Buffer", ptr %960, i64 %idxprom.i19.i.i.i.i.i578 %arrayidx.i22.i38.i.i.i.i609 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i608, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion5241, !amdgpu.uniform !42 Flow8456: ; preds = %Flow8455, %if.then.i.i.i.i.i.i.i604 br label %loop-memcpy-residual-header5244, !amdgpu.uniform !42 loop-memcpy-expansion5241: ; preds = %loop-memcpy-expansion5241.preheader, %loop-memcpy-expansion5241 %loop-index5242 = phi i64 [ %966, %loop-memcpy-expansion5241 ], [ 0, %loop-memcpy-expansion5241.preheader ] %scevgep7128 = getelementptr i8, ptr addrspace(4) %lsr.iv7126, i64 %loop-index5242, !amdgpu.uniform !42 %964 = load <4 x i32>, ptr addrspace(4) %scevgep7128, align 1 %965 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i609, i64 %loop-index5242 store <4 x i32> %964, ptr %965, align 1 %966 = add i64 %loop-index5242, 16 %967 = icmp uge i64 %966, %962 br i1 %967, label %Flow8455, label %loop-memcpy-expansion5241, !amdgpu.uniform !42 Flow8454: ; preds = %Flow8453, %loop-memcpy-residual-header5244 br label %Flow8457, !amdgpu.uniform !42 loop-memcpy-residual5243: ; preds = %loop-memcpy-residual5243.preheader, %loop-memcpy-residual5243 %residual-loop-index5245 = phi i64 [ %969, %loop-memcpy-residual5243 ], [ 0, %loop-memcpy-residual5243.preheader ] %scevgep7137 = getelementptr i8, ptr addrspace(4) %scevgep7136, i64 %residual-loop-index5245, !amdgpu.uniform !42 %968 = load i8, ptr addrspace(4) %scevgep7137, align 1 %scevgep7135 = getelementptr i8, ptr %scevgep7134, i64 %residual-loop-index5245 store i8 %968, ptr %scevgep7135, align 1 %969 = add i64 %residual-loop-index5245, 1 %970 = icmp uge i64 %969, %961 br i1 %970, label %Flow8453, label %loop-memcpy-residual5243, !amdgpu.uniform !42 Flow8453: ; preds = %loop-memcpy-residual5243 br label %Flow8454, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i600: ; preds = %Flow8457 %conv.i.i26.i.i.i.i601 = xor i32 %port.sroa.37.0.i.i589, 1 fence release %971 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i602 = getelementptr inbounds nuw i32, ptr %971, i64 %idxprom.i23.i.i.i.i.i585 store atomic i32 %conv.i.i26.i.i.i.i601, ptr %arrayidx.i24.i29.i.i.i.i602 monotonic, align 4 %add.i.i.i.i603 = add i64 %idx.0.i.i.i.i590, 64 %scevgep7127 = getelementptr i8, ptr addrspace(4) %lsr.iv7126, i64 64 %lsr.iv.next7132 = add i64 %lsr.iv7131, -64 br label %Flow8460, !amdgpu.uniform !42 cond.false.i.i.i610: ; preds = %Flow8460 %.lcssa9280 = phi i64 [ %958, %Flow8460 ] %port.sroa.37.0.i.i589.lcssa = phi i32 [ %port.sroa.37.0.i.i589, %Flow8460 ] %.lcssa9279 = phi i32 [ %944, %Flow8460 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9280) %972 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa9279) %973 = icmp ne i32 %972, %port.sroa.37.0.i.i589.lcssa %974 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %973) %975 = extractvalue { i1, i64 } %974, 0 %976 = extractvalue { i1, i64 } %974, 1 br i1 %975, label %while.body.i.i.i.i611.preheader, label %Flow8452 while.body.i.i.i.i611.preheader: ; preds = %cond.false.i.i.i610 br label %while.body.i.i.i.i611, !amdgpu.uniform !42 Flow8452: ; preds = %Flow8451, %cond.false.i.i.i610 call void @llvm.amdgcn.end.cf.i64(i64 %976) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit632, !amdgpu.uniform !42 while.body.i.i.i.i611: ; preds = %while.body.i.i.i.i611.preheader, %while.body.i.i.i.i611 %phi.broken8643 = phi i64 [ 0, %while.body.i.i.i.i611.preheader ], [ %980, %while.body.i.i.i.i611 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %977 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i612 = getelementptr inbounds nuw i32, ptr %977, i64 %idxprom.i23.i.i.i.i.i585, !amdgpu.uniform !42 %978 = load atomic i32, ptr %arrayidx.i.i.i8.i.i612 monotonic, align 4 %979 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %978) %cmp.i.not.i.i.i.i613 = icmp eq i32 %979, %port.sroa.37.0.i.i589.lcssa %980 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i613, i64 %phi.broken8643) %981 = call i1 @llvm.amdgcn.loop.i64(i64 %980) br i1 %981, label %Flow8451, label %while.body.i.i.i.i611 Flow8451: ; preds = %while.body.i.i.i.i611 %.lcssa9278 = phi i64 [ %980, %while.body.i.i.i.i611 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9278) br label %Flow8452, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit632: ; preds = %Flow8452 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %982 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa9285, i1 true) %iszero.i.i.i.i.i13.i.i615 = icmp ne i64 %.lcssa9285, 0 %cmp2.i.i.i.i14.i.i616 = icmp eq i64 %982, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i617 = select i1 %iszero.i.i.i.i.i13.i.i615, i1 %cmp2.i.i.i.i14.i.i616, i1 false %983 = and i32 %.lcssa9286, 31 %conv4.i.i.i19.i.i621 = zext i1 %cmp.i.i.i.i15.i.i617 to i32 %shl.i.i.i20.i.i622 = shl nuw i32 %conv4.i.i.i19.i.i621, %983 %xor.i.i.i21.i.i623 = xor i32 %shl.i.i.i20.i.i622, -1 %984 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5550, !amdgpu.uniform !42 985: ; preds = %ComputeEnd5551 %div8.i.i.i16.i.i618 = lshr i32 %.lcssa9286, 5 %idxprom.i.i.i17.i.i619 = zext nneg i32 %div8.i.i.i16.i.i618 to i64 %986 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i619 %sunkaddr7382 = getelementptr inbounds i8, ptr addrspace(1) %986, i64 40 %987 = atomicrmw and ptr addrspace(1) %sunkaddr7382, i32 %.lcssa9277 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %988, !amdgpu.uniform !42 988: ; preds = %985, %ComputeEnd5551 call void @llvm.amdgcn.end.cf.i64(i64 %7066) tail call void @llvm.amdgcn.wave.barrier() br label %Flow8470, !amdgpu.uniform !42 for.cond.i.i1.i641.preheader: ; preds = %Flow8470 br label %for.cond.i.i1.i641, !amdgpu.uniform !42 for.cond.i.i1.i641: ; preds = %for.cond.i.i1.i641.preheader, %Flow8450 %989 = phi i32 [ %1027, %Flow8450 ], [ poison, %for.cond.i.i1.i641.preheader ] %990 = phi i64 [ %1028, %Flow8450 ], [ poison, %for.cond.i.i1.i641.preheader ] %991 = phi i32 [ %1029, %Flow8450 ], [ poison, %for.cond.i.i1.i641.preheader ] %retval.sroa.6.0.i.i.i642 = phi i32 [ %1032, %Flow8450 ], [ undef, %for.cond.i.i1.i641.preheader ] %retval.sroa.2.0.i.i.i644 = phi i64 [ %1031, %Flow8450 ], [ undef, %for.cond.i.i1.i641.preheader ] %retval.sroa.8.0.i.i.i645 = phi i32 [ %1030, %Flow8450 ], [ undef, %for.cond.i.i1.i641.preheader ] %index.0.i.i.i646 = phi i32 [ %1034, %Flow8450 ], [ 0, %for.cond.i.i1.i641.preheader ] %992 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i647 = icmp ult i32 %index.0.i.i.i646, %992 %spec.store.select.i.i.i648 = select i1 %cmp.not.i.i.i647, i32 %index.0.i.i.i646, i32 0 %993 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %994 = and i32 %spec.store.select.i.i.i648, 31 %995 = lshr i64 %993, %sh_prom.i.i.i.i %996 = trunc i64 %995 to i32 %conv4.i.i.i.i.i652 = and i32 %996, 1 %shl.i.i.i.i.i653 = shl nuw i32 %conv4.i.i.i.i.i652, %994 %997 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5554, !amdgpu.uniform !42 998: ; preds = %ComputeEnd5555 %sunkaddr7383 = getelementptr inbounds i8, ptr addrspace(1) %7076, i64 40 %999 = atomicrmw or ptr addrspace(1) %sunkaddr7383, i32 %.lcssa9271 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1000, !amdgpu.uniform !42 1000: ; preds = %998, %ComputeEnd5555 %1001 = phi i32 [ %999, %998 ], [ poison, %ComputeEnd5555 ] call void @llvm.amdgcn.end.cf.i64(i64 %7085) %1002 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %1001) %1003 = or i32 %1002, %.lcssa9272 %shl5.i.i.i.i.i654 = shl nuw i32 1, %994 %and.i.i.i.i.i655 = and i32 %shl5.i.i.i.i.i654, %1003 %tobool3.i.i.i.i656 = icmp ne i32 %and.i.i.i.i.i655, 0 %1004 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i656) %and.i.i.i.i.i.i657 = and i64 %1004, %993 %cmp.i.not.i.i.i658 = icmp ne i64 %993, %and.i.i.i.i.i.i657 br i1 %cmp.i.not.i.i.i658, label %if.then.i.i.i.i659, label %Flow8449, !amdgpu.uniform !42 if.then.i.i.i.i659: ; preds = %1000 fence syncscope("agent") acquire %1005 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %1006 = extractelement <2 x i64> %1005, i32 0 %1007 = inttoptr i64 %1006 to ptr %1008 = extractelement <2 x i64> %1005, i32 1 %1009 = inttoptr i64 %1008 to ptr %idxprom.i.i.i.i660 = zext i32 %spec.store.select.i.i.i648 to i64 %arrayidx.i.i.i.i661 = getelementptr inbounds nuw i32, ptr %1007, i64 %idxprom.i.i.i.i660, !amdgpu.uniform !42 %1010 = load atomic i32, ptr %arrayidx.i.i.i.i661 monotonic, align 4 %1011 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1010) %arrayidx.i45.i.i.i662 = getelementptr inbounds nuw i32, ptr %1009, i64 %idxprom.i.i.i.i660, !amdgpu.uniform !42 %1012 = load atomic i32, ptr %arrayidx.i45.i.i.i662 monotonic, align 4 %1013 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1012) %cmp.i46.not.i.i.i663 = icmp ne i32 %1011, %1013 br i1 %cmp.i46.not.i.i.i663, label %if.then12.i.i.i664, label %Flow8447, !amdgpu.uniform !42 if.then12.i.i.i664: ; preds = %if.then.i.i.i.i659 fence syncscope("agent") release %1014 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %993, i1 true) %iszero.i.i.i.i.i.i.i665 = icmp ne i64 %993, 0 %cmp2.i.i.i.i.i.i666 = icmp eq i64 %1014, %sh_prom.i.i.i.i %cmp.i.i.i.i.i.i667 = select i1 %iszero.i.i.i.i.i.i.i665, i1 %cmp2.i.i.i.i.i.i666, i1 false %conv4.i.i51.i.i.i668 = zext i1 %cmp.i.i.i.i.i.i667 to i32 %shl.i.i52.i.i.i669 = shl nuw i32 %conv4.i.i51.i.i.i668, %994 %xor.i.i.i.i.i670 = xor i32 %shl.i.i52.i.i.i669, -1 %1015 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5559, !amdgpu.uniform !42 1016: ; preds = %ComputeEnd5560 %sunkaddr7384 = getelementptr inbounds i8, ptr addrspace(1) %7076, i64 40 %1017 = atomicrmw and ptr addrspace(1) %sunkaddr7384, i32 %.lcssa9273 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1018, !amdgpu.uniform !42 1018: ; preds = %1016, %ComputeEnd5560 call void @llvm.amdgcn.end.cf.i64(i64 %7103) tail call void @llvm.amdgcn.wave.barrier() br label %Flow8447, !amdgpu.uniform !42 if.end14.i.i.i730: ; preds = %Flow8447 %1019 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %993, i1 true) %iszero.i.i.i.i.i.i731 = icmp ne i64 %993, 0 %cmp2.i.i.i.i.i732 = icmp eq i64 %1019, %sh_prom.i.i.i.i %cmp.i.i.i.i.i733 = select i1 %iszero.i.i.i.i.i.i731, i1 %cmp2.i.i.i.i.i732, i1 false %1020 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i733) %1021 = extractvalue { i1, i64 } %1020, 0 %1022 = extractvalue { i1, i64 } %1020, 1 br i1 %1021, label %if.then16.i.i.i735, label %if.end22.i.i.i734 if.then16.i.i.i735: ; preds = %if.end14.i.i.i730 %1023 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i736 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1023, i64 %idxprom.i.i.i.i660, i32 1 store i32 1660944387, ptr %opcode.i.i.i736, align 8, !tbaa !77 %arrayidx21.i.i.i737 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1023, i64 %idxprom.i.i.i.i660 store i64 %993, ptr %arrayidx21.i.i.i737, align 8, !tbaa !80 br label %if.end22.i.i.i734, !amdgpu.uniform !42 Flow8448: ; preds = %if.end22.i.i.i734, %Flow8447 %1024 = phi i32 [ %1011, %if.end22.i.i.i734 ], [ %retval.sroa.8.0.i.i.i645, %Flow8447 ] %1025 = phi i64 [ %993, %if.end22.i.i.i734 ], [ %retval.sroa.2.0.i.i.i644, %Flow8447 ] %1026 = phi i32 [ %spec.store.select.i.i.i648, %if.end22.i.i.i734 ], [ %retval.sroa.6.0.i.i.i642, %Flow8447 ] br label %cleanup26.i.i.i671, !amdgpu.uniform !42 if.end22.i.i.i734: ; preds = %if.then16.i.i.i735, %if.end14.i.i.i730 call void @llvm.amdgcn.end.cf.i64(i64 %1022) tail call void @llvm.amdgcn.wave.barrier() br label %Flow8448, !amdgpu.uniform !42 Flow8449: ; preds = %cleanup26.i.i.i671, %1000 %1027 = phi i32 [ %1026, %cleanup26.i.i.i671 ], [ %989, %1000 ] %1028 = phi i64 [ %1025, %cleanup26.i.i.i671 ], [ %990, %1000 ] %1029 = phi i32 [ %1024, %cleanup26.i.i.i671 ], [ %991, %1000 ] %1030 = phi i32 [ %1024, %cleanup26.i.i.i671 ], [ %retval.sroa.8.0.i.i.i645, %1000 ] %1031 = phi i64 [ %1025, %cleanup26.i.i.i671 ], [ %retval.sroa.2.0.i.i.i644, %1000 ] %1032 = phi i32 [ %1026, %cleanup26.i.i.i671 ], [ %retval.sroa.6.0.i.i.i642, %1000 ] %1033 = phi i1 [ %cmp.i46.not.i.i.i663, %cleanup26.i.i.i671 ], [ true, %1000 ] br i1 %1033, label %for.inc.i.i.i676, label %Flow8450, !amdgpu.uniform !42 cleanup26.i.i.i671: ; preds = %Flow8448 br label %Flow8449, !amdgpu.uniform !42 for.inc.i.i.i676: ; preds = %Flow8449 %inc.i.i.i681 = add i32 %spec.store.select.i.i.i648, 1 br label %Flow8450, !amdgpu.uniform !42 Flow8450: ; preds = %for.inc.i.i.i676, %Flow8449 %1034 = phi i32 [ %inc.i.i.i681, %for.inc.i.i.i676 ], [ poison, %Flow8449 ] %1035 = phi i1 [ false, %for.inc.i.i.i676 ], [ true, %Flow8449 ] br i1 %1035, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i682, label %for.cond.i.i1.i641, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i682: ; preds = %Flow8450 %.lcssa9276 = phi i32 [ %1027, %Flow8450 ] %.lcssa9275 = phi i64 [ %1028, %Flow8450 ] %.lcssa9274 = phi i32 [ %1029, %Flow8450 ] fence acquire %1036 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i683 = shl i32 %.lcssa9276, 6 %idxprom.i19.i.i.i.i.i684 = zext i32 %mul.i.i.i.i.i.i683 to i64 %arrayidx.i20.i.i.i.i.i685 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %1036, i64 %idxprom.i19.i.i.i.i.i684 %arrayidx.i22.i.i.i.i.i686 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i685, i64 %sh_prom.i.i.i.i store i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.16 to ptr), i64 20) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.16 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i686, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i687 = tail call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.16 to ptr), i64 20) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.16 to ptr) to i64)), i64 56) %1037 = and i64 %spec.select.i.i.i.i.i.i.i687, 15 %1038 = sub i64 %spec.select.i.i.i.i.i.i.i687, %1037 %1039 = icmp ne i64 %1038, 0 br i1 %1039, label %loop-memcpy-expansion5247.preheader, label %Flow8446, !amdgpu.uniform !42 loop-memcpy-expansion5247.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i682 %1040 = add nuw nsw i64 %78, 8 %scevgep7123 = getelementptr i8, ptr %1036, i64 %1040 %1041 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i684, 6 %scevgep7124 = getelementptr i8, ptr %scevgep7123, i64 %1041 br label %loop-memcpy-expansion5247, !amdgpu.uniform !42 Flow8446: ; preds = %Flow8445, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i682 br label %loop-memcpy-residual-header5250, !amdgpu.uniform !42 loop-memcpy-expansion5247: ; preds = %loop-memcpy-expansion5247.preheader, %loop-memcpy-expansion5247 %loop-index5248 = phi i64 [ %1044, %loop-memcpy-expansion5247 ], [ 0, %loop-memcpy-expansion5247.preheader ] %1042 = getelementptr i8, ptr addrspace(4) @.str.16, i64 %loop-index5248, !amdgpu.uniform !42 %1043 = load <4 x i32>, ptr addrspace(4) %1042, align 1 %scevgep7125 = getelementptr i8, ptr %scevgep7124, i64 %loop-index5248 store <4 x i32> %1043, ptr %scevgep7125, align 1 %1044 = add i64 %loop-index5248, 16 %1045 = icmp uge i64 %1044, %1038 br i1 %1045, label %Flow8445, label %loop-memcpy-expansion5247, !amdgpu.uniform !42 Flow8444: ; preds = %Flow8442, %Flow8443 %1046 = phi i64 [ %6541, %Flow8442 ], [ %6538, %Flow8443 ] br label %post-loop-memcpy-expansion5246, !amdgpu.uniform !42 loop-memcpy-residual5249: ; preds = %loop-memcpy-residual5249.preheader, %loop-memcpy-residual5249 %residual-loop-index5251 = phi i64 [ %1048, %loop-memcpy-residual5249 ], [ 0, %loop-memcpy-residual5249.preheader ] %scevgep7122 = getelementptr i8, ptr addrspace(4) getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.16, i64 16), i64 %residual-loop-index5251, !amdgpu.uniform !42 %1047 = load i8, ptr addrspace(4) %scevgep7122, align 1 %scevgep7121 = getelementptr i8, ptr %scevgep7120, i64 %residual-loop-index5251 store i8 %1047, ptr %scevgep7121, align 1 %1048 = add i64 %residual-loop-index5251, 1 %1049 = icmp uge i64 %1048, %1037 br i1 %1049, label %Flow8442, label %loop-memcpy-residual5249, !amdgpu.uniform !42 Flow8442: ; preds = %loop-memcpy-residual5249 br label %Flow8444, !amdgpu.uniform !42 post-loop-memcpy-expansion5246: ; preds = %Flow8444 %tobool.not.i.i.i.i.i.i689 = icmp eq i32 %.lcssa9274, 0 %conv.i.i.i.i.i.i690 = zext i1 %tobool.not.i.i.i.i.i.i689 to i32 fence release %1050 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i691 = zext i32 %.lcssa9276 to i64 %arrayidx.i24.i.i.i.i.i692 = getelementptr inbounds nuw i32, ptr %1050, i64 %idxprom.i23.i.i.i.i.i691 store atomic i32 %conv.i.i.i.i.i.i690, ptr %arrayidx.i24.i.i.i.i.i692 monotonic, align 4 %1051 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i693 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1051, i64 %idxprom.i23.i.i.i.i.i691, !amdgpu.uniform !42 %1052 = load i64, ptr %arrayidx.i.i5.i.i693, align 8, !tbaa !80 br label %while.cond.i.i.i.i694, !amdgpu.uniform !42 while.cond.i.i.i.i694: ; preds = %post-loop-memcpy-expansion5246, %Flow8441 %phi.broken8644 = phi i64 [ 0, %post-loop-memcpy-expansion5246 ], [ %1069, %Flow8441 ] %lsr.iv7112 = phi i64 [ %1067, %Flow8441 ], [ -36, %post-loop-memcpy-expansion5246 ] %lsr.iv7107 = phi ptr addrspace(4) [ %1066, %Flow8441 ], [ getelementptr (i8, ptr addrspace(4) @.str.16, i64 56), %post-loop-memcpy-expansion5246 ] %port.sroa.37.0.i.i695 = phi i32 [ %1065, %Flow8441 ], [ %conv.i.i.i.i.i.i690, %post-loop-memcpy-expansion5246 ] %idx.0.i.i.i.i696 = phi i64 [ %1064, %Flow8441 ], [ 56, %post-loop-memcpy-expansion5246 ] %cmp.i.i.i.i697 = icmp ult i64 %idx.0.i.i.i.i696, sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.16 to ptr), i64 20) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.16 to ptr) to i64)) %1053 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i697) %and.i.i.i.i6.i.i698 = and i64 %1053, %1052 %tobool.not.i.i.i.i699 = icmp ne i64 %and.i.i.i.i6.i.i698, 0 %1054 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i700 = getelementptr inbounds nuw i32, ptr %1054, i64 %idxprom.i23.i.i.i.i.i691, !amdgpu.uniform !42 %1055 = load atomic i32, ptr %arrayidx.i22.i.i.i700 monotonic, align 4 %1056 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i699) %1057 = extractvalue { i1, i64 } %1056, 0 %1058 = extractvalue { i1, i64 } %1056, 1 br i1 %1057, label %cond.false.i8.i.i.i.i701, label %Flow8441 cond.false.i8.i.i.i.i701: ; preds = %while.cond.i.i.i.i694 %1059 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1055) %1060 = icmp ne i32 %1059, %port.sroa.37.0.i.i695 br i1 %1060, label %while.body.i.i21.i.i.i.i702.preheader, label %Flow8440, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i702.preheader: ; preds = %cond.false.i8.i.i.i.i701 br label %while.body.i.i21.i.i.i.i702, !amdgpu.uniform !42 Flow8440: ; preds = %Flow8439, %cond.false.i8.i.i.i.i701 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i705, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i702: ; preds = %while.body.i.i21.i.i.i.i702.preheader, %while.body.i.i21.i.i.i.i702 tail call void @llvm.amdgcn.s.sleep(i32 2) %1061 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i703 = getelementptr inbounds nuw i32, ptr %1061, i64 %idxprom.i23.i.i.i.i.i691, !amdgpu.uniform !42 %1062 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i703 monotonic, align 4 %1063 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1062) %cmp.i.not.i.i23.i.i.i.i704 = icmp eq i32 %1063, %port.sroa.37.0.i.i695 br i1 %cmp.i.not.i.i23.i.i.i.i704, label %Flow8439, label %while.body.i.i21.i.i.i.i702, !amdgpu.uniform !42 Flow8439: ; preds = %while.body.i.i21.i.i.i.i702 br label %Flow8440, !amdgpu.uniform !42 Flow8441: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i706, %while.cond.i.i.i.i694 %1064 = phi i64 [ %add.i.i.i.i709, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i706 ], [ poison, %while.cond.i.i.i.i694 ] %1065 = phi i32 [ %conv.i.i26.i.i.i.i707, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i706 ], [ poison, %while.cond.i.i.i.i694 ] %1066 = phi ptr addrspace(4) [ %scevgep7108, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i706 ], [ poison, %while.cond.i.i.i.i694 ] %1067 = phi i64 [ %lsr.iv.next7113, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i706 ], [ poison, %while.cond.i.i.i.i694 ] %1068 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i706 ], [ true, %while.cond.i.i.i.i694 ] call void @llvm.amdgcn.end.cf.i64(i64 %1058) %1069 = call i64 @llvm.amdgcn.if.break.i64(i1 %1068, i64 %phi.broken8644) %1070 = call i1 @llvm.amdgcn.loop.i64(i64 %1069) br i1 %1070, label %cond.false.i.i.i716, label %while.cond.i.i.i.i694 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i705: ; preds = %Flow8440 fence acquire br i1 %cmp.i.i.i.i697, label %if.then.i.i.i.i.i.i.i710, label %Flow8438, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i710: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i705 %sub.i.i.i.i.i.i.i712 = sub nuw i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.16 to ptr), i64 20) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.16 to ptr) to i64)), %idx.0.i.i.i.i696 %spec.select.i.i.i36.i.i.i.i713 = tail call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i712, i64 64) %1071 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %1072 = and i64 %spec.select.i.i.i36.i.i.i.i713, 15 %1073 = sub i64 %spec.select.i.i.i36.i.i.i.i713, %1072 %1074 = icmp ne i64 %1073, 0 br i1 %1074, label %loop-memcpy-expansion5253.preheader, label %Flow8437, !amdgpu.uniform !42 loop-memcpy-expansion5253.preheader: ; preds = %if.then.i.i.i.i.i.i.i710 %arrayidx.i20.i35.i.i.i.i714 = getelementptr %"struct.rpc::Buffer", ptr %1071, i64 %idxprom.i19.i.i.i.i.i684 %arrayidx.i22.i38.i.i.i.i715 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i714, i64 %sh_prom.i.i.i.i br label %loop-memcpy-expansion5253, !amdgpu.uniform !42 Flow8437: ; preds = %Flow8436, %if.then.i.i.i.i.i.i.i710 br label %loop-memcpy-residual-header5256, !amdgpu.uniform !42 loop-memcpy-expansion5253: ; preds = %loop-memcpy-expansion5253.preheader, %loop-memcpy-expansion5253 %loop-index5254 = phi i64 [ %1077, %loop-memcpy-expansion5253 ], [ 0, %loop-memcpy-expansion5253.preheader ] %scevgep7109 = getelementptr i8, ptr addrspace(4) %lsr.iv7107, i64 %loop-index5254, !amdgpu.uniform !42 %1075 = load <4 x i32>, ptr addrspace(4) %scevgep7109, align 1 %1076 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i715, i64 %loop-index5254 store <4 x i32> %1075, ptr %1076, align 1 %1077 = add i64 %loop-index5254, 16 %1078 = icmp uge i64 %1077, %1073 br i1 %1078, label %Flow8436, label %loop-memcpy-expansion5253, !amdgpu.uniform !42 Flow8435: ; preds = %Flow8434, %loop-memcpy-residual-header5256 br label %Flow8438, !amdgpu.uniform !42 loop-memcpy-residual5255: ; preds = %loop-memcpy-residual5255.preheader, %loop-memcpy-residual5255 %residual-loop-index5257 = phi i64 [ %1080, %loop-memcpy-residual5255 ], [ 0, %loop-memcpy-residual5255.preheader ] %scevgep7118 = getelementptr i8, ptr addrspace(4) %scevgep7117, i64 %residual-loop-index5257, !amdgpu.uniform !42 %1079 = load i8, ptr addrspace(4) %scevgep7118, align 1 %scevgep7116 = getelementptr i8, ptr %scevgep7115, i64 %residual-loop-index5257 store i8 %1079, ptr %scevgep7116, align 1 %1080 = add i64 %residual-loop-index5257, 1 %1081 = icmp uge i64 %1080, %1072 br i1 %1081, label %Flow8434, label %loop-memcpy-residual5255, !amdgpu.uniform !42 Flow8434: ; preds = %loop-memcpy-residual5255 br label %Flow8435, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i706: ; preds = %Flow8438 %conv.i.i26.i.i.i.i707 = xor i32 %port.sroa.37.0.i.i695, 1 fence release %1082 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i708 = getelementptr inbounds nuw i32, ptr %1082, i64 %idxprom.i23.i.i.i.i.i691 store atomic i32 %conv.i.i26.i.i.i.i707, ptr %arrayidx.i24.i29.i.i.i.i708 monotonic, align 4 %add.i.i.i.i709 = add i64 %idx.0.i.i.i.i696, 64 %scevgep7108 = getelementptr i8, ptr addrspace(4) %lsr.iv7107, i64 64 %lsr.iv.next7113 = add i64 %lsr.iv7112, -64 br label %Flow8441, !amdgpu.uniform !42 cond.false.i.i.i716: ; preds = %Flow8441 %.lcssa9270 = phi i64 [ %1069, %Flow8441 ] %port.sroa.37.0.i.i695.lcssa = phi i32 [ %port.sroa.37.0.i.i695, %Flow8441 ] %.lcssa9269 = phi i32 [ %1055, %Flow8441 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9270) %1083 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa9269) %1084 = icmp ne i32 %1083, %port.sroa.37.0.i.i695.lcssa %1085 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1084) %1086 = extractvalue { i1, i64 } %1085, 0 %1087 = extractvalue { i1, i64 } %1085, 1 br i1 %1086, label %while.body.i.i.i.i717.preheader, label %Flow8433 while.body.i.i.i.i717.preheader: ; preds = %cond.false.i.i.i716 br label %while.body.i.i.i.i717, !amdgpu.uniform !42 Flow8433: ; preds = %Flow8432, %cond.false.i.i.i716 call void @llvm.amdgcn.end.cf.i64(i64 %1087) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit738, !amdgpu.uniform !42 while.body.i.i.i.i717: ; preds = %while.body.i.i.i.i717.preheader, %while.body.i.i.i.i717 %phi.broken8645 = phi i64 [ 0, %while.body.i.i.i.i717.preheader ], [ %1091, %while.body.i.i.i.i717 ] tail call void @llvm.amdgcn.s.sleep(i32 2) %1088 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i718 = getelementptr inbounds nuw i32, ptr %1088, i64 %idxprom.i23.i.i.i.i.i691, !amdgpu.uniform !42 %1089 = load atomic i32, ptr %arrayidx.i.i.i8.i.i718 monotonic, align 4 %1090 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1089) %cmp.i.not.i.i.i.i719 = icmp eq i32 %1090, %port.sroa.37.0.i.i695.lcssa %1091 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i719, i64 %phi.broken8645) %1092 = call i1 @llvm.amdgcn.loop.i64(i64 %1091) br i1 %1092, label %Flow8432, label %while.body.i.i.i.i717 Flow8432: ; preds = %while.body.i.i.i.i717 %.lcssa9268 = phi i64 [ %1091, %while.body.i.i.i.i717 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9268) br label %Flow8433, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit738: ; preds = %Flow8433 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %1093 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa9275, i1 true) %iszero.i.i.i.i.i13.i.i721 = icmp ne i64 %.lcssa9275, 0 %cmp2.i.i.i.i14.i.i722 = icmp eq i64 %1093, %sh_prom.i.i.i.i %cmp.i.i.i.i15.i.i723 = select i1 %iszero.i.i.i.i.i13.i.i721, i1 %cmp2.i.i.i.i14.i.i722, i1 false %1094 = and i32 %.lcssa9276, 31 %conv4.i.i.i19.i.i727 = zext i1 %cmp.i.i.i.i15.i.i723 to i32 %shl.i.i.i20.i.i728 = shl nuw i32 %conv4.i.i.i19.i.i727, %1094 %xor.i.i.i21.i.i729 = xor i32 %shl.i.i.i20.i.i728, -1 %1095 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5563, !amdgpu.uniform !42 1096: ; preds = %ComputeEnd5564 %div8.i.i.i16.i.i724 = lshr i32 %.lcssa9276, 5 %idxprom.i.i.i17.i.i725 = zext nneg i32 %div8.i.i.i16.i.i724 to i64 %1097 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i725 %sunkaddr7385 = getelementptr inbounds i8, ptr addrspace(1) %1097, i64 40 %1098 = atomicrmw and ptr addrspace(1) %sunkaddr7385, i32 %.lcssa9267 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1099, !amdgpu.uniform !42 1099: ; preds = %1096, %ComputeEnd5564 call void @llvm.amdgcn.end.cf.i64(i64 %7120) tail call void @llvm.amdgcn.wave.barrier() %T.0201.pre = load ptr, ptr addrspace(1) @_ZN22__llvm_libc_22_0_0_git7testing4Test5StartE, align 8, !tbaa !63 br label %Flow8609, !amdgpu.uniform !42 if.end16: ; preds = %Flow8609 %cmp17.not202 = icmp ne ptr %7, null %1100 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp17.not202) %1101 = extractvalue { i1, i64 } %1100, 0 %1102 = extractvalue { i1, i64 } %1100, 1 br i1 %1101, label %for.body.lr.ph, label %Flow8431 for.body.lr.ph: ; preds = %if.end16 %1103 = call ptr @llvm.amdgcn.addrspacecast.nonnull.p0.p5(ptr addrspace(5) %Ctx) %cond3 = select i1 %loadedv, ptr addrspace(4) @.str.10.28, ptr addrspace(4) @.str.9.27 %1104 = addrspacecast ptr addrspace(4) %cond6 to ptr %1105 = addrspacecast ptr addrspace(4) %cond3 to ptr %1106 = addrspacecast ptr addrspace(4) %cond to ptr %sub.ptr.rhs.cast.i.i.i754 = ptrtoint ptr %1106 to i64 %sub.ptr.rhs.cast.i.i.i967 = ptrtoint ptr %1104 to i64 %1107 = load i64, ptr addrspace(4) @__llvm_libc_clock_freq, align 8 %tobool.not.i1271 = icmp ne i64 %1107, 0 %cmp.i = icmp sle i64 %1107, 1000000 %div.i = udiv i64 %1107, 1000000 %sub.ptr.rhs.cast.i.i.i1289 = ptrtoint ptr %1105 to i64 %spec.select.i.i.i.i.i.i.i909 = call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.17.34 to ptr), i64 13) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.17.34 to ptr) to i64)), i64 56) %spec.select.i.i.i.i.i.i.i1970 = call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.19.36 to ptr), i64 13) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.19.36 to ptr) to i64)), i64 56) %spec.select.i.i.i.i.i.i.i2290 = call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.20.37 to ptr), i64 2) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.20.37 to ptr) to i64)), i64 56) %spec.select.i.i.i.i.i.i.i2936 = call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.23 to ptr), i64 5) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.23 to ptr) to i64)), i64 56) %spec.select.i.i.i.i.i.i.i3211 = call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.24.40 to ptr), i64 5) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.24.40 to ptr) to i64)), i64 56) %spec.select.i.i.i.i.i.i.i2661 = call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.22.39 to ptr), i64 5) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.22.39 to ptr) to i64)), i64 56) %spec.select.i.i.i.i.i.i.i2396 = call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.21.38 to ptr), i64 25) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.21.38 to ptr) to i64)), i64 56) %spec.select.i.i.i.i.i.i.i1444 = call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.18.35 to ptr), i64 13) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.18.35 to ptr) to i64)), i64 56) %1108 = and i64 %spec.select.i.i.i.i.i.i.i909, 15 %1109 = sub i64 %spec.select.i.i.i.i.i.i.i909, %1108 %1110 = icmp ne i64 %1109, 0 %1111 = icmp eq i64 %1108, 0 %1112 = and i64 %spec.select.i.i.i.i.i.i.i1970, 15 %1113 = sub i64 %spec.select.i.i.i.i.i.i.i1970, %1112 %1114 = icmp ne i64 %1113, 0 %1115 = icmp eq i64 %1112, 0 %1116 = and i64 %spec.select.i.i.i.i.i.i.i2290, 15 %1117 = sub i64 %spec.select.i.i.i.i.i.i.i2290, %1116 %1118 = icmp ne i64 %1117, 0 %1119 = icmp eq i64 %1116, 0 %1120 = and i64 %spec.select.i.i.i.i.i.i.i2936, 15 %1121 = sub i64 %spec.select.i.i.i.i.i.i.i2936, %1120 %1122 = icmp ne i64 %1121, 0 %1123 = icmp eq i64 %1120, 0 %1124 = and i64 %spec.select.i.i.i.i.i.i.i3211, 15 %1125 = sub i64 %spec.select.i.i.i.i.i.i.i3211, %1124 %1126 = icmp ne i64 %1125, 0 %1127 = icmp eq i64 %1124, 0 %1128 = and i64 %spec.select.i.i.i.i.i.i.i2661, 15 %1129 = sub i64 %spec.select.i.i.i.i.i.i.i2661, %1128 %1130 = icmp ne i64 %1129, 0 %1131 = icmp eq i64 %1128, 0 %1132 = and i64 %spec.select.i.i.i.i.i.i.i2396, 15 %1133 = sub i64 %spec.select.i.i.i.i.i.i.i2396, %1132 %1134 = icmp ne i64 %1133, 0 %1135 = icmp eq i64 %1132, 0 %1136 = and i64 %spec.select.i.i.i.i.i.i.i1444, 15 %1137 = sub i64 %spec.select.i.i.i.i.i.i.i1444, %1136 %1138 = icmp ne i64 %1137, 0 %1139 = icmp eq i64 %1136, 0 %scevgep6586 = getelementptr i8, ptr addrspace(4) %cond, i64 -1 %scevgep6600 = getelementptr i8, ptr addrspace(4) %cond, i64 56 %1140 = sub i64 -56, %sub.ptr.rhs.cast.i.i.i754 %scevgep6634 = getelementptr i8, ptr addrspace(4) %cond6, i64 -1 %scevgep6648 = getelementptr i8, ptr addrspace(4) %cond6, i64 56 %1141 = sub i64 -56, %sub.ptr.rhs.cast.i.i.i967 %scevgep6819 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i2988, i32 21 %scevgep6873 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i2988, i32 21 %scevgep6927 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i2988, i32 21 %scevgep7002 = getelementptr i8, ptr addrspace(4) %cond3, i64 -1 %scevgep7016 = getelementptr i8, ptr addrspace(4) %cond3, i64 56 %1142 = sub i64 -56, %sub.ptr.rhs.cast.i.i.i1289 br label %for.body, !amdgpu.uniform !42 Flow8430: ; preds = %cleanup %.lcssa9266 = phi i64 [ %4454, %cleanup ] %.lcssa9265 = phi i32 [ %1337, %cleanup ] %.lcssa9264 = phi i32 [ %1338, %cleanup ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9266) br label %Flow8431, !amdgpu.uniform !42 for.cond.cleanup: ; preds = %Flow8431 %cmp89 = icmp sle i32 %1148, 0 %1143 = call i32 @llvm.amdgcn.mbcnt.lo(i32 -1, i32 0) %1144 = call noundef i32 @llvm.amdgcn.mbcnt.hi(i32 -1, i32 %1143) %sh_prom.i.i.i.i3270 = zext i32 %1144 to i64 %1145 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp89) %1146 = extractvalue { i1, i64 } %1145, 0 %1147 = extractvalue { i1, i64 } %1145, 1 br i1 %1146, label %for.cond.i.i1.i4430.preheader, label %Flow7916 for.cond.i.i1.i4430.preheader: ; preds = %for.cond.cleanup br label %for.cond.i.i1.i4430, !amdgpu.uniform !42 for.cond.i.i1.i3271.preheader: ; preds = %Flow7916 br label %for.cond.i.i1.i3271, !amdgpu.uniform !42 Flow8431: ; preds = %Flow8430, %if.end16 %1148 = phi i32 [ %.lcssa9265, %Flow8430 ], [ %1, %if.end16 ] %1149 = phi i32 [ %.lcssa9264, %Flow8430 ], [ 0, %if.end16 ] call void @llvm.amdgcn.end.cf.i64(i64 %1102) br label %for.cond.cleanup, !amdgpu.uniform !42 for.body: ; preds = %for.body.lr.ph, %cleanup %phi.broken8766 = phi i64 [ 0, %for.body.lr.ph ], [ %4454, %cleanup ] %1150 = phi i32 [ %1404, %cleanup ], [ poison, %for.body.lr.ph ] %1151 = phi i64 [ %1403, %cleanup ], [ poison, %for.body.lr.ph ] %1152 = phi i32 [ %1402, %cleanup ], [ poison, %for.body.lr.ph ] %1153 = phi i32 [ %1401, %cleanup ], [ poison, %for.body.lr.ph ] %1154 = phi i64 [ %1400, %cleanup ], [ poison, %for.body.lr.ph ] %1155 = phi i32 [ %1399, %cleanup ], [ poison, %for.body.lr.ph ] %1156 = phi i32 [ %1398, %cleanup ], [ poison, %for.body.lr.ph ] %1157 = phi i64 [ %1397, %cleanup ], [ poison, %for.body.lr.ph ] %1158 = phi i32 [ %1396, %cleanup ], [ poison, %for.body.lr.ph ] %1159 = phi i32 [ %1395, %cleanup ], [ poison, %for.body.lr.ph ] %1160 = phi i64 [ %1394, %cleanup ], [ poison, %for.body.lr.ph ] %1161 = phi i32 [ %1393, %cleanup ], [ poison, %for.body.lr.ph ] %1162 = phi i32 [ %1392, %cleanup ], [ poison, %for.body.lr.ph ] %1163 = phi i64 [ %1391, %cleanup ], [ poison, %for.body.lr.ph ] %1164 = phi i32 [ %1390, %cleanup ], [ poison, %for.body.lr.ph ] %1165 = phi i32 [ %1389, %cleanup ], [ poison, %for.body.lr.ph ] %1166 = phi i64 [ %1388, %cleanup ], [ poison, %for.body.lr.ph ] %1167 = phi i32 [ %1387, %cleanup ], [ poison, %for.body.lr.ph ] %1168 = phi i32 [ %1386, %cleanup ], [ poison, %for.body.lr.ph ] %1169 = phi i64 [ %1385, %cleanup ], [ poison, %for.body.lr.ph ] %1170 = phi i32 [ %1384, %cleanup ], [ poison, %for.body.lr.ph ] %1171 = phi i32 [ %1383, %cleanup ], [ poison, %for.body.lr.ph ] %1172 = phi i64 [ %1382, %cleanup ], [ poison, %for.body.lr.ph ] %1173 = phi i32 [ %1381, %cleanup ], [ poison, %for.body.lr.ph ] %1174 = phi i32 [ %1380, %cleanup ], [ poison, %for.body.lr.ph ] %1175 = phi i64 [ %1379, %cleanup ], [ poison, %for.body.lr.ph ] %1176 = phi i32 [ %1378, %cleanup ], [ poison, %for.body.lr.ph ] %1177 = phi i32 [ %1377, %cleanup ], [ poison, %for.body.lr.ph ] %1178 = phi i64 [ %1376, %cleanup ], [ poison, %for.body.lr.ph ] %1179 = phi i32 [ %1375, %cleanup ], [ poison, %for.body.lr.ph ] %1180 = phi i32 [ %1374, %cleanup ], [ poison, %for.body.lr.ph ] %1181 = phi i64 [ %1373, %cleanup ], [ poison, %for.body.lr.ph ] %1182 = phi i32 [ %1372, %cleanup ], [ poison, %for.body.lr.ph ] %1183 = phi i32 [ %1371, %cleanup ], [ poison, %for.body.lr.ph ] %1184 = phi i64 [ %1370, %cleanup ], [ poison, %for.body.lr.ph ] %1185 = phi i32 [ %1369, %cleanup ], [ poison, %for.body.lr.ph ] %1186 = phi i32 [ %1368, %cleanup ], [ poison, %for.body.lr.ph ] %1187 = phi i64 [ %1367, %cleanup ], [ poison, %for.body.lr.ph ] %1188 = phi i32 [ %1366, %cleanup ], [ poison, %for.body.lr.ph ] %1189 = phi i32 [ %1365, %cleanup ], [ poison, %for.body.lr.ph ] %1190 = phi i64 [ %1364, %cleanup ], [ poison, %for.body.lr.ph ] %1191 = phi i32 [ %1363, %cleanup ], [ poison, %for.body.lr.ph ] %1192 = phi i32 [ %1362, %cleanup ], [ poison, %for.body.lr.ph ] %1193 = phi i64 [ %1361, %cleanup ], [ poison, %for.body.lr.ph ] %1194 = phi i32 [ %1360, %cleanup ], [ poison, %for.body.lr.ph ] %1195 = phi i32 [ %1359, %cleanup ], [ poison, %for.body.lr.ph ] %1196 = phi i64 [ %1358, %cleanup ], [ poison, %for.body.lr.ph ] %1197 = phi i32 [ %1357, %cleanup ], [ poison, %for.body.lr.ph ] %1198 = phi i32 [ %1356, %cleanup ], [ poison, %for.body.lr.ph ] %1199 = phi i64 [ %1355, %cleanup ], [ poison, %for.body.lr.ph ] %1200 = phi i32 [ %1354, %cleanup ], [ poison, %for.body.lr.ph ] %1201 = phi i32 [ %1353, %cleanup ], [ poison, %for.body.lr.ph ] %1202 = phi i64 [ %1352, %cleanup ], [ poison, %for.body.lr.ph ] %1203 = phi i32 [ %1351, %cleanup ], [ poison, %for.body.lr.ph ] %1204 = phi i32 [ %1350, %cleanup ], [ poison, %for.body.lr.ph ] %1205 = phi i64 [ %1349, %cleanup ], [ poison, %for.body.lr.ph ] %1206 = phi i32 [ %1348, %cleanup ], [ poison, %for.body.lr.ph ] %1207 = phi i32 [ %1347, %cleanup ], [ poison, %for.body.lr.ph ] %1208 = phi i64 [ %1346, %cleanup ], [ poison, %for.body.lr.ph ] %1209 = phi i32 [ %1345, %cleanup ], [ poison, %for.body.lr.ph ] %1210 = phi i32 [ %1344, %cleanup ], [ poison, %for.body.lr.ph ] %1211 = phi i64 [ %1343, %cleanup ], [ poison, %for.body.lr.ph ] %1212 = phi i32 [ %1342, %cleanup ], [ poison, %for.body.lr.ph ] %1213 = phi i32 [ %1341, %cleanup ], [ poison, %for.body.lr.ph ] %1214 = phi i64 [ %1340, %cleanup ], [ poison, %for.body.lr.ph ] %1215 = phi i32 [ %1339, %cleanup ], [ poison, %for.body.lr.ph ] %T.0207 = phi ptr [ %T.0, %cleanup ], [ %7, %for.body.lr.ph ] %TestCount.0206 = phi i32 [ %1337, %cleanup ], [ %1, %for.body.lr.ph ] %FailCount.0205 = phi i32 [ %1338, %cleanup ], [ 0, %for.body.lr.ph ] %vtable = load ptr addrspace(1), ptr %T.0207, align 8, !tbaa !158 %vfn = getelementptr inbounds nuw i8, ptr addrspace(1) %vtable, i64 40 %1216 = load ptr addrspace(1), ptr addrspace(1) %vfn, align 8 %call18 = call noundef addrspace(1) ptr %1216(ptr noundef nonnull align 8 dereferenceable(24) %T.0207) #33 %1217 = load ptr, ptr %Options, align 8, !tbaa !160 %tobool19.not.not = icmp ne ptr %1217, null %1218 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool19.not.not) %1219 = extractvalue { i1, i64 } %1218, 0 %1220 = extractvalue { i1, i64 } %1218, 1 br i1 %1219, label %land.rhs, label %Flow8427 Flow8428: ; preds = %if.then35, %land.end %1221 = phi i32 [ %dec, %if.then35 ], [ poison, %land.end ] %1222 = phi i1 [ false, %if.then35 ], [ true, %land.end ] call void @llvm.amdgcn.end.cf.i64(i64 %1336) br label %Flow8427, !amdgpu.uniform !42 for.cond.i.i.i748.preheader: ; preds = %Flow8427 br label %for.cond.i.i.i748, !amdgpu.uniform !42 land.rhs: ; preds = %for.body %1223 = load i8, ptr %call18, align 1, !tbaa !57 %tobool.not3.i.i = icmp ne i8 %1223, 0 %1224 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not3.i.i) %1225 = extractvalue { i1, i64 } %1224, 0 %1226 = extractvalue { i1, i64 } %1224, 1 br i1 %1225, label %for.inc.i.i.preheader, label %Flow7937 for.inc.i.i.preheader: ; preds = %land.rhs %scevgep6568 = getelementptr i8, ptr %call18, i64 1 br label %for.inc.i.i, !amdgpu.uniform !42 Flow7937: ; preds = %Flow7936, %land.rhs %1227 = phi i64 [ %inc.i.i.lcssa, %Flow7936 ], [ 0, %land.rhs ] call void @llvm.amdgcn.end.cf.i64(i64 %1226) br label %_ZN22__llvm_libc_22_0_0_git8internal13string_lengthIcEEmPKT_.exit.i, !amdgpu.uniform !42 for.inc.i.i: ; preds = %for.inc.i.i.preheader, %for.inc.i.i %phi.broken8646 = phi i64 [ 0, %for.inc.i.i.preheader ], [ %1229, %for.inc.i.i ] %length.05.i.i = phi i64 [ %inc.i.i, %for.inc.i.i ], [ 0, %for.inc.i.i.preheader ] %scevgep6569 = getelementptr i8, ptr %scevgep6568, i64 %length.05.i.i %inc.i.i = add i64 %length.05.i.i, 1 %1228 = load i8, ptr %scevgep6569, align 1, !tbaa !57 %tobool.not.i.i = icmp eq i8 %1228, 0 %1229 = call i64 @llvm.amdgcn.if.break.i64(i1 %tobool.not.i.i, i64 %phi.broken8646) %1230 = call i1 @llvm.amdgcn.loop.i64(i64 %1229) br i1 %1230, label %Flow7936, label %for.inc.i.i Flow7936: ; preds = %for.inc.i.i %inc.i.i.lcssa = phi i64 [ %inc.i.i, %for.inc.i.i ] %.lcssa8968 = phi i64 [ %1229, %for.inc.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8968) br label %Flow7937, !amdgpu.uniform !42 Flow8427: ; preds = %Flow8428, %for.body %1231 = phi i32 [ %1221, %Flow8428 ], [ poison, %for.body ] %1232 = phi i1 [ %1222, %Flow8428 ], [ true, %for.body ] call void @llvm.amdgcn.end.cf.i64(i64 %1220) %1233 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1232) %1234 = extractvalue { i1, i64 } %1233, 0 %1235 = extractvalue { i1, i64 } %1233, 1 br i1 %1234, label %for.cond.i.i.i748.preheader, label %Flow8429 _ZN22__llvm_libc_22_0_0_git8internal13string_lengthIcEEmPKT_.exit.i: ; preds = %Flow7937 %cmp.i.not.i.i = icmp eq i64 %1227, 0 %cmp.i.not.i.i.inv = xor i1 %cmp.i.not.i.i, true %1236 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.not.i.i.inv) %1237 = extractvalue { i1, i64 } %1236, 0 %1238 = extractvalue { i1, i64 } %1236, 1 br i1 %1237, label %if.then.i.i.i, label %Flow7935 if.then.i.i.i: ; preds = %_ZN22__llvm_libc_22_0_0_git8internal13string_lengthIcEEmPKT_.exit.i %1239 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %1227, i64 1) %ov7387 = extractvalue { i64, i1 } %1239, 1 %ov7387.inv = xor i1 %ov7387, true %1240 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %ov7387.inv) %1241 = extractvalue { i1, i64 } %1240, 0 %1242 = extractvalue { i1, i64 } %1240, 1 br i1 %1241, label %if.end.i.i.i.i, label %Flow7934 if.end.i.i.i.i: ; preds = %if.then.i.i.i %math7386 = extractvalue { i64, i1 } %1239, 0 %cmp2.i.i.i.i = icmp ult i64 %math7386, 1676976733973595601 %1243 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp2.i.i.i.i) %1244 = extractvalue { i1, i64 } %1243, 0 %1245 = extractvalue { i1, i64 } %1243, 1 br i1 %1244, label %if.then3.i.i.i.i, label %if.end4.i.i.i.i if.then3.i.i.i.i: ; preds = %if.end.i.i.i.i %mul.i.i.i.i = mul nuw i64 %math7386, 11 %div18.i.i.i.i = lshr i64 %mul.i.i.i.i, 3 br label %if.end4.i.i.i.i, !amdgpu.uniform !42 Flow7934: ; preds = %if.end4.i.i.i.i, %if.then.i.i.i %1246 = phi ptr [ %cond.i.i, %if.end4.i.i.i.i ], [ addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr), %if.then.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %1242) br label %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i, !amdgpu.uniform !42 if.end4.i.i.i.i: ; preds = %if.then3.i.i.i.i, %if.end.i.i.i.i %new_capacity.addr.0.i.i.i.i = phi i64 [ %div18.i.i.i.i, %if.then3.i.i.i.i ], [ %math7386, %if.end.i.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %1245) %sub.i.i = add i64 %new_capacity.addr.0.i.i.i.i, 7 %div2.i.i = and i64 %sub.i.i, -8 %1247 = load ptr, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %add.ptr.i.i = getelementptr inbounds nuw i8, ptr %1247, i64 %div2.i.i store ptr %add.ptr.i.i, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %sub.ptr.lhs.cast.i.i = ptrtoint ptr %add.ptr.i.i to i64 %sub.ptr.sub.i.i = sub i64 %sub.ptr.lhs.cast.i.i, ptrtoint (ptr addrspacecast (ptr addrspace(1) @_ZN12_GLOBAL__N_16memoryE to ptr) to i64) %cmp.i.i = icmp ugt i64 %sub.ptr.sub.i.i, 65335 %cond.i.i = select i1 %cmp.i.i, ptr null, ptr %1247 br label %Flow7934, !amdgpu.uniform !42 Flow7935: ; preds = %Flow7933, %_ZN22__llvm_libc_22_0_0_git8internal13string_lengthIcEEmPKT_.exit.i %1248 = phi ptr [ %1246, %Flow7933 ], [ addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr), %_ZN22__llvm_libc_22_0_0_git8internal13string_lengthIcEEmPKT_.exit.i ] call void @llvm.amdgcn.end.cf.i64(i64 %1238) br label %if.end.i.i.i, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i: ; preds = %Flow7934 br label %loadstoreloop4963, !amdgpu.uniform !42 loadstoreloop4963: ; preds = %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i, %loadstoreloop4963 %phi.broken8647 = phi i64 [ 0, %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i ], [ %1253, %loadstoreloop4963 ] %1249 = phi i64 [ %1251, %loadstoreloop4963 ], [ 0, %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i ] %1250 = getelementptr i8, ptr %1246, i64 %1249 store i8 0, ptr %1250, align 1 %1251 = add i64 %1249, 1 %1252 = icmp uge i64 %1251, %1227 %1253 = call i64 @llvm.amdgcn.if.break.i64(i1 %1252, i64 %phi.broken8647) %1254 = call i1 @llvm.amdgcn.loop.i64(i64 %1253) br i1 %1254, label %Flow7933, label %loadstoreloop4963 Flow7933: ; preds = %loadstoreloop4963 %.lcssa8969 = phi i64 [ %1253, %loadstoreloop4963 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8969) br label %Flow7935, !amdgpu.uniform !42 if.end.i.i.i: ; preds = %Flow7935 %cmp.not.i6.i.i.i = icmp ne ptr %1248, addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr) %1255 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.not.i6.i.i.i) %1256 = extractvalue { i1, i64 } %1255, 0 %1257 = extractvalue { i1, i64 } %1255, 1 br i1 %1256, label %if.then.i.i.i.i, label %_ZN22__llvm_libc_22_0_0_git3cpp6stringC2EPKc.exit if.then.i.i.i.i: ; preds = %if.end.i.i.i %arrayidx.i.i.i.i = getelementptr inbounds nuw i8, ptr %1248, i64 %1227 store i8 0, ptr %arrayidx.i.i.i.i, align 1, !tbaa !57 br label %_ZN22__llvm_libc_22_0_0_git3cpp6stringC2EPKc.exit, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git3cpp6stringC2EPKc.exit: ; preds = %if.then.i.i.i.i, %if.end.i.i.i call void @llvm.amdgcn.end.cf.i64(i64 %1257) %1258 = and i64 %1227, 15 %1259 = sub i64 %1227, %1258 %1260 = icmp ne i64 %1259, 0 %1261 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1260) %1262 = extractvalue { i1, i64 } %1261, 0 %1263 = extractvalue { i1, i64 } %1261, 1 br i1 %1262, label %loop-memcpy-expansion5097.preheader, label %Flow7932 loop-memcpy-expansion5097.preheader: ; preds = %_ZN22__llvm_libc_22_0_0_git3cpp6stringC2EPKc.exit br label %loop-memcpy-expansion5097, !amdgpu.uniform !42 Flow7932: ; preds = %Flow7931, %_ZN22__llvm_libc_22_0_0_git3cpp6stringC2EPKc.exit call void @llvm.amdgcn.end.cf.i64(i64 %1263) br label %loop-memcpy-residual-header5100, !amdgpu.uniform !42 loop-memcpy-expansion5097: ; preds = %loop-memcpy-expansion5097.preheader, %loop-memcpy-expansion5097 %phi.broken8648 = phi i64 [ 0, %loop-memcpy-expansion5097.preheader ], [ %1269, %loop-memcpy-expansion5097 ] %loop-index5098 = phi i64 [ %1267, %loop-memcpy-expansion5097 ], [ 0, %loop-memcpy-expansion5097.preheader ] %1264 = getelementptr i8, ptr %call18, i64 %loop-index5098 %1265 = load <4 x i32>, ptr %1264, align 1 %1266 = getelementptr i8, ptr %1248, i64 %loop-index5098 store <4 x i32> %1265, ptr %1266, align 1 %1267 = add i64 %loop-index5098, 16 %1268 = icmp uge i64 %1267, %1259 %1269 = call i64 @llvm.amdgcn.if.break.i64(i1 %1268, i64 %phi.broken8648) %1270 = call i1 @llvm.amdgcn.loop.i64(i64 %1269) br i1 %1270, label %Flow7931, label %loop-memcpy-expansion5097 Flow7930: ; preds = %Flow7929, %loop-memcpy-residual-header5100 call void @llvm.amdgcn.end.cf.i64(i64 %6359) br label %post-loop-memcpy-expansion5096, !amdgpu.uniform !42 loop-memcpy-residual5099: ; preds = %loop-memcpy-residual5099.preheader, %loop-memcpy-residual5099 %phi.broken8649 = phi i64 [ 0, %loop-memcpy-residual5099.preheader ], [ %1274, %loop-memcpy-residual5099 ] %residual-loop-index5101 = phi i64 [ %1272, %loop-memcpy-residual5099 ], [ 0, %loop-memcpy-residual5099.preheader ] %scevgep6573 = getelementptr i8, ptr %scevgep6572, i64 %residual-loop-index5101 %1271 = load i8, ptr %scevgep6573, align 1 %scevgep6571 = getelementptr i8, ptr %scevgep6570, i64 %residual-loop-index5101 store i8 %1271, ptr %scevgep6571, align 1 %1272 = add i64 %residual-loop-index5101, 1 %1273 = icmp uge i64 %1272, %1258 %1274 = call i64 @llvm.amdgcn.if.break.i64(i1 %1273, i64 %phi.broken8649) %1275 = call i1 @llvm.amdgcn.loop.i64(i64 %1274) br i1 %1275, label %Flow7929, label %loop-memcpy-residual5099 Flow7929: ; preds = %loop-memcpy-residual5099 %.lcssa8971 = phi i64 [ %1274, %loop-memcpy-residual5099 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8971) br label %Flow7930, !amdgpu.uniform !42 post-loop-memcpy-expansion5096: ; preds = %Flow7930 %1276 = load ptr, ptr %Options, align 8, !tbaa !160 %1277 = load i8, ptr %1276, align 1, !tbaa !57 %tobool.not3.i.i158 = icmp ne i8 %1277, 0 %1278 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not3.i.i158) %1279 = extractvalue { i1, i64 } %1278, 0 %1280 = extractvalue { i1, i64 } %1278, 1 br i1 %1279, label %for.inc.i.i159.preheader, label %Flow7928 for.inc.i.i159.preheader: ; preds = %post-loop-memcpy-expansion5096 %scevgep6574 = getelementptr i8, ptr %1276, i64 1 br label %for.inc.i.i159, !amdgpu.uniform !42 Flow7928: ; preds = %Flow7927, %post-loop-memcpy-expansion5096 %1281 = phi i64 [ %inc.i.i163.lcssa, %Flow7927 ], [ 0, %post-loop-memcpy-expansion5096 ] call void @llvm.amdgcn.end.cf.i64(i64 %1280) br label %_ZN22__llvm_libc_22_0_0_git8internal13string_lengthIcEEmPKT_.exit.i165, !amdgpu.uniform !42 for.inc.i.i159: ; preds = %for.inc.i.i159.preheader, %for.inc.i.i159 %phi.broken8650 = phi i64 [ 0, %for.inc.i.i159.preheader ], [ %1283, %for.inc.i.i159 ] %length.05.i.i160 = phi i64 [ %inc.i.i163, %for.inc.i.i159 ], [ 0, %for.inc.i.i159.preheader ] %scevgep6575 = getelementptr i8, ptr %scevgep6574, i64 %length.05.i.i160 %inc.i.i163 = add i64 %length.05.i.i160, 1 %1282 = load i8, ptr %scevgep6575, align 1, !tbaa !57 %tobool.not.i.i164 = icmp eq i8 %1282, 0 %1283 = call i64 @llvm.amdgcn.if.break.i64(i1 %tobool.not.i.i164, i64 %phi.broken8650) %1284 = call i1 @llvm.amdgcn.loop.i64(i64 %1283) br i1 %1284, label %Flow7927, label %for.inc.i.i159 Flow7927: ; preds = %for.inc.i.i159 %inc.i.i163.lcssa = phi i64 [ %inc.i.i163, %for.inc.i.i159 ] %.lcssa8972 = phi i64 [ %1283, %for.inc.i.i159 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8972) br label %Flow7928, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git8internal13string_lengthIcEEmPKT_.exit.i165: ; preds = %Flow7928 %cmp.i.not.i.i169 = icmp ne i64 %1281, 0 %1285 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.not.i.i169) %1286 = extractvalue { i1, i64 } %1285, 0 %1287 = extractvalue { i1, i64 } %1285, 1 br i1 %1286, label %if.then.i.i.i170, label %Flow7926 if.then.i.i.i170: ; preds = %_ZN22__llvm_libc_22_0_0_git8internal13string_lengthIcEEmPKT_.exit.i165 %1288 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %1281, i64 1) %ov7389 = extractvalue { i64, i1 } %1288, 1 %ov7389.inv = xor i1 %ov7389, true %1289 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %ov7389.inv) %1290 = extractvalue { i1, i64 } %1289, 0 %1291 = extractvalue { i1, i64 } %1289, 1 br i1 %1290, label %if.end.i.i.i.i173, label %Flow7925 if.end.i.i.i.i173: ; preds = %if.then.i.i.i170 %math7388 = extractvalue { i64, i1 } %1288, 0 %cmp2.i.i.i.i174 = icmp ult i64 %math7388, 1676976733973595601 %1292 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp2.i.i.i.i174) %1293 = extractvalue { i1, i64 } %1292, 0 %1294 = extractvalue { i1, i64 } %1292, 1 br i1 %1293, label %if.then3.i.i.i.i189, label %if.end4.i.i.i.i175 if.then3.i.i.i.i189: ; preds = %if.end.i.i.i.i173 %mul.i.i.i.i190 = mul nuw i64 %math7388, 11 %div18.i.i.i.i191 = lshr i64 %mul.i.i.i.i190, 3 br label %if.end4.i.i.i.i175, !amdgpu.uniform !42 Flow7925: ; preds = %if.end4.i.i.i.i175, %if.then.i.i.i170 %1295 = phi ptr [ %cond.i.i747, %if.end4.i.i.i.i175 ], [ addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr), %if.then.i.i.i170 ] call void @llvm.amdgcn.end.cf.i64(i64 %1291) br label %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i180, !amdgpu.uniform !42 if.end4.i.i.i.i175: ; preds = %if.then3.i.i.i.i189, %if.end.i.i.i.i173 %new_capacity.addr.0.i.i.i.i176 = phi i64 [ %div18.i.i.i.i191, %if.then3.i.i.i.i189 ], [ %math7388, %if.end.i.i.i.i173 ] call void @llvm.amdgcn.end.cf.i64(i64 %1294) %sub.i.i740 = add i64 %new_capacity.addr.0.i.i.i.i176, 7 %div2.i.i741 = and i64 %sub.i.i740, -8 %1296 = load ptr, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %add.ptr.i.i742 = getelementptr inbounds nuw i8, ptr %1296, i64 %div2.i.i741 store ptr %add.ptr.i.i742, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %sub.ptr.lhs.cast.i.i744 = ptrtoint ptr %add.ptr.i.i742 to i64 %sub.ptr.sub.i.i745 = sub i64 %sub.ptr.lhs.cast.i.i744, ptrtoint (ptr addrspacecast (ptr addrspace(1) @_ZN12_GLOBAL__N_16memoryE to ptr) to i64) %cmp.i.i746 = icmp ugt i64 %sub.ptr.sub.i.i745, 65335 %cond.i.i747 = select i1 %cmp.i.i746, ptr null, ptr %1296 br label %Flow7925, !amdgpu.uniform !42 Flow7926: ; preds = %Flow7924, %_ZN22__llvm_libc_22_0_0_git8internal13string_lengthIcEEmPKT_.exit.i165 %1297 = phi ptr [ %1295, %Flow7924 ], [ addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr), %_ZN22__llvm_libc_22_0_0_git8internal13string_lengthIcEEmPKT_.exit.i165 ] call void @llvm.amdgcn.end.cf.i64(i64 %1287) br label %if.end.i.i.i184, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i180: ; preds = %Flow7925 br label %loadstoreloop4961, !amdgpu.uniform !42 loadstoreloop4961: ; preds = %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i180, %loadstoreloop4961 %phi.broken8651 = phi i64 [ 0, %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i180 ], [ %1302, %loadstoreloop4961 ] %1298 = phi i64 [ %1300, %loadstoreloop4961 ], [ 0, %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i180 ] %1299 = getelementptr i8, ptr %1295, i64 %1298 store i8 0, ptr %1299, align 1 %1300 = add i64 %1298, 1 %1301 = icmp uge i64 %1300, %1281 %1302 = call i64 @llvm.amdgcn.if.break.i64(i1 %1301, i64 %phi.broken8651) %1303 = call i1 @llvm.amdgcn.loop.i64(i64 %1302) br i1 %1303, label %Flow7924, label %loadstoreloop4961 Flow7924: ; preds = %loadstoreloop4961 %.lcssa8973 = phi i64 [ %1302, %loadstoreloop4961 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8973) br label %Flow7926, !amdgpu.uniform !42 if.end.i.i.i184: ; preds = %Flow7926 %cmp.not.i6.i.i.i185 = icmp ne ptr %1297, addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr) %1304 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.not.i6.i.i.i185) %1305 = extractvalue { i1, i64 } %1304, 0 %1306 = extractvalue { i1, i64 } %1304, 1 br i1 %1305, label %if.then.i.i.i.i186, label %_ZN22__llvm_libc_22_0_0_git3cpp6stringC2EPKc.exit192 if.then.i.i.i.i186: ; preds = %if.end.i.i.i184 %arrayidx.i.i.i.i187 = getelementptr inbounds nuw i8, ptr %1297, i64 %1281 store i8 0, ptr %arrayidx.i.i.i.i187, align 1, !tbaa !57 br label %_ZN22__llvm_libc_22_0_0_git3cpp6stringC2EPKc.exit192, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git3cpp6stringC2EPKc.exit192: ; preds = %if.then.i.i.i.i186, %if.end.i.i.i184 call void @llvm.amdgcn.end.cf.i64(i64 %1306) %1307 = and i64 %1281, 15 %1308 = sub i64 %1281, %1307 %1309 = icmp ne i64 %1308, 0 %1310 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1309) %1311 = extractvalue { i1, i64 } %1310, 0 %1312 = extractvalue { i1, i64 } %1310, 1 br i1 %1311, label %loop-memcpy-expansion5091.preheader, label %Flow7923 loop-memcpy-expansion5091.preheader: ; preds = %_ZN22__llvm_libc_22_0_0_git3cpp6stringC2EPKc.exit192 br label %loop-memcpy-expansion5091, !amdgpu.uniform !42 Flow7923: ; preds = %Flow7922, %_ZN22__llvm_libc_22_0_0_git3cpp6stringC2EPKc.exit192 call void @llvm.amdgcn.end.cf.i64(i64 %1312) br label %loop-memcpy-residual-header5094, !amdgpu.uniform !42 loop-memcpy-expansion5091: ; preds = %loop-memcpy-expansion5091.preheader, %loop-memcpy-expansion5091 %phi.broken8652 = phi i64 [ 0, %loop-memcpy-expansion5091.preheader ], [ %1318, %loop-memcpy-expansion5091 ] %loop-index5092 = phi i64 [ %1316, %loop-memcpy-expansion5091 ], [ 0, %loop-memcpy-expansion5091.preheader ] %1313 = getelementptr i8, ptr %1276, i64 %loop-index5092 %1314 = load <4 x i32>, ptr %1313, align 1 %1315 = getelementptr i8, ptr %1297, i64 %loop-index5092 store <4 x i32> %1314, ptr %1315, align 1 %1316 = add i64 %loop-index5092, 16 %1317 = icmp uge i64 %1316, %1308 %1318 = call i64 @llvm.amdgcn.if.break.i64(i1 %1317, i64 %phi.broken8652) %1319 = call i1 @llvm.amdgcn.loop.i64(i64 %1318) br i1 %1319, label %Flow7922, label %loop-memcpy-expansion5091 Flow7921: ; preds = %Flow7920, %loop-memcpy-residual-header5094 call void @llvm.amdgcn.end.cf.i64(i64 %6355) br label %post-loop-memcpy-expansion5090, !amdgpu.uniform !42 loop-memcpy-residual5093: ; preds = %loop-memcpy-residual5093.preheader, %loop-memcpy-residual5093 %phi.broken8653 = phi i64 [ 0, %loop-memcpy-residual5093.preheader ], [ %1323, %loop-memcpy-residual5093 ] %residual-loop-index5095 = phi i64 [ %1321, %loop-memcpy-residual5093 ], [ 0, %loop-memcpy-residual5093.preheader ] %scevgep6579 = getelementptr i8, ptr %scevgep6578, i64 %residual-loop-index5095 %1320 = load i8, ptr %scevgep6579, align 1 %scevgep6577 = getelementptr i8, ptr %scevgep6576, i64 %residual-loop-index5095 store i8 %1320, ptr %scevgep6577, align 1 %1321 = add i64 %residual-loop-index5095, 1 %1322 = icmp uge i64 %1321, %1307 %1323 = call i64 @llvm.amdgcn.if.break.i64(i1 %1322, i64 %phi.broken8653) %1324 = call i1 @llvm.amdgcn.loop.i64(i64 %1323) br i1 %1324, label %Flow7920, label %loop-memcpy-residual5093 Flow7920: ; preds = %loop-memcpy-residual5093 %.lcssa8975 = phi i64 [ %1323, %loop-memcpy-residual5093 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8975) br label %Flow7921, !amdgpu.uniform !42 post-loop-memcpy-expansion5090: ; preds = %Flow7921 %cmp.i.i.i.i = icmp ne i64 %1227, %1281 %brmerge = or i1 %cmp.i.not.i.i, %cmp.i.i.i.i %brmerge.inv = xor i1 %brmerge, true %1325 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %brmerge.inv) %1326 = extractvalue { i1, i64 } %1325, 0 %1327 = extractvalue { i1, i64 } %1325, 1 br i1 %1326, label %for.body.i.i.i.i.i.preheader, label %Flow7919 for.body.i.i.i.i.i.preheader: ; preds = %post-loop-memcpy-expansion5090 %1328 = add i64 %1227, -1 br label %for.body.i.i.i.i.i, !amdgpu.uniform !42 Flow7919: ; preds = %Flow7918, %post-loop-memcpy-expansion5090 %1329 = phi i1 [ %tobool.not.i.i.i.i.i.lcssa, %Flow7918 ], [ %cmp.i.i.i.i, %post-loop-memcpy-expansion5090 ] call void @llvm.amdgcn.end.cf.i64(i64 %1327) br label %land.end, !amdgpu.uniform !42 for.body.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i.preheader, %for.body.i.i.i.i.i %phi.broken8654 = phi i64 [ 0, %for.body.i.i.i.i.i.preheader ], [ %1332, %for.body.i.i.i.i.i ] %lsr.iv6584 = phi ptr [ %scevgep6585, %for.body.i.i.i.i.i ], [ %1248, %for.body.i.i.i.i.i.preheader ] %lsr.iv6582 = phi ptr [ %scevgep6583, %for.body.i.i.i.i.i ], [ %1297, %for.body.i.i.i.i.i.preheader ] %lsr.iv6580 = phi i64 [ %lsr.iv.next6581, %for.body.i.i.i.i.i ], [ %1328, %for.body.i.i.i.i.i.preheader ] %1330 = load i8, ptr %lsr.iv6584, align 1, !tbaa !57 %1331 = load i8, ptr %lsr.iv6582, align 1, !tbaa !57 %tobool.not.i.i.i.i.i = icmp ne i8 %1330, %1331 %exitcond.not.i.i.i.i.i = icmp eq i64 %lsr.iv6580, 0 %or.cond.i.i.i.i.i = select i1 %tobool.not.i.i.i.i.i, i1 true, i1 %exitcond.not.i.i.i.i.i %lsr.iv.next6581 = add i64 %lsr.iv6580, -1 %scevgep6583 = getelementptr i8, ptr %lsr.iv6582, i64 1 %scevgep6585 = getelementptr i8, ptr %lsr.iv6584, i64 1 %1332 = call i64 @llvm.amdgcn.if.break.i64(i1 %or.cond.i.i.i.i.i, i64 %phi.broken8654) %1333 = call i1 @llvm.amdgcn.loop.i64(i64 %1332) br i1 %1333, label %Flow7918, label %for.body.i.i.i.i.i Flow7918: ; preds = %for.body.i.i.i.i.i %tobool.not.i.i.i.i.i.lcssa = phi i1 [ %tobool.not.i.i.i.i.i, %for.body.i.i.i.i.i ] %.lcssa8976 = phi i64 [ %1332, %for.body.i.i.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8976) br label %Flow7919, !amdgpu.uniform !42 land.end: ; preds = %Flow7919 %1334 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1329) %1335 = extractvalue { i1, i64 } %1334, 0 %1336 = extractvalue { i1, i64 } %1334, 1 br i1 %1335, label %if.then35, label %Flow8428 if.then35: ; preds = %land.end %dec = add nsw i32 %TestCount.0206, -1 br label %Flow8428, !amdgpu.uniform !42 Flow8429: ; preds = %sw.epilog, %Flow8427 %1337 = phi i32 [ %TestCount.0206, %sw.epilog ], [ %1231, %Flow8427 ] %1338 = phi i32 [ %2089, %sw.epilog ], [ %FailCount.0205, %Flow8427 ] %1339 = phi i32 [ %2090, %sw.epilog ], [ %1215, %Flow8427 ] %1340 = phi i64 [ %2091, %sw.epilog ], [ %1214, %Flow8427 ] %1341 = phi i32 [ %2092, %sw.epilog ], [ %1213, %Flow8427 ] %1342 = phi i32 [ %2093, %sw.epilog ], [ %1212, %Flow8427 ] %1343 = phi i64 [ %2094, %sw.epilog ], [ %1211, %Flow8427 ] %1344 = phi i32 [ %2095, %sw.epilog ], [ %1210, %Flow8427 ] %1345 = phi i32 [ %2096, %sw.epilog ], [ %1209, %Flow8427 ] %1346 = phi i64 [ %2097, %sw.epilog ], [ %1208, %Flow8427 ] %1347 = phi i32 [ %2098, %sw.epilog ], [ %1207, %Flow8427 ] %1348 = phi i32 [ %2099, %sw.epilog ], [ %1206, %Flow8427 ] %1349 = phi i64 [ %2100, %sw.epilog ], [ %1205, %Flow8427 ] %1350 = phi i32 [ %2101, %sw.epilog ], [ %1204, %Flow8427 ] %1351 = phi i32 [ %2102, %sw.epilog ], [ %1203, %Flow8427 ] %1352 = phi i64 [ %2103, %sw.epilog ], [ %1202, %Flow8427 ] %1353 = phi i32 [ %2104, %sw.epilog ], [ %1201, %Flow8427 ] %1354 = phi i32 [ %2105, %sw.epilog ], [ %1200, %Flow8427 ] %1355 = phi i64 [ %2106, %sw.epilog ], [ %1199, %Flow8427 ] %1356 = phi i32 [ %2107, %sw.epilog ], [ %1198, %Flow8427 ] %1357 = phi i32 [ %2108, %sw.epilog ], [ %1197, %Flow8427 ] %1358 = phi i64 [ %2109, %sw.epilog ], [ %1196, %Flow8427 ] %1359 = phi i32 [ %2110, %sw.epilog ], [ %1195, %Flow8427 ] %1360 = phi i32 [ %2111, %sw.epilog ], [ %1194, %Flow8427 ] %1361 = phi i64 [ %2112, %sw.epilog ], [ %1193, %Flow8427 ] %1362 = phi i32 [ %2113, %sw.epilog ], [ %1192, %Flow8427 ] %1363 = phi i32 [ %2114, %sw.epilog ], [ %1191, %Flow8427 ] %1364 = phi i64 [ %2115, %sw.epilog ], [ %1190, %Flow8427 ] %1365 = phi i32 [ %2116, %sw.epilog ], [ %1189, %Flow8427 ] %1366 = phi i32 [ %2117, %sw.epilog ], [ %1188, %Flow8427 ] %1367 = phi i64 [ %2118, %sw.epilog ], [ %1187, %Flow8427 ] %1368 = phi i32 [ %2119, %sw.epilog ], [ %1186, %Flow8427 ] %1369 = phi i32 [ %2120, %sw.epilog ], [ %1185, %Flow8427 ] %1370 = phi i64 [ %2121, %sw.epilog ], [ %1184, %Flow8427 ] %1371 = phi i32 [ %2122, %sw.epilog ], [ %1183, %Flow8427 ] %1372 = phi i32 [ %2123, %sw.epilog ], [ %1182, %Flow8427 ] %1373 = phi i64 [ %2124, %sw.epilog ], [ %1181, %Flow8427 ] %1374 = phi i32 [ %2125, %sw.epilog ], [ %1180, %Flow8427 ] %1375 = phi i32 [ %2126, %sw.epilog ], [ %1179, %Flow8427 ] %1376 = phi i64 [ %2127, %sw.epilog ], [ %1178, %Flow8427 ] %1377 = phi i32 [ %2128, %sw.epilog ], [ %1177, %Flow8427 ] %1378 = phi i32 [ %2129, %sw.epilog ], [ %1176, %Flow8427 ] %1379 = phi i64 [ %2130, %sw.epilog ], [ %1175, %Flow8427 ] %1380 = phi i32 [ %2131, %sw.epilog ], [ %1174, %Flow8427 ] %1381 = phi i32 [ %2132, %sw.epilog ], [ %1173, %Flow8427 ] %1382 = phi i64 [ %2133, %sw.epilog ], [ %1172, %Flow8427 ] %1383 = phi i32 [ %2134, %sw.epilog ], [ %1171, %Flow8427 ] %1384 = phi i32 [ %2135, %sw.epilog ], [ %1170, %Flow8427 ] %1385 = phi i64 [ %2136, %sw.epilog ], [ %1169, %Flow8427 ] %1386 = phi i32 [ %2137, %sw.epilog ], [ %1168, %Flow8427 ] %1387 = phi i32 [ %2138, %sw.epilog ], [ %1167, %Flow8427 ] %1388 = phi i64 [ %2139, %sw.epilog ], [ %1166, %Flow8427 ] %1389 = phi i32 [ %2140, %sw.epilog ], [ %1165, %Flow8427 ] %1390 = phi i32 [ %.lcssa9039, %sw.epilog ], [ %1164, %Flow8427 ] %1391 = phi i64 [ %.lcssa9040, %sw.epilog ], [ %1163, %Flow8427 ] %1392 = phi i32 [ %.lcssa9041, %sw.epilog ], [ %1162, %Flow8427 ] %1393 = phi i32 [ %.lcssa9024, %sw.epilog ], [ %1161, %Flow8427 ] %1394 = phi i64 [ %.lcssa9025, %sw.epilog ], [ %1160, %Flow8427 ] %1395 = phi i32 [ %.lcssa9026, %sw.epilog ], [ %1159, %Flow8427 ] %1396 = phi i32 [ %.lcssa9008, %sw.epilog ], [ %1158, %Flow8427 ] %1397 = phi i64 [ %.lcssa9009, %sw.epilog ], [ %1157, %Flow8427 ] %1398 = phi i32 [ %.lcssa9010, %sw.epilog ], [ %1156, %Flow8427 ] %1399 = phi i32 [ %.lcssa8996, %sw.epilog ], [ %1155, %Flow8427 ] %1400 = phi i64 [ %.lcssa8997, %sw.epilog ], [ %1154, %Flow8427 ] %1401 = phi i32 [ %.lcssa8998, %sw.epilog ], [ %1153, %Flow8427 ] %1402 = phi i32 [ %.lcssa8981, %sw.epilog ], [ %1152, %Flow8427 ] %1403 = phi i64 [ %.lcssa8982, %sw.epilog ], [ %1151, %Flow8427 ] %1404 = phi i32 [ %.lcssa8983, %sw.epilog ], [ %1150, %Flow8427 ] call void @llvm.amdgcn.end.cf.i64(i64 %1235) br label %cleanup, !amdgpu.uniform !42 for.cond.i.i.i748: ; preds = %for.cond.i.i.i748.preheader, %for.cond.i.i.i748 %phi.broken8655 = phi i64 [ 0, %for.cond.i.i.i748.preheader ], [ %1406, %for.cond.i.i.i748 ] %lsr.iv6587 = phi ptr addrspace(4) [ %scevgep6589, %for.cond.i.i.i748 ], [ %scevgep6586, %for.cond.i.i.i748.preheader ] %scevgep6589 = getelementptr i8, ptr addrspace(4) %lsr.iv6587, i64 1 %1405 = load i8, ptr addrspace(4) %scevgep6589, align 1, !tbaa !57 %cmp.i.i.i750 = icmp eq i8 %1405, 0 %1406 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.i.i750, i64 %phi.broken8655) %1407 = call i1 @llvm.amdgcn.loop.i64(i64 %1406) br i1 %1407, label %_ZN22__llvm_libc_22_0_0_git3cpp11string_viewC2EPKc.exit.i752, label %for.cond.i.i.i748 _ZN22__llvm_libc_22_0_0_git3cpp11string_viewC2EPKc.exit.i752: ; preds = %for.cond.i.i.i748 %scevgep6589.lcssa = phi ptr addrspace(4) [ %scevgep6589, %for.cond.i.i.i748 ] %.lcssa8977 = phi i64 [ %1406, %for.cond.i.i.i748 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8977) %1408 = call i32 @llvm.amdgcn.mbcnt.lo(i32 -1, i32 0) %1409 = call noundef i32 @llvm.amdgcn.mbcnt.hi(i32 -1, i32 %1408) %sh_prom.i.i.i.i756 = zext i32 %1409 to i64 br label %for.cond.i.i1.i757, !amdgpu.uniform !42 for.cond.i.i1.i757: ; preds = %_ZN22__llvm_libc_22_0_0_git3cpp11string_viewC2EPKc.exit.i752, %Flow8426 %1410 = phi i32 [ %1447, %Flow8426 ], [ %1150, %_ZN22__llvm_libc_22_0_0_git3cpp11string_viewC2EPKc.exit.i752 ] %1411 = phi i64 [ %1448, %Flow8426 ], [ %1151, %_ZN22__llvm_libc_22_0_0_git3cpp11string_viewC2EPKc.exit.i752 ] %1412 = phi i32 [ %1449, %Flow8426 ], [ %1152, %_ZN22__llvm_libc_22_0_0_git3cpp11string_viewC2EPKc.exit.i752 ] %retval.sroa.6.0.i.i.i758 = phi i32 [ %1452, %Flow8426 ], [ undef, %_ZN22__llvm_libc_22_0_0_git3cpp11string_viewC2EPKc.exit.i752 ] %retval.sroa.2.0.i.i.i760 = phi i64 [ %1451, %Flow8426 ], [ undef, %_ZN22__llvm_libc_22_0_0_git3cpp11string_viewC2EPKc.exit.i752 ] %retval.sroa.8.0.i.i.i761 = phi i32 [ %1450, %Flow8426 ], [ undef, %_ZN22__llvm_libc_22_0_0_git3cpp11string_viewC2EPKc.exit.i752 ] %index.0.i.i.i762 = phi i32 [ %1454, %Flow8426 ], [ 0, %_ZN22__llvm_libc_22_0_0_git3cpp11string_viewC2EPKc.exit.i752 ] %1413 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i763 = icmp ult i32 %index.0.i.i.i762, %1413 %spec.store.select.i.i.i764 = select i1 %cmp.not.i.i.i763, i32 %index.0.i.i.i762, i32 0 %1414 = call i64 @llvm.amdgcn.ballot.i64(i1 true) %1415 = and i32 %spec.store.select.i.i.i764, 31 %1416 = lshr i64 %1414, %sh_prom.i.i.i.i756 %1417 = trunc i64 %1416 to i32 %conv4.i.i.i.i.i768 = and i32 %1417, 1 %shl.i.i.i.i.i769 = shl nuw i32 %conv4.i.i.i.i.i768, %1415 br label %ComputeLoop5567, !amdgpu.uniform !42 1418: ; preds = %ComputeEnd5568 %sunkaddr7390 = getelementptr inbounds i8, ptr addrspace(1) %7130, i64 40 %1419 = atomicrmw or ptr addrspace(1) %sunkaddr7390, i32 %.lcssa8978 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1420, !amdgpu.uniform !42 1420: ; preds = %1418, %ComputeEnd5568 %1421 = phi i32 [ %1419, %1418 ], [ poison, %ComputeEnd5568 ] call void @llvm.amdgcn.end.cf.i64(i64 %7139) %1422 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %1421) %1423 = or i32 %1422, %.lcssa8979 %shl5.i.i.i.i.i770 = shl nuw i32 1, %1415 %and.i.i.i.i.i771 = and i32 %shl5.i.i.i.i.i770, %1423 %tobool3.i.i.i.i772 = icmp ne i32 %and.i.i.i.i.i771, 0 %1424 = call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i772) %and.i.i.i.i.i.i773 = and i64 %1424, %1414 %cmp.i.not.i.i.i774 = icmp ne i64 %1414, %and.i.i.i.i.i.i773 br i1 %cmp.i.not.i.i.i774, label %if.then.i.i.i.i775, label %Flow8425, !amdgpu.uniform !42 if.then.i.i.i.i775: ; preds = %1420 fence syncscope("agent") acquire %1425 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %1426 = extractelement <2 x i64> %1425, i32 0 %1427 = inttoptr i64 %1426 to ptr %1428 = extractelement <2 x i64> %1425, i32 1 %1429 = inttoptr i64 %1428 to ptr %idxprom.i.i.i.i776 = zext i32 %spec.store.select.i.i.i764 to i64 %arrayidx.i.i.i.i777 = getelementptr inbounds nuw i32, ptr %1427, i64 %idxprom.i.i.i.i776, !amdgpu.uniform !42 %1430 = load atomic i32, ptr %arrayidx.i.i.i.i777 monotonic, align 4 %1431 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1430) %arrayidx.i45.i.i.i778 = getelementptr inbounds nuw i32, ptr %1429, i64 %idxprom.i.i.i.i776, !amdgpu.uniform !42 %1432 = load atomic i32, ptr %arrayidx.i45.i.i.i778 monotonic, align 4 %1433 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1432) %cmp.i46.not.i.i.i779 = icmp ne i32 %1431, %1433 br i1 %cmp.i46.not.i.i.i779, label %if.then12.i.i.i780, label %Flow8423, !amdgpu.uniform !42 if.then12.i.i.i780: ; preds = %if.then.i.i.i.i775 fence syncscope("agent") release %1434 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1414, i1 true) %iszero.i.i.i.i.i.i.i781 = icmp ne i64 %1414, 0 %cmp2.i.i.i.i.i.i782 = icmp eq i64 %1434, %sh_prom.i.i.i.i756 %cmp.i.i.i.i.i.i783 = select i1 %iszero.i.i.i.i.i.i.i781, i1 %cmp2.i.i.i.i.i.i782, i1 false %conv4.i.i51.i.i.i784 = zext i1 %cmp.i.i.i.i.i.i783 to i32 %shl.i.i52.i.i.i785 = shl nuw i32 %conv4.i.i51.i.i.i784, %1415 %xor.i.i.i.i.i786 = xor i32 %shl.i.i52.i.i.i785, -1 %1435 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5572, !amdgpu.uniform !42 1436: ; preds = %ComputeEnd5573 %sunkaddr7391 = getelementptr inbounds i8, ptr addrspace(1) %7130, i64 40 %1437 = atomicrmw and ptr addrspace(1) %sunkaddr7391, i32 %.lcssa8980 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1438, !amdgpu.uniform !42 1438: ; preds = %1436, %ComputeEnd5573 call void @llvm.amdgcn.end.cf.i64(i64 %7157) call void @llvm.amdgcn.wave.barrier() br label %Flow8423, !amdgpu.uniform !42 if.end14.i.i.i846: ; preds = %Flow8423 %1439 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1414, i1 true) %iszero.i.i.i.i.i.i847 = icmp ne i64 %1414, 0 %cmp2.i.i.i.i.i848 = icmp eq i64 %1439, %sh_prom.i.i.i.i756 %cmp.i.i.i.i.i849 = select i1 %iszero.i.i.i.i.i.i847, i1 %cmp2.i.i.i.i.i848, i1 false %1440 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i849) %1441 = extractvalue { i1, i64 } %1440, 0 %1442 = extractvalue { i1, i64 } %1440, 1 br i1 %1441, label %if.then16.i.i.i851, label %if.end22.i.i.i850 if.then16.i.i.i851: ; preds = %if.end14.i.i.i846 %1443 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i852 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1443, i64 %idxprom.i.i.i.i776, i32 1 store i32 1660944387, ptr %opcode.i.i.i852, align 8, !tbaa !77 %arrayidx21.i.i.i853 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1443, i64 %idxprom.i.i.i.i776 store i64 %1414, ptr %arrayidx21.i.i.i853, align 8, !tbaa !80 br label %if.end22.i.i.i850, !amdgpu.uniform !42 Flow8424: ; preds = %if.end22.i.i.i850, %Flow8423 %1444 = phi i32 [ %1431, %if.end22.i.i.i850 ], [ %retval.sroa.8.0.i.i.i761, %Flow8423 ] %1445 = phi i64 [ %1414, %if.end22.i.i.i850 ], [ %retval.sroa.2.0.i.i.i760, %Flow8423 ] %1446 = phi i32 [ %spec.store.select.i.i.i764, %if.end22.i.i.i850 ], [ %retval.sroa.6.0.i.i.i758, %Flow8423 ] br label %cleanup26.i.i.i787, !amdgpu.uniform !42 if.end22.i.i.i850: ; preds = %if.then16.i.i.i851, %if.end14.i.i.i846 call void @llvm.amdgcn.end.cf.i64(i64 %1442) call void @llvm.amdgcn.wave.barrier() br label %Flow8424, !amdgpu.uniform !42 Flow8425: ; preds = %cleanup26.i.i.i787, %1420 %1447 = phi i32 [ %1446, %cleanup26.i.i.i787 ], [ %1410, %1420 ] %1448 = phi i64 [ %1445, %cleanup26.i.i.i787 ], [ %1411, %1420 ] %1449 = phi i32 [ %1444, %cleanup26.i.i.i787 ], [ %1412, %1420 ] %1450 = phi i32 [ %1444, %cleanup26.i.i.i787 ], [ %retval.sroa.8.0.i.i.i761, %1420 ] %1451 = phi i64 [ %1445, %cleanup26.i.i.i787 ], [ %retval.sroa.2.0.i.i.i760, %1420 ] %1452 = phi i32 [ %1446, %cleanup26.i.i.i787 ], [ %retval.sroa.6.0.i.i.i758, %1420 ] %1453 = phi i1 [ %cmp.i46.not.i.i.i779, %cleanup26.i.i.i787 ], [ true, %1420 ] br i1 %1453, label %for.inc.i.i.i792, label %Flow8426, !amdgpu.uniform !42 cleanup26.i.i.i787: ; preds = %Flow8424 br label %Flow8425, !amdgpu.uniform !42 for.inc.i.i.i792: ; preds = %Flow8425 %inc.i.i.i797 = add i32 %spec.store.select.i.i.i764, 1 br label %Flow8426, !amdgpu.uniform !42 Flow8426: ; preds = %for.inc.i.i.i792, %Flow8425 %1454 = phi i32 [ %inc.i.i.i797, %for.inc.i.i.i792 ], [ poison, %Flow8425 ] %1455 = phi i1 [ false, %for.inc.i.i.i792 ], [ true, %Flow8425 ] br i1 %1455, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i798, label %for.cond.i.i1.i757, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i798: ; preds = %Flow8426 %.lcssa8983 = phi i32 [ %1447, %Flow8426 ] %.lcssa8982 = phi i64 [ %1448, %Flow8426 ] %.lcssa8981 = phi i32 [ %1449, %Flow8426 ] %1456 = addrspacecast ptr addrspace(4) %scevgep6589.lcssa to ptr %1457 = addrspacecast ptr addrspace(4) %cond to ptr %1458 = ptrtoint ptr %1457 to i64 %sub.ptr.lhs.cast.i.i.i753 = ptrtoint ptr %1456 to i64 %sub.ptr.sub.i.i.i755 = sub i64 %sub.ptr.lhs.cast.i.i.i753, %1458 fence acquire %1459 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i799 = shl i32 %.lcssa8983, 6 %idxprom.i19.i.i.i.i.i800 = zext i32 %mul.i.i.i.i.i.i799 to i64 %arrayidx.i20.i.i.i.i.i801 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %1459, i64 %idxprom.i19.i.i.i.i.i800 %arrayidx.i22.i.i.i.i.i802 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i801, i64 %sh_prom.i.i.i.i756 store i64 %sub.ptr.sub.i.i.i755, ptr %arrayidx.i22.i.i.i.i.i802, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i803 = call i64 @llvm.umin.i64(i64 %sub.ptr.sub.i.i.i755, i64 56) %1460 = and i64 %spec.select.i.i.i.i.i.i.i803, 15 %1461 = sub i64 %spec.select.i.i.i.i.i.i.i803, %1460 %1462 = icmp ne i64 %1461, 0 %1463 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1462) %1464 = extractvalue { i1, i64 } %1463, 0 %1465 = extractvalue { i1, i64 } %1463, 1 br i1 %1464, label %loop-memcpy-expansion5151.preheader, label %Flow8422 loop-memcpy-expansion5151.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i798 %scevgep6590 = getelementptr i8, ptr %1459, i64 8 %1466 = shl nuw nsw i64 %sh_prom.i.i.i.i756, 6 %scevgep6591 = getelementptr i8, ptr %scevgep6590, i64 %1466 %1467 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i800, 6 %scevgep6592 = getelementptr i8, ptr %scevgep6591, i64 %1467 br label %loop-memcpy-expansion5151, !amdgpu.uniform !42 Flow8422: ; preds = %Flow8421, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i798 call void @llvm.amdgcn.end.cf.i64(i64 %1465) br label %loop-memcpy-residual-header5154, !amdgpu.uniform !42 loop-memcpy-expansion5151: ; preds = %loop-memcpy-expansion5151.preheader, %loop-memcpy-expansion5151 %phi.broken8656 = phi i64 [ 0, %loop-memcpy-expansion5151.preheader ], [ %1472, %loop-memcpy-expansion5151 ] %loop-index5152 = phi i64 [ %1470, %loop-memcpy-expansion5151 ], [ 0, %loop-memcpy-expansion5151.preheader ] %1468 = getelementptr i8, ptr addrspace(4) %cond, i64 %loop-index5152 %1469 = load <4 x i32>, ptr addrspace(4) %1468, align 1 %scevgep6593 = getelementptr i8, ptr %scevgep6592, i64 %loop-index5152 store <4 x i32> %1469, ptr %scevgep6593, align 1 %1470 = add i64 %loop-index5152, 16 %1471 = icmp uge i64 %1470, %1461 %1472 = call i64 @llvm.amdgcn.if.break.i64(i1 %1471, i64 %phi.broken8656) %1473 = call i1 @llvm.amdgcn.loop.i64(i64 %1472) br i1 %1473, label %Flow8421, label %loop-memcpy-expansion5151 Flow8420: ; preds = %Flow8418, %Flow8419 %1474 = phi i64 [ %6439, %Flow8418 ], [ %6434, %Flow8419 ] %1475 = phi i64 [ %6441, %Flow8418 ], [ %6435, %Flow8419 ] call void @llvm.amdgcn.end.cf.i64(i64 %6438) br label %post-loop-memcpy-expansion5150, !amdgpu.uniform !42 loop-memcpy-residual5153: ; preds = %loop-memcpy-residual5153.preheader, %loop-memcpy-residual5153 %phi.broken8657 = phi i64 [ 0, %loop-memcpy-residual5153.preheader ], [ %1479, %loop-memcpy-residual5153 ] %residual-loop-index5155 = phi i64 [ %1477, %loop-memcpy-residual5153 ], [ 0, %loop-memcpy-residual5153.preheader ] %scevgep6599 = getelementptr i8, ptr addrspace(4) %scevgep6598, i64 %residual-loop-index5155 %1476 = load i8, ptr addrspace(4) %scevgep6599, align 1 %scevgep6597 = getelementptr i8, ptr %scevgep6596, i64 %residual-loop-index5155 store i8 %1476, ptr %scevgep6597, align 1 %1477 = add i64 %residual-loop-index5155, 1 %1478 = icmp uge i64 %1477, %1460 %1479 = call i64 @llvm.amdgcn.if.break.i64(i1 %1478, i64 %phi.broken8657) %1480 = call i1 @llvm.amdgcn.loop.i64(i64 %1479) br i1 %1480, label %Flow8418, label %loop-memcpy-residual5153 Flow8418: ; preds = %loop-memcpy-residual5153 %.lcssa8985 = phi i64 [ %1479, %loop-memcpy-residual5153 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8985) br label %Flow8420, !amdgpu.uniform !42 post-loop-memcpy-expansion5150: ; preds = %Flow8420 %1481 = addrspacecast ptr addrspace(4) %scevgep6589.lcssa to ptr %1482 = ptrtoint ptr %1481 to i64 %tobool.not.i.i.i.i.i.i805 = icmp eq i32 %.lcssa8981, 0 %conv.i.i.i.i.i.i806 = zext i1 %tobool.not.i.i.i.i.i.i805 to i32 fence release %1483 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i807 = zext i32 %.lcssa8983 to i64 %arrayidx.i24.i.i.i.i.i808 = getelementptr inbounds nuw i32, ptr %1483, i64 %idxprom.i23.i.i.i.i.i807 store atomic i32 %conv.i.i.i.i.i.i806, ptr %arrayidx.i24.i.i.i.i.i808 monotonic, align 4 %1484 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i809 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1484, i64 %idxprom.i23.i.i.i.i.i807 %1485 = load i64, ptr %arrayidx.i.i5.i.i809, align 8, !tbaa !80 %1486 = add i64 %1140, %1482 br label %while.cond.i.i.i.i810, !amdgpu.uniform !42 while.cond.i.i.i.i810: ; preds = %post-loop-memcpy-expansion5150, %Flow8417 %phi.broken8661 = phi i64 [ 0, %post-loop-memcpy-expansion5150 ], [ %1508, %Flow8417 ] %lsr.iv6606 = phi i64 [ %1506, %Flow8417 ], [ %1486, %post-loop-memcpy-expansion5150 ] %lsr.iv6601 = phi ptr addrspace(4) [ %1505, %Flow8417 ], [ %scevgep6600, %post-loop-memcpy-expansion5150 ] %port.sroa.37.0.i.i811 = phi i32 [ %1504, %Flow8417 ], [ %conv.i.i.i.i.i.i806, %post-loop-memcpy-expansion5150 ] %idx.0.i.i.i.i812 = phi i64 [ %1503, %Flow8417 ], [ 56, %post-loop-memcpy-expansion5150 ] %cmp.i.i.i.i813 = icmp ugt i64 %sub.ptr.sub.i.i.i755, %idx.0.i.i.i.i812 %1487 = call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i813) %and.i.i.i.i6.i.i814 = and i64 %1487, %1485 %tobool.not.i.i.i.i815 = icmp ne i64 %and.i.i.i.i6.i.i814, 0 %1488 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i816 = getelementptr inbounds nuw i32, ptr %1488, i64 %idxprom.i23.i.i.i.i.i807 %1489 = load atomic i32, ptr %arrayidx.i22.i.i.i816 monotonic, align 4 %1490 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i815) %1491 = extractvalue { i1, i64 } %1490, 0 %1492 = extractvalue { i1, i64 } %1490, 1 br i1 %1491, label %cond.false.i8.i.i.i.i817, label %Flow8417 cond.false.i8.i.i.i.i817: ; preds = %while.cond.i.i.i.i810 %1493 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1489) %1494 = icmp ne i32 %1493, %port.sroa.37.0.i.i811 %1495 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1494) %1496 = extractvalue { i1, i64 } %1495, 0 %1497 = extractvalue { i1, i64 } %1495, 1 br i1 %1496, label %while.body.i.i21.i.i.i.i818.preheader, label %Flow8416 while.body.i.i21.i.i.i.i818.preheader: ; preds = %cond.false.i8.i.i.i.i817 br label %while.body.i.i21.i.i.i.i818, !amdgpu.uniform !42 Flow8416: ; preds = %Flow8415, %cond.false.i8.i.i.i.i817 call void @llvm.amdgcn.end.cf.i64(i64 %1497) br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i821, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i818: ; preds = %while.body.i.i21.i.i.i.i818.preheader, %while.body.i.i21.i.i.i.i818 %phi.broken8658 = phi i64 [ 0, %while.body.i.i21.i.i.i.i818.preheader ], [ %1501, %while.body.i.i21.i.i.i.i818 ] call void @llvm.amdgcn.s.sleep(i32 2) %1498 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i819 = getelementptr inbounds nuw i32, ptr %1498, i64 %idxprom.i23.i.i.i.i.i807 %1499 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i819 monotonic, align 4 %1500 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1499) %cmp.i.not.i.i23.i.i.i.i820 = icmp eq i32 %1500, %port.sroa.37.0.i.i811 %1501 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i23.i.i.i.i820, i64 %phi.broken8658) %1502 = call i1 @llvm.amdgcn.loop.i64(i64 %1501) br i1 %1502, label %Flow8415, label %while.body.i.i21.i.i.i.i818 Flow8415: ; preds = %while.body.i.i21.i.i.i.i818 %.lcssa8986 = phi i64 [ %1501, %while.body.i.i21.i.i.i.i818 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8986) br label %Flow8416, !amdgpu.uniform !42 Flow8417: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i822, %while.cond.i.i.i.i810 %1503 = phi i64 [ %add.i.i.i.i825, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i822 ], [ poison, %while.cond.i.i.i.i810 ] %1504 = phi i32 [ %conv.i.i26.i.i.i.i823, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i822 ], [ poison, %while.cond.i.i.i.i810 ] %1505 = phi ptr addrspace(4) [ %scevgep6602, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i822 ], [ poison, %while.cond.i.i.i.i810 ] %1506 = phi i64 [ %lsr.iv.next6607, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i822 ], [ poison, %while.cond.i.i.i.i810 ] %1507 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i822 ], [ true, %while.cond.i.i.i.i810 ] call void @llvm.amdgcn.end.cf.i64(i64 %1492) %1508 = call i64 @llvm.amdgcn.if.break.i64(i1 %1507, i64 %phi.broken8661) %1509 = call i1 @llvm.amdgcn.loop.i64(i64 %1508) br i1 %1509, label %cond.false.i.i.i832, label %while.cond.i.i.i.i810 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i821: ; preds = %Flow8416 fence acquire %1510 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i813) %1511 = extractvalue { i1, i64 } %1510, 0 %1512 = extractvalue { i1, i64 } %1510, 1 br i1 %1511, label %if.then.i.i.i.i.i.i.i826, label %Flow8414 if.then.i.i.i.i.i.i.i826: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i821 %sub.i.i.i.i.i.i.i828 = sub nuw i64 %sub.ptr.sub.i.i.i755, %idx.0.i.i.i.i812 %spec.select.i.i.i36.i.i.i.i829 = call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i828, i64 64) %1513 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %1514 = and i64 %spec.select.i.i.i36.i.i.i.i829, 15 %1515 = sub i64 %spec.select.i.i.i36.i.i.i.i829, %1514 %1516 = icmp ne i64 %1515, 0 %1517 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1516) %1518 = extractvalue { i1, i64 } %1517, 0 %1519 = extractvalue { i1, i64 } %1517, 1 br i1 %1518, label %loop-memcpy-expansion5259.preheader, label %Flow8413 loop-memcpy-expansion5259.preheader: ; preds = %if.then.i.i.i.i.i.i.i826 %arrayidx.i20.i35.i.i.i.i830 = getelementptr %"struct.rpc::Buffer", ptr %1513, i64 %idxprom.i19.i.i.i.i.i800 %arrayidx.i22.i38.i.i.i.i831 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i830, i64 %sh_prom.i.i.i.i756 br label %loop-memcpy-expansion5259, !amdgpu.uniform !42 Flow8413: ; preds = %Flow8412, %if.then.i.i.i.i.i.i.i826 call void @llvm.amdgcn.end.cf.i64(i64 %1519) br label %loop-memcpy-residual-header5262, !amdgpu.uniform !42 loop-memcpy-expansion5259: ; preds = %loop-memcpy-expansion5259.preheader, %loop-memcpy-expansion5259 %phi.broken8659 = phi i64 [ 0, %loop-memcpy-expansion5259.preheader ], [ %1524, %loop-memcpy-expansion5259 ] %loop-index5260 = phi i64 [ %1522, %loop-memcpy-expansion5259 ], [ 0, %loop-memcpy-expansion5259.preheader ] %scevgep6603 = getelementptr i8, ptr addrspace(4) %lsr.iv6601, i64 %loop-index5260 %1520 = load <4 x i32>, ptr addrspace(4) %scevgep6603, align 1 %1521 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i831, i64 %loop-index5260 store <4 x i32> %1520, ptr %1521, align 1 %1522 = add i64 %loop-index5260, 16 %1523 = icmp uge i64 %1522, %1515 %1524 = call i64 @llvm.amdgcn.if.break.i64(i1 %1523, i64 %phi.broken8659) %1525 = call i1 @llvm.amdgcn.loop.i64(i64 %1524) br i1 %1525, label %Flow8412, label %loop-memcpy-expansion5259 Flow8411: ; preds = %Flow8410, %loop-memcpy-residual-header5262 call void @llvm.amdgcn.end.cf.i64(i64 %6548) br label %Flow8414, !amdgpu.uniform !42 loop-memcpy-residual5261: ; preds = %loop-memcpy-residual5261.preheader, %loop-memcpy-residual5261 %phi.broken8660 = phi i64 [ 0, %loop-memcpy-residual5261.preheader ], [ %1529, %loop-memcpy-residual5261 ] %residual-loop-index5263 = phi i64 [ %1527, %loop-memcpy-residual5261 ], [ 0, %loop-memcpy-residual5261.preheader ] %scevgep6612 = getelementptr i8, ptr addrspace(4) %scevgep6611, i64 %residual-loop-index5263 %1526 = load i8, ptr addrspace(4) %scevgep6612, align 1 %scevgep6610 = getelementptr i8, ptr %scevgep6609, i64 %residual-loop-index5263 store i8 %1526, ptr %scevgep6610, align 1 %1527 = add i64 %residual-loop-index5263, 1 %1528 = icmp uge i64 %1527, %1514 %1529 = call i64 @llvm.amdgcn.if.break.i64(i1 %1528, i64 %phi.broken8660) %1530 = call i1 @llvm.amdgcn.loop.i64(i64 %1529) br i1 %1530, label %Flow8410, label %loop-memcpy-residual5261 Flow8410: ; preds = %loop-memcpy-residual5261 %.lcssa8988 = phi i64 [ %1529, %loop-memcpy-residual5261 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8988) br label %Flow8411, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i822: ; preds = %Flow8414 %conv.i.i26.i.i.i.i823 = xor i32 %port.sroa.37.0.i.i811, 1 fence release %1531 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i824 = getelementptr inbounds nuw i32, ptr %1531, i64 %idxprom.i23.i.i.i.i.i807 store atomic i32 %conv.i.i26.i.i.i.i823, ptr %arrayidx.i24.i29.i.i.i.i824 monotonic, align 4 %add.i.i.i.i825 = add i64 %idx.0.i.i.i.i812, 64 %scevgep6602 = getelementptr i8, ptr addrspace(4) %lsr.iv6601, i64 64 %lsr.iv.next6607 = add i64 %lsr.iv6606, -64 br label %Flow8417, !amdgpu.uniform !42 cond.false.i.i.i832: ; preds = %Flow8417 %.lcssa8990 = phi i64 [ %1508, %Flow8417 ] %port.sroa.37.0.i.i811.lcssa = phi i32 [ %port.sroa.37.0.i.i811, %Flow8417 ] %.lcssa8989 = phi i32 [ %1489, %Flow8417 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8990) %1532 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa8989) %1533 = icmp ne i32 %1532, %port.sroa.37.0.i.i811.lcssa %1534 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1533) %1535 = extractvalue { i1, i64 } %1534, 0 %1536 = extractvalue { i1, i64 } %1534, 1 br i1 %1535, label %while.body.i.i.i.i833.preheader, label %Flow8409 while.body.i.i.i.i833.preheader: ; preds = %cond.false.i.i.i832 br label %while.body.i.i.i.i833, !amdgpu.uniform !42 Flow8409: ; preds = %Flow8408, %cond.false.i.i.i832 call void @llvm.amdgcn.end.cf.i64(i64 %1536) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit854, !amdgpu.uniform !42 while.body.i.i.i.i833: ; preds = %while.body.i.i.i.i833.preheader, %while.body.i.i.i.i833 %phi.broken8662 = phi i64 [ 0, %while.body.i.i.i.i833.preheader ], [ %1540, %while.body.i.i.i.i833 ] call void @llvm.amdgcn.s.sleep(i32 2) %1537 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i834 = getelementptr inbounds nuw i32, ptr %1537, i64 %idxprom.i23.i.i.i.i.i807 %1538 = load atomic i32, ptr %arrayidx.i.i.i8.i.i834 monotonic, align 4 %1539 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1538) %cmp.i.not.i.i.i.i835 = icmp eq i32 %1539, %port.sroa.37.0.i.i811.lcssa %1540 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i835, i64 %phi.broken8662) %1541 = call i1 @llvm.amdgcn.loop.i64(i64 %1540) br i1 %1541, label %Flow8408, label %while.body.i.i.i.i833 Flow8408: ; preds = %while.body.i.i.i.i833 %.lcssa8991 = phi i64 [ %1540, %while.body.i.i.i.i833 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8991) br label %Flow8409, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit854: ; preds = %Flow8409 fence acquire call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %1542 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa8982, i1 true) %iszero.i.i.i.i.i13.i.i837 = icmp ne i64 %.lcssa8982, 0 %cmp2.i.i.i.i14.i.i838 = icmp eq i64 %1542, %sh_prom.i.i.i.i756 %cmp.i.i.i.i15.i.i839 = select i1 %iszero.i.i.i.i.i13.i.i837, i1 %cmp2.i.i.i.i14.i.i838, i1 false %1543 = and i32 %.lcssa8983, 31 %conv4.i.i.i19.i.i843 = zext i1 %cmp.i.i.i.i15.i.i839 to i32 %shl.i.i.i20.i.i844 = shl nuw i32 %conv4.i.i.i19.i.i843, %1543 %xor.i.i.i21.i.i845 = xor i32 %shl.i.i.i20.i.i844, -1 %1544 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5576, !amdgpu.uniform !42 1545: ; preds = %ComputeEnd5577 %div8.i.i.i16.i.i840 = lshr i32 %.lcssa8983, 5 %idxprom.i.i.i17.i.i841 = zext nneg i32 %div8.i.i.i16.i.i840 to i64 %1546 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i841 %sunkaddr7392 = getelementptr inbounds i8, ptr addrspace(1) %1546, i64 40 %1547 = atomicrmw and ptr addrspace(1) %sunkaddr7392, i32 %.lcssa8992 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1548, !amdgpu.uniform !42 1548: ; preds = %1545, %ComputeEnd5577 call void @llvm.amdgcn.end.cf.i64(i64 %7174) call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i1.i863, !amdgpu.uniform !42 for.cond.i.i1.i863: ; preds = %1548, %Flow8407 %1549 = phi i32 [ %1586, %Flow8407 ], [ %1153, %1548 ] %1550 = phi i64 [ %1587, %Flow8407 ], [ %1154, %1548 ] %1551 = phi i32 [ %1588, %Flow8407 ], [ %1155, %1548 ] %retval.sroa.6.0.i.i.i864 = phi i32 [ %1591, %Flow8407 ], [ undef, %1548 ] %retval.sroa.2.0.i.i.i866 = phi i64 [ %1590, %Flow8407 ], [ undef, %1548 ] %retval.sroa.8.0.i.i.i867 = phi i32 [ %1589, %Flow8407 ], [ undef, %1548 ] %index.0.i.i.i868 = phi i32 [ %1593, %Flow8407 ], [ 0, %1548 ] %1552 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i869 = icmp ult i32 %index.0.i.i.i868, %1552 %spec.store.select.i.i.i870 = select i1 %cmp.not.i.i.i869, i32 %index.0.i.i.i868, i32 0 %1553 = call i64 @llvm.amdgcn.ballot.i64(i1 true) %1554 = and i32 %spec.store.select.i.i.i870, 31 %1555 = lshr i64 %1553, %sh_prom.i.i.i.i756 %1556 = trunc i64 %1555 to i32 %conv4.i.i.i.i.i874 = and i32 %1556, 1 %shl.i.i.i.i.i875 = shl nuw i32 %conv4.i.i.i.i.i874, %1554 br label %ComputeLoop5580, !amdgpu.uniform !42 1557: ; preds = %ComputeEnd5581 %sunkaddr7393 = getelementptr inbounds i8, ptr addrspace(1) %7184, i64 40 %1558 = atomicrmw or ptr addrspace(1) %sunkaddr7393, i32 %.lcssa8993 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1559, !amdgpu.uniform !42 1559: ; preds = %1557, %ComputeEnd5581 %1560 = phi i32 [ %1558, %1557 ], [ poison, %ComputeEnd5581 ] call void @llvm.amdgcn.end.cf.i64(i64 %7193) %1561 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %1560) %1562 = or i32 %1561, %.lcssa8994 %shl5.i.i.i.i.i876 = shl nuw i32 1, %1554 %and.i.i.i.i.i877 = and i32 %shl5.i.i.i.i.i876, %1562 %tobool3.i.i.i.i878 = icmp ne i32 %and.i.i.i.i.i877, 0 %1563 = call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i878) %and.i.i.i.i.i.i879 = and i64 %1563, %1553 %cmp.i.not.i.i.i880 = icmp ne i64 %1553, %and.i.i.i.i.i.i879 br i1 %cmp.i.not.i.i.i880, label %if.then.i.i.i.i881, label %Flow8406, !amdgpu.uniform !42 if.then.i.i.i.i881: ; preds = %1559 fence syncscope("agent") acquire %1564 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %1565 = extractelement <2 x i64> %1564, i32 0 %1566 = inttoptr i64 %1565 to ptr %1567 = extractelement <2 x i64> %1564, i32 1 %1568 = inttoptr i64 %1567 to ptr %idxprom.i.i.i.i882 = zext i32 %spec.store.select.i.i.i870 to i64 %arrayidx.i.i.i.i883 = getelementptr inbounds nuw i32, ptr %1566, i64 %idxprom.i.i.i.i882, !amdgpu.uniform !42 %1569 = load atomic i32, ptr %arrayidx.i.i.i.i883 monotonic, align 4 %1570 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1569) %arrayidx.i45.i.i.i884 = getelementptr inbounds nuw i32, ptr %1568, i64 %idxprom.i.i.i.i882, !amdgpu.uniform !42 %1571 = load atomic i32, ptr %arrayidx.i45.i.i.i884 monotonic, align 4 %1572 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1571) %cmp.i46.not.i.i.i885 = icmp ne i32 %1570, %1572 br i1 %cmp.i46.not.i.i.i885, label %if.then12.i.i.i886, label %Flow8404, !amdgpu.uniform !42 if.then12.i.i.i886: ; preds = %if.then.i.i.i.i881 fence syncscope("agent") release %1573 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1553, i1 true) %iszero.i.i.i.i.i.i.i887 = icmp ne i64 %1553, 0 %cmp2.i.i.i.i.i.i888 = icmp eq i64 %1573, %sh_prom.i.i.i.i756 %cmp.i.i.i.i.i.i889 = select i1 %iszero.i.i.i.i.i.i.i887, i1 %cmp2.i.i.i.i.i.i888, i1 false %conv4.i.i51.i.i.i890 = zext i1 %cmp.i.i.i.i.i.i889 to i32 %shl.i.i52.i.i.i891 = shl nuw i32 %conv4.i.i51.i.i.i890, %1554 %xor.i.i.i.i.i892 = xor i32 %shl.i.i52.i.i.i891, -1 %1574 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5585, !amdgpu.uniform !42 1575: ; preds = %ComputeEnd5586 %sunkaddr7394 = getelementptr inbounds i8, ptr addrspace(1) %7184, i64 40 %1576 = atomicrmw and ptr addrspace(1) %sunkaddr7394, i32 %.lcssa8995 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1577, !amdgpu.uniform !42 1577: ; preds = %1575, %ComputeEnd5586 call void @llvm.amdgcn.end.cf.i64(i64 %7211) call void @llvm.amdgcn.wave.barrier() br label %Flow8404, !amdgpu.uniform !42 if.end14.i.i.i952: ; preds = %Flow8404 %1578 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1553, i1 true) %iszero.i.i.i.i.i.i953 = icmp ne i64 %1553, 0 %cmp2.i.i.i.i.i954 = icmp eq i64 %1578, %sh_prom.i.i.i.i756 %cmp.i.i.i.i.i955 = select i1 %iszero.i.i.i.i.i.i953, i1 %cmp2.i.i.i.i.i954, i1 false %1579 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i955) %1580 = extractvalue { i1, i64 } %1579, 0 %1581 = extractvalue { i1, i64 } %1579, 1 br i1 %1580, label %if.then16.i.i.i957, label %if.end22.i.i.i956 if.then16.i.i.i957: ; preds = %if.end14.i.i.i952 %1582 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i958 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1582, i64 %idxprom.i.i.i.i882, i32 1 store i32 1660944387, ptr %opcode.i.i.i958, align 8, !tbaa !77 %arrayidx21.i.i.i959 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1582, i64 %idxprom.i.i.i.i882 store i64 %1553, ptr %arrayidx21.i.i.i959, align 8, !tbaa !80 br label %if.end22.i.i.i956, !amdgpu.uniform !42 Flow8405: ; preds = %if.end22.i.i.i956, %Flow8404 %1583 = phi i32 [ %1570, %if.end22.i.i.i956 ], [ %retval.sroa.8.0.i.i.i867, %Flow8404 ] %1584 = phi i64 [ %1553, %if.end22.i.i.i956 ], [ %retval.sroa.2.0.i.i.i866, %Flow8404 ] %1585 = phi i32 [ %spec.store.select.i.i.i870, %if.end22.i.i.i956 ], [ %retval.sroa.6.0.i.i.i864, %Flow8404 ] br label %cleanup26.i.i.i893, !amdgpu.uniform !42 if.end22.i.i.i956: ; preds = %if.then16.i.i.i957, %if.end14.i.i.i952 call void @llvm.amdgcn.end.cf.i64(i64 %1581) call void @llvm.amdgcn.wave.barrier() br label %Flow8405, !amdgpu.uniform !42 Flow8406: ; preds = %cleanup26.i.i.i893, %1559 %1586 = phi i32 [ %1585, %cleanup26.i.i.i893 ], [ %1549, %1559 ] %1587 = phi i64 [ %1584, %cleanup26.i.i.i893 ], [ %1550, %1559 ] %1588 = phi i32 [ %1583, %cleanup26.i.i.i893 ], [ %1551, %1559 ] %1589 = phi i32 [ %1583, %cleanup26.i.i.i893 ], [ %retval.sroa.8.0.i.i.i867, %1559 ] %1590 = phi i64 [ %1584, %cleanup26.i.i.i893 ], [ %retval.sroa.2.0.i.i.i866, %1559 ] %1591 = phi i32 [ %1585, %cleanup26.i.i.i893 ], [ %retval.sroa.6.0.i.i.i864, %1559 ] %1592 = phi i1 [ %cmp.i46.not.i.i.i885, %cleanup26.i.i.i893 ], [ true, %1559 ] br i1 %1592, label %for.inc.i.i.i898, label %Flow8407, !amdgpu.uniform !42 cleanup26.i.i.i893: ; preds = %Flow8405 br label %Flow8406, !amdgpu.uniform !42 for.inc.i.i.i898: ; preds = %Flow8406 %inc.i.i.i903 = add i32 %spec.store.select.i.i.i870, 1 br label %Flow8407, !amdgpu.uniform !42 Flow8407: ; preds = %for.inc.i.i.i898, %Flow8406 %1593 = phi i32 [ %inc.i.i.i903, %for.inc.i.i.i898 ], [ poison, %Flow8406 ] %1594 = phi i1 [ false, %for.inc.i.i.i898 ], [ true, %Flow8406 ] br i1 %1594, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i904, label %for.cond.i.i1.i863, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i904: ; preds = %Flow8407 %.lcssa8998 = phi i32 [ %1586, %Flow8407 ] %.lcssa8997 = phi i64 [ %1587, %Flow8407 ] %.lcssa8996 = phi i32 [ %1588, %Flow8407 ] fence acquire %1595 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i905 = shl i32 %.lcssa8998, 6 %idxprom.i19.i.i.i.i.i906 = zext i32 %mul.i.i.i.i.i.i905 to i64 %arrayidx.i20.i.i.i.i.i907 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %1595, i64 %idxprom.i19.i.i.i.i.i906 %arrayidx.i22.i.i.i.i.i908 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i907, i64 %sh_prom.i.i.i.i756 store i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.17.34 to ptr), i64 13) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.17.34 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i908, align 8, !tbaa !82 br i1 %1110, label %loop-memcpy-expansion5265.preheader, label %Flow8403, !amdgpu.uniform !42 loop-memcpy-expansion5265.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i904 %scevgep6613 = getelementptr i8, ptr %1595, i64 8 %scevgep6614 = getelementptr i8, ptr %scevgep6613, i64 %1474 %1596 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i906, 6 %scevgep6615 = getelementptr i8, ptr %scevgep6614, i64 %1596 br label %loop-memcpy-expansion5265, !amdgpu.uniform !42 Flow8403: ; preds = %Flow8402, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i904 br label %loop-memcpy-residual-header5268, !amdgpu.uniform !42 loop-memcpy-expansion5265: ; preds = %loop-memcpy-expansion5265.preheader, %loop-memcpy-expansion5265 %loop-index5266 = phi i64 [ %1599, %loop-memcpy-expansion5265 ], [ 0, %loop-memcpy-expansion5265.preheader ] %1597 = getelementptr i8, ptr addrspace(4) @.str.17.34, i64 %loop-index5266, !amdgpu.uniform !42 %1598 = load <4 x i32>, ptr addrspace(4) %1597, align 1 %scevgep6616 = getelementptr i8, ptr %scevgep6615, i64 %loop-index5266 store <4 x i32> %1598, ptr %scevgep6616, align 1 %1599 = add i64 %loop-index5266, 16 %1600 = icmp uge i64 %1599, %1109 br i1 %1600, label %Flow8402, label %loop-memcpy-expansion5265, !amdgpu.uniform !42 Flow8401: ; preds = %Flow8399, %Flow8400 %1601 = phi i64 [ %6553, %Flow8399 ], [ %6551, %Flow8400 ] br label %post-loop-memcpy-expansion5264, !amdgpu.uniform !42 loop-memcpy-residual5267: ; preds = %loop-memcpy-residual5267.preheader, %loop-memcpy-residual5267 %residual-loop-index5269 = phi i64 [ %1603, %loop-memcpy-residual5267 ], [ 0, %loop-memcpy-residual5267.preheader ] %scevgep6621 = getelementptr i8, ptr addrspace(4) @.str.17.34, i64 %residual-loop-index5269, !amdgpu.uniform !42 %1602 = load i8, ptr addrspace(4) %scevgep6621, align 1 %scevgep6620 = getelementptr i8, ptr %scevgep6619, i64 %residual-loop-index5269 store i8 %1602, ptr %scevgep6620, align 1 %1603 = add i64 %residual-loop-index5269, 1 %1604 = icmp uge i64 %1603, %1108 br i1 %1604, label %Flow8399, label %loop-memcpy-residual5267, !amdgpu.uniform !42 Flow8399: ; preds = %loop-memcpy-residual5267 br label %Flow8401, !amdgpu.uniform !42 post-loop-memcpy-expansion5264: ; preds = %Flow8401 %tobool.not.i.i.i.i.i.i911 = icmp eq i32 %.lcssa8996, 0 %conv.i.i.i.i.i.i912 = zext i1 %tobool.not.i.i.i.i.i.i911 to i32 fence release %1605 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i913 = zext i32 %.lcssa8998 to i64 %arrayidx.i24.i.i.i.i.i914 = getelementptr inbounds nuw i32, ptr %1605, i64 %idxprom.i23.i.i.i.i.i913 store atomic i32 %conv.i.i.i.i.i.i912, ptr %arrayidx.i24.i.i.i.i.i914 monotonic, align 4 %1606 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i915 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1606, i64 %idxprom.i23.i.i.i.i.i913 %1607 = load i64, ptr %arrayidx.i.i5.i.i915, align 8, !tbaa !80 br label %while.cond.i.i.i.i916, !amdgpu.uniform !42 while.cond.i.i.i.i916: ; preds = %post-loop-memcpy-expansion5264, %Flow8398 %phi.broken8664 = phi i64 [ 0, %post-loop-memcpy-expansion5264 ], [ %1629, %Flow8398 ] %lsr.iv6627 = phi i64 [ %1627, %Flow8398 ], [ -43, %post-loop-memcpy-expansion5264 ] %lsr.iv6622 = phi ptr addrspace(4) [ %1626, %Flow8398 ], [ getelementptr (i8, ptr addrspace(4) @.str.17.34, i64 56), %post-loop-memcpy-expansion5264 ] %port.sroa.37.0.i.i917 = phi i32 [ %1625, %Flow8398 ], [ %conv.i.i.i.i.i.i912, %post-loop-memcpy-expansion5264 ] %idx.0.i.i.i.i918 = phi i64 [ %1624, %Flow8398 ], [ 56, %post-loop-memcpy-expansion5264 ] %cmp.i.i.i.i919 = icmp ult i64 %idx.0.i.i.i.i918, sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.17.34 to ptr), i64 13) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.17.34 to ptr) to i64)) %1608 = call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i919) %and.i.i.i.i6.i.i920 = and i64 %1608, %1607 %tobool.not.i.i.i.i921 = icmp ne i64 %and.i.i.i.i6.i.i920, 0 %1609 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i922 = getelementptr inbounds nuw i32, ptr %1609, i64 %idxprom.i23.i.i.i.i.i913 %1610 = load atomic i32, ptr %arrayidx.i22.i.i.i922 monotonic, align 4 %1611 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i921) %1612 = extractvalue { i1, i64 } %1611, 0 %1613 = extractvalue { i1, i64 } %1611, 1 br i1 %1612, label %cond.false.i8.i.i.i.i923, label %Flow8398 cond.false.i8.i.i.i.i923: ; preds = %while.cond.i.i.i.i916 %1614 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1610) %1615 = icmp ne i32 %1614, %port.sroa.37.0.i.i917 %1616 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1615) %1617 = extractvalue { i1, i64 } %1616, 0 %1618 = extractvalue { i1, i64 } %1616, 1 br i1 %1617, label %while.body.i.i21.i.i.i.i924.preheader, label %Flow8397 while.body.i.i21.i.i.i.i924.preheader: ; preds = %cond.false.i8.i.i.i.i923 br label %while.body.i.i21.i.i.i.i924, !amdgpu.uniform !42 Flow8397: ; preds = %Flow8396, %cond.false.i8.i.i.i.i923 call void @llvm.amdgcn.end.cf.i64(i64 %1618) br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i927, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i924: ; preds = %while.body.i.i21.i.i.i.i924.preheader, %while.body.i.i21.i.i.i.i924 %phi.broken8663 = phi i64 [ 0, %while.body.i.i21.i.i.i.i924.preheader ], [ %1622, %while.body.i.i21.i.i.i.i924 ] call void @llvm.amdgcn.s.sleep(i32 2) %1619 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i925 = getelementptr inbounds nuw i32, ptr %1619, i64 %idxprom.i23.i.i.i.i.i913 %1620 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i925 monotonic, align 4 %1621 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1620) %cmp.i.not.i.i23.i.i.i.i926 = icmp eq i32 %1621, %port.sroa.37.0.i.i917 %1622 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i23.i.i.i.i926, i64 %phi.broken8663) %1623 = call i1 @llvm.amdgcn.loop.i64(i64 %1622) br i1 %1623, label %Flow8396, label %while.body.i.i21.i.i.i.i924 Flow8396: ; preds = %while.body.i.i21.i.i.i.i924 %.lcssa8999 = phi i64 [ %1622, %while.body.i.i21.i.i.i.i924 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8999) br label %Flow8397, !amdgpu.uniform !42 Flow8398: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i928, %while.cond.i.i.i.i916 %1624 = phi i64 [ %add.i.i.i.i931, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i928 ], [ poison, %while.cond.i.i.i.i916 ] %1625 = phi i32 [ %conv.i.i26.i.i.i.i929, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i928 ], [ poison, %while.cond.i.i.i.i916 ] %1626 = phi ptr addrspace(4) [ %scevgep6623, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i928 ], [ poison, %while.cond.i.i.i.i916 ] %1627 = phi i64 [ %lsr.iv.next6628, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i928 ], [ poison, %while.cond.i.i.i.i916 ] %1628 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i928 ], [ true, %while.cond.i.i.i.i916 ] call void @llvm.amdgcn.end.cf.i64(i64 %1613) %1629 = call i64 @llvm.amdgcn.if.break.i64(i1 %1628, i64 %phi.broken8664) %1630 = call i1 @llvm.amdgcn.loop.i64(i64 %1629) br i1 %1630, label %cond.false.i.i.i938, label %while.cond.i.i.i.i916 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i927: ; preds = %Flow8397 fence acquire br i1 %cmp.i.i.i.i919, label %if.then.i.i.i.i.i.i.i932, label %Flow8395, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i932: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i927 %sub.i.i.i.i.i.i.i934 = sub nuw i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.17.34 to ptr), i64 13) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.17.34 to ptr) to i64)), %idx.0.i.i.i.i918 %spec.select.i.i.i36.i.i.i.i935 = call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i934, i64 64) %1631 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %1632 = and i64 %spec.select.i.i.i36.i.i.i.i935, 15 %1633 = sub i64 %spec.select.i.i.i36.i.i.i.i935, %1632 %1634 = icmp ne i64 %1633, 0 br i1 %1634, label %loop-memcpy-expansion5271.preheader, label %Flow8394, !amdgpu.uniform !42 loop-memcpy-expansion5271.preheader: ; preds = %if.then.i.i.i.i.i.i.i932 %arrayidx.i20.i35.i.i.i.i936 = getelementptr %"struct.rpc::Buffer", ptr %1631, i64 %idxprom.i19.i.i.i.i.i906 %arrayidx.i22.i38.i.i.i.i937 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i936, i64 %sh_prom.i.i.i.i756 br label %loop-memcpy-expansion5271, !amdgpu.uniform !42 Flow8394: ; preds = %Flow8393, %if.then.i.i.i.i.i.i.i932 br label %loop-memcpy-residual-header5274, !amdgpu.uniform !42 loop-memcpy-expansion5271: ; preds = %loop-memcpy-expansion5271.preheader, %loop-memcpy-expansion5271 %loop-index5272 = phi i64 [ %1637, %loop-memcpy-expansion5271 ], [ 0, %loop-memcpy-expansion5271.preheader ] %scevgep6624 = getelementptr i8, ptr addrspace(4) %lsr.iv6622, i64 %loop-index5272, !amdgpu.uniform !42 %1635 = load <4 x i32>, ptr addrspace(4) %scevgep6624, align 1 %1636 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i937, i64 %loop-index5272 store <4 x i32> %1635, ptr %1636, align 1 %1637 = add i64 %loop-index5272, 16 %1638 = icmp uge i64 %1637, %1633 br i1 %1638, label %Flow8393, label %loop-memcpy-expansion5271, !amdgpu.uniform !42 Flow8392: ; preds = %Flow8391, %loop-memcpy-residual-header5274 br label %Flow8395, !amdgpu.uniform !42 loop-memcpy-residual5273: ; preds = %loop-memcpy-residual5273.preheader, %loop-memcpy-residual5273 %residual-loop-index5275 = phi i64 [ %1640, %loop-memcpy-residual5273 ], [ 0, %loop-memcpy-residual5273.preheader ] %scevgep6633 = getelementptr i8, ptr addrspace(4) %scevgep6632, i64 %residual-loop-index5275, !amdgpu.uniform !42 %1639 = load i8, ptr addrspace(4) %scevgep6633, align 1 %scevgep6631 = getelementptr i8, ptr %scevgep6630, i64 %residual-loop-index5275 store i8 %1639, ptr %scevgep6631, align 1 %1640 = add i64 %residual-loop-index5275, 1 %1641 = icmp uge i64 %1640, %1632 br i1 %1641, label %Flow8391, label %loop-memcpy-residual5273, !amdgpu.uniform !42 Flow8391: ; preds = %loop-memcpy-residual5273 br label %Flow8392, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i928: ; preds = %Flow8395 %conv.i.i26.i.i.i.i929 = xor i32 %port.sroa.37.0.i.i917, 1 fence release %1642 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i930 = getelementptr inbounds nuw i32, ptr %1642, i64 %idxprom.i23.i.i.i.i.i913 store atomic i32 %conv.i.i26.i.i.i.i929, ptr %arrayidx.i24.i29.i.i.i.i930 monotonic, align 4 %add.i.i.i.i931 = add i64 %idx.0.i.i.i.i918, 64 %scevgep6623 = getelementptr i8, ptr addrspace(4) %lsr.iv6622, i64 64 %lsr.iv.next6628 = add i64 %lsr.iv6627, -64 br label %Flow8398, !amdgpu.uniform !42 cond.false.i.i.i938: ; preds = %Flow8398 %.lcssa9001 = phi i64 [ %1629, %Flow8398 ] %port.sroa.37.0.i.i917.lcssa = phi i32 [ %port.sroa.37.0.i.i917, %Flow8398 ] %.lcssa9000 = phi i32 [ %1610, %Flow8398 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9001) %1643 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa9000) %1644 = icmp ne i32 %1643, %port.sroa.37.0.i.i917.lcssa %1645 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1644) %1646 = extractvalue { i1, i64 } %1645, 0 %1647 = extractvalue { i1, i64 } %1645, 1 br i1 %1646, label %while.body.i.i.i.i939.preheader, label %Flow8390 while.body.i.i.i.i939.preheader: ; preds = %cond.false.i.i.i938 br label %while.body.i.i.i.i939, !amdgpu.uniform !42 Flow8390: ; preds = %Flow8389, %cond.false.i.i.i938 call void @llvm.amdgcn.end.cf.i64(i64 %1647) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit960, !amdgpu.uniform !42 while.body.i.i.i.i939: ; preds = %while.body.i.i.i.i939.preheader, %while.body.i.i.i.i939 %phi.broken8665 = phi i64 [ 0, %while.body.i.i.i.i939.preheader ], [ %1651, %while.body.i.i.i.i939 ] call void @llvm.amdgcn.s.sleep(i32 2) %1648 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i940 = getelementptr inbounds nuw i32, ptr %1648, i64 %idxprom.i23.i.i.i.i.i913 %1649 = load atomic i32, ptr %arrayidx.i.i.i8.i.i940 monotonic, align 4 %1650 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1649) %cmp.i.not.i.i.i.i941 = icmp eq i32 %1650, %port.sroa.37.0.i.i917.lcssa %1651 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i941, i64 %phi.broken8665) %1652 = call i1 @llvm.amdgcn.loop.i64(i64 %1651) br i1 %1652, label %Flow8389, label %while.body.i.i.i.i939 Flow8389: ; preds = %while.body.i.i.i.i939 %.lcssa9002 = phi i64 [ %1651, %while.body.i.i.i.i939 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9002) br label %Flow8390, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit960: ; preds = %Flow8390 fence acquire call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %1653 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa8997, i1 true) %iszero.i.i.i.i.i13.i.i943 = icmp ne i64 %.lcssa8997, 0 %cmp2.i.i.i.i14.i.i944 = icmp eq i64 %1653, %sh_prom.i.i.i.i756 %cmp.i.i.i.i15.i.i945 = select i1 %iszero.i.i.i.i.i13.i.i943, i1 %cmp2.i.i.i.i14.i.i944, i1 false %1654 = and i32 %.lcssa8998, 31 %conv4.i.i.i19.i.i949 = zext i1 %cmp.i.i.i.i15.i.i945 to i32 %shl.i.i.i20.i.i950 = shl nuw i32 %conv4.i.i.i19.i.i949, %1654 %xor.i.i.i21.i.i951 = xor i32 %shl.i.i.i20.i.i950, -1 %1655 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5589, !amdgpu.uniform !42 1656: ; preds = %ComputeEnd5590 %div8.i.i.i16.i.i946 = lshr i32 %.lcssa8998, 5 %idxprom.i.i.i17.i.i947 = zext nneg i32 %div8.i.i.i16.i.i946 to i64 %1657 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i947 %sunkaddr7395 = getelementptr inbounds i8, ptr addrspace(1) %1657, i64 40 %1658 = atomicrmw and ptr addrspace(1) %sunkaddr7395, i32 %.lcssa9003 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1659, !amdgpu.uniform !42 1659: ; preds = %1656, %ComputeEnd5590 call void @llvm.amdgcn.end.cf.i64(i64 %7228) call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i.i961, !amdgpu.uniform !42 for.cond.i.i.i961: ; preds = %1659, %for.cond.i.i.i961 %phi.broken8666 = phi i64 [ 0, %1659 ], [ %1661, %for.cond.i.i.i961 ] %lsr.iv6635 = phi ptr addrspace(4) [ %scevgep6637, %for.cond.i.i.i961 ], [ %scevgep6634, %1659 ] %scevgep6637 = getelementptr i8, ptr addrspace(4) %lsr.iv6635, i64 1 %1660 = load i8, ptr addrspace(4) %scevgep6637, align 1, !tbaa !57 %cmp.i.i.i963 = icmp eq i8 %1660, 0 %1661 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.i.i963, i64 %phi.broken8666) %1662 = call i1 @llvm.amdgcn.loop.i64(i64 %1661) br i1 %1662, label %for.cond.i.i1.i970.preheader, label %for.cond.i.i.i961 for.cond.i.i1.i970.preheader: ; preds = %for.cond.i.i.i961 %scevgep6637.lcssa = phi ptr addrspace(4) [ %scevgep6637, %for.cond.i.i.i961 ] %.lcssa9004 = phi i64 [ %1661, %for.cond.i.i.i961 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9004) br label %for.cond.i.i1.i970, !amdgpu.uniform !42 for.cond.i.i1.i970: ; preds = %for.cond.i.i1.i970.preheader, %Flow8388 %1663 = phi i32 [ %1700, %Flow8388 ], [ %1156, %for.cond.i.i1.i970.preheader ] %1664 = phi i64 [ %1701, %Flow8388 ], [ %1157, %for.cond.i.i1.i970.preheader ] %1665 = phi i32 [ %1702, %Flow8388 ], [ %1158, %for.cond.i.i1.i970.preheader ] %retval.sroa.6.0.i.i.i971 = phi i32 [ %1705, %Flow8388 ], [ undef, %for.cond.i.i1.i970.preheader ] %retval.sroa.2.0.i.i.i973 = phi i64 [ %1704, %Flow8388 ], [ undef, %for.cond.i.i1.i970.preheader ] %retval.sroa.8.0.i.i.i974 = phi i32 [ %1703, %Flow8388 ], [ undef, %for.cond.i.i1.i970.preheader ] %index.0.i.i.i975 = phi i32 [ %1707, %Flow8388 ], [ 0, %for.cond.i.i1.i970.preheader ] %1666 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i976 = icmp ult i32 %index.0.i.i.i975, %1666 %spec.store.select.i.i.i977 = select i1 %cmp.not.i.i.i976, i32 %index.0.i.i.i975, i32 0 %1667 = call i64 @llvm.amdgcn.ballot.i64(i1 true) %1668 = and i32 %spec.store.select.i.i.i977, 31 %1669 = lshr i64 %1667, %sh_prom.i.i.i.i756 %1670 = trunc i64 %1669 to i32 %conv4.i.i.i.i.i981 = and i32 %1670, 1 %shl.i.i.i.i.i982 = shl nuw i32 %conv4.i.i.i.i.i981, %1668 br label %ComputeLoop5593, !amdgpu.uniform !42 1671: ; preds = %ComputeEnd5594 %sunkaddr7396 = getelementptr inbounds i8, ptr addrspace(1) %7238, i64 40 %1672 = atomicrmw or ptr addrspace(1) %sunkaddr7396, i32 %.lcssa9005 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1673, !amdgpu.uniform !42 1673: ; preds = %1671, %ComputeEnd5594 %1674 = phi i32 [ %1672, %1671 ], [ poison, %ComputeEnd5594 ] call void @llvm.amdgcn.end.cf.i64(i64 %7247) %1675 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %1674) %1676 = or i32 %1675, %.lcssa9006 %shl5.i.i.i.i.i983 = shl nuw i32 1, %1668 %and.i.i.i.i.i984 = and i32 %shl5.i.i.i.i.i983, %1676 %tobool3.i.i.i.i985 = icmp ne i32 %and.i.i.i.i.i984, 0 %1677 = call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i985) %and.i.i.i.i.i.i986 = and i64 %1677, %1667 %cmp.i.not.i.i.i987 = icmp ne i64 %1667, %and.i.i.i.i.i.i986 br i1 %cmp.i.not.i.i.i987, label %if.then.i.i.i.i988, label %Flow8387, !amdgpu.uniform !42 if.then.i.i.i.i988: ; preds = %1673 fence syncscope("agent") acquire %1678 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %1679 = extractelement <2 x i64> %1678, i32 0 %1680 = inttoptr i64 %1679 to ptr %1681 = extractelement <2 x i64> %1678, i32 1 %1682 = inttoptr i64 %1681 to ptr %idxprom.i.i.i.i989 = zext i32 %spec.store.select.i.i.i977 to i64 %arrayidx.i.i.i.i990 = getelementptr inbounds nuw i32, ptr %1680, i64 %idxprom.i.i.i.i989, !amdgpu.uniform !42 %1683 = load atomic i32, ptr %arrayidx.i.i.i.i990 monotonic, align 4 %1684 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1683) %arrayidx.i45.i.i.i991 = getelementptr inbounds nuw i32, ptr %1682, i64 %idxprom.i.i.i.i989, !amdgpu.uniform !42 %1685 = load atomic i32, ptr %arrayidx.i45.i.i.i991 monotonic, align 4 %1686 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1685) %cmp.i46.not.i.i.i992 = icmp ne i32 %1684, %1686 br i1 %cmp.i46.not.i.i.i992, label %if.then12.i.i.i993, label %Flow8385, !amdgpu.uniform !42 if.then12.i.i.i993: ; preds = %if.then.i.i.i.i988 fence syncscope("agent") release %1687 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1667, i1 true) %iszero.i.i.i.i.i.i.i994 = icmp ne i64 %1667, 0 %cmp2.i.i.i.i.i.i995 = icmp eq i64 %1687, %sh_prom.i.i.i.i756 %cmp.i.i.i.i.i.i996 = select i1 %iszero.i.i.i.i.i.i.i994, i1 %cmp2.i.i.i.i.i.i995, i1 false %conv4.i.i51.i.i.i997 = zext i1 %cmp.i.i.i.i.i.i996 to i32 %shl.i.i52.i.i.i998 = shl nuw i32 %conv4.i.i51.i.i.i997, %1668 %xor.i.i.i.i.i999 = xor i32 %shl.i.i52.i.i.i998, -1 %1688 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5598, !amdgpu.uniform !42 1689: ; preds = %ComputeEnd5599 %sunkaddr7397 = getelementptr inbounds i8, ptr addrspace(1) %7238, i64 40 %1690 = atomicrmw and ptr addrspace(1) %sunkaddr7397, i32 %.lcssa9007 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1691, !amdgpu.uniform !42 1691: ; preds = %1689, %ComputeEnd5599 call void @llvm.amdgcn.end.cf.i64(i64 %7265) call void @llvm.amdgcn.wave.barrier() br label %Flow8385, !amdgpu.uniform !42 if.end14.i.i.i1059: ; preds = %Flow8385 %1692 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1667, i1 true) %iszero.i.i.i.i.i.i1060 = icmp ne i64 %1667, 0 %cmp2.i.i.i.i.i1061 = icmp eq i64 %1692, %sh_prom.i.i.i.i756 %cmp.i.i.i.i.i1062 = select i1 %iszero.i.i.i.i.i.i1060, i1 %cmp2.i.i.i.i.i1061, i1 false %1693 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i1062) %1694 = extractvalue { i1, i64 } %1693, 0 %1695 = extractvalue { i1, i64 } %1693, 1 br i1 %1694, label %if.then16.i.i.i1064, label %if.end22.i.i.i1063 if.then16.i.i.i1064: ; preds = %if.end14.i.i.i1059 %1696 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i1065 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1696, i64 %idxprom.i.i.i.i989, i32 1 store i32 1660944387, ptr %opcode.i.i.i1065, align 8, !tbaa !77 %arrayidx21.i.i.i1066 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1696, i64 %idxprom.i.i.i.i989 store i64 %1667, ptr %arrayidx21.i.i.i1066, align 8, !tbaa !80 br label %if.end22.i.i.i1063, !amdgpu.uniform !42 Flow8386: ; preds = %if.end22.i.i.i1063, %Flow8385 %1697 = phi i32 [ %1684, %if.end22.i.i.i1063 ], [ %retval.sroa.8.0.i.i.i974, %Flow8385 ] %1698 = phi i64 [ %1667, %if.end22.i.i.i1063 ], [ %retval.sroa.2.0.i.i.i973, %Flow8385 ] %1699 = phi i32 [ %spec.store.select.i.i.i977, %if.end22.i.i.i1063 ], [ %retval.sroa.6.0.i.i.i971, %Flow8385 ] br label %cleanup26.i.i.i1000, !amdgpu.uniform !42 if.end22.i.i.i1063: ; preds = %if.then16.i.i.i1064, %if.end14.i.i.i1059 call void @llvm.amdgcn.end.cf.i64(i64 %1695) call void @llvm.amdgcn.wave.barrier() br label %Flow8386, !amdgpu.uniform !42 Flow8387: ; preds = %cleanup26.i.i.i1000, %1673 %1700 = phi i32 [ %1699, %cleanup26.i.i.i1000 ], [ %1663, %1673 ] %1701 = phi i64 [ %1698, %cleanup26.i.i.i1000 ], [ %1664, %1673 ] %1702 = phi i32 [ %1697, %cleanup26.i.i.i1000 ], [ %1665, %1673 ] %1703 = phi i32 [ %1697, %cleanup26.i.i.i1000 ], [ %retval.sroa.8.0.i.i.i974, %1673 ] %1704 = phi i64 [ %1698, %cleanup26.i.i.i1000 ], [ %retval.sroa.2.0.i.i.i973, %1673 ] %1705 = phi i32 [ %1699, %cleanup26.i.i.i1000 ], [ %retval.sroa.6.0.i.i.i971, %1673 ] %1706 = phi i1 [ %cmp.i46.not.i.i.i992, %cleanup26.i.i.i1000 ], [ true, %1673 ] br i1 %1706, label %for.inc.i.i.i1005, label %Flow8388, !amdgpu.uniform !42 cleanup26.i.i.i1000: ; preds = %Flow8386 br label %Flow8387, !amdgpu.uniform !42 for.inc.i.i.i1005: ; preds = %Flow8387 %inc.i.i.i1010 = add i32 %spec.store.select.i.i.i977, 1 br label %Flow8388, !amdgpu.uniform !42 Flow8388: ; preds = %for.inc.i.i.i1005, %Flow8387 %1707 = phi i32 [ %inc.i.i.i1010, %for.inc.i.i.i1005 ], [ poison, %Flow8387 ] %1708 = phi i1 [ false, %for.inc.i.i.i1005 ], [ true, %Flow8387 ] br i1 %1708, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1011, label %for.cond.i.i1.i970, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1011: ; preds = %Flow8388 %.lcssa9010 = phi i32 [ %1700, %Flow8388 ] %.lcssa9009 = phi i64 [ %1701, %Flow8388 ] %.lcssa9008 = phi i32 [ %1702, %Flow8388 ] %1709 = addrspacecast ptr addrspace(4) %scevgep6637.lcssa to ptr %1710 = addrspacecast ptr addrspace(4) %cond6 to ptr %1711 = ptrtoint ptr %1710 to i64 %sub.ptr.lhs.cast.i.i.i966 = ptrtoint ptr %1709 to i64 %sub.ptr.sub.i.i.i968 = sub i64 %sub.ptr.lhs.cast.i.i.i966, %1711 fence acquire %1712 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i1012 = shl i32 %.lcssa9010, 6 %idxprom.i19.i.i.i.i.i1013 = zext i32 %mul.i.i.i.i.i.i1012 to i64 %arrayidx.i20.i.i.i.i.i1014 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %1712, i64 %idxprom.i19.i.i.i.i.i1013 %arrayidx.i22.i.i.i.i.i1015 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i1014, i64 %sh_prom.i.i.i.i756 store i64 %sub.ptr.sub.i.i.i968, ptr %arrayidx.i22.i.i.i.i.i1015, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i1016 = call i64 @llvm.umin.i64(i64 %sub.ptr.sub.i.i.i968, i64 56) %1713 = and i64 %spec.select.i.i.i.i.i.i.i1016, 15 %1714 = sub i64 %spec.select.i.i.i.i.i.i.i1016, %1713 %1715 = icmp ne i64 %1714, 0 %1716 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1715) %1717 = extractvalue { i1, i64 } %1716, 0 %1718 = extractvalue { i1, i64 } %1716, 1 br i1 %1717, label %loop-memcpy-expansion5187.preheader, label %Flow8384 loop-memcpy-expansion5187.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1011 %scevgep6638 = getelementptr i8, ptr %1712, i64 8 %scevgep6639 = getelementptr i8, ptr %scevgep6638, i64 %1474 %1719 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1013, 6 %scevgep6640 = getelementptr i8, ptr %scevgep6639, i64 %1719 br label %loop-memcpy-expansion5187, !amdgpu.uniform !42 Flow8384: ; preds = %Flow8383, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1011 call void @llvm.amdgcn.end.cf.i64(i64 %1718) br label %loop-memcpy-residual-header5190, !amdgpu.uniform !42 loop-memcpy-expansion5187: ; preds = %loop-memcpy-expansion5187.preheader, %loop-memcpy-expansion5187 %phi.broken8667 = phi i64 [ 0, %loop-memcpy-expansion5187.preheader ], [ %1724, %loop-memcpy-expansion5187 ] %loop-index5188 = phi i64 [ %1722, %loop-memcpy-expansion5187 ], [ 0, %loop-memcpy-expansion5187.preheader ] %1720 = getelementptr i8, ptr addrspace(4) %cond6, i64 %loop-index5188 %1721 = load <4 x i32>, ptr addrspace(4) %1720, align 1 %scevgep6641 = getelementptr i8, ptr %scevgep6640, i64 %loop-index5188 store <4 x i32> %1721, ptr %scevgep6641, align 1 %1722 = add i64 %loop-index5188, 16 %1723 = icmp uge i64 %1722, %1714 %1724 = call i64 @llvm.amdgcn.if.break.i64(i1 %1723, i64 %phi.broken8667) %1725 = call i1 @llvm.amdgcn.loop.i64(i64 %1724) br i1 %1725, label %Flow8383, label %loop-memcpy-expansion5187 Flow8382: ; preds = %Flow8380, %Flow8381 %1726 = phi i64 [ %6488, %Flow8380 ], [ %6483, %Flow8381 ] call void @llvm.amdgcn.end.cf.i64(i64 %6486) br label %post-loop-memcpy-expansion5186, !amdgpu.uniform !42 loop-memcpy-residual5189: ; preds = %loop-memcpy-residual5189.preheader, %loop-memcpy-residual5189 %phi.broken8668 = phi i64 [ 0, %loop-memcpy-residual5189.preheader ], [ %1730, %loop-memcpy-residual5189 ] %residual-loop-index5191 = phi i64 [ %1728, %loop-memcpy-residual5189 ], [ 0, %loop-memcpy-residual5189.preheader ] %scevgep6647 = getelementptr i8, ptr addrspace(4) %scevgep6646, i64 %residual-loop-index5191 %1727 = load i8, ptr addrspace(4) %scevgep6647, align 1 %scevgep6645 = getelementptr i8, ptr %scevgep6644, i64 %residual-loop-index5191 store i8 %1727, ptr %scevgep6645, align 1 %1728 = add i64 %residual-loop-index5191, 1 %1729 = icmp uge i64 %1728, %1713 %1730 = call i64 @llvm.amdgcn.if.break.i64(i1 %1729, i64 %phi.broken8668) %1731 = call i1 @llvm.amdgcn.loop.i64(i64 %1730) br i1 %1731, label %Flow8380, label %loop-memcpy-residual5189 Flow8380: ; preds = %loop-memcpy-residual5189 %.lcssa9012 = phi i64 [ %1730, %loop-memcpy-residual5189 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9012) br label %Flow8382, !amdgpu.uniform !42 post-loop-memcpy-expansion5186: ; preds = %Flow8382 %1732 = addrspacecast ptr addrspace(4) %scevgep6637.lcssa to ptr %1733 = ptrtoint ptr %1732 to i64 %tobool.not.i.i.i.i.i.i1018 = icmp eq i32 %.lcssa9008, 0 %conv.i.i.i.i.i.i1019 = zext i1 %tobool.not.i.i.i.i.i.i1018 to i32 fence release %1734 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i1020 = zext i32 %.lcssa9010 to i64 %arrayidx.i24.i.i.i.i.i1021 = getelementptr inbounds nuw i32, ptr %1734, i64 %idxprom.i23.i.i.i.i.i1020 store atomic i32 %conv.i.i.i.i.i.i1019, ptr %arrayidx.i24.i.i.i.i.i1021 monotonic, align 4 %1735 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i1022 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1735, i64 %idxprom.i23.i.i.i.i.i1020 %1736 = load i64, ptr %arrayidx.i.i5.i.i1022, align 8, !tbaa !80 %1737 = add i64 %1141, %1733 br label %while.cond.i.i.i.i1023, !amdgpu.uniform !42 while.cond.i.i.i.i1023: ; preds = %post-loop-memcpy-expansion5186, %Flow8379 %phi.broken8672 = phi i64 [ 0, %post-loop-memcpy-expansion5186 ], [ %1759, %Flow8379 ] %lsr.iv6654 = phi i64 [ %1757, %Flow8379 ], [ %1737, %post-loop-memcpy-expansion5186 ] %lsr.iv6649 = phi ptr addrspace(4) [ %1756, %Flow8379 ], [ %scevgep6648, %post-loop-memcpy-expansion5186 ] %port.sroa.37.0.i.i1024 = phi i32 [ %1755, %Flow8379 ], [ %conv.i.i.i.i.i.i1019, %post-loop-memcpy-expansion5186 ] %idx.0.i.i.i.i1025 = phi i64 [ %1754, %Flow8379 ], [ 56, %post-loop-memcpy-expansion5186 ] %cmp.i.i.i.i1026 = icmp ugt i64 %sub.ptr.sub.i.i.i968, %idx.0.i.i.i.i1025 %1738 = call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i1026) %and.i.i.i.i6.i.i1027 = and i64 %1738, %1736 %tobool.not.i.i.i.i1028 = icmp ne i64 %and.i.i.i.i6.i.i1027, 0 %1739 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i1029 = getelementptr inbounds nuw i32, ptr %1739, i64 %idxprom.i23.i.i.i.i.i1020 %1740 = load atomic i32, ptr %arrayidx.i22.i.i.i1029 monotonic, align 4 %1741 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i1028) %1742 = extractvalue { i1, i64 } %1741, 0 %1743 = extractvalue { i1, i64 } %1741, 1 br i1 %1742, label %cond.false.i8.i.i.i.i1030, label %Flow8379 cond.false.i8.i.i.i.i1030: ; preds = %while.cond.i.i.i.i1023 %1744 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1740) %1745 = icmp ne i32 %1744, %port.sroa.37.0.i.i1024 %1746 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1745) %1747 = extractvalue { i1, i64 } %1746, 0 %1748 = extractvalue { i1, i64 } %1746, 1 br i1 %1747, label %while.body.i.i21.i.i.i.i1031.preheader, label %Flow8378 while.body.i.i21.i.i.i.i1031.preheader: ; preds = %cond.false.i8.i.i.i.i1030 br label %while.body.i.i21.i.i.i.i1031, !amdgpu.uniform !42 Flow8378: ; preds = %Flow8377, %cond.false.i8.i.i.i.i1030 call void @llvm.amdgcn.end.cf.i64(i64 %1748) br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1034, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1031: ; preds = %while.body.i.i21.i.i.i.i1031.preheader, %while.body.i.i21.i.i.i.i1031 %phi.broken8669 = phi i64 [ 0, %while.body.i.i21.i.i.i.i1031.preheader ], [ %1752, %while.body.i.i21.i.i.i.i1031 ] call void @llvm.amdgcn.s.sleep(i32 2) %1749 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i1032 = getelementptr inbounds nuw i32, ptr %1749, i64 %idxprom.i23.i.i.i.i.i1020 %1750 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i1032 monotonic, align 4 %1751 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1750) %cmp.i.not.i.i23.i.i.i.i1033 = icmp eq i32 %1751, %port.sroa.37.0.i.i1024 %1752 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i23.i.i.i.i1033, i64 %phi.broken8669) %1753 = call i1 @llvm.amdgcn.loop.i64(i64 %1752) br i1 %1753, label %Flow8377, label %while.body.i.i21.i.i.i.i1031 Flow8377: ; preds = %while.body.i.i21.i.i.i.i1031 %.lcssa9013 = phi i64 [ %1752, %while.body.i.i21.i.i.i.i1031 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9013) br label %Flow8378, !amdgpu.uniform !42 Flow8379: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1035, %while.cond.i.i.i.i1023 %1754 = phi i64 [ %add.i.i.i.i1038, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1035 ], [ poison, %while.cond.i.i.i.i1023 ] %1755 = phi i32 [ %conv.i.i26.i.i.i.i1036, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1035 ], [ poison, %while.cond.i.i.i.i1023 ] %1756 = phi ptr addrspace(4) [ %scevgep6650, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1035 ], [ poison, %while.cond.i.i.i.i1023 ] %1757 = phi i64 [ %lsr.iv.next6655, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1035 ], [ poison, %while.cond.i.i.i.i1023 ] %1758 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1035 ], [ true, %while.cond.i.i.i.i1023 ] call void @llvm.amdgcn.end.cf.i64(i64 %1743) %1759 = call i64 @llvm.amdgcn.if.break.i64(i1 %1758, i64 %phi.broken8672) %1760 = call i1 @llvm.amdgcn.loop.i64(i64 %1759) br i1 %1760, label %cond.false.i.i.i1045, label %while.cond.i.i.i.i1023 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1034: ; preds = %Flow8378 fence acquire %1761 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i1026) %1762 = extractvalue { i1, i64 } %1761, 0 %1763 = extractvalue { i1, i64 } %1761, 1 br i1 %1762, label %if.then.i.i.i.i.i.i.i1039, label %Flow8376 if.then.i.i.i.i.i.i.i1039: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1034 %sub.i.i.i.i.i.i.i1041 = sub nuw i64 %sub.ptr.sub.i.i.i968, %idx.0.i.i.i.i1025 %spec.select.i.i.i36.i.i.i.i1042 = call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i1041, i64 64) %1764 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %1765 = and i64 %spec.select.i.i.i36.i.i.i.i1042, 15 %1766 = sub i64 %spec.select.i.i.i36.i.i.i.i1042, %1765 %1767 = icmp ne i64 %1766, 0 %1768 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1767) %1769 = extractvalue { i1, i64 } %1768, 0 %1770 = extractvalue { i1, i64 } %1768, 1 br i1 %1769, label %loop-memcpy-expansion5277.preheader, label %Flow8375 loop-memcpy-expansion5277.preheader: ; preds = %if.then.i.i.i.i.i.i.i1039 %arrayidx.i20.i35.i.i.i.i1043 = getelementptr %"struct.rpc::Buffer", ptr %1764, i64 %idxprom.i19.i.i.i.i.i1013 %arrayidx.i22.i38.i.i.i.i1044 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i1043, i64 %sh_prom.i.i.i.i756 br label %loop-memcpy-expansion5277, !amdgpu.uniform !42 Flow8375: ; preds = %Flow8374, %if.then.i.i.i.i.i.i.i1039 call void @llvm.amdgcn.end.cf.i64(i64 %1770) br label %loop-memcpy-residual-header5280, !amdgpu.uniform !42 loop-memcpy-expansion5277: ; preds = %loop-memcpy-expansion5277.preheader, %loop-memcpy-expansion5277 %phi.broken8670 = phi i64 [ 0, %loop-memcpy-expansion5277.preheader ], [ %1775, %loop-memcpy-expansion5277 ] %loop-index5278 = phi i64 [ %1773, %loop-memcpy-expansion5277 ], [ 0, %loop-memcpy-expansion5277.preheader ] %scevgep6651 = getelementptr i8, ptr addrspace(4) %lsr.iv6649, i64 %loop-index5278 %1771 = load <4 x i32>, ptr addrspace(4) %scevgep6651, align 1 %1772 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i1044, i64 %loop-index5278 store <4 x i32> %1771, ptr %1772, align 1 %1773 = add i64 %loop-index5278, 16 %1774 = icmp uge i64 %1773, %1766 %1775 = call i64 @llvm.amdgcn.if.break.i64(i1 %1774, i64 %phi.broken8670) %1776 = call i1 @llvm.amdgcn.loop.i64(i64 %1775) br i1 %1776, label %Flow8374, label %loop-memcpy-expansion5277 Flow8373: ; preds = %Flow8372, %loop-memcpy-residual-header5280 call void @llvm.amdgcn.end.cf.i64(i64 %6560) br label %Flow8376, !amdgpu.uniform !42 loop-memcpy-residual5279: ; preds = %loop-memcpy-residual5279.preheader, %loop-memcpy-residual5279 %phi.broken8671 = phi i64 [ 0, %loop-memcpy-residual5279.preheader ], [ %1780, %loop-memcpy-residual5279 ] %residual-loop-index5281 = phi i64 [ %1778, %loop-memcpy-residual5279 ], [ 0, %loop-memcpy-residual5279.preheader ] %scevgep6660 = getelementptr i8, ptr addrspace(4) %scevgep6659, i64 %residual-loop-index5281 %1777 = load i8, ptr addrspace(4) %scevgep6660, align 1 %scevgep6658 = getelementptr i8, ptr %scevgep6657, i64 %residual-loop-index5281 store i8 %1777, ptr %scevgep6658, align 1 %1778 = add i64 %residual-loop-index5281, 1 %1779 = icmp uge i64 %1778, %1765 %1780 = call i64 @llvm.amdgcn.if.break.i64(i1 %1779, i64 %phi.broken8671) %1781 = call i1 @llvm.amdgcn.loop.i64(i64 %1780) br i1 %1781, label %Flow8372, label %loop-memcpy-residual5279 Flow8372: ; preds = %loop-memcpy-residual5279 %.lcssa9015 = phi i64 [ %1780, %loop-memcpy-residual5279 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9015) br label %Flow8373, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1035: ; preds = %Flow8376 %conv.i.i26.i.i.i.i1036 = xor i32 %port.sroa.37.0.i.i1024, 1 fence release %1782 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i1037 = getelementptr inbounds nuw i32, ptr %1782, i64 %idxprom.i23.i.i.i.i.i1020 store atomic i32 %conv.i.i26.i.i.i.i1036, ptr %arrayidx.i24.i29.i.i.i.i1037 monotonic, align 4 %add.i.i.i.i1038 = add i64 %idx.0.i.i.i.i1025, 64 %scevgep6650 = getelementptr i8, ptr addrspace(4) %lsr.iv6649, i64 64 %lsr.iv.next6655 = add i64 %lsr.iv6654, -64 br label %Flow8379, !amdgpu.uniform !42 cond.false.i.i.i1045: ; preds = %Flow8379 %.lcssa9017 = phi i64 [ %1759, %Flow8379 ] %port.sroa.37.0.i.i1024.lcssa = phi i32 [ %port.sroa.37.0.i.i1024, %Flow8379 ] %.lcssa9016 = phi i32 [ %1740, %Flow8379 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9017) %1783 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa9016) %1784 = icmp ne i32 %1783, %port.sroa.37.0.i.i1024.lcssa %1785 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1784) %1786 = extractvalue { i1, i64 } %1785, 0 %1787 = extractvalue { i1, i64 } %1785, 1 br i1 %1786, label %while.body.i.i.i.i1046.preheader, label %Flow8371 while.body.i.i.i.i1046.preheader: ; preds = %cond.false.i.i.i1045 br label %while.body.i.i.i.i1046, !amdgpu.uniform !42 Flow8371: ; preds = %Flow8370, %cond.false.i.i.i1045 call void @llvm.amdgcn.end.cf.i64(i64 %1787) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1067, !amdgpu.uniform !42 while.body.i.i.i.i1046: ; preds = %while.body.i.i.i.i1046.preheader, %while.body.i.i.i.i1046 %phi.broken8673 = phi i64 [ 0, %while.body.i.i.i.i1046.preheader ], [ %1791, %while.body.i.i.i.i1046 ] call void @llvm.amdgcn.s.sleep(i32 2) %1788 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i1047 = getelementptr inbounds nuw i32, ptr %1788, i64 %idxprom.i23.i.i.i.i.i1020 %1789 = load atomic i32, ptr %arrayidx.i.i.i8.i.i1047 monotonic, align 4 %1790 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1789) %cmp.i.not.i.i.i.i1048 = icmp eq i32 %1790, %port.sroa.37.0.i.i1024.lcssa %1791 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i1048, i64 %phi.broken8673) %1792 = call i1 @llvm.amdgcn.loop.i64(i64 %1791) br i1 %1792, label %Flow8370, label %while.body.i.i.i.i1046 Flow8370: ; preds = %while.body.i.i.i.i1046 %.lcssa9018 = phi i64 [ %1791, %while.body.i.i.i.i1046 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9018) br label %Flow8371, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1067: ; preds = %Flow8371 fence acquire call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %1793 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa9009, i1 true) %iszero.i.i.i.i.i13.i.i1050 = icmp ne i64 %.lcssa9009, 0 %cmp2.i.i.i.i14.i.i1051 = icmp eq i64 %1793, %sh_prom.i.i.i.i756 %cmp.i.i.i.i15.i.i1052 = select i1 %iszero.i.i.i.i.i13.i.i1050, i1 %cmp2.i.i.i.i14.i.i1051, i1 false %1794 = and i32 %.lcssa9010, 31 %conv4.i.i.i19.i.i1056 = zext i1 %cmp.i.i.i.i15.i.i1052 to i32 %shl.i.i.i20.i.i1057 = shl nuw i32 %conv4.i.i.i19.i.i1056, %1794 %xor.i.i.i21.i.i1058 = xor i32 %shl.i.i.i20.i.i1057, -1 %1795 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5602, !amdgpu.uniform !42 1796: ; preds = %ComputeEnd5603 %div8.i.i.i16.i.i1053 = lshr i32 %.lcssa9010, 5 %idxprom.i.i.i17.i.i1054 = zext nneg i32 %div8.i.i.i16.i.i1053 to i64 %1797 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i1054 %sunkaddr7398 = getelementptr inbounds i8, ptr addrspace(1) %1797, i64 40 %1798 = atomicrmw and ptr addrspace(1) %sunkaddr7398, i32 %.lcssa9019 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1799, !amdgpu.uniform !42 1799: ; preds = %1796, %ComputeEnd5603 call void @llvm.amdgcn.end.cf.i64(i64 %7282) call void @llvm.amdgcn.wave.barrier() %scevgep6661 = getelementptr i8, ptr %call18, i64 -1 br label %for.cond.i.i.i1068, !amdgpu.uniform !42 for.cond.i.i.i1068: ; preds = %1799, %for.cond.i.i.i1068 %phi.broken8674 = phi i64 [ 0, %1799 ], [ %1801, %for.cond.i.i.i1068 ] %lsr.iv6685 = phi i64 [ %lsr.iv.next6686, %for.cond.i.i.i1068 ], [ -56, %1799 ] %lsr.iv6671 = phi i64 [ %lsr.iv.next6672, %for.cond.i.i.i1068 ], [ -1, %1799 ] %lsr.iv6662 = phi ptr [ %scevgep6664, %for.cond.i.i.i1068 ], [ %scevgep6661, %1799 ] %scevgep6664 = getelementptr i8, ptr %lsr.iv6662, i64 1 %1800 = load i8, ptr %scevgep6664, align 1, !tbaa !57 %cmp.i.i.i1070 = icmp eq i8 %1800, 0 %lsr.iv.next6672 = add i64 %lsr.iv6671, 1 %lsr.iv.next6686 = add i64 %lsr.iv6685, 1 %1801 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.i.i1070, i64 %phi.broken8674) %1802 = call i1 @llvm.amdgcn.loop.i64(i64 %1801) br i1 %1802, label %for.cond.i.i1.i1077.preheader, label %for.cond.i.i.i1068 for.cond.i.i1.i1077.preheader: ; preds = %for.cond.i.i.i1068 %lsr.iv6685.lcssa = phi i64 [ %lsr.iv6685, %for.cond.i.i.i1068 ] %scevgep6664.lcssa = phi ptr [ %scevgep6664, %for.cond.i.i.i1068 ] %lsr.iv.next6672.lcssa = phi i64 [ %lsr.iv.next6672, %for.cond.i.i.i1068 ] %.lcssa9020 = phi i64 [ %1801, %for.cond.i.i.i1068 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9020) br label %for.cond.i.i1.i1077, !amdgpu.uniform !42 for.cond.i.i1.i1077: ; preds = %for.cond.i.i1.i1077.preheader, %Flow8369 %1803 = phi i32 [ %1840, %Flow8369 ], [ %1159, %for.cond.i.i1.i1077.preheader ] %1804 = phi i64 [ %1841, %Flow8369 ], [ %1160, %for.cond.i.i1.i1077.preheader ] %1805 = phi i32 [ %1842, %Flow8369 ], [ %1161, %for.cond.i.i1.i1077.preheader ] %retval.sroa.6.0.i.i.i1078 = phi i32 [ %1845, %Flow8369 ], [ undef, %for.cond.i.i1.i1077.preheader ] %retval.sroa.2.0.i.i.i1080 = phi i64 [ %1844, %Flow8369 ], [ undef, %for.cond.i.i1.i1077.preheader ] %retval.sroa.8.0.i.i.i1081 = phi i32 [ %1843, %Flow8369 ], [ undef, %for.cond.i.i1.i1077.preheader ] %index.0.i.i.i1082 = phi i32 [ %1847, %Flow8369 ], [ 0, %for.cond.i.i1.i1077.preheader ] %1806 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i1083 = icmp ult i32 %index.0.i.i.i1082, %1806 %spec.store.select.i.i.i1084 = select i1 %cmp.not.i.i.i1083, i32 %index.0.i.i.i1082, i32 0 %1807 = call i64 @llvm.amdgcn.ballot.i64(i1 true) %1808 = and i32 %spec.store.select.i.i.i1084, 31 %1809 = lshr i64 %1807, %sh_prom.i.i.i.i756 %1810 = trunc i64 %1809 to i32 %conv4.i.i.i.i.i1088 = and i32 %1810, 1 %shl.i.i.i.i.i1089 = shl nuw i32 %conv4.i.i.i.i.i1088, %1808 br label %ComputeLoop5606, !amdgpu.uniform !42 1811: ; preds = %ComputeEnd5607 %sunkaddr7399 = getelementptr inbounds i8, ptr addrspace(1) %7292, i64 40 %1812 = atomicrmw or ptr addrspace(1) %sunkaddr7399, i32 %.lcssa9021 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1813, !amdgpu.uniform !42 1813: ; preds = %1811, %ComputeEnd5607 %1814 = phi i32 [ %1812, %1811 ], [ poison, %ComputeEnd5607 ] call void @llvm.amdgcn.end.cf.i64(i64 %7301) %1815 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %1814) %1816 = or i32 %1815, %.lcssa9022 %shl5.i.i.i.i.i1090 = shl nuw i32 1, %1808 %and.i.i.i.i.i1091 = and i32 %shl5.i.i.i.i.i1090, %1816 %tobool3.i.i.i.i1092 = icmp ne i32 %and.i.i.i.i.i1091, 0 %1817 = call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i1092) %and.i.i.i.i.i.i1093 = and i64 %1817, %1807 %cmp.i.not.i.i.i1094 = icmp ne i64 %1807, %and.i.i.i.i.i.i1093 br i1 %cmp.i.not.i.i.i1094, label %if.then.i.i.i.i1095, label %Flow8368, !amdgpu.uniform !42 if.then.i.i.i.i1095: ; preds = %1813 fence syncscope("agent") acquire %1818 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %1819 = extractelement <2 x i64> %1818, i32 0 %1820 = inttoptr i64 %1819 to ptr %1821 = extractelement <2 x i64> %1818, i32 1 %1822 = inttoptr i64 %1821 to ptr %idxprom.i.i.i.i1096 = zext i32 %spec.store.select.i.i.i1084 to i64 %arrayidx.i.i.i.i1097 = getelementptr inbounds nuw i32, ptr %1820, i64 %idxprom.i.i.i.i1096, !amdgpu.uniform !42 %1823 = load atomic i32, ptr %arrayidx.i.i.i.i1097 monotonic, align 4 %1824 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1823) %arrayidx.i45.i.i.i1098 = getelementptr inbounds nuw i32, ptr %1822, i64 %idxprom.i.i.i.i1096, !amdgpu.uniform !42 %1825 = load atomic i32, ptr %arrayidx.i45.i.i.i1098 monotonic, align 4 %1826 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1825) %cmp.i46.not.i.i.i1099 = icmp ne i32 %1824, %1826 br i1 %cmp.i46.not.i.i.i1099, label %if.then12.i.i.i1100, label %Flow8366, !amdgpu.uniform !42 if.then12.i.i.i1100: ; preds = %if.then.i.i.i.i1095 fence syncscope("agent") release %1827 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1807, i1 true) %iszero.i.i.i.i.i.i.i1101 = icmp ne i64 %1807, 0 %cmp2.i.i.i.i.i.i1102 = icmp eq i64 %1827, %sh_prom.i.i.i.i756 %cmp.i.i.i.i.i.i1103 = select i1 %iszero.i.i.i.i.i.i.i1101, i1 %cmp2.i.i.i.i.i.i1102, i1 false %conv4.i.i51.i.i.i1104 = zext i1 %cmp.i.i.i.i.i.i1103 to i32 %shl.i.i52.i.i.i1105 = shl nuw i32 %conv4.i.i51.i.i.i1104, %1808 %xor.i.i.i.i.i1106 = xor i32 %shl.i.i52.i.i.i1105, -1 %1828 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5611, !amdgpu.uniform !42 1829: ; preds = %ComputeEnd5612 %sunkaddr7400 = getelementptr inbounds i8, ptr addrspace(1) %7292, i64 40 %1830 = atomicrmw and ptr addrspace(1) %sunkaddr7400, i32 %.lcssa9023 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1831, !amdgpu.uniform !42 1831: ; preds = %1829, %ComputeEnd5612 call void @llvm.amdgcn.end.cf.i64(i64 %7319) call void @llvm.amdgcn.wave.barrier() br label %Flow8366, !amdgpu.uniform !42 if.end14.i.i.i1166: ; preds = %Flow8366 %1832 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1807, i1 true) %iszero.i.i.i.i.i.i1167 = icmp ne i64 %1807, 0 %cmp2.i.i.i.i.i1168 = icmp eq i64 %1832, %sh_prom.i.i.i.i756 %cmp.i.i.i.i.i1169 = select i1 %iszero.i.i.i.i.i.i1167, i1 %cmp2.i.i.i.i.i1168, i1 false %1833 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i1169) %1834 = extractvalue { i1, i64 } %1833, 0 %1835 = extractvalue { i1, i64 } %1833, 1 br i1 %1834, label %if.then16.i.i.i1171, label %if.end22.i.i.i1170 if.then16.i.i.i1171: ; preds = %if.end14.i.i.i1166 %1836 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i1172 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1836, i64 %idxprom.i.i.i.i1096, i32 1 store i32 1660944387, ptr %opcode.i.i.i1172, align 8, !tbaa !77 %arrayidx21.i.i.i1173 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1836, i64 %idxprom.i.i.i.i1096 store i64 %1807, ptr %arrayidx21.i.i.i1173, align 8, !tbaa !80 br label %if.end22.i.i.i1170, !amdgpu.uniform !42 Flow8367: ; preds = %if.end22.i.i.i1170, %Flow8366 %1837 = phi i32 [ %1824, %if.end22.i.i.i1170 ], [ %retval.sroa.8.0.i.i.i1081, %Flow8366 ] %1838 = phi i64 [ %1807, %if.end22.i.i.i1170 ], [ %retval.sroa.2.0.i.i.i1080, %Flow8366 ] %1839 = phi i32 [ %spec.store.select.i.i.i1084, %if.end22.i.i.i1170 ], [ %retval.sroa.6.0.i.i.i1078, %Flow8366 ] br label %cleanup26.i.i.i1107, !amdgpu.uniform !42 if.end22.i.i.i1170: ; preds = %if.then16.i.i.i1171, %if.end14.i.i.i1166 call void @llvm.amdgcn.end.cf.i64(i64 %1835) call void @llvm.amdgcn.wave.barrier() br label %Flow8367, !amdgpu.uniform !42 Flow8368: ; preds = %cleanup26.i.i.i1107, %1813 %1840 = phi i32 [ %1839, %cleanup26.i.i.i1107 ], [ %1803, %1813 ] %1841 = phi i64 [ %1838, %cleanup26.i.i.i1107 ], [ %1804, %1813 ] %1842 = phi i32 [ %1837, %cleanup26.i.i.i1107 ], [ %1805, %1813 ] %1843 = phi i32 [ %1837, %cleanup26.i.i.i1107 ], [ %retval.sroa.8.0.i.i.i1081, %1813 ] %1844 = phi i64 [ %1838, %cleanup26.i.i.i1107 ], [ %retval.sroa.2.0.i.i.i1080, %1813 ] %1845 = phi i32 [ %1839, %cleanup26.i.i.i1107 ], [ %retval.sroa.6.0.i.i.i1078, %1813 ] %1846 = phi i1 [ %cmp.i46.not.i.i.i1099, %cleanup26.i.i.i1107 ], [ true, %1813 ] br i1 %1846, label %for.inc.i.i.i1112, label %Flow8369, !amdgpu.uniform !42 cleanup26.i.i.i1107: ; preds = %Flow8367 br label %Flow8368, !amdgpu.uniform !42 for.inc.i.i.i1112: ; preds = %Flow8368 %inc.i.i.i1117 = add i32 %spec.store.select.i.i.i1084, 1 br label %Flow8369, !amdgpu.uniform !42 Flow8369: ; preds = %for.inc.i.i.i1112, %Flow8368 %1847 = phi i32 [ %inc.i.i.i1117, %for.inc.i.i.i1112 ], [ poison, %Flow8368 ] %1848 = phi i1 [ false, %for.inc.i.i.i1112 ], [ true, %Flow8368 ] br i1 %1848, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1118, label %for.cond.i.i1.i1077, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1118: ; preds = %Flow8369 %.lcssa9026 = phi i32 [ %1840, %Flow8369 ] %.lcssa9025 = phi i64 [ %1841, %Flow8369 ] %.lcssa9024 = phi i32 [ %1842, %Flow8369 ] %sub.ptr.lhs.cast.i.i.i1073 = ptrtoint ptr %scevgep6664.lcssa to i64 %sub.ptr.rhs.cast.i.i.i1074 = ptrtoint ptr %call18 to i64 %sub.ptr.sub.i.i.i1075 = sub i64 %sub.ptr.lhs.cast.i.i.i1073, %sub.ptr.rhs.cast.i.i.i1074 fence acquire %1849 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i1119 = shl i32 %.lcssa9026, 6 %idxprom.i19.i.i.i.i.i1120 = zext i32 %mul.i.i.i.i.i.i1119 to i64 %arrayidx.i20.i.i.i.i.i1121 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %1849, i64 %idxprom.i19.i.i.i.i.i1120 %arrayidx.i22.i.i.i.i.i1122 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i1121, i64 %sh_prom.i.i.i.i756 store i64 %sub.ptr.sub.i.i.i1075, ptr %arrayidx.i22.i.i.i.i.i1122, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i1123 = call i64 @llvm.umin.i64(i64 %sub.ptr.sub.i.i.i1075, i64 56) %1850 = and i64 %spec.select.i.i.i.i.i.i.i1123, 15 %1851 = sub i64 %spec.select.i.i.i.i.i.i.i1123, %1850 %1852 = icmp ne i64 %1851, 0 %1853 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1852) %1854 = extractvalue { i1, i64 } %1853, 0 %1855 = extractvalue { i1, i64 } %1853, 1 br i1 %1854, label %loop-memcpy-expansion5073.preheader, label %Flow8365 loop-memcpy-expansion5073.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1118 %scevgep6665 = getelementptr i8, ptr %1849, i64 8 %scevgep6666 = getelementptr i8, ptr %scevgep6665, i64 %1474 %1856 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1120, 6 %scevgep6667 = getelementptr i8, ptr %scevgep6666, i64 %1856 br label %loop-memcpy-expansion5073, !amdgpu.uniform !42 Flow8365: ; preds = %Flow8364, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1118 call void @llvm.amdgcn.end.cf.i64(i64 %1855) br label %loop-memcpy-residual-header5076, !amdgpu.uniform !42 loop-memcpy-expansion5073: ; preds = %loop-memcpy-expansion5073.preheader, %loop-memcpy-expansion5073 %phi.broken8675 = phi i64 [ 0, %loop-memcpy-expansion5073.preheader ], [ %1861, %loop-memcpy-expansion5073 ] %loop-index5074 = phi i64 [ %1859, %loop-memcpy-expansion5073 ], [ 0, %loop-memcpy-expansion5073.preheader ] %1857 = getelementptr i8, ptr %call18, i64 %loop-index5074 %1858 = load <4 x i32>, ptr %1857, align 1 %scevgep6668 = getelementptr i8, ptr %scevgep6667, i64 %loop-index5074 store <4 x i32> %1858, ptr %scevgep6668, align 1 %1859 = add i64 %loop-index5074, 16 %1860 = icmp uge i64 %1859, %1851 %1861 = call i64 @llvm.amdgcn.if.break.i64(i1 %1860, i64 %phi.broken8675) %1862 = call i1 @llvm.amdgcn.loop.i64(i64 %1861) br i1 %1862, label %Flow8364, label %loop-memcpy-expansion5073 Flow8363: ; preds = %Flow8361, %Flow8362 %1863 = phi i64 [ %6332, %Flow8361 ], [ %6326, %Flow8362 ] call void @llvm.amdgcn.end.cf.i64(i64 %6329) br label %post-loop-memcpy-expansion5072, !amdgpu.uniform !42 loop-memcpy-residual5075: ; preds = %loop-memcpy-residual5075.preheader, %loop-memcpy-residual5075 %phi.broken8676 = phi i64 [ 0, %loop-memcpy-residual5075.preheader ], [ %1867, %loop-memcpy-residual5075 ] %residual-loop-index5077 = phi i64 [ %1865, %loop-memcpy-residual5075 ], [ 0, %loop-memcpy-residual5075.preheader ] %scevgep6678 = getelementptr i8, ptr %scevgep6677, i64 %residual-loop-index5077 %1864 = load i8, ptr %scevgep6678, align 1 %scevgep6676 = getelementptr i8, ptr %scevgep6675, i64 %residual-loop-index5077 store i8 %1864, ptr %scevgep6676, align 1 %1865 = add i64 %residual-loop-index5077, 1 %1866 = icmp uge i64 %1865, %1850 %1867 = call i64 @llvm.amdgcn.if.break.i64(i1 %1866, i64 %phi.broken8676) %1868 = call i1 @llvm.amdgcn.loop.i64(i64 %1867) br i1 %1868, label %Flow8361, label %loop-memcpy-residual5075 Flow8361: ; preds = %loop-memcpy-residual5075 %.lcssa9028 = phi i64 [ %1867, %loop-memcpy-residual5075 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9028) br label %Flow8363, !amdgpu.uniform !42 post-loop-memcpy-expansion5072: ; preds = %Flow8363 %tobool.not.i.i.i.i.i.i1125 = icmp eq i32 %.lcssa9024, 0 %conv.i.i.i.i.i.i1126 = zext i1 %tobool.not.i.i.i.i.i.i1125 to i32 fence release %1869 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i1127 = zext i32 %.lcssa9026 to i64 %arrayidx.i24.i.i.i.i.i1128 = getelementptr inbounds nuw i32, ptr %1869, i64 %idxprom.i23.i.i.i.i.i1127 store atomic i32 %conv.i.i.i.i.i.i1126, ptr %arrayidx.i24.i.i.i.i.i1128 monotonic, align 4 %1870 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i1129 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1870, i64 %idxprom.i23.i.i.i.i.i1127 %1871 = load i64, ptr %arrayidx.i.i5.i.i1129, align 8, !tbaa !80 %scevgep6679 = getelementptr i8, ptr %call18, i64 56 br label %while.cond.i.i.i.i1130, !amdgpu.uniform !42 while.cond.i.i.i.i1130: ; preds = %post-loop-memcpy-expansion5072, %Flow8360 %phi.broken8680 = phi i64 [ 0, %post-loop-memcpy-expansion5072 ], [ %1893, %Flow8360 ] %lsr.iv6687 = phi i64 [ %1891, %Flow8360 ], [ %lsr.iv6685.lcssa, %post-loop-memcpy-expansion5072 ] %lsr.iv6680 = phi ptr [ %1890, %Flow8360 ], [ %scevgep6679, %post-loop-memcpy-expansion5072 ] %port.sroa.37.0.i.i1131 = phi i32 [ %1889, %Flow8360 ], [ %conv.i.i.i.i.i.i1126, %post-loop-memcpy-expansion5072 ] %idx.0.i.i.i.i1132 = phi i64 [ %1888, %Flow8360 ], [ 56, %post-loop-memcpy-expansion5072 ] %cmp.i.i.i.i1133 = icmp ugt i64 %sub.ptr.sub.i.i.i1075, %idx.0.i.i.i.i1132 %1872 = call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i1133) %and.i.i.i.i6.i.i1134 = and i64 %1872, %1871 %tobool.not.i.i.i.i1135 = icmp ne i64 %and.i.i.i.i6.i.i1134, 0 %1873 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i1136 = getelementptr inbounds nuw i32, ptr %1873, i64 %idxprom.i23.i.i.i.i.i1127 %1874 = load atomic i32, ptr %arrayidx.i22.i.i.i1136 monotonic, align 4 %1875 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i1135) %1876 = extractvalue { i1, i64 } %1875, 0 %1877 = extractvalue { i1, i64 } %1875, 1 br i1 %1876, label %cond.false.i8.i.i.i.i1137, label %Flow8360 cond.false.i8.i.i.i.i1137: ; preds = %while.cond.i.i.i.i1130 %1878 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1874) %1879 = icmp ne i32 %1878, %port.sroa.37.0.i.i1131 %1880 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1879) %1881 = extractvalue { i1, i64 } %1880, 0 %1882 = extractvalue { i1, i64 } %1880, 1 br i1 %1881, label %while.body.i.i21.i.i.i.i1138.preheader, label %Flow8359 while.body.i.i21.i.i.i.i1138.preheader: ; preds = %cond.false.i8.i.i.i.i1137 br label %while.body.i.i21.i.i.i.i1138, !amdgpu.uniform !42 Flow8359: ; preds = %Flow8358, %cond.false.i8.i.i.i.i1137 call void @llvm.amdgcn.end.cf.i64(i64 %1882) br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1141, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1138: ; preds = %while.body.i.i21.i.i.i.i1138.preheader, %while.body.i.i21.i.i.i.i1138 %phi.broken8677 = phi i64 [ 0, %while.body.i.i21.i.i.i.i1138.preheader ], [ %1886, %while.body.i.i21.i.i.i.i1138 ] call void @llvm.amdgcn.s.sleep(i32 2) %1883 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i1139 = getelementptr inbounds nuw i32, ptr %1883, i64 %idxprom.i23.i.i.i.i.i1127 %1884 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i1139 monotonic, align 4 %1885 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1884) %cmp.i.not.i.i23.i.i.i.i1140 = icmp eq i32 %1885, %port.sroa.37.0.i.i1131 %1886 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i23.i.i.i.i1140, i64 %phi.broken8677) %1887 = call i1 @llvm.amdgcn.loop.i64(i64 %1886) br i1 %1887, label %Flow8358, label %while.body.i.i21.i.i.i.i1138 Flow8358: ; preds = %while.body.i.i21.i.i.i.i1138 %.lcssa9029 = phi i64 [ %1886, %while.body.i.i21.i.i.i.i1138 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9029) br label %Flow8359, !amdgpu.uniform !42 Flow8360: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1142, %while.cond.i.i.i.i1130 %1888 = phi i64 [ %add.i.i.i.i1145, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1142 ], [ poison, %while.cond.i.i.i.i1130 ] %1889 = phi i32 [ %conv.i.i26.i.i.i.i1143, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1142 ], [ poison, %while.cond.i.i.i.i1130 ] %1890 = phi ptr [ %scevgep6681, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1142 ], [ poison, %while.cond.i.i.i.i1130 ] %1891 = phi i64 [ %lsr.iv.next6688, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1142 ], [ poison, %while.cond.i.i.i.i1130 ] %1892 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1142 ], [ true, %while.cond.i.i.i.i1130 ] call void @llvm.amdgcn.end.cf.i64(i64 %1877) %1893 = call i64 @llvm.amdgcn.if.break.i64(i1 %1892, i64 %phi.broken8680) %1894 = call i1 @llvm.amdgcn.loop.i64(i64 %1893) br i1 %1894, label %cond.false.i.i.i1152, label %while.cond.i.i.i.i1130 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1141: ; preds = %Flow8359 fence acquire %1895 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i1133) %1896 = extractvalue { i1, i64 } %1895, 0 %1897 = extractvalue { i1, i64 } %1895, 1 br i1 %1896, label %if.then.i.i.i.i.i.i.i1146, label %Flow8357 if.then.i.i.i.i.i.i.i1146: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1141 %sub.i.i.i.i.i.i.i1148 = sub nuw i64 %sub.ptr.sub.i.i.i1075, %idx.0.i.i.i.i1132 %spec.select.i.i.i36.i.i.i.i1149 = call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i1148, i64 64) %1898 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %1899 = and i64 %spec.select.i.i.i36.i.i.i.i1149, 15 %1900 = sub i64 %spec.select.i.i.i36.i.i.i.i1149, %1899 %1901 = icmp ne i64 %1900, 0 %1902 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1901) %1903 = extractvalue { i1, i64 } %1902, 0 %1904 = extractvalue { i1, i64 } %1902, 1 br i1 %1903, label %loop-memcpy-expansion5067.preheader, label %Flow8356 loop-memcpy-expansion5067.preheader: ; preds = %if.then.i.i.i.i.i.i.i1146 %arrayidx.i20.i35.i.i.i.i1150 = getelementptr %"struct.rpc::Buffer", ptr %1898, i64 %idxprom.i19.i.i.i.i.i1120 %arrayidx.i22.i38.i.i.i.i1151 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i1150, i64 %sh_prom.i.i.i.i756 br label %loop-memcpy-expansion5067, !amdgpu.uniform !42 Flow8356: ; preds = %Flow8355, %if.then.i.i.i.i.i.i.i1146 call void @llvm.amdgcn.end.cf.i64(i64 %1904) br label %loop-memcpy-residual-header5070, !amdgpu.uniform !42 loop-memcpy-expansion5067: ; preds = %loop-memcpy-expansion5067.preheader, %loop-memcpy-expansion5067 %phi.broken8678 = phi i64 [ 0, %loop-memcpy-expansion5067.preheader ], [ %1909, %loop-memcpy-expansion5067 ] %loop-index5068 = phi i64 [ %1907, %loop-memcpy-expansion5067 ], [ 0, %loop-memcpy-expansion5067.preheader ] %scevgep6682 = getelementptr i8, ptr %lsr.iv6680, i64 %loop-index5068 %1905 = load <4 x i32>, ptr %scevgep6682, align 1 %1906 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i1151, i64 %loop-index5068 store <4 x i32> %1905, ptr %1906, align 1 %1907 = add i64 %loop-index5068, 16 %1908 = icmp uge i64 %1907, %1900 %1909 = call i64 @llvm.amdgcn.if.break.i64(i1 %1908, i64 %phi.broken8678) %1910 = call i1 @llvm.amdgcn.loop.i64(i64 %1909) br i1 %1910, label %Flow8355, label %loop-memcpy-expansion5067 Flow8354: ; preds = %Flow8353, %loop-memcpy-residual-header5070 call void @llvm.amdgcn.end.cf.i64(i64 %6319) br label %Flow8357, !amdgpu.uniform !42 loop-memcpy-residual5069: ; preds = %loop-memcpy-residual5069.preheader, %loop-memcpy-residual5069 %phi.broken8679 = phi i64 [ 0, %loop-memcpy-residual5069.preheader ], [ %1914, %loop-memcpy-residual5069 ] %residual-loop-index5071 = phi i64 [ %1912, %loop-memcpy-residual5069 ], [ 0, %loop-memcpy-residual5069.preheader ] %scevgep6694 = getelementptr i8, ptr %scevgep6693, i64 %residual-loop-index5071 %1911 = load i8, ptr %scevgep6694, align 1 %scevgep6691 = getelementptr i8, ptr %scevgep6690, i64 %residual-loop-index5071 store i8 %1911, ptr %scevgep6691, align 1 %1912 = add i64 %residual-loop-index5071, 1 %1913 = icmp uge i64 %1912, %1899 %1914 = call i64 @llvm.amdgcn.if.break.i64(i1 %1913, i64 %phi.broken8679) %1915 = call i1 @llvm.amdgcn.loop.i64(i64 %1914) br i1 %1915, label %Flow8353, label %loop-memcpy-residual5069 Flow8353: ; preds = %loop-memcpy-residual5069 %.lcssa9031 = phi i64 [ %1914, %loop-memcpy-residual5069 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9031) br label %Flow8354, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1142: ; preds = %Flow8357 %conv.i.i26.i.i.i.i1143 = xor i32 %port.sroa.37.0.i.i1131, 1 fence release %1916 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i1144 = getelementptr inbounds nuw i32, ptr %1916, i64 %idxprom.i23.i.i.i.i.i1127 store atomic i32 %conv.i.i26.i.i.i.i1143, ptr %arrayidx.i24.i29.i.i.i.i1144 monotonic, align 4 %add.i.i.i.i1145 = add i64 %idx.0.i.i.i.i1132, 64 %scevgep6681 = getelementptr i8, ptr %lsr.iv6680, i64 64 %lsr.iv.next6688 = add i64 %lsr.iv6687, -64 br label %Flow8360, !amdgpu.uniform !42 cond.false.i.i.i1152: ; preds = %Flow8360 %.lcssa9033 = phi i64 [ %1893, %Flow8360 ] %port.sroa.37.0.i.i1131.lcssa = phi i32 [ %port.sroa.37.0.i.i1131, %Flow8360 ] %.lcssa9032 = phi i32 [ %1874, %Flow8360 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9033) %1917 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa9032) %1918 = icmp ne i32 %1917, %port.sroa.37.0.i.i1131.lcssa %1919 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1918) %1920 = extractvalue { i1, i64 } %1919, 0 %1921 = extractvalue { i1, i64 } %1919, 1 br i1 %1920, label %while.body.i.i.i.i1153.preheader, label %Flow8352 while.body.i.i.i.i1153.preheader: ; preds = %cond.false.i.i.i1152 br label %while.body.i.i.i.i1153, !amdgpu.uniform !42 Flow8352: ; preds = %Flow8351, %cond.false.i.i.i1152 call void @llvm.amdgcn.end.cf.i64(i64 %1921) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1174, !amdgpu.uniform !42 while.body.i.i.i.i1153: ; preds = %while.body.i.i.i.i1153.preheader, %while.body.i.i.i.i1153 %phi.broken8681 = phi i64 [ 0, %while.body.i.i.i.i1153.preheader ], [ %1925, %while.body.i.i.i.i1153 ] call void @llvm.amdgcn.s.sleep(i32 2) %1922 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i1154 = getelementptr inbounds nuw i32, ptr %1922, i64 %idxprom.i23.i.i.i.i.i1127 %1923 = load atomic i32, ptr %arrayidx.i.i.i8.i.i1154 monotonic, align 4 %1924 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1923) %cmp.i.not.i.i.i.i1155 = icmp eq i32 %1924, %port.sroa.37.0.i.i1131.lcssa %1925 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i1155, i64 %phi.broken8681) %1926 = call i1 @llvm.amdgcn.loop.i64(i64 %1925) br i1 %1926, label %Flow8351, label %while.body.i.i.i.i1153 Flow8351: ; preds = %while.body.i.i.i.i1153 %.lcssa9034 = phi i64 [ %1925, %while.body.i.i.i.i1153 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9034) br label %Flow8352, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1174: ; preds = %Flow8352 fence acquire call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %1927 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa9025, i1 true) %iszero.i.i.i.i.i13.i.i1157 = icmp ne i64 %.lcssa9025, 0 %cmp2.i.i.i.i14.i.i1158 = icmp eq i64 %1927, %sh_prom.i.i.i.i756 %cmp.i.i.i.i15.i.i1159 = select i1 %iszero.i.i.i.i.i13.i.i1157, i1 %cmp2.i.i.i.i14.i.i1158, i1 false %1928 = and i32 %.lcssa9026, 31 %conv4.i.i.i19.i.i1163 = zext i1 %cmp.i.i.i.i15.i.i1159 to i32 %shl.i.i.i20.i.i1164 = shl nuw i32 %conv4.i.i.i19.i.i1163, %1928 %xor.i.i.i21.i.i1165 = xor i32 %shl.i.i.i20.i.i1164, -1 %1929 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5615, !amdgpu.uniform !42 1930: ; preds = %ComputeEnd5616 %div8.i.i.i16.i.i1160 = lshr i32 %.lcssa9026, 5 %idxprom.i.i.i17.i.i1161 = zext nneg i32 %div8.i.i.i16.i.i1160 to i64 %1931 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i1161 %sunkaddr7401 = getelementptr inbounds i8, ptr addrspace(1) %1931, i64 40 %1932 = atomicrmw and ptr addrspace(1) %sunkaddr7401, i32 %.lcssa9035 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1933, !amdgpu.uniform !42 1933: ; preds = %1930, %ComputeEnd5616 call void @llvm.amdgcn.end.cf.i64(i64 %7336) call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i.i1176, !amdgpu.uniform !42 for.cond.i.i.i1176: ; preds = %1933, %Flow8350 %1934 = phi i32 [ %1971, %Flow8350 ], [ %1162, %1933 ] %1935 = phi i64 [ %1972, %Flow8350 ], [ %1163, %1933 ] %1936 = phi i32 [ %1973, %Flow8350 ], [ %1164, %1933 ] %retval.sroa.6.0.i.i.i1177 = phi i32 [ %1976, %Flow8350 ], [ undef, %1933 ] %retval.sroa.2.0.i.i.i1179 = phi i64 [ %1975, %Flow8350 ], [ undef, %1933 ] %retval.sroa.8.0.i.i.i1180 = phi i32 [ %1974, %Flow8350 ], [ undef, %1933 ] %index.0.i.i.i1181 = phi i32 [ %1978, %Flow8350 ], [ 0, %1933 ] %1937 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i1182 = icmp ult i32 %index.0.i.i.i1181, %1937 %spec.store.select.i.i.i1183 = select i1 %cmp.not.i.i.i1182, i32 %index.0.i.i.i1181, i32 0 %1938 = call i64 @llvm.amdgcn.ballot.i64(i1 true) %1939 = and i32 %spec.store.select.i.i.i1183, 31 %1940 = lshr i64 %1938, %sh_prom.i.i.i.i756 %1941 = trunc i64 %1940 to i32 %conv4.i.i.i.i.i1187 = and i32 %1941, 1 %shl.i.i.i.i.i1188 = shl nuw i32 %conv4.i.i.i.i.i1187, %1939 br label %ComputeLoop5619, !amdgpu.uniform !42 1942: ; preds = %ComputeEnd5620 %sunkaddr7402 = getelementptr inbounds i8, ptr addrspace(1) %7346, i64 40 %1943 = atomicrmw or ptr addrspace(1) %sunkaddr7402, i32 %.lcssa9036 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1944, !amdgpu.uniform !42 1944: ; preds = %1942, %ComputeEnd5620 %1945 = phi i32 [ %1943, %1942 ], [ poison, %ComputeEnd5620 ] call void @llvm.amdgcn.end.cf.i64(i64 %7355) %1946 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %1945) %1947 = or i32 %1946, %.lcssa9037 %shl5.i.i.i.i.i1189 = shl nuw i32 1, %1939 %and.i.i.i.i.i1190 = and i32 %shl5.i.i.i.i.i1189, %1947 %tobool3.i.i.i.i1191 = icmp ne i32 %and.i.i.i.i.i1190, 0 %1948 = call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i1191) %and.i.i.i.i.i.i1192 = and i64 %1948, %1938 %cmp.i.not.i.i.i1193 = icmp ne i64 %1938, %and.i.i.i.i.i.i1192 br i1 %cmp.i.not.i.i.i1193, label %if.then.i.i.i.i1194, label %Flow8349, !amdgpu.uniform !42 if.then.i.i.i.i1194: ; preds = %1944 fence syncscope("agent") acquire %1949 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %1950 = extractelement <2 x i64> %1949, i32 0 %1951 = inttoptr i64 %1950 to ptr %1952 = extractelement <2 x i64> %1949, i32 1 %1953 = inttoptr i64 %1952 to ptr %idxprom.i.i.i.i1195 = zext i32 %spec.store.select.i.i.i1183 to i64 %arrayidx.i.i.i.i1196 = getelementptr inbounds nuw i32, ptr %1951, i64 %idxprom.i.i.i.i1195, !amdgpu.uniform !42 %1954 = load atomic i32, ptr %arrayidx.i.i.i.i1196 monotonic, align 4 %1955 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1954) %arrayidx.i45.i.i.i1197 = getelementptr inbounds nuw i32, ptr %1953, i64 %idxprom.i.i.i.i1195, !amdgpu.uniform !42 %1956 = load atomic i32, ptr %arrayidx.i45.i.i.i1197 monotonic, align 4 %1957 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1956) %cmp.i46.not.i.i.i1198 = icmp ne i32 %1955, %1957 br i1 %cmp.i46.not.i.i.i1198, label %if.then12.i.i.i1199, label %Flow8347, !amdgpu.uniform !42 if.then12.i.i.i1199: ; preds = %if.then.i.i.i.i1194 fence syncscope("agent") release %1958 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1938, i1 true) %iszero.i.i.i.i.i.i.i1200 = icmp ne i64 %1938, 0 %cmp2.i.i.i.i.i.i1201 = icmp eq i64 %1958, %sh_prom.i.i.i.i756 %cmp.i.i.i.i.i.i1202 = select i1 %iszero.i.i.i.i.i.i.i1200, i1 %cmp2.i.i.i.i.i.i1201, i1 false %conv4.i.i51.i.i.i1203 = zext i1 %cmp.i.i.i.i.i.i1202 to i32 %shl.i.i52.i.i.i1204 = shl nuw i32 %conv4.i.i51.i.i.i1203, %1939 %xor.i.i.i.i.i1205 = xor i32 %shl.i.i52.i.i.i1204, -1 %1959 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5624, !amdgpu.uniform !42 1960: ; preds = %ComputeEnd5625 %sunkaddr7403 = getelementptr inbounds i8, ptr addrspace(1) %7346, i64 40 %1961 = atomicrmw and ptr addrspace(1) %sunkaddr7403, i32 %.lcssa9038 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %1962, !amdgpu.uniform !42 1962: ; preds = %1960, %ComputeEnd5625 call void @llvm.amdgcn.end.cf.i64(i64 %7373) call void @llvm.amdgcn.wave.barrier() br label %Flow8347, !amdgpu.uniform !42 if.end14.i.i.i1263: ; preds = %Flow8347 %1963 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %1938, i1 true) %iszero.i.i.i.i.i.i1264 = icmp ne i64 %1938, 0 %cmp2.i.i.i.i.i1265 = icmp eq i64 %1963, %sh_prom.i.i.i.i756 %cmp.i.i.i.i.i1266 = select i1 %iszero.i.i.i.i.i.i1264, i1 %cmp2.i.i.i.i.i1265, i1 false %1964 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i1266) %1965 = extractvalue { i1, i64 } %1964, 0 %1966 = extractvalue { i1, i64 } %1964, 1 br i1 %1965, label %if.then16.i.i.i1268, label %if.end22.i.i.i1267 if.then16.i.i.i1268: ; preds = %if.end14.i.i.i1263 %1967 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i1269 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1967, i64 %idxprom.i.i.i.i1195, i32 1 store i32 1660944387, ptr %opcode.i.i.i1269, align 8, !tbaa !77 %arrayidx21.i.i.i1270 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1967, i64 %idxprom.i.i.i.i1195 store i64 %1938, ptr %arrayidx21.i.i.i1270, align 8, !tbaa !80 br label %if.end22.i.i.i1267, !amdgpu.uniform !42 Flow8348: ; preds = %if.end22.i.i.i1267, %Flow8347 %1968 = phi i32 [ %1955, %if.end22.i.i.i1267 ], [ %retval.sroa.8.0.i.i.i1180, %Flow8347 ] %1969 = phi i64 [ %1938, %if.end22.i.i.i1267 ], [ %retval.sroa.2.0.i.i.i1179, %Flow8347 ] %1970 = phi i32 [ %spec.store.select.i.i.i1183, %if.end22.i.i.i1267 ], [ %retval.sroa.6.0.i.i.i1177, %Flow8347 ] br label %cleanup26.i.i.i1206, !amdgpu.uniform !42 if.end22.i.i.i1267: ; preds = %if.then16.i.i.i1268, %if.end14.i.i.i1263 call void @llvm.amdgcn.end.cf.i64(i64 %1966) call void @llvm.amdgcn.wave.barrier() br label %Flow8348, !amdgpu.uniform !42 Flow8349: ; preds = %cleanup26.i.i.i1206, %1944 %1971 = phi i32 [ %1970, %cleanup26.i.i.i1206 ], [ %1934, %1944 ] %1972 = phi i64 [ %1969, %cleanup26.i.i.i1206 ], [ %1935, %1944 ] %1973 = phi i32 [ %1968, %cleanup26.i.i.i1206 ], [ %1936, %1944 ] %1974 = phi i32 [ %1968, %cleanup26.i.i.i1206 ], [ %retval.sroa.8.0.i.i.i1180, %1944 ] %1975 = phi i64 [ %1969, %cleanup26.i.i.i1206 ], [ %retval.sroa.2.0.i.i.i1179, %1944 ] %1976 = phi i32 [ %1970, %cleanup26.i.i.i1206 ], [ %retval.sroa.6.0.i.i.i1177, %1944 ] %1977 = phi i1 [ %cmp.i46.not.i.i.i1198, %cleanup26.i.i.i1206 ], [ true, %1944 ] br i1 %1977, label %for.inc.i.i.i1211, label %Flow8350, !amdgpu.uniform !42 cleanup26.i.i.i1206: ; preds = %Flow8348 br label %Flow8349, !amdgpu.uniform !42 for.inc.i.i.i1211: ; preds = %Flow8349 %inc.i.i.i1216 = add i32 %spec.store.select.i.i.i1183, 1 br label %Flow8350, !amdgpu.uniform !42 Flow8350: ; preds = %for.inc.i.i.i1211, %Flow8349 %1978 = phi i32 [ %inc.i.i.i1216, %for.inc.i.i.i1211 ], [ poison, %Flow8349 ] %1979 = phi i1 [ false, %for.inc.i.i.i1211 ], [ true, %Flow8349 ] br i1 %1979, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1217, label %for.cond.i.i.i1176, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1217: ; preds = %Flow8350 %.lcssa9041 = phi i32 [ %1971, %Flow8350 ] %.lcssa9040 = phi i64 [ %1972, %Flow8350 ] %.lcssa9039 = phi i32 [ %1973, %Flow8350 ] fence acquire %1980 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i1218 = shl i32 %.lcssa9041, 6 %idxprom.i19.i.i.i.i.i1219 = zext i32 %mul.i.i.i.i.i.i1218 to i64 %arrayidx.i20.i.i.i.i.i1220 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %1980, i64 %idxprom.i19.i.i.i.i.i1219 %arrayidx.i22.i.i.i.i.i1221 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i1220, i64 %sh_prom.i.i.i.i756 store i64 1, ptr %arrayidx.i22.i.i.i.i.i1221, align 8, !tbaa !82 %arrayidx6.i.i.i.i.i.i.i1222 = getelementptr inbounds nuw i8, ptr %arrayidx.i22.i.i.i.i.i1221, i64 8 store i8 10, ptr %arrayidx6.i.i.i.i.i.i.i1222, align 8 %tobool.not.i.i.i.i.i.i1223 = icmp eq i32 %.lcssa9039, 0 %conv.i.i.i.i.i.i1224 = zext i1 %tobool.not.i.i.i.i.i.i1223 to i32 fence release %1981 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i1225 = zext i32 %.lcssa9041 to i64 %arrayidx.i24.i.i.i.i.i1226 = getelementptr inbounds nuw i32, ptr %1981, i64 %idxprom.i23.i.i.i.i.i1225 store atomic i32 %conv.i.i.i.i.i.i1224, ptr %arrayidx.i24.i.i.i.i.i1226 monotonic, align 4 %1982 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i1227 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %1982, i64 %idxprom.i23.i.i.i.i.i1225 %1983 = load i64, ptr %arrayidx.i.i5.i.i1227, align 8, !tbaa !80 br label %while.cond.i.i.i.i1228, !amdgpu.uniform !42 while.cond.i.i.i.i1228: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1217, %Flow8346 %phi.broken8683 = phi i64 [ 0, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1217 ], [ %2003, %Flow8346 ] %port.sroa.37.0.i.i1229 = phi i32 [ %2001, %Flow8346 ], [ %conv.i.i.i.i.i.i1224, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1217 ] %idx.0.i.i.i.i1230 = phi i64 [ %2000, %Flow8346 ], [ 56, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1217 ] %cmp.i.i.i.i1231 = icmp eq i64 %idx.0.i.i.i.i1230, 0 %1984 = call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i1231) %and.i.i.i.i6.i.i1232 = and i64 %1984, %1983 %tobool.not.i.i.i.i1233 = icmp ne i64 %and.i.i.i.i6.i.i1232, 0 %1985 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i1234 = getelementptr inbounds nuw i32, ptr %1985, i64 %idxprom.i23.i.i.i.i.i1225 %1986 = load atomic i32, ptr %arrayidx.i22.i.i.i1234 monotonic, align 4 %1987 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i1233) %1988 = extractvalue { i1, i64 } %1987, 0 %1989 = extractvalue { i1, i64 } %1987, 1 br i1 %1988, label %cond.false.i8.i.i.i.i1235, label %Flow8346 cond.false.i8.i.i.i.i1235: ; preds = %while.cond.i.i.i.i1228 %1990 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1986) %1991 = icmp ne i32 %1990, %port.sroa.37.0.i.i1229 %1992 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %1991) %1993 = extractvalue { i1, i64 } %1992, 0 %1994 = extractvalue { i1, i64 } %1992, 1 br i1 %1993, label %while.body.i.i21.i.i.i.i1236.preheader, label %Flow8345 while.body.i.i21.i.i.i.i1236.preheader: ; preds = %cond.false.i8.i.i.i.i1235 br label %while.body.i.i21.i.i.i.i1236, !amdgpu.uniform !42 Flow8345: ; preds = %Flow8344, %cond.false.i8.i.i.i.i1235 call void @llvm.amdgcn.end.cf.i64(i64 %1994) br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1239, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1236: ; preds = %while.body.i.i21.i.i.i.i1236.preheader, %while.body.i.i21.i.i.i.i1236 %phi.broken8682 = phi i64 [ 0, %while.body.i.i21.i.i.i.i1236.preheader ], [ %1998, %while.body.i.i21.i.i.i.i1236 ] call void @llvm.amdgcn.s.sleep(i32 2) %1995 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i1237 = getelementptr inbounds nuw i32, ptr %1995, i64 %idxprom.i23.i.i.i.i.i1225 %1996 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i1237 monotonic, align 4 %1997 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %1996) %cmp.i.not.i.i23.i.i.i.i1238 = icmp eq i32 %1997, %port.sroa.37.0.i.i1229 %1998 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i23.i.i.i.i1238, i64 %phi.broken8682) %1999 = call i1 @llvm.amdgcn.loop.i64(i64 %1998) br i1 %1999, label %Flow8344, label %while.body.i.i21.i.i.i.i1236 Flow8344: ; preds = %while.body.i.i21.i.i.i.i1236 %.lcssa9042 = phi i64 [ %1998, %while.body.i.i21.i.i.i.i1236 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9042) br label %Flow8345, !amdgpu.uniform !42 Flow8346: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1240, %while.cond.i.i.i.i1228 %2000 = phi i64 [ %add.i.i.i.i1243, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1240 ], [ poison, %while.cond.i.i.i.i1228 ] %2001 = phi i32 [ %conv.i.i26.i.i.i.i1241, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1240 ], [ poison, %while.cond.i.i.i.i1228 ] %2002 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1240 ], [ true, %while.cond.i.i.i.i1228 ] call void @llvm.amdgcn.end.cf.i64(i64 %1989) %2003 = call i64 @llvm.amdgcn.if.break.i64(i1 %2002, i64 %phi.broken8683) %2004 = call i1 @llvm.amdgcn.loop.i64(i64 %2003) br i1 %2004, label %cond.false.i.i.i1249, label %while.cond.i.i.i.i1228 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1239: ; preds = %Flow8345 fence acquire br i1 %cmp.i.i.i.i1231, label %if.then.i.i.i.i.i.i.i1244, label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1240, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i1244: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1239 %2005 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %arrayidx.i20.i35.i.i.i.i1247 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %2005, i64 %idxprom.i19.i.i.i.i.i1219 %arrayidx.i22.i38.i.i.i.i1248 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i1247, i64 %sh_prom.i.i.i.i756 store i8 10, ptr %arrayidx.i22.i38.i.i.i.i1248, align 1 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1240, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1240: ; preds = %if.then.i.i.i.i.i.i.i1244, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1239 %conv.i.i26.i.i.i.i1241 = xor i32 %port.sroa.37.0.i.i1229, 1 fence release %2006 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i1242 = getelementptr inbounds nuw i32, ptr %2006, i64 %idxprom.i23.i.i.i.i.i1225 store atomic i32 %conv.i.i26.i.i.i.i1241, ptr %arrayidx.i24.i29.i.i.i.i1242 monotonic, align 4 %add.i.i.i.i1243 = add i64 %idx.0.i.i.i.i1230, 64 br label %Flow8346, !amdgpu.uniform !42 cond.false.i.i.i1249: ; preds = %Flow8346 %.lcssa9044 = phi i64 [ %2003, %Flow8346 ] %port.sroa.37.0.i.i1229.lcssa = phi i32 [ %port.sroa.37.0.i.i1229, %Flow8346 ] %.lcssa9043 = phi i32 [ %1986, %Flow8346 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9044) %2007 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa9043) %2008 = icmp ne i32 %2007, %port.sroa.37.0.i.i1229.lcssa %2009 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2008) %2010 = extractvalue { i1, i64 } %2009, 0 %2011 = extractvalue { i1, i64 } %2009, 1 br i1 %2010, label %while.body.i.i.i.i1250.preheader, label %Flow8343 while.body.i.i.i.i1250.preheader: ; preds = %cond.false.i.i.i1249 br label %while.body.i.i.i.i1250, !amdgpu.uniform !42 Flow8343: ; preds = %Flow8342, %cond.false.i.i.i1249 call void @llvm.amdgcn.end.cf.i64(i64 %2011) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit, !amdgpu.uniform !42 while.body.i.i.i.i1250: ; preds = %while.body.i.i.i.i1250.preheader, %while.body.i.i.i.i1250 %phi.broken8684 = phi i64 [ 0, %while.body.i.i.i.i1250.preheader ], [ %2015, %while.body.i.i.i.i1250 ] call void @llvm.amdgcn.s.sleep(i32 2) %2012 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i1251 = getelementptr inbounds nuw i32, ptr %2012, i64 %idxprom.i23.i.i.i.i.i1225 %2013 = load atomic i32, ptr %arrayidx.i.i.i8.i.i1251 monotonic, align 4 %2014 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2013) %cmp.i.not.i.i.i.i1252 = icmp eq i32 %2014, %port.sroa.37.0.i.i1229.lcssa %2015 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i1252, i64 %phi.broken8684) %2016 = call i1 @llvm.amdgcn.loop.i64(i64 %2015) br i1 %2016, label %Flow8342, label %while.body.i.i.i.i1250 Flow8342: ; preds = %while.body.i.i.i.i1250 %.lcssa9045 = phi i64 [ %2015, %while.body.i.i.i.i1250 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9045) br label %Flow8343, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit: ; preds = %Flow8343 fence acquire call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %2017 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa9040, i1 true) %iszero.i.i.i.i.i13.i.i1254 = icmp ne i64 %.lcssa9040, 0 %cmp2.i.i.i.i14.i.i1255 = icmp eq i64 %2017, %sh_prom.i.i.i.i756 %cmp.i.i.i.i15.i.i1256 = select i1 %iszero.i.i.i.i.i13.i.i1254, i1 %cmp2.i.i.i.i14.i.i1255, i1 false %2018 = and i32 %.lcssa9041, 31 %conv4.i.i.i19.i.i1260 = zext i1 %cmp.i.i.i.i15.i.i1256 to i32 %shl.i.i.i20.i.i1261 = shl nuw i32 %conv4.i.i.i19.i.i1260, %2018 %xor.i.i.i21.i.i1262 = xor i32 %shl.i.i.i20.i.i1261, -1 %2019 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5628, !amdgpu.uniform !42 2020: ; preds = %ComputeEnd5629 %div8.i.i.i16.i.i1257 = lshr i32 %.lcssa9041, 5 %idxprom.i.i.i17.i.i1258 = zext nneg i32 %div8.i.i.i16.i.i1257 to i64 %2021 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i1258 %sunkaddr7404 = getelementptr inbounds i8, ptr addrspace(1) %2021, i64 40 %2022 = atomicrmw and ptr addrspace(1) %sunkaddr7404, i32 %.lcssa9046 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2023, !amdgpu.uniform !42 2023: ; preds = %2020, %ComputeEnd5629 call void @llvm.amdgcn.end.cf.i64(i64 %7390) call void @llvm.amdgcn.wave.barrier() br i1 %tobool.not.i1271, label %if.end.i, label %_ZN22__llvm_libc_22_0_0_git5clockEv.exit, !amdgpu.uniform !42 if.end.i: ; preds = %2023 %2024 = call noundef i64 @llvm.readsteadycounter() br i1 %cmp.i, label %if.end3.i, label %Flow8340, !amdgpu.uniform !42 if.then1.i: ; preds = %Flow8340 %2025 = or i64 %2024, %div.i %2026 = and i64 %2025, -4294967296 %2027 = icmp ne i64 %2026, 0 br i1 %2027, label %2035, label %Flow8338, !amdgpu.uniform !42 Flow8338: ; preds = %2035, %if.then1.i %2028 = phi i64 [ %2036, %2035 ], [ poison, %if.then1.i ] %2029 = phi i1 [ false, %2035 ], [ true, %if.then1.i ] br i1 %2029, label %2030, label %Flow8339, !amdgpu.uniform !42 2030: ; preds = %Flow8338 %2031 = trunc i64 %div.i to i32 %2032 = trunc i64 %2024 to i32 %2033 = udiv i32 %2032, %2031 %2034 = zext i32 %2033 to i64 br label %Flow8339, !amdgpu.uniform !42 2035: ; preds = %if.then1.i %2036 = udiv i64 %2024, %div.i br label %Flow8338, !amdgpu.uniform !42 if.end3.i: ; preds = %if.end.i %2037 = and i64 %1107, -4294967296 %2038 = icmp ne i64 %2037, 0 br i1 %2038, label %2045, label %Flow8337, !amdgpu.uniform !42 Flow8337: ; preds = %2045, %if.end3.i %2039 = phi i64 [ %2046, %2045 ], [ poison, %if.end3.i ] %2040 = phi i1 [ false, %2045 ], [ true, %if.end3.i ] br i1 %2040, label %2041, label %2049, !amdgpu.uniform !42 2041: ; preds = %Flow8337 %2042 = trunc i64 %1107 to i32 %2043 = udiv i32 1000000, %2042 %2044 = zext i32 %2043 to i64 br label %2049, !amdgpu.uniform !42 2045: ; preds = %if.end3.i %2046 = sdiv i64 1000000, %1107 br label %Flow8337, !amdgpu.uniform !42 Flow8340: ; preds = %2049, %if.end.i %2047 = phi i64 [ %mul.i, %2049 ], [ poison, %if.end.i ] %2048 = phi i1 [ false, %2049 ], [ true, %if.end.i ] br i1 %2048, label %if.then1.i, label %Flow8341, !amdgpu.uniform !42 2049: ; preds = %2041, %Flow8337 %2050 = phi i64 [ %2044, %2041 ], [ %2039, %Flow8337 ] %mul.i = mul i64 %2050, %2024 br label %Flow8340, !amdgpu.uniform !42 Flow8339: ; preds = %2030, %Flow8338 %2051 = phi i64 [ %2034, %2030 ], [ %2028, %Flow8338 ] br label %Flow8341, !amdgpu.uniform !42 Flow8341: ; preds = %Flow8339, %Flow8340 %2052 = phi i64 [ %2051, %Flow8339 ], [ %2047, %Flow8340 ] br label %_ZN22__llvm_libc_22_0_0_git5clockEv.exit, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git5clockEv.exit: ; preds = %2023, %Flow8341 %retval.1.i = phi i64 [ 0, %2023 ], [ %2052, %Flow8341 ] call void @llvm.lifetime.start.p5(ptr addrspace(5) %Ctx) #34 store i8 0, ptr addrspace(5) %Ctx, align 1, !tbaa !65 %vtable43 = load ptr addrspace(1), ptr %T.0207, align 8, !tbaa !158 %vfn44 = getelementptr inbounds nuw i8, ptr addrspace(1) %vtable43, i64 16 %2053 = load ptr addrspace(1), ptr addrspace(1) %vfn44, align 8 call addrspace(1) void %2053(ptr noundef nonnull align 8 dereferenceable(24) %T.0207) #33 %Ctx.i = getelementptr inbounds nuw i8, ptr %T.0207, i64 16 store ptr %1103, ptr %Ctx.i, align 8, !tbaa !59 %vtable45 = load ptr addrspace(1), ptr %T.0207, align 8, !tbaa !158 %vfn46 = getelementptr inbounds nuw i8, ptr addrspace(1) %vtable45, i64 32 %2054 = load ptr addrspace(1), ptr addrspace(1) %vfn46, align 8 call addrspace(1) void %2054(ptr noundef nonnull align 8 dereferenceable(24) %T.0207) #33 %vtable47 = load ptr addrspace(1), ptr %T.0207, align 8, !tbaa !158 %vfn48 = getelementptr inbounds nuw i8, ptr addrspace(1) %vtable47, i64 24 %2055 = load ptr addrspace(1), ptr addrspace(1) %vfn48, align 8 call addrspace(1) void %2055(ptr noundef nonnull align 8 dereferenceable(24) %T.0207) #33 br i1 %tobool.not.i1271, label %if.end.i1273, label %_ZN22__llvm_libc_22_0_0_git5clockEv.exit1282, !amdgpu.uniform !42 if.end.i1273: ; preds = %_ZN22__llvm_libc_22_0_0_git5clockEv.exit %2056 = call noundef i64 @llvm.readsteadycounter() br i1 %cmp.i, label %if.end3.i1275, label %Flow8335, !amdgpu.uniform !42 if.then1.i1279: ; preds = %Flow8335 %2057 = or i64 %2056, %div.i %2058 = and i64 %2057, -4294967296 %2059 = icmp ne i64 %2058, 0 br i1 %2059, label %2067, label %Flow8333, !amdgpu.uniform !42 Flow8333: ; preds = %2067, %if.then1.i1279 %2060 = phi i64 [ %2068, %2067 ], [ poison, %if.then1.i1279 ] %2061 = phi i1 [ false, %2067 ], [ true, %if.then1.i1279 ] br i1 %2061, label %2062, label %Flow8334, !amdgpu.uniform !42 2062: ; preds = %Flow8333 %2063 = trunc i64 %div.i to i32 %2064 = trunc i64 %2056 to i32 %2065 = udiv i32 %2064, %2063 %2066 = zext i32 %2065 to i64 br label %Flow8334, !amdgpu.uniform !42 2067: ; preds = %if.then1.i1279 %2068 = udiv i64 %2056, %div.i br label %Flow8333, !amdgpu.uniform !42 if.end3.i1275: ; preds = %if.end.i1273 %2069 = and i64 %1107, -4294967296 %2070 = icmp ne i64 %2069, 0 br i1 %2070, label %2077, label %Flow8332, !amdgpu.uniform !42 Flow8332: ; preds = %2077, %if.end3.i1275 %2071 = phi i64 [ %2078, %2077 ], [ poison, %if.end3.i1275 ] %2072 = phi i1 [ false, %2077 ], [ true, %if.end3.i1275 ] br i1 %2072, label %2073, label %2081, !amdgpu.uniform !42 2073: ; preds = %Flow8332 %2074 = trunc i64 %1107 to i32 %2075 = udiv i32 1000000, %2074 %2076 = zext i32 %2075 to i64 br label %2081, !amdgpu.uniform !42 2077: ; preds = %if.end3.i1275 %2078 = sdiv i64 1000000, %1107 br label %Flow8332, !amdgpu.uniform !42 Flow8335: ; preds = %2081, %if.end.i1273 %2079 = phi i64 [ %mul.i1277, %2081 ], [ poison, %if.end.i1273 ] %2080 = phi i1 [ false, %2081 ], [ true, %if.end.i1273 ] br i1 %2080, label %if.then1.i1279, label %Flow8336, !amdgpu.uniform !42 2081: ; preds = %2073, %Flow8332 %2082 = phi i64 [ %2076, %2073 ], [ %2071, %Flow8332 ] %mul.i1277 = mul i64 %2082, %2056 br label %Flow8335, !amdgpu.uniform !42 Flow8334: ; preds = %2062, %Flow8333 %2083 = phi i64 [ %2066, %2062 ], [ %2060, %Flow8333 ] br label %Flow8336, !amdgpu.uniform !42 Flow8336: ; preds = %Flow8334, %Flow8335 %2084 = phi i64 [ %2083, %Flow8334 ], [ %2079, %Flow8335 ] br label %_ZN22__llvm_libc_22_0_0_git5clockEv.exit1282, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git5clockEv.exit1282: ; preds = %_ZN22__llvm_libc_22_0_0_git5clockEv.exit, %Flow8336 %retval.1.i1278 = phi i64 [ 0, %_ZN22__llvm_libc_22_0_0_git5clockEv.exit ], [ %2084, %Flow8336 ] %2085 = load i8, ptr addrspace(5) %Ctx, align 1, !tbaa !65, !range !152, !noundef !42 %loadedv.i = trunc nuw i8 %2085 to i1 %loadedv.i.inv = xor i1 %loadedv.i, true %2086 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %loadedv.i.inv) %2087 = extractvalue { i1, i64 } %2086, 0 %2088 = extractvalue { i1, i64 } %2086, 1 br i1 %2087, label %for.cond.i.i.i1809.preheader, label %Flow8330 for.cond.i.i.i1809.preheader: ; preds = %_ZN22__llvm_libc_22_0_0_git5clockEv.exit1282 br label %for.cond.i.i.i1809, !amdgpu.uniform !42 for.cond.i.i.i1283.preheader: ; preds = %Flow8330 br label %for.cond.i.i.i1283, !amdgpu.uniform !42 Flow8331: ; preds = %2756, %Flow8330 %2089 = phi i32 [ %inc, %2756 ], [ %FailCount.0205, %Flow8330 ] %2090 = phi i32 [ %1215, %2756 ], [ %2757, %Flow8330 ] %2091 = phi i64 [ %1214, %2756 ], [ %2758, %Flow8330 ] %2092 = phi i32 [ %1213, %2756 ], [ %2759, %Flow8330 ] %2093 = phi i32 [ %1212, %2756 ], [ %2760, %Flow8330 ] %2094 = phi i64 [ %1211, %2756 ], [ %2761, %Flow8330 ] %2095 = phi i32 [ %1210, %2756 ], [ %2762, %Flow8330 ] %2096 = phi i32 [ %1209, %2756 ], [ %2763, %Flow8330 ] %2097 = phi i64 [ %1208, %2756 ], [ %2764, %Flow8330 ] %2098 = phi i32 [ %1207, %2756 ], [ %2765, %Flow8330 ] %2099 = phi i32 [ %1206, %2756 ], [ %2766, %Flow8330 ] %2100 = phi i64 [ %1205, %2756 ], [ %2767, %Flow8330 ] %2101 = phi i32 [ %1204, %2756 ], [ %2768, %Flow8330 ] %2102 = phi i32 [ %1203, %2756 ], [ %2769, %Flow8330 ] %2103 = phi i64 [ %1202, %2756 ], [ %2770, %Flow8330 ] %2104 = phi i32 [ %1201, %2756 ], [ %2771, %Flow8330 ] %2105 = phi i32 [ %1200, %2756 ], [ %2772, %Flow8330 ] %2106 = phi i64 [ %1199, %2756 ], [ %2773, %Flow8330 ] %2107 = phi i32 [ %1198, %2756 ], [ %2774, %Flow8330 ] %2108 = phi i32 [ %1197, %2756 ], [ %2775, %Flow8330 ] %2109 = phi i64 [ %1196, %2756 ], [ %2776, %Flow8330 ] %2110 = phi i32 [ %1195, %2756 ], [ %2777, %Flow8330 ] %2111 = phi i32 [ %1194, %2756 ], [ %2778, %Flow8330 ] %2112 = phi i64 [ %1193, %2756 ], [ %2779, %Flow8330 ] %2113 = phi i32 [ %1192, %2756 ], [ %2780, %Flow8330 ] %2114 = phi i32 [ %1191, %2756 ], [ %2781, %Flow8330 ] %2115 = phi i64 [ %1190, %2756 ], [ %2782, %Flow8330 ] %2116 = phi i32 [ %1189, %2756 ], [ %2783, %Flow8330 ] %2117 = phi i32 [ %1188, %2756 ], [ %2784, %Flow8330 ] %2118 = phi i64 [ %1187, %2756 ], [ %2785, %Flow8330 ] %2119 = phi i32 [ %1186, %2756 ], [ %2786, %Flow8330 ] %2120 = phi i32 [ %1185, %2756 ], [ %2787, %Flow8330 ] %2121 = phi i64 [ %1184, %2756 ], [ %2788, %Flow8330 ] %2122 = phi i32 [ %1183, %2756 ], [ %2789, %Flow8330 ] %2123 = phi i32 [ %1182, %2756 ], [ %2790, %Flow8330 ] %2124 = phi i64 [ %1181, %2756 ], [ %2791, %Flow8330 ] %2125 = phi i32 [ %1180, %2756 ], [ %2792, %Flow8330 ] %2126 = phi i32 [ %.lcssa9256, %2756 ], [ %1179, %Flow8330 ] %2127 = phi i64 [ %.lcssa9257, %2756 ], [ %1178, %Flow8330 ] %2128 = phi i32 [ %.lcssa9258, %2756 ], [ %1177, %Flow8330 ] %2129 = phi i32 [ %.lcssa9241, %2756 ], [ %1176, %Flow8330 ] %2130 = phi i64 [ %.lcssa9242, %2756 ], [ %1175, %Flow8330 ] %2131 = phi i32 [ %.lcssa9243, %2756 ], [ %1174, %Flow8330 ] %2132 = phi i32 [ %.lcssa9225, %2756 ], [ %1173, %Flow8330 ] %2133 = phi i64 [ %.lcssa9226, %2756 ], [ %1172, %Flow8330 ] %2134 = phi i32 [ %.lcssa9227, %2756 ], [ %1171, %Flow8330 ] %2135 = phi i32 [ %.lcssa9213, %2756 ], [ %1170, %Flow8330 ] %2136 = phi i64 [ %.lcssa9214, %2756 ], [ %1169, %Flow8330 ] %2137 = phi i32 [ %.lcssa9215, %2756 ], [ %1168, %Flow8330 ] %2138 = phi i32 [ %.lcssa9198, %2756 ], [ %1167, %Flow8330 ] %2139 = phi i64 [ %.lcssa9199, %2756 ], [ %1166, %Flow8330 ] %2140 = phi i32 [ %.lcssa9200, %2756 ], [ %1165, %Flow8330 ] call void @llvm.amdgcn.end.cf.i64(i64 %2795) br label %sw.epilog, !amdgpu.uniform !42 for.cond.i.i.i1283: ; preds = %for.cond.i.i.i1283.preheader, %for.cond.i.i.i1283 %phi.broken8736 = phi i64 [ 0, %for.cond.i.i.i1283.preheader ], [ %2142, %for.cond.i.i.i1283 ] %lsr.iv7003 = phi ptr addrspace(4) [ %scevgep7005, %for.cond.i.i.i1283 ], [ %scevgep7002, %for.cond.i.i.i1283.preheader ] %scevgep7005 = getelementptr i8, ptr addrspace(4) %lsr.iv7003, i64 1 %2141 = load i8, ptr addrspace(4) %scevgep7005, align 1, !tbaa !57 %cmp.i.i.i1285 = icmp eq i8 %2141, 0 %2142 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.i.i1285, i64 %phi.broken8736) %2143 = call i1 @llvm.amdgcn.loop.i64(i64 %2142) br i1 %2143, label %for.cond.i.i1.i1292.preheader, label %for.cond.i.i.i1283 for.cond.i.i1.i1292.preheader: ; preds = %for.cond.i.i.i1283 %scevgep7005.lcssa = phi ptr addrspace(4) [ %scevgep7005, %for.cond.i.i.i1283 ] %.lcssa9194 = phi i64 [ %2142, %for.cond.i.i.i1283 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9194) br label %for.cond.i.i1.i1292, !amdgpu.uniform !42 for.cond.i.i1.i1292: ; preds = %for.cond.i.i1.i1292.preheader, %Flow8329 %2144 = phi i32 [ %2181, %Flow8329 ], [ %1165, %for.cond.i.i1.i1292.preheader ] %2145 = phi i64 [ %2182, %Flow8329 ], [ %1166, %for.cond.i.i1.i1292.preheader ] %2146 = phi i32 [ %2183, %Flow8329 ], [ %1167, %for.cond.i.i1.i1292.preheader ] %retval.sroa.6.0.i.i.i1293 = phi i32 [ %2186, %Flow8329 ], [ undef, %for.cond.i.i1.i1292.preheader ] %retval.sroa.2.0.i.i.i1295 = phi i64 [ %2185, %Flow8329 ], [ undef, %for.cond.i.i1.i1292.preheader ] %retval.sroa.8.0.i.i.i1296 = phi i32 [ %2184, %Flow8329 ], [ undef, %for.cond.i.i1.i1292.preheader ] %index.0.i.i.i1297 = phi i32 [ %2188, %Flow8329 ], [ 0, %for.cond.i.i1.i1292.preheader ] %2147 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i1298 = icmp ult i32 %index.0.i.i.i1297, %2147 %spec.store.select.i.i.i1299 = select i1 %cmp.not.i.i.i1298, i32 %index.0.i.i.i1297, i32 0 %2148 = call i64 @llvm.amdgcn.ballot.i64(i1 true) %2149 = and i32 %spec.store.select.i.i.i1299, 31 %2150 = lshr i64 %2148, %sh_prom.i.i.i.i756 %2151 = trunc i64 %2150 to i32 %conv4.i.i.i.i.i1303 = and i32 %2151, 1 %shl.i.i.i.i.i1304 = shl nuw i32 %conv4.i.i.i.i.i1303, %2149 br label %ComputeLoop5632, !amdgpu.uniform !42 2152: ; preds = %ComputeEnd5633 %sunkaddr7405 = getelementptr inbounds i8, ptr addrspace(1) %7400, i64 40 %2153 = atomicrmw or ptr addrspace(1) %sunkaddr7405, i32 %.lcssa9195 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2154, !amdgpu.uniform !42 2154: ; preds = %2152, %ComputeEnd5633 %2155 = phi i32 [ %2153, %2152 ], [ poison, %ComputeEnd5633 ] call void @llvm.amdgcn.end.cf.i64(i64 %7409) %2156 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %2155) %2157 = or i32 %2156, %.lcssa9196 %shl5.i.i.i.i.i1305 = shl nuw i32 1, %2149 %and.i.i.i.i.i1306 = and i32 %shl5.i.i.i.i.i1305, %2157 %tobool3.i.i.i.i1307 = icmp ne i32 %and.i.i.i.i.i1306, 0 %2158 = call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i1307) %and.i.i.i.i.i.i1308 = and i64 %2158, %2148 %cmp.i.not.i.i.i1309 = icmp ne i64 %2148, %and.i.i.i.i.i.i1308 br i1 %cmp.i.not.i.i.i1309, label %if.then.i.i.i.i1310, label %Flow8328, !amdgpu.uniform !42 if.then.i.i.i.i1310: ; preds = %2154 fence syncscope("agent") acquire %2159 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %2160 = extractelement <2 x i64> %2159, i32 0 %2161 = inttoptr i64 %2160 to ptr %2162 = extractelement <2 x i64> %2159, i32 1 %2163 = inttoptr i64 %2162 to ptr %idxprom.i.i.i.i1311 = zext i32 %spec.store.select.i.i.i1299 to i64 %arrayidx.i.i.i.i1312 = getelementptr inbounds nuw i32, ptr %2161, i64 %idxprom.i.i.i.i1311, !amdgpu.uniform !42 %2164 = load atomic i32, ptr %arrayidx.i.i.i.i1312 monotonic, align 4 %2165 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2164) %arrayidx.i45.i.i.i1313 = getelementptr inbounds nuw i32, ptr %2163, i64 %idxprom.i.i.i.i1311, !amdgpu.uniform !42 %2166 = load atomic i32, ptr %arrayidx.i45.i.i.i1313 monotonic, align 4 %2167 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2166) %cmp.i46.not.i.i.i1314 = icmp ne i32 %2165, %2167 br i1 %cmp.i46.not.i.i.i1314, label %if.then12.i.i.i1315, label %Flow8326, !amdgpu.uniform !42 if.then12.i.i.i1315: ; preds = %if.then.i.i.i.i1310 fence syncscope("agent") release %2168 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %2148, i1 true) %iszero.i.i.i.i.i.i.i1316 = icmp ne i64 %2148, 0 %cmp2.i.i.i.i.i.i1317 = icmp eq i64 %2168, %sh_prom.i.i.i.i756 %cmp.i.i.i.i.i.i1318 = select i1 %iszero.i.i.i.i.i.i.i1316, i1 %cmp2.i.i.i.i.i.i1317, i1 false %conv4.i.i51.i.i.i1319 = zext i1 %cmp.i.i.i.i.i.i1318 to i32 %shl.i.i52.i.i.i1320 = shl nuw i32 %conv4.i.i51.i.i.i1319, %2149 %xor.i.i.i.i.i1321 = xor i32 %shl.i.i52.i.i.i1320, -1 %2169 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5637, !amdgpu.uniform !42 2170: ; preds = %ComputeEnd5638 %sunkaddr7406 = getelementptr inbounds i8, ptr addrspace(1) %7400, i64 40 %2171 = atomicrmw and ptr addrspace(1) %sunkaddr7406, i32 %.lcssa9197 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2172, !amdgpu.uniform !42 2172: ; preds = %2170, %ComputeEnd5638 call void @llvm.amdgcn.end.cf.i64(i64 %7427) call void @llvm.amdgcn.wave.barrier() br label %Flow8326, !amdgpu.uniform !42 if.end14.i.i.i1381: ; preds = %Flow8326 %2173 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %2148, i1 true) %iszero.i.i.i.i.i.i1382 = icmp ne i64 %2148, 0 %cmp2.i.i.i.i.i1383 = icmp eq i64 %2173, %sh_prom.i.i.i.i756 %cmp.i.i.i.i.i1384 = select i1 %iszero.i.i.i.i.i.i1382, i1 %cmp2.i.i.i.i.i1383, i1 false %2174 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i1384) %2175 = extractvalue { i1, i64 } %2174, 0 %2176 = extractvalue { i1, i64 } %2174, 1 br i1 %2175, label %if.then16.i.i.i1386, label %if.end22.i.i.i1385 if.then16.i.i.i1386: ; preds = %if.end14.i.i.i1381 %2177 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i1387 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2177, i64 %idxprom.i.i.i.i1311, i32 1 store i32 1660944387, ptr %opcode.i.i.i1387, align 8, !tbaa !77 %arrayidx21.i.i.i1388 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2177, i64 %idxprom.i.i.i.i1311 store i64 %2148, ptr %arrayidx21.i.i.i1388, align 8, !tbaa !80 br label %if.end22.i.i.i1385, !amdgpu.uniform !42 Flow8327: ; preds = %if.end22.i.i.i1385, %Flow8326 %2178 = phi i32 [ %2165, %if.end22.i.i.i1385 ], [ %retval.sroa.8.0.i.i.i1296, %Flow8326 ] %2179 = phi i64 [ %2148, %if.end22.i.i.i1385 ], [ %retval.sroa.2.0.i.i.i1295, %Flow8326 ] %2180 = phi i32 [ %spec.store.select.i.i.i1299, %if.end22.i.i.i1385 ], [ %retval.sroa.6.0.i.i.i1293, %Flow8326 ] br label %cleanup26.i.i.i1322, !amdgpu.uniform !42 if.end22.i.i.i1385: ; preds = %if.then16.i.i.i1386, %if.end14.i.i.i1381 call void @llvm.amdgcn.end.cf.i64(i64 %2176) call void @llvm.amdgcn.wave.barrier() br label %Flow8327, !amdgpu.uniform !42 Flow8328: ; preds = %cleanup26.i.i.i1322, %2154 %2181 = phi i32 [ %2180, %cleanup26.i.i.i1322 ], [ %2144, %2154 ] %2182 = phi i64 [ %2179, %cleanup26.i.i.i1322 ], [ %2145, %2154 ] %2183 = phi i32 [ %2178, %cleanup26.i.i.i1322 ], [ %2146, %2154 ] %2184 = phi i32 [ %2178, %cleanup26.i.i.i1322 ], [ %retval.sroa.8.0.i.i.i1296, %2154 ] %2185 = phi i64 [ %2179, %cleanup26.i.i.i1322 ], [ %retval.sroa.2.0.i.i.i1295, %2154 ] %2186 = phi i32 [ %2180, %cleanup26.i.i.i1322 ], [ %retval.sroa.6.0.i.i.i1293, %2154 ] %2187 = phi i1 [ %cmp.i46.not.i.i.i1314, %cleanup26.i.i.i1322 ], [ true, %2154 ] br i1 %2187, label %for.inc.i.i.i1327, label %Flow8329, !amdgpu.uniform !42 cleanup26.i.i.i1322: ; preds = %Flow8327 br label %Flow8328, !amdgpu.uniform !42 for.inc.i.i.i1327: ; preds = %Flow8328 %inc.i.i.i1332 = add i32 %spec.store.select.i.i.i1299, 1 br label %Flow8329, !amdgpu.uniform !42 Flow8329: ; preds = %for.inc.i.i.i1327, %Flow8328 %2188 = phi i32 [ %inc.i.i.i1332, %for.inc.i.i.i1327 ], [ poison, %Flow8328 ] %2189 = phi i1 [ false, %for.inc.i.i.i1327 ], [ true, %Flow8328 ] br i1 %2189, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1333, label %for.cond.i.i1.i1292, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1333: ; preds = %Flow8329 %.lcssa9200 = phi i32 [ %2181, %Flow8329 ] %.lcssa9199 = phi i64 [ %2182, %Flow8329 ] %.lcssa9198 = phi i32 [ %2183, %Flow8329 ] %2190 = addrspacecast ptr addrspace(4) %scevgep7005.lcssa to ptr %2191 = addrspacecast ptr addrspace(4) %cond3 to ptr %2192 = ptrtoint ptr %2191 to i64 %sub.ptr.lhs.cast.i.i.i1288 = ptrtoint ptr %2190 to i64 %sub.ptr.sub.i.i.i1290 = sub i64 %sub.ptr.lhs.cast.i.i.i1288, %2192 fence acquire %2193 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i1334 = shl i32 %.lcssa9200, 6 %idxprom.i19.i.i.i.i.i1335 = zext i32 %mul.i.i.i.i.i.i1334 to i64 %arrayidx.i20.i.i.i.i.i1336 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %2193, i64 %idxprom.i19.i.i.i.i.i1335 %arrayidx.i22.i.i.i.i.i1337 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i1336, i64 %sh_prom.i.i.i.i756 store i64 %sub.ptr.sub.i.i.i1290, ptr %arrayidx.i22.i.i.i.i.i1337, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i1338 = call i64 @llvm.umin.i64(i64 %sub.ptr.sub.i.i.i1290, i64 56) %2194 = and i64 %spec.select.i.i.i.i.i.i.i1338, 15 %2195 = sub i64 %spec.select.i.i.i.i.i.i.i1338, %2194 %2196 = icmp ne i64 %2195, 0 %2197 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2196) %2198 = extractvalue { i1, i64 } %2197, 0 %2199 = extractvalue { i1, i64 } %2197, 1 br i1 %2198, label %loop-memcpy-expansion5283.preheader, label %Flow8325 loop-memcpy-expansion5283.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1333 %scevgep7006 = getelementptr i8, ptr %2193, i64 8 %scevgep7007 = getelementptr i8, ptr %scevgep7006, i64 %1474 %2200 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1335, 6 %scevgep7008 = getelementptr i8, ptr %scevgep7007, i64 %2200 br label %loop-memcpy-expansion5283, !amdgpu.uniform !42 Flow8325: ; preds = %Flow8324, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1333 call void @llvm.amdgcn.end.cf.i64(i64 %2199) br label %loop-memcpy-residual-header5286, !amdgpu.uniform !42 loop-memcpy-expansion5283: ; preds = %loop-memcpy-expansion5283.preheader, %loop-memcpy-expansion5283 %phi.broken8737 = phi i64 [ 0, %loop-memcpy-expansion5283.preheader ], [ %2205, %loop-memcpy-expansion5283 ] %loop-index5284 = phi i64 [ %2203, %loop-memcpy-expansion5283 ], [ 0, %loop-memcpy-expansion5283.preheader ] %2201 = getelementptr i8, ptr addrspace(4) %cond3, i64 %loop-index5284 %2202 = load <4 x i32>, ptr addrspace(4) %2201, align 1 %scevgep7009 = getelementptr i8, ptr %scevgep7008, i64 %loop-index5284 store <4 x i32> %2202, ptr %scevgep7009, align 1 %2203 = add i64 %loop-index5284, 16 %2204 = icmp uge i64 %2203, %2195 %2205 = call i64 @llvm.amdgcn.if.break.i64(i1 %2204, i64 %phi.broken8737) %2206 = call i1 @llvm.amdgcn.loop.i64(i64 %2205) br i1 %2206, label %Flow8324, label %loop-memcpy-expansion5283 Flow8323: ; preds = %Flow8321, %Flow8322 %2207 = phi i64 [ %6572, %Flow8321 ], [ %6567, %Flow8322 ] call void @llvm.amdgcn.end.cf.i64(i64 %6570) br label %post-loop-memcpy-expansion5282, !amdgpu.uniform !42 loop-memcpy-residual5285: ; preds = %loop-memcpy-residual5285.preheader, %loop-memcpy-residual5285 %phi.broken8738 = phi i64 [ 0, %loop-memcpy-residual5285.preheader ], [ %2211, %loop-memcpy-residual5285 ] %residual-loop-index5287 = phi i64 [ %2209, %loop-memcpy-residual5285 ], [ 0, %loop-memcpy-residual5285.preheader ] %scevgep7015 = getelementptr i8, ptr addrspace(4) %scevgep7014, i64 %residual-loop-index5287 %2208 = load i8, ptr addrspace(4) %scevgep7015, align 1 %scevgep7013 = getelementptr i8, ptr %scevgep7012, i64 %residual-loop-index5287 store i8 %2208, ptr %scevgep7013, align 1 %2209 = add i64 %residual-loop-index5287, 1 %2210 = icmp uge i64 %2209, %2194 %2211 = call i64 @llvm.amdgcn.if.break.i64(i1 %2210, i64 %phi.broken8738) %2212 = call i1 @llvm.amdgcn.loop.i64(i64 %2211) br i1 %2212, label %Flow8321, label %loop-memcpy-residual5285 Flow8321: ; preds = %loop-memcpy-residual5285 %.lcssa9202 = phi i64 [ %2211, %loop-memcpy-residual5285 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9202) br label %Flow8323, !amdgpu.uniform !42 post-loop-memcpy-expansion5282: ; preds = %Flow8323 %2213 = addrspacecast ptr addrspace(4) %scevgep7005.lcssa to ptr %2214 = ptrtoint ptr %2213 to i64 %tobool.not.i.i.i.i.i.i1340 = icmp eq i32 %.lcssa9198, 0 %conv.i.i.i.i.i.i1341 = zext i1 %tobool.not.i.i.i.i.i.i1340 to i32 fence release %2215 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i1342 = zext i32 %.lcssa9200 to i64 %arrayidx.i24.i.i.i.i.i1343 = getelementptr inbounds nuw i32, ptr %2215, i64 %idxprom.i23.i.i.i.i.i1342 store atomic i32 %conv.i.i.i.i.i.i1341, ptr %arrayidx.i24.i.i.i.i.i1343 monotonic, align 4 %2216 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i1344 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2216, i64 %idxprom.i23.i.i.i.i.i1342 %2217 = load i64, ptr %arrayidx.i.i5.i.i1344, align 8, !tbaa !80 %2218 = add i64 %1142, %2214 br label %while.cond.i.i.i.i1345, !amdgpu.uniform !42 while.cond.i.i.i.i1345: ; preds = %post-loop-memcpy-expansion5282, %Flow8320 %phi.broken8742 = phi i64 [ 0, %post-loop-memcpy-expansion5282 ], [ %2240, %Flow8320 ] %lsr.iv7022 = phi i64 [ %2238, %Flow8320 ], [ %2218, %post-loop-memcpy-expansion5282 ] %lsr.iv7017 = phi ptr addrspace(4) [ %2237, %Flow8320 ], [ %scevgep7016, %post-loop-memcpy-expansion5282 ] %port.sroa.37.0.i.i1346 = phi i32 [ %2236, %Flow8320 ], [ %conv.i.i.i.i.i.i1341, %post-loop-memcpy-expansion5282 ] %idx.0.i.i.i.i1347 = phi i64 [ %2235, %Flow8320 ], [ 56, %post-loop-memcpy-expansion5282 ] %cmp.i.i.i.i1348 = icmp ugt i64 %sub.ptr.sub.i.i.i1290, %idx.0.i.i.i.i1347 %2219 = call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i1348) %and.i.i.i.i6.i.i1349 = and i64 %2219, %2217 %tobool.not.i.i.i.i1350 = icmp ne i64 %and.i.i.i.i6.i.i1349, 0 %2220 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i1351 = getelementptr inbounds nuw i32, ptr %2220, i64 %idxprom.i23.i.i.i.i.i1342 %2221 = load atomic i32, ptr %arrayidx.i22.i.i.i1351 monotonic, align 4 %2222 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i1350) %2223 = extractvalue { i1, i64 } %2222, 0 %2224 = extractvalue { i1, i64 } %2222, 1 br i1 %2223, label %cond.false.i8.i.i.i.i1352, label %Flow8320 cond.false.i8.i.i.i.i1352: ; preds = %while.cond.i.i.i.i1345 %2225 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2221) %2226 = icmp ne i32 %2225, %port.sroa.37.0.i.i1346 %2227 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2226) %2228 = extractvalue { i1, i64 } %2227, 0 %2229 = extractvalue { i1, i64 } %2227, 1 br i1 %2228, label %while.body.i.i21.i.i.i.i1353.preheader, label %Flow8319 while.body.i.i21.i.i.i.i1353.preheader: ; preds = %cond.false.i8.i.i.i.i1352 br label %while.body.i.i21.i.i.i.i1353, !amdgpu.uniform !42 Flow8319: ; preds = %Flow8318, %cond.false.i8.i.i.i.i1352 call void @llvm.amdgcn.end.cf.i64(i64 %2229) br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1356, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1353: ; preds = %while.body.i.i21.i.i.i.i1353.preheader, %while.body.i.i21.i.i.i.i1353 %phi.broken8739 = phi i64 [ 0, %while.body.i.i21.i.i.i.i1353.preheader ], [ %2233, %while.body.i.i21.i.i.i.i1353 ] call void @llvm.amdgcn.s.sleep(i32 2) %2230 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i1354 = getelementptr inbounds nuw i32, ptr %2230, i64 %idxprom.i23.i.i.i.i.i1342 %2231 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i1354 monotonic, align 4 %2232 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2231) %cmp.i.not.i.i23.i.i.i.i1355 = icmp eq i32 %2232, %port.sroa.37.0.i.i1346 %2233 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i23.i.i.i.i1355, i64 %phi.broken8739) %2234 = call i1 @llvm.amdgcn.loop.i64(i64 %2233) br i1 %2234, label %Flow8318, label %while.body.i.i21.i.i.i.i1353 Flow8318: ; preds = %while.body.i.i21.i.i.i.i1353 %.lcssa9203 = phi i64 [ %2233, %while.body.i.i21.i.i.i.i1353 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9203) br label %Flow8319, !amdgpu.uniform !42 Flow8320: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1357, %while.cond.i.i.i.i1345 %2235 = phi i64 [ %add.i.i.i.i1360, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1357 ], [ poison, %while.cond.i.i.i.i1345 ] %2236 = phi i32 [ %conv.i.i26.i.i.i.i1358, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1357 ], [ poison, %while.cond.i.i.i.i1345 ] %2237 = phi ptr addrspace(4) [ %scevgep7018, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1357 ], [ poison, %while.cond.i.i.i.i1345 ] %2238 = phi i64 [ %lsr.iv.next7023, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1357 ], [ poison, %while.cond.i.i.i.i1345 ] %2239 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1357 ], [ true, %while.cond.i.i.i.i1345 ] call void @llvm.amdgcn.end.cf.i64(i64 %2224) %2240 = call i64 @llvm.amdgcn.if.break.i64(i1 %2239, i64 %phi.broken8742) %2241 = call i1 @llvm.amdgcn.loop.i64(i64 %2240) br i1 %2241, label %cond.false.i.i.i1367, label %while.cond.i.i.i.i1345 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1356: ; preds = %Flow8319 fence acquire %2242 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i1348) %2243 = extractvalue { i1, i64 } %2242, 0 %2244 = extractvalue { i1, i64 } %2242, 1 br i1 %2243, label %if.then.i.i.i.i.i.i.i1361, label %Flow8317 if.then.i.i.i.i.i.i.i1361: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1356 %sub.i.i.i.i.i.i.i1363 = sub nuw i64 %sub.ptr.sub.i.i.i1290, %idx.0.i.i.i.i1347 %spec.select.i.i.i36.i.i.i.i1364 = call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i1363, i64 64) %2245 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %2246 = and i64 %spec.select.i.i.i36.i.i.i.i1364, 15 %2247 = sub i64 %spec.select.i.i.i36.i.i.i.i1364, %2246 %2248 = icmp ne i64 %2247, 0 %2249 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2248) %2250 = extractvalue { i1, i64 } %2249, 0 %2251 = extractvalue { i1, i64 } %2249, 1 br i1 %2250, label %loop-memcpy-expansion5289.preheader, label %Flow8316 loop-memcpy-expansion5289.preheader: ; preds = %if.then.i.i.i.i.i.i.i1361 %arrayidx.i20.i35.i.i.i.i1365 = getelementptr %"struct.rpc::Buffer", ptr %2245, i64 %idxprom.i19.i.i.i.i.i1335 %arrayidx.i22.i38.i.i.i.i1366 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i1365, i64 %sh_prom.i.i.i.i756 br label %loop-memcpy-expansion5289, !amdgpu.uniform !42 Flow8316: ; preds = %Flow8315, %if.then.i.i.i.i.i.i.i1361 call void @llvm.amdgcn.end.cf.i64(i64 %2251) br label %loop-memcpy-residual-header5292, !amdgpu.uniform !42 loop-memcpy-expansion5289: ; preds = %loop-memcpy-expansion5289.preheader, %loop-memcpy-expansion5289 %phi.broken8740 = phi i64 [ 0, %loop-memcpy-expansion5289.preheader ], [ %2256, %loop-memcpy-expansion5289 ] %loop-index5290 = phi i64 [ %2254, %loop-memcpy-expansion5289 ], [ 0, %loop-memcpy-expansion5289.preheader ] %scevgep7019 = getelementptr i8, ptr addrspace(4) %lsr.iv7017, i64 %loop-index5290 %2252 = load <4 x i32>, ptr addrspace(4) %scevgep7019, align 1 %2253 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i1366, i64 %loop-index5290 store <4 x i32> %2252, ptr %2253, align 1 %2254 = add i64 %loop-index5290, 16 %2255 = icmp uge i64 %2254, %2247 %2256 = call i64 @llvm.amdgcn.if.break.i64(i1 %2255, i64 %phi.broken8740) %2257 = call i1 @llvm.amdgcn.loop.i64(i64 %2256) br i1 %2257, label %Flow8315, label %loop-memcpy-expansion5289 Flow8314: ; preds = %Flow8313, %loop-memcpy-residual-header5292 call void @llvm.amdgcn.end.cf.i64(i64 %6576) br label %Flow8317, !amdgpu.uniform !42 loop-memcpy-residual5291: ; preds = %loop-memcpy-residual5291.preheader, %loop-memcpy-residual5291 %phi.broken8741 = phi i64 [ 0, %loop-memcpy-residual5291.preheader ], [ %2261, %loop-memcpy-residual5291 ] %residual-loop-index5293 = phi i64 [ %2259, %loop-memcpy-residual5291 ], [ 0, %loop-memcpy-residual5291.preheader ] %scevgep7028 = getelementptr i8, ptr addrspace(4) %scevgep7027, i64 %residual-loop-index5293 %2258 = load i8, ptr addrspace(4) %scevgep7028, align 1 %scevgep7026 = getelementptr i8, ptr %scevgep7025, i64 %residual-loop-index5293 store i8 %2258, ptr %scevgep7026, align 1 %2259 = add i64 %residual-loop-index5293, 1 %2260 = icmp uge i64 %2259, %2246 %2261 = call i64 @llvm.amdgcn.if.break.i64(i1 %2260, i64 %phi.broken8741) %2262 = call i1 @llvm.amdgcn.loop.i64(i64 %2261) br i1 %2262, label %Flow8313, label %loop-memcpy-residual5291 Flow8313: ; preds = %loop-memcpy-residual5291 %.lcssa9205 = phi i64 [ %2261, %loop-memcpy-residual5291 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9205) br label %Flow8314, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1357: ; preds = %Flow8317 %conv.i.i26.i.i.i.i1358 = xor i32 %port.sroa.37.0.i.i1346, 1 fence release %2263 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i1359 = getelementptr inbounds nuw i32, ptr %2263, i64 %idxprom.i23.i.i.i.i.i1342 store atomic i32 %conv.i.i26.i.i.i.i1358, ptr %arrayidx.i24.i29.i.i.i.i1359 monotonic, align 4 %add.i.i.i.i1360 = add i64 %idx.0.i.i.i.i1347, 64 %scevgep7018 = getelementptr i8, ptr addrspace(4) %lsr.iv7017, i64 64 %lsr.iv.next7023 = add i64 %lsr.iv7022, -64 br label %Flow8320, !amdgpu.uniform !42 cond.false.i.i.i1367: ; preds = %Flow8320 %.lcssa9207 = phi i64 [ %2240, %Flow8320 ] %port.sroa.37.0.i.i1346.lcssa = phi i32 [ %port.sroa.37.0.i.i1346, %Flow8320 ] %.lcssa9206 = phi i32 [ %2221, %Flow8320 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9207) %2264 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa9206) %2265 = icmp ne i32 %2264, %port.sroa.37.0.i.i1346.lcssa %2266 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2265) %2267 = extractvalue { i1, i64 } %2266, 0 %2268 = extractvalue { i1, i64 } %2266, 1 br i1 %2267, label %while.body.i.i.i.i1368.preheader, label %Flow8312 while.body.i.i.i.i1368.preheader: ; preds = %cond.false.i.i.i1367 br label %while.body.i.i.i.i1368, !amdgpu.uniform !42 Flow8312: ; preds = %Flow8311, %cond.false.i.i.i1367 call void @llvm.amdgcn.end.cf.i64(i64 %2268) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1389, !amdgpu.uniform !42 while.body.i.i.i.i1368: ; preds = %while.body.i.i.i.i1368.preheader, %while.body.i.i.i.i1368 %phi.broken8743 = phi i64 [ 0, %while.body.i.i.i.i1368.preheader ], [ %2272, %while.body.i.i.i.i1368 ] call void @llvm.amdgcn.s.sleep(i32 2) %2269 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i1369 = getelementptr inbounds nuw i32, ptr %2269, i64 %idxprom.i23.i.i.i.i.i1342 %2270 = load atomic i32, ptr %arrayidx.i.i.i8.i.i1369 monotonic, align 4 %2271 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2270) %cmp.i.not.i.i.i.i1370 = icmp eq i32 %2271, %port.sroa.37.0.i.i1346.lcssa %2272 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i1370, i64 %phi.broken8743) %2273 = call i1 @llvm.amdgcn.loop.i64(i64 %2272) br i1 %2273, label %Flow8311, label %while.body.i.i.i.i1368 Flow8311: ; preds = %while.body.i.i.i.i1368 %.lcssa9208 = phi i64 [ %2272, %while.body.i.i.i.i1368 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9208) br label %Flow8312, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1389: ; preds = %Flow8312 fence acquire call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %2274 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa9199, i1 true) %iszero.i.i.i.i.i13.i.i1372 = icmp ne i64 %.lcssa9199, 0 %cmp2.i.i.i.i14.i.i1373 = icmp eq i64 %2274, %sh_prom.i.i.i.i756 %cmp.i.i.i.i15.i.i1374 = select i1 %iszero.i.i.i.i.i13.i.i1372, i1 %cmp2.i.i.i.i14.i.i1373, i1 false %2275 = and i32 %.lcssa9200, 31 %conv4.i.i.i19.i.i1378 = zext i1 %cmp.i.i.i.i15.i.i1374 to i32 %shl.i.i.i20.i.i1379 = shl nuw i32 %conv4.i.i.i19.i.i1378, %2275 %xor.i.i.i21.i.i1380 = xor i32 %shl.i.i.i20.i.i1379, -1 %2276 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5641, !amdgpu.uniform !42 2277: ; preds = %ComputeEnd5642 %div8.i.i.i16.i.i1375 = lshr i32 %.lcssa9200, 5 %idxprom.i.i.i17.i.i1376 = zext nneg i32 %div8.i.i.i16.i.i1375 to i64 %2278 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i1376 %sunkaddr7407 = getelementptr inbounds i8, ptr addrspace(1) %2278, i64 40 %2279 = atomicrmw and ptr addrspace(1) %sunkaddr7407, i32 %.lcssa9209 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2280, !amdgpu.uniform !42 2280: ; preds = %2277, %ComputeEnd5642 call void @llvm.amdgcn.end.cf.i64(i64 %7444) call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i1.i1398, !amdgpu.uniform !42 for.cond.i.i1.i1398: ; preds = %2280, %Flow8310 %2281 = phi i32 [ %2318, %Flow8310 ], [ %1168, %2280 ] %2282 = phi i64 [ %2319, %Flow8310 ], [ %1169, %2280 ] %2283 = phi i32 [ %2320, %Flow8310 ], [ %1170, %2280 ] %retval.sroa.6.0.i.i.i1399 = phi i32 [ %2323, %Flow8310 ], [ undef, %2280 ] %retval.sroa.2.0.i.i.i1401 = phi i64 [ %2322, %Flow8310 ], [ undef, %2280 ] %retval.sroa.8.0.i.i.i1402 = phi i32 [ %2321, %Flow8310 ], [ undef, %2280 ] %index.0.i.i.i1403 = phi i32 [ %2325, %Flow8310 ], [ 0, %2280 ] %2284 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i1404 = icmp ult i32 %index.0.i.i.i1403, %2284 %spec.store.select.i.i.i1405 = select i1 %cmp.not.i.i.i1404, i32 %index.0.i.i.i1403, i32 0 %2285 = call i64 @llvm.amdgcn.ballot.i64(i1 true) %2286 = and i32 %spec.store.select.i.i.i1405, 31 %2287 = lshr i64 %2285, %sh_prom.i.i.i.i756 %2288 = trunc i64 %2287 to i32 %conv4.i.i.i.i.i1409 = and i32 %2288, 1 %shl.i.i.i.i.i1410 = shl nuw i32 %conv4.i.i.i.i.i1409, %2286 br label %ComputeLoop5645, !amdgpu.uniform !42 2289: ; preds = %ComputeEnd5646 %sunkaddr7408 = getelementptr inbounds i8, ptr addrspace(1) %7454, i64 40 %2290 = atomicrmw or ptr addrspace(1) %sunkaddr7408, i32 %.lcssa9210 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2291, !amdgpu.uniform !42 2291: ; preds = %2289, %ComputeEnd5646 %2292 = phi i32 [ %2290, %2289 ], [ poison, %ComputeEnd5646 ] call void @llvm.amdgcn.end.cf.i64(i64 %7463) %2293 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %2292) %2294 = or i32 %2293, %.lcssa9211 %shl5.i.i.i.i.i1411 = shl nuw i32 1, %2286 %and.i.i.i.i.i1412 = and i32 %shl5.i.i.i.i.i1411, %2294 %tobool3.i.i.i.i1413 = icmp ne i32 %and.i.i.i.i.i1412, 0 %2295 = call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i1413) %and.i.i.i.i.i.i1414 = and i64 %2295, %2285 %cmp.i.not.i.i.i1415 = icmp ne i64 %2285, %and.i.i.i.i.i.i1414 br i1 %cmp.i.not.i.i.i1415, label %if.then.i.i.i.i1416, label %Flow8309, !amdgpu.uniform !42 if.then.i.i.i.i1416: ; preds = %2291 fence syncscope("agent") acquire %2296 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %2297 = extractelement <2 x i64> %2296, i32 0 %2298 = inttoptr i64 %2297 to ptr %2299 = extractelement <2 x i64> %2296, i32 1 %2300 = inttoptr i64 %2299 to ptr %idxprom.i.i.i.i1417 = zext i32 %spec.store.select.i.i.i1405 to i64 %arrayidx.i.i.i.i1418 = getelementptr inbounds nuw i32, ptr %2298, i64 %idxprom.i.i.i.i1417, !amdgpu.uniform !42 %2301 = load atomic i32, ptr %arrayidx.i.i.i.i1418 monotonic, align 4 %2302 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2301) %arrayidx.i45.i.i.i1419 = getelementptr inbounds nuw i32, ptr %2300, i64 %idxprom.i.i.i.i1417, !amdgpu.uniform !42 %2303 = load atomic i32, ptr %arrayidx.i45.i.i.i1419 monotonic, align 4 %2304 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2303) %cmp.i46.not.i.i.i1420 = icmp ne i32 %2302, %2304 br i1 %cmp.i46.not.i.i.i1420, label %if.then12.i.i.i1421, label %Flow8307, !amdgpu.uniform !42 if.then12.i.i.i1421: ; preds = %if.then.i.i.i.i1416 fence syncscope("agent") release %2305 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %2285, i1 true) %iszero.i.i.i.i.i.i.i1422 = icmp ne i64 %2285, 0 %cmp2.i.i.i.i.i.i1423 = icmp eq i64 %2305, %sh_prom.i.i.i.i756 %cmp.i.i.i.i.i.i1424 = select i1 %iszero.i.i.i.i.i.i.i1422, i1 %cmp2.i.i.i.i.i.i1423, i1 false %conv4.i.i51.i.i.i1425 = zext i1 %cmp.i.i.i.i.i.i1424 to i32 %shl.i.i52.i.i.i1426 = shl nuw i32 %conv4.i.i51.i.i.i1425, %2286 %xor.i.i.i.i.i1427 = xor i32 %shl.i.i52.i.i.i1426, -1 %2306 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5650, !amdgpu.uniform !42 2307: ; preds = %ComputeEnd5651 %sunkaddr7409 = getelementptr inbounds i8, ptr addrspace(1) %7454, i64 40 %2308 = atomicrmw and ptr addrspace(1) %sunkaddr7409, i32 %.lcssa9212 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2309, !amdgpu.uniform !42 2309: ; preds = %2307, %ComputeEnd5651 call void @llvm.amdgcn.end.cf.i64(i64 %7481) call void @llvm.amdgcn.wave.barrier() br label %Flow8307, !amdgpu.uniform !42 if.end14.i.i.i1487: ; preds = %Flow8307 %2310 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %2285, i1 true) %iszero.i.i.i.i.i.i1488 = icmp ne i64 %2285, 0 %cmp2.i.i.i.i.i1489 = icmp eq i64 %2310, %sh_prom.i.i.i.i756 %cmp.i.i.i.i.i1490 = select i1 %iszero.i.i.i.i.i.i1488, i1 %cmp2.i.i.i.i.i1489, i1 false %2311 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i1490) %2312 = extractvalue { i1, i64 } %2311, 0 %2313 = extractvalue { i1, i64 } %2311, 1 br i1 %2312, label %if.then16.i.i.i1492, label %if.end22.i.i.i1491 if.then16.i.i.i1492: ; preds = %if.end14.i.i.i1487 %2314 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i1493 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2314, i64 %idxprom.i.i.i.i1417, i32 1 store i32 1660944387, ptr %opcode.i.i.i1493, align 8, !tbaa !77 %arrayidx21.i.i.i1494 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2314, i64 %idxprom.i.i.i.i1417 store i64 %2285, ptr %arrayidx21.i.i.i1494, align 8, !tbaa !80 br label %if.end22.i.i.i1491, !amdgpu.uniform !42 Flow8308: ; preds = %if.end22.i.i.i1491, %Flow8307 %2315 = phi i32 [ %2302, %if.end22.i.i.i1491 ], [ %retval.sroa.8.0.i.i.i1402, %Flow8307 ] %2316 = phi i64 [ %2285, %if.end22.i.i.i1491 ], [ %retval.sroa.2.0.i.i.i1401, %Flow8307 ] %2317 = phi i32 [ %spec.store.select.i.i.i1405, %if.end22.i.i.i1491 ], [ %retval.sroa.6.0.i.i.i1399, %Flow8307 ] br label %cleanup26.i.i.i1428, !amdgpu.uniform !42 if.end22.i.i.i1491: ; preds = %if.then16.i.i.i1492, %if.end14.i.i.i1487 call void @llvm.amdgcn.end.cf.i64(i64 %2313) call void @llvm.amdgcn.wave.barrier() br label %Flow8308, !amdgpu.uniform !42 Flow8309: ; preds = %cleanup26.i.i.i1428, %2291 %2318 = phi i32 [ %2317, %cleanup26.i.i.i1428 ], [ %2281, %2291 ] %2319 = phi i64 [ %2316, %cleanup26.i.i.i1428 ], [ %2282, %2291 ] %2320 = phi i32 [ %2315, %cleanup26.i.i.i1428 ], [ %2283, %2291 ] %2321 = phi i32 [ %2315, %cleanup26.i.i.i1428 ], [ %retval.sroa.8.0.i.i.i1402, %2291 ] %2322 = phi i64 [ %2316, %cleanup26.i.i.i1428 ], [ %retval.sroa.2.0.i.i.i1401, %2291 ] %2323 = phi i32 [ %2317, %cleanup26.i.i.i1428 ], [ %retval.sroa.6.0.i.i.i1399, %2291 ] %2324 = phi i1 [ %cmp.i46.not.i.i.i1420, %cleanup26.i.i.i1428 ], [ true, %2291 ] br i1 %2324, label %for.inc.i.i.i1433, label %Flow8310, !amdgpu.uniform !42 cleanup26.i.i.i1428: ; preds = %Flow8308 br label %Flow8309, !amdgpu.uniform !42 for.inc.i.i.i1433: ; preds = %Flow8309 %inc.i.i.i1438 = add i32 %spec.store.select.i.i.i1405, 1 br label %Flow8310, !amdgpu.uniform !42 Flow8310: ; preds = %for.inc.i.i.i1433, %Flow8309 %2325 = phi i32 [ %inc.i.i.i1438, %for.inc.i.i.i1433 ], [ poison, %Flow8309 ] %2326 = phi i1 [ false, %for.inc.i.i.i1433 ], [ true, %Flow8309 ] br i1 %2326, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1439, label %for.cond.i.i1.i1398, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1439: ; preds = %Flow8310 %.lcssa9215 = phi i32 [ %2318, %Flow8310 ] %.lcssa9214 = phi i64 [ %2319, %Flow8310 ] %.lcssa9213 = phi i32 [ %2320, %Flow8310 ] fence acquire %2327 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i1440 = shl i32 %.lcssa9215, 6 %idxprom.i19.i.i.i.i.i1441 = zext i32 %mul.i.i.i.i.i.i1440 to i64 %arrayidx.i20.i.i.i.i.i1442 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %2327, i64 %idxprom.i19.i.i.i.i.i1441 %arrayidx.i22.i.i.i.i.i1443 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i1442, i64 %sh_prom.i.i.i.i756 store i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.18.35 to ptr), i64 13) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.18.35 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i1443, align 8, !tbaa !82 br i1 %1138, label %loop-memcpy-expansion5295.preheader, label %Flow8306, !amdgpu.uniform !42 loop-memcpy-expansion5295.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1439 %scevgep7029 = getelementptr i8, ptr %2327, i64 8 %scevgep7030 = getelementptr i8, ptr %scevgep7029, i64 %1474 %2328 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1441, 6 %scevgep7031 = getelementptr i8, ptr %scevgep7030, i64 %2328 br label %loop-memcpy-expansion5295, !amdgpu.uniform !42 Flow8306: ; preds = %Flow8305, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1439 br label %loop-memcpy-residual-header5298, !amdgpu.uniform !42 loop-memcpy-expansion5295: ; preds = %loop-memcpy-expansion5295.preheader, %loop-memcpy-expansion5295 %loop-index5296 = phi i64 [ %2331, %loop-memcpy-expansion5295 ], [ 0, %loop-memcpy-expansion5295.preheader ] %2329 = getelementptr i8, ptr addrspace(4) @.str.18.35, i64 %loop-index5296, !amdgpu.uniform !42 %2330 = load <4 x i32>, ptr addrspace(4) %2329, align 1 %scevgep7032 = getelementptr i8, ptr %scevgep7031, i64 %loop-index5296 store <4 x i32> %2330, ptr %scevgep7032, align 1 %2331 = add i64 %loop-index5296, 16 %2332 = icmp uge i64 %2331, %1137 br i1 %2332, label %Flow8305, label %loop-memcpy-expansion5295, !amdgpu.uniform !42 Flow8304: ; preds = %Flow8302, %Flow8303 %2333 = phi i64 [ %6581, %Flow8302 ], [ %6579, %Flow8303 ] br label %post-loop-memcpy-expansion5294, !amdgpu.uniform !42 loop-memcpy-residual5297: ; preds = %loop-memcpy-residual5297.preheader, %loop-memcpy-residual5297 %residual-loop-index5299 = phi i64 [ %2335, %loop-memcpy-residual5297 ], [ 0, %loop-memcpy-residual5297.preheader ] %scevgep7037 = getelementptr i8, ptr addrspace(4) @.str.18.35, i64 %residual-loop-index5299, !amdgpu.uniform !42 %2334 = load i8, ptr addrspace(4) %scevgep7037, align 1 %scevgep7036 = getelementptr i8, ptr %scevgep7035, i64 %residual-loop-index5299 store i8 %2334, ptr %scevgep7036, align 1 %2335 = add i64 %residual-loop-index5299, 1 %2336 = icmp uge i64 %2335, %1136 br i1 %2336, label %Flow8302, label %loop-memcpy-residual5297, !amdgpu.uniform !42 Flow8302: ; preds = %loop-memcpy-residual5297 br label %Flow8304, !amdgpu.uniform !42 post-loop-memcpy-expansion5294: ; preds = %Flow8304 %tobool.not.i.i.i.i.i.i1446 = icmp eq i32 %.lcssa9213, 0 %conv.i.i.i.i.i.i1447 = zext i1 %tobool.not.i.i.i.i.i.i1446 to i32 fence release %2337 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i1448 = zext i32 %.lcssa9215 to i64 %arrayidx.i24.i.i.i.i.i1449 = getelementptr inbounds nuw i32, ptr %2337, i64 %idxprom.i23.i.i.i.i.i1448 store atomic i32 %conv.i.i.i.i.i.i1447, ptr %arrayidx.i24.i.i.i.i.i1449 monotonic, align 4 %2338 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i1450 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2338, i64 %idxprom.i23.i.i.i.i.i1448 %2339 = load i64, ptr %arrayidx.i.i5.i.i1450, align 8, !tbaa !80 br label %while.cond.i.i.i.i1451, !amdgpu.uniform !42 while.cond.i.i.i.i1451: ; preds = %post-loop-memcpy-expansion5294, %Flow8301 %phi.broken8745 = phi i64 [ 0, %post-loop-memcpy-expansion5294 ], [ %2361, %Flow8301 ] %lsr.iv7043 = phi i64 [ %2359, %Flow8301 ], [ -43, %post-loop-memcpy-expansion5294 ] %lsr.iv7038 = phi ptr addrspace(4) [ %2358, %Flow8301 ], [ getelementptr (i8, ptr addrspace(4) @.str.18.35, i64 56), %post-loop-memcpy-expansion5294 ] %port.sroa.37.0.i.i1452 = phi i32 [ %2357, %Flow8301 ], [ %conv.i.i.i.i.i.i1447, %post-loop-memcpy-expansion5294 ] %idx.0.i.i.i.i1453 = phi i64 [ %2356, %Flow8301 ], [ 56, %post-loop-memcpy-expansion5294 ] %cmp.i.i.i.i1454 = icmp ult i64 %idx.0.i.i.i.i1453, sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.18.35 to ptr), i64 13) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.18.35 to ptr) to i64)) %2340 = call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i1454) %and.i.i.i.i6.i.i1455 = and i64 %2340, %2339 %tobool.not.i.i.i.i1456 = icmp ne i64 %and.i.i.i.i6.i.i1455, 0 %2341 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i1457 = getelementptr inbounds nuw i32, ptr %2341, i64 %idxprom.i23.i.i.i.i.i1448 %2342 = load atomic i32, ptr %arrayidx.i22.i.i.i1457 monotonic, align 4 %2343 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i1456) %2344 = extractvalue { i1, i64 } %2343, 0 %2345 = extractvalue { i1, i64 } %2343, 1 br i1 %2344, label %cond.false.i8.i.i.i.i1458, label %Flow8301 cond.false.i8.i.i.i.i1458: ; preds = %while.cond.i.i.i.i1451 %2346 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2342) %2347 = icmp ne i32 %2346, %port.sroa.37.0.i.i1452 %2348 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2347) %2349 = extractvalue { i1, i64 } %2348, 0 %2350 = extractvalue { i1, i64 } %2348, 1 br i1 %2349, label %while.body.i.i21.i.i.i.i1459.preheader, label %Flow8300 while.body.i.i21.i.i.i.i1459.preheader: ; preds = %cond.false.i8.i.i.i.i1458 br label %while.body.i.i21.i.i.i.i1459, !amdgpu.uniform !42 Flow8300: ; preds = %Flow8299, %cond.false.i8.i.i.i.i1458 call void @llvm.amdgcn.end.cf.i64(i64 %2350) br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1462, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1459: ; preds = %while.body.i.i21.i.i.i.i1459.preheader, %while.body.i.i21.i.i.i.i1459 %phi.broken8744 = phi i64 [ 0, %while.body.i.i21.i.i.i.i1459.preheader ], [ %2354, %while.body.i.i21.i.i.i.i1459 ] call void @llvm.amdgcn.s.sleep(i32 2) %2351 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i1460 = getelementptr inbounds nuw i32, ptr %2351, i64 %idxprom.i23.i.i.i.i.i1448 %2352 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i1460 monotonic, align 4 %2353 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2352) %cmp.i.not.i.i23.i.i.i.i1461 = icmp eq i32 %2353, %port.sroa.37.0.i.i1452 %2354 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i23.i.i.i.i1461, i64 %phi.broken8744) %2355 = call i1 @llvm.amdgcn.loop.i64(i64 %2354) br i1 %2355, label %Flow8299, label %while.body.i.i21.i.i.i.i1459 Flow8299: ; preds = %while.body.i.i21.i.i.i.i1459 %.lcssa9216 = phi i64 [ %2354, %while.body.i.i21.i.i.i.i1459 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9216) br label %Flow8300, !amdgpu.uniform !42 Flow8301: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1463, %while.cond.i.i.i.i1451 %2356 = phi i64 [ %add.i.i.i.i1466, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1463 ], [ poison, %while.cond.i.i.i.i1451 ] %2357 = phi i32 [ %conv.i.i26.i.i.i.i1464, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1463 ], [ poison, %while.cond.i.i.i.i1451 ] %2358 = phi ptr addrspace(4) [ %scevgep7039, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1463 ], [ poison, %while.cond.i.i.i.i1451 ] %2359 = phi i64 [ %lsr.iv.next7044, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1463 ], [ poison, %while.cond.i.i.i.i1451 ] %2360 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1463 ], [ true, %while.cond.i.i.i.i1451 ] call void @llvm.amdgcn.end.cf.i64(i64 %2345) %2361 = call i64 @llvm.amdgcn.if.break.i64(i1 %2360, i64 %phi.broken8745) %2362 = call i1 @llvm.amdgcn.loop.i64(i64 %2361) br i1 %2362, label %cond.false.i.i.i1473, label %while.cond.i.i.i.i1451 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1462: ; preds = %Flow8300 fence acquire br i1 %cmp.i.i.i.i1454, label %if.then.i.i.i.i.i.i.i1467, label %Flow8298, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i1467: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1462 %sub.i.i.i.i.i.i.i1469 = sub nuw i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.18.35 to ptr), i64 13) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.18.35 to ptr) to i64)), %idx.0.i.i.i.i1453 %spec.select.i.i.i36.i.i.i.i1470 = call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i1469, i64 64) %2363 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %2364 = and i64 %spec.select.i.i.i36.i.i.i.i1470, 15 %2365 = sub i64 %spec.select.i.i.i36.i.i.i.i1470, %2364 %2366 = icmp ne i64 %2365, 0 br i1 %2366, label %loop-memcpy-expansion5301.preheader, label %Flow8297, !amdgpu.uniform !42 loop-memcpy-expansion5301.preheader: ; preds = %if.then.i.i.i.i.i.i.i1467 %arrayidx.i20.i35.i.i.i.i1471 = getelementptr %"struct.rpc::Buffer", ptr %2363, i64 %idxprom.i19.i.i.i.i.i1441 %arrayidx.i22.i38.i.i.i.i1472 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i1471, i64 %sh_prom.i.i.i.i756 br label %loop-memcpy-expansion5301, !amdgpu.uniform !42 Flow8297: ; preds = %Flow8296, %if.then.i.i.i.i.i.i.i1467 br label %loop-memcpy-residual-header5304, !amdgpu.uniform !42 loop-memcpy-expansion5301: ; preds = %loop-memcpy-expansion5301.preheader, %loop-memcpy-expansion5301 %loop-index5302 = phi i64 [ %2369, %loop-memcpy-expansion5301 ], [ 0, %loop-memcpy-expansion5301.preheader ] %scevgep7040 = getelementptr i8, ptr addrspace(4) %lsr.iv7038, i64 %loop-index5302, !amdgpu.uniform !42 %2367 = load <4 x i32>, ptr addrspace(4) %scevgep7040, align 1 %2368 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i1472, i64 %loop-index5302 store <4 x i32> %2367, ptr %2368, align 1 %2369 = add i64 %loop-index5302, 16 %2370 = icmp uge i64 %2369, %2365 br i1 %2370, label %Flow8296, label %loop-memcpy-expansion5301, !amdgpu.uniform !42 Flow8295: ; preds = %Flow8294, %loop-memcpy-residual-header5304 br label %Flow8298, !amdgpu.uniform !42 loop-memcpy-residual5303: ; preds = %loop-memcpy-residual5303.preheader, %loop-memcpy-residual5303 %residual-loop-index5305 = phi i64 [ %2372, %loop-memcpy-residual5303 ], [ 0, %loop-memcpy-residual5303.preheader ] %scevgep7049 = getelementptr i8, ptr addrspace(4) %scevgep7048, i64 %residual-loop-index5305, !amdgpu.uniform !42 %2371 = load i8, ptr addrspace(4) %scevgep7049, align 1 %scevgep7047 = getelementptr i8, ptr %scevgep7046, i64 %residual-loop-index5305 store i8 %2371, ptr %scevgep7047, align 1 %2372 = add i64 %residual-loop-index5305, 1 %2373 = icmp uge i64 %2372, %2364 br i1 %2373, label %Flow8294, label %loop-memcpy-residual5303, !amdgpu.uniform !42 Flow8294: ; preds = %loop-memcpy-residual5303 br label %Flow8295, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1463: ; preds = %Flow8298 %conv.i.i26.i.i.i.i1464 = xor i32 %port.sroa.37.0.i.i1452, 1 fence release %2374 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i1465 = getelementptr inbounds nuw i32, ptr %2374, i64 %idxprom.i23.i.i.i.i.i1448 store atomic i32 %conv.i.i26.i.i.i.i1464, ptr %arrayidx.i24.i29.i.i.i.i1465 monotonic, align 4 %add.i.i.i.i1466 = add i64 %idx.0.i.i.i.i1453, 64 %scevgep7039 = getelementptr i8, ptr addrspace(4) %lsr.iv7038, i64 64 %lsr.iv.next7044 = add i64 %lsr.iv7043, -64 br label %Flow8301, !amdgpu.uniform !42 cond.false.i.i.i1473: ; preds = %Flow8301 %.lcssa9218 = phi i64 [ %2361, %Flow8301 ] %port.sroa.37.0.i.i1452.lcssa = phi i32 [ %port.sroa.37.0.i.i1452, %Flow8301 ] %.lcssa9217 = phi i32 [ %2342, %Flow8301 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9218) %2375 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa9217) %2376 = icmp ne i32 %2375, %port.sroa.37.0.i.i1452.lcssa %2377 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2376) %2378 = extractvalue { i1, i64 } %2377, 0 %2379 = extractvalue { i1, i64 } %2377, 1 br i1 %2378, label %while.body.i.i.i.i1474.preheader, label %Flow8293 while.body.i.i.i.i1474.preheader: ; preds = %cond.false.i.i.i1473 br label %while.body.i.i.i.i1474, !amdgpu.uniform !42 Flow8293: ; preds = %Flow8292, %cond.false.i.i.i1473 call void @llvm.amdgcn.end.cf.i64(i64 %2379) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1495, !amdgpu.uniform !42 while.body.i.i.i.i1474: ; preds = %while.body.i.i.i.i1474.preheader, %while.body.i.i.i.i1474 %phi.broken8746 = phi i64 [ 0, %while.body.i.i.i.i1474.preheader ], [ %2383, %while.body.i.i.i.i1474 ] call void @llvm.amdgcn.s.sleep(i32 2) %2380 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i1475 = getelementptr inbounds nuw i32, ptr %2380, i64 %idxprom.i23.i.i.i.i.i1448 %2381 = load atomic i32, ptr %arrayidx.i.i.i8.i.i1475 monotonic, align 4 %2382 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2381) %cmp.i.not.i.i.i.i1476 = icmp eq i32 %2382, %port.sroa.37.0.i.i1452.lcssa %2383 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i1476, i64 %phi.broken8746) %2384 = call i1 @llvm.amdgcn.loop.i64(i64 %2383) br i1 %2384, label %Flow8292, label %while.body.i.i.i.i1474 Flow8292: ; preds = %while.body.i.i.i.i1474 %.lcssa9219 = phi i64 [ %2383, %while.body.i.i.i.i1474 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9219) br label %Flow8293, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1495: ; preds = %Flow8293 fence acquire call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %2385 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa9214, i1 true) %iszero.i.i.i.i.i13.i.i1478 = icmp ne i64 %.lcssa9214, 0 %cmp2.i.i.i.i14.i.i1479 = icmp eq i64 %2385, %sh_prom.i.i.i.i756 %cmp.i.i.i.i15.i.i1480 = select i1 %iszero.i.i.i.i.i13.i.i1478, i1 %cmp2.i.i.i.i14.i.i1479, i1 false %2386 = and i32 %.lcssa9215, 31 %conv4.i.i.i19.i.i1484 = zext i1 %cmp.i.i.i.i15.i.i1480 to i32 %shl.i.i.i20.i.i1485 = shl nuw i32 %conv4.i.i.i19.i.i1484, %2386 %xor.i.i.i21.i.i1486 = xor i32 %shl.i.i.i20.i.i1485, -1 %2387 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5654, !amdgpu.uniform !42 2388: ; preds = %ComputeEnd5655 %div8.i.i.i16.i.i1481 = lshr i32 %.lcssa9215, 5 %idxprom.i.i.i17.i.i1482 = zext nneg i32 %div8.i.i.i16.i.i1481 to i64 %2389 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i1482 %sunkaddr7410 = getelementptr inbounds i8, ptr addrspace(1) %2389, i64 40 %2390 = atomicrmw and ptr addrspace(1) %sunkaddr7410, i32 %.lcssa9220 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2391, !amdgpu.uniform !42 2391: ; preds = %2388, %ComputeEnd5655 call void @llvm.amdgcn.end.cf.i64(i64 %7498) call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i.i1496, !amdgpu.uniform !42 for.cond.i.i.i1496: ; preds = %2391, %for.cond.i.i.i1496 %phi.broken8747 = phi i64 [ 0, %2391 ], [ %2393, %for.cond.i.i.i1496 ] %lsr.iv7050 = phi ptr addrspace(4) [ %scevgep7052, %for.cond.i.i.i1496 ], [ %scevgep6634, %2391 ] %scevgep7052 = getelementptr i8, ptr addrspace(4) %lsr.iv7050, i64 1 %2392 = load i8, ptr addrspace(4) %scevgep7052, align 1, !tbaa !57 %cmp.i.i.i1498 = icmp eq i8 %2392, 0 %2393 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.i.i1498, i64 %phi.broken8747) %2394 = call i1 @llvm.amdgcn.loop.i64(i64 %2393) br i1 %2394, label %for.cond.i.i1.i1505.preheader, label %for.cond.i.i.i1496 for.cond.i.i1.i1505.preheader: ; preds = %for.cond.i.i.i1496 %scevgep7052.lcssa = phi ptr addrspace(4) [ %scevgep7052, %for.cond.i.i.i1496 ] %.lcssa9221 = phi i64 [ %2393, %for.cond.i.i.i1496 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9221) br label %for.cond.i.i1.i1505, !amdgpu.uniform !42 for.cond.i.i1.i1505: ; preds = %for.cond.i.i1.i1505.preheader, %Flow8291 %2395 = phi i32 [ %2432, %Flow8291 ], [ %1171, %for.cond.i.i1.i1505.preheader ] %2396 = phi i64 [ %2433, %Flow8291 ], [ %1172, %for.cond.i.i1.i1505.preheader ] %2397 = phi i32 [ %2434, %Flow8291 ], [ %1173, %for.cond.i.i1.i1505.preheader ] %retval.sroa.6.0.i.i.i1506 = phi i32 [ %2437, %Flow8291 ], [ undef, %for.cond.i.i1.i1505.preheader ] %retval.sroa.2.0.i.i.i1508 = phi i64 [ %2436, %Flow8291 ], [ undef, %for.cond.i.i1.i1505.preheader ] %retval.sroa.8.0.i.i.i1509 = phi i32 [ %2435, %Flow8291 ], [ undef, %for.cond.i.i1.i1505.preheader ] %index.0.i.i.i1510 = phi i32 [ %2439, %Flow8291 ], [ 0, %for.cond.i.i1.i1505.preheader ] %2398 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i1511 = icmp ult i32 %index.0.i.i.i1510, %2398 %spec.store.select.i.i.i1512 = select i1 %cmp.not.i.i.i1511, i32 %index.0.i.i.i1510, i32 0 %2399 = call i64 @llvm.amdgcn.ballot.i64(i1 true) %2400 = and i32 %spec.store.select.i.i.i1512, 31 %2401 = lshr i64 %2399, %sh_prom.i.i.i.i756 %2402 = trunc i64 %2401 to i32 %conv4.i.i.i.i.i1516 = and i32 %2402, 1 %shl.i.i.i.i.i1517 = shl nuw i32 %conv4.i.i.i.i.i1516, %2400 br label %ComputeLoop5658, !amdgpu.uniform !42 2403: ; preds = %ComputeEnd5659 %sunkaddr7411 = getelementptr inbounds i8, ptr addrspace(1) %7508, i64 40 %2404 = atomicrmw or ptr addrspace(1) %sunkaddr7411, i32 %.lcssa9222 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2405, !amdgpu.uniform !42 2405: ; preds = %2403, %ComputeEnd5659 %2406 = phi i32 [ %2404, %2403 ], [ poison, %ComputeEnd5659 ] call void @llvm.amdgcn.end.cf.i64(i64 %7517) %2407 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %2406) %2408 = or i32 %2407, %.lcssa9223 %shl5.i.i.i.i.i1518 = shl nuw i32 1, %2400 %and.i.i.i.i.i1519 = and i32 %shl5.i.i.i.i.i1518, %2408 %tobool3.i.i.i.i1520 = icmp ne i32 %and.i.i.i.i.i1519, 0 %2409 = call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i1520) %and.i.i.i.i.i.i1521 = and i64 %2409, %2399 %cmp.i.not.i.i.i1522 = icmp ne i64 %2399, %and.i.i.i.i.i.i1521 br i1 %cmp.i.not.i.i.i1522, label %if.then.i.i.i.i1523, label %Flow8290, !amdgpu.uniform !42 if.then.i.i.i.i1523: ; preds = %2405 fence syncscope("agent") acquire %2410 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %2411 = extractelement <2 x i64> %2410, i32 0 %2412 = inttoptr i64 %2411 to ptr %2413 = extractelement <2 x i64> %2410, i32 1 %2414 = inttoptr i64 %2413 to ptr %idxprom.i.i.i.i1524 = zext i32 %spec.store.select.i.i.i1512 to i64 %arrayidx.i.i.i.i1525 = getelementptr inbounds nuw i32, ptr %2412, i64 %idxprom.i.i.i.i1524, !amdgpu.uniform !42 %2415 = load atomic i32, ptr %arrayidx.i.i.i.i1525 monotonic, align 4 %2416 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2415) %arrayidx.i45.i.i.i1526 = getelementptr inbounds nuw i32, ptr %2414, i64 %idxprom.i.i.i.i1524, !amdgpu.uniform !42 %2417 = load atomic i32, ptr %arrayidx.i45.i.i.i1526 monotonic, align 4 %2418 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2417) %cmp.i46.not.i.i.i1527 = icmp ne i32 %2416, %2418 br i1 %cmp.i46.not.i.i.i1527, label %if.then12.i.i.i1528, label %Flow8288, !amdgpu.uniform !42 if.then12.i.i.i1528: ; preds = %if.then.i.i.i.i1523 fence syncscope("agent") release %2419 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %2399, i1 true) %iszero.i.i.i.i.i.i.i1529 = icmp ne i64 %2399, 0 %cmp2.i.i.i.i.i.i1530 = icmp eq i64 %2419, %sh_prom.i.i.i.i756 %cmp.i.i.i.i.i.i1531 = select i1 %iszero.i.i.i.i.i.i.i1529, i1 %cmp2.i.i.i.i.i.i1530, i1 false %conv4.i.i51.i.i.i1532 = zext i1 %cmp.i.i.i.i.i.i1531 to i32 %shl.i.i52.i.i.i1533 = shl nuw i32 %conv4.i.i51.i.i.i1532, %2400 %xor.i.i.i.i.i1534 = xor i32 %shl.i.i52.i.i.i1533, -1 %2420 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5663, !amdgpu.uniform !42 2421: ; preds = %ComputeEnd5664 %sunkaddr7412 = getelementptr inbounds i8, ptr addrspace(1) %7508, i64 40 %2422 = atomicrmw and ptr addrspace(1) %sunkaddr7412, i32 %.lcssa9224 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2423, !amdgpu.uniform !42 2423: ; preds = %2421, %ComputeEnd5664 call void @llvm.amdgcn.end.cf.i64(i64 %7535) call void @llvm.amdgcn.wave.barrier() br label %Flow8288, !amdgpu.uniform !42 if.end14.i.i.i1594: ; preds = %Flow8288 %2424 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %2399, i1 true) %iszero.i.i.i.i.i.i1595 = icmp ne i64 %2399, 0 %cmp2.i.i.i.i.i1596 = icmp eq i64 %2424, %sh_prom.i.i.i.i756 %cmp.i.i.i.i.i1597 = select i1 %iszero.i.i.i.i.i.i1595, i1 %cmp2.i.i.i.i.i1596, i1 false %2425 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i1597) %2426 = extractvalue { i1, i64 } %2425, 0 %2427 = extractvalue { i1, i64 } %2425, 1 br i1 %2426, label %if.then16.i.i.i1599, label %if.end22.i.i.i1598 if.then16.i.i.i1599: ; preds = %if.end14.i.i.i1594 %2428 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i1600 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2428, i64 %idxprom.i.i.i.i1524, i32 1 store i32 1660944387, ptr %opcode.i.i.i1600, align 8, !tbaa !77 %arrayidx21.i.i.i1601 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2428, i64 %idxprom.i.i.i.i1524 store i64 %2399, ptr %arrayidx21.i.i.i1601, align 8, !tbaa !80 br label %if.end22.i.i.i1598, !amdgpu.uniform !42 Flow8289: ; preds = %if.end22.i.i.i1598, %Flow8288 %2429 = phi i32 [ %2416, %if.end22.i.i.i1598 ], [ %retval.sroa.8.0.i.i.i1509, %Flow8288 ] %2430 = phi i64 [ %2399, %if.end22.i.i.i1598 ], [ %retval.sroa.2.0.i.i.i1508, %Flow8288 ] %2431 = phi i32 [ %spec.store.select.i.i.i1512, %if.end22.i.i.i1598 ], [ %retval.sroa.6.0.i.i.i1506, %Flow8288 ] br label %cleanup26.i.i.i1535, !amdgpu.uniform !42 if.end22.i.i.i1598: ; preds = %if.then16.i.i.i1599, %if.end14.i.i.i1594 call void @llvm.amdgcn.end.cf.i64(i64 %2427) call void @llvm.amdgcn.wave.barrier() br label %Flow8289, !amdgpu.uniform !42 Flow8290: ; preds = %cleanup26.i.i.i1535, %2405 %2432 = phi i32 [ %2431, %cleanup26.i.i.i1535 ], [ %2395, %2405 ] %2433 = phi i64 [ %2430, %cleanup26.i.i.i1535 ], [ %2396, %2405 ] %2434 = phi i32 [ %2429, %cleanup26.i.i.i1535 ], [ %2397, %2405 ] %2435 = phi i32 [ %2429, %cleanup26.i.i.i1535 ], [ %retval.sroa.8.0.i.i.i1509, %2405 ] %2436 = phi i64 [ %2430, %cleanup26.i.i.i1535 ], [ %retval.sroa.2.0.i.i.i1508, %2405 ] %2437 = phi i32 [ %2431, %cleanup26.i.i.i1535 ], [ %retval.sroa.6.0.i.i.i1506, %2405 ] %2438 = phi i1 [ %cmp.i46.not.i.i.i1527, %cleanup26.i.i.i1535 ], [ true, %2405 ] br i1 %2438, label %for.inc.i.i.i1540, label %Flow8291, !amdgpu.uniform !42 cleanup26.i.i.i1535: ; preds = %Flow8289 br label %Flow8290, !amdgpu.uniform !42 for.inc.i.i.i1540: ; preds = %Flow8290 %inc.i.i.i1545 = add i32 %spec.store.select.i.i.i1512, 1 br label %Flow8291, !amdgpu.uniform !42 Flow8291: ; preds = %for.inc.i.i.i1540, %Flow8290 %2439 = phi i32 [ %inc.i.i.i1545, %for.inc.i.i.i1540 ], [ poison, %Flow8290 ] %2440 = phi i1 [ false, %for.inc.i.i.i1540 ], [ true, %Flow8290 ] br i1 %2440, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1546, label %for.cond.i.i1.i1505, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1546: ; preds = %Flow8291 %.lcssa9227 = phi i32 [ %2432, %Flow8291 ] %.lcssa9226 = phi i64 [ %2433, %Flow8291 ] %.lcssa9225 = phi i32 [ %2434, %Flow8291 ] %2441 = addrspacecast ptr addrspace(4) %scevgep7052.lcssa to ptr %2442 = addrspacecast ptr addrspace(4) %cond6 to ptr %2443 = ptrtoint ptr %2442 to i64 %sub.ptr.lhs.cast.i.i.i1501 = ptrtoint ptr %2441 to i64 %sub.ptr.sub.i.i.i1503 = sub i64 %sub.ptr.lhs.cast.i.i.i1501, %2443 fence acquire %2444 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i1547 = shl i32 %.lcssa9227, 6 %idxprom.i19.i.i.i.i.i1548 = zext i32 %mul.i.i.i.i.i.i1547 to i64 %arrayidx.i20.i.i.i.i.i1549 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %2444, i64 %idxprom.i19.i.i.i.i.i1548 %arrayidx.i22.i.i.i.i.i1550 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i1549, i64 %sh_prom.i.i.i.i756 store i64 %sub.ptr.sub.i.i.i1503, ptr %arrayidx.i22.i.i.i.i.i1550, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i1551 = call i64 @llvm.umin.i64(i64 %sub.ptr.sub.i.i.i1503, i64 56) %2445 = and i64 %spec.select.i.i.i.i.i.i.i1551, 15 %2446 = sub i64 %spec.select.i.i.i.i.i.i.i1551, %2445 %2447 = icmp ne i64 %2446, 0 %2448 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2447) %2449 = extractvalue { i1, i64 } %2448, 0 %2450 = extractvalue { i1, i64 } %2448, 1 br i1 %2449, label %loop-memcpy-expansion5193.preheader, label %Flow8287 loop-memcpy-expansion5193.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1546 %scevgep7053 = getelementptr i8, ptr %2444, i64 8 %scevgep7054 = getelementptr i8, ptr %scevgep7053, i64 %1474 %2451 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1548, 6 %scevgep7055 = getelementptr i8, ptr %scevgep7054, i64 %2451 br label %loop-memcpy-expansion5193, !amdgpu.uniform !42 Flow8287: ; preds = %Flow8286, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1546 call void @llvm.amdgcn.end.cf.i64(i64 %2450) br label %loop-memcpy-residual-header5196, !amdgpu.uniform !42 loop-memcpy-expansion5193: ; preds = %loop-memcpy-expansion5193.preheader, %loop-memcpy-expansion5193 %phi.broken8748 = phi i64 [ 0, %loop-memcpy-expansion5193.preheader ], [ %2456, %loop-memcpy-expansion5193 ] %loop-index5194 = phi i64 [ %2454, %loop-memcpy-expansion5193 ], [ 0, %loop-memcpy-expansion5193.preheader ] %2452 = getelementptr i8, ptr addrspace(4) %cond6, i64 %loop-index5194 %2453 = load <4 x i32>, ptr addrspace(4) %2452, align 1 %scevgep7056 = getelementptr i8, ptr %scevgep7055, i64 %loop-index5194 store <4 x i32> %2453, ptr %scevgep7056, align 1 %2454 = add i64 %loop-index5194, 16 %2455 = icmp uge i64 %2454, %2446 %2456 = call i64 @llvm.amdgcn.if.break.i64(i1 %2455, i64 %phi.broken8748) %2457 = call i1 @llvm.amdgcn.loop.i64(i64 %2456) br i1 %2457, label %Flow8286, label %loop-memcpy-expansion5193 Flow8285: ; preds = %Flow8283, %Flow8284 %2458 = phi i64 [ %6498, %Flow8283 ], [ %6493, %Flow8284 ] call void @llvm.amdgcn.end.cf.i64(i64 %6496) br label %post-loop-memcpy-expansion5192, !amdgpu.uniform !42 loop-memcpy-residual5195: ; preds = %loop-memcpy-residual5195.preheader, %loop-memcpy-residual5195 %phi.broken8749 = phi i64 [ 0, %loop-memcpy-residual5195.preheader ], [ %2462, %loop-memcpy-residual5195 ] %residual-loop-index5197 = phi i64 [ %2460, %loop-memcpy-residual5195 ], [ 0, %loop-memcpy-residual5195.preheader ] %scevgep7062 = getelementptr i8, ptr addrspace(4) %scevgep7061, i64 %residual-loop-index5197 %2459 = load i8, ptr addrspace(4) %scevgep7062, align 1 %scevgep7060 = getelementptr i8, ptr %scevgep7059, i64 %residual-loop-index5197 store i8 %2459, ptr %scevgep7060, align 1 %2460 = add i64 %residual-loop-index5197, 1 %2461 = icmp uge i64 %2460, %2445 %2462 = call i64 @llvm.amdgcn.if.break.i64(i1 %2461, i64 %phi.broken8749) %2463 = call i1 @llvm.amdgcn.loop.i64(i64 %2462) br i1 %2463, label %Flow8283, label %loop-memcpy-residual5195 Flow8283: ; preds = %loop-memcpy-residual5195 %.lcssa9229 = phi i64 [ %2462, %loop-memcpy-residual5195 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9229) br label %Flow8285, !amdgpu.uniform !42 post-loop-memcpy-expansion5192: ; preds = %Flow8285 %2464 = addrspacecast ptr addrspace(4) %scevgep7052.lcssa to ptr %2465 = ptrtoint ptr %2464 to i64 %tobool.not.i.i.i.i.i.i1553 = icmp eq i32 %.lcssa9225, 0 %conv.i.i.i.i.i.i1554 = zext i1 %tobool.not.i.i.i.i.i.i1553 to i32 fence release %2466 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i1555 = zext i32 %.lcssa9227 to i64 %arrayidx.i24.i.i.i.i.i1556 = getelementptr inbounds nuw i32, ptr %2466, i64 %idxprom.i23.i.i.i.i.i1555 store atomic i32 %conv.i.i.i.i.i.i1554, ptr %arrayidx.i24.i.i.i.i.i1556 monotonic, align 4 %2467 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i1557 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2467, i64 %idxprom.i23.i.i.i.i.i1555 %2468 = load i64, ptr %arrayidx.i.i5.i.i1557, align 8, !tbaa !80 %2469 = add i64 %1141, %2465 br label %while.cond.i.i.i.i1558, !amdgpu.uniform !42 while.cond.i.i.i.i1558: ; preds = %post-loop-memcpy-expansion5192, %Flow8282 %phi.broken8753 = phi i64 [ 0, %post-loop-memcpy-expansion5192 ], [ %2491, %Flow8282 ] %lsr.iv7068 = phi i64 [ %2489, %Flow8282 ], [ %2469, %post-loop-memcpy-expansion5192 ] %lsr.iv7063 = phi ptr addrspace(4) [ %2488, %Flow8282 ], [ %scevgep6648, %post-loop-memcpy-expansion5192 ] %port.sroa.37.0.i.i1559 = phi i32 [ %2487, %Flow8282 ], [ %conv.i.i.i.i.i.i1554, %post-loop-memcpy-expansion5192 ] %idx.0.i.i.i.i1560 = phi i64 [ %2486, %Flow8282 ], [ 56, %post-loop-memcpy-expansion5192 ] %cmp.i.i.i.i1561 = icmp ugt i64 %sub.ptr.sub.i.i.i1503, %idx.0.i.i.i.i1560 %2470 = call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i1561) %and.i.i.i.i6.i.i1562 = and i64 %2470, %2468 %tobool.not.i.i.i.i1563 = icmp ne i64 %and.i.i.i.i6.i.i1562, 0 %2471 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i1564 = getelementptr inbounds nuw i32, ptr %2471, i64 %idxprom.i23.i.i.i.i.i1555 %2472 = load atomic i32, ptr %arrayidx.i22.i.i.i1564 monotonic, align 4 %2473 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i1563) %2474 = extractvalue { i1, i64 } %2473, 0 %2475 = extractvalue { i1, i64 } %2473, 1 br i1 %2474, label %cond.false.i8.i.i.i.i1565, label %Flow8282 cond.false.i8.i.i.i.i1565: ; preds = %while.cond.i.i.i.i1558 %2476 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2472) %2477 = icmp ne i32 %2476, %port.sroa.37.0.i.i1559 %2478 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2477) %2479 = extractvalue { i1, i64 } %2478, 0 %2480 = extractvalue { i1, i64 } %2478, 1 br i1 %2479, label %while.body.i.i21.i.i.i.i1566.preheader, label %Flow8281 while.body.i.i21.i.i.i.i1566.preheader: ; preds = %cond.false.i8.i.i.i.i1565 br label %while.body.i.i21.i.i.i.i1566, !amdgpu.uniform !42 Flow8281: ; preds = %Flow8280, %cond.false.i8.i.i.i.i1565 call void @llvm.amdgcn.end.cf.i64(i64 %2480) br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1569, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1566: ; preds = %while.body.i.i21.i.i.i.i1566.preheader, %while.body.i.i21.i.i.i.i1566 %phi.broken8750 = phi i64 [ 0, %while.body.i.i21.i.i.i.i1566.preheader ], [ %2484, %while.body.i.i21.i.i.i.i1566 ] call void @llvm.amdgcn.s.sleep(i32 2) %2481 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i1567 = getelementptr inbounds nuw i32, ptr %2481, i64 %idxprom.i23.i.i.i.i.i1555 %2482 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i1567 monotonic, align 4 %2483 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2482) %cmp.i.not.i.i23.i.i.i.i1568 = icmp eq i32 %2483, %port.sroa.37.0.i.i1559 %2484 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i23.i.i.i.i1568, i64 %phi.broken8750) %2485 = call i1 @llvm.amdgcn.loop.i64(i64 %2484) br i1 %2485, label %Flow8280, label %while.body.i.i21.i.i.i.i1566 Flow8280: ; preds = %while.body.i.i21.i.i.i.i1566 %.lcssa9230 = phi i64 [ %2484, %while.body.i.i21.i.i.i.i1566 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9230) br label %Flow8281, !amdgpu.uniform !42 Flow8282: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1570, %while.cond.i.i.i.i1558 %2486 = phi i64 [ %add.i.i.i.i1573, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1570 ], [ poison, %while.cond.i.i.i.i1558 ] %2487 = phi i32 [ %conv.i.i26.i.i.i.i1571, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1570 ], [ poison, %while.cond.i.i.i.i1558 ] %2488 = phi ptr addrspace(4) [ %scevgep7064, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1570 ], [ poison, %while.cond.i.i.i.i1558 ] %2489 = phi i64 [ %lsr.iv.next7069, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1570 ], [ poison, %while.cond.i.i.i.i1558 ] %2490 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1570 ], [ true, %while.cond.i.i.i.i1558 ] call void @llvm.amdgcn.end.cf.i64(i64 %2475) %2491 = call i64 @llvm.amdgcn.if.break.i64(i1 %2490, i64 %phi.broken8753) %2492 = call i1 @llvm.amdgcn.loop.i64(i64 %2491) br i1 %2492, label %cond.false.i.i.i1580, label %while.cond.i.i.i.i1558 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1569: ; preds = %Flow8281 fence acquire %2493 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i1561) %2494 = extractvalue { i1, i64 } %2493, 0 %2495 = extractvalue { i1, i64 } %2493, 1 br i1 %2494, label %if.then.i.i.i.i.i.i.i1574, label %Flow8279 if.then.i.i.i.i.i.i.i1574: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1569 %sub.i.i.i.i.i.i.i1576 = sub nuw i64 %sub.ptr.sub.i.i.i1503, %idx.0.i.i.i.i1560 %spec.select.i.i.i36.i.i.i.i1577 = call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i1576, i64 64) %2496 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %2497 = and i64 %spec.select.i.i.i36.i.i.i.i1577, 15 %2498 = sub i64 %spec.select.i.i.i36.i.i.i.i1577, %2497 %2499 = icmp ne i64 %2498, 0 %2500 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2499) %2501 = extractvalue { i1, i64 } %2500, 0 %2502 = extractvalue { i1, i64 } %2500, 1 br i1 %2501, label %loop-memcpy-expansion5307.preheader, label %Flow8278 loop-memcpy-expansion5307.preheader: ; preds = %if.then.i.i.i.i.i.i.i1574 %arrayidx.i20.i35.i.i.i.i1578 = getelementptr %"struct.rpc::Buffer", ptr %2496, i64 %idxprom.i19.i.i.i.i.i1548 %arrayidx.i22.i38.i.i.i.i1579 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i1578, i64 %sh_prom.i.i.i.i756 br label %loop-memcpy-expansion5307, !amdgpu.uniform !42 Flow8278: ; preds = %Flow8277, %if.then.i.i.i.i.i.i.i1574 call void @llvm.amdgcn.end.cf.i64(i64 %2502) br label %loop-memcpy-residual-header5310, !amdgpu.uniform !42 loop-memcpy-expansion5307: ; preds = %loop-memcpy-expansion5307.preheader, %loop-memcpy-expansion5307 %phi.broken8751 = phi i64 [ 0, %loop-memcpy-expansion5307.preheader ], [ %2507, %loop-memcpy-expansion5307 ] %loop-index5308 = phi i64 [ %2505, %loop-memcpy-expansion5307 ], [ 0, %loop-memcpy-expansion5307.preheader ] %scevgep7065 = getelementptr i8, ptr addrspace(4) %lsr.iv7063, i64 %loop-index5308 %2503 = load <4 x i32>, ptr addrspace(4) %scevgep7065, align 1 %2504 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i1579, i64 %loop-index5308 store <4 x i32> %2503, ptr %2504, align 1 %2505 = add i64 %loop-index5308, 16 %2506 = icmp uge i64 %2505, %2498 %2507 = call i64 @llvm.amdgcn.if.break.i64(i1 %2506, i64 %phi.broken8751) %2508 = call i1 @llvm.amdgcn.loop.i64(i64 %2507) br i1 %2508, label %Flow8277, label %loop-memcpy-expansion5307 Flow8276: ; preds = %Flow8275, %loop-memcpy-residual-header5310 call void @llvm.amdgcn.end.cf.i64(i64 %6588) br label %Flow8279, !amdgpu.uniform !42 loop-memcpy-residual5309: ; preds = %loop-memcpy-residual5309.preheader, %loop-memcpy-residual5309 %phi.broken8752 = phi i64 [ 0, %loop-memcpy-residual5309.preheader ], [ %2512, %loop-memcpy-residual5309 ] %residual-loop-index5311 = phi i64 [ %2510, %loop-memcpy-residual5309 ], [ 0, %loop-memcpy-residual5309.preheader ] %scevgep7074 = getelementptr i8, ptr addrspace(4) %scevgep7073, i64 %residual-loop-index5311 %2509 = load i8, ptr addrspace(4) %scevgep7074, align 1 %scevgep7072 = getelementptr i8, ptr %scevgep7071, i64 %residual-loop-index5311 store i8 %2509, ptr %scevgep7072, align 1 %2510 = add i64 %residual-loop-index5311, 1 %2511 = icmp uge i64 %2510, %2497 %2512 = call i64 @llvm.amdgcn.if.break.i64(i1 %2511, i64 %phi.broken8752) %2513 = call i1 @llvm.amdgcn.loop.i64(i64 %2512) br i1 %2513, label %Flow8275, label %loop-memcpy-residual5309 Flow8275: ; preds = %loop-memcpy-residual5309 %.lcssa9232 = phi i64 [ %2512, %loop-memcpy-residual5309 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9232) br label %Flow8276, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1570: ; preds = %Flow8279 %conv.i.i26.i.i.i.i1571 = xor i32 %port.sroa.37.0.i.i1559, 1 fence release %2514 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i1572 = getelementptr inbounds nuw i32, ptr %2514, i64 %idxprom.i23.i.i.i.i.i1555 store atomic i32 %conv.i.i26.i.i.i.i1571, ptr %arrayidx.i24.i29.i.i.i.i1572 monotonic, align 4 %add.i.i.i.i1573 = add i64 %idx.0.i.i.i.i1560, 64 %scevgep7064 = getelementptr i8, ptr addrspace(4) %lsr.iv7063, i64 64 %lsr.iv.next7069 = add i64 %lsr.iv7068, -64 br label %Flow8282, !amdgpu.uniform !42 cond.false.i.i.i1580: ; preds = %Flow8282 %.lcssa9234 = phi i64 [ %2491, %Flow8282 ] %port.sroa.37.0.i.i1559.lcssa = phi i32 [ %port.sroa.37.0.i.i1559, %Flow8282 ] %.lcssa9233 = phi i32 [ %2472, %Flow8282 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9234) %2515 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa9233) %2516 = icmp ne i32 %2515, %port.sroa.37.0.i.i1559.lcssa %2517 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2516) %2518 = extractvalue { i1, i64 } %2517, 0 %2519 = extractvalue { i1, i64 } %2517, 1 br i1 %2518, label %while.body.i.i.i.i1581.preheader, label %Flow8274 while.body.i.i.i.i1581.preheader: ; preds = %cond.false.i.i.i1580 br label %while.body.i.i.i.i1581, !amdgpu.uniform !42 Flow8274: ; preds = %Flow8273, %cond.false.i.i.i1580 call void @llvm.amdgcn.end.cf.i64(i64 %2519) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1602, !amdgpu.uniform !42 while.body.i.i.i.i1581: ; preds = %while.body.i.i.i.i1581.preheader, %while.body.i.i.i.i1581 %phi.broken8754 = phi i64 [ 0, %while.body.i.i.i.i1581.preheader ], [ %2523, %while.body.i.i.i.i1581 ] call void @llvm.amdgcn.s.sleep(i32 2) %2520 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i1582 = getelementptr inbounds nuw i32, ptr %2520, i64 %idxprom.i23.i.i.i.i.i1555 %2521 = load atomic i32, ptr %arrayidx.i.i.i8.i.i1582 monotonic, align 4 %2522 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2521) %cmp.i.not.i.i.i.i1583 = icmp eq i32 %2522, %port.sroa.37.0.i.i1559.lcssa %2523 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i1583, i64 %phi.broken8754) %2524 = call i1 @llvm.amdgcn.loop.i64(i64 %2523) br i1 %2524, label %Flow8273, label %while.body.i.i.i.i1581 Flow8273: ; preds = %while.body.i.i.i.i1581 %.lcssa9235 = phi i64 [ %2523, %while.body.i.i.i.i1581 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9235) br label %Flow8274, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1602: ; preds = %Flow8274 fence acquire call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %2525 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa9226, i1 true) %iszero.i.i.i.i.i13.i.i1585 = icmp ne i64 %.lcssa9226, 0 %cmp2.i.i.i.i14.i.i1586 = icmp eq i64 %2525, %sh_prom.i.i.i.i756 %cmp.i.i.i.i15.i.i1587 = select i1 %iszero.i.i.i.i.i13.i.i1585, i1 %cmp2.i.i.i.i14.i.i1586, i1 false %2526 = and i32 %.lcssa9227, 31 %conv4.i.i.i19.i.i1591 = zext i1 %cmp.i.i.i.i15.i.i1587 to i32 %shl.i.i.i20.i.i1592 = shl nuw i32 %conv4.i.i.i19.i.i1591, %2526 %xor.i.i.i21.i.i1593 = xor i32 %shl.i.i.i20.i.i1592, -1 %2527 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5667, !amdgpu.uniform !42 2528: ; preds = %ComputeEnd5668 %div8.i.i.i16.i.i1588 = lshr i32 %.lcssa9227, 5 %idxprom.i.i.i17.i.i1589 = zext nneg i32 %div8.i.i.i16.i.i1588 to i64 %2529 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i1589 %sunkaddr7413 = getelementptr inbounds i8, ptr addrspace(1) %2529, i64 40 %2530 = atomicrmw and ptr addrspace(1) %sunkaddr7413, i32 %.lcssa9236 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2531, !amdgpu.uniform !42 2531: ; preds = %2528, %ComputeEnd5668 call void @llvm.amdgcn.end.cf.i64(i64 %7552) call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i.i1603, !amdgpu.uniform !42 for.cond.i.i.i1603: ; preds = %2531, %for.cond.i.i.i1603 %phi.broken8755 = phi i64 [ 0, %2531 ], [ %2533, %for.cond.i.i.i1603 ] %lsr.iv7097 = phi i64 [ %lsr.iv.next7098, %for.cond.i.i.i1603 ], [ -56, %2531 ] %lsr.iv7084 = phi i64 [ %lsr.iv.next7085, %for.cond.i.i.i1603 ], [ -1, %2531 ] %lsr.iv7075 = phi ptr [ %scevgep7077, %for.cond.i.i.i1603 ], [ %scevgep6661, %2531 ] %scevgep7077 = getelementptr i8, ptr %lsr.iv7075, i64 1 %2532 = load i8, ptr %scevgep7077, align 1, !tbaa !57 %cmp.i.i.i1605 = icmp eq i8 %2532, 0 %lsr.iv.next7085 = add i64 %lsr.iv7084, 1 %lsr.iv.next7098 = add i64 %lsr.iv7097, 1 %2533 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.i.i1605, i64 %phi.broken8755) %2534 = call i1 @llvm.amdgcn.loop.i64(i64 %2533) br i1 %2534, label %for.cond.i.i1.i1612.preheader, label %for.cond.i.i.i1603 for.cond.i.i1.i1612.preheader: ; preds = %for.cond.i.i.i1603 %lsr.iv7097.lcssa = phi i64 [ %lsr.iv7097, %for.cond.i.i.i1603 ] %scevgep7077.lcssa = phi ptr [ %scevgep7077, %for.cond.i.i.i1603 ] %lsr.iv.next7085.lcssa = phi i64 [ %lsr.iv.next7085, %for.cond.i.i.i1603 ] %.lcssa9237 = phi i64 [ %2533, %for.cond.i.i.i1603 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9237) br label %for.cond.i.i1.i1612, !amdgpu.uniform !42 for.cond.i.i1.i1612: ; preds = %for.cond.i.i1.i1612.preheader, %Flow8272 %2535 = phi i32 [ %2572, %Flow8272 ], [ %1174, %for.cond.i.i1.i1612.preheader ] %2536 = phi i64 [ %2573, %Flow8272 ], [ %1175, %for.cond.i.i1.i1612.preheader ] %2537 = phi i32 [ %2574, %Flow8272 ], [ %1176, %for.cond.i.i1.i1612.preheader ] %retval.sroa.6.0.i.i.i1613 = phi i32 [ %2577, %Flow8272 ], [ undef, %for.cond.i.i1.i1612.preheader ] %retval.sroa.2.0.i.i.i1615 = phi i64 [ %2576, %Flow8272 ], [ undef, %for.cond.i.i1.i1612.preheader ] %retval.sroa.8.0.i.i.i1616 = phi i32 [ %2575, %Flow8272 ], [ undef, %for.cond.i.i1.i1612.preheader ] %index.0.i.i.i1617 = phi i32 [ %2579, %Flow8272 ], [ 0, %for.cond.i.i1.i1612.preheader ] %2538 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i1618 = icmp ult i32 %index.0.i.i.i1617, %2538 %spec.store.select.i.i.i1619 = select i1 %cmp.not.i.i.i1618, i32 %index.0.i.i.i1617, i32 0 %2539 = call i64 @llvm.amdgcn.ballot.i64(i1 true) %2540 = and i32 %spec.store.select.i.i.i1619, 31 %2541 = lshr i64 %2539, %sh_prom.i.i.i.i756 %2542 = trunc i64 %2541 to i32 %conv4.i.i.i.i.i1623 = and i32 %2542, 1 %shl.i.i.i.i.i1624 = shl nuw i32 %conv4.i.i.i.i.i1623, %2540 br label %ComputeLoop5671, !amdgpu.uniform !42 2543: ; preds = %ComputeEnd5672 %sunkaddr7414 = getelementptr inbounds i8, ptr addrspace(1) %7562, i64 40 %2544 = atomicrmw or ptr addrspace(1) %sunkaddr7414, i32 %.lcssa9238 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2545, !amdgpu.uniform !42 2545: ; preds = %2543, %ComputeEnd5672 %2546 = phi i32 [ %2544, %2543 ], [ poison, %ComputeEnd5672 ] call void @llvm.amdgcn.end.cf.i64(i64 %7571) %2547 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %2546) %2548 = or i32 %2547, %.lcssa9239 %shl5.i.i.i.i.i1625 = shl nuw i32 1, %2540 %and.i.i.i.i.i1626 = and i32 %shl5.i.i.i.i.i1625, %2548 %tobool3.i.i.i.i1627 = icmp ne i32 %and.i.i.i.i.i1626, 0 %2549 = call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i1627) %and.i.i.i.i.i.i1628 = and i64 %2549, %2539 %cmp.i.not.i.i.i1629 = icmp ne i64 %2539, %and.i.i.i.i.i.i1628 br i1 %cmp.i.not.i.i.i1629, label %if.then.i.i.i.i1630, label %Flow8271, !amdgpu.uniform !42 if.then.i.i.i.i1630: ; preds = %2545 fence syncscope("agent") acquire %2550 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %2551 = extractelement <2 x i64> %2550, i32 0 %2552 = inttoptr i64 %2551 to ptr %2553 = extractelement <2 x i64> %2550, i32 1 %2554 = inttoptr i64 %2553 to ptr %idxprom.i.i.i.i1631 = zext i32 %spec.store.select.i.i.i1619 to i64 %arrayidx.i.i.i.i1632 = getelementptr inbounds nuw i32, ptr %2552, i64 %idxprom.i.i.i.i1631, !amdgpu.uniform !42 %2555 = load atomic i32, ptr %arrayidx.i.i.i.i1632 monotonic, align 4 %2556 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2555) %arrayidx.i45.i.i.i1633 = getelementptr inbounds nuw i32, ptr %2554, i64 %idxprom.i.i.i.i1631, !amdgpu.uniform !42 %2557 = load atomic i32, ptr %arrayidx.i45.i.i.i1633 monotonic, align 4 %2558 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2557) %cmp.i46.not.i.i.i1634 = icmp ne i32 %2556, %2558 br i1 %cmp.i46.not.i.i.i1634, label %if.then12.i.i.i1635, label %Flow8269, !amdgpu.uniform !42 if.then12.i.i.i1635: ; preds = %if.then.i.i.i.i1630 fence syncscope("agent") release %2559 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %2539, i1 true) %iszero.i.i.i.i.i.i.i1636 = icmp ne i64 %2539, 0 %cmp2.i.i.i.i.i.i1637 = icmp eq i64 %2559, %sh_prom.i.i.i.i756 %cmp.i.i.i.i.i.i1638 = select i1 %iszero.i.i.i.i.i.i.i1636, i1 %cmp2.i.i.i.i.i.i1637, i1 false %conv4.i.i51.i.i.i1639 = zext i1 %cmp.i.i.i.i.i.i1638 to i32 %shl.i.i52.i.i.i1640 = shl nuw i32 %conv4.i.i51.i.i.i1639, %2540 %xor.i.i.i.i.i1641 = xor i32 %shl.i.i52.i.i.i1640, -1 %2560 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5676, !amdgpu.uniform !42 2561: ; preds = %ComputeEnd5677 %sunkaddr7415 = getelementptr inbounds i8, ptr addrspace(1) %7562, i64 40 %2562 = atomicrmw and ptr addrspace(1) %sunkaddr7415, i32 %.lcssa9240 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2563, !amdgpu.uniform !42 2563: ; preds = %2561, %ComputeEnd5677 call void @llvm.amdgcn.end.cf.i64(i64 %7589) call void @llvm.amdgcn.wave.barrier() br label %Flow8269, !amdgpu.uniform !42 if.end14.i.i.i1701: ; preds = %Flow8269 %2564 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %2539, i1 true) %iszero.i.i.i.i.i.i1702 = icmp ne i64 %2539, 0 %cmp2.i.i.i.i.i1703 = icmp eq i64 %2564, %sh_prom.i.i.i.i756 %cmp.i.i.i.i.i1704 = select i1 %iszero.i.i.i.i.i.i1702, i1 %cmp2.i.i.i.i.i1703, i1 false %2565 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i1704) %2566 = extractvalue { i1, i64 } %2565, 0 %2567 = extractvalue { i1, i64 } %2565, 1 br i1 %2566, label %if.then16.i.i.i1706, label %if.end22.i.i.i1705 if.then16.i.i.i1706: ; preds = %if.end14.i.i.i1701 %2568 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i1707 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2568, i64 %idxprom.i.i.i.i1631, i32 1 store i32 1660944387, ptr %opcode.i.i.i1707, align 8, !tbaa !77 %arrayidx21.i.i.i1708 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2568, i64 %idxprom.i.i.i.i1631 store i64 %2539, ptr %arrayidx21.i.i.i1708, align 8, !tbaa !80 br label %if.end22.i.i.i1705, !amdgpu.uniform !42 Flow8270: ; preds = %if.end22.i.i.i1705, %Flow8269 %2569 = phi i32 [ %2556, %if.end22.i.i.i1705 ], [ %retval.sroa.8.0.i.i.i1616, %Flow8269 ] %2570 = phi i64 [ %2539, %if.end22.i.i.i1705 ], [ %retval.sroa.2.0.i.i.i1615, %Flow8269 ] %2571 = phi i32 [ %spec.store.select.i.i.i1619, %if.end22.i.i.i1705 ], [ %retval.sroa.6.0.i.i.i1613, %Flow8269 ] br label %cleanup26.i.i.i1642, !amdgpu.uniform !42 if.end22.i.i.i1705: ; preds = %if.then16.i.i.i1706, %if.end14.i.i.i1701 call void @llvm.amdgcn.end.cf.i64(i64 %2567) call void @llvm.amdgcn.wave.barrier() br label %Flow8270, !amdgpu.uniform !42 Flow8271: ; preds = %cleanup26.i.i.i1642, %2545 %2572 = phi i32 [ %2571, %cleanup26.i.i.i1642 ], [ %2535, %2545 ] %2573 = phi i64 [ %2570, %cleanup26.i.i.i1642 ], [ %2536, %2545 ] %2574 = phi i32 [ %2569, %cleanup26.i.i.i1642 ], [ %2537, %2545 ] %2575 = phi i32 [ %2569, %cleanup26.i.i.i1642 ], [ %retval.sroa.8.0.i.i.i1616, %2545 ] %2576 = phi i64 [ %2570, %cleanup26.i.i.i1642 ], [ %retval.sroa.2.0.i.i.i1615, %2545 ] %2577 = phi i32 [ %2571, %cleanup26.i.i.i1642 ], [ %retval.sroa.6.0.i.i.i1613, %2545 ] %2578 = phi i1 [ %cmp.i46.not.i.i.i1634, %cleanup26.i.i.i1642 ], [ true, %2545 ] br i1 %2578, label %for.inc.i.i.i1647, label %Flow8272, !amdgpu.uniform !42 cleanup26.i.i.i1642: ; preds = %Flow8270 br label %Flow8271, !amdgpu.uniform !42 for.inc.i.i.i1647: ; preds = %Flow8271 %inc.i.i.i1652 = add i32 %spec.store.select.i.i.i1619, 1 br label %Flow8272, !amdgpu.uniform !42 Flow8272: ; preds = %for.inc.i.i.i1647, %Flow8271 %2579 = phi i32 [ %inc.i.i.i1652, %for.inc.i.i.i1647 ], [ poison, %Flow8271 ] %2580 = phi i1 [ false, %for.inc.i.i.i1647 ], [ true, %Flow8271 ] br i1 %2580, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1653, label %for.cond.i.i1.i1612, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1653: ; preds = %Flow8272 %.lcssa9243 = phi i32 [ %2572, %Flow8272 ] %.lcssa9242 = phi i64 [ %2573, %Flow8272 ] %.lcssa9241 = phi i32 [ %2574, %Flow8272 ] %2581 = ptrtoint ptr %call18 to i64 %sub.ptr.lhs.cast.i.i.i1608 = ptrtoint ptr %scevgep7077.lcssa to i64 %sub.ptr.sub.i.i.i1610 = sub i64 %sub.ptr.lhs.cast.i.i.i1608, %2581 fence acquire %2582 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i1654 = shl i32 %.lcssa9243, 6 %idxprom.i19.i.i.i.i.i1655 = zext i32 %mul.i.i.i.i.i.i1654 to i64 %arrayidx.i20.i.i.i.i.i1656 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %2582, i64 %idxprom.i19.i.i.i.i.i1655 %arrayidx.i22.i.i.i.i.i1657 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i1656, i64 %sh_prom.i.i.i.i756 store i64 %sub.ptr.sub.i.i.i1610, ptr %arrayidx.i22.i.i.i.i.i1657, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i1658 = call i64 @llvm.umin.i64(i64 %sub.ptr.sub.i.i.i1610, i64 56) %2583 = and i64 %spec.select.i.i.i.i.i.i.i1658, 15 %2584 = sub i64 %spec.select.i.i.i.i.i.i.i1658, %2583 %2585 = icmp ne i64 %2584, 0 %2586 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2585) %2587 = extractvalue { i1, i64 } %2586, 0 %2588 = extractvalue { i1, i64 } %2586, 1 br i1 %2587, label %loop-memcpy-expansion5061.preheader, label %Flow8268 loop-memcpy-expansion5061.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1653 %scevgep7078 = getelementptr i8, ptr %2582, i64 8 %scevgep7079 = getelementptr i8, ptr %scevgep7078, i64 %1474 %2589 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1655, 6 %scevgep7080 = getelementptr i8, ptr %scevgep7079, i64 %2589 br label %loop-memcpy-expansion5061, !amdgpu.uniform !42 Flow8268: ; preds = %Flow8267, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1653 call void @llvm.amdgcn.end.cf.i64(i64 %2588) br label %loop-memcpy-residual-header5064, !amdgpu.uniform !42 loop-memcpy-expansion5061: ; preds = %loop-memcpy-expansion5061.preheader, %loop-memcpy-expansion5061 %phi.broken8756 = phi i64 [ 0, %loop-memcpy-expansion5061.preheader ], [ %2594, %loop-memcpy-expansion5061 ] %loop-index5062 = phi i64 [ %2592, %loop-memcpy-expansion5061 ], [ 0, %loop-memcpy-expansion5061.preheader ] %2590 = getelementptr i8, ptr %call18, i64 %loop-index5062 %2591 = load <4 x i32>, ptr %2590, align 1 %scevgep7081 = getelementptr i8, ptr %scevgep7080, i64 %loop-index5062 store <4 x i32> %2591, ptr %scevgep7081, align 1 %2592 = add i64 %loop-index5062, 16 %2593 = icmp uge i64 %2592, %2584 %2594 = call i64 @llvm.amdgcn.if.break.i64(i1 %2593, i64 %phi.broken8756) %2595 = call i1 @llvm.amdgcn.loop.i64(i64 %2594) br i1 %2595, label %Flow8267, label %loop-memcpy-expansion5061 Flow8266: ; preds = %Flow8264, %Flow8265 %2596 = phi i64 [ %6315, %Flow8264 ], [ %6309, %Flow8265 ] call void @llvm.amdgcn.end.cf.i64(i64 %6312) br label %post-loop-memcpy-expansion5060, !amdgpu.uniform !42 loop-memcpy-residual5063: ; preds = %loop-memcpy-residual5063.preheader, %loop-memcpy-residual5063 %phi.broken8757 = phi i64 [ 0, %loop-memcpy-residual5063.preheader ], [ %2600, %loop-memcpy-residual5063 ] %residual-loop-index5065 = phi i64 [ %2598, %loop-memcpy-residual5063 ], [ 0, %loop-memcpy-residual5063.preheader ] %scevgep7091 = getelementptr i8, ptr %scevgep7090, i64 %residual-loop-index5065 %2597 = load i8, ptr %scevgep7091, align 1 %scevgep7089 = getelementptr i8, ptr %scevgep7088, i64 %residual-loop-index5065 store i8 %2597, ptr %scevgep7089, align 1 %2598 = add i64 %residual-loop-index5065, 1 %2599 = icmp uge i64 %2598, %2583 %2600 = call i64 @llvm.amdgcn.if.break.i64(i1 %2599, i64 %phi.broken8757) %2601 = call i1 @llvm.amdgcn.loop.i64(i64 %2600) br i1 %2601, label %Flow8264, label %loop-memcpy-residual5063 Flow8264: ; preds = %loop-memcpy-residual5063 %.lcssa9245 = phi i64 [ %2600, %loop-memcpy-residual5063 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9245) br label %Flow8266, !amdgpu.uniform !42 post-loop-memcpy-expansion5060: ; preds = %Flow8266 %tobool.not.i.i.i.i.i.i1660 = icmp eq i32 %.lcssa9241, 0 %conv.i.i.i.i.i.i1661 = zext i1 %tobool.not.i.i.i.i.i.i1660 to i32 fence release %2602 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i1662 = zext i32 %.lcssa9243 to i64 %arrayidx.i24.i.i.i.i.i1663 = getelementptr inbounds nuw i32, ptr %2602, i64 %idxprom.i23.i.i.i.i.i1662 store atomic i32 %conv.i.i.i.i.i.i1661, ptr %arrayidx.i24.i.i.i.i.i1663 monotonic, align 4 %2603 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i1664 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2603, i64 %idxprom.i23.i.i.i.i.i1662 %2604 = load i64, ptr %arrayidx.i.i5.i.i1664, align 8, !tbaa !80 br label %while.cond.i.i.i.i1665, !amdgpu.uniform !42 while.cond.i.i.i.i1665: ; preds = %post-loop-memcpy-expansion5060, %Flow8263 %phi.broken8761 = phi i64 [ 0, %post-loop-memcpy-expansion5060 ], [ %2626, %Flow8263 ] %lsr.iv7099 = phi i64 [ %2624, %Flow8263 ], [ %lsr.iv7097.lcssa, %post-loop-memcpy-expansion5060 ] %lsr.iv7092 = phi ptr [ %2623, %Flow8263 ], [ %scevgep6679, %post-loop-memcpy-expansion5060 ] %port.sroa.37.0.i.i1666 = phi i32 [ %2622, %Flow8263 ], [ %conv.i.i.i.i.i.i1661, %post-loop-memcpy-expansion5060 ] %idx.0.i.i.i.i1667 = phi i64 [ %2621, %Flow8263 ], [ 56, %post-loop-memcpy-expansion5060 ] %cmp.i.i.i.i1668 = icmp ugt i64 %sub.ptr.sub.i.i.i1610, %idx.0.i.i.i.i1667 %2605 = call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i1668) %and.i.i.i.i6.i.i1669 = and i64 %2605, %2604 %tobool.not.i.i.i.i1670 = icmp ne i64 %and.i.i.i.i6.i.i1669, 0 %2606 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i1671 = getelementptr inbounds nuw i32, ptr %2606, i64 %idxprom.i23.i.i.i.i.i1662 %2607 = load atomic i32, ptr %arrayidx.i22.i.i.i1671 monotonic, align 4 %2608 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i1670) %2609 = extractvalue { i1, i64 } %2608, 0 %2610 = extractvalue { i1, i64 } %2608, 1 br i1 %2609, label %cond.false.i8.i.i.i.i1672, label %Flow8263 cond.false.i8.i.i.i.i1672: ; preds = %while.cond.i.i.i.i1665 %2611 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2607) %2612 = icmp ne i32 %2611, %port.sroa.37.0.i.i1666 %2613 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2612) %2614 = extractvalue { i1, i64 } %2613, 0 %2615 = extractvalue { i1, i64 } %2613, 1 br i1 %2614, label %while.body.i.i21.i.i.i.i1673.preheader, label %Flow8262 while.body.i.i21.i.i.i.i1673.preheader: ; preds = %cond.false.i8.i.i.i.i1672 br label %while.body.i.i21.i.i.i.i1673, !amdgpu.uniform !42 Flow8262: ; preds = %Flow8261, %cond.false.i8.i.i.i.i1672 call void @llvm.amdgcn.end.cf.i64(i64 %2615) br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1676, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1673: ; preds = %while.body.i.i21.i.i.i.i1673.preheader, %while.body.i.i21.i.i.i.i1673 %phi.broken8758 = phi i64 [ 0, %while.body.i.i21.i.i.i.i1673.preheader ], [ %2619, %while.body.i.i21.i.i.i.i1673 ] call void @llvm.amdgcn.s.sleep(i32 2) %2616 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i1674 = getelementptr inbounds nuw i32, ptr %2616, i64 %idxprom.i23.i.i.i.i.i1662 %2617 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i1674 monotonic, align 4 %2618 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2617) %cmp.i.not.i.i23.i.i.i.i1675 = icmp eq i32 %2618, %port.sroa.37.0.i.i1666 %2619 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i23.i.i.i.i1675, i64 %phi.broken8758) %2620 = call i1 @llvm.amdgcn.loop.i64(i64 %2619) br i1 %2620, label %Flow8261, label %while.body.i.i21.i.i.i.i1673 Flow8261: ; preds = %while.body.i.i21.i.i.i.i1673 %.lcssa9246 = phi i64 [ %2619, %while.body.i.i21.i.i.i.i1673 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9246) br label %Flow8262, !amdgpu.uniform !42 Flow8263: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1677, %while.cond.i.i.i.i1665 %2621 = phi i64 [ %add.i.i.i.i1680, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1677 ], [ poison, %while.cond.i.i.i.i1665 ] %2622 = phi i32 [ %conv.i.i26.i.i.i.i1678, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1677 ], [ poison, %while.cond.i.i.i.i1665 ] %2623 = phi ptr [ %scevgep7093, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1677 ], [ poison, %while.cond.i.i.i.i1665 ] %2624 = phi i64 [ %lsr.iv.next7100, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1677 ], [ poison, %while.cond.i.i.i.i1665 ] %2625 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1677 ], [ true, %while.cond.i.i.i.i1665 ] call void @llvm.amdgcn.end.cf.i64(i64 %2610) %2626 = call i64 @llvm.amdgcn.if.break.i64(i1 %2625, i64 %phi.broken8761) %2627 = call i1 @llvm.amdgcn.loop.i64(i64 %2626) br i1 %2627, label %cond.false.i.i.i1687, label %while.cond.i.i.i.i1665 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1676: ; preds = %Flow8262 fence acquire %2628 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i1668) %2629 = extractvalue { i1, i64 } %2628, 0 %2630 = extractvalue { i1, i64 } %2628, 1 br i1 %2629, label %if.then.i.i.i.i.i.i.i1681, label %Flow8260 if.then.i.i.i.i.i.i.i1681: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1676 %sub.i.i.i.i.i.i.i1683 = sub nuw i64 %sub.ptr.sub.i.i.i1610, %idx.0.i.i.i.i1667 %spec.select.i.i.i36.i.i.i.i1684 = call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i1683, i64 64) %2631 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %2632 = and i64 %spec.select.i.i.i36.i.i.i.i1684, 15 %2633 = sub i64 %spec.select.i.i.i36.i.i.i.i1684, %2632 %2634 = icmp ne i64 %2633, 0 %2635 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2634) %2636 = extractvalue { i1, i64 } %2635, 0 %2637 = extractvalue { i1, i64 } %2635, 1 br i1 %2636, label %loop-memcpy-expansion5055.preheader, label %Flow8259 loop-memcpy-expansion5055.preheader: ; preds = %if.then.i.i.i.i.i.i.i1681 %arrayidx.i20.i35.i.i.i.i1685 = getelementptr %"struct.rpc::Buffer", ptr %2631, i64 %idxprom.i19.i.i.i.i.i1655 %arrayidx.i22.i38.i.i.i.i1686 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i1685, i64 %sh_prom.i.i.i.i756 br label %loop-memcpy-expansion5055, !amdgpu.uniform !42 Flow8259: ; preds = %Flow8258, %if.then.i.i.i.i.i.i.i1681 call void @llvm.amdgcn.end.cf.i64(i64 %2637) br label %loop-memcpy-residual-header5058, !amdgpu.uniform !42 loop-memcpy-expansion5055: ; preds = %loop-memcpy-expansion5055.preheader, %loop-memcpy-expansion5055 %phi.broken8759 = phi i64 [ 0, %loop-memcpy-expansion5055.preheader ], [ %2642, %loop-memcpy-expansion5055 ] %loop-index5056 = phi i64 [ %2640, %loop-memcpy-expansion5055 ], [ 0, %loop-memcpy-expansion5055.preheader ] %scevgep7094 = getelementptr i8, ptr %lsr.iv7092, i64 %loop-index5056 %2638 = load <4 x i32>, ptr %scevgep7094, align 1 %2639 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i1686, i64 %loop-index5056 store <4 x i32> %2638, ptr %2639, align 1 %2640 = add i64 %loop-index5056, 16 %2641 = icmp uge i64 %2640, %2633 %2642 = call i64 @llvm.amdgcn.if.break.i64(i1 %2641, i64 %phi.broken8759) %2643 = call i1 @llvm.amdgcn.loop.i64(i64 %2642) br i1 %2643, label %Flow8258, label %loop-memcpy-expansion5055 Flow8257: ; preds = %Flow8256, %loop-memcpy-residual-header5058 call void @llvm.amdgcn.end.cf.i64(i64 %6302) br label %Flow8260, !amdgpu.uniform !42 loop-memcpy-residual5057: ; preds = %loop-memcpy-residual5057.preheader, %loop-memcpy-residual5057 %phi.broken8760 = phi i64 [ 0, %loop-memcpy-residual5057.preheader ], [ %2647, %loop-memcpy-residual5057 ] %residual-loop-index5059 = phi i64 [ %2645, %loop-memcpy-residual5057 ], [ 0, %loop-memcpy-residual5057.preheader ] %scevgep7106 = getelementptr i8, ptr %scevgep7105, i64 %residual-loop-index5059 %2644 = load i8, ptr %scevgep7106, align 1 %scevgep7103 = getelementptr i8, ptr %scevgep7102, i64 %residual-loop-index5059 store i8 %2644, ptr %scevgep7103, align 1 %2645 = add i64 %residual-loop-index5059, 1 %2646 = icmp uge i64 %2645, %2632 %2647 = call i64 @llvm.amdgcn.if.break.i64(i1 %2646, i64 %phi.broken8760) %2648 = call i1 @llvm.amdgcn.loop.i64(i64 %2647) br i1 %2648, label %Flow8256, label %loop-memcpy-residual5057 Flow8256: ; preds = %loop-memcpy-residual5057 %.lcssa9248 = phi i64 [ %2647, %loop-memcpy-residual5057 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9248) br label %Flow8257, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1677: ; preds = %Flow8260 %conv.i.i26.i.i.i.i1678 = xor i32 %port.sroa.37.0.i.i1666, 1 fence release %2649 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i1679 = getelementptr inbounds nuw i32, ptr %2649, i64 %idxprom.i23.i.i.i.i.i1662 store atomic i32 %conv.i.i26.i.i.i.i1678, ptr %arrayidx.i24.i29.i.i.i.i1679 monotonic, align 4 %add.i.i.i.i1680 = add i64 %idx.0.i.i.i.i1667, 64 %scevgep7093 = getelementptr i8, ptr %lsr.iv7092, i64 64 %lsr.iv.next7100 = add i64 %lsr.iv7099, -64 br label %Flow8263, !amdgpu.uniform !42 cond.false.i.i.i1687: ; preds = %Flow8263 %.lcssa9250 = phi i64 [ %2626, %Flow8263 ] %port.sroa.37.0.i.i1666.lcssa = phi i32 [ %port.sroa.37.0.i.i1666, %Flow8263 ] %.lcssa9249 = phi i32 [ %2607, %Flow8263 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9250) %2650 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa9249) %2651 = icmp ne i32 %2650, %port.sroa.37.0.i.i1666.lcssa %2652 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2651) %2653 = extractvalue { i1, i64 } %2652, 0 %2654 = extractvalue { i1, i64 } %2652, 1 br i1 %2653, label %while.body.i.i.i.i1688.preheader, label %Flow8255 while.body.i.i.i.i1688.preheader: ; preds = %cond.false.i.i.i1687 br label %while.body.i.i.i.i1688, !amdgpu.uniform !42 Flow8255: ; preds = %Flow8254, %cond.false.i.i.i1687 call void @llvm.amdgcn.end.cf.i64(i64 %2654) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1709, !amdgpu.uniform !42 while.body.i.i.i.i1688: ; preds = %while.body.i.i.i.i1688.preheader, %while.body.i.i.i.i1688 %phi.broken8762 = phi i64 [ 0, %while.body.i.i.i.i1688.preheader ], [ %2658, %while.body.i.i.i.i1688 ] call void @llvm.amdgcn.s.sleep(i32 2) %2655 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i1689 = getelementptr inbounds nuw i32, ptr %2655, i64 %idxprom.i23.i.i.i.i.i1662 %2656 = load atomic i32, ptr %arrayidx.i.i.i8.i.i1689 monotonic, align 4 %2657 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2656) %cmp.i.not.i.i.i.i1690 = icmp eq i32 %2657, %port.sroa.37.0.i.i1666.lcssa %2658 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i1690, i64 %phi.broken8762) %2659 = call i1 @llvm.amdgcn.loop.i64(i64 %2658) br i1 %2659, label %Flow8254, label %while.body.i.i.i.i1688 Flow8254: ; preds = %while.body.i.i.i.i1688 %.lcssa9251 = phi i64 [ %2658, %while.body.i.i.i.i1688 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9251) br label %Flow8255, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1709: ; preds = %Flow8255 fence acquire call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %2660 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa9242, i1 true) %iszero.i.i.i.i.i13.i.i1692 = icmp ne i64 %.lcssa9242, 0 %cmp2.i.i.i.i14.i.i1693 = icmp eq i64 %2660, %sh_prom.i.i.i.i756 %cmp.i.i.i.i15.i.i1694 = select i1 %iszero.i.i.i.i.i13.i.i1692, i1 %cmp2.i.i.i.i14.i.i1693, i1 false %2661 = and i32 %.lcssa9243, 31 %conv4.i.i.i19.i.i1698 = zext i1 %cmp.i.i.i.i15.i.i1694 to i32 %shl.i.i.i20.i.i1699 = shl nuw i32 %conv4.i.i.i19.i.i1698, %2661 %xor.i.i.i21.i.i1700 = xor i32 %shl.i.i.i20.i.i1699, -1 %2662 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5680, !amdgpu.uniform !42 2663: ; preds = %ComputeEnd5681 %div8.i.i.i16.i.i1695 = lshr i32 %.lcssa9243, 5 %idxprom.i.i.i17.i.i1696 = zext nneg i32 %div8.i.i.i16.i.i1695 to i64 %2664 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i1696 %sunkaddr7416 = getelementptr inbounds i8, ptr addrspace(1) %2664, i64 40 %2665 = atomicrmw and ptr addrspace(1) %sunkaddr7416, i32 %.lcssa9252 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2666, !amdgpu.uniform !42 2666: ; preds = %2663, %ComputeEnd5681 call void @llvm.amdgcn.end.cf.i64(i64 %7606) call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i.i1713, !amdgpu.uniform !42 for.cond.i.i.i1713: ; preds = %2666, %Flow8253 %2667 = phi i32 [ %2704, %Flow8253 ], [ %1177, %2666 ] %2668 = phi i64 [ %2705, %Flow8253 ], [ %1178, %2666 ] %2669 = phi i32 [ %2706, %Flow8253 ], [ %1179, %2666 ] %retval.sroa.6.0.i.i.i1714 = phi i32 [ %2709, %Flow8253 ], [ undef, %2666 ] %retval.sroa.2.0.i.i.i1716 = phi i64 [ %2708, %Flow8253 ], [ undef, %2666 ] %retval.sroa.8.0.i.i.i1717 = phi i32 [ %2707, %Flow8253 ], [ undef, %2666 ] %index.0.i.i.i1718 = phi i32 [ %2711, %Flow8253 ], [ 0, %2666 ] %2670 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i1719 = icmp ult i32 %index.0.i.i.i1718, %2670 %spec.store.select.i.i.i1720 = select i1 %cmp.not.i.i.i1719, i32 %index.0.i.i.i1718, i32 0 %2671 = call i64 @llvm.amdgcn.ballot.i64(i1 true) %2672 = and i32 %spec.store.select.i.i.i1720, 31 %2673 = lshr i64 %2671, %sh_prom.i.i.i.i756 %2674 = trunc i64 %2673 to i32 %conv4.i.i.i.i.i1724 = and i32 %2674, 1 %shl.i.i.i.i.i1725 = shl nuw i32 %conv4.i.i.i.i.i1724, %2672 br label %ComputeLoop5684, !amdgpu.uniform !42 2675: ; preds = %ComputeEnd5685 %sunkaddr7417 = getelementptr inbounds i8, ptr addrspace(1) %7616, i64 40 %2676 = atomicrmw or ptr addrspace(1) %sunkaddr7417, i32 %.lcssa9253 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2677, !amdgpu.uniform !42 2677: ; preds = %2675, %ComputeEnd5685 %2678 = phi i32 [ %2676, %2675 ], [ poison, %ComputeEnd5685 ] call void @llvm.amdgcn.end.cf.i64(i64 %7625) %2679 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %2678) %2680 = or i32 %2679, %.lcssa9254 %shl5.i.i.i.i.i1726 = shl nuw i32 1, %2672 %and.i.i.i.i.i1727 = and i32 %shl5.i.i.i.i.i1726, %2680 %tobool3.i.i.i.i1728 = icmp ne i32 %and.i.i.i.i.i1727, 0 %2681 = call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i1728) %and.i.i.i.i.i.i1729 = and i64 %2681, %2671 %cmp.i.not.i.i.i1730 = icmp ne i64 %2671, %and.i.i.i.i.i.i1729 br i1 %cmp.i.not.i.i.i1730, label %if.then.i.i.i.i1731, label %Flow8252, !amdgpu.uniform !42 if.then.i.i.i.i1731: ; preds = %2677 fence syncscope("agent") acquire %2682 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %2683 = extractelement <2 x i64> %2682, i32 0 %2684 = inttoptr i64 %2683 to ptr %2685 = extractelement <2 x i64> %2682, i32 1 %2686 = inttoptr i64 %2685 to ptr %idxprom.i.i.i.i1732 = zext i32 %spec.store.select.i.i.i1720 to i64 %arrayidx.i.i.i.i1733 = getelementptr inbounds nuw i32, ptr %2684, i64 %idxprom.i.i.i.i1732, !amdgpu.uniform !42 %2687 = load atomic i32, ptr %arrayidx.i.i.i.i1733 monotonic, align 4 %2688 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2687) %arrayidx.i45.i.i.i1734 = getelementptr inbounds nuw i32, ptr %2686, i64 %idxprom.i.i.i.i1732, !amdgpu.uniform !42 %2689 = load atomic i32, ptr %arrayidx.i45.i.i.i1734 monotonic, align 4 %2690 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2689) %cmp.i46.not.i.i.i1735 = icmp ne i32 %2688, %2690 br i1 %cmp.i46.not.i.i.i1735, label %if.then12.i.i.i1736, label %Flow8250, !amdgpu.uniform !42 if.then12.i.i.i1736: ; preds = %if.then.i.i.i.i1731 fence syncscope("agent") release %2691 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %2671, i1 true) %iszero.i.i.i.i.i.i.i1737 = icmp ne i64 %2671, 0 %cmp2.i.i.i.i.i.i1738 = icmp eq i64 %2691, %sh_prom.i.i.i.i756 %cmp.i.i.i.i.i.i1739 = select i1 %iszero.i.i.i.i.i.i.i1737, i1 %cmp2.i.i.i.i.i.i1738, i1 false %conv4.i.i51.i.i.i1740 = zext i1 %cmp.i.i.i.i.i.i1739 to i32 %shl.i.i52.i.i.i1741 = shl nuw i32 %conv4.i.i51.i.i.i1740, %2672 %xor.i.i.i.i.i1742 = xor i32 %shl.i.i52.i.i.i1741, -1 %2692 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5689, !amdgpu.uniform !42 2693: ; preds = %ComputeEnd5690 %sunkaddr7418 = getelementptr inbounds i8, ptr addrspace(1) %7616, i64 40 %2694 = atomicrmw and ptr addrspace(1) %sunkaddr7418, i32 %.lcssa9255 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2695, !amdgpu.uniform !42 2695: ; preds = %2693, %ComputeEnd5690 call void @llvm.amdgcn.end.cf.i64(i64 %7643) call void @llvm.amdgcn.wave.barrier() br label %Flow8250, !amdgpu.uniform !42 if.end14.i.i.i1800: ; preds = %Flow8250 %2696 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %2671, i1 true) %iszero.i.i.i.i.i.i1801 = icmp ne i64 %2671, 0 %cmp2.i.i.i.i.i1802 = icmp eq i64 %2696, %sh_prom.i.i.i.i756 %cmp.i.i.i.i.i1803 = select i1 %iszero.i.i.i.i.i.i1801, i1 %cmp2.i.i.i.i.i1802, i1 false %2697 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i1803) %2698 = extractvalue { i1, i64 } %2697, 0 %2699 = extractvalue { i1, i64 } %2697, 1 br i1 %2698, label %if.then16.i.i.i1805, label %if.end22.i.i.i1804 if.then16.i.i.i1805: ; preds = %if.end14.i.i.i1800 %2700 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i1806 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2700, i64 %idxprom.i.i.i.i1732, i32 1 store i32 1660944387, ptr %opcode.i.i.i1806, align 8, !tbaa !77 %arrayidx21.i.i.i1807 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2700, i64 %idxprom.i.i.i.i1732 store i64 %2671, ptr %arrayidx21.i.i.i1807, align 8, !tbaa !80 br label %if.end22.i.i.i1804, !amdgpu.uniform !42 Flow8251: ; preds = %if.end22.i.i.i1804, %Flow8250 %2701 = phi i32 [ %2688, %if.end22.i.i.i1804 ], [ %retval.sroa.8.0.i.i.i1717, %Flow8250 ] %2702 = phi i64 [ %2671, %if.end22.i.i.i1804 ], [ %retval.sroa.2.0.i.i.i1716, %Flow8250 ] %2703 = phi i32 [ %spec.store.select.i.i.i1720, %if.end22.i.i.i1804 ], [ %retval.sroa.6.0.i.i.i1714, %Flow8250 ] br label %cleanup26.i.i.i1743, !amdgpu.uniform !42 if.end22.i.i.i1804: ; preds = %if.then16.i.i.i1805, %if.end14.i.i.i1800 call void @llvm.amdgcn.end.cf.i64(i64 %2699) call void @llvm.amdgcn.wave.barrier() br label %Flow8251, !amdgpu.uniform !42 Flow8252: ; preds = %cleanup26.i.i.i1743, %2677 %2704 = phi i32 [ %2703, %cleanup26.i.i.i1743 ], [ %2667, %2677 ] %2705 = phi i64 [ %2702, %cleanup26.i.i.i1743 ], [ %2668, %2677 ] %2706 = phi i32 [ %2701, %cleanup26.i.i.i1743 ], [ %2669, %2677 ] %2707 = phi i32 [ %2701, %cleanup26.i.i.i1743 ], [ %retval.sroa.8.0.i.i.i1717, %2677 ] %2708 = phi i64 [ %2702, %cleanup26.i.i.i1743 ], [ %retval.sroa.2.0.i.i.i1716, %2677 ] %2709 = phi i32 [ %2703, %cleanup26.i.i.i1743 ], [ %retval.sroa.6.0.i.i.i1714, %2677 ] %2710 = phi i1 [ %cmp.i46.not.i.i.i1735, %cleanup26.i.i.i1743 ], [ true, %2677 ] br i1 %2710, label %for.inc.i.i.i1748, label %Flow8253, !amdgpu.uniform !42 cleanup26.i.i.i1743: ; preds = %Flow8251 br label %Flow8252, !amdgpu.uniform !42 for.inc.i.i.i1748: ; preds = %Flow8252 %inc.i.i.i1753 = add i32 %spec.store.select.i.i.i1720, 1 br label %Flow8253, !amdgpu.uniform !42 Flow8253: ; preds = %for.inc.i.i.i1748, %Flow8252 %2711 = phi i32 [ %inc.i.i.i1753, %for.inc.i.i.i1748 ], [ poison, %Flow8252 ] %2712 = phi i1 [ false, %for.inc.i.i.i1748 ], [ true, %Flow8252 ] br i1 %2712, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1754, label %for.cond.i.i.i1713, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1754: ; preds = %Flow8253 %.lcssa9258 = phi i32 [ %2704, %Flow8253 ] %.lcssa9257 = phi i64 [ %2705, %Flow8253 ] %.lcssa9256 = phi i32 [ %2706, %Flow8253 ] fence acquire %2713 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i1755 = shl i32 %.lcssa9258, 6 %idxprom.i19.i.i.i.i.i1756 = zext i32 %mul.i.i.i.i.i.i1755 to i64 %arrayidx.i20.i.i.i.i.i1757 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %2713, i64 %idxprom.i19.i.i.i.i.i1756 %arrayidx.i22.i.i.i.i.i1758 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i1757, i64 %sh_prom.i.i.i.i756 store i64 1, ptr %arrayidx.i22.i.i.i.i.i1758, align 8, !tbaa !82 %arrayidx6.i.i.i.i.i.i.i1759 = getelementptr inbounds nuw i8, ptr %arrayidx.i22.i.i.i.i.i1758, i64 8 store i8 10, ptr %arrayidx6.i.i.i.i.i.i.i1759, align 8 %tobool.not.i.i.i.i.i.i1760 = icmp eq i32 %.lcssa9256, 0 %conv.i.i.i.i.i.i1761 = zext i1 %tobool.not.i.i.i.i.i.i1760 to i32 fence release %2714 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i1762 = zext i32 %.lcssa9258 to i64 %arrayidx.i24.i.i.i.i.i1763 = getelementptr inbounds nuw i32, ptr %2714, i64 %idxprom.i23.i.i.i.i.i1762 store atomic i32 %conv.i.i.i.i.i.i1761, ptr %arrayidx.i24.i.i.i.i.i1763 monotonic, align 4 %2715 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i1764 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2715, i64 %idxprom.i23.i.i.i.i.i1762 %2716 = load i64, ptr %arrayidx.i.i5.i.i1764, align 8, !tbaa !80 br label %while.cond.i.i.i.i1765, !amdgpu.uniform !42 while.cond.i.i.i.i1765: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1754, %Flow8249 %phi.broken8764 = phi i64 [ 0, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1754 ], [ %2736, %Flow8249 ] %port.sroa.37.0.i.i1766 = phi i32 [ %2734, %Flow8249 ], [ %conv.i.i.i.i.i.i1761, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1754 ] %idx.0.i.i.i.i1767 = phi i64 [ %2733, %Flow8249 ], [ 56, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1754 ] %cmp.i.i.i.i1768 = icmp eq i64 %idx.0.i.i.i.i1767, 0 %2717 = call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i1768) %and.i.i.i.i6.i.i1769 = and i64 %2717, %2716 %tobool.not.i.i.i.i1770 = icmp ne i64 %and.i.i.i.i6.i.i1769, 0 %2718 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i1771 = getelementptr inbounds nuw i32, ptr %2718, i64 %idxprom.i23.i.i.i.i.i1762 %2719 = load atomic i32, ptr %arrayidx.i22.i.i.i1771 monotonic, align 4 %2720 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i1770) %2721 = extractvalue { i1, i64 } %2720, 0 %2722 = extractvalue { i1, i64 } %2720, 1 br i1 %2721, label %cond.false.i8.i.i.i.i1772, label %Flow8249 cond.false.i8.i.i.i.i1772: ; preds = %while.cond.i.i.i.i1765 %2723 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2719) %2724 = icmp ne i32 %2723, %port.sroa.37.0.i.i1766 %2725 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2724) %2726 = extractvalue { i1, i64 } %2725, 0 %2727 = extractvalue { i1, i64 } %2725, 1 br i1 %2726, label %while.body.i.i21.i.i.i.i1773.preheader, label %Flow8248 while.body.i.i21.i.i.i.i1773.preheader: ; preds = %cond.false.i8.i.i.i.i1772 br label %while.body.i.i21.i.i.i.i1773, !amdgpu.uniform !42 Flow8248: ; preds = %Flow8247, %cond.false.i8.i.i.i.i1772 call void @llvm.amdgcn.end.cf.i64(i64 %2727) br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1776, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1773: ; preds = %while.body.i.i21.i.i.i.i1773.preheader, %while.body.i.i21.i.i.i.i1773 %phi.broken8763 = phi i64 [ 0, %while.body.i.i21.i.i.i.i1773.preheader ], [ %2731, %while.body.i.i21.i.i.i.i1773 ] call void @llvm.amdgcn.s.sleep(i32 2) %2728 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i1774 = getelementptr inbounds nuw i32, ptr %2728, i64 %idxprom.i23.i.i.i.i.i1762 %2729 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i1774 monotonic, align 4 %2730 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2729) %cmp.i.not.i.i23.i.i.i.i1775 = icmp eq i32 %2730, %port.sroa.37.0.i.i1766 %2731 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i23.i.i.i.i1775, i64 %phi.broken8763) %2732 = call i1 @llvm.amdgcn.loop.i64(i64 %2731) br i1 %2732, label %Flow8247, label %while.body.i.i21.i.i.i.i1773 Flow8247: ; preds = %while.body.i.i21.i.i.i.i1773 %.lcssa9259 = phi i64 [ %2731, %while.body.i.i21.i.i.i.i1773 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9259) br label %Flow8248, !amdgpu.uniform !42 Flow8249: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1777, %while.cond.i.i.i.i1765 %2733 = phi i64 [ %add.i.i.i.i1780, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1777 ], [ poison, %while.cond.i.i.i.i1765 ] %2734 = phi i32 [ %conv.i.i26.i.i.i.i1778, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1777 ], [ poison, %while.cond.i.i.i.i1765 ] %2735 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1777 ], [ true, %while.cond.i.i.i.i1765 ] call void @llvm.amdgcn.end.cf.i64(i64 %2722) %2736 = call i64 @llvm.amdgcn.if.break.i64(i1 %2735, i64 %phi.broken8764) %2737 = call i1 @llvm.amdgcn.loop.i64(i64 %2736) br i1 %2737, label %cond.false.i.i.i1786, label %while.cond.i.i.i.i1765 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1776: ; preds = %Flow8248 fence acquire br i1 %cmp.i.i.i.i1768, label %if.then.i.i.i.i.i.i.i1781, label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1777, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i1781: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1776 %2738 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %arrayidx.i20.i35.i.i.i.i1784 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %2738, i64 %idxprom.i19.i.i.i.i.i1756 %arrayidx.i22.i38.i.i.i.i1785 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i1784, i64 %sh_prom.i.i.i.i756 store i8 10, ptr %arrayidx.i22.i38.i.i.i.i1785, align 1 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1777, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1777: ; preds = %if.then.i.i.i.i.i.i.i1781, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1776 %conv.i.i26.i.i.i.i1778 = xor i32 %port.sroa.37.0.i.i1766, 1 fence release %2739 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i1779 = getelementptr inbounds nuw i32, ptr %2739, i64 %idxprom.i23.i.i.i.i.i1762 store atomic i32 %conv.i.i26.i.i.i.i1778, ptr %arrayidx.i24.i29.i.i.i.i1779 monotonic, align 4 %add.i.i.i.i1780 = add i64 %idx.0.i.i.i.i1767, 64 br label %Flow8249, !amdgpu.uniform !42 cond.false.i.i.i1786: ; preds = %Flow8249 %.lcssa9261 = phi i64 [ %2736, %Flow8249 ] %port.sroa.37.0.i.i1766.lcssa = phi i32 [ %port.sroa.37.0.i.i1766, %Flow8249 ] %.lcssa9260 = phi i32 [ %2719, %Flow8249 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9261) %2740 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa9260) %2741 = icmp ne i32 %2740, %port.sroa.37.0.i.i1766.lcssa %2742 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2741) %2743 = extractvalue { i1, i64 } %2742, 0 %2744 = extractvalue { i1, i64 } %2742, 1 br i1 %2743, label %while.body.i.i.i.i1787.preheader, label %Flow8246 while.body.i.i.i.i1787.preheader: ; preds = %cond.false.i.i.i1786 br label %while.body.i.i.i.i1787, !amdgpu.uniform !42 Flow8246: ; preds = %Flow8245, %cond.false.i.i.i1786 call void @llvm.amdgcn.end.cf.i64(i64 %2744) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit1808, !amdgpu.uniform !42 while.body.i.i.i.i1787: ; preds = %while.body.i.i.i.i1787.preheader, %while.body.i.i.i.i1787 %phi.broken8765 = phi i64 [ 0, %while.body.i.i.i.i1787.preheader ], [ %2748, %while.body.i.i.i.i1787 ] call void @llvm.amdgcn.s.sleep(i32 2) %2745 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i1788 = getelementptr inbounds nuw i32, ptr %2745, i64 %idxprom.i23.i.i.i.i.i1762 %2746 = load atomic i32, ptr %arrayidx.i.i.i8.i.i1788 monotonic, align 4 %2747 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2746) %cmp.i.not.i.i.i.i1789 = icmp eq i32 %2747, %port.sroa.37.0.i.i1766.lcssa %2748 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i1789, i64 %phi.broken8765) %2749 = call i1 @llvm.amdgcn.loop.i64(i64 %2748) br i1 %2749, label %Flow8245, label %while.body.i.i.i.i1787 Flow8245: ; preds = %while.body.i.i.i.i1787 %.lcssa9262 = phi i64 [ %2748, %while.body.i.i.i.i1787 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9262) br label %Flow8246, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit1808: ; preds = %Flow8246 fence acquire call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %2750 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa9257, i1 true) %iszero.i.i.i.i.i13.i.i1791 = icmp ne i64 %.lcssa9257, 0 %cmp2.i.i.i.i14.i.i1792 = icmp eq i64 %2750, %sh_prom.i.i.i.i756 %cmp.i.i.i.i15.i.i1793 = select i1 %iszero.i.i.i.i.i13.i.i1791, i1 %cmp2.i.i.i.i14.i.i1792, i1 false %2751 = and i32 %.lcssa9258, 31 %conv4.i.i.i19.i.i1797 = zext i1 %cmp.i.i.i.i15.i.i1793 to i32 %shl.i.i.i20.i.i1798 = shl nuw i32 %conv4.i.i.i19.i.i1797, %2751 %xor.i.i.i21.i.i1799 = xor i32 %shl.i.i.i20.i.i1798, -1 %2752 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5693, !amdgpu.uniform !42 2753: ; preds = %ComputeEnd5694 %div8.i.i.i16.i.i1794 = lshr i32 %.lcssa9258, 5 %idxprom.i.i.i17.i.i1795 = zext nneg i32 %div8.i.i.i16.i.i1794 to i64 %2754 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i1795 %sunkaddr7419 = getelementptr inbounds i8, ptr addrspace(1) %2754, i64 40 %2755 = atomicrmw and ptr addrspace(1) %sunkaddr7419, i32 %.lcssa9263 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2756, !amdgpu.uniform !42 2756: ; preds = %2753, %ComputeEnd5694 call void @llvm.amdgcn.end.cf.i64(i64 %7660) call void @llvm.amdgcn.wave.barrier() %inc = add nsw i32 %FailCount.0205, 1 br label %Flow8331, !amdgpu.uniform !42 Flow8330: ; preds = %Flow8149, %_ZN22__llvm_libc_22_0_0_git5clockEv.exit1282 %2757 = phi i32 [ %3452, %Flow8149 ], [ poison, %_ZN22__llvm_libc_22_0_0_git5clockEv.exit1282 ] %2758 = phi i64 [ %3453, %Flow8149 ], [ poison, %_ZN22__llvm_libc_22_0_0_git5clockEv.exit1282 ] %2759 = phi i32 [ %3454, %Flow8149 ], [ poison, %_ZN22__llvm_libc_22_0_0_git5clockEv.exit1282 ] %2760 = phi i32 [ %3455, %Flow8149 ], [ poison, %_ZN22__llvm_libc_22_0_0_git5clockEv.exit1282 ] %2761 = phi i64 [ %3456, %Flow8149 ], [ poison, %_ZN22__llvm_libc_22_0_0_git5clockEv.exit1282 ] %2762 = phi i32 [ %3457, %Flow8149 ], [ poison, %_ZN22__llvm_libc_22_0_0_git5clockEv.exit1282 ] %2763 = phi i32 [ %3458, %Flow8149 ], [ poison, %_ZN22__llvm_libc_22_0_0_git5clockEv.exit1282 ] %2764 = phi i64 [ %3459, %Flow8149 ], [ poison, %_ZN22__llvm_libc_22_0_0_git5clockEv.exit1282 ] %2765 = phi i32 [ %3460, %Flow8149 ], [ poison, %_ZN22__llvm_libc_22_0_0_git5clockEv.exit1282 ] %2766 = phi i32 [ %3461, %Flow8149 ], [ poison, %_ZN22__llvm_libc_22_0_0_git5clockEv.exit1282 ] %2767 = phi i64 [ %3462, %Flow8149 ], [ poison, %_ZN22__llvm_libc_22_0_0_git5clockEv.exit1282 ] %2768 = phi i32 [ %3463, %Flow8149 ], [ poison, %_ZN22__llvm_libc_22_0_0_git5clockEv.exit1282 ] %2769 = phi i32 [ %3464, %Flow8149 ], [ poison, %_ZN22__llvm_libc_22_0_0_git5clockEv.exit1282 ] %2770 = phi i64 [ %3465, %Flow8149 ], [ poison, %_ZN22__llvm_libc_22_0_0_git5clockEv.exit1282 ] %2771 = phi i32 [ %3466, %Flow8149 ], [ poison, %_ZN22__llvm_libc_22_0_0_git5clockEv.exit1282 ] %2772 = phi i32 [ %3467, %Flow8149 ], [ poison, %_ZN22__llvm_libc_22_0_0_git5clockEv.exit1282 ] %2773 = phi i64 [ %3468, %Flow8149 ], [ poison, %_ZN22__llvm_libc_22_0_0_git5clockEv.exit1282 ] %2774 = phi i32 [ %3469, %Flow8149 ], [ poison, %_ZN22__llvm_libc_22_0_0_git5clockEv.exit1282 ] %2775 = phi i32 [ %3470, %Flow8149 ], [ poison, %_ZN22__llvm_libc_22_0_0_git5clockEv.exit1282 ] %2776 = phi i64 [ %3471, %Flow8149 ], [ poison, %_ZN22__llvm_libc_22_0_0_git5clockEv.exit1282 ] %2777 = phi i32 [ %3472, %Flow8149 ], [ poison, %_ZN22__llvm_libc_22_0_0_git5clockEv.exit1282 ] %2778 = phi i32 [ %.lcssa9109, %Flow8149 ], [ poison, %_ZN22__llvm_libc_22_0_0_git5clockEv.exit1282 ] %2779 = phi i64 [ %.lcssa9110, %Flow8149 ], [ poison, %_ZN22__llvm_libc_22_0_0_git5clockEv.exit1282 ] %2780 = phi i32 [ %.lcssa9111, %Flow8149 ], [ poison, %_ZN22__llvm_libc_22_0_0_git5clockEv.exit1282 ] %2781 = phi i32 [ %.lcssa9094, %Flow8149 ], [ poison, %_ZN22__llvm_libc_22_0_0_git5clockEv.exit1282 ] %2782 = phi i64 [ %.lcssa9095, %Flow8149 ], [ poison, %_ZN22__llvm_libc_22_0_0_git5clockEv.exit1282 ] %2783 = phi i32 [ %.lcssa9096, %Flow8149 ], [ poison, %_ZN22__llvm_libc_22_0_0_git5clockEv.exit1282 ] %2784 = phi i32 [ %.lcssa9078, %Flow8149 ], [ poison, %_ZN22__llvm_libc_22_0_0_git5clockEv.exit1282 ] %2785 = phi i64 [ %.lcssa9079, %Flow8149 ], [ poison, %_ZN22__llvm_libc_22_0_0_git5clockEv.exit1282 ] %2786 = phi i32 [ %.lcssa9080, %Flow8149 ], [ poison, %_ZN22__llvm_libc_22_0_0_git5clockEv.exit1282 ] %2787 = phi i32 [ %.lcssa9066, %Flow8149 ], [ poison, %_ZN22__llvm_libc_22_0_0_git5clockEv.exit1282 ] %2788 = phi i64 [ %.lcssa9067, %Flow8149 ], [ poison, %_ZN22__llvm_libc_22_0_0_git5clockEv.exit1282 ] %2789 = phi i32 [ %.lcssa9068, %Flow8149 ], [ poison, %_ZN22__llvm_libc_22_0_0_git5clockEv.exit1282 ] %2790 = phi i32 [ %.lcssa9051, %Flow8149 ], [ poison, %_ZN22__llvm_libc_22_0_0_git5clockEv.exit1282 ] %2791 = phi i64 [ %.lcssa9052, %Flow8149 ], [ poison, %_ZN22__llvm_libc_22_0_0_git5clockEv.exit1282 ] %2792 = phi i32 [ %.lcssa9053, %Flow8149 ], [ poison, %_ZN22__llvm_libc_22_0_0_git5clockEv.exit1282 ] %2793 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %2088) %2794 = extractvalue { i1, i64 } %2793, 0 %2795 = extractvalue { i1, i64 } %2793, 1 br i1 %2794, label %for.cond.i.i.i1283.preheader, label %Flow8331 for.cond.i.i.i1809: ; preds = %for.cond.i.i.i1809.preheader, %for.cond.i.i.i1809 %phi.broken8685 = phi i64 [ 0, %for.cond.i.i.i1809.preheader ], [ %2797, %for.cond.i.i.i1809 ] %lsr.iv6695 = phi ptr addrspace(4) [ %scevgep6697, %for.cond.i.i.i1809 ], [ %scevgep6586, %for.cond.i.i.i1809.preheader ] %scevgep6697 = getelementptr i8, ptr addrspace(4) %lsr.iv6695, i64 1 %2796 = load i8, ptr addrspace(4) %scevgep6697, align 1, !tbaa !57 %cmp.i.i.i1811 = icmp eq i8 %2796, 0 %2797 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.i.i1811, i64 %phi.broken8685) %2798 = call i1 @llvm.amdgcn.loop.i64(i64 %2797) br i1 %2798, label %for.cond.i.i1.i1818.preheader, label %for.cond.i.i.i1809 for.cond.i.i1.i1818.preheader: ; preds = %for.cond.i.i.i1809 %scevgep6697.lcssa = phi ptr addrspace(4) [ %scevgep6697, %for.cond.i.i.i1809 ] %.lcssa9047 = phi i64 [ %2797, %for.cond.i.i.i1809 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9047) br label %for.cond.i.i1.i1818, !amdgpu.uniform !42 for.cond.i.i1.i1818: ; preds = %for.cond.i.i1.i1818.preheader, %Flow8244 %2799 = phi i32 [ %2836, %Flow8244 ], [ %1180, %for.cond.i.i1.i1818.preheader ] %2800 = phi i64 [ %2837, %Flow8244 ], [ %1181, %for.cond.i.i1.i1818.preheader ] %2801 = phi i32 [ %2838, %Flow8244 ], [ %1182, %for.cond.i.i1.i1818.preheader ] %retval.sroa.6.0.i.i.i1819 = phi i32 [ %2841, %Flow8244 ], [ undef, %for.cond.i.i1.i1818.preheader ] %retval.sroa.2.0.i.i.i1821 = phi i64 [ %2840, %Flow8244 ], [ undef, %for.cond.i.i1.i1818.preheader ] %retval.sroa.8.0.i.i.i1822 = phi i32 [ %2839, %Flow8244 ], [ undef, %for.cond.i.i1.i1818.preheader ] %index.0.i.i.i1823 = phi i32 [ %2843, %Flow8244 ], [ 0, %for.cond.i.i1.i1818.preheader ] %2802 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i1824 = icmp ult i32 %index.0.i.i.i1823, %2802 %spec.store.select.i.i.i1825 = select i1 %cmp.not.i.i.i1824, i32 %index.0.i.i.i1823, i32 0 %2803 = call i64 @llvm.amdgcn.ballot.i64(i1 true) %2804 = and i32 %spec.store.select.i.i.i1825, 31 %2805 = lshr i64 %2803, %sh_prom.i.i.i.i756 %2806 = trunc i64 %2805 to i32 %conv4.i.i.i.i.i1829 = and i32 %2806, 1 %shl.i.i.i.i.i1830 = shl nuw i32 %conv4.i.i.i.i.i1829, %2804 br label %ComputeLoop5697, !amdgpu.uniform !42 2807: ; preds = %ComputeEnd5698 %sunkaddr7420 = getelementptr inbounds i8, ptr addrspace(1) %7670, i64 40 %2808 = atomicrmw or ptr addrspace(1) %sunkaddr7420, i32 %.lcssa9048 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2809, !amdgpu.uniform !42 2809: ; preds = %2807, %ComputeEnd5698 %2810 = phi i32 [ %2808, %2807 ], [ poison, %ComputeEnd5698 ] call void @llvm.amdgcn.end.cf.i64(i64 %7679) %2811 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %2810) %2812 = or i32 %2811, %.lcssa9049 %shl5.i.i.i.i.i1831 = shl nuw i32 1, %2804 %and.i.i.i.i.i1832 = and i32 %shl5.i.i.i.i.i1831, %2812 %tobool3.i.i.i.i1833 = icmp ne i32 %and.i.i.i.i.i1832, 0 %2813 = call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i1833) %and.i.i.i.i.i.i1834 = and i64 %2813, %2803 %cmp.i.not.i.i.i1835 = icmp ne i64 %2803, %and.i.i.i.i.i.i1834 br i1 %cmp.i.not.i.i.i1835, label %if.then.i.i.i.i1836, label %Flow8243, !amdgpu.uniform !42 if.then.i.i.i.i1836: ; preds = %2809 fence syncscope("agent") acquire %2814 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %2815 = extractelement <2 x i64> %2814, i32 0 %2816 = inttoptr i64 %2815 to ptr %2817 = extractelement <2 x i64> %2814, i32 1 %2818 = inttoptr i64 %2817 to ptr %idxprom.i.i.i.i1837 = zext i32 %spec.store.select.i.i.i1825 to i64 %arrayidx.i.i.i.i1838 = getelementptr inbounds nuw i32, ptr %2816, i64 %idxprom.i.i.i.i1837, !amdgpu.uniform !42 %2819 = load atomic i32, ptr %arrayidx.i.i.i.i1838 monotonic, align 4 %2820 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2819) %arrayidx.i45.i.i.i1839 = getelementptr inbounds nuw i32, ptr %2818, i64 %idxprom.i.i.i.i1837, !amdgpu.uniform !42 %2821 = load atomic i32, ptr %arrayidx.i45.i.i.i1839 monotonic, align 4 %2822 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2821) %cmp.i46.not.i.i.i1840 = icmp ne i32 %2820, %2822 br i1 %cmp.i46.not.i.i.i1840, label %if.then12.i.i.i1841, label %Flow8241, !amdgpu.uniform !42 if.then12.i.i.i1841: ; preds = %if.then.i.i.i.i1836 fence syncscope("agent") release %2823 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %2803, i1 true) %iszero.i.i.i.i.i.i.i1842 = icmp ne i64 %2803, 0 %cmp2.i.i.i.i.i.i1843 = icmp eq i64 %2823, %sh_prom.i.i.i.i756 %cmp.i.i.i.i.i.i1844 = select i1 %iszero.i.i.i.i.i.i.i1842, i1 %cmp2.i.i.i.i.i.i1843, i1 false %conv4.i.i51.i.i.i1845 = zext i1 %cmp.i.i.i.i.i.i1844 to i32 %shl.i.i52.i.i.i1846 = shl nuw i32 %conv4.i.i51.i.i.i1845, %2804 %xor.i.i.i.i.i1847 = xor i32 %shl.i.i52.i.i.i1846, -1 %2824 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5702, !amdgpu.uniform !42 2825: ; preds = %ComputeEnd5703 %sunkaddr7421 = getelementptr inbounds i8, ptr addrspace(1) %7670, i64 40 %2826 = atomicrmw and ptr addrspace(1) %sunkaddr7421, i32 %.lcssa9050 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2827, !amdgpu.uniform !42 2827: ; preds = %2825, %ComputeEnd5703 call void @llvm.amdgcn.end.cf.i64(i64 %7697) call void @llvm.amdgcn.wave.barrier() br label %Flow8241, !amdgpu.uniform !42 if.end14.i.i.i1907: ; preds = %Flow8241 %2828 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %2803, i1 true) %iszero.i.i.i.i.i.i1908 = icmp ne i64 %2803, 0 %cmp2.i.i.i.i.i1909 = icmp eq i64 %2828, %sh_prom.i.i.i.i756 %cmp.i.i.i.i.i1910 = select i1 %iszero.i.i.i.i.i.i1908, i1 %cmp2.i.i.i.i.i1909, i1 false %2829 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i1910) %2830 = extractvalue { i1, i64 } %2829, 0 %2831 = extractvalue { i1, i64 } %2829, 1 br i1 %2830, label %if.then16.i.i.i1912, label %if.end22.i.i.i1911 if.then16.i.i.i1912: ; preds = %if.end14.i.i.i1907 %2832 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i1913 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2832, i64 %idxprom.i.i.i.i1837, i32 1 store i32 1660944387, ptr %opcode.i.i.i1913, align 8, !tbaa !77 %arrayidx21.i.i.i1914 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2832, i64 %idxprom.i.i.i.i1837 store i64 %2803, ptr %arrayidx21.i.i.i1914, align 8, !tbaa !80 br label %if.end22.i.i.i1911, !amdgpu.uniform !42 Flow8242: ; preds = %if.end22.i.i.i1911, %Flow8241 %2833 = phi i32 [ %2820, %if.end22.i.i.i1911 ], [ %retval.sroa.8.0.i.i.i1822, %Flow8241 ] %2834 = phi i64 [ %2803, %if.end22.i.i.i1911 ], [ %retval.sroa.2.0.i.i.i1821, %Flow8241 ] %2835 = phi i32 [ %spec.store.select.i.i.i1825, %if.end22.i.i.i1911 ], [ %retval.sroa.6.0.i.i.i1819, %Flow8241 ] br label %cleanup26.i.i.i1848, !amdgpu.uniform !42 if.end22.i.i.i1911: ; preds = %if.then16.i.i.i1912, %if.end14.i.i.i1907 call void @llvm.amdgcn.end.cf.i64(i64 %2831) call void @llvm.amdgcn.wave.barrier() br label %Flow8242, !amdgpu.uniform !42 Flow8243: ; preds = %cleanup26.i.i.i1848, %2809 %2836 = phi i32 [ %2835, %cleanup26.i.i.i1848 ], [ %2799, %2809 ] %2837 = phi i64 [ %2834, %cleanup26.i.i.i1848 ], [ %2800, %2809 ] %2838 = phi i32 [ %2833, %cleanup26.i.i.i1848 ], [ %2801, %2809 ] %2839 = phi i32 [ %2833, %cleanup26.i.i.i1848 ], [ %retval.sroa.8.0.i.i.i1822, %2809 ] %2840 = phi i64 [ %2834, %cleanup26.i.i.i1848 ], [ %retval.sroa.2.0.i.i.i1821, %2809 ] %2841 = phi i32 [ %2835, %cleanup26.i.i.i1848 ], [ %retval.sroa.6.0.i.i.i1819, %2809 ] %2842 = phi i1 [ %cmp.i46.not.i.i.i1840, %cleanup26.i.i.i1848 ], [ true, %2809 ] br i1 %2842, label %for.inc.i.i.i1853, label %Flow8244, !amdgpu.uniform !42 cleanup26.i.i.i1848: ; preds = %Flow8242 br label %Flow8243, !amdgpu.uniform !42 for.inc.i.i.i1853: ; preds = %Flow8243 %inc.i.i.i1858 = add i32 %spec.store.select.i.i.i1825, 1 br label %Flow8244, !amdgpu.uniform !42 Flow8244: ; preds = %for.inc.i.i.i1853, %Flow8243 %2843 = phi i32 [ %inc.i.i.i1858, %for.inc.i.i.i1853 ], [ poison, %Flow8243 ] %2844 = phi i1 [ false, %for.inc.i.i.i1853 ], [ true, %Flow8243 ] br i1 %2844, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1859, label %for.cond.i.i1.i1818, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1859: ; preds = %Flow8244 %.lcssa9053 = phi i32 [ %2836, %Flow8244 ] %.lcssa9052 = phi i64 [ %2837, %Flow8244 ] %.lcssa9051 = phi i32 [ %2838, %Flow8244 ] %2845 = addrspacecast ptr addrspace(4) %scevgep6697.lcssa to ptr %2846 = addrspacecast ptr addrspace(4) %cond to ptr %2847 = ptrtoint ptr %2846 to i64 %sub.ptr.lhs.cast.i.i.i1814 = ptrtoint ptr %2845 to i64 %sub.ptr.sub.i.i.i1816 = sub i64 %sub.ptr.lhs.cast.i.i.i1814, %2847 fence acquire %2848 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i1860 = shl i32 %.lcssa9053, 6 %idxprom.i19.i.i.i.i.i1861 = zext i32 %mul.i.i.i.i.i.i1860 to i64 %arrayidx.i20.i.i.i.i.i1862 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %2848, i64 %idxprom.i19.i.i.i.i.i1861 %arrayidx.i22.i.i.i.i.i1863 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i1862, i64 %sh_prom.i.i.i.i756 store i64 %sub.ptr.sub.i.i.i1816, ptr %arrayidx.i22.i.i.i.i.i1863, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i1864 = call i64 @llvm.umin.i64(i64 %sub.ptr.sub.i.i.i1816, i64 56) %2849 = and i64 %spec.select.i.i.i.i.i.i.i1864, 15 %2850 = sub i64 %spec.select.i.i.i.i.i.i.i1864, %2849 %2851 = icmp ne i64 %2850, 0 %2852 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2851) %2853 = extractvalue { i1, i64 } %2852, 0 %2854 = extractvalue { i1, i64 } %2852, 1 br i1 %2853, label %loop-memcpy-expansion5157.preheader, label %Flow8240 loop-memcpy-expansion5157.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1859 %scevgep6698 = getelementptr i8, ptr %2848, i64 8 %scevgep6699 = getelementptr i8, ptr %scevgep6698, i64 %1474 %2855 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1861, 6 %scevgep6700 = getelementptr i8, ptr %scevgep6699, i64 %2855 br label %loop-memcpy-expansion5157, !amdgpu.uniform !42 Flow8240: ; preds = %Flow8239, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1859 call void @llvm.amdgcn.end.cf.i64(i64 %2854) br label %loop-memcpy-residual-header5160, !amdgpu.uniform !42 loop-memcpy-expansion5157: ; preds = %loop-memcpy-expansion5157.preheader, %loop-memcpy-expansion5157 %phi.broken8686 = phi i64 [ 0, %loop-memcpy-expansion5157.preheader ], [ %2860, %loop-memcpy-expansion5157 ] %loop-index5158 = phi i64 [ %2858, %loop-memcpy-expansion5157 ], [ 0, %loop-memcpy-expansion5157.preheader ] %2856 = getelementptr i8, ptr addrspace(4) %cond, i64 %loop-index5158 %2857 = load <4 x i32>, ptr addrspace(4) %2856, align 1 %scevgep6701 = getelementptr i8, ptr %scevgep6700, i64 %loop-index5158 store <4 x i32> %2857, ptr %scevgep6701, align 1 %2858 = add i64 %loop-index5158, 16 %2859 = icmp uge i64 %2858, %2850 %2860 = call i64 @llvm.amdgcn.if.break.i64(i1 %2859, i64 %phi.broken8686) %2861 = call i1 @llvm.amdgcn.loop.i64(i64 %2860) br i1 %2861, label %Flow8239, label %loop-memcpy-expansion5157 Flow8238: ; preds = %Flow8236, %Flow8237 %2862 = phi i64 [ %6451, %Flow8236 ], [ %6446, %Flow8237 ] call void @llvm.amdgcn.end.cf.i64(i64 %6449) br label %post-loop-memcpy-expansion5156, !amdgpu.uniform !42 loop-memcpy-residual5159: ; preds = %loop-memcpy-residual5159.preheader, %loop-memcpy-residual5159 %phi.broken8687 = phi i64 [ 0, %loop-memcpy-residual5159.preheader ], [ %2866, %loop-memcpy-residual5159 ] %residual-loop-index5161 = phi i64 [ %2864, %loop-memcpy-residual5159 ], [ 0, %loop-memcpy-residual5159.preheader ] %scevgep6707 = getelementptr i8, ptr addrspace(4) %scevgep6706, i64 %residual-loop-index5161 %2863 = load i8, ptr addrspace(4) %scevgep6707, align 1 %scevgep6705 = getelementptr i8, ptr %scevgep6704, i64 %residual-loop-index5161 store i8 %2863, ptr %scevgep6705, align 1 %2864 = add i64 %residual-loop-index5161, 1 %2865 = icmp uge i64 %2864, %2849 %2866 = call i64 @llvm.amdgcn.if.break.i64(i1 %2865, i64 %phi.broken8687) %2867 = call i1 @llvm.amdgcn.loop.i64(i64 %2866) br i1 %2867, label %Flow8236, label %loop-memcpy-residual5159 Flow8236: ; preds = %loop-memcpy-residual5159 %.lcssa9055 = phi i64 [ %2866, %loop-memcpy-residual5159 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9055) br label %Flow8238, !amdgpu.uniform !42 post-loop-memcpy-expansion5156: ; preds = %Flow8238 %2868 = addrspacecast ptr addrspace(4) %scevgep6697.lcssa to ptr %2869 = ptrtoint ptr %2868 to i64 %tobool.not.i.i.i.i.i.i1866 = icmp eq i32 %.lcssa9051, 0 %conv.i.i.i.i.i.i1867 = zext i1 %tobool.not.i.i.i.i.i.i1866 to i32 fence release %2870 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i1868 = zext i32 %.lcssa9053 to i64 %arrayidx.i24.i.i.i.i.i1869 = getelementptr inbounds nuw i32, ptr %2870, i64 %idxprom.i23.i.i.i.i.i1868 store atomic i32 %conv.i.i.i.i.i.i1867, ptr %arrayidx.i24.i.i.i.i.i1869 monotonic, align 4 %2871 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i1870 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2871, i64 %idxprom.i23.i.i.i.i.i1868 %2872 = load i64, ptr %arrayidx.i.i5.i.i1870, align 8, !tbaa !80 %2873 = add i64 %1140, %2869 br label %while.cond.i.i.i.i1871, !amdgpu.uniform !42 while.cond.i.i.i.i1871: ; preds = %post-loop-memcpy-expansion5156, %Flow8235 %phi.broken8691 = phi i64 [ 0, %post-loop-memcpy-expansion5156 ], [ %2895, %Flow8235 ] %lsr.iv6713 = phi i64 [ %2893, %Flow8235 ], [ %2873, %post-loop-memcpy-expansion5156 ] %lsr.iv6708 = phi ptr addrspace(4) [ %2892, %Flow8235 ], [ %scevgep6600, %post-loop-memcpy-expansion5156 ] %port.sroa.37.0.i.i1872 = phi i32 [ %2891, %Flow8235 ], [ %conv.i.i.i.i.i.i1867, %post-loop-memcpy-expansion5156 ] %idx.0.i.i.i.i1873 = phi i64 [ %2890, %Flow8235 ], [ 56, %post-loop-memcpy-expansion5156 ] %cmp.i.i.i.i1874 = icmp ugt i64 %sub.ptr.sub.i.i.i1816, %idx.0.i.i.i.i1873 %2874 = call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i1874) %and.i.i.i.i6.i.i1875 = and i64 %2874, %2872 %tobool.not.i.i.i.i1876 = icmp ne i64 %and.i.i.i.i6.i.i1875, 0 %2875 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i1877 = getelementptr inbounds nuw i32, ptr %2875, i64 %idxprom.i23.i.i.i.i.i1868 %2876 = load atomic i32, ptr %arrayidx.i22.i.i.i1877 monotonic, align 4 %2877 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i1876) %2878 = extractvalue { i1, i64 } %2877, 0 %2879 = extractvalue { i1, i64 } %2877, 1 br i1 %2878, label %cond.false.i8.i.i.i.i1878, label %Flow8235 cond.false.i8.i.i.i.i1878: ; preds = %while.cond.i.i.i.i1871 %2880 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2876) %2881 = icmp ne i32 %2880, %port.sroa.37.0.i.i1872 %2882 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2881) %2883 = extractvalue { i1, i64 } %2882, 0 %2884 = extractvalue { i1, i64 } %2882, 1 br i1 %2883, label %while.body.i.i21.i.i.i.i1879.preheader, label %Flow8234 while.body.i.i21.i.i.i.i1879.preheader: ; preds = %cond.false.i8.i.i.i.i1878 br label %while.body.i.i21.i.i.i.i1879, !amdgpu.uniform !42 Flow8234: ; preds = %Flow8233, %cond.false.i8.i.i.i.i1878 call void @llvm.amdgcn.end.cf.i64(i64 %2884) br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1882, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1879: ; preds = %while.body.i.i21.i.i.i.i1879.preheader, %while.body.i.i21.i.i.i.i1879 %phi.broken8688 = phi i64 [ 0, %while.body.i.i21.i.i.i.i1879.preheader ], [ %2888, %while.body.i.i21.i.i.i.i1879 ] call void @llvm.amdgcn.s.sleep(i32 2) %2885 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i1880 = getelementptr inbounds nuw i32, ptr %2885, i64 %idxprom.i23.i.i.i.i.i1868 %2886 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i1880 monotonic, align 4 %2887 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2886) %cmp.i.not.i.i23.i.i.i.i1881 = icmp eq i32 %2887, %port.sroa.37.0.i.i1872 %2888 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i23.i.i.i.i1881, i64 %phi.broken8688) %2889 = call i1 @llvm.amdgcn.loop.i64(i64 %2888) br i1 %2889, label %Flow8233, label %while.body.i.i21.i.i.i.i1879 Flow8233: ; preds = %while.body.i.i21.i.i.i.i1879 %.lcssa9056 = phi i64 [ %2888, %while.body.i.i21.i.i.i.i1879 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9056) br label %Flow8234, !amdgpu.uniform !42 Flow8235: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1883, %while.cond.i.i.i.i1871 %2890 = phi i64 [ %add.i.i.i.i1886, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1883 ], [ poison, %while.cond.i.i.i.i1871 ] %2891 = phi i32 [ %conv.i.i26.i.i.i.i1884, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1883 ], [ poison, %while.cond.i.i.i.i1871 ] %2892 = phi ptr addrspace(4) [ %scevgep6709, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1883 ], [ poison, %while.cond.i.i.i.i1871 ] %2893 = phi i64 [ %lsr.iv.next6714, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1883 ], [ poison, %while.cond.i.i.i.i1871 ] %2894 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1883 ], [ true, %while.cond.i.i.i.i1871 ] call void @llvm.amdgcn.end.cf.i64(i64 %2879) %2895 = call i64 @llvm.amdgcn.if.break.i64(i1 %2894, i64 %phi.broken8691) %2896 = call i1 @llvm.amdgcn.loop.i64(i64 %2895) br i1 %2896, label %cond.false.i.i.i1893, label %while.cond.i.i.i.i1871 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1882: ; preds = %Flow8234 fence acquire %2897 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i1874) %2898 = extractvalue { i1, i64 } %2897, 0 %2899 = extractvalue { i1, i64 } %2897, 1 br i1 %2898, label %if.then.i.i.i.i.i.i.i1887, label %Flow8232 if.then.i.i.i.i.i.i.i1887: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1882 %sub.i.i.i.i.i.i.i1889 = sub nuw i64 %sub.ptr.sub.i.i.i1816, %idx.0.i.i.i.i1873 %spec.select.i.i.i36.i.i.i.i1890 = call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i1889, i64 64) %2900 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %2901 = and i64 %spec.select.i.i.i36.i.i.i.i1890, 15 %2902 = sub i64 %spec.select.i.i.i36.i.i.i.i1890, %2901 %2903 = icmp ne i64 %2902, 0 %2904 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2903) %2905 = extractvalue { i1, i64 } %2904, 0 %2906 = extractvalue { i1, i64 } %2904, 1 br i1 %2905, label %loop-memcpy-expansion5313.preheader, label %Flow8231 loop-memcpy-expansion5313.preheader: ; preds = %if.then.i.i.i.i.i.i.i1887 %arrayidx.i20.i35.i.i.i.i1891 = getelementptr %"struct.rpc::Buffer", ptr %2900, i64 %idxprom.i19.i.i.i.i.i1861 %arrayidx.i22.i38.i.i.i.i1892 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i1891, i64 %sh_prom.i.i.i.i756 br label %loop-memcpy-expansion5313, !amdgpu.uniform !42 Flow8231: ; preds = %Flow8230, %if.then.i.i.i.i.i.i.i1887 call void @llvm.amdgcn.end.cf.i64(i64 %2906) br label %loop-memcpy-residual-header5316, !amdgpu.uniform !42 loop-memcpy-expansion5313: ; preds = %loop-memcpy-expansion5313.preheader, %loop-memcpy-expansion5313 %phi.broken8689 = phi i64 [ 0, %loop-memcpy-expansion5313.preheader ], [ %2911, %loop-memcpy-expansion5313 ] %loop-index5314 = phi i64 [ %2909, %loop-memcpy-expansion5313 ], [ 0, %loop-memcpy-expansion5313.preheader ] %scevgep6710 = getelementptr i8, ptr addrspace(4) %lsr.iv6708, i64 %loop-index5314 %2907 = load <4 x i32>, ptr addrspace(4) %scevgep6710, align 1 %2908 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i1892, i64 %loop-index5314 store <4 x i32> %2907, ptr %2908, align 1 %2909 = add i64 %loop-index5314, 16 %2910 = icmp uge i64 %2909, %2902 %2911 = call i64 @llvm.amdgcn.if.break.i64(i1 %2910, i64 %phi.broken8689) %2912 = call i1 @llvm.amdgcn.loop.i64(i64 %2911) br i1 %2912, label %Flow8230, label %loop-memcpy-expansion5313 Flow8229: ; preds = %Flow8228, %loop-memcpy-residual-header5316 call void @llvm.amdgcn.end.cf.i64(i64 %6594) br label %Flow8232, !amdgpu.uniform !42 loop-memcpy-residual5315: ; preds = %loop-memcpy-residual5315.preheader, %loop-memcpy-residual5315 %phi.broken8690 = phi i64 [ 0, %loop-memcpy-residual5315.preheader ], [ %2916, %loop-memcpy-residual5315 ] %residual-loop-index5317 = phi i64 [ %2914, %loop-memcpy-residual5315 ], [ 0, %loop-memcpy-residual5315.preheader ] %scevgep6719 = getelementptr i8, ptr addrspace(4) %scevgep6718, i64 %residual-loop-index5317 %2913 = load i8, ptr addrspace(4) %scevgep6719, align 1 %scevgep6717 = getelementptr i8, ptr %scevgep6716, i64 %residual-loop-index5317 store i8 %2913, ptr %scevgep6717, align 1 %2914 = add i64 %residual-loop-index5317, 1 %2915 = icmp uge i64 %2914, %2901 %2916 = call i64 @llvm.amdgcn.if.break.i64(i1 %2915, i64 %phi.broken8690) %2917 = call i1 @llvm.amdgcn.loop.i64(i64 %2916) br i1 %2917, label %Flow8228, label %loop-memcpy-residual5315 Flow8228: ; preds = %loop-memcpy-residual5315 %.lcssa9058 = phi i64 [ %2916, %loop-memcpy-residual5315 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9058) br label %Flow8229, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1883: ; preds = %Flow8232 %conv.i.i26.i.i.i.i1884 = xor i32 %port.sroa.37.0.i.i1872, 1 fence release %2918 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i1885 = getelementptr inbounds nuw i32, ptr %2918, i64 %idxprom.i23.i.i.i.i.i1868 store atomic i32 %conv.i.i26.i.i.i.i1884, ptr %arrayidx.i24.i29.i.i.i.i1885 monotonic, align 4 %add.i.i.i.i1886 = add i64 %idx.0.i.i.i.i1873, 64 %scevgep6709 = getelementptr i8, ptr addrspace(4) %lsr.iv6708, i64 64 %lsr.iv.next6714 = add i64 %lsr.iv6713, -64 br label %Flow8235, !amdgpu.uniform !42 cond.false.i.i.i1893: ; preds = %Flow8235 %.lcssa9060 = phi i64 [ %2895, %Flow8235 ] %port.sroa.37.0.i.i1872.lcssa = phi i32 [ %port.sroa.37.0.i.i1872, %Flow8235 ] %.lcssa9059 = phi i32 [ %2876, %Flow8235 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9060) %2919 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa9059) %2920 = icmp ne i32 %2919, %port.sroa.37.0.i.i1872.lcssa %2921 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %2920) %2922 = extractvalue { i1, i64 } %2921, 0 %2923 = extractvalue { i1, i64 } %2921, 1 br i1 %2922, label %while.body.i.i.i.i1894.preheader, label %Flow8227 while.body.i.i.i.i1894.preheader: ; preds = %cond.false.i.i.i1893 br label %while.body.i.i.i.i1894, !amdgpu.uniform !42 Flow8227: ; preds = %Flow8226, %cond.false.i.i.i1893 call void @llvm.amdgcn.end.cf.i64(i64 %2923) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1915, !amdgpu.uniform !42 while.body.i.i.i.i1894: ; preds = %while.body.i.i.i.i1894.preheader, %while.body.i.i.i.i1894 %phi.broken8692 = phi i64 [ 0, %while.body.i.i.i.i1894.preheader ], [ %2927, %while.body.i.i.i.i1894 ] call void @llvm.amdgcn.s.sleep(i32 2) %2924 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i1895 = getelementptr inbounds nuw i32, ptr %2924, i64 %idxprom.i23.i.i.i.i.i1868 %2925 = load atomic i32, ptr %arrayidx.i.i.i8.i.i1895 monotonic, align 4 %2926 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2925) %cmp.i.not.i.i.i.i1896 = icmp eq i32 %2926, %port.sroa.37.0.i.i1872.lcssa %2927 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i1896, i64 %phi.broken8692) %2928 = call i1 @llvm.amdgcn.loop.i64(i64 %2927) br i1 %2928, label %Flow8226, label %while.body.i.i.i.i1894 Flow8226: ; preds = %while.body.i.i.i.i1894 %.lcssa9061 = phi i64 [ %2927, %while.body.i.i.i.i1894 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9061) br label %Flow8227, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1915: ; preds = %Flow8227 fence acquire call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %2929 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa9052, i1 true) %iszero.i.i.i.i.i13.i.i1898 = icmp ne i64 %.lcssa9052, 0 %cmp2.i.i.i.i14.i.i1899 = icmp eq i64 %2929, %sh_prom.i.i.i.i756 %cmp.i.i.i.i15.i.i1900 = select i1 %iszero.i.i.i.i.i13.i.i1898, i1 %cmp2.i.i.i.i14.i.i1899, i1 false %2930 = and i32 %.lcssa9053, 31 %conv4.i.i.i19.i.i1904 = zext i1 %cmp.i.i.i.i15.i.i1900 to i32 %shl.i.i.i20.i.i1905 = shl nuw i32 %conv4.i.i.i19.i.i1904, %2930 %xor.i.i.i21.i.i1906 = xor i32 %shl.i.i.i20.i.i1905, -1 %2931 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5706, !amdgpu.uniform !42 2932: ; preds = %ComputeEnd5707 %div8.i.i.i16.i.i1901 = lshr i32 %.lcssa9053, 5 %idxprom.i.i.i17.i.i1902 = zext nneg i32 %div8.i.i.i16.i.i1901 to i64 %2933 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i1902 %sunkaddr7422 = getelementptr inbounds i8, ptr addrspace(1) %2933, i64 40 %2934 = atomicrmw and ptr addrspace(1) %sunkaddr7422, i32 %.lcssa9062 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2935, !amdgpu.uniform !42 2935: ; preds = %2932, %ComputeEnd5707 call void @llvm.amdgcn.end.cf.i64(i64 %7714) call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i1.i1924, !amdgpu.uniform !42 for.cond.i.i1.i1924: ; preds = %2935, %Flow8225 %2936 = phi i32 [ %2973, %Flow8225 ], [ %1183, %2935 ] %2937 = phi i64 [ %2974, %Flow8225 ], [ %1184, %2935 ] %2938 = phi i32 [ %2975, %Flow8225 ], [ %1185, %2935 ] %retval.sroa.6.0.i.i.i1925 = phi i32 [ %2978, %Flow8225 ], [ undef, %2935 ] %retval.sroa.2.0.i.i.i1927 = phi i64 [ %2977, %Flow8225 ], [ undef, %2935 ] %retval.sroa.8.0.i.i.i1928 = phi i32 [ %2976, %Flow8225 ], [ undef, %2935 ] %index.0.i.i.i1929 = phi i32 [ %2980, %Flow8225 ], [ 0, %2935 ] %2939 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i1930 = icmp ult i32 %index.0.i.i.i1929, %2939 %spec.store.select.i.i.i1931 = select i1 %cmp.not.i.i.i1930, i32 %index.0.i.i.i1929, i32 0 %2940 = call i64 @llvm.amdgcn.ballot.i64(i1 true) %2941 = and i32 %spec.store.select.i.i.i1931, 31 %2942 = lshr i64 %2940, %sh_prom.i.i.i.i756 %2943 = trunc i64 %2942 to i32 %conv4.i.i.i.i.i1935 = and i32 %2943, 1 %shl.i.i.i.i.i1936 = shl nuw i32 %conv4.i.i.i.i.i1935, %2941 br label %ComputeLoop5710, !amdgpu.uniform !42 2944: ; preds = %ComputeEnd5711 %sunkaddr7423 = getelementptr inbounds i8, ptr addrspace(1) %7724, i64 40 %2945 = atomicrmw or ptr addrspace(1) %sunkaddr7423, i32 %.lcssa9063 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2946, !amdgpu.uniform !42 2946: ; preds = %2944, %ComputeEnd5711 %2947 = phi i32 [ %2945, %2944 ], [ poison, %ComputeEnd5711 ] call void @llvm.amdgcn.end.cf.i64(i64 %7733) %2948 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %2947) %2949 = or i32 %2948, %.lcssa9064 %shl5.i.i.i.i.i1937 = shl nuw i32 1, %2941 %and.i.i.i.i.i1938 = and i32 %shl5.i.i.i.i.i1937, %2949 %tobool3.i.i.i.i1939 = icmp ne i32 %and.i.i.i.i.i1938, 0 %2950 = call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i1939) %and.i.i.i.i.i.i1940 = and i64 %2950, %2940 %cmp.i.not.i.i.i1941 = icmp ne i64 %2940, %and.i.i.i.i.i.i1940 br i1 %cmp.i.not.i.i.i1941, label %if.then.i.i.i.i1942, label %Flow8224, !amdgpu.uniform !42 if.then.i.i.i.i1942: ; preds = %2946 fence syncscope("agent") acquire %2951 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %2952 = extractelement <2 x i64> %2951, i32 0 %2953 = inttoptr i64 %2952 to ptr %2954 = extractelement <2 x i64> %2951, i32 1 %2955 = inttoptr i64 %2954 to ptr %idxprom.i.i.i.i1943 = zext i32 %spec.store.select.i.i.i1931 to i64 %arrayidx.i.i.i.i1944 = getelementptr inbounds nuw i32, ptr %2953, i64 %idxprom.i.i.i.i1943, !amdgpu.uniform !42 %2956 = load atomic i32, ptr %arrayidx.i.i.i.i1944 monotonic, align 4 %2957 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2956) %arrayidx.i45.i.i.i1945 = getelementptr inbounds nuw i32, ptr %2955, i64 %idxprom.i.i.i.i1943, !amdgpu.uniform !42 %2958 = load atomic i32, ptr %arrayidx.i45.i.i.i1945 monotonic, align 4 %2959 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2958) %cmp.i46.not.i.i.i1946 = icmp ne i32 %2957, %2959 br i1 %cmp.i46.not.i.i.i1946, label %if.then12.i.i.i1947, label %Flow8222, !amdgpu.uniform !42 if.then12.i.i.i1947: ; preds = %if.then.i.i.i.i1942 fence syncscope("agent") release %2960 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %2940, i1 true) %iszero.i.i.i.i.i.i.i1948 = icmp ne i64 %2940, 0 %cmp2.i.i.i.i.i.i1949 = icmp eq i64 %2960, %sh_prom.i.i.i.i756 %cmp.i.i.i.i.i.i1950 = select i1 %iszero.i.i.i.i.i.i.i1948, i1 %cmp2.i.i.i.i.i.i1949, i1 false %conv4.i.i51.i.i.i1951 = zext i1 %cmp.i.i.i.i.i.i1950 to i32 %shl.i.i52.i.i.i1952 = shl nuw i32 %conv4.i.i51.i.i.i1951, %2941 %xor.i.i.i.i.i1953 = xor i32 %shl.i.i52.i.i.i1952, -1 %2961 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5715, !amdgpu.uniform !42 2962: ; preds = %ComputeEnd5716 %sunkaddr7424 = getelementptr inbounds i8, ptr addrspace(1) %7724, i64 40 %2963 = atomicrmw and ptr addrspace(1) %sunkaddr7424, i32 %.lcssa9065 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %2964, !amdgpu.uniform !42 2964: ; preds = %2962, %ComputeEnd5716 call void @llvm.amdgcn.end.cf.i64(i64 %7751) call void @llvm.amdgcn.wave.barrier() br label %Flow8222, !amdgpu.uniform !42 if.end14.i.i.i2013: ; preds = %Flow8222 %2965 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %2940, i1 true) %iszero.i.i.i.i.i.i2014 = icmp ne i64 %2940, 0 %cmp2.i.i.i.i.i2015 = icmp eq i64 %2965, %sh_prom.i.i.i.i756 %cmp.i.i.i.i.i2016 = select i1 %iszero.i.i.i.i.i.i2014, i1 %cmp2.i.i.i.i.i2015, i1 false %2966 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i2016) %2967 = extractvalue { i1, i64 } %2966, 0 %2968 = extractvalue { i1, i64 } %2966, 1 br i1 %2967, label %if.then16.i.i.i2018, label %if.end22.i.i.i2017 if.then16.i.i.i2018: ; preds = %if.end14.i.i.i2013 %2969 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i2019 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2969, i64 %idxprom.i.i.i.i1943, i32 1 store i32 1660944387, ptr %opcode.i.i.i2019, align 8, !tbaa !77 %arrayidx21.i.i.i2020 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2969, i64 %idxprom.i.i.i.i1943 store i64 %2940, ptr %arrayidx21.i.i.i2020, align 8, !tbaa !80 br label %if.end22.i.i.i2017, !amdgpu.uniform !42 Flow8223: ; preds = %if.end22.i.i.i2017, %Flow8222 %2970 = phi i32 [ %2957, %if.end22.i.i.i2017 ], [ %retval.sroa.8.0.i.i.i1928, %Flow8222 ] %2971 = phi i64 [ %2940, %if.end22.i.i.i2017 ], [ %retval.sroa.2.0.i.i.i1927, %Flow8222 ] %2972 = phi i32 [ %spec.store.select.i.i.i1931, %if.end22.i.i.i2017 ], [ %retval.sroa.6.0.i.i.i1925, %Flow8222 ] br label %cleanup26.i.i.i1954, !amdgpu.uniform !42 if.end22.i.i.i2017: ; preds = %if.then16.i.i.i2018, %if.end14.i.i.i2013 call void @llvm.amdgcn.end.cf.i64(i64 %2968) call void @llvm.amdgcn.wave.barrier() br label %Flow8223, !amdgpu.uniform !42 Flow8224: ; preds = %cleanup26.i.i.i1954, %2946 %2973 = phi i32 [ %2972, %cleanup26.i.i.i1954 ], [ %2936, %2946 ] %2974 = phi i64 [ %2971, %cleanup26.i.i.i1954 ], [ %2937, %2946 ] %2975 = phi i32 [ %2970, %cleanup26.i.i.i1954 ], [ %2938, %2946 ] %2976 = phi i32 [ %2970, %cleanup26.i.i.i1954 ], [ %retval.sroa.8.0.i.i.i1928, %2946 ] %2977 = phi i64 [ %2971, %cleanup26.i.i.i1954 ], [ %retval.sroa.2.0.i.i.i1927, %2946 ] %2978 = phi i32 [ %2972, %cleanup26.i.i.i1954 ], [ %retval.sroa.6.0.i.i.i1925, %2946 ] %2979 = phi i1 [ %cmp.i46.not.i.i.i1946, %cleanup26.i.i.i1954 ], [ true, %2946 ] br i1 %2979, label %for.inc.i.i.i1959, label %Flow8225, !amdgpu.uniform !42 cleanup26.i.i.i1954: ; preds = %Flow8223 br label %Flow8224, !amdgpu.uniform !42 for.inc.i.i.i1959: ; preds = %Flow8224 %inc.i.i.i1964 = add i32 %spec.store.select.i.i.i1931, 1 br label %Flow8225, !amdgpu.uniform !42 Flow8225: ; preds = %for.inc.i.i.i1959, %Flow8224 %2980 = phi i32 [ %inc.i.i.i1964, %for.inc.i.i.i1959 ], [ poison, %Flow8224 ] %2981 = phi i1 [ false, %for.inc.i.i.i1959 ], [ true, %Flow8224 ] br i1 %2981, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1965, label %for.cond.i.i1.i1924, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1965: ; preds = %Flow8225 %.lcssa9068 = phi i32 [ %2973, %Flow8225 ] %.lcssa9067 = phi i64 [ %2974, %Flow8225 ] %.lcssa9066 = phi i32 [ %2975, %Flow8225 ] fence acquire %2982 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i1966 = shl i32 %.lcssa9068, 6 %idxprom.i19.i.i.i.i.i1967 = zext i32 %mul.i.i.i.i.i.i1966 to i64 %arrayidx.i20.i.i.i.i.i1968 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %2982, i64 %idxprom.i19.i.i.i.i.i1967 %arrayidx.i22.i.i.i.i.i1969 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i1968, i64 %sh_prom.i.i.i.i756 store i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.19.36 to ptr), i64 13) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.19.36 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i1969, align 8, !tbaa !82 br i1 %1114, label %loop-memcpy-expansion5319.preheader, label %Flow8221, !amdgpu.uniform !42 loop-memcpy-expansion5319.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1965 %scevgep6720 = getelementptr i8, ptr %2982, i64 8 %scevgep6721 = getelementptr i8, ptr %scevgep6720, i64 %1474 %2983 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1967, 6 %scevgep6722 = getelementptr i8, ptr %scevgep6721, i64 %2983 br label %loop-memcpy-expansion5319, !amdgpu.uniform !42 Flow8221: ; preds = %Flow8220, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i1965 br label %loop-memcpy-residual-header5322, !amdgpu.uniform !42 loop-memcpy-expansion5319: ; preds = %loop-memcpy-expansion5319.preheader, %loop-memcpy-expansion5319 %loop-index5320 = phi i64 [ %2986, %loop-memcpy-expansion5319 ], [ 0, %loop-memcpy-expansion5319.preheader ] %2984 = getelementptr i8, ptr addrspace(4) @.str.19.36, i64 %loop-index5320, !amdgpu.uniform !42 %2985 = load <4 x i32>, ptr addrspace(4) %2984, align 1 %scevgep6723 = getelementptr i8, ptr %scevgep6722, i64 %loop-index5320 store <4 x i32> %2985, ptr %scevgep6723, align 1 %2986 = add i64 %loop-index5320, 16 %2987 = icmp uge i64 %2986, %1113 br i1 %2987, label %Flow8220, label %loop-memcpy-expansion5319, !amdgpu.uniform !42 Flow8219: ; preds = %Flow8217, %Flow8218 %2988 = phi i64 [ %6599, %Flow8217 ], [ %6597, %Flow8218 ] br label %post-loop-memcpy-expansion5318, !amdgpu.uniform !42 loop-memcpy-residual5321: ; preds = %loop-memcpy-residual5321.preheader, %loop-memcpy-residual5321 %residual-loop-index5323 = phi i64 [ %2990, %loop-memcpy-residual5321 ], [ 0, %loop-memcpy-residual5321.preheader ] %scevgep6728 = getelementptr i8, ptr addrspace(4) @.str.19.36, i64 %residual-loop-index5323, !amdgpu.uniform !42 %2989 = load i8, ptr addrspace(4) %scevgep6728, align 1 %scevgep6727 = getelementptr i8, ptr %scevgep6726, i64 %residual-loop-index5323 store i8 %2989, ptr %scevgep6727, align 1 %2990 = add i64 %residual-loop-index5323, 1 %2991 = icmp uge i64 %2990, %1112 br i1 %2991, label %Flow8217, label %loop-memcpy-residual5321, !amdgpu.uniform !42 Flow8217: ; preds = %loop-memcpy-residual5321 br label %Flow8219, !amdgpu.uniform !42 post-loop-memcpy-expansion5318: ; preds = %Flow8219 %tobool.not.i.i.i.i.i.i1972 = icmp eq i32 %.lcssa9066, 0 %conv.i.i.i.i.i.i1973 = zext i1 %tobool.not.i.i.i.i.i.i1972 to i32 fence release %2992 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i1974 = zext i32 %.lcssa9068 to i64 %arrayidx.i24.i.i.i.i.i1975 = getelementptr inbounds nuw i32, ptr %2992, i64 %idxprom.i23.i.i.i.i.i1974 store atomic i32 %conv.i.i.i.i.i.i1973, ptr %arrayidx.i24.i.i.i.i.i1975 monotonic, align 4 %2993 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i1976 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %2993, i64 %idxprom.i23.i.i.i.i.i1974 %2994 = load i64, ptr %arrayidx.i.i5.i.i1976, align 8, !tbaa !80 br label %while.cond.i.i.i.i1977, !amdgpu.uniform !42 while.cond.i.i.i.i1977: ; preds = %post-loop-memcpy-expansion5318, %Flow8216 %phi.broken8694 = phi i64 [ 0, %post-loop-memcpy-expansion5318 ], [ %3016, %Flow8216 ] %lsr.iv6734 = phi i64 [ %3014, %Flow8216 ], [ -43, %post-loop-memcpy-expansion5318 ] %lsr.iv6729 = phi ptr addrspace(4) [ %3013, %Flow8216 ], [ getelementptr (i8, ptr addrspace(4) @.str.19.36, i64 56), %post-loop-memcpy-expansion5318 ] %port.sroa.37.0.i.i1978 = phi i32 [ %3012, %Flow8216 ], [ %conv.i.i.i.i.i.i1973, %post-loop-memcpy-expansion5318 ] %idx.0.i.i.i.i1979 = phi i64 [ %3011, %Flow8216 ], [ 56, %post-loop-memcpy-expansion5318 ] %cmp.i.i.i.i1980 = icmp ult i64 %idx.0.i.i.i.i1979, sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.19.36 to ptr), i64 13) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.19.36 to ptr) to i64)) %2995 = call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i1980) %and.i.i.i.i6.i.i1981 = and i64 %2995, %2994 %tobool.not.i.i.i.i1982 = icmp ne i64 %and.i.i.i.i6.i.i1981, 0 %2996 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i1983 = getelementptr inbounds nuw i32, ptr %2996, i64 %idxprom.i23.i.i.i.i.i1974 %2997 = load atomic i32, ptr %arrayidx.i22.i.i.i1983 monotonic, align 4 %2998 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i1982) %2999 = extractvalue { i1, i64 } %2998, 0 %3000 = extractvalue { i1, i64 } %2998, 1 br i1 %2999, label %cond.false.i8.i.i.i.i1984, label %Flow8216 cond.false.i8.i.i.i.i1984: ; preds = %while.cond.i.i.i.i1977 %3001 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %2997) %3002 = icmp ne i32 %3001, %port.sroa.37.0.i.i1978 %3003 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3002) %3004 = extractvalue { i1, i64 } %3003, 0 %3005 = extractvalue { i1, i64 } %3003, 1 br i1 %3004, label %while.body.i.i21.i.i.i.i1985.preheader, label %Flow8215 while.body.i.i21.i.i.i.i1985.preheader: ; preds = %cond.false.i8.i.i.i.i1984 br label %while.body.i.i21.i.i.i.i1985, !amdgpu.uniform !42 Flow8215: ; preds = %Flow8214, %cond.false.i8.i.i.i.i1984 call void @llvm.amdgcn.end.cf.i64(i64 %3005) br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1988, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i1985: ; preds = %while.body.i.i21.i.i.i.i1985.preheader, %while.body.i.i21.i.i.i.i1985 %phi.broken8693 = phi i64 [ 0, %while.body.i.i21.i.i.i.i1985.preheader ], [ %3009, %while.body.i.i21.i.i.i.i1985 ] call void @llvm.amdgcn.s.sleep(i32 2) %3006 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i1986 = getelementptr inbounds nuw i32, ptr %3006, i64 %idxprom.i23.i.i.i.i.i1974 %3007 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i1986 monotonic, align 4 %3008 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %3007) %cmp.i.not.i.i23.i.i.i.i1987 = icmp eq i32 %3008, %port.sroa.37.0.i.i1978 %3009 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i23.i.i.i.i1987, i64 %phi.broken8693) %3010 = call i1 @llvm.amdgcn.loop.i64(i64 %3009) br i1 %3010, label %Flow8214, label %while.body.i.i21.i.i.i.i1985 Flow8214: ; preds = %while.body.i.i21.i.i.i.i1985 %.lcssa9069 = phi i64 [ %3009, %while.body.i.i21.i.i.i.i1985 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9069) br label %Flow8215, !amdgpu.uniform !42 Flow8216: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1989, %while.cond.i.i.i.i1977 %3011 = phi i64 [ %add.i.i.i.i1992, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1989 ], [ poison, %while.cond.i.i.i.i1977 ] %3012 = phi i32 [ %conv.i.i26.i.i.i.i1990, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1989 ], [ poison, %while.cond.i.i.i.i1977 ] %3013 = phi ptr addrspace(4) [ %scevgep6730, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1989 ], [ poison, %while.cond.i.i.i.i1977 ] %3014 = phi i64 [ %lsr.iv.next6735, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1989 ], [ poison, %while.cond.i.i.i.i1977 ] %3015 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1989 ], [ true, %while.cond.i.i.i.i1977 ] call void @llvm.amdgcn.end.cf.i64(i64 %3000) %3016 = call i64 @llvm.amdgcn.if.break.i64(i1 %3015, i64 %phi.broken8694) %3017 = call i1 @llvm.amdgcn.loop.i64(i64 %3016) br i1 %3017, label %cond.false.i.i.i1999, label %while.cond.i.i.i.i1977 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1988: ; preds = %Flow8215 fence acquire br i1 %cmp.i.i.i.i1980, label %if.then.i.i.i.i.i.i.i1993, label %Flow8213, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i1993: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1988 %sub.i.i.i.i.i.i.i1995 = sub nuw i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.19.36 to ptr), i64 13) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.19.36 to ptr) to i64)), %idx.0.i.i.i.i1979 %spec.select.i.i.i36.i.i.i.i1996 = call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i1995, i64 64) %3018 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %3019 = and i64 %spec.select.i.i.i36.i.i.i.i1996, 15 %3020 = sub i64 %spec.select.i.i.i36.i.i.i.i1996, %3019 %3021 = icmp ne i64 %3020, 0 br i1 %3021, label %loop-memcpy-expansion5325.preheader, label %Flow8212, !amdgpu.uniform !42 loop-memcpy-expansion5325.preheader: ; preds = %if.then.i.i.i.i.i.i.i1993 %arrayidx.i20.i35.i.i.i.i1997 = getelementptr %"struct.rpc::Buffer", ptr %3018, i64 %idxprom.i19.i.i.i.i.i1967 %arrayidx.i22.i38.i.i.i.i1998 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i1997, i64 %sh_prom.i.i.i.i756 br label %loop-memcpy-expansion5325, !amdgpu.uniform !42 Flow8212: ; preds = %Flow8211, %if.then.i.i.i.i.i.i.i1993 br label %loop-memcpy-residual-header5328, !amdgpu.uniform !42 loop-memcpy-expansion5325: ; preds = %loop-memcpy-expansion5325.preheader, %loop-memcpy-expansion5325 %loop-index5326 = phi i64 [ %3024, %loop-memcpy-expansion5325 ], [ 0, %loop-memcpy-expansion5325.preheader ] %scevgep6731 = getelementptr i8, ptr addrspace(4) %lsr.iv6729, i64 %loop-index5326, !amdgpu.uniform !42 %3022 = load <4 x i32>, ptr addrspace(4) %scevgep6731, align 1 %3023 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i1998, i64 %loop-index5326 store <4 x i32> %3022, ptr %3023, align 1 %3024 = add i64 %loop-index5326, 16 %3025 = icmp uge i64 %3024, %3020 br i1 %3025, label %Flow8211, label %loop-memcpy-expansion5325, !amdgpu.uniform !42 Flow8210: ; preds = %Flow8209, %loop-memcpy-residual-header5328 br label %Flow8213, !amdgpu.uniform !42 loop-memcpy-residual5327: ; preds = %loop-memcpy-residual5327.preheader, %loop-memcpy-residual5327 %residual-loop-index5329 = phi i64 [ %3027, %loop-memcpy-residual5327 ], [ 0, %loop-memcpy-residual5327.preheader ] %scevgep6740 = getelementptr i8, ptr addrspace(4) %scevgep6739, i64 %residual-loop-index5329, !amdgpu.uniform !42 %3026 = load i8, ptr addrspace(4) %scevgep6740, align 1 %scevgep6738 = getelementptr i8, ptr %scevgep6737, i64 %residual-loop-index5329 store i8 %3026, ptr %scevgep6738, align 1 %3027 = add i64 %residual-loop-index5329, 1 %3028 = icmp uge i64 %3027, %3019 br i1 %3028, label %Flow8209, label %loop-memcpy-residual5327, !amdgpu.uniform !42 Flow8209: ; preds = %loop-memcpy-residual5327 br label %Flow8210, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1989: ; preds = %Flow8213 %conv.i.i26.i.i.i.i1990 = xor i32 %port.sroa.37.0.i.i1978, 1 fence release %3029 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i1991 = getelementptr inbounds nuw i32, ptr %3029, i64 %idxprom.i23.i.i.i.i.i1974 store atomic i32 %conv.i.i26.i.i.i.i1990, ptr %arrayidx.i24.i29.i.i.i.i1991 monotonic, align 4 %add.i.i.i.i1992 = add i64 %idx.0.i.i.i.i1979, 64 %scevgep6730 = getelementptr i8, ptr addrspace(4) %lsr.iv6729, i64 64 %lsr.iv.next6735 = add i64 %lsr.iv6734, -64 br label %Flow8216, !amdgpu.uniform !42 cond.false.i.i.i1999: ; preds = %Flow8216 %.lcssa9071 = phi i64 [ %3016, %Flow8216 ] %port.sroa.37.0.i.i1978.lcssa = phi i32 [ %port.sroa.37.0.i.i1978, %Flow8216 ] %.lcssa9070 = phi i32 [ %2997, %Flow8216 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9071) %3030 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa9070) %3031 = icmp ne i32 %3030, %port.sroa.37.0.i.i1978.lcssa %3032 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3031) %3033 = extractvalue { i1, i64 } %3032, 0 %3034 = extractvalue { i1, i64 } %3032, 1 br i1 %3033, label %while.body.i.i.i.i2000.preheader, label %Flow8208 while.body.i.i.i.i2000.preheader: ; preds = %cond.false.i.i.i1999 br label %while.body.i.i.i.i2000, !amdgpu.uniform !42 Flow8208: ; preds = %Flow8207, %cond.false.i.i.i1999 call void @llvm.amdgcn.end.cf.i64(i64 %3034) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit2021, !amdgpu.uniform !42 while.body.i.i.i.i2000: ; preds = %while.body.i.i.i.i2000.preheader, %while.body.i.i.i.i2000 %phi.broken8695 = phi i64 [ 0, %while.body.i.i.i.i2000.preheader ], [ %3038, %while.body.i.i.i.i2000 ] call void @llvm.amdgcn.s.sleep(i32 2) %3035 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i2001 = getelementptr inbounds nuw i32, ptr %3035, i64 %idxprom.i23.i.i.i.i.i1974 %3036 = load atomic i32, ptr %arrayidx.i.i.i8.i.i2001 monotonic, align 4 %3037 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %3036) %cmp.i.not.i.i.i.i2002 = icmp eq i32 %3037, %port.sroa.37.0.i.i1978.lcssa %3038 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i2002, i64 %phi.broken8695) %3039 = call i1 @llvm.amdgcn.loop.i64(i64 %3038) br i1 %3039, label %Flow8207, label %while.body.i.i.i.i2000 Flow8207: ; preds = %while.body.i.i.i.i2000 %.lcssa9072 = phi i64 [ %3038, %while.body.i.i.i.i2000 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9072) br label %Flow8208, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit2021: ; preds = %Flow8208 fence acquire call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %3040 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa9067, i1 true) %iszero.i.i.i.i.i13.i.i2004 = icmp ne i64 %.lcssa9067, 0 %cmp2.i.i.i.i14.i.i2005 = icmp eq i64 %3040, %sh_prom.i.i.i.i756 %cmp.i.i.i.i15.i.i2006 = select i1 %iszero.i.i.i.i.i13.i.i2004, i1 %cmp2.i.i.i.i14.i.i2005, i1 false %3041 = and i32 %.lcssa9068, 31 %conv4.i.i.i19.i.i2010 = zext i1 %cmp.i.i.i.i15.i.i2006 to i32 %shl.i.i.i20.i.i2011 = shl nuw i32 %conv4.i.i.i19.i.i2010, %3041 %xor.i.i.i21.i.i2012 = xor i32 %shl.i.i.i20.i.i2011, -1 %3042 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5719, !amdgpu.uniform !42 3043: ; preds = %ComputeEnd5720 %div8.i.i.i16.i.i2007 = lshr i32 %.lcssa9068, 5 %idxprom.i.i.i17.i.i2008 = zext nneg i32 %div8.i.i.i16.i.i2007 to i64 %3044 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i2008 %sunkaddr7425 = getelementptr inbounds i8, ptr addrspace(1) %3044, i64 40 %3045 = atomicrmw and ptr addrspace(1) %sunkaddr7425, i32 %.lcssa9073 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %3046, !amdgpu.uniform !42 3046: ; preds = %3043, %ComputeEnd5720 call void @llvm.amdgcn.end.cf.i64(i64 %7768) call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i.i2022, !amdgpu.uniform !42 for.cond.i.i.i2022: ; preds = %3046, %for.cond.i.i.i2022 %phi.broken8696 = phi i64 [ 0, %3046 ], [ %3048, %for.cond.i.i.i2022 ] %lsr.iv6741 = phi ptr addrspace(4) [ %scevgep6743, %for.cond.i.i.i2022 ], [ %scevgep6634, %3046 ] %scevgep6743 = getelementptr i8, ptr addrspace(4) %lsr.iv6741, i64 1 %3047 = load i8, ptr addrspace(4) %scevgep6743, align 1, !tbaa !57 %cmp.i.i.i2024 = icmp eq i8 %3047, 0 %3048 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.i.i2024, i64 %phi.broken8696) %3049 = call i1 @llvm.amdgcn.loop.i64(i64 %3048) br i1 %3049, label %for.cond.i.i1.i2031.preheader, label %for.cond.i.i.i2022 for.cond.i.i1.i2031.preheader: ; preds = %for.cond.i.i.i2022 %scevgep6743.lcssa = phi ptr addrspace(4) [ %scevgep6743, %for.cond.i.i.i2022 ] %.lcssa9074 = phi i64 [ %3048, %for.cond.i.i.i2022 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9074) br label %for.cond.i.i1.i2031, !amdgpu.uniform !42 for.cond.i.i1.i2031: ; preds = %for.cond.i.i1.i2031.preheader, %Flow8206 %3050 = phi i32 [ %3087, %Flow8206 ], [ %1186, %for.cond.i.i1.i2031.preheader ] %3051 = phi i64 [ %3088, %Flow8206 ], [ %1187, %for.cond.i.i1.i2031.preheader ] %3052 = phi i32 [ %3089, %Flow8206 ], [ %1188, %for.cond.i.i1.i2031.preheader ] %retval.sroa.6.0.i.i.i2032 = phi i32 [ %3092, %Flow8206 ], [ undef, %for.cond.i.i1.i2031.preheader ] %retval.sroa.2.0.i.i.i2034 = phi i64 [ %3091, %Flow8206 ], [ undef, %for.cond.i.i1.i2031.preheader ] %retval.sroa.8.0.i.i.i2035 = phi i32 [ %3090, %Flow8206 ], [ undef, %for.cond.i.i1.i2031.preheader ] %index.0.i.i.i2036 = phi i32 [ %3094, %Flow8206 ], [ 0, %for.cond.i.i1.i2031.preheader ] %3053 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i2037 = icmp ult i32 %index.0.i.i.i2036, %3053 %spec.store.select.i.i.i2038 = select i1 %cmp.not.i.i.i2037, i32 %index.0.i.i.i2036, i32 0 %3054 = call i64 @llvm.amdgcn.ballot.i64(i1 true) %3055 = and i32 %spec.store.select.i.i.i2038, 31 %3056 = lshr i64 %3054, %sh_prom.i.i.i.i756 %3057 = trunc i64 %3056 to i32 %conv4.i.i.i.i.i2042 = and i32 %3057, 1 %shl.i.i.i.i.i2043 = shl nuw i32 %conv4.i.i.i.i.i2042, %3055 br label %ComputeLoop5723, !amdgpu.uniform !42 3058: ; preds = %ComputeEnd5724 %sunkaddr7426 = getelementptr inbounds i8, ptr addrspace(1) %7778, i64 40 %3059 = atomicrmw or ptr addrspace(1) %sunkaddr7426, i32 %.lcssa9075 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %3060, !amdgpu.uniform !42 3060: ; preds = %3058, %ComputeEnd5724 %3061 = phi i32 [ %3059, %3058 ], [ poison, %ComputeEnd5724 ] call void @llvm.amdgcn.end.cf.i64(i64 %7787) %3062 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %3061) %3063 = or i32 %3062, %.lcssa9076 %shl5.i.i.i.i.i2044 = shl nuw i32 1, %3055 %and.i.i.i.i.i2045 = and i32 %shl5.i.i.i.i.i2044, %3063 %tobool3.i.i.i.i2046 = icmp ne i32 %and.i.i.i.i.i2045, 0 %3064 = call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i2046) %and.i.i.i.i.i.i2047 = and i64 %3064, %3054 %cmp.i.not.i.i.i2048 = icmp ne i64 %3054, %and.i.i.i.i.i.i2047 br i1 %cmp.i.not.i.i.i2048, label %if.then.i.i.i.i2049, label %Flow8205, !amdgpu.uniform !42 if.then.i.i.i.i2049: ; preds = %3060 fence syncscope("agent") acquire %3065 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %3066 = extractelement <2 x i64> %3065, i32 0 %3067 = inttoptr i64 %3066 to ptr %3068 = extractelement <2 x i64> %3065, i32 1 %3069 = inttoptr i64 %3068 to ptr %idxprom.i.i.i.i2050 = zext i32 %spec.store.select.i.i.i2038 to i64 %arrayidx.i.i.i.i2051 = getelementptr inbounds nuw i32, ptr %3067, i64 %idxprom.i.i.i.i2050, !amdgpu.uniform !42 %3070 = load atomic i32, ptr %arrayidx.i.i.i.i2051 monotonic, align 4 %3071 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %3070) %arrayidx.i45.i.i.i2052 = getelementptr inbounds nuw i32, ptr %3069, i64 %idxprom.i.i.i.i2050, !amdgpu.uniform !42 %3072 = load atomic i32, ptr %arrayidx.i45.i.i.i2052 monotonic, align 4 %3073 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %3072) %cmp.i46.not.i.i.i2053 = icmp ne i32 %3071, %3073 br i1 %cmp.i46.not.i.i.i2053, label %if.then12.i.i.i2054, label %Flow8203, !amdgpu.uniform !42 if.then12.i.i.i2054: ; preds = %if.then.i.i.i.i2049 fence syncscope("agent") release %3074 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %3054, i1 true) %iszero.i.i.i.i.i.i.i2055 = icmp ne i64 %3054, 0 %cmp2.i.i.i.i.i.i2056 = icmp eq i64 %3074, %sh_prom.i.i.i.i756 %cmp.i.i.i.i.i.i2057 = select i1 %iszero.i.i.i.i.i.i.i2055, i1 %cmp2.i.i.i.i.i.i2056, i1 false %conv4.i.i51.i.i.i2058 = zext i1 %cmp.i.i.i.i.i.i2057 to i32 %shl.i.i52.i.i.i2059 = shl nuw i32 %conv4.i.i51.i.i.i2058, %3055 %xor.i.i.i.i.i2060 = xor i32 %shl.i.i52.i.i.i2059, -1 %3075 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5728, !amdgpu.uniform !42 3076: ; preds = %ComputeEnd5729 %sunkaddr7427 = getelementptr inbounds i8, ptr addrspace(1) %7778, i64 40 %3077 = atomicrmw and ptr addrspace(1) %sunkaddr7427, i32 %.lcssa9077 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %3078, !amdgpu.uniform !42 3078: ; preds = %3076, %ComputeEnd5729 call void @llvm.amdgcn.end.cf.i64(i64 %7805) call void @llvm.amdgcn.wave.barrier() br label %Flow8203, !amdgpu.uniform !42 if.end14.i.i.i2120: ; preds = %Flow8203 %3079 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %3054, i1 true) %iszero.i.i.i.i.i.i2121 = icmp ne i64 %3054, 0 %cmp2.i.i.i.i.i2122 = icmp eq i64 %3079, %sh_prom.i.i.i.i756 %cmp.i.i.i.i.i2123 = select i1 %iszero.i.i.i.i.i.i2121, i1 %cmp2.i.i.i.i.i2122, i1 false %3080 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i2123) %3081 = extractvalue { i1, i64 } %3080, 0 %3082 = extractvalue { i1, i64 } %3080, 1 br i1 %3081, label %if.then16.i.i.i2125, label %if.end22.i.i.i2124 if.then16.i.i.i2125: ; preds = %if.end14.i.i.i2120 %3083 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i2126 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %3083, i64 %idxprom.i.i.i.i2050, i32 1 store i32 1660944387, ptr %opcode.i.i.i2126, align 8, !tbaa !77 %arrayidx21.i.i.i2127 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %3083, i64 %idxprom.i.i.i.i2050 store i64 %3054, ptr %arrayidx21.i.i.i2127, align 8, !tbaa !80 br label %if.end22.i.i.i2124, !amdgpu.uniform !42 Flow8204: ; preds = %if.end22.i.i.i2124, %Flow8203 %3084 = phi i32 [ %3071, %if.end22.i.i.i2124 ], [ %retval.sroa.8.0.i.i.i2035, %Flow8203 ] %3085 = phi i64 [ %3054, %if.end22.i.i.i2124 ], [ %retval.sroa.2.0.i.i.i2034, %Flow8203 ] %3086 = phi i32 [ %spec.store.select.i.i.i2038, %if.end22.i.i.i2124 ], [ %retval.sroa.6.0.i.i.i2032, %Flow8203 ] br label %cleanup26.i.i.i2061, !amdgpu.uniform !42 if.end22.i.i.i2124: ; preds = %if.then16.i.i.i2125, %if.end14.i.i.i2120 call void @llvm.amdgcn.end.cf.i64(i64 %3082) call void @llvm.amdgcn.wave.barrier() br label %Flow8204, !amdgpu.uniform !42 Flow8205: ; preds = %cleanup26.i.i.i2061, %3060 %3087 = phi i32 [ %3086, %cleanup26.i.i.i2061 ], [ %3050, %3060 ] %3088 = phi i64 [ %3085, %cleanup26.i.i.i2061 ], [ %3051, %3060 ] %3089 = phi i32 [ %3084, %cleanup26.i.i.i2061 ], [ %3052, %3060 ] %3090 = phi i32 [ %3084, %cleanup26.i.i.i2061 ], [ %retval.sroa.8.0.i.i.i2035, %3060 ] %3091 = phi i64 [ %3085, %cleanup26.i.i.i2061 ], [ %retval.sroa.2.0.i.i.i2034, %3060 ] %3092 = phi i32 [ %3086, %cleanup26.i.i.i2061 ], [ %retval.sroa.6.0.i.i.i2032, %3060 ] %3093 = phi i1 [ %cmp.i46.not.i.i.i2053, %cleanup26.i.i.i2061 ], [ true, %3060 ] br i1 %3093, label %for.inc.i.i.i2066, label %Flow8206, !amdgpu.uniform !42 cleanup26.i.i.i2061: ; preds = %Flow8204 br label %Flow8205, !amdgpu.uniform !42 for.inc.i.i.i2066: ; preds = %Flow8205 %inc.i.i.i2071 = add i32 %spec.store.select.i.i.i2038, 1 br label %Flow8206, !amdgpu.uniform !42 Flow8206: ; preds = %for.inc.i.i.i2066, %Flow8205 %3094 = phi i32 [ %inc.i.i.i2071, %for.inc.i.i.i2066 ], [ poison, %Flow8205 ] %3095 = phi i1 [ false, %for.inc.i.i.i2066 ], [ true, %Flow8205 ] br i1 %3095, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2072, label %for.cond.i.i1.i2031, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2072: ; preds = %Flow8206 %.lcssa9080 = phi i32 [ %3087, %Flow8206 ] %.lcssa9079 = phi i64 [ %3088, %Flow8206 ] %.lcssa9078 = phi i32 [ %3089, %Flow8206 ] %3096 = addrspacecast ptr addrspace(4) %scevgep6743.lcssa to ptr %3097 = addrspacecast ptr addrspace(4) %cond6 to ptr %3098 = ptrtoint ptr %3097 to i64 %sub.ptr.lhs.cast.i.i.i2027 = ptrtoint ptr %3096 to i64 %sub.ptr.sub.i.i.i2029 = sub i64 %sub.ptr.lhs.cast.i.i.i2027, %3098 fence acquire %3099 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i2073 = shl i32 %.lcssa9080, 6 %idxprom.i19.i.i.i.i.i2074 = zext i32 %mul.i.i.i.i.i.i2073 to i64 %arrayidx.i20.i.i.i.i.i2075 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %3099, i64 %idxprom.i19.i.i.i.i.i2074 %arrayidx.i22.i.i.i.i.i2076 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i2075, i64 %sh_prom.i.i.i.i756 store i64 %sub.ptr.sub.i.i.i2029, ptr %arrayidx.i22.i.i.i.i.i2076, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i2077 = call i64 @llvm.umin.i64(i64 %sub.ptr.sub.i.i.i2029, i64 56) %3100 = and i64 %spec.select.i.i.i.i.i.i.i2077, 15 %3101 = sub i64 %spec.select.i.i.i.i.i.i.i2077, %3100 %3102 = icmp ne i64 %3101, 0 %3103 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3102) %3104 = extractvalue { i1, i64 } %3103, 0 %3105 = extractvalue { i1, i64 } %3103, 1 br i1 %3104, label %loop-memcpy-expansion5199.preheader, label %Flow8202 loop-memcpy-expansion5199.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2072 %scevgep6744 = getelementptr i8, ptr %3099, i64 8 %scevgep6745 = getelementptr i8, ptr %scevgep6744, i64 %1474 %3106 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i2074, 6 %scevgep6746 = getelementptr i8, ptr %scevgep6745, i64 %3106 br label %loop-memcpy-expansion5199, !amdgpu.uniform !42 Flow8202: ; preds = %Flow8201, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2072 call void @llvm.amdgcn.end.cf.i64(i64 %3105) br label %loop-memcpy-residual-header5202, !amdgpu.uniform !42 loop-memcpy-expansion5199: ; preds = %loop-memcpy-expansion5199.preheader, %loop-memcpy-expansion5199 %phi.broken8697 = phi i64 [ 0, %loop-memcpy-expansion5199.preheader ], [ %3111, %loop-memcpy-expansion5199 ] %loop-index5200 = phi i64 [ %3109, %loop-memcpy-expansion5199 ], [ 0, %loop-memcpy-expansion5199.preheader ] %3107 = getelementptr i8, ptr addrspace(4) %cond6, i64 %loop-index5200 %3108 = load <4 x i32>, ptr addrspace(4) %3107, align 1 %scevgep6747 = getelementptr i8, ptr %scevgep6746, i64 %loop-index5200 store <4 x i32> %3108, ptr %scevgep6747, align 1 %3109 = add i64 %loop-index5200, 16 %3110 = icmp uge i64 %3109, %3101 %3111 = call i64 @llvm.amdgcn.if.break.i64(i1 %3110, i64 %phi.broken8697) %3112 = call i1 @llvm.amdgcn.loop.i64(i64 %3111) br i1 %3112, label %Flow8201, label %loop-memcpy-expansion5199 Flow8200: ; preds = %Flow8198, %Flow8199 %3113 = phi i64 [ %6508, %Flow8198 ], [ %6503, %Flow8199 ] call void @llvm.amdgcn.end.cf.i64(i64 %6506) br label %post-loop-memcpy-expansion5198, !amdgpu.uniform !42 loop-memcpy-residual5201: ; preds = %loop-memcpy-residual5201.preheader, %loop-memcpy-residual5201 %phi.broken8698 = phi i64 [ 0, %loop-memcpy-residual5201.preheader ], [ %3117, %loop-memcpy-residual5201 ] %residual-loop-index5203 = phi i64 [ %3115, %loop-memcpy-residual5201 ], [ 0, %loop-memcpy-residual5201.preheader ] %scevgep6753 = getelementptr i8, ptr addrspace(4) %scevgep6752, i64 %residual-loop-index5203 %3114 = load i8, ptr addrspace(4) %scevgep6753, align 1 %scevgep6751 = getelementptr i8, ptr %scevgep6750, i64 %residual-loop-index5203 store i8 %3114, ptr %scevgep6751, align 1 %3115 = add i64 %residual-loop-index5203, 1 %3116 = icmp uge i64 %3115, %3100 %3117 = call i64 @llvm.amdgcn.if.break.i64(i1 %3116, i64 %phi.broken8698) %3118 = call i1 @llvm.amdgcn.loop.i64(i64 %3117) br i1 %3118, label %Flow8198, label %loop-memcpy-residual5201 Flow8198: ; preds = %loop-memcpy-residual5201 %.lcssa9082 = phi i64 [ %3117, %loop-memcpy-residual5201 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9082) br label %Flow8200, !amdgpu.uniform !42 post-loop-memcpy-expansion5198: ; preds = %Flow8200 %3119 = addrspacecast ptr addrspace(4) %scevgep6743.lcssa to ptr %3120 = ptrtoint ptr %3119 to i64 %tobool.not.i.i.i.i.i.i2079 = icmp eq i32 %.lcssa9078, 0 %conv.i.i.i.i.i.i2080 = zext i1 %tobool.not.i.i.i.i.i.i2079 to i32 fence release %3121 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i2081 = zext i32 %.lcssa9080 to i64 %arrayidx.i24.i.i.i.i.i2082 = getelementptr inbounds nuw i32, ptr %3121, i64 %idxprom.i23.i.i.i.i.i2081 store atomic i32 %conv.i.i.i.i.i.i2080, ptr %arrayidx.i24.i.i.i.i.i2082 monotonic, align 4 %3122 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i2083 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %3122, i64 %idxprom.i23.i.i.i.i.i2081 %3123 = load i64, ptr %arrayidx.i.i5.i.i2083, align 8, !tbaa !80 %3124 = add i64 %1141, %3120 br label %while.cond.i.i.i.i2084, !amdgpu.uniform !42 while.cond.i.i.i.i2084: ; preds = %post-loop-memcpy-expansion5198, %Flow8197 %phi.broken8702 = phi i64 [ 0, %post-loop-memcpy-expansion5198 ], [ %3146, %Flow8197 ] %lsr.iv6759 = phi i64 [ %3144, %Flow8197 ], [ %3124, %post-loop-memcpy-expansion5198 ] %lsr.iv6754 = phi ptr addrspace(4) [ %3143, %Flow8197 ], [ %scevgep6648, %post-loop-memcpy-expansion5198 ] %port.sroa.37.0.i.i2085 = phi i32 [ %3142, %Flow8197 ], [ %conv.i.i.i.i.i.i2080, %post-loop-memcpy-expansion5198 ] %idx.0.i.i.i.i2086 = phi i64 [ %3141, %Flow8197 ], [ 56, %post-loop-memcpy-expansion5198 ] %cmp.i.i.i.i2087 = icmp ugt i64 %sub.ptr.sub.i.i.i2029, %idx.0.i.i.i.i2086 %3125 = call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i2087) %and.i.i.i.i6.i.i2088 = and i64 %3125, %3123 %tobool.not.i.i.i.i2089 = icmp ne i64 %and.i.i.i.i6.i.i2088, 0 %3126 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i2090 = getelementptr inbounds nuw i32, ptr %3126, i64 %idxprom.i23.i.i.i.i.i2081 %3127 = load atomic i32, ptr %arrayidx.i22.i.i.i2090 monotonic, align 4 %3128 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i2089) %3129 = extractvalue { i1, i64 } %3128, 0 %3130 = extractvalue { i1, i64 } %3128, 1 br i1 %3129, label %cond.false.i8.i.i.i.i2091, label %Flow8197 cond.false.i8.i.i.i.i2091: ; preds = %while.cond.i.i.i.i2084 %3131 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %3127) %3132 = icmp ne i32 %3131, %port.sroa.37.0.i.i2085 %3133 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3132) %3134 = extractvalue { i1, i64 } %3133, 0 %3135 = extractvalue { i1, i64 } %3133, 1 br i1 %3134, label %while.body.i.i21.i.i.i.i2092.preheader, label %Flow8196 while.body.i.i21.i.i.i.i2092.preheader: ; preds = %cond.false.i8.i.i.i.i2091 br label %while.body.i.i21.i.i.i.i2092, !amdgpu.uniform !42 Flow8196: ; preds = %Flow8195, %cond.false.i8.i.i.i.i2091 call void @llvm.amdgcn.end.cf.i64(i64 %3135) br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i2095, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i2092: ; preds = %while.body.i.i21.i.i.i.i2092.preheader, %while.body.i.i21.i.i.i.i2092 %phi.broken8699 = phi i64 [ 0, %while.body.i.i21.i.i.i.i2092.preheader ], [ %3139, %while.body.i.i21.i.i.i.i2092 ] call void @llvm.amdgcn.s.sleep(i32 2) %3136 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i2093 = getelementptr inbounds nuw i32, ptr %3136, i64 %idxprom.i23.i.i.i.i.i2081 %3137 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i2093 monotonic, align 4 %3138 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %3137) %cmp.i.not.i.i23.i.i.i.i2094 = icmp eq i32 %3138, %port.sroa.37.0.i.i2085 %3139 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i23.i.i.i.i2094, i64 %phi.broken8699) %3140 = call i1 @llvm.amdgcn.loop.i64(i64 %3139) br i1 %3140, label %Flow8195, label %while.body.i.i21.i.i.i.i2092 Flow8195: ; preds = %while.body.i.i21.i.i.i.i2092 %.lcssa9083 = phi i64 [ %3139, %while.body.i.i21.i.i.i.i2092 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9083) br label %Flow8196, !amdgpu.uniform !42 Flow8197: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2096, %while.cond.i.i.i.i2084 %3141 = phi i64 [ %add.i.i.i.i2099, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2096 ], [ poison, %while.cond.i.i.i.i2084 ] %3142 = phi i32 [ %conv.i.i26.i.i.i.i2097, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2096 ], [ poison, %while.cond.i.i.i.i2084 ] %3143 = phi ptr addrspace(4) [ %scevgep6755, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2096 ], [ poison, %while.cond.i.i.i.i2084 ] %3144 = phi i64 [ %lsr.iv.next6760, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2096 ], [ poison, %while.cond.i.i.i.i2084 ] %3145 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2096 ], [ true, %while.cond.i.i.i.i2084 ] call void @llvm.amdgcn.end.cf.i64(i64 %3130) %3146 = call i64 @llvm.amdgcn.if.break.i64(i1 %3145, i64 %phi.broken8702) %3147 = call i1 @llvm.amdgcn.loop.i64(i64 %3146) br i1 %3147, label %cond.false.i.i.i2106, label %while.cond.i.i.i.i2084 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i2095: ; preds = %Flow8196 fence acquire %3148 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i2087) %3149 = extractvalue { i1, i64 } %3148, 0 %3150 = extractvalue { i1, i64 } %3148, 1 br i1 %3149, label %if.then.i.i.i.i.i.i.i2100, label %Flow8194 if.then.i.i.i.i.i.i.i2100: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i2095 %sub.i.i.i.i.i.i.i2102 = sub nuw i64 %sub.ptr.sub.i.i.i2029, %idx.0.i.i.i.i2086 %spec.select.i.i.i36.i.i.i.i2103 = call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i2102, i64 64) %3151 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %3152 = and i64 %spec.select.i.i.i36.i.i.i.i2103, 15 %3153 = sub i64 %spec.select.i.i.i36.i.i.i.i2103, %3152 %3154 = icmp ne i64 %3153, 0 %3155 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3154) %3156 = extractvalue { i1, i64 } %3155, 0 %3157 = extractvalue { i1, i64 } %3155, 1 br i1 %3156, label %loop-memcpy-expansion5331.preheader, label %Flow8193 loop-memcpy-expansion5331.preheader: ; preds = %if.then.i.i.i.i.i.i.i2100 %arrayidx.i20.i35.i.i.i.i2104 = getelementptr %"struct.rpc::Buffer", ptr %3151, i64 %idxprom.i19.i.i.i.i.i2074 %arrayidx.i22.i38.i.i.i.i2105 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i2104, i64 %sh_prom.i.i.i.i756 br label %loop-memcpy-expansion5331, !amdgpu.uniform !42 Flow8193: ; preds = %Flow8192, %if.then.i.i.i.i.i.i.i2100 call void @llvm.amdgcn.end.cf.i64(i64 %3157) br label %loop-memcpy-residual-header5334, !amdgpu.uniform !42 loop-memcpy-expansion5331: ; preds = %loop-memcpy-expansion5331.preheader, %loop-memcpy-expansion5331 %phi.broken8700 = phi i64 [ 0, %loop-memcpy-expansion5331.preheader ], [ %3162, %loop-memcpy-expansion5331 ] %loop-index5332 = phi i64 [ %3160, %loop-memcpy-expansion5331 ], [ 0, %loop-memcpy-expansion5331.preheader ] %scevgep6756 = getelementptr i8, ptr addrspace(4) %lsr.iv6754, i64 %loop-index5332 %3158 = load <4 x i32>, ptr addrspace(4) %scevgep6756, align 1 %3159 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i2105, i64 %loop-index5332 store <4 x i32> %3158, ptr %3159, align 1 %3160 = add i64 %loop-index5332, 16 %3161 = icmp uge i64 %3160, %3153 %3162 = call i64 @llvm.amdgcn.if.break.i64(i1 %3161, i64 %phi.broken8700) %3163 = call i1 @llvm.amdgcn.loop.i64(i64 %3162) br i1 %3163, label %Flow8192, label %loop-memcpy-expansion5331 Flow8191: ; preds = %Flow8190, %loop-memcpy-residual-header5334 call void @llvm.amdgcn.end.cf.i64(i64 %6606) br label %Flow8194, !amdgpu.uniform !42 loop-memcpy-residual5333: ; preds = %loop-memcpy-residual5333.preheader, %loop-memcpy-residual5333 %phi.broken8701 = phi i64 [ 0, %loop-memcpy-residual5333.preheader ], [ %3167, %loop-memcpy-residual5333 ] %residual-loop-index5335 = phi i64 [ %3165, %loop-memcpy-residual5333 ], [ 0, %loop-memcpy-residual5333.preheader ] %scevgep6765 = getelementptr i8, ptr addrspace(4) %scevgep6764, i64 %residual-loop-index5335 %3164 = load i8, ptr addrspace(4) %scevgep6765, align 1 %scevgep6763 = getelementptr i8, ptr %scevgep6762, i64 %residual-loop-index5335 store i8 %3164, ptr %scevgep6763, align 1 %3165 = add i64 %residual-loop-index5335, 1 %3166 = icmp uge i64 %3165, %3152 %3167 = call i64 @llvm.amdgcn.if.break.i64(i1 %3166, i64 %phi.broken8701) %3168 = call i1 @llvm.amdgcn.loop.i64(i64 %3167) br i1 %3168, label %Flow8190, label %loop-memcpy-residual5333 Flow8190: ; preds = %loop-memcpy-residual5333 %.lcssa9085 = phi i64 [ %3167, %loop-memcpy-residual5333 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9085) br label %Flow8191, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2096: ; preds = %Flow8194 %conv.i.i26.i.i.i.i2097 = xor i32 %port.sroa.37.0.i.i2085, 1 fence release %3169 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i2098 = getelementptr inbounds nuw i32, ptr %3169, i64 %idxprom.i23.i.i.i.i.i2081 store atomic i32 %conv.i.i26.i.i.i.i2097, ptr %arrayidx.i24.i29.i.i.i.i2098 monotonic, align 4 %add.i.i.i.i2099 = add i64 %idx.0.i.i.i.i2086, 64 %scevgep6755 = getelementptr i8, ptr addrspace(4) %lsr.iv6754, i64 64 %lsr.iv.next6760 = add i64 %lsr.iv6759, -64 br label %Flow8197, !amdgpu.uniform !42 cond.false.i.i.i2106: ; preds = %Flow8197 %.lcssa9087 = phi i64 [ %3146, %Flow8197 ] %port.sroa.37.0.i.i2085.lcssa = phi i32 [ %port.sroa.37.0.i.i2085, %Flow8197 ] %.lcssa9086 = phi i32 [ %3127, %Flow8197 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9087) %3170 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa9086) %3171 = icmp ne i32 %3170, %port.sroa.37.0.i.i2085.lcssa %3172 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3171) %3173 = extractvalue { i1, i64 } %3172, 0 %3174 = extractvalue { i1, i64 } %3172, 1 br i1 %3173, label %while.body.i.i.i.i2107.preheader, label %Flow8189 while.body.i.i.i.i2107.preheader: ; preds = %cond.false.i.i.i2106 br label %while.body.i.i.i.i2107, !amdgpu.uniform !42 Flow8189: ; preds = %Flow8188, %cond.false.i.i.i2106 call void @llvm.amdgcn.end.cf.i64(i64 %3174) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit2128, !amdgpu.uniform !42 while.body.i.i.i.i2107: ; preds = %while.body.i.i.i.i2107.preheader, %while.body.i.i.i.i2107 %phi.broken8703 = phi i64 [ 0, %while.body.i.i.i.i2107.preheader ], [ %3178, %while.body.i.i.i.i2107 ] call void @llvm.amdgcn.s.sleep(i32 2) %3175 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i2108 = getelementptr inbounds nuw i32, ptr %3175, i64 %idxprom.i23.i.i.i.i.i2081 %3176 = load atomic i32, ptr %arrayidx.i.i.i8.i.i2108 monotonic, align 4 %3177 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %3176) %cmp.i.not.i.i.i.i2109 = icmp eq i32 %3177, %port.sroa.37.0.i.i2085.lcssa %3178 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i2109, i64 %phi.broken8703) %3179 = call i1 @llvm.amdgcn.loop.i64(i64 %3178) br i1 %3179, label %Flow8188, label %while.body.i.i.i.i2107 Flow8188: ; preds = %while.body.i.i.i.i2107 %.lcssa9088 = phi i64 [ %3178, %while.body.i.i.i.i2107 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9088) br label %Flow8189, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit2128: ; preds = %Flow8189 fence acquire call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %3180 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa9079, i1 true) %iszero.i.i.i.i.i13.i.i2111 = icmp ne i64 %.lcssa9079, 0 %cmp2.i.i.i.i14.i.i2112 = icmp eq i64 %3180, %sh_prom.i.i.i.i756 %cmp.i.i.i.i15.i.i2113 = select i1 %iszero.i.i.i.i.i13.i.i2111, i1 %cmp2.i.i.i.i14.i.i2112, i1 false %3181 = and i32 %.lcssa9080, 31 %conv4.i.i.i19.i.i2117 = zext i1 %cmp.i.i.i.i15.i.i2113 to i32 %shl.i.i.i20.i.i2118 = shl nuw i32 %conv4.i.i.i19.i.i2117, %3181 %xor.i.i.i21.i.i2119 = xor i32 %shl.i.i.i20.i.i2118, -1 %3182 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5732, !amdgpu.uniform !42 3183: ; preds = %ComputeEnd5733 %div8.i.i.i16.i.i2114 = lshr i32 %.lcssa9080, 5 %idxprom.i.i.i17.i.i2115 = zext nneg i32 %div8.i.i.i16.i.i2114 to i64 %3184 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i2115 %sunkaddr7428 = getelementptr inbounds i8, ptr addrspace(1) %3184, i64 40 %3185 = atomicrmw and ptr addrspace(1) %sunkaddr7428, i32 %.lcssa9089 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %3186, !amdgpu.uniform !42 3186: ; preds = %3183, %ComputeEnd5733 call void @llvm.amdgcn.end.cf.i64(i64 %7822) call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i.i2129, !amdgpu.uniform !42 for.cond.i.i.i2129: ; preds = %3186, %for.cond.i.i.i2129 %phi.broken8704 = phi i64 [ 0, %3186 ], [ %3188, %for.cond.i.i.i2129 ] %lsr.iv6788 = phi i64 [ %lsr.iv.next6789, %for.cond.i.i.i2129 ], [ -56, %3186 ] %lsr.iv6775 = phi i64 [ %lsr.iv.next6776, %for.cond.i.i.i2129 ], [ -1, %3186 ] %lsr.iv6766 = phi ptr [ %scevgep6768, %for.cond.i.i.i2129 ], [ %scevgep6661, %3186 ] %scevgep6768 = getelementptr i8, ptr %lsr.iv6766, i64 1 %3187 = load i8, ptr %scevgep6768, align 1, !tbaa !57 %cmp.i.i.i2131 = icmp eq i8 %3187, 0 %lsr.iv.next6776 = add i64 %lsr.iv6775, 1 %lsr.iv.next6789 = add i64 %lsr.iv6788, 1 %3188 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.i.i2131, i64 %phi.broken8704) %3189 = call i1 @llvm.amdgcn.loop.i64(i64 %3188) br i1 %3189, label %for.cond.i.i1.i2138.preheader, label %for.cond.i.i.i2129 for.cond.i.i1.i2138.preheader: ; preds = %for.cond.i.i.i2129 %lsr.iv6788.lcssa = phi i64 [ %lsr.iv6788, %for.cond.i.i.i2129 ] %scevgep6768.lcssa = phi ptr [ %scevgep6768, %for.cond.i.i.i2129 ] %lsr.iv.next6776.lcssa = phi i64 [ %lsr.iv.next6776, %for.cond.i.i.i2129 ] %.lcssa9090 = phi i64 [ %3188, %for.cond.i.i.i2129 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9090) br label %for.cond.i.i1.i2138, !amdgpu.uniform !42 for.cond.i.i1.i2138: ; preds = %for.cond.i.i1.i2138.preheader, %Flow8187 %3190 = phi i32 [ %3227, %Flow8187 ], [ %1189, %for.cond.i.i1.i2138.preheader ] %3191 = phi i64 [ %3228, %Flow8187 ], [ %1190, %for.cond.i.i1.i2138.preheader ] %3192 = phi i32 [ %3229, %Flow8187 ], [ %1191, %for.cond.i.i1.i2138.preheader ] %retval.sroa.6.0.i.i.i2139 = phi i32 [ %3232, %Flow8187 ], [ undef, %for.cond.i.i1.i2138.preheader ] %retval.sroa.2.0.i.i.i2141 = phi i64 [ %3231, %Flow8187 ], [ undef, %for.cond.i.i1.i2138.preheader ] %retval.sroa.8.0.i.i.i2142 = phi i32 [ %3230, %Flow8187 ], [ undef, %for.cond.i.i1.i2138.preheader ] %index.0.i.i.i2143 = phi i32 [ %3234, %Flow8187 ], [ 0, %for.cond.i.i1.i2138.preheader ] %3193 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i2144 = icmp ult i32 %index.0.i.i.i2143, %3193 %spec.store.select.i.i.i2145 = select i1 %cmp.not.i.i.i2144, i32 %index.0.i.i.i2143, i32 0 %3194 = call i64 @llvm.amdgcn.ballot.i64(i1 true) %3195 = and i32 %spec.store.select.i.i.i2145, 31 %3196 = lshr i64 %3194, %sh_prom.i.i.i.i756 %3197 = trunc i64 %3196 to i32 %conv4.i.i.i.i.i2149 = and i32 %3197, 1 %shl.i.i.i.i.i2150 = shl nuw i32 %conv4.i.i.i.i.i2149, %3195 br label %ComputeLoop5736, !amdgpu.uniform !42 3198: ; preds = %ComputeEnd5737 %sunkaddr7429 = getelementptr inbounds i8, ptr addrspace(1) %7832, i64 40 %3199 = atomicrmw or ptr addrspace(1) %sunkaddr7429, i32 %.lcssa9091 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %3200, !amdgpu.uniform !42 3200: ; preds = %3198, %ComputeEnd5737 %3201 = phi i32 [ %3199, %3198 ], [ poison, %ComputeEnd5737 ] call void @llvm.amdgcn.end.cf.i64(i64 %7841) %3202 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %3201) %3203 = or i32 %3202, %.lcssa9092 %shl5.i.i.i.i.i2151 = shl nuw i32 1, %3195 %and.i.i.i.i.i2152 = and i32 %shl5.i.i.i.i.i2151, %3203 %tobool3.i.i.i.i2153 = icmp ne i32 %and.i.i.i.i.i2152, 0 %3204 = call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i2153) %and.i.i.i.i.i.i2154 = and i64 %3204, %3194 %cmp.i.not.i.i.i2155 = icmp ne i64 %3194, %and.i.i.i.i.i.i2154 br i1 %cmp.i.not.i.i.i2155, label %if.then.i.i.i.i2156, label %Flow8186, !amdgpu.uniform !42 if.then.i.i.i.i2156: ; preds = %3200 fence syncscope("agent") acquire %3205 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %3206 = extractelement <2 x i64> %3205, i32 0 %3207 = inttoptr i64 %3206 to ptr %3208 = extractelement <2 x i64> %3205, i32 1 %3209 = inttoptr i64 %3208 to ptr %idxprom.i.i.i.i2157 = zext i32 %spec.store.select.i.i.i2145 to i64 %arrayidx.i.i.i.i2158 = getelementptr inbounds nuw i32, ptr %3207, i64 %idxprom.i.i.i.i2157, !amdgpu.uniform !42 %3210 = load atomic i32, ptr %arrayidx.i.i.i.i2158 monotonic, align 4 %3211 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %3210) %arrayidx.i45.i.i.i2159 = getelementptr inbounds nuw i32, ptr %3209, i64 %idxprom.i.i.i.i2157, !amdgpu.uniform !42 %3212 = load atomic i32, ptr %arrayidx.i45.i.i.i2159 monotonic, align 4 %3213 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %3212) %cmp.i46.not.i.i.i2160 = icmp ne i32 %3211, %3213 br i1 %cmp.i46.not.i.i.i2160, label %if.then12.i.i.i2161, label %Flow8184, !amdgpu.uniform !42 if.then12.i.i.i2161: ; preds = %if.then.i.i.i.i2156 fence syncscope("agent") release %3214 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %3194, i1 true) %iszero.i.i.i.i.i.i.i2162 = icmp ne i64 %3194, 0 %cmp2.i.i.i.i.i.i2163 = icmp eq i64 %3214, %sh_prom.i.i.i.i756 %cmp.i.i.i.i.i.i2164 = select i1 %iszero.i.i.i.i.i.i.i2162, i1 %cmp2.i.i.i.i.i.i2163, i1 false %conv4.i.i51.i.i.i2165 = zext i1 %cmp.i.i.i.i.i.i2164 to i32 %shl.i.i52.i.i.i2166 = shl nuw i32 %conv4.i.i51.i.i.i2165, %3195 %xor.i.i.i.i.i2167 = xor i32 %shl.i.i52.i.i.i2166, -1 %3215 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5741, !amdgpu.uniform !42 3216: ; preds = %ComputeEnd5742 %sunkaddr7430 = getelementptr inbounds i8, ptr addrspace(1) %7832, i64 40 %3217 = atomicrmw and ptr addrspace(1) %sunkaddr7430, i32 %.lcssa9093 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %3218, !amdgpu.uniform !42 3218: ; preds = %3216, %ComputeEnd5742 call void @llvm.amdgcn.end.cf.i64(i64 %7859) call void @llvm.amdgcn.wave.barrier() br label %Flow8184, !amdgpu.uniform !42 if.end14.i.i.i2227: ; preds = %Flow8184 %3219 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %3194, i1 true) %iszero.i.i.i.i.i.i2228 = icmp ne i64 %3194, 0 %cmp2.i.i.i.i.i2229 = icmp eq i64 %3219, %sh_prom.i.i.i.i756 %cmp.i.i.i.i.i2230 = select i1 %iszero.i.i.i.i.i.i2228, i1 %cmp2.i.i.i.i.i2229, i1 false %3220 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i2230) %3221 = extractvalue { i1, i64 } %3220, 0 %3222 = extractvalue { i1, i64 } %3220, 1 br i1 %3221, label %if.then16.i.i.i2232, label %if.end22.i.i.i2231 if.then16.i.i.i2232: ; preds = %if.end14.i.i.i2227 %3223 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i2233 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %3223, i64 %idxprom.i.i.i.i2157, i32 1 store i32 1660944387, ptr %opcode.i.i.i2233, align 8, !tbaa !77 %arrayidx21.i.i.i2234 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %3223, i64 %idxprom.i.i.i.i2157 store i64 %3194, ptr %arrayidx21.i.i.i2234, align 8, !tbaa !80 br label %if.end22.i.i.i2231, !amdgpu.uniform !42 Flow8185: ; preds = %if.end22.i.i.i2231, %Flow8184 %3224 = phi i32 [ %3211, %if.end22.i.i.i2231 ], [ %retval.sroa.8.0.i.i.i2142, %Flow8184 ] %3225 = phi i64 [ %3194, %if.end22.i.i.i2231 ], [ %retval.sroa.2.0.i.i.i2141, %Flow8184 ] %3226 = phi i32 [ %spec.store.select.i.i.i2145, %if.end22.i.i.i2231 ], [ %retval.sroa.6.0.i.i.i2139, %Flow8184 ] br label %cleanup26.i.i.i2168, !amdgpu.uniform !42 if.end22.i.i.i2231: ; preds = %if.then16.i.i.i2232, %if.end14.i.i.i2227 call void @llvm.amdgcn.end.cf.i64(i64 %3222) call void @llvm.amdgcn.wave.barrier() br label %Flow8185, !amdgpu.uniform !42 Flow8186: ; preds = %cleanup26.i.i.i2168, %3200 %3227 = phi i32 [ %3226, %cleanup26.i.i.i2168 ], [ %3190, %3200 ] %3228 = phi i64 [ %3225, %cleanup26.i.i.i2168 ], [ %3191, %3200 ] %3229 = phi i32 [ %3224, %cleanup26.i.i.i2168 ], [ %3192, %3200 ] %3230 = phi i32 [ %3224, %cleanup26.i.i.i2168 ], [ %retval.sroa.8.0.i.i.i2142, %3200 ] %3231 = phi i64 [ %3225, %cleanup26.i.i.i2168 ], [ %retval.sroa.2.0.i.i.i2141, %3200 ] %3232 = phi i32 [ %3226, %cleanup26.i.i.i2168 ], [ %retval.sroa.6.0.i.i.i2139, %3200 ] %3233 = phi i1 [ %cmp.i46.not.i.i.i2160, %cleanup26.i.i.i2168 ], [ true, %3200 ] br i1 %3233, label %for.inc.i.i.i2173, label %Flow8187, !amdgpu.uniform !42 cleanup26.i.i.i2168: ; preds = %Flow8185 br label %Flow8186, !amdgpu.uniform !42 for.inc.i.i.i2173: ; preds = %Flow8186 %inc.i.i.i2178 = add i32 %spec.store.select.i.i.i2145, 1 br label %Flow8187, !amdgpu.uniform !42 Flow8187: ; preds = %for.inc.i.i.i2173, %Flow8186 %3234 = phi i32 [ %inc.i.i.i2178, %for.inc.i.i.i2173 ], [ poison, %Flow8186 ] %3235 = phi i1 [ false, %for.inc.i.i.i2173 ], [ true, %Flow8186 ] br i1 %3235, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2179, label %for.cond.i.i1.i2138, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2179: ; preds = %Flow8187 %.lcssa9096 = phi i32 [ %3227, %Flow8187 ] %.lcssa9095 = phi i64 [ %3228, %Flow8187 ] %.lcssa9094 = phi i32 [ %3229, %Flow8187 ] %3236 = ptrtoint ptr %call18 to i64 %sub.ptr.lhs.cast.i.i.i2134 = ptrtoint ptr %scevgep6768.lcssa to i64 %sub.ptr.sub.i.i.i2136 = sub i64 %sub.ptr.lhs.cast.i.i.i2134, %3236 fence acquire %3237 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i2180 = shl i32 %.lcssa9096, 6 %idxprom.i19.i.i.i.i.i2181 = zext i32 %mul.i.i.i.i.i.i2180 to i64 %arrayidx.i20.i.i.i.i.i2182 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %3237, i64 %idxprom.i19.i.i.i.i.i2181 %arrayidx.i22.i.i.i.i.i2183 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i2182, i64 %sh_prom.i.i.i.i756 store i64 %sub.ptr.sub.i.i.i2136, ptr %arrayidx.i22.i.i.i.i.i2183, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i2184 = call i64 @llvm.umin.i64(i64 %sub.ptr.sub.i.i.i2136, i64 56) %3238 = and i64 %spec.select.i.i.i.i.i.i.i2184, 15 %3239 = sub i64 %spec.select.i.i.i.i.i.i.i2184, %3238 %3240 = icmp ne i64 %3239, 0 %3241 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3240) %3242 = extractvalue { i1, i64 } %3241, 0 %3243 = extractvalue { i1, i64 } %3241, 1 br i1 %3242, label %loop-memcpy-expansion5049.preheader, label %Flow8183 loop-memcpy-expansion5049.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2179 %scevgep6769 = getelementptr i8, ptr %3237, i64 8 %scevgep6770 = getelementptr i8, ptr %scevgep6769, i64 %1474 %3244 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i2181, 6 %scevgep6771 = getelementptr i8, ptr %scevgep6770, i64 %3244 br label %loop-memcpy-expansion5049, !amdgpu.uniform !42 Flow8183: ; preds = %Flow8182, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2179 call void @llvm.amdgcn.end.cf.i64(i64 %3243) br label %loop-memcpy-residual-header5052, !amdgpu.uniform !42 loop-memcpy-expansion5049: ; preds = %loop-memcpy-expansion5049.preheader, %loop-memcpy-expansion5049 %phi.broken8705 = phi i64 [ 0, %loop-memcpy-expansion5049.preheader ], [ %3249, %loop-memcpy-expansion5049 ] %loop-index5050 = phi i64 [ %3247, %loop-memcpy-expansion5049 ], [ 0, %loop-memcpy-expansion5049.preheader ] %3245 = getelementptr i8, ptr %call18, i64 %loop-index5050 %3246 = load <4 x i32>, ptr %3245, align 1 %scevgep6772 = getelementptr i8, ptr %scevgep6771, i64 %loop-index5050 store <4 x i32> %3246, ptr %scevgep6772, align 1 %3247 = add i64 %loop-index5050, 16 %3248 = icmp uge i64 %3247, %3239 %3249 = call i64 @llvm.amdgcn.if.break.i64(i1 %3248, i64 %phi.broken8705) %3250 = call i1 @llvm.amdgcn.loop.i64(i64 %3249) br i1 %3250, label %Flow8182, label %loop-memcpy-expansion5049 Flow8181: ; preds = %Flow8179, %Flow8180 %3251 = phi i64 [ %6298, %Flow8179 ], [ %6292, %Flow8180 ] call void @llvm.amdgcn.end.cf.i64(i64 %6295) br label %post-loop-memcpy-expansion5048, !amdgpu.uniform !42 loop-memcpy-residual5051: ; preds = %loop-memcpy-residual5051.preheader, %loop-memcpy-residual5051 %phi.broken8706 = phi i64 [ 0, %loop-memcpy-residual5051.preheader ], [ %3255, %loop-memcpy-residual5051 ] %residual-loop-index5053 = phi i64 [ %3253, %loop-memcpy-residual5051 ], [ 0, %loop-memcpy-residual5051.preheader ] %scevgep6782 = getelementptr i8, ptr %scevgep6781, i64 %residual-loop-index5053 %3252 = load i8, ptr %scevgep6782, align 1 %scevgep6780 = getelementptr i8, ptr %scevgep6779, i64 %residual-loop-index5053 store i8 %3252, ptr %scevgep6780, align 1 %3253 = add i64 %residual-loop-index5053, 1 %3254 = icmp uge i64 %3253, %3238 %3255 = call i64 @llvm.amdgcn.if.break.i64(i1 %3254, i64 %phi.broken8706) %3256 = call i1 @llvm.amdgcn.loop.i64(i64 %3255) br i1 %3256, label %Flow8179, label %loop-memcpy-residual5051 Flow8179: ; preds = %loop-memcpy-residual5051 %.lcssa9098 = phi i64 [ %3255, %loop-memcpy-residual5051 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9098) br label %Flow8181, !amdgpu.uniform !42 post-loop-memcpy-expansion5048: ; preds = %Flow8181 %tobool.not.i.i.i.i.i.i2186 = icmp eq i32 %.lcssa9094, 0 %conv.i.i.i.i.i.i2187 = zext i1 %tobool.not.i.i.i.i.i.i2186 to i32 fence release %3257 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i2188 = zext i32 %.lcssa9096 to i64 %arrayidx.i24.i.i.i.i.i2189 = getelementptr inbounds nuw i32, ptr %3257, i64 %idxprom.i23.i.i.i.i.i2188 store atomic i32 %conv.i.i.i.i.i.i2187, ptr %arrayidx.i24.i.i.i.i.i2189 monotonic, align 4 %3258 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i2190 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %3258, i64 %idxprom.i23.i.i.i.i.i2188 %3259 = load i64, ptr %arrayidx.i.i5.i.i2190, align 8, !tbaa !80 br label %while.cond.i.i.i.i2191, !amdgpu.uniform !42 while.cond.i.i.i.i2191: ; preds = %post-loop-memcpy-expansion5048, %Flow8178 %phi.broken8710 = phi i64 [ 0, %post-loop-memcpy-expansion5048 ], [ %3281, %Flow8178 ] %lsr.iv6790 = phi i64 [ %3279, %Flow8178 ], [ %lsr.iv6788.lcssa, %post-loop-memcpy-expansion5048 ] %lsr.iv6783 = phi ptr [ %3278, %Flow8178 ], [ %scevgep6679, %post-loop-memcpy-expansion5048 ] %port.sroa.37.0.i.i2192 = phi i32 [ %3277, %Flow8178 ], [ %conv.i.i.i.i.i.i2187, %post-loop-memcpy-expansion5048 ] %idx.0.i.i.i.i2193 = phi i64 [ %3276, %Flow8178 ], [ 56, %post-loop-memcpy-expansion5048 ] %cmp.i.i.i.i2194 = icmp ugt i64 %sub.ptr.sub.i.i.i2136, %idx.0.i.i.i.i2193 %3260 = call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i2194) %and.i.i.i.i6.i.i2195 = and i64 %3260, %3259 %tobool.not.i.i.i.i2196 = icmp ne i64 %and.i.i.i.i6.i.i2195, 0 %3261 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i2197 = getelementptr inbounds nuw i32, ptr %3261, i64 %idxprom.i23.i.i.i.i.i2188 %3262 = load atomic i32, ptr %arrayidx.i22.i.i.i2197 monotonic, align 4 %3263 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i2196) %3264 = extractvalue { i1, i64 } %3263, 0 %3265 = extractvalue { i1, i64 } %3263, 1 br i1 %3264, label %cond.false.i8.i.i.i.i2198, label %Flow8178 cond.false.i8.i.i.i.i2198: ; preds = %while.cond.i.i.i.i2191 %3266 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %3262) %3267 = icmp ne i32 %3266, %port.sroa.37.0.i.i2192 %3268 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3267) %3269 = extractvalue { i1, i64 } %3268, 0 %3270 = extractvalue { i1, i64 } %3268, 1 br i1 %3269, label %while.body.i.i21.i.i.i.i2199.preheader, label %Flow8177 while.body.i.i21.i.i.i.i2199.preheader: ; preds = %cond.false.i8.i.i.i.i2198 br label %while.body.i.i21.i.i.i.i2199, !amdgpu.uniform !42 Flow8177: ; preds = %Flow8176, %cond.false.i8.i.i.i.i2198 call void @llvm.amdgcn.end.cf.i64(i64 %3270) br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i2202, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i2199: ; preds = %while.body.i.i21.i.i.i.i2199.preheader, %while.body.i.i21.i.i.i.i2199 %phi.broken8707 = phi i64 [ 0, %while.body.i.i21.i.i.i.i2199.preheader ], [ %3274, %while.body.i.i21.i.i.i.i2199 ] call void @llvm.amdgcn.s.sleep(i32 2) %3271 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i2200 = getelementptr inbounds nuw i32, ptr %3271, i64 %idxprom.i23.i.i.i.i.i2188 %3272 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i2200 monotonic, align 4 %3273 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %3272) %cmp.i.not.i.i23.i.i.i.i2201 = icmp eq i32 %3273, %port.sroa.37.0.i.i2192 %3274 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i23.i.i.i.i2201, i64 %phi.broken8707) %3275 = call i1 @llvm.amdgcn.loop.i64(i64 %3274) br i1 %3275, label %Flow8176, label %while.body.i.i21.i.i.i.i2199 Flow8176: ; preds = %while.body.i.i21.i.i.i.i2199 %.lcssa9099 = phi i64 [ %3274, %while.body.i.i21.i.i.i.i2199 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9099) br label %Flow8177, !amdgpu.uniform !42 Flow8178: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2203, %while.cond.i.i.i.i2191 %3276 = phi i64 [ %add.i.i.i.i2206, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2203 ], [ poison, %while.cond.i.i.i.i2191 ] %3277 = phi i32 [ %conv.i.i26.i.i.i.i2204, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2203 ], [ poison, %while.cond.i.i.i.i2191 ] %3278 = phi ptr [ %scevgep6784, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2203 ], [ poison, %while.cond.i.i.i.i2191 ] %3279 = phi i64 [ %lsr.iv.next6791, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2203 ], [ poison, %while.cond.i.i.i.i2191 ] %3280 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2203 ], [ true, %while.cond.i.i.i.i2191 ] call void @llvm.amdgcn.end.cf.i64(i64 %3265) %3281 = call i64 @llvm.amdgcn.if.break.i64(i1 %3280, i64 %phi.broken8710) %3282 = call i1 @llvm.amdgcn.loop.i64(i64 %3281) br i1 %3282, label %cond.false.i.i.i2213, label %while.cond.i.i.i.i2191 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i2202: ; preds = %Flow8177 fence acquire %3283 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i2194) %3284 = extractvalue { i1, i64 } %3283, 0 %3285 = extractvalue { i1, i64 } %3283, 1 br i1 %3284, label %if.then.i.i.i.i.i.i.i2207, label %Flow8175 if.then.i.i.i.i.i.i.i2207: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i2202 %sub.i.i.i.i.i.i.i2209 = sub nuw i64 %sub.ptr.sub.i.i.i2136, %idx.0.i.i.i.i2193 %spec.select.i.i.i36.i.i.i.i2210 = call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i2209, i64 64) %3286 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %3287 = and i64 %spec.select.i.i.i36.i.i.i.i2210, 15 %3288 = sub i64 %spec.select.i.i.i36.i.i.i.i2210, %3287 %3289 = icmp ne i64 %3288, 0 %3290 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3289) %3291 = extractvalue { i1, i64 } %3290, 0 %3292 = extractvalue { i1, i64 } %3290, 1 br i1 %3291, label %loop-memcpy-expansion5043.preheader, label %Flow8174 loop-memcpy-expansion5043.preheader: ; preds = %if.then.i.i.i.i.i.i.i2207 %arrayidx.i20.i35.i.i.i.i2211 = getelementptr %"struct.rpc::Buffer", ptr %3286, i64 %idxprom.i19.i.i.i.i.i2181 %arrayidx.i22.i38.i.i.i.i2212 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i2211, i64 %sh_prom.i.i.i.i756 br label %loop-memcpy-expansion5043, !amdgpu.uniform !42 Flow8174: ; preds = %Flow8173, %if.then.i.i.i.i.i.i.i2207 call void @llvm.amdgcn.end.cf.i64(i64 %3292) br label %loop-memcpy-residual-header5046, !amdgpu.uniform !42 loop-memcpy-expansion5043: ; preds = %loop-memcpy-expansion5043.preheader, %loop-memcpy-expansion5043 %phi.broken8708 = phi i64 [ 0, %loop-memcpy-expansion5043.preheader ], [ %3297, %loop-memcpy-expansion5043 ] %loop-index5044 = phi i64 [ %3295, %loop-memcpy-expansion5043 ], [ 0, %loop-memcpy-expansion5043.preheader ] %scevgep6785 = getelementptr i8, ptr %lsr.iv6783, i64 %loop-index5044 %3293 = load <4 x i32>, ptr %scevgep6785, align 1 %3294 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i2212, i64 %loop-index5044 store <4 x i32> %3293, ptr %3294, align 1 %3295 = add i64 %loop-index5044, 16 %3296 = icmp uge i64 %3295, %3288 %3297 = call i64 @llvm.amdgcn.if.break.i64(i1 %3296, i64 %phi.broken8708) %3298 = call i1 @llvm.amdgcn.loop.i64(i64 %3297) br i1 %3298, label %Flow8173, label %loop-memcpy-expansion5043 Flow8172: ; preds = %Flow8171, %loop-memcpy-residual-header5046 call void @llvm.amdgcn.end.cf.i64(i64 %6285) br label %Flow8175, !amdgpu.uniform !42 loop-memcpy-residual5045: ; preds = %loop-memcpy-residual5045.preheader, %loop-memcpy-residual5045 %phi.broken8709 = phi i64 [ 0, %loop-memcpy-residual5045.preheader ], [ %3302, %loop-memcpy-residual5045 ] %residual-loop-index5047 = phi i64 [ %3300, %loop-memcpy-residual5045 ], [ 0, %loop-memcpy-residual5045.preheader ] %scevgep6797 = getelementptr i8, ptr %scevgep6796, i64 %residual-loop-index5047 %3299 = load i8, ptr %scevgep6797, align 1 %scevgep6794 = getelementptr i8, ptr %scevgep6793, i64 %residual-loop-index5047 store i8 %3299, ptr %scevgep6794, align 1 %3300 = add i64 %residual-loop-index5047, 1 %3301 = icmp uge i64 %3300, %3287 %3302 = call i64 @llvm.amdgcn.if.break.i64(i1 %3301, i64 %phi.broken8709) %3303 = call i1 @llvm.amdgcn.loop.i64(i64 %3302) br i1 %3303, label %Flow8171, label %loop-memcpy-residual5045 Flow8171: ; preds = %loop-memcpy-residual5045 %.lcssa9101 = phi i64 [ %3302, %loop-memcpy-residual5045 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9101) br label %Flow8172, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2203: ; preds = %Flow8175 %conv.i.i26.i.i.i.i2204 = xor i32 %port.sroa.37.0.i.i2192, 1 fence release %3304 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i2205 = getelementptr inbounds nuw i32, ptr %3304, i64 %idxprom.i23.i.i.i.i.i2188 store atomic i32 %conv.i.i26.i.i.i.i2204, ptr %arrayidx.i24.i29.i.i.i.i2205 monotonic, align 4 %add.i.i.i.i2206 = add i64 %idx.0.i.i.i.i2193, 64 %scevgep6784 = getelementptr i8, ptr %lsr.iv6783, i64 64 %lsr.iv.next6791 = add i64 %lsr.iv6790, -64 br label %Flow8178, !amdgpu.uniform !42 cond.false.i.i.i2213: ; preds = %Flow8178 %.lcssa9103 = phi i64 [ %3281, %Flow8178 ] %port.sroa.37.0.i.i2192.lcssa = phi i32 [ %port.sroa.37.0.i.i2192, %Flow8178 ] %.lcssa9102 = phi i32 [ %3262, %Flow8178 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9103) %3305 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa9102) %3306 = icmp ne i32 %3305, %port.sroa.37.0.i.i2192.lcssa %3307 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3306) %3308 = extractvalue { i1, i64 } %3307, 0 %3309 = extractvalue { i1, i64 } %3307, 1 br i1 %3308, label %while.body.i.i.i.i2214.preheader, label %Flow8170 while.body.i.i.i.i2214.preheader: ; preds = %cond.false.i.i.i2213 br label %while.body.i.i.i.i2214, !amdgpu.uniform !42 Flow8170: ; preds = %Flow8169, %cond.false.i.i.i2213 call void @llvm.amdgcn.end.cf.i64(i64 %3309) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit2235, !amdgpu.uniform !42 while.body.i.i.i.i2214: ; preds = %while.body.i.i.i.i2214.preheader, %while.body.i.i.i.i2214 %phi.broken8711 = phi i64 [ 0, %while.body.i.i.i.i2214.preheader ], [ %3313, %while.body.i.i.i.i2214 ] call void @llvm.amdgcn.s.sleep(i32 2) %3310 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i2215 = getelementptr inbounds nuw i32, ptr %3310, i64 %idxprom.i23.i.i.i.i.i2188 %3311 = load atomic i32, ptr %arrayidx.i.i.i8.i.i2215 monotonic, align 4 %3312 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %3311) %cmp.i.not.i.i.i.i2216 = icmp eq i32 %3312, %port.sroa.37.0.i.i2192.lcssa %3313 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i2216, i64 %phi.broken8711) %3314 = call i1 @llvm.amdgcn.loop.i64(i64 %3313) br i1 %3314, label %Flow8169, label %while.body.i.i.i.i2214 Flow8169: ; preds = %while.body.i.i.i.i2214 %.lcssa9104 = phi i64 [ %3313, %while.body.i.i.i.i2214 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9104) br label %Flow8170, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit2235: ; preds = %Flow8170 fence acquire call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %3315 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa9095, i1 true) %iszero.i.i.i.i.i13.i.i2218 = icmp ne i64 %.lcssa9095, 0 %cmp2.i.i.i.i14.i.i2219 = icmp eq i64 %3315, %sh_prom.i.i.i.i756 %cmp.i.i.i.i15.i.i2220 = select i1 %iszero.i.i.i.i.i13.i.i2218, i1 %cmp2.i.i.i.i14.i.i2219, i1 false %3316 = and i32 %.lcssa9096, 31 %conv4.i.i.i19.i.i2224 = zext i1 %cmp.i.i.i.i15.i.i2220 to i32 %shl.i.i.i20.i.i2225 = shl nuw i32 %conv4.i.i.i19.i.i2224, %3316 %xor.i.i.i21.i.i2226 = xor i32 %shl.i.i.i20.i.i2225, -1 %3317 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5745, !amdgpu.uniform !42 3318: ; preds = %ComputeEnd5746 %div8.i.i.i16.i.i2221 = lshr i32 %.lcssa9096, 5 %idxprom.i.i.i17.i.i2222 = zext nneg i32 %div8.i.i.i16.i.i2221 to i64 %3319 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i2222 %sunkaddr7431 = getelementptr inbounds i8, ptr addrspace(1) %3319, i64 40 %3320 = atomicrmw and ptr addrspace(1) %sunkaddr7431, i32 %.lcssa9105 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %3321, !amdgpu.uniform !42 3321: ; preds = %3318, %ComputeEnd5746 call void @llvm.amdgcn.end.cf.i64(i64 %7876) call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i1.i2244, !amdgpu.uniform !42 for.cond.i.i1.i2244: ; preds = %3321, %Flow8168 %3322 = phi i32 [ %3359, %Flow8168 ], [ %1192, %3321 ] %3323 = phi i64 [ %3360, %Flow8168 ], [ %1193, %3321 ] %3324 = phi i32 [ %3361, %Flow8168 ], [ %1194, %3321 ] %retval.sroa.6.0.i.i.i2245 = phi i32 [ %3364, %Flow8168 ], [ undef, %3321 ] %retval.sroa.2.0.i.i.i2247 = phi i64 [ %3363, %Flow8168 ], [ undef, %3321 ] %retval.sroa.8.0.i.i.i2248 = phi i32 [ %3362, %Flow8168 ], [ undef, %3321 ] %index.0.i.i.i2249 = phi i32 [ %3366, %Flow8168 ], [ 0, %3321 ] %3325 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i2250 = icmp ult i32 %index.0.i.i.i2249, %3325 %spec.store.select.i.i.i2251 = select i1 %cmp.not.i.i.i2250, i32 %index.0.i.i.i2249, i32 0 %3326 = call i64 @llvm.amdgcn.ballot.i64(i1 true) %3327 = and i32 %spec.store.select.i.i.i2251, 31 %3328 = lshr i64 %3326, %sh_prom.i.i.i.i756 %3329 = trunc i64 %3328 to i32 %conv4.i.i.i.i.i2255 = and i32 %3329, 1 %shl.i.i.i.i.i2256 = shl nuw i32 %conv4.i.i.i.i.i2255, %3327 br label %ComputeLoop5749, !amdgpu.uniform !42 3330: ; preds = %ComputeEnd5750 %sunkaddr7432 = getelementptr inbounds i8, ptr addrspace(1) %7886, i64 40 %3331 = atomicrmw or ptr addrspace(1) %sunkaddr7432, i32 %.lcssa9106 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %3332, !amdgpu.uniform !42 3332: ; preds = %3330, %ComputeEnd5750 %3333 = phi i32 [ %3331, %3330 ], [ poison, %ComputeEnd5750 ] call void @llvm.amdgcn.end.cf.i64(i64 %7895) %3334 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %3333) %3335 = or i32 %3334, %.lcssa9107 %shl5.i.i.i.i.i2257 = shl nuw i32 1, %3327 %and.i.i.i.i.i2258 = and i32 %shl5.i.i.i.i.i2257, %3335 %tobool3.i.i.i.i2259 = icmp ne i32 %and.i.i.i.i.i2258, 0 %3336 = call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i2259) %and.i.i.i.i.i.i2260 = and i64 %3336, %3326 %cmp.i.not.i.i.i2261 = icmp ne i64 %3326, %and.i.i.i.i.i.i2260 br i1 %cmp.i.not.i.i.i2261, label %if.then.i.i.i.i2262, label %Flow8167, !amdgpu.uniform !42 if.then.i.i.i.i2262: ; preds = %3332 fence syncscope("agent") acquire %3337 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %3338 = extractelement <2 x i64> %3337, i32 0 %3339 = inttoptr i64 %3338 to ptr %3340 = extractelement <2 x i64> %3337, i32 1 %3341 = inttoptr i64 %3340 to ptr %idxprom.i.i.i.i2263 = zext i32 %spec.store.select.i.i.i2251 to i64 %arrayidx.i.i.i.i2264 = getelementptr inbounds nuw i32, ptr %3339, i64 %idxprom.i.i.i.i2263, !amdgpu.uniform !42 %3342 = load atomic i32, ptr %arrayidx.i.i.i.i2264 monotonic, align 4 %3343 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %3342) %arrayidx.i45.i.i.i2265 = getelementptr inbounds nuw i32, ptr %3341, i64 %idxprom.i.i.i.i2263, !amdgpu.uniform !42 %3344 = load atomic i32, ptr %arrayidx.i45.i.i.i2265 monotonic, align 4 %3345 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %3344) %cmp.i46.not.i.i.i2266 = icmp ne i32 %3343, %3345 br i1 %cmp.i46.not.i.i.i2266, label %if.then12.i.i.i2267, label %Flow8165, !amdgpu.uniform !42 if.then12.i.i.i2267: ; preds = %if.then.i.i.i.i2262 fence syncscope("agent") release %3346 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %3326, i1 true) %iszero.i.i.i.i.i.i.i2268 = icmp ne i64 %3326, 0 %cmp2.i.i.i.i.i.i2269 = icmp eq i64 %3346, %sh_prom.i.i.i.i756 %cmp.i.i.i.i.i.i2270 = select i1 %iszero.i.i.i.i.i.i.i2268, i1 %cmp2.i.i.i.i.i.i2269, i1 false %conv4.i.i51.i.i.i2271 = zext i1 %cmp.i.i.i.i.i.i2270 to i32 %shl.i.i52.i.i.i2272 = shl nuw i32 %conv4.i.i51.i.i.i2271, %3327 %xor.i.i.i.i.i2273 = xor i32 %shl.i.i52.i.i.i2272, -1 %3347 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5754, !amdgpu.uniform !42 3348: ; preds = %ComputeEnd5755 %sunkaddr7433 = getelementptr inbounds i8, ptr addrspace(1) %7886, i64 40 %3349 = atomicrmw and ptr addrspace(1) %sunkaddr7433, i32 %.lcssa9108 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %3350, !amdgpu.uniform !42 3350: ; preds = %3348, %ComputeEnd5755 call void @llvm.amdgcn.end.cf.i64(i64 %7913) call void @llvm.amdgcn.wave.barrier() br label %Flow8165, !amdgpu.uniform !42 if.end14.i.i.i2333: ; preds = %Flow8165 %3351 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %3326, i1 true) %iszero.i.i.i.i.i.i2334 = icmp ne i64 %3326, 0 %cmp2.i.i.i.i.i2335 = icmp eq i64 %3351, %sh_prom.i.i.i.i756 %cmp.i.i.i.i.i2336 = select i1 %iszero.i.i.i.i.i.i2334, i1 %cmp2.i.i.i.i.i2335, i1 false %3352 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i2336) %3353 = extractvalue { i1, i64 } %3352, 0 %3354 = extractvalue { i1, i64 } %3352, 1 br i1 %3353, label %if.then16.i.i.i2338, label %if.end22.i.i.i2337 if.then16.i.i.i2338: ; preds = %if.end14.i.i.i2333 %3355 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i2339 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %3355, i64 %idxprom.i.i.i.i2263, i32 1 store i32 1660944387, ptr %opcode.i.i.i2339, align 8, !tbaa !77 %arrayidx21.i.i.i2340 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %3355, i64 %idxprom.i.i.i.i2263 store i64 %3326, ptr %arrayidx21.i.i.i2340, align 8, !tbaa !80 br label %if.end22.i.i.i2337, !amdgpu.uniform !42 Flow8166: ; preds = %if.end22.i.i.i2337, %Flow8165 %3356 = phi i32 [ %3343, %if.end22.i.i.i2337 ], [ %retval.sroa.8.0.i.i.i2248, %Flow8165 ] %3357 = phi i64 [ %3326, %if.end22.i.i.i2337 ], [ %retval.sroa.2.0.i.i.i2247, %Flow8165 ] %3358 = phi i32 [ %spec.store.select.i.i.i2251, %if.end22.i.i.i2337 ], [ %retval.sroa.6.0.i.i.i2245, %Flow8165 ] br label %cleanup26.i.i.i2274, !amdgpu.uniform !42 if.end22.i.i.i2337: ; preds = %if.then16.i.i.i2338, %if.end14.i.i.i2333 call void @llvm.amdgcn.end.cf.i64(i64 %3354) call void @llvm.amdgcn.wave.barrier() br label %Flow8166, !amdgpu.uniform !42 Flow8167: ; preds = %cleanup26.i.i.i2274, %3332 %3359 = phi i32 [ %3358, %cleanup26.i.i.i2274 ], [ %3322, %3332 ] %3360 = phi i64 [ %3357, %cleanup26.i.i.i2274 ], [ %3323, %3332 ] %3361 = phi i32 [ %3356, %cleanup26.i.i.i2274 ], [ %3324, %3332 ] %3362 = phi i32 [ %3356, %cleanup26.i.i.i2274 ], [ %retval.sroa.8.0.i.i.i2248, %3332 ] %3363 = phi i64 [ %3357, %cleanup26.i.i.i2274 ], [ %retval.sroa.2.0.i.i.i2247, %3332 ] %3364 = phi i32 [ %3358, %cleanup26.i.i.i2274 ], [ %retval.sroa.6.0.i.i.i2245, %3332 ] %3365 = phi i1 [ %cmp.i46.not.i.i.i2266, %cleanup26.i.i.i2274 ], [ true, %3332 ] br i1 %3365, label %for.inc.i.i.i2279, label %Flow8168, !amdgpu.uniform !42 cleanup26.i.i.i2274: ; preds = %Flow8166 br label %Flow8167, !amdgpu.uniform !42 for.inc.i.i.i2279: ; preds = %Flow8167 %inc.i.i.i2284 = add i32 %spec.store.select.i.i.i2251, 1 br label %Flow8168, !amdgpu.uniform !42 Flow8168: ; preds = %for.inc.i.i.i2279, %Flow8167 %3366 = phi i32 [ %inc.i.i.i2284, %for.inc.i.i.i2279 ], [ poison, %Flow8167 ] %3367 = phi i1 [ false, %for.inc.i.i.i2279 ], [ true, %Flow8167 ] br i1 %3367, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2285, label %for.cond.i.i1.i2244, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2285: ; preds = %Flow8168 %.lcssa9111 = phi i32 [ %3359, %Flow8168 ] %.lcssa9110 = phi i64 [ %3360, %Flow8168 ] %.lcssa9109 = phi i32 [ %3361, %Flow8168 ] fence acquire %3368 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i2286 = shl i32 %.lcssa9111, 6 %idxprom.i19.i.i.i.i.i2287 = zext i32 %mul.i.i.i.i.i.i2286 to i64 %arrayidx.i20.i.i.i.i.i2288 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %3368, i64 %idxprom.i19.i.i.i.i.i2287 %arrayidx.i22.i.i.i.i.i2289 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i2288, i64 %sh_prom.i.i.i.i756 store i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.20.37 to ptr), i64 2) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.20.37 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i2289, align 8, !tbaa !82 br i1 %1118, label %loop-memcpy-expansion5337.preheader, label %Flow8164, !amdgpu.uniform !42 loop-memcpy-expansion5337.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2285 %scevgep6798 = getelementptr i8, ptr %3368, i64 8 %scevgep6799 = getelementptr i8, ptr %scevgep6798, i64 %1474 %3369 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i2287, 6 %scevgep6800 = getelementptr i8, ptr %scevgep6799, i64 %3369 br label %loop-memcpy-expansion5337, !amdgpu.uniform !42 Flow8164: ; preds = %Flow8163, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2285 br label %loop-memcpy-residual-header5340, !amdgpu.uniform !42 loop-memcpy-expansion5337: ; preds = %loop-memcpy-expansion5337.preheader, %loop-memcpy-expansion5337 %loop-index5338 = phi i64 [ %3372, %loop-memcpy-expansion5337 ], [ 0, %loop-memcpy-expansion5337.preheader ] %3370 = getelementptr i8, ptr addrspace(4) @.str.20.37, i64 %loop-index5338, !amdgpu.uniform !42 %3371 = load <4 x i32>, ptr addrspace(4) %3370, align 1 %scevgep6801 = getelementptr i8, ptr %scevgep6800, i64 %loop-index5338 store <4 x i32> %3371, ptr %scevgep6801, align 1 %3372 = add i64 %loop-index5338, 16 %3373 = icmp uge i64 %3372, %1117 br i1 %3373, label %Flow8163, label %loop-memcpy-expansion5337, !amdgpu.uniform !42 Flow8162: ; preds = %Flow8160, %Flow8161 %3374 = phi i64 [ %6611, %Flow8160 ], [ %6609, %Flow8161 ] br label %post-loop-memcpy-expansion5336, !amdgpu.uniform !42 loop-memcpy-residual5339: ; preds = %loop-memcpy-residual5339.preheader, %loop-memcpy-residual5339 %residual-loop-index5341 = phi i64 [ %3376, %loop-memcpy-residual5339 ], [ 0, %loop-memcpy-residual5339.preheader ] %scevgep6806 = getelementptr i8, ptr addrspace(4) @.str.20.37, i64 %residual-loop-index5341, !amdgpu.uniform !42 %3375 = load i8, ptr addrspace(4) %scevgep6806, align 1 %scevgep6805 = getelementptr i8, ptr %scevgep6804, i64 %residual-loop-index5341 store i8 %3375, ptr %scevgep6805, align 1 %3376 = add i64 %residual-loop-index5341, 1 %3377 = icmp uge i64 %3376, %1116 br i1 %3377, label %Flow8160, label %loop-memcpy-residual5339, !amdgpu.uniform !42 Flow8160: ; preds = %loop-memcpy-residual5339 br label %Flow8162, !amdgpu.uniform !42 post-loop-memcpy-expansion5336: ; preds = %Flow8162 %tobool.not.i.i.i.i.i.i2292 = icmp eq i32 %.lcssa9109, 0 %conv.i.i.i.i.i.i2293 = zext i1 %tobool.not.i.i.i.i.i.i2292 to i32 fence release %3378 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i2294 = zext i32 %.lcssa9111 to i64 %arrayidx.i24.i.i.i.i.i2295 = getelementptr inbounds nuw i32, ptr %3378, i64 %idxprom.i23.i.i.i.i.i2294 store atomic i32 %conv.i.i.i.i.i.i2293, ptr %arrayidx.i24.i.i.i.i.i2295 monotonic, align 4 %3379 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i2296 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %3379, i64 %idxprom.i23.i.i.i.i.i2294 %3380 = load i64, ptr %arrayidx.i.i5.i.i2296, align 8, !tbaa !80 br label %while.cond.i.i.i.i2297, !amdgpu.uniform !42 while.cond.i.i.i.i2297: ; preds = %post-loop-memcpy-expansion5336, %Flow8159 %phi.broken8713 = phi i64 [ 0, %post-loop-memcpy-expansion5336 ], [ %3402, %Flow8159 ] %lsr.iv6812 = phi i64 [ %3400, %Flow8159 ], [ -54, %post-loop-memcpy-expansion5336 ] %lsr.iv6807 = phi ptr addrspace(4) [ %3399, %Flow8159 ], [ getelementptr (i8, ptr addrspace(4) @.str.20.37, i64 56), %post-loop-memcpy-expansion5336 ] %port.sroa.37.0.i.i2298 = phi i32 [ %3398, %Flow8159 ], [ %conv.i.i.i.i.i.i2293, %post-loop-memcpy-expansion5336 ] %idx.0.i.i.i.i2299 = phi i64 [ %3397, %Flow8159 ], [ 56, %post-loop-memcpy-expansion5336 ] %cmp.i.i.i.i2300 = icmp ult i64 %idx.0.i.i.i.i2299, sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.20.37 to ptr), i64 2) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.20.37 to ptr) to i64)) %3381 = call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i2300) %and.i.i.i.i6.i.i2301 = and i64 %3381, %3380 %tobool.not.i.i.i.i2302 = icmp ne i64 %and.i.i.i.i6.i.i2301, 0 %3382 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i2303 = getelementptr inbounds nuw i32, ptr %3382, i64 %idxprom.i23.i.i.i.i.i2294 %3383 = load atomic i32, ptr %arrayidx.i22.i.i.i2303 monotonic, align 4 %3384 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i2302) %3385 = extractvalue { i1, i64 } %3384, 0 %3386 = extractvalue { i1, i64 } %3384, 1 br i1 %3385, label %cond.false.i8.i.i.i.i2304, label %Flow8159 cond.false.i8.i.i.i.i2304: ; preds = %while.cond.i.i.i.i2297 %3387 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %3383) %3388 = icmp ne i32 %3387, %port.sroa.37.0.i.i2298 %3389 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3388) %3390 = extractvalue { i1, i64 } %3389, 0 %3391 = extractvalue { i1, i64 } %3389, 1 br i1 %3390, label %while.body.i.i21.i.i.i.i2305.preheader, label %Flow8158 while.body.i.i21.i.i.i.i2305.preheader: ; preds = %cond.false.i8.i.i.i.i2304 br label %while.body.i.i21.i.i.i.i2305, !amdgpu.uniform !42 Flow8158: ; preds = %Flow8157, %cond.false.i8.i.i.i.i2304 call void @llvm.amdgcn.end.cf.i64(i64 %3391) br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i2308, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i2305: ; preds = %while.body.i.i21.i.i.i.i2305.preheader, %while.body.i.i21.i.i.i.i2305 %phi.broken8712 = phi i64 [ 0, %while.body.i.i21.i.i.i.i2305.preheader ], [ %3395, %while.body.i.i21.i.i.i.i2305 ] call void @llvm.amdgcn.s.sleep(i32 2) %3392 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i2306 = getelementptr inbounds nuw i32, ptr %3392, i64 %idxprom.i23.i.i.i.i.i2294 %3393 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i2306 monotonic, align 4 %3394 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %3393) %cmp.i.not.i.i23.i.i.i.i2307 = icmp eq i32 %3394, %port.sroa.37.0.i.i2298 %3395 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i23.i.i.i.i2307, i64 %phi.broken8712) %3396 = call i1 @llvm.amdgcn.loop.i64(i64 %3395) br i1 %3396, label %Flow8157, label %while.body.i.i21.i.i.i.i2305 Flow8157: ; preds = %while.body.i.i21.i.i.i.i2305 %.lcssa9112 = phi i64 [ %3395, %while.body.i.i21.i.i.i.i2305 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9112) br label %Flow8158, !amdgpu.uniform !42 Flow8159: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2309, %while.cond.i.i.i.i2297 %3397 = phi i64 [ %add.i.i.i.i2312, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2309 ], [ poison, %while.cond.i.i.i.i2297 ] %3398 = phi i32 [ %conv.i.i26.i.i.i.i2310, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2309 ], [ poison, %while.cond.i.i.i.i2297 ] %3399 = phi ptr addrspace(4) [ %scevgep6808, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2309 ], [ poison, %while.cond.i.i.i.i2297 ] %3400 = phi i64 [ %lsr.iv.next6813, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2309 ], [ poison, %while.cond.i.i.i.i2297 ] %3401 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2309 ], [ true, %while.cond.i.i.i.i2297 ] call void @llvm.amdgcn.end.cf.i64(i64 %3386) %3402 = call i64 @llvm.amdgcn.if.break.i64(i1 %3401, i64 %phi.broken8713) %3403 = call i1 @llvm.amdgcn.loop.i64(i64 %3402) br i1 %3403, label %cond.false.i.i.i2319, label %while.cond.i.i.i.i2297 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i2308: ; preds = %Flow8158 fence acquire br i1 %cmp.i.i.i.i2300, label %if.then.i.i.i.i.i.i.i2313, label %Flow8156, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i2313: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i2308 %sub.i.i.i.i.i.i.i2315 = sub nuw i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.20.37 to ptr), i64 2) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.20.37 to ptr) to i64)), %idx.0.i.i.i.i2299 %spec.select.i.i.i36.i.i.i.i2316 = call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i2315, i64 64) %3404 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %3405 = and i64 %spec.select.i.i.i36.i.i.i.i2316, 15 %3406 = sub i64 %spec.select.i.i.i36.i.i.i.i2316, %3405 %3407 = icmp ne i64 %3406, 0 br i1 %3407, label %loop-memcpy-expansion5343.preheader, label %Flow8155, !amdgpu.uniform !42 loop-memcpy-expansion5343.preheader: ; preds = %if.then.i.i.i.i.i.i.i2313 %arrayidx.i20.i35.i.i.i.i2317 = getelementptr %"struct.rpc::Buffer", ptr %3404, i64 %idxprom.i19.i.i.i.i.i2287 %arrayidx.i22.i38.i.i.i.i2318 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i2317, i64 %sh_prom.i.i.i.i756 br label %loop-memcpy-expansion5343, !amdgpu.uniform !42 Flow8155: ; preds = %Flow8154, %if.then.i.i.i.i.i.i.i2313 br label %loop-memcpy-residual-header5346, !amdgpu.uniform !42 loop-memcpy-expansion5343: ; preds = %loop-memcpy-expansion5343.preheader, %loop-memcpy-expansion5343 %loop-index5344 = phi i64 [ %3410, %loop-memcpy-expansion5343 ], [ 0, %loop-memcpy-expansion5343.preheader ] %scevgep6809 = getelementptr i8, ptr addrspace(4) %lsr.iv6807, i64 %loop-index5344, !amdgpu.uniform !42 %3408 = load <4 x i32>, ptr addrspace(4) %scevgep6809, align 1 %3409 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i2318, i64 %loop-index5344 store <4 x i32> %3408, ptr %3409, align 1 %3410 = add i64 %loop-index5344, 16 %3411 = icmp uge i64 %3410, %3406 br i1 %3411, label %Flow8154, label %loop-memcpy-expansion5343, !amdgpu.uniform !42 Flow8153: ; preds = %Flow8152, %loop-memcpy-residual-header5346 br label %Flow8156, !amdgpu.uniform !42 loop-memcpy-residual5345: ; preds = %loop-memcpy-residual5345.preheader, %loop-memcpy-residual5345 %residual-loop-index5347 = phi i64 [ %3413, %loop-memcpy-residual5345 ], [ 0, %loop-memcpy-residual5345.preheader ] %scevgep6818 = getelementptr i8, ptr addrspace(4) %scevgep6817, i64 %residual-loop-index5347, !amdgpu.uniform !42 %3412 = load i8, ptr addrspace(4) %scevgep6818, align 1 %scevgep6816 = getelementptr i8, ptr %scevgep6815, i64 %residual-loop-index5347 store i8 %3412, ptr %scevgep6816, align 1 %3413 = add i64 %residual-loop-index5347, 1 %3414 = icmp uge i64 %3413, %3405 br i1 %3414, label %Flow8152, label %loop-memcpy-residual5345, !amdgpu.uniform !42 Flow8152: ; preds = %loop-memcpy-residual5345 br label %Flow8153, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2309: ; preds = %Flow8156 %conv.i.i26.i.i.i.i2310 = xor i32 %port.sroa.37.0.i.i2298, 1 fence release %3415 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i2311 = getelementptr inbounds nuw i32, ptr %3415, i64 %idxprom.i23.i.i.i.i.i2294 store atomic i32 %conv.i.i26.i.i.i.i2310, ptr %arrayidx.i24.i29.i.i.i.i2311 monotonic, align 4 %add.i.i.i.i2312 = add i64 %idx.0.i.i.i.i2299, 64 %scevgep6808 = getelementptr i8, ptr addrspace(4) %lsr.iv6807, i64 64 %lsr.iv.next6813 = add i64 %lsr.iv6812, -64 br label %Flow8159, !amdgpu.uniform !42 cond.false.i.i.i2319: ; preds = %Flow8159 %.lcssa9114 = phi i64 [ %3402, %Flow8159 ] %port.sroa.37.0.i.i2298.lcssa = phi i32 [ %port.sroa.37.0.i.i2298, %Flow8159 ] %.lcssa9113 = phi i32 [ %3383, %Flow8159 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9114) %3416 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa9113) %3417 = icmp ne i32 %3416, %port.sroa.37.0.i.i2298.lcssa %3418 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3417) %3419 = extractvalue { i1, i64 } %3418, 0 %3420 = extractvalue { i1, i64 } %3418, 1 br i1 %3419, label %while.body.i.i.i.i2320.preheader, label %Flow8151 while.body.i.i.i.i2320.preheader: ; preds = %cond.false.i.i.i2319 br label %while.body.i.i.i.i2320, !amdgpu.uniform !42 Flow8151: ; preds = %Flow8150, %cond.false.i.i.i2319 call void @llvm.amdgcn.end.cf.i64(i64 %3420) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit2341, !amdgpu.uniform !42 while.body.i.i.i.i2320: ; preds = %while.body.i.i.i.i2320.preheader, %while.body.i.i.i.i2320 %phi.broken8714 = phi i64 [ 0, %while.body.i.i.i.i2320.preheader ], [ %3424, %while.body.i.i.i.i2320 ] call void @llvm.amdgcn.s.sleep(i32 2) %3421 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i2321 = getelementptr inbounds nuw i32, ptr %3421, i64 %idxprom.i23.i.i.i.i.i2294 %3422 = load atomic i32, ptr %arrayidx.i.i.i8.i.i2321 monotonic, align 4 %3423 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %3422) %cmp.i.not.i.i.i.i2322 = icmp eq i32 %3423, %port.sroa.37.0.i.i2298.lcssa %3424 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i2322, i64 %phi.broken8714) %3425 = call i1 @llvm.amdgcn.loop.i64(i64 %3424) br i1 %3425, label %Flow8150, label %while.body.i.i.i.i2320 Flow8150: ; preds = %while.body.i.i.i.i2320 %.lcssa9115 = phi i64 [ %3424, %while.body.i.i.i.i2320 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9115) br label %Flow8151, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit2341: ; preds = %Flow8151 fence acquire call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %3426 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa9110, i1 true) %iszero.i.i.i.i.i13.i.i2324 = icmp ne i64 %.lcssa9110, 0 %cmp2.i.i.i.i14.i.i2325 = icmp eq i64 %3426, %sh_prom.i.i.i.i756 %cmp.i.i.i.i15.i.i2326 = select i1 %iszero.i.i.i.i.i13.i.i2324, i1 %cmp2.i.i.i.i14.i.i2325, i1 false %3427 = and i32 %.lcssa9111, 31 %conv4.i.i.i19.i.i2330 = zext i1 %cmp.i.i.i.i15.i.i2326 to i32 %shl.i.i.i20.i.i2331 = shl nuw i32 %conv4.i.i.i19.i.i2330, %3427 %xor.i.i.i21.i.i2332 = xor i32 %shl.i.i.i20.i.i2331, -1 %3428 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5758, !amdgpu.uniform !42 3429: ; preds = %ComputeEnd5759 %div8.i.i.i16.i.i2327 = lshr i32 %.lcssa9111, 5 %idxprom.i.i.i17.i.i2328 = zext nneg i32 %div8.i.i.i16.i.i2327 to i64 %3430 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i2328 %sunkaddr7434 = getelementptr inbounds i8, ptr addrspace(1) %3430, i64 40 %3431 = atomicrmw and ptr addrspace(1) %sunkaddr7434, i32 %.lcssa9116 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %3432, !amdgpu.uniform !42 3432: ; preds = %3429, %ComputeEnd5759 call void @llvm.amdgcn.end.cf.i64(i64 %7930) call void @llvm.amdgcn.wave.barrier() %cmp62 = icmp uge i64 %retval.1.i1278, %retval.1.i br i1 %cmp62, label %if.else, label %Flow8148, !amdgpu.uniform !42 Flow8148: ; preds = %Flow8128, %3432 %3433 = phi i32 [ %3629, %Flow8128 ], [ poison, %3432 ] %3434 = phi i64 [ %3630, %Flow8128 ], [ poison, %3432 ] %3435 = phi i32 [ %3631, %Flow8128 ], [ poison, %3432 ] %3436 = phi i32 [ %3632, %Flow8128 ], [ poison, %3432 ] %3437 = phi i64 [ %3633, %Flow8128 ], [ poison, %3432 ] %3438 = phi i32 [ %3634, %Flow8128 ], [ poison, %3432 ] %3439 = phi i32 [ %3635, %Flow8128 ], [ poison, %3432 ] %3440 = phi i64 [ %3636, %Flow8128 ], [ poison, %3432 ] %3441 = phi i32 [ %3637, %Flow8128 ], [ poison, %3432 ] %3442 = phi i32 [ %3638, %Flow8128 ], [ poison, %3432 ] %3443 = phi i64 [ %3639, %Flow8128 ], [ poison, %3432 ] %3444 = phi i32 [ %3640, %Flow8128 ], [ poison, %3432 ] %3445 = phi i32 [ %3641, %Flow8128 ], [ poison, %3432 ] %3446 = phi i64 [ %3642, %Flow8128 ], [ poison, %3432 ] %3447 = phi i32 [ %3643, %Flow8128 ], [ poison, %3432 ] %3448 = phi i32 [ %3644, %Flow8128 ], [ poison, %3432 ] %3449 = phi i64 [ %3645, %Flow8128 ], [ poison, %3432 ] %3450 = phi i32 [ %3646, %Flow8128 ], [ poison, %3432 ] %3451 = phi i1 [ false, %Flow8128 ], [ true, %3432 ] br i1 %3451, label %for.cond.i.i1.i2350.preheader, label %Flow8149, !amdgpu.uniform !42 for.cond.i.i1.i2350.preheader: ; preds = %Flow8148 br label %for.cond.i.i1.i2350, !amdgpu.uniform !42 Flow8149: ; preds = %3583, %Flow8148 %3452 = phi i32 [ %1215, %3583 ], [ %3433, %Flow8148 ] %3453 = phi i64 [ %1214, %3583 ], [ %3434, %Flow8148 ] %3454 = phi i32 [ %1213, %3583 ], [ %3435, %Flow8148 ] %3455 = phi i32 [ %1212, %3583 ], [ %3436, %Flow8148 ] %3456 = phi i64 [ %1211, %3583 ], [ %3437, %Flow8148 ] %3457 = phi i32 [ %1210, %3583 ], [ %3438, %Flow8148 ] %3458 = phi i32 [ %1209, %3583 ], [ %3439, %Flow8148 ] %3459 = phi i64 [ %1208, %3583 ], [ %3440, %Flow8148 ] %3460 = phi i32 [ %1207, %3583 ], [ %3441, %Flow8148 ] %3461 = phi i32 [ %1206, %3583 ], [ %3442, %Flow8148 ] %3462 = phi i64 [ %1205, %3583 ], [ %3443, %Flow8148 ] %3463 = phi i32 [ %1204, %3583 ], [ %3444, %Flow8148 ] %3464 = phi i32 [ %1203, %3583 ], [ %3445, %Flow8148 ] %3465 = phi i64 [ %1202, %3583 ], [ %3446, %Flow8148 ] %3466 = phi i32 [ %1201, %3583 ], [ %3447, %Flow8148 ] %3467 = phi i32 [ %1200, %3583 ], [ %3448, %Flow8148 ] %3468 = phi i64 [ %1199, %3583 ], [ %3449, %Flow8148 ] %3469 = phi i32 [ %1198, %3583 ], [ %3450, %Flow8148 ] %3470 = phi i32 [ %.lcssa9186, %3583 ], [ %1197, %Flow8148 ] %3471 = phi i64 [ %.lcssa9187, %3583 ], [ %1196, %Flow8148 ] %3472 = phi i32 [ %.lcssa9188, %3583 ], [ %1195, %Flow8148 ] br label %Flow8330, !amdgpu.uniform !42 for.cond.i.i1.i2350: ; preds = %for.cond.i.i1.i2350.preheader, %Flow8147 %3473 = phi i32 [ %3510, %Flow8147 ], [ %1195, %for.cond.i.i1.i2350.preheader ] %3474 = phi i64 [ %3511, %Flow8147 ], [ %1196, %for.cond.i.i1.i2350.preheader ] %3475 = phi i32 [ %3512, %Flow8147 ], [ %1197, %for.cond.i.i1.i2350.preheader ] %retval.sroa.6.0.i.i.i2351 = phi i32 [ %3515, %Flow8147 ], [ undef, %for.cond.i.i1.i2350.preheader ] %retval.sroa.2.0.i.i.i2353 = phi i64 [ %3514, %Flow8147 ], [ undef, %for.cond.i.i1.i2350.preheader ] %retval.sroa.8.0.i.i.i2354 = phi i32 [ %3513, %Flow8147 ], [ undef, %for.cond.i.i1.i2350.preheader ] %index.0.i.i.i2355 = phi i32 [ %3517, %Flow8147 ], [ 0, %for.cond.i.i1.i2350.preheader ] %3476 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i2356 = icmp ult i32 %index.0.i.i.i2355, %3476 %spec.store.select.i.i.i2357 = select i1 %cmp.not.i.i.i2356, i32 %index.0.i.i.i2355, i32 0 %3477 = call i64 @llvm.amdgcn.ballot.i64(i1 true) %3478 = and i32 %spec.store.select.i.i.i2357, 31 %3479 = lshr i64 %3477, %sh_prom.i.i.i.i756 %3480 = trunc i64 %3479 to i32 %conv4.i.i.i.i.i2361 = and i32 %3480, 1 %shl.i.i.i.i.i2362 = shl nuw i32 %conv4.i.i.i.i.i2361, %3478 br label %ComputeLoop5762, !amdgpu.uniform !42 3481: ; preds = %ComputeEnd5763 %sunkaddr7435 = getelementptr inbounds i8, ptr addrspace(1) %7940, i64 40 %3482 = atomicrmw or ptr addrspace(1) %sunkaddr7435, i32 %.lcssa9183 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %3483, !amdgpu.uniform !42 3483: ; preds = %3481, %ComputeEnd5763 %3484 = phi i32 [ %3482, %3481 ], [ poison, %ComputeEnd5763 ] call void @llvm.amdgcn.end.cf.i64(i64 %7949) %3485 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %3484) %3486 = or i32 %3485, %.lcssa9184 %shl5.i.i.i.i.i2363 = shl nuw i32 1, %3478 %and.i.i.i.i.i2364 = and i32 %shl5.i.i.i.i.i2363, %3486 %tobool3.i.i.i.i2365 = icmp ne i32 %and.i.i.i.i.i2364, 0 %3487 = call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i2365) %and.i.i.i.i.i.i2366 = and i64 %3487, %3477 %cmp.i.not.i.i.i2367 = icmp ne i64 %3477, %and.i.i.i.i.i.i2366 br i1 %cmp.i.not.i.i.i2367, label %if.then.i.i.i.i2368, label %Flow8146, !amdgpu.uniform !42 if.then.i.i.i.i2368: ; preds = %3483 fence syncscope("agent") acquire %3488 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %3489 = extractelement <2 x i64> %3488, i32 0 %3490 = inttoptr i64 %3489 to ptr %3491 = extractelement <2 x i64> %3488, i32 1 %3492 = inttoptr i64 %3491 to ptr %idxprom.i.i.i.i2369 = zext i32 %spec.store.select.i.i.i2357 to i64 %arrayidx.i.i.i.i2370 = getelementptr inbounds nuw i32, ptr %3490, i64 %idxprom.i.i.i.i2369, !amdgpu.uniform !42 %3493 = load atomic i32, ptr %arrayidx.i.i.i.i2370 monotonic, align 4 %3494 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %3493) %arrayidx.i45.i.i.i2371 = getelementptr inbounds nuw i32, ptr %3492, i64 %idxprom.i.i.i.i2369, !amdgpu.uniform !42 %3495 = load atomic i32, ptr %arrayidx.i45.i.i.i2371 monotonic, align 4 %3496 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %3495) %cmp.i46.not.i.i.i2372 = icmp ne i32 %3494, %3496 br i1 %cmp.i46.not.i.i.i2372, label %if.then12.i.i.i2373, label %Flow8144, !amdgpu.uniform !42 if.then12.i.i.i2373: ; preds = %if.then.i.i.i.i2368 fence syncscope("agent") release %3497 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %3477, i1 true) %iszero.i.i.i.i.i.i.i2374 = icmp ne i64 %3477, 0 %cmp2.i.i.i.i.i.i2375 = icmp eq i64 %3497, %sh_prom.i.i.i.i756 %cmp.i.i.i.i.i.i2376 = select i1 %iszero.i.i.i.i.i.i.i2374, i1 %cmp2.i.i.i.i.i.i2375, i1 false %conv4.i.i51.i.i.i2377 = zext i1 %cmp.i.i.i.i.i.i2376 to i32 %shl.i.i52.i.i.i2378 = shl nuw i32 %conv4.i.i51.i.i.i2377, %3478 %xor.i.i.i.i.i2379 = xor i32 %shl.i.i52.i.i.i2378, -1 %3498 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5767, !amdgpu.uniform !42 3499: ; preds = %ComputeEnd5768 %sunkaddr7436 = getelementptr inbounds i8, ptr addrspace(1) %7940, i64 40 %3500 = atomicrmw and ptr addrspace(1) %sunkaddr7436, i32 %.lcssa9185 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %3501, !amdgpu.uniform !42 3501: ; preds = %3499, %ComputeEnd5768 call void @llvm.amdgcn.end.cf.i64(i64 %7967) call void @llvm.amdgcn.wave.barrier() br label %Flow8144, !amdgpu.uniform !42 if.end14.i.i.i2439: ; preds = %Flow8144 %3502 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %3477, i1 true) %iszero.i.i.i.i.i.i2440 = icmp ne i64 %3477, 0 %cmp2.i.i.i.i.i2441 = icmp eq i64 %3502, %sh_prom.i.i.i.i756 %cmp.i.i.i.i.i2442 = select i1 %iszero.i.i.i.i.i.i2440, i1 %cmp2.i.i.i.i.i2441, i1 false %3503 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i2442) %3504 = extractvalue { i1, i64 } %3503, 0 %3505 = extractvalue { i1, i64 } %3503, 1 br i1 %3504, label %if.then16.i.i.i2444, label %if.end22.i.i.i2443 if.then16.i.i.i2444: ; preds = %if.end14.i.i.i2439 %3506 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i2445 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %3506, i64 %idxprom.i.i.i.i2369, i32 1 store i32 1660944387, ptr %opcode.i.i.i2445, align 8, !tbaa !77 %arrayidx21.i.i.i2446 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %3506, i64 %idxprom.i.i.i.i2369 store i64 %3477, ptr %arrayidx21.i.i.i2446, align 8, !tbaa !80 br label %if.end22.i.i.i2443, !amdgpu.uniform !42 Flow8145: ; preds = %if.end22.i.i.i2443, %Flow8144 %3507 = phi i32 [ %3494, %if.end22.i.i.i2443 ], [ %retval.sroa.8.0.i.i.i2354, %Flow8144 ] %3508 = phi i64 [ %3477, %if.end22.i.i.i2443 ], [ %retval.sroa.2.0.i.i.i2353, %Flow8144 ] %3509 = phi i32 [ %spec.store.select.i.i.i2357, %if.end22.i.i.i2443 ], [ %retval.sroa.6.0.i.i.i2351, %Flow8144 ] br label %cleanup26.i.i.i2380, !amdgpu.uniform !42 if.end22.i.i.i2443: ; preds = %if.then16.i.i.i2444, %if.end14.i.i.i2439 call void @llvm.amdgcn.end.cf.i64(i64 %3505) call void @llvm.amdgcn.wave.barrier() br label %Flow8145, !amdgpu.uniform !42 Flow8146: ; preds = %cleanup26.i.i.i2380, %3483 %3510 = phi i32 [ %3509, %cleanup26.i.i.i2380 ], [ %3473, %3483 ] %3511 = phi i64 [ %3508, %cleanup26.i.i.i2380 ], [ %3474, %3483 ] %3512 = phi i32 [ %3507, %cleanup26.i.i.i2380 ], [ %3475, %3483 ] %3513 = phi i32 [ %3507, %cleanup26.i.i.i2380 ], [ %retval.sroa.8.0.i.i.i2354, %3483 ] %3514 = phi i64 [ %3508, %cleanup26.i.i.i2380 ], [ %retval.sroa.2.0.i.i.i2353, %3483 ] %3515 = phi i32 [ %3509, %cleanup26.i.i.i2380 ], [ %retval.sroa.6.0.i.i.i2351, %3483 ] %3516 = phi i1 [ %cmp.i46.not.i.i.i2372, %cleanup26.i.i.i2380 ], [ true, %3483 ] br i1 %3516, label %for.inc.i.i.i2385, label %Flow8147, !amdgpu.uniform !42 cleanup26.i.i.i2380: ; preds = %Flow8145 br label %Flow8146, !amdgpu.uniform !42 for.inc.i.i.i2385: ; preds = %Flow8146 %inc.i.i.i2390 = add i32 %spec.store.select.i.i.i2357, 1 br label %Flow8147, !amdgpu.uniform !42 Flow8147: ; preds = %for.inc.i.i.i2385, %Flow8146 %3517 = phi i32 [ %inc.i.i.i2390, %for.inc.i.i.i2385 ], [ poison, %Flow8146 ] %3518 = phi i1 [ false, %for.inc.i.i.i2385 ], [ true, %Flow8146 ] br i1 %3518, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2391, label %for.cond.i.i1.i2350, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2391: ; preds = %Flow8147 %.lcssa9188 = phi i32 [ %3510, %Flow8147 ] %.lcssa9187 = phi i64 [ %3511, %Flow8147 ] %.lcssa9186 = phi i32 [ %3512, %Flow8147 ] fence acquire %3519 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i2392 = shl i32 %.lcssa9188, 6 %idxprom.i19.i.i.i.i.i2393 = zext i32 %mul.i.i.i.i.i.i2392 to i64 %arrayidx.i20.i.i.i.i.i2394 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %3519, i64 %idxprom.i19.i.i.i.i.i2393 %arrayidx.i22.i.i.i.i.i2395 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i2394, i64 %sh_prom.i.i.i.i756 store i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.21.38 to ptr), i64 25) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.21.38 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i2395, align 8, !tbaa !82 br i1 %1134, label %loop-memcpy-expansion5349.preheader, label %Flow8143, !amdgpu.uniform !42 loop-memcpy-expansion5349.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2391 %scevgep6981 = getelementptr i8, ptr %3519, i64 8 %scevgep6982 = getelementptr i8, ptr %scevgep6981, i64 %1474 %3520 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i2393, 6 %scevgep6983 = getelementptr i8, ptr %scevgep6982, i64 %3520 br label %loop-memcpy-expansion5349, !amdgpu.uniform !42 Flow8143: ; preds = %Flow8142, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2391 br label %loop-memcpy-residual-header5352, !amdgpu.uniform !42 loop-memcpy-expansion5349: ; preds = %loop-memcpy-expansion5349.preheader, %loop-memcpy-expansion5349 %loop-index5350 = phi i64 [ %3523, %loop-memcpy-expansion5349 ], [ 0, %loop-memcpy-expansion5349.preheader ] %3521 = getelementptr i8, ptr addrspace(4) @.str.21.38, i64 %loop-index5350, !amdgpu.uniform !42 %3522 = load <4 x i32>, ptr addrspace(4) %3521, align 1 %scevgep6984 = getelementptr i8, ptr %scevgep6983, i64 %loop-index5350 store <4 x i32> %3522, ptr %scevgep6984, align 1 %3523 = add i64 %loop-index5350, 16 %3524 = icmp uge i64 %3523, %1133 br i1 %3524, label %Flow8142, label %loop-memcpy-expansion5349, !amdgpu.uniform !42 Flow8141: ; preds = %Flow8139, %Flow8140 %3525 = phi i64 [ %6617, %Flow8139 ], [ %6615, %Flow8140 ] br label %post-loop-memcpy-expansion5348, !amdgpu.uniform !42 loop-memcpy-residual5351: ; preds = %loop-memcpy-residual5351.preheader, %loop-memcpy-residual5351 %residual-loop-index5353 = phi i64 [ %3527, %loop-memcpy-residual5351 ], [ 0, %loop-memcpy-residual5351.preheader ] %scevgep6989 = getelementptr i8, ptr addrspace(4) getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.21.38, i64 16), i64 %residual-loop-index5353, !amdgpu.uniform !42 %3526 = load i8, ptr addrspace(4) %scevgep6989, align 1 %scevgep6988 = getelementptr i8, ptr %scevgep6987, i64 %residual-loop-index5353 store i8 %3526, ptr %scevgep6988, align 1 %3527 = add i64 %residual-loop-index5353, 1 %3528 = icmp uge i64 %3527, %1132 br i1 %3528, label %Flow8139, label %loop-memcpy-residual5351, !amdgpu.uniform !42 Flow8139: ; preds = %loop-memcpy-residual5351 br label %Flow8141, !amdgpu.uniform !42 post-loop-memcpy-expansion5348: ; preds = %Flow8141 %tobool.not.i.i.i.i.i.i2398 = icmp eq i32 %.lcssa9186, 0 %conv.i.i.i.i.i.i2399 = zext i1 %tobool.not.i.i.i.i.i.i2398 to i32 fence release %3529 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i2400 = zext i32 %.lcssa9188 to i64 %arrayidx.i24.i.i.i.i.i2401 = getelementptr inbounds nuw i32, ptr %3529, i64 %idxprom.i23.i.i.i.i.i2400 store atomic i32 %conv.i.i.i.i.i.i2399, ptr %arrayidx.i24.i.i.i.i.i2401 monotonic, align 4 %3530 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i2402 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %3530, i64 %idxprom.i23.i.i.i.i.i2400 %3531 = load i64, ptr %arrayidx.i.i5.i.i2402, align 8, !tbaa !80 br label %while.cond.i.i.i.i2403, !amdgpu.uniform !42 while.cond.i.i.i.i2403: ; preds = %post-loop-memcpy-expansion5348, %Flow8138 %phi.broken8734 = phi i64 [ 0, %post-loop-memcpy-expansion5348 ], [ %3553, %Flow8138 ] %lsr.iv6995 = phi i64 [ %3551, %Flow8138 ], [ -31, %post-loop-memcpy-expansion5348 ] %lsr.iv6990 = phi ptr addrspace(4) [ %3550, %Flow8138 ], [ getelementptr (i8, ptr addrspace(4) @.str.21.38, i64 56), %post-loop-memcpy-expansion5348 ] %port.sroa.37.0.i.i2404 = phi i32 [ %3549, %Flow8138 ], [ %conv.i.i.i.i.i.i2399, %post-loop-memcpy-expansion5348 ] %idx.0.i.i.i.i2405 = phi i64 [ %3548, %Flow8138 ], [ 56, %post-loop-memcpy-expansion5348 ] %cmp.i.i.i.i2406 = icmp ult i64 %idx.0.i.i.i.i2405, sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.21.38 to ptr), i64 25) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.21.38 to ptr) to i64)) %3532 = call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i2406) %and.i.i.i.i6.i.i2407 = and i64 %3532, %3531 %tobool.not.i.i.i.i2408 = icmp ne i64 %and.i.i.i.i6.i.i2407, 0 %3533 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i2409 = getelementptr inbounds nuw i32, ptr %3533, i64 %idxprom.i23.i.i.i.i.i2400 %3534 = load atomic i32, ptr %arrayidx.i22.i.i.i2409 monotonic, align 4 %3535 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i2408) %3536 = extractvalue { i1, i64 } %3535, 0 %3537 = extractvalue { i1, i64 } %3535, 1 br i1 %3536, label %cond.false.i8.i.i.i.i2410, label %Flow8138 cond.false.i8.i.i.i.i2410: ; preds = %while.cond.i.i.i.i2403 %3538 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %3534) %3539 = icmp ne i32 %3538, %port.sroa.37.0.i.i2404 %3540 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3539) %3541 = extractvalue { i1, i64 } %3540, 0 %3542 = extractvalue { i1, i64 } %3540, 1 br i1 %3541, label %while.body.i.i21.i.i.i.i2411.preheader, label %Flow8137 while.body.i.i21.i.i.i.i2411.preheader: ; preds = %cond.false.i8.i.i.i.i2410 br label %while.body.i.i21.i.i.i.i2411, !amdgpu.uniform !42 Flow8137: ; preds = %Flow8136, %cond.false.i8.i.i.i.i2410 call void @llvm.amdgcn.end.cf.i64(i64 %3542) br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i2414, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i2411: ; preds = %while.body.i.i21.i.i.i.i2411.preheader, %while.body.i.i21.i.i.i.i2411 %phi.broken8733 = phi i64 [ 0, %while.body.i.i21.i.i.i.i2411.preheader ], [ %3546, %while.body.i.i21.i.i.i.i2411 ] call void @llvm.amdgcn.s.sleep(i32 2) %3543 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i2412 = getelementptr inbounds nuw i32, ptr %3543, i64 %idxprom.i23.i.i.i.i.i2400 %3544 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i2412 monotonic, align 4 %3545 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %3544) %cmp.i.not.i.i23.i.i.i.i2413 = icmp eq i32 %3545, %port.sroa.37.0.i.i2404 %3546 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i23.i.i.i.i2413, i64 %phi.broken8733) %3547 = call i1 @llvm.amdgcn.loop.i64(i64 %3546) br i1 %3547, label %Flow8136, label %while.body.i.i21.i.i.i.i2411 Flow8136: ; preds = %while.body.i.i21.i.i.i.i2411 %.lcssa9189 = phi i64 [ %3546, %while.body.i.i21.i.i.i.i2411 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9189) br label %Flow8137, !amdgpu.uniform !42 Flow8138: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2415, %while.cond.i.i.i.i2403 %3548 = phi i64 [ %add.i.i.i.i2418, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2415 ], [ poison, %while.cond.i.i.i.i2403 ] %3549 = phi i32 [ %conv.i.i26.i.i.i.i2416, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2415 ], [ poison, %while.cond.i.i.i.i2403 ] %3550 = phi ptr addrspace(4) [ %scevgep6991, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2415 ], [ poison, %while.cond.i.i.i.i2403 ] %3551 = phi i64 [ %lsr.iv.next6996, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2415 ], [ poison, %while.cond.i.i.i.i2403 ] %3552 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2415 ], [ true, %while.cond.i.i.i.i2403 ] call void @llvm.amdgcn.end.cf.i64(i64 %3537) %3553 = call i64 @llvm.amdgcn.if.break.i64(i1 %3552, i64 %phi.broken8734) %3554 = call i1 @llvm.amdgcn.loop.i64(i64 %3553) br i1 %3554, label %cond.false.i.i.i2425, label %while.cond.i.i.i.i2403 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i2414: ; preds = %Flow8137 fence acquire br i1 %cmp.i.i.i.i2406, label %if.then.i.i.i.i.i.i.i2419, label %Flow8135, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i2419: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i2414 %sub.i.i.i.i.i.i.i2421 = sub nuw i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.21.38 to ptr), i64 25) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.21.38 to ptr) to i64)), %idx.0.i.i.i.i2405 %spec.select.i.i.i36.i.i.i.i2422 = call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i2421, i64 64) %3555 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %3556 = and i64 %spec.select.i.i.i36.i.i.i.i2422, 15 %3557 = sub i64 %spec.select.i.i.i36.i.i.i.i2422, %3556 %3558 = icmp ne i64 %3557, 0 br i1 %3558, label %loop-memcpy-expansion5355.preheader, label %Flow8134, !amdgpu.uniform !42 loop-memcpy-expansion5355.preheader: ; preds = %if.then.i.i.i.i.i.i.i2419 %arrayidx.i20.i35.i.i.i.i2423 = getelementptr %"struct.rpc::Buffer", ptr %3555, i64 %idxprom.i19.i.i.i.i.i2393 %arrayidx.i22.i38.i.i.i.i2424 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i2423, i64 %sh_prom.i.i.i.i756 br label %loop-memcpy-expansion5355, !amdgpu.uniform !42 Flow8134: ; preds = %Flow8133, %if.then.i.i.i.i.i.i.i2419 br label %loop-memcpy-residual-header5358, !amdgpu.uniform !42 loop-memcpy-expansion5355: ; preds = %loop-memcpy-expansion5355.preheader, %loop-memcpy-expansion5355 %loop-index5356 = phi i64 [ %3561, %loop-memcpy-expansion5355 ], [ 0, %loop-memcpy-expansion5355.preheader ] %scevgep6992 = getelementptr i8, ptr addrspace(4) %lsr.iv6990, i64 %loop-index5356, !amdgpu.uniform !42 %3559 = load <4 x i32>, ptr addrspace(4) %scevgep6992, align 1 %3560 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i2424, i64 %loop-index5356 store <4 x i32> %3559, ptr %3560, align 1 %3561 = add i64 %loop-index5356, 16 %3562 = icmp uge i64 %3561, %3557 br i1 %3562, label %Flow8133, label %loop-memcpy-expansion5355, !amdgpu.uniform !42 Flow8132: ; preds = %Flow8131, %loop-memcpy-residual-header5358 br label %Flow8135, !amdgpu.uniform !42 loop-memcpy-residual5357: ; preds = %loop-memcpy-residual5357.preheader, %loop-memcpy-residual5357 %residual-loop-index5359 = phi i64 [ %3564, %loop-memcpy-residual5357 ], [ 0, %loop-memcpy-residual5357.preheader ] %scevgep7001 = getelementptr i8, ptr addrspace(4) %scevgep7000, i64 %residual-loop-index5359, !amdgpu.uniform !42 %3563 = load i8, ptr addrspace(4) %scevgep7001, align 1 %scevgep6999 = getelementptr i8, ptr %scevgep6998, i64 %residual-loop-index5359 store i8 %3563, ptr %scevgep6999, align 1 %3564 = add i64 %residual-loop-index5359, 1 %3565 = icmp uge i64 %3564, %3556 br i1 %3565, label %Flow8131, label %loop-memcpy-residual5357, !amdgpu.uniform !42 Flow8131: ; preds = %loop-memcpy-residual5357 br label %Flow8132, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2415: ; preds = %Flow8135 %conv.i.i26.i.i.i.i2416 = xor i32 %port.sroa.37.0.i.i2404, 1 fence release %3566 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i2417 = getelementptr inbounds nuw i32, ptr %3566, i64 %idxprom.i23.i.i.i.i.i2400 store atomic i32 %conv.i.i26.i.i.i.i2416, ptr %arrayidx.i24.i29.i.i.i.i2417 monotonic, align 4 %add.i.i.i.i2418 = add i64 %idx.0.i.i.i.i2405, 64 %scevgep6991 = getelementptr i8, ptr addrspace(4) %lsr.iv6990, i64 64 %lsr.iv.next6996 = add i64 %lsr.iv6995, -64 br label %Flow8138, !amdgpu.uniform !42 cond.false.i.i.i2425: ; preds = %Flow8138 %.lcssa9191 = phi i64 [ %3553, %Flow8138 ] %port.sroa.37.0.i.i2404.lcssa = phi i32 [ %port.sroa.37.0.i.i2404, %Flow8138 ] %.lcssa9190 = phi i32 [ %3534, %Flow8138 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9191) %3567 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa9190) %3568 = icmp ne i32 %3567, %port.sroa.37.0.i.i2404.lcssa %3569 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3568) %3570 = extractvalue { i1, i64 } %3569, 0 %3571 = extractvalue { i1, i64 } %3569, 1 br i1 %3570, label %while.body.i.i.i.i2426.preheader, label %Flow8130 while.body.i.i.i.i2426.preheader: ; preds = %cond.false.i.i.i2425 br label %while.body.i.i.i.i2426, !amdgpu.uniform !42 Flow8130: ; preds = %Flow8129, %cond.false.i.i.i2425 call void @llvm.amdgcn.end.cf.i64(i64 %3571) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit2447, !amdgpu.uniform !42 while.body.i.i.i.i2426: ; preds = %while.body.i.i.i.i2426.preheader, %while.body.i.i.i.i2426 %phi.broken8735 = phi i64 [ 0, %while.body.i.i.i.i2426.preheader ], [ %3575, %while.body.i.i.i.i2426 ] call void @llvm.amdgcn.s.sleep(i32 2) %3572 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i2427 = getelementptr inbounds nuw i32, ptr %3572, i64 %idxprom.i23.i.i.i.i.i2400 %3573 = load atomic i32, ptr %arrayidx.i.i.i8.i.i2427 monotonic, align 4 %3574 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %3573) %cmp.i.not.i.i.i.i2428 = icmp eq i32 %3574, %port.sroa.37.0.i.i2404.lcssa %3575 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i2428, i64 %phi.broken8735) %3576 = call i1 @llvm.amdgcn.loop.i64(i64 %3575) br i1 %3576, label %Flow8129, label %while.body.i.i.i.i2426 Flow8129: ; preds = %while.body.i.i.i.i2426 %.lcssa9192 = phi i64 [ %3575, %while.body.i.i.i.i2426 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9192) br label %Flow8130, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit2447: ; preds = %Flow8130 fence acquire call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %3577 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa9187, i1 true) %iszero.i.i.i.i.i13.i.i2430 = icmp ne i64 %.lcssa9187, 0 %cmp2.i.i.i.i14.i.i2431 = icmp eq i64 %3577, %sh_prom.i.i.i.i756 %cmp.i.i.i.i15.i.i2432 = select i1 %iszero.i.i.i.i.i13.i.i2430, i1 %cmp2.i.i.i.i14.i.i2431, i1 false %3578 = and i32 %.lcssa9188, 31 %conv4.i.i.i19.i.i2436 = zext i1 %cmp.i.i.i.i15.i.i2432 to i32 %shl.i.i.i20.i.i2437 = shl nuw i32 %conv4.i.i.i19.i.i2436, %3578 %xor.i.i.i21.i.i2438 = xor i32 %shl.i.i.i20.i.i2437, -1 %3579 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5771, !amdgpu.uniform !42 3580: ; preds = %ComputeEnd5772 %div8.i.i.i16.i.i2433 = lshr i32 %.lcssa9188, 5 %idxprom.i.i.i17.i.i2434 = zext nneg i32 %div8.i.i.i16.i.i2433 to i64 %3581 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i2434 %sunkaddr7437 = getelementptr inbounds i8, ptr addrspace(1) %3581, i64 40 %3582 = atomicrmw and ptr addrspace(1) %sunkaddr7437, i32 %.lcssa9193 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %3583, !amdgpu.uniform !42 3583: ; preds = %3580, %ComputeEnd5772 call void @llvm.amdgcn.end.cf.i64(i64 %7984) call void @llvm.amdgcn.wave.barrier() br label %Flow8149, !amdgpu.uniform !42 if.else: ; preds = %3432 %sub = sub nuw i64 %retval.1.i1278, %retval.1.i %mul = mul i64 %sub, 1000 %sunkaddr7438 = getelementptr inbounds i8, ptr %Options, i64 9 %3584 = load i8, ptr %sunkaddr7438, align 1, !tbaa !161, !range !152, !noundef !42 %loadedv72 = trunc nuw i8 %3584 to i1 %cmp73 = icmp ugt i64 %mul, 999999 %or.cond = select i1 %loadedv72, i1 true, i1 %cmp73 %or.cond.inv = xor i1 %or.cond, true %3585 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %or.cond.inv) %3586 = extractvalue { i1, i64 } %3585, 0 %3587 = extractvalue { i1, i64 } %3585, 1 br i1 %3586, label %if.else77, label %Flow8127 Flow8127: ; preds = %Flow8063, %if.else %3588 = phi i32 [ %4196, %Flow8063 ], [ poison, %if.else ] %3589 = phi i64 [ %4197, %Flow8063 ], [ poison, %if.else ] %3590 = phi i32 [ %4198, %Flow8063 ], [ poison, %if.else ] %3591 = phi i32 [ %4199, %Flow8063 ], [ poison, %if.else ] %3592 = phi i64 [ %4200, %Flow8063 ], [ poison, %if.else ] %3593 = phi i32 [ %4201, %Flow8063 ], [ poison, %if.else ] %3594 = phi i32 [ %4202, %Flow8063 ], [ poison, %if.else ] %3595 = phi i64 [ %4203, %Flow8063 ], [ poison, %if.else ] %3596 = phi i32 [ %4204, %Flow8063 ], [ poison, %if.else ] %3597 = phi i32 [ %4205, %Flow8063 ], [ poison, %if.else ] %3598 = phi i64 [ %4206, %Flow8063 ], [ poison, %if.else ] %3599 = phi i32 [ %4207, %Flow8063 ], [ poison, %if.else ] %3600 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %3587) %3601 = extractvalue { i1, i64 } %3600, 0 %3602 = extractvalue { i1, i64 } %3600, 1 br i1 %3601, label %if.then74, label %Flow8128 if.then74: ; preds = %Flow8127 call void @llvm.lifetime.start.p5(ptr addrspace(5) %buffer.i.i.i2988) #34, !noalias !162 %cmp7.i.i.i.i.i.i2449 = icmp uge i64 %mul, 1000000 br i1 %cmp7.i.i.i.i.i.i2449, label %while.body.i.i.preheader.i.i.i.i, label %Flow8126, !amdgpu.uniform !42 while.body.i.i.preheader.i.i.i.i: ; preds = %if.then74 %div = udiv i64 %mul, 1000000 br label %while.body.i.i.i.i.i.i2450, !amdgpu.uniform !42 Flow8126: ; preds = %Flow8125, %if.then74 %3603 = phi i1 [ %cmp.i.i.i.i.i.i.i.i2459.lcssa, %Flow8125 ], [ false, %if.then74 ] %3604 = phi i64 [ %writer.sroa.8.1.i.i.i.i.lcssa, %Flow8125 ], [ 0, %if.then74 ] br label %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIyNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEyRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i, !amdgpu.uniform !42 while.body.i.i.i.i.i.i2450: ; preds = %while.body.i.i.preheader.i.i.i.i, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i2463 %writer.sroa.8.0.i.i.i.i = phi i64 [ %writer.sroa.8.1.i.i.i.i, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i2463 ], [ 0, %while.body.i.i.preheader.i.i.i.i ] %value.addr.09.i.i.i.i.i.i2451 = phi i64 [ %div.i.i.i.i.i.i.i2452, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i2463 ], [ %div, %while.body.i.i.preheader.i.i.i.i ] br label %NodeBlock7541, !amdgpu.uniform !42 NodeBlock7541: ; preds = %while.body.i.i.i.i.i.i2450 %div.i.i.i.i.i.i.i2452 = udiv i64 %value.addr.09.i.i.i.i.i.i2451, 10 %.neg.i2453 = mul nuw nsw i64 %div.i.i.i.i.i.i.i2452, 246 %rem.i.i.i.i.i.i.decomposed.i2454 = add nuw nsw i64 %.neg.i2453, %value.addr.09.i.i.i.i.i.i2451 %conv.i.i.i.i.i.i.i2455 = trunc i64 %rem.i.i.i.i.i.i.decomposed.i2454 to i8 %3605 = zext i8 %conv.i.i.i.i.i.i.i2455 to i16 %Pivot7542 = icmp sge i16 %3605, 5 br i1 %Pivot7542, label %NodeBlock7539, label %Flow8124, !amdgpu.uniform !42 NodeBlock7539: ; preds = %NodeBlock7541 %Pivot7540 = icmp sge i16 %3605, 7 br i1 %Pivot7540, label %NodeBlock7537, label %Flow8115, !amdgpu.uniform !42 NodeBlock7537: ; preds = %NodeBlock7539 %Pivot7538 = icmp sge i16 %3605, 8 br i1 %Pivot7538, label %NodeBlock7535, label %Flow8111, !amdgpu.uniform !42 NodeBlock7535: ; preds = %NodeBlock7537 %Pivot7536 = icmp sge i16 %3605, 9 br i1 %Pivot7536, label %sw.bb9.i.i.i.i.i.i.i.i2456, label %Flow8109, !amdgpu.uniform !42 Flow8115: ; preds = %Flow8112, %NodeBlock7539 %3606 = phi i8 [ %3619, %Flow8112 ], [ poison, %NodeBlock7539 ] %3607 = phi i1 [ false, %Flow8112 ], [ true, %NodeBlock7539 ] br i1 %3607, label %NodeBlock7533, label %Flow8116, !amdgpu.uniform !42 NodeBlock7533: ; preds = %Flow8115 %Pivot7534 = icmp sge i16 %3605, 6 br i1 %Pivot7534, label %sw.bb6.i.i.i.i.i.i.i.i2600, label %Flow8113, !amdgpu.uniform !42 Flow8124: ; preds = %Flow8116, %NodeBlock7541 %3608 = phi i8 [ %3621, %Flow8116 ], [ poison, %NodeBlock7541 ] %3609 = phi i1 [ false, %Flow8116 ], [ true, %NodeBlock7541 ] br i1 %3609, label %NodeBlock7531, label %if.then.i.i.i.i.i.i.i2457, !amdgpu.uniform !42 NodeBlock7531: ; preds = %Flow8124 %Pivot7532 = icmp sge i16 %3605, 3 br i1 %Pivot7532, label %NodeBlock7529, label %Flow8122, !amdgpu.uniform !42 NodeBlock7529: ; preds = %NodeBlock7531 %Pivot7530 = icmp sge i16 %3605, 4 br i1 %Pivot7530, label %sw.bb4.i.i.i.i.i.i.i.i2602, label %Flow8117, !amdgpu.uniform !42 Flow8122: ; preds = %Flow8118, %NodeBlock7531 %3610 = phi i8 [ %3622, %Flow8118 ], [ poison, %NodeBlock7531 ] %3611 = phi i1 [ false, %Flow8118 ], [ true, %NodeBlock7531 ] br i1 %3611, label %NodeBlock7527, label %Flow8123, !amdgpu.uniform !42 NodeBlock7527: ; preds = %Flow8122 %Pivot7528 = icmp sge i16 %3605, 2 br i1 %Pivot7528, label %sw.bb2.i.i.i.i.i.i.i.i2604, label %Flow8120, !amdgpu.uniform !42 Flow8120: ; preds = %sw.bb2.i.i.i.i.i.i.i.i2604, %NodeBlock7527 %3612 = phi i1 [ false, %sw.bb2.i.i.i.i.i.i.i.i2604 ], [ true, %NodeBlock7527 ] br i1 %3612, label %LeafBlock7525, label %Flow8121, !amdgpu.uniform !42 LeafBlock7525: ; preds = %Flow8120 %SwitchLeaf7526 = icmp eq i16 %3605, 1 br i1 %SwitchLeaf7526, label %sw.bb1.i.i.i.i.i.i.i.i2605, label %Flow8119, !amdgpu.uniform !42 sw.bb1.i.i.i.i.i.i.i.i2605: ; preds = %LeafBlock7525 br label %Flow8119, !amdgpu.uniform !42 sw.bb2.i.i.i.i.i.i.i.i2604: ; preds = %NodeBlock7527 br label %Flow8120, !amdgpu.uniform !42 Flow8117: ; preds = %sw.bb4.i.i.i.i.i.i.i.i2602, %NodeBlock7529 %3613 = phi i1 [ false, %sw.bb4.i.i.i.i.i.i.i.i2602 ], [ true, %NodeBlock7529 ] br i1 %3613, label %sw.bb3.i.i.i.i.i.i.i.i2603, label %Flow8118, !amdgpu.uniform !42 sw.bb3.i.i.i.i.i.i.i.i2603: ; preds = %Flow8117 br label %Flow8118, !amdgpu.uniform !42 sw.bb4.i.i.i.i.i.i.i.i2602: ; preds = %NodeBlock7529 br label %Flow8117, !amdgpu.uniform !42 Flow8113: ; preds = %sw.bb6.i.i.i.i.i.i.i.i2600, %NodeBlock7533 %3614 = phi i1 [ false, %sw.bb6.i.i.i.i.i.i.i.i2600 ], [ true, %NodeBlock7533 ] br i1 %3614, label %sw.bb5.i.i.i.i.i.i.i.i2601, label %Flow8114, !amdgpu.uniform !42 sw.bb5.i.i.i.i.i.i.i.i2601: ; preds = %Flow8113 br label %Flow8114, !amdgpu.uniform !42 sw.bb6.i.i.i.i.i.i.i.i2600: ; preds = %NodeBlock7533 br label %Flow8113, !amdgpu.uniform !42 Flow8111: ; preds = %Flow8110, %NodeBlock7537 %3615 = phi i8 [ %3618, %Flow8110 ], [ poison, %NodeBlock7537 ] %3616 = phi i1 [ false, %Flow8110 ], [ true, %NodeBlock7537 ] br i1 %3616, label %sw.bb7.i.i.i.i.i.i.i.i2599, label %Flow8112, !amdgpu.uniform !42 sw.bb7.i.i.i.i.i.i.i.i2599: ; preds = %Flow8111 br label %Flow8112, !amdgpu.uniform !42 Flow8109: ; preds = %sw.bb9.i.i.i.i.i.i.i.i2456, %NodeBlock7535 %3617 = phi i1 [ false, %sw.bb9.i.i.i.i.i.i.i.i2456 ], [ true, %NodeBlock7535 ] br i1 %3617, label %sw.bb8.i.i.i.i.i.i.i.i2598, label %Flow8110, !amdgpu.uniform !42 sw.bb8.i.i.i.i.i.i.i.i2598: ; preds = %Flow8109 br label %Flow8110, !amdgpu.uniform !42 sw.bb9.i.i.i.i.i.i.i.i2456: ; preds = %NodeBlock7535 br label %Flow8109, !amdgpu.uniform !42 Flow8110: ; preds = %sw.bb8.i.i.i.i.i.i.i.i2598, %Flow8109 %3618 = phi i8 [ 56, %sw.bb8.i.i.i.i.i.i.i.i2598 ], [ 57, %Flow8109 ] br label %Flow8111, !amdgpu.uniform !42 Flow8112: ; preds = %sw.bb7.i.i.i.i.i.i.i.i2599, %Flow8111 %3619 = phi i8 [ 55, %sw.bb7.i.i.i.i.i.i.i.i2599 ], [ %3615, %Flow8111 ] br label %Flow8115, !amdgpu.uniform !42 Flow8114: ; preds = %sw.bb5.i.i.i.i.i.i.i.i2601, %Flow8113 %3620 = phi i8 [ 53, %sw.bb5.i.i.i.i.i.i.i.i2601 ], [ 54, %Flow8113 ] br label %Flow8116, !amdgpu.uniform !42 Flow8116: ; preds = %Flow8114, %Flow8115 %3621 = phi i8 [ %3620, %Flow8114 ], [ %3606, %Flow8115 ] br label %Flow8124, !amdgpu.uniform !42 Flow8118: ; preds = %sw.bb3.i.i.i.i.i.i.i.i2603, %Flow8117 %3622 = phi i8 [ 51, %sw.bb3.i.i.i.i.i.i.i.i2603 ], [ 52, %Flow8117 ] br label %Flow8122, !amdgpu.uniform !42 Flow8119: ; preds = %sw.bb1.i.i.i.i.i.i.i.i2605, %LeafBlock7525 %3623 = phi i8 [ 49, %sw.bb1.i.i.i.i.i.i.i.i2605 ], [ 48, %LeafBlock7525 ] br label %Flow8121, !amdgpu.uniform !42 Flow8121: ; preds = %Flow8119, %Flow8120 %3624 = phi i8 [ %3623, %Flow8119 ], [ 50, %Flow8120 ] br label %Flow8123, !amdgpu.uniform !42 Flow8123: ; preds = %Flow8121, %Flow8122 %3625 = phi i8 [ %3624, %Flow8121 ], [ %3610, %Flow8122 ] br label %if.then.i.i.i.i.i.i.i2457, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i2457: ; preds = %Flow8124, %Flow8123 %retval.0.i.i.i.i.i.i.i.i2458 = phi i8 [ %3608, %Flow8124 ], [ %3625, %Flow8123 ] %cmp.i.i.i.i.i.i.i.i2459 = icmp eq i64 %writer.sroa.8.0.i.i.i.i, 21 %cmp.i.i.i.i.i.i.i.i2459.inv = xor i1 %cmp.i.i.i.i.i.i.i.i2459, true br i1 %cmp.i.i.i.i.i.i.i.i2459.inv, label %if.then3.i.i.i.i.i.i.i2460, label %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i2463, !amdgpu.uniform !42 if.then3.i.i.i.i.i.i.i2460: ; preds = %if.then.i.i.i.i.i.i.i2457 %3626 = trunc i64 %writer.sroa.8.0.i.i.i.i to i32 %3627 = xor i32 %3626, -1 %3628 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i2988, i32 %3627 %arrayidx.i.i.i.i.i.i.i.i24616065 = getelementptr i8, ptr addrspace(5) %3628, i32 21 %inc.i.i.i.i.i.i.i2462 = add i64 %writer.sroa.8.0.i.i.i.i, 1 store i8 %retval.0.i.i.i.i.i.i.i.i2458, ptr addrspace(5) %arrayidx.i.i.i.i.i.i.i.i24616065, align 1, !tbaa !57, !noalias !162 br label %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i2463, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i2463: ; preds = %if.then3.i.i.i.i.i.i.i2460, %if.then.i.i.i.i.i.i.i2457 %writer.sroa.8.1.i.i.i.i = phi i64 [ %inc.i.i.i.i.i.i.i2462, %if.then3.i.i.i.i.i.i.i2460 ], [ 21, %if.then.i.i.i.i.i.i.i2457 ] %cmp.i.i.i.i.i.i2464 = icmp samesign ult i64 %value.addr.09.i.i.i.i.i.i2451, 10 %.not.i.i.i.i.i.i2465 = or i1 %cmp.i.i.i.i.i.i.i.i2459, %cmp.i.i.i.i.i.i2464 br i1 %.not.i.i.i.i.i.i2465, label %Flow8125, label %while.body.i.i.i.i.i.i2450, !amdgpu.uniform !42 Flow8125: ; preds = %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i2463 %writer.sroa.8.1.i.i.i.i.lcssa = phi i64 [ %writer.sroa.8.1.i.i.i.i, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i2463 ] %cmp.i.i.i.i.i.i.i.i2459.lcssa = phi i1 [ %cmp.i.i.i.i.i.i.i.i2459, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i2463 ] br label %Flow8126, !amdgpu.uniform !42 Flow8128: ; preds = %3892, %Flow8127 %3629 = phi i32 [ %1215, %3892 ], [ %3588, %Flow8127 ] %3630 = phi i64 [ %1214, %3892 ], [ %3589, %Flow8127 ] %3631 = phi i32 [ %1213, %3892 ], [ %3590, %Flow8127 ] %3632 = phi i32 [ %1212, %3892 ], [ %3591, %Flow8127 ] %3633 = phi i64 [ %1211, %3892 ], [ %3592, %Flow8127 ] %3634 = phi i32 [ %1210, %3892 ], [ %3593, %Flow8127 ] %3635 = phi i32 [ %1209, %3892 ], [ %3594, %Flow8127 ] %3636 = phi i64 [ %1208, %3892 ], [ %3595, %Flow8127 ] %3637 = phi i32 [ %1207, %3892 ], [ %3596, %Flow8127 ] %3638 = phi i32 [ %1206, %3892 ], [ %3597, %Flow8127 ] %3639 = phi i64 [ %1205, %3892 ], [ %3598, %Flow8127 ] %3640 = phi i32 [ %1204, %3892 ], [ %3599, %Flow8127 ] %3641 = phi i32 [ %.lcssa9175, %3892 ], [ %1203, %Flow8127 ] %3642 = phi i64 [ %.lcssa9176, %3892 ], [ %1202, %Flow8127 ] %3643 = phi i32 [ %.lcssa9177, %3892 ], [ %1201, %Flow8127 ] %3644 = phi i32 [ %.lcssa9164, %3892 ], [ %1200, %Flow8127 ] %3645 = phi i64 [ %.lcssa9165, %3892 ], [ %1199, %Flow8127 ] %3646 = phi i32 [ %.lcssa9166, %3892 ], [ %1198, %Flow8127 ] call void @llvm.amdgcn.end.cf.i64(i64 %3602) br label %Flow8148, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git15IntegerToStringIyNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEyRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i: ; preds = %Flow8126 %cmp.i15.i.i.i.i = icmp ne i64 %3604, 0 %or.cond.not.i.i.i.i2467 = select i1 %3603, i1 true, i1 %cmp.i15.i.i.i.i %or.cond.not.i.i.i.i2467.inv = xor i1 %or.cond.not.i.i.i.i2467, true br i1 %or.cond.not.i.i.i.i2467.inv, label %if.then3.i.i.lr.ph.i.i.i.i2468, label %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIyNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ey.exit.i.i.i, !amdgpu.uniform !42 if.then3.i.i.lr.ph.i.i.i.i2468: ; preds = %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIyNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEyRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i %sunkaddr7439 = getelementptr inbounds i8, ptr addrspace(5) %buffer.i.i.i2988, i32 20 store i8 48, ptr addrspace(5) %sunkaddr7439, align 4, !tbaa !57, !noalias !162 br label %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIyNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ey.exit.i.i.i, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git15IntegerToStringIyNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ey.exit.i.i.i: ; preds = %if.then3.i.i.lr.ph.i.i.i.i2468, %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIyNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEyRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i %writer.sroa.8.4.i.i.i.i = phi i64 [ 1, %if.then3.i.i.lr.ph.i.i.i.i2468 ], [ %3604, %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIyNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEyRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i ] %sunkaddr7440 = getelementptr inbounds i8, ptr addrspace(5) %buffer.i.i.i2988, i32 24 store i64 %writer.sroa.8.4.i.i.i.i, ptr addrspace(5) %sunkaddr7440, align 8, !tbaa !167, !noalias !162 %cmp.i.not.i.i.i.i.i2471 = icmp ne i64 %writer.sroa.8.4.i.i.i.i, 0 br i1 %cmp.i.not.i.i.i.i.i2471, label %if.then.i.i.i.i.i.i2472, label %Flow8108, !amdgpu.uniform !42 if.then.i.i.i.i.i.i2472: ; preds = %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIyNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ey.exit.i.i.i %3647 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %writer.sroa.8.4.i.i.i.i, i64 1) %ov7442 = extractvalue { i64, i1 } %3647, 1 %ov7442.inv = xor i1 %ov7442, true br i1 %ov7442.inv, label %if.end.i.i.i.i.i.i.i2475, label %Flow8107, !amdgpu.uniform !42 if.end.i.i.i.i.i.i.i2475: ; preds = %if.then.i.i.i.i.i.i2472 %math7441 = extractvalue { i64, i1 } %3647, 0 %cmp2.i.i.i.i.i.i.i2476 = icmp ult i64 %math7441, 1676976733973595601 br i1 %cmp2.i.i.i.i.i.i.i2476, label %if.then3.i.i.i.i4.i.i.i2595, label %if.end4.i.i.i.i.i.i.i2477, !amdgpu.uniform !42 if.then3.i.i.i.i4.i.i.i2595: ; preds = %if.end.i.i.i.i.i.i.i2475 %mul.i.i.i.i.i.i.i2596 = mul nuw i64 %math7441, 11 %div18.i.i.i.i.i.i.i2597 = lshr i64 %mul.i.i.i.i.i.i.i2596, 3 br label %if.end4.i.i.i.i.i.i.i2477, !amdgpu.uniform !42 Flow8107: ; preds = %if.end4.i.i.i.i.i.i.i2477, %if.then.i.i.i.i.i.i2472 %3648 = phi ptr [ %cond.i.i.i2485, %if.end4.i.i.i.i.i.i.i2477 ], [ addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr), %if.then.i.i.i.i.i.i2472 ] br label %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i2487, !amdgpu.uniform !42 if.end4.i.i.i.i.i.i.i2477: ; preds = %if.then3.i.i.i.i4.i.i.i2595, %if.end.i.i.i.i.i.i.i2475 %new_capacity.addr.0.i.i.i.i.i.i.i2478 = phi i64 [ %div18.i.i.i.i.i.i.i2597, %if.then3.i.i.i.i4.i.i.i2595 ], [ %math7441, %if.end.i.i.i.i.i.i.i2475 ] %sub.i.i.i2479 = add i64 %new_capacity.addr.0.i.i.i.i.i.i.i2478, 7 %div2.i.i.i2480 = and i64 %sub.i.i.i2479, -8 %3649 = load ptr, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %add.ptr.i.i.i2481 = getelementptr inbounds nuw i8, ptr %3649, i64 %div2.i.i.i2480 store ptr %add.ptr.i.i.i2481, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %sub.ptr.lhs.cast.i.i.i2482 = ptrtoint ptr %add.ptr.i.i.i2481 to i64 %sub.ptr.sub.i.i.i2483 = sub i64 %sub.ptr.lhs.cast.i.i.i2482, ptrtoint (ptr addrspacecast (ptr addrspace(1) @_ZN12_GLOBAL__N_16memoryE to ptr) to i64) %cmp.i.i.i2484 = icmp ugt i64 %sub.ptr.sub.i.i.i2483, 65335 %cond.i.i.i2485 = select i1 %cmp.i.i.i2484, ptr null, ptr %3649 br label %Flow8107, !amdgpu.uniform !42 Flow8108: ; preds = %Flow8106, %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIyNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ey.exit.i.i.i %3650 = phi ptr [ %3648, %Flow8106 ], [ addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr), %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIyNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ey.exit.i.i.i ] br label %if.end.i.i.i.i.i.i2489, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i2487: ; preds = %Flow8107 br label %loadstoreloop4957, !amdgpu.uniform !42 loadstoreloop4957: ; preds = %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i2487, %loadstoreloop4957 %3651 = phi i64 [ %3653, %loadstoreloop4957 ], [ 0, %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i2487 ] %3652 = getelementptr i8, ptr %3648, i64 %3651 store i8 0, ptr %3652, align 1 %3653 = add i64 %3651, 1 %3654 = icmp uge i64 %3653, %writer.sroa.8.4.i.i.i.i br i1 %3654, label %Flow8106, label %loadstoreloop4957, !amdgpu.uniform !42 Flow8106: ; preds = %loadstoreloop4957 br label %Flow8108, !amdgpu.uniform !42 if.end.i.i.i.i.i.i2489: ; preds = %Flow8108 %cmp.not.i6.i.i.i.i.i.i2491 = icmp ne ptr %3650, addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr) br i1 %cmp.not.i6.i.i.i.i.i.i2491, label %if.then.i.i.i.i2.i.i.i2492, label %_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEy.exit.i, !amdgpu.uniform !42 if.then.i.i.i.i2.i.i.i2492: ; preds = %if.end.i.i.i.i.i.i2489 %arrayidx.i.i.i.i3.i.i.i2493 = getelementptr inbounds nuw i8, ptr %3650, i64 %writer.sroa.8.4.i.i.i.i store i8 0, ptr %arrayidx.i.i.i.i3.i.i.i2493, align 1, !tbaa !57, !noalias !162 br label %_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEy.exit.i, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git3cpp9to_stringEy.exit.i: ; preds = %if.then.i.i.i.i2.i.i.i2492, %if.end.i.i.i.i.i.i2489 %3655 = trunc i64 %writer.sroa.8.4.i.i.i.i to i32 %3656 = and i64 %writer.sroa.8.4.i.i.i.i, 15 %3657 = sub i64 %writer.sroa.8.4.i.i.i.i, %3656 %3658 = icmp ne i64 %3657, 0 br i1 %3658, label %loop-memcpy-expansion5133.preheader, label %Flow8105, !amdgpu.uniform !42 loop-memcpy-expansion5133.preheader: ; preds = %_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEy.exit.i %3659 = sub i32 0, %3655 %scevgep6928 = getelementptr i8, ptr addrspace(5) %scevgep6927, i32 %3659 br label %loop-memcpy-expansion5133, !amdgpu.uniform !42 Flow8105: ; preds = %Flow8104, %_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEy.exit.i br label %loop-memcpy-residual-header5136, !amdgpu.uniform !42 loop-memcpy-expansion5133: ; preds = %loop-memcpy-expansion5133.preheader, %loop-memcpy-expansion5133 %lsr.iv6929 = phi ptr addrspace(5) [ %scevgep6930, %loop-memcpy-expansion5133 ], [ %scevgep6928, %loop-memcpy-expansion5133.preheader ], !amdgpu.uniform !42 %loop-index5134 = phi i64 [ %3662, %loop-memcpy-expansion5133 ], [ 0, %loop-memcpy-expansion5133.preheader ] %3660 = load <4 x i32>, ptr addrspace(5) %lsr.iv6929, align 1 %3661 = getelementptr i8, ptr %3650, i64 %loop-index5134 store <4 x i32> %3660, ptr %3661, align 1 %3662 = add i64 %loop-index5134, 16 %scevgep6930 = getelementptr i8, ptr addrspace(5) %lsr.iv6929, i32 16 %3663 = icmp uge i64 %3662, %3657 br i1 %3663, label %Flow8104, label %loop-memcpy-expansion5133, !amdgpu.uniform !42 Flow8103: ; preds = %Flow8102, %loop-memcpy-residual-header5136 br label %post-loop-memcpy-expansion5132, !amdgpu.uniform !42 loop-memcpy-residual5135: ; preds = %loop-memcpy-residual5135.preheader, %loop-memcpy-residual5135 %lsr.iv6933 = phi ptr addrspace(5) [ %scevgep6934, %loop-memcpy-residual5135 ], [ %scevgep6932, %loop-memcpy-residual5135.preheader ], !amdgpu.uniform !42 %residual-loop-index5137 = phi i64 [ %3665, %loop-memcpy-residual5135 ], [ 0, %loop-memcpy-residual5135.preheader ] %3664 = load i8, ptr addrspace(5) %lsr.iv6933, align 1 %scevgep6936 = getelementptr i8, ptr %scevgep6935, i64 %residual-loop-index5137 store i8 %3664, ptr %scevgep6936, align 1 %3665 = add i64 %residual-loop-index5137, 1 %scevgep6934 = getelementptr i8, ptr addrspace(5) %lsr.iv6933, i32 1 %3666 = icmp uge i64 %3665, %3656 br i1 %3666, label %Flow8102, label %loop-memcpy-residual5135, !amdgpu.uniform !42 Flow8102: ; preds = %loop-memcpy-residual5135 br label %Flow8103, !amdgpu.uniform !42 post-loop-memcpy-expansion5132: ; preds = %Flow8103 call void @llvm.lifetime.end.p5(ptr addrspace(5) %buffer.i.i.i2988) #34, !noalias !162 br label %for.cond.i.i.i2497, !amdgpu.uniform !42 for.cond.i.i.i2497: ; preds = %post-loop-memcpy-expansion5132, %Flow8101 %3667 = phi i32 [ %3704, %Flow8101 ], [ %1198, %post-loop-memcpy-expansion5132 ] %3668 = phi i64 [ %3705, %Flow8101 ], [ %1199, %post-loop-memcpy-expansion5132 ] %3669 = phi i32 [ %3706, %Flow8101 ], [ %1200, %post-loop-memcpy-expansion5132 ] %retval.sroa.6.0.i.i.i2498 = phi i32 [ %3709, %Flow8101 ], [ undef, %post-loop-memcpy-expansion5132 ] %retval.sroa.2.0.i.i.i2500 = phi i64 [ %3708, %Flow8101 ], [ undef, %post-loop-memcpy-expansion5132 ] %retval.sroa.8.0.i.i.i2501 = phi i32 [ %3707, %Flow8101 ], [ undef, %post-loop-memcpy-expansion5132 ] %index.0.i.i.i2502 = phi i32 [ %3711, %Flow8101 ], [ 0, %post-loop-memcpy-expansion5132 ] %3670 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i2503 = icmp ult i32 %index.0.i.i.i2502, %3670 %spec.store.select.i.i.i2504 = select i1 %cmp.not.i.i.i2503, i32 %index.0.i.i.i2502, i32 0 %3671 = call i64 @llvm.amdgcn.ballot.i64(i1 true) %3672 = and i32 %spec.store.select.i.i.i2504, 31 %3673 = lshr i64 %3671, %sh_prom.i.i.i.i756 %3674 = trunc i64 %3673 to i32 %conv4.i.i.i.i.i2508 = and i32 %3674, 1 %shl.i.i.i.i.i2509 = shl nuw i32 %conv4.i.i.i.i.i2508, %3672 br label %ComputeLoop5775, !amdgpu.uniform !42 3675: ; preds = %ComputeEnd5776 %sunkaddr7443 = getelementptr inbounds i8, ptr addrspace(1) %7994, i64 40 %3676 = atomicrmw or ptr addrspace(1) %sunkaddr7443, i32 %.lcssa9161 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %3677, !amdgpu.uniform !42 3677: ; preds = %3675, %ComputeEnd5776 %3678 = phi i32 [ %3676, %3675 ], [ poison, %ComputeEnd5776 ] call void @llvm.amdgcn.end.cf.i64(i64 %8003) %3679 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %3678) %3680 = or i32 %3679, %.lcssa9162 %shl5.i.i.i.i.i2510 = shl nuw i32 1, %3672 %and.i.i.i.i.i2511 = and i32 %shl5.i.i.i.i.i2510, %3680 %tobool3.i.i.i.i2512 = icmp ne i32 %and.i.i.i.i.i2511, 0 %3681 = call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i2512) %and.i.i.i.i.i.i2513 = and i64 %3681, %3671 %cmp.i.not.i.i.i2514 = icmp ne i64 %3671, %and.i.i.i.i.i.i2513 br i1 %cmp.i.not.i.i.i2514, label %if.then.i.i.i.i2515, label %Flow8100, !amdgpu.uniform !42 if.then.i.i.i.i2515: ; preds = %3677 fence syncscope("agent") acquire %3682 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %3683 = extractelement <2 x i64> %3682, i32 0 %3684 = inttoptr i64 %3683 to ptr %3685 = extractelement <2 x i64> %3682, i32 1 %3686 = inttoptr i64 %3685 to ptr %idxprom.i.i.i.i2516 = zext i32 %spec.store.select.i.i.i2504 to i64 %arrayidx.i.i.i.i2517 = getelementptr inbounds nuw i32, ptr %3684, i64 %idxprom.i.i.i.i2516, !amdgpu.uniform !42 %3687 = load atomic i32, ptr %arrayidx.i.i.i.i2517 monotonic, align 4 %3688 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %3687) %arrayidx.i45.i.i.i2518 = getelementptr inbounds nuw i32, ptr %3686, i64 %idxprom.i.i.i.i2516, !amdgpu.uniform !42 %3689 = load atomic i32, ptr %arrayidx.i45.i.i.i2518 monotonic, align 4 %3690 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %3689) %cmp.i46.not.i.i.i2519 = icmp ne i32 %3688, %3690 br i1 %cmp.i46.not.i.i.i2519, label %if.then12.i.i.i2520, label %Flow8098, !amdgpu.uniform !42 if.then12.i.i.i2520: ; preds = %if.then.i.i.i.i2515 fence syncscope("agent") release %3691 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %3671, i1 true) %iszero.i.i.i.i.i.i.i2521 = icmp ne i64 %3671, 0 %cmp2.i.i.i.i.i.i2522 = icmp eq i64 %3691, %sh_prom.i.i.i.i756 %cmp.i.i.i.i.i2.i2523 = select i1 %iszero.i.i.i.i.i.i.i2521, i1 %cmp2.i.i.i.i.i.i2522, i1 false %conv4.i.i51.i.i.i2524 = zext i1 %cmp.i.i.i.i.i2.i2523 to i32 %shl.i.i52.i.i.i2525 = shl nuw i32 %conv4.i.i51.i.i.i2524, %3672 %xor.i.i.i.i.i2526 = xor i32 %shl.i.i52.i.i.i2525, -1 %3692 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5780, !amdgpu.uniform !42 3693: ; preds = %ComputeEnd5781 %sunkaddr7444 = getelementptr inbounds i8, ptr addrspace(1) %7994, i64 40 %3694 = atomicrmw and ptr addrspace(1) %sunkaddr7444, i32 %.lcssa9163 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %3695, !amdgpu.uniform !42 3695: ; preds = %3693, %ComputeEnd5781 call void @llvm.amdgcn.end.cf.i64(i64 %8021) call void @llvm.amdgcn.wave.barrier() br label %Flow8098, !amdgpu.uniform !42 if.end14.i.i.i2587: ; preds = %Flow8098 %3696 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %3671, i1 true) %iszero.i.i.i.i.i.i2588 = icmp ne i64 %3671, 0 %cmp2.i.i.i.i.i2589 = icmp eq i64 %3696, %sh_prom.i.i.i.i756 %cmp.i.i.i.i.i2590 = select i1 %iszero.i.i.i.i.i.i2588, i1 %cmp2.i.i.i.i.i2589, i1 false %3697 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i2590) %3698 = extractvalue { i1, i64 } %3697, 0 %3699 = extractvalue { i1, i64 } %3697, 1 br i1 %3698, label %if.then16.i.i.i2592, label %if.end22.i.i.i2591 if.then16.i.i.i2592: ; preds = %if.end14.i.i.i2587 %3700 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i2593 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %3700, i64 %idxprom.i.i.i.i2516, i32 1 store i32 1660944387, ptr %opcode.i.i.i2593, align 8, !tbaa !77 %arrayidx21.i.i.i2594 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %3700, i64 %idxprom.i.i.i.i2516 store i64 %3671, ptr %arrayidx21.i.i.i2594, align 8, !tbaa !80 br label %if.end22.i.i.i2591, !amdgpu.uniform !42 Flow8099: ; preds = %if.end22.i.i.i2591, %Flow8098 %3701 = phi i32 [ %3688, %if.end22.i.i.i2591 ], [ %retval.sroa.8.0.i.i.i2501, %Flow8098 ] %3702 = phi i64 [ %3671, %if.end22.i.i.i2591 ], [ %retval.sroa.2.0.i.i.i2500, %Flow8098 ] %3703 = phi i32 [ %spec.store.select.i.i.i2504, %if.end22.i.i.i2591 ], [ %retval.sroa.6.0.i.i.i2498, %Flow8098 ] br label %cleanup26.i.i.i2527, !amdgpu.uniform !42 if.end22.i.i.i2591: ; preds = %if.then16.i.i.i2592, %if.end14.i.i.i2587 call void @llvm.amdgcn.end.cf.i64(i64 %3699) call void @llvm.amdgcn.wave.barrier() br label %Flow8099, !amdgpu.uniform !42 Flow8100: ; preds = %cleanup26.i.i.i2527, %3677 %3704 = phi i32 [ %3703, %cleanup26.i.i.i2527 ], [ %3667, %3677 ] %3705 = phi i64 [ %3702, %cleanup26.i.i.i2527 ], [ %3668, %3677 ] %3706 = phi i32 [ %3701, %cleanup26.i.i.i2527 ], [ %3669, %3677 ] %3707 = phi i32 [ %3701, %cleanup26.i.i.i2527 ], [ %retval.sroa.8.0.i.i.i2501, %3677 ] %3708 = phi i64 [ %3702, %cleanup26.i.i.i2527 ], [ %retval.sroa.2.0.i.i.i2500, %3677 ] %3709 = phi i32 [ %3703, %cleanup26.i.i.i2527 ], [ %retval.sroa.6.0.i.i.i2498, %3677 ] %3710 = phi i1 [ %cmp.i46.not.i.i.i2519, %cleanup26.i.i.i2527 ], [ true, %3677 ] br i1 %3710, label %for.inc.i.i.i2532, label %Flow8101, !amdgpu.uniform !42 cleanup26.i.i.i2527: ; preds = %Flow8099 br label %Flow8100, !amdgpu.uniform !42 for.inc.i.i.i2532: ; preds = %Flow8100 %inc.i.i.i2537 = add i32 %spec.store.select.i.i.i2504, 1 br label %Flow8101, !amdgpu.uniform !42 Flow8101: ; preds = %for.inc.i.i.i2532, %Flow8100 %3711 = phi i32 [ %inc.i.i.i2537, %for.inc.i.i.i2532 ], [ poison, %Flow8100 ] %3712 = phi i1 [ false, %for.inc.i.i.i2532 ], [ true, %Flow8100 ] br i1 %3712, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2538, label %for.cond.i.i.i2497, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2538: ; preds = %Flow8101 %.lcssa9166 = phi i32 [ %3704, %Flow8101 ] %.lcssa9165 = phi i64 [ %3705, %Flow8101 ] %.lcssa9164 = phi i32 [ %3706, %Flow8101 ] fence acquire %3713 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i2539 = shl i32 %.lcssa9166, 6 %idxprom.i19.i.i.i.i.i2540 = zext i32 %mul.i.i.i.i.i.i2539 to i64 %arrayidx.i20.i.i.i.i.i2541 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %3713, i64 %idxprom.i19.i.i.i.i.i2540 %arrayidx.i22.i.i.i.i.i2542 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i2541, i64 %sh_prom.i.i.i.i756 store i64 %writer.sroa.8.4.i.i.i.i, ptr %arrayidx.i22.i.i.i.i.i2542, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i2543 = call i64 @llvm.umin.i64(i64 %writer.sroa.8.4.i.i.i.i, i64 56) %3714 = and i64 %spec.select.i.i.i.i.i.i.i2543, 15 %3715 = sub i64 %spec.select.i.i.i.i.i.i.i2543, %3714 %3716 = icmp ne i64 %3715, 0 br i1 %3716, label %loop-memcpy-expansion5037.preheader, label %Flow8097, !amdgpu.uniform !42 loop-memcpy-expansion5037.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2538 %scevgep6937 = getelementptr i8, ptr %3713, i64 8 %scevgep6938 = getelementptr i8, ptr %scevgep6937, i64 %1474 %3717 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i2540, 6 %scevgep6939 = getelementptr i8, ptr %scevgep6938, i64 %3717 br label %loop-memcpy-expansion5037, !amdgpu.uniform !42 Flow8097: ; preds = %Flow8096, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2538 br label %loop-memcpy-residual-header5040, !amdgpu.uniform !42 loop-memcpy-expansion5037: ; preds = %loop-memcpy-expansion5037.preheader, %loop-memcpy-expansion5037 %loop-index5038 = phi i64 [ %3720, %loop-memcpy-expansion5037 ], [ 0, %loop-memcpy-expansion5037.preheader ] %3718 = getelementptr i8, ptr %3650, i64 %loop-index5038, !amdgpu.uniform !42 %3719 = load <4 x i32>, ptr %3718, align 1 %scevgep6940 = getelementptr i8, ptr %scevgep6939, i64 %loop-index5038 store <4 x i32> %3719, ptr %scevgep6940, align 1 %3720 = add i64 %loop-index5038, 16 %3721 = icmp uge i64 %3720, %3715 br i1 %3721, label %Flow8096, label %loop-memcpy-expansion5037, !amdgpu.uniform !42 Flow8095: ; preds = %Flow8093, %Flow8094 %3722 = phi i64 [ %6281, %Flow8093 ], [ %6278, %Flow8094 ] br label %post-loop-memcpy-expansion5036, !amdgpu.uniform !42 loop-memcpy-residual5039: ; preds = %loop-memcpy-residual5039.preheader, %loop-memcpy-residual5039 %residual-loop-index5041 = phi i64 [ %3724, %loop-memcpy-residual5039 ], [ 0, %loop-memcpy-residual5039.preheader ] %scevgep6946 = getelementptr i8, ptr %scevgep6945, i64 %residual-loop-index5041, !amdgpu.uniform !42 %3723 = load i8, ptr %scevgep6946, align 1 %scevgep6944 = getelementptr i8, ptr %scevgep6943, i64 %residual-loop-index5041 store i8 %3723, ptr %scevgep6944, align 1 %3724 = add i64 %residual-loop-index5041, 1 %3725 = icmp uge i64 %3724, %3714 br i1 %3725, label %Flow8093, label %loop-memcpy-residual5039, !amdgpu.uniform !42 Flow8093: ; preds = %loop-memcpy-residual5039 br label %Flow8095, !amdgpu.uniform !42 post-loop-memcpy-expansion5036: ; preds = %Flow8095 %tobool.not.i.i.i.i.i.i2545 = icmp eq i32 %.lcssa9164, 0 %conv.i.i.i.i.i.i2546 = zext i1 %tobool.not.i.i.i.i.i.i2545 to i32 fence release %3726 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i2547 = zext i32 %.lcssa9166 to i64 %arrayidx.i24.i.i.i.i.i2548 = getelementptr inbounds nuw i32, ptr %3726, i64 %idxprom.i23.i.i.i.i.i2547 store atomic i32 %conv.i.i.i.i.i.i2546, ptr %arrayidx.i24.i.i.i.i.i2548 monotonic, align 4 %3727 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i2549 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %3727, i64 %idxprom.i23.i.i.i.i.i2547 %3728 = load i64, ptr %arrayidx.i.i5.i.i2549, align 8, !tbaa !80 %scevgep6947 = getelementptr i8, ptr %3650, i64 56 %3729 = add i64 %writer.sroa.8.4.i.i.i.i, -56 br label %while.cond.i.i.i.i2550, !amdgpu.uniform !42 while.cond.i.i.i.i2550: ; preds = %post-loop-memcpy-expansion5036, %Flow8092 %phi.broken8728 = phi i64 [ 0, %post-loop-memcpy-expansion5036 ], [ %3751, %Flow8092 ] %lsr.iv6953 = phi i64 [ %3749, %Flow8092 ], [ %3729, %post-loop-memcpy-expansion5036 ] %lsr.iv6948 = phi ptr [ %3748, %Flow8092 ], [ %scevgep6947, %post-loop-memcpy-expansion5036 ] %port.sroa.37.0.i.i2551 = phi i32 [ %3747, %Flow8092 ], [ %conv.i.i.i.i.i.i2546, %post-loop-memcpy-expansion5036 ] %idx.0.i.i.i.i2552 = phi i64 [ %3746, %Flow8092 ], [ 56, %post-loop-memcpy-expansion5036 ] %cmp.i.i.i.i2553 = icmp ugt i64 %writer.sroa.8.4.i.i.i.i, %idx.0.i.i.i.i2552 %3730 = call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i2553) %and.i.i.i.i6.i.i2554 = and i64 %3730, %3728 %tobool.not.i.i.i.i2555 = icmp ne i64 %and.i.i.i.i6.i.i2554, 0 %3731 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i2556 = getelementptr inbounds nuw i32, ptr %3731, i64 %idxprom.i23.i.i.i.i.i2547 %3732 = load atomic i32, ptr %arrayidx.i22.i.i.i2556 monotonic, align 4 %3733 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i2555) %3734 = extractvalue { i1, i64 } %3733, 0 %3735 = extractvalue { i1, i64 } %3733, 1 br i1 %3734, label %cond.false.i8.i.i.i.i2557, label %Flow8092 cond.false.i8.i.i.i.i2557: ; preds = %while.cond.i.i.i.i2550 %3736 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %3732) %3737 = icmp ne i32 %3736, %port.sroa.37.0.i.i2551 %3738 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3737) %3739 = extractvalue { i1, i64 } %3738, 0 %3740 = extractvalue { i1, i64 } %3738, 1 br i1 %3739, label %while.body.i.i21.i.i.i.i2558.preheader, label %Flow8091 while.body.i.i21.i.i.i.i2558.preheader: ; preds = %cond.false.i8.i.i.i.i2557 br label %while.body.i.i21.i.i.i.i2558, !amdgpu.uniform !42 Flow8091: ; preds = %Flow8090, %cond.false.i8.i.i.i.i2557 call void @llvm.amdgcn.end.cf.i64(i64 %3740) br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i2561, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i2558: ; preds = %while.body.i.i21.i.i.i.i2558.preheader, %while.body.i.i21.i.i.i.i2558 %phi.broken8727 = phi i64 [ 0, %while.body.i.i21.i.i.i.i2558.preheader ], [ %3744, %while.body.i.i21.i.i.i.i2558 ] call void @llvm.amdgcn.s.sleep(i32 2) %3741 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i2559 = getelementptr inbounds nuw i32, ptr %3741, i64 %idxprom.i23.i.i.i.i.i2547 %3742 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i2559 monotonic, align 4 %3743 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %3742) %cmp.i.not.i.i23.i.i.i.i2560 = icmp eq i32 %3743, %port.sroa.37.0.i.i2551 %3744 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i23.i.i.i.i2560, i64 %phi.broken8727) %3745 = call i1 @llvm.amdgcn.loop.i64(i64 %3744) br i1 %3745, label %Flow8090, label %while.body.i.i21.i.i.i.i2558 Flow8090: ; preds = %while.body.i.i21.i.i.i.i2558 %.lcssa9167 = phi i64 [ %3744, %while.body.i.i21.i.i.i.i2558 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9167) br label %Flow8091, !amdgpu.uniform !42 Flow8092: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2562, %while.cond.i.i.i.i2550 %3746 = phi i64 [ %add.i.i.i.i2565, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2562 ], [ poison, %while.cond.i.i.i.i2550 ] %3747 = phi i32 [ %conv.i.i26.i.i.i.i2563, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2562 ], [ poison, %while.cond.i.i.i.i2550 ] %3748 = phi ptr [ %scevgep6949, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2562 ], [ poison, %while.cond.i.i.i.i2550 ] %3749 = phi i64 [ %lsr.iv.next6954, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2562 ], [ poison, %while.cond.i.i.i.i2550 ] %3750 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2562 ], [ true, %while.cond.i.i.i.i2550 ] call void @llvm.amdgcn.end.cf.i64(i64 %3735) %3751 = call i64 @llvm.amdgcn.if.break.i64(i1 %3750, i64 %phi.broken8728) %3752 = call i1 @llvm.amdgcn.loop.i64(i64 %3751) br i1 %3752, label %cond.false.i.i.i2572, label %while.cond.i.i.i.i2550 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i2561: ; preds = %Flow8091 fence acquire br i1 %cmp.i.i.i.i2553, label %if.then.i.i.i.i.i.i3.i2566, label %Flow8089, !amdgpu.uniform !42 if.then.i.i.i.i.i.i3.i2566: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i2561 %sub.i.i.i.i.i.i.i2568 = sub nuw i64 %writer.sroa.8.4.i.i.i.i, %idx.0.i.i.i.i2552 %spec.select.i.i.i36.i.i.i.i2569 = call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i2568, i64 64) %3753 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %3754 = and i64 %spec.select.i.i.i36.i.i.i.i2569, 15 %3755 = sub i64 %spec.select.i.i.i36.i.i.i.i2569, %3754 %3756 = icmp ne i64 %3755, 0 br i1 %3756, label %loop-memcpy-expansion5031.preheader, label %Flow8088, !amdgpu.uniform !42 loop-memcpy-expansion5031.preheader: ; preds = %if.then.i.i.i.i.i.i3.i2566 %arrayidx.i20.i35.i.i.i.i2570 = getelementptr %"struct.rpc::Buffer", ptr %3753, i64 %idxprom.i19.i.i.i.i.i2540 %arrayidx.i22.i38.i.i.i.i2571 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i2570, i64 %sh_prom.i.i.i.i756 br label %loop-memcpy-expansion5031, !amdgpu.uniform !42 Flow8088: ; preds = %Flow8087, %if.then.i.i.i.i.i.i3.i2566 br label %loop-memcpy-residual-header5034, !amdgpu.uniform !42 loop-memcpy-expansion5031: ; preds = %loop-memcpy-expansion5031.preheader, %loop-memcpy-expansion5031 %loop-index5032 = phi i64 [ %3759, %loop-memcpy-expansion5031 ], [ 0, %loop-memcpy-expansion5031.preheader ] %scevgep6950 = getelementptr i8, ptr %lsr.iv6948, i64 %loop-index5032, !amdgpu.uniform !42 %3757 = load <4 x i32>, ptr %scevgep6950, align 1 %3758 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i2571, i64 %loop-index5032 store <4 x i32> %3757, ptr %3758, align 1 %3759 = add i64 %loop-index5032, 16 %3760 = icmp uge i64 %3759, %3755 br i1 %3760, label %Flow8087, label %loop-memcpy-expansion5031, !amdgpu.uniform !42 Flow8086: ; preds = %Flow8085, %loop-memcpy-residual-header5034 br label %Flow8089, !amdgpu.uniform !42 loop-memcpy-residual5033: ; preds = %loop-memcpy-residual5033.preheader, %loop-memcpy-residual5033 %residual-loop-index5035 = phi i64 [ %3762, %loop-memcpy-residual5033 ], [ 0, %loop-memcpy-residual5033.preheader ] %scevgep6959 = getelementptr i8, ptr %scevgep6958, i64 %residual-loop-index5035, !amdgpu.uniform !42 %3761 = load i8, ptr %scevgep6959, align 1 %scevgep6957 = getelementptr i8, ptr %scevgep6956, i64 %residual-loop-index5035 store i8 %3761, ptr %scevgep6957, align 1 %3762 = add i64 %residual-loop-index5035, 1 %3763 = icmp uge i64 %3762, %3754 br i1 %3763, label %Flow8085, label %loop-memcpy-residual5033, !amdgpu.uniform !42 Flow8085: ; preds = %loop-memcpy-residual5033 br label %Flow8086, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2562: ; preds = %Flow8089 %conv.i.i26.i.i.i.i2563 = xor i32 %port.sroa.37.0.i.i2551, 1 fence release %3764 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i2564 = getelementptr inbounds nuw i32, ptr %3764, i64 %idxprom.i23.i.i.i.i.i2547 store atomic i32 %conv.i.i26.i.i.i.i2563, ptr %arrayidx.i24.i29.i.i.i.i2564 monotonic, align 4 %add.i.i.i.i2565 = add i64 %idx.0.i.i.i.i2552, 64 %scevgep6949 = getelementptr i8, ptr %lsr.iv6948, i64 64 %lsr.iv.next6954 = add i64 %lsr.iv6953, -64 br label %Flow8092, !amdgpu.uniform !42 cond.false.i.i.i2572: ; preds = %Flow8092 %.lcssa9169 = phi i64 [ %3751, %Flow8092 ] %port.sroa.37.0.i.i2551.lcssa = phi i32 [ %port.sroa.37.0.i.i2551, %Flow8092 ] %.lcssa9168 = phi i32 [ %3732, %Flow8092 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9169) %3765 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa9168) %3766 = icmp ne i32 %3765, %port.sroa.37.0.i.i2551.lcssa %3767 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3766) %3768 = extractvalue { i1, i64 } %3767, 0 %3769 = extractvalue { i1, i64 } %3767, 1 br i1 %3768, label %while.body.i.i.i.i2573.preheader, label %Flow8084 while.body.i.i.i.i2573.preheader: ; preds = %cond.false.i.i.i2572 br label %while.body.i.i.i.i2573, !amdgpu.uniform !42 Flow8084: ; preds = %Flow8083, %cond.false.i.i.i2572 call void @llvm.amdgcn.end.cf.i64(i64 %3769) br label %_ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i2576, !amdgpu.uniform !42 while.body.i.i.i.i2573: ; preds = %while.body.i.i.i.i2573.preheader, %while.body.i.i.i.i2573 %phi.broken8729 = phi i64 [ 0, %while.body.i.i.i.i2573.preheader ], [ %3773, %while.body.i.i.i.i2573 ] call void @llvm.amdgcn.s.sleep(i32 2) %3770 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i2574 = getelementptr inbounds nuw i32, ptr %3770, i64 %idxprom.i23.i.i.i.i.i2547 %3771 = load atomic i32, ptr %arrayidx.i.i.i8.i.i2574 monotonic, align 4 %3772 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %3771) %cmp.i.not.i.i.i.i2575 = icmp eq i32 %3772, %port.sroa.37.0.i.i2551.lcssa %3773 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i2575, i64 %phi.broken8729) %3774 = call i1 @llvm.amdgcn.loop.i64(i64 %3773) br i1 %3774, label %Flow8083, label %while.body.i.i.i.i2573 Flow8083: ; preds = %while.body.i.i.i.i2573 %.lcssa9170 = phi i64 [ %3773, %while.body.i.i.i.i2573 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9170) br label %Flow8084, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i2576: ; preds = %Flow8084 fence acquire call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %3775 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa9165, i1 true) %iszero.i.i.i.i.i13.i.i2577 = icmp ne i64 %.lcssa9165, 0 %cmp2.i.i.i.i14.i.i2578 = icmp eq i64 %3775, %sh_prom.i.i.i.i756 %cmp.i.i.i.i15.i.i2579 = select i1 %iszero.i.i.i.i.i13.i.i2577, i1 %cmp2.i.i.i.i14.i.i2578, i1 false %3776 = and i32 %.lcssa9166, 31 %conv4.i.i.i19.i.i2583 = zext i1 %cmp.i.i.i.i15.i.i2579 to i32 %shl.i.i.i20.i.i2584 = shl nuw i32 %conv4.i.i.i19.i.i2583, %3776 %xor.i.i.i21.i.i2585 = xor i32 %shl.i.i.i20.i.i2584, -1 %3777 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5784, !amdgpu.uniform !42 3778: ; preds = %ComputeEnd5785 %div8.i.i.i16.i.i2580 = lshr i32 %.lcssa9166, 5 %idxprom.i.i.i17.i.i2581 = zext nneg i32 %div8.i.i.i16.i.i2580 to i64 %3779 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i2581 %sunkaddr7445 = getelementptr inbounds i8, ptr addrspace(1) %3779, i64 40 %3780 = atomicrmw and ptr addrspace(1) %sunkaddr7445, i32 %.lcssa9171 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %3781, !amdgpu.uniform !42 3781: ; preds = %3778, %ComputeEnd5785 call void @llvm.amdgcn.end.cf.i64(i64 %8038) call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i1.i2615, !amdgpu.uniform !42 for.cond.i.i1.i2615: ; preds = %3781, %Flow8082 %3782 = phi i32 [ %3819, %Flow8082 ], [ %1201, %3781 ] %3783 = phi i64 [ %3820, %Flow8082 ], [ %1202, %3781 ] %3784 = phi i32 [ %3821, %Flow8082 ], [ %1203, %3781 ] %retval.sroa.6.0.i.i.i2616 = phi i32 [ %3824, %Flow8082 ], [ undef, %3781 ] %retval.sroa.2.0.i.i.i2618 = phi i64 [ %3823, %Flow8082 ], [ undef, %3781 ] %retval.sroa.8.0.i.i.i2619 = phi i32 [ %3822, %Flow8082 ], [ undef, %3781 ] %index.0.i.i.i2620 = phi i32 [ %3826, %Flow8082 ], [ 0, %3781 ] %3785 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i2621 = icmp ult i32 %index.0.i.i.i2620, %3785 %spec.store.select.i.i.i2622 = select i1 %cmp.not.i.i.i2621, i32 %index.0.i.i.i2620, i32 0 %3786 = call i64 @llvm.amdgcn.ballot.i64(i1 true) %3787 = and i32 %spec.store.select.i.i.i2622, 31 %3788 = lshr i64 %3786, %sh_prom.i.i.i.i756 %3789 = trunc i64 %3788 to i32 %conv4.i.i.i.i.i2626 = and i32 %3789, 1 %shl.i.i.i.i.i2627 = shl nuw i32 %conv4.i.i.i.i.i2626, %3787 br label %ComputeLoop5788, !amdgpu.uniform !42 3790: ; preds = %ComputeEnd5789 %sunkaddr7446 = getelementptr inbounds i8, ptr addrspace(1) %8048, i64 40 %3791 = atomicrmw or ptr addrspace(1) %sunkaddr7446, i32 %.lcssa9172 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %3792, !amdgpu.uniform !42 3792: ; preds = %3790, %ComputeEnd5789 %3793 = phi i32 [ %3791, %3790 ], [ poison, %ComputeEnd5789 ] call void @llvm.amdgcn.end.cf.i64(i64 %8057) %3794 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %3793) %3795 = or i32 %3794, %.lcssa9173 %shl5.i.i.i.i.i2628 = shl nuw i32 1, %3787 %and.i.i.i.i.i2629 = and i32 %shl5.i.i.i.i.i2628, %3795 %tobool3.i.i.i.i2630 = icmp ne i32 %and.i.i.i.i.i2629, 0 %3796 = call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i2630) %and.i.i.i.i.i.i2631 = and i64 %3796, %3786 %cmp.i.not.i.i.i2632 = icmp ne i64 %3786, %and.i.i.i.i.i.i2631 br i1 %cmp.i.not.i.i.i2632, label %if.then.i.i.i.i2633, label %Flow8081, !amdgpu.uniform !42 if.then.i.i.i.i2633: ; preds = %3792 fence syncscope("agent") acquire %3797 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %3798 = extractelement <2 x i64> %3797, i32 0 %3799 = inttoptr i64 %3798 to ptr %3800 = extractelement <2 x i64> %3797, i32 1 %3801 = inttoptr i64 %3800 to ptr %idxprom.i.i.i.i2634 = zext i32 %spec.store.select.i.i.i2622 to i64 %arrayidx.i.i.i.i2635 = getelementptr inbounds nuw i32, ptr %3799, i64 %idxprom.i.i.i.i2634, !amdgpu.uniform !42 %3802 = load atomic i32, ptr %arrayidx.i.i.i.i2635 monotonic, align 4 %3803 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %3802) %arrayidx.i45.i.i.i2636 = getelementptr inbounds nuw i32, ptr %3801, i64 %idxprom.i.i.i.i2634, !amdgpu.uniform !42 %3804 = load atomic i32, ptr %arrayidx.i45.i.i.i2636 monotonic, align 4 %3805 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %3804) %cmp.i46.not.i.i.i2637 = icmp ne i32 %3803, %3805 br i1 %cmp.i46.not.i.i.i2637, label %if.then12.i.i.i2638, label %Flow8079, !amdgpu.uniform !42 if.then12.i.i.i2638: ; preds = %if.then.i.i.i.i2633 fence syncscope("agent") release %3806 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %3786, i1 true) %iszero.i.i.i.i.i.i.i2639 = icmp ne i64 %3786, 0 %cmp2.i.i.i.i.i.i2640 = icmp eq i64 %3806, %sh_prom.i.i.i.i756 %cmp.i.i.i.i.i.i2641 = select i1 %iszero.i.i.i.i.i.i.i2639, i1 %cmp2.i.i.i.i.i.i2640, i1 false %conv4.i.i51.i.i.i2642 = zext i1 %cmp.i.i.i.i.i.i2641 to i32 %shl.i.i52.i.i.i2643 = shl nuw i32 %conv4.i.i51.i.i.i2642, %3787 %xor.i.i.i.i.i2644 = xor i32 %shl.i.i52.i.i.i2643, -1 %3807 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5793, !amdgpu.uniform !42 3808: ; preds = %ComputeEnd5794 %sunkaddr7447 = getelementptr inbounds i8, ptr addrspace(1) %8048, i64 40 %3809 = atomicrmw and ptr addrspace(1) %sunkaddr7447, i32 %.lcssa9174 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %3810, !amdgpu.uniform !42 3810: ; preds = %3808, %ComputeEnd5794 call void @llvm.amdgcn.end.cf.i64(i64 %8075) call void @llvm.amdgcn.wave.barrier() br label %Flow8079, !amdgpu.uniform !42 if.end14.i.i.i2704: ; preds = %Flow8079 %3811 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %3786, i1 true) %iszero.i.i.i.i.i.i2705 = icmp ne i64 %3786, 0 %cmp2.i.i.i.i.i2706 = icmp eq i64 %3811, %sh_prom.i.i.i.i756 %cmp.i.i.i.i.i2707 = select i1 %iszero.i.i.i.i.i.i2705, i1 %cmp2.i.i.i.i.i2706, i1 false %3812 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i2707) %3813 = extractvalue { i1, i64 } %3812, 0 %3814 = extractvalue { i1, i64 } %3812, 1 br i1 %3813, label %if.then16.i.i.i2709, label %if.end22.i.i.i2708 if.then16.i.i.i2709: ; preds = %if.end14.i.i.i2704 %3815 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i2710 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %3815, i64 %idxprom.i.i.i.i2634, i32 1 store i32 1660944387, ptr %opcode.i.i.i2710, align 8, !tbaa !77 %arrayidx21.i.i.i2711 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %3815, i64 %idxprom.i.i.i.i2634 store i64 %3786, ptr %arrayidx21.i.i.i2711, align 8, !tbaa !80 br label %if.end22.i.i.i2708, !amdgpu.uniform !42 Flow8080: ; preds = %if.end22.i.i.i2708, %Flow8079 %3816 = phi i32 [ %3803, %if.end22.i.i.i2708 ], [ %retval.sroa.8.0.i.i.i2619, %Flow8079 ] %3817 = phi i64 [ %3786, %if.end22.i.i.i2708 ], [ %retval.sroa.2.0.i.i.i2618, %Flow8079 ] %3818 = phi i32 [ %spec.store.select.i.i.i2622, %if.end22.i.i.i2708 ], [ %retval.sroa.6.0.i.i.i2616, %Flow8079 ] br label %cleanup26.i.i.i2645, !amdgpu.uniform !42 if.end22.i.i.i2708: ; preds = %if.then16.i.i.i2709, %if.end14.i.i.i2704 call void @llvm.amdgcn.end.cf.i64(i64 %3814) call void @llvm.amdgcn.wave.barrier() br label %Flow8080, !amdgpu.uniform !42 Flow8081: ; preds = %cleanup26.i.i.i2645, %3792 %3819 = phi i32 [ %3818, %cleanup26.i.i.i2645 ], [ %3782, %3792 ] %3820 = phi i64 [ %3817, %cleanup26.i.i.i2645 ], [ %3783, %3792 ] %3821 = phi i32 [ %3816, %cleanup26.i.i.i2645 ], [ %3784, %3792 ] %3822 = phi i32 [ %3816, %cleanup26.i.i.i2645 ], [ %retval.sroa.8.0.i.i.i2619, %3792 ] %3823 = phi i64 [ %3817, %cleanup26.i.i.i2645 ], [ %retval.sroa.2.0.i.i.i2618, %3792 ] %3824 = phi i32 [ %3818, %cleanup26.i.i.i2645 ], [ %retval.sroa.6.0.i.i.i2616, %3792 ] %3825 = phi i1 [ %cmp.i46.not.i.i.i2637, %cleanup26.i.i.i2645 ], [ true, %3792 ] br i1 %3825, label %for.inc.i.i.i2650, label %Flow8082, !amdgpu.uniform !42 cleanup26.i.i.i2645: ; preds = %Flow8080 br label %Flow8081, !amdgpu.uniform !42 for.inc.i.i.i2650: ; preds = %Flow8081 %inc.i.i.i2655 = add i32 %spec.store.select.i.i.i2622, 1 br label %Flow8082, !amdgpu.uniform !42 Flow8082: ; preds = %for.inc.i.i.i2650, %Flow8081 %3826 = phi i32 [ %inc.i.i.i2655, %for.inc.i.i.i2650 ], [ poison, %Flow8081 ] %3827 = phi i1 [ false, %for.inc.i.i.i2650 ], [ true, %Flow8081 ] br i1 %3827, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2656, label %for.cond.i.i1.i2615, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2656: ; preds = %Flow8082 %.lcssa9177 = phi i32 [ %3819, %Flow8082 ] %.lcssa9176 = phi i64 [ %3820, %Flow8082 ] %.lcssa9175 = phi i32 [ %3821, %Flow8082 ] fence acquire %3828 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i2657 = shl i32 %.lcssa9177, 6 %idxprom.i19.i.i.i.i.i2658 = zext i32 %mul.i.i.i.i.i.i2657 to i64 %arrayidx.i20.i.i.i.i.i2659 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %3828, i64 %idxprom.i19.i.i.i.i.i2658 %arrayidx.i22.i.i.i.i.i2660 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i2659, i64 %sh_prom.i.i.i.i756 store i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.22.39 to ptr), i64 5) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.22.39 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i2660, align 8, !tbaa !82 br i1 %1130, label %loop-memcpy-expansion5361.preheader, label %Flow8078, !amdgpu.uniform !42 loop-memcpy-expansion5361.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2656 %scevgep6960 = getelementptr i8, ptr %3828, i64 8 %scevgep6961 = getelementptr i8, ptr %scevgep6960, i64 %1474 %3829 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i2658, 6 %scevgep6962 = getelementptr i8, ptr %scevgep6961, i64 %3829 br label %loop-memcpy-expansion5361, !amdgpu.uniform !42 Flow8078: ; preds = %Flow8077, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2656 br label %loop-memcpy-residual-header5364, !amdgpu.uniform !42 loop-memcpy-expansion5361: ; preds = %loop-memcpy-expansion5361.preheader, %loop-memcpy-expansion5361 %loop-index5362 = phi i64 [ %3832, %loop-memcpy-expansion5361 ], [ 0, %loop-memcpy-expansion5361.preheader ] %3830 = getelementptr i8, ptr addrspace(4) @.str.22.39, i64 %loop-index5362, !amdgpu.uniform !42 %3831 = load <4 x i32>, ptr addrspace(4) %3830, align 1 %scevgep6963 = getelementptr i8, ptr %scevgep6962, i64 %loop-index5362 store <4 x i32> %3831, ptr %scevgep6963, align 1 %3832 = add i64 %loop-index5362, 16 %3833 = icmp uge i64 %3832, %1129 br i1 %3833, label %Flow8077, label %loop-memcpy-expansion5361, !amdgpu.uniform !42 Flow8076: ; preds = %Flow8074, %Flow8075 %3834 = phi i64 [ %6623, %Flow8074 ], [ %6621, %Flow8075 ] br label %post-loop-memcpy-expansion5360, !amdgpu.uniform !42 loop-memcpy-residual5363: ; preds = %loop-memcpy-residual5363.preheader, %loop-memcpy-residual5363 %residual-loop-index5365 = phi i64 [ %3836, %loop-memcpy-residual5363 ], [ 0, %loop-memcpy-residual5363.preheader ] %scevgep6968 = getelementptr i8, ptr addrspace(4) @.str.22.39, i64 %residual-loop-index5365, !amdgpu.uniform !42 %3835 = load i8, ptr addrspace(4) %scevgep6968, align 1 %scevgep6967 = getelementptr i8, ptr %scevgep6966, i64 %residual-loop-index5365 store i8 %3835, ptr %scevgep6967, align 1 %3836 = add i64 %residual-loop-index5365, 1 %3837 = icmp uge i64 %3836, %1128 br i1 %3837, label %Flow8074, label %loop-memcpy-residual5363, !amdgpu.uniform !42 Flow8074: ; preds = %loop-memcpy-residual5363 br label %Flow8076, !amdgpu.uniform !42 post-loop-memcpy-expansion5360: ; preds = %Flow8076 %tobool.not.i.i.i.i.i.i2663 = icmp eq i32 %.lcssa9175, 0 %conv.i.i.i.i.i.i2664 = zext i1 %tobool.not.i.i.i.i.i.i2663 to i32 fence release %3838 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i2665 = zext i32 %.lcssa9177 to i64 %arrayidx.i24.i.i.i.i.i2666 = getelementptr inbounds nuw i32, ptr %3838, i64 %idxprom.i23.i.i.i.i.i2665 store atomic i32 %conv.i.i.i.i.i.i2664, ptr %arrayidx.i24.i.i.i.i.i2666 monotonic, align 4 %3839 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i2667 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %3839, i64 %idxprom.i23.i.i.i.i.i2665 %3840 = load i64, ptr %arrayidx.i.i5.i.i2667, align 8, !tbaa !80 br label %while.cond.i.i.i.i2668, !amdgpu.uniform !42 while.cond.i.i.i.i2668: ; preds = %post-loop-memcpy-expansion5360, %Flow8073 %phi.broken8731 = phi i64 [ 0, %post-loop-memcpy-expansion5360 ], [ %3862, %Flow8073 ] %lsr.iv6974 = phi i64 [ %3860, %Flow8073 ], [ -51, %post-loop-memcpy-expansion5360 ] %lsr.iv6969 = phi ptr addrspace(4) [ %3859, %Flow8073 ], [ getelementptr (i8, ptr addrspace(4) @.str.22.39, i64 56), %post-loop-memcpy-expansion5360 ] %port.sroa.37.0.i.i2669 = phi i32 [ %3858, %Flow8073 ], [ %conv.i.i.i.i.i.i2664, %post-loop-memcpy-expansion5360 ] %idx.0.i.i.i.i2670 = phi i64 [ %3857, %Flow8073 ], [ 56, %post-loop-memcpy-expansion5360 ] %cmp.i.i.i.i2671 = icmp ult i64 %idx.0.i.i.i.i2670, sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.22.39 to ptr), i64 5) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.22.39 to ptr) to i64)) %3841 = call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i2671) %and.i.i.i.i6.i.i2672 = and i64 %3841, %3840 %tobool.not.i.i.i.i2673 = icmp ne i64 %and.i.i.i.i6.i.i2672, 0 %3842 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i2674 = getelementptr inbounds nuw i32, ptr %3842, i64 %idxprom.i23.i.i.i.i.i2665 %3843 = load atomic i32, ptr %arrayidx.i22.i.i.i2674 monotonic, align 4 %3844 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i2673) %3845 = extractvalue { i1, i64 } %3844, 0 %3846 = extractvalue { i1, i64 } %3844, 1 br i1 %3845, label %cond.false.i8.i.i.i.i2675, label %Flow8073 cond.false.i8.i.i.i.i2675: ; preds = %while.cond.i.i.i.i2668 %3847 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %3843) %3848 = icmp ne i32 %3847, %port.sroa.37.0.i.i2669 %3849 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3848) %3850 = extractvalue { i1, i64 } %3849, 0 %3851 = extractvalue { i1, i64 } %3849, 1 br i1 %3850, label %while.body.i.i21.i.i.i.i2676.preheader, label %Flow8072 while.body.i.i21.i.i.i.i2676.preheader: ; preds = %cond.false.i8.i.i.i.i2675 br label %while.body.i.i21.i.i.i.i2676, !amdgpu.uniform !42 Flow8072: ; preds = %Flow8071, %cond.false.i8.i.i.i.i2675 call void @llvm.amdgcn.end.cf.i64(i64 %3851) br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i2679, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i2676: ; preds = %while.body.i.i21.i.i.i.i2676.preheader, %while.body.i.i21.i.i.i.i2676 %phi.broken8730 = phi i64 [ 0, %while.body.i.i21.i.i.i.i2676.preheader ], [ %3855, %while.body.i.i21.i.i.i.i2676 ] call void @llvm.amdgcn.s.sleep(i32 2) %3852 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i2677 = getelementptr inbounds nuw i32, ptr %3852, i64 %idxprom.i23.i.i.i.i.i2665 %3853 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i2677 monotonic, align 4 %3854 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %3853) %cmp.i.not.i.i23.i.i.i.i2678 = icmp eq i32 %3854, %port.sroa.37.0.i.i2669 %3855 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i23.i.i.i.i2678, i64 %phi.broken8730) %3856 = call i1 @llvm.amdgcn.loop.i64(i64 %3855) br i1 %3856, label %Flow8071, label %while.body.i.i21.i.i.i.i2676 Flow8071: ; preds = %while.body.i.i21.i.i.i.i2676 %.lcssa9178 = phi i64 [ %3855, %while.body.i.i21.i.i.i.i2676 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9178) br label %Flow8072, !amdgpu.uniform !42 Flow8073: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2680, %while.cond.i.i.i.i2668 %3857 = phi i64 [ %add.i.i.i.i2683, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2680 ], [ poison, %while.cond.i.i.i.i2668 ] %3858 = phi i32 [ %conv.i.i26.i.i.i.i2681, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2680 ], [ poison, %while.cond.i.i.i.i2668 ] %3859 = phi ptr addrspace(4) [ %scevgep6970, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2680 ], [ poison, %while.cond.i.i.i.i2668 ] %3860 = phi i64 [ %lsr.iv.next6975, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2680 ], [ poison, %while.cond.i.i.i.i2668 ] %3861 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2680 ], [ true, %while.cond.i.i.i.i2668 ] call void @llvm.amdgcn.end.cf.i64(i64 %3846) %3862 = call i64 @llvm.amdgcn.if.break.i64(i1 %3861, i64 %phi.broken8731) %3863 = call i1 @llvm.amdgcn.loop.i64(i64 %3862) br i1 %3863, label %cond.false.i.i.i2690, label %while.cond.i.i.i.i2668 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i2679: ; preds = %Flow8072 fence acquire br i1 %cmp.i.i.i.i2671, label %if.then.i.i.i.i.i.i.i2684, label %Flow8070, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i2684: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i2679 %sub.i.i.i.i.i.i.i2686 = sub nuw i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.22.39 to ptr), i64 5) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.22.39 to ptr) to i64)), %idx.0.i.i.i.i2670 %spec.select.i.i.i36.i.i.i.i2687 = call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i2686, i64 64) %3864 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %3865 = and i64 %spec.select.i.i.i36.i.i.i.i2687, 15 %3866 = sub i64 %spec.select.i.i.i36.i.i.i.i2687, %3865 %3867 = icmp ne i64 %3866, 0 br i1 %3867, label %loop-memcpy-expansion5367.preheader, label %Flow8069, !amdgpu.uniform !42 loop-memcpy-expansion5367.preheader: ; preds = %if.then.i.i.i.i.i.i.i2684 %arrayidx.i20.i35.i.i.i.i2688 = getelementptr %"struct.rpc::Buffer", ptr %3864, i64 %idxprom.i19.i.i.i.i.i2658 %arrayidx.i22.i38.i.i.i.i2689 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i2688, i64 %sh_prom.i.i.i.i756 br label %loop-memcpy-expansion5367, !amdgpu.uniform !42 Flow8069: ; preds = %Flow8068, %if.then.i.i.i.i.i.i.i2684 br label %loop-memcpy-residual-header5370, !amdgpu.uniform !42 loop-memcpy-expansion5367: ; preds = %loop-memcpy-expansion5367.preheader, %loop-memcpy-expansion5367 %loop-index5368 = phi i64 [ %3870, %loop-memcpy-expansion5367 ], [ 0, %loop-memcpy-expansion5367.preheader ] %scevgep6971 = getelementptr i8, ptr addrspace(4) %lsr.iv6969, i64 %loop-index5368, !amdgpu.uniform !42 %3868 = load <4 x i32>, ptr addrspace(4) %scevgep6971, align 1 %3869 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i2689, i64 %loop-index5368 store <4 x i32> %3868, ptr %3869, align 1 %3870 = add i64 %loop-index5368, 16 %3871 = icmp uge i64 %3870, %3866 br i1 %3871, label %Flow8068, label %loop-memcpy-expansion5367, !amdgpu.uniform !42 Flow8067: ; preds = %Flow8066, %loop-memcpy-residual-header5370 br label %Flow8070, !amdgpu.uniform !42 loop-memcpy-residual5369: ; preds = %loop-memcpy-residual5369.preheader, %loop-memcpy-residual5369 %residual-loop-index5371 = phi i64 [ %3873, %loop-memcpy-residual5369 ], [ 0, %loop-memcpy-residual5369.preheader ] %scevgep6980 = getelementptr i8, ptr addrspace(4) %scevgep6979, i64 %residual-loop-index5371, !amdgpu.uniform !42 %3872 = load i8, ptr addrspace(4) %scevgep6980, align 1 %scevgep6978 = getelementptr i8, ptr %scevgep6977, i64 %residual-loop-index5371 store i8 %3872, ptr %scevgep6978, align 1 %3873 = add i64 %residual-loop-index5371, 1 %3874 = icmp uge i64 %3873, %3865 br i1 %3874, label %Flow8066, label %loop-memcpy-residual5369, !amdgpu.uniform !42 Flow8066: ; preds = %loop-memcpy-residual5369 br label %Flow8067, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2680: ; preds = %Flow8070 %conv.i.i26.i.i.i.i2681 = xor i32 %port.sroa.37.0.i.i2669, 1 fence release %3875 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i2682 = getelementptr inbounds nuw i32, ptr %3875, i64 %idxprom.i23.i.i.i.i.i2665 store atomic i32 %conv.i.i26.i.i.i.i2681, ptr %arrayidx.i24.i29.i.i.i.i2682 monotonic, align 4 %add.i.i.i.i2683 = add i64 %idx.0.i.i.i.i2670, 64 %scevgep6970 = getelementptr i8, ptr addrspace(4) %lsr.iv6969, i64 64 %lsr.iv.next6975 = add i64 %lsr.iv6974, -64 br label %Flow8073, !amdgpu.uniform !42 cond.false.i.i.i2690: ; preds = %Flow8073 %.lcssa9180 = phi i64 [ %3862, %Flow8073 ] %port.sroa.37.0.i.i2669.lcssa = phi i32 [ %port.sroa.37.0.i.i2669, %Flow8073 ] %.lcssa9179 = phi i32 [ %3843, %Flow8073 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9180) %3876 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa9179) %3877 = icmp ne i32 %3876, %port.sroa.37.0.i.i2669.lcssa %3878 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %3877) %3879 = extractvalue { i1, i64 } %3878, 0 %3880 = extractvalue { i1, i64 } %3878, 1 br i1 %3879, label %while.body.i.i.i.i2691.preheader, label %Flow8065 while.body.i.i.i.i2691.preheader: ; preds = %cond.false.i.i.i2690 br label %while.body.i.i.i.i2691, !amdgpu.uniform !42 Flow8065: ; preds = %Flow8064, %cond.false.i.i.i2690 call void @llvm.amdgcn.end.cf.i64(i64 %3880) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit2712, !amdgpu.uniform !42 while.body.i.i.i.i2691: ; preds = %while.body.i.i.i.i2691.preheader, %while.body.i.i.i.i2691 %phi.broken8732 = phi i64 [ 0, %while.body.i.i.i.i2691.preheader ], [ %3884, %while.body.i.i.i.i2691 ] call void @llvm.amdgcn.s.sleep(i32 2) %3881 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i2692 = getelementptr inbounds nuw i32, ptr %3881, i64 %idxprom.i23.i.i.i.i.i2665 %3882 = load atomic i32, ptr %arrayidx.i.i.i8.i.i2692 monotonic, align 4 %3883 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %3882) %cmp.i.not.i.i.i.i2693 = icmp eq i32 %3883, %port.sroa.37.0.i.i2669.lcssa %3884 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i2693, i64 %phi.broken8732) %3885 = call i1 @llvm.amdgcn.loop.i64(i64 %3884) br i1 %3885, label %Flow8064, label %while.body.i.i.i.i2691 Flow8064: ; preds = %while.body.i.i.i.i2691 %.lcssa9181 = phi i64 [ %3884, %while.body.i.i.i.i2691 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9181) br label %Flow8065, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit2712: ; preds = %Flow8065 fence acquire call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %3886 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa9176, i1 true) %iszero.i.i.i.i.i13.i.i2695 = icmp ne i64 %.lcssa9176, 0 %cmp2.i.i.i.i14.i.i2696 = icmp eq i64 %3886, %sh_prom.i.i.i.i756 %cmp.i.i.i.i15.i.i2697 = select i1 %iszero.i.i.i.i.i13.i.i2695, i1 %cmp2.i.i.i.i14.i.i2696, i1 false %3887 = and i32 %.lcssa9177, 31 %conv4.i.i.i19.i.i2701 = zext i1 %cmp.i.i.i.i15.i.i2697 to i32 %shl.i.i.i20.i.i2702 = shl nuw i32 %conv4.i.i.i19.i.i2701, %3887 %xor.i.i.i21.i.i2703 = xor i32 %shl.i.i.i20.i.i2702, -1 %3888 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5797, !amdgpu.uniform !42 3889: ; preds = %ComputeEnd5798 %div8.i.i.i16.i.i2698 = lshr i32 %.lcssa9177, 5 %idxprom.i.i.i17.i.i2699 = zext nneg i32 %div8.i.i.i16.i.i2698 to i64 %3890 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i2699 %sunkaddr7448 = getelementptr inbounds i8, ptr addrspace(1) %3890, i64 40 %3891 = atomicrmw and ptr addrspace(1) %sunkaddr7448, i32 %.lcssa9182 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %3892, !amdgpu.uniform !42 3892: ; preds = %3889, %ComputeEnd5798 call void @llvm.amdgcn.end.cf.i64(i64 %8092) call void @llvm.amdgcn.wave.barrier() br label %Flow8128, !amdgpu.uniform !42 if.else77: ; preds = %if.else %mul66 = mul i64 %sub, 1000000 %cmp78.not = icmp uge i64 %mul66, 1000000 br i1 %cmp78.not, label %if.then79, label %Flow8062, !amdgpu.uniform !42 if.then79: ; preds = %if.else77 %div67 = udiv i64 %mul66, 1000000 call void @llvm.lifetime.start.p5(ptr addrspace(5) %buffer.i.i.i2988) #34, !noalias !170 br label %while.body.i.i.i.i.i.i2716, !amdgpu.uniform !42 Flow8062: ; preds = %4169, %if.else77 %3893 = phi i32 [ %.lcssa9131, %4169 ], [ poison, %if.else77 ] %3894 = phi i64 [ %.lcssa9132, %4169 ], [ poison, %if.else77 ] %3895 = phi i32 [ %.lcssa9133, %4169 ], [ poison, %if.else77 ] %3896 = phi i32 [ %.lcssa9120, %4169 ], [ poison, %if.else77 ] %3897 = phi i64 [ %.lcssa9121, %4169 ], [ poison, %if.else77 ] %3898 = phi i32 [ %.lcssa9122, %4169 ], [ poison, %if.else77 ] %3899 = phi i1 [ false, %4169 ], [ true, %if.else77 ] br i1 %3899, label %if.else82, label %Flow8063, !amdgpu.uniform !42 while.body.i.i.i.i.i.i2716: ; preds = %if.then79, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i2730 %writer.sroa.8.0.i.i.i.i2717 = phi i64 [ %writer.sroa.8.1.i.i.i.i2731, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i2730 ], [ 0, %if.then79 ] %value.addr.09.i.i.i.i.i.i2718 = phi i64 [ %div.i.i.i.i.i.i.i2719, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i2730 ], [ %div67, %if.then79 ] br label %NodeBlock7559, !amdgpu.uniform !42 NodeBlock7559: ; preds = %while.body.i.i.i.i.i.i2716 %div.i.i.i.i.i.i.i2719 = udiv i64 %value.addr.09.i.i.i.i.i.i2718, 10 %.neg.i2720 = mul nuw nsw i64 %div.i.i.i.i.i.i.i2719, 246 %rem.i.i.i.i.i.i.decomposed.i2721 = add nuw nsw i64 %.neg.i2720, %value.addr.09.i.i.i.i.i.i2718 %conv.i.i.i.i.i.i.i2722 = trunc i64 %rem.i.i.i.i.i.i.decomposed.i2721 to i8 %3900 = zext i8 %conv.i.i.i.i.i.i.i2722 to i16 %Pivot7560 = icmp sge i16 %3900, 5 br i1 %Pivot7560, label %NodeBlock7557, label %Flow7998, !amdgpu.uniform !42 NodeBlock7557: ; preds = %NodeBlock7559 %Pivot7558 = icmp sge i16 %3900, 7 br i1 %Pivot7558, label %NodeBlock7555, label %Flow7989, !amdgpu.uniform !42 NodeBlock7555: ; preds = %NodeBlock7557 %Pivot7556 = icmp sge i16 %3900, 8 br i1 %Pivot7556, label %NodeBlock7553, label %Flow7985, !amdgpu.uniform !42 NodeBlock7553: ; preds = %NodeBlock7555 %Pivot7554 = icmp sge i16 %3900, 9 br i1 %Pivot7554, label %sw.bb9.i.i.i.i.i.i.i.i2723, label %Flow7983, !amdgpu.uniform !42 Flow7989: ; preds = %Flow7986, %NodeBlock7557 %3901 = phi i8 [ %3914, %Flow7986 ], [ poison, %NodeBlock7557 ] %3902 = phi i1 [ false, %Flow7986 ], [ true, %NodeBlock7557 ] br i1 %3902, label %NodeBlock7551, label %Flow7990, !amdgpu.uniform !42 NodeBlock7551: ; preds = %Flow7989 %Pivot7552 = icmp sge i16 %3900, 6 br i1 %Pivot7552, label %sw.bb6.i.i.i.i.i.i.i.i2874, label %Flow7987, !amdgpu.uniform !42 Flow7998: ; preds = %Flow7990, %NodeBlock7559 %3903 = phi i8 [ %3916, %Flow7990 ], [ poison, %NodeBlock7559 ] %3904 = phi i1 [ false, %Flow7990 ], [ true, %NodeBlock7559 ] br i1 %3904, label %NodeBlock7549, label %if.then.i.i.i.i.i.i.i2724, !amdgpu.uniform !42 NodeBlock7549: ; preds = %Flow7998 %Pivot7550 = icmp sge i16 %3900, 3 br i1 %Pivot7550, label %NodeBlock7547, label %Flow7996, !amdgpu.uniform !42 NodeBlock7547: ; preds = %NodeBlock7549 %Pivot7548 = icmp sge i16 %3900, 4 br i1 %Pivot7548, label %sw.bb4.i.i.i.i.i.i.i.i2876, label %Flow7991, !amdgpu.uniform !42 Flow7996: ; preds = %Flow7992, %NodeBlock7549 %3905 = phi i8 [ %3917, %Flow7992 ], [ poison, %NodeBlock7549 ] %3906 = phi i1 [ false, %Flow7992 ], [ true, %NodeBlock7549 ] br i1 %3906, label %NodeBlock7545, label %Flow7997, !amdgpu.uniform !42 NodeBlock7545: ; preds = %Flow7996 %Pivot7546 = icmp sge i16 %3900, 2 br i1 %Pivot7546, label %sw.bb2.i.i.i.i.i.i.i.i2878, label %Flow7994, !amdgpu.uniform !42 Flow7994: ; preds = %sw.bb2.i.i.i.i.i.i.i.i2878, %NodeBlock7545 %3907 = phi i1 [ false, %sw.bb2.i.i.i.i.i.i.i.i2878 ], [ true, %NodeBlock7545 ] br i1 %3907, label %LeafBlock7543, label %Flow7995, !amdgpu.uniform !42 LeafBlock7543: ; preds = %Flow7994 %SwitchLeaf7544 = icmp eq i16 %3900, 1 br i1 %SwitchLeaf7544, label %sw.bb1.i.i.i.i.i.i.i.i2879, label %Flow7993, !amdgpu.uniform !42 sw.bb1.i.i.i.i.i.i.i.i2879: ; preds = %LeafBlock7543 br label %Flow7993, !amdgpu.uniform !42 sw.bb2.i.i.i.i.i.i.i.i2878: ; preds = %NodeBlock7545 br label %Flow7994, !amdgpu.uniform !42 Flow7991: ; preds = %sw.bb4.i.i.i.i.i.i.i.i2876, %NodeBlock7547 %3908 = phi i1 [ false, %sw.bb4.i.i.i.i.i.i.i.i2876 ], [ true, %NodeBlock7547 ] br i1 %3908, label %sw.bb3.i.i.i.i.i.i.i.i2877, label %Flow7992, !amdgpu.uniform !42 sw.bb3.i.i.i.i.i.i.i.i2877: ; preds = %Flow7991 br label %Flow7992, !amdgpu.uniform !42 sw.bb4.i.i.i.i.i.i.i.i2876: ; preds = %NodeBlock7547 br label %Flow7991, !amdgpu.uniform !42 Flow7987: ; preds = %sw.bb6.i.i.i.i.i.i.i.i2874, %NodeBlock7551 %3909 = phi i1 [ false, %sw.bb6.i.i.i.i.i.i.i.i2874 ], [ true, %NodeBlock7551 ] br i1 %3909, label %sw.bb5.i.i.i.i.i.i.i.i2875, label %Flow7988, !amdgpu.uniform !42 sw.bb5.i.i.i.i.i.i.i.i2875: ; preds = %Flow7987 br label %Flow7988, !amdgpu.uniform !42 sw.bb6.i.i.i.i.i.i.i.i2874: ; preds = %NodeBlock7551 br label %Flow7987, !amdgpu.uniform !42 Flow7985: ; preds = %Flow7984, %NodeBlock7555 %3910 = phi i8 [ %3913, %Flow7984 ], [ poison, %NodeBlock7555 ] %3911 = phi i1 [ false, %Flow7984 ], [ true, %NodeBlock7555 ] br i1 %3911, label %sw.bb7.i.i.i.i.i.i.i.i2873, label %Flow7986, !amdgpu.uniform !42 sw.bb7.i.i.i.i.i.i.i.i2873: ; preds = %Flow7985 br label %Flow7986, !amdgpu.uniform !42 Flow7983: ; preds = %sw.bb9.i.i.i.i.i.i.i.i2723, %NodeBlock7553 %3912 = phi i1 [ false, %sw.bb9.i.i.i.i.i.i.i.i2723 ], [ true, %NodeBlock7553 ] br i1 %3912, label %sw.bb8.i.i.i.i.i.i.i.i2872, label %Flow7984, !amdgpu.uniform !42 sw.bb8.i.i.i.i.i.i.i.i2872: ; preds = %Flow7983 br label %Flow7984, !amdgpu.uniform !42 sw.bb9.i.i.i.i.i.i.i.i2723: ; preds = %NodeBlock7553 br label %Flow7983, !amdgpu.uniform !42 Flow7984: ; preds = %sw.bb8.i.i.i.i.i.i.i.i2872, %Flow7983 %3913 = phi i8 [ 56, %sw.bb8.i.i.i.i.i.i.i.i2872 ], [ 57, %Flow7983 ] br label %Flow7985, !amdgpu.uniform !42 Flow7986: ; preds = %sw.bb7.i.i.i.i.i.i.i.i2873, %Flow7985 %3914 = phi i8 [ 55, %sw.bb7.i.i.i.i.i.i.i.i2873 ], [ %3910, %Flow7985 ] br label %Flow7989, !amdgpu.uniform !42 Flow7988: ; preds = %sw.bb5.i.i.i.i.i.i.i.i2875, %Flow7987 %3915 = phi i8 [ 53, %sw.bb5.i.i.i.i.i.i.i.i2875 ], [ 54, %Flow7987 ] br label %Flow7990, !amdgpu.uniform !42 Flow7990: ; preds = %Flow7988, %Flow7989 %3916 = phi i8 [ %3915, %Flow7988 ], [ %3901, %Flow7989 ] br label %Flow7998, !amdgpu.uniform !42 Flow7992: ; preds = %sw.bb3.i.i.i.i.i.i.i.i2877, %Flow7991 %3917 = phi i8 [ 51, %sw.bb3.i.i.i.i.i.i.i.i2877 ], [ 52, %Flow7991 ] br label %Flow7996, !amdgpu.uniform !42 Flow7993: ; preds = %sw.bb1.i.i.i.i.i.i.i.i2879, %LeafBlock7543 %3918 = phi i8 [ 49, %sw.bb1.i.i.i.i.i.i.i.i2879 ], [ 48, %LeafBlock7543 ] br label %Flow7995, !amdgpu.uniform !42 Flow7995: ; preds = %Flow7993, %Flow7994 %3919 = phi i8 [ %3918, %Flow7993 ], [ 50, %Flow7994 ] br label %Flow7997, !amdgpu.uniform !42 Flow7997: ; preds = %Flow7995, %Flow7996 %3920 = phi i8 [ %3919, %Flow7995 ], [ %3905, %Flow7996 ] br label %if.then.i.i.i.i.i.i.i2724, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i2724: ; preds = %Flow7998, %Flow7997 %retval.0.i.i.i.i.i.i.i.i2725 = phi i8 [ %3903, %Flow7998 ], [ %3920, %Flow7997 ] %cmp.i.i.i.i.i.i.i.i2726 = icmp eq i64 %writer.sroa.8.0.i.i.i.i2717, 21 %cmp.i.i.i.i.i.i.i.i2726.inv = xor i1 %cmp.i.i.i.i.i.i.i.i2726, true br i1 %cmp.i.i.i.i.i.i.i.i2726.inv, label %if.then3.i.i.i.i.i.i.i2727, label %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i2730, !amdgpu.uniform !42 if.then3.i.i.i.i.i.i.i2727: ; preds = %if.then.i.i.i.i.i.i.i2724 %3921 = trunc i64 %writer.sroa.8.0.i.i.i.i2717 to i32 %3922 = xor i32 %3921, -1 %3923 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i2988, i32 %3922 %arrayidx.i.i.i.i.i.i.i.i27286049 = getelementptr i8, ptr addrspace(5) %3923, i32 21 %inc.i.i.i.i.i.i.i2729 = add i64 %writer.sroa.8.0.i.i.i.i2717, 1 store i8 %retval.0.i.i.i.i.i.i.i.i2725, ptr addrspace(5) %arrayidx.i.i.i.i.i.i.i.i27286049, align 1, !tbaa !57, !noalias !170 br label %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i2730, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i2730: ; preds = %if.then3.i.i.i.i.i.i.i2727, %if.then.i.i.i.i.i.i.i2724 %writer.sroa.8.1.i.i.i.i2731 = phi i64 [ %inc.i.i.i.i.i.i.i2729, %if.then3.i.i.i.i.i.i.i2727 ], [ 21, %if.then.i.i.i.i.i.i.i2724 ] %cmp.i.i.i.i.i.i2732 = icmp samesign ult i64 %value.addr.09.i.i.i.i.i.i2718, 10 %.not.i.i.i.i.i.i2733 = or i1 %cmp.i.i.i.i.i.i.i.i2726, %cmp.i.i.i.i.i.i2732 br i1 %.not.i.i.i.i.i.i2733, label %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIyNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEyRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i2734, label %while.body.i.i.i.i.i.i2716, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git15IntegerToStringIyNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEyRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i2734: ; preds = %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i2730 %writer.sroa.8.1.i.i.i.i2731.lcssa = phi i64 [ %writer.sroa.8.1.i.i.i.i2731, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i2730 ] %cmp.i.i.i.i.i.i.i.i2726.lcssa = phi i1 [ %cmp.i.i.i.i.i.i.i.i2726, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i2730 ] %cmp.i15.i.i.i.i2737 = icmp ne i64 %writer.sroa.8.1.i.i.i.i2731.lcssa, 0 %or.cond.not.i.i.i.i2738 = select i1 %cmp.i.i.i.i.i.i.i.i2726.lcssa, i1 true, i1 %cmp.i15.i.i.i.i2737 %or.cond.not.i.i.i.i2738.inv = xor i1 %or.cond.not.i.i.i.i2738, true br i1 %or.cond.not.i.i.i.i2738.inv, label %if.then3.i.i.lr.ph.i.i.i.i2739, label %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIyNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ey.exit.i.i.i2741, !amdgpu.uniform !42 if.then3.i.i.lr.ph.i.i.i.i2739: ; preds = %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIyNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEyRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i2734 %sunkaddr7449 = getelementptr inbounds i8, ptr addrspace(5) %buffer.i.i.i2988, i32 20 store i8 48, ptr addrspace(5) %sunkaddr7449, align 4, !tbaa !57, !noalias !170 br label %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIyNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ey.exit.i.i.i2741, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git15IntegerToStringIyNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ey.exit.i.i.i2741: ; preds = %if.then3.i.i.lr.ph.i.i.i.i2739, %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIyNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEyRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i2734 %writer.sroa.8.4.i.i.i.i2742 = phi i64 [ 1, %if.then3.i.i.lr.ph.i.i.i.i2739 ], [ %writer.sroa.8.1.i.i.i.i2731.lcssa, %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIyNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEyRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i2734 ] %sunkaddr7450 = getelementptr inbounds i8, ptr addrspace(5) %buffer.i.i.i2988, i32 24 store i64 %writer.sroa.8.4.i.i.i.i2742, ptr addrspace(5) %sunkaddr7450, align 8, !tbaa !167, !noalias !170 %cmp.i.not.i.i.i.i.i2744 = icmp ne i64 %writer.sroa.8.4.i.i.i.i2742, 0 br i1 %cmp.i.not.i.i.i.i.i2744, label %if.then.i.i.i.i.i.i2745, label %Flow7982, !amdgpu.uniform !42 if.then.i.i.i.i.i.i2745: ; preds = %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIyNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ey.exit.i.i.i2741 %3924 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %writer.sroa.8.4.i.i.i.i2742, i64 1) %ov7452 = extractvalue { i64, i1 } %3924, 1 %ov7452.inv = xor i1 %ov7452, true br i1 %ov7452.inv, label %if.end.i.i.i.i.i.i.i2748, label %Flow7981, !amdgpu.uniform !42 if.end.i.i.i.i.i.i.i2748: ; preds = %if.then.i.i.i.i.i.i2745 %math7451 = extractvalue { i64, i1 } %3924, 0 %cmp2.i.i.i.i.i.i.i2749 = icmp ult i64 %math7451, 1676976733973595601 br i1 %cmp2.i.i.i.i.i.i.i2749, label %if.then3.i.i.i.i4.i.i.i2869, label %if.end4.i.i.i.i.i.i.i2750, !amdgpu.uniform !42 if.then3.i.i.i.i4.i.i.i2869: ; preds = %if.end.i.i.i.i.i.i.i2748 %mul.i.i.i.i.i.i.i2870 = mul nuw i64 %math7451, 11 %div18.i.i.i.i.i.i.i2871 = lshr i64 %mul.i.i.i.i.i.i.i2870, 3 br label %if.end4.i.i.i.i.i.i.i2750, !amdgpu.uniform !42 Flow7981: ; preds = %if.end4.i.i.i.i.i.i.i2750, %if.then.i.i.i.i.i.i2745 %3925 = phi ptr [ %cond.i.i.i2758, %if.end4.i.i.i.i.i.i.i2750 ], [ addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr), %if.then.i.i.i.i.i.i2745 ] br label %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i2760, !amdgpu.uniform !42 if.end4.i.i.i.i.i.i.i2750: ; preds = %if.then3.i.i.i.i4.i.i.i2869, %if.end.i.i.i.i.i.i.i2748 %new_capacity.addr.0.i.i.i.i.i.i.i2751 = phi i64 [ %div18.i.i.i.i.i.i.i2871, %if.then3.i.i.i.i4.i.i.i2869 ], [ %math7451, %if.end.i.i.i.i.i.i.i2748 ] %sub.i.i.i2752 = add i64 %new_capacity.addr.0.i.i.i.i.i.i.i2751, 7 %div2.i.i.i2753 = and i64 %sub.i.i.i2752, -8 %3926 = load ptr, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %add.ptr.i.i.i2754 = getelementptr inbounds nuw i8, ptr %3926, i64 %div2.i.i.i2753 store ptr %add.ptr.i.i.i2754, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %sub.ptr.lhs.cast.i.i.i2755 = ptrtoint ptr %add.ptr.i.i.i2754 to i64 %sub.ptr.sub.i.i.i2756 = sub i64 %sub.ptr.lhs.cast.i.i.i2755, ptrtoint (ptr addrspacecast (ptr addrspace(1) @_ZN12_GLOBAL__N_16memoryE to ptr) to i64) %cmp.i.i.i2757 = icmp ugt i64 %sub.ptr.sub.i.i.i2756, 65335 %cond.i.i.i2758 = select i1 %cmp.i.i.i2757, ptr null, ptr %3926 br label %Flow7981, !amdgpu.uniform !42 Flow7982: ; preds = %Flow7980, %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIyNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ey.exit.i.i.i2741 %3927 = phi ptr [ %3925, %Flow7980 ], [ addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr), %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIyNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ey.exit.i.i.i2741 ] br label %if.end.i.i.i.i.i.i2762, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i2760: ; preds = %Flow7981 br label %loadstoreloop4955, !amdgpu.uniform !42 loadstoreloop4955: ; preds = %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i2760, %loadstoreloop4955 %3928 = phi i64 [ %3930, %loadstoreloop4955 ], [ 0, %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i2760 ] %3929 = getelementptr i8, ptr %3925, i64 %3928 store i8 0, ptr %3929, align 1 %3930 = add i64 %3928, 1 %3931 = icmp uge i64 %3930, %writer.sroa.8.4.i.i.i.i2742 br i1 %3931, label %Flow7980, label %loadstoreloop4955, !amdgpu.uniform !42 Flow7980: ; preds = %loadstoreloop4955 br label %Flow7982, !amdgpu.uniform !42 if.end.i.i.i.i.i.i2762: ; preds = %Flow7982 %cmp.not.i6.i.i.i.i.i.i2764 = icmp ne ptr %3927, addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr) br i1 %cmp.not.i6.i.i.i.i.i.i2764, label %if.then.i.i.i.i2.i.i.i2765, label %_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEy.exit.i2767, !amdgpu.uniform !42 if.then.i.i.i.i2.i.i.i2765: ; preds = %if.end.i.i.i.i.i.i2762 %arrayidx.i.i.i.i3.i.i.i2766 = getelementptr inbounds nuw i8, ptr %3927, i64 %writer.sroa.8.4.i.i.i.i2742 store i8 0, ptr %arrayidx.i.i.i.i3.i.i.i2766, align 1, !tbaa !57, !noalias !170 br label %_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEy.exit.i2767, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git3cpp9to_stringEy.exit.i2767: ; preds = %if.then.i.i.i.i2.i.i.i2765, %if.end.i.i.i.i.i.i2762 %3932 = trunc i64 %writer.sroa.8.4.i.i.i.i2742 to i32 %3933 = and i64 %writer.sroa.8.4.i.i.i.i2742, 15 %3934 = sub i64 %writer.sroa.8.4.i.i.i.i2742, %3933 %3935 = icmp ne i64 %3934, 0 br i1 %3935, label %loop-memcpy-expansion5127.preheader, label %Flow7979, !amdgpu.uniform !42 loop-memcpy-expansion5127.preheader: ; preds = %_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEy.exit.i2767 %3936 = sub i32 0, %3932 %scevgep6820 = getelementptr i8, ptr addrspace(5) %scevgep6819, i32 %3936 br label %loop-memcpy-expansion5127, !amdgpu.uniform !42 Flow7979: ; preds = %Flow7978, %_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEy.exit.i2767 br label %loop-memcpy-residual-header5130, !amdgpu.uniform !42 loop-memcpy-expansion5127: ; preds = %loop-memcpy-expansion5127.preheader, %loop-memcpy-expansion5127 %lsr.iv6821 = phi ptr addrspace(5) [ %scevgep6822, %loop-memcpy-expansion5127 ], [ %scevgep6820, %loop-memcpy-expansion5127.preheader ], !amdgpu.uniform !42 %loop-index5128 = phi i64 [ %3939, %loop-memcpy-expansion5127 ], [ 0, %loop-memcpy-expansion5127.preheader ] %3937 = load <4 x i32>, ptr addrspace(5) %lsr.iv6821, align 1 %3938 = getelementptr i8, ptr %3927, i64 %loop-index5128 store <4 x i32> %3937, ptr %3938, align 1 %3939 = add i64 %loop-index5128, 16 %scevgep6822 = getelementptr i8, ptr addrspace(5) %lsr.iv6821, i32 16 %3940 = icmp uge i64 %3939, %3934 br i1 %3940, label %Flow7978, label %loop-memcpy-expansion5127, !amdgpu.uniform !42 Flow7977: ; preds = %Flow7976, %loop-memcpy-residual-header5130 br label %post-loop-memcpy-expansion5126, !amdgpu.uniform !42 loop-memcpy-residual5129: ; preds = %loop-memcpy-residual5129.preheader, %loop-memcpy-residual5129 %lsr.iv6825 = phi ptr addrspace(5) [ %scevgep6826, %loop-memcpy-residual5129 ], [ %scevgep6824, %loop-memcpy-residual5129.preheader ], !amdgpu.uniform !42 %residual-loop-index5131 = phi i64 [ %3942, %loop-memcpy-residual5129 ], [ 0, %loop-memcpy-residual5129.preheader ] %3941 = load i8, ptr addrspace(5) %lsr.iv6825, align 1 %scevgep6828 = getelementptr i8, ptr %scevgep6827, i64 %residual-loop-index5131 store i8 %3941, ptr %scevgep6828, align 1 %3942 = add i64 %residual-loop-index5131, 1 %scevgep6826 = getelementptr i8, ptr addrspace(5) %lsr.iv6825, i32 1 %3943 = icmp uge i64 %3942, %3933 br i1 %3943, label %Flow7976, label %loop-memcpy-residual5129, !amdgpu.uniform !42 Flow7976: ; preds = %loop-memcpy-residual5129 br label %Flow7977, !amdgpu.uniform !42 post-loop-memcpy-expansion5126: ; preds = %Flow7977 call void @llvm.lifetime.end.p5(ptr addrspace(5) %buffer.i.i.i2988) #34, !noalias !170 br label %for.cond.i.i.i2771, !amdgpu.uniform !42 for.cond.i.i.i2771: ; preds = %post-loop-memcpy-expansion5126, %Flow7975 %3944 = phi i32 [ %3981, %Flow7975 ], [ %1210, %post-loop-memcpy-expansion5126 ] %3945 = phi i64 [ %3982, %Flow7975 ], [ %1211, %post-loop-memcpy-expansion5126 ] %3946 = phi i32 [ %3983, %Flow7975 ], [ %1212, %post-loop-memcpy-expansion5126 ] %retval.sroa.6.0.i.i.i2772 = phi i32 [ %3986, %Flow7975 ], [ undef, %post-loop-memcpy-expansion5126 ] %retval.sroa.2.0.i.i.i2774 = phi i64 [ %3985, %Flow7975 ], [ undef, %post-loop-memcpy-expansion5126 ] %retval.sroa.8.0.i.i.i2775 = phi i32 [ %3984, %Flow7975 ], [ undef, %post-loop-memcpy-expansion5126 ] %index.0.i.i.i2776 = phi i32 [ %3988, %Flow7975 ], [ 0, %post-loop-memcpy-expansion5126 ] %3947 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i2777 = icmp ult i32 %index.0.i.i.i2776, %3947 %spec.store.select.i.i.i2778 = select i1 %cmp.not.i.i.i2777, i32 %index.0.i.i.i2776, i32 0 %3948 = call i64 @llvm.amdgcn.ballot.i64(i1 true) %3949 = and i32 %spec.store.select.i.i.i2778, 31 %3950 = lshr i64 %3948, %sh_prom.i.i.i.i756 %3951 = trunc i64 %3950 to i32 %conv4.i.i.i.i.i2782 = and i32 %3951, 1 %shl.i.i.i.i.i2783 = shl nuw i32 %conv4.i.i.i.i.i2782, %3949 br label %ComputeLoop5801, !amdgpu.uniform !42 3952: ; preds = %ComputeEnd5802 %sunkaddr7453 = getelementptr inbounds i8, ptr addrspace(1) %8102, i64 40 %3953 = atomicrmw or ptr addrspace(1) %sunkaddr7453, i32 %.lcssa9117 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %3954, !amdgpu.uniform !42 3954: ; preds = %3952, %ComputeEnd5802 %3955 = phi i32 [ %3953, %3952 ], [ poison, %ComputeEnd5802 ] call void @llvm.amdgcn.end.cf.i64(i64 %8111) %3956 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %3955) %3957 = or i32 %3956, %.lcssa9118 %shl5.i.i.i.i.i2784 = shl nuw i32 1, %3949 %and.i.i.i.i.i2785 = and i32 %shl5.i.i.i.i.i2784, %3957 %tobool3.i.i.i.i2786 = icmp ne i32 %and.i.i.i.i.i2785, 0 %3958 = call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i2786) %and.i.i.i.i.i.i2787 = and i64 %3958, %3948 %cmp.i.not.i.i.i2788 = icmp ne i64 %3948, %and.i.i.i.i.i.i2787 br i1 %cmp.i.not.i.i.i2788, label %if.then.i.i.i.i2789, label %Flow7974, !amdgpu.uniform !42 if.then.i.i.i.i2789: ; preds = %3954 fence syncscope("agent") acquire %3959 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %3960 = extractelement <2 x i64> %3959, i32 0 %3961 = inttoptr i64 %3960 to ptr %3962 = extractelement <2 x i64> %3959, i32 1 %3963 = inttoptr i64 %3962 to ptr %idxprom.i.i.i.i2790 = zext i32 %spec.store.select.i.i.i2778 to i64 %arrayidx.i.i.i.i2791 = getelementptr inbounds nuw i32, ptr %3961, i64 %idxprom.i.i.i.i2790, !amdgpu.uniform !42 %3964 = load atomic i32, ptr %arrayidx.i.i.i.i2791 monotonic, align 4 %3965 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %3964) %arrayidx.i45.i.i.i2792 = getelementptr inbounds nuw i32, ptr %3963, i64 %idxprom.i.i.i.i2790, !amdgpu.uniform !42 %3966 = load atomic i32, ptr %arrayidx.i45.i.i.i2792 monotonic, align 4 %3967 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %3966) %cmp.i46.not.i.i.i2793 = icmp ne i32 %3965, %3967 br i1 %cmp.i46.not.i.i.i2793, label %if.then12.i.i.i2794, label %Flow7972, !amdgpu.uniform !42 if.then12.i.i.i2794: ; preds = %if.then.i.i.i.i2789 fence syncscope("agent") release %3968 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %3948, i1 true) %iszero.i.i.i.i.i.i.i2795 = icmp ne i64 %3948, 0 %cmp2.i.i.i.i.i.i2796 = icmp eq i64 %3968, %sh_prom.i.i.i.i756 %cmp.i.i.i.i.i2.i2797 = select i1 %iszero.i.i.i.i.i.i.i2795, i1 %cmp2.i.i.i.i.i.i2796, i1 false %conv4.i.i51.i.i.i2798 = zext i1 %cmp.i.i.i.i.i2.i2797 to i32 %shl.i.i52.i.i.i2799 = shl nuw i32 %conv4.i.i51.i.i.i2798, %3949 %xor.i.i.i.i.i2800 = xor i32 %shl.i.i52.i.i.i2799, -1 %3969 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5806, !amdgpu.uniform !42 3970: ; preds = %ComputeEnd5807 %sunkaddr7454 = getelementptr inbounds i8, ptr addrspace(1) %8102, i64 40 %3971 = atomicrmw and ptr addrspace(1) %sunkaddr7454, i32 %.lcssa9119 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %3972, !amdgpu.uniform !42 3972: ; preds = %3970, %ComputeEnd5807 call void @llvm.amdgcn.end.cf.i64(i64 %8129) call void @llvm.amdgcn.wave.barrier() br label %Flow7972, !amdgpu.uniform !42 if.end14.i.i.i2861: ; preds = %Flow7972 %3973 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %3948, i1 true) %iszero.i.i.i.i.i.i2862 = icmp ne i64 %3948, 0 %cmp2.i.i.i.i.i2863 = icmp eq i64 %3973, %sh_prom.i.i.i.i756 %cmp.i.i.i.i.i2864 = select i1 %iszero.i.i.i.i.i.i2862, i1 %cmp2.i.i.i.i.i2863, i1 false %3974 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i2864) %3975 = extractvalue { i1, i64 } %3974, 0 %3976 = extractvalue { i1, i64 } %3974, 1 br i1 %3975, label %if.then16.i.i.i2866, label %if.end22.i.i.i2865 if.then16.i.i.i2866: ; preds = %if.end14.i.i.i2861 %3977 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i2867 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %3977, i64 %idxprom.i.i.i.i2790, i32 1 store i32 1660944387, ptr %opcode.i.i.i2867, align 8, !tbaa !77 %arrayidx21.i.i.i2868 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %3977, i64 %idxprom.i.i.i.i2790 store i64 %3948, ptr %arrayidx21.i.i.i2868, align 8, !tbaa !80 br label %if.end22.i.i.i2865, !amdgpu.uniform !42 Flow7973: ; preds = %if.end22.i.i.i2865, %Flow7972 %3978 = phi i32 [ %3965, %if.end22.i.i.i2865 ], [ %retval.sroa.8.0.i.i.i2775, %Flow7972 ] %3979 = phi i64 [ %3948, %if.end22.i.i.i2865 ], [ %retval.sroa.2.0.i.i.i2774, %Flow7972 ] %3980 = phi i32 [ %spec.store.select.i.i.i2778, %if.end22.i.i.i2865 ], [ %retval.sroa.6.0.i.i.i2772, %Flow7972 ] br label %cleanup26.i.i.i2801, !amdgpu.uniform !42 if.end22.i.i.i2865: ; preds = %if.then16.i.i.i2866, %if.end14.i.i.i2861 call void @llvm.amdgcn.end.cf.i64(i64 %3976) call void @llvm.amdgcn.wave.barrier() br label %Flow7973, !amdgpu.uniform !42 Flow7974: ; preds = %cleanup26.i.i.i2801, %3954 %3981 = phi i32 [ %3980, %cleanup26.i.i.i2801 ], [ %3944, %3954 ] %3982 = phi i64 [ %3979, %cleanup26.i.i.i2801 ], [ %3945, %3954 ] %3983 = phi i32 [ %3978, %cleanup26.i.i.i2801 ], [ %3946, %3954 ] %3984 = phi i32 [ %3978, %cleanup26.i.i.i2801 ], [ %retval.sroa.8.0.i.i.i2775, %3954 ] %3985 = phi i64 [ %3979, %cleanup26.i.i.i2801 ], [ %retval.sroa.2.0.i.i.i2774, %3954 ] %3986 = phi i32 [ %3980, %cleanup26.i.i.i2801 ], [ %retval.sroa.6.0.i.i.i2772, %3954 ] %3987 = phi i1 [ %cmp.i46.not.i.i.i2793, %cleanup26.i.i.i2801 ], [ true, %3954 ] br i1 %3987, label %for.inc.i.i.i2806, label %Flow7975, !amdgpu.uniform !42 cleanup26.i.i.i2801: ; preds = %Flow7973 br label %Flow7974, !amdgpu.uniform !42 for.inc.i.i.i2806: ; preds = %Flow7974 %inc.i.i.i2811 = add i32 %spec.store.select.i.i.i2778, 1 br label %Flow7975, !amdgpu.uniform !42 Flow7975: ; preds = %for.inc.i.i.i2806, %Flow7974 %3988 = phi i32 [ %inc.i.i.i2811, %for.inc.i.i.i2806 ], [ poison, %Flow7974 ] %3989 = phi i1 [ false, %for.inc.i.i.i2806 ], [ true, %Flow7974 ] br i1 %3989, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2812, label %for.cond.i.i.i2771, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2812: ; preds = %Flow7975 %.lcssa9122 = phi i32 [ %3981, %Flow7975 ] %.lcssa9121 = phi i64 [ %3982, %Flow7975 ] %.lcssa9120 = phi i32 [ %3983, %Flow7975 ] fence acquire %3990 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i2813 = shl i32 %.lcssa9122, 6 %idxprom.i19.i.i.i.i.i2814 = zext i32 %mul.i.i.i.i.i.i2813 to i64 %arrayidx.i20.i.i.i.i.i2815 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %3990, i64 %idxprom.i19.i.i.i.i.i2814 %arrayidx.i22.i.i.i.i.i2816 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i2815, i64 %sh_prom.i.i.i.i756 store i64 %writer.sroa.8.4.i.i.i.i2742, ptr %arrayidx.i22.i.i.i.i.i2816, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i2817 = call i64 @llvm.umin.i64(i64 %writer.sroa.8.4.i.i.i.i2742, i64 56) %3991 = and i64 %spec.select.i.i.i.i.i.i.i2817, 15 %3992 = sub i64 %spec.select.i.i.i.i.i.i.i2817, %3991 %3993 = icmp ne i64 %3992, 0 br i1 %3993, label %loop-memcpy-expansion5025.preheader, label %Flow7971, !amdgpu.uniform !42 loop-memcpy-expansion5025.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2812 %scevgep6829 = getelementptr i8, ptr %3990, i64 8 %scevgep6830 = getelementptr i8, ptr %scevgep6829, i64 %1474 %3994 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i2814, 6 %scevgep6831 = getelementptr i8, ptr %scevgep6830, i64 %3994 br label %loop-memcpy-expansion5025, !amdgpu.uniform !42 Flow7971: ; preds = %Flow7970, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2812 br label %loop-memcpy-residual-header5028, !amdgpu.uniform !42 loop-memcpy-expansion5025: ; preds = %loop-memcpy-expansion5025.preheader, %loop-memcpy-expansion5025 %loop-index5026 = phi i64 [ %3997, %loop-memcpy-expansion5025 ], [ 0, %loop-memcpy-expansion5025.preheader ] %3995 = getelementptr i8, ptr %3927, i64 %loop-index5026, !amdgpu.uniform !42 %3996 = load <4 x i32>, ptr %3995, align 1 %scevgep6832 = getelementptr i8, ptr %scevgep6831, i64 %loop-index5026 store <4 x i32> %3996, ptr %scevgep6832, align 1 %3997 = add i64 %loop-index5026, 16 %3998 = icmp uge i64 %3997, %3992 br i1 %3998, label %Flow7970, label %loop-memcpy-expansion5025, !amdgpu.uniform !42 Flow7969: ; preds = %Flow7967, %Flow7968 %3999 = phi i64 [ %6273, %Flow7967 ], [ %6270, %Flow7968 ] br label %post-loop-memcpy-expansion5024, !amdgpu.uniform !42 loop-memcpy-residual5027: ; preds = %loop-memcpy-residual5027.preheader, %loop-memcpy-residual5027 %residual-loop-index5029 = phi i64 [ %4001, %loop-memcpy-residual5027 ], [ 0, %loop-memcpy-residual5027.preheader ] %scevgep6838 = getelementptr i8, ptr %scevgep6837, i64 %residual-loop-index5029, !amdgpu.uniform !42 %4000 = load i8, ptr %scevgep6838, align 1 %scevgep6836 = getelementptr i8, ptr %scevgep6835, i64 %residual-loop-index5029 store i8 %4000, ptr %scevgep6836, align 1 %4001 = add i64 %residual-loop-index5029, 1 %4002 = icmp uge i64 %4001, %3991 br i1 %4002, label %Flow7967, label %loop-memcpy-residual5027, !amdgpu.uniform !42 Flow7967: ; preds = %loop-memcpy-residual5027 br label %Flow7969, !amdgpu.uniform !42 post-loop-memcpy-expansion5024: ; preds = %Flow7969 %tobool.not.i.i.i.i.i.i2819 = icmp eq i32 %.lcssa9120, 0 %conv.i.i.i.i.i.i2820 = zext i1 %tobool.not.i.i.i.i.i.i2819 to i32 fence release %4003 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i2821 = zext i32 %.lcssa9122 to i64 %arrayidx.i24.i.i.i.i.i2822 = getelementptr inbounds nuw i32, ptr %4003, i64 %idxprom.i23.i.i.i.i.i2821 store atomic i32 %conv.i.i.i.i.i.i2820, ptr %arrayidx.i24.i.i.i.i.i2822 monotonic, align 4 %4004 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i2823 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %4004, i64 %idxprom.i23.i.i.i.i.i2821 %4005 = load i64, ptr %arrayidx.i.i5.i.i2823, align 8, !tbaa !80 %scevgep6839 = getelementptr i8, ptr %3927, i64 56 %4006 = add i64 %writer.sroa.8.4.i.i.i.i2742, -56 br label %while.cond.i.i.i.i2824, !amdgpu.uniform !42 while.cond.i.i.i.i2824: ; preds = %post-loop-memcpy-expansion5024, %Flow7966 %phi.broken8716 = phi i64 [ 0, %post-loop-memcpy-expansion5024 ], [ %4028, %Flow7966 ] %lsr.iv6845 = phi i64 [ %4026, %Flow7966 ], [ %4006, %post-loop-memcpy-expansion5024 ] %lsr.iv6840 = phi ptr [ %4025, %Flow7966 ], [ %scevgep6839, %post-loop-memcpy-expansion5024 ] %port.sroa.37.0.i.i2825 = phi i32 [ %4024, %Flow7966 ], [ %conv.i.i.i.i.i.i2820, %post-loop-memcpy-expansion5024 ] %idx.0.i.i.i.i2826 = phi i64 [ %4023, %Flow7966 ], [ 56, %post-loop-memcpy-expansion5024 ] %cmp.i.i.i.i2827 = icmp ugt i64 %writer.sroa.8.4.i.i.i.i2742, %idx.0.i.i.i.i2826 %4007 = call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i2827) %and.i.i.i.i6.i.i2828 = and i64 %4007, %4005 %tobool.not.i.i.i.i2829 = icmp ne i64 %and.i.i.i.i6.i.i2828, 0 %4008 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i2830 = getelementptr inbounds nuw i32, ptr %4008, i64 %idxprom.i23.i.i.i.i.i2821 %4009 = load atomic i32, ptr %arrayidx.i22.i.i.i2830 monotonic, align 4 %4010 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i2829) %4011 = extractvalue { i1, i64 } %4010, 0 %4012 = extractvalue { i1, i64 } %4010, 1 br i1 %4011, label %cond.false.i8.i.i.i.i2831, label %Flow7966 cond.false.i8.i.i.i.i2831: ; preds = %while.cond.i.i.i.i2824 %4013 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %4009) %4014 = icmp ne i32 %4013, %port.sroa.37.0.i.i2825 %4015 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %4014) %4016 = extractvalue { i1, i64 } %4015, 0 %4017 = extractvalue { i1, i64 } %4015, 1 br i1 %4016, label %while.body.i.i21.i.i.i.i2832.preheader, label %Flow7965 while.body.i.i21.i.i.i.i2832.preheader: ; preds = %cond.false.i8.i.i.i.i2831 br label %while.body.i.i21.i.i.i.i2832, !amdgpu.uniform !42 Flow7965: ; preds = %Flow7964, %cond.false.i8.i.i.i.i2831 call void @llvm.amdgcn.end.cf.i64(i64 %4017) br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i2835, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i2832: ; preds = %while.body.i.i21.i.i.i.i2832.preheader, %while.body.i.i21.i.i.i.i2832 %phi.broken8715 = phi i64 [ 0, %while.body.i.i21.i.i.i.i2832.preheader ], [ %4021, %while.body.i.i21.i.i.i.i2832 ] call void @llvm.amdgcn.s.sleep(i32 2) %4018 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i2833 = getelementptr inbounds nuw i32, ptr %4018, i64 %idxprom.i23.i.i.i.i.i2821 %4019 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i2833 monotonic, align 4 %4020 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %4019) %cmp.i.not.i.i23.i.i.i.i2834 = icmp eq i32 %4020, %port.sroa.37.0.i.i2825 %4021 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i23.i.i.i.i2834, i64 %phi.broken8715) %4022 = call i1 @llvm.amdgcn.loop.i64(i64 %4021) br i1 %4022, label %Flow7964, label %while.body.i.i21.i.i.i.i2832 Flow7964: ; preds = %while.body.i.i21.i.i.i.i2832 %.lcssa9123 = phi i64 [ %4021, %while.body.i.i21.i.i.i.i2832 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9123) br label %Flow7965, !amdgpu.uniform !42 Flow7966: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2836, %while.cond.i.i.i.i2824 %4023 = phi i64 [ %add.i.i.i.i2839, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2836 ], [ poison, %while.cond.i.i.i.i2824 ] %4024 = phi i32 [ %conv.i.i26.i.i.i.i2837, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2836 ], [ poison, %while.cond.i.i.i.i2824 ] %4025 = phi ptr [ %scevgep6841, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2836 ], [ poison, %while.cond.i.i.i.i2824 ] %4026 = phi i64 [ %lsr.iv.next6846, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2836 ], [ poison, %while.cond.i.i.i.i2824 ] %4027 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2836 ], [ true, %while.cond.i.i.i.i2824 ] call void @llvm.amdgcn.end.cf.i64(i64 %4012) %4028 = call i64 @llvm.amdgcn.if.break.i64(i1 %4027, i64 %phi.broken8716) %4029 = call i1 @llvm.amdgcn.loop.i64(i64 %4028) br i1 %4029, label %cond.false.i.i.i2846, label %while.cond.i.i.i.i2824 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i2835: ; preds = %Flow7965 fence acquire br i1 %cmp.i.i.i.i2827, label %if.then.i.i.i.i.i.i3.i2840, label %Flow7963, !amdgpu.uniform !42 if.then.i.i.i.i.i.i3.i2840: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i2835 %sub.i.i.i.i.i.i.i2842 = sub nuw i64 %writer.sroa.8.4.i.i.i.i2742, %idx.0.i.i.i.i2826 %spec.select.i.i.i36.i.i.i.i2843 = call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i2842, i64 64) %4030 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %4031 = and i64 %spec.select.i.i.i36.i.i.i.i2843, 15 %4032 = sub i64 %spec.select.i.i.i36.i.i.i.i2843, %4031 %4033 = icmp ne i64 %4032, 0 br i1 %4033, label %loop-memcpy-expansion5019.preheader, label %Flow7962, !amdgpu.uniform !42 loop-memcpy-expansion5019.preheader: ; preds = %if.then.i.i.i.i.i.i3.i2840 %arrayidx.i20.i35.i.i.i.i2844 = getelementptr %"struct.rpc::Buffer", ptr %4030, i64 %idxprom.i19.i.i.i.i.i2814 %arrayidx.i22.i38.i.i.i.i2845 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i2844, i64 %sh_prom.i.i.i.i756 br label %loop-memcpy-expansion5019, !amdgpu.uniform !42 Flow7962: ; preds = %Flow7961, %if.then.i.i.i.i.i.i3.i2840 br label %loop-memcpy-residual-header5022, !amdgpu.uniform !42 loop-memcpy-expansion5019: ; preds = %loop-memcpy-expansion5019.preheader, %loop-memcpy-expansion5019 %loop-index5020 = phi i64 [ %4036, %loop-memcpy-expansion5019 ], [ 0, %loop-memcpy-expansion5019.preheader ] %scevgep6842 = getelementptr i8, ptr %lsr.iv6840, i64 %loop-index5020, !amdgpu.uniform !42 %4034 = load <4 x i32>, ptr %scevgep6842, align 1 %4035 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i2845, i64 %loop-index5020 store <4 x i32> %4034, ptr %4035, align 1 %4036 = add i64 %loop-index5020, 16 %4037 = icmp uge i64 %4036, %4032 br i1 %4037, label %Flow7961, label %loop-memcpy-expansion5019, !amdgpu.uniform !42 Flow7960: ; preds = %Flow7959, %loop-memcpy-residual-header5022 br label %Flow7963, !amdgpu.uniform !42 loop-memcpy-residual5021: ; preds = %loop-memcpy-residual5021.preheader, %loop-memcpy-residual5021 %residual-loop-index5023 = phi i64 [ %4039, %loop-memcpy-residual5021 ], [ 0, %loop-memcpy-residual5021.preheader ] %scevgep6851 = getelementptr i8, ptr %scevgep6850, i64 %residual-loop-index5023, !amdgpu.uniform !42 %4038 = load i8, ptr %scevgep6851, align 1 %scevgep6849 = getelementptr i8, ptr %scevgep6848, i64 %residual-loop-index5023 store i8 %4038, ptr %scevgep6849, align 1 %4039 = add i64 %residual-loop-index5023, 1 %4040 = icmp uge i64 %4039, %4031 br i1 %4040, label %Flow7959, label %loop-memcpy-residual5021, !amdgpu.uniform !42 Flow7959: ; preds = %loop-memcpy-residual5021 br label %Flow7960, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2836: ; preds = %Flow7963 %conv.i.i26.i.i.i.i2837 = xor i32 %port.sroa.37.0.i.i2825, 1 fence release %4041 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i2838 = getelementptr inbounds nuw i32, ptr %4041, i64 %idxprom.i23.i.i.i.i.i2821 store atomic i32 %conv.i.i26.i.i.i.i2837, ptr %arrayidx.i24.i29.i.i.i.i2838 monotonic, align 4 %add.i.i.i.i2839 = add i64 %idx.0.i.i.i.i2826, 64 %scevgep6841 = getelementptr i8, ptr %lsr.iv6840, i64 64 %lsr.iv.next6846 = add i64 %lsr.iv6845, -64 br label %Flow7966, !amdgpu.uniform !42 cond.false.i.i.i2846: ; preds = %Flow7966 %.lcssa9125 = phi i64 [ %4028, %Flow7966 ] %port.sroa.37.0.i.i2825.lcssa = phi i32 [ %port.sroa.37.0.i.i2825, %Flow7966 ] %.lcssa9124 = phi i32 [ %4009, %Flow7966 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9125) %4042 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa9124) %4043 = icmp ne i32 %4042, %port.sroa.37.0.i.i2825.lcssa %4044 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %4043) %4045 = extractvalue { i1, i64 } %4044, 0 %4046 = extractvalue { i1, i64 } %4044, 1 br i1 %4045, label %while.body.i.i.i.i2847.preheader, label %Flow7958 while.body.i.i.i.i2847.preheader: ; preds = %cond.false.i.i.i2846 br label %while.body.i.i.i.i2847, !amdgpu.uniform !42 Flow7958: ; preds = %Flow7957, %cond.false.i.i.i2846 call void @llvm.amdgcn.end.cf.i64(i64 %4046) br label %_ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i2850, !amdgpu.uniform !42 while.body.i.i.i.i2847: ; preds = %while.body.i.i.i.i2847.preheader, %while.body.i.i.i.i2847 %phi.broken8717 = phi i64 [ 0, %while.body.i.i.i.i2847.preheader ], [ %4050, %while.body.i.i.i.i2847 ] call void @llvm.amdgcn.s.sleep(i32 2) %4047 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i2848 = getelementptr inbounds nuw i32, ptr %4047, i64 %idxprom.i23.i.i.i.i.i2821 %4048 = load atomic i32, ptr %arrayidx.i.i.i8.i.i2848 monotonic, align 4 %4049 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %4048) %cmp.i.not.i.i.i.i2849 = icmp eq i32 %4049, %port.sroa.37.0.i.i2825.lcssa %4050 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i2849, i64 %phi.broken8717) %4051 = call i1 @llvm.amdgcn.loop.i64(i64 %4050) br i1 %4051, label %Flow7957, label %while.body.i.i.i.i2847 Flow7957: ; preds = %while.body.i.i.i.i2847 %.lcssa9126 = phi i64 [ %4050, %while.body.i.i.i.i2847 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9126) br label %Flow7958, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i2850: ; preds = %Flow7958 fence acquire call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %4052 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa9121, i1 true) %iszero.i.i.i.i.i13.i.i2851 = icmp ne i64 %.lcssa9121, 0 %cmp2.i.i.i.i14.i.i2852 = icmp eq i64 %4052, %sh_prom.i.i.i.i756 %cmp.i.i.i.i15.i.i2853 = select i1 %iszero.i.i.i.i.i13.i.i2851, i1 %cmp2.i.i.i.i14.i.i2852, i1 false %4053 = and i32 %.lcssa9122, 31 %conv4.i.i.i19.i.i2857 = zext i1 %cmp.i.i.i.i15.i.i2853 to i32 %shl.i.i.i20.i.i2858 = shl nuw i32 %conv4.i.i.i19.i.i2857, %4053 %xor.i.i.i21.i.i2859 = xor i32 %shl.i.i.i20.i.i2858, -1 %4054 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5810, !amdgpu.uniform !42 4055: ; preds = %ComputeEnd5811 %div8.i.i.i16.i.i2854 = lshr i32 %.lcssa9122, 5 %idxprom.i.i.i17.i.i2855 = zext nneg i32 %div8.i.i.i16.i.i2854 to i64 %4056 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i2855 %sunkaddr7455 = getelementptr inbounds i8, ptr addrspace(1) %4056, i64 40 %4057 = atomicrmw and ptr addrspace(1) %sunkaddr7455, i32 %.lcssa9127 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %4058, !amdgpu.uniform !42 4058: ; preds = %4055, %ComputeEnd5811 call void @llvm.amdgcn.end.cf.i64(i64 %8146) call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i1.i2890, !amdgpu.uniform !42 for.cond.i.i1.i2890: ; preds = %4058, %Flow7956 %4059 = phi i32 [ %4096, %Flow7956 ], [ %1213, %4058 ] %4060 = phi i64 [ %4097, %Flow7956 ], [ %1214, %4058 ] %4061 = phi i32 [ %4098, %Flow7956 ], [ %1215, %4058 ] %retval.sroa.6.0.i.i.i2891 = phi i32 [ %4101, %Flow7956 ], [ undef, %4058 ] %retval.sroa.2.0.i.i.i2893 = phi i64 [ %4100, %Flow7956 ], [ undef, %4058 ] %retval.sroa.8.0.i.i.i2894 = phi i32 [ %4099, %Flow7956 ], [ undef, %4058 ] %index.0.i.i.i2895 = phi i32 [ %4103, %Flow7956 ], [ 0, %4058 ] %4062 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i2896 = icmp ult i32 %index.0.i.i.i2895, %4062 %spec.store.select.i.i.i2897 = select i1 %cmp.not.i.i.i2896, i32 %index.0.i.i.i2895, i32 0 %4063 = call i64 @llvm.amdgcn.ballot.i64(i1 true) %4064 = and i32 %spec.store.select.i.i.i2897, 31 %4065 = lshr i64 %4063, %sh_prom.i.i.i.i756 %4066 = trunc i64 %4065 to i32 %conv4.i.i.i.i.i2901 = and i32 %4066, 1 %shl.i.i.i.i.i2902 = shl nuw i32 %conv4.i.i.i.i.i2901, %4064 br label %ComputeLoop5814, !amdgpu.uniform !42 4067: ; preds = %ComputeEnd5815 %sunkaddr7456 = getelementptr inbounds i8, ptr addrspace(1) %8156, i64 40 %4068 = atomicrmw or ptr addrspace(1) %sunkaddr7456, i32 %.lcssa9128 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %4069, !amdgpu.uniform !42 4069: ; preds = %4067, %ComputeEnd5815 %4070 = phi i32 [ %4068, %4067 ], [ poison, %ComputeEnd5815 ] call void @llvm.amdgcn.end.cf.i64(i64 %8165) %4071 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %4070) %4072 = or i32 %4071, %.lcssa9129 %shl5.i.i.i.i.i2903 = shl nuw i32 1, %4064 %and.i.i.i.i.i2904 = and i32 %shl5.i.i.i.i.i2903, %4072 %tobool3.i.i.i.i2905 = icmp ne i32 %and.i.i.i.i.i2904, 0 %4073 = call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i2905) %and.i.i.i.i.i.i2906 = and i64 %4073, %4063 %cmp.i.not.i.i.i2907 = icmp ne i64 %4063, %and.i.i.i.i.i.i2906 br i1 %cmp.i.not.i.i.i2907, label %if.then.i.i.i.i2908, label %Flow7955, !amdgpu.uniform !42 if.then.i.i.i.i2908: ; preds = %4069 fence syncscope("agent") acquire %4074 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %4075 = extractelement <2 x i64> %4074, i32 0 %4076 = inttoptr i64 %4075 to ptr %4077 = extractelement <2 x i64> %4074, i32 1 %4078 = inttoptr i64 %4077 to ptr %idxprom.i.i.i.i2909 = zext i32 %spec.store.select.i.i.i2897 to i64 %arrayidx.i.i.i.i2910 = getelementptr inbounds nuw i32, ptr %4076, i64 %idxprom.i.i.i.i2909, !amdgpu.uniform !42 %4079 = load atomic i32, ptr %arrayidx.i.i.i.i2910 monotonic, align 4 %4080 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %4079) %arrayidx.i45.i.i.i2911 = getelementptr inbounds nuw i32, ptr %4078, i64 %idxprom.i.i.i.i2909, !amdgpu.uniform !42 %4081 = load atomic i32, ptr %arrayidx.i45.i.i.i2911 monotonic, align 4 %4082 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %4081) %cmp.i46.not.i.i.i2912 = icmp ne i32 %4080, %4082 br i1 %cmp.i46.not.i.i.i2912, label %if.then12.i.i.i2913, label %Flow7953, !amdgpu.uniform !42 if.then12.i.i.i2913: ; preds = %if.then.i.i.i.i2908 fence syncscope("agent") release %4083 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %4063, i1 true) %iszero.i.i.i.i.i.i.i2914 = icmp ne i64 %4063, 0 %cmp2.i.i.i.i.i.i2915 = icmp eq i64 %4083, %sh_prom.i.i.i.i756 %cmp.i.i.i.i.i.i2916 = select i1 %iszero.i.i.i.i.i.i.i2914, i1 %cmp2.i.i.i.i.i.i2915, i1 false %conv4.i.i51.i.i.i2917 = zext i1 %cmp.i.i.i.i.i.i2916 to i32 %shl.i.i52.i.i.i2918 = shl nuw i32 %conv4.i.i51.i.i.i2917, %4064 %xor.i.i.i.i.i2919 = xor i32 %shl.i.i52.i.i.i2918, -1 %4084 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5819, !amdgpu.uniform !42 4085: ; preds = %ComputeEnd5820 %sunkaddr7457 = getelementptr inbounds i8, ptr addrspace(1) %8156, i64 40 %4086 = atomicrmw and ptr addrspace(1) %sunkaddr7457, i32 %.lcssa9130 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %4087, !amdgpu.uniform !42 4087: ; preds = %4085, %ComputeEnd5820 call void @llvm.amdgcn.end.cf.i64(i64 %8183) call void @llvm.amdgcn.wave.barrier() br label %Flow7953, !amdgpu.uniform !42 if.end14.i.i.i2979: ; preds = %Flow7953 %4088 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %4063, i1 true) %iszero.i.i.i.i.i.i2980 = icmp ne i64 %4063, 0 %cmp2.i.i.i.i.i2981 = icmp eq i64 %4088, %sh_prom.i.i.i.i756 %cmp.i.i.i.i.i2982 = select i1 %iszero.i.i.i.i.i.i2980, i1 %cmp2.i.i.i.i.i2981, i1 false %4089 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i2982) %4090 = extractvalue { i1, i64 } %4089, 0 %4091 = extractvalue { i1, i64 } %4089, 1 br i1 %4090, label %if.then16.i.i.i2984, label %if.end22.i.i.i2983 if.then16.i.i.i2984: ; preds = %if.end14.i.i.i2979 %4092 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i2985 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %4092, i64 %idxprom.i.i.i.i2909, i32 1 store i32 1660944387, ptr %opcode.i.i.i2985, align 8, !tbaa !77 %arrayidx21.i.i.i2986 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %4092, i64 %idxprom.i.i.i.i2909 store i64 %4063, ptr %arrayidx21.i.i.i2986, align 8, !tbaa !80 br label %if.end22.i.i.i2983, !amdgpu.uniform !42 Flow7954: ; preds = %if.end22.i.i.i2983, %Flow7953 %4093 = phi i32 [ %4080, %if.end22.i.i.i2983 ], [ %retval.sroa.8.0.i.i.i2894, %Flow7953 ] %4094 = phi i64 [ %4063, %if.end22.i.i.i2983 ], [ %retval.sroa.2.0.i.i.i2893, %Flow7953 ] %4095 = phi i32 [ %spec.store.select.i.i.i2897, %if.end22.i.i.i2983 ], [ %retval.sroa.6.0.i.i.i2891, %Flow7953 ] br label %cleanup26.i.i.i2920, !amdgpu.uniform !42 if.end22.i.i.i2983: ; preds = %if.then16.i.i.i2984, %if.end14.i.i.i2979 call void @llvm.amdgcn.end.cf.i64(i64 %4091) call void @llvm.amdgcn.wave.barrier() br label %Flow7954, !amdgpu.uniform !42 Flow7955: ; preds = %cleanup26.i.i.i2920, %4069 %4096 = phi i32 [ %4095, %cleanup26.i.i.i2920 ], [ %4059, %4069 ] %4097 = phi i64 [ %4094, %cleanup26.i.i.i2920 ], [ %4060, %4069 ] %4098 = phi i32 [ %4093, %cleanup26.i.i.i2920 ], [ %4061, %4069 ] %4099 = phi i32 [ %4093, %cleanup26.i.i.i2920 ], [ %retval.sroa.8.0.i.i.i2894, %4069 ] %4100 = phi i64 [ %4094, %cleanup26.i.i.i2920 ], [ %retval.sroa.2.0.i.i.i2893, %4069 ] %4101 = phi i32 [ %4095, %cleanup26.i.i.i2920 ], [ %retval.sroa.6.0.i.i.i2891, %4069 ] %4102 = phi i1 [ %cmp.i46.not.i.i.i2912, %cleanup26.i.i.i2920 ], [ true, %4069 ] br i1 %4102, label %for.inc.i.i.i2925, label %Flow7956, !amdgpu.uniform !42 cleanup26.i.i.i2920: ; preds = %Flow7954 br label %Flow7955, !amdgpu.uniform !42 for.inc.i.i.i2925: ; preds = %Flow7955 %inc.i.i.i2930 = add i32 %spec.store.select.i.i.i2897, 1 br label %Flow7956, !amdgpu.uniform !42 Flow7956: ; preds = %for.inc.i.i.i2925, %Flow7955 %4103 = phi i32 [ %inc.i.i.i2930, %for.inc.i.i.i2925 ], [ poison, %Flow7955 ] %4104 = phi i1 [ false, %for.inc.i.i.i2925 ], [ true, %Flow7955 ] br i1 %4104, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2931, label %for.cond.i.i1.i2890, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2931: ; preds = %Flow7956 %.lcssa9133 = phi i32 [ %4096, %Flow7956 ] %.lcssa9132 = phi i64 [ %4097, %Flow7956 ] %.lcssa9131 = phi i32 [ %4098, %Flow7956 ] fence acquire %4105 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i2932 = shl i32 %.lcssa9133, 6 %idxprom.i19.i.i.i.i.i2933 = zext i32 %mul.i.i.i.i.i.i2932 to i64 %arrayidx.i20.i.i.i.i.i2934 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %4105, i64 %idxprom.i19.i.i.i.i.i2933 %arrayidx.i22.i.i.i.i.i2935 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i2934, i64 %sh_prom.i.i.i.i756 store i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.23 to ptr), i64 5) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.23 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i2935, align 8, !tbaa !82 br i1 %1122, label %loop-memcpy-expansion5373.preheader, label %Flow7952, !amdgpu.uniform !42 loop-memcpy-expansion5373.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2931 %scevgep6852 = getelementptr i8, ptr %4105, i64 8 %scevgep6853 = getelementptr i8, ptr %scevgep6852, i64 %1474 %4106 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i2933, 6 %scevgep6854 = getelementptr i8, ptr %scevgep6853, i64 %4106 br label %loop-memcpy-expansion5373, !amdgpu.uniform !42 Flow7952: ; preds = %Flow7951, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i2931 br label %loop-memcpy-residual-header5376, !amdgpu.uniform !42 loop-memcpy-expansion5373: ; preds = %loop-memcpy-expansion5373.preheader, %loop-memcpy-expansion5373 %loop-index5374 = phi i64 [ %4109, %loop-memcpy-expansion5373 ], [ 0, %loop-memcpy-expansion5373.preheader ] %4107 = getelementptr i8, ptr addrspace(4) @.str.23, i64 %loop-index5374, !amdgpu.uniform !42 %4108 = load <4 x i32>, ptr addrspace(4) %4107, align 1 %scevgep6855 = getelementptr i8, ptr %scevgep6854, i64 %loop-index5374 store <4 x i32> %4108, ptr %scevgep6855, align 1 %4109 = add i64 %loop-index5374, 16 %4110 = icmp uge i64 %4109, %1121 br i1 %4110, label %Flow7951, label %loop-memcpy-expansion5373, !amdgpu.uniform !42 Flow7950: ; preds = %Flow7948, %Flow7949 %4111 = phi i64 [ %6629, %Flow7948 ], [ %6627, %Flow7949 ] br label %post-loop-memcpy-expansion5372, !amdgpu.uniform !42 loop-memcpy-residual5375: ; preds = %loop-memcpy-residual5375.preheader, %loop-memcpy-residual5375 %residual-loop-index5377 = phi i64 [ %4113, %loop-memcpy-residual5375 ], [ 0, %loop-memcpy-residual5375.preheader ] %scevgep6860 = getelementptr i8, ptr addrspace(4) @.str.23, i64 %residual-loop-index5377, !amdgpu.uniform !42 %4112 = load i8, ptr addrspace(4) %scevgep6860, align 1 %scevgep6859 = getelementptr i8, ptr %scevgep6858, i64 %residual-loop-index5377 store i8 %4112, ptr %scevgep6859, align 1 %4113 = add i64 %residual-loop-index5377, 1 %4114 = icmp uge i64 %4113, %1120 br i1 %4114, label %Flow7948, label %loop-memcpy-residual5375, !amdgpu.uniform !42 Flow7948: ; preds = %loop-memcpy-residual5375 br label %Flow7950, !amdgpu.uniform !42 post-loop-memcpy-expansion5372: ; preds = %Flow7950 %tobool.not.i.i.i.i.i.i2938 = icmp eq i32 %.lcssa9131, 0 %conv.i.i.i.i.i.i2939 = zext i1 %tobool.not.i.i.i.i.i.i2938 to i32 fence release %4115 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i2940 = zext i32 %.lcssa9133 to i64 %arrayidx.i24.i.i.i.i.i2941 = getelementptr inbounds nuw i32, ptr %4115, i64 %idxprom.i23.i.i.i.i.i2940 store atomic i32 %conv.i.i.i.i.i.i2939, ptr %arrayidx.i24.i.i.i.i.i2941 monotonic, align 4 %4116 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i2942 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %4116, i64 %idxprom.i23.i.i.i.i.i2940 %4117 = load i64, ptr %arrayidx.i.i5.i.i2942, align 8, !tbaa !80 br label %while.cond.i.i.i.i2943, !amdgpu.uniform !42 while.cond.i.i.i.i2943: ; preds = %post-loop-memcpy-expansion5372, %Flow7947 %phi.broken8719 = phi i64 [ 0, %post-loop-memcpy-expansion5372 ], [ %4139, %Flow7947 ] %lsr.iv6866 = phi i64 [ %4137, %Flow7947 ], [ -51, %post-loop-memcpy-expansion5372 ] %lsr.iv6861 = phi ptr addrspace(4) [ %4136, %Flow7947 ], [ getelementptr (i8, ptr addrspace(4) @.str.23, i64 56), %post-loop-memcpy-expansion5372 ] %port.sroa.37.0.i.i2944 = phi i32 [ %4135, %Flow7947 ], [ %conv.i.i.i.i.i.i2939, %post-loop-memcpy-expansion5372 ] %idx.0.i.i.i.i2945 = phi i64 [ %4134, %Flow7947 ], [ 56, %post-loop-memcpy-expansion5372 ] %cmp.i.i.i.i2946 = icmp ult i64 %idx.0.i.i.i.i2945, sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.23 to ptr), i64 5) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.23 to ptr) to i64)) %4118 = call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i2946) %and.i.i.i.i6.i.i2947 = and i64 %4118, %4117 %tobool.not.i.i.i.i2948 = icmp ne i64 %and.i.i.i.i6.i.i2947, 0 %4119 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i2949 = getelementptr inbounds nuw i32, ptr %4119, i64 %idxprom.i23.i.i.i.i.i2940 %4120 = load atomic i32, ptr %arrayidx.i22.i.i.i2949 monotonic, align 4 %4121 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i2948) %4122 = extractvalue { i1, i64 } %4121, 0 %4123 = extractvalue { i1, i64 } %4121, 1 br i1 %4122, label %cond.false.i8.i.i.i.i2950, label %Flow7947 cond.false.i8.i.i.i.i2950: ; preds = %while.cond.i.i.i.i2943 %4124 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %4120) %4125 = icmp ne i32 %4124, %port.sroa.37.0.i.i2944 %4126 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %4125) %4127 = extractvalue { i1, i64 } %4126, 0 %4128 = extractvalue { i1, i64 } %4126, 1 br i1 %4127, label %while.body.i.i21.i.i.i.i2951.preheader, label %Flow7946 while.body.i.i21.i.i.i.i2951.preheader: ; preds = %cond.false.i8.i.i.i.i2950 br label %while.body.i.i21.i.i.i.i2951, !amdgpu.uniform !42 Flow7946: ; preds = %Flow7945, %cond.false.i8.i.i.i.i2950 call void @llvm.amdgcn.end.cf.i64(i64 %4128) br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i2954, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i2951: ; preds = %while.body.i.i21.i.i.i.i2951.preheader, %while.body.i.i21.i.i.i.i2951 %phi.broken8718 = phi i64 [ 0, %while.body.i.i21.i.i.i.i2951.preheader ], [ %4132, %while.body.i.i21.i.i.i.i2951 ] call void @llvm.amdgcn.s.sleep(i32 2) %4129 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i2952 = getelementptr inbounds nuw i32, ptr %4129, i64 %idxprom.i23.i.i.i.i.i2940 %4130 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i2952 monotonic, align 4 %4131 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %4130) %cmp.i.not.i.i23.i.i.i.i2953 = icmp eq i32 %4131, %port.sroa.37.0.i.i2944 %4132 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i23.i.i.i.i2953, i64 %phi.broken8718) %4133 = call i1 @llvm.amdgcn.loop.i64(i64 %4132) br i1 %4133, label %Flow7945, label %while.body.i.i21.i.i.i.i2951 Flow7945: ; preds = %while.body.i.i21.i.i.i.i2951 %.lcssa9134 = phi i64 [ %4132, %while.body.i.i21.i.i.i.i2951 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9134) br label %Flow7946, !amdgpu.uniform !42 Flow7947: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2955, %while.cond.i.i.i.i2943 %4134 = phi i64 [ %add.i.i.i.i2958, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2955 ], [ poison, %while.cond.i.i.i.i2943 ] %4135 = phi i32 [ %conv.i.i26.i.i.i.i2956, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2955 ], [ poison, %while.cond.i.i.i.i2943 ] %4136 = phi ptr addrspace(4) [ %scevgep6862, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2955 ], [ poison, %while.cond.i.i.i.i2943 ] %4137 = phi i64 [ %lsr.iv.next6867, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2955 ], [ poison, %while.cond.i.i.i.i2943 ] %4138 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2955 ], [ true, %while.cond.i.i.i.i2943 ] call void @llvm.amdgcn.end.cf.i64(i64 %4123) %4139 = call i64 @llvm.amdgcn.if.break.i64(i1 %4138, i64 %phi.broken8719) %4140 = call i1 @llvm.amdgcn.loop.i64(i64 %4139) br i1 %4140, label %cond.false.i.i.i2965, label %while.cond.i.i.i.i2943 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i2954: ; preds = %Flow7946 fence acquire br i1 %cmp.i.i.i.i2946, label %if.then.i.i.i.i.i.i.i2959, label %Flow7944, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i2959: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i2954 %sub.i.i.i.i.i.i.i2961 = sub nuw i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.23 to ptr), i64 5) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.23 to ptr) to i64)), %idx.0.i.i.i.i2945 %spec.select.i.i.i36.i.i.i.i2962 = call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i2961, i64 64) %4141 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %4142 = and i64 %spec.select.i.i.i36.i.i.i.i2962, 15 %4143 = sub i64 %spec.select.i.i.i36.i.i.i.i2962, %4142 %4144 = icmp ne i64 %4143, 0 br i1 %4144, label %loop-memcpy-expansion5379.preheader, label %Flow7943, !amdgpu.uniform !42 loop-memcpy-expansion5379.preheader: ; preds = %if.then.i.i.i.i.i.i.i2959 %arrayidx.i20.i35.i.i.i.i2963 = getelementptr %"struct.rpc::Buffer", ptr %4141, i64 %idxprom.i19.i.i.i.i.i2933 %arrayidx.i22.i38.i.i.i.i2964 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i2963, i64 %sh_prom.i.i.i.i756 br label %loop-memcpy-expansion5379, !amdgpu.uniform !42 Flow7943: ; preds = %Flow7942, %if.then.i.i.i.i.i.i.i2959 br label %loop-memcpy-residual-header5382, !amdgpu.uniform !42 loop-memcpy-expansion5379: ; preds = %loop-memcpy-expansion5379.preheader, %loop-memcpy-expansion5379 %loop-index5380 = phi i64 [ %4147, %loop-memcpy-expansion5379 ], [ 0, %loop-memcpy-expansion5379.preheader ] %scevgep6863 = getelementptr i8, ptr addrspace(4) %lsr.iv6861, i64 %loop-index5380, !amdgpu.uniform !42 %4145 = load <4 x i32>, ptr addrspace(4) %scevgep6863, align 1 %4146 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i2964, i64 %loop-index5380 store <4 x i32> %4145, ptr %4146, align 1 %4147 = add i64 %loop-index5380, 16 %4148 = icmp uge i64 %4147, %4143 br i1 %4148, label %Flow7942, label %loop-memcpy-expansion5379, !amdgpu.uniform !42 Flow7941: ; preds = %Flow7940, %loop-memcpy-residual-header5382 br label %Flow7944, !amdgpu.uniform !42 loop-memcpy-residual5381: ; preds = %loop-memcpy-residual5381.preheader, %loop-memcpy-residual5381 %residual-loop-index5383 = phi i64 [ %4150, %loop-memcpy-residual5381 ], [ 0, %loop-memcpy-residual5381.preheader ] %scevgep6872 = getelementptr i8, ptr addrspace(4) %scevgep6871, i64 %residual-loop-index5383, !amdgpu.uniform !42 %4149 = load i8, ptr addrspace(4) %scevgep6872, align 1 %scevgep6870 = getelementptr i8, ptr %scevgep6869, i64 %residual-loop-index5383 store i8 %4149, ptr %scevgep6870, align 1 %4150 = add i64 %residual-loop-index5383, 1 %4151 = icmp uge i64 %4150, %4142 br i1 %4151, label %Flow7940, label %loop-memcpy-residual5381, !amdgpu.uniform !42 Flow7940: ; preds = %loop-memcpy-residual5381 br label %Flow7941, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2955: ; preds = %Flow7944 %conv.i.i26.i.i.i.i2956 = xor i32 %port.sroa.37.0.i.i2944, 1 fence release %4152 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i2957 = getelementptr inbounds nuw i32, ptr %4152, i64 %idxprom.i23.i.i.i.i.i2940 store atomic i32 %conv.i.i26.i.i.i.i2956, ptr %arrayidx.i24.i29.i.i.i.i2957 monotonic, align 4 %add.i.i.i.i2958 = add i64 %idx.0.i.i.i.i2945, 64 %scevgep6862 = getelementptr i8, ptr addrspace(4) %lsr.iv6861, i64 64 %lsr.iv.next6867 = add i64 %lsr.iv6866, -64 br label %Flow7947, !amdgpu.uniform !42 cond.false.i.i.i2965: ; preds = %Flow7947 %.lcssa9136 = phi i64 [ %4139, %Flow7947 ] %port.sroa.37.0.i.i2944.lcssa = phi i32 [ %port.sroa.37.0.i.i2944, %Flow7947 ] %.lcssa9135 = phi i32 [ %4120, %Flow7947 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9136) %4153 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa9135) %4154 = icmp ne i32 %4153, %port.sroa.37.0.i.i2944.lcssa %4155 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %4154) %4156 = extractvalue { i1, i64 } %4155, 0 %4157 = extractvalue { i1, i64 } %4155, 1 br i1 %4156, label %while.body.i.i.i.i2966.preheader, label %Flow7939 while.body.i.i.i.i2966.preheader: ; preds = %cond.false.i.i.i2965 br label %while.body.i.i.i.i2966, !amdgpu.uniform !42 Flow7939: ; preds = %Flow7938, %cond.false.i.i.i2965 call void @llvm.amdgcn.end.cf.i64(i64 %4157) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit2987, !amdgpu.uniform !42 while.body.i.i.i.i2966: ; preds = %while.body.i.i.i.i2966.preheader, %while.body.i.i.i.i2966 %phi.broken8720 = phi i64 [ 0, %while.body.i.i.i.i2966.preheader ], [ %4161, %while.body.i.i.i.i2966 ] call void @llvm.amdgcn.s.sleep(i32 2) %4158 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i2967 = getelementptr inbounds nuw i32, ptr %4158, i64 %idxprom.i23.i.i.i.i.i2940 %4159 = load atomic i32, ptr %arrayidx.i.i.i8.i.i2967 monotonic, align 4 %4160 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %4159) %cmp.i.not.i.i.i.i2968 = icmp eq i32 %4160, %port.sroa.37.0.i.i2944.lcssa %4161 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i2968, i64 %phi.broken8720) %4162 = call i1 @llvm.amdgcn.loop.i64(i64 %4161) br i1 %4162, label %Flow7938, label %while.body.i.i.i.i2966 Flow7938: ; preds = %while.body.i.i.i.i2966 %.lcssa9137 = phi i64 [ %4161, %while.body.i.i.i.i2966 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9137) br label %Flow7939, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit2987: ; preds = %Flow7939 fence acquire call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %4163 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa9132, i1 true) %iszero.i.i.i.i.i13.i.i2970 = icmp ne i64 %.lcssa9132, 0 %cmp2.i.i.i.i14.i.i2971 = icmp eq i64 %4163, %sh_prom.i.i.i.i756 %cmp.i.i.i.i15.i.i2972 = select i1 %iszero.i.i.i.i.i13.i.i2970, i1 %cmp2.i.i.i.i14.i.i2971, i1 false %4164 = and i32 %.lcssa9133, 31 %conv4.i.i.i19.i.i2976 = zext i1 %cmp.i.i.i.i15.i.i2972 to i32 %shl.i.i.i20.i.i2977 = shl nuw i32 %conv4.i.i.i19.i.i2976, %4164 %xor.i.i.i21.i.i2978 = xor i32 %shl.i.i.i20.i.i2977, -1 %4165 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5823, !amdgpu.uniform !42 4166: ; preds = %ComputeEnd5824 %div8.i.i.i16.i.i2973 = lshr i32 %.lcssa9133, 5 %idxprom.i.i.i17.i.i2974 = zext nneg i32 %div8.i.i.i16.i.i2973 to i64 %4167 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i2974 %sunkaddr7458 = getelementptr inbounds i8, ptr addrspace(1) %4167, i64 40 %4168 = atomicrmw and ptr addrspace(1) %sunkaddr7458, i32 %.lcssa9138 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %4169, !amdgpu.uniform !42 4169: ; preds = %4166, %ComputeEnd5824 call void @llvm.amdgcn.end.cf.i64(i64 %8200) call void @llvm.amdgcn.wave.barrier() br label %Flow8062, !amdgpu.uniform !42 if.else82: ; preds = %Flow8062 %mul70 = mul i64 %sub, 1000000000 call void @llvm.lifetime.start.p5(ptr addrspace(5) %buffer.i.i.i2988) #34, !noalias !175 %cmp7.i.i.i.i.i.i2989 = icmp uge i64 %mul70, 1000000 br i1 %cmp7.i.i.i.i.i.i2989, label %while.body.i.i.i.i.i.i2991.preheader, label %Flow8061, !amdgpu.uniform !42 while.body.i.i.i.i.i.i2991.preheader: ; preds = %if.else82 %div71 = udiv i64 %mul70, 1000000 br label %while.body.i.i.i.i.i.i2991, !amdgpu.uniform !42 Flow8061: ; preds = %Flow8060, %if.else82 %4170 = phi i1 [ %cmp.i.i.i.i.i.i.i.i3001.lcssa, %Flow8060 ], [ false, %if.else82 ] %4171 = phi i64 [ %writer.sroa.8.1.i.i.i.i3006.lcssa, %Flow8060 ], [ 0, %if.else82 ] br label %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIyNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEyRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i3009, !amdgpu.uniform !42 while.body.i.i.i.i.i.i2991: ; preds = %while.body.i.i.i.i.i.i2991.preheader, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i3005 %writer.sroa.8.0.i.i.i.i2992 = phi i64 [ %writer.sroa.8.1.i.i.i.i3006, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i3005 ], [ 0, %while.body.i.i.i.i.i.i2991.preheader ] %value.addr.09.i.i.i.i.i.i2993 = phi i64 [ %div.i.i.i.i.i.i.i2994, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i3005 ], [ %div71, %while.body.i.i.i.i.i.i2991.preheader ] br label %NodeBlock7577, !amdgpu.uniform !42 NodeBlock7577: ; preds = %while.body.i.i.i.i.i.i2991 %div.i.i.i.i.i.i.i2994 = udiv i64 %value.addr.09.i.i.i.i.i.i2993, 10 %.neg.i2995 = mul nuw nsw i64 %div.i.i.i.i.i.i.i2994, 246 %rem.i.i.i.i.i.i.decomposed.i2996 = add nuw nsw i64 %.neg.i2995, %value.addr.09.i.i.i.i.i.i2993 %conv.i.i.i.i.i.i.i2997 = trunc i64 %rem.i.i.i.i.i.i.decomposed.i2996 to i8 %4172 = zext i8 %conv.i.i.i.i.i.i.i2997 to i16 %Pivot7578 = icmp sge i16 %4172, 5 br i1 %Pivot7578, label %NodeBlock7575, label %Flow8059, !amdgpu.uniform !42 NodeBlock7575: ; preds = %NodeBlock7577 %Pivot7576 = icmp sge i16 %4172, 7 br i1 %Pivot7576, label %NodeBlock7573, label %Flow8050, !amdgpu.uniform !42 NodeBlock7573: ; preds = %NodeBlock7575 %Pivot7574 = icmp sge i16 %4172, 8 br i1 %Pivot7574, label %NodeBlock7571, label %Flow8046, !amdgpu.uniform !42 NodeBlock7571: ; preds = %NodeBlock7573 %Pivot7572 = icmp sge i16 %4172, 9 br i1 %Pivot7572, label %sw.bb9.i.i.i.i.i.i.i.i2998, label %Flow8044, !amdgpu.uniform !42 Flow8050: ; preds = %Flow8047, %NodeBlock7575 %4173 = phi i8 [ %4186, %Flow8047 ], [ poison, %NodeBlock7575 ] %4174 = phi i1 [ false, %Flow8047 ], [ true, %NodeBlock7575 ] br i1 %4174, label %NodeBlock7569, label %Flow8051, !amdgpu.uniform !42 NodeBlock7569: ; preds = %Flow8050 %Pivot7570 = icmp sge i16 %4172, 6 br i1 %Pivot7570, label %sw.bb6.i.i.i.i.i.i.i.i3149, label %Flow8048, !amdgpu.uniform !42 Flow8059: ; preds = %Flow8051, %NodeBlock7577 %4175 = phi i8 [ %4188, %Flow8051 ], [ poison, %NodeBlock7577 ] %4176 = phi i1 [ false, %Flow8051 ], [ true, %NodeBlock7577 ] br i1 %4176, label %NodeBlock7567, label %if.then.i.i.i.i.i.i.i2999, !amdgpu.uniform !42 NodeBlock7567: ; preds = %Flow8059 %Pivot7568 = icmp sge i16 %4172, 3 br i1 %Pivot7568, label %NodeBlock7565, label %Flow8057, !amdgpu.uniform !42 NodeBlock7565: ; preds = %NodeBlock7567 %Pivot7566 = icmp sge i16 %4172, 4 br i1 %Pivot7566, label %sw.bb4.i.i.i.i.i.i.i.i3151, label %Flow8052, !amdgpu.uniform !42 Flow8057: ; preds = %Flow8053, %NodeBlock7567 %4177 = phi i8 [ %4189, %Flow8053 ], [ poison, %NodeBlock7567 ] %4178 = phi i1 [ false, %Flow8053 ], [ true, %NodeBlock7567 ] br i1 %4178, label %NodeBlock7563, label %Flow8058, !amdgpu.uniform !42 NodeBlock7563: ; preds = %Flow8057 %Pivot7564 = icmp sge i16 %4172, 2 br i1 %Pivot7564, label %sw.bb2.i.i.i.i.i.i.i.i3153, label %Flow8055, !amdgpu.uniform !42 Flow8055: ; preds = %sw.bb2.i.i.i.i.i.i.i.i3153, %NodeBlock7563 %4179 = phi i1 [ false, %sw.bb2.i.i.i.i.i.i.i.i3153 ], [ true, %NodeBlock7563 ] br i1 %4179, label %LeafBlock7561, label %Flow8056, !amdgpu.uniform !42 LeafBlock7561: ; preds = %Flow8055 %SwitchLeaf7562 = icmp eq i16 %4172, 1 br i1 %SwitchLeaf7562, label %sw.bb1.i.i.i.i.i.i.i.i3154, label %Flow8054, !amdgpu.uniform !42 sw.bb1.i.i.i.i.i.i.i.i3154: ; preds = %LeafBlock7561 br label %Flow8054, !amdgpu.uniform !42 sw.bb2.i.i.i.i.i.i.i.i3153: ; preds = %NodeBlock7563 br label %Flow8055, !amdgpu.uniform !42 Flow8052: ; preds = %sw.bb4.i.i.i.i.i.i.i.i3151, %NodeBlock7565 %4180 = phi i1 [ false, %sw.bb4.i.i.i.i.i.i.i.i3151 ], [ true, %NodeBlock7565 ] br i1 %4180, label %sw.bb3.i.i.i.i.i.i.i.i3152, label %Flow8053, !amdgpu.uniform !42 sw.bb3.i.i.i.i.i.i.i.i3152: ; preds = %Flow8052 br label %Flow8053, !amdgpu.uniform !42 sw.bb4.i.i.i.i.i.i.i.i3151: ; preds = %NodeBlock7565 br label %Flow8052, !amdgpu.uniform !42 Flow8048: ; preds = %sw.bb6.i.i.i.i.i.i.i.i3149, %NodeBlock7569 %4181 = phi i1 [ false, %sw.bb6.i.i.i.i.i.i.i.i3149 ], [ true, %NodeBlock7569 ] br i1 %4181, label %sw.bb5.i.i.i.i.i.i.i.i3150, label %Flow8049, !amdgpu.uniform !42 sw.bb5.i.i.i.i.i.i.i.i3150: ; preds = %Flow8048 br label %Flow8049, !amdgpu.uniform !42 sw.bb6.i.i.i.i.i.i.i.i3149: ; preds = %NodeBlock7569 br label %Flow8048, !amdgpu.uniform !42 Flow8046: ; preds = %Flow8045, %NodeBlock7573 %4182 = phi i8 [ %4185, %Flow8045 ], [ poison, %NodeBlock7573 ] %4183 = phi i1 [ false, %Flow8045 ], [ true, %NodeBlock7573 ] br i1 %4183, label %sw.bb7.i.i.i.i.i.i.i.i3148, label %Flow8047, !amdgpu.uniform !42 sw.bb7.i.i.i.i.i.i.i.i3148: ; preds = %Flow8046 br label %Flow8047, !amdgpu.uniform !42 Flow8044: ; preds = %sw.bb9.i.i.i.i.i.i.i.i2998, %NodeBlock7571 %4184 = phi i1 [ false, %sw.bb9.i.i.i.i.i.i.i.i2998 ], [ true, %NodeBlock7571 ] br i1 %4184, label %sw.bb8.i.i.i.i.i.i.i.i3147, label %Flow8045, !amdgpu.uniform !42 sw.bb8.i.i.i.i.i.i.i.i3147: ; preds = %Flow8044 br label %Flow8045, !amdgpu.uniform !42 sw.bb9.i.i.i.i.i.i.i.i2998: ; preds = %NodeBlock7571 br label %Flow8044, !amdgpu.uniform !42 Flow8045: ; preds = %sw.bb8.i.i.i.i.i.i.i.i3147, %Flow8044 %4185 = phi i8 [ 56, %sw.bb8.i.i.i.i.i.i.i.i3147 ], [ 57, %Flow8044 ] br label %Flow8046, !amdgpu.uniform !42 Flow8047: ; preds = %sw.bb7.i.i.i.i.i.i.i.i3148, %Flow8046 %4186 = phi i8 [ 55, %sw.bb7.i.i.i.i.i.i.i.i3148 ], [ %4182, %Flow8046 ] br label %Flow8050, !amdgpu.uniform !42 Flow8049: ; preds = %sw.bb5.i.i.i.i.i.i.i.i3150, %Flow8048 %4187 = phi i8 [ 53, %sw.bb5.i.i.i.i.i.i.i.i3150 ], [ 54, %Flow8048 ] br label %Flow8051, !amdgpu.uniform !42 Flow8051: ; preds = %Flow8049, %Flow8050 %4188 = phi i8 [ %4187, %Flow8049 ], [ %4173, %Flow8050 ] br label %Flow8059, !amdgpu.uniform !42 Flow8053: ; preds = %sw.bb3.i.i.i.i.i.i.i.i3152, %Flow8052 %4189 = phi i8 [ 51, %sw.bb3.i.i.i.i.i.i.i.i3152 ], [ 52, %Flow8052 ] br label %Flow8057, !amdgpu.uniform !42 Flow8054: ; preds = %sw.bb1.i.i.i.i.i.i.i.i3154, %LeafBlock7561 %4190 = phi i8 [ 49, %sw.bb1.i.i.i.i.i.i.i.i3154 ], [ 48, %LeafBlock7561 ] br label %Flow8056, !amdgpu.uniform !42 Flow8056: ; preds = %Flow8054, %Flow8055 %4191 = phi i8 [ %4190, %Flow8054 ], [ 50, %Flow8055 ] br label %Flow8058, !amdgpu.uniform !42 Flow8058: ; preds = %Flow8056, %Flow8057 %4192 = phi i8 [ %4191, %Flow8056 ], [ %4177, %Flow8057 ] br label %if.then.i.i.i.i.i.i.i2999, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i2999: ; preds = %Flow8059, %Flow8058 %retval.0.i.i.i.i.i.i.i.i3000 = phi i8 [ %4175, %Flow8059 ], [ %4192, %Flow8058 ] %cmp.i.i.i.i.i.i.i.i3001 = icmp eq i64 %writer.sroa.8.0.i.i.i.i2992, 21 %cmp.i.i.i.i.i.i.i.i3001.inv = xor i1 %cmp.i.i.i.i.i.i.i.i3001, true br i1 %cmp.i.i.i.i.i.i.i.i3001.inv, label %if.then3.i.i.i.i.i.i.i3002, label %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i3005, !amdgpu.uniform !42 if.then3.i.i.i.i.i.i.i3002: ; preds = %if.then.i.i.i.i.i.i.i2999 %4193 = trunc i64 %writer.sroa.8.0.i.i.i.i2992 to i32 %4194 = xor i32 %4193, -1 %4195 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i2988, i32 %4194 %arrayidx.i.i.i.i.i.i.i.i30036057 = getelementptr i8, ptr addrspace(5) %4195, i32 21 %inc.i.i.i.i.i.i.i3004 = add i64 %writer.sroa.8.0.i.i.i.i2992, 1 store i8 %retval.0.i.i.i.i.i.i.i.i3000, ptr addrspace(5) %arrayidx.i.i.i.i.i.i.i.i30036057, align 1, !tbaa !57, !noalias !175 br label %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i3005, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i3005: ; preds = %if.then3.i.i.i.i.i.i.i3002, %if.then.i.i.i.i.i.i.i2999 %writer.sroa.8.1.i.i.i.i3006 = phi i64 [ %inc.i.i.i.i.i.i.i3004, %if.then3.i.i.i.i.i.i.i3002 ], [ 21, %if.then.i.i.i.i.i.i.i2999 ] %cmp.i.i.i.i.i.i3007 = icmp samesign ult i64 %value.addr.09.i.i.i.i.i.i2993, 10 %.not.i.i.i.i.i.i3008 = or i1 %cmp.i.i.i.i.i.i.i.i3001, %cmp.i.i.i.i.i.i3007 br i1 %.not.i.i.i.i.i.i3008, label %Flow8060, label %while.body.i.i.i.i.i.i2991, !amdgpu.uniform !42 Flow8060: ; preds = %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i3005 %writer.sroa.8.1.i.i.i.i3006.lcssa = phi i64 [ %writer.sroa.8.1.i.i.i.i3006, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i3005 ] %cmp.i.i.i.i.i.i.i.i3001.lcssa = phi i1 [ %cmp.i.i.i.i.i.i.i.i3001, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i3005 ] br label %Flow8061, !amdgpu.uniform !42 Flow8063: ; preds = %4453, %Flow8062 %4196 = phi i32 [ %1215, %4453 ], [ %3893, %Flow8062 ] %4197 = phi i64 [ %1214, %4453 ], [ %3894, %Flow8062 ] %4198 = phi i32 [ %1213, %4453 ], [ %3895, %Flow8062 ] %4199 = phi i32 [ %1212, %4453 ], [ %3896, %Flow8062 ] %4200 = phi i64 [ %1211, %4453 ], [ %3897, %Flow8062 ] %4201 = phi i32 [ %1210, %4453 ], [ %3898, %Flow8062 ] %4202 = phi i32 [ %.lcssa9153, %4453 ], [ %1209, %Flow8062 ] %4203 = phi i64 [ %.lcssa9154, %4453 ], [ %1208, %Flow8062 ] %4204 = phi i32 [ %.lcssa9155, %4453 ], [ %1207, %Flow8062 ] %4205 = phi i32 [ %.lcssa9142, %4453 ], [ %1206, %Flow8062 ] %4206 = phi i64 [ %.lcssa9143, %4453 ], [ %1205, %Flow8062 ] %4207 = phi i32 [ %.lcssa9144, %4453 ], [ %1204, %Flow8062 ] br label %Flow8127, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git15IntegerToStringIyNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEyRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i3009: ; preds = %Flow8061 %cmp.i15.i.i.i.i3012 = icmp ne i64 %4171, 0 %or.cond.not.i.i.i.i3013 = select i1 %4170, i1 true, i1 %cmp.i15.i.i.i.i3012 %or.cond.not.i.i.i.i3013.inv = xor i1 %or.cond.not.i.i.i.i3013, true br i1 %or.cond.not.i.i.i.i3013.inv, label %if.then3.i.i.lr.ph.i.i.i.i3014, label %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIyNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ey.exit.i.i.i3016, !amdgpu.uniform !42 if.then3.i.i.lr.ph.i.i.i.i3014: ; preds = %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIyNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEyRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i3009 %sunkaddr7459 = getelementptr inbounds i8, ptr addrspace(5) %buffer.i.i.i2988, i32 20 store i8 48, ptr addrspace(5) %sunkaddr7459, align 4, !tbaa !57, !noalias !175 br label %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIyNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ey.exit.i.i.i3016, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git15IntegerToStringIyNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ey.exit.i.i.i3016: ; preds = %if.then3.i.i.lr.ph.i.i.i.i3014, %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIyNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEyRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i3009 %writer.sroa.8.4.i.i.i.i3017 = phi i64 [ 1, %if.then3.i.i.lr.ph.i.i.i.i3014 ], [ %4171, %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIyNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEyRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i3009 ] %sunkaddr7460 = getelementptr inbounds i8, ptr addrspace(5) %buffer.i.i.i2988, i32 24 store i64 %writer.sroa.8.4.i.i.i.i3017, ptr addrspace(5) %sunkaddr7460, align 8, !tbaa !167, !noalias !175 %cmp.i.not.i.i.i.i.i3019 = icmp ne i64 %writer.sroa.8.4.i.i.i.i3017, 0 br i1 %cmp.i.not.i.i.i.i.i3019, label %if.then.i.i.i.i.i.i3020, label %Flow8043, !amdgpu.uniform !42 if.then.i.i.i.i.i.i3020: ; preds = %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIyNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ey.exit.i.i.i3016 %4208 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %writer.sroa.8.4.i.i.i.i3017, i64 1) %ov7462 = extractvalue { i64, i1 } %4208, 1 %ov7462.inv = xor i1 %ov7462, true br i1 %ov7462.inv, label %if.end.i.i.i.i.i.i.i3023, label %Flow8042, !amdgpu.uniform !42 if.end.i.i.i.i.i.i.i3023: ; preds = %if.then.i.i.i.i.i.i3020 %math7461 = extractvalue { i64, i1 } %4208, 0 %cmp2.i.i.i.i.i.i.i3024 = icmp ult i64 %math7461, 1676976733973595601 br i1 %cmp2.i.i.i.i.i.i.i3024, label %if.then3.i.i.i.i4.i.i.i3144, label %if.end4.i.i.i.i.i.i.i3025, !amdgpu.uniform !42 if.then3.i.i.i.i4.i.i.i3144: ; preds = %if.end.i.i.i.i.i.i.i3023 %mul.i.i.i.i.i.i.i3145 = mul nuw i64 %math7461, 11 %div18.i.i.i.i.i.i.i3146 = lshr i64 %mul.i.i.i.i.i.i.i3145, 3 br label %if.end4.i.i.i.i.i.i.i3025, !amdgpu.uniform !42 Flow8042: ; preds = %if.end4.i.i.i.i.i.i.i3025, %if.then.i.i.i.i.i.i3020 %4209 = phi ptr [ %cond.i.i.i3033, %if.end4.i.i.i.i.i.i.i3025 ], [ addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr), %if.then.i.i.i.i.i.i3020 ] br label %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i3035, !amdgpu.uniform !42 if.end4.i.i.i.i.i.i.i3025: ; preds = %if.then3.i.i.i.i4.i.i.i3144, %if.end.i.i.i.i.i.i.i3023 %new_capacity.addr.0.i.i.i.i.i.i.i3026 = phi i64 [ %div18.i.i.i.i.i.i.i3146, %if.then3.i.i.i.i4.i.i.i3144 ], [ %math7461, %if.end.i.i.i.i.i.i.i3023 ] %sub.i.i.i3027 = add i64 %new_capacity.addr.0.i.i.i.i.i.i.i3026, 7 %div2.i.i.i3028 = and i64 %sub.i.i.i3027, -8 %4210 = load ptr, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %add.ptr.i.i.i3029 = getelementptr inbounds nuw i8, ptr %4210, i64 %div2.i.i.i3028 store ptr %add.ptr.i.i.i3029, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %sub.ptr.lhs.cast.i.i.i3030 = ptrtoint ptr %add.ptr.i.i.i3029 to i64 %sub.ptr.sub.i.i.i3031 = sub i64 %sub.ptr.lhs.cast.i.i.i3030, ptrtoint (ptr addrspacecast (ptr addrspace(1) @_ZN12_GLOBAL__N_16memoryE to ptr) to i64) %cmp.i.i.i3032 = icmp ugt i64 %sub.ptr.sub.i.i.i3031, 65335 %cond.i.i.i3033 = select i1 %cmp.i.i.i3032, ptr null, ptr %4210 br label %Flow8042, !amdgpu.uniform !42 Flow8043: ; preds = %Flow8041, %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIyNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ey.exit.i.i.i3016 %4211 = phi ptr [ %4209, %Flow8041 ], [ addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr), %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIyNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ey.exit.i.i.i3016 ] br label %if.end.i.i.i.i.i.i3037, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i3035: ; preds = %Flow8042 br label %loadstoreloop4953, !amdgpu.uniform !42 loadstoreloop4953: ; preds = %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i3035, %loadstoreloop4953 %4212 = phi i64 [ %4214, %loadstoreloop4953 ], [ 0, %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i3035 ] %4213 = getelementptr i8, ptr %4209, i64 %4212 store i8 0, ptr %4213, align 1 %4214 = add i64 %4212, 1 %4215 = icmp uge i64 %4214, %writer.sroa.8.4.i.i.i.i3017 br i1 %4215, label %Flow8041, label %loadstoreloop4953, !amdgpu.uniform !42 Flow8041: ; preds = %loadstoreloop4953 br label %Flow8043, !amdgpu.uniform !42 if.end.i.i.i.i.i.i3037: ; preds = %Flow8043 %cmp.not.i6.i.i.i.i.i.i3039 = icmp ne ptr %4211, addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr) br i1 %cmp.not.i6.i.i.i.i.i.i3039, label %if.then.i.i.i.i2.i.i.i3040, label %_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEy.exit.i3042, !amdgpu.uniform !42 if.then.i.i.i.i2.i.i.i3040: ; preds = %if.end.i.i.i.i.i.i3037 %arrayidx.i.i.i.i3.i.i.i3041 = getelementptr inbounds nuw i8, ptr %4211, i64 %writer.sroa.8.4.i.i.i.i3017 store i8 0, ptr %arrayidx.i.i.i.i3.i.i.i3041, align 1, !tbaa !57, !noalias !175 br label %_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEy.exit.i3042, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git3cpp9to_stringEy.exit.i3042: ; preds = %if.then.i.i.i.i2.i.i.i3040, %if.end.i.i.i.i.i.i3037 %4216 = trunc i64 %writer.sroa.8.4.i.i.i.i3017 to i32 %4217 = and i64 %writer.sroa.8.4.i.i.i.i3017, 15 %4218 = sub i64 %writer.sroa.8.4.i.i.i.i3017, %4217 %4219 = icmp ne i64 %4218, 0 br i1 %4219, label %loop-memcpy-expansion5121.preheader, label %Flow8040, !amdgpu.uniform !42 loop-memcpy-expansion5121.preheader: ; preds = %_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEy.exit.i3042 %4220 = sub i32 0, %4216 %scevgep6874 = getelementptr i8, ptr addrspace(5) %scevgep6873, i32 %4220 br label %loop-memcpy-expansion5121, !amdgpu.uniform !42 Flow8040: ; preds = %Flow8039, %_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEy.exit.i3042 br label %loop-memcpy-residual-header5124, !amdgpu.uniform !42 loop-memcpy-expansion5121: ; preds = %loop-memcpy-expansion5121.preheader, %loop-memcpy-expansion5121 %lsr.iv6875 = phi ptr addrspace(5) [ %scevgep6876, %loop-memcpy-expansion5121 ], [ %scevgep6874, %loop-memcpy-expansion5121.preheader ], !amdgpu.uniform !42 %loop-index5122 = phi i64 [ %4223, %loop-memcpy-expansion5121 ], [ 0, %loop-memcpy-expansion5121.preheader ] %4221 = load <4 x i32>, ptr addrspace(5) %lsr.iv6875, align 1 %4222 = getelementptr i8, ptr %4211, i64 %loop-index5122 store <4 x i32> %4221, ptr %4222, align 1 %4223 = add i64 %loop-index5122, 16 %scevgep6876 = getelementptr i8, ptr addrspace(5) %lsr.iv6875, i32 16 %4224 = icmp uge i64 %4223, %4218 br i1 %4224, label %Flow8039, label %loop-memcpy-expansion5121, !amdgpu.uniform !42 Flow8038: ; preds = %Flow8037, %loop-memcpy-residual-header5124 br label %post-loop-memcpy-expansion5120, !amdgpu.uniform !42 loop-memcpy-residual5123: ; preds = %loop-memcpy-residual5123.preheader, %loop-memcpy-residual5123 %lsr.iv6879 = phi ptr addrspace(5) [ %scevgep6880, %loop-memcpy-residual5123 ], [ %scevgep6878, %loop-memcpy-residual5123.preheader ], !amdgpu.uniform !42 %residual-loop-index5125 = phi i64 [ %4226, %loop-memcpy-residual5123 ], [ 0, %loop-memcpy-residual5123.preheader ] %4225 = load i8, ptr addrspace(5) %lsr.iv6879, align 1 %scevgep6882 = getelementptr i8, ptr %scevgep6881, i64 %residual-loop-index5125 store i8 %4225, ptr %scevgep6882, align 1 %4226 = add i64 %residual-loop-index5125, 1 %scevgep6880 = getelementptr i8, ptr addrspace(5) %lsr.iv6879, i32 1 %4227 = icmp uge i64 %4226, %4217 br i1 %4227, label %Flow8037, label %loop-memcpy-residual5123, !amdgpu.uniform !42 Flow8037: ; preds = %loop-memcpy-residual5123 br label %Flow8038, !amdgpu.uniform !42 post-loop-memcpy-expansion5120: ; preds = %Flow8038 call void @llvm.lifetime.end.p5(ptr addrspace(5) %buffer.i.i.i2988) #34, !noalias !175 br label %for.cond.i.i.i3046, !amdgpu.uniform !42 for.cond.i.i.i3046: ; preds = %post-loop-memcpy-expansion5120, %Flow8036 %4228 = phi i32 [ %4265, %Flow8036 ], [ %1204, %post-loop-memcpy-expansion5120 ] %4229 = phi i64 [ %4266, %Flow8036 ], [ %1205, %post-loop-memcpy-expansion5120 ] %4230 = phi i32 [ %4267, %Flow8036 ], [ %1206, %post-loop-memcpy-expansion5120 ] %retval.sroa.6.0.i.i.i3047 = phi i32 [ %4270, %Flow8036 ], [ undef, %post-loop-memcpy-expansion5120 ] %retval.sroa.2.0.i.i.i3049 = phi i64 [ %4269, %Flow8036 ], [ undef, %post-loop-memcpy-expansion5120 ] %retval.sroa.8.0.i.i.i3050 = phi i32 [ %4268, %Flow8036 ], [ undef, %post-loop-memcpy-expansion5120 ] %index.0.i.i.i3051 = phi i32 [ %4272, %Flow8036 ], [ 0, %post-loop-memcpy-expansion5120 ] %4231 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i3052 = icmp ult i32 %index.0.i.i.i3051, %4231 %spec.store.select.i.i.i3053 = select i1 %cmp.not.i.i.i3052, i32 %index.0.i.i.i3051, i32 0 %4232 = call i64 @llvm.amdgcn.ballot.i64(i1 true) %4233 = and i32 %spec.store.select.i.i.i3053, 31 %4234 = lshr i64 %4232, %sh_prom.i.i.i.i756 %4235 = trunc i64 %4234 to i32 %conv4.i.i.i.i.i3057 = and i32 %4235, 1 %shl.i.i.i.i.i3058 = shl nuw i32 %conv4.i.i.i.i.i3057, %4233 br label %ComputeLoop5827, !amdgpu.uniform !42 4236: ; preds = %ComputeEnd5828 %sunkaddr7463 = getelementptr inbounds i8, ptr addrspace(1) %8210, i64 40 %4237 = atomicrmw or ptr addrspace(1) %sunkaddr7463, i32 %.lcssa9139 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %4238, !amdgpu.uniform !42 4238: ; preds = %4236, %ComputeEnd5828 %4239 = phi i32 [ %4237, %4236 ], [ poison, %ComputeEnd5828 ] call void @llvm.amdgcn.end.cf.i64(i64 %8219) %4240 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %4239) %4241 = or i32 %4240, %.lcssa9140 %shl5.i.i.i.i.i3059 = shl nuw i32 1, %4233 %and.i.i.i.i.i3060 = and i32 %shl5.i.i.i.i.i3059, %4241 %tobool3.i.i.i.i3061 = icmp ne i32 %and.i.i.i.i.i3060, 0 %4242 = call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i3061) %and.i.i.i.i.i.i3062 = and i64 %4242, %4232 %cmp.i.not.i.i.i3063 = icmp ne i64 %4232, %and.i.i.i.i.i.i3062 br i1 %cmp.i.not.i.i.i3063, label %if.then.i.i.i.i3064, label %Flow8035, !amdgpu.uniform !42 if.then.i.i.i.i3064: ; preds = %4238 fence syncscope("agent") acquire %4243 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %4244 = extractelement <2 x i64> %4243, i32 0 %4245 = inttoptr i64 %4244 to ptr %4246 = extractelement <2 x i64> %4243, i32 1 %4247 = inttoptr i64 %4246 to ptr %idxprom.i.i.i.i3065 = zext i32 %spec.store.select.i.i.i3053 to i64 %arrayidx.i.i.i.i3066 = getelementptr inbounds nuw i32, ptr %4245, i64 %idxprom.i.i.i.i3065, !amdgpu.uniform !42 %4248 = load atomic i32, ptr %arrayidx.i.i.i.i3066 monotonic, align 4 %4249 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %4248) %arrayidx.i45.i.i.i3067 = getelementptr inbounds nuw i32, ptr %4247, i64 %idxprom.i.i.i.i3065, !amdgpu.uniform !42 %4250 = load atomic i32, ptr %arrayidx.i45.i.i.i3067 monotonic, align 4 %4251 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %4250) %cmp.i46.not.i.i.i3068 = icmp ne i32 %4249, %4251 br i1 %cmp.i46.not.i.i.i3068, label %if.then12.i.i.i3069, label %Flow8033, !amdgpu.uniform !42 if.then12.i.i.i3069: ; preds = %if.then.i.i.i.i3064 fence syncscope("agent") release %4252 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %4232, i1 true) %iszero.i.i.i.i.i.i.i3070 = icmp ne i64 %4232, 0 %cmp2.i.i.i.i.i.i3071 = icmp eq i64 %4252, %sh_prom.i.i.i.i756 %cmp.i.i.i.i.i2.i3072 = select i1 %iszero.i.i.i.i.i.i.i3070, i1 %cmp2.i.i.i.i.i.i3071, i1 false %conv4.i.i51.i.i.i3073 = zext i1 %cmp.i.i.i.i.i2.i3072 to i32 %shl.i.i52.i.i.i3074 = shl nuw i32 %conv4.i.i51.i.i.i3073, %4233 %xor.i.i.i.i.i3075 = xor i32 %shl.i.i52.i.i.i3074, -1 %4253 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5832, !amdgpu.uniform !42 4254: ; preds = %ComputeEnd5833 %sunkaddr7464 = getelementptr inbounds i8, ptr addrspace(1) %8210, i64 40 %4255 = atomicrmw and ptr addrspace(1) %sunkaddr7464, i32 %.lcssa9141 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %4256, !amdgpu.uniform !42 4256: ; preds = %4254, %ComputeEnd5833 call void @llvm.amdgcn.end.cf.i64(i64 %8237) call void @llvm.amdgcn.wave.barrier() br label %Flow8033, !amdgpu.uniform !42 if.end14.i.i.i3136: ; preds = %Flow8033 %4257 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %4232, i1 true) %iszero.i.i.i.i.i.i3137 = icmp ne i64 %4232, 0 %cmp2.i.i.i.i.i3138 = icmp eq i64 %4257, %sh_prom.i.i.i.i756 %cmp.i.i.i.i.i3139 = select i1 %iszero.i.i.i.i.i.i3137, i1 %cmp2.i.i.i.i.i3138, i1 false %4258 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i3139) %4259 = extractvalue { i1, i64 } %4258, 0 %4260 = extractvalue { i1, i64 } %4258, 1 br i1 %4259, label %if.then16.i.i.i3141, label %if.end22.i.i.i3140 if.then16.i.i.i3141: ; preds = %if.end14.i.i.i3136 %4261 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i3142 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %4261, i64 %idxprom.i.i.i.i3065, i32 1 store i32 1660944387, ptr %opcode.i.i.i3142, align 8, !tbaa !77 %arrayidx21.i.i.i3143 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %4261, i64 %idxprom.i.i.i.i3065 store i64 %4232, ptr %arrayidx21.i.i.i3143, align 8, !tbaa !80 br label %if.end22.i.i.i3140, !amdgpu.uniform !42 Flow8034: ; preds = %if.end22.i.i.i3140, %Flow8033 %4262 = phi i32 [ %4249, %if.end22.i.i.i3140 ], [ %retval.sroa.8.0.i.i.i3050, %Flow8033 ] %4263 = phi i64 [ %4232, %if.end22.i.i.i3140 ], [ %retval.sroa.2.0.i.i.i3049, %Flow8033 ] %4264 = phi i32 [ %spec.store.select.i.i.i3053, %if.end22.i.i.i3140 ], [ %retval.sroa.6.0.i.i.i3047, %Flow8033 ] br label %cleanup26.i.i.i3076, !amdgpu.uniform !42 if.end22.i.i.i3140: ; preds = %if.then16.i.i.i3141, %if.end14.i.i.i3136 call void @llvm.amdgcn.end.cf.i64(i64 %4260) call void @llvm.amdgcn.wave.barrier() br label %Flow8034, !amdgpu.uniform !42 Flow8035: ; preds = %cleanup26.i.i.i3076, %4238 %4265 = phi i32 [ %4264, %cleanup26.i.i.i3076 ], [ %4228, %4238 ] %4266 = phi i64 [ %4263, %cleanup26.i.i.i3076 ], [ %4229, %4238 ] %4267 = phi i32 [ %4262, %cleanup26.i.i.i3076 ], [ %4230, %4238 ] %4268 = phi i32 [ %4262, %cleanup26.i.i.i3076 ], [ %retval.sroa.8.0.i.i.i3050, %4238 ] %4269 = phi i64 [ %4263, %cleanup26.i.i.i3076 ], [ %retval.sroa.2.0.i.i.i3049, %4238 ] %4270 = phi i32 [ %4264, %cleanup26.i.i.i3076 ], [ %retval.sroa.6.0.i.i.i3047, %4238 ] %4271 = phi i1 [ %cmp.i46.not.i.i.i3068, %cleanup26.i.i.i3076 ], [ true, %4238 ] br i1 %4271, label %for.inc.i.i.i3081, label %Flow8036, !amdgpu.uniform !42 cleanup26.i.i.i3076: ; preds = %Flow8034 br label %Flow8035, !amdgpu.uniform !42 for.inc.i.i.i3081: ; preds = %Flow8035 %inc.i.i.i3086 = add i32 %spec.store.select.i.i.i3053, 1 br label %Flow8036, !amdgpu.uniform !42 Flow8036: ; preds = %for.inc.i.i.i3081, %Flow8035 %4272 = phi i32 [ %inc.i.i.i3086, %for.inc.i.i.i3081 ], [ poison, %Flow8035 ] %4273 = phi i1 [ false, %for.inc.i.i.i3081 ], [ true, %Flow8035 ] br i1 %4273, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i3087, label %for.cond.i.i.i3046, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i3087: ; preds = %Flow8036 %.lcssa9144 = phi i32 [ %4265, %Flow8036 ] %.lcssa9143 = phi i64 [ %4266, %Flow8036 ] %.lcssa9142 = phi i32 [ %4267, %Flow8036 ] fence acquire %4274 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i3088 = shl i32 %.lcssa9144, 6 %idxprom.i19.i.i.i.i.i3089 = zext i32 %mul.i.i.i.i.i.i3088 to i64 %arrayidx.i20.i.i.i.i.i3090 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %4274, i64 %idxprom.i19.i.i.i.i.i3089 %arrayidx.i22.i.i.i.i.i3091 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i3090, i64 %sh_prom.i.i.i.i756 store i64 %writer.sroa.8.4.i.i.i.i3017, ptr %arrayidx.i22.i.i.i.i.i3091, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i3092 = call i64 @llvm.umin.i64(i64 %writer.sroa.8.4.i.i.i.i3017, i64 56) %4275 = and i64 %spec.select.i.i.i.i.i.i.i3092, 15 %4276 = sub i64 %spec.select.i.i.i.i.i.i.i3092, %4275 %4277 = icmp ne i64 %4276, 0 br i1 %4277, label %loop-memcpy-expansion5013.preheader, label %Flow8032, !amdgpu.uniform !42 loop-memcpy-expansion5013.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i3087 %scevgep6883 = getelementptr i8, ptr %4274, i64 8 %scevgep6884 = getelementptr i8, ptr %scevgep6883, i64 %1474 %4278 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i3089, 6 %scevgep6885 = getelementptr i8, ptr %scevgep6884, i64 %4278 br label %loop-memcpy-expansion5013, !amdgpu.uniform !42 Flow8032: ; preds = %Flow8031, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i3087 br label %loop-memcpy-residual-header5016, !amdgpu.uniform !42 loop-memcpy-expansion5013: ; preds = %loop-memcpy-expansion5013.preheader, %loop-memcpy-expansion5013 %loop-index5014 = phi i64 [ %4281, %loop-memcpy-expansion5013 ], [ 0, %loop-memcpy-expansion5013.preheader ] %4279 = getelementptr i8, ptr %4211, i64 %loop-index5014, !amdgpu.uniform !42 %4280 = load <4 x i32>, ptr %4279, align 1 %scevgep6886 = getelementptr i8, ptr %scevgep6885, i64 %loop-index5014 store <4 x i32> %4280, ptr %scevgep6886, align 1 %4281 = add i64 %loop-index5014, 16 %4282 = icmp uge i64 %4281, %4276 br i1 %4282, label %Flow8031, label %loop-memcpy-expansion5013, !amdgpu.uniform !42 Flow8030: ; preds = %Flow8028, %Flow8029 %4283 = phi i64 [ %6265, %Flow8028 ], [ %6262, %Flow8029 ] br label %post-loop-memcpy-expansion5012, !amdgpu.uniform !42 loop-memcpy-residual5015: ; preds = %loop-memcpy-residual5015.preheader, %loop-memcpy-residual5015 %residual-loop-index5017 = phi i64 [ %4285, %loop-memcpy-residual5015 ], [ 0, %loop-memcpy-residual5015.preheader ] %scevgep6892 = getelementptr i8, ptr %scevgep6891, i64 %residual-loop-index5017, !amdgpu.uniform !42 %4284 = load i8, ptr %scevgep6892, align 1 %scevgep6890 = getelementptr i8, ptr %scevgep6889, i64 %residual-loop-index5017 store i8 %4284, ptr %scevgep6890, align 1 %4285 = add i64 %residual-loop-index5017, 1 %4286 = icmp uge i64 %4285, %4275 br i1 %4286, label %Flow8028, label %loop-memcpy-residual5015, !amdgpu.uniform !42 Flow8028: ; preds = %loop-memcpy-residual5015 br label %Flow8030, !amdgpu.uniform !42 post-loop-memcpy-expansion5012: ; preds = %Flow8030 %tobool.not.i.i.i.i.i.i3094 = icmp eq i32 %.lcssa9142, 0 %conv.i.i.i.i.i.i3095 = zext i1 %tobool.not.i.i.i.i.i.i3094 to i32 fence release %4287 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i3096 = zext i32 %.lcssa9144 to i64 %arrayidx.i24.i.i.i.i.i3097 = getelementptr inbounds nuw i32, ptr %4287, i64 %idxprom.i23.i.i.i.i.i3096 store atomic i32 %conv.i.i.i.i.i.i3095, ptr %arrayidx.i24.i.i.i.i.i3097 monotonic, align 4 %4288 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i3098 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %4288, i64 %idxprom.i23.i.i.i.i.i3096 %4289 = load i64, ptr %arrayidx.i.i5.i.i3098, align 8, !tbaa !80 %scevgep6893 = getelementptr i8, ptr %4211, i64 56 %4290 = add i64 %writer.sroa.8.4.i.i.i.i3017, -56 br label %while.cond.i.i.i.i3099, !amdgpu.uniform !42 while.cond.i.i.i.i3099: ; preds = %post-loop-memcpy-expansion5012, %Flow8027 %phi.broken8722 = phi i64 [ 0, %post-loop-memcpy-expansion5012 ], [ %4312, %Flow8027 ] %lsr.iv6899 = phi i64 [ %4310, %Flow8027 ], [ %4290, %post-loop-memcpy-expansion5012 ] %lsr.iv6894 = phi ptr [ %4309, %Flow8027 ], [ %scevgep6893, %post-loop-memcpy-expansion5012 ] %port.sroa.37.0.i.i3100 = phi i32 [ %4308, %Flow8027 ], [ %conv.i.i.i.i.i.i3095, %post-loop-memcpy-expansion5012 ] %idx.0.i.i.i.i3101 = phi i64 [ %4307, %Flow8027 ], [ 56, %post-loop-memcpy-expansion5012 ] %cmp.i.i.i.i3102 = icmp ugt i64 %writer.sroa.8.4.i.i.i.i3017, %idx.0.i.i.i.i3101 %4291 = call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i3102) %and.i.i.i.i6.i.i3103 = and i64 %4291, %4289 %tobool.not.i.i.i.i3104 = icmp ne i64 %and.i.i.i.i6.i.i3103, 0 %4292 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i3105 = getelementptr inbounds nuw i32, ptr %4292, i64 %idxprom.i23.i.i.i.i.i3096 %4293 = load atomic i32, ptr %arrayidx.i22.i.i.i3105 monotonic, align 4 %4294 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i3104) %4295 = extractvalue { i1, i64 } %4294, 0 %4296 = extractvalue { i1, i64 } %4294, 1 br i1 %4295, label %cond.false.i8.i.i.i.i3106, label %Flow8027 cond.false.i8.i.i.i.i3106: ; preds = %while.cond.i.i.i.i3099 %4297 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %4293) %4298 = icmp ne i32 %4297, %port.sroa.37.0.i.i3100 %4299 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %4298) %4300 = extractvalue { i1, i64 } %4299, 0 %4301 = extractvalue { i1, i64 } %4299, 1 br i1 %4300, label %while.body.i.i21.i.i.i.i3107.preheader, label %Flow8026 while.body.i.i21.i.i.i.i3107.preheader: ; preds = %cond.false.i8.i.i.i.i3106 br label %while.body.i.i21.i.i.i.i3107, !amdgpu.uniform !42 Flow8026: ; preds = %Flow8025, %cond.false.i8.i.i.i.i3106 call void @llvm.amdgcn.end.cf.i64(i64 %4301) br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i3110, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i3107: ; preds = %while.body.i.i21.i.i.i.i3107.preheader, %while.body.i.i21.i.i.i.i3107 %phi.broken8721 = phi i64 [ 0, %while.body.i.i21.i.i.i.i3107.preheader ], [ %4305, %while.body.i.i21.i.i.i.i3107 ] call void @llvm.amdgcn.s.sleep(i32 2) %4302 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i3108 = getelementptr inbounds nuw i32, ptr %4302, i64 %idxprom.i23.i.i.i.i.i3096 %4303 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i3108 monotonic, align 4 %4304 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %4303) %cmp.i.not.i.i23.i.i.i.i3109 = icmp eq i32 %4304, %port.sroa.37.0.i.i3100 %4305 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i23.i.i.i.i3109, i64 %phi.broken8721) %4306 = call i1 @llvm.amdgcn.loop.i64(i64 %4305) br i1 %4306, label %Flow8025, label %while.body.i.i21.i.i.i.i3107 Flow8025: ; preds = %while.body.i.i21.i.i.i.i3107 %.lcssa9145 = phi i64 [ %4305, %while.body.i.i21.i.i.i.i3107 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9145) br label %Flow8026, !amdgpu.uniform !42 Flow8027: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3111, %while.cond.i.i.i.i3099 %4307 = phi i64 [ %add.i.i.i.i3114, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3111 ], [ poison, %while.cond.i.i.i.i3099 ] %4308 = phi i32 [ %conv.i.i26.i.i.i.i3112, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3111 ], [ poison, %while.cond.i.i.i.i3099 ] %4309 = phi ptr [ %scevgep6895, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3111 ], [ poison, %while.cond.i.i.i.i3099 ] %4310 = phi i64 [ %lsr.iv.next6900, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3111 ], [ poison, %while.cond.i.i.i.i3099 ] %4311 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3111 ], [ true, %while.cond.i.i.i.i3099 ] call void @llvm.amdgcn.end.cf.i64(i64 %4296) %4312 = call i64 @llvm.amdgcn.if.break.i64(i1 %4311, i64 %phi.broken8722) %4313 = call i1 @llvm.amdgcn.loop.i64(i64 %4312) br i1 %4313, label %cond.false.i.i.i3121, label %while.cond.i.i.i.i3099 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i3110: ; preds = %Flow8026 fence acquire br i1 %cmp.i.i.i.i3102, label %if.then.i.i.i.i.i.i3.i3115, label %Flow8024, !amdgpu.uniform !42 if.then.i.i.i.i.i.i3.i3115: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i3110 %sub.i.i.i.i.i.i.i3117 = sub nuw i64 %writer.sroa.8.4.i.i.i.i3017, %idx.0.i.i.i.i3101 %spec.select.i.i.i36.i.i.i.i3118 = call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i3117, i64 64) %4314 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %4315 = and i64 %spec.select.i.i.i36.i.i.i.i3118, 15 %4316 = sub i64 %spec.select.i.i.i36.i.i.i.i3118, %4315 %4317 = icmp ne i64 %4316, 0 br i1 %4317, label %loop-memcpy-expansion5007.preheader, label %Flow8023, !amdgpu.uniform !42 loop-memcpy-expansion5007.preheader: ; preds = %if.then.i.i.i.i.i.i3.i3115 %arrayidx.i20.i35.i.i.i.i3119 = getelementptr %"struct.rpc::Buffer", ptr %4314, i64 %idxprom.i19.i.i.i.i.i3089 %arrayidx.i22.i38.i.i.i.i3120 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i3119, i64 %sh_prom.i.i.i.i756 br label %loop-memcpy-expansion5007, !amdgpu.uniform !42 Flow8023: ; preds = %Flow8022, %if.then.i.i.i.i.i.i3.i3115 br label %loop-memcpy-residual-header5010, !amdgpu.uniform !42 loop-memcpy-expansion5007: ; preds = %loop-memcpy-expansion5007.preheader, %loop-memcpy-expansion5007 %loop-index5008 = phi i64 [ %4320, %loop-memcpy-expansion5007 ], [ 0, %loop-memcpy-expansion5007.preheader ] %scevgep6896 = getelementptr i8, ptr %lsr.iv6894, i64 %loop-index5008, !amdgpu.uniform !42 %4318 = load <4 x i32>, ptr %scevgep6896, align 1 %4319 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i3120, i64 %loop-index5008 store <4 x i32> %4318, ptr %4319, align 1 %4320 = add i64 %loop-index5008, 16 %4321 = icmp uge i64 %4320, %4316 br i1 %4321, label %Flow8022, label %loop-memcpy-expansion5007, !amdgpu.uniform !42 Flow8021: ; preds = %Flow8020, %loop-memcpy-residual-header5010 br label %Flow8024, !amdgpu.uniform !42 loop-memcpy-residual5009: ; preds = %loop-memcpy-residual5009.preheader, %loop-memcpy-residual5009 %residual-loop-index5011 = phi i64 [ %4323, %loop-memcpy-residual5009 ], [ 0, %loop-memcpy-residual5009.preheader ] %scevgep6905 = getelementptr i8, ptr %scevgep6904, i64 %residual-loop-index5011, !amdgpu.uniform !42 %4322 = load i8, ptr %scevgep6905, align 1 %scevgep6903 = getelementptr i8, ptr %scevgep6902, i64 %residual-loop-index5011 store i8 %4322, ptr %scevgep6903, align 1 %4323 = add i64 %residual-loop-index5011, 1 %4324 = icmp uge i64 %4323, %4315 br i1 %4324, label %Flow8020, label %loop-memcpy-residual5009, !amdgpu.uniform !42 Flow8020: ; preds = %loop-memcpy-residual5009 br label %Flow8021, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3111: ; preds = %Flow8024 %conv.i.i26.i.i.i.i3112 = xor i32 %port.sroa.37.0.i.i3100, 1 fence release %4325 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i3113 = getelementptr inbounds nuw i32, ptr %4325, i64 %idxprom.i23.i.i.i.i.i3096 store atomic i32 %conv.i.i26.i.i.i.i3112, ptr %arrayidx.i24.i29.i.i.i.i3113 monotonic, align 4 %add.i.i.i.i3114 = add i64 %idx.0.i.i.i.i3101, 64 %scevgep6895 = getelementptr i8, ptr %lsr.iv6894, i64 64 %lsr.iv.next6900 = add i64 %lsr.iv6899, -64 br label %Flow8027, !amdgpu.uniform !42 cond.false.i.i.i3121: ; preds = %Flow8027 %.lcssa9147 = phi i64 [ %4312, %Flow8027 ] %port.sroa.37.0.i.i3100.lcssa = phi i32 [ %port.sroa.37.0.i.i3100, %Flow8027 ] %.lcssa9146 = phi i32 [ %4293, %Flow8027 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9147) %4326 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa9146) %4327 = icmp ne i32 %4326, %port.sroa.37.0.i.i3100.lcssa %4328 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %4327) %4329 = extractvalue { i1, i64 } %4328, 0 %4330 = extractvalue { i1, i64 } %4328, 1 br i1 %4329, label %while.body.i.i.i.i3122.preheader, label %Flow8019 while.body.i.i.i.i3122.preheader: ; preds = %cond.false.i.i.i3121 br label %while.body.i.i.i.i3122, !amdgpu.uniform !42 Flow8019: ; preds = %Flow8018, %cond.false.i.i.i3121 call void @llvm.amdgcn.end.cf.i64(i64 %4330) br label %_ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i3125, !amdgpu.uniform !42 while.body.i.i.i.i3122: ; preds = %while.body.i.i.i.i3122.preheader, %while.body.i.i.i.i3122 %phi.broken8723 = phi i64 [ 0, %while.body.i.i.i.i3122.preheader ], [ %4334, %while.body.i.i.i.i3122 ] call void @llvm.amdgcn.s.sleep(i32 2) %4331 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i3123 = getelementptr inbounds nuw i32, ptr %4331, i64 %idxprom.i23.i.i.i.i.i3096 %4332 = load atomic i32, ptr %arrayidx.i.i.i8.i.i3123 monotonic, align 4 %4333 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %4332) %cmp.i.not.i.i.i.i3124 = icmp eq i32 %4333, %port.sroa.37.0.i.i3100.lcssa %4334 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i3124, i64 %phi.broken8723) %4335 = call i1 @llvm.amdgcn.loop.i64(i64 %4334) br i1 %4335, label %Flow8018, label %while.body.i.i.i.i3122 Flow8018: ; preds = %while.body.i.i.i.i3122 %.lcssa9148 = phi i64 [ %4334, %while.body.i.i.i.i3122 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9148) br label %Flow8019, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i3125: ; preds = %Flow8019 fence acquire call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %4336 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa9143, i1 true) %iszero.i.i.i.i.i13.i.i3126 = icmp ne i64 %.lcssa9143, 0 %cmp2.i.i.i.i14.i.i3127 = icmp eq i64 %4336, %sh_prom.i.i.i.i756 %cmp.i.i.i.i15.i.i3128 = select i1 %iszero.i.i.i.i.i13.i.i3126, i1 %cmp2.i.i.i.i14.i.i3127, i1 false %4337 = and i32 %.lcssa9144, 31 %conv4.i.i.i19.i.i3132 = zext i1 %cmp.i.i.i.i15.i.i3128 to i32 %shl.i.i.i20.i.i3133 = shl nuw i32 %conv4.i.i.i19.i.i3132, %4337 %xor.i.i.i21.i.i3134 = xor i32 %shl.i.i.i20.i.i3133, -1 %4338 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5836, !amdgpu.uniform !42 4339: ; preds = %ComputeEnd5837 %div8.i.i.i16.i.i3129 = lshr i32 %.lcssa9144, 5 %idxprom.i.i.i17.i.i3130 = zext nneg i32 %div8.i.i.i16.i.i3129 to i64 %4340 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i3130 %sunkaddr7465 = getelementptr inbounds i8, ptr addrspace(1) %4340, i64 40 %4341 = atomicrmw and ptr addrspace(1) %sunkaddr7465, i32 %.lcssa9149 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %4342, !amdgpu.uniform !42 4342: ; preds = %4339, %ComputeEnd5837 call void @llvm.amdgcn.end.cf.i64(i64 %8254) call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i1.i3165, !amdgpu.uniform !42 for.cond.i.i1.i3165: ; preds = %4342, %Flow8017 %4343 = phi i32 [ %4380, %Flow8017 ], [ %1207, %4342 ] %4344 = phi i64 [ %4381, %Flow8017 ], [ %1208, %4342 ] %4345 = phi i32 [ %4382, %Flow8017 ], [ %1209, %4342 ] %retval.sroa.6.0.i.i.i3166 = phi i32 [ %4385, %Flow8017 ], [ undef, %4342 ] %retval.sroa.2.0.i.i.i3168 = phi i64 [ %4384, %Flow8017 ], [ undef, %4342 ] %retval.sroa.8.0.i.i.i3169 = phi i32 [ %4383, %Flow8017 ], [ undef, %4342 ] %index.0.i.i.i3170 = phi i32 [ %4387, %Flow8017 ], [ 0, %4342 ] %4346 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i3171 = icmp ult i32 %index.0.i.i.i3170, %4346 %spec.store.select.i.i.i3172 = select i1 %cmp.not.i.i.i3171, i32 %index.0.i.i.i3170, i32 0 %4347 = call i64 @llvm.amdgcn.ballot.i64(i1 true) %4348 = and i32 %spec.store.select.i.i.i3172, 31 %4349 = lshr i64 %4347, %sh_prom.i.i.i.i756 %4350 = trunc i64 %4349 to i32 %conv4.i.i.i.i.i3176 = and i32 %4350, 1 %shl.i.i.i.i.i3177 = shl nuw i32 %conv4.i.i.i.i.i3176, %4348 br label %ComputeLoop5840, !amdgpu.uniform !42 4351: ; preds = %ComputeEnd5841 %sunkaddr7466 = getelementptr inbounds i8, ptr addrspace(1) %8264, i64 40 %4352 = atomicrmw or ptr addrspace(1) %sunkaddr7466, i32 %.lcssa9150 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %4353, !amdgpu.uniform !42 4353: ; preds = %4351, %ComputeEnd5841 %4354 = phi i32 [ %4352, %4351 ], [ poison, %ComputeEnd5841 ] call void @llvm.amdgcn.end.cf.i64(i64 %8273) %4355 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %4354) %4356 = or i32 %4355, %.lcssa9151 %shl5.i.i.i.i.i3178 = shl nuw i32 1, %4348 %and.i.i.i.i.i3179 = and i32 %shl5.i.i.i.i.i3178, %4356 %tobool3.i.i.i.i3180 = icmp ne i32 %and.i.i.i.i.i3179, 0 %4357 = call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i3180) %and.i.i.i.i.i.i3181 = and i64 %4357, %4347 %cmp.i.not.i.i.i3182 = icmp ne i64 %4347, %and.i.i.i.i.i.i3181 br i1 %cmp.i.not.i.i.i3182, label %if.then.i.i.i.i3183, label %Flow8016, !amdgpu.uniform !42 if.then.i.i.i.i3183: ; preds = %4353 fence syncscope("agent") acquire %4358 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %4359 = extractelement <2 x i64> %4358, i32 0 %4360 = inttoptr i64 %4359 to ptr %4361 = extractelement <2 x i64> %4358, i32 1 %4362 = inttoptr i64 %4361 to ptr %idxprom.i.i.i.i3184 = zext i32 %spec.store.select.i.i.i3172 to i64 %arrayidx.i.i.i.i3185 = getelementptr inbounds nuw i32, ptr %4360, i64 %idxprom.i.i.i.i3184, !amdgpu.uniform !42 %4363 = load atomic i32, ptr %arrayidx.i.i.i.i3185 monotonic, align 4 %4364 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %4363) %arrayidx.i45.i.i.i3186 = getelementptr inbounds nuw i32, ptr %4362, i64 %idxprom.i.i.i.i3184, !amdgpu.uniform !42 %4365 = load atomic i32, ptr %arrayidx.i45.i.i.i3186 monotonic, align 4 %4366 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %4365) %cmp.i46.not.i.i.i3187 = icmp ne i32 %4364, %4366 br i1 %cmp.i46.not.i.i.i3187, label %if.then12.i.i.i3188, label %Flow8014, !amdgpu.uniform !42 if.then12.i.i.i3188: ; preds = %if.then.i.i.i.i3183 fence syncscope("agent") release %4367 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %4347, i1 true) %iszero.i.i.i.i.i.i.i3189 = icmp ne i64 %4347, 0 %cmp2.i.i.i.i.i.i3190 = icmp eq i64 %4367, %sh_prom.i.i.i.i756 %cmp.i.i.i.i.i.i3191 = select i1 %iszero.i.i.i.i.i.i.i3189, i1 %cmp2.i.i.i.i.i.i3190, i1 false %conv4.i.i51.i.i.i3192 = zext i1 %cmp.i.i.i.i.i.i3191 to i32 %shl.i.i52.i.i.i3193 = shl nuw i32 %conv4.i.i51.i.i.i3192, %4348 %xor.i.i.i.i.i3194 = xor i32 %shl.i.i52.i.i.i3193, -1 %4368 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5845, !amdgpu.uniform !42 4369: ; preds = %ComputeEnd5846 %sunkaddr7467 = getelementptr inbounds i8, ptr addrspace(1) %8264, i64 40 %4370 = atomicrmw and ptr addrspace(1) %sunkaddr7467, i32 %.lcssa9152 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %4371, !amdgpu.uniform !42 4371: ; preds = %4369, %ComputeEnd5846 call void @llvm.amdgcn.end.cf.i64(i64 %8291) call void @llvm.amdgcn.wave.barrier() br label %Flow8014, !amdgpu.uniform !42 if.end14.i.i.i3254: ; preds = %Flow8014 %4372 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %4347, i1 true) %iszero.i.i.i.i.i.i3255 = icmp ne i64 %4347, 0 %cmp2.i.i.i.i.i3256 = icmp eq i64 %4372, %sh_prom.i.i.i.i756 %cmp.i.i.i.i.i3257 = select i1 %iszero.i.i.i.i.i.i3255, i1 %cmp2.i.i.i.i.i3256, i1 false %4373 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i3257) %4374 = extractvalue { i1, i64 } %4373, 0 %4375 = extractvalue { i1, i64 } %4373, 1 br i1 %4374, label %if.then16.i.i.i3259, label %if.end22.i.i.i3258 if.then16.i.i.i3259: ; preds = %if.end14.i.i.i3254 %4376 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i3260 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %4376, i64 %idxprom.i.i.i.i3184, i32 1 store i32 1660944387, ptr %opcode.i.i.i3260, align 8, !tbaa !77 %arrayidx21.i.i.i3261 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %4376, i64 %idxprom.i.i.i.i3184 store i64 %4347, ptr %arrayidx21.i.i.i3261, align 8, !tbaa !80 br label %if.end22.i.i.i3258, !amdgpu.uniform !42 Flow8015: ; preds = %if.end22.i.i.i3258, %Flow8014 %4377 = phi i32 [ %4364, %if.end22.i.i.i3258 ], [ %retval.sroa.8.0.i.i.i3169, %Flow8014 ] %4378 = phi i64 [ %4347, %if.end22.i.i.i3258 ], [ %retval.sroa.2.0.i.i.i3168, %Flow8014 ] %4379 = phi i32 [ %spec.store.select.i.i.i3172, %if.end22.i.i.i3258 ], [ %retval.sroa.6.0.i.i.i3166, %Flow8014 ] br label %cleanup26.i.i.i3195, !amdgpu.uniform !42 if.end22.i.i.i3258: ; preds = %if.then16.i.i.i3259, %if.end14.i.i.i3254 call void @llvm.amdgcn.end.cf.i64(i64 %4375) call void @llvm.amdgcn.wave.barrier() br label %Flow8015, !amdgpu.uniform !42 Flow8016: ; preds = %cleanup26.i.i.i3195, %4353 %4380 = phi i32 [ %4379, %cleanup26.i.i.i3195 ], [ %4343, %4353 ] %4381 = phi i64 [ %4378, %cleanup26.i.i.i3195 ], [ %4344, %4353 ] %4382 = phi i32 [ %4377, %cleanup26.i.i.i3195 ], [ %4345, %4353 ] %4383 = phi i32 [ %4377, %cleanup26.i.i.i3195 ], [ %retval.sroa.8.0.i.i.i3169, %4353 ] %4384 = phi i64 [ %4378, %cleanup26.i.i.i3195 ], [ %retval.sroa.2.0.i.i.i3168, %4353 ] %4385 = phi i32 [ %4379, %cleanup26.i.i.i3195 ], [ %retval.sroa.6.0.i.i.i3166, %4353 ] %4386 = phi i1 [ %cmp.i46.not.i.i.i3187, %cleanup26.i.i.i3195 ], [ true, %4353 ] br i1 %4386, label %for.inc.i.i.i3200, label %Flow8017, !amdgpu.uniform !42 cleanup26.i.i.i3195: ; preds = %Flow8015 br label %Flow8016, !amdgpu.uniform !42 for.inc.i.i.i3200: ; preds = %Flow8016 %inc.i.i.i3205 = add i32 %spec.store.select.i.i.i3172, 1 br label %Flow8017, !amdgpu.uniform !42 Flow8017: ; preds = %for.inc.i.i.i3200, %Flow8016 %4387 = phi i32 [ %inc.i.i.i3205, %for.inc.i.i.i3200 ], [ poison, %Flow8016 ] %4388 = phi i1 [ false, %for.inc.i.i.i3200 ], [ true, %Flow8016 ] br i1 %4388, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i3206, label %for.cond.i.i1.i3165, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i3206: ; preds = %Flow8017 %.lcssa9155 = phi i32 [ %4380, %Flow8017 ] %.lcssa9154 = phi i64 [ %4381, %Flow8017 ] %.lcssa9153 = phi i32 [ %4382, %Flow8017 ] fence acquire %4389 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i3207 = shl i32 %.lcssa9155, 6 %idxprom.i19.i.i.i.i.i3208 = zext i32 %mul.i.i.i.i.i.i3207 to i64 %arrayidx.i20.i.i.i.i.i3209 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %4389, i64 %idxprom.i19.i.i.i.i.i3208 %arrayidx.i22.i.i.i.i.i3210 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i3209, i64 %sh_prom.i.i.i.i756 store i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.24.40 to ptr), i64 5) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.24.40 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i3210, align 8, !tbaa !82 br i1 %1126, label %loop-memcpy-expansion5385.preheader, label %Flow8013, !amdgpu.uniform !42 loop-memcpy-expansion5385.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i3206 %scevgep6906 = getelementptr i8, ptr %4389, i64 8 %scevgep6907 = getelementptr i8, ptr %scevgep6906, i64 %1474 %4390 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i3208, 6 %scevgep6908 = getelementptr i8, ptr %scevgep6907, i64 %4390 br label %loop-memcpy-expansion5385, !amdgpu.uniform !42 Flow8013: ; preds = %Flow8012, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i3206 br label %loop-memcpy-residual-header5388, !amdgpu.uniform !42 loop-memcpy-expansion5385: ; preds = %loop-memcpy-expansion5385.preheader, %loop-memcpy-expansion5385 %loop-index5386 = phi i64 [ %4393, %loop-memcpy-expansion5385 ], [ 0, %loop-memcpy-expansion5385.preheader ] %4391 = getelementptr i8, ptr addrspace(4) @.str.24.40, i64 %loop-index5386, !amdgpu.uniform !42 %4392 = load <4 x i32>, ptr addrspace(4) %4391, align 1 %scevgep6909 = getelementptr i8, ptr %scevgep6908, i64 %loop-index5386 store <4 x i32> %4392, ptr %scevgep6909, align 1 %4393 = add i64 %loop-index5386, 16 %4394 = icmp uge i64 %4393, %1125 br i1 %4394, label %Flow8012, label %loop-memcpy-expansion5385, !amdgpu.uniform !42 Flow8011: ; preds = %Flow8009, %Flow8010 %4395 = phi i64 [ %6635, %Flow8009 ], [ %6633, %Flow8010 ] br label %post-loop-memcpy-expansion5384, !amdgpu.uniform !42 loop-memcpy-residual5387: ; preds = %loop-memcpy-residual5387.preheader, %loop-memcpy-residual5387 %residual-loop-index5389 = phi i64 [ %4397, %loop-memcpy-residual5387 ], [ 0, %loop-memcpy-residual5387.preheader ] %scevgep6914 = getelementptr i8, ptr addrspace(4) @.str.24.40, i64 %residual-loop-index5389, !amdgpu.uniform !42 %4396 = load i8, ptr addrspace(4) %scevgep6914, align 1 %scevgep6913 = getelementptr i8, ptr %scevgep6912, i64 %residual-loop-index5389 store i8 %4396, ptr %scevgep6913, align 1 %4397 = add i64 %residual-loop-index5389, 1 %4398 = icmp uge i64 %4397, %1124 br i1 %4398, label %Flow8009, label %loop-memcpy-residual5387, !amdgpu.uniform !42 Flow8009: ; preds = %loop-memcpy-residual5387 br label %Flow8011, !amdgpu.uniform !42 post-loop-memcpy-expansion5384: ; preds = %Flow8011 %tobool.not.i.i.i.i.i.i3213 = icmp eq i32 %.lcssa9153, 0 %conv.i.i.i.i.i.i3214 = zext i1 %tobool.not.i.i.i.i.i.i3213 to i32 fence release %4399 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i3215 = zext i32 %.lcssa9155 to i64 %arrayidx.i24.i.i.i.i.i3216 = getelementptr inbounds nuw i32, ptr %4399, i64 %idxprom.i23.i.i.i.i.i3215 store atomic i32 %conv.i.i.i.i.i.i3214, ptr %arrayidx.i24.i.i.i.i.i3216 monotonic, align 4 %4400 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i3217 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %4400, i64 %idxprom.i23.i.i.i.i.i3215 %4401 = load i64, ptr %arrayidx.i.i5.i.i3217, align 8, !tbaa !80 br label %while.cond.i.i.i.i3218, !amdgpu.uniform !42 while.cond.i.i.i.i3218: ; preds = %post-loop-memcpy-expansion5384, %Flow8008 %phi.broken8725 = phi i64 [ 0, %post-loop-memcpy-expansion5384 ], [ %4423, %Flow8008 ] %lsr.iv6920 = phi i64 [ %4421, %Flow8008 ], [ -51, %post-loop-memcpy-expansion5384 ] %lsr.iv6915 = phi ptr addrspace(4) [ %4420, %Flow8008 ], [ getelementptr (i8, ptr addrspace(4) @.str.24.40, i64 56), %post-loop-memcpy-expansion5384 ] %port.sroa.37.0.i.i3219 = phi i32 [ %4419, %Flow8008 ], [ %conv.i.i.i.i.i.i3214, %post-loop-memcpy-expansion5384 ] %idx.0.i.i.i.i3220 = phi i64 [ %4418, %Flow8008 ], [ 56, %post-loop-memcpy-expansion5384 ] %cmp.i.i.i.i3221 = icmp ult i64 %idx.0.i.i.i.i3220, sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.24.40 to ptr), i64 5) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.24.40 to ptr) to i64)) %4402 = call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i3221) %and.i.i.i.i6.i.i3222 = and i64 %4402, %4401 %tobool.not.i.i.i.i3223 = icmp ne i64 %and.i.i.i.i6.i.i3222, 0 %4403 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i3224 = getelementptr inbounds nuw i32, ptr %4403, i64 %idxprom.i23.i.i.i.i.i3215 %4404 = load atomic i32, ptr %arrayidx.i22.i.i.i3224 monotonic, align 4 %4405 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i3223) %4406 = extractvalue { i1, i64 } %4405, 0 %4407 = extractvalue { i1, i64 } %4405, 1 br i1 %4406, label %cond.false.i8.i.i.i.i3225, label %Flow8008 cond.false.i8.i.i.i.i3225: ; preds = %while.cond.i.i.i.i3218 %4408 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %4404) %4409 = icmp ne i32 %4408, %port.sroa.37.0.i.i3219 %4410 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %4409) %4411 = extractvalue { i1, i64 } %4410, 0 %4412 = extractvalue { i1, i64 } %4410, 1 br i1 %4411, label %while.body.i.i21.i.i.i.i3226.preheader, label %Flow8007 while.body.i.i21.i.i.i.i3226.preheader: ; preds = %cond.false.i8.i.i.i.i3225 br label %while.body.i.i21.i.i.i.i3226, !amdgpu.uniform !42 Flow8007: ; preds = %Flow8006, %cond.false.i8.i.i.i.i3225 call void @llvm.amdgcn.end.cf.i64(i64 %4412) br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i3229, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i3226: ; preds = %while.body.i.i21.i.i.i.i3226.preheader, %while.body.i.i21.i.i.i.i3226 %phi.broken8724 = phi i64 [ 0, %while.body.i.i21.i.i.i.i3226.preheader ], [ %4416, %while.body.i.i21.i.i.i.i3226 ] call void @llvm.amdgcn.s.sleep(i32 2) %4413 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i3227 = getelementptr inbounds nuw i32, ptr %4413, i64 %idxprom.i23.i.i.i.i.i3215 %4414 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i3227 monotonic, align 4 %4415 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %4414) %cmp.i.not.i.i23.i.i.i.i3228 = icmp eq i32 %4415, %port.sroa.37.0.i.i3219 %4416 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i23.i.i.i.i3228, i64 %phi.broken8724) %4417 = call i1 @llvm.amdgcn.loop.i64(i64 %4416) br i1 %4417, label %Flow8006, label %while.body.i.i21.i.i.i.i3226 Flow8006: ; preds = %while.body.i.i21.i.i.i.i3226 %.lcssa9156 = phi i64 [ %4416, %while.body.i.i21.i.i.i.i3226 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9156) br label %Flow8007, !amdgpu.uniform !42 Flow8008: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3230, %while.cond.i.i.i.i3218 %4418 = phi i64 [ %add.i.i.i.i3233, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3230 ], [ poison, %while.cond.i.i.i.i3218 ] %4419 = phi i32 [ %conv.i.i26.i.i.i.i3231, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3230 ], [ poison, %while.cond.i.i.i.i3218 ] %4420 = phi ptr addrspace(4) [ %scevgep6916, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3230 ], [ poison, %while.cond.i.i.i.i3218 ] %4421 = phi i64 [ %lsr.iv.next6921, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3230 ], [ poison, %while.cond.i.i.i.i3218 ] %4422 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3230 ], [ true, %while.cond.i.i.i.i3218 ] call void @llvm.amdgcn.end.cf.i64(i64 %4407) %4423 = call i64 @llvm.amdgcn.if.break.i64(i1 %4422, i64 %phi.broken8725) %4424 = call i1 @llvm.amdgcn.loop.i64(i64 %4423) br i1 %4424, label %cond.false.i.i.i3240, label %while.cond.i.i.i.i3218 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i3229: ; preds = %Flow8007 fence acquire br i1 %cmp.i.i.i.i3221, label %if.then.i.i.i.i.i.i.i3234, label %Flow8005, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i3234: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i3229 %sub.i.i.i.i.i.i.i3236 = sub nuw i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.24.40 to ptr), i64 5) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.24.40 to ptr) to i64)), %idx.0.i.i.i.i3220 %spec.select.i.i.i36.i.i.i.i3237 = call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i3236, i64 64) %4425 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %4426 = and i64 %spec.select.i.i.i36.i.i.i.i3237, 15 %4427 = sub i64 %spec.select.i.i.i36.i.i.i.i3237, %4426 %4428 = icmp ne i64 %4427, 0 br i1 %4428, label %loop-memcpy-expansion5391.preheader, label %Flow8004, !amdgpu.uniform !42 loop-memcpy-expansion5391.preheader: ; preds = %if.then.i.i.i.i.i.i.i3234 %arrayidx.i20.i35.i.i.i.i3238 = getelementptr %"struct.rpc::Buffer", ptr %4425, i64 %idxprom.i19.i.i.i.i.i3208 %arrayidx.i22.i38.i.i.i.i3239 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i3238, i64 %sh_prom.i.i.i.i756 br label %loop-memcpy-expansion5391, !amdgpu.uniform !42 Flow8004: ; preds = %Flow8003, %if.then.i.i.i.i.i.i.i3234 br label %loop-memcpy-residual-header5394, !amdgpu.uniform !42 loop-memcpy-expansion5391: ; preds = %loop-memcpy-expansion5391.preheader, %loop-memcpy-expansion5391 %loop-index5392 = phi i64 [ %4431, %loop-memcpy-expansion5391 ], [ 0, %loop-memcpy-expansion5391.preheader ] %scevgep6917 = getelementptr i8, ptr addrspace(4) %lsr.iv6915, i64 %loop-index5392, !amdgpu.uniform !42 %4429 = load <4 x i32>, ptr addrspace(4) %scevgep6917, align 1 %4430 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i3239, i64 %loop-index5392 store <4 x i32> %4429, ptr %4430, align 1 %4431 = add i64 %loop-index5392, 16 %4432 = icmp uge i64 %4431, %4427 br i1 %4432, label %Flow8003, label %loop-memcpy-expansion5391, !amdgpu.uniform !42 Flow8002: ; preds = %Flow8001, %loop-memcpy-residual-header5394 br label %Flow8005, !amdgpu.uniform !42 loop-memcpy-residual5393: ; preds = %loop-memcpy-residual5393.preheader, %loop-memcpy-residual5393 %residual-loop-index5395 = phi i64 [ %4434, %loop-memcpy-residual5393 ], [ 0, %loop-memcpy-residual5393.preheader ] %scevgep6926 = getelementptr i8, ptr addrspace(4) %scevgep6925, i64 %residual-loop-index5395, !amdgpu.uniform !42 %4433 = load i8, ptr addrspace(4) %scevgep6926, align 1 %scevgep6924 = getelementptr i8, ptr %scevgep6923, i64 %residual-loop-index5395 store i8 %4433, ptr %scevgep6924, align 1 %4434 = add i64 %residual-loop-index5395, 1 %4435 = icmp uge i64 %4434, %4426 br i1 %4435, label %Flow8001, label %loop-memcpy-residual5393, !amdgpu.uniform !42 Flow8001: ; preds = %loop-memcpy-residual5393 br label %Flow8002, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3230: ; preds = %Flow8005 %conv.i.i26.i.i.i.i3231 = xor i32 %port.sroa.37.0.i.i3219, 1 fence release %4436 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i3232 = getelementptr inbounds nuw i32, ptr %4436, i64 %idxprom.i23.i.i.i.i.i3215 store atomic i32 %conv.i.i26.i.i.i.i3231, ptr %arrayidx.i24.i29.i.i.i.i3232 monotonic, align 4 %add.i.i.i.i3233 = add i64 %idx.0.i.i.i.i3220, 64 %scevgep6916 = getelementptr i8, ptr addrspace(4) %lsr.iv6915, i64 64 %lsr.iv.next6921 = add i64 %lsr.iv6920, -64 br label %Flow8008, !amdgpu.uniform !42 cond.false.i.i.i3240: ; preds = %Flow8008 %.lcssa9158 = phi i64 [ %4423, %Flow8008 ] %port.sroa.37.0.i.i3219.lcssa = phi i32 [ %port.sroa.37.0.i.i3219, %Flow8008 ] %.lcssa9157 = phi i32 [ %4404, %Flow8008 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9158) %4437 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa9157) %4438 = icmp ne i32 %4437, %port.sroa.37.0.i.i3219.lcssa %4439 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %4438) %4440 = extractvalue { i1, i64 } %4439, 0 %4441 = extractvalue { i1, i64 } %4439, 1 br i1 %4440, label %while.body.i.i.i.i3241.preheader, label %Flow8000 while.body.i.i.i.i3241.preheader: ; preds = %cond.false.i.i.i3240 br label %while.body.i.i.i.i3241, !amdgpu.uniform !42 Flow8000: ; preds = %Flow7999, %cond.false.i.i.i3240 call void @llvm.amdgcn.end.cf.i64(i64 %4441) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit3262, !amdgpu.uniform !42 while.body.i.i.i.i3241: ; preds = %while.body.i.i.i.i3241.preheader, %while.body.i.i.i.i3241 %phi.broken8726 = phi i64 [ 0, %while.body.i.i.i.i3241.preheader ], [ %4445, %while.body.i.i.i.i3241 ] call void @llvm.amdgcn.s.sleep(i32 2) %4442 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i3242 = getelementptr inbounds nuw i32, ptr %4442, i64 %idxprom.i23.i.i.i.i.i3215 %4443 = load atomic i32, ptr %arrayidx.i.i.i8.i.i3242 monotonic, align 4 %4444 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %4443) %cmp.i.not.i.i.i.i3243 = icmp eq i32 %4444, %port.sroa.37.0.i.i3219.lcssa %4445 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i3243, i64 %phi.broken8726) %4446 = call i1 @llvm.amdgcn.loop.i64(i64 %4445) br i1 %4446, label %Flow7999, label %while.body.i.i.i.i3241 Flow7999: ; preds = %while.body.i.i.i.i3241 %.lcssa9159 = phi i64 [ %4445, %while.body.i.i.i.i3241 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9159) br label %Flow8000, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit3262: ; preds = %Flow8000 fence acquire call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %4447 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa9154, i1 true) %iszero.i.i.i.i.i13.i.i3245 = icmp ne i64 %.lcssa9154, 0 %cmp2.i.i.i.i14.i.i3246 = icmp eq i64 %4447, %sh_prom.i.i.i.i756 %cmp.i.i.i.i15.i.i3247 = select i1 %iszero.i.i.i.i.i13.i.i3245, i1 %cmp2.i.i.i.i14.i.i3246, i1 false %4448 = and i32 %.lcssa9155, 31 %conv4.i.i.i19.i.i3251 = zext i1 %cmp.i.i.i.i15.i.i3247 to i32 %shl.i.i.i20.i.i3252 = shl nuw i32 %conv4.i.i.i19.i.i3251, %4448 %xor.i.i.i21.i.i3253 = xor i32 %shl.i.i.i20.i.i3252, -1 %4449 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5849, !amdgpu.uniform !42 4450: ; preds = %ComputeEnd5850 %div8.i.i.i16.i.i3248 = lshr i32 %.lcssa9155, 5 %idxprom.i.i.i17.i.i3249 = zext nneg i32 %div8.i.i.i16.i.i3248 to i64 %4451 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i3249 %sunkaddr7468 = getelementptr inbounds i8, ptr addrspace(1) %4451, i64 40 %4452 = atomicrmw and ptr addrspace(1) %sunkaddr7468, i32 %.lcssa9160 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %4453, !amdgpu.uniform !42 4453: ; preds = %4450, %ComputeEnd5850 call void @llvm.amdgcn.end.cf.i64(i64 %8308) call void @llvm.amdgcn.wave.barrier() br label %Flow8063, !amdgpu.uniform !42 sw.epilog: ; preds = %Flow8331 call void @llvm.lifetime.end.p5(ptr addrspace(5) %Ctx) #34 br label %Flow8429, !amdgpu.uniform !42 cleanup: ; preds = %Flow8429 %Next = getelementptr inbounds nuw i8, ptr %T.0207, i64 8 %T.0 = load ptr, ptr %Next, align 8, !tbaa !63 %cmp17.not = icmp eq ptr %T.0, null %4454 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp17.not, i64 %phi.broken8766) %4455 = call i1 @llvm.amdgcn.loop.i64(i64 %4454) br i1 %4455, label %Flow8430, label %for.body Flow7917: ; preds = %5820, %Flow7916 call void @llvm.amdgcn.end.cf.i64(i64 %5823) br label %if.end111, !amdgpu.uniform !42 for.cond.i.i1.i3271: ; preds = %for.cond.i.i1.i3271.preheader, %Flow7915 %4456 = phi i32 [ %4493, %Flow7915 ], [ poison, %for.cond.i.i1.i3271.preheader ] %4457 = phi i64 [ %4494, %Flow7915 ], [ poison, %for.cond.i.i1.i3271.preheader ] %4458 = phi i32 [ %4495, %Flow7915 ], [ poison, %for.cond.i.i1.i3271.preheader ] %retval.sroa.6.0.i.i.i3272 = phi i32 [ %4498, %Flow7915 ], [ undef, %for.cond.i.i1.i3271.preheader ] %retval.sroa.2.0.i.i.i3274 = phi i64 [ %4497, %Flow7915 ], [ undef, %for.cond.i.i1.i3271.preheader ] %retval.sroa.8.0.i.i.i3275 = phi i32 [ %4496, %Flow7915 ], [ undef, %for.cond.i.i1.i3271.preheader ] %index.0.i.i.i3276 = phi i32 [ %4500, %Flow7915 ], [ 0, %for.cond.i.i1.i3271.preheader ] %4459 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i3277 = icmp ult i32 %index.0.i.i.i3276, %4459 %spec.store.select.i.i.i3278 = select i1 %cmp.not.i.i.i3277, i32 %index.0.i.i.i3276, i32 0 %4460 = call i64 @llvm.amdgcn.ballot.i64(i1 true) %4461 = and i32 %spec.store.select.i.i.i3278, 31 %4462 = lshr i64 %4460, %sh_prom.i.i.i.i3270 %4463 = trunc i64 %4462 to i32 %conv4.i.i.i.i.i3282 = and i32 %4463, 1 %shl.i.i.i.i.i3283 = shl nuw i32 %conv4.i.i.i.i.i3282, %4461 br label %ComputeLoop5853, !amdgpu.uniform !42 4464: ; preds = %ComputeEnd5854 %sunkaddr7469 = getelementptr inbounds i8, ptr addrspace(1) %8318, i64 40 %4465 = atomicrmw or ptr addrspace(1) %sunkaddr7469, i32 %.lcssa8927 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %4466, !amdgpu.uniform !42 4466: ; preds = %4464, %ComputeEnd5854 %4467 = phi i32 [ %4465, %4464 ], [ poison, %ComputeEnd5854 ] call void @llvm.amdgcn.end.cf.i64(i64 %8327) %4468 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %4467) %4469 = or i32 %4468, %.lcssa8928 %shl5.i.i.i.i.i3284 = shl nuw i32 1, %4461 %and.i.i.i.i.i3285 = and i32 %shl5.i.i.i.i.i3284, %4469 %tobool3.i.i.i.i3286 = icmp ne i32 %and.i.i.i.i.i3285, 0 %4470 = call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i3286) %and.i.i.i.i.i.i3287 = and i64 %4470, %4460 %cmp.i.not.i.i.i3288 = icmp ne i64 %4460, %and.i.i.i.i.i.i3287 br i1 %cmp.i.not.i.i.i3288, label %if.then.i.i.i.i3289, label %Flow7914, !amdgpu.uniform !42 if.then.i.i.i.i3289: ; preds = %4466 fence syncscope("agent") acquire %4471 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %4472 = extractelement <2 x i64> %4471, i32 0 %4473 = inttoptr i64 %4472 to ptr %4474 = extractelement <2 x i64> %4471, i32 1 %4475 = inttoptr i64 %4474 to ptr %idxprom.i.i.i.i3290 = zext i32 %spec.store.select.i.i.i3278 to i64 %arrayidx.i.i.i.i3291 = getelementptr inbounds nuw i32, ptr %4473, i64 %idxprom.i.i.i.i3290, !amdgpu.uniform !42 %4476 = load atomic i32, ptr %arrayidx.i.i.i.i3291 monotonic, align 4 %4477 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %4476) %arrayidx.i45.i.i.i3292 = getelementptr inbounds nuw i32, ptr %4475, i64 %idxprom.i.i.i.i3290, !amdgpu.uniform !42 %4478 = load atomic i32, ptr %arrayidx.i45.i.i.i3292 monotonic, align 4 %4479 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %4478) %cmp.i46.not.i.i.i3293 = icmp ne i32 %4477, %4479 br i1 %cmp.i46.not.i.i.i3293, label %if.then12.i.i.i3294, label %Flow7912, !amdgpu.uniform !42 if.then12.i.i.i3294: ; preds = %if.then.i.i.i.i3289 fence syncscope("agent") release %4480 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %4460, i1 true) %iszero.i.i.i.i.i.i.i3295 = icmp ne i64 %4460, 0 %cmp2.i.i.i.i.i.i3296 = icmp eq i64 %4480, %sh_prom.i.i.i.i3270 %cmp.i.i.i.i.i.i3297 = select i1 %iszero.i.i.i.i.i.i.i3295, i1 %cmp2.i.i.i.i.i.i3296, i1 false %conv4.i.i51.i.i.i3298 = zext i1 %cmp.i.i.i.i.i.i3297 to i32 %shl.i.i52.i.i.i3299 = shl nuw i32 %conv4.i.i51.i.i.i3298, %4461 %xor.i.i.i.i.i3300 = xor i32 %shl.i.i52.i.i.i3299, -1 %4481 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5858, !amdgpu.uniform !42 4482: ; preds = %ComputeEnd5859 %sunkaddr7470 = getelementptr inbounds i8, ptr addrspace(1) %8318, i64 40 %4483 = atomicrmw and ptr addrspace(1) %sunkaddr7470, i32 %.lcssa8929 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %4484, !amdgpu.uniform !42 4484: ; preds = %4482, %ComputeEnd5859 call void @llvm.amdgcn.end.cf.i64(i64 %8345) call void @llvm.amdgcn.wave.barrier() br label %Flow7912, !amdgpu.uniform !42 if.end14.i.i.i3360: ; preds = %Flow7912 %4485 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %4460, i1 true) %iszero.i.i.i.i.i.i3361 = icmp ne i64 %4460, 0 %cmp2.i.i.i.i.i3362 = icmp eq i64 %4485, %sh_prom.i.i.i.i3270 %cmp.i.i.i.i.i3363 = select i1 %iszero.i.i.i.i.i.i3361, i1 %cmp2.i.i.i.i.i3362, i1 false %4486 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i3363) %4487 = extractvalue { i1, i64 } %4486, 0 %4488 = extractvalue { i1, i64 } %4486, 1 br i1 %4487, label %if.then16.i.i.i3365, label %if.end22.i.i.i3364 if.then16.i.i.i3365: ; preds = %if.end14.i.i.i3360 %4489 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i3366 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %4489, i64 %idxprom.i.i.i.i3290, i32 1 store i32 1660944387, ptr %opcode.i.i.i3366, align 8, !tbaa !77 %arrayidx21.i.i.i3367 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %4489, i64 %idxprom.i.i.i.i3290 store i64 %4460, ptr %arrayidx21.i.i.i3367, align 8, !tbaa !80 br label %if.end22.i.i.i3364, !amdgpu.uniform !42 Flow7913: ; preds = %if.end22.i.i.i3364, %Flow7912 %4490 = phi i32 [ %4477, %if.end22.i.i.i3364 ], [ %retval.sroa.8.0.i.i.i3275, %Flow7912 ] %4491 = phi i64 [ %4460, %if.end22.i.i.i3364 ], [ %retval.sroa.2.0.i.i.i3274, %Flow7912 ] %4492 = phi i32 [ %spec.store.select.i.i.i3278, %if.end22.i.i.i3364 ], [ %retval.sroa.6.0.i.i.i3272, %Flow7912 ] br label %cleanup26.i.i.i3301, !amdgpu.uniform !42 if.end22.i.i.i3364: ; preds = %if.then16.i.i.i3365, %if.end14.i.i.i3360 call void @llvm.amdgcn.end.cf.i64(i64 %4488) call void @llvm.amdgcn.wave.barrier() br label %Flow7913, !amdgpu.uniform !42 Flow7914: ; preds = %cleanup26.i.i.i3301, %4466 %4493 = phi i32 [ %4492, %cleanup26.i.i.i3301 ], [ %4456, %4466 ] %4494 = phi i64 [ %4491, %cleanup26.i.i.i3301 ], [ %4457, %4466 ] %4495 = phi i32 [ %4490, %cleanup26.i.i.i3301 ], [ %4458, %4466 ] %4496 = phi i32 [ %4490, %cleanup26.i.i.i3301 ], [ %retval.sroa.8.0.i.i.i3275, %4466 ] %4497 = phi i64 [ %4491, %cleanup26.i.i.i3301 ], [ %retval.sroa.2.0.i.i.i3274, %4466 ] %4498 = phi i32 [ %4492, %cleanup26.i.i.i3301 ], [ %retval.sroa.6.0.i.i.i3272, %4466 ] %4499 = phi i1 [ %cmp.i46.not.i.i.i3293, %cleanup26.i.i.i3301 ], [ true, %4466 ] br i1 %4499, label %for.inc.i.i.i3306, label %Flow7915, !amdgpu.uniform !42 cleanup26.i.i.i3301: ; preds = %Flow7913 br label %Flow7914, !amdgpu.uniform !42 for.inc.i.i.i3306: ; preds = %Flow7914 %inc.i.i.i3311 = add i32 %spec.store.select.i.i.i3278, 1 br label %Flow7915, !amdgpu.uniform !42 Flow7915: ; preds = %for.inc.i.i.i3306, %Flow7914 %4500 = phi i32 [ %inc.i.i.i3311, %for.inc.i.i.i3306 ], [ poison, %Flow7914 ] %4501 = phi i1 [ false, %for.inc.i.i.i3306 ], [ true, %Flow7914 ] br i1 %4501, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i3312, label %for.cond.i.i1.i3271, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i3312: ; preds = %Flow7915 %.lcssa8932 = phi i32 [ %4493, %Flow7915 ] %.lcssa8931 = phi i64 [ %4494, %Flow7915 ] %.lcssa8930 = phi i32 [ %4495, %Flow7915 ] fence acquire %4502 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i3313 = shl i32 %.lcssa8932, 6 %idxprom.i19.i.i.i.i.i3314 = zext i32 %mul.i.i.i.i.i.i3313 to i64 %arrayidx.i20.i.i.i.i.i3315 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %4502, i64 %idxprom.i19.i.i.i.i.i3314 %arrayidx.i22.i.i.i.i.i3316 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i3315, i64 %sh_prom.i.i.i.i3270 store i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.25.41 to ptr), i64 4) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.25.41 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i3316, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i3317 = call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.25.41 to ptr), i64 4) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.25.41 to ptr) to i64)), i64 56) %4503 = and i64 %spec.select.i.i.i.i.i.i.i3317, 15 %4504 = sub i64 %spec.select.i.i.i.i.i.i.i3317, %4503 %4505 = icmp ne i64 %4504, 0 br i1 %4505, label %loop-memcpy-expansion5397.preheader, label %Flow7911, !amdgpu.uniform !42 loop-memcpy-expansion5397.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i3312 %4506 = shl nuw nsw i64 %sh_prom.i.i.i.i3270, 6 %4507 = add nuw nsw i64 %4506, 8 %scevgep6496 = getelementptr i8, ptr %4502, i64 %4507 %4508 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i3314, 6 %scevgep6497 = getelementptr i8, ptr %scevgep6496, i64 %4508 br label %loop-memcpy-expansion5397, !amdgpu.uniform !42 Flow7911: ; preds = %Flow7910, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i3312 br label %loop-memcpy-residual-header5400, !amdgpu.uniform !42 loop-memcpy-expansion5397: ; preds = %loop-memcpy-expansion5397.preheader, %loop-memcpy-expansion5397 %loop-index5398 = phi i64 [ %4511, %loop-memcpy-expansion5397 ], [ 0, %loop-memcpy-expansion5397.preheader ] %4509 = getelementptr i8, ptr addrspace(4) @.str.25.41, i64 %loop-index5398, !amdgpu.uniform !42 %4510 = load <4 x i32>, ptr addrspace(4) %4509, align 1 %scevgep6498 = getelementptr i8, ptr %scevgep6497, i64 %loop-index5398 store <4 x i32> %4510, ptr %scevgep6498, align 1 %4511 = add i64 %loop-index5398, 16 %4512 = icmp uge i64 %4511, %4504 br i1 %4512, label %Flow7910, label %loop-memcpy-expansion5397, !amdgpu.uniform !42 Flow7909: ; preds = %Flow7907, %Flow7908 %4513 = phi i64 [ %6643, %Flow7907 ], [ %6640, %Flow7908 ] %4514 = phi i64 [ %6645, %Flow7907 ], [ %6641, %Flow7908 ] br label %post-loop-memcpy-expansion5396, !amdgpu.uniform !42 loop-memcpy-residual5399: ; preds = %loop-memcpy-residual5399.preheader, %loop-memcpy-residual5399 %residual-loop-index5401 = phi i64 [ %4516, %loop-memcpy-residual5399 ], [ 0, %loop-memcpy-residual5399.preheader ] %scevgep6495 = getelementptr i8, ptr addrspace(4) @.str.25.41, i64 %residual-loop-index5401, !amdgpu.uniform !42 %4515 = load i8, ptr addrspace(4) %scevgep6495, align 1 %scevgep6494 = getelementptr i8, ptr %scevgep6493, i64 %residual-loop-index5401 store i8 %4515, ptr %scevgep6494, align 1 %4516 = add i64 %residual-loop-index5401, 1 %4517 = icmp uge i64 %4516, %4503 br i1 %4517, label %Flow7907, label %loop-memcpy-residual5399, !amdgpu.uniform !42 Flow7907: ; preds = %loop-memcpy-residual5399 br label %Flow7909, !amdgpu.uniform !42 post-loop-memcpy-expansion5396: ; preds = %Flow7909 %tobool.not.i.i.i.i.i.i3319 = icmp eq i32 %.lcssa8930, 0 %conv.i.i.i.i.i.i3320 = zext i1 %tobool.not.i.i.i.i.i.i3319 to i32 fence release %4518 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i3321 = zext i32 %.lcssa8932 to i64 %arrayidx.i24.i.i.i.i.i3322 = getelementptr inbounds nuw i32, ptr %4518, i64 %idxprom.i23.i.i.i.i.i3321 store atomic i32 %conv.i.i.i.i.i.i3320, ptr %arrayidx.i24.i.i.i.i.i3322 monotonic, align 4 %4519 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i3323 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %4519, i64 %idxprom.i23.i.i.i.i.i3321, !amdgpu.uniform !42 %4520 = load i64, ptr %arrayidx.i.i5.i.i3323, align 8, !tbaa !80 br label %while.cond.i.i.i.i3324, !amdgpu.uniform !42 while.cond.i.i.i.i3324: ; preds = %post-loop-memcpy-expansion5396, %Flow7906 %phi.broken8778 = phi i64 [ 0, %post-loop-memcpy-expansion5396 ], [ %4537, %Flow7906 ] %lsr.iv6485 = phi i64 [ %4535, %Flow7906 ], [ -52, %post-loop-memcpy-expansion5396 ] %lsr.iv6480 = phi ptr addrspace(4) [ %4534, %Flow7906 ], [ getelementptr (i8, ptr addrspace(4) @.str.25.41, i64 56), %post-loop-memcpy-expansion5396 ] %port.sroa.37.0.i.i3325 = phi i32 [ %4533, %Flow7906 ], [ %conv.i.i.i.i.i.i3320, %post-loop-memcpy-expansion5396 ] %idx.0.i.i.i.i3326 = phi i64 [ %4532, %Flow7906 ], [ 56, %post-loop-memcpy-expansion5396 ] %cmp.i.i.i.i3327 = icmp ult i64 %idx.0.i.i.i.i3326, sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.25.41 to ptr), i64 4) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.25.41 to ptr) to i64)) %4521 = call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i3327) %and.i.i.i.i6.i.i3328 = and i64 %4521, %4520 %tobool.not.i.i.i.i3329 = icmp ne i64 %and.i.i.i.i6.i.i3328, 0 %4522 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i3330 = getelementptr inbounds nuw i32, ptr %4522, i64 %idxprom.i23.i.i.i.i.i3321, !amdgpu.uniform !42 %4523 = load atomic i32, ptr %arrayidx.i22.i.i.i3330 monotonic, align 4 %4524 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i3329) %4525 = extractvalue { i1, i64 } %4524, 0 %4526 = extractvalue { i1, i64 } %4524, 1 br i1 %4525, label %cond.false.i8.i.i.i.i3331, label %Flow7906 cond.false.i8.i.i.i.i3331: ; preds = %while.cond.i.i.i.i3324 %4527 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %4523) %4528 = icmp ne i32 %4527, %port.sroa.37.0.i.i3325 br i1 %4528, label %while.body.i.i21.i.i.i.i3332.preheader, label %Flow7905, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i3332.preheader: ; preds = %cond.false.i8.i.i.i.i3331 br label %while.body.i.i21.i.i.i.i3332, !amdgpu.uniform !42 Flow7905: ; preds = %Flow7904, %cond.false.i8.i.i.i.i3331 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i3335, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i3332: ; preds = %while.body.i.i21.i.i.i.i3332.preheader, %while.body.i.i21.i.i.i.i3332 call void @llvm.amdgcn.s.sleep(i32 2) %4529 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i3333 = getelementptr inbounds nuw i32, ptr %4529, i64 %idxprom.i23.i.i.i.i.i3321, !amdgpu.uniform !42 %4530 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i3333 monotonic, align 4 %4531 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %4530) %cmp.i.not.i.i23.i.i.i.i3334 = icmp eq i32 %4531, %port.sroa.37.0.i.i3325 br i1 %cmp.i.not.i.i23.i.i.i.i3334, label %Flow7904, label %while.body.i.i21.i.i.i.i3332, !amdgpu.uniform !42 Flow7904: ; preds = %while.body.i.i21.i.i.i.i3332 br label %Flow7905, !amdgpu.uniform !42 Flow7906: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3336, %while.cond.i.i.i.i3324 %4532 = phi i64 [ %add.i.i.i.i3339, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3336 ], [ poison, %while.cond.i.i.i.i3324 ] %4533 = phi i32 [ %conv.i.i26.i.i.i.i3337, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3336 ], [ poison, %while.cond.i.i.i.i3324 ] %4534 = phi ptr addrspace(4) [ %scevgep6481, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3336 ], [ poison, %while.cond.i.i.i.i3324 ] %4535 = phi i64 [ %lsr.iv.next6486, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3336 ], [ poison, %while.cond.i.i.i.i3324 ] %4536 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3336 ], [ true, %while.cond.i.i.i.i3324 ] call void @llvm.amdgcn.end.cf.i64(i64 %4526) %4537 = call i64 @llvm.amdgcn.if.break.i64(i1 %4536, i64 %phi.broken8778) %4538 = call i1 @llvm.amdgcn.loop.i64(i64 %4537) br i1 %4538, label %cond.false.i.i.i3346, label %while.cond.i.i.i.i3324 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i3335: ; preds = %Flow7905 fence acquire br i1 %cmp.i.i.i.i3327, label %if.then.i.i.i.i.i.i.i3340, label %Flow7903, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i3340: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i3335 %sub.i.i.i.i.i.i.i3342 = sub nuw i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.25.41 to ptr), i64 4) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.25.41 to ptr) to i64)), %idx.0.i.i.i.i3326 %spec.select.i.i.i36.i.i.i.i3343 = call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i3342, i64 64) %4539 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %4540 = and i64 %spec.select.i.i.i36.i.i.i.i3343, 15 %4541 = sub i64 %spec.select.i.i.i36.i.i.i.i3343, %4540 %4542 = icmp ne i64 %4541, 0 br i1 %4542, label %loop-memcpy-expansion5403.preheader, label %Flow7902, !amdgpu.uniform !42 loop-memcpy-expansion5403.preheader: ; preds = %if.then.i.i.i.i.i.i.i3340 %arrayidx.i20.i35.i.i.i.i3344 = getelementptr %"struct.rpc::Buffer", ptr %4539, i64 %idxprom.i19.i.i.i.i.i3314 %arrayidx.i22.i38.i.i.i.i3345 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i3344, i64 %sh_prom.i.i.i.i3270 br label %loop-memcpy-expansion5403, !amdgpu.uniform !42 Flow7902: ; preds = %Flow7901, %if.then.i.i.i.i.i.i.i3340 br label %loop-memcpy-residual-header5406, !amdgpu.uniform !42 loop-memcpy-expansion5403: ; preds = %loop-memcpy-expansion5403.preheader, %loop-memcpy-expansion5403 %loop-index5404 = phi i64 [ %4545, %loop-memcpy-expansion5403 ], [ 0, %loop-memcpy-expansion5403.preheader ] %scevgep6482 = getelementptr i8, ptr addrspace(4) %lsr.iv6480, i64 %loop-index5404, !amdgpu.uniform !42 %4543 = load <4 x i32>, ptr addrspace(4) %scevgep6482, align 1 %4544 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i3345, i64 %loop-index5404 store <4 x i32> %4543, ptr %4544, align 1 %4545 = add i64 %loop-index5404, 16 %4546 = icmp uge i64 %4545, %4541 br i1 %4546, label %Flow7901, label %loop-memcpy-expansion5403, !amdgpu.uniform !42 Flow7900: ; preds = %Flow7899, %loop-memcpy-residual-header5406 br label %Flow7903, !amdgpu.uniform !42 loop-memcpy-residual5405: ; preds = %loop-memcpy-residual5405.preheader, %loop-memcpy-residual5405 %residual-loop-index5407 = phi i64 [ %4548, %loop-memcpy-residual5405 ], [ 0, %loop-memcpy-residual5405.preheader ] %scevgep6491 = getelementptr i8, ptr addrspace(4) %scevgep6490, i64 %residual-loop-index5407, !amdgpu.uniform !42 %4547 = load i8, ptr addrspace(4) %scevgep6491, align 1 %scevgep6489 = getelementptr i8, ptr %scevgep6488, i64 %residual-loop-index5407 store i8 %4547, ptr %scevgep6489, align 1 %4548 = add i64 %residual-loop-index5407, 1 %4549 = icmp uge i64 %4548, %4540 br i1 %4549, label %Flow7899, label %loop-memcpy-residual5405, !amdgpu.uniform !42 Flow7899: ; preds = %loop-memcpy-residual5405 br label %Flow7900, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3336: ; preds = %Flow7903 %conv.i.i26.i.i.i.i3337 = xor i32 %port.sroa.37.0.i.i3325, 1 fence release %4550 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i3338 = getelementptr inbounds nuw i32, ptr %4550, i64 %idxprom.i23.i.i.i.i.i3321 store atomic i32 %conv.i.i26.i.i.i.i3337, ptr %arrayidx.i24.i29.i.i.i.i3338 monotonic, align 4 %add.i.i.i.i3339 = add i64 %idx.0.i.i.i.i3326, 64 %scevgep6481 = getelementptr i8, ptr addrspace(4) %lsr.iv6480, i64 64 %lsr.iv.next6486 = add i64 %lsr.iv6485, -64 br label %Flow7906, !amdgpu.uniform !42 cond.false.i.i.i3346: ; preds = %Flow7906 %.lcssa8926 = phi i64 [ %4537, %Flow7906 ] %port.sroa.37.0.i.i3325.lcssa = phi i32 [ %port.sroa.37.0.i.i3325, %Flow7906 ] %.lcssa8925 = phi i32 [ %4523, %Flow7906 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8926) %4551 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa8925) %4552 = icmp ne i32 %4551, %port.sroa.37.0.i.i3325.lcssa %4553 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %4552) %4554 = extractvalue { i1, i64 } %4553, 0 %4555 = extractvalue { i1, i64 } %4553, 1 br i1 %4554, label %while.body.i.i.i.i3347.preheader, label %Flow7898 while.body.i.i.i.i3347.preheader: ; preds = %cond.false.i.i.i3346 br label %while.body.i.i.i.i3347, !amdgpu.uniform !42 Flow7898: ; preds = %Flow7897, %cond.false.i.i.i3346 call void @llvm.amdgcn.end.cf.i64(i64 %4555) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit3368, !amdgpu.uniform !42 while.body.i.i.i.i3347: ; preds = %while.body.i.i.i.i3347.preheader, %while.body.i.i.i.i3347 %phi.broken8779 = phi i64 [ 0, %while.body.i.i.i.i3347.preheader ], [ %4559, %while.body.i.i.i.i3347 ] call void @llvm.amdgcn.s.sleep(i32 2) %4556 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i3348 = getelementptr inbounds nuw i32, ptr %4556, i64 %idxprom.i23.i.i.i.i.i3321, !amdgpu.uniform !42 %4557 = load atomic i32, ptr %arrayidx.i.i.i8.i.i3348 monotonic, align 4 %4558 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %4557) %cmp.i.not.i.i.i.i3349 = icmp eq i32 %4558, %port.sroa.37.0.i.i3325.lcssa %4559 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i3349, i64 %phi.broken8779) %4560 = call i1 @llvm.amdgcn.loop.i64(i64 %4559) br i1 %4560, label %Flow7897, label %while.body.i.i.i.i3347 Flow7897: ; preds = %while.body.i.i.i.i3347 %.lcssa8924 = phi i64 [ %4559, %while.body.i.i.i.i3347 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8924) br label %Flow7898, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit3368: ; preds = %Flow7898 fence acquire call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %4561 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa8931, i1 true) %iszero.i.i.i.i.i13.i.i3351 = icmp ne i64 %.lcssa8931, 0 %cmp2.i.i.i.i14.i.i3352 = icmp eq i64 %4561, %sh_prom.i.i.i.i3270 %cmp.i.i.i.i15.i.i3353 = select i1 %iszero.i.i.i.i.i13.i.i3351, i1 %cmp2.i.i.i.i14.i.i3352, i1 false %4562 = and i32 %.lcssa8932, 31 %conv4.i.i.i19.i.i3357 = zext i1 %cmp.i.i.i.i15.i.i3353 to i32 %shl.i.i.i20.i.i3358 = shl nuw i32 %conv4.i.i.i19.i.i3357, %4562 %xor.i.i.i21.i.i3359 = xor i32 %shl.i.i.i20.i.i3358, -1 %4563 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5862, !amdgpu.uniform !42 4564: ; preds = %ComputeEnd5863 %div8.i.i.i16.i.i3354 = lshr i32 %.lcssa8932, 5 %idxprom.i.i.i17.i.i3355 = zext nneg i32 %div8.i.i.i16.i.i3354 to i64 %4565 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i3355 %sunkaddr7471 = getelementptr inbounds i8, ptr addrspace(1) %4565, i64 40 %4566 = atomicrmw and ptr addrspace(1) %sunkaddr7471, i32 %.lcssa8923 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %4567, !amdgpu.uniform !42 4567: ; preds = %4564, %ComputeEnd5863 call void @llvm.amdgcn.end.cf.i64(i64 %8362) call void @llvm.amdgcn.wave.barrier() call void @llvm.lifetime.start.p5(ptr addrspace(5) %buffer.i.i.i2988) #34, !noalias !180 br label %while.body.i.i.i.i.i.i3373, !amdgpu.uniform !42 while.body.i.i.i.i.i.i3373: ; preds = %4567, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i3387 %phi.broken8780 = phi i64 [ 0, %4567 ], [ %4635, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i3387 ] %writer.sroa.10.0.i.i.i.i3374 = phi i64 [ %writer.sroa.10.1.i.i.i.i3388, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i3387 ], [ 0, %4567 ] %value.addr.09.i.i.i.i.i.i3375 = phi i32 [ %div.i.i.i.i.i.i.i3376, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i3387 ], [ %1148, %4567 ] br label %NodeBlock7595, !amdgpu.uniform !42 NodeBlock7595: ; preds = %while.body.i.i.i.i.i.i3373 %div.i.i.i.i.i.i.i3376 = udiv i32 %value.addr.09.i.i.i.i.i.i3375, 10 %.neg.i3377 = mul i32 %div.i.i.i.i.i.i.i3376, 246 %rem.i.i.i.i.i.i.decomposed.i3378 = add i32 %.neg.i3377, %value.addr.09.i.i.i.i.i.i3375 %conv.i.i.i.i.i.i.i3379 = trunc i32 %rem.i.i.i.i.i.i.decomposed.i3378 to i8 %4568 = zext i8 %conv.i.i.i.i.i.i.i3379 to i16 %Pivot7596 = icmp sge i16 %4568, 5 %4569 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot7596) %4570 = extractvalue { i1, i64 } %4569, 0 %4571 = extractvalue { i1, i64 } %4569, 1 br i1 %4570, label %NodeBlock7593, label %Flow7896 NodeBlock7593: ; preds = %NodeBlock7595 %Pivot7594 = icmp sge i16 %4568, 7 %4572 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot7594) %4573 = extractvalue { i1, i64 } %4572, 0 %4574 = extractvalue { i1, i64 } %4572, 1 br i1 %4573, label %NodeBlock7591, label %Flow7887 NodeBlock7591: ; preds = %NodeBlock7593 %Pivot7592 = icmp sge i16 %4568, 8 %4575 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot7592) %4576 = extractvalue { i1, i64 } %4575, 0 %4577 = extractvalue { i1, i64 } %4575, 1 br i1 %4576, label %NodeBlock7589, label %Flow7883 NodeBlock7589: ; preds = %NodeBlock7591 %Pivot7590 = icmp sge i16 %4568, 9 %4578 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot7590) %4579 = extractvalue { i1, i64 } %4578, 0 %4580 = extractvalue { i1, i64 } %4578, 1 br i1 %4579, label %sw.bb9.i.i.i.i.i.i.i.i3380, label %Flow7881 Flow7887: ; preds = %Flow7884, %NodeBlock7593 %4581 = phi i8 [ %4625, %Flow7884 ], [ poison, %NodeBlock7593 ] %4582 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %4574) %4583 = extractvalue { i1, i64 } %4582, 0 %4584 = extractvalue { i1, i64 } %4582, 1 br i1 %4583, label %NodeBlock7587, label %Flow7888 NodeBlock7587: ; preds = %Flow7887 %Pivot7588 = icmp sge i16 %4568, 6 %4585 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot7588) %4586 = extractvalue { i1, i64 } %4585, 0 %4587 = extractvalue { i1, i64 } %4585, 1 br i1 %4586, label %sw.bb6.i.i.i.i.i.i.i.i3540, label %Flow7885 Flow7896: ; preds = %Flow7888, %NodeBlock7595 %4588 = phi i8 [ %4627, %Flow7888 ], [ poison, %NodeBlock7595 ] %4589 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %4571) %4590 = extractvalue { i1, i64 } %4589, 0 %4591 = extractvalue { i1, i64 } %4589, 1 br i1 %4590, label %NodeBlock7585, label %if.then.i.i.i.i.i.i.i3381 NodeBlock7585: ; preds = %Flow7896 %Pivot7586 = icmp sge i16 %4568, 3 %4592 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot7586) %4593 = extractvalue { i1, i64 } %4592, 0 %4594 = extractvalue { i1, i64 } %4592, 1 br i1 %4593, label %NodeBlock7583, label %Flow7894 NodeBlock7583: ; preds = %NodeBlock7585 %Pivot7584 = icmp sge i16 %4568, 4 %4595 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot7584) %4596 = extractvalue { i1, i64 } %4595, 0 %4597 = extractvalue { i1, i64 } %4595, 1 br i1 %4596, label %sw.bb4.i.i.i.i.i.i.i.i3542, label %Flow7889 Flow7894: ; preds = %Flow7890, %NodeBlock7585 %4598 = phi i8 [ %4628, %Flow7890 ], [ poison, %NodeBlock7585 ] %4599 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %4594) %4600 = extractvalue { i1, i64 } %4599, 0 %4601 = extractvalue { i1, i64 } %4599, 1 br i1 %4600, label %NodeBlock7581, label %Flow7895 NodeBlock7581: ; preds = %Flow7894 %Pivot7582 = icmp sge i16 %4568, 2 %4602 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot7582) %4603 = extractvalue { i1, i64 } %4602, 0 %4604 = extractvalue { i1, i64 } %4602, 1 br i1 %4603, label %sw.bb2.i.i.i.i.i.i.i.i3544, label %Flow7892 Flow7892: ; preds = %sw.bb2.i.i.i.i.i.i.i.i3544, %NodeBlock7581 %4605 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %4604) %4606 = extractvalue { i1, i64 } %4605, 0 %4607 = extractvalue { i1, i64 } %4605, 1 br i1 %4606, label %LeafBlock7579, label %Flow7893 LeafBlock7579: ; preds = %Flow7892 %SwitchLeaf7580 = icmp eq i16 %4568, 1 %4608 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %SwitchLeaf7580) %4609 = extractvalue { i1, i64 } %4608, 0 %4610 = extractvalue { i1, i64 } %4608, 1 br i1 %4609, label %sw.bb1.i.i.i.i.i.i.i.i3545, label %Flow7891 sw.bb1.i.i.i.i.i.i.i.i3545: ; preds = %LeafBlock7579 br label %Flow7891, !amdgpu.uniform !42 sw.bb2.i.i.i.i.i.i.i.i3544: ; preds = %NodeBlock7581 br label %Flow7892, !amdgpu.uniform !42 Flow7889: ; preds = %sw.bb4.i.i.i.i.i.i.i.i3542, %NodeBlock7583 %4611 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %4597) %4612 = extractvalue { i1, i64 } %4611, 0 %4613 = extractvalue { i1, i64 } %4611, 1 br i1 %4612, label %sw.bb3.i.i.i.i.i.i.i.i3543, label %Flow7890 sw.bb3.i.i.i.i.i.i.i.i3543: ; preds = %Flow7889 br label %Flow7890, !amdgpu.uniform !42 sw.bb4.i.i.i.i.i.i.i.i3542: ; preds = %NodeBlock7583 br label %Flow7889, !amdgpu.uniform !42 Flow7885: ; preds = %sw.bb6.i.i.i.i.i.i.i.i3540, %NodeBlock7587 %4614 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %4587) %4615 = extractvalue { i1, i64 } %4614, 0 %4616 = extractvalue { i1, i64 } %4614, 1 br i1 %4615, label %sw.bb5.i.i.i.i.i.i.i.i3541, label %Flow7886 sw.bb5.i.i.i.i.i.i.i.i3541: ; preds = %Flow7885 br label %Flow7886, !amdgpu.uniform !42 sw.bb6.i.i.i.i.i.i.i.i3540: ; preds = %NodeBlock7587 br label %Flow7885, !amdgpu.uniform !42 Flow7883: ; preds = %Flow7882, %NodeBlock7591 %4617 = phi i8 [ %4624, %Flow7882 ], [ poison, %NodeBlock7591 ] %4618 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %4577) %4619 = extractvalue { i1, i64 } %4618, 0 %4620 = extractvalue { i1, i64 } %4618, 1 br i1 %4619, label %sw.bb7.i.i.i.i.i.i.i.i3539, label %Flow7884 sw.bb7.i.i.i.i.i.i.i.i3539: ; preds = %Flow7883 br label %Flow7884, !amdgpu.uniform !42 Flow7881: ; preds = %sw.bb9.i.i.i.i.i.i.i.i3380, %NodeBlock7589 %4621 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %4580) %4622 = extractvalue { i1, i64 } %4621, 0 %4623 = extractvalue { i1, i64 } %4621, 1 br i1 %4622, label %sw.bb8.i.i.i.i.i.i.i.i3538, label %Flow7882 sw.bb8.i.i.i.i.i.i.i.i3538: ; preds = %Flow7881 br label %Flow7882, !amdgpu.uniform !42 sw.bb9.i.i.i.i.i.i.i.i3380: ; preds = %NodeBlock7589 br label %Flow7881, !amdgpu.uniform !42 Flow7882: ; preds = %sw.bb8.i.i.i.i.i.i.i.i3538, %Flow7881 %4624 = phi i8 [ 56, %sw.bb8.i.i.i.i.i.i.i.i3538 ], [ 57, %Flow7881 ] call void @llvm.amdgcn.end.cf.i64(i64 %4623) br label %Flow7883, !amdgpu.uniform !42 Flow7884: ; preds = %sw.bb7.i.i.i.i.i.i.i.i3539, %Flow7883 %4625 = phi i8 [ 55, %sw.bb7.i.i.i.i.i.i.i.i3539 ], [ %4617, %Flow7883 ] call void @llvm.amdgcn.end.cf.i64(i64 %4620) br label %Flow7887, !amdgpu.uniform !42 Flow7886: ; preds = %sw.bb5.i.i.i.i.i.i.i.i3541, %Flow7885 %4626 = phi i8 [ 53, %sw.bb5.i.i.i.i.i.i.i.i3541 ], [ 54, %Flow7885 ] call void @llvm.amdgcn.end.cf.i64(i64 %4616) br label %Flow7888, !amdgpu.uniform !42 Flow7888: ; preds = %Flow7886, %Flow7887 %4627 = phi i8 [ %4626, %Flow7886 ], [ %4581, %Flow7887 ] call void @llvm.amdgcn.end.cf.i64(i64 %4584) br label %Flow7896, !amdgpu.uniform !42 Flow7890: ; preds = %sw.bb3.i.i.i.i.i.i.i.i3543, %Flow7889 %4628 = phi i8 [ 51, %sw.bb3.i.i.i.i.i.i.i.i3543 ], [ 52, %Flow7889 ] call void @llvm.amdgcn.end.cf.i64(i64 %4613) br label %Flow7894, !amdgpu.uniform !42 Flow7891: ; preds = %sw.bb1.i.i.i.i.i.i.i.i3545, %LeafBlock7579 %4629 = phi i8 [ 49, %sw.bb1.i.i.i.i.i.i.i.i3545 ], [ 48, %LeafBlock7579 ] call void @llvm.amdgcn.end.cf.i64(i64 %4610) br label %Flow7893, !amdgpu.uniform !42 Flow7893: ; preds = %Flow7891, %Flow7892 %4630 = phi i8 [ %4629, %Flow7891 ], [ 50, %Flow7892 ] call void @llvm.amdgcn.end.cf.i64(i64 %4607) br label %Flow7895, !amdgpu.uniform !42 Flow7895: ; preds = %Flow7893, %Flow7894 %4631 = phi i8 [ %4630, %Flow7893 ], [ %4598, %Flow7894 ] call void @llvm.amdgcn.end.cf.i64(i64 %4601) br label %if.then.i.i.i.i.i.i.i3381, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i3381: ; preds = %Flow7896, %Flow7895 %retval.0.i.i.i.i.i.i.i.i3382 = phi i8 [ %4588, %Flow7896 ], [ %4631, %Flow7895 ] call void @llvm.amdgcn.end.cf.i64(i64 %4591) %cmp.i.i.i.i.i.i.i.i3383 = icmp eq i64 %writer.sroa.10.0.i.i.i.i3374, 11 %cmp.i.i.i.i.i.i.i.i3383.inv = xor i1 %cmp.i.i.i.i.i.i.i.i3383, true br i1 %cmp.i.i.i.i.i.i.i.i3383.inv, label %if.then3.i.i.i.i.i.i.i3384, label %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i3387, !amdgpu.uniform !42 if.then3.i.i.i.i.i.i.i3384: ; preds = %if.then.i.i.i.i.i.i.i3381 %4632 = trunc i64 %writer.sroa.10.0.i.i.i.i3374 to i32 %4633 = xor i32 %4632, -1 %4634 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i2988, i32 %4633 %arrayidx.i.i.i.i.i.i.i.i33856093 = getelementptr i8, ptr addrspace(5) %4634, i32 11 %inc.i.i.i.i.i.i.i3386 = add i64 %writer.sroa.10.0.i.i.i.i3374, 1 store i8 %retval.0.i.i.i.i.i.i.i.i3382, ptr addrspace(5) %arrayidx.i.i.i.i.i.i.i.i33856093, align 1, !tbaa !57, !noalias !180 br label %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i3387, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i3387: ; preds = %if.then3.i.i.i.i.i.i.i3384, %if.then.i.i.i.i.i.i.i3381 %writer.sroa.10.1.i.i.i.i3388 = phi i64 [ %inc.i.i.i.i.i.i.i3386, %if.then3.i.i.i.i.i.i.i3384 ], [ 11, %if.then.i.i.i.i.i.i.i3381 ] %cmp.i.i.i.i.i.i3389 = icmp ult i32 %value.addr.09.i.i.i.i.i.i3375, 10 %.not.i.i.i.i.i.i3390 = or i1 %cmp.i.i.i.i.i.i.i.i3383, %cmp.i.i.i.i.i.i3389 %4635 = call i64 @llvm.amdgcn.if.break.i64(i1 %.not.i.i.i.i.i.i3390, i64 %phi.broken8780) %4636 = call i1 @llvm.amdgcn.loop.i64(i64 %4635) br i1 %4636, label %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i3391, label %while.body.i.i.i.i.i.i3373 _ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i3391: ; preds = %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i3387 %writer.sroa.10.1.i.i.i.i3388.lcssa = phi i64 [ %writer.sroa.10.1.i.i.i.i3388, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i3387 ] %.lcssa8922 = phi i64 [ %4635, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i3387 ] %cmp.i.i.i.i.i.i.i.i3383.lcssa = phi i1 [ %cmp.i.i.i.i.i.i.i.i3383, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i3387 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8922) %cmp.i19.i.i.i.i3394 = icmp ne i64 %writer.sroa.10.1.i.i.i.i3388.lcssa, 0 %or.cond.not.i.i.i.i3395 = select i1 %cmp.i.i.i.i.i.i.i.i3383.lcssa, i1 true, i1 %cmp.i19.i.i.i.i3394 %or.cond.not.i.i.i.i3395.inv = xor i1 %or.cond.not.i.i.i.i3395, true %4637 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %or.cond.not.i.i.i.i3395.inv) %4638 = extractvalue { i1, i64 } %4637, 0 %4639 = extractvalue { i1, i64 } %4637, 1 br i1 %4638, label %if.then3.i.i.lr.ph.i.i.i.i3396, label %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i3407 if.then3.i.i.lr.ph.i.i.i.i3396: ; preds = %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i3391 %arrayidx.i.i.i.i.i.i.i3397 = getelementptr inbounds nuw i8, ptr addrspace(5) %buffer.i.i.i2988, i32 10 store i8 48, ptr addrspace(5) %arrayidx.i.i.i.i.i.i.i3397, align 2, !tbaa !57, !noalias !180 br label %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i3407, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i3407: ; preds = %if.then3.i.i.lr.ph.i.i.i.i3396, %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i3391 %writer.sroa.10.4.i.i.i.i3399 = phi i64 [ 1, %if.then3.i.i.lr.ph.i.i.i.i3396 ], [ %writer.sroa.10.1.i.i.i.i3388.lcssa, %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i3391 ] call void @llvm.amdgcn.end.cf.i64(i64 %4639) %written.i.i.i.i3409 = getelementptr inbounds nuw i8, ptr addrspace(5) %buffer.i.i.i2988, i32 16 store i64 %writer.sroa.10.4.i.i.i.i3399, ptr addrspace(5) %written.i.i.i.i3409, align 8, !tbaa !91, !noalias !180 %cmp.i.not.i.i.i.i.i3410 = icmp ne i64 %writer.sroa.10.4.i.i.i.i3399, 0 %4640 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.not.i.i.i.i.i3410) %4641 = extractvalue { i1, i64 } %4640, 0 %4642 = extractvalue { i1, i64 } %4640, 1 br i1 %4641, label %if.then.i.i.i.i.i.i3411, label %Flow7880 if.then.i.i.i.i.i.i3411: ; preds = %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i3407 %4643 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %writer.sroa.10.4.i.i.i.i3399, i64 1) %ov7473 = extractvalue { i64, i1 } %4643, 1 %ov7473.inv = xor i1 %ov7473, true %4644 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %ov7473.inv) %4645 = extractvalue { i1, i64 } %4644, 0 %4646 = extractvalue { i1, i64 } %4644, 1 br i1 %4645, label %if.end.i.i.i.i.i.i.i3414, label %Flow7879 if.end.i.i.i.i.i.i.i3414: ; preds = %if.then.i.i.i.i.i.i3411 %math7472 = extractvalue { i64, i1 } %4643, 0 %cmp2.i.i.i.i.i.i.i3415 = icmp ult i64 %math7472, 1676976733973595601 %4647 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp2.i.i.i.i.i.i.i3415) %4648 = extractvalue { i1, i64 } %4647, 0 %4649 = extractvalue { i1, i64 } %4647, 1 br i1 %4648, label %if.then3.i.i.i.i4.i.i.i3535, label %if.end4.i.i.i.i.i.i.i3416 if.then3.i.i.i.i4.i.i.i3535: ; preds = %if.end.i.i.i.i.i.i.i3414 %mul.i.i.i.i.i.i.i3536 = mul nuw i64 %math7472, 11 %div18.i.i.i.i.i.i.i3537 = lshr i64 %mul.i.i.i.i.i.i.i3536, 3 br label %if.end4.i.i.i.i.i.i.i3416, !amdgpu.uniform !42 Flow7879: ; preds = %if.end4.i.i.i.i.i.i.i3416, %if.then.i.i.i.i.i.i3411 %4650 = phi ptr [ %cond.i.i.i3424, %if.end4.i.i.i.i.i.i.i3416 ], [ addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr), %if.then.i.i.i.i.i.i3411 ] call void @llvm.amdgcn.end.cf.i64(i64 %4646) br label %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i3426, !amdgpu.uniform !42 if.end4.i.i.i.i.i.i.i3416: ; preds = %if.then3.i.i.i.i4.i.i.i3535, %if.end.i.i.i.i.i.i.i3414 %new_capacity.addr.0.i.i.i.i.i.i.i3417 = phi i64 [ %div18.i.i.i.i.i.i.i3537, %if.then3.i.i.i.i4.i.i.i3535 ], [ %math7472, %if.end.i.i.i.i.i.i.i3414 ] call void @llvm.amdgcn.end.cf.i64(i64 %4649) %sub.i.i.i3418 = add i64 %new_capacity.addr.0.i.i.i.i.i.i.i3417, 7 %div2.i.i.i3419 = and i64 %sub.i.i.i3418, -8 %4651 = load ptr, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %add.ptr.i.i.i3420 = getelementptr inbounds nuw i8, ptr %4651, i64 %div2.i.i.i3419 store ptr %add.ptr.i.i.i3420, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %sub.ptr.lhs.cast.i.i.i3421 = ptrtoint ptr %add.ptr.i.i.i3420 to i64 %sub.ptr.sub.i.i.i3422 = sub i64 %sub.ptr.lhs.cast.i.i.i3421, ptrtoint (ptr addrspacecast (ptr addrspace(1) @_ZN12_GLOBAL__N_16memoryE to ptr) to i64) %cmp.i.i.i3423 = icmp ugt i64 %sub.ptr.sub.i.i.i3422, 65335 %cond.i.i.i3424 = select i1 %cmp.i.i.i3423, ptr null, ptr %4651 br label %Flow7879, !amdgpu.uniform !42 Flow7880: ; preds = %Flow7878, %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i3407 %4652 = phi ptr [ %4650, %Flow7878 ], [ addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr), %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i3407 ] call void @llvm.amdgcn.end.cf.i64(i64 %4642) br label %if.end.i.i.i.i.i.i3428, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i3426: ; preds = %Flow7879 br label %loadstoreloop4951, !amdgpu.uniform !42 loadstoreloop4951: ; preds = %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i3426, %loadstoreloop4951 %phi.broken8781 = phi i64 [ 0, %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i3426 ], [ %4657, %loadstoreloop4951 ] %4653 = phi i64 [ %4655, %loadstoreloop4951 ], [ 0, %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i3426 ] %4654 = getelementptr i8, ptr %4650, i64 %4653 store i8 0, ptr %4654, align 1 %4655 = add i64 %4653, 1 %4656 = icmp uge i64 %4655, %writer.sroa.10.4.i.i.i.i3399 %4657 = call i64 @llvm.amdgcn.if.break.i64(i1 %4656, i64 %phi.broken8781) %4658 = call i1 @llvm.amdgcn.loop.i64(i64 %4657) br i1 %4658, label %Flow7878, label %loadstoreloop4951 Flow7878: ; preds = %loadstoreloop4951 %.lcssa8921 = phi i64 [ %4657, %loadstoreloop4951 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8921) br label %Flow7880, !amdgpu.uniform !42 if.end.i.i.i.i.i.i3428: ; preds = %Flow7880 %cmp.not.i6.i.i.i.i.i.i3430 = icmp ne ptr %4652, addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr) %4659 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.not.i6.i.i.i.i.i.i3430) %4660 = extractvalue { i1, i64 } %4659, 0 %4661 = extractvalue { i1, i64 } %4659, 1 br i1 %4660, label %if.then.i.i.i.i2.i.i.i3431, label %_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi.exit.i3433 if.then.i.i.i.i2.i.i.i3431: ; preds = %if.end.i.i.i.i.i.i3428 %arrayidx.i.i.i.i3.i.i.i3432 = getelementptr inbounds nuw i8, ptr %4652, i64 %writer.sroa.10.4.i.i.i.i3399 store i8 0, ptr %arrayidx.i.i.i.i3.i.i.i3432, align 1, !tbaa !57, !noalias !180 br label %_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi.exit.i3433, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi.exit.i3433: ; preds = %if.then.i.i.i.i2.i.i.i3431, %if.end.i.i.i.i.i.i3428 call void @llvm.amdgcn.end.cf.i64(i64 %4661) %4662 = trunc i64 %writer.sroa.10.4.i.i.i.i3399 to i32 %4663 = and i64 %writer.sroa.10.4.i.i.i.i3399, 15 %4664 = sub i64 %writer.sroa.10.4.i.i.i.i3399, %4663 %4665 = icmp ne i64 %4664, 0 %4666 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %4665) %4667 = extractvalue { i1, i64 } %4666, 0 %4668 = extractvalue { i1, i64 } %4666, 1 br i1 %4667, label %loop-memcpy-expansion5115.preheader, label %Flow7877 loop-memcpy-expansion5115.preheader: ; preds = %_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi.exit.i3433 %4669 = sub i32 11, %4662 %scevgep6477 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i2988, i32 %4669 br label %loop-memcpy-expansion5115, !amdgpu.uniform !42 Flow7877: ; preds = %Flow7876, %_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi.exit.i3433 call void @llvm.amdgcn.end.cf.i64(i64 %4668) br label %loop-memcpy-residual-header5118, !amdgpu.uniform !42 loop-memcpy-expansion5115: ; preds = %loop-memcpy-expansion5115.preheader, %loop-memcpy-expansion5115 %phi.broken8782 = phi i64 [ 0, %loop-memcpy-expansion5115.preheader ], [ %4674, %loop-memcpy-expansion5115 ] %lsr.iv6478 = phi ptr addrspace(5) [ %scevgep6479, %loop-memcpy-expansion5115 ], [ %scevgep6477, %loop-memcpy-expansion5115.preheader ] %loop-index5116 = phi i64 [ %4672, %loop-memcpy-expansion5115 ], [ 0, %loop-memcpy-expansion5115.preheader ] %4670 = load <4 x i32>, ptr addrspace(5) %lsr.iv6478, align 1 %4671 = getelementptr i8, ptr %4652, i64 %loop-index5116 store <4 x i32> %4670, ptr %4671, align 1 %4672 = add i64 %loop-index5116, 16 %scevgep6479 = getelementptr i8, ptr addrspace(5) %lsr.iv6478, i32 16 %4673 = icmp uge i64 %4672, %4664 %4674 = call i64 @llvm.amdgcn.if.break.i64(i1 %4673, i64 %phi.broken8782) %4675 = call i1 @llvm.amdgcn.loop.i64(i64 %4674) br i1 %4675, label %Flow7876, label %loop-memcpy-expansion5115 Flow7875: ; preds = %Flow7874, %loop-memcpy-residual-header5118 call void @llvm.amdgcn.end.cf.i64(i64 %6383) br label %post-loop-memcpy-expansion5114, !amdgpu.uniform !42 loop-memcpy-residual5117: ; preds = %loop-memcpy-residual5117.preheader, %loop-memcpy-residual5117 %phi.broken8783 = phi i64 [ 0, %loop-memcpy-residual5117.preheader ], [ %4679, %loop-memcpy-residual5117 ] %lsr.iv6473 = phi ptr addrspace(5) [ %scevgep6474, %loop-memcpy-residual5117 ], [ %scevgep6472, %loop-memcpy-residual5117.preheader ] %residual-loop-index5119 = phi i64 [ %4677, %loop-memcpy-residual5117 ], [ 0, %loop-memcpy-residual5117.preheader ] %4676 = load i8, ptr addrspace(5) %lsr.iv6473, align 1 %scevgep6476 = getelementptr i8, ptr %scevgep6475, i64 %residual-loop-index5119 store i8 %4676, ptr %scevgep6476, align 1 %4677 = add i64 %residual-loop-index5119, 1 %scevgep6474 = getelementptr i8, ptr addrspace(5) %lsr.iv6473, i32 1 %4678 = icmp uge i64 %4677, %4663 %4679 = call i64 @llvm.amdgcn.if.break.i64(i1 %4678, i64 %phi.broken8783) %4680 = call i1 @llvm.amdgcn.loop.i64(i64 %4679) br i1 %4680, label %Flow7874, label %loop-memcpy-residual5117 Flow7874: ; preds = %loop-memcpy-residual5117 %.lcssa8919 = phi i64 [ %4679, %loop-memcpy-residual5117 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8919) br label %Flow7875, !amdgpu.uniform !42 post-loop-memcpy-expansion5114: ; preds = %Flow7875 call void @llvm.lifetime.end.p5(ptr addrspace(5) %buffer.i.i.i2988) #34, !noalias !180 br label %for.cond.i.i.i3437, !amdgpu.uniform !42 for.cond.i.i.i3437: ; preds = %post-loop-memcpy-expansion5114, %Flow7873 %4681 = phi i32 [ %4718, %Flow7873 ], [ poison, %post-loop-memcpy-expansion5114 ] %4682 = phi i64 [ %4719, %Flow7873 ], [ poison, %post-loop-memcpy-expansion5114 ] %4683 = phi i32 [ %4720, %Flow7873 ], [ poison, %post-loop-memcpy-expansion5114 ] %retval.sroa.6.0.i.i.i3438 = phi i32 [ %4723, %Flow7873 ], [ undef, %post-loop-memcpy-expansion5114 ] %retval.sroa.2.0.i.i.i3440 = phi i64 [ %4722, %Flow7873 ], [ undef, %post-loop-memcpy-expansion5114 ] %retval.sroa.8.0.i.i.i3441 = phi i32 [ %4721, %Flow7873 ], [ undef, %post-loop-memcpy-expansion5114 ] %index.0.i.i.i3442 = phi i32 [ %4725, %Flow7873 ], [ 0, %post-loop-memcpy-expansion5114 ] %4684 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i3443 = icmp ult i32 %index.0.i.i.i3442, %4684 %spec.store.select.i.i.i3444 = select i1 %cmp.not.i.i.i3443, i32 %index.0.i.i.i3442, i32 0 %4685 = call i64 @llvm.amdgcn.ballot.i64(i1 true) %4686 = and i32 %spec.store.select.i.i.i3444, 31 %4687 = lshr i64 %4685, %sh_prom.i.i.i.i3270 %4688 = trunc i64 %4687 to i32 %conv4.i.i.i.i.i3448 = and i32 %4688, 1 %shl.i.i.i.i.i3449 = shl nuw i32 %conv4.i.i.i.i.i3448, %4686 br label %ComputeLoop5866, !amdgpu.uniform !42 4689: ; preds = %ComputeEnd5867 %sunkaddr7474 = getelementptr inbounds i8, ptr addrspace(1) %8372, i64 40 %4690 = atomicrmw or ptr addrspace(1) %sunkaddr7474, i32 %.lcssa8913 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %4691, !amdgpu.uniform !42 4691: ; preds = %4689, %ComputeEnd5867 %4692 = phi i32 [ %4690, %4689 ], [ poison, %ComputeEnd5867 ] call void @llvm.amdgcn.end.cf.i64(i64 %8381) %4693 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %4692) %4694 = or i32 %4693, %.lcssa8914 %shl5.i.i.i.i.i3450 = shl nuw i32 1, %4686 %and.i.i.i.i.i3451 = and i32 %shl5.i.i.i.i.i3450, %4694 %tobool3.i.i.i.i3452 = icmp ne i32 %and.i.i.i.i.i3451, 0 %4695 = call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i3452) %and.i.i.i.i.i.i3453 = and i64 %4695, %4685 %cmp.i.not.i.i.i3454 = icmp ne i64 %4685, %and.i.i.i.i.i.i3453 br i1 %cmp.i.not.i.i.i3454, label %if.then.i.i.i.i3455, label %Flow7872, !amdgpu.uniform !42 if.then.i.i.i.i3455: ; preds = %4691 fence syncscope("agent") acquire %4696 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %4697 = extractelement <2 x i64> %4696, i32 0 %4698 = inttoptr i64 %4697 to ptr %4699 = extractelement <2 x i64> %4696, i32 1 %4700 = inttoptr i64 %4699 to ptr %idxprom.i.i.i.i3456 = zext i32 %spec.store.select.i.i.i3444 to i64 %arrayidx.i.i.i.i3457 = getelementptr inbounds nuw i32, ptr %4698, i64 %idxprom.i.i.i.i3456, !amdgpu.uniform !42 %4701 = load atomic i32, ptr %arrayidx.i.i.i.i3457 monotonic, align 4 %4702 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %4701) %arrayidx.i45.i.i.i3458 = getelementptr inbounds nuw i32, ptr %4700, i64 %idxprom.i.i.i.i3456, !amdgpu.uniform !42 %4703 = load atomic i32, ptr %arrayidx.i45.i.i.i3458 monotonic, align 4 %4704 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %4703) %cmp.i46.not.i.i.i3459 = icmp ne i32 %4702, %4704 br i1 %cmp.i46.not.i.i.i3459, label %if.then12.i.i.i3460, label %Flow7870, !amdgpu.uniform !42 if.then12.i.i.i3460: ; preds = %if.then.i.i.i.i3455 fence syncscope("agent") release %4705 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %4685, i1 true) %iszero.i.i.i.i.i.i.i3461 = icmp ne i64 %4685, 0 %cmp2.i.i.i.i.i.i3462 = icmp eq i64 %4705, %sh_prom.i.i.i.i3270 %cmp.i.i.i.i.i2.i3463 = select i1 %iszero.i.i.i.i.i.i.i3461, i1 %cmp2.i.i.i.i.i.i3462, i1 false %conv4.i.i51.i.i.i3464 = zext i1 %cmp.i.i.i.i.i2.i3463 to i32 %shl.i.i52.i.i.i3465 = shl nuw i32 %conv4.i.i51.i.i.i3464, %4686 %xor.i.i.i.i.i3466 = xor i32 %shl.i.i52.i.i.i3465, -1 %4706 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5871, !amdgpu.uniform !42 4707: ; preds = %ComputeEnd5872 %sunkaddr7475 = getelementptr inbounds i8, ptr addrspace(1) %8372, i64 40 %4708 = atomicrmw and ptr addrspace(1) %sunkaddr7475, i32 %.lcssa8915 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %4709, !amdgpu.uniform !42 4709: ; preds = %4707, %ComputeEnd5872 call void @llvm.amdgcn.end.cf.i64(i64 %8399) call void @llvm.amdgcn.wave.barrier() br label %Flow7870, !amdgpu.uniform !42 if.end14.i.i.i3527: ; preds = %Flow7870 %4710 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %4685, i1 true) %iszero.i.i.i.i.i.i3528 = icmp ne i64 %4685, 0 %cmp2.i.i.i.i.i3529 = icmp eq i64 %4710, %sh_prom.i.i.i.i3270 %cmp.i.i.i.i.i3530 = select i1 %iszero.i.i.i.i.i.i3528, i1 %cmp2.i.i.i.i.i3529, i1 false %4711 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i3530) %4712 = extractvalue { i1, i64 } %4711, 0 %4713 = extractvalue { i1, i64 } %4711, 1 br i1 %4712, label %if.then16.i.i.i3532, label %if.end22.i.i.i3531 if.then16.i.i.i3532: ; preds = %if.end14.i.i.i3527 %4714 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i3533 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %4714, i64 %idxprom.i.i.i.i3456, i32 1 store i32 1660944387, ptr %opcode.i.i.i3533, align 8, !tbaa !77 %arrayidx21.i.i.i3534 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %4714, i64 %idxprom.i.i.i.i3456 store i64 %4685, ptr %arrayidx21.i.i.i3534, align 8, !tbaa !80 br label %if.end22.i.i.i3531, !amdgpu.uniform !42 Flow7871: ; preds = %if.end22.i.i.i3531, %Flow7870 %4715 = phi i32 [ %4702, %if.end22.i.i.i3531 ], [ %retval.sroa.8.0.i.i.i3441, %Flow7870 ] %4716 = phi i64 [ %4685, %if.end22.i.i.i3531 ], [ %retval.sroa.2.0.i.i.i3440, %Flow7870 ] %4717 = phi i32 [ %spec.store.select.i.i.i3444, %if.end22.i.i.i3531 ], [ %retval.sroa.6.0.i.i.i3438, %Flow7870 ] br label %cleanup26.i.i.i3467, !amdgpu.uniform !42 if.end22.i.i.i3531: ; preds = %if.then16.i.i.i3532, %if.end14.i.i.i3527 call void @llvm.amdgcn.end.cf.i64(i64 %4713) call void @llvm.amdgcn.wave.barrier() br label %Flow7871, !amdgpu.uniform !42 Flow7872: ; preds = %cleanup26.i.i.i3467, %4691 %4718 = phi i32 [ %4717, %cleanup26.i.i.i3467 ], [ %4681, %4691 ] %4719 = phi i64 [ %4716, %cleanup26.i.i.i3467 ], [ %4682, %4691 ] %4720 = phi i32 [ %4715, %cleanup26.i.i.i3467 ], [ %4683, %4691 ] %4721 = phi i32 [ %4715, %cleanup26.i.i.i3467 ], [ %retval.sroa.8.0.i.i.i3441, %4691 ] %4722 = phi i64 [ %4716, %cleanup26.i.i.i3467 ], [ %retval.sroa.2.0.i.i.i3440, %4691 ] %4723 = phi i32 [ %4717, %cleanup26.i.i.i3467 ], [ %retval.sroa.6.0.i.i.i3438, %4691 ] %4724 = phi i1 [ %cmp.i46.not.i.i.i3459, %cleanup26.i.i.i3467 ], [ true, %4691 ] br i1 %4724, label %for.inc.i.i.i3472, label %Flow7873, !amdgpu.uniform !42 cleanup26.i.i.i3467: ; preds = %Flow7871 br label %Flow7872, !amdgpu.uniform !42 for.inc.i.i.i3472: ; preds = %Flow7872 %inc.i.i.i3477 = add i32 %spec.store.select.i.i.i3444, 1 br label %Flow7873, !amdgpu.uniform !42 Flow7873: ; preds = %for.inc.i.i.i3472, %Flow7872 %4725 = phi i32 [ %inc.i.i.i3477, %for.inc.i.i.i3472 ], [ poison, %Flow7872 ] %4726 = phi i1 [ false, %for.inc.i.i.i3472 ], [ true, %Flow7872 ] br i1 %4726, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i3478, label %for.cond.i.i.i3437, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i3478: ; preds = %Flow7873 %.lcssa8918 = phi i32 [ %4718, %Flow7873 ] %.lcssa8917 = phi i64 [ %4719, %Flow7873 ] %.lcssa8916 = phi i32 [ %4720, %Flow7873 ] fence acquire %4727 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i3479 = shl i32 %.lcssa8918, 6 %idxprom.i19.i.i.i.i.i3480 = zext i32 %mul.i.i.i.i.i.i3479 to i64 %arrayidx.i20.i.i.i.i.i3481 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %4727, i64 %idxprom.i19.i.i.i.i.i3480 %arrayidx.i22.i.i.i.i.i3482 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i3481, i64 %sh_prom.i.i.i.i3270 store i64 %writer.sroa.10.4.i.i.i.i3399, ptr %arrayidx.i22.i.i.i.i.i3482, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i3483 = call i64 @llvm.umin.i64(i64 %writer.sroa.10.4.i.i.i.i3399, i64 56) %4728 = and i64 %spec.select.i.i.i.i.i.i.i3483, 15 %4729 = sub i64 %spec.select.i.i.i.i.i.i.i3483, %4728 %4730 = icmp ne i64 %4729, 0 %4731 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %4730) %4732 = extractvalue { i1, i64 } %4731, 0 %4733 = extractvalue { i1, i64 } %4731, 1 br i1 %4732, label %loop-memcpy-expansion5001.preheader, label %Flow7869 loop-memcpy-expansion5001.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i3478 %4734 = add nuw nsw i64 %4513, 8 %scevgep6469 = getelementptr i8, ptr %4727, i64 %4734 %4735 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i3480, 6 %scevgep6470 = getelementptr i8, ptr %scevgep6469, i64 %4735 br label %loop-memcpy-expansion5001, !amdgpu.uniform !42 Flow7869: ; preds = %Flow7868, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i3478 call void @llvm.amdgcn.end.cf.i64(i64 %4733) br label %loop-memcpy-residual-header5004, !amdgpu.uniform !42 loop-memcpy-expansion5001: ; preds = %loop-memcpy-expansion5001.preheader, %loop-memcpy-expansion5001 %phi.broken8784 = phi i64 [ 0, %loop-memcpy-expansion5001.preheader ], [ %4740, %loop-memcpy-expansion5001 ] %loop-index5002 = phi i64 [ %4738, %loop-memcpy-expansion5001 ], [ 0, %loop-memcpy-expansion5001.preheader ] %4736 = getelementptr i8, ptr %4652, i64 %loop-index5002 %4737 = load <4 x i32>, ptr %4736, align 1 %scevgep6471 = getelementptr i8, ptr %scevgep6470, i64 %loop-index5002 store <4 x i32> %4737, ptr %scevgep6471, align 1 %4738 = add i64 %loop-index5002, 16 %4739 = icmp uge i64 %4738, %4729 %4740 = call i64 @llvm.amdgcn.if.break.i64(i1 %4739, i64 %phi.broken8784) %4741 = call i1 @llvm.amdgcn.loop.i64(i64 %4740) br i1 %4741, label %Flow7868, label %loop-memcpy-expansion5001 Flow7867: ; preds = %Flow7865, %Flow7866 %4742 = phi i64 [ %6257, %Flow7865 ], [ %6249, %Flow7866 ] call void @llvm.amdgcn.end.cf.i64(i64 %6252) br label %post-loop-memcpy-expansion5000, !amdgpu.uniform !42 loop-memcpy-residual5003: ; preds = %loop-memcpy-residual5003.preheader, %loop-memcpy-residual5003 %phi.broken8785 = phi i64 [ 0, %loop-memcpy-residual5003.preheader ], [ %4746, %loop-memcpy-residual5003 ] %residual-loop-index5005 = phi i64 [ %4744, %loop-memcpy-residual5003 ], [ 0, %loop-memcpy-residual5003.preheader ] %scevgep6468 = getelementptr i8, ptr %scevgep6467, i64 %residual-loop-index5005 %4743 = load i8, ptr %scevgep6468, align 1 %scevgep6466 = getelementptr i8, ptr %scevgep6465, i64 %residual-loop-index5005 store i8 %4743, ptr %scevgep6466, align 1 %4744 = add i64 %residual-loop-index5005, 1 %4745 = icmp uge i64 %4744, %4728 %4746 = call i64 @llvm.amdgcn.if.break.i64(i1 %4745, i64 %phi.broken8785) %4747 = call i1 @llvm.amdgcn.loop.i64(i64 %4746) br i1 %4747, label %Flow7865, label %loop-memcpy-residual5003 Flow7865: ; preds = %loop-memcpy-residual5003 %.lcssa8911 = phi i64 [ %4746, %loop-memcpy-residual5003 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8911) br label %Flow7867, !amdgpu.uniform !42 post-loop-memcpy-expansion5000: ; preds = %Flow7867 %tobool.not.i.i.i.i.i.i3485 = icmp eq i32 %.lcssa8916, 0 %conv.i.i.i.i.i.i3486 = zext i1 %tobool.not.i.i.i.i.i.i3485 to i32 fence release %4748 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i3487 = zext i32 %.lcssa8918 to i64 %arrayidx.i24.i.i.i.i.i3488 = getelementptr inbounds nuw i32, ptr %4748, i64 %idxprom.i23.i.i.i.i.i3487 store atomic i32 %conv.i.i.i.i.i.i3486, ptr %arrayidx.i24.i.i.i.i.i3488 monotonic, align 4 %4749 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i3489 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %4749, i64 %idxprom.i23.i.i.i.i.i3487, !amdgpu.uniform !42 %4750 = load i64, ptr %arrayidx.i.i5.i.i3489, align 8, !tbaa !80 %scevgep6451 = getelementptr i8, ptr %4652, i64 56 %4751 = add i64 %writer.sroa.10.4.i.i.i.i3399, -56 br label %while.cond.i.i.i.i3490, !amdgpu.uniform !42 while.cond.i.i.i.i3490: ; preds = %post-loop-memcpy-expansion5000, %Flow7864 %phi.broken8788 = phi i64 [ 0, %post-loop-memcpy-expansion5000 ], [ %4768, %Flow7864 ] %lsr.iv6457 = phi i64 [ %4766, %Flow7864 ], [ %4751, %post-loop-memcpy-expansion5000 ] %lsr.iv6452 = phi ptr [ %4765, %Flow7864 ], [ %scevgep6451, %post-loop-memcpy-expansion5000 ] %port.sroa.37.0.i.i3491 = phi i32 [ %4764, %Flow7864 ], [ %conv.i.i.i.i.i.i3486, %post-loop-memcpy-expansion5000 ] %idx.0.i.i.i.i3492 = phi i64 [ %4763, %Flow7864 ], [ 56, %post-loop-memcpy-expansion5000 ] %cmp.i.i.i.i3493 = icmp ugt i64 %writer.sroa.10.4.i.i.i.i3399, %idx.0.i.i.i.i3492 %4752 = call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i3493) %and.i.i.i.i6.i.i3494 = and i64 %4752, %4750 %tobool.not.i.i.i.i3495 = icmp ne i64 %and.i.i.i.i6.i.i3494, 0 %4753 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i3496 = getelementptr inbounds nuw i32, ptr %4753, i64 %idxprom.i23.i.i.i.i.i3487, !amdgpu.uniform !42 %4754 = load atomic i32, ptr %arrayidx.i22.i.i.i3496 monotonic, align 4 %4755 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i3495) %4756 = extractvalue { i1, i64 } %4755, 0 %4757 = extractvalue { i1, i64 } %4755, 1 br i1 %4756, label %cond.false.i8.i.i.i.i3497, label %Flow7864 cond.false.i8.i.i.i.i3497: ; preds = %while.cond.i.i.i.i3490 %4758 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %4754) %4759 = icmp ne i32 %4758, %port.sroa.37.0.i.i3491 br i1 %4759, label %while.body.i.i21.i.i.i.i3498.preheader, label %Flow7863, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i3498.preheader: ; preds = %cond.false.i8.i.i.i.i3497 br label %while.body.i.i21.i.i.i.i3498, !amdgpu.uniform !42 Flow7863: ; preds = %Flow7862, %cond.false.i8.i.i.i.i3497 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i3501, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i3498: ; preds = %while.body.i.i21.i.i.i.i3498.preheader, %while.body.i.i21.i.i.i.i3498 call void @llvm.amdgcn.s.sleep(i32 2) %4760 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i3499 = getelementptr inbounds nuw i32, ptr %4760, i64 %idxprom.i23.i.i.i.i.i3487, !amdgpu.uniform !42 %4761 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i3499 monotonic, align 4 %4762 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %4761) %cmp.i.not.i.i23.i.i.i.i3500 = icmp eq i32 %4762, %port.sroa.37.0.i.i3491 br i1 %cmp.i.not.i.i23.i.i.i.i3500, label %Flow7862, label %while.body.i.i21.i.i.i.i3498, !amdgpu.uniform !42 Flow7862: ; preds = %while.body.i.i21.i.i.i.i3498 br label %Flow7863, !amdgpu.uniform !42 Flow7864: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3502, %while.cond.i.i.i.i3490 %4763 = phi i64 [ %add.i.i.i.i3505, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3502 ], [ poison, %while.cond.i.i.i.i3490 ] %4764 = phi i32 [ %conv.i.i26.i.i.i.i3503, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3502 ], [ poison, %while.cond.i.i.i.i3490 ] %4765 = phi ptr [ %scevgep6453, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3502 ], [ poison, %while.cond.i.i.i.i3490 ] %4766 = phi i64 [ %lsr.iv.next6458, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3502 ], [ poison, %while.cond.i.i.i.i3490 ] %4767 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3502 ], [ true, %while.cond.i.i.i.i3490 ] call void @llvm.amdgcn.end.cf.i64(i64 %4757) %4768 = call i64 @llvm.amdgcn.if.break.i64(i1 %4767, i64 %phi.broken8788) %4769 = call i1 @llvm.amdgcn.loop.i64(i64 %4768) br i1 %4769, label %cond.false.i.i.i3512, label %while.cond.i.i.i.i3490 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i3501: ; preds = %Flow7863 fence acquire %4770 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i3493) %4771 = extractvalue { i1, i64 } %4770, 0 %4772 = extractvalue { i1, i64 } %4770, 1 br i1 %4771, label %if.then.i.i.i.i.i.i3.i3506, label %Flow7861 if.then.i.i.i.i.i.i3.i3506: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i3501 %sub.i.i.i.i.i.i.i3508 = sub nuw i64 %writer.sroa.10.4.i.i.i.i3399, %idx.0.i.i.i.i3492 %spec.select.i.i.i36.i.i.i.i3509 = call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i3508, i64 64) %4773 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %4774 = and i64 %spec.select.i.i.i36.i.i.i.i3509, 15 %4775 = sub i64 %spec.select.i.i.i36.i.i.i.i3509, %4774 %4776 = icmp ne i64 %4775, 0 %4777 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %4776) %4778 = extractvalue { i1, i64 } %4777, 0 %4779 = extractvalue { i1, i64 } %4777, 1 br i1 %4778, label %loop-memcpy-expansion4995.preheader, label %Flow7860 loop-memcpy-expansion4995.preheader: ; preds = %if.then.i.i.i.i.i.i3.i3506 %arrayidx.i20.i35.i.i.i.i3510 = getelementptr %"struct.rpc::Buffer", ptr %4773, i64 %idxprom.i19.i.i.i.i.i3480 %arrayidx.i22.i38.i.i.i.i3511 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i3510, i64 %sh_prom.i.i.i.i3270 br label %loop-memcpy-expansion4995, !amdgpu.uniform !42 Flow7860: ; preds = %Flow7859, %if.then.i.i.i.i.i.i3.i3506 call void @llvm.amdgcn.end.cf.i64(i64 %4779) br label %loop-memcpy-residual-header4998, !amdgpu.uniform !42 loop-memcpy-expansion4995: ; preds = %loop-memcpy-expansion4995.preheader, %loop-memcpy-expansion4995 %phi.broken8786 = phi i64 [ 0, %loop-memcpy-expansion4995.preheader ], [ %4784, %loop-memcpy-expansion4995 ] %loop-index4996 = phi i64 [ %4782, %loop-memcpy-expansion4995 ], [ 0, %loop-memcpy-expansion4995.preheader ] %scevgep6454 = getelementptr i8, ptr %lsr.iv6452, i64 %loop-index4996 %4780 = load <4 x i32>, ptr %scevgep6454, align 1 %4781 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i3511, i64 %loop-index4996 store <4 x i32> %4780, ptr %4781, align 1 %4782 = add i64 %loop-index4996, 16 %4783 = icmp uge i64 %4782, %4775 %4784 = call i64 @llvm.amdgcn.if.break.i64(i1 %4783, i64 %phi.broken8786) %4785 = call i1 @llvm.amdgcn.loop.i64(i64 %4784) br i1 %4785, label %Flow7859, label %loop-memcpy-expansion4995 Flow7858: ; preds = %Flow7857, %loop-memcpy-residual-header4998 call void @llvm.amdgcn.end.cf.i64(i64 %6242) br label %Flow7861, !amdgpu.uniform !42 loop-memcpy-residual4997: ; preds = %loop-memcpy-residual4997.preheader, %loop-memcpy-residual4997 %phi.broken8787 = phi i64 [ 0, %loop-memcpy-residual4997.preheader ], [ %4789, %loop-memcpy-residual4997 ] %residual-loop-index4999 = phi i64 [ %4787, %loop-memcpy-residual4997 ], [ 0, %loop-memcpy-residual4997.preheader ] %scevgep6463 = getelementptr i8, ptr %scevgep6462, i64 %residual-loop-index4999 %4786 = load i8, ptr %scevgep6463, align 1 %scevgep6461 = getelementptr i8, ptr %scevgep6460, i64 %residual-loop-index4999 store i8 %4786, ptr %scevgep6461, align 1 %4787 = add i64 %residual-loop-index4999, 1 %4788 = icmp uge i64 %4787, %4774 %4789 = call i64 @llvm.amdgcn.if.break.i64(i1 %4788, i64 %phi.broken8787) %4790 = call i1 @llvm.amdgcn.loop.i64(i64 %4789) br i1 %4790, label %Flow7857, label %loop-memcpy-residual4997 Flow7857: ; preds = %loop-memcpy-residual4997 %.lcssa8908 = phi i64 [ %4789, %loop-memcpy-residual4997 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8908) br label %Flow7858, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3502: ; preds = %Flow7861 %conv.i.i26.i.i.i.i3503 = xor i32 %port.sroa.37.0.i.i3491, 1 fence release %4791 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i3504 = getelementptr inbounds nuw i32, ptr %4791, i64 %idxprom.i23.i.i.i.i.i3487 store atomic i32 %conv.i.i26.i.i.i.i3503, ptr %arrayidx.i24.i29.i.i.i.i3504 monotonic, align 4 %add.i.i.i.i3505 = add i64 %idx.0.i.i.i.i3492, 64 %scevgep6453 = getelementptr i8, ptr %lsr.iv6452, i64 64 %lsr.iv.next6458 = add i64 %lsr.iv6457, -64 br label %Flow7864, !amdgpu.uniform !42 cond.false.i.i.i3512: ; preds = %Flow7864 %.lcssa8910 = phi i64 [ %4768, %Flow7864 ] %port.sroa.37.0.i.i3491.lcssa = phi i32 [ %port.sroa.37.0.i.i3491, %Flow7864 ] %.lcssa8909 = phi i32 [ %4754, %Flow7864 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8910) %4792 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa8909) %4793 = icmp ne i32 %4792, %port.sroa.37.0.i.i3491.lcssa %4794 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %4793) %4795 = extractvalue { i1, i64 } %4794, 0 %4796 = extractvalue { i1, i64 } %4794, 1 br i1 %4795, label %while.body.i.i.i.i3513.preheader, label %Flow7856 while.body.i.i.i.i3513.preheader: ; preds = %cond.false.i.i.i3512 br label %while.body.i.i.i.i3513, !amdgpu.uniform !42 Flow7856: ; preds = %Flow7855, %cond.false.i.i.i3512 call void @llvm.amdgcn.end.cf.i64(i64 %4796) br label %_ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i3516, !amdgpu.uniform !42 while.body.i.i.i.i3513: ; preds = %while.body.i.i.i.i3513.preheader, %while.body.i.i.i.i3513 %phi.broken8789 = phi i64 [ 0, %while.body.i.i.i.i3513.preheader ], [ %4800, %while.body.i.i.i.i3513 ] call void @llvm.amdgcn.s.sleep(i32 2) %4797 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i3514 = getelementptr inbounds nuw i32, ptr %4797, i64 %idxprom.i23.i.i.i.i.i3487, !amdgpu.uniform !42 %4798 = load atomic i32, ptr %arrayidx.i.i.i8.i.i3514 monotonic, align 4 %4799 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %4798) %cmp.i.not.i.i.i.i3515 = icmp eq i32 %4799, %port.sroa.37.0.i.i3491.lcssa %4800 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i3515, i64 %phi.broken8789) %4801 = call i1 @llvm.amdgcn.loop.i64(i64 %4800) br i1 %4801, label %Flow7855, label %while.body.i.i.i.i3513 Flow7855: ; preds = %while.body.i.i.i.i3513 %.lcssa8906 = phi i64 [ %4800, %while.body.i.i.i.i3513 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8906) br label %Flow7856, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i3516: ; preds = %Flow7856 fence acquire call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %4802 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa8917, i1 true) %iszero.i.i.i.i.i13.i.i3517 = icmp ne i64 %.lcssa8917, 0 %cmp2.i.i.i.i14.i.i3518 = icmp eq i64 %4802, %sh_prom.i.i.i.i3270 %cmp.i.i.i.i15.i.i3519 = select i1 %iszero.i.i.i.i.i13.i.i3517, i1 %cmp2.i.i.i.i14.i.i3518, i1 false %4803 = and i32 %.lcssa8918, 31 %conv4.i.i.i19.i.i3523 = zext i1 %cmp.i.i.i.i15.i.i3519 to i32 %shl.i.i.i20.i.i3524 = shl nuw i32 %conv4.i.i.i19.i.i3523, %4803 %xor.i.i.i21.i.i3525 = xor i32 %shl.i.i.i20.i.i3524, -1 %4804 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5875, !amdgpu.uniform !42 4805: ; preds = %ComputeEnd5876 %div8.i.i.i16.i.i3520 = lshr i32 %.lcssa8918, 5 %idxprom.i.i.i17.i.i3521 = zext nneg i32 %div8.i.i.i16.i.i3520 to i64 %4806 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i3521 %sunkaddr7476 = getelementptr inbounds i8, ptr addrspace(1) %4806, i64 40 %4807 = atomicrmw and ptr addrspace(1) %sunkaddr7476, i32 %.lcssa8905 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %4808, !amdgpu.uniform !42 4808: ; preds = %4805, %ComputeEnd5876 call void @llvm.amdgcn.end.cf.i64(i64 %8416) call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i1.i3556, !amdgpu.uniform !42 for.cond.i.i1.i3556: ; preds = %4808, %Flow7854 %4809 = phi i32 [ %4846, %Flow7854 ], [ poison, %4808 ] %4810 = phi i64 [ %4847, %Flow7854 ], [ poison, %4808 ] %4811 = phi i32 [ %4848, %Flow7854 ], [ poison, %4808 ] %retval.sroa.6.0.i.i.i3557 = phi i32 [ %4851, %Flow7854 ], [ undef, %4808 ] %retval.sroa.2.0.i.i.i3559 = phi i64 [ %4850, %Flow7854 ], [ undef, %4808 ] %retval.sroa.8.0.i.i.i3560 = phi i32 [ %4849, %Flow7854 ], [ undef, %4808 ] %index.0.i.i.i3561 = phi i32 [ %4853, %Flow7854 ], [ 0, %4808 ] %4812 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i3562 = icmp ult i32 %index.0.i.i.i3561, %4812 %spec.store.select.i.i.i3563 = select i1 %cmp.not.i.i.i3562, i32 %index.0.i.i.i3561, i32 0 %4813 = call i64 @llvm.amdgcn.ballot.i64(i1 true) %4814 = and i32 %spec.store.select.i.i.i3563, 31 %4815 = lshr i64 %4813, %sh_prom.i.i.i.i3270 %4816 = trunc i64 %4815 to i32 %conv4.i.i.i.i.i3567 = and i32 %4816, 1 %shl.i.i.i.i.i3568 = shl nuw i32 %conv4.i.i.i.i.i3567, %4814 br label %ComputeLoop5879, !amdgpu.uniform !42 4817: ; preds = %ComputeEnd5880 %sunkaddr7477 = getelementptr inbounds i8, ptr addrspace(1) %8426, i64 40 %4818 = atomicrmw or ptr addrspace(1) %sunkaddr7477, i32 %.lcssa8899 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %4819, !amdgpu.uniform !42 4819: ; preds = %4817, %ComputeEnd5880 %4820 = phi i32 [ %4818, %4817 ], [ poison, %ComputeEnd5880 ] call void @llvm.amdgcn.end.cf.i64(i64 %8435) %4821 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %4820) %4822 = or i32 %4821, %.lcssa8900 %shl5.i.i.i.i.i3569 = shl nuw i32 1, %4814 %and.i.i.i.i.i3570 = and i32 %shl5.i.i.i.i.i3569, %4822 %tobool3.i.i.i.i3571 = icmp ne i32 %and.i.i.i.i.i3570, 0 %4823 = call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i3571) %and.i.i.i.i.i.i3572 = and i64 %4823, %4813 %cmp.i.not.i.i.i3573 = icmp ne i64 %4813, %and.i.i.i.i.i.i3572 br i1 %cmp.i.not.i.i.i3573, label %if.then.i.i.i.i3574, label %Flow7853, !amdgpu.uniform !42 if.then.i.i.i.i3574: ; preds = %4819 fence syncscope("agent") acquire %4824 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %4825 = extractelement <2 x i64> %4824, i32 0 %4826 = inttoptr i64 %4825 to ptr %4827 = extractelement <2 x i64> %4824, i32 1 %4828 = inttoptr i64 %4827 to ptr %idxprom.i.i.i.i3575 = zext i32 %spec.store.select.i.i.i3563 to i64 %arrayidx.i.i.i.i3576 = getelementptr inbounds nuw i32, ptr %4826, i64 %idxprom.i.i.i.i3575, !amdgpu.uniform !42 %4829 = load atomic i32, ptr %arrayidx.i.i.i.i3576 monotonic, align 4 %4830 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %4829) %arrayidx.i45.i.i.i3577 = getelementptr inbounds nuw i32, ptr %4828, i64 %idxprom.i.i.i.i3575, !amdgpu.uniform !42 %4831 = load atomic i32, ptr %arrayidx.i45.i.i.i3577 monotonic, align 4 %4832 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %4831) %cmp.i46.not.i.i.i3578 = icmp ne i32 %4830, %4832 br i1 %cmp.i46.not.i.i.i3578, label %if.then12.i.i.i3579, label %Flow7851, !amdgpu.uniform !42 if.then12.i.i.i3579: ; preds = %if.then.i.i.i.i3574 fence syncscope("agent") release %4833 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %4813, i1 true) %iszero.i.i.i.i.i.i.i3580 = icmp ne i64 %4813, 0 %cmp2.i.i.i.i.i.i3581 = icmp eq i64 %4833, %sh_prom.i.i.i.i3270 %cmp.i.i.i.i.i.i3582 = select i1 %iszero.i.i.i.i.i.i.i3580, i1 %cmp2.i.i.i.i.i.i3581, i1 false %conv4.i.i51.i.i.i3583 = zext i1 %cmp.i.i.i.i.i.i3582 to i32 %shl.i.i52.i.i.i3584 = shl nuw i32 %conv4.i.i51.i.i.i3583, %4814 %xor.i.i.i.i.i3585 = xor i32 %shl.i.i52.i.i.i3584, -1 %4834 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5884, !amdgpu.uniform !42 4835: ; preds = %ComputeEnd5885 %sunkaddr7478 = getelementptr inbounds i8, ptr addrspace(1) %8426, i64 40 %4836 = atomicrmw and ptr addrspace(1) %sunkaddr7478, i32 %.lcssa8901 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %4837, !amdgpu.uniform !42 4837: ; preds = %4835, %ComputeEnd5885 call void @llvm.amdgcn.end.cf.i64(i64 %8453) call void @llvm.amdgcn.wave.barrier() br label %Flow7851, !amdgpu.uniform !42 if.end14.i.i.i3645: ; preds = %Flow7851 %4838 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %4813, i1 true) %iszero.i.i.i.i.i.i3646 = icmp ne i64 %4813, 0 %cmp2.i.i.i.i.i3647 = icmp eq i64 %4838, %sh_prom.i.i.i.i3270 %cmp.i.i.i.i.i3648 = select i1 %iszero.i.i.i.i.i.i3646, i1 %cmp2.i.i.i.i.i3647, i1 false %4839 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i3648) %4840 = extractvalue { i1, i64 } %4839, 0 %4841 = extractvalue { i1, i64 } %4839, 1 br i1 %4840, label %if.then16.i.i.i3650, label %if.end22.i.i.i3649 if.then16.i.i.i3650: ; preds = %if.end14.i.i.i3645 %4842 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i3651 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %4842, i64 %idxprom.i.i.i.i3575, i32 1 store i32 1660944387, ptr %opcode.i.i.i3651, align 8, !tbaa !77 %arrayidx21.i.i.i3652 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %4842, i64 %idxprom.i.i.i.i3575 store i64 %4813, ptr %arrayidx21.i.i.i3652, align 8, !tbaa !80 br label %if.end22.i.i.i3649, !amdgpu.uniform !42 Flow7852: ; preds = %if.end22.i.i.i3649, %Flow7851 %4843 = phi i32 [ %4830, %if.end22.i.i.i3649 ], [ %retval.sroa.8.0.i.i.i3560, %Flow7851 ] %4844 = phi i64 [ %4813, %if.end22.i.i.i3649 ], [ %retval.sroa.2.0.i.i.i3559, %Flow7851 ] %4845 = phi i32 [ %spec.store.select.i.i.i3563, %if.end22.i.i.i3649 ], [ %retval.sroa.6.0.i.i.i3557, %Flow7851 ] br label %cleanup26.i.i.i3586, !amdgpu.uniform !42 if.end22.i.i.i3649: ; preds = %if.then16.i.i.i3650, %if.end14.i.i.i3645 call void @llvm.amdgcn.end.cf.i64(i64 %4841) call void @llvm.amdgcn.wave.barrier() br label %Flow7852, !amdgpu.uniform !42 Flow7853: ; preds = %cleanup26.i.i.i3586, %4819 %4846 = phi i32 [ %4845, %cleanup26.i.i.i3586 ], [ %4809, %4819 ] %4847 = phi i64 [ %4844, %cleanup26.i.i.i3586 ], [ %4810, %4819 ] %4848 = phi i32 [ %4843, %cleanup26.i.i.i3586 ], [ %4811, %4819 ] %4849 = phi i32 [ %4843, %cleanup26.i.i.i3586 ], [ %retval.sroa.8.0.i.i.i3560, %4819 ] %4850 = phi i64 [ %4844, %cleanup26.i.i.i3586 ], [ %retval.sroa.2.0.i.i.i3559, %4819 ] %4851 = phi i32 [ %4845, %cleanup26.i.i.i3586 ], [ %retval.sroa.6.0.i.i.i3557, %4819 ] %4852 = phi i1 [ %cmp.i46.not.i.i.i3578, %cleanup26.i.i.i3586 ], [ true, %4819 ] br i1 %4852, label %for.inc.i.i.i3591, label %Flow7854, !amdgpu.uniform !42 cleanup26.i.i.i3586: ; preds = %Flow7852 br label %Flow7853, !amdgpu.uniform !42 for.inc.i.i.i3591: ; preds = %Flow7853 %inc.i.i.i3596 = add i32 %spec.store.select.i.i.i3563, 1 br label %Flow7854, !amdgpu.uniform !42 Flow7854: ; preds = %for.inc.i.i.i3591, %Flow7853 %4853 = phi i32 [ %inc.i.i.i3596, %for.inc.i.i.i3591 ], [ poison, %Flow7853 ] %4854 = phi i1 [ false, %for.inc.i.i.i3591 ], [ true, %Flow7853 ] br i1 %4854, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i3597, label %for.cond.i.i1.i3556, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i3597: ; preds = %Flow7854 %.lcssa8904 = phi i32 [ %4846, %Flow7854 ] %.lcssa8903 = phi i64 [ %4847, %Flow7854 ] %.lcssa8902 = phi i32 [ %4848, %Flow7854 ] fence acquire %4855 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i3598 = shl i32 %.lcssa8904, 6 %idxprom.i19.i.i.i.i.i3599 = zext i32 %mul.i.i.i.i.i.i3598 to i64 %arrayidx.i20.i.i.i.i.i3600 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %4855, i64 %idxprom.i19.i.i.i.i.i3599 %arrayidx.i22.i.i.i.i.i3601 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i3600, i64 %sh_prom.i.i.i.i3270 store i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.26.42 to ptr), i64 8) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.26.42 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i3601, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i3602 = call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.26.42 to ptr), i64 8) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.26.42 to ptr) to i64)), i64 56) %4856 = and i64 %spec.select.i.i.i.i.i.i.i3602, 15 %4857 = sub i64 %spec.select.i.i.i.i.i.i.i3602, %4856 %4858 = icmp ne i64 %4857, 0 br i1 %4858, label %loop-memcpy-expansion5409.preheader, label %Flow7850, !amdgpu.uniform !42 loop-memcpy-expansion5409.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i3597 %4859 = add nuw nsw i64 %4513, 8 %scevgep6448 = getelementptr i8, ptr %4855, i64 %4859 %4860 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i3599, 6 %scevgep6449 = getelementptr i8, ptr %scevgep6448, i64 %4860 br label %loop-memcpy-expansion5409, !amdgpu.uniform !42 Flow7850: ; preds = %Flow7849, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i3597 br label %loop-memcpy-residual-header5412, !amdgpu.uniform !42 loop-memcpy-expansion5409: ; preds = %loop-memcpy-expansion5409.preheader, %loop-memcpy-expansion5409 %loop-index5410 = phi i64 [ %4863, %loop-memcpy-expansion5409 ], [ 0, %loop-memcpy-expansion5409.preheader ] %4861 = getelementptr i8, ptr addrspace(4) @.str.26.42, i64 %loop-index5410, !amdgpu.uniform !42 %4862 = load <4 x i32>, ptr addrspace(4) %4861, align 1 %scevgep6450 = getelementptr i8, ptr %scevgep6449, i64 %loop-index5410 store <4 x i32> %4862, ptr %scevgep6450, align 1 %4863 = add i64 %loop-index5410, 16 %4864 = icmp uge i64 %4863, %4857 br i1 %4864, label %Flow7849, label %loop-memcpy-expansion5409, !amdgpu.uniform !42 Flow7848: ; preds = %Flow7846, %Flow7847 %4865 = phi i64 [ %6653, %Flow7846 ], [ %6650, %Flow7847 ] br label %post-loop-memcpy-expansion5408, !amdgpu.uniform !42 loop-memcpy-residual5411: ; preds = %loop-memcpy-residual5411.preheader, %loop-memcpy-residual5411 %residual-loop-index5413 = phi i64 [ %4867, %loop-memcpy-residual5411 ], [ 0, %loop-memcpy-residual5411.preheader ] %scevgep6447 = getelementptr i8, ptr addrspace(4) @.str.26.42, i64 %residual-loop-index5413, !amdgpu.uniform !42 %4866 = load i8, ptr addrspace(4) %scevgep6447, align 1 %scevgep6446 = getelementptr i8, ptr %scevgep6445, i64 %residual-loop-index5413 store i8 %4866, ptr %scevgep6446, align 1 %4867 = add i64 %residual-loop-index5413, 1 %4868 = icmp uge i64 %4867, %4856 br i1 %4868, label %Flow7846, label %loop-memcpy-residual5411, !amdgpu.uniform !42 Flow7846: ; preds = %loop-memcpy-residual5411 br label %Flow7848, !amdgpu.uniform !42 post-loop-memcpy-expansion5408: ; preds = %Flow7848 %tobool.not.i.i.i.i.i.i3604 = icmp eq i32 %.lcssa8902, 0 %conv.i.i.i.i.i.i3605 = zext i1 %tobool.not.i.i.i.i.i.i3604 to i32 fence release %4869 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i3606 = zext i32 %.lcssa8904 to i64 %arrayidx.i24.i.i.i.i.i3607 = getelementptr inbounds nuw i32, ptr %4869, i64 %idxprom.i23.i.i.i.i.i3606 store atomic i32 %conv.i.i.i.i.i.i3605, ptr %arrayidx.i24.i.i.i.i.i3607 monotonic, align 4 %4870 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i3608 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %4870, i64 %idxprom.i23.i.i.i.i.i3606, !amdgpu.uniform !42 %4871 = load i64, ptr %arrayidx.i.i5.i.i3608, align 8, !tbaa !80 br label %while.cond.i.i.i.i3609, !amdgpu.uniform !42 while.cond.i.i.i.i3609: ; preds = %post-loop-memcpy-expansion5408, %Flow7845 %phi.broken8790 = phi i64 [ 0, %post-loop-memcpy-expansion5408 ], [ %4888, %Flow7845 ] %lsr.iv6437 = phi i64 [ %4886, %Flow7845 ], [ -48, %post-loop-memcpy-expansion5408 ] %lsr.iv6432 = phi ptr addrspace(4) [ %4885, %Flow7845 ], [ getelementptr (i8, ptr addrspace(4) @.str.26.42, i64 56), %post-loop-memcpy-expansion5408 ] %port.sroa.37.0.i.i3610 = phi i32 [ %4884, %Flow7845 ], [ %conv.i.i.i.i.i.i3605, %post-loop-memcpy-expansion5408 ] %idx.0.i.i.i.i3611 = phi i64 [ %4883, %Flow7845 ], [ 56, %post-loop-memcpy-expansion5408 ] %cmp.i.i.i.i3612 = icmp ult i64 %idx.0.i.i.i.i3611, sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.26.42 to ptr), i64 8) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.26.42 to ptr) to i64)) %4872 = call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i3612) %and.i.i.i.i6.i.i3613 = and i64 %4872, %4871 %tobool.not.i.i.i.i3614 = icmp ne i64 %and.i.i.i.i6.i.i3613, 0 %4873 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i3615 = getelementptr inbounds nuw i32, ptr %4873, i64 %idxprom.i23.i.i.i.i.i3606, !amdgpu.uniform !42 %4874 = load atomic i32, ptr %arrayidx.i22.i.i.i3615 monotonic, align 4 %4875 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i3614) %4876 = extractvalue { i1, i64 } %4875, 0 %4877 = extractvalue { i1, i64 } %4875, 1 br i1 %4876, label %cond.false.i8.i.i.i.i3616, label %Flow7845 cond.false.i8.i.i.i.i3616: ; preds = %while.cond.i.i.i.i3609 %4878 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %4874) %4879 = icmp ne i32 %4878, %port.sroa.37.0.i.i3610 br i1 %4879, label %while.body.i.i21.i.i.i.i3617.preheader, label %Flow7844, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i3617.preheader: ; preds = %cond.false.i8.i.i.i.i3616 br label %while.body.i.i21.i.i.i.i3617, !amdgpu.uniform !42 Flow7844: ; preds = %Flow7843, %cond.false.i8.i.i.i.i3616 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i3620, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i3617: ; preds = %while.body.i.i21.i.i.i.i3617.preheader, %while.body.i.i21.i.i.i.i3617 call void @llvm.amdgcn.s.sleep(i32 2) %4880 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i3618 = getelementptr inbounds nuw i32, ptr %4880, i64 %idxprom.i23.i.i.i.i.i3606, !amdgpu.uniform !42 %4881 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i3618 monotonic, align 4 %4882 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %4881) %cmp.i.not.i.i23.i.i.i.i3619 = icmp eq i32 %4882, %port.sroa.37.0.i.i3610 br i1 %cmp.i.not.i.i23.i.i.i.i3619, label %Flow7843, label %while.body.i.i21.i.i.i.i3617, !amdgpu.uniform !42 Flow7843: ; preds = %while.body.i.i21.i.i.i.i3617 br label %Flow7844, !amdgpu.uniform !42 Flow7845: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3621, %while.cond.i.i.i.i3609 %4883 = phi i64 [ %add.i.i.i.i3624, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3621 ], [ poison, %while.cond.i.i.i.i3609 ] %4884 = phi i32 [ %conv.i.i26.i.i.i.i3622, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3621 ], [ poison, %while.cond.i.i.i.i3609 ] %4885 = phi ptr addrspace(4) [ %scevgep6433, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3621 ], [ poison, %while.cond.i.i.i.i3609 ] %4886 = phi i64 [ %lsr.iv.next6438, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3621 ], [ poison, %while.cond.i.i.i.i3609 ] %4887 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3621 ], [ true, %while.cond.i.i.i.i3609 ] call void @llvm.amdgcn.end.cf.i64(i64 %4877) %4888 = call i64 @llvm.amdgcn.if.break.i64(i1 %4887, i64 %phi.broken8790) %4889 = call i1 @llvm.amdgcn.loop.i64(i64 %4888) br i1 %4889, label %cond.false.i.i.i3631, label %while.cond.i.i.i.i3609 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i3620: ; preds = %Flow7844 fence acquire br i1 %cmp.i.i.i.i3612, label %if.then.i.i.i.i.i.i.i3625, label %Flow7842, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i3625: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i3620 %sub.i.i.i.i.i.i.i3627 = sub nuw i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.26.42 to ptr), i64 8) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.26.42 to ptr) to i64)), %idx.0.i.i.i.i3611 %spec.select.i.i.i36.i.i.i.i3628 = call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i3627, i64 64) %4890 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %4891 = and i64 %spec.select.i.i.i36.i.i.i.i3628, 15 %4892 = sub i64 %spec.select.i.i.i36.i.i.i.i3628, %4891 %4893 = icmp ne i64 %4892, 0 br i1 %4893, label %loop-memcpy-expansion5415.preheader, label %Flow7841, !amdgpu.uniform !42 loop-memcpy-expansion5415.preheader: ; preds = %if.then.i.i.i.i.i.i.i3625 %arrayidx.i20.i35.i.i.i.i3629 = getelementptr %"struct.rpc::Buffer", ptr %4890, i64 %idxprom.i19.i.i.i.i.i3599 %arrayidx.i22.i38.i.i.i.i3630 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i3629, i64 %sh_prom.i.i.i.i3270 br label %loop-memcpy-expansion5415, !amdgpu.uniform !42 Flow7841: ; preds = %Flow7840, %if.then.i.i.i.i.i.i.i3625 br label %loop-memcpy-residual-header5418, !amdgpu.uniform !42 loop-memcpy-expansion5415: ; preds = %loop-memcpy-expansion5415.preheader, %loop-memcpy-expansion5415 %loop-index5416 = phi i64 [ %4896, %loop-memcpy-expansion5415 ], [ 0, %loop-memcpy-expansion5415.preheader ] %scevgep6434 = getelementptr i8, ptr addrspace(4) %lsr.iv6432, i64 %loop-index5416, !amdgpu.uniform !42 %4894 = load <4 x i32>, ptr addrspace(4) %scevgep6434, align 1 %4895 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i3630, i64 %loop-index5416 store <4 x i32> %4894, ptr %4895, align 1 %4896 = add i64 %loop-index5416, 16 %4897 = icmp uge i64 %4896, %4892 br i1 %4897, label %Flow7840, label %loop-memcpy-expansion5415, !amdgpu.uniform !42 Flow7839: ; preds = %Flow7838, %loop-memcpy-residual-header5418 br label %Flow7842, !amdgpu.uniform !42 loop-memcpy-residual5417: ; preds = %loop-memcpy-residual5417.preheader, %loop-memcpy-residual5417 %residual-loop-index5419 = phi i64 [ %4899, %loop-memcpy-residual5417 ], [ 0, %loop-memcpy-residual5417.preheader ] %scevgep6443 = getelementptr i8, ptr addrspace(4) %scevgep6442, i64 %residual-loop-index5419, !amdgpu.uniform !42 %4898 = load i8, ptr addrspace(4) %scevgep6443, align 1 %scevgep6441 = getelementptr i8, ptr %scevgep6440, i64 %residual-loop-index5419 store i8 %4898, ptr %scevgep6441, align 1 %4899 = add i64 %residual-loop-index5419, 1 %4900 = icmp uge i64 %4899, %4891 br i1 %4900, label %Flow7838, label %loop-memcpy-residual5417, !amdgpu.uniform !42 Flow7838: ; preds = %loop-memcpy-residual5417 br label %Flow7839, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3621: ; preds = %Flow7842 %conv.i.i26.i.i.i.i3622 = xor i32 %port.sroa.37.0.i.i3610, 1 fence release %4901 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i3623 = getelementptr inbounds nuw i32, ptr %4901, i64 %idxprom.i23.i.i.i.i.i3606 store atomic i32 %conv.i.i26.i.i.i.i3622, ptr %arrayidx.i24.i29.i.i.i.i3623 monotonic, align 4 %add.i.i.i.i3624 = add i64 %idx.0.i.i.i.i3611, 64 %scevgep6433 = getelementptr i8, ptr addrspace(4) %lsr.iv6432, i64 64 %lsr.iv.next6438 = add i64 %lsr.iv6437, -64 br label %Flow7845, !amdgpu.uniform !42 cond.false.i.i.i3631: ; preds = %Flow7845 %.lcssa8898 = phi i64 [ %4888, %Flow7845 ] %port.sroa.37.0.i.i3610.lcssa = phi i32 [ %port.sroa.37.0.i.i3610, %Flow7845 ] %.lcssa8897 = phi i32 [ %4874, %Flow7845 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8898) %4902 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa8897) %4903 = icmp ne i32 %4902, %port.sroa.37.0.i.i3610.lcssa %4904 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %4903) %4905 = extractvalue { i1, i64 } %4904, 0 %4906 = extractvalue { i1, i64 } %4904, 1 br i1 %4905, label %while.body.i.i.i.i3632.preheader, label %Flow7837 while.body.i.i.i.i3632.preheader: ; preds = %cond.false.i.i.i3631 br label %while.body.i.i.i.i3632, !amdgpu.uniform !42 Flow7837: ; preds = %Flow7836, %cond.false.i.i.i3631 call void @llvm.amdgcn.end.cf.i64(i64 %4906) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit3653, !amdgpu.uniform !42 while.body.i.i.i.i3632: ; preds = %while.body.i.i.i.i3632.preheader, %while.body.i.i.i.i3632 %phi.broken8791 = phi i64 [ 0, %while.body.i.i.i.i3632.preheader ], [ %4910, %while.body.i.i.i.i3632 ] call void @llvm.amdgcn.s.sleep(i32 2) %4907 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i3633 = getelementptr inbounds nuw i32, ptr %4907, i64 %idxprom.i23.i.i.i.i.i3606, !amdgpu.uniform !42 %4908 = load atomic i32, ptr %arrayidx.i.i.i8.i.i3633 monotonic, align 4 %4909 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %4908) %cmp.i.not.i.i.i.i3634 = icmp eq i32 %4909, %port.sroa.37.0.i.i3610.lcssa %4910 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i3634, i64 %phi.broken8791) %4911 = call i1 @llvm.amdgcn.loop.i64(i64 %4910) br i1 %4911, label %Flow7836, label %while.body.i.i.i.i3632 Flow7836: ; preds = %while.body.i.i.i.i3632 %.lcssa8896 = phi i64 [ %4910, %while.body.i.i.i.i3632 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8896) br label %Flow7837, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit3653: ; preds = %Flow7837 fence acquire call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %4912 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa8903, i1 true) %iszero.i.i.i.i.i13.i.i3636 = icmp ne i64 %.lcssa8903, 0 %cmp2.i.i.i.i14.i.i3637 = icmp eq i64 %4912, %sh_prom.i.i.i.i3270 %cmp.i.i.i.i15.i.i3638 = select i1 %iszero.i.i.i.i.i13.i.i3636, i1 %cmp2.i.i.i.i14.i.i3637, i1 false %4913 = and i32 %.lcssa8904, 31 %conv4.i.i.i19.i.i3642 = zext i1 %cmp.i.i.i.i15.i.i3638 to i32 %shl.i.i.i20.i.i3643 = shl nuw i32 %conv4.i.i.i19.i.i3642, %4913 %xor.i.i.i21.i.i3644 = xor i32 %shl.i.i.i20.i.i3643, -1 %4914 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5888, !amdgpu.uniform !42 4915: ; preds = %ComputeEnd5889 %div8.i.i.i16.i.i3639 = lshr i32 %.lcssa8904, 5 %idxprom.i.i.i17.i.i3640 = zext nneg i32 %div8.i.i.i16.i.i3639 to i64 %4916 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i3640 %sunkaddr7479 = getelementptr inbounds i8, ptr addrspace(1) %4916, i64 40 %4917 = atomicrmw and ptr addrspace(1) %sunkaddr7479, i32 %.lcssa8895 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %4918, !amdgpu.uniform !42 4918: ; preds = %4915, %ComputeEnd5889 call void @llvm.amdgcn.end.cf.i64(i64 %8470) call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i1.i3662, !amdgpu.uniform !42 for.cond.i.i1.i3662: ; preds = %4918, %Flow7835 %4919 = phi i32 [ %4956, %Flow7835 ], [ poison, %4918 ] %4920 = phi i64 [ %4957, %Flow7835 ], [ poison, %4918 ] %4921 = phi i32 [ %4958, %Flow7835 ], [ poison, %4918 ] %retval.sroa.6.0.i.i.i3663 = phi i32 [ %4961, %Flow7835 ], [ undef, %4918 ] %retval.sroa.2.0.i.i.i3665 = phi i64 [ %4960, %Flow7835 ], [ undef, %4918 ] %retval.sroa.8.0.i.i.i3666 = phi i32 [ %4959, %Flow7835 ], [ undef, %4918 ] %index.0.i.i.i3667 = phi i32 [ %4963, %Flow7835 ], [ 0, %4918 ] %4922 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i3668 = icmp ult i32 %index.0.i.i.i3667, %4922 %spec.store.select.i.i.i3669 = select i1 %cmp.not.i.i.i3668, i32 %index.0.i.i.i3667, i32 0 %4923 = call i64 @llvm.amdgcn.ballot.i64(i1 true) %4924 = and i32 %spec.store.select.i.i.i3669, 31 %4925 = lshr i64 %4923, %sh_prom.i.i.i.i3270 %4926 = trunc i64 %4925 to i32 %conv4.i.i.i.i.i3673 = and i32 %4926, 1 %shl.i.i.i.i.i3674 = shl nuw i32 %conv4.i.i.i.i.i3673, %4924 br label %ComputeLoop5892, !amdgpu.uniform !42 4927: ; preds = %ComputeEnd5893 %sunkaddr7480 = getelementptr inbounds i8, ptr addrspace(1) %8480, i64 40 %4928 = atomicrmw or ptr addrspace(1) %sunkaddr7480, i32 %.lcssa8889 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %4929, !amdgpu.uniform !42 4929: ; preds = %4927, %ComputeEnd5893 %4930 = phi i32 [ %4928, %4927 ], [ poison, %ComputeEnd5893 ] call void @llvm.amdgcn.end.cf.i64(i64 %8489) %4931 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %4930) %4932 = or i32 %4931, %.lcssa8890 %shl5.i.i.i.i.i3675 = shl nuw i32 1, %4924 %and.i.i.i.i.i3676 = and i32 %shl5.i.i.i.i.i3675, %4932 %tobool3.i.i.i.i3677 = icmp ne i32 %and.i.i.i.i.i3676, 0 %4933 = call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i3677) %and.i.i.i.i.i.i3678 = and i64 %4933, %4923 %cmp.i.not.i.i.i3679 = icmp ne i64 %4923, %and.i.i.i.i.i.i3678 br i1 %cmp.i.not.i.i.i3679, label %if.then.i.i.i.i3680, label %Flow7834, !amdgpu.uniform !42 if.then.i.i.i.i3680: ; preds = %4929 fence syncscope("agent") acquire %4934 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %4935 = extractelement <2 x i64> %4934, i32 0 %4936 = inttoptr i64 %4935 to ptr %4937 = extractelement <2 x i64> %4934, i32 1 %4938 = inttoptr i64 %4937 to ptr %idxprom.i.i.i.i3681 = zext i32 %spec.store.select.i.i.i3669 to i64 %arrayidx.i.i.i.i3682 = getelementptr inbounds nuw i32, ptr %4936, i64 %idxprom.i.i.i.i3681, !amdgpu.uniform !42 %4939 = load atomic i32, ptr %arrayidx.i.i.i.i3682 monotonic, align 4 %4940 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %4939) %arrayidx.i45.i.i.i3683 = getelementptr inbounds nuw i32, ptr %4938, i64 %idxprom.i.i.i.i3681, !amdgpu.uniform !42 %4941 = load atomic i32, ptr %arrayidx.i45.i.i.i3683 monotonic, align 4 %4942 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %4941) %cmp.i46.not.i.i.i3684 = icmp ne i32 %4940, %4942 br i1 %cmp.i46.not.i.i.i3684, label %if.then12.i.i.i3685, label %Flow7832, !amdgpu.uniform !42 if.then12.i.i.i3685: ; preds = %if.then.i.i.i.i3680 fence syncscope("agent") release %4943 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %4923, i1 true) %iszero.i.i.i.i.i.i.i3686 = icmp ne i64 %4923, 0 %cmp2.i.i.i.i.i.i3687 = icmp eq i64 %4943, %sh_prom.i.i.i.i3270 %cmp.i.i.i.i.i.i3688 = select i1 %iszero.i.i.i.i.i.i.i3686, i1 %cmp2.i.i.i.i.i.i3687, i1 false %conv4.i.i51.i.i.i3689 = zext i1 %cmp.i.i.i.i.i.i3688 to i32 %shl.i.i52.i.i.i3690 = shl nuw i32 %conv4.i.i51.i.i.i3689, %4924 %xor.i.i.i.i.i3691 = xor i32 %shl.i.i52.i.i.i3690, -1 %4944 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5897, !amdgpu.uniform !42 4945: ; preds = %ComputeEnd5898 %sunkaddr7481 = getelementptr inbounds i8, ptr addrspace(1) %8480, i64 40 %4946 = atomicrmw and ptr addrspace(1) %sunkaddr7481, i32 %.lcssa8891 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %4947, !amdgpu.uniform !42 4947: ; preds = %4945, %ComputeEnd5898 call void @llvm.amdgcn.end.cf.i64(i64 %8507) call void @llvm.amdgcn.wave.barrier() br label %Flow7832, !amdgpu.uniform !42 if.end14.i.i.i3751: ; preds = %Flow7832 %4948 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %4923, i1 true) %iszero.i.i.i.i.i.i3752 = icmp ne i64 %4923, 0 %cmp2.i.i.i.i.i3753 = icmp eq i64 %4948, %sh_prom.i.i.i.i3270 %cmp.i.i.i.i.i3754 = select i1 %iszero.i.i.i.i.i.i3752, i1 %cmp2.i.i.i.i.i3753, i1 false %4949 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i3754) %4950 = extractvalue { i1, i64 } %4949, 0 %4951 = extractvalue { i1, i64 } %4949, 1 br i1 %4950, label %if.then16.i.i.i3756, label %if.end22.i.i.i3755 if.then16.i.i.i3756: ; preds = %if.end14.i.i.i3751 %4952 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i3757 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %4952, i64 %idxprom.i.i.i.i3681, i32 1 store i32 1660944387, ptr %opcode.i.i.i3757, align 8, !tbaa !77 %arrayidx21.i.i.i3758 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %4952, i64 %idxprom.i.i.i.i3681 store i64 %4923, ptr %arrayidx21.i.i.i3758, align 8, !tbaa !80 br label %if.end22.i.i.i3755, !amdgpu.uniform !42 Flow7833: ; preds = %if.end22.i.i.i3755, %Flow7832 %4953 = phi i32 [ %4940, %if.end22.i.i.i3755 ], [ %retval.sroa.8.0.i.i.i3666, %Flow7832 ] %4954 = phi i64 [ %4923, %if.end22.i.i.i3755 ], [ %retval.sroa.2.0.i.i.i3665, %Flow7832 ] %4955 = phi i32 [ %spec.store.select.i.i.i3669, %if.end22.i.i.i3755 ], [ %retval.sroa.6.0.i.i.i3663, %Flow7832 ] br label %cleanup26.i.i.i3692, !amdgpu.uniform !42 if.end22.i.i.i3755: ; preds = %if.then16.i.i.i3756, %if.end14.i.i.i3751 call void @llvm.amdgcn.end.cf.i64(i64 %4951) call void @llvm.amdgcn.wave.barrier() br label %Flow7833, !amdgpu.uniform !42 Flow7834: ; preds = %cleanup26.i.i.i3692, %4929 %4956 = phi i32 [ %4955, %cleanup26.i.i.i3692 ], [ %4919, %4929 ] %4957 = phi i64 [ %4954, %cleanup26.i.i.i3692 ], [ %4920, %4929 ] %4958 = phi i32 [ %4953, %cleanup26.i.i.i3692 ], [ %4921, %4929 ] %4959 = phi i32 [ %4953, %cleanup26.i.i.i3692 ], [ %retval.sroa.8.0.i.i.i3666, %4929 ] %4960 = phi i64 [ %4954, %cleanup26.i.i.i3692 ], [ %retval.sroa.2.0.i.i.i3665, %4929 ] %4961 = phi i32 [ %4955, %cleanup26.i.i.i3692 ], [ %retval.sroa.6.0.i.i.i3663, %4929 ] %4962 = phi i1 [ %cmp.i46.not.i.i.i3684, %cleanup26.i.i.i3692 ], [ true, %4929 ] br i1 %4962, label %for.inc.i.i.i3697, label %Flow7835, !amdgpu.uniform !42 cleanup26.i.i.i3692: ; preds = %Flow7833 br label %Flow7834, !amdgpu.uniform !42 for.inc.i.i.i3697: ; preds = %Flow7834 %inc.i.i.i3702 = add i32 %spec.store.select.i.i.i3669, 1 br label %Flow7835, !amdgpu.uniform !42 Flow7835: ; preds = %for.inc.i.i.i3697, %Flow7834 %4963 = phi i32 [ %inc.i.i.i3702, %for.inc.i.i.i3697 ], [ poison, %Flow7834 ] %4964 = phi i1 [ false, %for.inc.i.i.i3697 ], [ true, %Flow7834 ] br i1 %4964, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i3703, label %for.cond.i.i1.i3662, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i3703: ; preds = %Flow7835 %.lcssa8894 = phi i32 [ %4956, %Flow7835 ] %.lcssa8893 = phi i64 [ %4957, %Flow7835 ] %.lcssa8892 = phi i32 [ %4958, %Flow7835 ] fence acquire %4965 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i3704 = shl i32 %.lcssa8894, 6 %idxprom.i19.i.i.i.i.i3705 = zext i32 %mul.i.i.i.i.i.i3704 to i64 %arrayidx.i20.i.i.i.i.i3706 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %4965, i64 %idxprom.i19.i.i.i.i.i3705 %arrayidx.i22.i.i.i.i.i3707 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i3706, i64 %sh_prom.i.i.i.i3270 store i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.27.43 to ptr), i64 7) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.27.43 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i3707, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i3708 = call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.27.43 to ptr), i64 7) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.27.43 to ptr) to i64)), i64 56) %4966 = and i64 %spec.select.i.i.i.i.i.i.i3708, 15 %4967 = sub i64 %spec.select.i.i.i.i.i.i.i3708, %4966 %4968 = icmp ne i64 %4967, 0 br i1 %4968, label %loop-memcpy-expansion5421.preheader, label %Flow7831, !amdgpu.uniform !42 loop-memcpy-expansion5421.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i3703 %4969 = add nuw nsw i64 %4513, 8 %scevgep6429 = getelementptr i8, ptr %4965, i64 %4969 %4970 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i3705, 6 %scevgep6430 = getelementptr i8, ptr %scevgep6429, i64 %4970 br label %loop-memcpy-expansion5421, !amdgpu.uniform !42 Flow7831: ; preds = %Flow7830, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i3703 br label %loop-memcpy-residual-header5424, !amdgpu.uniform !42 loop-memcpy-expansion5421: ; preds = %loop-memcpy-expansion5421.preheader, %loop-memcpy-expansion5421 %loop-index5422 = phi i64 [ %4973, %loop-memcpy-expansion5421 ], [ 0, %loop-memcpy-expansion5421.preheader ] %4971 = getelementptr i8, ptr addrspace(4) @.str.27.43, i64 %loop-index5422, !amdgpu.uniform !42 %4972 = load <4 x i32>, ptr addrspace(4) %4971, align 1 %scevgep6431 = getelementptr i8, ptr %scevgep6430, i64 %loop-index5422 store <4 x i32> %4972, ptr %scevgep6431, align 1 %4973 = add i64 %loop-index5422, 16 %4974 = icmp uge i64 %4973, %4967 br i1 %4974, label %Flow7830, label %loop-memcpy-expansion5421, !amdgpu.uniform !42 Flow7829: ; preds = %Flow7827, %Flow7828 %4975 = phi i64 [ %6659, %Flow7827 ], [ %6656, %Flow7828 ] br label %post-loop-memcpy-expansion5420, !amdgpu.uniform !42 loop-memcpy-residual5423: ; preds = %loop-memcpy-residual5423.preheader, %loop-memcpy-residual5423 %residual-loop-index5425 = phi i64 [ %4977, %loop-memcpy-residual5423 ], [ 0, %loop-memcpy-residual5423.preheader ] %scevgep6428 = getelementptr i8, ptr addrspace(4) @.str.27.43, i64 %residual-loop-index5425, !amdgpu.uniform !42 %4976 = load i8, ptr addrspace(4) %scevgep6428, align 1 %scevgep6427 = getelementptr i8, ptr %scevgep6426, i64 %residual-loop-index5425 store i8 %4976, ptr %scevgep6427, align 1 %4977 = add i64 %residual-loop-index5425, 1 %4978 = icmp uge i64 %4977, %4966 br i1 %4978, label %Flow7827, label %loop-memcpy-residual5423, !amdgpu.uniform !42 Flow7827: ; preds = %loop-memcpy-residual5423 br label %Flow7829, !amdgpu.uniform !42 post-loop-memcpy-expansion5420: ; preds = %Flow7829 %tobool.not.i.i.i.i.i.i3710 = icmp eq i32 %.lcssa8892, 0 %conv.i.i.i.i.i.i3711 = zext i1 %tobool.not.i.i.i.i.i.i3710 to i32 fence release %4979 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i3712 = zext i32 %.lcssa8894 to i64 %arrayidx.i24.i.i.i.i.i3713 = getelementptr inbounds nuw i32, ptr %4979, i64 %idxprom.i23.i.i.i.i.i3712 store atomic i32 %conv.i.i.i.i.i.i3711, ptr %arrayidx.i24.i.i.i.i.i3713 monotonic, align 4 %4980 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i3714 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %4980, i64 %idxprom.i23.i.i.i.i.i3712, !amdgpu.uniform !42 %4981 = load i64, ptr %arrayidx.i.i5.i.i3714, align 8, !tbaa !80 br label %while.cond.i.i.i.i3715, !amdgpu.uniform !42 while.cond.i.i.i.i3715: ; preds = %post-loop-memcpy-expansion5420, %Flow7826 %phi.broken8792 = phi i64 [ 0, %post-loop-memcpy-expansion5420 ], [ %4998, %Flow7826 ] %lsr.iv6418 = phi i64 [ %4996, %Flow7826 ], [ -49, %post-loop-memcpy-expansion5420 ] %lsr.iv6413 = phi ptr addrspace(4) [ %4995, %Flow7826 ], [ getelementptr (i8, ptr addrspace(4) @.str.27.43, i64 56), %post-loop-memcpy-expansion5420 ] %port.sroa.37.0.i.i3716 = phi i32 [ %4994, %Flow7826 ], [ %conv.i.i.i.i.i.i3711, %post-loop-memcpy-expansion5420 ] %idx.0.i.i.i.i3717 = phi i64 [ %4993, %Flow7826 ], [ 56, %post-loop-memcpy-expansion5420 ] %cmp.i.i.i.i3718 = icmp ult i64 %idx.0.i.i.i.i3717, sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.27.43 to ptr), i64 7) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.27.43 to ptr) to i64)) %4982 = call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i3718) %and.i.i.i.i6.i.i3719 = and i64 %4982, %4981 %tobool.not.i.i.i.i3720 = icmp ne i64 %and.i.i.i.i6.i.i3719, 0 %4983 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i3721 = getelementptr inbounds nuw i32, ptr %4983, i64 %idxprom.i23.i.i.i.i.i3712, !amdgpu.uniform !42 %4984 = load atomic i32, ptr %arrayidx.i22.i.i.i3721 monotonic, align 4 %4985 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i3720) %4986 = extractvalue { i1, i64 } %4985, 0 %4987 = extractvalue { i1, i64 } %4985, 1 br i1 %4986, label %cond.false.i8.i.i.i.i3722, label %Flow7826 cond.false.i8.i.i.i.i3722: ; preds = %while.cond.i.i.i.i3715 %4988 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %4984) %4989 = icmp ne i32 %4988, %port.sroa.37.0.i.i3716 br i1 %4989, label %while.body.i.i21.i.i.i.i3723.preheader, label %Flow7825, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i3723.preheader: ; preds = %cond.false.i8.i.i.i.i3722 br label %while.body.i.i21.i.i.i.i3723, !amdgpu.uniform !42 Flow7825: ; preds = %Flow7824, %cond.false.i8.i.i.i.i3722 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i3726, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i3723: ; preds = %while.body.i.i21.i.i.i.i3723.preheader, %while.body.i.i21.i.i.i.i3723 call void @llvm.amdgcn.s.sleep(i32 2) %4990 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i3724 = getelementptr inbounds nuw i32, ptr %4990, i64 %idxprom.i23.i.i.i.i.i3712, !amdgpu.uniform !42 %4991 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i3724 monotonic, align 4 %4992 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %4991) %cmp.i.not.i.i23.i.i.i.i3725 = icmp eq i32 %4992, %port.sroa.37.0.i.i3716 br i1 %cmp.i.not.i.i23.i.i.i.i3725, label %Flow7824, label %while.body.i.i21.i.i.i.i3723, !amdgpu.uniform !42 Flow7824: ; preds = %while.body.i.i21.i.i.i.i3723 br label %Flow7825, !amdgpu.uniform !42 Flow7826: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3727, %while.cond.i.i.i.i3715 %4993 = phi i64 [ %add.i.i.i.i3730, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3727 ], [ poison, %while.cond.i.i.i.i3715 ] %4994 = phi i32 [ %conv.i.i26.i.i.i.i3728, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3727 ], [ poison, %while.cond.i.i.i.i3715 ] %4995 = phi ptr addrspace(4) [ %scevgep6414, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3727 ], [ poison, %while.cond.i.i.i.i3715 ] %4996 = phi i64 [ %lsr.iv.next6419, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3727 ], [ poison, %while.cond.i.i.i.i3715 ] %4997 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3727 ], [ true, %while.cond.i.i.i.i3715 ] call void @llvm.amdgcn.end.cf.i64(i64 %4987) %4998 = call i64 @llvm.amdgcn.if.break.i64(i1 %4997, i64 %phi.broken8792) %4999 = call i1 @llvm.amdgcn.loop.i64(i64 %4998) br i1 %4999, label %cond.false.i.i.i3737, label %while.cond.i.i.i.i3715 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i3726: ; preds = %Flow7825 fence acquire br i1 %cmp.i.i.i.i3718, label %if.then.i.i.i.i.i.i.i3731, label %Flow7823, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i3731: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i3726 %sub.i.i.i.i.i.i.i3733 = sub nuw i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.27.43 to ptr), i64 7) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.27.43 to ptr) to i64)), %idx.0.i.i.i.i3717 %spec.select.i.i.i36.i.i.i.i3734 = call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i3733, i64 64) %5000 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %5001 = and i64 %spec.select.i.i.i36.i.i.i.i3734, 15 %5002 = sub i64 %spec.select.i.i.i36.i.i.i.i3734, %5001 %5003 = icmp ne i64 %5002, 0 br i1 %5003, label %loop-memcpy-expansion5427.preheader, label %Flow7822, !amdgpu.uniform !42 loop-memcpy-expansion5427.preheader: ; preds = %if.then.i.i.i.i.i.i.i3731 %arrayidx.i20.i35.i.i.i.i3735 = getelementptr %"struct.rpc::Buffer", ptr %5000, i64 %idxprom.i19.i.i.i.i.i3705 %arrayidx.i22.i38.i.i.i.i3736 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i3735, i64 %sh_prom.i.i.i.i3270 br label %loop-memcpy-expansion5427, !amdgpu.uniform !42 Flow7822: ; preds = %Flow7821, %if.then.i.i.i.i.i.i.i3731 br label %loop-memcpy-residual-header5430, !amdgpu.uniform !42 loop-memcpy-expansion5427: ; preds = %loop-memcpy-expansion5427.preheader, %loop-memcpy-expansion5427 %loop-index5428 = phi i64 [ %5006, %loop-memcpy-expansion5427 ], [ 0, %loop-memcpy-expansion5427.preheader ] %scevgep6415 = getelementptr i8, ptr addrspace(4) %lsr.iv6413, i64 %loop-index5428, !amdgpu.uniform !42 %5004 = load <4 x i32>, ptr addrspace(4) %scevgep6415, align 1 %5005 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i3736, i64 %loop-index5428 store <4 x i32> %5004, ptr %5005, align 1 %5006 = add i64 %loop-index5428, 16 %5007 = icmp uge i64 %5006, %5002 br i1 %5007, label %Flow7821, label %loop-memcpy-expansion5427, !amdgpu.uniform !42 Flow7820: ; preds = %Flow7819, %loop-memcpy-residual-header5430 br label %Flow7823, !amdgpu.uniform !42 loop-memcpy-residual5429: ; preds = %loop-memcpy-residual5429.preheader, %loop-memcpy-residual5429 %residual-loop-index5431 = phi i64 [ %5009, %loop-memcpy-residual5429 ], [ 0, %loop-memcpy-residual5429.preheader ] %scevgep6424 = getelementptr i8, ptr addrspace(4) %scevgep6423, i64 %residual-loop-index5431, !amdgpu.uniform !42 %5008 = load i8, ptr addrspace(4) %scevgep6424, align 1 %scevgep6422 = getelementptr i8, ptr %scevgep6421, i64 %residual-loop-index5431 store i8 %5008, ptr %scevgep6422, align 1 %5009 = add i64 %residual-loop-index5431, 1 %5010 = icmp uge i64 %5009, %5001 br i1 %5010, label %Flow7819, label %loop-memcpy-residual5429, !amdgpu.uniform !42 Flow7819: ; preds = %loop-memcpy-residual5429 br label %Flow7820, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3727: ; preds = %Flow7823 %conv.i.i26.i.i.i.i3728 = xor i32 %port.sroa.37.0.i.i3716, 1 fence release %5011 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i3729 = getelementptr inbounds nuw i32, ptr %5011, i64 %idxprom.i23.i.i.i.i.i3712 store atomic i32 %conv.i.i26.i.i.i.i3728, ptr %arrayidx.i24.i29.i.i.i.i3729 monotonic, align 4 %add.i.i.i.i3730 = add i64 %idx.0.i.i.i.i3717, 64 %scevgep6414 = getelementptr i8, ptr addrspace(4) %lsr.iv6413, i64 64 %lsr.iv.next6419 = add i64 %lsr.iv6418, -64 br label %Flow7826, !amdgpu.uniform !42 cond.false.i.i.i3737: ; preds = %Flow7826 %.lcssa8888 = phi i64 [ %4998, %Flow7826 ] %port.sroa.37.0.i.i3716.lcssa = phi i32 [ %port.sroa.37.0.i.i3716, %Flow7826 ] %.lcssa8887 = phi i32 [ %4984, %Flow7826 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8888) %5012 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa8887) %5013 = icmp ne i32 %5012, %port.sroa.37.0.i.i3716.lcssa %5014 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %5013) %5015 = extractvalue { i1, i64 } %5014, 0 %5016 = extractvalue { i1, i64 } %5014, 1 br i1 %5015, label %while.body.i.i.i.i3738.preheader, label %Flow7818 while.body.i.i.i.i3738.preheader: ; preds = %cond.false.i.i.i3737 br label %while.body.i.i.i.i3738, !amdgpu.uniform !42 Flow7818: ; preds = %Flow7817, %cond.false.i.i.i3737 call void @llvm.amdgcn.end.cf.i64(i64 %5016) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit3759, !amdgpu.uniform !42 while.body.i.i.i.i3738: ; preds = %while.body.i.i.i.i3738.preheader, %while.body.i.i.i.i3738 %phi.broken8793 = phi i64 [ 0, %while.body.i.i.i.i3738.preheader ], [ %5020, %while.body.i.i.i.i3738 ] call void @llvm.amdgcn.s.sleep(i32 2) %5017 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i3739 = getelementptr inbounds nuw i32, ptr %5017, i64 %idxprom.i23.i.i.i.i.i3712, !amdgpu.uniform !42 %5018 = load atomic i32, ptr %arrayidx.i.i.i8.i.i3739 monotonic, align 4 %5019 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %5018) %cmp.i.not.i.i.i.i3740 = icmp eq i32 %5019, %port.sroa.37.0.i.i3716.lcssa %5020 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i3740, i64 %phi.broken8793) %5021 = call i1 @llvm.amdgcn.loop.i64(i64 %5020) br i1 %5021, label %Flow7817, label %while.body.i.i.i.i3738 Flow7817: ; preds = %while.body.i.i.i.i3738 %.lcssa8886 = phi i64 [ %5020, %while.body.i.i.i.i3738 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8886) br label %Flow7818, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit3759: ; preds = %Flow7818 fence acquire call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %5022 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa8893, i1 true) %iszero.i.i.i.i.i13.i.i3742 = icmp ne i64 %.lcssa8893, 0 %cmp2.i.i.i.i14.i.i3743 = icmp eq i64 %5022, %sh_prom.i.i.i.i3270 %cmp.i.i.i.i15.i.i3744 = select i1 %iszero.i.i.i.i.i13.i.i3742, i1 %cmp2.i.i.i.i14.i.i3743, i1 false %5023 = and i32 %.lcssa8894, 31 %conv4.i.i.i19.i.i3748 = zext i1 %cmp.i.i.i.i15.i.i3744 to i32 %shl.i.i.i20.i.i3749 = shl nuw i32 %conv4.i.i.i19.i.i3748, %5023 %xor.i.i.i21.i.i3750 = xor i32 %shl.i.i.i20.i.i3749, -1 %5024 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5901, !amdgpu.uniform !42 5025: ; preds = %ComputeEnd5902 %div8.i.i.i16.i.i3745 = lshr i32 %.lcssa8894, 5 %idxprom.i.i.i17.i.i3746 = zext nneg i32 %div8.i.i.i16.i.i3745 to i64 %5026 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i3746 %sunkaddr7482 = getelementptr inbounds i8, ptr addrspace(1) %5026, i64 40 %5027 = atomicrmw and ptr addrspace(1) %sunkaddr7482, i32 %.lcssa8885 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %5028, !amdgpu.uniform !42 5028: ; preds = %5025, %ComputeEnd5902 call void @llvm.amdgcn.end.cf.i64(i64 %8524) call void @llvm.amdgcn.wave.barrier() %sub95 = sub nsw i32 %1148, %1149 call void @llvm.lifetime.start.p5(ptr addrspace(5) %buffer.i.i.i2988) #34, !noalias !185 %cmp7.i.i.i.i.i.i3761 = icmp ne i32 %1148, %1149 %5029 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp7.i.i.i.i.i.i3761) %5030 = extractvalue { i1, i64 } %5029, 0 %5031 = extractvalue { i1, i64 } %5029, 1 br i1 %5030, label %while.body.lr.ph.i.i.i.i.i.i3762, label %Flow7816 while.body.lr.ph.i.i.i.i.i.i3762: ; preds = %5028 %retval.0.i.i.i.i.i.i3763 = call noundef i32 @llvm.abs.i32(i32 %sub95, i1 false) br label %while.body.i.i.i.i.i.i3764, !amdgpu.uniform !42 Flow7816: ; preds = %Flow7815, %5028 %5032 = phi i1 [ %cmp.i.i.i.i.i.i.i.i3774.lcssa, %Flow7815 ], [ false, %5028 ] %5033 = phi i64 [ %writer.sroa.10.1.i.i.i.i3779.lcssa, %Flow7815 ], [ 0, %5028 ] call void @llvm.amdgcn.end.cf.i64(i64 %5031) br label %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i3782, !amdgpu.uniform !42 while.body.i.i.i.i.i.i3764: ; preds = %while.body.lr.ph.i.i.i.i.i.i3762, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i3778 %phi.broken8794 = phi i64 [ 0, %while.body.lr.ph.i.i.i.i.i.i3762 ], [ %5101, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i3778 ] %writer.sroa.10.0.i.i.i.i3765 = phi i64 [ %writer.sroa.10.1.i.i.i.i3779, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i3778 ], [ 0, %while.body.lr.ph.i.i.i.i.i.i3762 ] %value.addr.09.i.i.i.i.i.i3766 = phi i32 [ %div.i.i.i.i.i.i.i3767, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i3778 ], [ %retval.0.i.i.i.i.i.i3763, %while.body.lr.ph.i.i.i.i.i.i3762 ] br label %NodeBlock7613, !amdgpu.uniform !42 NodeBlock7613: ; preds = %while.body.i.i.i.i.i.i3764 %div.i.i.i.i.i.i.i3767 = udiv i32 %value.addr.09.i.i.i.i.i.i3766, 10 %.neg.i3768 = mul i32 %div.i.i.i.i.i.i.i3767, 246 %rem.i.i.i.i.i.i.decomposed.i3769 = add i32 %.neg.i3768, %value.addr.09.i.i.i.i.i.i3766 %conv.i.i.i.i.i.i.i3770 = trunc i32 %rem.i.i.i.i.i.i.decomposed.i3769 to i8 %5034 = zext i8 %conv.i.i.i.i.i.i.i3770 to i16 %Pivot7614 = icmp sge i16 %5034, 5 %5035 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot7614) %5036 = extractvalue { i1, i64 } %5035, 0 %5037 = extractvalue { i1, i64 } %5035, 1 br i1 %5036, label %NodeBlock7611, label %Flow7814 NodeBlock7611: ; preds = %NodeBlock7613 %Pivot7612 = icmp sge i16 %5034, 7 %5038 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot7612) %5039 = extractvalue { i1, i64 } %5038, 0 %5040 = extractvalue { i1, i64 } %5038, 1 br i1 %5039, label %NodeBlock7609, label %Flow7805 NodeBlock7609: ; preds = %NodeBlock7611 %Pivot7610 = icmp sge i16 %5034, 8 %5041 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot7610) %5042 = extractvalue { i1, i64 } %5041, 0 %5043 = extractvalue { i1, i64 } %5041, 1 br i1 %5042, label %NodeBlock7607, label %Flow7801 NodeBlock7607: ; preds = %NodeBlock7609 %Pivot7608 = icmp sge i16 %5034, 9 %5044 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot7608) %5045 = extractvalue { i1, i64 } %5044, 0 %5046 = extractvalue { i1, i64 } %5044, 1 br i1 %5045, label %sw.bb9.i.i.i.i.i.i.i.i3771, label %Flow7799 Flow7805: ; preds = %Flow7802, %NodeBlock7611 %5047 = phi i8 [ %5091, %Flow7802 ], [ poison, %NodeBlock7611 ] %5048 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %5040) %5049 = extractvalue { i1, i64 } %5048, 0 %5050 = extractvalue { i1, i64 } %5048, 1 br i1 %5049, label %NodeBlock7605, label %Flow7806 NodeBlock7605: ; preds = %Flow7805 %Pivot7606 = icmp sge i16 %5034, 6 %5051 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot7606) %5052 = extractvalue { i1, i64 } %5051, 0 %5053 = extractvalue { i1, i64 } %5051, 1 br i1 %5052, label %sw.bb6.i.i.i.i.i.i.i.i3931, label %Flow7803 Flow7814: ; preds = %Flow7806, %NodeBlock7613 %5054 = phi i8 [ %5093, %Flow7806 ], [ poison, %NodeBlock7613 ] %5055 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %5037) %5056 = extractvalue { i1, i64 } %5055, 0 %5057 = extractvalue { i1, i64 } %5055, 1 br i1 %5056, label %NodeBlock7603, label %if.then.i.i.i.i.i.i.i3772 NodeBlock7603: ; preds = %Flow7814 %Pivot7604 = icmp sge i16 %5034, 3 %5058 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot7604) %5059 = extractvalue { i1, i64 } %5058, 0 %5060 = extractvalue { i1, i64 } %5058, 1 br i1 %5059, label %NodeBlock7601, label %Flow7812 NodeBlock7601: ; preds = %NodeBlock7603 %Pivot7602 = icmp sge i16 %5034, 4 %5061 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot7602) %5062 = extractvalue { i1, i64 } %5061, 0 %5063 = extractvalue { i1, i64 } %5061, 1 br i1 %5062, label %sw.bb4.i.i.i.i.i.i.i.i3933, label %Flow7807 Flow7812: ; preds = %Flow7808, %NodeBlock7603 %5064 = phi i8 [ %5094, %Flow7808 ], [ poison, %NodeBlock7603 ] %5065 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %5060) %5066 = extractvalue { i1, i64 } %5065, 0 %5067 = extractvalue { i1, i64 } %5065, 1 br i1 %5066, label %NodeBlock7599, label %Flow7813 NodeBlock7599: ; preds = %Flow7812 %Pivot7600 = icmp sge i16 %5034, 2 %5068 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot7600) %5069 = extractvalue { i1, i64 } %5068, 0 %5070 = extractvalue { i1, i64 } %5068, 1 br i1 %5069, label %sw.bb2.i.i.i.i.i.i.i.i3935, label %Flow7810 Flow7810: ; preds = %sw.bb2.i.i.i.i.i.i.i.i3935, %NodeBlock7599 %5071 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %5070) %5072 = extractvalue { i1, i64 } %5071, 0 %5073 = extractvalue { i1, i64 } %5071, 1 br i1 %5072, label %LeafBlock7597, label %Flow7811 LeafBlock7597: ; preds = %Flow7810 %SwitchLeaf7598 = icmp eq i16 %5034, 1 %5074 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %SwitchLeaf7598) %5075 = extractvalue { i1, i64 } %5074, 0 %5076 = extractvalue { i1, i64 } %5074, 1 br i1 %5075, label %sw.bb1.i.i.i.i.i.i.i.i3936, label %Flow7809 sw.bb1.i.i.i.i.i.i.i.i3936: ; preds = %LeafBlock7597 br label %Flow7809, !amdgpu.uniform !42 sw.bb2.i.i.i.i.i.i.i.i3935: ; preds = %NodeBlock7599 br label %Flow7810, !amdgpu.uniform !42 Flow7807: ; preds = %sw.bb4.i.i.i.i.i.i.i.i3933, %NodeBlock7601 %5077 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %5063) %5078 = extractvalue { i1, i64 } %5077, 0 %5079 = extractvalue { i1, i64 } %5077, 1 br i1 %5078, label %sw.bb3.i.i.i.i.i.i.i.i3934, label %Flow7808 sw.bb3.i.i.i.i.i.i.i.i3934: ; preds = %Flow7807 br label %Flow7808, !amdgpu.uniform !42 sw.bb4.i.i.i.i.i.i.i.i3933: ; preds = %NodeBlock7601 br label %Flow7807, !amdgpu.uniform !42 Flow7803: ; preds = %sw.bb6.i.i.i.i.i.i.i.i3931, %NodeBlock7605 %5080 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %5053) %5081 = extractvalue { i1, i64 } %5080, 0 %5082 = extractvalue { i1, i64 } %5080, 1 br i1 %5081, label %sw.bb5.i.i.i.i.i.i.i.i3932, label %Flow7804 sw.bb5.i.i.i.i.i.i.i.i3932: ; preds = %Flow7803 br label %Flow7804, !amdgpu.uniform !42 sw.bb6.i.i.i.i.i.i.i.i3931: ; preds = %NodeBlock7605 br label %Flow7803, !amdgpu.uniform !42 Flow7801: ; preds = %Flow7800, %NodeBlock7609 %5083 = phi i8 [ %5090, %Flow7800 ], [ poison, %NodeBlock7609 ] %5084 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %5043) %5085 = extractvalue { i1, i64 } %5084, 0 %5086 = extractvalue { i1, i64 } %5084, 1 br i1 %5085, label %sw.bb7.i.i.i.i.i.i.i.i3930, label %Flow7802 sw.bb7.i.i.i.i.i.i.i.i3930: ; preds = %Flow7801 br label %Flow7802, !amdgpu.uniform !42 Flow7799: ; preds = %sw.bb9.i.i.i.i.i.i.i.i3771, %NodeBlock7607 %5087 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %5046) %5088 = extractvalue { i1, i64 } %5087, 0 %5089 = extractvalue { i1, i64 } %5087, 1 br i1 %5088, label %sw.bb8.i.i.i.i.i.i.i.i3929, label %Flow7800 sw.bb8.i.i.i.i.i.i.i.i3929: ; preds = %Flow7799 br label %Flow7800, !amdgpu.uniform !42 sw.bb9.i.i.i.i.i.i.i.i3771: ; preds = %NodeBlock7607 br label %Flow7799, !amdgpu.uniform !42 Flow7800: ; preds = %sw.bb8.i.i.i.i.i.i.i.i3929, %Flow7799 %5090 = phi i8 [ 56, %sw.bb8.i.i.i.i.i.i.i.i3929 ], [ 57, %Flow7799 ] call void @llvm.amdgcn.end.cf.i64(i64 %5089) br label %Flow7801, !amdgpu.uniform !42 Flow7802: ; preds = %sw.bb7.i.i.i.i.i.i.i.i3930, %Flow7801 %5091 = phi i8 [ 55, %sw.bb7.i.i.i.i.i.i.i.i3930 ], [ %5083, %Flow7801 ] call void @llvm.amdgcn.end.cf.i64(i64 %5086) br label %Flow7805, !amdgpu.uniform !42 Flow7804: ; preds = %sw.bb5.i.i.i.i.i.i.i.i3932, %Flow7803 %5092 = phi i8 [ 53, %sw.bb5.i.i.i.i.i.i.i.i3932 ], [ 54, %Flow7803 ] call void @llvm.amdgcn.end.cf.i64(i64 %5082) br label %Flow7806, !amdgpu.uniform !42 Flow7806: ; preds = %Flow7804, %Flow7805 %5093 = phi i8 [ %5092, %Flow7804 ], [ %5047, %Flow7805 ] call void @llvm.amdgcn.end.cf.i64(i64 %5050) br label %Flow7814, !amdgpu.uniform !42 Flow7808: ; preds = %sw.bb3.i.i.i.i.i.i.i.i3934, %Flow7807 %5094 = phi i8 [ 51, %sw.bb3.i.i.i.i.i.i.i.i3934 ], [ 52, %Flow7807 ] call void @llvm.amdgcn.end.cf.i64(i64 %5079) br label %Flow7812, !amdgpu.uniform !42 Flow7809: ; preds = %sw.bb1.i.i.i.i.i.i.i.i3936, %LeafBlock7597 %5095 = phi i8 [ 49, %sw.bb1.i.i.i.i.i.i.i.i3936 ], [ 48, %LeafBlock7597 ] call void @llvm.amdgcn.end.cf.i64(i64 %5076) br label %Flow7811, !amdgpu.uniform !42 Flow7811: ; preds = %Flow7809, %Flow7810 %5096 = phi i8 [ %5095, %Flow7809 ], [ 50, %Flow7810 ] call void @llvm.amdgcn.end.cf.i64(i64 %5073) br label %Flow7813, !amdgpu.uniform !42 Flow7813: ; preds = %Flow7811, %Flow7812 %5097 = phi i8 [ %5096, %Flow7811 ], [ %5064, %Flow7812 ] call void @llvm.amdgcn.end.cf.i64(i64 %5067) br label %if.then.i.i.i.i.i.i.i3772, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i3772: ; preds = %Flow7814, %Flow7813 %retval.0.i.i.i.i.i.i.i.i3773 = phi i8 [ %5054, %Flow7814 ], [ %5097, %Flow7813 ] call void @llvm.amdgcn.end.cf.i64(i64 %5057) %cmp.i.i.i.i.i.i.i.i3774 = icmp eq i64 %writer.sroa.10.0.i.i.i.i3765, 11 %cmp.i.i.i.i.i.i.i.i3774.inv = xor i1 %cmp.i.i.i.i.i.i.i.i3774, true br i1 %cmp.i.i.i.i.i.i.i.i3774.inv, label %if.then3.i.i.i.i.i.i.i3775, label %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i3778, !amdgpu.uniform !42 if.then3.i.i.i.i.i.i.i3775: ; preds = %if.then.i.i.i.i.i.i.i3772 %5098 = trunc i64 %writer.sroa.10.0.i.i.i.i3765 to i32 %5099 = xor i32 %5098, -1 %5100 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i2988, i32 %5099 %arrayidx.i.i.i.i.i.i.i.i37766103 = getelementptr i8, ptr addrspace(5) %5100, i32 11 %inc.i.i.i.i.i.i.i3777 = add i64 %writer.sroa.10.0.i.i.i.i3765, 1 store i8 %retval.0.i.i.i.i.i.i.i.i3773, ptr addrspace(5) %arrayidx.i.i.i.i.i.i.i.i37766103, align 1, !tbaa !57, !noalias !185 br label %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i3778, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i3778: ; preds = %if.then3.i.i.i.i.i.i.i3775, %if.then.i.i.i.i.i.i.i3772 %writer.sroa.10.1.i.i.i.i3779 = phi i64 [ %inc.i.i.i.i.i.i.i3777, %if.then3.i.i.i.i.i.i.i3775 ], [ 11, %if.then.i.i.i.i.i.i.i3772 ] %cmp.i.i.i.i.i.i3780 = icmp ult i32 %value.addr.09.i.i.i.i.i.i3766, 10 %.not.i.i.i.i.i.i3781 = or i1 %cmp.i.i.i.i.i.i.i.i3774, %cmp.i.i.i.i.i.i3780 %5101 = call i64 @llvm.amdgcn.if.break.i64(i1 %.not.i.i.i.i.i.i3781, i64 %phi.broken8794) %5102 = call i1 @llvm.amdgcn.loop.i64(i64 %5101) br i1 %5102, label %Flow7815, label %while.body.i.i.i.i.i.i3764 Flow7815: ; preds = %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i3778 %writer.sroa.10.1.i.i.i.i3779.lcssa = phi i64 [ %writer.sroa.10.1.i.i.i.i3779, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i3778 ] %.lcssa8884 = phi i64 [ %5101, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i3778 ] %cmp.i.i.i.i.i.i.i.i3774.lcssa = phi i1 [ %cmp.i.i.i.i.i.i.i.i3774, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i3778 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8884) br label %Flow7816, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i3782: ; preds = %Flow7816 %cmp.i19.i.i.i.i3785 = icmp ne i64 %5033, 0 %or.cond.not.i.i.i.i3786 = select i1 %5032, i1 true, i1 %cmp.i19.i.i.i.i3785 %or.cond.not.i.i.i.i3786.inv = xor i1 %or.cond.not.i.i.i.i3786, true %5103 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %or.cond.not.i.i.i.i3786.inv) %5104 = extractvalue { i1, i64 } %5103, 0 %5105 = extractvalue { i1, i64 } %5103, 1 br i1 %5104, label %if.then3.i.i.lr.ph.i.i.i.i3787, label %while.end.i.i.i.i.i3789 if.then3.i.i.lr.ph.i.i.i.i3787: ; preds = %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i3782 %arrayidx.i.i.i.i.i.i.i3788 = getelementptr inbounds nuw i8, ptr addrspace(5) %buffer.i.i.i2988, i32 10 store i8 48, ptr addrspace(5) %arrayidx.i.i.i.i.i.i.i3788, align 2, !tbaa !57, !noalias !185 br label %while.end.i.i.i.i.i3789, !amdgpu.uniform !42 while.end.i.i.i.i.i3789: ; preds = %if.then3.i.i.lr.ph.i.i.i.i3787, %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i3782 %writer.sroa.10.4.i.i.i.i3790 = phi i64 [ 1, %if.then3.i.i.lr.ph.i.i.i.i3787 ], [ %5033, %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i3782 ] call void @llvm.amdgcn.end.cf.i64(i64 %5105) %cmp4.i.i.i.i.i3791 = icmp sgt i32 %sub95, -1 %brmerge.i.i.i.i.i3792 = or i1 %cmp4.i.i.i.i.i3791, %5032 %brmerge.i.i.i.i.i3792.inv = xor i1 %brmerge.i.i.i.i.i3792, true %5106 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %brmerge.i.i.i.i.i3792.inv) %5107 = extractvalue { i1, i64 } %5106, 0 %5108 = extractvalue { i1, i64 } %5106, 1 br i1 %5107, label %if.then.i14.i.i.i.i.i3793, label %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i3798 if.then.i14.i.i.i.i.i3793: ; preds = %while.end.i.i.i.i.i3789 %cmp.i.i17.i.i.i.i.i3794 = icmp ne i64 %writer.sroa.10.4.i.i.i.i3790, 11 %5109 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i17.i.i.i.i.i3794) %5110 = extractvalue { i1, i64 } %5109, 0 %5111 = extractvalue { i1, i64 } %5109, 1 br i1 %5110, label %if.then3.i18.i.i.i.i.i3795, label %Flow7798 if.then3.i18.i.i.i.i.i3795: ; preds = %if.then.i14.i.i.i.i.i3793 %5112 = trunc i64 %writer.sroa.10.4.i.i.i.i3790 to i32 %5113 = xor i32 %5112, -1 %5114 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i2988, i32 %5113 %arrayidx.i.i19.i.i.i.i.i37966104 = getelementptr i8, ptr addrspace(5) %5114, i32 11 %inc.i20.i.i.i.i.i3797 = add i64 %writer.sroa.10.4.i.i.i.i3790, 1 store i8 45, ptr addrspace(5) %arrayidx.i.i19.i.i.i.i.i37966104, align 1, !tbaa !57, !noalias !185 br label %Flow7798, !amdgpu.uniform !42 Flow7798: ; preds = %if.then3.i18.i.i.i.i.i3795, %if.then.i14.i.i.i.i.i3793 %5115 = phi i64 [ %inc.i20.i.i.i.i.i3797, %if.then3.i18.i.i.i.i.i3795 ], [ 11, %if.then.i14.i.i.i.i.i3793 ] call void @llvm.amdgcn.end.cf.i64(i64 %5111) br label %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i3798, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i3798: ; preds = %while.end.i.i.i.i.i3789, %Flow7798 %writer.sroa.10.5.i.i.i.i3799 = phi i64 [ %writer.sroa.10.4.i.i.i.i3790, %while.end.i.i.i.i.i3789 ], [ %5115, %Flow7798 ] call void @llvm.amdgcn.end.cf.i64(i64 %5108) %written.i.i.i.i3800 = getelementptr inbounds nuw i8, ptr addrspace(5) %buffer.i.i.i2988, i32 16 store i64 %writer.sroa.10.5.i.i.i.i3799, ptr addrspace(5) %written.i.i.i.i3800, align 8, !tbaa !91, !noalias !185 %cmp.i.not.i.i.i.i.i3801 = icmp ne i64 %writer.sroa.10.5.i.i.i.i3799, 0 %5116 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.not.i.i.i.i.i3801) %5117 = extractvalue { i1, i64 } %5116, 0 %5118 = extractvalue { i1, i64 } %5116, 1 br i1 %5117, label %if.then.i.i.i.i.i.i3802, label %Flow7797 if.then.i.i.i.i.i.i3802: ; preds = %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i3798 %5119 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %writer.sroa.10.5.i.i.i.i3799, i64 1) %ov7484 = extractvalue { i64, i1 } %5119, 1 %ov7484.inv = xor i1 %ov7484, true %5120 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %ov7484.inv) %5121 = extractvalue { i1, i64 } %5120, 0 %5122 = extractvalue { i1, i64 } %5120, 1 br i1 %5121, label %if.end.i.i.i.i.i.i.i3805, label %Flow7796 if.end.i.i.i.i.i.i.i3805: ; preds = %if.then.i.i.i.i.i.i3802 %math7483 = extractvalue { i64, i1 } %5119, 0 %cmp2.i.i.i.i.i.i.i3806 = icmp ult i64 %math7483, 1676976733973595601 %5123 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp2.i.i.i.i.i.i.i3806) %5124 = extractvalue { i1, i64 } %5123, 0 %5125 = extractvalue { i1, i64 } %5123, 1 br i1 %5124, label %if.then3.i.i.i.i4.i.i.i3926, label %if.end4.i.i.i.i.i.i.i3807 if.then3.i.i.i.i4.i.i.i3926: ; preds = %if.end.i.i.i.i.i.i.i3805 %mul.i.i.i.i.i.i.i3927 = mul nuw i64 %math7483, 11 %div18.i.i.i.i.i.i.i3928 = lshr i64 %mul.i.i.i.i.i.i.i3927, 3 br label %if.end4.i.i.i.i.i.i.i3807, !amdgpu.uniform !42 Flow7796: ; preds = %if.end4.i.i.i.i.i.i.i3807, %if.then.i.i.i.i.i.i3802 %5126 = phi ptr [ %cond.i.i.i3815, %if.end4.i.i.i.i.i.i.i3807 ], [ addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr), %if.then.i.i.i.i.i.i3802 ] call void @llvm.amdgcn.end.cf.i64(i64 %5122) br label %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i3817, !amdgpu.uniform !42 if.end4.i.i.i.i.i.i.i3807: ; preds = %if.then3.i.i.i.i4.i.i.i3926, %if.end.i.i.i.i.i.i.i3805 %new_capacity.addr.0.i.i.i.i.i.i.i3808 = phi i64 [ %div18.i.i.i.i.i.i.i3928, %if.then3.i.i.i.i4.i.i.i3926 ], [ %math7483, %if.end.i.i.i.i.i.i.i3805 ] call void @llvm.amdgcn.end.cf.i64(i64 %5125) %sub.i.i.i3809 = add i64 %new_capacity.addr.0.i.i.i.i.i.i.i3808, 7 %div2.i.i.i3810 = and i64 %sub.i.i.i3809, -8 %5127 = load ptr, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %add.ptr.i.i.i3811 = getelementptr inbounds nuw i8, ptr %5127, i64 %div2.i.i.i3810 store ptr %add.ptr.i.i.i3811, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %sub.ptr.lhs.cast.i.i.i3812 = ptrtoint ptr %add.ptr.i.i.i3811 to i64 %sub.ptr.sub.i.i.i3813 = sub i64 %sub.ptr.lhs.cast.i.i.i3812, ptrtoint (ptr addrspacecast (ptr addrspace(1) @_ZN12_GLOBAL__N_16memoryE to ptr) to i64) %cmp.i.i.i3814 = icmp ugt i64 %sub.ptr.sub.i.i.i3813, 65335 %cond.i.i.i3815 = select i1 %cmp.i.i.i3814, ptr null, ptr %5127 br label %Flow7796, !amdgpu.uniform !42 Flow7797: ; preds = %Flow7795, %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i3798 %5128 = phi ptr [ %5126, %Flow7795 ], [ addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr), %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i3798 ] call void @llvm.amdgcn.end.cf.i64(i64 %5118) br label %if.end.i.i.i.i.i.i3819, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i3817: ; preds = %Flow7796 br label %loadstoreloop4949, !amdgpu.uniform !42 loadstoreloop4949: ; preds = %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i3817, %loadstoreloop4949 %phi.broken8795 = phi i64 [ 0, %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i3817 ], [ %5133, %loadstoreloop4949 ] %5129 = phi i64 [ %5131, %loadstoreloop4949 ], [ 0, %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i3817 ] %5130 = getelementptr i8, ptr %5126, i64 %5129 store i8 0, ptr %5130, align 1 %5131 = add i64 %5129, 1 %5132 = icmp uge i64 %5131, %writer.sroa.10.5.i.i.i.i3799 %5133 = call i64 @llvm.amdgcn.if.break.i64(i1 %5132, i64 %phi.broken8795) %5134 = call i1 @llvm.amdgcn.loop.i64(i64 %5133) br i1 %5134, label %Flow7795, label %loadstoreloop4949 Flow7795: ; preds = %loadstoreloop4949 %.lcssa8883 = phi i64 [ %5133, %loadstoreloop4949 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8883) br label %Flow7797, !amdgpu.uniform !42 if.end.i.i.i.i.i.i3819: ; preds = %Flow7797 %cmp.not.i6.i.i.i.i.i.i3821 = icmp ne ptr %5128, addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr) %5135 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.not.i6.i.i.i.i.i.i3821) %5136 = extractvalue { i1, i64 } %5135, 0 %5137 = extractvalue { i1, i64 } %5135, 1 br i1 %5136, label %if.then.i.i.i.i2.i.i.i3822, label %_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi.exit.i3824 if.then.i.i.i.i2.i.i.i3822: ; preds = %if.end.i.i.i.i.i.i3819 %arrayidx.i.i.i.i3.i.i.i3823 = getelementptr inbounds nuw i8, ptr %5128, i64 %writer.sroa.10.5.i.i.i.i3799 store i8 0, ptr %arrayidx.i.i.i.i3.i.i.i3823, align 1, !tbaa !57, !noalias !185 br label %_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi.exit.i3824, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi.exit.i3824: ; preds = %if.then.i.i.i.i2.i.i.i3822, %if.end.i.i.i.i.i.i3819 call void @llvm.amdgcn.end.cf.i64(i64 %5137) %5138 = trunc i64 %writer.sroa.10.5.i.i.i.i3799 to i32 %5139 = and i64 %writer.sroa.10.5.i.i.i.i3799, 15 %5140 = sub i64 %writer.sroa.10.5.i.i.i.i3799, %5139 %5141 = icmp ne i64 %5140, 0 %5142 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %5141) %5143 = extractvalue { i1, i64 } %5142, 0 %5144 = extractvalue { i1, i64 } %5142, 1 br i1 %5143, label %loop-memcpy-expansion5109.preheader, label %Flow7794 loop-memcpy-expansion5109.preheader: ; preds = %_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi.exit.i3824 %5145 = sub i32 11, %5138 %scevgep6410 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i2988, i32 %5145 br label %loop-memcpy-expansion5109, !amdgpu.uniform !42 Flow7794: ; preds = %Flow7793, %_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi.exit.i3824 call void @llvm.amdgcn.end.cf.i64(i64 %5144) br label %loop-memcpy-residual-header5112, !amdgpu.uniform !42 loop-memcpy-expansion5109: ; preds = %loop-memcpy-expansion5109.preheader, %loop-memcpy-expansion5109 %phi.broken8796 = phi i64 [ 0, %loop-memcpy-expansion5109.preheader ], [ %5150, %loop-memcpy-expansion5109 ] %lsr.iv6411 = phi ptr addrspace(5) [ %scevgep6412, %loop-memcpy-expansion5109 ], [ %scevgep6410, %loop-memcpy-expansion5109.preheader ] %loop-index5110 = phi i64 [ %5148, %loop-memcpy-expansion5109 ], [ 0, %loop-memcpy-expansion5109.preheader ] %5146 = load <4 x i32>, ptr addrspace(5) %lsr.iv6411, align 1 %5147 = getelementptr i8, ptr %5128, i64 %loop-index5110 store <4 x i32> %5146, ptr %5147, align 1 %5148 = add i64 %loop-index5110, 16 %scevgep6412 = getelementptr i8, ptr addrspace(5) %lsr.iv6411, i32 16 %5149 = icmp uge i64 %5148, %5140 %5150 = call i64 @llvm.amdgcn.if.break.i64(i1 %5149, i64 %phi.broken8796) %5151 = call i1 @llvm.amdgcn.loop.i64(i64 %5150) br i1 %5151, label %Flow7793, label %loop-memcpy-expansion5109 Flow7792: ; preds = %Flow7791, %loop-memcpy-residual-header5112 call void @llvm.amdgcn.end.cf.i64(i64 %6373) br label %post-loop-memcpy-expansion5108, !amdgpu.uniform !42 loop-memcpy-residual5111: ; preds = %loop-memcpy-residual5111.preheader, %loop-memcpy-residual5111 %phi.broken8797 = phi i64 [ 0, %loop-memcpy-residual5111.preheader ], [ %5155, %loop-memcpy-residual5111 ] %lsr.iv6406 = phi ptr addrspace(5) [ %scevgep6407, %loop-memcpy-residual5111 ], [ %scevgep6405, %loop-memcpy-residual5111.preheader ] %residual-loop-index5113 = phi i64 [ %5153, %loop-memcpy-residual5111 ], [ 0, %loop-memcpy-residual5111.preheader ] %5152 = load i8, ptr addrspace(5) %lsr.iv6406, align 1 %scevgep6409 = getelementptr i8, ptr %scevgep6408, i64 %residual-loop-index5113 store i8 %5152, ptr %scevgep6409, align 1 %5153 = add i64 %residual-loop-index5113, 1 %scevgep6407 = getelementptr i8, ptr addrspace(5) %lsr.iv6406, i32 1 %5154 = icmp uge i64 %5153, %5139 %5155 = call i64 @llvm.amdgcn.if.break.i64(i1 %5154, i64 %phi.broken8797) %5156 = call i1 @llvm.amdgcn.loop.i64(i64 %5155) br i1 %5156, label %Flow7791, label %loop-memcpy-residual5111 Flow7791: ; preds = %loop-memcpy-residual5111 %.lcssa8881 = phi i64 [ %5155, %loop-memcpy-residual5111 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8881) br label %Flow7792, !amdgpu.uniform !42 post-loop-memcpy-expansion5108: ; preds = %Flow7792 call void @llvm.lifetime.end.p5(ptr addrspace(5) %buffer.i.i.i2988) #34, !noalias !185 br label %for.cond.i.i.i3828, !amdgpu.uniform !42 for.cond.i.i.i3828: ; preds = %post-loop-memcpy-expansion5108, %Flow7790 %5157 = phi i32 [ %5194, %Flow7790 ], [ poison, %post-loop-memcpy-expansion5108 ] %5158 = phi i64 [ %5195, %Flow7790 ], [ poison, %post-loop-memcpy-expansion5108 ] %5159 = phi i32 [ %5196, %Flow7790 ], [ poison, %post-loop-memcpy-expansion5108 ] %retval.sroa.6.0.i.i.i3829 = phi i32 [ %5199, %Flow7790 ], [ undef, %post-loop-memcpy-expansion5108 ] %retval.sroa.2.0.i.i.i3831 = phi i64 [ %5198, %Flow7790 ], [ undef, %post-loop-memcpy-expansion5108 ] %retval.sroa.8.0.i.i.i3832 = phi i32 [ %5197, %Flow7790 ], [ undef, %post-loop-memcpy-expansion5108 ] %index.0.i.i.i3833 = phi i32 [ %5201, %Flow7790 ], [ 0, %post-loop-memcpy-expansion5108 ] %5160 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i3834 = icmp ult i32 %index.0.i.i.i3833, %5160 %spec.store.select.i.i.i3835 = select i1 %cmp.not.i.i.i3834, i32 %index.0.i.i.i3833, i32 0 %5161 = call i64 @llvm.amdgcn.ballot.i64(i1 true) %5162 = and i32 %spec.store.select.i.i.i3835, 31 %5163 = lshr i64 %5161, %sh_prom.i.i.i.i3270 %5164 = trunc i64 %5163 to i32 %conv4.i.i.i.i.i3839 = and i32 %5164, 1 %shl.i.i.i.i.i3840 = shl nuw i32 %conv4.i.i.i.i.i3839, %5162 br label %ComputeLoop5905, !amdgpu.uniform !42 5165: ; preds = %ComputeEnd5906 %sunkaddr7485 = getelementptr inbounds i8, ptr addrspace(1) %8534, i64 40 %5166 = atomicrmw or ptr addrspace(1) %sunkaddr7485, i32 %.lcssa8875 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %5167, !amdgpu.uniform !42 5167: ; preds = %5165, %ComputeEnd5906 %5168 = phi i32 [ %5166, %5165 ], [ poison, %ComputeEnd5906 ] call void @llvm.amdgcn.end.cf.i64(i64 %8543) %5169 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %5168) %5170 = or i32 %5169, %.lcssa8876 %shl5.i.i.i.i.i3841 = shl nuw i32 1, %5162 %and.i.i.i.i.i3842 = and i32 %shl5.i.i.i.i.i3841, %5170 %tobool3.i.i.i.i3843 = icmp ne i32 %and.i.i.i.i.i3842, 0 %5171 = call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i3843) %and.i.i.i.i.i.i3844 = and i64 %5171, %5161 %cmp.i.not.i.i.i3845 = icmp ne i64 %5161, %and.i.i.i.i.i.i3844 br i1 %cmp.i.not.i.i.i3845, label %if.then.i.i.i.i3846, label %Flow7789, !amdgpu.uniform !42 if.then.i.i.i.i3846: ; preds = %5167 fence syncscope("agent") acquire %5172 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %5173 = extractelement <2 x i64> %5172, i32 0 %5174 = inttoptr i64 %5173 to ptr %5175 = extractelement <2 x i64> %5172, i32 1 %5176 = inttoptr i64 %5175 to ptr %idxprom.i.i.i.i3847 = zext i32 %spec.store.select.i.i.i3835 to i64 %arrayidx.i.i.i.i3848 = getelementptr inbounds nuw i32, ptr %5174, i64 %idxprom.i.i.i.i3847, !amdgpu.uniform !42 %5177 = load atomic i32, ptr %arrayidx.i.i.i.i3848 monotonic, align 4 %5178 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %5177) %arrayidx.i45.i.i.i3849 = getelementptr inbounds nuw i32, ptr %5176, i64 %idxprom.i.i.i.i3847, !amdgpu.uniform !42 %5179 = load atomic i32, ptr %arrayidx.i45.i.i.i3849 monotonic, align 4 %5180 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %5179) %cmp.i46.not.i.i.i3850 = icmp ne i32 %5178, %5180 br i1 %cmp.i46.not.i.i.i3850, label %if.then12.i.i.i3851, label %Flow7787, !amdgpu.uniform !42 if.then12.i.i.i3851: ; preds = %if.then.i.i.i.i3846 fence syncscope("agent") release %5181 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %5161, i1 true) %iszero.i.i.i.i.i.i.i3852 = icmp ne i64 %5161, 0 %cmp2.i.i.i.i.i.i3853 = icmp eq i64 %5181, %sh_prom.i.i.i.i3270 %cmp.i.i.i.i.i2.i3854 = select i1 %iszero.i.i.i.i.i.i.i3852, i1 %cmp2.i.i.i.i.i.i3853, i1 false %conv4.i.i51.i.i.i3855 = zext i1 %cmp.i.i.i.i.i2.i3854 to i32 %shl.i.i52.i.i.i3856 = shl nuw i32 %conv4.i.i51.i.i.i3855, %5162 %xor.i.i.i.i.i3857 = xor i32 %shl.i.i52.i.i.i3856, -1 %5182 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5910, !amdgpu.uniform !42 5183: ; preds = %ComputeEnd5911 %sunkaddr7486 = getelementptr inbounds i8, ptr addrspace(1) %8534, i64 40 %5184 = atomicrmw and ptr addrspace(1) %sunkaddr7486, i32 %.lcssa8877 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %5185, !amdgpu.uniform !42 5185: ; preds = %5183, %ComputeEnd5911 call void @llvm.amdgcn.end.cf.i64(i64 %8561) call void @llvm.amdgcn.wave.barrier() br label %Flow7787, !amdgpu.uniform !42 if.end14.i.i.i3918: ; preds = %Flow7787 %5186 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %5161, i1 true) %iszero.i.i.i.i.i.i3919 = icmp ne i64 %5161, 0 %cmp2.i.i.i.i.i3920 = icmp eq i64 %5186, %sh_prom.i.i.i.i3270 %cmp.i.i.i.i.i3921 = select i1 %iszero.i.i.i.i.i.i3919, i1 %cmp2.i.i.i.i.i3920, i1 false %5187 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i3921) %5188 = extractvalue { i1, i64 } %5187, 0 %5189 = extractvalue { i1, i64 } %5187, 1 br i1 %5188, label %if.then16.i.i.i3923, label %if.end22.i.i.i3922 if.then16.i.i.i3923: ; preds = %if.end14.i.i.i3918 %5190 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i3924 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %5190, i64 %idxprom.i.i.i.i3847, i32 1 store i32 1660944387, ptr %opcode.i.i.i3924, align 8, !tbaa !77 %arrayidx21.i.i.i3925 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %5190, i64 %idxprom.i.i.i.i3847 store i64 %5161, ptr %arrayidx21.i.i.i3925, align 8, !tbaa !80 br label %if.end22.i.i.i3922, !amdgpu.uniform !42 Flow7788: ; preds = %if.end22.i.i.i3922, %Flow7787 %5191 = phi i32 [ %5178, %if.end22.i.i.i3922 ], [ %retval.sroa.8.0.i.i.i3832, %Flow7787 ] %5192 = phi i64 [ %5161, %if.end22.i.i.i3922 ], [ %retval.sroa.2.0.i.i.i3831, %Flow7787 ] %5193 = phi i32 [ %spec.store.select.i.i.i3835, %if.end22.i.i.i3922 ], [ %retval.sroa.6.0.i.i.i3829, %Flow7787 ] br label %cleanup26.i.i.i3858, !amdgpu.uniform !42 if.end22.i.i.i3922: ; preds = %if.then16.i.i.i3923, %if.end14.i.i.i3918 call void @llvm.amdgcn.end.cf.i64(i64 %5189) call void @llvm.amdgcn.wave.barrier() br label %Flow7788, !amdgpu.uniform !42 Flow7789: ; preds = %cleanup26.i.i.i3858, %5167 %5194 = phi i32 [ %5193, %cleanup26.i.i.i3858 ], [ %5157, %5167 ] %5195 = phi i64 [ %5192, %cleanup26.i.i.i3858 ], [ %5158, %5167 ] %5196 = phi i32 [ %5191, %cleanup26.i.i.i3858 ], [ %5159, %5167 ] %5197 = phi i32 [ %5191, %cleanup26.i.i.i3858 ], [ %retval.sroa.8.0.i.i.i3832, %5167 ] %5198 = phi i64 [ %5192, %cleanup26.i.i.i3858 ], [ %retval.sroa.2.0.i.i.i3831, %5167 ] %5199 = phi i32 [ %5193, %cleanup26.i.i.i3858 ], [ %retval.sroa.6.0.i.i.i3829, %5167 ] %5200 = phi i1 [ %cmp.i46.not.i.i.i3850, %cleanup26.i.i.i3858 ], [ true, %5167 ] br i1 %5200, label %for.inc.i.i.i3863, label %Flow7790, !amdgpu.uniform !42 cleanup26.i.i.i3858: ; preds = %Flow7788 br label %Flow7789, !amdgpu.uniform !42 for.inc.i.i.i3863: ; preds = %Flow7789 %inc.i.i.i3868 = add i32 %spec.store.select.i.i.i3835, 1 br label %Flow7790, !amdgpu.uniform !42 Flow7790: ; preds = %for.inc.i.i.i3863, %Flow7789 %5201 = phi i32 [ %inc.i.i.i3868, %for.inc.i.i.i3863 ], [ poison, %Flow7789 ] %5202 = phi i1 [ false, %for.inc.i.i.i3863 ], [ true, %Flow7789 ] br i1 %5202, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i3869, label %for.cond.i.i.i3828, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i3869: ; preds = %Flow7790 %.lcssa8880 = phi i32 [ %5194, %Flow7790 ] %.lcssa8879 = phi i64 [ %5195, %Flow7790 ] %.lcssa8878 = phi i32 [ %5196, %Flow7790 ] fence acquire %5203 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i3870 = shl i32 %.lcssa8880, 6 %idxprom.i19.i.i.i.i.i3871 = zext i32 %mul.i.i.i.i.i.i3870 to i64 %arrayidx.i20.i.i.i.i.i3872 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %5203, i64 %idxprom.i19.i.i.i.i.i3871 %arrayidx.i22.i.i.i.i.i3873 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i3872, i64 %sh_prom.i.i.i.i3270 store i64 %writer.sroa.10.5.i.i.i.i3799, ptr %arrayidx.i22.i.i.i.i.i3873, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i3874 = call i64 @llvm.umin.i64(i64 %writer.sroa.10.5.i.i.i.i3799, i64 56) %5204 = and i64 %spec.select.i.i.i.i.i.i.i3874, 15 %5205 = sub i64 %spec.select.i.i.i.i.i.i.i3874, %5204 %5206 = icmp ne i64 %5205, 0 %5207 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %5206) %5208 = extractvalue { i1, i64 } %5207, 0 %5209 = extractvalue { i1, i64 } %5207, 1 br i1 %5208, label %loop-memcpy-expansion4989.preheader, label %Flow7786 loop-memcpy-expansion4989.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i3869 %5210 = add nuw nsw i64 %4513, 8 %scevgep6402 = getelementptr i8, ptr %5203, i64 %5210 %5211 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i3871, 6 %scevgep6403 = getelementptr i8, ptr %scevgep6402, i64 %5211 br label %loop-memcpy-expansion4989, !amdgpu.uniform !42 Flow7786: ; preds = %Flow7785, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i3869 call void @llvm.amdgcn.end.cf.i64(i64 %5209) br label %loop-memcpy-residual-header4992, !amdgpu.uniform !42 loop-memcpy-expansion4989: ; preds = %loop-memcpy-expansion4989.preheader, %loop-memcpy-expansion4989 %phi.broken8798 = phi i64 [ 0, %loop-memcpy-expansion4989.preheader ], [ %5216, %loop-memcpy-expansion4989 ] %loop-index4990 = phi i64 [ %5214, %loop-memcpy-expansion4989 ], [ 0, %loop-memcpy-expansion4989.preheader ] %5212 = getelementptr i8, ptr %5128, i64 %loop-index4990 %5213 = load <4 x i32>, ptr %5212, align 1 %scevgep6404 = getelementptr i8, ptr %scevgep6403, i64 %loop-index4990 store <4 x i32> %5213, ptr %scevgep6404, align 1 %5214 = add i64 %loop-index4990, 16 %5215 = icmp uge i64 %5214, %5205 %5216 = call i64 @llvm.amdgcn.if.break.i64(i1 %5215, i64 %phi.broken8798) %5217 = call i1 @llvm.amdgcn.loop.i64(i64 %5216) br i1 %5217, label %Flow7785, label %loop-memcpy-expansion4989 Flow7784: ; preds = %Flow7782, %Flow7783 %5218 = phi i64 [ %6238, %Flow7782 ], [ %6230, %Flow7783 ] call void @llvm.amdgcn.end.cf.i64(i64 %6233) br label %post-loop-memcpy-expansion4988, !amdgpu.uniform !42 loop-memcpy-residual4991: ; preds = %loop-memcpy-residual4991.preheader, %loop-memcpy-residual4991 %phi.broken8799 = phi i64 [ 0, %loop-memcpy-residual4991.preheader ], [ %5222, %loop-memcpy-residual4991 ] %residual-loop-index4993 = phi i64 [ %5220, %loop-memcpy-residual4991 ], [ 0, %loop-memcpy-residual4991.preheader ] %scevgep6401 = getelementptr i8, ptr %scevgep6400, i64 %residual-loop-index4993 %5219 = load i8, ptr %scevgep6401, align 1 %scevgep6399 = getelementptr i8, ptr %scevgep6398, i64 %residual-loop-index4993 store i8 %5219, ptr %scevgep6399, align 1 %5220 = add i64 %residual-loop-index4993, 1 %5221 = icmp uge i64 %5220, %5204 %5222 = call i64 @llvm.amdgcn.if.break.i64(i1 %5221, i64 %phi.broken8799) %5223 = call i1 @llvm.amdgcn.loop.i64(i64 %5222) br i1 %5223, label %Flow7782, label %loop-memcpy-residual4991 Flow7782: ; preds = %loop-memcpy-residual4991 %.lcssa8873 = phi i64 [ %5222, %loop-memcpy-residual4991 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8873) br label %Flow7784, !amdgpu.uniform !42 post-loop-memcpy-expansion4988: ; preds = %Flow7784 %tobool.not.i.i.i.i.i.i3876 = icmp eq i32 %.lcssa8878, 0 %conv.i.i.i.i.i.i3877 = zext i1 %tobool.not.i.i.i.i.i.i3876 to i32 fence release %5224 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i3878 = zext i32 %.lcssa8880 to i64 %arrayidx.i24.i.i.i.i.i3879 = getelementptr inbounds nuw i32, ptr %5224, i64 %idxprom.i23.i.i.i.i.i3878 store atomic i32 %conv.i.i.i.i.i.i3877, ptr %arrayidx.i24.i.i.i.i.i3879 monotonic, align 4 %5225 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i3880 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %5225, i64 %idxprom.i23.i.i.i.i.i3878, !amdgpu.uniform !42 %5226 = load i64, ptr %arrayidx.i.i5.i.i3880, align 8, !tbaa !80 %scevgep6384 = getelementptr i8, ptr %5128, i64 56 %5227 = add i64 %writer.sroa.10.5.i.i.i.i3799, -56 br label %while.cond.i.i.i.i3881, !amdgpu.uniform !42 while.cond.i.i.i.i3881: ; preds = %post-loop-memcpy-expansion4988, %Flow7781 %phi.broken8802 = phi i64 [ 0, %post-loop-memcpy-expansion4988 ], [ %5244, %Flow7781 ] %lsr.iv6390 = phi i64 [ %5242, %Flow7781 ], [ %5227, %post-loop-memcpy-expansion4988 ] %lsr.iv6385 = phi ptr [ %5241, %Flow7781 ], [ %scevgep6384, %post-loop-memcpy-expansion4988 ] %port.sroa.37.0.i.i3882 = phi i32 [ %5240, %Flow7781 ], [ %conv.i.i.i.i.i.i3877, %post-loop-memcpy-expansion4988 ] %idx.0.i.i.i.i3883 = phi i64 [ %5239, %Flow7781 ], [ 56, %post-loop-memcpy-expansion4988 ] %cmp.i.i.i.i3884 = icmp ugt i64 %writer.sroa.10.5.i.i.i.i3799, %idx.0.i.i.i.i3883 %5228 = call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i3884) %and.i.i.i.i6.i.i3885 = and i64 %5228, %5226 %tobool.not.i.i.i.i3886 = icmp ne i64 %and.i.i.i.i6.i.i3885, 0 %5229 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i3887 = getelementptr inbounds nuw i32, ptr %5229, i64 %idxprom.i23.i.i.i.i.i3878, !amdgpu.uniform !42 %5230 = load atomic i32, ptr %arrayidx.i22.i.i.i3887 monotonic, align 4 %5231 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i3886) %5232 = extractvalue { i1, i64 } %5231, 0 %5233 = extractvalue { i1, i64 } %5231, 1 br i1 %5232, label %cond.false.i8.i.i.i.i3888, label %Flow7781 cond.false.i8.i.i.i.i3888: ; preds = %while.cond.i.i.i.i3881 %5234 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %5230) %5235 = icmp ne i32 %5234, %port.sroa.37.0.i.i3882 br i1 %5235, label %while.body.i.i21.i.i.i.i3889.preheader, label %Flow7780, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i3889.preheader: ; preds = %cond.false.i8.i.i.i.i3888 br label %while.body.i.i21.i.i.i.i3889, !amdgpu.uniform !42 Flow7780: ; preds = %Flow7779, %cond.false.i8.i.i.i.i3888 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i3892, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i3889: ; preds = %while.body.i.i21.i.i.i.i3889.preheader, %while.body.i.i21.i.i.i.i3889 call void @llvm.amdgcn.s.sleep(i32 2) %5236 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i3890 = getelementptr inbounds nuw i32, ptr %5236, i64 %idxprom.i23.i.i.i.i.i3878, !amdgpu.uniform !42 %5237 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i3890 monotonic, align 4 %5238 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %5237) %cmp.i.not.i.i23.i.i.i.i3891 = icmp eq i32 %5238, %port.sroa.37.0.i.i3882 br i1 %cmp.i.not.i.i23.i.i.i.i3891, label %Flow7779, label %while.body.i.i21.i.i.i.i3889, !amdgpu.uniform !42 Flow7779: ; preds = %while.body.i.i21.i.i.i.i3889 br label %Flow7780, !amdgpu.uniform !42 Flow7781: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3893, %while.cond.i.i.i.i3881 %5239 = phi i64 [ %add.i.i.i.i3896, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3893 ], [ poison, %while.cond.i.i.i.i3881 ] %5240 = phi i32 [ %conv.i.i26.i.i.i.i3894, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3893 ], [ poison, %while.cond.i.i.i.i3881 ] %5241 = phi ptr [ %scevgep6386, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3893 ], [ poison, %while.cond.i.i.i.i3881 ] %5242 = phi i64 [ %lsr.iv.next6391, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3893 ], [ poison, %while.cond.i.i.i.i3881 ] %5243 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3893 ], [ true, %while.cond.i.i.i.i3881 ] call void @llvm.amdgcn.end.cf.i64(i64 %5233) %5244 = call i64 @llvm.amdgcn.if.break.i64(i1 %5243, i64 %phi.broken8802) %5245 = call i1 @llvm.amdgcn.loop.i64(i64 %5244) br i1 %5245, label %cond.false.i.i.i3903, label %while.cond.i.i.i.i3881 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i3892: ; preds = %Flow7780 fence acquire %5246 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i3884) %5247 = extractvalue { i1, i64 } %5246, 0 %5248 = extractvalue { i1, i64 } %5246, 1 br i1 %5247, label %if.then.i.i.i.i.i.i3.i3897, label %Flow7778 if.then.i.i.i.i.i.i3.i3897: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i3892 %sub.i.i.i.i.i.i.i3899 = sub nuw i64 %writer.sroa.10.5.i.i.i.i3799, %idx.0.i.i.i.i3883 %spec.select.i.i.i36.i.i.i.i3900 = call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i3899, i64 64) %5249 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %5250 = and i64 %spec.select.i.i.i36.i.i.i.i3900, 15 %5251 = sub i64 %spec.select.i.i.i36.i.i.i.i3900, %5250 %5252 = icmp ne i64 %5251, 0 %5253 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %5252) %5254 = extractvalue { i1, i64 } %5253, 0 %5255 = extractvalue { i1, i64 } %5253, 1 br i1 %5254, label %loop-memcpy-expansion4983.preheader, label %Flow7777 loop-memcpy-expansion4983.preheader: ; preds = %if.then.i.i.i.i.i.i3.i3897 %arrayidx.i20.i35.i.i.i.i3901 = getelementptr %"struct.rpc::Buffer", ptr %5249, i64 %idxprom.i19.i.i.i.i.i3871 %arrayidx.i22.i38.i.i.i.i3902 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i3901, i64 %sh_prom.i.i.i.i3270 br label %loop-memcpy-expansion4983, !amdgpu.uniform !42 Flow7777: ; preds = %Flow7776, %if.then.i.i.i.i.i.i3.i3897 call void @llvm.amdgcn.end.cf.i64(i64 %5255) br label %loop-memcpy-residual-header4986, !amdgpu.uniform !42 loop-memcpy-expansion4983: ; preds = %loop-memcpy-expansion4983.preheader, %loop-memcpy-expansion4983 %phi.broken8800 = phi i64 [ 0, %loop-memcpy-expansion4983.preheader ], [ %5260, %loop-memcpy-expansion4983 ] %loop-index4984 = phi i64 [ %5258, %loop-memcpy-expansion4983 ], [ 0, %loop-memcpy-expansion4983.preheader ] %scevgep6387 = getelementptr i8, ptr %lsr.iv6385, i64 %loop-index4984 %5256 = load <4 x i32>, ptr %scevgep6387, align 1 %5257 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i3902, i64 %loop-index4984 store <4 x i32> %5256, ptr %5257, align 1 %5258 = add i64 %loop-index4984, 16 %5259 = icmp uge i64 %5258, %5251 %5260 = call i64 @llvm.amdgcn.if.break.i64(i1 %5259, i64 %phi.broken8800) %5261 = call i1 @llvm.amdgcn.loop.i64(i64 %5260) br i1 %5261, label %Flow7776, label %loop-memcpy-expansion4983 Flow7775: ; preds = %Flow7774, %loop-memcpy-residual-header4986 call void @llvm.amdgcn.end.cf.i64(i64 %6223) br label %Flow7778, !amdgpu.uniform !42 loop-memcpy-residual4985: ; preds = %loop-memcpy-residual4985.preheader, %loop-memcpy-residual4985 %phi.broken8801 = phi i64 [ 0, %loop-memcpy-residual4985.preheader ], [ %5265, %loop-memcpy-residual4985 ] %residual-loop-index4987 = phi i64 [ %5263, %loop-memcpy-residual4985 ], [ 0, %loop-memcpy-residual4985.preheader ] %scevgep6396 = getelementptr i8, ptr %scevgep6395, i64 %residual-loop-index4987 %5262 = load i8, ptr %scevgep6396, align 1 %scevgep6394 = getelementptr i8, ptr %scevgep6393, i64 %residual-loop-index4987 store i8 %5262, ptr %scevgep6394, align 1 %5263 = add i64 %residual-loop-index4987, 1 %5264 = icmp uge i64 %5263, %5250 %5265 = call i64 @llvm.amdgcn.if.break.i64(i1 %5264, i64 %phi.broken8801) %5266 = call i1 @llvm.amdgcn.loop.i64(i64 %5265) br i1 %5266, label %Flow7774, label %loop-memcpy-residual4985 Flow7774: ; preds = %loop-memcpy-residual4985 %.lcssa8870 = phi i64 [ %5265, %loop-memcpy-residual4985 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8870) br label %Flow7775, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3893: ; preds = %Flow7778 %conv.i.i26.i.i.i.i3894 = xor i32 %port.sroa.37.0.i.i3882, 1 fence release %5267 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i3895 = getelementptr inbounds nuw i32, ptr %5267, i64 %idxprom.i23.i.i.i.i.i3878 store atomic i32 %conv.i.i26.i.i.i.i3894, ptr %arrayidx.i24.i29.i.i.i.i3895 monotonic, align 4 %add.i.i.i.i3896 = add i64 %idx.0.i.i.i.i3883, 64 %scevgep6386 = getelementptr i8, ptr %lsr.iv6385, i64 64 %lsr.iv.next6391 = add i64 %lsr.iv6390, -64 br label %Flow7781, !amdgpu.uniform !42 cond.false.i.i.i3903: ; preds = %Flow7781 %.lcssa8872 = phi i64 [ %5244, %Flow7781 ] %port.sroa.37.0.i.i3882.lcssa = phi i32 [ %port.sroa.37.0.i.i3882, %Flow7781 ] %.lcssa8871 = phi i32 [ %5230, %Flow7781 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8872) %5268 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa8871) %5269 = icmp ne i32 %5268, %port.sroa.37.0.i.i3882.lcssa %5270 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %5269) %5271 = extractvalue { i1, i64 } %5270, 0 %5272 = extractvalue { i1, i64 } %5270, 1 br i1 %5271, label %while.body.i.i.i.i3904.preheader, label %Flow7773 while.body.i.i.i.i3904.preheader: ; preds = %cond.false.i.i.i3903 br label %while.body.i.i.i.i3904, !amdgpu.uniform !42 Flow7773: ; preds = %Flow7772, %cond.false.i.i.i3903 call void @llvm.amdgcn.end.cf.i64(i64 %5272) br label %_ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i3907, !amdgpu.uniform !42 while.body.i.i.i.i3904: ; preds = %while.body.i.i.i.i3904.preheader, %while.body.i.i.i.i3904 %phi.broken8803 = phi i64 [ 0, %while.body.i.i.i.i3904.preheader ], [ %5276, %while.body.i.i.i.i3904 ] call void @llvm.amdgcn.s.sleep(i32 2) %5273 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i3905 = getelementptr inbounds nuw i32, ptr %5273, i64 %idxprom.i23.i.i.i.i.i3878, !amdgpu.uniform !42 %5274 = load atomic i32, ptr %arrayidx.i.i.i8.i.i3905 monotonic, align 4 %5275 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %5274) %cmp.i.not.i.i.i.i3906 = icmp eq i32 %5275, %port.sroa.37.0.i.i3882.lcssa %5276 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i3906, i64 %phi.broken8803) %5277 = call i1 @llvm.amdgcn.loop.i64(i64 %5276) br i1 %5277, label %Flow7772, label %while.body.i.i.i.i3904 Flow7772: ; preds = %while.body.i.i.i.i3904 %.lcssa8868 = phi i64 [ %5276, %while.body.i.i.i.i3904 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8868) br label %Flow7773, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i3907: ; preds = %Flow7773 fence acquire call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %5278 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa8879, i1 true) %iszero.i.i.i.i.i13.i.i3908 = icmp ne i64 %.lcssa8879, 0 %cmp2.i.i.i.i14.i.i3909 = icmp eq i64 %5278, %sh_prom.i.i.i.i3270 %cmp.i.i.i.i15.i.i3910 = select i1 %iszero.i.i.i.i.i13.i.i3908, i1 %cmp2.i.i.i.i14.i.i3909, i1 false %5279 = and i32 %.lcssa8880, 31 %conv4.i.i.i19.i.i3914 = zext i1 %cmp.i.i.i.i15.i.i3910 to i32 %shl.i.i.i20.i.i3915 = shl nuw i32 %conv4.i.i.i19.i.i3914, %5279 %xor.i.i.i21.i.i3916 = xor i32 %shl.i.i.i20.i.i3915, -1 %5280 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5914, !amdgpu.uniform !42 5281: ; preds = %ComputeEnd5915 %div8.i.i.i16.i.i3911 = lshr i32 %.lcssa8880, 5 %idxprom.i.i.i17.i.i3912 = zext nneg i32 %div8.i.i.i16.i.i3911 to i64 %5282 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i3912 %sunkaddr7487 = getelementptr inbounds i8, ptr addrspace(1) %5282, i64 40 %5283 = atomicrmw and ptr addrspace(1) %sunkaddr7487, i32 %.lcssa8867 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %5284, !amdgpu.uniform !42 5284: ; preds = %5281, %ComputeEnd5915 call void @llvm.amdgcn.end.cf.i64(i64 %8578) call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i.i3942, !amdgpu.uniform !42 for.cond.i.i.i3942: ; preds = %5284, %Flow7771 %5285 = phi i32 [ %5322, %Flow7771 ], [ poison, %5284 ] %5286 = phi i64 [ %5323, %Flow7771 ], [ poison, %5284 ] %5287 = phi i32 [ %5324, %Flow7771 ], [ poison, %5284 ] %retval.sroa.6.0.i.i.i3943 = phi i32 [ %5327, %Flow7771 ], [ undef, %5284 ] %retval.sroa.2.0.i.i.i3945 = phi i64 [ %5326, %Flow7771 ], [ undef, %5284 ] %retval.sroa.8.0.i.i.i3946 = phi i32 [ %5325, %Flow7771 ], [ undef, %5284 ] %index.0.i.i.i3947 = phi i32 [ %5329, %Flow7771 ], [ 0, %5284 ] %5288 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i3948 = icmp ult i32 %index.0.i.i.i3947, %5288 %spec.store.select.i.i.i3949 = select i1 %cmp.not.i.i.i3948, i32 %index.0.i.i.i3947, i32 0 %5289 = call i64 @llvm.amdgcn.ballot.i64(i1 true) %5290 = and i32 %spec.store.select.i.i.i3949, 31 %5291 = lshr i64 %5289, %sh_prom.i.i.i.i3270 %5292 = trunc i64 %5291 to i32 %conv4.i.i.i.i.i3953 = and i32 %5292, 1 %shl.i.i.i.i.i3954 = shl nuw i32 %conv4.i.i.i.i.i3953, %5290 br label %ComputeLoop5918, !amdgpu.uniform !42 5293: ; preds = %ComputeEnd5919 %sunkaddr7488 = getelementptr inbounds i8, ptr addrspace(1) %8588, i64 40 %5294 = atomicrmw or ptr addrspace(1) %sunkaddr7488, i32 %.lcssa8861 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %5295, !amdgpu.uniform !42 5295: ; preds = %5293, %ComputeEnd5919 %5296 = phi i32 [ %5294, %5293 ], [ poison, %ComputeEnd5919 ] call void @llvm.amdgcn.end.cf.i64(i64 %8597) %5297 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %5296) %5298 = or i32 %5297, %.lcssa8862 %shl5.i.i.i.i.i3955 = shl nuw i32 1, %5290 %and.i.i.i.i.i3956 = and i32 %shl5.i.i.i.i.i3955, %5298 %tobool3.i.i.i.i3957 = icmp ne i32 %and.i.i.i.i.i3956, 0 %5299 = call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i3957) %and.i.i.i.i.i.i3958 = and i64 %5299, %5289 %cmp.i.not.i.i.i3959 = icmp ne i64 %5289, %and.i.i.i.i.i.i3958 br i1 %cmp.i.not.i.i.i3959, label %if.then.i.i.i.i3960, label %Flow7770, !amdgpu.uniform !42 if.then.i.i.i.i3960: ; preds = %5295 fence syncscope("agent") acquire %5300 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %5301 = extractelement <2 x i64> %5300, i32 0 %5302 = inttoptr i64 %5301 to ptr %5303 = extractelement <2 x i64> %5300, i32 1 %5304 = inttoptr i64 %5303 to ptr %idxprom.i.i.i.i3961 = zext i32 %spec.store.select.i.i.i3949 to i64 %arrayidx.i.i.i.i3962 = getelementptr inbounds nuw i32, ptr %5302, i64 %idxprom.i.i.i.i3961, !amdgpu.uniform !42 %5305 = load atomic i32, ptr %arrayidx.i.i.i.i3962 monotonic, align 4 %5306 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %5305) %arrayidx.i45.i.i.i3963 = getelementptr inbounds nuw i32, ptr %5304, i64 %idxprom.i.i.i.i3961, !amdgpu.uniform !42 %5307 = load atomic i32, ptr %arrayidx.i45.i.i.i3963 monotonic, align 4 %5308 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %5307) %cmp.i46.not.i.i.i3964 = icmp ne i32 %5306, %5308 br i1 %cmp.i46.not.i.i.i3964, label %if.then12.i.i.i3965, label %Flow7768, !amdgpu.uniform !42 if.then12.i.i.i3965: ; preds = %if.then.i.i.i.i3960 fence syncscope("agent") release %5309 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %5289, i1 true) %iszero.i.i.i.i.i.i.i3966 = icmp ne i64 %5289, 0 %cmp2.i.i.i.i.i.i3967 = icmp eq i64 %5309, %sh_prom.i.i.i.i3270 %cmp.i.i.i.i.i.i3968 = select i1 %iszero.i.i.i.i.i.i.i3966, i1 %cmp2.i.i.i.i.i.i3967, i1 false %conv4.i.i51.i.i.i3969 = zext i1 %cmp.i.i.i.i.i.i3968 to i32 %shl.i.i52.i.i.i3970 = shl nuw i32 %conv4.i.i51.i.i.i3969, %5290 %xor.i.i.i.i.i3971 = xor i32 %shl.i.i52.i.i.i3970, -1 %5310 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5923, !amdgpu.uniform !42 5311: ; preds = %ComputeEnd5924 %sunkaddr7489 = getelementptr inbounds i8, ptr addrspace(1) %8588, i64 40 %5312 = atomicrmw and ptr addrspace(1) %sunkaddr7489, i32 %.lcssa8863 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %5313, !amdgpu.uniform !42 5313: ; preds = %5311, %ComputeEnd5924 call void @llvm.amdgcn.end.cf.i64(i64 %8615) call void @llvm.amdgcn.wave.barrier() br label %Flow7768, !amdgpu.uniform !42 if.end14.i.i.i4029: ; preds = %Flow7768 %5314 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %5289, i1 true) %iszero.i.i.i.i.i.i4030 = icmp ne i64 %5289, 0 %cmp2.i.i.i.i.i4031 = icmp eq i64 %5314, %sh_prom.i.i.i.i3270 %cmp.i.i.i.i.i4032 = select i1 %iszero.i.i.i.i.i.i4030, i1 %cmp2.i.i.i.i.i4031, i1 false %5315 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i4032) %5316 = extractvalue { i1, i64 } %5315, 0 %5317 = extractvalue { i1, i64 } %5315, 1 br i1 %5316, label %if.then16.i.i.i4034, label %if.end22.i.i.i4033 if.then16.i.i.i4034: ; preds = %if.end14.i.i.i4029 %5318 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i4035 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %5318, i64 %idxprom.i.i.i.i3961, i32 1 store i32 1660944387, ptr %opcode.i.i.i4035, align 8, !tbaa !77 %arrayidx21.i.i.i4036 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %5318, i64 %idxprom.i.i.i.i3961 store i64 %5289, ptr %arrayidx21.i.i.i4036, align 8, !tbaa !80 br label %if.end22.i.i.i4033, !amdgpu.uniform !42 Flow7769: ; preds = %if.end22.i.i.i4033, %Flow7768 %5319 = phi i32 [ %5306, %if.end22.i.i.i4033 ], [ %retval.sroa.8.0.i.i.i3946, %Flow7768 ] %5320 = phi i64 [ %5289, %if.end22.i.i.i4033 ], [ %retval.sroa.2.0.i.i.i3945, %Flow7768 ] %5321 = phi i32 [ %spec.store.select.i.i.i3949, %if.end22.i.i.i4033 ], [ %retval.sroa.6.0.i.i.i3943, %Flow7768 ] br label %cleanup26.i.i.i3972, !amdgpu.uniform !42 if.end22.i.i.i4033: ; preds = %if.then16.i.i.i4034, %if.end14.i.i.i4029 call void @llvm.amdgcn.end.cf.i64(i64 %5317) call void @llvm.amdgcn.wave.barrier() br label %Flow7769, !amdgpu.uniform !42 Flow7770: ; preds = %cleanup26.i.i.i3972, %5295 %5322 = phi i32 [ %5321, %cleanup26.i.i.i3972 ], [ %5285, %5295 ] %5323 = phi i64 [ %5320, %cleanup26.i.i.i3972 ], [ %5286, %5295 ] %5324 = phi i32 [ %5319, %cleanup26.i.i.i3972 ], [ %5287, %5295 ] %5325 = phi i32 [ %5319, %cleanup26.i.i.i3972 ], [ %retval.sroa.8.0.i.i.i3946, %5295 ] %5326 = phi i64 [ %5320, %cleanup26.i.i.i3972 ], [ %retval.sroa.2.0.i.i.i3945, %5295 ] %5327 = phi i32 [ %5321, %cleanup26.i.i.i3972 ], [ %retval.sroa.6.0.i.i.i3943, %5295 ] %5328 = phi i1 [ %cmp.i46.not.i.i.i3964, %cleanup26.i.i.i3972 ], [ true, %5295 ] br i1 %5328, label %for.inc.i.i.i3977, label %Flow7771, !amdgpu.uniform !42 cleanup26.i.i.i3972: ; preds = %Flow7769 br label %Flow7770, !amdgpu.uniform !42 for.inc.i.i.i3977: ; preds = %Flow7770 %inc.i.i.i3982 = add i32 %spec.store.select.i.i.i3949, 1 br label %Flow7771, !amdgpu.uniform !42 Flow7771: ; preds = %for.inc.i.i.i3977, %Flow7770 %5329 = phi i32 [ %inc.i.i.i3982, %for.inc.i.i.i3977 ], [ poison, %Flow7770 ] %5330 = phi i1 [ false, %for.inc.i.i.i3977 ], [ true, %Flow7770 ] br i1 %5330, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i3983, label %for.cond.i.i.i3942, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i3983: ; preds = %Flow7771 %.lcssa8866 = phi i32 [ %5322, %Flow7771 ] %.lcssa8865 = phi i64 [ %5323, %Flow7771 ] %.lcssa8864 = phi i32 [ %5324, %Flow7771 ] fence acquire %5331 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i3984 = shl i32 %.lcssa8866, 6 %idxprom.i19.i.i.i.i.i3985 = zext i32 %mul.i.i.i.i.i.i3984 to i64 %arrayidx.i20.i.i.i.i.i3986 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %5331, i64 %idxprom.i19.i.i.i.i.i3985 %arrayidx.i22.i.i.i.i.i3987 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i3986, i64 %sh_prom.i.i.i.i3270 store i64 1, ptr %arrayidx.i22.i.i.i.i.i3987, align 8, !tbaa !82 %arrayidx6.i.i.i.i.i.i.i3988 = getelementptr inbounds nuw i8, ptr %arrayidx.i22.i.i.i.i.i3987, i64 8 store i8 32, ptr %arrayidx6.i.i.i.i.i.i.i3988, align 8 %tobool.not.i.i.i.i.i.i3989 = icmp eq i32 %.lcssa8864, 0 %conv.i.i.i.i.i.i3990 = zext i1 %tobool.not.i.i.i.i.i.i3989 to i32 fence release %5332 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i3991 = zext i32 %.lcssa8866 to i64 %arrayidx.i24.i.i.i.i.i3992 = getelementptr inbounds nuw i32, ptr %5332, i64 %idxprom.i23.i.i.i.i.i3991 store atomic i32 %conv.i.i.i.i.i.i3990, ptr %arrayidx.i24.i.i.i.i.i3992 monotonic, align 4 %5333 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i3993 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %5333, i64 %idxprom.i23.i.i.i.i.i3991, !amdgpu.uniform !42 %5334 = load i64, ptr %arrayidx.i.i5.i.i3993, align 8, !tbaa !80 br label %while.cond.i.i.i.i3994, !amdgpu.uniform !42 while.cond.i.i.i.i3994: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i3983, %Flow7767 %phi.broken8804 = phi i64 [ 0, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i3983 ], [ %5349, %Flow7767 ] %port.sroa.37.0.i.i3995 = phi i32 [ %5347, %Flow7767 ], [ %conv.i.i.i.i.i.i3990, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i3983 ] %idx.0.i.i.i.i3996 = phi i64 [ %5346, %Flow7767 ], [ 56, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i3983 ] %cmp.i.i.i.i3997 = icmp eq i64 %idx.0.i.i.i.i3996, 0 %5335 = call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i3997) %and.i.i.i.i6.i.i3998 = and i64 %5335, %5334 %tobool.not.i.i.i.i3999 = icmp ne i64 %and.i.i.i.i6.i.i3998, 0 %5336 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i4000 = getelementptr inbounds nuw i32, ptr %5336, i64 %idxprom.i23.i.i.i.i.i3991, !amdgpu.uniform !42 %5337 = load atomic i32, ptr %arrayidx.i22.i.i.i4000 monotonic, align 4 %5338 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i3999) %5339 = extractvalue { i1, i64 } %5338, 0 %5340 = extractvalue { i1, i64 } %5338, 1 br i1 %5339, label %cond.false.i8.i.i.i.i4001, label %Flow7767 cond.false.i8.i.i.i.i4001: ; preds = %while.cond.i.i.i.i3994 %5341 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %5337) %5342 = icmp ne i32 %5341, %port.sroa.37.0.i.i3995 br i1 %5342, label %while.body.i.i21.i.i.i.i4002.preheader, label %Flow7766, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i4002.preheader: ; preds = %cond.false.i8.i.i.i.i4001 br label %while.body.i.i21.i.i.i.i4002, !amdgpu.uniform !42 Flow7766: ; preds = %Flow7765, %cond.false.i8.i.i.i.i4001 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i4005, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i4002: ; preds = %while.body.i.i21.i.i.i.i4002.preheader, %while.body.i.i21.i.i.i.i4002 call void @llvm.amdgcn.s.sleep(i32 2) %5343 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i4003 = getelementptr inbounds nuw i32, ptr %5343, i64 %idxprom.i23.i.i.i.i.i3991, !amdgpu.uniform !42 %5344 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i4003 monotonic, align 4 %5345 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %5344) %cmp.i.not.i.i23.i.i.i.i4004 = icmp eq i32 %5345, %port.sroa.37.0.i.i3995 br i1 %cmp.i.not.i.i23.i.i.i.i4004, label %Flow7765, label %while.body.i.i21.i.i.i.i4002, !amdgpu.uniform !42 Flow7765: ; preds = %while.body.i.i21.i.i.i.i4002 br label %Flow7766, !amdgpu.uniform !42 Flow7767: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4006, %while.cond.i.i.i.i3994 %5346 = phi i64 [ %add.i.i.i.i4009, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4006 ], [ poison, %while.cond.i.i.i.i3994 ] %5347 = phi i32 [ %conv.i.i26.i.i.i.i4007, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4006 ], [ poison, %while.cond.i.i.i.i3994 ] %5348 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4006 ], [ true, %while.cond.i.i.i.i3994 ] call void @llvm.amdgcn.end.cf.i64(i64 %5340) %5349 = call i64 @llvm.amdgcn.if.break.i64(i1 %5348, i64 %phi.broken8804) %5350 = call i1 @llvm.amdgcn.loop.i64(i64 %5349) br i1 %5350, label %cond.false.i.i.i4015, label %while.cond.i.i.i.i3994 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i4005: ; preds = %Flow7766 fence acquire br i1 %cmp.i.i.i.i3997, label %if.then.i.i.i.i.i.i.i4010, label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4006, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i4010: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i4005 %5351 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %arrayidx.i20.i35.i.i.i.i4013 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %5351, i64 %idxprom.i19.i.i.i.i.i3985 %arrayidx.i22.i38.i.i.i.i4014 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i4013, i64 %sh_prom.i.i.i.i3270 store i8 32, ptr %arrayidx.i22.i38.i.i.i.i4014, align 1 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4006, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4006: ; preds = %if.then.i.i.i.i.i.i.i4010, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i4005 %conv.i.i26.i.i.i.i4007 = xor i32 %port.sroa.37.0.i.i3995, 1 fence release %5352 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i4008 = getelementptr inbounds nuw i32, ptr %5352, i64 %idxprom.i23.i.i.i.i.i3991 store atomic i32 %conv.i.i26.i.i.i.i4007, ptr %arrayidx.i24.i29.i.i.i.i4008 monotonic, align 4 %add.i.i.i.i4009 = add i64 %idx.0.i.i.i.i3996, 64 br label %Flow7767, !amdgpu.uniform !42 cond.false.i.i.i4015: ; preds = %Flow7767 %.lcssa8860 = phi i64 [ %5349, %Flow7767 ] %port.sroa.37.0.i.i3995.lcssa = phi i32 [ %port.sroa.37.0.i.i3995, %Flow7767 ] %.lcssa8859 = phi i32 [ %5337, %Flow7767 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8860) %5353 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa8859) %5354 = icmp ne i32 %5353, %port.sroa.37.0.i.i3995.lcssa %5355 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %5354) %5356 = extractvalue { i1, i64 } %5355, 0 %5357 = extractvalue { i1, i64 } %5355, 1 br i1 %5356, label %while.body.i.i.i.i4016.preheader, label %Flow7764 while.body.i.i.i.i4016.preheader: ; preds = %cond.false.i.i.i4015 br label %while.body.i.i.i.i4016, !amdgpu.uniform !42 Flow7764: ; preds = %Flow7763, %cond.false.i.i.i4015 call void @llvm.amdgcn.end.cf.i64(i64 %5357) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit4037, !amdgpu.uniform !42 while.body.i.i.i.i4016: ; preds = %while.body.i.i.i.i4016.preheader, %while.body.i.i.i.i4016 %phi.broken8805 = phi i64 [ 0, %while.body.i.i.i.i4016.preheader ], [ %5361, %while.body.i.i.i.i4016 ] call void @llvm.amdgcn.s.sleep(i32 2) %5358 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i4017 = getelementptr inbounds nuw i32, ptr %5358, i64 %idxprom.i23.i.i.i.i.i3991, !amdgpu.uniform !42 %5359 = load atomic i32, ptr %arrayidx.i.i.i8.i.i4017 monotonic, align 4 %5360 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %5359) %cmp.i.not.i.i.i.i4018 = icmp eq i32 %5360, %port.sroa.37.0.i.i3995.lcssa %5361 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i4018, i64 %phi.broken8805) %5362 = call i1 @llvm.amdgcn.loop.i64(i64 %5361) br i1 %5362, label %Flow7763, label %while.body.i.i.i.i4016 Flow7763: ; preds = %while.body.i.i.i.i4016 %.lcssa8858 = phi i64 [ %5361, %while.body.i.i.i.i4016 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8858) br label %Flow7764, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit4037: ; preds = %Flow7764 fence acquire call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %5363 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa8865, i1 true) %iszero.i.i.i.i.i13.i.i4020 = icmp ne i64 %.lcssa8865, 0 %cmp2.i.i.i.i14.i.i4021 = icmp eq i64 %5363, %sh_prom.i.i.i.i3270 %cmp.i.i.i.i15.i.i4022 = select i1 %iszero.i.i.i.i.i13.i.i4020, i1 %cmp2.i.i.i.i14.i.i4021, i1 false %5364 = and i32 %.lcssa8866, 31 %conv4.i.i.i19.i.i4026 = zext i1 %cmp.i.i.i.i15.i.i4022 to i32 %shl.i.i.i20.i.i4027 = shl nuw i32 %conv4.i.i.i19.i.i4026, %5364 %xor.i.i.i21.i.i4028 = xor i32 %shl.i.i.i20.i.i4027, -1 %5365 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5927, !amdgpu.uniform !42 5366: ; preds = %ComputeEnd5928 %div8.i.i.i16.i.i4023 = lshr i32 %.lcssa8866, 5 %idxprom.i.i.i17.i.i4024 = zext nneg i32 %div8.i.i.i16.i.i4023 to i64 %5367 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i4024 %sunkaddr7490 = getelementptr inbounds i8, ptr addrspace(1) %5367, i64 40 %5368 = atomicrmw and ptr addrspace(1) %sunkaddr7490, i32 %.lcssa8857 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %5369, !amdgpu.uniform !42 5369: ; preds = %5366, %ComputeEnd5928 call void @llvm.amdgcn.end.cf.i64(i64 %8632) call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i1.i4046, !amdgpu.uniform !42 for.cond.i.i1.i4046: ; preds = %5369, %Flow7762 %5370 = phi i32 [ %5407, %Flow7762 ], [ poison, %5369 ] %5371 = phi i64 [ %5408, %Flow7762 ], [ poison, %5369 ] %5372 = phi i32 [ %5409, %Flow7762 ], [ poison, %5369 ] %retval.sroa.6.0.i.i.i4047 = phi i32 [ %5412, %Flow7762 ], [ undef, %5369 ] %retval.sroa.2.0.i.i.i4049 = phi i64 [ %5411, %Flow7762 ], [ undef, %5369 ] %retval.sroa.8.0.i.i.i4050 = phi i32 [ %5410, %Flow7762 ], [ undef, %5369 ] %index.0.i.i.i4051 = phi i32 [ %5414, %Flow7762 ], [ 0, %5369 ] %5373 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i4052 = icmp ult i32 %index.0.i.i.i4051, %5373 %spec.store.select.i.i.i4053 = select i1 %cmp.not.i.i.i4052, i32 %index.0.i.i.i4051, i32 0 %5374 = call i64 @llvm.amdgcn.ballot.i64(i1 true) %5375 = and i32 %spec.store.select.i.i.i4053, 31 %5376 = lshr i64 %5374, %sh_prom.i.i.i.i3270 %5377 = trunc i64 %5376 to i32 %conv4.i.i.i.i.i4057 = and i32 %5377, 1 %shl.i.i.i.i.i4058 = shl nuw i32 %conv4.i.i.i.i.i4057, %5375 br label %ComputeLoop5931, !amdgpu.uniform !42 5378: ; preds = %ComputeEnd5932 %sunkaddr7491 = getelementptr inbounds i8, ptr addrspace(1) %8642, i64 40 %5379 = atomicrmw or ptr addrspace(1) %sunkaddr7491, i32 %.lcssa8851 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %5380, !amdgpu.uniform !42 5380: ; preds = %5378, %ComputeEnd5932 %5381 = phi i32 [ %5379, %5378 ], [ poison, %ComputeEnd5932 ] call void @llvm.amdgcn.end.cf.i64(i64 %8651) %5382 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %5381) %5383 = or i32 %5382, %.lcssa8852 %shl5.i.i.i.i.i4059 = shl nuw i32 1, %5375 %and.i.i.i.i.i4060 = and i32 %shl5.i.i.i.i.i4059, %5383 %tobool3.i.i.i.i4061 = icmp ne i32 %and.i.i.i.i.i4060, 0 %5384 = call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i4061) %and.i.i.i.i.i.i4062 = and i64 %5384, %5374 %cmp.i.not.i.i.i4063 = icmp ne i64 %5374, %and.i.i.i.i.i.i4062 br i1 %cmp.i.not.i.i.i4063, label %if.then.i.i.i.i4064, label %Flow7761, !amdgpu.uniform !42 if.then.i.i.i.i4064: ; preds = %5380 fence syncscope("agent") acquire %5385 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %5386 = extractelement <2 x i64> %5385, i32 0 %5387 = inttoptr i64 %5386 to ptr %5388 = extractelement <2 x i64> %5385, i32 1 %5389 = inttoptr i64 %5388 to ptr %idxprom.i.i.i.i4065 = zext i32 %spec.store.select.i.i.i4053 to i64 %arrayidx.i.i.i.i4066 = getelementptr inbounds nuw i32, ptr %5387, i64 %idxprom.i.i.i.i4065, !amdgpu.uniform !42 %5390 = load atomic i32, ptr %arrayidx.i.i.i.i4066 monotonic, align 4 %5391 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %5390) %arrayidx.i45.i.i.i4067 = getelementptr inbounds nuw i32, ptr %5389, i64 %idxprom.i.i.i.i4065, !amdgpu.uniform !42 %5392 = load atomic i32, ptr %arrayidx.i45.i.i.i4067 monotonic, align 4 %5393 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %5392) %cmp.i46.not.i.i.i4068 = icmp ne i32 %5391, %5393 br i1 %cmp.i46.not.i.i.i4068, label %if.then12.i.i.i4069, label %Flow7759, !amdgpu.uniform !42 if.then12.i.i.i4069: ; preds = %if.then.i.i.i.i4064 fence syncscope("agent") release %5394 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %5374, i1 true) %iszero.i.i.i.i.i.i.i4070 = icmp ne i64 %5374, 0 %cmp2.i.i.i.i.i.i4071 = icmp eq i64 %5394, %sh_prom.i.i.i.i3270 %cmp.i.i.i.i.i.i4072 = select i1 %iszero.i.i.i.i.i.i.i4070, i1 %cmp2.i.i.i.i.i.i4071, i1 false %conv4.i.i51.i.i.i4073 = zext i1 %cmp.i.i.i.i.i.i4072 to i32 %shl.i.i52.i.i.i4074 = shl nuw i32 %conv4.i.i51.i.i.i4073, %5375 %xor.i.i.i.i.i4075 = xor i32 %shl.i.i52.i.i.i4074, -1 %5395 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5936, !amdgpu.uniform !42 5396: ; preds = %ComputeEnd5937 %sunkaddr7492 = getelementptr inbounds i8, ptr addrspace(1) %8642, i64 40 %5397 = atomicrmw and ptr addrspace(1) %sunkaddr7492, i32 %.lcssa8853 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %5398, !amdgpu.uniform !42 5398: ; preds = %5396, %ComputeEnd5937 call void @llvm.amdgcn.end.cf.i64(i64 %8669) call void @llvm.amdgcn.wave.barrier() br label %Flow7759, !amdgpu.uniform !42 if.end14.i.i.i4135: ; preds = %Flow7759 %5399 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %5374, i1 true) %iszero.i.i.i.i.i.i4136 = icmp ne i64 %5374, 0 %cmp2.i.i.i.i.i4137 = icmp eq i64 %5399, %sh_prom.i.i.i.i3270 %cmp.i.i.i.i.i4138 = select i1 %iszero.i.i.i.i.i.i4136, i1 %cmp2.i.i.i.i.i4137, i1 false %5400 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i4138) %5401 = extractvalue { i1, i64 } %5400, 0 %5402 = extractvalue { i1, i64 } %5400, 1 br i1 %5401, label %if.then16.i.i.i4140, label %if.end22.i.i.i4139 if.then16.i.i.i4140: ; preds = %if.end14.i.i.i4135 %5403 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i4141 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %5403, i64 %idxprom.i.i.i.i4065, i32 1 store i32 1660944387, ptr %opcode.i.i.i4141, align 8, !tbaa !77 %arrayidx21.i.i.i4142 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %5403, i64 %idxprom.i.i.i.i4065 store i64 %5374, ptr %arrayidx21.i.i.i4142, align 8, !tbaa !80 br label %if.end22.i.i.i4139, !amdgpu.uniform !42 Flow7760: ; preds = %if.end22.i.i.i4139, %Flow7759 %5404 = phi i32 [ %5391, %if.end22.i.i.i4139 ], [ %retval.sroa.8.0.i.i.i4050, %Flow7759 ] %5405 = phi i64 [ %5374, %if.end22.i.i.i4139 ], [ %retval.sroa.2.0.i.i.i4049, %Flow7759 ] %5406 = phi i32 [ %spec.store.select.i.i.i4053, %if.end22.i.i.i4139 ], [ %retval.sroa.6.0.i.i.i4047, %Flow7759 ] br label %cleanup26.i.i.i4076, !amdgpu.uniform !42 if.end22.i.i.i4139: ; preds = %if.then16.i.i.i4140, %if.end14.i.i.i4135 call void @llvm.amdgcn.end.cf.i64(i64 %5402) call void @llvm.amdgcn.wave.barrier() br label %Flow7760, !amdgpu.uniform !42 Flow7761: ; preds = %cleanup26.i.i.i4076, %5380 %5407 = phi i32 [ %5406, %cleanup26.i.i.i4076 ], [ %5370, %5380 ] %5408 = phi i64 [ %5405, %cleanup26.i.i.i4076 ], [ %5371, %5380 ] %5409 = phi i32 [ %5404, %cleanup26.i.i.i4076 ], [ %5372, %5380 ] %5410 = phi i32 [ %5404, %cleanup26.i.i.i4076 ], [ %retval.sroa.8.0.i.i.i4050, %5380 ] %5411 = phi i64 [ %5405, %cleanup26.i.i.i4076 ], [ %retval.sroa.2.0.i.i.i4049, %5380 ] %5412 = phi i32 [ %5406, %cleanup26.i.i.i4076 ], [ %retval.sroa.6.0.i.i.i4047, %5380 ] %5413 = phi i1 [ %cmp.i46.not.i.i.i4068, %cleanup26.i.i.i4076 ], [ true, %5380 ] br i1 %5413, label %for.inc.i.i.i4081, label %Flow7762, !amdgpu.uniform !42 cleanup26.i.i.i4076: ; preds = %Flow7760 br label %Flow7761, !amdgpu.uniform !42 for.inc.i.i.i4081: ; preds = %Flow7761 %inc.i.i.i4086 = add i32 %spec.store.select.i.i.i4053, 1 br label %Flow7762, !amdgpu.uniform !42 Flow7762: ; preds = %for.inc.i.i.i4081, %Flow7761 %5414 = phi i32 [ %inc.i.i.i4086, %for.inc.i.i.i4081 ], [ poison, %Flow7761 ] %5415 = phi i1 [ false, %for.inc.i.i.i4081 ], [ true, %Flow7761 ] br i1 %5415, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i4087, label %for.cond.i.i1.i4046, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i4087: ; preds = %Flow7762 %.lcssa8856 = phi i32 [ %5407, %Flow7762 ] %.lcssa8855 = phi i64 [ %5408, %Flow7762 ] %.lcssa8854 = phi i32 [ %5409, %Flow7762 ] fence acquire %5416 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i4088 = shl i32 %.lcssa8856, 6 %idxprom.i19.i.i.i.i.i4089 = zext i32 %mul.i.i.i.i.i.i4088 to i64 %arrayidx.i20.i.i.i.i.i4090 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %5416, i64 %idxprom.i19.i.i.i.i.i4089 %arrayidx.i22.i.i.i.i.i4091 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i4090, i64 %sh_prom.i.i.i.i3270 store i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.28.44 to ptr), i64 7) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.28.44 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i4091, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i4092 = call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.28.44 to ptr), i64 7) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.28.44 to ptr) to i64)), i64 56) %5417 = and i64 %spec.select.i.i.i.i.i.i.i4092, 15 %5418 = sub i64 %spec.select.i.i.i.i.i.i.i4092, %5417 %5419 = icmp ne i64 %5418, 0 br i1 %5419, label %loop-memcpy-expansion5433.preheader, label %Flow7758, !amdgpu.uniform !42 loop-memcpy-expansion5433.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i4087 %5420 = add nuw nsw i64 %4513, 8 %scevgep6381 = getelementptr i8, ptr %5416, i64 %5420 %5421 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i4089, 6 %scevgep6382 = getelementptr i8, ptr %scevgep6381, i64 %5421 br label %loop-memcpy-expansion5433, !amdgpu.uniform !42 Flow7758: ; preds = %Flow7757, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i4087 br label %loop-memcpy-residual-header5436, !amdgpu.uniform !42 loop-memcpy-expansion5433: ; preds = %loop-memcpy-expansion5433.preheader, %loop-memcpy-expansion5433 %loop-index5434 = phi i64 [ %5424, %loop-memcpy-expansion5433 ], [ 0, %loop-memcpy-expansion5433.preheader ] %5422 = getelementptr i8, ptr addrspace(4) @.str.28.44, i64 %loop-index5434, !amdgpu.uniform !42 %5423 = load <4 x i32>, ptr addrspace(4) %5422, align 1 %scevgep6383 = getelementptr i8, ptr %scevgep6382, i64 %loop-index5434 store <4 x i32> %5423, ptr %scevgep6383, align 1 %5424 = add i64 %loop-index5434, 16 %5425 = icmp uge i64 %5424, %5418 br i1 %5425, label %Flow7757, label %loop-memcpy-expansion5433, !amdgpu.uniform !42 Flow7756: ; preds = %Flow7754, %Flow7755 %5426 = phi i64 [ %6667, %Flow7754 ], [ %6664, %Flow7755 ] br label %post-loop-memcpy-expansion5432, !amdgpu.uniform !42 loop-memcpy-residual5435: ; preds = %loop-memcpy-residual5435.preheader, %loop-memcpy-residual5435 %residual-loop-index5437 = phi i64 [ %5428, %loop-memcpy-residual5435 ], [ 0, %loop-memcpy-residual5435.preheader ] %scevgep6380 = getelementptr i8, ptr addrspace(4) @.str.28.44, i64 %residual-loop-index5437, !amdgpu.uniform !42 %5427 = load i8, ptr addrspace(4) %scevgep6380, align 1 %scevgep6379 = getelementptr i8, ptr %scevgep6378, i64 %residual-loop-index5437 store i8 %5427, ptr %scevgep6379, align 1 %5428 = add i64 %residual-loop-index5437, 1 %5429 = icmp uge i64 %5428, %5417 br i1 %5429, label %Flow7754, label %loop-memcpy-residual5435, !amdgpu.uniform !42 Flow7754: ; preds = %loop-memcpy-residual5435 br label %Flow7756, !amdgpu.uniform !42 post-loop-memcpy-expansion5432: ; preds = %Flow7756 %tobool.not.i.i.i.i.i.i4094 = icmp eq i32 %.lcssa8854, 0 %conv.i.i.i.i.i.i4095 = zext i1 %tobool.not.i.i.i.i.i.i4094 to i32 fence release %5430 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i4096 = zext i32 %.lcssa8856 to i64 %arrayidx.i24.i.i.i.i.i4097 = getelementptr inbounds nuw i32, ptr %5430, i64 %idxprom.i23.i.i.i.i.i4096 store atomic i32 %conv.i.i.i.i.i.i4095, ptr %arrayidx.i24.i.i.i.i.i4097 monotonic, align 4 %5431 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i4098 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %5431, i64 %idxprom.i23.i.i.i.i.i4096, !amdgpu.uniform !42 %5432 = load i64, ptr %arrayidx.i.i5.i.i4098, align 8, !tbaa !80 br label %while.cond.i.i.i.i4099, !amdgpu.uniform !42 while.cond.i.i.i.i4099: ; preds = %post-loop-memcpy-expansion5432, %Flow7753 %phi.broken8806 = phi i64 [ 0, %post-loop-memcpy-expansion5432 ], [ %5449, %Flow7753 ] %lsr.iv6370 = phi i64 [ %5447, %Flow7753 ], [ -49, %post-loop-memcpy-expansion5432 ] %lsr.iv6365 = phi ptr addrspace(4) [ %5446, %Flow7753 ], [ getelementptr (i8, ptr addrspace(4) @.str.28.44, i64 56), %post-loop-memcpy-expansion5432 ] %port.sroa.37.0.i.i4100 = phi i32 [ %5445, %Flow7753 ], [ %conv.i.i.i.i.i.i4095, %post-loop-memcpy-expansion5432 ] %idx.0.i.i.i.i4101 = phi i64 [ %5444, %Flow7753 ], [ 56, %post-loop-memcpy-expansion5432 ] %cmp.i.i.i.i4102 = icmp ult i64 %idx.0.i.i.i.i4101, sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.28.44 to ptr), i64 7) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.28.44 to ptr) to i64)) %5433 = call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i4102) %and.i.i.i.i6.i.i4103 = and i64 %5433, %5432 %tobool.not.i.i.i.i4104 = icmp ne i64 %and.i.i.i.i6.i.i4103, 0 %5434 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i4105 = getelementptr inbounds nuw i32, ptr %5434, i64 %idxprom.i23.i.i.i.i.i4096, !amdgpu.uniform !42 %5435 = load atomic i32, ptr %arrayidx.i22.i.i.i4105 monotonic, align 4 %5436 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i4104) %5437 = extractvalue { i1, i64 } %5436, 0 %5438 = extractvalue { i1, i64 } %5436, 1 br i1 %5437, label %cond.false.i8.i.i.i.i4106, label %Flow7753 cond.false.i8.i.i.i.i4106: ; preds = %while.cond.i.i.i.i4099 %5439 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %5435) %5440 = icmp ne i32 %5439, %port.sroa.37.0.i.i4100 br i1 %5440, label %while.body.i.i21.i.i.i.i4107.preheader, label %Flow7752, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i4107.preheader: ; preds = %cond.false.i8.i.i.i.i4106 br label %while.body.i.i21.i.i.i.i4107, !amdgpu.uniform !42 Flow7752: ; preds = %Flow7751, %cond.false.i8.i.i.i.i4106 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i4110, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i4107: ; preds = %while.body.i.i21.i.i.i.i4107.preheader, %while.body.i.i21.i.i.i.i4107 call void @llvm.amdgcn.s.sleep(i32 2) %5441 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i4108 = getelementptr inbounds nuw i32, ptr %5441, i64 %idxprom.i23.i.i.i.i.i4096, !amdgpu.uniform !42 %5442 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i4108 monotonic, align 4 %5443 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %5442) %cmp.i.not.i.i23.i.i.i.i4109 = icmp eq i32 %5443, %port.sroa.37.0.i.i4100 br i1 %cmp.i.not.i.i23.i.i.i.i4109, label %Flow7751, label %while.body.i.i21.i.i.i.i4107, !amdgpu.uniform !42 Flow7751: ; preds = %while.body.i.i21.i.i.i.i4107 br label %Flow7752, !amdgpu.uniform !42 Flow7753: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4111, %while.cond.i.i.i.i4099 %5444 = phi i64 [ %add.i.i.i.i4114, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4111 ], [ poison, %while.cond.i.i.i.i4099 ] %5445 = phi i32 [ %conv.i.i26.i.i.i.i4112, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4111 ], [ poison, %while.cond.i.i.i.i4099 ] %5446 = phi ptr addrspace(4) [ %scevgep6366, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4111 ], [ poison, %while.cond.i.i.i.i4099 ] %5447 = phi i64 [ %lsr.iv.next6371, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4111 ], [ poison, %while.cond.i.i.i.i4099 ] %5448 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4111 ], [ true, %while.cond.i.i.i.i4099 ] call void @llvm.amdgcn.end.cf.i64(i64 %5438) %5449 = call i64 @llvm.amdgcn.if.break.i64(i1 %5448, i64 %phi.broken8806) %5450 = call i1 @llvm.amdgcn.loop.i64(i64 %5449) br i1 %5450, label %cond.false.i.i.i4121, label %while.cond.i.i.i.i4099 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i4110: ; preds = %Flow7752 fence acquire br i1 %cmp.i.i.i.i4102, label %if.then.i.i.i.i.i.i.i4115, label %Flow7750, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i4115: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i4110 %sub.i.i.i.i.i.i.i4117 = sub nuw i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.28.44 to ptr), i64 7) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.28.44 to ptr) to i64)), %idx.0.i.i.i.i4101 %spec.select.i.i.i36.i.i.i.i4118 = call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i4117, i64 64) %5451 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %5452 = and i64 %spec.select.i.i.i36.i.i.i.i4118, 15 %5453 = sub i64 %spec.select.i.i.i36.i.i.i.i4118, %5452 %5454 = icmp ne i64 %5453, 0 br i1 %5454, label %loop-memcpy-expansion5439.preheader, label %Flow7749, !amdgpu.uniform !42 loop-memcpy-expansion5439.preheader: ; preds = %if.then.i.i.i.i.i.i.i4115 %arrayidx.i20.i35.i.i.i.i4119 = getelementptr %"struct.rpc::Buffer", ptr %5451, i64 %idxprom.i19.i.i.i.i.i4089 %arrayidx.i22.i38.i.i.i.i4120 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i4119, i64 %sh_prom.i.i.i.i3270 br label %loop-memcpy-expansion5439, !amdgpu.uniform !42 Flow7749: ; preds = %Flow7748, %if.then.i.i.i.i.i.i.i4115 br label %loop-memcpy-residual-header5442, !amdgpu.uniform !42 loop-memcpy-expansion5439: ; preds = %loop-memcpy-expansion5439.preheader, %loop-memcpy-expansion5439 %loop-index5440 = phi i64 [ %5457, %loop-memcpy-expansion5439 ], [ 0, %loop-memcpy-expansion5439.preheader ] %scevgep6367 = getelementptr i8, ptr addrspace(4) %lsr.iv6365, i64 %loop-index5440, !amdgpu.uniform !42 %5455 = load <4 x i32>, ptr addrspace(4) %scevgep6367, align 1 %5456 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i4120, i64 %loop-index5440 store <4 x i32> %5455, ptr %5456, align 1 %5457 = add i64 %loop-index5440, 16 %5458 = icmp uge i64 %5457, %5453 br i1 %5458, label %Flow7748, label %loop-memcpy-expansion5439, !amdgpu.uniform !42 Flow7747: ; preds = %Flow7746, %loop-memcpy-residual-header5442 br label %Flow7750, !amdgpu.uniform !42 loop-memcpy-residual5441: ; preds = %loop-memcpy-residual5441.preheader, %loop-memcpy-residual5441 %residual-loop-index5443 = phi i64 [ %5460, %loop-memcpy-residual5441 ], [ 0, %loop-memcpy-residual5441.preheader ] %scevgep6376 = getelementptr i8, ptr addrspace(4) %scevgep6375, i64 %residual-loop-index5443, !amdgpu.uniform !42 %5459 = load i8, ptr addrspace(4) %scevgep6376, align 1 %scevgep6374 = getelementptr i8, ptr %scevgep6373, i64 %residual-loop-index5443 store i8 %5459, ptr %scevgep6374, align 1 %5460 = add i64 %residual-loop-index5443, 1 %5461 = icmp uge i64 %5460, %5452 br i1 %5461, label %Flow7746, label %loop-memcpy-residual5441, !amdgpu.uniform !42 Flow7746: ; preds = %loop-memcpy-residual5441 br label %Flow7747, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4111: ; preds = %Flow7750 %conv.i.i26.i.i.i.i4112 = xor i32 %port.sroa.37.0.i.i4100, 1 fence release %5462 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i4113 = getelementptr inbounds nuw i32, ptr %5462, i64 %idxprom.i23.i.i.i.i.i4096 store atomic i32 %conv.i.i26.i.i.i.i4112, ptr %arrayidx.i24.i29.i.i.i.i4113 monotonic, align 4 %add.i.i.i.i4114 = add i64 %idx.0.i.i.i.i4101, 64 %scevgep6366 = getelementptr i8, ptr addrspace(4) %lsr.iv6365, i64 64 %lsr.iv.next6371 = add i64 %lsr.iv6370, -64 br label %Flow7753, !amdgpu.uniform !42 cond.false.i.i.i4121: ; preds = %Flow7753 %.lcssa8850 = phi i64 [ %5449, %Flow7753 ] %port.sroa.37.0.i.i4100.lcssa = phi i32 [ %port.sroa.37.0.i.i4100, %Flow7753 ] %.lcssa8849 = phi i32 [ %5435, %Flow7753 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8850) %5463 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa8849) %5464 = icmp ne i32 %5463, %port.sroa.37.0.i.i4100.lcssa %5465 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %5464) %5466 = extractvalue { i1, i64 } %5465, 0 %5467 = extractvalue { i1, i64 } %5465, 1 br i1 %5466, label %while.body.i.i.i.i4122.preheader, label %Flow7745 while.body.i.i.i.i4122.preheader: ; preds = %cond.false.i.i.i4121 br label %while.body.i.i.i.i4122, !amdgpu.uniform !42 Flow7745: ; preds = %Flow7744, %cond.false.i.i.i4121 call void @llvm.amdgcn.end.cf.i64(i64 %5467) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit4143, !amdgpu.uniform !42 while.body.i.i.i.i4122: ; preds = %while.body.i.i.i.i4122.preheader, %while.body.i.i.i.i4122 %phi.broken8807 = phi i64 [ 0, %while.body.i.i.i.i4122.preheader ], [ %5471, %while.body.i.i.i.i4122 ] call void @llvm.amdgcn.s.sleep(i32 2) %5468 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i4123 = getelementptr inbounds nuw i32, ptr %5468, i64 %idxprom.i23.i.i.i.i.i4096, !amdgpu.uniform !42 %5469 = load atomic i32, ptr %arrayidx.i.i.i8.i.i4123 monotonic, align 4 %5470 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %5469) %cmp.i.not.i.i.i.i4124 = icmp eq i32 %5470, %port.sroa.37.0.i.i4100.lcssa %5471 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i4124, i64 %phi.broken8807) %5472 = call i1 @llvm.amdgcn.loop.i64(i64 %5471) br i1 %5472, label %Flow7744, label %while.body.i.i.i.i4122 Flow7744: ; preds = %while.body.i.i.i.i4122 %.lcssa8848 = phi i64 [ %5471, %while.body.i.i.i.i4122 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8848) br label %Flow7745, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit4143: ; preds = %Flow7745 fence acquire call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %5473 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa8855, i1 true) %iszero.i.i.i.i.i13.i.i4126 = icmp ne i64 %.lcssa8855, 0 %cmp2.i.i.i.i14.i.i4127 = icmp eq i64 %5473, %sh_prom.i.i.i.i3270 %cmp.i.i.i.i15.i.i4128 = select i1 %iszero.i.i.i.i.i13.i.i4126, i1 %cmp2.i.i.i.i14.i.i4127, i1 false %5474 = and i32 %.lcssa8856, 31 %conv4.i.i.i19.i.i4132 = zext i1 %cmp.i.i.i.i15.i.i4128 to i32 %shl.i.i.i20.i.i4133 = shl nuw i32 %conv4.i.i.i19.i.i4132, %5474 %xor.i.i.i21.i.i4134 = xor i32 %shl.i.i.i20.i.i4133, -1 %5475 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5940, !amdgpu.uniform !42 5476: ; preds = %ComputeEnd5941 %div8.i.i.i16.i.i4129 = lshr i32 %.lcssa8856, 5 %idxprom.i.i.i17.i.i4130 = zext nneg i32 %div8.i.i.i16.i.i4129 to i64 %5477 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i4130 %sunkaddr7493 = getelementptr inbounds i8, ptr addrspace(1) %5477, i64 40 %5478 = atomicrmw and ptr addrspace(1) %sunkaddr7493, i32 %.lcssa8847 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %5479, !amdgpu.uniform !42 5479: ; preds = %5476, %ComputeEnd5941 call void @llvm.amdgcn.end.cf.i64(i64 %8686) call void @llvm.amdgcn.wave.barrier() call void @llvm.lifetime.start.p5(ptr addrspace(5) %buffer.i.i.i2988) #34, !noalias !190 %cmp7.i.i.i.i.i.i4145 = icmp ne i32 %1149, 0 %5480 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp7.i.i.i.i.i.i4145) %5481 = extractvalue { i1, i64 } %5480, 0 %5482 = extractvalue { i1, i64 } %5480, 1 br i1 %5481, label %while.body.lr.ph.i.i.i.i.i.i4146, label %Flow7743 while.body.lr.ph.i.i.i.i.i.i4146: ; preds = %5479 %retval.0.i.i.i.i.i.i4147 = call noundef i32 @llvm.abs.i32(i32 %1149, i1 false) br label %while.body.i.i.i.i.i.i4148, !amdgpu.uniform !42 Flow7743: ; preds = %Flow7742, %5479 %5483 = phi i1 [ %cmp.i.i.i.i.i.i.i.i4158.lcssa, %Flow7742 ], [ false, %5479 ] %5484 = phi i64 [ %writer.sroa.10.1.i.i.i.i4163.lcssa, %Flow7742 ], [ 0, %5479 ] call void @llvm.amdgcn.end.cf.i64(i64 %5482) br label %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i4166, !amdgpu.uniform !42 while.body.i.i.i.i.i.i4148: ; preds = %while.body.lr.ph.i.i.i.i.i.i4146, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i4162 %phi.broken8808 = phi i64 [ 0, %while.body.lr.ph.i.i.i.i.i.i4146 ], [ %5552, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i4162 ] %writer.sroa.10.0.i.i.i.i4149 = phi i64 [ %writer.sroa.10.1.i.i.i.i4163, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i4162 ], [ 0, %while.body.lr.ph.i.i.i.i.i.i4146 ] %value.addr.09.i.i.i.i.i.i4150 = phi i32 [ %div.i.i.i.i.i.i.i4151, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i4162 ], [ %retval.0.i.i.i.i.i.i4147, %while.body.lr.ph.i.i.i.i.i.i4146 ] br label %NodeBlock7631, !amdgpu.uniform !42 NodeBlock7631: ; preds = %while.body.i.i.i.i.i.i4148 %div.i.i.i.i.i.i.i4151 = udiv i32 %value.addr.09.i.i.i.i.i.i4150, 10 %.neg.i4152 = mul i32 %div.i.i.i.i.i.i.i4151, 246 %rem.i.i.i.i.i.i.decomposed.i4153 = add i32 %.neg.i4152, %value.addr.09.i.i.i.i.i.i4150 %conv.i.i.i.i.i.i.i4154 = trunc i32 %rem.i.i.i.i.i.i.decomposed.i4153 to i8 %5485 = zext i8 %conv.i.i.i.i.i.i.i4154 to i16 %Pivot7632 = icmp sge i16 %5485, 5 %5486 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot7632) %5487 = extractvalue { i1, i64 } %5486, 0 %5488 = extractvalue { i1, i64 } %5486, 1 br i1 %5487, label %NodeBlock7629, label %Flow7741 NodeBlock7629: ; preds = %NodeBlock7631 %Pivot7630 = icmp sge i16 %5485, 7 %5489 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot7630) %5490 = extractvalue { i1, i64 } %5489, 0 %5491 = extractvalue { i1, i64 } %5489, 1 br i1 %5490, label %NodeBlock7627, label %Flow7732 NodeBlock7627: ; preds = %NodeBlock7629 %Pivot7628 = icmp sge i16 %5485, 8 %5492 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot7628) %5493 = extractvalue { i1, i64 } %5492, 0 %5494 = extractvalue { i1, i64 } %5492, 1 br i1 %5493, label %NodeBlock7625, label %Flow7728 NodeBlock7625: ; preds = %NodeBlock7627 %Pivot7626 = icmp sge i16 %5485, 9 %5495 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot7626) %5496 = extractvalue { i1, i64 } %5495, 0 %5497 = extractvalue { i1, i64 } %5495, 1 br i1 %5496, label %sw.bb9.i.i.i.i.i.i.i.i4155, label %Flow7726 Flow7732: ; preds = %Flow7729, %NodeBlock7629 %5498 = phi i8 [ %5542, %Flow7729 ], [ poison, %NodeBlock7629 ] %5499 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %5491) %5500 = extractvalue { i1, i64 } %5499, 0 %5501 = extractvalue { i1, i64 } %5499, 1 br i1 %5500, label %NodeBlock7623, label %Flow7733 NodeBlock7623: ; preds = %Flow7732 %Pivot7624 = icmp sge i16 %5485, 6 %5502 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot7624) %5503 = extractvalue { i1, i64 } %5502, 0 %5504 = extractvalue { i1, i64 } %5502, 1 br i1 %5503, label %sw.bb6.i.i.i.i.i.i.i.i4315, label %Flow7730 Flow7741: ; preds = %Flow7733, %NodeBlock7631 %5505 = phi i8 [ %5544, %Flow7733 ], [ poison, %NodeBlock7631 ] %5506 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %5488) %5507 = extractvalue { i1, i64 } %5506, 0 %5508 = extractvalue { i1, i64 } %5506, 1 br i1 %5507, label %NodeBlock7621, label %if.then.i.i.i.i.i.i.i4156 NodeBlock7621: ; preds = %Flow7741 %Pivot7622 = icmp sge i16 %5485, 3 %5509 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot7622) %5510 = extractvalue { i1, i64 } %5509, 0 %5511 = extractvalue { i1, i64 } %5509, 1 br i1 %5510, label %NodeBlock7619, label %Flow7739 NodeBlock7619: ; preds = %NodeBlock7621 %Pivot7620 = icmp sge i16 %5485, 4 %5512 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot7620) %5513 = extractvalue { i1, i64 } %5512, 0 %5514 = extractvalue { i1, i64 } %5512, 1 br i1 %5513, label %sw.bb4.i.i.i.i.i.i.i.i4317, label %Flow7734 Flow7739: ; preds = %Flow7735, %NodeBlock7621 %5515 = phi i8 [ %5545, %Flow7735 ], [ poison, %NodeBlock7621 ] %5516 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %5511) %5517 = extractvalue { i1, i64 } %5516, 0 %5518 = extractvalue { i1, i64 } %5516, 1 br i1 %5517, label %NodeBlock7617, label %Flow7740 NodeBlock7617: ; preds = %Flow7739 %Pivot7618 = icmp sge i16 %5485, 2 %5519 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %Pivot7618) %5520 = extractvalue { i1, i64 } %5519, 0 %5521 = extractvalue { i1, i64 } %5519, 1 br i1 %5520, label %sw.bb2.i.i.i.i.i.i.i.i4319, label %Flow7737 Flow7737: ; preds = %sw.bb2.i.i.i.i.i.i.i.i4319, %NodeBlock7617 %5522 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %5521) %5523 = extractvalue { i1, i64 } %5522, 0 %5524 = extractvalue { i1, i64 } %5522, 1 br i1 %5523, label %LeafBlock7615, label %Flow7738 LeafBlock7615: ; preds = %Flow7737 %SwitchLeaf7616 = icmp eq i16 %5485, 1 %5525 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %SwitchLeaf7616) %5526 = extractvalue { i1, i64 } %5525, 0 %5527 = extractvalue { i1, i64 } %5525, 1 br i1 %5526, label %sw.bb1.i.i.i.i.i.i.i.i4320, label %Flow7736 sw.bb1.i.i.i.i.i.i.i.i4320: ; preds = %LeafBlock7615 br label %Flow7736, !amdgpu.uniform !42 sw.bb2.i.i.i.i.i.i.i.i4319: ; preds = %NodeBlock7617 br label %Flow7737, !amdgpu.uniform !42 Flow7734: ; preds = %sw.bb4.i.i.i.i.i.i.i.i4317, %NodeBlock7619 %5528 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %5514) %5529 = extractvalue { i1, i64 } %5528, 0 %5530 = extractvalue { i1, i64 } %5528, 1 br i1 %5529, label %sw.bb3.i.i.i.i.i.i.i.i4318, label %Flow7735 sw.bb3.i.i.i.i.i.i.i.i4318: ; preds = %Flow7734 br label %Flow7735, !amdgpu.uniform !42 sw.bb4.i.i.i.i.i.i.i.i4317: ; preds = %NodeBlock7619 br label %Flow7734, !amdgpu.uniform !42 Flow7730: ; preds = %sw.bb6.i.i.i.i.i.i.i.i4315, %NodeBlock7623 %5531 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %5504) %5532 = extractvalue { i1, i64 } %5531, 0 %5533 = extractvalue { i1, i64 } %5531, 1 br i1 %5532, label %sw.bb5.i.i.i.i.i.i.i.i4316, label %Flow7731 sw.bb5.i.i.i.i.i.i.i.i4316: ; preds = %Flow7730 br label %Flow7731, !amdgpu.uniform !42 sw.bb6.i.i.i.i.i.i.i.i4315: ; preds = %NodeBlock7623 br label %Flow7730, !amdgpu.uniform !42 Flow7728: ; preds = %Flow7727, %NodeBlock7627 %5534 = phi i8 [ %5541, %Flow7727 ], [ poison, %NodeBlock7627 ] %5535 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %5494) %5536 = extractvalue { i1, i64 } %5535, 0 %5537 = extractvalue { i1, i64 } %5535, 1 br i1 %5536, label %sw.bb7.i.i.i.i.i.i.i.i4314, label %Flow7729 sw.bb7.i.i.i.i.i.i.i.i4314: ; preds = %Flow7728 br label %Flow7729, !amdgpu.uniform !42 Flow7726: ; preds = %sw.bb9.i.i.i.i.i.i.i.i4155, %NodeBlock7625 %5538 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %5497) %5539 = extractvalue { i1, i64 } %5538, 0 %5540 = extractvalue { i1, i64 } %5538, 1 br i1 %5539, label %sw.bb8.i.i.i.i.i.i.i.i4313, label %Flow7727 sw.bb8.i.i.i.i.i.i.i.i4313: ; preds = %Flow7726 br label %Flow7727, !amdgpu.uniform !42 sw.bb9.i.i.i.i.i.i.i.i4155: ; preds = %NodeBlock7625 br label %Flow7726, !amdgpu.uniform !42 Flow7727: ; preds = %sw.bb8.i.i.i.i.i.i.i.i4313, %Flow7726 %5541 = phi i8 [ 56, %sw.bb8.i.i.i.i.i.i.i.i4313 ], [ 57, %Flow7726 ] call void @llvm.amdgcn.end.cf.i64(i64 %5540) br label %Flow7728, !amdgpu.uniform !42 Flow7729: ; preds = %sw.bb7.i.i.i.i.i.i.i.i4314, %Flow7728 %5542 = phi i8 [ 55, %sw.bb7.i.i.i.i.i.i.i.i4314 ], [ %5534, %Flow7728 ] call void @llvm.amdgcn.end.cf.i64(i64 %5537) br label %Flow7732, !amdgpu.uniform !42 Flow7731: ; preds = %sw.bb5.i.i.i.i.i.i.i.i4316, %Flow7730 %5543 = phi i8 [ 53, %sw.bb5.i.i.i.i.i.i.i.i4316 ], [ 54, %Flow7730 ] call void @llvm.amdgcn.end.cf.i64(i64 %5533) br label %Flow7733, !amdgpu.uniform !42 Flow7733: ; preds = %Flow7731, %Flow7732 %5544 = phi i8 [ %5543, %Flow7731 ], [ %5498, %Flow7732 ] call void @llvm.amdgcn.end.cf.i64(i64 %5501) br label %Flow7741, !amdgpu.uniform !42 Flow7735: ; preds = %sw.bb3.i.i.i.i.i.i.i.i4318, %Flow7734 %5545 = phi i8 [ 51, %sw.bb3.i.i.i.i.i.i.i.i4318 ], [ 52, %Flow7734 ] call void @llvm.amdgcn.end.cf.i64(i64 %5530) br label %Flow7739, !amdgpu.uniform !42 Flow7736: ; preds = %sw.bb1.i.i.i.i.i.i.i.i4320, %LeafBlock7615 %5546 = phi i8 [ 49, %sw.bb1.i.i.i.i.i.i.i.i4320 ], [ 48, %LeafBlock7615 ] call void @llvm.amdgcn.end.cf.i64(i64 %5527) br label %Flow7738, !amdgpu.uniform !42 Flow7738: ; preds = %Flow7736, %Flow7737 %5547 = phi i8 [ %5546, %Flow7736 ], [ 50, %Flow7737 ] call void @llvm.amdgcn.end.cf.i64(i64 %5524) br label %Flow7740, !amdgpu.uniform !42 Flow7740: ; preds = %Flow7738, %Flow7739 %5548 = phi i8 [ %5547, %Flow7738 ], [ %5515, %Flow7739 ] call void @llvm.amdgcn.end.cf.i64(i64 %5518) br label %if.then.i.i.i.i.i.i.i4156, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i4156: ; preds = %Flow7741, %Flow7740 %retval.0.i.i.i.i.i.i.i.i4157 = phi i8 [ %5505, %Flow7741 ], [ %5548, %Flow7740 ] call void @llvm.amdgcn.end.cf.i64(i64 %5508) %cmp.i.i.i.i.i.i.i.i4158 = icmp eq i64 %writer.sroa.10.0.i.i.i.i4149, 11 %cmp.i.i.i.i.i.i.i.i4158.inv = xor i1 %cmp.i.i.i.i.i.i.i.i4158, true br i1 %cmp.i.i.i.i.i.i.i.i4158.inv, label %if.then3.i.i.i.i.i.i.i4159, label %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i4162, !amdgpu.uniform !42 if.then3.i.i.i.i.i.i.i4159: ; preds = %if.then.i.i.i.i.i.i.i4156 %5549 = trunc i64 %writer.sroa.10.0.i.i.i.i4149 to i32 %5550 = xor i32 %5549, -1 %5551 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i2988, i32 %5550 %arrayidx.i.i.i.i.i.i.i.i41606114 = getelementptr i8, ptr addrspace(5) %5551, i32 11 %inc.i.i.i.i.i.i.i4161 = add i64 %writer.sroa.10.0.i.i.i.i4149, 1 store i8 %retval.0.i.i.i.i.i.i.i.i4157, ptr addrspace(5) %arrayidx.i.i.i.i.i.i.i.i41606114, align 1, !tbaa !57, !noalias !190 br label %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i4162, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i4162: ; preds = %if.then3.i.i.i.i.i.i.i4159, %if.then.i.i.i.i.i.i.i4156 %writer.sroa.10.1.i.i.i.i4163 = phi i64 [ %inc.i.i.i.i.i.i.i4161, %if.then3.i.i.i.i.i.i.i4159 ], [ 11, %if.then.i.i.i.i.i.i.i4156 ] %cmp.i.i.i.i.i.i4164 = icmp ult i32 %value.addr.09.i.i.i.i.i.i4150, 10 %.not.i.i.i.i.i.i4165 = or i1 %cmp.i.i.i.i.i.i.i.i4158, %cmp.i.i.i.i.i.i4164 %5552 = call i64 @llvm.amdgcn.if.break.i64(i1 %.not.i.i.i.i.i.i4165, i64 %phi.broken8808) %5553 = call i1 @llvm.amdgcn.loop.i64(i64 %5552) br i1 %5553, label %Flow7742, label %while.body.i.i.i.i.i.i4148 Flow7742: ; preds = %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i4162 %writer.sroa.10.1.i.i.i.i4163.lcssa = phi i64 [ %writer.sroa.10.1.i.i.i.i4163, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i4162 ] %.lcssa8846 = phi i64 [ %5552, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i4162 ] %cmp.i.i.i.i.i.i.i.i4158.lcssa = phi i1 [ %cmp.i.i.i.i.i.i.i.i4158, %_ZN22__llvm_libc_22_0_0_git7details22StringBufferWriterImplILb0EE4pushEc.exit.i.i.i.i.i.i4162 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8846) br label %Flow7743, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i4166: ; preds = %Flow7743 %cmp.i19.i.i.i.i4169 = icmp ne i64 %5484, 0 %or.cond.not.i.i.i.i4170 = select i1 %5483, i1 true, i1 %cmp.i19.i.i.i.i4169 %or.cond.not.i.i.i.i4170.inv = xor i1 %or.cond.not.i.i.i.i4170, true %5554 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %or.cond.not.i.i.i.i4170.inv) %5555 = extractvalue { i1, i64 } %5554, 0 %5556 = extractvalue { i1, i64 } %5554, 1 br i1 %5555, label %if.then3.i.i.lr.ph.i.i.i.i4171, label %while.end.i.i.i.i.i4173 if.then3.i.i.lr.ph.i.i.i.i4171: ; preds = %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i4166 %arrayidx.i.i.i.i.i.i.i4172 = getelementptr inbounds nuw i8, ptr addrspace(5) %buffer.i.i.i2988, i32 10 store i8 48, ptr addrspace(5) %arrayidx.i.i.i.i.i.i.i4172, align 2, !tbaa !57, !noalias !190 br label %while.end.i.i.i.i.i4173, !amdgpu.uniform !42 while.end.i.i.i.i.i4173: ; preds = %if.then3.i.i.lr.ph.i.i.i.i4171, %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i4166 %writer.sroa.10.4.i.i.i.i4174 = phi i64 [ 1, %if.then3.i.i.lr.ph.i.i.i.i4171 ], [ %5484, %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEE13IntegerWriter25write_unsigned_number_decEjRNS1_22StringBufferWriterImplILb0EEE.exit.i.i.i.i.i4166 ] call void @llvm.amdgcn.end.cf.i64(i64 %5556) %cmp4.i.i.i.i.i4175 = icmp sgt i32 %1149, -1 %brmerge.i.i.i.i.i4176 = or i1 %cmp4.i.i.i.i.i4175, %5483 %brmerge.i.i.i.i.i4176.inv = xor i1 %brmerge.i.i.i.i.i4176, true %5557 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %brmerge.i.i.i.i.i4176.inv) %5558 = extractvalue { i1, i64 } %5557, 0 %5559 = extractvalue { i1, i64 } %5557, 1 br i1 %5558, label %if.then.i14.i.i.i.i.i4177, label %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i4182 if.then.i14.i.i.i.i.i4177: ; preds = %while.end.i.i.i.i.i4173 %cmp.i.i17.i.i.i.i.i4178 = icmp ne i64 %writer.sroa.10.4.i.i.i.i4174, 11 %5560 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i17.i.i.i.i.i4178) %5561 = extractvalue { i1, i64 } %5560, 0 %5562 = extractvalue { i1, i64 } %5560, 1 br i1 %5561, label %if.then3.i18.i.i.i.i.i4179, label %Flow7725 if.then3.i18.i.i.i.i.i4179: ; preds = %if.then.i14.i.i.i.i.i4177 %5563 = trunc i64 %writer.sroa.10.4.i.i.i.i4174 to i32 %5564 = xor i32 %5563, -1 %5565 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i2988, i32 %5564 %arrayidx.i.i19.i.i.i.i.i41806115 = getelementptr i8, ptr addrspace(5) %5565, i32 11 %inc.i20.i.i.i.i.i4181 = add i64 %writer.sroa.10.4.i.i.i.i4174, 1 store i8 45, ptr addrspace(5) %arrayidx.i.i19.i.i.i.i.i41806115, align 1, !tbaa !57, !noalias !190 br label %Flow7725, !amdgpu.uniform !42 Flow7725: ; preds = %if.then3.i18.i.i.i.i.i4179, %if.then.i14.i.i.i.i.i4177 %5566 = phi i64 [ %inc.i20.i.i.i.i.i4181, %if.then3.i18.i.i.i.i.i4179 ], [ 11, %if.then.i14.i.i.i.i.i4177 ] call void @llvm.amdgcn.end.cf.i64(i64 %5562) br label %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i4182, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i4182: ; preds = %while.end.i.i.i.i.i4173, %Flow7725 %writer.sroa.10.5.i.i.i.i4183 = phi i64 [ %writer.sroa.10.4.i.i.i.i4174, %while.end.i.i.i.i.i4173 ], [ %5566, %Flow7725 ] call void @llvm.amdgcn.end.cf.i64(i64 %5559) %written.i.i.i.i4184 = getelementptr inbounds nuw i8, ptr addrspace(5) %buffer.i.i.i2988, i32 16 store i64 %writer.sroa.10.5.i.i.i.i4183, ptr addrspace(5) %written.i.i.i.i4184, align 8, !tbaa !91, !noalias !190 %cmp.i.not.i.i.i.i.i4185 = icmp ne i64 %writer.sroa.10.5.i.i.i.i4183, 0 %5567 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.not.i.i.i.i.i4185) %5568 = extractvalue { i1, i64 } %5567, 0 %5569 = extractvalue { i1, i64 } %5567, 1 br i1 %5568, label %if.then.i.i.i.i.i.i4186, label %Flow7724 if.then.i.i.i.i.i.i4186: ; preds = %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i4182 %5570 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %writer.sroa.10.5.i.i.i.i4183, i64 1) %ov7495 = extractvalue { i64, i1 } %5570, 1 %ov7495.inv = xor i1 %ov7495, true %5571 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %ov7495.inv) %5572 = extractvalue { i1, i64 } %5571, 0 %5573 = extractvalue { i1, i64 } %5571, 1 br i1 %5572, label %if.end.i.i.i.i.i.i.i4189, label %Flow7723 if.end.i.i.i.i.i.i.i4189: ; preds = %if.then.i.i.i.i.i.i4186 %math7494 = extractvalue { i64, i1 } %5570, 0 %cmp2.i.i.i.i.i.i.i4190 = icmp ult i64 %math7494, 1676976733973595601 %5574 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp2.i.i.i.i.i.i.i4190) %5575 = extractvalue { i1, i64 } %5574, 0 %5576 = extractvalue { i1, i64 } %5574, 1 br i1 %5575, label %if.then3.i.i.i.i4.i.i.i4310, label %if.end4.i.i.i.i.i.i.i4191 if.then3.i.i.i.i4.i.i.i4310: ; preds = %if.end.i.i.i.i.i.i.i4189 %mul.i.i.i.i.i.i.i4311 = mul nuw i64 %math7494, 11 %div18.i.i.i.i.i.i.i4312 = lshr i64 %mul.i.i.i.i.i.i.i4311, 3 br label %if.end4.i.i.i.i.i.i.i4191, !amdgpu.uniform !42 Flow7723: ; preds = %if.end4.i.i.i.i.i.i.i4191, %if.then.i.i.i.i.i.i4186 %5577 = phi ptr [ %cond.i.i.i4199, %if.end4.i.i.i.i.i.i.i4191 ], [ addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr), %if.then.i.i.i.i.i.i4186 ] call void @llvm.amdgcn.end.cf.i64(i64 %5573) br label %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i4201, !amdgpu.uniform !42 if.end4.i.i.i.i.i.i.i4191: ; preds = %if.then3.i.i.i.i4.i.i.i4310, %if.end.i.i.i.i.i.i.i4189 %new_capacity.addr.0.i.i.i.i.i.i.i4192 = phi i64 [ %div18.i.i.i.i.i.i.i4312, %if.then3.i.i.i.i4.i.i.i4310 ], [ %math7494, %if.end.i.i.i.i.i.i.i4189 ] call void @llvm.amdgcn.end.cf.i64(i64 %5576) %sub.i.i.i4193 = add i64 %new_capacity.addr.0.i.i.i.i.i.i.i4192, 7 %div2.i.i.i4194 = and i64 %sub.i.i.i4193, -8 %5578 = load ptr, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %add.ptr.i.i.i4195 = getelementptr inbounds nuw i8, ptr %5578, i64 %div2.i.i.i4194 store ptr %add.ptr.i.i.i4195, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %sub.ptr.lhs.cast.i.i.i4196 = ptrtoint ptr %add.ptr.i.i.i4195 to i64 %sub.ptr.sub.i.i.i4197 = sub i64 %sub.ptr.lhs.cast.i.i.i4196, ptrtoint (ptr addrspacecast (ptr addrspace(1) @_ZN12_GLOBAL__N_16memoryE to ptr) to i64) %cmp.i.i.i4198 = icmp ugt i64 %sub.ptr.sub.i.i.i4197, 65335 %cond.i.i.i4199 = select i1 %cmp.i.i.i4198, ptr null, ptr %5578 br label %Flow7723, !amdgpu.uniform !42 Flow7724: ; preds = %Flow7722, %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i4182 %5579 = phi ptr [ %5577, %Flow7722 ], [ addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr), %_ZN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEC2Ei.exit.i.i.i4182 ] call void @llvm.amdgcn.end.cf.i64(i64 %5569) br label %if.end.i.i.i.i.i.i4203, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i4201: ; preds = %Flow7723 br label %loadstoreloop, !amdgpu.uniform !42 loadstoreloop: ; preds = %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i4201, %loadstoreloop %phi.broken8809 = phi i64 [ 0, %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i4201 ], [ %5584, %loadstoreloop ] %5580 = phi i64 [ %5582, %loadstoreloop ], [ 0, %_ZN22__llvm_libc_22_0_0_git3cpp6string7reserveEm.exit.i.i.i.i.i.i4201 ] %5581 = getelementptr i8, ptr %5577, i64 %5580 store i8 0, ptr %5581, align 1 %5582 = add i64 %5580, 1 %5583 = icmp uge i64 %5582, %writer.sroa.10.5.i.i.i.i4183 %5584 = call i64 @llvm.amdgcn.if.break.i64(i1 %5583, i64 %phi.broken8809) %5585 = call i1 @llvm.amdgcn.loop.i64(i64 %5584) br i1 %5585, label %Flow7722, label %loadstoreloop Flow7722: ; preds = %loadstoreloop %.lcssa8845 = phi i64 [ %5584, %loadstoreloop ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8845) br label %Flow7724, !amdgpu.uniform !42 if.end.i.i.i.i.i.i4203: ; preds = %Flow7724 %cmp.not.i6.i.i.i.i.i.i4205 = icmp ne ptr %5579, addrspacecast (ptr addrspace(4) @_ZN22__llvm_libc_22_0_0_git3cpp6string14NULL_CHARACTERE to ptr) %5586 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.not.i6.i.i.i.i.i.i4205) %5587 = extractvalue { i1, i64 } %5586, 0 %5588 = extractvalue { i1, i64 } %5586, 1 br i1 %5587, label %if.then.i.i.i.i2.i.i.i4206, label %_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi.exit.i4208 if.then.i.i.i.i2.i.i.i4206: ; preds = %if.end.i.i.i.i.i.i4203 %arrayidx.i.i.i.i3.i.i.i4207 = getelementptr inbounds nuw i8, ptr %5579, i64 %writer.sroa.10.5.i.i.i.i4183 store i8 0, ptr %arrayidx.i.i.i.i3.i.i.i4207, align 1, !tbaa !57, !noalias !190 br label %_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi.exit.i4208, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi.exit.i4208: ; preds = %if.then.i.i.i.i2.i.i.i4206, %if.end.i.i.i.i.i.i4203 call void @llvm.amdgcn.end.cf.i64(i64 %5588) %5589 = trunc i64 %writer.sroa.10.5.i.i.i.i4183 to i32 %5590 = and i64 %writer.sroa.10.5.i.i.i.i4183, 15 %5591 = sub i64 %writer.sroa.10.5.i.i.i.i4183, %5590 %5592 = icmp ne i64 %5591, 0 %5593 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %5592) %5594 = extractvalue { i1, i64 } %5593, 0 %5595 = extractvalue { i1, i64 } %5593, 1 br i1 %5594, label %loop-memcpy-expansion5103.preheader, label %Flow7721 loop-memcpy-expansion5103.preheader: ; preds = %_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi.exit.i4208 %5596 = sub i32 11, %5589 %scevgep6362 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i2988, i32 %5596 br label %loop-memcpy-expansion5103, !amdgpu.uniform !42 Flow7721: ; preds = %Flow7720, %_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi.exit.i4208 call void @llvm.amdgcn.end.cf.i64(i64 %5595) br label %loop-memcpy-residual-header5106, !amdgpu.uniform !42 loop-memcpy-expansion5103: ; preds = %loop-memcpy-expansion5103.preheader, %loop-memcpy-expansion5103 %phi.broken8810 = phi i64 [ 0, %loop-memcpy-expansion5103.preheader ], [ %5601, %loop-memcpy-expansion5103 ] %lsr.iv6363 = phi ptr addrspace(5) [ %scevgep6364, %loop-memcpy-expansion5103 ], [ %scevgep6362, %loop-memcpy-expansion5103.preheader ] %loop-index5104 = phi i64 [ %5599, %loop-memcpy-expansion5103 ], [ 0, %loop-memcpy-expansion5103.preheader ] %5597 = load <4 x i32>, ptr addrspace(5) %lsr.iv6363, align 1 %5598 = getelementptr i8, ptr %5579, i64 %loop-index5104 store <4 x i32> %5597, ptr %5598, align 1 %5599 = add i64 %loop-index5104, 16 %scevgep6364 = getelementptr i8, ptr addrspace(5) %lsr.iv6363, i32 16 %5600 = icmp uge i64 %5599, %5591 %5601 = call i64 @llvm.amdgcn.if.break.i64(i1 %5600, i64 %phi.broken8810) %5602 = call i1 @llvm.amdgcn.loop.i64(i64 %5601) br i1 %5602, label %Flow7720, label %loop-memcpy-expansion5103 Flow7719: ; preds = %Flow7718, %loop-memcpy-residual-header5106 call void @llvm.amdgcn.end.cf.i64(i64 %6363) br label %post-loop-memcpy-expansion5102, !amdgpu.uniform !42 loop-memcpy-residual5105: ; preds = %loop-memcpy-residual5105.preheader, %loop-memcpy-residual5105 %phi.broken8811 = phi i64 [ 0, %loop-memcpy-residual5105.preheader ], [ %5606, %loop-memcpy-residual5105 ] %lsr.iv6358 = phi ptr addrspace(5) [ %scevgep6359, %loop-memcpy-residual5105 ], [ %scevgep6357, %loop-memcpy-residual5105.preheader ] %residual-loop-index5107 = phi i64 [ %5604, %loop-memcpy-residual5105 ], [ 0, %loop-memcpy-residual5105.preheader ] %5603 = load i8, ptr addrspace(5) %lsr.iv6358, align 1 %scevgep6361 = getelementptr i8, ptr %scevgep6360, i64 %residual-loop-index5107 store i8 %5603, ptr %scevgep6361, align 1 %5604 = add i64 %residual-loop-index5107, 1 %scevgep6359 = getelementptr i8, ptr addrspace(5) %lsr.iv6358, i32 1 %5605 = icmp uge i64 %5604, %5590 %5606 = call i64 @llvm.amdgcn.if.break.i64(i1 %5605, i64 %phi.broken8811) %5607 = call i1 @llvm.amdgcn.loop.i64(i64 %5606) br i1 %5607, label %Flow7718, label %loop-memcpy-residual5105 Flow7718: ; preds = %loop-memcpy-residual5105 %.lcssa8843 = phi i64 [ %5606, %loop-memcpy-residual5105 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8843) br label %Flow7719, !amdgpu.uniform !42 post-loop-memcpy-expansion5102: ; preds = %Flow7719 call void @llvm.lifetime.end.p5(ptr addrspace(5) %buffer.i.i.i2988) #34, !noalias !190 br label %for.cond.i.i.i4212, !amdgpu.uniform !42 for.cond.i.i.i4212: ; preds = %post-loop-memcpy-expansion5102, %Flow7717 %5608 = phi i32 [ %5645, %Flow7717 ], [ poison, %post-loop-memcpy-expansion5102 ] %5609 = phi i64 [ %5646, %Flow7717 ], [ poison, %post-loop-memcpy-expansion5102 ] %5610 = phi i32 [ %5647, %Flow7717 ], [ poison, %post-loop-memcpy-expansion5102 ] %retval.sroa.6.0.i.i.i4213 = phi i32 [ %5650, %Flow7717 ], [ undef, %post-loop-memcpy-expansion5102 ] %retval.sroa.2.0.i.i.i4215 = phi i64 [ %5649, %Flow7717 ], [ undef, %post-loop-memcpy-expansion5102 ] %retval.sroa.8.0.i.i.i4216 = phi i32 [ %5648, %Flow7717 ], [ undef, %post-loop-memcpy-expansion5102 ] %index.0.i.i.i4217 = phi i32 [ %5652, %Flow7717 ], [ 0, %post-loop-memcpy-expansion5102 ] %5611 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i4218 = icmp ult i32 %index.0.i.i.i4217, %5611 %spec.store.select.i.i.i4219 = select i1 %cmp.not.i.i.i4218, i32 %index.0.i.i.i4217, i32 0 %5612 = call i64 @llvm.amdgcn.ballot.i64(i1 true) %5613 = and i32 %spec.store.select.i.i.i4219, 31 %5614 = lshr i64 %5612, %sh_prom.i.i.i.i3270 %5615 = trunc i64 %5614 to i32 %conv4.i.i.i.i.i4223 = and i32 %5615, 1 %shl.i.i.i.i.i4224 = shl nuw i32 %conv4.i.i.i.i.i4223, %5613 br label %ComputeLoop5944, !amdgpu.uniform !42 5616: ; preds = %ComputeEnd5945 %sunkaddr7496 = getelementptr inbounds i8, ptr addrspace(1) %8696, i64 40 %5617 = atomicrmw or ptr addrspace(1) %sunkaddr7496, i32 %.lcssa8837 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %5618, !amdgpu.uniform !42 5618: ; preds = %5616, %ComputeEnd5945 %5619 = phi i32 [ %5617, %5616 ], [ poison, %ComputeEnd5945 ] call void @llvm.amdgcn.end.cf.i64(i64 %8705) %5620 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %5619) %5621 = or i32 %5620, %.lcssa8838 %shl5.i.i.i.i.i4225 = shl nuw i32 1, %5613 %and.i.i.i.i.i4226 = and i32 %shl5.i.i.i.i.i4225, %5621 %tobool3.i.i.i.i4227 = icmp ne i32 %and.i.i.i.i.i4226, 0 %5622 = call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i4227) %and.i.i.i.i.i.i4228 = and i64 %5622, %5612 %cmp.i.not.i.i.i4229 = icmp ne i64 %5612, %and.i.i.i.i.i.i4228 br i1 %cmp.i.not.i.i.i4229, label %if.then.i.i.i.i4230, label %Flow7716, !amdgpu.uniform !42 if.then.i.i.i.i4230: ; preds = %5618 fence syncscope("agent") acquire %5623 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %5624 = extractelement <2 x i64> %5623, i32 0 %5625 = inttoptr i64 %5624 to ptr %5626 = extractelement <2 x i64> %5623, i32 1 %5627 = inttoptr i64 %5626 to ptr %idxprom.i.i.i.i4231 = zext i32 %spec.store.select.i.i.i4219 to i64 %arrayidx.i.i.i.i4232 = getelementptr inbounds nuw i32, ptr %5625, i64 %idxprom.i.i.i.i4231, !amdgpu.uniform !42 %5628 = load atomic i32, ptr %arrayidx.i.i.i.i4232 monotonic, align 4 %5629 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %5628) %arrayidx.i45.i.i.i4233 = getelementptr inbounds nuw i32, ptr %5627, i64 %idxprom.i.i.i.i4231, !amdgpu.uniform !42 %5630 = load atomic i32, ptr %arrayidx.i45.i.i.i4233 monotonic, align 4 %5631 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %5630) %cmp.i46.not.i.i.i4234 = icmp ne i32 %5629, %5631 br i1 %cmp.i46.not.i.i.i4234, label %if.then12.i.i.i4235, label %Flow7714, !amdgpu.uniform !42 if.then12.i.i.i4235: ; preds = %if.then.i.i.i.i4230 fence syncscope("agent") release %5632 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %5612, i1 true) %iszero.i.i.i.i.i.i.i4236 = icmp ne i64 %5612, 0 %cmp2.i.i.i.i.i.i4237 = icmp eq i64 %5632, %sh_prom.i.i.i.i3270 %cmp.i.i.i.i.i2.i4238 = select i1 %iszero.i.i.i.i.i.i.i4236, i1 %cmp2.i.i.i.i.i.i4237, i1 false %conv4.i.i51.i.i.i4239 = zext i1 %cmp.i.i.i.i.i2.i4238 to i32 %shl.i.i52.i.i.i4240 = shl nuw i32 %conv4.i.i51.i.i.i4239, %5613 %xor.i.i.i.i.i4241 = xor i32 %shl.i.i52.i.i.i4240, -1 %5633 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5949, !amdgpu.uniform !42 5634: ; preds = %ComputeEnd5950 %sunkaddr7497 = getelementptr inbounds i8, ptr addrspace(1) %8696, i64 40 %5635 = atomicrmw and ptr addrspace(1) %sunkaddr7497, i32 %.lcssa8839 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %5636, !amdgpu.uniform !42 5636: ; preds = %5634, %ComputeEnd5950 call void @llvm.amdgcn.end.cf.i64(i64 %8723) call void @llvm.amdgcn.wave.barrier() br label %Flow7714, !amdgpu.uniform !42 if.end14.i.i.i4302: ; preds = %Flow7714 %5637 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %5612, i1 true) %iszero.i.i.i.i.i.i4303 = icmp ne i64 %5612, 0 %cmp2.i.i.i.i.i4304 = icmp eq i64 %5637, %sh_prom.i.i.i.i3270 %cmp.i.i.i.i.i4305 = select i1 %iszero.i.i.i.i.i.i4303, i1 %cmp2.i.i.i.i.i4304, i1 false %5638 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i4305) %5639 = extractvalue { i1, i64 } %5638, 0 %5640 = extractvalue { i1, i64 } %5638, 1 br i1 %5639, label %if.then16.i.i.i4307, label %if.end22.i.i.i4306 if.then16.i.i.i4307: ; preds = %if.end14.i.i.i4302 %5641 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i4308 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %5641, i64 %idxprom.i.i.i.i4231, i32 1 store i32 1660944387, ptr %opcode.i.i.i4308, align 8, !tbaa !77 %arrayidx21.i.i.i4309 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %5641, i64 %idxprom.i.i.i.i4231 store i64 %5612, ptr %arrayidx21.i.i.i4309, align 8, !tbaa !80 br label %if.end22.i.i.i4306, !amdgpu.uniform !42 Flow7715: ; preds = %if.end22.i.i.i4306, %Flow7714 %5642 = phi i32 [ %5629, %if.end22.i.i.i4306 ], [ %retval.sroa.8.0.i.i.i4216, %Flow7714 ] %5643 = phi i64 [ %5612, %if.end22.i.i.i4306 ], [ %retval.sroa.2.0.i.i.i4215, %Flow7714 ] %5644 = phi i32 [ %spec.store.select.i.i.i4219, %if.end22.i.i.i4306 ], [ %retval.sroa.6.0.i.i.i4213, %Flow7714 ] br label %cleanup26.i.i.i4242, !amdgpu.uniform !42 if.end22.i.i.i4306: ; preds = %if.then16.i.i.i4307, %if.end14.i.i.i4302 call void @llvm.amdgcn.end.cf.i64(i64 %5640) call void @llvm.amdgcn.wave.barrier() br label %Flow7715, !amdgpu.uniform !42 Flow7716: ; preds = %cleanup26.i.i.i4242, %5618 %5645 = phi i32 [ %5644, %cleanup26.i.i.i4242 ], [ %5608, %5618 ] %5646 = phi i64 [ %5643, %cleanup26.i.i.i4242 ], [ %5609, %5618 ] %5647 = phi i32 [ %5642, %cleanup26.i.i.i4242 ], [ %5610, %5618 ] %5648 = phi i32 [ %5642, %cleanup26.i.i.i4242 ], [ %retval.sroa.8.0.i.i.i4216, %5618 ] %5649 = phi i64 [ %5643, %cleanup26.i.i.i4242 ], [ %retval.sroa.2.0.i.i.i4215, %5618 ] %5650 = phi i32 [ %5644, %cleanup26.i.i.i4242 ], [ %retval.sroa.6.0.i.i.i4213, %5618 ] %5651 = phi i1 [ %cmp.i46.not.i.i.i4234, %cleanup26.i.i.i4242 ], [ true, %5618 ] br i1 %5651, label %for.inc.i.i.i4247, label %Flow7717, !amdgpu.uniform !42 cleanup26.i.i.i4242: ; preds = %Flow7715 br label %Flow7716, !amdgpu.uniform !42 for.inc.i.i.i4247: ; preds = %Flow7716 %inc.i.i.i4252 = add i32 %spec.store.select.i.i.i4219, 1 br label %Flow7717, !amdgpu.uniform !42 Flow7717: ; preds = %for.inc.i.i.i4247, %Flow7716 %5652 = phi i32 [ %inc.i.i.i4252, %for.inc.i.i.i4247 ], [ poison, %Flow7716 ] %5653 = phi i1 [ false, %for.inc.i.i.i4247 ], [ true, %Flow7716 ] br i1 %5653, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i4253, label %for.cond.i.i.i4212, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i4253: ; preds = %Flow7717 %.lcssa8842 = phi i32 [ %5645, %Flow7717 ] %.lcssa8841 = phi i64 [ %5646, %Flow7717 ] %.lcssa8840 = phi i32 [ %5647, %Flow7717 ] fence acquire %5654 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i4254 = shl i32 %.lcssa8842, 6 %idxprom.i19.i.i.i.i.i4255 = zext i32 %mul.i.i.i.i.i.i4254 to i64 %arrayidx.i20.i.i.i.i.i4256 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %5654, i64 %idxprom.i19.i.i.i.i.i4255 %arrayidx.i22.i.i.i.i.i4257 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i4256, i64 %sh_prom.i.i.i.i3270 store i64 %writer.sroa.10.5.i.i.i.i4183, ptr %arrayidx.i22.i.i.i.i.i4257, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i4258 = call i64 @llvm.umin.i64(i64 %writer.sroa.10.5.i.i.i.i4183, i64 56) %5655 = and i64 %spec.select.i.i.i.i.i.i.i4258, 15 %5656 = sub i64 %spec.select.i.i.i.i.i.i.i4258, %5655 %5657 = icmp ne i64 %5656, 0 %5658 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %5657) %5659 = extractvalue { i1, i64 } %5658, 0 %5660 = extractvalue { i1, i64 } %5658, 1 br i1 %5659, label %loop-memcpy-expansion4977.preheader, label %Flow7713 loop-memcpy-expansion4977.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i4253 %5661 = add nuw nsw i64 %4513, 8 %scevgep6354 = getelementptr i8, ptr %5654, i64 %5661 %5662 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i4255, 6 %scevgep6355 = getelementptr i8, ptr %scevgep6354, i64 %5662 br label %loop-memcpy-expansion4977, !amdgpu.uniform !42 Flow7713: ; preds = %Flow7712, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i4253 call void @llvm.amdgcn.end.cf.i64(i64 %5660) br label %loop-memcpy-residual-header4980, !amdgpu.uniform !42 loop-memcpy-expansion4977: ; preds = %loop-memcpy-expansion4977.preheader, %loop-memcpy-expansion4977 %phi.broken8812 = phi i64 [ 0, %loop-memcpy-expansion4977.preheader ], [ %5667, %loop-memcpy-expansion4977 ] %loop-index4978 = phi i64 [ %5665, %loop-memcpy-expansion4977 ], [ 0, %loop-memcpy-expansion4977.preheader ] %5663 = getelementptr i8, ptr %5579, i64 %loop-index4978 %5664 = load <4 x i32>, ptr %5663, align 1 %scevgep6356 = getelementptr i8, ptr %scevgep6355, i64 %loop-index4978 store <4 x i32> %5664, ptr %scevgep6356, align 1 %5665 = add i64 %loop-index4978, 16 %5666 = icmp uge i64 %5665, %5656 %5667 = call i64 @llvm.amdgcn.if.break.i64(i1 %5666, i64 %phi.broken8812) %5668 = call i1 @llvm.amdgcn.loop.i64(i64 %5667) br i1 %5668, label %Flow7712, label %loop-memcpy-expansion4977 Flow7711: ; preds = %Flow7709, %Flow7710 %5669 = phi i64 [ %6219, %Flow7709 ], [ %6211, %Flow7710 ] call void @llvm.amdgcn.end.cf.i64(i64 %6214) br label %post-loop-memcpy-expansion4976, !amdgpu.uniform !42 loop-memcpy-residual4979: ; preds = %loop-memcpy-residual4979.preheader, %loop-memcpy-residual4979 %phi.broken8813 = phi i64 [ 0, %loop-memcpy-residual4979.preheader ], [ %5673, %loop-memcpy-residual4979 ] %residual-loop-index4981 = phi i64 [ %5671, %loop-memcpy-residual4979 ], [ 0, %loop-memcpy-residual4979.preheader ] %scevgep6353 = getelementptr i8, ptr %scevgep6352, i64 %residual-loop-index4981 %5670 = load i8, ptr %scevgep6353, align 1 %scevgep6351 = getelementptr i8, ptr %scevgep6350, i64 %residual-loop-index4981 store i8 %5670, ptr %scevgep6351, align 1 %5671 = add i64 %residual-loop-index4981, 1 %5672 = icmp uge i64 %5671, %5655 %5673 = call i64 @llvm.amdgcn.if.break.i64(i1 %5672, i64 %phi.broken8813) %5674 = call i1 @llvm.amdgcn.loop.i64(i64 %5673) br i1 %5674, label %Flow7709, label %loop-memcpy-residual4979 Flow7709: ; preds = %loop-memcpy-residual4979 %.lcssa8835 = phi i64 [ %5673, %loop-memcpy-residual4979 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8835) br label %Flow7711, !amdgpu.uniform !42 post-loop-memcpy-expansion4976: ; preds = %Flow7711 %tobool.not.i.i.i.i.i.i4260 = icmp eq i32 %.lcssa8840, 0 %conv.i.i.i.i.i.i4261 = zext i1 %tobool.not.i.i.i.i.i.i4260 to i32 fence release %5675 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i4262 = zext i32 %.lcssa8842 to i64 %arrayidx.i24.i.i.i.i.i4263 = getelementptr inbounds nuw i32, ptr %5675, i64 %idxprom.i23.i.i.i.i.i4262 store atomic i32 %conv.i.i.i.i.i.i4261, ptr %arrayidx.i24.i.i.i.i.i4263 monotonic, align 4 %5676 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i4264 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %5676, i64 %idxprom.i23.i.i.i.i.i4262, !amdgpu.uniform !42 %5677 = load i64, ptr %arrayidx.i.i5.i.i4264, align 8, !tbaa !80 %scevgep = getelementptr i8, ptr %5579, i64 56 %5678 = add i64 %writer.sroa.10.5.i.i.i.i4183, -56 br label %while.cond.i.i.i.i4265, !amdgpu.uniform !42 while.cond.i.i.i.i4265: ; preds = %post-loop-memcpy-expansion4976, %Flow7708 %phi.broken8816 = phi i64 [ 0, %post-loop-memcpy-expansion4976 ], [ %5695, %Flow7708 ] %lsr.iv6344 = phi i64 [ %5693, %Flow7708 ], [ %5678, %post-loop-memcpy-expansion4976 ] %lsr.iv = phi ptr [ %5692, %Flow7708 ], [ %scevgep, %post-loop-memcpy-expansion4976 ] %port.sroa.37.0.i.i4266 = phi i32 [ %5691, %Flow7708 ], [ %conv.i.i.i.i.i.i4261, %post-loop-memcpy-expansion4976 ] %idx.0.i.i.i.i4267 = phi i64 [ %5690, %Flow7708 ], [ 56, %post-loop-memcpy-expansion4976 ] %cmp.i.i.i.i4268 = icmp ugt i64 %writer.sroa.10.5.i.i.i.i4183, %idx.0.i.i.i.i4267 %5679 = call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i4268) %and.i.i.i.i6.i.i4269 = and i64 %5679, %5677 %tobool.not.i.i.i.i4270 = icmp ne i64 %and.i.i.i.i6.i.i4269, 0 %5680 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i4271 = getelementptr inbounds nuw i32, ptr %5680, i64 %idxprom.i23.i.i.i.i.i4262, !amdgpu.uniform !42 %5681 = load atomic i32, ptr %arrayidx.i22.i.i.i4271 monotonic, align 4 %5682 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i4270) %5683 = extractvalue { i1, i64 } %5682, 0 %5684 = extractvalue { i1, i64 } %5682, 1 br i1 %5683, label %cond.false.i8.i.i.i.i4272, label %Flow7708 cond.false.i8.i.i.i.i4272: ; preds = %while.cond.i.i.i.i4265 %5685 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %5681) %5686 = icmp ne i32 %5685, %port.sroa.37.0.i.i4266 br i1 %5686, label %while.body.i.i21.i.i.i.i4273.preheader, label %Flow7707, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i4273.preheader: ; preds = %cond.false.i8.i.i.i.i4272 br label %while.body.i.i21.i.i.i.i4273, !amdgpu.uniform !42 Flow7707: ; preds = %Flow7706, %cond.false.i8.i.i.i.i4272 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i4276, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i4273: ; preds = %while.body.i.i21.i.i.i.i4273.preheader, %while.body.i.i21.i.i.i.i4273 call void @llvm.amdgcn.s.sleep(i32 2) %5687 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i4274 = getelementptr inbounds nuw i32, ptr %5687, i64 %idxprom.i23.i.i.i.i.i4262, !amdgpu.uniform !42 %5688 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i4274 monotonic, align 4 %5689 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %5688) %cmp.i.not.i.i23.i.i.i.i4275 = icmp eq i32 %5689, %port.sroa.37.0.i.i4266 br i1 %cmp.i.not.i.i23.i.i.i.i4275, label %Flow7706, label %while.body.i.i21.i.i.i.i4273, !amdgpu.uniform !42 Flow7706: ; preds = %while.body.i.i21.i.i.i.i4273 br label %Flow7707, !amdgpu.uniform !42 Flow7708: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4277, %while.cond.i.i.i.i4265 %5690 = phi i64 [ %add.i.i.i.i4280, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4277 ], [ poison, %while.cond.i.i.i.i4265 ] %5691 = phi i32 [ %conv.i.i26.i.i.i.i4278, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4277 ], [ poison, %while.cond.i.i.i.i4265 ] %5692 = phi ptr [ %scevgep6340, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4277 ], [ poison, %while.cond.i.i.i.i4265 ] %5693 = phi i64 [ %lsr.iv.next, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4277 ], [ poison, %while.cond.i.i.i.i4265 ] %5694 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4277 ], [ true, %while.cond.i.i.i.i4265 ] call void @llvm.amdgcn.end.cf.i64(i64 %5684) %5695 = call i64 @llvm.amdgcn.if.break.i64(i1 %5694, i64 %phi.broken8816) %5696 = call i1 @llvm.amdgcn.loop.i64(i64 %5695) br i1 %5696, label %cond.false.i.i.i4287, label %while.cond.i.i.i.i4265 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i4276: ; preds = %Flow7707 fence acquire %5697 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i4268) %5698 = extractvalue { i1, i64 } %5697, 0 %5699 = extractvalue { i1, i64 } %5697, 1 br i1 %5698, label %if.then.i.i.i.i.i.i3.i4281, label %Flow7705 if.then.i.i.i.i.i.i3.i4281: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i4276 %sub.i.i.i.i.i.i.i4283 = sub nuw i64 %writer.sroa.10.5.i.i.i.i4183, %idx.0.i.i.i.i4267 %spec.select.i.i.i36.i.i.i.i4284 = call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i4283, i64 64) %5700 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %5701 = and i64 %spec.select.i.i.i36.i.i.i.i4284, 15 %5702 = sub i64 %spec.select.i.i.i36.i.i.i.i4284, %5701 %5703 = icmp ne i64 %5702, 0 %5704 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %5703) %5705 = extractvalue { i1, i64 } %5704, 0 %5706 = extractvalue { i1, i64 } %5704, 1 br i1 %5705, label %loop-memcpy-expansion4971.preheader, label %Flow7704 loop-memcpy-expansion4971.preheader: ; preds = %if.then.i.i.i.i.i.i3.i4281 %arrayidx.i20.i35.i.i.i.i4285 = getelementptr %"struct.rpc::Buffer", ptr %5700, i64 %idxprom.i19.i.i.i.i.i4255 %arrayidx.i22.i38.i.i.i.i4286 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i4285, i64 %sh_prom.i.i.i.i3270 br label %loop-memcpy-expansion4971, !amdgpu.uniform !42 Flow7704: ; preds = %Flow7703, %if.then.i.i.i.i.i.i3.i4281 call void @llvm.amdgcn.end.cf.i64(i64 %5706) br label %loop-memcpy-residual-header4974, !amdgpu.uniform !42 loop-memcpy-expansion4971: ; preds = %loop-memcpy-expansion4971.preheader, %loop-memcpy-expansion4971 %phi.broken8814 = phi i64 [ 0, %loop-memcpy-expansion4971.preheader ], [ %5711, %loop-memcpy-expansion4971 ] %loop-index4972 = phi i64 [ %5709, %loop-memcpy-expansion4971 ], [ 0, %loop-memcpy-expansion4971.preheader ] %scevgep6341 = getelementptr i8, ptr %lsr.iv, i64 %loop-index4972 %5707 = load <4 x i32>, ptr %scevgep6341, align 1 %5708 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i4286, i64 %loop-index4972 store <4 x i32> %5707, ptr %5708, align 1 %5709 = add i64 %loop-index4972, 16 %5710 = icmp uge i64 %5709, %5702 %5711 = call i64 @llvm.amdgcn.if.break.i64(i1 %5710, i64 %phi.broken8814) %5712 = call i1 @llvm.amdgcn.loop.i64(i64 %5711) br i1 %5712, label %Flow7703, label %loop-memcpy-expansion4971 Flow7702: ; preds = %Flow7701, %loop-memcpy-residual-header4974 call void @llvm.amdgcn.end.cf.i64(i64 %6204) br label %Flow7705, !amdgpu.uniform !42 loop-memcpy-residual4973: ; preds = %loop-memcpy-residual4973.preheader, %loop-memcpy-residual4973 %phi.broken8815 = phi i64 [ 0, %loop-memcpy-residual4973.preheader ], [ %5716, %loop-memcpy-residual4973 ] %residual-loop-index4975 = phi i64 [ %5714, %loop-memcpy-residual4973 ], [ 0, %loop-memcpy-residual4973.preheader ] %scevgep6348 = getelementptr i8, ptr %scevgep6347, i64 %residual-loop-index4975 %5713 = load i8, ptr %scevgep6348, align 1 %scevgep6346 = getelementptr i8, ptr %scevgep6345, i64 %residual-loop-index4975 store i8 %5713, ptr %scevgep6346, align 1 %5714 = add i64 %residual-loop-index4975, 1 %5715 = icmp uge i64 %5714, %5701 %5716 = call i64 @llvm.amdgcn.if.break.i64(i1 %5715, i64 %phi.broken8815) %5717 = call i1 @llvm.amdgcn.loop.i64(i64 %5716) br i1 %5717, label %Flow7701, label %loop-memcpy-residual4973 Flow7701: ; preds = %loop-memcpy-residual4973 %.lcssa8832 = phi i64 [ %5716, %loop-memcpy-residual4973 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8832) br label %Flow7702, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4277: ; preds = %Flow7705 %conv.i.i26.i.i.i.i4278 = xor i32 %port.sroa.37.0.i.i4266, 1 fence release %5718 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i4279 = getelementptr inbounds nuw i32, ptr %5718, i64 %idxprom.i23.i.i.i.i.i4262 store atomic i32 %conv.i.i26.i.i.i.i4278, ptr %arrayidx.i24.i29.i.i.i.i4279 monotonic, align 4 %add.i.i.i.i4280 = add i64 %idx.0.i.i.i.i4267, 64 %scevgep6340 = getelementptr i8, ptr %lsr.iv, i64 64 %lsr.iv.next = add i64 %lsr.iv6344, -64 br label %Flow7708, !amdgpu.uniform !42 cond.false.i.i.i4287: ; preds = %Flow7708 %.lcssa8834 = phi i64 [ %5695, %Flow7708 ] %port.sroa.37.0.i.i4266.lcssa = phi i32 [ %port.sroa.37.0.i.i4266, %Flow7708 ] %.lcssa8833 = phi i32 [ %5681, %Flow7708 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8834) %5719 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa8833) %5720 = icmp ne i32 %5719, %port.sroa.37.0.i.i4266.lcssa %5721 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %5720) %5722 = extractvalue { i1, i64 } %5721, 0 %5723 = extractvalue { i1, i64 } %5721, 1 br i1 %5722, label %while.body.i.i.i.i4288.preheader, label %Flow7700 while.body.i.i.i.i4288.preheader: ; preds = %cond.false.i.i.i4287 br label %while.body.i.i.i.i4288, !amdgpu.uniform !42 Flow7700: ; preds = %Flow7699, %cond.false.i.i.i4287 call void @llvm.amdgcn.end.cf.i64(i64 %5723) br label %_ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i4291, !amdgpu.uniform !42 while.body.i.i.i.i4288: ; preds = %while.body.i.i.i.i4288.preheader, %while.body.i.i.i.i4288 %phi.broken8817 = phi i64 [ 0, %while.body.i.i.i.i4288.preheader ], [ %5727, %while.body.i.i.i.i4288 ] call void @llvm.amdgcn.s.sleep(i32 2) %5724 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i4289 = getelementptr inbounds nuw i32, ptr %5724, i64 %idxprom.i23.i.i.i.i.i4262, !amdgpu.uniform !42 %5725 = load atomic i32, ptr %arrayidx.i.i.i8.i.i4289 monotonic, align 4 %5726 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %5725) %cmp.i.not.i.i.i.i4290 = icmp eq i32 %5726, %port.sroa.37.0.i.i4266.lcssa %5727 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i4290, i64 %phi.broken8817) %5728 = call i1 @llvm.amdgcn.loop.i64(i64 %5727) br i1 %5728, label %Flow7699, label %while.body.i.i.i.i4288 Flow7699: ; preds = %while.body.i.i.i.i4288 %.lcssa8830 = phi i64 [ %5727, %while.body.i.i.i.i4288 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8830) br label %Flow7700, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i4291: ; preds = %Flow7700 fence acquire call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %5729 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa8841, i1 true) %iszero.i.i.i.i.i13.i.i4292 = icmp ne i64 %.lcssa8841, 0 %cmp2.i.i.i.i14.i.i4293 = icmp eq i64 %5729, %sh_prom.i.i.i.i3270 %cmp.i.i.i.i15.i.i4294 = select i1 %iszero.i.i.i.i.i13.i.i4292, i1 %cmp2.i.i.i.i14.i.i4293, i1 false %5730 = and i32 %.lcssa8842, 31 %conv4.i.i.i19.i.i4298 = zext i1 %cmp.i.i.i.i15.i.i4294 to i32 %shl.i.i.i20.i.i4299 = shl nuw i32 %conv4.i.i.i19.i.i4298, %5730 %xor.i.i.i21.i.i4300 = xor i32 %shl.i.i.i20.i.i4299, -1 %5731 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5953, !amdgpu.uniform !42 5732: ; preds = %ComputeEnd5954 %div8.i.i.i16.i.i4295 = lshr i32 %.lcssa8842, 5 %idxprom.i.i.i17.i.i4296 = zext nneg i32 %div8.i.i.i16.i.i4295 to i64 %5733 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i4296 %sunkaddr7498 = getelementptr inbounds i8, ptr addrspace(1) %5733, i64 40 %5734 = atomicrmw and ptr addrspace(1) %sunkaddr7498, i32 %.lcssa8829 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %5735, !amdgpu.uniform !42 5735: ; preds = %5732, %ComputeEnd5954 call void @llvm.amdgcn.end.cf.i64(i64 %8740) call void @llvm.amdgcn.wave.barrier() br label %for.cond.i.i.i4326, !amdgpu.uniform !42 for.cond.i.i.i4326: ; preds = %5735, %Flow7698 %5736 = phi i32 [ %5773, %Flow7698 ], [ poison, %5735 ] %5737 = phi i64 [ %5774, %Flow7698 ], [ poison, %5735 ] %5738 = phi i32 [ %5775, %Flow7698 ], [ poison, %5735 ] %retval.sroa.6.0.i.i.i4327 = phi i32 [ %5778, %Flow7698 ], [ undef, %5735 ] %retval.sroa.2.0.i.i.i4329 = phi i64 [ %5777, %Flow7698 ], [ undef, %5735 ] %retval.sroa.8.0.i.i.i4330 = phi i32 [ %5776, %Flow7698 ], [ undef, %5735 ] %index.0.i.i.i4331 = phi i32 [ %5780, %Flow7698 ], [ 0, %5735 ] %5739 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i4332 = icmp ult i32 %index.0.i.i.i4331, %5739 %spec.store.select.i.i.i4333 = select i1 %cmp.not.i.i.i4332, i32 %index.0.i.i.i4331, i32 0 %5740 = call i64 @llvm.amdgcn.ballot.i64(i1 true) %5741 = and i32 %spec.store.select.i.i.i4333, 31 %5742 = lshr i64 %5740, %sh_prom.i.i.i.i3270 %5743 = trunc i64 %5742 to i32 %conv4.i.i.i.i.i4337 = and i32 %5743, 1 %shl.i.i.i.i.i4338 = shl nuw i32 %conv4.i.i.i.i.i4337, %5741 br label %ComputeLoop5957, !amdgpu.uniform !42 5744: ; preds = %ComputeEnd5958 %sunkaddr7499 = getelementptr inbounds i8, ptr addrspace(1) %8750, i64 40 %5745 = atomicrmw or ptr addrspace(1) %sunkaddr7499, i32 %.lcssa8823 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %5746, !amdgpu.uniform !42 5746: ; preds = %5744, %ComputeEnd5958 %5747 = phi i32 [ %5745, %5744 ], [ poison, %ComputeEnd5958 ] call void @llvm.amdgcn.end.cf.i64(i64 %8759) %5748 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %5747) %5749 = or i32 %5748, %.lcssa8824 %shl5.i.i.i.i.i4339 = shl nuw i32 1, %5741 %and.i.i.i.i.i4340 = and i32 %shl5.i.i.i.i.i4339, %5749 %tobool3.i.i.i.i4341 = icmp ne i32 %and.i.i.i.i.i4340, 0 %5750 = call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i4341) %and.i.i.i.i.i.i4342 = and i64 %5750, %5740 %cmp.i.not.i.i.i4343 = icmp ne i64 %5740, %and.i.i.i.i.i.i4342 br i1 %cmp.i.not.i.i.i4343, label %if.then.i.i.i.i4344, label %Flow7697, !amdgpu.uniform !42 if.then.i.i.i.i4344: ; preds = %5746 fence syncscope("agent") acquire %5751 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %5752 = extractelement <2 x i64> %5751, i32 0 %5753 = inttoptr i64 %5752 to ptr %5754 = extractelement <2 x i64> %5751, i32 1 %5755 = inttoptr i64 %5754 to ptr %idxprom.i.i.i.i4345 = zext i32 %spec.store.select.i.i.i4333 to i64 %arrayidx.i.i.i.i4346 = getelementptr inbounds nuw i32, ptr %5753, i64 %idxprom.i.i.i.i4345, !amdgpu.uniform !42 %5756 = load atomic i32, ptr %arrayidx.i.i.i.i4346 monotonic, align 4 %5757 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %5756) %arrayidx.i45.i.i.i4347 = getelementptr inbounds nuw i32, ptr %5755, i64 %idxprom.i.i.i.i4345, !amdgpu.uniform !42 %5758 = load atomic i32, ptr %arrayidx.i45.i.i.i4347 monotonic, align 4 %5759 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %5758) %cmp.i46.not.i.i.i4348 = icmp ne i32 %5757, %5759 br i1 %cmp.i46.not.i.i.i4348, label %if.then12.i.i.i4349, label %Flow7695, !amdgpu.uniform !42 if.then12.i.i.i4349: ; preds = %if.then.i.i.i.i4344 fence syncscope("agent") release %5760 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %5740, i1 true) %iszero.i.i.i.i.i.i.i4350 = icmp ne i64 %5740, 0 %cmp2.i.i.i.i.i.i4351 = icmp eq i64 %5760, %sh_prom.i.i.i.i3270 %cmp.i.i.i.i.i.i4352 = select i1 %iszero.i.i.i.i.i.i.i4350, i1 %cmp2.i.i.i.i.i.i4351, i1 false %conv4.i.i51.i.i.i4353 = zext i1 %cmp.i.i.i.i.i.i4352 to i32 %shl.i.i52.i.i.i4354 = shl nuw i32 %conv4.i.i51.i.i.i4353, %5741 %xor.i.i.i.i.i4355 = xor i32 %shl.i.i52.i.i.i4354, -1 %5761 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5962, !amdgpu.uniform !42 5762: ; preds = %ComputeEnd5963 %sunkaddr7500 = getelementptr inbounds i8, ptr addrspace(1) %8750, i64 40 %5763 = atomicrmw and ptr addrspace(1) %sunkaddr7500, i32 %.lcssa8825 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %5764, !amdgpu.uniform !42 5764: ; preds = %5762, %ComputeEnd5963 call void @llvm.amdgcn.end.cf.i64(i64 %8777) call void @llvm.amdgcn.wave.barrier() br label %Flow7695, !amdgpu.uniform !42 if.end14.i.i.i4413: ; preds = %Flow7695 %5765 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %5740, i1 true) %iszero.i.i.i.i.i.i4414 = icmp ne i64 %5740, 0 %cmp2.i.i.i.i.i4415 = icmp eq i64 %5765, %sh_prom.i.i.i.i3270 %cmp.i.i.i.i.i4416 = select i1 %iszero.i.i.i.i.i.i4414, i1 %cmp2.i.i.i.i.i4415, i1 false %5766 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i4416) %5767 = extractvalue { i1, i64 } %5766, 0 %5768 = extractvalue { i1, i64 } %5766, 1 br i1 %5767, label %if.then16.i.i.i4418, label %if.end22.i.i.i4417 if.then16.i.i.i4418: ; preds = %if.end14.i.i.i4413 %5769 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i4419 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %5769, i64 %idxprom.i.i.i.i4345, i32 1 store i32 1660944387, ptr %opcode.i.i.i4419, align 8, !tbaa !77 %arrayidx21.i.i.i4420 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %5769, i64 %idxprom.i.i.i.i4345 store i64 %5740, ptr %arrayidx21.i.i.i4420, align 8, !tbaa !80 br label %if.end22.i.i.i4417, !amdgpu.uniform !42 Flow7696: ; preds = %if.end22.i.i.i4417, %Flow7695 %5770 = phi i32 [ %5757, %if.end22.i.i.i4417 ], [ %retval.sroa.8.0.i.i.i4330, %Flow7695 ] %5771 = phi i64 [ %5740, %if.end22.i.i.i4417 ], [ %retval.sroa.2.0.i.i.i4329, %Flow7695 ] %5772 = phi i32 [ %spec.store.select.i.i.i4333, %if.end22.i.i.i4417 ], [ %retval.sroa.6.0.i.i.i4327, %Flow7695 ] br label %cleanup26.i.i.i4356, !amdgpu.uniform !42 if.end22.i.i.i4417: ; preds = %if.then16.i.i.i4418, %if.end14.i.i.i4413 call void @llvm.amdgcn.end.cf.i64(i64 %5768) call void @llvm.amdgcn.wave.barrier() br label %Flow7696, !amdgpu.uniform !42 Flow7697: ; preds = %cleanup26.i.i.i4356, %5746 %5773 = phi i32 [ %5772, %cleanup26.i.i.i4356 ], [ %5736, %5746 ] %5774 = phi i64 [ %5771, %cleanup26.i.i.i4356 ], [ %5737, %5746 ] %5775 = phi i32 [ %5770, %cleanup26.i.i.i4356 ], [ %5738, %5746 ] %5776 = phi i32 [ %5770, %cleanup26.i.i.i4356 ], [ %retval.sroa.8.0.i.i.i4330, %5746 ] %5777 = phi i64 [ %5771, %cleanup26.i.i.i4356 ], [ %retval.sroa.2.0.i.i.i4329, %5746 ] %5778 = phi i32 [ %5772, %cleanup26.i.i.i4356 ], [ %retval.sroa.6.0.i.i.i4327, %5746 ] %5779 = phi i1 [ %cmp.i46.not.i.i.i4348, %cleanup26.i.i.i4356 ], [ true, %5746 ] br i1 %5779, label %for.inc.i.i.i4361, label %Flow7698, !amdgpu.uniform !42 cleanup26.i.i.i4356: ; preds = %Flow7696 br label %Flow7697, !amdgpu.uniform !42 for.inc.i.i.i4361: ; preds = %Flow7697 %inc.i.i.i4366 = add i32 %spec.store.select.i.i.i4333, 1 br label %Flow7698, !amdgpu.uniform !42 Flow7698: ; preds = %for.inc.i.i.i4361, %Flow7697 %5780 = phi i32 [ %inc.i.i.i4366, %for.inc.i.i.i4361 ], [ poison, %Flow7697 ] %5781 = phi i1 [ false, %for.inc.i.i.i4361 ], [ true, %Flow7697 ] br i1 %5781, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i4367, label %for.cond.i.i.i4326, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i4367: ; preds = %Flow7698 %.lcssa8828 = phi i32 [ %5773, %Flow7698 ] %.lcssa8827 = phi i64 [ %5774, %Flow7698 ] %.lcssa8826 = phi i32 [ %5775, %Flow7698 ] fence acquire %5782 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i4368 = shl i32 %.lcssa8828, 6 %idxprom.i19.i.i.i.i.i4369 = zext i32 %mul.i.i.i.i.i.i4368 to i64 %arrayidx.i20.i.i.i.i.i4370 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %5782, i64 %idxprom.i19.i.i.i.i.i4369 %arrayidx.i22.i.i.i.i.i4371 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i4370, i64 %sh_prom.i.i.i.i3270 store i64 1, ptr %arrayidx.i22.i.i.i.i.i4371, align 8, !tbaa !82 %arrayidx6.i.i.i.i.i.i.i4372 = getelementptr inbounds nuw i8, ptr %arrayidx.i22.i.i.i.i.i4371, i64 8 store i8 10, ptr %arrayidx6.i.i.i.i.i.i.i4372, align 8 %tobool.not.i.i.i.i.i.i4373 = icmp eq i32 %.lcssa8826, 0 %conv.i.i.i.i.i.i4374 = zext i1 %tobool.not.i.i.i.i.i.i4373 to i32 fence release %5783 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i4375 = zext i32 %.lcssa8828 to i64 %arrayidx.i24.i.i.i.i.i4376 = getelementptr inbounds nuw i32, ptr %5783, i64 %idxprom.i23.i.i.i.i.i4375 store atomic i32 %conv.i.i.i.i.i.i4374, ptr %arrayidx.i24.i.i.i.i.i4376 monotonic, align 4 %5784 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i4377 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %5784, i64 %idxprom.i23.i.i.i.i.i4375, !amdgpu.uniform !42 %5785 = load i64, ptr %arrayidx.i.i5.i.i4377, align 8, !tbaa !80 br label %while.cond.i.i.i.i4378, !amdgpu.uniform !42 while.cond.i.i.i.i4378: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i4367, %Flow7694 %phi.broken8818 = phi i64 [ 0, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i4367 ], [ %5800, %Flow7694 ] %port.sroa.37.0.i.i4379 = phi i32 [ %5798, %Flow7694 ], [ %conv.i.i.i.i.i.i4374, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i4367 ] %idx.0.i.i.i.i4380 = phi i64 [ %5797, %Flow7694 ], [ 56, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i4367 ] %cmp.i.i.i.i4381 = icmp eq i64 %idx.0.i.i.i.i4380, 0 %5786 = call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i4381) %and.i.i.i.i6.i.i4382 = and i64 %5786, %5785 %tobool.not.i.i.i.i4383 = icmp ne i64 %and.i.i.i.i6.i.i4382, 0 %5787 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i4384 = getelementptr inbounds nuw i32, ptr %5787, i64 %idxprom.i23.i.i.i.i.i4375, !amdgpu.uniform !42 %5788 = load atomic i32, ptr %arrayidx.i22.i.i.i4384 monotonic, align 4 %5789 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i4383) %5790 = extractvalue { i1, i64 } %5789, 0 %5791 = extractvalue { i1, i64 } %5789, 1 br i1 %5790, label %cond.false.i8.i.i.i.i4385, label %Flow7694 cond.false.i8.i.i.i.i4385: ; preds = %while.cond.i.i.i.i4378 %5792 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %5788) %5793 = icmp ne i32 %5792, %port.sroa.37.0.i.i4379 br i1 %5793, label %while.body.i.i21.i.i.i.i4386.preheader, label %Flow7693, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i4386.preheader: ; preds = %cond.false.i8.i.i.i.i4385 br label %while.body.i.i21.i.i.i.i4386, !amdgpu.uniform !42 Flow7693: ; preds = %Flow7692, %cond.false.i8.i.i.i.i4385 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i4389, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i4386: ; preds = %while.body.i.i21.i.i.i.i4386.preheader, %while.body.i.i21.i.i.i.i4386 call void @llvm.amdgcn.s.sleep(i32 2) %5794 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i4387 = getelementptr inbounds nuw i32, ptr %5794, i64 %idxprom.i23.i.i.i.i.i4375, !amdgpu.uniform !42 %5795 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i4387 monotonic, align 4 %5796 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %5795) %cmp.i.not.i.i23.i.i.i.i4388 = icmp eq i32 %5796, %port.sroa.37.0.i.i4379 br i1 %cmp.i.not.i.i23.i.i.i.i4388, label %Flow7692, label %while.body.i.i21.i.i.i.i4386, !amdgpu.uniform !42 Flow7692: ; preds = %while.body.i.i21.i.i.i.i4386 br label %Flow7693, !amdgpu.uniform !42 Flow7694: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4390, %while.cond.i.i.i.i4378 %5797 = phi i64 [ %add.i.i.i.i4393, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4390 ], [ poison, %while.cond.i.i.i.i4378 ] %5798 = phi i32 [ %conv.i.i26.i.i.i.i4391, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4390 ], [ poison, %while.cond.i.i.i.i4378 ] %5799 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4390 ], [ true, %while.cond.i.i.i.i4378 ] call void @llvm.amdgcn.end.cf.i64(i64 %5791) %5800 = call i64 @llvm.amdgcn.if.break.i64(i1 %5799, i64 %phi.broken8818) %5801 = call i1 @llvm.amdgcn.loop.i64(i64 %5800) br i1 %5801, label %cond.false.i.i.i4399, label %while.cond.i.i.i.i4378 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i4389: ; preds = %Flow7693 fence acquire br i1 %cmp.i.i.i.i4381, label %if.then.i.i.i.i.i.i.i4394, label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4390, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i4394: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i4389 %5802 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %arrayidx.i20.i35.i.i.i.i4397 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %5802, i64 %idxprom.i19.i.i.i.i.i4369 %arrayidx.i22.i38.i.i.i.i4398 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i4397, i64 %sh_prom.i.i.i.i3270 store i8 10, ptr %arrayidx.i22.i38.i.i.i.i4398, align 1 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4390, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4390: ; preds = %if.then.i.i.i.i.i.i.i4394, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i4389 %conv.i.i26.i.i.i.i4391 = xor i32 %port.sroa.37.0.i.i4379, 1 fence release %5803 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i4392 = getelementptr inbounds nuw i32, ptr %5803, i64 %idxprom.i23.i.i.i.i.i4375 store atomic i32 %conv.i.i26.i.i.i.i4391, ptr %arrayidx.i24.i29.i.i.i.i4392 monotonic, align 4 %add.i.i.i.i4393 = add i64 %idx.0.i.i.i.i4380, 64 br label %Flow7694, !amdgpu.uniform !42 cond.false.i.i.i4399: ; preds = %Flow7694 %.lcssa8822 = phi i64 [ %5800, %Flow7694 ] %port.sroa.37.0.i.i4379.lcssa = phi i32 [ %port.sroa.37.0.i.i4379, %Flow7694 ] %.lcssa8821 = phi i32 [ %5788, %Flow7694 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8822) %5804 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa8821) %5805 = icmp ne i32 %5804, %port.sroa.37.0.i.i4379.lcssa %5806 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %5805) %5807 = extractvalue { i1, i64 } %5806, 0 %5808 = extractvalue { i1, i64 } %5806, 1 br i1 %5807, label %while.body.i.i.i.i4400.preheader, label %Flow7691 while.body.i.i.i.i4400.preheader: ; preds = %cond.false.i.i.i4399 br label %while.body.i.i.i.i4400, !amdgpu.uniform !42 Flow7691: ; preds = %Flow7690, %cond.false.i.i.i4399 call void @llvm.amdgcn.end.cf.i64(i64 %5808) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit4421, !amdgpu.uniform !42 while.body.i.i.i.i4400: ; preds = %while.body.i.i.i.i4400.preheader, %while.body.i.i.i.i4400 %phi.broken8819 = phi i64 [ 0, %while.body.i.i.i.i4400.preheader ], [ %5812, %while.body.i.i.i.i4400 ] call void @llvm.amdgcn.s.sleep(i32 2) %5809 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i4401 = getelementptr inbounds nuw i32, ptr %5809, i64 %idxprom.i23.i.i.i.i.i4375, !amdgpu.uniform !42 %5810 = load atomic i32, ptr %arrayidx.i.i.i8.i.i4401 monotonic, align 4 %5811 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %5810) %cmp.i.not.i.i.i.i4402 = icmp eq i32 %5811, %port.sroa.37.0.i.i4379.lcssa %5812 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i4402, i64 %phi.broken8819) %5813 = call i1 @llvm.amdgcn.loop.i64(i64 %5812) br i1 %5813, label %Flow7690, label %while.body.i.i.i.i4400 Flow7690: ; preds = %while.body.i.i.i.i4400 %.lcssa8820 = phi i64 [ %5812, %while.body.i.i.i.i4400 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8820) br label %Flow7691, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit4421: ; preds = %Flow7691 fence acquire call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %5814 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa8827, i1 true) %iszero.i.i.i.i.i13.i.i4404 = icmp ne i64 %.lcssa8827, 0 %cmp2.i.i.i.i14.i.i4405 = icmp eq i64 %5814, %sh_prom.i.i.i.i3270 %cmp.i.i.i.i15.i.i4406 = select i1 %iszero.i.i.i.i.i13.i.i4404, i1 %cmp2.i.i.i.i14.i.i4405, i1 false %5815 = and i32 %.lcssa8828, 31 %conv4.i.i.i19.i.i4410 = zext i1 %cmp.i.i.i.i15.i.i4406 to i32 %shl.i.i.i20.i.i4411 = shl nuw i32 %conv4.i.i.i19.i.i4410, %5815 %xor.i.i.i21.i.i4412 = xor i32 %shl.i.i.i20.i.i4411, -1 %5816 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5966, !amdgpu.uniform !42 5817: ; preds = %ComputeEnd5967 %div8.i.i.i16.i.i4407 = lshr i32 %.lcssa8828, 5 %idxprom.i.i.i17.i.i4408 = zext nneg i32 %div8.i.i.i16.i.i4407 to i64 %5818 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i4408 %sunkaddr7501 = getelementptr inbounds i8, ptr addrspace(1) %5818, i64 40 %5819 = atomicrmw and ptr addrspace(1) %sunkaddr7501, i32 %.lcssa syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %5820, !amdgpu.uniform !42 5820: ; preds = %5817, %ComputeEnd5967 call void @llvm.amdgcn.end.cf.i64(i64 %8794) call void @llvm.amdgcn.wave.barrier() br label %Flow7917, !amdgpu.uniform !42 Flow7916: ; preds = %Flow7670, %for.cond.cleanup %5821 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %1147) %5822 = extractvalue { i1, i64 } %5821, 0 %5823 = extractvalue { i1, i64 } %5821, 1 br i1 %5822, label %for.cond.i.i1.i3271.preheader, label %Flow7917 for.cond.i.i1.i4430: ; preds = %for.cond.i.i1.i4430.preheader, %Flow7689 %5824 = phi i32 [ %5861, %Flow7689 ], [ poison, %for.cond.i.i1.i4430.preheader ] %5825 = phi i64 [ %5862, %Flow7689 ], [ poison, %for.cond.i.i1.i4430.preheader ] %5826 = phi i32 [ %5863, %Flow7689 ], [ poison, %for.cond.i.i1.i4430.preheader ] %retval.sroa.6.0.i.i.i4431 = phi i32 [ %5866, %Flow7689 ], [ undef, %for.cond.i.i1.i4430.preheader ] %retval.sroa.2.0.i.i.i4433 = phi i64 [ %5865, %Flow7689 ], [ undef, %for.cond.i.i1.i4430.preheader ] %retval.sroa.8.0.i.i.i4434 = phi i32 [ %5864, %Flow7689 ], [ undef, %for.cond.i.i1.i4430.preheader ] %index.0.i.i.i4435 = phi i32 [ %5868, %Flow7689 ], [ 0, %for.cond.i.i1.i4430.preheader ] %5827 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i4436 = icmp ult i32 %index.0.i.i.i4435, %5827 %spec.store.select.i.i.i4437 = select i1 %cmp.not.i.i.i4436, i32 %index.0.i.i.i4435, i32 0 %5828 = call i64 @llvm.amdgcn.ballot.i64(i1 true) %5829 = and i32 %spec.store.select.i.i.i4437, 31 %5830 = lshr i64 %5828, %sh_prom.i.i.i.i3270 %5831 = trunc i64 %5830 to i32 %conv4.i.i.i.i.i4441 = and i32 %5831, 1 %shl.i.i.i.i.i4442 = shl nuw i32 %conv4.i.i.i.i.i4441, %5829 br label %ComputeLoop5970, !amdgpu.uniform !42 5832: ; preds = %ComputeEnd5971 %sunkaddr7502 = getelementptr inbounds i8, ptr addrspace(1) %8804, i64 40 %5833 = atomicrmw or ptr addrspace(1) %sunkaddr7502, i32 %.lcssa8962 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %5834, !amdgpu.uniform !42 5834: ; preds = %5832, %ComputeEnd5971 %5835 = phi i32 [ %5833, %5832 ], [ poison, %ComputeEnd5971 ] call void @llvm.amdgcn.end.cf.i64(i64 %8813) %5836 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %5835) %5837 = or i32 %5836, %.lcssa8963 %shl5.i.i.i.i.i4443 = shl nuw i32 1, %5829 %and.i.i.i.i.i4444 = and i32 %shl5.i.i.i.i.i4443, %5837 %tobool3.i.i.i.i4445 = icmp ne i32 %and.i.i.i.i.i4444, 0 %5838 = call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i4445) %and.i.i.i.i.i.i4446 = and i64 %5838, %5828 %cmp.i.not.i.i.i4447 = icmp ne i64 %5828, %and.i.i.i.i.i.i4446 br i1 %cmp.i.not.i.i.i4447, label %if.then.i.i.i.i4448, label %Flow7688, !amdgpu.uniform !42 if.then.i.i.i.i4448: ; preds = %5834 fence syncscope("agent") acquire %5839 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %5840 = extractelement <2 x i64> %5839, i32 0 %5841 = inttoptr i64 %5840 to ptr %5842 = extractelement <2 x i64> %5839, i32 1 %5843 = inttoptr i64 %5842 to ptr %idxprom.i.i.i.i4449 = zext i32 %spec.store.select.i.i.i4437 to i64 %arrayidx.i.i.i.i4450 = getelementptr inbounds nuw i32, ptr %5841, i64 %idxprom.i.i.i.i4449, !amdgpu.uniform !42 %5844 = load atomic i32, ptr %arrayidx.i.i.i.i4450 monotonic, align 4 %5845 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %5844) %arrayidx.i45.i.i.i4451 = getelementptr inbounds nuw i32, ptr %5843, i64 %idxprom.i.i.i.i4449, !amdgpu.uniform !42 %5846 = load atomic i32, ptr %arrayidx.i45.i.i.i4451 monotonic, align 4 %5847 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %5846) %cmp.i46.not.i.i.i4452 = icmp ne i32 %5845, %5847 br i1 %cmp.i46.not.i.i.i4452, label %if.then12.i.i.i4453, label %Flow7686, !amdgpu.uniform !42 if.then12.i.i.i4453: ; preds = %if.then.i.i.i.i4448 fence syncscope("agent") release %5848 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %5828, i1 true) %iszero.i.i.i.i.i.i.i4454 = icmp ne i64 %5828, 0 %cmp2.i.i.i.i.i.i4455 = icmp eq i64 %5848, %sh_prom.i.i.i.i3270 %cmp.i.i.i.i.i.i4456 = select i1 %iszero.i.i.i.i.i.i.i4454, i1 %cmp2.i.i.i.i.i.i4455, i1 false %conv4.i.i51.i.i.i4457 = zext i1 %cmp.i.i.i.i.i.i4456 to i32 %shl.i.i52.i.i.i4458 = shl nuw i32 %conv4.i.i51.i.i.i4457, %5829 %xor.i.i.i.i.i4459 = xor i32 %shl.i.i52.i.i.i4458, -1 %5849 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5975, !amdgpu.uniform !42 5850: ; preds = %ComputeEnd5976 %sunkaddr7503 = getelementptr inbounds i8, ptr addrspace(1) %8804, i64 40 %5851 = atomicrmw and ptr addrspace(1) %sunkaddr7503, i32 %.lcssa8964 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %5852, !amdgpu.uniform !42 5852: ; preds = %5850, %ComputeEnd5976 call void @llvm.amdgcn.end.cf.i64(i64 %8831) call void @llvm.amdgcn.wave.barrier() br label %Flow7686, !amdgpu.uniform !42 if.end14.i.i.i4519: ; preds = %Flow7686 %5853 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %5828, i1 true) %iszero.i.i.i.i.i.i4520 = icmp ne i64 %5828, 0 %cmp2.i.i.i.i.i4521 = icmp eq i64 %5853, %sh_prom.i.i.i.i3270 %cmp.i.i.i.i.i4522 = select i1 %iszero.i.i.i.i.i.i4520, i1 %cmp2.i.i.i.i.i4521, i1 false %5854 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i4522) %5855 = extractvalue { i1, i64 } %5854, 0 %5856 = extractvalue { i1, i64 } %5854, 1 br i1 %5855, label %if.then16.i.i.i4524, label %if.end22.i.i.i4523 if.then16.i.i.i4524: ; preds = %if.end14.i.i.i4519 %5857 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i4525 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %5857, i64 %idxprom.i.i.i.i4449, i32 1 store i32 1660944387, ptr %opcode.i.i.i4525, align 8, !tbaa !77 %arrayidx21.i.i.i4526 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %5857, i64 %idxprom.i.i.i.i4449 store i64 %5828, ptr %arrayidx21.i.i.i4526, align 8, !tbaa !80 br label %if.end22.i.i.i4523, !amdgpu.uniform !42 Flow7687: ; preds = %if.end22.i.i.i4523, %Flow7686 %5858 = phi i32 [ %5845, %if.end22.i.i.i4523 ], [ %retval.sroa.8.0.i.i.i4434, %Flow7686 ] %5859 = phi i64 [ %5828, %if.end22.i.i.i4523 ], [ %retval.sroa.2.0.i.i.i4433, %Flow7686 ] %5860 = phi i32 [ %spec.store.select.i.i.i4437, %if.end22.i.i.i4523 ], [ %retval.sroa.6.0.i.i.i4431, %Flow7686 ] br label %cleanup26.i.i.i4460, !amdgpu.uniform !42 if.end22.i.i.i4523: ; preds = %if.then16.i.i.i4524, %if.end14.i.i.i4519 call void @llvm.amdgcn.end.cf.i64(i64 %5856) call void @llvm.amdgcn.wave.barrier() br label %Flow7687, !amdgpu.uniform !42 Flow7688: ; preds = %cleanup26.i.i.i4460, %5834 %5861 = phi i32 [ %5860, %cleanup26.i.i.i4460 ], [ %5824, %5834 ] %5862 = phi i64 [ %5859, %cleanup26.i.i.i4460 ], [ %5825, %5834 ] %5863 = phi i32 [ %5858, %cleanup26.i.i.i4460 ], [ %5826, %5834 ] %5864 = phi i32 [ %5858, %cleanup26.i.i.i4460 ], [ %retval.sroa.8.0.i.i.i4434, %5834 ] %5865 = phi i64 [ %5859, %cleanup26.i.i.i4460 ], [ %retval.sroa.2.0.i.i.i4433, %5834 ] %5866 = phi i32 [ %5860, %cleanup26.i.i.i4460 ], [ %retval.sroa.6.0.i.i.i4431, %5834 ] %5867 = phi i1 [ %cmp.i46.not.i.i.i4452, %cleanup26.i.i.i4460 ], [ true, %5834 ] br i1 %5867, label %for.inc.i.i.i4465, label %Flow7689, !amdgpu.uniform !42 cleanup26.i.i.i4460: ; preds = %Flow7687 br label %Flow7688, !amdgpu.uniform !42 for.inc.i.i.i4465: ; preds = %Flow7688 %inc.i.i.i4470 = add i32 %spec.store.select.i.i.i4437, 1 br label %Flow7689, !amdgpu.uniform !42 Flow7689: ; preds = %for.inc.i.i.i4465, %Flow7688 %5868 = phi i32 [ %inc.i.i.i4470, %for.inc.i.i.i4465 ], [ poison, %Flow7688 ] %5869 = phi i1 [ false, %for.inc.i.i.i4465 ], [ true, %Flow7688 ] br i1 %5869, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i4471, label %for.cond.i.i1.i4430, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i4471: ; preds = %Flow7689 %.lcssa8967 = phi i32 [ %5861, %Flow7689 ] %.lcssa8966 = phi i64 [ %5862, %Flow7689 ] %.lcssa8965 = phi i32 [ %5863, %Flow7689 ] fence acquire %5870 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i4472 = shl i32 %.lcssa8967, 6 %idxprom.i19.i.i.i.i.i4473 = zext i32 %mul.i.i.i.i.i.i4472 to i64 %arrayidx.i20.i.i.i.i.i4474 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %5870, i64 %idxprom.i19.i.i.i.i.i4473 %arrayidx.i22.i.i.i.i.i4475 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i4474, i64 %sh_prom.i.i.i.i3270 store i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.29.45 to ptr), i64 14) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.29.45 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i4475, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i4476 = call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.29.45 to ptr), i64 14) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.29.45 to ptr) to i64)), i64 56) %5871 = and i64 %spec.select.i.i.i.i.i.i.i4476, 15 %5872 = sub i64 %spec.select.i.i.i.i.i.i.i4476, %5871 %5873 = icmp ne i64 %5872, 0 br i1 %5873, label %loop-memcpy-expansion5445.preheader, label %Flow7685, !amdgpu.uniform !42 loop-memcpy-expansion5445.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i4471 %5874 = shl nuw nsw i64 %sh_prom.i.i.i.i3270, 6 %5875 = add nuw nsw i64 %5874, 8 %scevgep6565 = getelementptr i8, ptr %5870, i64 %5875 %5876 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i4473, 6 %scevgep6566 = getelementptr i8, ptr %scevgep6565, i64 %5876 br label %loop-memcpy-expansion5445, !amdgpu.uniform !42 Flow7685: ; preds = %Flow7684, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i4471 br label %loop-memcpy-residual-header5448, !amdgpu.uniform !42 loop-memcpy-expansion5445: ; preds = %loop-memcpy-expansion5445.preheader, %loop-memcpy-expansion5445 %loop-index5446 = phi i64 [ %5879, %loop-memcpy-expansion5445 ], [ 0, %loop-memcpy-expansion5445.preheader ] %5877 = getelementptr i8, ptr addrspace(4) @.str.29.45, i64 %loop-index5446, !amdgpu.uniform !42 %5878 = load <4 x i32>, ptr addrspace(4) %5877, align 1 %scevgep6567 = getelementptr i8, ptr %scevgep6566, i64 %loop-index5446 store <4 x i32> %5878, ptr %scevgep6567, align 1 %5879 = add i64 %loop-index5446, 16 %5880 = icmp uge i64 %5879, %5872 br i1 %5880, label %Flow7684, label %loop-memcpy-expansion5445, !amdgpu.uniform !42 Flow7683: ; preds = %Flow7681, %Flow7682 %5881 = phi i64 [ %6675, %Flow7681 ], [ %6672, %Flow7682 ] %5882 = phi i64 [ %6677, %Flow7681 ], [ %6673, %Flow7682 ] br label %post-loop-memcpy-expansion5444, !amdgpu.uniform !42 loop-memcpy-residual5447: ; preds = %loop-memcpy-residual5447.preheader, %loop-memcpy-residual5447 %residual-loop-index5449 = phi i64 [ %5884, %loop-memcpy-residual5447 ], [ 0, %loop-memcpy-residual5447.preheader ] %scevgep6564 = getelementptr i8, ptr addrspace(4) @.str.29.45, i64 %residual-loop-index5449, !amdgpu.uniform !42 %5883 = load i8, ptr addrspace(4) %scevgep6564, align 1 %scevgep6563 = getelementptr i8, ptr %scevgep6562, i64 %residual-loop-index5449 store i8 %5883, ptr %scevgep6563, align 1 %5884 = add i64 %residual-loop-index5449, 1 %5885 = icmp uge i64 %5884, %5871 br i1 %5885, label %Flow7681, label %loop-memcpy-residual5447, !amdgpu.uniform !42 Flow7681: ; preds = %loop-memcpy-residual5447 br label %Flow7683, !amdgpu.uniform !42 post-loop-memcpy-expansion5444: ; preds = %Flow7683 %tobool.not.i.i.i.i.i.i4478 = icmp eq i32 %.lcssa8965, 0 %conv.i.i.i.i.i.i4479 = zext i1 %tobool.not.i.i.i.i.i.i4478 to i32 fence release %5886 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i4480 = zext i32 %.lcssa8967 to i64 %arrayidx.i24.i.i.i.i.i4481 = getelementptr inbounds nuw i32, ptr %5886, i64 %idxprom.i23.i.i.i.i.i4480 store atomic i32 %conv.i.i.i.i.i.i4479, ptr %arrayidx.i24.i.i.i.i.i4481 monotonic, align 4 %5887 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i4482 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %5887, i64 %idxprom.i23.i.i.i.i.i4480, !amdgpu.uniform !42 %5888 = load i64, ptr %arrayidx.i.i5.i.i4482, align 8, !tbaa !80 br label %while.cond.i.i.i.i4483, !amdgpu.uniform !42 while.cond.i.i.i.i4483: ; preds = %post-loop-memcpy-expansion5444, %Flow7680 %phi.broken8767 = phi i64 [ 0, %post-loop-memcpy-expansion5444 ], [ %5905, %Flow7680 ] %lsr.iv6554 = phi i64 [ %5903, %Flow7680 ], [ -42, %post-loop-memcpy-expansion5444 ] %lsr.iv6549 = phi ptr addrspace(4) [ %5902, %Flow7680 ], [ getelementptr (i8, ptr addrspace(4) @.str.29.45, i64 56), %post-loop-memcpy-expansion5444 ] %port.sroa.37.0.i.i4484 = phi i32 [ %5901, %Flow7680 ], [ %conv.i.i.i.i.i.i4479, %post-loop-memcpy-expansion5444 ] %idx.0.i.i.i.i4485 = phi i64 [ %5900, %Flow7680 ], [ 56, %post-loop-memcpy-expansion5444 ] %cmp.i.i.i.i4486 = icmp ult i64 %idx.0.i.i.i.i4485, sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.29.45 to ptr), i64 14) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.29.45 to ptr) to i64)) %5889 = call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i4486) %and.i.i.i.i6.i.i4487 = and i64 %5889, %5888 %tobool.not.i.i.i.i4488 = icmp ne i64 %and.i.i.i.i6.i.i4487, 0 %5890 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i4489 = getelementptr inbounds nuw i32, ptr %5890, i64 %idxprom.i23.i.i.i.i.i4480, !amdgpu.uniform !42 %5891 = load atomic i32, ptr %arrayidx.i22.i.i.i4489 monotonic, align 4 %5892 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i4488) %5893 = extractvalue { i1, i64 } %5892, 0 %5894 = extractvalue { i1, i64 } %5892, 1 br i1 %5893, label %cond.false.i8.i.i.i.i4490, label %Flow7680 cond.false.i8.i.i.i.i4490: ; preds = %while.cond.i.i.i.i4483 %5895 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %5891) %5896 = icmp ne i32 %5895, %port.sroa.37.0.i.i4484 br i1 %5896, label %while.body.i.i21.i.i.i.i4491.preheader, label %Flow7679, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i4491.preheader: ; preds = %cond.false.i8.i.i.i.i4490 br label %while.body.i.i21.i.i.i.i4491, !amdgpu.uniform !42 Flow7679: ; preds = %Flow7678, %cond.false.i8.i.i.i.i4490 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i4494, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i4491: ; preds = %while.body.i.i21.i.i.i.i4491.preheader, %while.body.i.i21.i.i.i.i4491 call void @llvm.amdgcn.s.sleep(i32 2) %5897 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i4492 = getelementptr inbounds nuw i32, ptr %5897, i64 %idxprom.i23.i.i.i.i.i4480, !amdgpu.uniform !42 %5898 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i4492 monotonic, align 4 %5899 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %5898) %cmp.i.not.i.i23.i.i.i.i4493 = icmp eq i32 %5899, %port.sroa.37.0.i.i4484 br i1 %cmp.i.not.i.i23.i.i.i.i4493, label %Flow7678, label %while.body.i.i21.i.i.i.i4491, !amdgpu.uniform !42 Flow7678: ; preds = %while.body.i.i21.i.i.i.i4491 br label %Flow7679, !amdgpu.uniform !42 Flow7680: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4495, %while.cond.i.i.i.i4483 %5900 = phi i64 [ %add.i.i.i.i4498, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4495 ], [ poison, %while.cond.i.i.i.i4483 ] %5901 = phi i32 [ %conv.i.i26.i.i.i.i4496, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4495 ], [ poison, %while.cond.i.i.i.i4483 ] %5902 = phi ptr addrspace(4) [ %scevgep6550, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4495 ], [ poison, %while.cond.i.i.i.i4483 ] %5903 = phi i64 [ %lsr.iv.next6555, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4495 ], [ poison, %while.cond.i.i.i.i4483 ] %5904 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4495 ], [ true, %while.cond.i.i.i.i4483 ] call void @llvm.amdgcn.end.cf.i64(i64 %5894) %5905 = call i64 @llvm.amdgcn.if.break.i64(i1 %5904, i64 %phi.broken8767) %5906 = call i1 @llvm.amdgcn.loop.i64(i64 %5905) br i1 %5906, label %cond.false.i.i.i4505, label %while.cond.i.i.i.i4483 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i4494: ; preds = %Flow7679 fence acquire br i1 %cmp.i.i.i.i4486, label %if.then.i.i.i.i.i.i.i4499, label %Flow7677, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i4499: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i4494 %sub.i.i.i.i.i.i.i4501 = sub nuw i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.29.45 to ptr), i64 14) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.29.45 to ptr) to i64)), %idx.0.i.i.i.i4485 %spec.select.i.i.i36.i.i.i.i4502 = call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i4501, i64 64) %5907 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %5908 = and i64 %spec.select.i.i.i36.i.i.i.i4502, 15 %5909 = sub i64 %spec.select.i.i.i36.i.i.i.i4502, %5908 %5910 = icmp ne i64 %5909, 0 br i1 %5910, label %loop-memcpy-expansion5451.preheader, label %Flow7676, !amdgpu.uniform !42 loop-memcpy-expansion5451.preheader: ; preds = %if.then.i.i.i.i.i.i.i4499 %arrayidx.i20.i35.i.i.i.i4503 = getelementptr %"struct.rpc::Buffer", ptr %5907, i64 %idxprom.i19.i.i.i.i.i4473 %arrayidx.i22.i38.i.i.i.i4504 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i4503, i64 %sh_prom.i.i.i.i3270 br label %loop-memcpy-expansion5451, !amdgpu.uniform !42 Flow7676: ; preds = %Flow7675, %if.then.i.i.i.i.i.i.i4499 br label %loop-memcpy-residual-header5454, !amdgpu.uniform !42 loop-memcpy-expansion5451: ; preds = %loop-memcpy-expansion5451.preheader, %loop-memcpy-expansion5451 %loop-index5452 = phi i64 [ %5913, %loop-memcpy-expansion5451 ], [ 0, %loop-memcpy-expansion5451.preheader ] %scevgep6551 = getelementptr i8, ptr addrspace(4) %lsr.iv6549, i64 %loop-index5452, !amdgpu.uniform !42 %5911 = load <4 x i32>, ptr addrspace(4) %scevgep6551, align 1 %5912 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i4504, i64 %loop-index5452 store <4 x i32> %5911, ptr %5912, align 1 %5913 = add i64 %loop-index5452, 16 %5914 = icmp uge i64 %5913, %5909 br i1 %5914, label %Flow7675, label %loop-memcpy-expansion5451, !amdgpu.uniform !42 Flow7674: ; preds = %Flow7673, %loop-memcpy-residual-header5454 br label %Flow7677, !amdgpu.uniform !42 loop-memcpy-residual5453: ; preds = %loop-memcpy-residual5453.preheader, %loop-memcpy-residual5453 %residual-loop-index5455 = phi i64 [ %5916, %loop-memcpy-residual5453 ], [ 0, %loop-memcpy-residual5453.preheader ] %scevgep6560 = getelementptr i8, ptr addrspace(4) %scevgep6559, i64 %residual-loop-index5455, !amdgpu.uniform !42 %5915 = load i8, ptr addrspace(4) %scevgep6560, align 1 %scevgep6558 = getelementptr i8, ptr %scevgep6557, i64 %residual-loop-index5455 store i8 %5915, ptr %scevgep6558, align 1 %5916 = add i64 %residual-loop-index5455, 1 %5917 = icmp uge i64 %5916, %5908 br i1 %5917, label %Flow7673, label %loop-memcpy-residual5453, !amdgpu.uniform !42 Flow7673: ; preds = %loop-memcpy-residual5453 br label %Flow7674, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4495: ; preds = %Flow7677 %conv.i.i26.i.i.i.i4496 = xor i32 %port.sroa.37.0.i.i4484, 1 fence release %5918 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i4497 = getelementptr inbounds nuw i32, ptr %5918, i64 %idxprom.i23.i.i.i.i.i4480 store atomic i32 %conv.i.i26.i.i.i.i4496, ptr %arrayidx.i24.i29.i.i.i.i4497 monotonic, align 4 %add.i.i.i.i4498 = add i64 %idx.0.i.i.i.i4485, 64 %scevgep6550 = getelementptr i8, ptr addrspace(4) %lsr.iv6549, i64 64 %lsr.iv.next6555 = add i64 %lsr.iv6554, -64 br label %Flow7680, !amdgpu.uniform !42 cond.false.i.i.i4505: ; preds = %Flow7680 %.lcssa8961 = phi i64 [ %5905, %Flow7680 ] %port.sroa.37.0.i.i4484.lcssa = phi i32 [ %port.sroa.37.0.i.i4484, %Flow7680 ] %.lcssa8960 = phi i32 [ %5891, %Flow7680 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8961) %5919 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa8960) %5920 = icmp ne i32 %5919, %port.sroa.37.0.i.i4484.lcssa %5921 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %5920) %5922 = extractvalue { i1, i64 } %5921, 0 %5923 = extractvalue { i1, i64 } %5921, 1 br i1 %5922, label %while.body.i.i.i.i4506.preheader, label %Flow7672 while.body.i.i.i.i4506.preheader: ; preds = %cond.false.i.i.i4505 br label %while.body.i.i.i.i4506, !amdgpu.uniform !42 Flow7672: ; preds = %Flow7671, %cond.false.i.i.i4505 call void @llvm.amdgcn.end.cf.i64(i64 %5923) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit4527, !amdgpu.uniform !42 while.body.i.i.i.i4506: ; preds = %while.body.i.i.i.i4506.preheader, %while.body.i.i.i.i4506 %phi.broken8768 = phi i64 [ 0, %while.body.i.i.i.i4506.preheader ], [ %5927, %while.body.i.i.i.i4506 ] call void @llvm.amdgcn.s.sleep(i32 2) %5924 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i4507 = getelementptr inbounds nuw i32, ptr %5924, i64 %idxprom.i23.i.i.i.i.i4480, !amdgpu.uniform !42 %5925 = load atomic i32, ptr %arrayidx.i.i.i8.i.i4507 monotonic, align 4 %5926 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %5925) %cmp.i.not.i.i.i.i4508 = icmp eq i32 %5926, %port.sroa.37.0.i.i4484.lcssa %5927 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i4508, i64 %phi.broken8768) %5928 = call i1 @llvm.amdgcn.loop.i64(i64 %5927) br i1 %5928, label %Flow7671, label %while.body.i.i.i.i4506 Flow7671: ; preds = %while.body.i.i.i.i4506 %.lcssa8959 = phi i64 [ %5927, %while.body.i.i.i.i4506 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8959) br label %Flow7672, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit4527: ; preds = %Flow7672 fence acquire call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %5929 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa8966, i1 true) %iszero.i.i.i.i.i13.i.i4510 = icmp ne i64 %.lcssa8966, 0 %cmp2.i.i.i.i14.i.i4511 = icmp eq i64 %5929, %sh_prom.i.i.i.i3270 %cmp.i.i.i.i15.i.i4512 = select i1 %iszero.i.i.i.i.i13.i.i4510, i1 %cmp2.i.i.i.i14.i.i4511, i1 false %5930 = and i32 %.lcssa8967, 31 %conv4.i.i.i19.i.i4516 = zext i1 %cmp.i.i.i.i15.i.i4512 to i32 %shl.i.i.i20.i.i4517 = shl nuw i32 %conv4.i.i.i19.i.i4516, %5930 %xor.i.i.i21.i.i4518 = xor i32 %shl.i.i.i20.i.i4517, -1 %5931 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5979, !amdgpu.uniform !42 5932: ; preds = %ComputeEnd5980 %div8.i.i.i16.i.i4513 = lshr i32 %.lcssa8967, 5 %idxprom.i.i.i17.i.i4514 = zext nneg i32 %div8.i.i.i16.i.i4513 to i64 %5933 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i4514 %sunkaddr7504 = getelementptr inbounds i8, ptr addrspace(1) %5933, i64 40 %5934 = atomicrmw and ptr addrspace(1) %sunkaddr7504, i32 %.lcssa8958 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %5935, !amdgpu.uniform !42 5935: ; preds = %5932, %ComputeEnd5980 call void @llvm.amdgcn.end.cf.i64(i64 %8848) call void @llvm.amdgcn.wave.barrier() %5936 = load ptr, ptr %Options, align 8, !tbaa !160 %tobool104.not = icmp ne ptr %5936, null %5937 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool104.not) %5938 = extractvalue { i1, i64 } %5937, 0 %5939 = extractvalue { i1, i64 } %5937, 1 br i1 %5938, label %for.cond.i.i1.i4536.preheader, label %Flow7670 for.cond.i.i1.i4536.preheader: ; preds = %5935 br label %for.cond.i.i1.i4536, !amdgpu.uniform !42 Flow7670: ; preds = %6181, %5935 call void @llvm.amdgcn.end.cf.i64(i64 %5939) br label %Flow7916, !amdgpu.uniform !42 for.cond.i.i1.i4536: ; preds = %for.cond.i.i1.i4536.preheader, %Flow7669 %5940 = phi i32 [ %5977, %Flow7669 ], [ poison, %for.cond.i.i1.i4536.preheader ] %5941 = phi i64 [ %5978, %Flow7669 ], [ poison, %for.cond.i.i1.i4536.preheader ] %5942 = phi i32 [ %5979, %Flow7669 ], [ poison, %for.cond.i.i1.i4536.preheader ] %retval.sroa.6.0.i.i.i4537 = phi i32 [ %5982, %Flow7669 ], [ undef, %for.cond.i.i1.i4536.preheader ] %retval.sroa.2.0.i.i.i4539 = phi i64 [ %5981, %Flow7669 ], [ undef, %for.cond.i.i1.i4536.preheader ] %retval.sroa.8.0.i.i.i4540 = phi i32 [ %5980, %Flow7669 ], [ undef, %for.cond.i.i1.i4536.preheader ] %index.0.i.i.i4541 = phi i32 [ %5984, %Flow7669 ], [ 0, %for.cond.i.i1.i4536.preheader ] %5943 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i4542 = icmp ult i32 %index.0.i.i.i4541, %5943 %spec.store.select.i.i.i4543 = select i1 %cmp.not.i.i.i4542, i32 %index.0.i.i.i4541, i32 0 %5944 = call i64 @llvm.amdgcn.ballot.i64(i1 true) %5945 = and i32 %spec.store.select.i.i.i4543, 31 %5946 = lshr i64 %5944, %sh_prom.i.i.i.i3270 %5947 = trunc i64 %5946 to i32 %conv4.i.i.i.i.i4547 = and i32 %5947, 1 %shl.i.i.i.i.i4548 = shl nuw i32 %conv4.i.i.i.i.i4547, %5945 br label %ComputeLoop5983, !amdgpu.uniform !42 5948: ; preds = %ComputeEnd5984 %sunkaddr7505 = getelementptr inbounds i8, ptr addrspace(1) %8858, i64 40 %5949 = atomicrmw or ptr addrspace(1) %sunkaddr7505, i32 %.lcssa8952 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %5950, !amdgpu.uniform !42 5950: ; preds = %5948, %ComputeEnd5984 %5951 = phi i32 [ %5949, %5948 ], [ poison, %ComputeEnd5984 ] call void @llvm.amdgcn.end.cf.i64(i64 %8867) %5952 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %5951) %5953 = or i32 %5952, %.lcssa8953 %shl5.i.i.i.i.i4549 = shl nuw i32 1, %5945 %and.i.i.i.i.i4550 = and i32 %shl5.i.i.i.i.i4549, %5953 %tobool3.i.i.i.i4551 = icmp ne i32 %and.i.i.i.i.i4550, 0 %5954 = call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i4551) %and.i.i.i.i.i.i4552 = and i64 %5954, %5944 %cmp.i.not.i.i.i4553 = icmp ne i64 %5944, %and.i.i.i.i.i.i4552 br i1 %cmp.i.not.i.i.i4553, label %if.then.i.i.i.i4554, label %Flow7668, !amdgpu.uniform !42 if.then.i.i.i.i4554: ; preds = %5950 fence syncscope("agent") acquire %5955 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %5956 = extractelement <2 x i64> %5955, i32 0 %5957 = inttoptr i64 %5956 to ptr %5958 = extractelement <2 x i64> %5955, i32 1 %5959 = inttoptr i64 %5958 to ptr %idxprom.i.i.i.i4555 = zext i32 %spec.store.select.i.i.i4543 to i64 %arrayidx.i.i.i.i4556 = getelementptr inbounds nuw i32, ptr %5957, i64 %idxprom.i.i.i.i4555, !amdgpu.uniform !42 %5960 = load atomic i32, ptr %arrayidx.i.i.i.i4556 monotonic, align 4 %5961 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %5960) %arrayidx.i45.i.i.i4557 = getelementptr inbounds nuw i32, ptr %5959, i64 %idxprom.i.i.i.i4555, !amdgpu.uniform !42 %5962 = load atomic i32, ptr %arrayidx.i45.i.i.i4557 monotonic, align 4 %5963 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %5962) %cmp.i46.not.i.i.i4558 = icmp ne i32 %5961, %5963 br i1 %cmp.i46.not.i.i.i4558, label %if.then12.i.i.i4559, label %Flow7666, !amdgpu.uniform !42 if.then12.i.i.i4559: ; preds = %if.then.i.i.i.i4554 fence syncscope("agent") release %5964 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %5944, i1 true) %iszero.i.i.i.i.i.i.i4560 = icmp ne i64 %5944, 0 %cmp2.i.i.i.i.i.i4561 = icmp eq i64 %5964, %sh_prom.i.i.i.i3270 %cmp.i.i.i.i.i.i4562 = select i1 %iszero.i.i.i.i.i.i.i4560, i1 %cmp2.i.i.i.i.i.i4561, i1 false %conv4.i.i51.i.i.i4563 = zext i1 %cmp.i.i.i.i.i.i4562 to i32 %shl.i.i52.i.i.i4564 = shl nuw i32 %conv4.i.i51.i.i.i4563, %5945 %xor.i.i.i.i.i4565 = xor i32 %shl.i.i52.i.i.i4564, -1 %5965 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5988, !amdgpu.uniform !42 5966: ; preds = %ComputeEnd5989 %sunkaddr7506 = getelementptr inbounds i8, ptr addrspace(1) %8858, i64 40 %5967 = atomicrmw and ptr addrspace(1) %sunkaddr7506, i32 %.lcssa8954 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %5968, !amdgpu.uniform !42 5968: ; preds = %5966, %ComputeEnd5989 call void @llvm.amdgcn.end.cf.i64(i64 %8885) call void @llvm.amdgcn.wave.barrier() br label %Flow7666, !amdgpu.uniform !42 if.end14.i.i.i4625: ; preds = %Flow7666 %5969 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %5944, i1 true) %iszero.i.i.i.i.i.i4626 = icmp ne i64 %5944, 0 %cmp2.i.i.i.i.i4627 = icmp eq i64 %5969, %sh_prom.i.i.i.i3270 %cmp.i.i.i.i.i4628 = select i1 %iszero.i.i.i.i.i.i4626, i1 %cmp2.i.i.i.i.i4627, i1 false %5970 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i4628) %5971 = extractvalue { i1, i64 } %5970, 0 %5972 = extractvalue { i1, i64 } %5970, 1 br i1 %5971, label %if.then16.i.i.i4630, label %if.end22.i.i.i4629 if.then16.i.i.i4630: ; preds = %if.end14.i.i.i4625 %5973 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i4631 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %5973, i64 %idxprom.i.i.i.i4555, i32 1 store i32 1660944387, ptr %opcode.i.i.i4631, align 8, !tbaa !77 %arrayidx21.i.i.i4632 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %5973, i64 %idxprom.i.i.i.i4555 store i64 %5944, ptr %arrayidx21.i.i.i4632, align 8, !tbaa !80 br label %if.end22.i.i.i4629, !amdgpu.uniform !42 Flow7667: ; preds = %if.end22.i.i.i4629, %Flow7666 %5974 = phi i32 [ %5961, %if.end22.i.i.i4629 ], [ %retval.sroa.8.0.i.i.i4540, %Flow7666 ] %5975 = phi i64 [ %5944, %if.end22.i.i.i4629 ], [ %retval.sroa.2.0.i.i.i4539, %Flow7666 ] %5976 = phi i32 [ %spec.store.select.i.i.i4543, %if.end22.i.i.i4629 ], [ %retval.sroa.6.0.i.i.i4537, %Flow7666 ] br label %cleanup26.i.i.i4566, !amdgpu.uniform !42 if.end22.i.i.i4629: ; preds = %if.then16.i.i.i4630, %if.end14.i.i.i4625 call void @llvm.amdgcn.end.cf.i64(i64 %5972) call void @llvm.amdgcn.wave.barrier() br label %Flow7667, !amdgpu.uniform !42 Flow7668: ; preds = %cleanup26.i.i.i4566, %5950 %5977 = phi i32 [ %5976, %cleanup26.i.i.i4566 ], [ %5940, %5950 ] %5978 = phi i64 [ %5975, %cleanup26.i.i.i4566 ], [ %5941, %5950 ] %5979 = phi i32 [ %5974, %cleanup26.i.i.i4566 ], [ %5942, %5950 ] %5980 = phi i32 [ %5974, %cleanup26.i.i.i4566 ], [ %retval.sroa.8.0.i.i.i4540, %5950 ] %5981 = phi i64 [ %5975, %cleanup26.i.i.i4566 ], [ %retval.sroa.2.0.i.i.i4539, %5950 ] %5982 = phi i32 [ %5976, %cleanup26.i.i.i4566 ], [ %retval.sroa.6.0.i.i.i4537, %5950 ] %5983 = phi i1 [ %cmp.i46.not.i.i.i4558, %cleanup26.i.i.i4566 ], [ true, %5950 ] br i1 %5983, label %for.inc.i.i.i4571, label %Flow7669, !amdgpu.uniform !42 cleanup26.i.i.i4566: ; preds = %Flow7667 br label %Flow7668, !amdgpu.uniform !42 for.inc.i.i.i4571: ; preds = %Flow7668 %inc.i.i.i4576 = add i32 %spec.store.select.i.i.i4543, 1 br label %Flow7669, !amdgpu.uniform !42 Flow7669: ; preds = %for.inc.i.i.i4571, %Flow7668 %5984 = phi i32 [ %inc.i.i.i4576, %for.inc.i.i.i4571 ], [ poison, %Flow7668 ] %5985 = phi i1 [ false, %for.inc.i.i.i4571 ], [ true, %Flow7668 ] br i1 %5985, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i4577, label %for.cond.i.i1.i4536, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i4577: ; preds = %Flow7669 %.lcssa8957 = phi i32 [ %5977, %Flow7669 ] %.lcssa8956 = phi i64 [ %5978, %Flow7669 ] %.lcssa8955 = phi i32 [ %5979, %Flow7669 ] fence acquire %5986 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i4578 = shl i32 %.lcssa8957, 6 %idxprom.i19.i.i.i.i.i4579 = zext i32 %mul.i.i.i.i.i.i4578 to i64 %arrayidx.i20.i.i.i.i.i4580 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %5986, i64 %idxprom.i19.i.i.i.i.i4579 %arrayidx.i22.i.i.i.i.i4581 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i4580, i64 %sh_prom.i.i.i.i3270 store i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.30 to ptr), i64 21) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.30 to ptr) to i64)), ptr %arrayidx.i22.i.i.i.i.i4581, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i4582 = call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.30 to ptr), i64 21) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.30 to ptr) to i64)), i64 56) %5987 = and i64 %spec.select.i.i.i.i.i.i.i4582, 15 %5988 = sub i64 %spec.select.i.i.i.i.i.i.i4582, %5987 %5989 = icmp ne i64 %5988, 0 br i1 %5989, label %loop-memcpy-expansion5457.preheader, label %Flow7665, !amdgpu.uniform !42 loop-memcpy-expansion5457.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i4577 %5990 = add nuw nsw i64 %5881, 8 %scevgep6546 = getelementptr i8, ptr %5986, i64 %5990 %5991 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i4579, 6 %scevgep6547 = getelementptr i8, ptr %scevgep6546, i64 %5991 br label %loop-memcpy-expansion5457, !amdgpu.uniform !42 Flow7665: ; preds = %Flow7664, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i4577 br label %loop-memcpy-residual-header5460, !amdgpu.uniform !42 loop-memcpy-expansion5457: ; preds = %loop-memcpy-expansion5457.preheader, %loop-memcpy-expansion5457 %loop-index5458 = phi i64 [ %5994, %loop-memcpy-expansion5457 ], [ 0, %loop-memcpy-expansion5457.preheader ] %5992 = getelementptr i8, ptr addrspace(4) @.str.30, i64 %loop-index5458, !amdgpu.uniform !42 %5993 = load <4 x i32>, ptr addrspace(4) %5992, align 1 %scevgep6548 = getelementptr i8, ptr %scevgep6547, i64 %loop-index5458 store <4 x i32> %5993, ptr %scevgep6548, align 1 %5994 = add i64 %loop-index5458, 16 %5995 = icmp uge i64 %5994, %5988 br i1 %5995, label %Flow7664, label %loop-memcpy-expansion5457, !amdgpu.uniform !42 Flow7663: ; preds = %Flow7661, %Flow7662 %5996 = phi i64 [ %6685, %Flow7661 ], [ %6682, %Flow7662 ] br label %post-loop-memcpy-expansion5456, !amdgpu.uniform !42 loop-memcpy-residual5459: ; preds = %loop-memcpy-residual5459.preheader, %loop-memcpy-residual5459 %residual-loop-index5461 = phi i64 [ %5998, %loop-memcpy-residual5459 ], [ 0, %loop-memcpy-residual5459.preheader ] %scevgep6545 = getelementptr i8, ptr addrspace(4) getelementptr inbounds nuw (i8, ptr addrspace(4) @.str.30, i64 16), i64 %residual-loop-index5461, !amdgpu.uniform !42 %5997 = load i8, ptr addrspace(4) %scevgep6545, align 1 %scevgep6544 = getelementptr i8, ptr %scevgep6543, i64 %residual-loop-index5461 store i8 %5997, ptr %scevgep6544, align 1 %5998 = add i64 %residual-loop-index5461, 1 %5999 = icmp uge i64 %5998, %5987 br i1 %5999, label %Flow7661, label %loop-memcpy-residual5459, !amdgpu.uniform !42 Flow7661: ; preds = %loop-memcpy-residual5459 br label %Flow7663, !amdgpu.uniform !42 post-loop-memcpy-expansion5456: ; preds = %Flow7663 %tobool.not.i.i.i.i.i.i4584 = icmp eq i32 %.lcssa8955, 0 %conv.i.i.i.i.i.i4585 = zext i1 %tobool.not.i.i.i.i.i.i4584 to i32 fence release %6000 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i4586 = zext i32 %.lcssa8957 to i64 %arrayidx.i24.i.i.i.i.i4587 = getelementptr inbounds nuw i32, ptr %6000, i64 %idxprom.i23.i.i.i.i.i4586 store atomic i32 %conv.i.i.i.i.i.i4585, ptr %arrayidx.i24.i.i.i.i.i4587 monotonic, align 4 %6001 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i4588 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %6001, i64 %idxprom.i23.i.i.i.i.i4586, !amdgpu.uniform !42 %6002 = load i64, ptr %arrayidx.i.i5.i.i4588, align 8, !tbaa !80 br label %while.cond.i.i.i.i4589, !amdgpu.uniform !42 while.cond.i.i.i.i4589: ; preds = %post-loop-memcpy-expansion5456, %Flow7660 %phi.broken8769 = phi i64 [ 0, %post-loop-memcpy-expansion5456 ], [ %6019, %Flow7660 ] %lsr.iv6535 = phi i64 [ %6017, %Flow7660 ], [ -35, %post-loop-memcpy-expansion5456 ] %lsr.iv6530 = phi ptr addrspace(4) [ %6016, %Flow7660 ], [ getelementptr (i8, ptr addrspace(4) @.str.30, i64 56), %post-loop-memcpy-expansion5456 ] %port.sroa.37.0.i.i4590 = phi i32 [ %6015, %Flow7660 ], [ %conv.i.i.i.i.i.i4585, %post-loop-memcpy-expansion5456 ] %idx.0.i.i.i.i4591 = phi i64 [ %6014, %Flow7660 ], [ 56, %post-loop-memcpy-expansion5456 ] %cmp.i.i.i.i4592 = icmp ult i64 %idx.0.i.i.i.i4591, sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.30 to ptr), i64 21) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.30 to ptr) to i64)) %6003 = call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i4592) %and.i.i.i.i6.i.i4593 = and i64 %6003, %6002 %tobool.not.i.i.i.i4594 = icmp ne i64 %and.i.i.i.i6.i.i4593, 0 %6004 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i4595 = getelementptr inbounds nuw i32, ptr %6004, i64 %idxprom.i23.i.i.i.i.i4586, !amdgpu.uniform !42 %6005 = load atomic i32, ptr %arrayidx.i22.i.i.i4595 monotonic, align 4 %6006 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i4594) %6007 = extractvalue { i1, i64 } %6006, 0 %6008 = extractvalue { i1, i64 } %6006, 1 br i1 %6007, label %cond.false.i8.i.i.i.i4596, label %Flow7660 cond.false.i8.i.i.i.i4596: ; preds = %while.cond.i.i.i.i4589 %6009 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %6005) %6010 = icmp ne i32 %6009, %port.sroa.37.0.i.i4590 br i1 %6010, label %while.body.i.i21.i.i.i.i4597.preheader, label %Flow7659, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i4597.preheader: ; preds = %cond.false.i8.i.i.i.i4596 br label %while.body.i.i21.i.i.i.i4597, !amdgpu.uniform !42 Flow7659: ; preds = %Flow7658, %cond.false.i8.i.i.i.i4596 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i4600, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i4597: ; preds = %while.body.i.i21.i.i.i.i4597.preheader, %while.body.i.i21.i.i.i.i4597 call void @llvm.amdgcn.s.sleep(i32 2) %6011 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i4598 = getelementptr inbounds nuw i32, ptr %6011, i64 %idxprom.i23.i.i.i.i.i4586, !amdgpu.uniform !42 %6012 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i4598 monotonic, align 4 %6013 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %6012) %cmp.i.not.i.i23.i.i.i.i4599 = icmp eq i32 %6013, %port.sroa.37.0.i.i4590 br i1 %cmp.i.not.i.i23.i.i.i.i4599, label %Flow7658, label %while.body.i.i21.i.i.i.i4597, !amdgpu.uniform !42 Flow7658: ; preds = %while.body.i.i21.i.i.i.i4597 br label %Flow7659, !amdgpu.uniform !42 Flow7660: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4601, %while.cond.i.i.i.i4589 %6014 = phi i64 [ %add.i.i.i.i4604, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4601 ], [ poison, %while.cond.i.i.i.i4589 ] %6015 = phi i32 [ %conv.i.i26.i.i.i.i4602, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4601 ], [ poison, %while.cond.i.i.i.i4589 ] %6016 = phi ptr addrspace(4) [ %scevgep6531, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4601 ], [ poison, %while.cond.i.i.i.i4589 ] %6017 = phi i64 [ %lsr.iv.next6536, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4601 ], [ poison, %while.cond.i.i.i.i4589 ] %6018 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4601 ], [ true, %while.cond.i.i.i.i4589 ] call void @llvm.amdgcn.end.cf.i64(i64 %6008) %6019 = call i64 @llvm.amdgcn.if.break.i64(i1 %6018, i64 %phi.broken8769) %6020 = call i1 @llvm.amdgcn.loop.i64(i64 %6019) br i1 %6020, label %cond.false.i.i.i4611, label %while.cond.i.i.i.i4589 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i4600: ; preds = %Flow7659 fence acquire br i1 %cmp.i.i.i.i4592, label %if.then.i.i.i.i.i.i.i4605, label %Flow7657, !amdgpu.uniform !42 if.then.i.i.i.i.i.i.i4605: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i4600 %sub.i.i.i.i.i.i.i4607 = sub nuw i64 sub (i64 ptrtoint (ptr getelementptr (i8, ptr addrspacecast (ptr addrspace(4) @.str.30 to ptr), i64 21) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) @.str.30 to ptr) to i64)), %idx.0.i.i.i.i4591 %spec.select.i.i.i36.i.i.i.i4608 = call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i4607, i64 64) %6021 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %6022 = and i64 %spec.select.i.i.i36.i.i.i.i4608, 15 %6023 = sub i64 %spec.select.i.i.i36.i.i.i.i4608, %6022 %6024 = icmp ne i64 %6023, 0 br i1 %6024, label %loop-memcpy-expansion5463.preheader, label %Flow7656, !amdgpu.uniform !42 loop-memcpy-expansion5463.preheader: ; preds = %if.then.i.i.i.i.i.i.i4605 %arrayidx.i20.i35.i.i.i.i4609 = getelementptr %"struct.rpc::Buffer", ptr %6021, i64 %idxprom.i19.i.i.i.i.i4579 %arrayidx.i22.i38.i.i.i.i4610 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i4609, i64 %sh_prom.i.i.i.i3270 br label %loop-memcpy-expansion5463, !amdgpu.uniform !42 Flow7656: ; preds = %Flow7655, %if.then.i.i.i.i.i.i.i4605 br label %loop-memcpy-residual-header5466, !amdgpu.uniform !42 loop-memcpy-expansion5463: ; preds = %loop-memcpy-expansion5463.preheader, %loop-memcpy-expansion5463 %loop-index5464 = phi i64 [ %6027, %loop-memcpy-expansion5463 ], [ 0, %loop-memcpy-expansion5463.preheader ] %scevgep6532 = getelementptr i8, ptr addrspace(4) %lsr.iv6530, i64 %loop-index5464, !amdgpu.uniform !42 %6025 = load <4 x i32>, ptr addrspace(4) %scevgep6532, align 1 %6026 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i4610, i64 %loop-index5464 store <4 x i32> %6025, ptr %6026, align 1 %6027 = add i64 %loop-index5464, 16 %6028 = icmp uge i64 %6027, %6023 br i1 %6028, label %Flow7655, label %loop-memcpy-expansion5463, !amdgpu.uniform !42 Flow7654: ; preds = %Flow7653, %loop-memcpy-residual-header5466 br label %Flow7657, !amdgpu.uniform !42 loop-memcpy-residual5465: ; preds = %loop-memcpy-residual5465.preheader, %loop-memcpy-residual5465 %residual-loop-index5467 = phi i64 [ %6030, %loop-memcpy-residual5465 ], [ 0, %loop-memcpy-residual5465.preheader ] %scevgep6541 = getelementptr i8, ptr addrspace(4) %scevgep6540, i64 %residual-loop-index5467, !amdgpu.uniform !42 %6029 = load i8, ptr addrspace(4) %scevgep6541, align 1 %scevgep6539 = getelementptr i8, ptr %scevgep6538, i64 %residual-loop-index5467 store i8 %6029, ptr %scevgep6539, align 1 %6030 = add i64 %residual-loop-index5467, 1 %6031 = icmp uge i64 %6030, %6022 br i1 %6031, label %Flow7653, label %loop-memcpy-residual5465, !amdgpu.uniform !42 Flow7653: ; preds = %loop-memcpy-residual5465 br label %Flow7654, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4601: ; preds = %Flow7657 %conv.i.i26.i.i.i.i4602 = xor i32 %port.sroa.37.0.i.i4590, 1 fence release %6032 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i4603 = getelementptr inbounds nuw i32, ptr %6032, i64 %idxprom.i23.i.i.i.i.i4586 store atomic i32 %conv.i.i26.i.i.i.i4602, ptr %arrayidx.i24.i29.i.i.i.i4603 monotonic, align 4 %add.i.i.i.i4604 = add i64 %idx.0.i.i.i.i4591, 64 %scevgep6531 = getelementptr i8, ptr addrspace(4) %lsr.iv6530, i64 64 %lsr.iv.next6536 = add i64 %lsr.iv6535, -64 br label %Flow7660, !amdgpu.uniform !42 cond.false.i.i.i4611: ; preds = %Flow7660 %.lcssa8951 = phi i64 [ %6019, %Flow7660 ] %port.sroa.37.0.i.i4590.lcssa = phi i32 [ %port.sroa.37.0.i.i4590, %Flow7660 ] %.lcssa8950 = phi i32 [ %6005, %Flow7660 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8951) %6033 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa8950) %6034 = icmp ne i32 %6033, %port.sroa.37.0.i.i4590.lcssa %6035 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6034) %6036 = extractvalue { i1, i64 } %6035, 0 %6037 = extractvalue { i1, i64 } %6035, 1 br i1 %6036, label %while.body.i.i.i.i4612.preheader, label %Flow7652 while.body.i.i.i.i4612.preheader: ; preds = %cond.false.i.i.i4611 br label %while.body.i.i.i.i4612, !amdgpu.uniform !42 Flow7652: ; preds = %Flow7651, %cond.false.i.i.i4611 call void @llvm.amdgcn.end.cf.i64(i64 %6037) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit4633, !amdgpu.uniform !42 while.body.i.i.i.i4612: ; preds = %while.body.i.i.i.i4612.preheader, %while.body.i.i.i.i4612 %phi.broken8770 = phi i64 [ 0, %while.body.i.i.i.i4612.preheader ], [ %6041, %while.body.i.i.i.i4612 ] call void @llvm.amdgcn.s.sleep(i32 2) %6038 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i4613 = getelementptr inbounds nuw i32, ptr %6038, i64 %idxprom.i23.i.i.i.i.i4586, !amdgpu.uniform !42 %6039 = load atomic i32, ptr %arrayidx.i.i.i8.i.i4613 monotonic, align 4 %6040 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %6039) %cmp.i.not.i.i.i.i4614 = icmp eq i32 %6040, %port.sroa.37.0.i.i4590.lcssa %6041 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i4614, i64 %phi.broken8770) %6042 = call i1 @llvm.amdgcn.loop.i64(i64 %6041) br i1 %6042, label %Flow7651, label %while.body.i.i.i.i4612 Flow7651: ; preds = %while.body.i.i.i.i4612 %.lcssa8949 = phi i64 [ %6041, %while.body.i.i.i.i4612 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8949) br label %Flow7652, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit4633: ; preds = %Flow7652 fence acquire call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %6043 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa8956, i1 true) %iszero.i.i.i.i.i13.i.i4616 = icmp ne i64 %.lcssa8956, 0 %cmp2.i.i.i.i14.i.i4617 = icmp eq i64 %6043, %sh_prom.i.i.i.i3270 %cmp.i.i.i.i15.i.i4618 = select i1 %iszero.i.i.i.i.i13.i.i4616, i1 %cmp2.i.i.i.i14.i.i4617, i1 false %6044 = and i32 %.lcssa8957, 31 %conv4.i.i.i19.i.i4622 = zext i1 %cmp.i.i.i.i15.i.i4618 to i32 %shl.i.i.i20.i.i4623 = shl nuw i32 %conv4.i.i.i19.i.i4622, %6044 %xor.i.i.i21.i.i4624 = xor i32 %shl.i.i.i20.i.i4623, -1 %6045 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop5992, !amdgpu.uniform !42 6046: ; preds = %ComputeEnd5993 %div8.i.i.i16.i.i4619 = lshr i32 %.lcssa8957, 5 %idxprom.i.i.i17.i.i4620 = zext nneg i32 %div8.i.i.i16.i.i4619 to i64 %6047 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i4620 %sunkaddr7507 = getelementptr inbounds i8, ptr addrspace(1) %6047, i64 40 %6048 = atomicrmw and ptr addrspace(1) %sunkaddr7507, i32 %.lcssa8948 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %6049, !amdgpu.uniform !42 6049: ; preds = %6046, %ComputeEnd5993 call void @llvm.amdgcn.end.cf.i64(i64 %8902) call void @llvm.amdgcn.wave.barrier() %6050 = load ptr, ptr %Options, align 8, !tbaa !160 br label %for.cond.i.i.i4634, !amdgpu.uniform !42 for.cond.i.i.i4634: ; preds = %6049, %for.cond.i.i.i4634 %phi.broken8771 = phi i64 [ 0, %6049 ], [ %6052, %for.cond.i.i.i4634 ] %lsr.iv6516 = phi i64 [ %lsr.iv.next6517, %for.cond.i.i.i4634 ], [ -1, %6049 ] %scevgep6528 = getelementptr i8, ptr %6050, i64 %lsr.iv6516 %scevgep6529 = getelementptr i8, ptr %scevgep6528, i64 1 %6051 = load i8, ptr %scevgep6529, align 1, !tbaa !57 %cmp.i.i.i4636 = icmp eq i8 %6051, 0 %lsr.iv.next6517 = add i64 %lsr.iv6516, 1 %6052 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.i.i4636, i64 %phi.broken8771) %6053 = call i1 @llvm.amdgcn.loop.i64(i64 %6052) br i1 %6053, label %for.cond.i.i1.i4643.preheader, label %for.cond.i.i.i4634 for.cond.i.i1.i4643.preheader: ; preds = %for.cond.i.i.i4634 %lsr.iv.next6517.lcssa = phi i64 [ %lsr.iv.next6517, %for.cond.i.i.i4634 ] %.lcssa8947 = phi i64 [ %6052, %for.cond.i.i.i4634 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8947) br label %for.cond.i.i1.i4643, !amdgpu.uniform !42 for.cond.i.i1.i4643: ; preds = %for.cond.i.i1.i4643.preheader, %Flow7650 %6054 = phi i32 [ %6091, %Flow7650 ], [ poison, %for.cond.i.i1.i4643.preheader ] %6055 = phi i64 [ %6092, %Flow7650 ], [ poison, %for.cond.i.i1.i4643.preheader ] %6056 = phi i32 [ %6093, %Flow7650 ], [ poison, %for.cond.i.i1.i4643.preheader ] %retval.sroa.6.0.i.i.i4644 = phi i32 [ %6096, %Flow7650 ], [ undef, %for.cond.i.i1.i4643.preheader ] %retval.sroa.2.0.i.i.i4646 = phi i64 [ %6095, %Flow7650 ], [ undef, %for.cond.i.i1.i4643.preheader ] %retval.sroa.8.0.i.i.i4647 = phi i32 [ %6094, %Flow7650 ], [ undef, %for.cond.i.i1.i4643.preheader ] %index.0.i.i.i4648 = phi i32 [ %6098, %Flow7650 ], [ 0, %for.cond.i.i1.i4643.preheader ] %6057 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i.i4649 = icmp ult i32 %index.0.i.i.i4648, %6057 %spec.store.select.i.i.i4650 = select i1 %cmp.not.i.i.i4649, i32 %index.0.i.i.i4648, i32 0 %6058 = call i64 @llvm.amdgcn.ballot.i64(i1 true) %6059 = and i32 %spec.store.select.i.i.i4650, 31 %6060 = lshr i64 %6058, %sh_prom.i.i.i.i3270 %6061 = trunc i64 %6060 to i32 %conv4.i.i.i.i.i4654 = and i32 %6061, 1 %shl.i.i.i.i.i4655 = shl nuw i32 %conv4.i.i.i.i.i4654, %6059 br label %ComputeLoop5996, !amdgpu.uniform !42 6062: ; preds = %ComputeEnd5997 %sunkaddr7508 = getelementptr inbounds i8, ptr addrspace(1) %8912, i64 40 %6063 = atomicrmw or ptr addrspace(1) %sunkaddr7508, i32 %.lcssa8941 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %6064, !amdgpu.uniform !42 6064: ; preds = %6062, %ComputeEnd5997 %6065 = phi i32 [ %6063, %6062 ], [ poison, %ComputeEnd5997 ] call void @llvm.amdgcn.end.cf.i64(i64 %8921) %6066 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %6065) %6067 = or i32 %6066, %.lcssa8942 %shl5.i.i.i.i.i4656 = shl nuw i32 1, %6059 %and.i.i.i.i.i4657 = and i32 %shl5.i.i.i.i.i4656, %6067 %tobool3.i.i.i.i4658 = icmp ne i32 %and.i.i.i.i.i4657, 0 %6068 = call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i.i4658) %and.i.i.i.i.i.i4659 = and i64 %6068, %6058 %cmp.i.not.i.i.i4660 = icmp ne i64 %6058, %and.i.i.i.i.i.i4659 br i1 %cmp.i.not.i.i.i4660, label %if.then.i.i.i.i4661, label %Flow7649, !amdgpu.uniform !42 if.then.i.i.i.i4661: ; preds = %6064 fence syncscope("agent") acquire %6069 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %6070 = extractelement <2 x i64> %6069, i32 0 %6071 = inttoptr i64 %6070 to ptr %6072 = extractelement <2 x i64> %6069, i32 1 %6073 = inttoptr i64 %6072 to ptr %idxprom.i.i.i.i4662 = zext i32 %spec.store.select.i.i.i4650 to i64 %arrayidx.i.i.i.i4663 = getelementptr inbounds nuw i32, ptr %6071, i64 %idxprom.i.i.i.i4662, !amdgpu.uniform !42 %6074 = load atomic i32, ptr %arrayidx.i.i.i.i4663 monotonic, align 4 %6075 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %6074) %arrayidx.i45.i.i.i4664 = getelementptr inbounds nuw i32, ptr %6073, i64 %idxprom.i.i.i.i4662, !amdgpu.uniform !42 %6076 = load atomic i32, ptr %arrayidx.i45.i.i.i4664 monotonic, align 4 %6077 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %6076) %cmp.i46.not.i.i.i4665 = icmp ne i32 %6075, %6077 br i1 %cmp.i46.not.i.i.i4665, label %if.then12.i.i.i4666, label %Flow7647, !amdgpu.uniform !42 if.then12.i.i.i4666: ; preds = %if.then.i.i.i.i4661 fence syncscope("agent") release %6078 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %6058, i1 true) %iszero.i.i.i.i.i.i.i4667 = icmp ne i64 %6058, 0 %cmp2.i.i.i.i.i.i4668 = icmp eq i64 %6078, %sh_prom.i.i.i.i3270 %cmp.i.i.i.i.i.i4669 = select i1 %iszero.i.i.i.i.i.i.i4667, i1 %cmp2.i.i.i.i.i.i4668, i1 false %conv4.i.i51.i.i.i4670 = zext i1 %cmp.i.i.i.i.i.i4669 to i32 %shl.i.i52.i.i.i4671 = shl nuw i32 %conv4.i.i51.i.i.i4670, %6059 %xor.i.i.i.i.i4672 = xor i32 %shl.i.i52.i.i.i4671, -1 %6079 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop6001, !amdgpu.uniform !42 6080: ; preds = %ComputeEnd6002 %sunkaddr7509 = getelementptr inbounds i8, ptr addrspace(1) %8912, i64 40 %6081 = atomicrmw and ptr addrspace(1) %sunkaddr7509, i32 %.lcssa8943 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %6082, !amdgpu.uniform !42 6082: ; preds = %6080, %ComputeEnd6002 call void @llvm.amdgcn.end.cf.i64(i64 %8939) call void @llvm.amdgcn.wave.barrier() br label %Flow7647, !amdgpu.uniform !42 if.end14.i.i.i4732: ; preds = %Flow7647 %6083 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %6058, i1 true) %iszero.i.i.i.i.i.i4733 = icmp ne i64 %6058, 0 %cmp2.i.i.i.i.i4734 = icmp eq i64 %6083, %sh_prom.i.i.i.i3270 %cmp.i.i.i.i.i4735 = select i1 %iszero.i.i.i.i.i.i4733, i1 %cmp2.i.i.i.i.i4734, i1 false %6084 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i.i4735) %6085 = extractvalue { i1, i64 } %6084, 0 %6086 = extractvalue { i1, i64 } %6084, 1 br i1 %6085, label %if.then16.i.i.i4737, label %if.end22.i.i.i4736 if.then16.i.i.i4737: ; preds = %if.end14.i.i.i4732 %6087 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i.i4738 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %6087, i64 %idxprom.i.i.i.i4662, i32 1 store i32 1660944387, ptr %opcode.i.i.i4738, align 8, !tbaa !77 %arrayidx21.i.i.i4739 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %6087, i64 %idxprom.i.i.i.i4662 store i64 %6058, ptr %arrayidx21.i.i.i4739, align 8, !tbaa !80 br label %if.end22.i.i.i4736, !amdgpu.uniform !42 Flow7648: ; preds = %if.end22.i.i.i4736, %Flow7647 %6088 = phi i32 [ %6075, %if.end22.i.i.i4736 ], [ %retval.sroa.8.0.i.i.i4647, %Flow7647 ] %6089 = phi i64 [ %6058, %if.end22.i.i.i4736 ], [ %retval.sroa.2.0.i.i.i4646, %Flow7647 ] %6090 = phi i32 [ %spec.store.select.i.i.i4650, %if.end22.i.i.i4736 ], [ %retval.sroa.6.0.i.i.i4644, %Flow7647 ] br label %cleanup26.i.i.i4673, !amdgpu.uniform !42 if.end22.i.i.i4736: ; preds = %if.then16.i.i.i4737, %if.end14.i.i.i4732 call void @llvm.amdgcn.end.cf.i64(i64 %6086) call void @llvm.amdgcn.wave.barrier() br label %Flow7648, !amdgpu.uniform !42 Flow7649: ; preds = %cleanup26.i.i.i4673, %6064 %6091 = phi i32 [ %6090, %cleanup26.i.i.i4673 ], [ %6054, %6064 ] %6092 = phi i64 [ %6089, %cleanup26.i.i.i4673 ], [ %6055, %6064 ] %6093 = phi i32 [ %6088, %cleanup26.i.i.i4673 ], [ %6056, %6064 ] %6094 = phi i32 [ %6088, %cleanup26.i.i.i4673 ], [ %retval.sroa.8.0.i.i.i4647, %6064 ] %6095 = phi i64 [ %6089, %cleanup26.i.i.i4673 ], [ %retval.sroa.2.0.i.i.i4646, %6064 ] %6096 = phi i32 [ %6090, %cleanup26.i.i.i4673 ], [ %retval.sroa.6.0.i.i.i4644, %6064 ] %6097 = phi i1 [ %cmp.i46.not.i.i.i4665, %cleanup26.i.i.i4673 ], [ true, %6064 ] br i1 %6097, label %for.inc.i.i.i4678, label %Flow7650, !amdgpu.uniform !42 cleanup26.i.i.i4673: ; preds = %Flow7648 br label %Flow7649, !amdgpu.uniform !42 for.inc.i.i.i4678: ; preds = %Flow7649 %inc.i.i.i4683 = add i32 %spec.store.select.i.i.i4650, 1 br label %Flow7650, !amdgpu.uniform !42 Flow7650: ; preds = %for.inc.i.i.i4678, %Flow7649 %6098 = phi i32 [ %inc.i.i.i4683, %for.inc.i.i.i4678 ], [ poison, %Flow7649 ] %6099 = phi i1 [ false, %for.inc.i.i.i4678 ], [ true, %Flow7649 ] br i1 %6099, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i4684, label %for.cond.i.i1.i4643, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i4684: ; preds = %Flow7650 %.lcssa8946 = phi i32 [ %6091, %Flow7650 ] %.lcssa8945 = phi i64 [ %6092, %Flow7650 ] %.lcssa8944 = phi i32 [ %6093, %Flow7650 ] %scevgep6527 = getelementptr i8, ptr %6050, i64 %lsr.iv.next6517.lcssa %sub.ptr.lhs.cast.i.i.i4639 = ptrtoint ptr %scevgep6527 to i64 %sub.ptr.rhs.cast.i.i.i4640 = ptrtoint ptr %6050 to i64 %sub.ptr.sub.i.i.i4641 = sub i64 %sub.ptr.lhs.cast.i.i.i4639, %sub.ptr.rhs.cast.i.i.i4640 fence acquire %6100 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i.i4685 = shl i32 %.lcssa8946, 6 %idxprom.i19.i.i.i.i.i4686 = zext i32 %mul.i.i.i.i.i.i4685 to i64 %arrayidx.i20.i.i.i.i.i4687 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %6100, i64 %idxprom.i19.i.i.i.i.i4686 %arrayidx.i22.i.i.i.i.i4688 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i.i4687, i64 %sh_prom.i.i.i.i3270 store i64 %sub.ptr.sub.i.i.i4641, ptr %arrayidx.i22.i.i.i.i.i4688, align 8, !tbaa !82 %spec.select.i.i.i.i.i.i.i4689 = call i64 @llvm.umin.i64(i64 %sub.ptr.sub.i.i.i4641, i64 56) %6101 = and i64 %spec.select.i.i.i.i.i.i.i4689, 15 %6102 = sub i64 %spec.select.i.i.i.i.i.i.i4689, %6101 %6103 = icmp ne i64 %6102, 0 %6104 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6103) %6105 = extractvalue { i1, i64 } %6104, 0 %6106 = extractvalue { i1, i64 } %6104, 1 br i1 %6105, label %loop-memcpy-expansion4965.preheader, label %Flow7646 loop-memcpy-expansion4965.preheader: ; preds = %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i4684 %6107 = add nuw nsw i64 %5881, 8 %scevgep6524 = getelementptr i8, ptr %6100, i64 %6107 %6108 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i4686, 6 %scevgep6525 = getelementptr i8, ptr %scevgep6524, i64 %6108 br label %loop-memcpy-expansion4965, !amdgpu.uniform !42 Flow7646: ; preds = %Flow7645, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i.i4684 call void @llvm.amdgcn.end.cf.i64(i64 %6106) br label %loop-memcpy-residual-header4968, !amdgpu.uniform !42 loop-memcpy-expansion4965: ; preds = %loop-memcpy-expansion4965.preheader, %loop-memcpy-expansion4965 %phi.broken8772 = phi i64 [ 0, %loop-memcpy-expansion4965.preheader ], [ %6113, %loop-memcpy-expansion4965 ] %loop-index4966 = phi i64 [ %6111, %loop-memcpy-expansion4965 ], [ 0, %loop-memcpy-expansion4965.preheader ] %6109 = getelementptr i8, ptr %6050, i64 %loop-index4966 %6110 = load <4 x i32>, ptr %6109, align 1 %scevgep6526 = getelementptr i8, ptr %scevgep6525, i64 %loop-index4966 store <4 x i32> %6110, ptr %scevgep6526, align 1 %6111 = add i64 %loop-index4966, 16 %6112 = icmp uge i64 %6111, %6102 %6113 = call i64 @llvm.amdgcn.if.break.i64(i1 %6112, i64 %phi.broken8772) %6114 = call i1 @llvm.amdgcn.loop.i64(i64 %6113) br i1 %6114, label %Flow7645, label %loop-memcpy-expansion4965 Flow7644: ; preds = %Flow7642, %Flow7643 %6115 = phi i64 [ %6200, %Flow7642 ], [ %6193, %Flow7643 ] call void @llvm.amdgcn.end.cf.i64(i64 %6196) br label %post-loop-memcpy-expansion4964, !amdgpu.uniform !42 loop-memcpy-residual4967: ; preds = %loop-memcpy-residual4967.preheader, %loop-memcpy-residual4967 %phi.broken8773 = phi i64 [ 0, %loop-memcpy-residual4967.preheader ], [ %6119, %loop-memcpy-residual4967 ] %residual-loop-index4969 = phi i64 [ %6117, %loop-memcpy-residual4967 ], [ 0, %loop-memcpy-residual4967.preheader ] %scevgep6523 = getelementptr i8, ptr %scevgep6522, i64 %residual-loop-index4969 %6116 = load i8, ptr %scevgep6523, align 1 %scevgep6521 = getelementptr i8, ptr %scevgep6520, i64 %residual-loop-index4969 store i8 %6116, ptr %scevgep6521, align 1 %6117 = add i64 %residual-loop-index4969, 1 %6118 = icmp uge i64 %6117, %6101 %6119 = call i64 @llvm.amdgcn.if.break.i64(i1 %6118, i64 %phi.broken8773) %6120 = call i1 @llvm.amdgcn.loop.i64(i64 %6119) br i1 %6120, label %Flow7642, label %loop-memcpy-residual4967 Flow7642: ; preds = %loop-memcpy-residual4967 %.lcssa8939 = phi i64 [ %6119, %loop-memcpy-residual4967 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8939) br label %Flow7644, !amdgpu.uniform !42 post-loop-memcpy-expansion4964: ; preds = %Flow7644 %6121 = add i64 %lsr.iv.next6517.lcssa, -56 %tobool.not.i.i.i.i.i.i4691 = icmp eq i32 %.lcssa8944, 0 %conv.i.i.i.i.i.i4692 = zext i1 %tobool.not.i.i.i.i.i.i4691 to i32 fence release %6122 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i.i4693 = zext i32 %.lcssa8946 to i64 %arrayidx.i24.i.i.i.i.i4694 = getelementptr inbounds nuw i32, ptr %6122, i64 %idxprom.i23.i.i.i.i.i4693 store atomic i32 %conv.i.i.i.i.i.i4692, ptr %arrayidx.i24.i.i.i.i.i4694 monotonic, align 4 %6123 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i.i4695 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %6123, i64 %idxprom.i23.i.i.i.i.i4693, !amdgpu.uniform !42 %6124 = load i64, ptr %arrayidx.i.i5.i.i4695, align 8, !tbaa !80 %scevgep6499 = getelementptr i8, ptr %6050, i64 56 br label %while.cond.i.i.i.i4696, !amdgpu.uniform !42 while.cond.i.i.i.i4696: ; preds = %post-loop-memcpy-expansion4964, %Flow7641 %phi.broken8776 = phi i64 [ 0, %post-loop-memcpy-expansion4964 ], [ %6141, %Flow7641 ] %lsr.iv6507 = phi i64 [ %6139, %Flow7641 ], [ %6121, %post-loop-memcpy-expansion4964 ] %lsr.iv6500 = phi ptr [ %6138, %Flow7641 ], [ %scevgep6499, %post-loop-memcpy-expansion4964 ] %port.sroa.37.0.i.i4697 = phi i32 [ %6137, %Flow7641 ], [ %conv.i.i.i.i.i.i4692, %post-loop-memcpy-expansion4964 ] %idx.0.i.i.i.i4698 = phi i64 [ %6136, %Flow7641 ], [ 56, %post-loop-memcpy-expansion4964 ] %cmp.i.i.i.i4699 = icmp ugt i64 %sub.ptr.sub.i.i.i4641, %idx.0.i.i.i.i4698 %6125 = call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i.i4699) %and.i.i.i.i6.i.i4700 = and i64 %6125, %6124 %tobool.not.i.i.i.i4701 = icmp ne i64 %and.i.i.i.i6.i.i4700, 0 %6126 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i.i4702 = getelementptr inbounds nuw i32, ptr %6126, i64 %idxprom.i23.i.i.i.i.i4693, !amdgpu.uniform !42 %6127 = load atomic i32, ptr %arrayidx.i22.i.i.i4702 monotonic, align 4 %6128 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i.i4701) %6129 = extractvalue { i1, i64 } %6128, 0 %6130 = extractvalue { i1, i64 } %6128, 1 br i1 %6129, label %cond.false.i8.i.i.i.i4703, label %Flow7641 cond.false.i8.i.i.i.i4703: ; preds = %while.cond.i.i.i.i4696 %6131 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %6127) %6132 = icmp ne i32 %6131, %port.sroa.37.0.i.i4697 br i1 %6132, label %while.body.i.i21.i.i.i.i4704.preheader, label %Flow7640, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i4704.preheader: ; preds = %cond.false.i8.i.i.i.i4703 br label %while.body.i.i21.i.i.i.i4704, !amdgpu.uniform !42 Flow7640: ; preds = %Flow7639, %cond.false.i8.i.i.i.i4703 br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i4707, !amdgpu.uniform !42 while.body.i.i21.i.i.i.i4704: ; preds = %while.body.i.i21.i.i.i.i4704.preheader, %while.body.i.i21.i.i.i.i4704 call void @llvm.amdgcn.s.sleep(i32 2) %6133 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i.i4705 = getelementptr inbounds nuw i32, ptr %6133, i64 %idxprom.i23.i.i.i.i.i4693, !amdgpu.uniform !42 %6134 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i.i4705 monotonic, align 4 %6135 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %6134) %cmp.i.not.i.i23.i.i.i.i4706 = icmp eq i32 %6135, %port.sroa.37.0.i.i4697 br i1 %cmp.i.not.i.i23.i.i.i.i4706, label %Flow7639, label %while.body.i.i21.i.i.i.i4704, !amdgpu.uniform !42 Flow7639: ; preds = %while.body.i.i21.i.i.i.i4704 br label %Flow7640, !amdgpu.uniform !42 Flow7641: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4708, %while.cond.i.i.i.i4696 %6136 = phi i64 [ %add.i.i.i.i4711, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4708 ], [ poison, %while.cond.i.i.i.i4696 ] %6137 = phi i32 [ %conv.i.i26.i.i.i.i4709, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4708 ], [ poison, %while.cond.i.i.i.i4696 ] %6138 = phi ptr [ %scevgep6501, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4708 ], [ poison, %while.cond.i.i.i.i4696 ] %6139 = phi i64 [ %lsr.iv.next6508, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4708 ], [ poison, %while.cond.i.i.i.i4696 ] %6140 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4708 ], [ true, %while.cond.i.i.i.i4696 ] call void @llvm.amdgcn.end.cf.i64(i64 %6130) %6141 = call i64 @llvm.amdgcn.if.break.i64(i1 %6140, i64 %phi.broken8776) %6142 = call i1 @llvm.amdgcn.loop.i64(i64 %6141) br i1 %6142, label %cond.false.i.i.i4718, label %while.cond.i.i.i.i4696 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i4707: ; preds = %Flow7640 fence acquire %6143 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i4699) %6144 = extractvalue { i1, i64 } %6143, 0 %6145 = extractvalue { i1, i64 } %6143, 1 br i1 %6144, label %if.then.i.i.i.i.i.i.i4712, label %Flow7638 if.then.i.i.i.i.i.i.i4712: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i4707 %sub.i.i.i.i.i.i.i4714 = sub nuw i64 %sub.ptr.sub.i.i.i4641, %idx.0.i.i.i.i4698 %spec.select.i.i.i36.i.i.i.i4715 = call i64 @llvm.umin.i64(i64 %sub.i.i.i.i.i.i.i4714, i64 64) %6146 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %6147 = and i64 %spec.select.i.i.i36.i.i.i.i4715, 15 %6148 = sub i64 %spec.select.i.i.i36.i.i.i.i4715, %6147 %6149 = icmp ne i64 %6148, 0 %6150 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6149) %6151 = extractvalue { i1, i64 } %6150, 0 %6152 = extractvalue { i1, i64 } %6150, 1 br i1 %6151, label %loop-memcpy-expansion.preheader, label %Flow7637 loop-memcpy-expansion.preheader: ; preds = %if.then.i.i.i.i.i.i.i4712 %arrayidx.i20.i35.i.i.i.i4716 = getelementptr %"struct.rpc::Buffer", ptr %6146, i64 %idxprom.i19.i.i.i.i.i4686 %arrayidx.i22.i38.i.i.i.i4717 = getelementptr %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i.i4716, i64 %sh_prom.i.i.i.i3270 br label %loop-memcpy-expansion, !amdgpu.uniform !42 Flow7637: ; preds = %Flow7636, %if.then.i.i.i.i.i.i.i4712 call void @llvm.amdgcn.end.cf.i64(i64 %6152) br label %loop-memcpy-residual-header, !amdgpu.uniform !42 loop-memcpy-expansion: ; preds = %loop-memcpy-expansion.preheader, %loop-memcpy-expansion %phi.broken8774 = phi i64 [ 0, %loop-memcpy-expansion.preheader ], [ %6157, %loop-memcpy-expansion ] %loop-index = phi i64 [ %6155, %loop-memcpy-expansion ], [ 0, %loop-memcpy-expansion.preheader ] %scevgep6502 = getelementptr i8, ptr %lsr.iv6500, i64 %loop-index %6153 = load <4 x i32>, ptr %scevgep6502, align 1 %6154 = getelementptr i8, ptr %arrayidx.i22.i38.i.i.i.i4717, i64 %loop-index store <4 x i32> %6153, ptr %6154, align 1 %6155 = add i64 %loop-index, 16 %6156 = icmp uge i64 %6155, %6148 %6157 = call i64 @llvm.amdgcn.if.break.i64(i1 %6156, i64 %phi.broken8774) %6158 = call i1 @llvm.amdgcn.loop.i64(i64 %6157) br i1 %6158, label %Flow7636, label %loop-memcpy-expansion Flow7635: ; preds = %Flow7634, %loop-memcpy-residual-header call void @llvm.amdgcn.end.cf.i64(i64 %6186) br label %Flow7638, !amdgpu.uniform !42 loop-memcpy-residual: ; preds = %loop-memcpy-residual.preheader, %loop-memcpy-residual %phi.broken8775 = phi i64 [ 0, %loop-memcpy-residual.preheader ], [ %6162, %loop-memcpy-residual ] %residual-loop-index = phi i64 [ %6160, %loop-memcpy-residual ], [ 0, %loop-memcpy-residual.preheader ] %scevgep6514 = getelementptr i8, ptr %scevgep6513, i64 %residual-loop-index %6159 = load i8, ptr %scevgep6514, align 1 %scevgep6511 = getelementptr i8, ptr %scevgep6510, i64 %residual-loop-index store i8 %6159, ptr %scevgep6511, align 1 %6160 = add i64 %residual-loop-index, 1 %6161 = icmp uge i64 %6160, %6147 %6162 = call i64 @llvm.amdgcn.if.break.i64(i1 %6161, i64 %phi.broken8775) %6163 = call i1 @llvm.amdgcn.loop.i64(i64 %6162) br i1 %6163, label %Flow7634, label %loop-memcpy-residual Flow7634: ; preds = %loop-memcpy-residual %.lcssa8936 = phi i64 [ %6162, %loop-memcpy-residual ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8936) br label %Flow7635, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4708: ; preds = %Flow7638 %conv.i.i26.i.i.i.i4709 = xor i32 %port.sroa.37.0.i.i4697, 1 fence release %6164 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i.i4710 = getelementptr inbounds nuw i32, ptr %6164, i64 %idxprom.i23.i.i.i.i.i4693 store atomic i32 %conv.i.i26.i.i.i.i4709, ptr %arrayidx.i24.i29.i.i.i.i4710 monotonic, align 4 %add.i.i.i.i4711 = add i64 %idx.0.i.i.i.i4698, 64 %scevgep6501 = getelementptr i8, ptr %lsr.iv6500, i64 64 %lsr.iv.next6508 = add i64 %lsr.iv6507, -64 br label %Flow7641, !amdgpu.uniform !42 cond.false.i.i.i4718: ; preds = %Flow7641 %.lcssa8938 = phi i64 [ %6141, %Flow7641 ] %port.sroa.37.0.i.i4697.lcssa = phi i32 [ %port.sroa.37.0.i.i4697, %Flow7641 ] %.lcssa8937 = phi i32 [ %6127, %Flow7641 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8938) %6165 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa8937) %6166 = icmp ne i32 %6165, %port.sroa.37.0.i.i4697.lcssa %6167 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6166) %6168 = extractvalue { i1, i64 } %6167, 0 %6169 = extractvalue { i1, i64 } %6167, 1 br i1 %6168, label %while.body.i.i.i.i4719.preheader, label %Flow7633 while.body.i.i.i.i4719.preheader: ; preds = %cond.false.i.i.i4718 br label %while.body.i.i.i.i4719, !amdgpu.uniform !42 Flow7633: ; preds = %Flow, %cond.false.i.i.i4718 call void @llvm.amdgcn.end.cf.i64(i64 %6169) br label %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit4740, !amdgpu.uniform !42 while.body.i.i.i.i4719: ; preds = %while.body.i.i.i.i4719.preheader, %while.body.i.i.i.i4719 %phi.broken8777 = phi i64 [ 0, %while.body.i.i.i.i4719.preheader ], [ %6173, %while.body.i.i.i.i4719 ] call void @llvm.amdgcn.s.sleep(i32 2) %6170 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i.i4720 = getelementptr inbounds nuw i32, ptr %6170, i64 %idxprom.i23.i.i.i.i.i4693, !amdgpu.uniform !42 %6171 = load atomic i32, ptr %arrayidx.i.i.i8.i.i4720 monotonic, align 4 %6172 = call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %6171) %cmp.i.not.i.i.i.i4721 = icmp eq i32 %6172, %port.sroa.37.0.i.i4697.lcssa %6173 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i.i4721, i64 %phi.broken8777) %6174 = call i1 @llvm.amdgcn.loop.i64(i64 %6173) br i1 %6174, label %Flow, label %while.body.i.i.i.i4719 Flow: ; preds = %while.body.i.i.i.i4719 %.lcssa8934 = phi i64 [ %6173, %while.body.i.i.i.i4719 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8934) br label %Flow7633, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit4740: ; preds = %Flow7633 fence acquire call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %6175 = call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa8945, i1 true) %iszero.i.i.i.i.i13.i.i4723 = icmp ne i64 %.lcssa8945, 0 %cmp2.i.i.i.i14.i.i4724 = icmp eq i64 %6175, %sh_prom.i.i.i.i3270 %cmp.i.i.i.i15.i.i4725 = select i1 %iszero.i.i.i.i.i13.i.i4723, i1 %cmp2.i.i.i.i14.i.i4724, i1 false %6176 = and i32 %.lcssa8946, 31 %conv4.i.i.i19.i.i4729 = zext i1 %cmp.i.i.i.i15.i.i4725 to i32 %shl.i.i.i20.i.i4730 = shl nuw i32 %conv4.i.i.i19.i.i4729, %6176 %xor.i.i.i21.i.i4731 = xor i32 %shl.i.i.i20.i.i4730, -1 %6177 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop6005, !amdgpu.uniform !42 6178: ; preds = %ComputeEnd6006 %div8.i.i.i16.i.i4726 = lshr i32 %.lcssa8946, 5 %idxprom.i.i.i17.i.i4727 = zext nneg i32 %div8.i.i.i16.i.i4726 to i64 %6179 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i.i4727 %sunkaddr7510 = getelementptr inbounds i8, ptr addrspace(1) %6179, i64 40 %6180 = atomicrmw and ptr addrspace(1) %sunkaddr7510, i32 %.lcssa8933 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %6181, !amdgpu.uniform !42 6181: ; preds = %6178, %ComputeEnd6006 call void @llvm.amdgcn.end.cf.i64(i64 %8956) call void @llvm.amdgcn.wave.barrier() call fastcc void @_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_(i8 noundef signext 10) #33 br label %Flow7670, !amdgpu.uniform !42 if.end111: ; preds = %Flow7917 %cmp112 = icmp sgt i32 %1149, 0 %cmp113 = icmp eq i32 %1148, 0 %6182 = or i1 %cmp112, %cmp113 %cond114 = zext i1 %6182 to i32 ret i32 %cond114 Flow7636: ; preds = %loop-memcpy-expansion %.lcssa8935 = phi i64 [ %6157, %loop-memcpy-expansion ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8935) br label %Flow7637, !amdgpu.uniform !42 Flow7638: ; preds = %Flow7635, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i4707 call void @llvm.amdgcn.end.cf.i64(i64 %6145) br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4708, !amdgpu.uniform !42 loop-memcpy-residual-header: ; preds = %Flow7637 %6183 = icmp ne i64 %6147, 0 %6184 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6183) %6185 = extractvalue { i1, i64 } %6184, 0 %6186 = extractvalue { i1, i64 } %6184, 1 br i1 %6185, label %loop-memcpy-residual.preheader, label %Flow7635 loop-memcpy-residual.preheader: ; preds = %loop-memcpy-residual-header %umin6512 = call i64 @llvm.umin.i64(i64 %lsr.iv6507, i64 64) %6187 = lshr i64 %umin6512, 4 %6188 = shl nuw nsw i64 %6187, 4 %scevgep6513 = getelementptr i8, ptr %lsr.iv6500, i64 %6188 %scevgep6503 = getelementptr i8, ptr %6146, i64 %5881 %scevgep6504 = getelementptr i8, ptr %scevgep6503, i64 %6115 %scevgep6510 = getelementptr i8, ptr %scevgep6504, i64 %6188 br label %loop-memcpy-residual, !amdgpu.uniform !42 Flow7645: ; preds = %loop-memcpy-expansion4965 %.lcssa8940 = phi i64 [ %6113, %loop-memcpy-expansion4965 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8940) br label %Flow7646, !amdgpu.uniform !42 loop-memcpy-residual-header4968: ; preds = %Flow7646 %6189 = icmp eq i64 %6101, 0 %6190 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6189) %6191 = extractvalue { i1, i64 } %6190, 0 %6192 = extractvalue { i1, i64 } %6190, 1 br i1 %6191, label %loop-memcpy-residual-header4968.post-loop-memcpy-expansion4964_crit_edge, label %Flow7643 loop-memcpy-residual-header4968.post-loop-memcpy-expansion4964_crit_edge: ; preds = %loop-memcpy-residual-header4968 %.pre7301 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i4686, 6 br label %Flow7643, !amdgpu.uniform !42 Flow7643: ; preds = %loop-memcpy-residual-header4968.post-loop-memcpy-expansion4964_crit_edge, %loop-memcpy-residual-header4968 %6193 = phi i64 [ %.pre7301, %loop-memcpy-residual-header4968.post-loop-memcpy-expansion4964_crit_edge ], [ poison, %loop-memcpy-residual-header4968 ] %6194 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %6192) %6195 = extractvalue { i1, i64 } %6194, 0 %6196 = extractvalue { i1, i64 } %6194, 1 br i1 %6195, label %loop-memcpy-residual4967.preheader, label %Flow7644 loop-memcpy-residual4967.preheader: ; preds = %Flow7643 %6197 = add nuw nsw i64 %5881, 8 %scevgep6515 = getelementptr i8, ptr %6100, i64 %6197 %umin6518 = call i64 @llvm.umin.i64(i64 %lsr.iv.next6517.lcssa, i64 56) %6198 = lshr i64 %umin6518, 4 %6199 = shl nuw nsw i64 %6198, 4 %scevgep6519 = getelementptr i8, ptr %scevgep6515, i64 %6199 %6200 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i4686, 6 %scevgep6520 = getelementptr i8, ptr %scevgep6519, i64 %6200 %scevgep6522 = getelementptr i8, ptr %6050, i64 %6199 br label %loop-memcpy-residual4967, !amdgpu.uniform !42 Flow7703: ; preds = %loop-memcpy-expansion4971 %.lcssa8831 = phi i64 [ %5711, %loop-memcpy-expansion4971 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8831) br label %Flow7704, !amdgpu.uniform !42 Flow7705: ; preds = %Flow7702, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i4276 call void @llvm.amdgcn.end.cf.i64(i64 %5699) br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4277, !amdgpu.uniform !42 loop-memcpy-residual-header4974: ; preds = %Flow7704 %6201 = icmp ne i64 %5701, 0 %6202 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6201) %6203 = extractvalue { i1, i64 } %6202, 0 %6204 = extractvalue { i1, i64 } %6202, 1 br i1 %6203, label %loop-memcpy-residual4973.preheader, label %Flow7702 loop-memcpy-residual4973.preheader: ; preds = %loop-memcpy-residual-header4974 %umin = call i64 @llvm.umin.i64(i64 %lsr.iv6344, i64 64) %6205 = lshr i64 %umin, 4 %6206 = shl nuw nsw i64 %6205, 4 %scevgep6347 = getelementptr i8, ptr %lsr.iv, i64 %6206 %scevgep6342 = getelementptr i8, ptr %5700, i64 %4513 %scevgep6343 = getelementptr i8, ptr %scevgep6342, i64 %5669 %scevgep6345 = getelementptr i8, ptr %scevgep6343, i64 %6206 br label %loop-memcpy-residual4973, !amdgpu.uniform !42 Flow7712: ; preds = %loop-memcpy-expansion4977 %.lcssa8836 = phi i64 [ %5667, %loop-memcpy-expansion4977 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8836) br label %Flow7713, !amdgpu.uniform !42 loop-memcpy-residual-header4980: ; preds = %Flow7713 %6207 = icmp eq i64 %5655, 0 %6208 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6207) %6209 = extractvalue { i1, i64 } %6208, 0 %6210 = extractvalue { i1, i64 } %6208, 1 br i1 %6209, label %loop-memcpy-residual-header4980.post-loop-memcpy-expansion4976_crit_edge, label %Flow7710 loop-memcpy-residual-header4980.post-loop-memcpy-expansion4976_crit_edge: ; preds = %loop-memcpy-residual-header4980 %.pre7293 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i4255, 6 br label %Flow7710, !amdgpu.uniform !42 Flow7710: ; preds = %loop-memcpy-residual-header4980.post-loop-memcpy-expansion4976_crit_edge, %loop-memcpy-residual-header4980 %6211 = phi i64 [ %.pre7293, %loop-memcpy-residual-header4980.post-loop-memcpy-expansion4976_crit_edge ], [ poison, %loop-memcpy-residual-header4980 ] %6212 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %6210) %6213 = extractvalue { i1, i64 } %6212, 0 %6214 = extractvalue { i1, i64 } %6212, 1 br i1 %6213, label %loop-memcpy-residual4979.preheader, label %Flow7711 loop-memcpy-residual4979.preheader: ; preds = %Flow7710 %6215 = lshr i64 %spec.select.i.i.i.i.i.i.i4258, 4 %6216 = shl nuw nsw i64 %6215, 4 %6217 = add i64 %4513, %6216 %6218 = add i64 %6217, 8 %scevgep6349 = getelementptr i8, ptr %5654, i64 %6218 %6219 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i4255, 6 %scevgep6350 = getelementptr i8, ptr %scevgep6349, i64 %6219 %scevgep6352 = getelementptr i8, ptr %5579, i64 %6216 br label %loop-memcpy-residual4979, !amdgpu.uniform !42 Flow7776: ; preds = %loop-memcpy-expansion4983 %.lcssa8869 = phi i64 [ %5260, %loop-memcpy-expansion4983 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8869) br label %Flow7777, !amdgpu.uniform !42 Flow7778: ; preds = %Flow7775, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i3892 call void @llvm.amdgcn.end.cf.i64(i64 %5248) br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3893, !amdgpu.uniform !42 loop-memcpy-residual-header4986: ; preds = %Flow7777 %6220 = icmp ne i64 %5250, 0 %6221 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6220) %6222 = extractvalue { i1, i64 } %6221, 0 %6223 = extractvalue { i1, i64 } %6221, 1 br i1 %6222, label %loop-memcpy-residual4985.preheader, label %Flow7775 loop-memcpy-residual4985.preheader: ; preds = %loop-memcpy-residual-header4986 %umin6392 = call i64 @llvm.umin.i64(i64 %lsr.iv6390, i64 64) %6224 = lshr i64 %umin6392, 4 %6225 = shl nuw nsw i64 %6224, 4 %scevgep6395 = getelementptr i8, ptr %lsr.iv6385, i64 %6225 %scevgep6388 = getelementptr i8, ptr %5249, i64 %4513 %scevgep6389 = getelementptr i8, ptr %scevgep6388, i64 %5218 %scevgep6393 = getelementptr i8, ptr %scevgep6389, i64 %6225 br label %loop-memcpy-residual4985, !amdgpu.uniform !42 Flow7785: ; preds = %loop-memcpy-expansion4989 %.lcssa8874 = phi i64 [ %5216, %loop-memcpy-expansion4989 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8874) br label %Flow7786, !amdgpu.uniform !42 loop-memcpy-residual-header4992: ; preds = %Flow7786 %6226 = icmp eq i64 %5204, 0 %6227 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6226) %6228 = extractvalue { i1, i64 } %6227, 0 %6229 = extractvalue { i1, i64 } %6227, 1 br i1 %6228, label %loop-memcpy-residual-header4992.post-loop-memcpy-expansion4988_crit_edge, label %Flow7783 loop-memcpy-residual-header4992.post-loop-memcpy-expansion4988_crit_edge: ; preds = %loop-memcpy-residual-header4992 %.pre7289 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i3871, 6 br label %Flow7783, !amdgpu.uniform !42 Flow7783: ; preds = %loop-memcpy-residual-header4992.post-loop-memcpy-expansion4988_crit_edge, %loop-memcpy-residual-header4992 %6230 = phi i64 [ %.pre7289, %loop-memcpy-residual-header4992.post-loop-memcpy-expansion4988_crit_edge ], [ poison, %loop-memcpy-residual-header4992 ] %6231 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %6229) %6232 = extractvalue { i1, i64 } %6231, 0 %6233 = extractvalue { i1, i64 } %6231, 1 br i1 %6232, label %loop-memcpy-residual4991.preheader, label %Flow7784 loop-memcpy-residual4991.preheader: ; preds = %Flow7783 %6234 = lshr i64 %spec.select.i.i.i.i.i.i.i3874, 4 %6235 = shl nuw nsw i64 %6234, 4 %6236 = add i64 %4513, %6235 %6237 = add i64 %6236, 8 %scevgep6397 = getelementptr i8, ptr %5203, i64 %6237 %6238 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i3871, 6 %scevgep6398 = getelementptr i8, ptr %scevgep6397, i64 %6238 %scevgep6400 = getelementptr i8, ptr %5128, i64 %6235 br label %loop-memcpy-residual4991, !amdgpu.uniform !42 Flow7859: ; preds = %loop-memcpy-expansion4995 %.lcssa8907 = phi i64 [ %4784, %loop-memcpy-expansion4995 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8907) br label %Flow7860, !amdgpu.uniform !42 Flow7861: ; preds = %Flow7858, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i3501 call void @llvm.amdgcn.end.cf.i64(i64 %4772) br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3502, !amdgpu.uniform !42 loop-memcpy-residual-header4998: ; preds = %Flow7860 %6239 = icmp ne i64 %4774, 0 %6240 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6239) %6241 = extractvalue { i1, i64 } %6240, 0 %6242 = extractvalue { i1, i64 } %6240, 1 br i1 %6241, label %loop-memcpy-residual4997.preheader, label %Flow7858 loop-memcpy-residual4997.preheader: ; preds = %loop-memcpy-residual-header4998 %umin6459 = call i64 @llvm.umin.i64(i64 %lsr.iv6457, i64 64) %6243 = lshr i64 %umin6459, 4 %6244 = shl nuw nsw i64 %6243, 4 %scevgep6462 = getelementptr i8, ptr %lsr.iv6452, i64 %6244 %scevgep6455 = getelementptr i8, ptr %4773, i64 %4513 %scevgep6456 = getelementptr i8, ptr %scevgep6455, i64 %4742 %scevgep6460 = getelementptr i8, ptr %scevgep6456, i64 %6244 br label %loop-memcpy-residual4997, !amdgpu.uniform !42 Flow7868: ; preds = %loop-memcpy-expansion5001 %.lcssa8912 = phi i64 [ %4740, %loop-memcpy-expansion5001 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8912) br label %Flow7869, !amdgpu.uniform !42 loop-memcpy-residual-header5004: ; preds = %Flow7869 %6245 = icmp eq i64 %4728, 0 %6246 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6245) %6247 = extractvalue { i1, i64 } %6246, 0 %6248 = extractvalue { i1, i64 } %6246, 1 br i1 %6247, label %loop-memcpy-residual-header5004.post-loop-memcpy-expansion5000_crit_edge, label %Flow7866 loop-memcpy-residual-header5004.post-loop-memcpy-expansion5000_crit_edge: ; preds = %loop-memcpy-residual-header5004 %.pre7283 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i3480, 6 br label %Flow7866, !amdgpu.uniform !42 Flow7866: ; preds = %loop-memcpy-residual-header5004.post-loop-memcpy-expansion5000_crit_edge, %loop-memcpy-residual-header5004 %6249 = phi i64 [ %.pre7283, %loop-memcpy-residual-header5004.post-loop-memcpy-expansion5000_crit_edge ], [ poison, %loop-memcpy-residual-header5004 ] %6250 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %6248) %6251 = extractvalue { i1, i64 } %6250, 0 %6252 = extractvalue { i1, i64 } %6250, 1 br i1 %6251, label %loop-memcpy-residual5003.preheader, label %Flow7867 loop-memcpy-residual5003.preheader: ; preds = %Flow7866 %6253 = lshr i64 %spec.select.i.i.i.i.i.i.i3483, 4 %6254 = shl nuw nsw i64 %6253, 4 %6255 = add i64 %4513, %6254 %6256 = add i64 %6255, 8 %scevgep6464 = getelementptr i8, ptr %4727, i64 %6256 %6257 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i3480, 6 %scevgep6465 = getelementptr i8, ptr %scevgep6464, i64 %6257 %scevgep6467 = getelementptr i8, ptr %4652, i64 %6254 br label %loop-memcpy-residual5003, !amdgpu.uniform !42 Flow8022: ; preds = %loop-memcpy-expansion5007 br label %Flow8023, !amdgpu.uniform !42 Flow8024: ; preds = %Flow8021, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i3110 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3111, !amdgpu.uniform !42 loop-memcpy-residual-header5010: ; preds = %Flow8023 %6258 = icmp ne i64 %4315, 0 br i1 %6258, label %loop-memcpy-residual5009.preheader, label %Flow8021, !amdgpu.uniform !42 loop-memcpy-residual5009.preheader: ; preds = %loop-memcpy-residual-header5010 %umin6901 = call i64 @llvm.umin.i64(i64 %lsr.iv6899, i64 64) %6259 = lshr i64 %umin6901, 4 %6260 = shl nuw nsw i64 %6259, 4 %scevgep6904 = getelementptr i8, ptr %lsr.iv6894, i64 %6260 %scevgep6897 = getelementptr i8, ptr %4314, i64 %1474 %scevgep6898 = getelementptr i8, ptr %scevgep6897, i64 %4283 %scevgep6902 = getelementptr i8, ptr %scevgep6898, i64 %6260 br label %loop-memcpy-residual5009, !amdgpu.uniform !42 Flow8031: ; preds = %loop-memcpy-expansion5013 br label %Flow8032, !amdgpu.uniform !42 loop-memcpy-residual-header5016: ; preds = %Flow8032 %6261 = icmp eq i64 %4275, 0 br i1 %6261, label %loop-memcpy-residual-header5016.post-loop-memcpy-expansion5012_crit_edge, label %Flow8029, !amdgpu.uniform !42 loop-memcpy-residual-header5016.post-loop-memcpy-expansion5012_crit_edge: ; preds = %loop-memcpy-residual-header5016 %.pre7337 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i3089, 6 br label %Flow8029, !amdgpu.uniform !42 Flow8029: ; preds = %loop-memcpy-residual-header5016.post-loop-memcpy-expansion5012_crit_edge, %loop-memcpy-residual-header5016 %6262 = phi i64 [ %.pre7337, %loop-memcpy-residual-header5016.post-loop-memcpy-expansion5012_crit_edge ], [ poison, %loop-memcpy-residual-header5016 ] %6263 = phi i1 [ false, %loop-memcpy-residual-header5016.post-loop-memcpy-expansion5012_crit_edge ], [ true, %loop-memcpy-residual-header5016 ] br i1 %6263, label %loop-memcpy-residual5015.preheader, label %Flow8030, !amdgpu.uniform !42 loop-memcpy-residual5015.preheader: ; preds = %Flow8029 %scevgep6887 = getelementptr i8, ptr %4274, i64 8 %6264 = add i64 %1474, %4276 %scevgep6888 = getelementptr i8, ptr %scevgep6887, i64 %6264 %6265 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i3089, 6 %scevgep6889 = getelementptr i8, ptr %scevgep6888, i64 %6265 %scevgep6891 = getelementptr i8, ptr %4211, i64 %4276 br label %loop-memcpy-residual5015, !amdgpu.uniform !42 Flow7961: ; preds = %loop-memcpy-expansion5019 br label %Flow7962, !amdgpu.uniform !42 Flow7963: ; preds = %Flow7960, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i2835 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2836, !amdgpu.uniform !42 loop-memcpy-residual-header5022: ; preds = %Flow7962 %6266 = icmp ne i64 %4031, 0 br i1 %6266, label %loop-memcpy-residual5021.preheader, label %Flow7960, !amdgpu.uniform !42 loop-memcpy-residual5021.preheader: ; preds = %loop-memcpy-residual-header5022 %umin6847 = call i64 @llvm.umin.i64(i64 %lsr.iv6845, i64 64) %6267 = lshr i64 %umin6847, 4 %6268 = shl nuw nsw i64 %6267, 4 %scevgep6850 = getelementptr i8, ptr %lsr.iv6840, i64 %6268 %scevgep6843 = getelementptr i8, ptr %4030, i64 %1474 %scevgep6844 = getelementptr i8, ptr %scevgep6843, i64 %3999 %scevgep6848 = getelementptr i8, ptr %scevgep6844, i64 %6268 br label %loop-memcpy-residual5021, !amdgpu.uniform !42 Flow7970: ; preds = %loop-memcpy-expansion5025 br label %Flow7971, !amdgpu.uniform !42 loop-memcpy-residual-header5028: ; preds = %Flow7971 %6269 = icmp eq i64 %3991, 0 br i1 %6269, label %loop-memcpy-residual-header5028.post-loop-memcpy-expansion5024_crit_edge, label %Flow7968, !amdgpu.uniform !42 loop-memcpy-residual-header5028.post-loop-memcpy-expansion5024_crit_edge: ; preds = %loop-memcpy-residual-header5028 %.pre7341 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i2814, 6 br label %Flow7968, !amdgpu.uniform !42 Flow7968: ; preds = %loop-memcpy-residual-header5028.post-loop-memcpy-expansion5024_crit_edge, %loop-memcpy-residual-header5028 %6270 = phi i64 [ %.pre7341, %loop-memcpy-residual-header5028.post-loop-memcpy-expansion5024_crit_edge ], [ poison, %loop-memcpy-residual-header5028 ] %6271 = phi i1 [ false, %loop-memcpy-residual-header5028.post-loop-memcpy-expansion5024_crit_edge ], [ true, %loop-memcpy-residual-header5028 ] br i1 %6271, label %loop-memcpy-residual5027.preheader, label %Flow7969, !amdgpu.uniform !42 loop-memcpy-residual5027.preheader: ; preds = %Flow7968 %scevgep6833 = getelementptr i8, ptr %3990, i64 8 %6272 = add i64 %1474, %3992 %scevgep6834 = getelementptr i8, ptr %scevgep6833, i64 %6272 %6273 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i2814, 6 %scevgep6835 = getelementptr i8, ptr %scevgep6834, i64 %6273 %scevgep6837 = getelementptr i8, ptr %3927, i64 %3992 br label %loop-memcpy-residual5027, !amdgpu.uniform !42 Flow8087: ; preds = %loop-memcpy-expansion5031 br label %Flow8088, !amdgpu.uniform !42 Flow8089: ; preds = %Flow8086, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i2561 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2562, !amdgpu.uniform !42 loop-memcpy-residual-header5034: ; preds = %Flow8088 %6274 = icmp ne i64 %3754, 0 br i1 %6274, label %loop-memcpy-residual5033.preheader, label %Flow8086, !amdgpu.uniform !42 loop-memcpy-residual5033.preheader: ; preds = %loop-memcpy-residual-header5034 %umin6955 = call i64 @llvm.umin.i64(i64 %lsr.iv6953, i64 64) %6275 = lshr i64 %umin6955, 4 %6276 = shl nuw nsw i64 %6275, 4 %scevgep6958 = getelementptr i8, ptr %lsr.iv6948, i64 %6276 %scevgep6951 = getelementptr i8, ptr %3753, i64 %1474 %scevgep6952 = getelementptr i8, ptr %scevgep6951, i64 %3722 %scevgep6956 = getelementptr i8, ptr %scevgep6952, i64 %6276 br label %loop-memcpy-residual5033, !amdgpu.uniform !42 Flow8096: ; preds = %loop-memcpy-expansion5037 br label %Flow8097, !amdgpu.uniform !42 loop-memcpy-residual-header5040: ; preds = %Flow8097 %6277 = icmp eq i64 %3714, 0 br i1 %6277, label %loop-memcpy-residual-header5040.post-loop-memcpy-expansion5036_crit_edge, label %Flow8094, !amdgpu.uniform !42 loop-memcpy-residual-header5040.post-loop-memcpy-expansion5036_crit_edge: ; preds = %loop-memcpy-residual-header5040 %.pre7333 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i2540, 6 br label %Flow8094, !amdgpu.uniform !42 Flow8094: ; preds = %loop-memcpy-residual-header5040.post-loop-memcpy-expansion5036_crit_edge, %loop-memcpy-residual-header5040 %6278 = phi i64 [ %.pre7333, %loop-memcpy-residual-header5040.post-loop-memcpy-expansion5036_crit_edge ], [ poison, %loop-memcpy-residual-header5040 ] %6279 = phi i1 [ false, %loop-memcpy-residual-header5040.post-loop-memcpy-expansion5036_crit_edge ], [ true, %loop-memcpy-residual-header5040 ] br i1 %6279, label %loop-memcpy-residual5039.preheader, label %Flow8095, !amdgpu.uniform !42 loop-memcpy-residual5039.preheader: ; preds = %Flow8094 %scevgep6941 = getelementptr i8, ptr %3713, i64 8 %6280 = add i64 %1474, %3715 %scevgep6942 = getelementptr i8, ptr %scevgep6941, i64 %6280 %6281 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i2540, 6 %scevgep6943 = getelementptr i8, ptr %scevgep6942, i64 %6281 %scevgep6945 = getelementptr i8, ptr %3650, i64 %3715 br label %loop-memcpy-residual5039, !amdgpu.uniform !42 Flow8173: ; preds = %loop-memcpy-expansion5043 %.lcssa9100 = phi i64 [ %3297, %loop-memcpy-expansion5043 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9100) br label %Flow8174, !amdgpu.uniform !42 Flow8175: ; preds = %Flow8172, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i2202 call void @llvm.amdgcn.end.cf.i64(i64 %3285) br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2203, !amdgpu.uniform !42 loop-memcpy-residual-header5046: ; preds = %Flow8174 %6282 = icmp ne i64 %3287, 0 %6283 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6282) %6284 = extractvalue { i1, i64 } %6283, 0 %6285 = extractvalue { i1, i64 } %6283, 1 br i1 %6284, label %loop-memcpy-residual5045.preheader, label %Flow8172 loop-memcpy-residual5045.preheader: ; preds = %loop-memcpy-residual-header5046 %umin6795 = call i64 @llvm.umin.i64(i64 %lsr.iv6790, i64 64) %6286 = lshr i64 %umin6795, 4 %6287 = shl nuw nsw i64 %6286, 4 %scevgep6796 = getelementptr i8, ptr %lsr.iv6783, i64 %6287 %scevgep6786 = getelementptr i8, ptr %3286, i64 %1474 %scevgep6787 = getelementptr i8, ptr %scevgep6786, i64 %3251 %scevgep6793 = getelementptr i8, ptr %scevgep6787, i64 %6287 br label %loop-memcpy-residual5045, !amdgpu.uniform !42 Flow8182: ; preds = %loop-memcpy-expansion5049 %.lcssa9097 = phi i64 [ %3249, %loop-memcpy-expansion5049 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9097) br label %Flow8183, !amdgpu.uniform !42 loop-memcpy-residual-header5052: ; preds = %Flow8183 %6288 = icmp eq i64 %3238, 0 %6289 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6288) %6290 = extractvalue { i1, i64 } %6289, 0 %6291 = extractvalue { i1, i64 } %6289, 1 br i1 %6290, label %loop-memcpy-residual-header5052.post-loop-memcpy-expansion5048_crit_edge, label %Flow8180 loop-memcpy-residual-header5052.post-loop-memcpy-expansion5048_crit_edge: ; preds = %loop-memcpy-residual-header5052 %.pre7327 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i2181, 6 br label %Flow8180, !amdgpu.uniform !42 Flow8180: ; preds = %loop-memcpy-residual-header5052.post-loop-memcpy-expansion5048_crit_edge, %loop-memcpy-residual-header5052 %6292 = phi i64 [ %.pre7327, %loop-memcpy-residual-header5052.post-loop-memcpy-expansion5048_crit_edge ], [ poison, %loop-memcpy-residual-header5052 ] %6293 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %6291) %6294 = extractvalue { i1, i64 } %6293, 0 %6295 = extractvalue { i1, i64 } %6293, 1 br i1 %6294, label %loop-memcpy-residual5051.preheader, label %Flow8181 loop-memcpy-residual5051.preheader: ; preds = %Flow8180 %scevgep6773 = getelementptr i8, ptr %3237, i64 8 %scevgep6774 = getelementptr i8, ptr %scevgep6773, i64 %1474 %umin6777 = call i64 @llvm.umin.i64(i64 %lsr.iv.next6776.lcssa, i64 56) %6296 = lshr i64 %umin6777, 4 %6297 = shl nuw nsw i64 %6296, 4 %scevgep6778 = getelementptr i8, ptr %scevgep6774, i64 %6297 %6298 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i2181, 6 %scevgep6779 = getelementptr i8, ptr %scevgep6778, i64 %6298 %scevgep6781 = getelementptr i8, ptr %call18, i64 %6297 br label %loop-memcpy-residual5051, !amdgpu.uniform !42 Flow8258: ; preds = %loop-memcpy-expansion5055 %.lcssa9247 = phi i64 [ %2642, %loop-memcpy-expansion5055 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9247) br label %Flow8259, !amdgpu.uniform !42 Flow8260: ; preds = %Flow8257, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1676 call void @llvm.amdgcn.end.cf.i64(i64 %2630) br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1677, !amdgpu.uniform !42 loop-memcpy-residual-header5058: ; preds = %Flow8259 %6299 = icmp ne i64 %2632, 0 %6300 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6299) %6301 = extractvalue { i1, i64 } %6300, 0 %6302 = extractvalue { i1, i64 } %6300, 1 br i1 %6301, label %loop-memcpy-residual5057.preheader, label %Flow8257 loop-memcpy-residual5057.preheader: ; preds = %loop-memcpy-residual-header5058 %umin7104 = call i64 @llvm.umin.i64(i64 %lsr.iv7099, i64 64) %6303 = lshr i64 %umin7104, 4 %6304 = shl nuw nsw i64 %6303, 4 %scevgep7105 = getelementptr i8, ptr %lsr.iv7092, i64 %6304 %scevgep7095 = getelementptr i8, ptr %2631, i64 %1474 %scevgep7096 = getelementptr i8, ptr %scevgep7095, i64 %2596 %scevgep7102 = getelementptr i8, ptr %scevgep7096, i64 %6304 br label %loop-memcpy-residual5057, !amdgpu.uniform !42 Flow8267: ; preds = %loop-memcpy-expansion5061 %.lcssa9244 = phi i64 [ %2594, %loop-memcpy-expansion5061 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9244) br label %Flow8268, !amdgpu.uniform !42 loop-memcpy-residual-header5064: ; preds = %Flow8268 %6305 = icmp eq i64 %2583, 0 %6306 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6305) %6307 = extractvalue { i1, i64 } %6306, 0 %6308 = extractvalue { i1, i64 } %6306, 1 br i1 %6307, label %loop-memcpy-residual-header5064.post-loop-memcpy-expansion5060_crit_edge, label %Flow8265 loop-memcpy-residual-header5064.post-loop-memcpy-expansion5060_crit_edge: ; preds = %loop-memcpy-residual-header5064 %.pre7319 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1655, 6 br label %Flow8265, !amdgpu.uniform !42 Flow8265: ; preds = %loop-memcpy-residual-header5064.post-loop-memcpy-expansion5060_crit_edge, %loop-memcpy-residual-header5064 %6309 = phi i64 [ %.pre7319, %loop-memcpy-residual-header5064.post-loop-memcpy-expansion5060_crit_edge ], [ poison, %loop-memcpy-residual-header5064 ] %6310 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %6308) %6311 = extractvalue { i1, i64 } %6310, 0 %6312 = extractvalue { i1, i64 } %6310, 1 br i1 %6311, label %loop-memcpy-residual5063.preheader, label %Flow8266 loop-memcpy-residual5063.preheader: ; preds = %Flow8265 %scevgep7082 = getelementptr i8, ptr %2582, i64 8 %scevgep7083 = getelementptr i8, ptr %scevgep7082, i64 %1474 %umin7086 = call i64 @llvm.umin.i64(i64 %lsr.iv.next7085.lcssa, i64 56) %6313 = lshr i64 %umin7086, 4 %6314 = shl nuw nsw i64 %6313, 4 %scevgep7087 = getelementptr i8, ptr %scevgep7083, i64 %6314 %6315 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1655, 6 %scevgep7088 = getelementptr i8, ptr %scevgep7087, i64 %6315 %scevgep7090 = getelementptr i8, ptr %call18, i64 %6314 br label %loop-memcpy-residual5063, !amdgpu.uniform !42 Flow8355: ; preds = %loop-memcpy-expansion5067 %.lcssa9030 = phi i64 [ %1909, %loop-memcpy-expansion5067 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9030) br label %Flow8356, !amdgpu.uniform !42 Flow8357: ; preds = %Flow8354, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1141 call void @llvm.amdgcn.end.cf.i64(i64 %1897) br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1142, !amdgpu.uniform !42 loop-memcpy-residual-header5070: ; preds = %Flow8356 %6316 = icmp ne i64 %1899, 0 %6317 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6316) %6318 = extractvalue { i1, i64 } %6317, 0 %6319 = extractvalue { i1, i64 } %6317, 1 br i1 %6318, label %loop-memcpy-residual5069.preheader, label %Flow8354 loop-memcpy-residual5069.preheader: ; preds = %loop-memcpy-residual-header5070 %umin6692 = call i64 @llvm.umin.i64(i64 %lsr.iv6687, i64 64) %6320 = lshr i64 %umin6692, 4 %6321 = shl nuw nsw i64 %6320, 4 %scevgep6693 = getelementptr i8, ptr %lsr.iv6680, i64 %6321 %scevgep6683 = getelementptr i8, ptr %1898, i64 %1474 %scevgep6684 = getelementptr i8, ptr %scevgep6683, i64 %1863 %scevgep6690 = getelementptr i8, ptr %scevgep6684, i64 %6321 br label %loop-memcpy-residual5069, !amdgpu.uniform !42 Flow8364: ; preds = %loop-memcpy-expansion5073 %.lcssa9027 = phi i64 [ %1861, %loop-memcpy-expansion5073 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9027) br label %Flow8365, !amdgpu.uniform !42 loop-memcpy-residual-header5076: ; preds = %Flow8365 %6322 = icmp eq i64 %1850, 0 %6323 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6322) %6324 = extractvalue { i1, i64 } %6323, 0 %6325 = extractvalue { i1, i64 } %6323, 1 br i1 %6324, label %loop-memcpy-residual-header5076.post-loop-memcpy-expansion5072_crit_edge, label %Flow8362 loop-memcpy-residual-header5076.post-loop-memcpy-expansion5072_crit_edge: ; preds = %loop-memcpy-residual-header5076 %.pre7311 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1120, 6 br label %Flow8362, !amdgpu.uniform !42 Flow8362: ; preds = %loop-memcpy-residual-header5076.post-loop-memcpy-expansion5072_crit_edge, %loop-memcpy-residual-header5076 %6326 = phi i64 [ %.pre7311, %loop-memcpy-residual-header5076.post-loop-memcpy-expansion5072_crit_edge ], [ poison, %loop-memcpy-residual-header5076 ] %6327 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %6325) %6328 = extractvalue { i1, i64 } %6327, 0 %6329 = extractvalue { i1, i64 } %6327, 1 br i1 %6328, label %loop-memcpy-residual5075.preheader, label %Flow8363 loop-memcpy-residual5075.preheader: ; preds = %Flow8362 %scevgep6669 = getelementptr i8, ptr %1849, i64 8 %scevgep6670 = getelementptr i8, ptr %scevgep6669, i64 %1474 %umin6673 = call i64 @llvm.umin.i64(i64 %lsr.iv.next6672.lcssa, i64 56) %6330 = lshr i64 %umin6673, 4 %6331 = shl nuw nsw i64 %6330, 4 %scevgep6674 = getelementptr i8, ptr %scevgep6670, i64 %6331 %6332 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1120, 6 %scevgep6675 = getelementptr i8, ptr %scevgep6674, i64 %6332 %scevgep6677 = getelementptr i8, ptr %call18, i64 %6331 br label %loop-memcpy-residual5075, !amdgpu.uniform !42 Flow8494: ; preds = %loop-memcpy-expansion5079 %.lcssa9299 = phi i64 [ %739, %loop-memcpy-expansion5079 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9299) br label %Flow8495, !amdgpu.uniform !42 Flow8496: ; preds = %Flow8493, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i390 call void @llvm.amdgcn.end.cf.i64(i64 %727) br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i391, !amdgpu.uniform !42 loop-memcpy-residual-header5082: ; preds = %Flow8495 %6333 = icmp ne i64 %729, 0 %6334 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6333) %6335 = extractvalue { i1, i64 } %6334, 0 %6336 = extractvalue { i1, i64 } %6334, 1 br i1 %6335, label %loop-memcpy-residual5081.preheader, label %Flow8493 loop-memcpy-residual5081.preheader: ; preds = %loop-memcpy-residual-header5082 %umin7172 = call i64 @llvm.umin.i64(i64 %lsr.iv7170, i64 64) %6337 = lshr i64 %umin7172, 4 %6338 = shl nuw nsw i64 %6337, 4 %scevgep7175 = getelementptr i8, ptr %lsr.iv7165, i64 %6338 %scevgep7168 = getelementptr i8, ptr %728, i64 %78 %scevgep7169 = getelementptr i8, ptr %scevgep7168, i64 %697 %scevgep7173 = getelementptr i8, ptr %scevgep7169, i64 %6338 br label %loop-memcpy-residual5081, !amdgpu.uniform !42 Flow8503: ; preds = %loop-memcpy-expansion5085 %.lcssa9304 = phi i64 [ %695, %loop-memcpy-expansion5085 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9304) br label %Flow8504, !amdgpu.uniform !42 loop-memcpy-residual-header5088: ; preds = %Flow8504 %6339 = icmp eq i64 %683, 0 %6340 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6339) %6341 = extractvalue { i1, i64 } %6340, 0 %6342 = extractvalue { i1, i64 } %6340, 1 br i1 %6341, label %loop-memcpy-residual-header5088.post-loop-memcpy-expansion5084_crit_edge, label %Flow8501 loop-memcpy-residual-header5088.post-loop-memcpy-expansion5084_crit_edge: ; preds = %loop-memcpy-residual-header5088 %.pre7355 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i369, 6 br label %Flow8501, !amdgpu.uniform !42 Flow8501: ; preds = %loop-memcpy-residual-header5088.post-loop-memcpy-expansion5084_crit_edge, %loop-memcpy-residual-header5088 %6343 = phi i64 [ %.pre7355, %loop-memcpy-residual-header5088.post-loop-memcpy-expansion5084_crit_edge ], [ poison, %loop-memcpy-residual-header5088 ] %6344 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %6342) %6345 = extractvalue { i1, i64 } %6344, 0 %6346 = extractvalue { i1, i64 } %6344, 1 br i1 %6345, label %loop-memcpy-residual5087.preheader, label %Flow8502 loop-memcpy-residual5087.preheader: ; preds = %Flow8501 %6347 = lshr i64 %spec.select.i.i.i.i.i.i.i372, 4 %6348 = shl nuw nsw i64 %6347, 4 %6349 = add i64 %78, %6348 %6350 = add i64 %6349, 8 %scevgep7177 = getelementptr i8, ptr %682, i64 %6350 %6351 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i369, 6 %scevgep7178 = getelementptr i8, ptr %scevgep7177, i64 %6351 %scevgep7180 = getelementptr i8, ptr %606, i64 %6348 br label %loop-memcpy-residual5087, !amdgpu.uniform !42 Flow7922: ; preds = %loop-memcpy-expansion5091 %.lcssa8974 = phi i64 [ %1318, %loop-memcpy-expansion5091 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8974) br label %Flow7923, !amdgpu.uniform !42 loop-memcpy-residual-header5094: ; preds = %Flow7923 %6352 = icmp ne i64 %1307, 0 %6353 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6352) %6354 = extractvalue { i1, i64 } %6353, 0 %6355 = extractvalue { i1, i64 } %6353, 1 br i1 %6354, label %loop-memcpy-residual5093.preheader, label %Flow7921 loop-memcpy-residual5093.preheader: ; preds = %loop-memcpy-residual-header5094 %scevgep6576 = getelementptr i8, ptr %1297, i64 %1308 %scevgep6578 = getelementptr i8, ptr %1276, i64 %1308 br label %loop-memcpy-residual5093, !amdgpu.uniform !42 Flow7931: ; preds = %loop-memcpy-expansion5097 %.lcssa8970 = phi i64 [ %1269, %loop-memcpy-expansion5097 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8970) br label %Flow7932, !amdgpu.uniform !42 loop-memcpy-residual-header5100: ; preds = %Flow7932 %6356 = icmp ne i64 %1258, 0 %6357 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6356) %6358 = extractvalue { i1, i64 } %6357, 0 %6359 = extractvalue { i1, i64 } %6357, 1 br i1 %6358, label %loop-memcpy-residual5099.preheader, label %Flow7930 loop-memcpy-residual5099.preheader: ; preds = %loop-memcpy-residual-header5100 %scevgep6570 = getelementptr i8, ptr %1248, i64 %1259 %scevgep6572 = getelementptr i8, ptr %call18, i64 %1259 br label %loop-memcpy-residual5099, !amdgpu.uniform !42 Flow7720: ; preds = %loop-memcpy-expansion5103 %.lcssa8844 = phi i64 [ %5601, %loop-memcpy-expansion5103 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8844) br label %Flow7721, !amdgpu.uniform !42 loop-memcpy-residual-header5106: ; preds = %Flow7721 %6360 = icmp ne i64 %5590, 0 %6361 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6360) %6362 = extractvalue { i1, i64 } %6361, 0 %6363 = extractvalue { i1, i64 } %6361, 1 br i1 %6362, label %loop-memcpy-residual5105.preheader, label %Flow7719 loop-memcpy-residual5105.preheader: ; preds = %loop-memcpy-residual-header5106 %6364 = lshr i64 %writer.sroa.10.5.i.i.i.i4183, 4 %6365 = trunc i64 %6364 to i32 %6366 = shl i32 %6365, 4 %6367 = add i32 %6366, 11 %6368 = sub i32 %6367, %5589 %scevgep6357 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i2988, i32 %6368 %6369 = shl nuw i64 %6364, 4 %scevgep6360 = getelementptr i8, ptr %5579, i64 %6369 br label %loop-memcpy-residual5105, !amdgpu.uniform !42 Flow7793: ; preds = %loop-memcpy-expansion5109 %.lcssa8882 = phi i64 [ %5150, %loop-memcpy-expansion5109 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8882) br label %Flow7794, !amdgpu.uniform !42 loop-memcpy-residual-header5112: ; preds = %Flow7794 %6370 = icmp ne i64 %5139, 0 %6371 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6370) %6372 = extractvalue { i1, i64 } %6371, 0 %6373 = extractvalue { i1, i64 } %6371, 1 br i1 %6372, label %loop-memcpy-residual5111.preheader, label %Flow7792 loop-memcpy-residual5111.preheader: ; preds = %loop-memcpy-residual-header5112 %6374 = lshr i64 %writer.sroa.10.5.i.i.i.i3799, 4 %6375 = trunc i64 %6374 to i32 %6376 = shl i32 %6375, 4 %6377 = add i32 %6376, 11 %6378 = sub i32 %6377, %5138 %scevgep6405 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i2988, i32 %6378 %6379 = shl nuw i64 %6374, 4 %scevgep6408 = getelementptr i8, ptr %5128, i64 %6379 br label %loop-memcpy-residual5111, !amdgpu.uniform !42 Flow7876: ; preds = %loop-memcpy-expansion5115 %.lcssa8920 = phi i64 [ %4674, %loop-memcpy-expansion5115 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8920) br label %Flow7877, !amdgpu.uniform !42 loop-memcpy-residual-header5118: ; preds = %Flow7877 %6380 = icmp ne i64 %4663, 0 %6381 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6380) %6382 = extractvalue { i1, i64 } %6381, 0 %6383 = extractvalue { i1, i64 } %6381, 1 br i1 %6382, label %loop-memcpy-residual5117.preheader, label %Flow7875 loop-memcpy-residual5117.preheader: ; preds = %loop-memcpy-residual-header5118 %6384 = lshr i64 %writer.sroa.10.4.i.i.i.i3399, 4 %6385 = trunc i64 %6384 to i32 %6386 = shl i32 %6385, 4 %6387 = add i32 %6386, 11 %6388 = sub i32 %6387, %4662 %scevgep6472 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i2988, i32 %6388 %6389 = shl nuw i64 %6384, 4 %scevgep6475 = getelementptr i8, ptr %4652, i64 %6389 br label %loop-memcpy-residual5117, !amdgpu.uniform !42 Flow8039: ; preds = %loop-memcpy-expansion5121 br label %Flow8040, !amdgpu.uniform !42 loop-memcpy-residual-header5124: ; preds = %Flow8040 %6390 = icmp ne i64 %4217, 0 br i1 %6390, label %loop-memcpy-residual5123.preheader, label %Flow8038, !amdgpu.uniform !42 loop-memcpy-residual5123.preheader: ; preds = %loop-memcpy-residual-header5124 %6391 = lshr i64 %writer.sroa.8.4.i.i.i.i3017, 4 %6392 = trunc i64 %6391 to i32 %6393 = shl i32 %6392, 4 %6394 = sub i32 %6393, %4216 %scevgep6878 = getelementptr i8, ptr addrspace(5) %scevgep6873, i32 %6394 %scevgep6881 = getelementptr i8, ptr %4211, i64 %4218 br label %loop-memcpy-residual5123, !amdgpu.uniform !42 Flow7978: ; preds = %loop-memcpy-expansion5127 br label %Flow7979, !amdgpu.uniform !42 loop-memcpy-residual-header5130: ; preds = %Flow7979 %6395 = icmp ne i64 %3933, 0 br i1 %6395, label %loop-memcpy-residual5129.preheader, label %Flow7977, !amdgpu.uniform !42 loop-memcpy-residual5129.preheader: ; preds = %loop-memcpy-residual-header5130 %6396 = lshr i64 %writer.sroa.8.4.i.i.i.i2742, 4 %6397 = trunc i64 %6396 to i32 %6398 = shl i32 %6397, 4 %6399 = sub i32 %6398, %3932 %scevgep6824 = getelementptr i8, ptr addrspace(5) %scevgep6819, i32 %6399 %scevgep6827 = getelementptr i8, ptr %3927, i64 %3934 br label %loop-memcpy-residual5129, !amdgpu.uniform !42 Flow8104: ; preds = %loop-memcpy-expansion5133 br label %Flow8105, !amdgpu.uniform !42 loop-memcpy-residual-header5136: ; preds = %Flow8105 %6400 = icmp ne i64 %3656, 0 br i1 %6400, label %loop-memcpy-residual5135.preheader, label %Flow8103, !amdgpu.uniform !42 loop-memcpy-residual5135.preheader: ; preds = %loop-memcpy-residual-header5136 %6401 = lshr i64 %writer.sroa.8.4.i.i.i.i, 4 %6402 = trunc i64 %6401 to i32 %6403 = shl i32 %6402, 4 %6404 = sub i32 %6403, %3655 %scevgep6932 = getelementptr i8, ptr addrspace(5) %scevgep6927, i32 %6404 %scevgep6935 = getelementptr i8, ptr %3650, i64 %3657 br label %loop-memcpy-residual5135, !amdgpu.uniform !42 Flow8511: ; preds = %loop-memcpy-expansion5139 %.lcssa9312 = phi i64 [ %628, %loop-memcpy-expansion5139 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9312) br label %Flow8512, !amdgpu.uniform !42 loop-memcpy-residual-header5142: ; preds = %Flow8512 %6405 = icmp ne i64 %617, 0 %6406 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6405) %6407 = extractvalue { i1, i64 } %6406, 0 %6408 = extractvalue { i1, i64 } %6406, 1 br i1 %6407, label %loop-memcpy-residual5141.preheader, label %Flow8510 loop-memcpy-residual5141.preheader: ; preds = %loop-memcpy-residual-header5142 %6409 = lshr i64 %writer.sroa.10.5.i.i.i.i, 4 %6410 = trunc i64 %6409 to i32 %6411 = shl i32 %6410, 4 %6412 = add i32 %6411, 11 %6413 = sub i32 %6412, %616 %scevgep7185 = getelementptr i8, ptr addrspace(5) %buffer.i.i.i2988, i32 %6413 %6414 = shl nuw i64 %6409, 4 %scevgep7188 = getelementptr i8, ptr %606, i64 %6414 br label %loop-memcpy-residual5141, !amdgpu.uniform !42 Flow8603: ; preds = %loop-memcpy-expansion5145 %.lcssa9357 = phi i64 [ %76, %loop-memcpy-expansion5145 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9357) br label %Flow8604, !amdgpu.uniform !42 loop-memcpy-residual-header5148: ; preds = %Flow8604 %6415 = icmp eq i64 %63, 0 %6416 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6415) %6417 = extractvalue { i1, i64 } %6416, 0 %6418 = extractvalue { i1, i64 } %6416, 1 br i1 %6417, label %loop-memcpy-residual-header5148.post-loop-memcpy-expansion5144_crit_edge, label %Flow8601 loop-memcpy-residual-header5148.post-loop-memcpy-expansion5144_crit_edge: ; preds = %loop-memcpy-residual-header5148 %.pre7345 = shl nuw nsw i64 %sh_prom.i.i.i.i, 6 %.pre7347 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i, 6 br label %Flow8601, !amdgpu.uniform !42 Flow8601: ; preds = %loop-memcpy-residual-header5148.post-loop-memcpy-expansion5144_crit_edge, %loop-memcpy-residual-header5148 %6419 = phi i64 [ %.pre7345, %loop-memcpy-residual-header5148.post-loop-memcpy-expansion5144_crit_edge ], [ poison, %loop-memcpy-residual-header5148 ] %6420 = phi i64 [ %.pre7347, %loop-memcpy-residual-header5148.post-loop-memcpy-expansion5144_crit_edge ], [ poison, %loop-memcpy-residual-header5148 ] %6421 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %6418) %6422 = extractvalue { i1, i64 } %6421, 0 %6423 = extractvalue { i1, i64 } %6421, 1 br i1 %6422, label %loop-memcpy-residual5147.preheader, label %Flow8602 loop-memcpy-residual5147.preheader: ; preds = %Flow8601 %6424 = shl nuw nsw i64 %sh_prom.i.i.i.i, 6 %6425 = lshr i64 %spec.select.i.i.i.i.i.i.i, 4 %6426 = shl nuw nsw i64 %6425, 4 %6427 = add i64 %6424, %6426 %6428 = add i64 %6427, 8 %scevgep7269 = getelementptr i8, ptr %62, i64 %6428 %6429 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i, 6 %scevgep7270 = getelementptr i8, ptr %scevgep7269, i64 %6429 %scevgep7272 = getelementptr i8, ptr addrspace(4) %cond, i64 %6426 br label %loop-memcpy-residual5147, !amdgpu.uniform !42 Flow8421: ; preds = %loop-memcpy-expansion5151 %.lcssa8984 = phi i64 [ %1472, %loop-memcpy-expansion5151 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8984) br label %Flow8422, !amdgpu.uniform !42 loop-memcpy-residual-header5154: ; preds = %Flow8422 %6430 = icmp eq i64 %1460, 0 %6431 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6430) %6432 = extractvalue { i1, i64 } %6431, 0 %6433 = extractvalue { i1, i64 } %6431, 1 br i1 %6432, label %loop-memcpy-residual-header5154.post-loop-memcpy-expansion5150_crit_edge, label %Flow8419 loop-memcpy-residual-header5154.post-loop-memcpy-expansion5150_crit_edge: ; preds = %loop-memcpy-residual-header5154 %.pre7303 = shl nuw nsw i64 %sh_prom.i.i.i.i756, 6 %.pre7305 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i800, 6 br label %Flow8419, !amdgpu.uniform !42 Flow8419: ; preds = %loop-memcpy-residual-header5154.post-loop-memcpy-expansion5150_crit_edge, %loop-memcpy-residual-header5154 %6434 = phi i64 [ %.pre7303, %loop-memcpy-residual-header5154.post-loop-memcpy-expansion5150_crit_edge ], [ poison, %loop-memcpy-residual-header5154 ] %6435 = phi i64 [ %.pre7305, %loop-memcpy-residual-header5154.post-loop-memcpy-expansion5150_crit_edge ], [ poison, %loop-memcpy-residual-header5154 ] %6436 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %6433) %6437 = extractvalue { i1, i64 } %6436, 0 %6438 = extractvalue { i1, i64 } %6436, 1 br i1 %6437, label %loop-memcpy-residual5153.preheader, label %Flow8420 loop-memcpy-residual5153.preheader: ; preds = %Flow8419 %scevgep6594 = getelementptr i8, ptr %1459, i64 8 %6439 = shl nuw nsw i64 %sh_prom.i.i.i.i756, 6 %6440 = add i64 %6439, %1461 %scevgep6595 = getelementptr i8, ptr %scevgep6594, i64 %6440 %6441 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i800, 6 %scevgep6596 = getelementptr i8, ptr %scevgep6595, i64 %6441 %scevgep6598 = getelementptr i8, ptr addrspace(4) %cond, i64 %1461 br label %loop-memcpy-residual5153, !amdgpu.uniform !42 Flow8239: ; preds = %loop-memcpy-expansion5157 %.lcssa9054 = phi i64 [ %2860, %loop-memcpy-expansion5157 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9054) br label %Flow8240, !amdgpu.uniform !42 loop-memcpy-residual-header5160: ; preds = %Flow8240 %6442 = icmp eq i64 %2849, 0 %6443 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6442) %6444 = extractvalue { i1, i64 } %6443, 0 %6445 = extractvalue { i1, i64 } %6443, 1 br i1 %6444, label %loop-memcpy-residual-header5160.post-loop-memcpy-expansion5156_crit_edge, label %Flow8237 loop-memcpy-residual-header5160.post-loop-memcpy-expansion5156_crit_edge: ; preds = %loop-memcpy-residual-header5160 %.pre7321 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1861, 6 br label %Flow8237, !amdgpu.uniform !42 Flow8237: ; preds = %loop-memcpy-residual-header5160.post-loop-memcpy-expansion5156_crit_edge, %loop-memcpy-residual-header5160 %6446 = phi i64 [ %.pre7321, %loop-memcpy-residual-header5160.post-loop-memcpy-expansion5156_crit_edge ], [ poison, %loop-memcpy-residual-header5160 ] %6447 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %6445) %6448 = extractvalue { i1, i64 } %6447, 0 %6449 = extractvalue { i1, i64 } %6447, 1 br i1 %6448, label %loop-memcpy-residual5159.preheader, label %Flow8238 loop-memcpy-residual5159.preheader: ; preds = %Flow8237 %scevgep6702 = getelementptr i8, ptr %2848, i64 8 %6450 = add i64 %1474, %2850 %scevgep6703 = getelementptr i8, ptr %scevgep6702, i64 %6450 %6451 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1861, 6 %scevgep6704 = getelementptr i8, ptr %scevgep6703, i64 %6451 %scevgep6706 = getelementptr i8, ptr addrspace(4) %cond, i64 %2850 br label %loop-memcpy-residual5159, !amdgpu.uniform !42 Flow8594: ; preds = %loop-memcpy-expansion5163 %.lcssa9352 = phi i64 [ %126, %loop-memcpy-expansion5163 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9352) br label %Flow8595, !amdgpu.uniform !42 Flow8596: ; preds = %Flow8593, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i call void @llvm.amdgcn.end.cf.i64(i64 %114) br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i, !amdgpu.uniform !42 loop-memcpy-residual-header5166: ; preds = %Flow8595 %6452 = icmp ne i64 %116, 0 %6453 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6452) %6454 = extractvalue { i1, i64 } %6453, 0 %6455 = extractvalue { i1, i64 } %6453, 1 br i1 %6454, label %loop-memcpy-residual5165.preheader, label %Flow8593 loop-memcpy-residual5165.preheader: ; preds = %loop-memcpy-residual-header5166 %umin7264 = call i64 @llvm.umin.i64(i64 %lsr.iv7262, i64 64) %6456 = lshr i64 %umin7264, 4 %6457 = shl nuw nsw i64 %6456, 4 %scevgep7267 = getelementptr i8, ptr addrspace(4) %lsr.iv7257, i64 %6457 %scevgep7260 = getelementptr i8, ptr %115, i64 %78 %scevgep7261 = getelementptr i8, ptr %scevgep7260, i64 %79 %scevgep7265 = getelementptr i8, ptr %scevgep7261, i64 %6457 br label %loop-memcpy-residual5165, !amdgpu.uniform !42 Flow8584: ; preds = %loop-memcpy-expansion5169 br label %Flow8585, !amdgpu.uniform !42 loop-memcpy-residual-header5172: ; preds = %Flow8585 %6458 = icmp eq i64 %199, 0 br i1 %6458, label %loop-memcpy-residual-header5172.post-loop-memcpy-expansion5168_crit_edge, label %Flow8582, !amdgpu.uniform !42 loop-memcpy-residual-header5172.post-loop-memcpy-expansion5168_crit_edge: ; preds = %loop-memcpy-residual-header5172 %.pre7349 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i56, 6 br label %Flow8582, !amdgpu.uniform !42 Flow8582: ; preds = %loop-memcpy-residual-header5172.post-loop-memcpy-expansion5168_crit_edge, %loop-memcpy-residual-header5172 %6459 = phi i64 [ %.pre7349, %loop-memcpy-residual-header5172.post-loop-memcpy-expansion5168_crit_edge ], [ poison, %loop-memcpy-residual-header5172 ] %6460 = phi i1 [ false, %loop-memcpy-residual-header5172.post-loop-memcpy-expansion5168_crit_edge ], [ true, %loop-memcpy-residual-header5172 ] br i1 %6460, label %loop-memcpy-residual5171.preheader, label %Flow8583, !amdgpu.uniform !42 loop-memcpy-residual5171.preheader: ; preds = %Flow8582 %6461 = add nuw nsw i64 %78, 8 %scevgep7249 = getelementptr i8, ptr %198, i64 %6461 %6462 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i56, 6 %scevgep7250 = getelementptr i8, ptr %scevgep7249, i64 %6462 br label %loop-memcpy-residual5171, !amdgpu.uniform !42 Flow8575: ; preds = %loop-memcpy-expansion5175 br label %Flow8576, !amdgpu.uniform !42 Flow8577: ; preds = %Flow8574, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i77 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i78, !amdgpu.uniform !42 loop-memcpy-residual-header5178: ; preds = %Flow8576 %6463 = icmp ne i64 %234, 0 br i1 %6463, label %loop-memcpy-residual5177.preheader, label %Flow8574, !amdgpu.uniform !42 loop-memcpy-residual5177.preheader: ; preds = %loop-memcpy-residual-header5178 %umin7244 = call i64 @llvm.umin.i64(i64 %lsr.iv7242, i64 64) %6464 = lshr i64 %umin7244, 4 %6465 = shl nuw nsw i64 %6464, 4 %scevgep7247 = getelementptr i8, ptr addrspace(4) %lsr.iv7237, i64 %6465 %scevgep7240 = getelementptr i8, ptr %233, i64 %78 %scevgep7241 = getelementptr i8, ptr %scevgep7240, i64 %208 %scevgep7245 = getelementptr i8, ptr %scevgep7241, i64 %6465 br label %loop-memcpy-residual5177, !amdgpu.uniform !42 Flow8565: ; preds = %loop-memcpy-expansion5181 %.lcssa9332 = phi i64 [ %327, %loop-memcpy-expansion5181 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9332) br label %Flow8566, !amdgpu.uniform !42 loop-memcpy-residual-header5184: ; preds = %Flow8566 %6466 = icmp eq i64 %315, 0 %6467 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6466) %6468 = extractvalue { i1, i64 } %6467, 0 %6469 = extractvalue { i1, i64 } %6467, 1 br i1 %6468, label %loop-memcpy-residual-header5184.post-loop-memcpy-expansion5180_crit_edge, label %Flow8563 loop-memcpy-residual-header5184.post-loop-memcpy-expansion5180_crit_edge: ; preds = %loop-memcpy-residual-header5184 %.pre7351 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i162, 6 br label %Flow8563, !amdgpu.uniform !42 Flow8563: ; preds = %loop-memcpy-residual-header5184.post-loop-memcpy-expansion5180_crit_edge, %loop-memcpy-residual-header5184 %6470 = phi i64 [ %.pre7351, %loop-memcpy-residual-header5184.post-loop-memcpy-expansion5180_crit_edge ], [ poison, %loop-memcpy-residual-header5184 ] %6471 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %6469) %6472 = extractvalue { i1, i64 } %6471, 0 %6473 = extractvalue { i1, i64 } %6471, 1 br i1 %6472, label %loop-memcpy-residual5183.preheader, label %Flow8564 loop-memcpy-residual5183.preheader: ; preds = %Flow8563 %6474 = lshr i64 %spec.select.i.i.i.i.i.i.i165, 4 %6475 = shl nuw nsw i64 %6474, 4 %6476 = add i64 %78, %6475 %6477 = add i64 %6476, 8 %scevgep7225 = getelementptr i8, ptr %314, i64 %6477 %6478 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i162, 6 %scevgep7226 = getelementptr i8, ptr %scevgep7225, i64 %6478 %scevgep7228 = getelementptr i8, ptr addrspace(4) %cond6, i64 %6475 br label %loop-memcpy-residual5183, !amdgpu.uniform !42 Flow8383: ; preds = %loop-memcpy-expansion5187 %.lcssa9011 = phi i64 [ %1724, %loop-memcpy-expansion5187 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9011) br label %Flow8384, !amdgpu.uniform !42 loop-memcpy-residual-header5190: ; preds = %Flow8384 %6479 = icmp eq i64 %1713, 0 %6480 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6479) %6481 = extractvalue { i1, i64 } %6480, 0 %6482 = extractvalue { i1, i64 } %6480, 1 br i1 %6481, label %loop-memcpy-residual-header5190.post-loop-memcpy-expansion5186_crit_edge, label %Flow8381 loop-memcpy-residual-header5190.post-loop-memcpy-expansion5186_crit_edge: ; preds = %loop-memcpy-residual-header5190 %.pre7309 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1013, 6 br label %Flow8381, !amdgpu.uniform !42 Flow8381: ; preds = %loop-memcpy-residual-header5190.post-loop-memcpy-expansion5186_crit_edge, %loop-memcpy-residual-header5190 %6483 = phi i64 [ %.pre7309, %loop-memcpy-residual-header5190.post-loop-memcpy-expansion5186_crit_edge ], [ poison, %loop-memcpy-residual-header5190 ] %6484 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %6482) %6485 = extractvalue { i1, i64 } %6484, 0 %6486 = extractvalue { i1, i64 } %6484, 1 br i1 %6485, label %loop-memcpy-residual5189.preheader, label %Flow8382 loop-memcpy-residual5189.preheader: ; preds = %Flow8381 %scevgep6642 = getelementptr i8, ptr %1712, i64 8 %6487 = add i64 %1474, %1714 %scevgep6643 = getelementptr i8, ptr %scevgep6642, i64 %6487 %6488 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1013, 6 %scevgep6644 = getelementptr i8, ptr %scevgep6643, i64 %6488 %scevgep6646 = getelementptr i8, ptr addrspace(4) %cond6, i64 %1714 br label %loop-memcpy-residual5189, !amdgpu.uniform !42 Flow8286: ; preds = %loop-memcpy-expansion5193 %.lcssa9228 = phi i64 [ %2456, %loop-memcpy-expansion5193 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9228) br label %Flow8287, !amdgpu.uniform !42 loop-memcpy-residual-header5196: ; preds = %Flow8287 %6489 = icmp eq i64 %2445, 0 %6490 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6489) %6491 = extractvalue { i1, i64 } %6490, 0 %6492 = extractvalue { i1, i64 } %6490, 1 br i1 %6491, label %loop-memcpy-residual-header5196.post-loop-memcpy-expansion5192_crit_edge, label %Flow8284 loop-memcpy-residual-header5196.post-loop-memcpy-expansion5192_crit_edge: ; preds = %loop-memcpy-residual-header5196 %.pre7317 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1548, 6 br label %Flow8284, !amdgpu.uniform !42 Flow8284: ; preds = %loop-memcpy-residual-header5196.post-loop-memcpy-expansion5192_crit_edge, %loop-memcpy-residual-header5196 %6493 = phi i64 [ %.pre7317, %loop-memcpy-residual-header5196.post-loop-memcpy-expansion5192_crit_edge ], [ poison, %loop-memcpy-residual-header5196 ] %6494 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %6492) %6495 = extractvalue { i1, i64 } %6494, 0 %6496 = extractvalue { i1, i64 } %6494, 1 br i1 %6495, label %loop-memcpy-residual5195.preheader, label %Flow8285 loop-memcpy-residual5195.preheader: ; preds = %Flow8284 %scevgep7057 = getelementptr i8, ptr %2444, i64 8 %6497 = add i64 %1474, %2446 %scevgep7058 = getelementptr i8, ptr %scevgep7057, i64 %6497 %6498 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1548, 6 %scevgep7059 = getelementptr i8, ptr %scevgep7058, i64 %6498 %scevgep7061 = getelementptr i8, ptr addrspace(4) %cond6, i64 %2446 br label %loop-memcpy-residual5195, !amdgpu.uniform !42 Flow8201: ; preds = %loop-memcpy-expansion5199 %.lcssa9081 = phi i64 [ %3111, %loop-memcpy-expansion5199 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9081) br label %Flow8202, !amdgpu.uniform !42 loop-memcpy-residual-header5202: ; preds = %Flow8202 %6499 = icmp eq i64 %3100, 0 %6500 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6499) %6501 = extractvalue { i1, i64 } %6500, 0 %6502 = extractvalue { i1, i64 } %6500, 1 br i1 %6501, label %loop-memcpy-residual-header5202.post-loop-memcpy-expansion5198_crit_edge, label %Flow8199 loop-memcpy-residual-header5202.post-loop-memcpy-expansion5198_crit_edge: ; preds = %loop-memcpy-residual-header5202 %.pre7325 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i2074, 6 br label %Flow8199, !amdgpu.uniform !42 Flow8199: ; preds = %loop-memcpy-residual-header5202.post-loop-memcpy-expansion5198_crit_edge, %loop-memcpy-residual-header5202 %6503 = phi i64 [ %.pre7325, %loop-memcpy-residual-header5202.post-loop-memcpy-expansion5198_crit_edge ], [ poison, %loop-memcpy-residual-header5202 ] %6504 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %6502) %6505 = extractvalue { i1, i64 } %6504, 0 %6506 = extractvalue { i1, i64 } %6504, 1 br i1 %6505, label %loop-memcpy-residual5201.preheader, label %Flow8200 loop-memcpy-residual5201.preheader: ; preds = %Flow8199 %scevgep6748 = getelementptr i8, ptr %3099, i64 8 %6507 = add i64 %1474, %3101 %scevgep6749 = getelementptr i8, ptr %scevgep6748, i64 %6507 %6508 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i2074, 6 %scevgep6750 = getelementptr i8, ptr %scevgep6749, i64 %6508 %scevgep6752 = getelementptr i8, ptr addrspace(4) %cond6, i64 %3101 br label %loop-memcpy-residual5201, !amdgpu.uniform !42 Flow8556: ; preds = %loop-memcpy-expansion5205 %.lcssa9327 = phi i64 [ %376, %loop-memcpy-expansion5205 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9327) br label %Flow8557, !amdgpu.uniform !42 Flow8558: ; preds = %Flow8555, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i183 call void @llvm.amdgcn.end.cf.i64(i64 %364) br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i184, !amdgpu.uniform !42 loop-memcpy-residual-header5208: ; preds = %Flow8557 %6509 = icmp ne i64 %366, 0 %6510 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6509) %6511 = extractvalue { i1, i64 } %6510, 0 %6512 = extractvalue { i1, i64 } %6510, 1 br i1 %6511, label %loop-memcpy-residual5207.preheader, label %Flow8555 loop-memcpy-residual5207.preheader: ; preds = %loop-memcpy-residual-header5208 %umin7220 = call i64 @llvm.umin.i64(i64 %lsr.iv7218, i64 64) %6513 = lshr i64 %umin7220, 4 %6514 = shl nuw nsw i64 %6513, 4 %scevgep7223 = getelementptr i8, ptr addrspace(4) %lsr.iv7213, i64 %6514 %scevgep7216 = getelementptr i8, ptr %365, i64 %78 %scevgep7217 = getelementptr i8, ptr %scevgep7216, i64 %329 %scevgep7221 = getelementptr i8, ptr %scevgep7217, i64 %6514 br label %loop-memcpy-residual5207, !amdgpu.uniform !42 Flow8546: ; preds = %loop-memcpy-expansion5211 br label %Flow8547, !amdgpu.uniform !42 loop-memcpy-residual-header5214: ; preds = %Flow8547 %6515 = icmp eq i64 %449, 0 br i1 %6515, label %loop-memcpy-residual-header5214.post-loop-memcpy-expansion5210_crit_edge, label %Flow8544, !amdgpu.uniform !42 loop-memcpy-residual-header5214.post-loop-memcpy-expansion5210_crit_edge: ; preds = %loop-memcpy-residual-header5214 %.pre7353 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i267, 6 br label %Flow8544, !amdgpu.uniform !42 Flow8544: ; preds = %loop-memcpy-residual-header5214.post-loop-memcpy-expansion5210_crit_edge, %loop-memcpy-residual-header5214 %6516 = phi i64 [ %.pre7353, %loop-memcpy-residual-header5214.post-loop-memcpy-expansion5210_crit_edge ], [ poison, %loop-memcpy-residual-header5214 ] %6517 = phi i1 [ false, %loop-memcpy-residual-header5214.post-loop-memcpy-expansion5210_crit_edge ], [ true, %loop-memcpy-residual-header5214 ] br i1 %6517, label %loop-memcpy-residual5213.preheader, label %Flow8545, !amdgpu.uniform !42 loop-memcpy-residual5213.preheader: ; preds = %Flow8544 %6518 = add nuw nsw i64 %78, 8 %scevgep7205 = getelementptr i8, ptr %448, i64 %6518 %6519 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i267, 6 %scevgep7206 = getelementptr i8, ptr %scevgep7205, i64 %6519 br label %loop-memcpy-residual5213, !amdgpu.uniform !42 Flow8537: ; preds = %loop-memcpy-expansion5217 br label %Flow8538, !amdgpu.uniform !42 Flow8539: ; preds = %Flow8536, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i288 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i289, !amdgpu.uniform !42 loop-memcpy-residual-header5220: ; preds = %Flow8538 %6520 = icmp ne i64 %484, 0 br i1 %6520, label %loop-memcpy-residual5219.preheader, label %Flow8536, !amdgpu.uniform !42 loop-memcpy-residual5219.preheader: ; preds = %loop-memcpy-residual-header5220 %umin7200 = call i64 @llvm.umin.i64(i64 %lsr.iv7198, i64 64) %scevgep7203 = getelementptr i8, ptr addrspace(4) %lsr.iv7193, i64 %umin7200 %scevgep7196 = getelementptr i8, ptr %483, i64 %78 %scevgep7197 = getelementptr i8, ptr %scevgep7196, i64 %458 %scevgep7201 = getelementptr i8, ptr %scevgep7197, i64 %umin7200 br label %loop-memcpy-residual5219, !amdgpu.uniform !42 Flow8484: ; preds = %loop-memcpy-expansion5223 br label %Flow8485, !amdgpu.uniform !42 loop-memcpy-residual-header5226: ; preds = %Flow8485 %6521 = icmp eq i64 %812, 0 br i1 %6521, label %loop-memcpy-residual-header5226.post-loop-memcpy-expansion5222_crit_edge, label %Flow8482, !amdgpu.uniform !42 loop-memcpy-residual-header5226.post-loop-memcpy-expansion5222_crit_edge: ; preds = %loop-memcpy-residual-header5226 %.pre7357 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i472, 6 br label %Flow8482, !amdgpu.uniform !42 Flow8482: ; preds = %loop-memcpy-residual-header5226.post-loop-memcpy-expansion5222_crit_edge, %loop-memcpy-residual-header5226 %6522 = phi i64 [ %.pre7357, %loop-memcpy-residual-header5226.post-loop-memcpy-expansion5222_crit_edge ], [ poison, %loop-memcpy-residual-header5226 ] %6523 = phi i1 [ false, %loop-memcpy-residual-header5226.post-loop-memcpy-expansion5222_crit_edge ], [ true, %loop-memcpy-residual-header5226 ] br i1 %6523, label %loop-memcpy-residual5225.preheader, label %Flow8483, !amdgpu.uniform !42 loop-memcpy-residual5225.preheader: ; preds = %Flow8482 %6524 = add nuw nsw i64 %78, 8 %scevgep7157 = getelementptr i8, ptr %811, i64 %6524 %6525 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i472, 6 %scevgep7158 = getelementptr i8, ptr %scevgep7157, i64 %6525 br label %loop-memcpy-residual5225, !amdgpu.uniform !42 Flow8475: ; preds = %loop-memcpy-expansion5229 br label %Flow8476, !amdgpu.uniform !42 Flow8477: ; preds = %Flow8474, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i493 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i494, !amdgpu.uniform !42 loop-memcpy-residual-header5232: ; preds = %Flow8476 %6526 = icmp ne i64 %847, 0 br i1 %6526, label %loop-memcpy-residual5231.preheader, label %Flow8474, !amdgpu.uniform !42 loop-memcpy-residual5231.preheader: ; preds = %loop-memcpy-residual-header5232 %umin7152 = call i64 @llvm.umin.i64(i64 %lsr.iv7150, i64 64) %6527 = lshr i64 %umin7152, 4 %6528 = shl nuw nsw i64 %6527, 4 %scevgep7155 = getelementptr i8, ptr addrspace(4) %lsr.iv7145, i64 %6528 %scevgep7148 = getelementptr i8, ptr %846, i64 %78 %scevgep7149 = getelementptr i8, ptr %scevgep7148, i64 %821 %scevgep7153 = getelementptr i8, ptr %scevgep7149, i64 %6528 br label %loop-memcpy-residual5231, !amdgpu.uniform !42 Flow8464: ; preds = %loop-memcpy-expansion5235 br label %Flow8465, !amdgpu.uniform !42 loop-memcpy-residual-header5238: ; preds = %Flow8465 %6529 = icmp eq i64 %926, 0 br i1 %6529, label %loop-memcpy-residual-header5238.post-loop-memcpy-expansion5234_crit_edge, label %Flow8462, !amdgpu.uniform !42 loop-memcpy-residual-header5238.post-loop-memcpy-expansion5234_crit_edge: ; preds = %loop-memcpy-residual-header5238 %.pre7359 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i578, 6 br label %Flow8462, !amdgpu.uniform !42 Flow8462: ; preds = %loop-memcpy-residual-header5238.post-loop-memcpy-expansion5234_crit_edge, %loop-memcpy-residual-header5238 %6530 = phi i64 [ %.pre7359, %loop-memcpy-residual-header5238.post-loop-memcpy-expansion5234_crit_edge ], [ poison, %loop-memcpy-residual-header5238 ] %6531 = phi i1 [ false, %loop-memcpy-residual-header5238.post-loop-memcpy-expansion5234_crit_edge ], [ true, %loop-memcpy-residual-header5238 ] br i1 %6531, label %loop-memcpy-residual5237.preheader, label %Flow8463, !amdgpu.uniform !42 loop-memcpy-residual5237.preheader: ; preds = %Flow8462 %6532 = add nuw nsw i64 %78, 8 %scevgep7138 = getelementptr i8, ptr %925, i64 %6532 %6533 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i578, 6 %scevgep7139 = getelementptr i8, ptr %scevgep7138, i64 %6533 br label %loop-memcpy-residual5237, !amdgpu.uniform !42 Flow8455: ; preds = %loop-memcpy-expansion5241 br label %Flow8456, !amdgpu.uniform !42 Flow8457: ; preds = %Flow8454, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i599 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i600, !amdgpu.uniform !42 loop-memcpy-residual-header5244: ; preds = %Flow8456 %6534 = icmp ne i64 %961, 0 br i1 %6534, label %loop-memcpy-residual5243.preheader, label %Flow8454, !amdgpu.uniform !42 loop-memcpy-residual5243.preheader: ; preds = %loop-memcpy-residual-header5244 %umin7133 = call i64 @llvm.umin.i64(i64 %lsr.iv7131, i64 64) %6535 = lshr i64 %umin7133, 4 %6536 = shl nuw nsw i64 %6535, 4 %scevgep7136 = getelementptr i8, ptr addrspace(4) %lsr.iv7126, i64 %6536 %scevgep7129 = getelementptr i8, ptr %960, i64 %78 %scevgep7130 = getelementptr i8, ptr %scevgep7129, i64 %935 %scevgep7134 = getelementptr i8, ptr %scevgep7130, i64 %6536 br label %loop-memcpy-residual5243, !amdgpu.uniform !42 Flow8445: ; preds = %loop-memcpy-expansion5247 br label %Flow8446, !amdgpu.uniform !42 loop-memcpy-residual-header5250: ; preds = %Flow8446 %6537 = icmp eq i64 %1037, 0 br i1 %6537, label %loop-memcpy-residual-header5250.post-loop-memcpy-expansion5246_crit_edge, label %Flow8443, !amdgpu.uniform !42 loop-memcpy-residual-header5250.post-loop-memcpy-expansion5246_crit_edge: ; preds = %loop-memcpy-residual-header5250 %.pre7361 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i684, 6 br label %Flow8443, !amdgpu.uniform !42 Flow8443: ; preds = %loop-memcpy-residual-header5250.post-loop-memcpy-expansion5246_crit_edge, %loop-memcpy-residual-header5250 %6538 = phi i64 [ %.pre7361, %loop-memcpy-residual-header5250.post-loop-memcpy-expansion5246_crit_edge ], [ poison, %loop-memcpy-residual-header5250 ] %6539 = phi i1 [ false, %loop-memcpy-residual-header5250.post-loop-memcpy-expansion5246_crit_edge ], [ true, %loop-memcpy-residual-header5250 ] br i1 %6539, label %loop-memcpy-residual5249.preheader, label %Flow8444, !amdgpu.uniform !42 loop-memcpy-residual5249.preheader: ; preds = %Flow8443 %6540 = add nuw nsw i64 %78, 24 %scevgep7119 = getelementptr i8, ptr %1036, i64 %6540 %6541 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i684, 6 %scevgep7120 = getelementptr i8, ptr %scevgep7119, i64 %6541 br label %loop-memcpy-residual5249, !amdgpu.uniform !42 Flow8436: ; preds = %loop-memcpy-expansion5253 br label %Flow8437, !amdgpu.uniform !42 Flow8438: ; preds = %Flow8435, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i705 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i706, !amdgpu.uniform !42 loop-memcpy-residual-header5256: ; preds = %Flow8437 %6542 = icmp ne i64 %1072, 0 br i1 %6542, label %loop-memcpy-residual5255.preheader, label %Flow8435, !amdgpu.uniform !42 loop-memcpy-residual5255.preheader: ; preds = %loop-memcpy-residual-header5256 %umin7114 = call i64 @llvm.umin.i64(i64 %lsr.iv7112, i64 64) %6543 = lshr i64 %umin7114, 4 %6544 = shl nuw nsw i64 %6543, 4 %scevgep7117 = getelementptr i8, ptr addrspace(4) %lsr.iv7107, i64 %6544 %scevgep7110 = getelementptr i8, ptr %1071, i64 %78 %scevgep7111 = getelementptr i8, ptr %scevgep7110, i64 %1046 %scevgep7115 = getelementptr i8, ptr %scevgep7111, i64 %6544 br label %loop-memcpy-residual5255, !amdgpu.uniform !42 Flow8412: ; preds = %loop-memcpy-expansion5259 %.lcssa8987 = phi i64 [ %1524, %loop-memcpy-expansion5259 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa8987) br label %Flow8413, !amdgpu.uniform !42 Flow8414: ; preds = %Flow8411, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i821 call void @llvm.amdgcn.end.cf.i64(i64 %1512) br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i822, !amdgpu.uniform !42 loop-memcpy-residual-header5262: ; preds = %Flow8413 %6545 = icmp ne i64 %1514, 0 %6546 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6545) %6547 = extractvalue { i1, i64 } %6546, 0 %6548 = extractvalue { i1, i64 } %6546, 1 br i1 %6547, label %loop-memcpy-residual5261.preheader, label %Flow8411 loop-memcpy-residual5261.preheader: ; preds = %loop-memcpy-residual-header5262 %umin6608 = call i64 @llvm.umin.i64(i64 %lsr.iv6606, i64 64) %6549 = lshr i64 %umin6608, 4 %6550 = shl nuw nsw i64 %6549, 4 %scevgep6611 = getelementptr i8, ptr addrspace(4) %lsr.iv6601, i64 %6550 %scevgep6604 = getelementptr i8, ptr %1513, i64 %1474 %scevgep6605 = getelementptr i8, ptr %scevgep6604, i64 %1475 %scevgep6609 = getelementptr i8, ptr %scevgep6605, i64 %6550 br label %loop-memcpy-residual5261, !amdgpu.uniform !42 Flow8402: ; preds = %loop-memcpy-expansion5265 br label %Flow8403, !amdgpu.uniform !42 loop-memcpy-residual-header5268: ; preds = %Flow8403 br i1 %1111, label %loop-memcpy-residual-header5268.post-loop-memcpy-expansion5264_crit_edge, label %Flow8400, !amdgpu.uniform !42 loop-memcpy-residual-header5268.post-loop-memcpy-expansion5264_crit_edge: ; preds = %loop-memcpy-residual-header5268 %.pre7307 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i906, 6 br label %Flow8400, !amdgpu.uniform !42 Flow8400: ; preds = %loop-memcpy-residual-header5268.post-loop-memcpy-expansion5264_crit_edge, %loop-memcpy-residual-header5268 %6551 = phi i64 [ %.pre7307, %loop-memcpy-residual-header5268.post-loop-memcpy-expansion5264_crit_edge ], [ poison, %loop-memcpy-residual-header5268 ] %6552 = phi i1 [ false, %loop-memcpy-residual-header5268.post-loop-memcpy-expansion5264_crit_edge ], [ true, %loop-memcpy-residual-header5268 ] br i1 %6552, label %loop-memcpy-residual5267.preheader, label %Flow8401, !amdgpu.uniform !42 loop-memcpy-residual5267.preheader: ; preds = %Flow8400 %scevgep6617 = getelementptr i8, ptr %1595, i64 8 %scevgep6618 = getelementptr i8, ptr %scevgep6617, i64 %1474 %6553 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i906, 6 %scevgep6619 = getelementptr i8, ptr %scevgep6618, i64 %6553 br label %loop-memcpy-residual5267, !amdgpu.uniform !42 Flow8393: ; preds = %loop-memcpy-expansion5271 br label %Flow8394, !amdgpu.uniform !42 Flow8395: ; preds = %Flow8392, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i927 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i928, !amdgpu.uniform !42 loop-memcpy-residual-header5274: ; preds = %Flow8394 %6554 = icmp ne i64 %1632, 0 br i1 %6554, label %loop-memcpy-residual5273.preheader, label %Flow8392, !amdgpu.uniform !42 loop-memcpy-residual5273.preheader: ; preds = %loop-memcpy-residual-header5274 %umin6629 = call i64 @llvm.umin.i64(i64 %lsr.iv6627, i64 64) %6555 = lshr i64 %umin6629, 4 %6556 = shl nuw nsw i64 %6555, 4 %scevgep6632 = getelementptr i8, ptr addrspace(4) %lsr.iv6622, i64 %6556 %scevgep6625 = getelementptr i8, ptr %1631, i64 %1474 %scevgep6626 = getelementptr i8, ptr %scevgep6625, i64 %1601 %scevgep6630 = getelementptr i8, ptr %scevgep6626, i64 %6556 br label %loop-memcpy-residual5273, !amdgpu.uniform !42 Flow8374: ; preds = %loop-memcpy-expansion5277 %.lcssa9014 = phi i64 [ %1775, %loop-memcpy-expansion5277 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9014) br label %Flow8375, !amdgpu.uniform !42 Flow8376: ; preds = %Flow8373, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1034 call void @llvm.amdgcn.end.cf.i64(i64 %1763) br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1035, !amdgpu.uniform !42 loop-memcpy-residual-header5280: ; preds = %Flow8375 %6557 = icmp ne i64 %1765, 0 %6558 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6557) %6559 = extractvalue { i1, i64 } %6558, 0 %6560 = extractvalue { i1, i64 } %6558, 1 br i1 %6559, label %loop-memcpy-residual5279.preheader, label %Flow8373 loop-memcpy-residual5279.preheader: ; preds = %loop-memcpy-residual-header5280 %umin6656 = call i64 @llvm.umin.i64(i64 %lsr.iv6654, i64 64) %6561 = lshr i64 %umin6656, 4 %6562 = shl nuw nsw i64 %6561, 4 %scevgep6659 = getelementptr i8, ptr addrspace(4) %lsr.iv6649, i64 %6562 %scevgep6652 = getelementptr i8, ptr %1764, i64 %1474 %scevgep6653 = getelementptr i8, ptr %scevgep6652, i64 %1726 %scevgep6657 = getelementptr i8, ptr %scevgep6653, i64 %6562 br label %loop-memcpy-residual5279, !amdgpu.uniform !42 Flow8324: ; preds = %loop-memcpy-expansion5283 %.lcssa9201 = phi i64 [ %2205, %loop-memcpy-expansion5283 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9201) br label %Flow8325, !amdgpu.uniform !42 loop-memcpy-residual-header5286: ; preds = %Flow8325 %6563 = icmp eq i64 %2194, 0 %6564 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6563) %6565 = extractvalue { i1, i64 } %6564, 0 %6566 = extractvalue { i1, i64 } %6564, 1 br i1 %6565, label %loop-memcpy-residual-header5286.post-loop-memcpy-expansion5282_crit_edge, label %Flow8322 loop-memcpy-residual-header5286.post-loop-memcpy-expansion5282_crit_edge: ; preds = %loop-memcpy-residual-header5286 %.pre7313 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1335, 6 br label %Flow8322, !amdgpu.uniform !42 Flow8322: ; preds = %loop-memcpy-residual-header5286.post-loop-memcpy-expansion5282_crit_edge, %loop-memcpy-residual-header5286 %6567 = phi i64 [ %.pre7313, %loop-memcpy-residual-header5286.post-loop-memcpy-expansion5282_crit_edge ], [ poison, %loop-memcpy-residual-header5286 ] %6568 = call { i1, i64 } @llvm.amdgcn.else.i64.i64(i64 %6566) %6569 = extractvalue { i1, i64 } %6568, 0 %6570 = extractvalue { i1, i64 } %6568, 1 br i1 %6569, label %loop-memcpy-residual5285.preheader, label %Flow8323 loop-memcpy-residual5285.preheader: ; preds = %Flow8322 %scevgep7010 = getelementptr i8, ptr %2193, i64 8 %6571 = add i64 %1474, %2195 %scevgep7011 = getelementptr i8, ptr %scevgep7010, i64 %6571 %6572 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1335, 6 %scevgep7012 = getelementptr i8, ptr %scevgep7011, i64 %6572 %scevgep7014 = getelementptr i8, ptr addrspace(4) %cond3, i64 %2195 br label %loop-memcpy-residual5285, !amdgpu.uniform !42 Flow8315: ; preds = %loop-memcpy-expansion5289 %.lcssa9204 = phi i64 [ %2256, %loop-memcpy-expansion5289 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9204) br label %Flow8316, !amdgpu.uniform !42 Flow8317: ; preds = %Flow8314, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1356 call void @llvm.amdgcn.end.cf.i64(i64 %2244) br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1357, !amdgpu.uniform !42 loop-memcpy-residual-header5292: ; preds = %Flow8316 %6573 = icmp ne i64 %2246, 0 %6574 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6573) %6575 = extractvalue { i1, i64 } %6574, 0 %6576 = extractvalue { i1, i64 } %6574, 1 br i1 %6575, label %loop-memcpy-residual5291.preheader, label %Flow8314 loop-memcpy-residual5291.preheader: ; preds = %loop-memcpy-residual-header5292 %umin7024 = call i64 @llvm.umin.i64(i64 %lsr.iv7022, i64 64) %6577 = lshr i64 %umin7024, 4 %6578 = shl nuw nsw i64 %6577, 4 %scevgep7027 = getelementptr i8, ptr addrspace(4) %lsr.iv7017, i64 %6578 %scevgep7020 = getelementptr i8, ptr %2245, i64 %1474 %scevgep7021 = getelementptr i8, ptr %scevgep7020, i64 %2207 %scevgep7025 = getelementptr i8, ptr %scevgep7021, i64 %6578 br label %loop-memcpy-residual5291, !amdgpu.uniform !42 Flow8305: ; preds = %loop-memcpy-expansion5295 br label %Flow8306, !amdgpu.uniform !42 loop-memcpy-residual-header5298: ; preds = %Flow8306 br i1 %1139, label %loop-memcpy-residual-header5298.post-loop-memcpy-expansion5294_crit_edge, label %Flow8303, !amdgpu.uniform !42 loop-memcpy-residual-header5298.post-loop-memcpy-expansion5294_crit_edge: ; preds = %loop-memcpy-residual-header5298 %.pre7315 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1441, 6 br label %Flow8303, !amdgpu.uniform !42 Flow8303: ; preds = %loop-memcpy-residual-header5298.post-loop-memcpy-expansion5294_crit_edge, %loop-memcpy-residual-header5298 %6579 = phi i64 [ %.pre7315, %loop-memcpy-residual-header5298.post-loop-memcpy-expansion5294_crit_edge ], [ poison, %loop-memcpy-residual-header5298 ] %6580 = phi i1 [ false, %loop-memcpy-residual-header5298.post-loop-memcpy-expansion5294_crit_edge ], [ true, %loop-memcpy-residual-header5298 ] br i1 %6580, label %loop-memcpy-residual5297.preheader, label %Flow8304, !amdgpu.uniform !42 loop-memcpy-residual5297.preheader: ; preds = %Flow8303 %scevgep7033 = getelementptr i8, ptr %2327, i64 8 %scevgep7034 = getelementptr i8, ptr %scevgep7033, i64 %1474 %6581 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1441, 6 %scevgep7035 = getelementptr i8, ptr %scevgep7034, i64 %6581 br label %loop-memcpy-residual5297, !amdgpu.uniform !42 Flow8296: ; preds = %loop-memcpy-expansion5301 br label %Flow8297, !amdgpu.uniform !42 Flow8298: ; preds = %Flow8295, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1462 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1463, !amdgpu.uniform !42 loop-memcpy-residual-header5304: ; preds = %Flow8297 %6582 = icmp ne i64 %2364, 0 br i1 %6582, label %loop-memcpy-residual5303.preheader, label %Flow8295, !amdgpu.uniform !42 loop-memcpy-residual5303.preheader: ; preds = %loop-memcpy-residual-header5304 %umin7045 = call i64 @llvm.umin.i64(i64 %lsr.iv7043, i64 64) %6583 = lshr i64 %umin7045, 4 %6584 = shl nuw nsw i64 %6583, 4 %scevgep7048 = getelementptr i8, ptr addrspace(4) %lsr.iv7038, i64 %6584 %scevgep7041 = getelementptr i8, ptr %2363, i64 %1474 %scevgep7042 = getelementptr i8, ptr %scevgep7041, i64 %2333 %scevgep7046 = getelementptr i8, ptr %scevgep7042, i64 %6584 br label %loop-memcpy-residual5303, !amdgpu.uniform !42 Flow8277: ; preds = %loop-memcpy-expansion5307 %.lcssa9231 = phi i64 [ %2507, %loop-memcpy-expansion5307 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9231) br label %Flow8278, !amdgpu.uniform !42 Flow8279: ; preds = %Flow8276, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1569 call void @llvm.amdgcn.end.cf.i64(i64 %2495) br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1570, !amdgpu.uniform !42 loop-memcpy-residual-header5310: ; preds = %Flow8278 %6585 = icmp ne i64 %2497, 0 %6586 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6585) %6587 = extractvalue { i1, i64 } %6586, 0 %6588 = extractvalue { i1, i64 } %6586, 1 br i1 %6587, label %loop-memcpy-residual5309.preheader, label %Flow8276 loop-memcpy-residual5309.preheader: ; preds = %loop-memcpy-residual-header5310 %umin7070 = call i64 @llvm.umin.i64(i64 %lsr.iv7068, i64 64) %6589 = lshr i64 %umin7070, 4 %6590 = shl nuw nsw i64 %6589, 4 %scevgep7073 = getelementptr i8, ptr addrspace(4) %lsr.iv7063, i64 %6590 %scevgep7066 = getelementptr i8, ptr %2496, i64 %1474 %scevgep7067 = getelementptr i8, ptr %scevgep7066, i64 %2458 %scevgep7071 = getelementptr i8, ptr %scevgep7067, i64 %6590 br label %loop-memcpy-residual5309, !amdgpu.uniform !42 Flow8230: ; preds = %loop-memcpy-expansion5313 %.lcssa9057 = phi i64 [ %2911, %loop-memcpy-expansion5313 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9057) br label %Flow8231, !amdgpu.uniform !42 Flow8232: ; preds = %Flow8229, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1882 call void @llvm.amdgcn.end.cf.i64(i64 %2899) br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1883, !amdgpu.uniform !42 loop-memcpy-residual-header5316: ; preds = %Flow8231 %6591 = icmp ne i64 %2901, 0 %6592 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6591) %6593 = extractvalue { i1, i64 } %6592, 0 %6594 = extractvalue { i1, i64 } %6592, 1 br i1 %6593, label %loop-memcpy-residual5315.preheader, label %Flow8229 loop-memcpy-residual5315.preheader: ; preds = %loop-memcpy-residual-header5316 %umin6715 = call i64 @llvm.umin.i64(i64 %lsr.iv6713, i64 64) %6595 = lshr i64 %umin6715, 4 %6596 = shl nuw nsw i64 %6595, 4 %scevgep6718 = getelementptr i8, ptr addrspace(4) %lsr.iv6708, i64 %6596 %scevgep6711 = getelementptr i8, ptr %2900, i64 %1474 %scevgep6712 = getelementptr i8, ptr %scevgep6711, i64 %2862 %scevgep6716 = getelementptr i8, ptr %scevgep6712, i64 %6596 br label %loop-memcpy-residual5315, !amdgpu.uniform !42 Flow8220: ; preds = %loop-memcpy-expansion5319 br label %Flow8221, !amdgpu.uniform !42 loop-memcpy-residual-header5322: ; preds = %Flow8221 br i1 %1115, label %loop-memcpy-residual-header5322.post-loop-memcpy-expansion5318_crit_edge, label %Flow8218, !amdgpu.uniform !42 loop-memcpy-residual-header5322.post-loop-memcpy-expansion5318_crit_edge: ; preds = %loop-memcpy-residual-header5322 %.pre7323 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1967, 6 br label %Flow8218, !amdgpu.uniform !42 Flow8218: ; preds = %loop-memcpy-residual-header5322.post-loop-memcpy-expansion5318_crit_edge, %loop-memcpy-residual-header5322 %6597 = phi i64 [ %.pre7323, %loop-memcpy-residual-header5322.post-loop-memcpy-expansion5318_crit_edge ], [ poison, %loop-memcpy-residual-header5322 ] %6598 = phi i1 [ false, %loop-memcpy-residual-header5322.post-loop-memcpy-expansion5318_crit_edge ], [ true, %loop-memcpy-residual-header5322 ] br i1 %6598, label %loop-memcpy-residual5321.preheader, label %Flow8219, !amdgpu.uniform !42 loop-memcpy-residual5321.preheader: ; preds = %Flow8218 %scevgep6724 = getelementptr i8, ptr %2982, i64 8 %scevgep6725 = getelementptr i8, ptr %scevgep6724, i64 %1474 %6599 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i1967, 6 %scevgep6726 = getelementptr i8, ptr %scevgep6725, i64 %6599 br label %loop-memcpy-residual5321, !amdgpu.uniform !42 Flow8211: ; preds = %loop-memcpy-expansion5325 br label %Flow8212, !amdgpu.uniform !42 Flow8213: ; preds = %Flow8210, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i1988 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i1989, !amdgpu.uniform !42 loop-memcpy-residual-header5328: ; preds = %Flow8212 %6600 = icmp ne i64 %3019, 0 br i1 %6600, label %loop-memcpy-residual5327.preheader, label %Flow8210, !amdgpu.uniform !42 loop-memcpy-residual5327.preheader: ; preds = %loop-memcpy-residual-header5328 %umin6736 = call i64 @llvm.umin.i64(i64 %lsr.iv6734, i64 64) %6601 = lshr i64 %umin6736, 4 %6602 = shl nuw nsw i64 %6601, 4 %scevgep6739 = getelementptr i8, ptr addrspace(4) %lsr.iv6729, i64 %6602 %scevgep6732 = getelementptr i8, ptr %3018, i64 %1474 %scevgep6733 = getelementptr i8, ptr %scevgep6732, i64 %2988 %scevgep6737 = getelementptr i8, ptr %scevgep6733, i64 %6602 br label %loop-memcpy-residual5327, !amdgpu.uniform !42 Flow8192: ; preds = %loop-memcpy-expansion5331 %.lcssa9084 = phi i64 [ %3162, %loop-memcpy-expansion5331 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa9084) br label %Flow8193, !amdgpu.uniform !42 Flow8194: ; preds = %Flow8191, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i2095 call void @llvm.amdgcn.end.cf.i64(i64 %3150) br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2096, !amdgpu.uniform !42 loop-memcpy-residual-header5334: ; preds = %Flow8193 %6603 = icmp ne i64 %3152, 0 %6604 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6603) %6605 = extractvalue { i1, i64 } %6604, 0 %6606 = extractvalue { i1, i64 } %6604, 1 br i1 %6605, label %loop-memcpy-residual5333.preheader, label %Flow8191 loop-memcpy-residual5333.preheader: ; preds = %loop-memcpy-residual-header5334 %umin6761 = call i64 @llvm.umin.i64(i64 %lsr.iv6759, i64 64) %6607 = lshr i64 %umin6761, 4 %6608 = shl nuw nsw i64 %6607, 4 %scevgep6764 = getelementptr i8, ptr addrspace(4) %lsr.iv6754, i64 %6608 %scevgep6757 = getelementptr i8, ptr %3151, i64 %1474 %scevgep6758 = getelementptr i8, ptr %scevgep6757, i64 %3113 %scevgep6762 = getelementptr i8, ptr %scevgep6758, i64 %6608 br label %loop-memcpy-residual5333, !amdgpu.uniform !42 Flow8163: ; preds = %loop-memcpy-expansion5337 br label %Flow8164, !amdgpu.uniform !42 loop-memcpy-residual-header5340: ; preds = %Flow8164 br i1 %1119, label %loop-memcpy-residual-header5340.post-loop-memcpy-expansion5336_crit_edge, label %Flow8161, !amdgpu.uniform !42 loop-memcpy-residual-header5340.post-loop-memcpy-expansion5336_crit_edge: ; preds = %loop-memcpy-residual-header5340 %.pre7329 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i2287, 6 br label %Flow8161, !amdgpu.uniform !42 Flow8161: ; preds = %loop-memcpy-residual-header5340.post-loop-memcpy-expansion5336_crit_edge, %loop-memcpy-residual-header5340 %6609 = phi i64 [ %.pre7329, %loop-memcpy-residual-header5340.post-loop-memcpy-expansion5336_crit_edge ], [ poison, %loop-memcpy-residual-header5340 ] %6610 = phi i1 [ false, %loop-memcpy-residual-header5340.post-loop-memcpy-expansion5336_crit_edge ], [ true, %loop-memcpy-residual-header5340 ] br i1 %6610, label %loop-memcpy-residual5339.preheader, label %Flow8162, !amdgpu.uniform !42 loop-memcpy-residual5339.preheader: ; preds = %Flow8161 %scevgep6802 = getelementptr i8, ptr %3368, i64 8 %scevgep6803 = getelementptr i8, ptr %scevgep6802, i64 %1474 %6611 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i2287, 6 %scevgep6804 = getelementptr i8, ptr %scevgep6803, i64 %6611 br label %loop-memcpy-residual5339, !amdgpu.uniform !42 Flow8154: ; preds = %loop-memcpy-expansion5343 br label %Flow8155, !amdgpu.uniform !42 Flow8156: ; preds = %Flow8153, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i2308 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2309, !amdgpu.uniform !42 loop-memcpy-residual-header5346: ; preds = %Flow8155 %6612 = icmp ne i64 %3405, 0 br i1 %6612, label %loop-memcpy-residual5345.preheader, label %Flow8153, !amdgpu.uniform !42 loop-memcpy-residual5345.preheader: ; preds = %loop-memcpy-residual-header5346 %umin6814 = call i64 @llvm.umin.i64(i64 %lsr.iv6812, i64 64) %6613 = lshr i64 %umin6814, 4 %6614 = shl nuw nsw i64 %6613, 4 %scevgep6817 = getelementptr i8, ptr addrspace(4) %lsr.iv6807, i64 %6614 %scevgep6810 = getelementptr i8, ptr %3404, i64 %1474 %scevgep6811 = getelementptr i8, ptr %scevgep6810, i64 %3374 %scevgep6815 = getelementptr i8, ptr %scevgep6811, i64 %6614 br label %loop-memcpy-residual5345, !amdgpu.uniform !42 Flow8142: ; preds = %loop-memcpy-expansion5349 br label %Flow8143, !amdgpu.uniform !42 loop-memcpy-residual-header5352: ; preds = %Flow8143 br i1 %1135, label %loop-memcpy-residual-header5352.post-loop-memcpy-expansion5348_crit_edge, label %Flow8140, !amdgpu.uniform !42 loop-memcpy-residual-header5352.post-loop-memcpy-expansion5348_crit_edge: ; preds = %loop-memcpy-residual-header5352 %.pre7331 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i2393, 6 br label %Flow8140, !amdgpu.uniform !42 Flow8140: ; preds = %loop-memcpy-residual-header5352.post-loop-memcpy-expansion5348_crit_edge, %loop-memcpy-residual-header5352 %6615 = phi i64 [ %.pre7331, %loop-memcpy-residual-header5352.post-loop-memcpy-expansion5348_crit_edge ], [ poison, %loop-memcpy-residual-header5352 ] %6616 = phi i1 [ false, %loop-memcpy-residual-header5352.post-loop-memcpy-expansion5348_crit_edge ], [ true, %loop-memcpy-residual-header5352 ] br i1 %6616, label %loop-memcpy-residual5351.preheader, label %Flow8141, !amdgpu.uniform !42 loop-memcpy-residual5351.preheader: ; preds = %Flow8140 %scevgep6985 = getelementptr i8, ptr %3519, i64 24 %scevgep6986 = getelementptr i8, ptr %scevgep6985, i64 %1474 %6617 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i2393, 6 %scevgep6987 = getelementptr i8, ptr %scevgep6986, i64 %6617 br label %loop-memcpy-residual5351, !amdgpu.uniform !42 Flow8133: ; preds = %loop-memcpy-expansion5355 br label %Flow8134, !amdgpu.uniform !42 Flow8135: ; preds = %Flow8132, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i2414 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2415, !amdgpu.uniform !42 loop-memcpy-residual-header5358: ; preds = %Flow8134 %6618 = icmp ne i64 %3556, 0 br i1 %6618, label %loop-memcpy-residual5357.preheader, label %Flow8132, !amdgpu.uniform !42 loop-memcpy-residual5357.preheader: ; preds = %loop-memcpy-residual-header5358 %umin6997 = call i64 @llvm.umin.i64(i64 %lsr.iv6995, i64 64) %6619 = lshr i64 %umin6997, 4 %6620 = shl nuw nsw i64 %6619, 4 %scevgep7000 = getelementptr i8, ptr addrspace(4) %lsr.iv6990, i64 %6620 %scevgep6993 = getelementptr i8, ptr %3555, i64 %1474 %scevgep6994 = getelementptr i8, ptr %scevgep6993, i64 %3525 %scevgep6998 = getelementptr i8, ptr %scevgep6994, i64 %6620 br label %loop-memcpy-residual5357, !amdgpu.uniform !42 Flow8077: ; preds = %loop-memcpy-expansion5361 br label %Flow8078, !amdgpu.uniform !42 loop-memcpy-residual-header5364: ; preds = %Flow8078 br i1 %1131, label %loop-memcpy-residual-header5364.post-loop-memcpy-expansion5360_crit_edge, label %Flow8075, !amdgpu.uniform !42 loop-memcpy-residual-header5364.post-loop-memcpy-expansion5360_crit_edge: ; preds = %loop-memcpy-residual-header5364 %.pre7335 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i2658, 6 br label %Flow8075, !amdgpu.uniform !42 Flow8075: ; preds = %loop-memcpy-residual-header5364.post-loop-memcpy-expansion5360_crit_edge, %loop-memcpy-residual-header5364 %6621 = phi i64 [ %.pre7335, %loop-memcpy-residual-header5364.post-loop-memcpy-expansion5360_crit_edge ], [ poison, %loop-memcpy-residual-header5364 ] %6622 = phi i1 [ false, %loop-memcpy-residual-header5364.post-loop-memcpy-expansion5360_crit_edge ], [ true, %loop-memcpy-residual-header5364 ] br i1 %6622, label %loop-memcpy-residual5363.preheader, label %Flow8076, !amdgpu.uniform !42 loop-memcpy-residual5363.preheader: ; preds = %Flow8075 %scevgep6964 = getelementptr i8, ptr %3828, i64 8 %scevgep6965 = getelementptr i8, ptr %scevgep6964, i64 %1474 %6623 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i2658, 6 %scevgep6966 = getelementptr i8, ptr %scevgep6965, i64 %6623 br label %loop-memcpy-residual5363, !amdgpu.uniform !42 Flow8068: ; preds = %loop-memcpy-expansion5367 br label %Flow8069, !amdgpu.uniform !42 Flow8070: ; preds = %Flow8067, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i2679 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2680, !amdgpu.uniform !42 loop-memcpy-residual-header5370: ; preds = %Flow8069 %6624 = icmp ne i64 %3865, 0 br i1 %6624, label %loop-memcpy-residual5369.preheader, label %Flow8067, !amdgpu.uniform !42 loop-memcpy-residual5369.preheader: ; preds = %loop-memcpy-residual-header5370 %umin6976 = call i64 @llvm.umin.i64(i64 %lsr.iv6974, i64 64) %6625 = lshr i64 %umin6976, 4 %6626 = shl nuw nsw i64 %6625, 4 %scevgep6979 = getelementptr i8, ptr addrspace(4) %lsr.iv6969, i64 %6626 %scevgep6972 = getelementptr i8, ptr %3864, i64 %1474 %scevgep6973 = getelementptr i8, ptr %scevgep6972, i64 %3834 %scevgep6977 = getelementptr i8, ptr %scevgep6973, i64 %6626 br label %loop-memcpy-residual5369, !amdgpu.uniform !42 Flow7951: ; preds = %loop-memcpy-expansion5373 br label %Flow7952, !amdgpu.uniform !42 loop-memcpy-residual-header5376: ; preds = %Flow7952 br i1 %1123, label %loop-memcpy-residual-header5376.post-loop-memcpy-expansion5372_crit_edge, label %Flow7949, !amdgpu.uniform !42 loop-memcpy-residual-header5376.post-loop-memcpy-expansion5372_crit_edge: ; preds = %loop-memcpy-residual-header5376 %.pre7343 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i2933, 6 br label %Flow7949, !amdgpu.uniform !42 Flow7949: ; preds = %loop-memcpy-residual-header5376.post-loop-memcpy-expansion5372_crit_edge, %loop-memcpy-residual-header5376 %6627 = phi i64 [ %.pre7343, %loop-memcpy-residual-header5376.post-loop-memcpy-expansion5372_crit_edge ], [ poison, %loop-memcpy-residual-header5376 ] %6628 = phi i1 [ false, %loop-memcpy-residual-header5376.post-loop-memcpy-expansion5372_crit_edge ], [ true, %loop-memcpy-residual-header5376 ] br i1 %6628, label %loop-memcpy-residual5375.preheader, label %Flow7950, !amdgpu.uniform !42 loop-memcpy-residual5375.preheader: ; preds = %Flow7949 %scevgep6856 = getelementptr i8, ptr %4105, i64 8 %scevgep6857 = getelementptr i8, ptr %scevgep6856, i64 %1474 %6629 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i2933, 6 %scevgep6858 = getelementptr i8, ptr %scevgep6857, i64 %6629 br label %loop-memcpy-residual5375, !amdgpu.uniform !42 Flow7942: ; preds = %loop-memcpy-expansion5379 br label %Flow7943, !amdgpu.uniform !42 Flow7944: ; preds = %Flow7941, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i2954 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i2955, !amdgpu.uniform !42 loop-memcpy-residual-header5382: ; preds = %Flow7943 %6630 = icmp ne i64 %4142, 0 br i1 %6630, label %loop-memcpy-residual5381.preheader, label %Flow7941, !amdgpu.uniform !42 loop-memcpy-residual5381.preheader: ; preds = %loop-memcpy-residual-header5382 %umin6868 = call i64 @llvm.umin.i64(i64 %lsr.iv6866, i64 64) %6631 = lshr i64 %umin6868, 4 %6632 = shl nuw nsw i64 %6631, 4 %scevgep6871 = getelementptr i8, ptr addrspace(4) %lsr.iv6861, i64 %6632 %scevgep6864 = getelementptr i8, ptr %4141, i64 %1474 %scevgep6865 = getelementptr i8, ptr %scevgep6864, i64 %4111 %scevgep6869 = getelementptr i8, ptr %scevgep6865, i64 %6632 br label %loop-memcpy-residual5381, !amdgpu.uniform !42 Flow8012: ; preds = %loop-memcpy-expansion5385 br label %Flow8013, !amdgpu.uniform !42 loop-memcpy-residual-header5388: ; preds = %Flow8013 br i1 %1127, label %loop-memcpy-residual-header5388.post-loop-memcpy-expansion5384_crit_edge, label %Flow8010, !amdgpu.uniform !42 loop-memcpy-residual-header5388.post-loop-memcpy-expansion5384_crit_edge: ; preds = %loop-memcpy-residual-header5388 %.pre7339 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i3208, 6 br label %Flow8010, !amdgpu.uniform !42 Flow8010: ; preds = %loop-memcpy-residual-header5388.post-loop-memcpy-expansion5384_crit_edge, %loop-memcpy-residual-header5388 %6633 = phi i64 [ %.pre7339, %loop-memcpy-residual-header5388.post-loop-memcpy-expansion5384_crit_edge ], [ poison, %loop-memcpy-residual-header5388 ] %6634 = phi i1 [ false, %loop-memcpy-residual-header5388.post-loop-memcpy-expansion5384_crit_edge ], [ true, %loop-memcpy-residual-header5388 ] br i1 %6634, label %loop-memcpy-residual5387.preheader, label %Flow8011, !amdgpu.uniform !42 loop-memcpy-residual5387.preheader: ; preds = %Flow8010 %scevgep6910 = getelementptr i8, ptr %4389, i64 8 %scevgep6911 = getelementptr i8, ptr %scevgep6910, i64 %1474 %6635 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i3208, 6 %scevgep6912 = getelementptr i8, ptr %scevgep6911, i64 %6635 br label %loop-memcpy-residual5387, !amdgpu.uniform !42 Flow8003: ; preds = %loop-memcpy-expansion5391 br label %Flow8004, !amdgpu.uniform !42 Flow8005: ; preds = %Flow8002, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i3229 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3230, !amdgpu.uniform !42 loop-memcpy-residual-header5394: ; preds = %Flow8004 %6636 = icmp ne i64 %4426, 0 br i1 %6636, label %loop-memcpy-residual5393.preheader, label %Flow8002, !amdgpu.uniform !42 loop-memcpy-residual5393.preheader: ; preds = %loop-memcpy-residual-header5394 %umin6922 = call i64 @llvm.umin.i64(i64 %lsr.iv6920, i64 64) %6637 = lshr i64 %umin6922, 4 %6638 = shl nuw nsw i64 %6637, 4 %scevgep6925 = getelementptr i8, ptr addrspace(4) %lsr.iv6915, i64 %6638 %scevgep6918 = getelementptr i8, ptr %4425, i64 %1474 %scevgep6919 = getelementptr i8, ptr %scevgep6918, i64 %4395 %scevgep6923 = getelementptr i8, ptr %scevgep6919, i64 %6638 br label %loop-memcpy-residual5393, !amdgpu.uniform !42 Flow7910: ; preds = %loop-memcpy-expansion5397 br label %Flow7911, !amdgpu.uniform !42 loop-memcpy-residual-header5400: ; preds = %Flow7911 %6639 = icmp eq i64 %4503, 0 br i1 %6639, label %loop-memcpy-residual-header5400.post-loop-memcpy-expansion5396_crit_edge, label %Flow7908, !amdgpu.uniform !42 loop-memcpy-residual-header5400.post-loop-memcpy-expansion5396_crit_edge: ; preds = %loop-memcpy-residual-header5400 %.pre = shl nuw nsw i64 %sh_prom.i.i.i.i3270, 6 %.pre7281 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i3314, 6 br label %Flow7908, !amdgpu.uniform !42 Flow7908: ; preds = %loop-memcpy-residual-header5400.post-loop-memcpy-expansion5396_crit_edge, %loop-memcpy-residual-header5400 %6640 = phi i64 [ %.pre, %loop-memcpy-residual-header5400.post-loop-memcpy-expansion5396_crit_edge ], [ poison, %loop-memcpy-residual-header5400 ] %6641 = phi i64 [ %.pre7281, %loop-memcpy-residual-header5400.post-loop-memcpy-expansion5396_crit_edge ], [ poison, %loop-memcpy-residual-header5400 ] %6642 = phi i1 [ false, %loop-memcpy-residual-header5400.post-loop-memcpy-expansion5396_crit_edge ], [ true, %loop-memcpy-residual-header5400 ] br i1 %6642, label %loop-memcpy-residual5399.preheader, label %Flow7909, !amdgpu.uniform !42 loop-memcpy-residual5399.preheader: ; preds = %Flow7908 %6643 = shl nuw nsw i64 %sh_prom.i.i.i.i3270, 6 %6644 = add nuw nsw i64 %6643, 8 %scevgep6492 = getelementptr i8, ptr %4502, i64 %6644 %6645 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i3314, 6 %scevgep6493 = getelementptr i8, ptr %scevgep6492, i64 %6645 br label %loop-memcpy-residual5399, !amdgpu.uniform !42 Flow7901: ; preds = %loop-memcpy-expansion5403 br label %Flow7902, !amdgpu.uniform !42 Flow7903: ; preds = %Flow7900, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i3335 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3336, !amdgpu.uniform !42 loop-memcpy-residual-header5406: ; preds = %Flow7902 %6646 = icmp ne i64 %4540, 0 br i1 %6646, label %loop-memcpy-residual5405.preheader, label %Flow7900, !amdgpu.uniform !42 loop-memcpy-residual5405.preheader: ; preds = %loop-memcpy-residual-header5406 %umin6487 = call i64 @llvm.umin.i64(i64 %lsr.iv6485, i64 64) %6647 = lshr i64 %umin6487, 4 %6648 = shl nuw nsw i64 %6647, 4 %scevgep6490 = getelementptr i8, ptr addrspace(4) %lsr.iv6480, i64 %6648 %scevgep6483 = getelementptr i8, ptr %4539, i64 %4513 %scevgep6484 = getelementptr i8, ptr %scevgep6483, i64 %4514 %scevgep6488 = getelementptr i8, ptr %scevgep6484, i64 %6648 br label %loop-memcpy-residual5405, !amdgpu.uniform !42 Flow7849: ; preds = %loop-memcpy-expansion5409 br label %Flow7850, !amdgpu.uniform !42 loop-memcpy-residual-header5412: ; preds = %Flow7850 %6649 = icmp eq i64 %4856, 0 br i1 %6649, label %loop-memcpy-residual-header5412.post-loop-memcpy-expansion5408_crit_edge, label %Flow7847, !amdgpu.uniform !42 loop-memcpy-residual-header5412.post-loop-memcpy-expansion5408_crit_edge: ; preds = %loop-memcpy-residual-header5412 %.pre7285 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i3599, 6 br label %Flow7847, !amdgpu.uniform !42 Flow7847: ; preds = %loop-memcpy-residual-header5412.post-loop-memcpy-expansion5408_crit_edge, %loop-memcpy-residual-header5412 %6650 = phi i64 [ %.pre7285, %loop-memcpy-residual-header5412.post-loop-memcpy-expansion5408_crit_edge ], [ poison, %loop-memcpy-residual-header5412 ] %6651 = phi i1 [ false, %loop-memcpy-residual-header5412.post-loop-memcpy-expansion5408_crit_edge ], [ true, %loop-memcpy-residual-header5412 ] br i1 %6651, label %loop-memcpy-residual5411.preheader, label %Flow7848, !amdgpu.uniform !42 loop-memcpy-residual5411.preheader: ; preds = %Flow7847 %6652 = add nuw nsw i64 %4513, 8 %scevgep6444 = getelementptr i8, ptr %4855, i64 %6652 %6653 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i3599, 6 %scevgep6445 = getelementptr i8, ptr %scevgep6444, i64 %6653 br label %loop-memcpy-residual5411, !amdgpu.uniform !42 Flow7840: ; preds = %loop-memcpy-expansion5415 br label %Flow7841, !amdgpu.uniform !42 Flow7842: ; preds = %Flow7839, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i3620 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3621, !amdgpu.uniform !42 loop-memcpy-residual-header5418: ; preds = %Flow7841 %6654 = icmp ne i64 %4891, 0 br i1 %6654, label %loop-memcpy-residual5417.preheader, label %Flow7839, !amdgpu.uniform !42 loop-memcpy-residual5417.preheader: ; preds = %loop-memcpy-residual-header5418 %umin6439 = call i64 @llvm.umin.i64(i64 %lsr.iv6437, i64 64) %scevgep6442 = getelementptr i8, ptr addrspace(4) %lsr.iv6432, i64 %umin6439 %scevgep6435 = getelementptr i8, ptr %4890, i64 %4513 %scevgep6436 = getelementptr i8, ptr %scevgep6435, i64 %4865 %scevgep6440 = getelementptr i8, ptr %scevgep6436, i64 %umin6439 br label %loop-memcpy-residual5417, !amdgpu.uniform !42 Flow7830: ; preds = %loop-memcpy-expansion5421 br label %Flow7831, !amdgpu.uniform !42 loop-memcpy-residual-header5424: ; preds = %Flow7831 %6655 = icmp eq i64 %4966, 0 br i1 %6655, label %loop-memcpy-residual-header5424.post-loop-memcpy-expansion5420_crit_edge, label %Flow7828, !amdgpu.uniform !42 loop-memcpy-residual-header5424.post-loop-memcpy-expansion5420_crit_edge: ; preds = %loop-memcpy-residual-header5424 %.pre7287 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i3705, 6 br label %Flow7828, !amdgpu.uniform !42 Flow7828: ; preds = %loop-memcpy-residual-header5424.post-loop-memcpy-expansion5420_crit_edge, %loop-memcpy-residual-header5424 %6656 = phi i64 [ %.pre7287, %loop-memcpy-residual-header5424.post-loop-memcpy-expansion5420_crit_edge ], [ poison, %loop-memcpy-residual-header5424 ] %6657 = phi i1 [ false, %loop-memcpy-residual-header5424.post-loop-memcpy-expansion5420_crit_edge ], [ true, %loop-memcpy-residual-header5424 ] br i1 %6657, label %loop-memcpy-residual5423.preheader, label %Flow7829, !amdgpu.uniform !42 loop-memcpy-residual5423.preheader: ; preds = %Flow7828 %6658 = add nuw nsw i64 %4513, 8 %scevgep6425 = getelementptr i8, ptr %4965, i64 %6658 %6659 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i3705, 6 %scevgep6426 = getelementptr i8, ptr %scevgep6425, i64 %6659 br label %loop-memcpy-residual5423, !amdgpu.uniform !42 Flow7821: ; preds = %loop-memcpy-expansion5427 br label %Flow7822, !amdgpu.uniform !42 Flow7823: ; preds = %Flow7820, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i3726 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i3727, !amdgpu.uniform !42 loop-memcpy-residual-header5430: ; preds = %Flow7822 %6660 = icmp ne i64 %5001, 0 br i1 %6660, label %loop-memcpy-residual5429.preheader, label %Flow7820, !amdgpu.uniform !42 loop-memcpy-residual5429.preheader: ; preds = %loop-memcpy-residual-header5430 %umin6420 = call i64 @llvm.umin.i64(i64 %lsr.iv6418, i64 64) %6661 = lshr i64 %umin6420, 4 %6662 = shl nuw nsw i64 %6661, 4 %scevgep6423 = getelementptr i8, ptr addrspace(4) %lsr.iv6413, i64 %6662 %scevgep6416 = getelementptr i8, ptr %5000, i64 %4513 %scevgep6417 = getelementptr i8, ptr %scevgep6416, i64 %4975 %scevgep6421 = getelementptr i8, ptr %scevgep6417, i64 %6662 br label %loop-memcpy-residual5429, !amdgpu.uniform !42 Flow7757: ; preds = %loop-memcpy-expansion5433 br label %Flow7758, !amdgpu.uniform !42 loop-memcpy-residual-header5436: ; preds = %Flow7758 %6663 = icmp eq i64 %5417, 0 br i1 %6663, label %loop-memcpy-residual-header5436.post-loop-memcpy-expansion5432_crit_edge, label %Flow7755, !amdgpu.uniform !42 loop-memcpy-residual-header5436.post-loop-memcpy-expansion5432_crit_edge: ; preds = %loop-memcpy-residual-header5436 %.pre7291 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i4089, 6 br label %Flow7755, !amdgpu.uniform !42 Flow7755: ; preds = %loop-memcpy-residual-header5436.post-loop-memcpy-expansion5432_crit_edge, %loop-memcpy-residual-header5436 %6664 = phi i64 [ %.pre7291, %loop-memcpy-residual-header5436.post-loop-memcpy-expansion5432_crit_edge ], [ poison, %loop-memcpy-residual-header5436 ] %6665 = phi i1 [ false, %loop-memcpy-residual-header5436.post-loop-memcpy-expansion5432_crit_edge ], [ true, %loop-memcpy-residual-header5436 ] br i1 %6665, label %loop-memcpy-residual5435.preheader, label %Flow7756, !amdgpu.uniform !42 loop-memcpy-residual5435.preheader: ; preds = %Flow7755 %6666 = add nuw nsw i64 %4513, 8 %scevgep6377 = getelementptr i8, ptr %5416, i64 %6666 %6667 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i4089, 6 %scevgep6378 = getelementptr i8, ptr %scevgep6377, i64 %6667 br label %loop-memcpy-residual5435, !amdgpu.uniform !42 Flow7748: ; preds = %loop-memcpy-expansion5439 br label %Flow7749, !amdgpu.uniform !42 Flow7750: ; preds = %Flow7747, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i4110 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4111, !amdgpu.uniform !42 loop-memcpy-residual-header5442: ; preds = %Flow7749 %6668 = icmp ne i64 %5452, 0 br i1 %6668, label %loop-memcpy-residual5441.preheader, label %Flow7747, !amdgpu.uniform !42 loop-memcpy-residual5441.preheader: ; preds = %loop-memcpy-residual-header5442 %umin6372 = call i64 @llvm.umin.i64(i64 %lsr.iv6370, i64 64) %6669 = lshr i64 %umin6372, 4 %6670 = shl nuw nsw i64 %6669, 4 %scevgep6375 = getelementptr i8, ptr addrspace(4) %lsr.iv6365, i64 %6670 %scevgep6368 = getelementptr i8, ptr %5451, i64 %4513 %scevgep6369 = getelementptr i8, ptr %scevgep6368, i64 %5426 %scevgep6373 = getelementptr i8, ptr %scevgep6369, i64 %6670 br label %loop-memcpy-residual5441, !amdgpu.uniform !42 Flow7684: ; preds = %loop-memcpy-expansion5445 br label %Flow7685, !amdgpu.uniform !42 loop-memcpy-residual-header5448: ; preds = %Flow7685 %6671 = icmp eq i64 %5871, 0 br i1 %6671, label %loop-memcpy-residual-header5448.post-loop-memcpy-expansion5444_crit_edge, label %Flow7682, !amdgpu.uniform !42 loop-memcpy-residual-header5448.post-loop-memcpy-expansion5444_crit_edge: ; preds = %loop-memcpy-residual-header5448 %.pre7295 = shl nuw nsw i64 %sh_prom.i.i.i.i3270, 6 %.pre7297 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i4473, 6 br label %Flow7682, !amdgpu.uniform !42 Flow7682: ; preds = %loop-memcpy-residual-header5448.post-loop-memcpy-expansion5444_crit_edge, %loop-memcpy-residual-header5448 %6672 = phi i64 [ %.pre7295, %loop-memcpy-residual-header5448.post-loop-memcpy-expansion5444_crit_edge ], [ poison, %loop-memcpy-residual-header5448 ] %6673 = phi i64 [ %.pre7297, %loop-memcpy-residual-header5448.post-loop-memcpy-expansion5444_crit_edge ], [ poison, %loop-memcpy-residual-header5448 ] %6674 = phi i1 [ false, %loop-memcpy-residual-header5448.post-loop-memcpy-expansion5444_crit_edge ], [ true, %loop-memcpy-residual-header5448 ] br i1 %6674, label %loop-memcpy-residual5447.preheader, label %Flow7683, !amdgpu.uniform !42 loop-memcpy-residual5447.preheader: ; preds = %Flow7682 %6675 = shl nuw nsw i64 %sh_prom.i.i.i.i3270, 6 %6676 = add nuw nsw i64 %6675, 8 %scevgep6561 = getelementptr i8, ptr %5870, i64 %6676 %6677 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i4473, 6 %scevgep6562 = getelementptr i8, ptr %scevgep6561, i64 %6677 br label %loop-memcpy-residual5447, !amdgpu.uniform !42 Flow7675: ; preds = %loop-memcpy-expansion5451 br label %Flow7676, !amdgpu.uniform !42 Flow7677: ; preds = %Flow7674, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i4494 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4495, !amdgpu.uniform !42 loop-memcpy-residual-header5454: ; preds = %Flow7676 %6678 = icmp ne i64 %5908, 0 br i1 %6678, label %loop-memcpy-residual5453.preheader, label %Flow7674, !amdgpu.uniform !42 loop-memcpy-residual5453.preheader: ; preds = %loop-memcpy-residual-header5454 %umin6556 = call i64 @llvm.umin.i64(i64 %lsr.iv6554, i64 64) %6679 = lshr i64 %umin6556, 4 %6680 = shl nuw nsw i64 %6679, 4 %scevgep6559 = getelementptr i8, ptr addrspace(4) %lsr.iv6549, i64 %6680 %scevgep6552 = getelementptr i8, ptr %5907, i64 %5881 %scevgep6553 = getelementptr i8, ptr %scevgep6552, i64 %5882 %scevgep6557 = getelementptr i8, ptr %scevgep6553, i64 %6680 br label %loop-memcpy-residual5453, !amdgpu.uniform !42 Flow7664: ; preds = %loop-memcpy-expansion5457 br label %Flow7665, !amdgpu.uniform !42 loop-memcpy-residual-header5460: ; preds = %Flow7665 %6681 = icmp eq i64 %5987, 0 br i1 %6681, label %loop-memcpy-residual-header5460.post-loop-memcpy-expansion5456_crit_edge, label %Flow7662, !amdgpu.uniform !42 loop-memcpy-residual-header5460.post-loop-memcpy-expansion5456_crit_edge: ; preds = %loop-memcpy-residual-header5460 %.pre7299 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i4579, 6 br label %Flow7662, !amdgpu.uniform !42 Flow7662: ; preds = %loop-memcpy-residual-header5460.post-loop-memcpy-expansion5456_crit_edge, %loop-memcpy-residual-header5460 %6682 = phi i64 [ %.pre7299, %loop-memcpy-residual-header5460.post-loop-memcpy-expansion5456_crit_edge ], [ poison, %loop-memcpy-residual-header5460 ] %6683 = phi i1 [ false, %loop-memcpy-residual-header5460.post-loop-memcpy-expansion5456_crit_edge ], [ true, %loop-memcpy-residual-header5460 ] br i1 %6683, label %loop-memcpy-residual5459.preheader, label %Flow7663, !amdgpu.uniform !42 loop-memcpy-residual5459.preheader: ; preds = %Flow7662 %6684 = add nuw nsw i64 %5881, 24 %scevgep6542 = getelementptr i8, ptr %5986, i64 %6684 %6685 = shl nuw nsw i64 %idxprom.i19.i.i.i.i.i4579, 6 %scevgep6543 = getelementptr i8, ptr %scevgep6542, i64 %6685 br label %loop-memcpy-residual5459, !amdgpu.uniform !42 Flow7655: ; preds = %loop-memcpy-expansion5463 br label %Flow7656, !amdgpu.uniform !42 Flow7657: ; preds = %Flow7654, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i.i4600 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i.i4601, !amdgpu.uniform !42 loop-memcpy-residual-header5466: ; preds = %Flow7656 %6686 = icmp ne i64 %6022, 0 br i1 %6686, label %loop-memcpy-residual5465.preheader, label %Flow7654, !amdgpu.uniform !42 loop-memcpy-residual5465.preheader: ; preds = %loop-memcpy-residual-header5466 %umin6537 = call i64 @llvm.umin.i64(i64 %lsr.iv6535, i64 64) %6687 = lshr i64 %umin6537, 4 %6688 = shl nuw nsw i64 %6687, 4 %scevgep6540 = getelementptr i8, ptr addrspace(4) %lsr.iv6530, i64 %6688 %scevgep6533 = getelementptr i8, ptr %6021, i64 %5881 %scevgep6534 = getelementptr i8, ptr %scevgep6533, i64 %5996 %scevgep6538 = getelementptr i8, ptr %scevgep6534, i64 %6688 br label %loop-memcpy-residual5465, !amdgpu.uniform !42 ComputeLoop: ; preds = %for.cond.i.i1.i, %ComputeLoop %Accumulator = phi i32 [ %6693, %ComputeLoop ], [ 0, %for.cond.i.i1.i ] %OldValuePhi = phi i32 [ %6692, %ComputeLoop ], [ poison, %for.cond.i.i1.i ] %ActiveBits = phi i64 [ %6696, %ComputeLoop ], [ %21, %for.cond.i.i1.i ] %6689 = call i64 @llvm.cttz.i64(i64 %ActiveBits, i1 true) %6690 = trunc i64 %6689 to i32 %6691 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i, i32 %6690) %6692 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator, i32 %6690, i32 %OldValuePhi) %6693 = or i32 %Accumulator, %6691 %6694 = shl i64 1, %6689 %6695 = xor i64 %6694, -1 %6696 = and i64 %ActiveBits, %6695 %6697 = icmp eq i64 %6696, 0 br i1 %6697, label %ComputeEnd, label %ComputeLoop, !amdgpu.uniform !42 ComputeEnd: ; preds = %ComputeLoop %.lcssa9359 = phi i32 [ %6692, %ComputeLoop ] %.lcssa9358 = phi i32 [ %6693, %ComputeLoop ] %div8.i.i.i.i.i = lshr i32 %spec.store.select.i.i.i, 5 %idxprom.i.i.i.i.i = zext nneg i32 %div8.i.i.i.i.i to i64 %6698 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i %6699 = trunc i64 %21 to i32 %6700 = lshr i64 %21, 32 %6701 = trunc i64 %6700 to i32 %6702 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %6699, i32 0) %6703 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %6701, i32 %6702) %6704 = icmp eq i32 %6703, 0 %6705 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6704) %6706 = extractvalue { i1, i64 } %6705, 0 %6707 = extractvalue { i1, i64 } %6705, 1 br i1 %6706, label %22, label %24 Flow8605: ; preds = %42, %if.then.i.i.i.i2 %6708 = phi i1 [ false, %42 ], [ true, %if.then.i.i.i.i2 ] br i1 %6708, label %if.end14.i.i.i, label %Flow8606, !amdgpu.uniform !42 ComputeLoop5468: ; preds = %if.then12.i.i.i, %ComputeLoop5468 %Accumulator5470 = phi i32 [ %6712, %ComputeLoop5468 ], [ -1, %if.then12.i.i.i ] %ActiveBits5471 = phi i64 [ %6715, %ComputeLoop5468 ], [ %39, %if.then12.i.i.i ] %6709 = call i64 @llvm.cttz.i64(i64 %ActiveBits5471, i1 true) %6710 = trunc i64 %6709 to i32 %6711 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i, i32 %6710) %6712 = and i32 %Accumulator5470, %6711 %6713 = shl i64 1, %6709 %6714 = xor i64 %6713, -1 %6715 = and i64 %ActiveBits5471, %6714 %6716 = icmp eq i64 %6715, 0 br i1 %6716, label %ComputeEnd5469, label %ComputeLoop5468, !amdgpu.uniform !42 ComputeEnd5469: ; preds = %ComputeLoop5468 %.lcssa9360 = phi i32 [ %6712, %ComputeLoop5468 ] %6717 = trunc i64 %39 to i32 %6718 = lshr i64 %39, 32 %6719 = trunc i64 %6718 to i32 %6720 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %6717, i32 0) %6721 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %6719, i32 %6720) %6722 = icmp eq i32 %6721, 0 %6723 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6722) %6724 = extractvalue { i1, i64 } %6723, 0 %6725 = extractvalue { i1, i64 } %6723, 1 br i1 %6724, label %40, label %42 ComputeLoop5472: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit, %ComputeLoop5472 %Accumulator5474 = phi i32 [ %6729, %ComputeLoop5472 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit ] %ActiveBits5475 = phi i64 [ %6732, %ComputeLoop5472 ], [ %146, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit ] %6726 = call i64 @llvm.cttz.i64(i64 %ActiveBits5475, i1 true) %6727 = trunc i64 %6726 to i32 %6728 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i, i32 %6727) %6729 = and i32 %Accumulator5474, %6728 %6730 = shl i64 1, %6726 %6731 = xor i64 %6730, -1 %6732 = and i64 %ActiveBits5475, %6731 %6733 = icmp eq i64 %6732, 0 br i1 %6733, label %ComputeEnd5473, label %ComputeLoop5472, !amdgpu.uniform !42 ComputeEnd5473: ; preds = %ComputeLoop5472 %.lcssa9350 = phi i32 [ %6729, %ComputeLoop5472 ] %6734 = trunc i64 %146 to i32 %6735 = lshr i64 %146, 32 %6736 = trunc i64 %6735 to i32 %6737 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %6734, i32 0) %6738 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %6736, i32 %6737) %6739 = icmp eq i32 %6738, 0 %6740 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6739) %6741 = extractvalue { i1, i64 } %6740, 0 %6742 = extractvalue { i1, i64 } %6740, 1 br i1 %6741, label %147, label %150 ComputeLoop5476: ; preds = %for.cond.i.i1.i13, %ComputeLoop5476 %Accumulator5478 = phi i32 [ %6747, %ComputeLoop5476 ], [ 0, %for.cond.i.i1.i13 ] %OldValuePhi5479 = phi i32 [ %6746, %ComputeLoop5476 ], [ poison, %for.cond.i.i1.i13 ] %ActiveBits5480 = phi i64 [ %6750, %ComputeLoop5476 ], [ %159, %for.cond.i.i1.i13 ] %6743 = call i64 @llvm.cttz.i64(i64 %ActiveBits5480, i1 true) %6744 = trunc i64 %6743 to i32 %6745 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i25, i32 %6744) %6746 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator5478, i32 %6744, i32 %OldValuePhi5479) %6747 = or i32 %Accumulator5478, %6745 %6748 = shl i64 1, %6743 %6749 = xor i64 %6748, -1 %6750 = and i64 %ActiveBits5480, %6749 %6751 = icmp eq i64 %6750, 0 br i1 %6751, label %ComputeEnd5477, label %ComputeLoop5476, !amdgpu.uniform !42 ComputeEnd5477: ; preds = %ComputeLoop5476 %.lcssa9345 = phi i32 [ %6746, %ComputeLoop5476 ] %.lcssa9344 = phi i32 [ %6747, %ComputeLoop5476 ] %div8.i.i.i.i.i21 = lshr i32 %spec.store.select.i.i.i20, 5 %idxprom.i.i.i.i.i22 = zext nneg i32 %div8.i.i.i.i.i21 to i64 %6752 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i22 %6753 = trunc i64 %159 to i32 %6754 = lshr i64 %159, 32 %6755 = trunc i64 %6754 to i32 %6756 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %6753, i32 0) %6757 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %6755, i32 %6756) %6758 = icmp eq i32 %6757, 0 %6759 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6758) %6760 = extractvalue { i1, i64 } %6759, 0 %6761 = extractvalue { i1, i64 } %6759, 1 br i1 %6760, label %160, label %162 Flow8586: ; preds = %180, %if.then.i.i.i.i31 %6762 = phi i1 [ false, %180 ], [ true, %if.then.i.i.i.i31 ] br i1 %6762, label %if.end14.i.i.i101, label %Flow8587, !amdgpu.uniform !42 ComputeLoop5481: ; preds = %if.then12.i.i.i36, %ComputeLoop5481 %Accumulator5483 = phi i32 [ %6766, %ComputeLoop5481 ], [ -1, %if.then12.i.i.i36 ] %ActiveBits5484 = phi i64 [ %6769, %ComputeLoop5481 ], [ %177, %if.then12.i.i.i36 ] %6763 = call i64 @llvm.cttz.i64(i64 %ActiveBits5484, i1 true) %6764 = trunc i64 %6763 to i32 %6765 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i42, i32 %6764) %6766 = and i32 %Accumulator5483, %6765 %6767 = shl i64 1, %6763 %6768 = xor i64 %6767, -1 %6769 = and i64 %ActiveBits5484, %6768 %6770 = icmp eq i64 %6769, 0 br i1 %6770, label %ComputeEnd5482, label %ComputeLoop5481, !amdgpu.uniform !42 ComputeEnd5482: ; preds = %ComputeLoop5481 %.lcssa9346 = phi i32 [ %6766, %ComputeLoop5481 ] %6771 = trunc i64 %177 to i32 %6772 = lshr i64 %177, 32 %6773 = trunc i64 %6772 to i32 %6774 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %6771, i32 0) %6775 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %6773, i32 %6774) %6776 = icmp eq i32 %6775, 0 %6777 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6776) %6778 = extractvalue { i1, i64 } %6777, 0 %6779 = extractvalue { i1, i64 } %6777, 1 br i1 %6778, label %178, label %180 ComputeLoop5485: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit109, %ComputeLoop5485 %Accumulator5487 = phi i32 [ %6783, %ComputeLoop5485 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit109 ] %ActiveBits5488 = phi i64 [ %6786, %ComputeLoop5485 ], [ %257, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit109 ] %6780 = call i64 @llvm.cttz.i64(i64 %ActiveBits5488, i1 true) %6781 = trunc i64 %6780 to i32 %6782 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i100, i32 %6781) %6783 = and i32 %Accumulator5487, %6782 %6784 = shl i64 1, %6780 %6785 = xor i64 %6784, -1 %6786 = and i64 %ActiveBits5488, %6785 %6787 = icmp eq i64 %6786, 0 br i1 %6787, label %ComputeEnd5486, label %ComputeLoop5485, !amdgpu.uniform !42 ComputeEnd5486: ; preds = %ComputeLoop5485 %.lcssa9340 = phi i32 [ %6783, %ComputeLoop5485 ] %6788 = trunc i64 %257 to i32 %6789 = lshr i64 %257, 32 %6790 = trunc i64 %6789 to i32 %6791 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %6788, i32 0) %6792 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %6790, i32 %6791) %6793 = icmp eq i32 %6792, 0 %6794 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6793) %6795 = extractvalue { i1, i64 } %6794, 0 %6796 = extractvalue { i1, i64 } %6794, 1 br i1 %6795, label %258, label %261 ComputeLoop5489: ; preds = %for.cond.i.i1.i119, %ComputeLoop5489 %Accumulator5491 = phi i32 [ %6801, %ComputeLoop5489 ], [ 0, %for.cond.i.i1.i119 ] %OldValuePhi5492 = phi i32 [ %6800, %ComputeLoop5489 ], [ poison, %for.cond.i.i1.i119 ] %ActiveBits5493 = phi i64 [ %6804, %ComputeLoop5489 ], [ %273, %for.cond.i.i1.i119 ] %6797 = call i64 @llvm.cttz.i64(i64 %ActiveBits5493, i1 true) %6798 = trunc i64 %6797 to i32 %6799 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i131, i32 %6798) %6800 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator5491, i32 %6798, i32 %OldValuePhi5492) %6801 = or i32 %Accumulator5491, %6799 %6802 = shl i64 1, %6797 %6803 = xor i64 %6802, -1 %6804 = and i64 %ActiveBits5493, %6803 %6805 = icmp eq i64 %6804, 0 br i1 %6805, label %ComputeEnd5490, label %ComputeLoop5489, !amdgpu.uniform !42 ComputeEnd5490: ; preds = %ComputeLoop5489 %.lcssa9334 = phi i32 [ %6800, %ComputeLoop5489 ] %.lcssa9333 = phi i32 [ %6801, %ComputeLoop5489 ] %div8.i.i.i.i.i127 = lshr i32 %spec.store.select.i.i.i126, 5 %idxprom.i.i.i.i.i128 = zext nneg i32 %div8.i.i.i.i.i127 to i64 %6806 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i128 %6807 = trunc i64 %273 to i32 %6808 = lshr i64 %273, 32 %6809 = trunc i64 %6808 to i32 %6810 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %6807, i32 0) %6811 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %6809, i32 %6810) %6812 = icmp eq i32 %6811, 0 %6813 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6812) %6814 = extractvalue { i1, i64 } %6813, 0 %6815 = extractvalue { i1, i64 } %6813, 1 br i1 %6814, label %274, label %276 Flow8567: ; preds = %294, %if.then.i.i.i.i137 %6816 = phi i1 [ false, %294 ], [ true, %if.then.i.i.i.i137 ] br i1 %6816, label %if.end14.i.i.i207, label %Flow8568, !amdgpu.uniform !42 ComputeLoop5494: ; preds = %if.then12.i.i.i142, %ComputeLoop5494 %Accumulator5496 = phi i32 [ %6820, %ComputeLoop5494 ], [ -1, %if.then12.i.i.i142 ] %ActiveBits5497 = phi i64 [ %6823, %ComputeLoop5494 ], [ %291, %if.then12.i.i.i142 ] %6817 = call i64 @llvm.cttz.i64(i64 %ActiveBits5497, i1 true) %6818 = trunc i64 %6817 to i32 %6819 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i148, i32 %6818) %6820 = and i32 %Accumulator5496, %6819 %6821 = shl i64 1, %6817 %6822 = xor i64 %6821, -1 %6823 = and i64 %ActiveBits5497, %6822 %6824 = icmp eq i64 %6823, 0 br i1 %6824, label %ComputeEnd5495, label %ComputeLoop5494, !amdgpu.uniform !42 ComputeEnd5495: ; preds = %ComputeLoop5494 %.lcssa9335 = phi i32 [ %6820, %ComputeLoop5494 ] %6825 = trunc i64 %291 to i32 %6826 = lshr i64 %291, 32 %6827 = trunc i64 %6826 to i32 %6828 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %6825, i32 0) %6829 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %6827, i32 %6828) %6830 = icmp eq i32 %6829, 0 %6831 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6830) %6832 = extractvalue { i1, i64 } %6831, 0 %6833 = extractvalue { i1, i64 } %6831, 1 br i1 %6832, label %292, label %294 ComputeLoop5498: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit215, %ComputeLoop5498 %Accumulator5500 = phi i32 [ %6837, %ComputeLoop5498 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit215 ] %ActiveBits5501 = phi i64 [ %6840, %ComputeLoop5498 ], [ %396, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit215 ] %6834 = call i64 @llvm.cttz.i64(i64 %ActiveBits5501, i1 true) %6835 = trunc i64 %6834 to i32 %6836 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i206, i32 %6835) %6837 = and i32 %Accumulator5500, %6836 %6838 = shl i64 1, %6834 %6839 = xor i64 %6838, -1 %6840 = and i64 %ActiveBits5501, %6839 %6841 = icmp eq i64 %6840, 0 br i1 %6841, label %ComputeEnd5499, label %ComputeLoop5498, !amdgpu.uniform !42 ComputeEnd5499: ; preds = %ComputeLoop5498 %.lcssa9325 = phi i32 [ %6837, %ComputeLoop5498 ] %6842 = trunc i64 %396 to i32 %6843 = lshr i64 %396, 32 %6844 = trunc i64 %6843 to i32 %6845 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %6842, i32 0) %6846 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %6844, i32 %6845) %6847 = icmp eq i32 %6846, 0 %6848 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6847) %6849 = extractvalue { i1, i64 } %6848, 0 %6850 = extractvalue { i1, i64 } %6848, 1 br i1 %6849, label %397, label %400 ComputeLoop5502: ; preds = %for.cond.i.i1.i224, %ComputeLoop5502 %Accumulator5504 = phi i32 [ %6855, %ComputeLoop5502 ], [ 0, %for.cond.i.i1.i224 ] %OldValuePhi5505 = phi i32 [ %6854, %ComputeLoop5502 ], [ poison, %for.cond.i.i1.i224 ] %ActiveBits5506 = phi i64 [ %6858, %ComputeLoop5502 ], [ %409, %for.cond.i.i1.i224 ] %6851 = call i64 @llvm.cttz.i64(i64 %ActiveBits5506, i1 true) %6852 = trunc i64 %6851 to i32 %6853 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i236, i32 %6852) %6854 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator5504, i32 %6852, i32 %OldValuePhi5505) %6855 = or i32 %Accumulator5504, %6853 %6856 = shl i64 1, %6851 %6857 = xor i64 %6856, -1 %6858 = and i64 %ActiveBits5506, %6857 %6859 = icmp eq i64 %6858, 0 br i1 %6859, label %ComputeEnd5503, label %ComputeLoop5502, !amdgpu.uniform !42 ComputeEnd5503: ; preds = %ComputeLoop5502 %.lcssa9320 = phi i32 [ %6854, %ComputeLoop5502 ] %.lcssa9319 = phi i32 [ %6855, %ComputeLoop5502 ] %div8.i.i.i.i.i232 = lshr i32 %spec.store.select.i.i.i231, 5 %idxprom.i.i.i.i.i233 = zext nneg i32 %div8.i.i.i.i.i232 to i64 %6860 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i233 %6861 = trunc i64 %409 to i32 %6862 = lshr i64 %409, 32 %6863 = trunc i64 %6862 to i32 %6864 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %6861, i32 0) %6865 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %6863, i32 %6864) %6866 = icmp eq i32 %6865, 0 %6867 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6866) %6868 = extractvalue { i1, i64 } %6867, 0 %6869 = extractvalue { i1, i64 } %6867, 1 br i1 %6868, label %410, label %412 Flow8548: ; preds = %430, %if.then.i.i.i.i242 %6870 = phi i1 [ false, %430 ], [ true, %if.then.i.i.i.i242 ] br i1 %6870, label %if.end14.i.i.i312, label %Flow8549, !amdgpu.uniform !42 ComputeLoop5507: ; preds = %if.then12.i.i.i247, %ComputeLoop5507 %Accumulator5509 = phi i32 [ %6874, %ComputeLoop5507 ], [ -1, %if.then12.i.i.i247 ] %ActiveBits5510 = phi i64 [ %6877, %ComputeLoop5507 ], [ %427, %if.then12.i.i.i247 ] %6871 = call i64 @llvm.cttz.i64(i64 %ActiveBits5510, i1 true) %6872 = trunc i64 %6871 to i32 %6873 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i253, i32 %6872) %6874 = and i32 %Accumulator5509, %6873 %6875 = shl i64 1, %6871 %6876 = xor i64 %6875, -1 %6877 = and i64 %ActiveBits5510, %6876 %6878 = icmp eq i64 %6877, 0 br i1 %6878, label %ComputeEnd5508, label %ComputeLoop5507, !amdgpu.uniform !42 ComputeEnd5508: ; preds = %ComputeLoop5507 %.lcssa9321 = phi i32 [ %6874, %ComputeLoop5507 ] %6879 = trunc i64 %427 to i32 %6880 = lshr i64 %427, 32 %6881 = trunc i64 %6880 to i32 %6882 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %6879, i32 0) %6883 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %6881, i32 %6882) %6884 = icmp eq i32 %6883, 0 %6885 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6884) %6886 = extractvalue { i1, i64 } %6885, 0 %6887 = extractvalue { i1, i64 } %6885, 1 br i1 %6886, label %428, label %430 ComputeLoop5511: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit320, %ComputeLoop5511 %Accumulator5513 = phi i32 [ %6891, %ComputeLoop5511 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit320 ] %ActiveBits5514 = phi i64 [ %6894, %ComputeLoop5511 ], [ %507, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit320 ] %6888 = call i64 @llvm.cttz.i64(i64 %ActiveBits5514, i1 true) %6889 = trunc i64 %6888 to i32 %6890 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i311, i32 %6889) %6891 = and i32 %Accumulator5513, %6890 %6892 = shl i64 1, %6888 %6893 = xor i64 %6892, -1 %6894 = and i64 %ActiveBits5514, %6893 %6895 = icmp eq i64 %6894, 0 br i1 %6895, label %ComputeEnd5512, label %ComputeLoop5511, !amdgpu.uniform !42 ComputeEnd5512: ; preds = %ComputeLoop5511 %.lcssa9315 = phi i32 [ %6891, %ComputeLoop5511 ] %6896 = trunc i64 %507 to i32 %6897 = lshr i64 %507, 32 %6898 = trunc i64 %6897 to i32 %6899 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %6896, i32 0) %6900 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %6898, i32 %6899) %6901 = icmp eq i32 %6900, 0 %6902 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6901) %6903 = extractvalue { i1, i64 } %6902, 0 %6904 = extractvalue { i1, i64 } %6902, 1 br i1 %6903, label %508, label %511 ComputeLoop5515: ; preds = %for.cond.i.i.i327, %ComputeLoop5515 %Accumulator5517 = phi i32 [ %6909, %ComputeLoop5515 ], [ 0, %for.cond.i.i.i327 ] %OldValuePhi5518 = phi i32 [ %6908, %ComputeLoop5515 ], [ poison, %for.cond.i.i.i327 ] %ActiveBits5519 = phi i64 [ %6912, %ComputeLoop5515 ], [ %643, %for.cond.i.i.i327 ] %6905 = call i64 @llvm.cttz.i64(i64 %ActiveBits5519, i1 true) %6906 = trunc i64 %6905 to i32 %6907 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i339, i32 %6906) %6908 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator5517, i32 %6906, i32 %OldValuePhi5518) %6909 = or i32 %Accumulator5517, %6907 %6910 = shl i64 1, %6905 %6911 = xor i64 %6910, -1 %6912 = and i64 %ActiveBits5519, %6911 %6913 = icmp eq i64 %6912, 0 br i1 %6913, label %ComputeEnd5516, label %ComputeLoop5515, !amdgpu.uniform !42 ComputeEnd5516: ; preds = %ComputeLoop5515 %.lcssa9306 = phi i32 [ %6908, %ComputeLoop5515 ] %.lcssa9305 = phi i32 [ %6909, %ComputeLoop5515 ] %div8.i.i.i.i.i335 = lshr i32 %spec.store.select.i.i.i334, 5 %idxprom.i.i.i.i.i336 = zext nneg i32 %div8.i.i.i.i.i335 to i64 %6914 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i336 %6915 = trunc i64 %643 to i32 %6916 = lshr i64 %643, 32 %6917 = trunc i64 %6916 to i32 %6918 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %6915, i32 0) %6919 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %6917, i32 %6918) %6920 = icmp eq i32 %6919, 0 %6921 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6920) %6922 = extractvalue { i1, i64 } %6921, 0 %6923 = extractvalue { i1, i64 } %6921, 1 br i1 %6922, label %644, label %646 Flow8505: ; preds = %664, %if.then.i.i.i.i345 %6924 = phi i1 [ false, %664 ], [ true, %if.then.i.i.i.i345 ] br i1 %6924, label %if.end14.i.i.i413, label %Flow8506, !amdgpu.uniform !42 ComputeLoop5520: ; preds = %if.then12.i.i.i350, %ComputeLoop5520 %Accumulator5522 = phi i32 [ %6928, %ComputeLoop5520 ], [ -1, %if.then12.i.i.i350 ] %ActiveBits5523 = phi i64 [ %6931, %ComputeLoop5520 ], [ %661, %if.then12.i.i.i350 ] %6925 = call i64 @llvm.cttz.i64(i64 %ActiveBits5523, i1 true) %6926 = trunc i64 %6925 to i32 %6927 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i355, i32 %6926) %6928 = and i32 %Accumulator5522, %6927 %6929 = shl i64 1, %6925 %6930 = xor i64 %6929, -1 %6931 = and i64 %ActiveBits5523, %6930 %6932 = icmp eq i64 %6931, 0 br i1 %6932, label %ComputeEnd5521, label %ComputeLoop5520, !amdgpu.uniform !42 ComputeEnd5521: ; preds = %ComputeLoop5520 %.lcssa9307 = phi i32 [ %6928, %ComputeLoop5520 ] %6933 = trunc i64 %661 to i32 %6934 = lshr i64 %661, 32 %6935 = trunc i64 %6934 to i32 %6936 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %6933, i32 0) %6937 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %6935, i32 %6936) %6938 = icmp eq i32 %6937, 0 %6939 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6938) %6940 = extractvalue { i1, i64 } %6939, 0 %6941 = extractvalue { i1, i64 } %6939, 1 br i1 %6940, label %662, label %664 ComputeLoop5524: ; preds = %_ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i, %ComputeLoop5524 %Accumulator5526 = phi i32 [ %6945, %ComputeLoop5524 ], [ -1, %_ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i ] %ActiveBits5527 = phi i64 [ %6948, %ComputeLoop5524 ], [ %759, %_ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i ] %6942 = call i64 @llvm.cttz.i64(i64 %ActiveBits5527, i1 true) %6943 = trunc i64 %6942 to i32 %6944 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i412, i32 %6943) %6945 = and i32 %Accumulator5526, %6944 %6946 = shl i64 1, %6942 %6947 = xor i64 %6946, -1 %6948 = and i64 %ActiveBits5527, %6947 %6949 = icmp eq i64 %6948, 0 br i1 %6949, label %ComputeEnd5525, label %ComputeLoop5524, !amdgpu.uniform !42 ComputeEnd5525: ; preds = %ComputeLoop5524 %.lcssa9297 = phi i32 [ %6945, %ComputeLoop5524 ] %6950 = trunc i64 %759 to i32 %6951 = lshr i64 %759, 32 %6952 = trunc i64 %6951 to i32 %6953 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %6950, i32 0) %6954 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %6952, i32 %6953) %6955 = icmp eq i32 %6954, 0 %6956 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6955) %6957 = extractvalue { i1, i64 } %6956, 0 %6958 = extractvalue { i1, i64 } %6956, 1 br i1 %6957, label %760, label %763 ComputeLoop5528: ; preds = %for.cond.i.i1.i429, %ComputeLoop5528 %Accumulator5530 = phi i32 [ %6963, %ComputeLoop5528 ], [ 0, %for.cond.i.i1.i429 ] %OldValuePhi5531 = phi i32 [ %6962, %ComputeLoop5528 ], [ poison, %for.cond.i.i1.i429 ] %ActiveBits5532 = phi i64 [ %6966, %ComputeLoop5528 ], [ %772, %for.cond.i.i1.i429 ] %6959 = call i64 @llvm.cttz.i64(i64 %ActiveBits5532, i1 true) %6960 = trunc i64 %6959 to i32 %6961 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i441, i32 %6960) %6962 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator5530, i32 %6960, i32 %OldValuePhi5531) %6963 = or i32 %Accumulator5530, %6961 %6964 = shl i64 1, %6959 %6965 = xor i64 %6964, -1 %6966 = and i64 %ActiveBits5532, %6965 %6967 = icmp eq i64 %6966, 0 br i1 %6967, label %ComputeEnd5529, label %ComputeLoop5528, !amdgpu.uniform !42 ComputeEnd5529: ; preds = %ComputeLoop5528 %.lcssa9292 = phi i32 [ %6962, %ComputeLoop5528 ] %.lcssa9291 = phi i32 [ %6963, %ComputeLoop5528 ] %div8.i.i.i.i.i437 = lshr i32 %spec.store.select.i.i.i436, 5 %idxprom.i.i.i.i.i438 = zext nneg i32 %div8.i.i.i.i.i437 to i64 %6968 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i438 %6969 = trunc i64 %772 to i32 %6970 = lshr i64 %772, 32 %6971 = trunc i64 %6970 to i32 %6972 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %6969, i32 0) %6973 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %6971, i32 %6972) %6974 = icmp eq i32 %6973, 0 %6975 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6974) %6976 = extractvalue { i1, i64 } %6975, 0 %6977 = extractvalue { i1, i64 } %6975, 1 br i1 %6976, label %773, label %775 Flow8486: ; preds = %793, %if.then.i.i.i.i447 %6978 = phi i1 [ false, %793 ], [ true, %if.then.i.i.i.i447 ] br i1 %6978, label %if.end14.i.i.i518, label %Flow8487, !amdgpu.uniform !42 ComputeLoop5533: ; preds = %if.then12.i.i.i452, %ComputeLoop5533 %Accumulator5535 = phi i32 [ %6982, %ComputeLoop5533 ], [ -1, %if.then12.i.i.i452 ] %ActiveBits5536 = phi i64 [ %6985, %ComputeLoop5533 ], [ %790, %if.then12.i.i.i452 ] %6979 = call i64 @llvm.cttz.i64(i64 %ActiveBits5536, i1 true) %6980 = trunc i64 %6979 to i32 %6981 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i458, i32 %6980) %6982 = and i32 %Accumulator5535, %6981 %6983 = shl i64 1, %6979 %6984 = xor i64 %6983, -1 %6985 = and i64 %ActiveBits5536, %6984 %6986 = icmp eq i64 %6985, 0 br i1 %6986, label %ComputeEnd5534, label %ComputeLoop5533, !amdgpu.uniform !42 ComputeEnd5534: ; preds = %ComputeLoop5533 %.lcssa9293 = phi i32 [ %6982, %ComputeLoop5533 ] %6987 = trunc i64 %790 to i32 %6988 = lshr i64 %790, 32 %6989 = trunc i64 %6988 to i32 %6990 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %6987, i32 0) %6991 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %6989, i32 %6990) %6992 = icmp eq i32 %6991, 0 %6993 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %6992) %6994 = extractvalue { i1, i64 } %6993, 0 %6995 = extractvalue { i1, i64 } %6993, 1 br i1 %6994, label %791, label %793 ComputeLoop5537: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit526, %ComputeLoop5537 %Accumulator5539 = phi i32 [ %6999, %ComputeLoop5537 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit526 ] %ActiveBits5540 = phi i64 [ %7002, %ComputeLoop5537 ], [ %870, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit526 ] %6996 = call i64 @llvm.cttz.i64(i64 %ActiveBits5540, i1 true) %6997 = trunc i64 %6996 to i32 %6998 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i517, i32 %6997) %6999 = and i32 %Accumulator5539, %6998 %7000 = shl i64 1, %6996 %7001 = xor i64 %7000, -1 %7002 = and i64 %ActiveBits5540, %7001 %7003 = icmp eq i64 %7002, 0 br i1 %7003, label %ComputeEnd5538, label %ComputeLoop5537, !amdgpu.uniform !42 ComputeEnd5538: ; preds = %ComputeLoop5537 %.lcssa9287 = phi i32 [ %6999, %ComputeLoop5537 ] %7004 = trunc i64 %870 to i32 %7005 = lshr i64 %870, 32 %7006 = trunc i64 %7005 to i32 %7007 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7004, i32 0) %7008 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7006, i32 %7007) %7009 = icmp eq i32 %7008, 0 %7010 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7009) %7011 = extractvalue { i1, i64 } %7010, 0 %7012 = extractvalue { i1, i64 } %7010, 1 br i1 %7011, label %871, label %874 ComputeLoop5541: ; preds = %for.cond.i.i1.i535, %ComputeLoop5541 %Accumulator5543 = phi i32 [ %7017, %ComputeLoop5541 ], [ 0, %for.cond.i.i1.i535 ] %OldValuePhi5544 = phi i32 [ %7016, %ComputeLoop5541 ], [ poison, %for.cond.i.i1.i535 ] %ActiveBits5545 = phi i64 [ %7020, %ComputeLoop5541 ], [ %886, %for.cond.i.i1.i535 ] %7013 = call i64 @llvm.cttz.i64(i64 %ActiveBits5545, i1 true) %7014 = trunc i64 %7013 to i32 %7015 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i547, i32 %7014) %7016 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator5543, i32 %7014, i32 %OldValuePhi5544) %7017 = or i32 %Accumulator5543, %7015 %7018 = shl i64 1, %7013 %7019 = xor i64 %7018, -1 %7020 = and i64 %ActiveBits5545, %7019 %7021 = icmp eq i64 %7020, 0 br i1 %7021, label %ComputeEnd5542, label %ComputeLoop5541, !amdgpu.uniform !42 ComputeEnd5542: ; preds = %ComputeLoop5541 %.lcssa9282 = phi i32 [ %7016, %ComputeLoop5541 ] %.lcssa9281 = phi i32 [ %7017, %ComputeLoop5541 ] %div8.i.i.i.i.i543 = lshr i32 %spec.store.select.i.i.i542, 5 %idxprom.i.i.i.i.i544 = zext nneg i32 %div8.i.i.i.i.i543 to i64 %7022 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i544 %7023 = trunc i64 %886 to i32 %7024 = lshr i64 %886, 32 %7025 = trunc i64 %7024 to i32 %7026 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7023, i32 0) %7027 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7025, i32 %7026) %7028 = icmp eq i32 %7027, 0 %7029 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7028) %7030 = extractvalue { i1, i64 } %7029, 0 %7031 = extractvalue { i1, i64 } %7029, 1 br i1 %7030, label %887, label %889 Flow8466: ; preds = %907, %if.then.i.i.i.i553 %7032 = phi i1 [ false, %907 ], [ true, %if.then.i.i.i.i553 ] br i1 %7032, label %if.end14.i.i.i624, label %Flow8467, !amdgpu.uniform !42 ComputeLoop5546: ; preds = %if.then12.i.i.i558, %ComputeLoop5546 %Accumulator5548 = phi i32 [ %7036, %ComputeLoop5546 ], [ -1, %if.then12.i.i.i558 ] %ActiveBits5549 = phi i64 [ %7039, %ComputeLoop5546 ], [ %904, %if.then12.i.i.i558 ] %7033 = call i64 @llvm.cttz.i64(i64 %ActiveBits5549, i1 true) %7034 = trunc i64 %7033 to i32 %7035 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i564, i32 %7034) %7036 = and i32 %Accumulator5548, %7035 %7037 = shl i64 1, %7033 %7038 = xor i64 %7037, -1 %7039 = and i64 %ActiveBits5549, %7038 %7040 = icmp eq i64 %7039, 0 br i1 %7040, label %ComputeEnd5547, label %ComputeLoop5546, !amdgpu.uniform !42 ComputeEnd5547: ; preds = %ComputeLoop5546 %.lcssa9283 = phi i32 [ %7036, %ComputeLoop5546 ] %7041 = trunc i64 %904 to i32 %7042 = lshr i64 %904, 32 %7043 = trunc i64 %7042 to i32 %7044 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7041, i32 0) %7045 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7043, i32 %7044) %7046 = icmp eq i32 %7045, 0 %7047 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7046) %7048 = extractvalue { i1, i64 } %7047, 0 %7049 = extractvalue { i1, i64 } %7047, 1 br i1 %7048, label %905, label %907 ComputeLoop5550: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit632, %ComputeLoop5550 %Accumulator5552 = phi i32 [ %7053, %ComputeLoop5550 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit632 ] %ActiveBits5553 = phi i64 [ %7056, %ComputeLoop5550 ], [ %984, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit632 ] %7050 = call i64 @llvm.cttz.i64(i64 %ActiveBits5553, i1 true) %7051 = trunc i64 %7050 to i32 %7052 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i623, i32 %7051) %7053 = and i32 %Accumulator5552, %7052 %7054 = shl i64 1, %7050 %7055 = xor i64 %7054, -1 %7056 = and i64 %ActiveBits5553, %7055 %7057 = icmp eq i64 %7056, 0 br i1 %7057, label %ComputeEnd5551, label %ComputeLoop5550, !amdgpu.uniform !42 ComputeEnd5551: ; preds = %ComputeLoop5550 %.lcssa9277 = phi i32 [ %7053, %ComputeLoop5550 ] %7058 = trunc i64 %984 to i32 %7059 = lshr i64 %984, 32 %7060 = trunc i64 %7059 to i32 %7061 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7058, i32 0) %7062 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7060, i32 %7061) %7063 = icmp eq i32 %7062, 0 %7064 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7063) %7065 = extractvalue { i1, i64 } %7064, 0 %7066 = extractvalue { i1, i64 } %7064, 1 br i1 %7065, label %985, label %988 ComputeLoop5554: ; preds = %for.cond.i.i1.i641, %ComputeLoop5554 %Accumulator5556 = phi i32 [ %7071, %ComputeLoop5554 ], [ 0, %for.cond.i.i1.i641 ] %OldValuePhi5557 = phi i32 [ %7070, %ComputeLoop5554 ], [ poison, %for.cond.i.i1.i641 ] %ActiveBits5558 = phi i64 [ %7074, %ComputeLoop5554 ], [ %997, %for.cond.i.i1.i641 ] %7067 = call i64 @llvm.cttz.i64(i64 %ActiveBits5558, i1 true) %7068 = trunc i64 %7067 to i32 %7069 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i653, i32 %7068) %7070 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator5556, i32 %7068, i32 %OldValuePhi5557) %7071 = or i32 %Accumulator5556, %7069 %7072 = shl i64 1, %7067 %7073 = xor i64 %7072, -1 %7074 = and i64 %ActiveBits5558, %7073 %7075 = icmp eq i64 %7074, 0 br i1 %7075, label %ComputeEnd5555, label %ComputeLoop5554, !amdgpu.uniform !42 ComputeEnd5555: ; preds = %ComputeLoop5554 %.lcssa9272 = phi i32 [ %7070, %ComputeLoop5554 ] %.lcssa9271 = phi i32 [ %7071, %ComputeLoop5554 ] %div8.i.i.i.i.i649 = lshr i32 %spec.store.select.i.i.i648, 5 %idxprom.i.i.i.i.i650 = zext nneg i32 %div8.i.i.i.i.i649 to i64 %7076 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i650 %7077 = trunc i64 %997 to i32 %7078 = lshr i64 %997, 32 %7079 = trunc i64 %7078 to i32 %7080 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7077, i32 0) %7081 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7079, i32 %7080) %7082 = icmp eq i32 %7081, 0 %7083 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7082) %7084 = extractvalue { i1, i64 } %7083, 0 %7085 = extractvalue { i1, i64 } %7083, 1 br i1 %7084, label %998, label %1000 Flow8447: ; preds = %1018, %if.then.i.i.i.i659 %7086 = phi i1 [ false, %1018 ], [ true, %if.then.i.i.i.i659 ] br i1 %7086, label %if.end14.i.i.i730, label %Flow8448, !amdgpu.uniform !42 ComputeLoop5559: ; preds = %if.then12.i.i.i664, %ComputeLoop5559 %Accumulator5561 = phi i32 [ %7090, %ComputeLoop5559 ], [ -1, %if.then12.i.i.i664 ] %ActiveBits5562 = phi i64 [ %7093, %ComputeLoop5559 ], [ %1015, %if.then12.i.i.i664 ] %7087 = call i64 @llvm.cttz.i64(i64 %ActiveBits5562, i1 true) %7088 = trunc i64 %7087 to i32 %7089 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i670, i32 %7088) %7090 = and i32 %Accumulator5561, %7089 %7091 = shl i64 1, %7087 %7092 = xor i64 %7091, -1 %7093 = and i64 %ActiveBits5562, %7092 %7094 = icmp eq i64 %7093, 0 br i1 %7094, label %ComputeEnd5560, label %ComputeLoop5559, !amdgpu.uniform !42 ComputeEnd5560: ; preds = %ComputeLoop5559 %.lcssa9273 = phi i32 [ %7090, %ComputeLoop5559 ] %7095 = trunc i64 %1015 to i32 %7096 = lshr i64 %1015, 32 %7097 = trunc i64 %7096 to i32 %7098 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7095, i32 0) %7099 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7097, i32 %7098) %7100 = icmp eq i32 %7099, 0 %7101 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7100) %7102 = extractvalue { i1, i64 } %7101, 0 %7103 = extractvalue { i1, i64 } %7101, 1 br i1 %7102, label %1016, label %1018 ComputeLoop5563: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit738, %ComputeLoop5563 %Accumulator5565 = phi i32 [ %7107, %ComputeLoop5563 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit738 ] %ActiveBits5566 = phi i64 [ %7110, %ComputeLoop5563 ], [ %1095, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit738 ] %7104 = call i64 @llvm.cttz.i64(i64 %ActiveBits5566, i1 true) %7105 = trunc i64 %7104 to i32 %7106 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i729, i32 %7105) %7107 = and i32 %Accumulator5565, %7106 %7108 = shl i64 1, %7104 %7109 = xor i64 %7108, -1 %7110 = and i64 %ActiveBits5566, %7109 %7111 = icmp eq i64 %7110, 0 br i1 %7111, label %ComputeEnd5564, label %ComputeLoop5563, !amdgpu.uniform !42 ComputeEnd5564: ; preds = %ComputeLoop5563 %.lcssa9267 = phi i32 [ %7107, %ComputeLoop5563 ] %7112 = trunc i64 %1095 to i32 %7113 = lshr i64 %1095, 32 %7114 = trunc i64 %7113 to i32 %7115 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7112, i32 0) %7116 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7114, i32 %7115) %7117 = icmp eq i32 %7116, 0 %7118 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7117) %7119 = extractvalue { i1, i64 } %7118, 0 %7120 = extractvalue { i1, i64 } %7118, 1 br i1 %7119, label %1096, label %1099 ComputeLoop5567: ; preds = %for.cond.i.i1.i757, %ComputeLoop5567 %Accumulator5569 = phi i32 [ %7125, %ComputeLoop5567 ], [ 0, %for.cond.i.i1.i757 ] %OldValuePhi5570 = phi i32 [ %7124, %ComputeLoop5567 ], [ poison, %for.cond.i.i1.i757 ] %ActiveBits5571 = phi i64 [ %7128, %ComputeLoop5567 ], [ %1414, %for.cond.i.i1.i757 ] %7121 = call i64 @llvm.cttz.i64(i64 %ActiveBits5571, i1 true) %7122 = trunc i64 %7121 to i32 %7123 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i769, i32 %7122) %7124 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator5569, i32 %7122, i32 %OldValuePhi5570) %7125 = or i32 %Accumulator5569, %7123 %7126 = shl i64 1, %7121 %7127 = xor i64 %7126, -1 %7128 = and i64 %ActiveBits5571, %7127 %7129 = icmp eq i64 %7128, 0 br i1 %7129, label %ComputeEnd5568, label %ComputeLoop5567, !amdgpu.uniform !42 ComputeEnd5568: ; preds = %ComputeLoop5567 %.lcssa8979 = phi i32 [ %7124, %ComputeLoop5567 ] %.lcssa8978 = phi i32 [ %7125, %ComputeLoop5567 ] %div8.i.i.i.i.i765 = lshr i32 %spec.store.select.i.i.i764, 5 %idxprom.i.i.i.i.i766 = zext nneg i32 %div8.i.i.i.i.i765 to i64 %7130 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i766 %7131 = trunc i64 %1414 to i32 %7132 = lshr i64 %1414, 32 %7133 = trunc i64 %7132 to i32 %7134 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7131, i32 0) %7135 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7133, i32 %7134) %7136 = icmp eq i32 %7135, 0 %7137 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7136) %7138 = extractvalue { i1, i64 } %7137, 0 %7139 = extractvalue { i1, i64 } %7137, 1 br i1 %7138, label %1418, label %1420 Flow8423: ; preds = %1438, %if.then.i.i.i.i775 %7140 = phi i1 [ false, %1438 ], [ true, %if.then.i.i.i.i775 ] br i1 %7140, label %if.end14.i.i.i846, label %Flow8424, !amdgpu.uniform !42 ComputeLoop5572: ; preds = %if.then12.i.i.i780, %ComputeLoop5572 %Accumulator5574 = phi i32 [ %7144, %ComputeLoop5572 ], [ -1, %if.then12.i.i.i780 ] %ActiveBits5575 = phi i64 [ %7147, %ComputeLoop5572 ], [ %1435, %if.then12.i.i.i780 ] %7141 = call i64 @llvm.cttz.i64(i64 %ActiveBits5575, i1 true) %7142 = trunc i64 %7141 to i32 %7143 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i786, i32 %7142) %7144 = and i32 %Accumulator5574, %7143 %7145 = shl i64 1, %7141 %7146 = xor i64 %7145, -1 %7147 = and i64 %ActiveBits5575, %7146 %7148 = icmp eq i64 %7147, 0 br i1 %7148, label %ComputeEnd5573, label %ComputeLoop5572, !amdgpu.uniform !42 ComputeEnd5573: ; preds = %ComputeLoop5572 %.lcssa8980 = phi i32 [ %7144, %ComputeLoop5572 ] %7149 = trunc i64 %1435 to i32 %7150 = lshr i64 %1435, 32 %7151 = trunc i64 %7150 to i32 %7152 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7149, i32 0) %7153 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7151, i32 %7152) %7154 = icmp eq i32 %7153, 0 %7155 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7154) %7156 = extractvalue { i1, i64 } %7155, 0 %7157 = extractvalue { i1, i64 } %7155, 1 br i1 %7156, label %1436, label %1438 ComputeLoop5576: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit854, %ComputeLoop5576 %Accumulator5578 = phi i32 [ %7161, %ComputeLoop5576 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit854 ] %ActiveBits5579 = phi i64 [ %7164, %ComputeLoop5576 ], [ %1544, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit854 ] %7158 = call i64 @llvm.cttz.i64(i64 %ActiveBits5579, i1 true) %7159 = trunc i64 %7158 to i32 %7160 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i845, i32 %7159) %7161 = and i32 %Accumulator5578, %7160 %7162 = shl i64 1, %7158 %7163 = xor i64 %7162, -1 %7164 = and i64 %ActiveBits5579, %7163 %7165 = icmp eq i64 %7164, 0 br i1 %7165, label %ComputeEnd5577, label %ComputeLoop5576, !amdgpu.uniform !42 ComputeEnd5577: ; preds = %ComputeLoop5576 %.lcssa8992 = phi i32 [ %7161, %ComputeLoop5576 ] %7166 = trunc i64 %1544 to i32 %7167 = lshr i64 %1544, 32 %7168 = trunc i64 %7167 to i32 %7169 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7166, i32 0) %7170 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7168, i32 %7169) %7171 = icmp eq i32 %7170, 0 %7172 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7171) %7173 = extractvalue { i1, i64 } %7172, 0 %7174 = extractvalue { i1, i64 } %7172, 1 br i1 %7173, label %1545, label %1548 ComputeLoop5580: ; preds = %for.cond.i.i1.i863, %ComputeLoop5580 %Accumulator5582 = phi i32 [ %7179, %ComputeLoop5580 ], [ 0, %for.cond.i.i1.i863 ] %OldValuePhi5583 = phi i32 [ %7178, %ComputeLoop5580 ], [ poison, %for.cond.i.i1.i863 ] %ActiveBits5584 = phi i64 [ %7182, %ComputeLoop5580 ], [ %1553, %for.cond.i.i1.i863 ] %7175 = call i64 @llvm.cttz.i64(i64 %ActiveBits5584, i1 true) %7176 = trunc i64 %7175 to i32 %7177 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i875, i32 %7176) %7178 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator5582, i32 %7176, i32 %OldValuePhi5583) %7179 = or i32 %Accumulator5582, %7177 %7180 = shl i64 1, %7175 %7181 = xor i64 %7180, -1 %7182 = and i64 %ActiveBits5584, %7181 %7183 = icmp eq i64 %7182, 0 br i1 %7183, label %ComputeEnd5581, label %ComputeLoop5580, !amdgpu.uniform !42 ComputeEnd5581: ; preds = %ComputeLoop5580 %.lcssa8994 = phi i32 [ %7178, %ComputeLoop5580 ] %.lcssa8993 = phi i32 [ %7179, %ComputeLoop5580 ] %div8.i.i.i.i.i871 = lshr i32 %spec.store.select.i.i.i870, 5 %idxprom.i.i.i.i.i872 = zext nneg i32 %div8.i.i.i.i.i871 to i64 %7184 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i872 %7185 = trunc i64 %1553 to i32 %7186 = lshr i64 %1553, 32 %7187 = trunc i64 %7186 to i32 %7188 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7185, i32 0) %7189 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7187, i32 %7188) %7190 = icmp eq i32 %7189, 0 %7191 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7190) %7192 = extractvalue { i1, i64 } %7191, 0 %7193 = extractvalue { i1, i64 } %7191, 1 br i1 %7192, label %1557, label %1559 Flow8404: ; preds = %1577, %if.then.i.i.i.i881 %7194 = phi i1 [ false, %1577 ], [ true, %if.then.i.i.i.i881 ] br i1 %7194, label %if.end14.i.i.i952, label %Flow8405, !amdgpu.uniform !42 ComputeLoop5585: ; preds = %if.then12.i.i.i886, %ComputeLoop5585 %Accumulator5587 = phi i32 [ %7198, %ComputeLoop5585 ], [ -1, %if.then12.i.i.i886 ] %ActiveBits5588 = phi i64 [ %7201, %ComputeLoop5585 ], [ %1574, %if.then12.i.i.i886 ] %7195 = call i64 @llvm.cttz.i64(i64 %ActiveBits5588, i1 true) %7196 = trunc i64 %7195 to i32 %7197 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i892, i32 %7196) %7198 = and i32 %Accumulator5587, %7197 %7199 = shl i64 1, %7195 %7200 = xor i64 %7199, -1 %7201 = and i64 %ActiveBits5588, %7200 %7202 = icmp eq i64 %7201, 0 br i1 %7202, label %ComputeEnd5586, label %ComputeLoop5585, !amdgpu.uniform !42 ComputeEnd5586: ; preds = %ComputeLoop5585 %.lcssa8995 = phi i32 [ %7198, %ComputeLoop5585 ] %7203 = trunc i64 %1574 to i32 %7204 = lshr i64 %1574, 32 %7205 = trunc i64 %7204 to i32 %7206 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7203, i32 0) %7207 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7205, i32 %7206) %7208 = icmp eq i32 %7207, 0 %7209 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7208) %7210 = extractvalue { i1, i64 } %7209, 0 %7211 = extractvalue { i1, i64 } %7209, 1 br i1 %7210, label %1575, label %1577 ComputeLoop5589: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit960, %ComputeLoop5589 %Accumulator5591 = phi i32 [ %7215, %ComputeLoop5589 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit960 ] %ActiveBits5592 = phi i64 [ %7218, %ComputeLoop5589 ], [ %1655, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit960 ] %7212 = call i64 @llvm.cttz.i64(i64 %ActiveBits5592, i1 true) %7213 = trunc i64 %7212 to i32 %7214 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i951, i32 %7213) %7215 = and i32 %Accumulator5591, %7214 %7216 = shl i64 1, %7212 %7217 = xor i64 %7216, -1 %7218 = and i64 %ActiveBits5592, %7217 %7219 = icmp eq i64 %7218, 0 br i1 %7219, label %ComputeEnd5590, label %ComputeLoop5589, !amdgpu.uniform !42 ComputeEnd5590: ; preds = %ComputeLoop5589 %.lcssa9003 = phi i32 [ %7215, %ComputeLoop5589 ] %7220 = trunc i64 %1655 to i32 %7221 = lshr i64 %1655, 32 %7222 = trunc i64 %7221 to i32 %7223 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7220, i32 0) %7224 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7222, i32 %7223) %7225 = icmp eq i32 %7224, 0 %7226 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7225) %7227 = extractvalue { i1, i64 } %7226, 0 %7228 = extractvalue { i1, i64 } %7226, 1 br i1 %7227, label %1656, label %1659 ComputeLoop5593: ; preds = %for.cond.i.i1.i970, %ComputeLoop5593 %Accumulator5595 = phi i32 [ %7233, %ComputeLoop5593 ], [ 0, %for.cond.i.i1.i970 ] %OldValuePhi5596 = phi i32 [ %7232, %ComputeLoop5593 ], [ poison, %for.cond.i.i1.i970 ] %ActiveBits5597 = phi i64 [ %7236, %ComputeLoop5593 ], [ %1667, %for.cond.i.i1.i970 ] %7229 = call i64 @llvm.cttz.i64(i64 %ActiveBits5597, i1 true) %7230 = trunc i64 %7229 to i32 %7231 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i982, i32 %7230) %7232 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator5595, i32 %7230, i32 %OldValuePhi5596) %7233 = or i32 %Accumulator5595, %7231 %7234 = shl i64 1, %7229 %7235 = xor i64 %7234, -1 %7236 = and i64 %ActiveBits5597, %7235 %7237 = icmp eq i64 %7236, 0 br i1 %7237, label %ComputeEnd5594, label %ComputeLoop5593, !amdgpu.uniform !42 ComputeEnd5594: ; preds = %ComputeLoop5593 %.lcssa9006 = phi i32 [ %7232, %ComputeLoop5593 ] %.lcssa9005 = phi i32 [ %7233, %ComputeLoop5593 ] %div8.i.i.i.i.i978 = lshr i32 %spec.store.select.i.i.i977, 5 %idxprom.i.i.i.i.i979 = zext nneg i32 %div8.i.i.i.i.i978 to i64 %7238 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i979 %7239 = trunc i64 %1667 to i32 %7240 = lshr i64 %1667, 32 %7241 = trunc i64 %7240 to i32 %7242 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7239, i32 0) %7243 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7241, i32 %7242) %7244 = icmp eq i32 %7243, 0 %7245 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7244) %7246 = extractvalue { i1, i64 } %7245, 0 %7247 = extractvalue { i1, i64 } %7245, 1 br i1 %7246, label %1671, label %1673 Flow8385: ; preds = %1691, %if.then.i.i.i.i988 %7248 = phi i1 [ false, %1691 ], [ true, %if.then.i.i.i.i988 ] br i1 %7248, label %if.end14.i.i.i1059, label %Flow8386, !amdgpu.uniform !42 ComputeLoop5598: ; preds = %if.then12.i.i.i993, %ComputeLoop5598 %Accumulator5600 = phi i32 [ %7252, %ComputeLoop5598 ], [ -1, %if.then12.i.i.i993 ] %ActiveBits5601 = phi i64 [ %7255, %ComputeLoop5598 ], [ %1688, %if.then12.i.i.i993 ] %7249 = call i64 @llvm.cttz.i64(i64 %ActiveBits5601, i1 true) %7250 = trunc i64 %7249 to i32 %7251 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i999, i32 %7250) %7252 = and i32 %Accumulator5600, %7251 %7253 = shl i64 1, %7249 %7254 = xor i64 %7253, -1 %7255 = and i64 %ActiveBits5601, %7254 %7256 = icmp eq i64 %7255, 0 br i1 %7256, label %ComputeEnd5599, label %ComputeLoop5598, !amdgpu.uniform !42 ComputeEnd5599: ; preds = %ComputeLoop5598 %.lcssa9007 = phi i32 [ %7252, %ComputeLoop5598 ] %7257 = trunc i64 %1688 to i32 %7258 = lshr i64 %1688, 32 %7259 = trunc i64 %7258 to i32 %7260 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7257, i32 0) %7261 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7259, i32 %7260) %7262 = icmp eq i32 %7261, 0 %7263 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7262) %7264 = extractvalue { i1, i64 } %7263, 0 %7265 = extractvalue { i1, i64 } %7263, 1 br i1 %7264, label %1689, label %1691 ComputeLoop5602: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1067, %ComputeLoop5602 %Accumulator5604 = phi i32 [ %7269, %ComputeLoop5602 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1067 ] %ActiveBits5605 = phi i64 [ %7272, %ComputeLoop5602 ], [ %1795, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1067 ] %7266 = call i64 @llvm.cttz.i64(i64 %ActiveBits5605, i1 true) %7267 = trunc i64 %7266 to i32 %7268 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i1058, i32 %7267) %7269 = and i32 %Accumulator5604, %7268 %7270 = shl i64 1, %7266 %7271 = xor i64 %7270, -1 %7272 = and i64 %ActiveBits5605, %7271 %7273 = icmp eq i64 %7272, 0 br i1 %7273, label %ComputeEnd5603, label %ComputeLoop5602, !amdgpu.uniform !42 ComputeEnd5603: ; preds = %ComputeLoop5602 %.lcssa9019 = phi i32 [ %7269, %ComputeLoop5602 ] %7274 = trunc i64 %1795 to i32 %7275 = lshr i64 %1795, 32 %7276 = trunc i64 %7275 to i32 %7277 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7274, i32 0) %7278 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7276, i32 %7277) %7279 = icmp eq i32 %7278, 0 %7280 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7279) %7281 = extractvalue { i1, i64 } %7280, 0 %7282 = extractvalue { i1, i64 } %7280, 1 br i1 %7281, label %1796, label %1799 ComputeLoop5606: ; preds = %for.cond.i.i1.i1077, %ComputeLoop5606 %Accumulator5608 = phi i32 [ %7287, %ComputeLoop5606 ], [ 0, %for.cond.i.i1.i1077 ] %OldValuePhi5609 = phi i32 [ %7286, %ComputeLoop5606 ], [ poison, %for.cond.i.i1.i1077 ] %ActiveBits5610 = phi i64 [ %7290, %ComputeLoop5606 ], [ %1807, %for.cond.i.i1.i1077 ] %7283 = call i64 @llvm.cttz.i64(i64 %ActiveBits5610, i1 true) %7284 = trunc i64 %7283 to i32 %7285 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i1089, i32 %7284) %7286 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator5608, i32 %7284, i32 %OldValuePhi5609) %7287 = or i32 %Accumulator5608, %7285 %7288 = shl i64 1, %7283 %7289 = xor i64 %7288, -1 %7290 = and i64 %ActiveBits5610, %7289 %7291 = icmp eq i64 %7290, 0 br i1 %7291, label %ComputeEnd5607, label %ComputeLoop5606, !amdgpu.uniform !42 ComputeEnd5607: ; preds = %ComputeLoop5606 %.lcssa9022 = phi i32 [ %7286, %ComputeLoop5606 ] %.lcssa9021 = phi i32 [ %7287, %ComputeLoop5606 ] %div8.i.i.i.i.i1085 = lshr i32 %spec.store.select.i.i.i1084, 5 %idxprom.i.i.i.i.i1086 = zext nneg i32 %div8.i.i.i.i.i1085 to i64 %7292 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i1086 %7293 = trunc i64 %1807 to i32 %7294 = lshr i64 %1807, 32 %7295 = trunc i64 %7294 to i32 %7296 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7293, i32 0) %7297 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7295, i32 %7296) %7298 = icmp eq i32 %7297, 0 %7299 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7298) %7300 = extractvalue { i1, i64 } %7299, 0 %7301 = extractvalue { i1, i64 } %7299, 1 br i1 %7300, label %1811, label %1813 Flow8366: ; preds = %1831, %if.then.i.i.i.i1095 %7302 = phi i1 [ false, %1831 ], [ true, %if.then.i.i.i.i1095 ] br i1 %7302, label %if.end14.i.i.i1166, label %Flow8367, !amdgpu.uniform !42 ComputeLoop5611: ; preds = %if.then12.i.i.i1100, %ComputeLoop5611 %Accumulator5613 = phi i32 [ %7306, %ComputeLoop5611 ], [ -1, %if.then12.i.i.i1100 ] %ActiveBits5614 = phi i64 [ %7309, %ComputeLoop5611 ], [ %1828, %if.then12.i.i.i1100 ] %7303 = call i64 @llvm.cttz.i64(i64 %ActiveBits5614, i1 true) %7304 = trunc i64 %7303 to i32 %7305 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i1106, i32 %7304) %7306 = and i32 %Accumulator5613, %7305 %7307 = shl i64 1, %7303 %7308 = xor i64 %7307, -1 %7309 = and i64 %ActiveBits5614, %7308 %7310 = icmp eq i64 %7309, 0 br i1 %7310, label %ComputeEnd5612, label %ComputeLoop5611, !amdgpu.uniform !42 ComputeEnd5612: ; preds = %ComputeLoop5611 %.lcssa9023 = phi i32 [ %7306, %ComputeLoop5611 ] %7311 = trunc i64 %1828 to i32 %7312 = lshr i64 %1828, 32 %7313 = trunc i64 %7312 to i32 %7314 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7311, i32 0) %7315 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7313, i32 %7314) %7316 = icmp eq i32 %7315, 0 %7317 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7316) %7318 = extractvalue { i1, i64 } %7317, 0 %7319 = extractvalue { i1, i64 } %7317, 1 br i1 %7318, label %1829, label %1831 ComputeLoop5615: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1174, %ComputeLoop5615 %Accumulator5617 = phi i32 [ %7323, %ComputeLoop5615 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1174 ] %ActiveBits5618 = phi i64 [ %7326, %ComputeLoop5615 ], [ %1929, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1174 ] %7320 = call i64 @llvm.cttz.i64(i64 %ActiveBits5618, i1 true) %7321 = trunc i64 %7320 to i32 %7322 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i1165, i32 %7321) %7323 = and i32 %Accumulator5617, %7322 %7324 = shl i64 1, %7320 %7325 = xor i64 %7324, -1 %7326 = and i64 %ActiveBits5618, %7325 %7327 = icmp eq i64 %7326, 0 br i1 %7327, label %ComputeEnd5616, label %ComputeLoop5615, !amdgpu.uniform !42 ComputeEnd5616: ; preds = %ComputeLoop5615 %.lcssa9035 = phi i32 [ %7323, %ComputeLoop5615 ] %7328 = trunc i64 %1929 to i32 %7329 = lshr i64 %1929, 32 %7330 = trunc i64 %7329 to i32 %7331 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7328, i32 0) %7332 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7330, i32 %7331) %7333 = icmp eq i32 %7332, 0 %7334 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7333) %7335 = extractvalue { i1, i64 } %7334, 0 %7336 = extractvalue { i1, i64 } %7334, 1 br i1 %7335, label %1930, label %1933 ComputeLoop5619: ; preds = %for.cond.i.i.i1176, %ComputeLoop5619 %Accumulator5621 = phi i32 [ %7341, %ComputeLoop5619 ], [ 0, %for.cond.i.i.i1176 ] %OldValuePhi5622 = phi i32 [ %7340, %ComputeLoop5619 ], [ poison, %for.cond.i.i.i1176 ] %ActiveBits5623 = phi i64 [ %7344, %ComputeLoop5619 ], [ %1938, %for.cond.i.i.i1176 ] %7337 = call i64 @llvm.cttz.i64(i64 %ActiveBits5623, i1 true) %7338 = trunc i64 %7337 to i32 %7339 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i1188, i32 %7338) %7340 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator5621, i32 %7338, i32 %OldValuePhi5622) %7341 = or i32 %Accumulator5621, %7339 %7342 = shl i64 1, %7337 %7343 = xor i64 %7342, -1 %7344 = and i64 %ActiveBits5623, %7343 %7345 = icmp eq i64 %7344, 0 br i1 %7345, label %ComputeEnd5620, label %ComputeLoop5619, !amdgpu.uniform !42 ComputeEnd5620: ; preds = %ComputeLoop5619 %.lcssa9037 = phi i32 [ %7340, %ComputeLoop5619 ] %.lcssa9036 = phi i32 [ %7341, %ComputeLoop5619 ] %div8.i.i.i.i.i1184 = lshr i32 %spec.store.select.i.i.i1183, 5 %idxprom.i.i.i.i.i1185 = zext nneg i32 %div8.i.i.i.i.i1184 to i64 %7346 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i1185 %7347 = trunc i64 %1938 to i32 %7348 = lshr i64 %1938, 32 %7349 = trunc i64 %7348 to i32 %7350 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7347, i32 0) %7351 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7349, i32 %7350) %7352 = icmp eq i32 %7351, 0 %7353 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7352) %7354 = extractvalue { i1, i64 } %7353, 0 %7355 = extractvalue { i1, i64 } %7353, 1 br i1 %7354, label %1942, label %1944 Flow8347: ; preds = %1962, %if.then.i.i.i.i1194 %7356 = phi i1 [ false, %1962 ], [ true, %if.then.i.i.i.i1194 ] br i1 %7356, label %if.end14.i.i.i1263, label %Flow8348, !amdgpu.uniform !42 ComputeLoop5624: ; preds = %if.then12.i.i.i1199, %ComputeLoop5624 %Accumulator5626 = phi i32 [ %7360, %ComputeLoop5624 ], [ -1, %if.then12.i.i.i1199 ] %ActiveBits5627 = phi i64 [ %7363, %ComputeLoop5624 ], [ %1959, %if.then12.i.i.i1199 ] %7357 = call i64 @llvm.cttz.i64(i64 %ActiveBits5627, i1 true) %7358 = trunc i64 %7357 to i32 %7359 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i1205, i32 %7358) %7360 = and i32 %Accumulator5626, %7359 %7361 = shl i64 1, %7357 %7362 = xor i64 %7361, -1 %7363 = and i64 %ActiveBits5627, %7362 %7364 = icmp eq i64 %7363, 0 br i1 %7364, label %ComputeEnd5625, label %ComputeLoop5624, !amdgpu.uniform !42 ComputeEnd5625: ; preds = %ComputeLoop5624 %.lcssa9038 = phi i32 [ %7360, %ComputeLoop5624 ] %7365 = trunc i64 %1959 to i32 %7366 = lshr i64 %1959, 32 %7367 = trunc i64 %7366 to i32 %7368 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7365, i32 0) %7369 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7367, i32 %7368) %7370 = icmp eq i32 %7369, 0 %7371 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7370) %7372 = extractvalue { i1, i64 } %7371, 0 %7373 = extractvalue { i1, i64 } %7371, 1 br i1 %7372, label %1960, label %1962 ComputeLoop5628: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit, %ComputeLoop5628 %Accumulator5630 = phi i32 [ %7377, %ComputeLoop5628 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit ] %ActiveBits5631 = phi i64 [ %7380, %ComputeLoop5628 ], [ %2019, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit ] %7374 = call i64 @llvm.cttz.i64(i64 %ActiveBits5631, i1 true) %7375 = trunc i64 %7374 to i32 %7376 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i1262, i32 %7375) %7377 = and i32 %Accumulator5630, %7376 %7378 = shl i64 1, %7374 %7379 = xor i64 %7378, -1 %7380 = and i64 %ActiveBits5631, %7379 %7381 = icmp eq i64 %7380, 0 br i1 %7381, label %ComputeEnd5629, label %ComputeLoop5628, !amdgpu.uniform !42 ComputeEnd5629: ; preds = %ComputeLoop5628 %.lcssa9046 = phi i32 [ %7377, %ComputeLoop5628 ] %7382 = trunc i64 %2019 to i32 %7383 = lshr i64 %2019, 32 %7384 = trunc i64 %7383 to i32 %7385 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7382, i32 0) %7386 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7384, i32 %7385) %7387 = icmp eq i32 %7386, 0 %7388 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7387) %7389 = extractvalue { i1, i64 } %7388, 0 %7390 = extractvalue { i1, i64 } %7388, 1 br i1 %7389, label %2020, label %2023 ComputeLoop5632: ; preds = %for.cond.i.i1.i1292, %ComputeLoop5632 %Accumulator5634 = phi i32 [ %7395, %ComputeLoop5632 ], [ 0, %for.cond.i.i1.i1292 ] %OldValuePhi5635 = phi i32 [ %7394, %ComputeLoop5632 ], [ poison, %for.cond.i.i1.i1292 ] %ActiveBits5636 = phi i64 [ %7398, %ComputeLoop5632 ], [ %2148, %for.cond.i.i1.i1292 ] %7391 = call i64 @llvm.cttz.i64(i64 %ActiveBits5636, i1 true) %7392 = trunc i64 %7391 to i32 %7393 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i1304, i32 %7392) %7394 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator5634, i32 %7392, i32 %OldValuePhi5635) %7395 = or i32 %Accumulator5634, %7393 %7396 = shl i64 1, %7391 %7397 = xor i64 %7396, -1 %7398 = and i64 %ActiveBits5636, %7397 %7399 = icmp eq i64 %7398, 0 br i1 %7399, label %ComputeEnd5633, label %ComputeLoop5632, !amdgpu.uniform !42 ComputeEnd5633: ; preds = %ComputeLoop5632 %.lcssa9196 = phi i32 [ %7394, %ComputeLoop5632 ] %.lcssa9195 = phi i32 [ %7395, %ComputeLoop5632 ] %div8.i.i.i.i.i1300 = lshr i32 %spec.store.select.i.i.i1299, 5 %idxprom.i.i.i.i.i1301 = zext nneg i32 %div8.i.i.i.i.i1300 to i64 %7400 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i1301 %7401 = trunc i64 %2148 to i32 %7402 = lshr i64 %2148, 32 %7403 = trunc i64 %7402 to i32 %7404 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7401, i32 0) %7405 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7403, i32 %7404) %7406 = icmp eq i32 %7405, 0 %7407 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7406) %7408 = extractvalue { i1, i64 } %7407, 0 %7409 = extractvalue { i1, i64 } %7407, 1 br i1 %7408, label %2152, label %2154 Flow8326: ; preds = %2172, %if.then.i.i.i.i1310 %7410 = phi i1 [ false, %2172 ], [ true, %if.then.i.i.i.i1310 ] br i1 %7410, label %if.end14.i.i.i1381, label %Flow8327, !amdgpu.uniform !42 ComputeLoop5637: ; preds = %if.then12.i.i.i1315, %ComputeLoop5637 %Accumulator5639 = phi i32 [ %7414, %ComputeLoop5637 ], [ -1, %if.then12.i.i.i1315 ] %ActiveBits5640 = phi i64 [ %7417, %ComputeLoop5637 ], [ %2169, %if.then12.i.i.i1315 ] %7411 = call i64 @llvm.cttz.i64(i64 %ActiveBits5640, i1 true) %7412 = trunc i64 %7411 to i32 %7413 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i1321, i32 %7412) %7414 = and i32 %Accumulator5639, %7413 %7415 = shl i64 1, %7411 %7416 = xor i64 %7415, -1 %7417 = and i64 %ActiveBits5640, %7416 %7418 = icmp eq i64 %7417, 0 br i1 %7418, label %ComputeEnd5638, label %ComputeLoop5637, !amdgpu.uniform !42 ComputeEnd5638: ; preds = %ComputeLoop5637 %.lcssa9197 = phi i32 [ %7414, %ComputeLoop5637 ] %7419 = trunc i64 %2169 to i32 %7420 = lshr i64 %2169, 32 %7421 = trunc i64 %7420 to i32 %7422 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7419, i32 0) %7423 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7421, i32 %7422) %7424 = icmp eq i32 %7423, 0 %7425 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7424) %7426 = extractvalue { i1, i64 } %7425, 0 %7427 = extractvalue { i1, i64 } %7425, 1 br i1 %7426, label %2170, label %2172 ComputeLoop5641: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1389, %ComputeLoop5641 %Accumulator5643 = phi i32 [ %7431, %ComputeLoop5641 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1389 ] %ActiveBits5644 = phi i64 [ %7434, %ComputeLoop5641 ], [ %2276, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1389 ] %7428 = call i64 @llvm.cttz.i64(i64 %ActiveBits5644, i1 true) %7429 = trunc i64 %7428 to i32 %7430 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i1380, i32 %7429) %7431 = and i32 %Accumulator5643, %7430 %7432 = shl i64 1, %7428 %7433 = xor i64 %7432, -1 %7434 = and i64 %ActiveBits5644, %7433 %7435 = icmp eq i64 %7434, 0 br i1 %7435, label %ComputeEnd5642, label %ComputeLoop5641, !amdgpu.uniform !42 ComputeEnd5642: ; preds = %ComputeLoop5641 %.lcssa9209 = phi i32 [ %7431, %ComputeLoop5641 ] %7436 = trunc i64 %2276 to i32 %7437 = lshr i64 %2276, 32 %7438 = trunc i64 %7437 to i32 %7439 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7436, i32 0) %7440 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7438, i32 %7439) %7441 = icmp eq i32 %7440, 0 %7442 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7441) %7443 = extractvalue { i1, i64 } %7442, 0 %7444 = extractvalue { i1, i64 } %7442, 1 br i1 %7443, label %2277, label %2280 ComputeLoop5645: ; preds = %for.cond.i.i1.i1398, %ComputeLoop5645 %Accumulator5647 = phi i32 [ %7449, %ComputeLoop5645 ], [ 0, %for.cond.i.i1.i1398 ] %OldValuePhi5648 = phi i32 [ %7448, %ComputeLoop5645 ], [ poison, %for.cond.i.i1.i1398 ] %ActiveBits5649 = phi i64 [ %7452, %ComputeLoop5645 ], [ %2285, %for.cond.i.i1.i1398 ] %7445 = call i64 @llvm.cttz.i64(i64 %ActiveBits5649, i1 true) %7446 = trunc i64 %7445 to i32 %7447 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i1410, i32 %7446) %7448 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator5647, i32 %7446, i32 %OldValuePhi5648) %7449 = or i32 %Accumulator5647, %7447 %7450 = shl i64 1, %7445 %7451 = xor i64 %7450, -1 %7452 = and i64 %ActiveBits5649, %7451 %7453 = icmp eq i64 %7452, 0 br i1 %7453, label %ComputeEnd5646, label %ComputeLoop5645, !amdgpu.uniform !42 ComputeEnd5646: ; preds = %ComputeLoop5645 %.lcssa9211 = phi i32 [ %7448, %ComputeLoop5645 ] %.lcssa9210 = phi i32 [ %7449, %ComputeLoop5645 ] %div8.i.i.i.i.i1406 = lshr i32 %spec.store.select.i.i.i1405, 5 %idxprom.i.i.i.i.i1407 = zext nneg i32 %div8.i.i.i.i.i1406 to i64 %7454 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i1407 %7455 = trunc i64 %2285 to i32 %7456 = lshr i64 %2285, 32 %7457 = trunc i64 %7456 to i32 %7458 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7455, i32 0) %7459 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7457, i32 %7458) %7460 = icmp eq i32 %7459, 0 %7461 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7460) %7462 = extractvalue { i1, i64 } %7461, 0 %7463 = extractvalue { i1, i64 } %7461, 1 br i1 %7462, label %2289, label %2291 Flow8307: ; preds = %2309, %if.then.i.i.i.i1416 %7464 = phi i1 [ false, %2309 ], [ true, %if.then.i.i.i.i1416 ] br i1 %7464, label %if.end14.i.i.i1487, label %Flow8308, !amdgpu.uniform !42 ComputeLoop5650: ; preds = %if.then12.i.i.i1421, %ComputeLoop5650 %Accumulator5652 = phi i32 [ %7468, %ComputeLoop5650 ], [ -1, %if.then12.i.i.i1421 ] %ActiveBits5653 = phi i64 [ %7471, %ComputeLoop5650 ], [ %2306, %if.then12.i.i.i1421 ] %7465 = call i64 @llvm.cttz.i64(i64 %ActiveBits5653, i1 true) %7466 = trunc i64 %7465 to i32 %7467 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i1427, i32 %7466) %7468 = and i32 %Accumulator5652, %7467 %7469 = shl i64 1, %7465 %7470 = xor i64 %7469, -1 %7471 = and i64 %ActiveBits5653, %7470 %7472 = icmp eq i64 %7471, 0 br i1 %7472, label %ComputeEnd5651, label %ComputeLoop5650, !amdgpu.uniform !42 ComputeEnd5651: ; preds = %ComputeLoop5650 %.lcssa9212 = phi i32 [ %7468, %ComputeLoop5650 ] %7473 = trunc i64 %2306 to i32 %7474 = lshr i64 %2306, 32 %7475 = trunc i64 %7474 to i32 %7476 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7473, i32 0) %7477 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7475, i32 %7476) %7478 = icmp eq i32 %7477, 0 %7479 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7478) %7480 = extractvalue { i1, i64 } %7479, 0 %7481 = extractvalue { i1, i64 } %7479, 1 br i1 %7480, label %2307, label %2309 ComputeLoop5654: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1495, %ComputeLoop5654 %Accumulator5656 = phi i32 [ %7485, %ComputeLoop5654 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1495 ] %ActiveBits5657 = phi i64 [ %7488, %ComputeLoop5654 ], [ %2387, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1495 ] %7482 = call i64 @llvm.cttz.i64(i64 %ActiveBits5657, i1 true) %7483 = trunc i64 %7482 to i32 %7484 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i1486, i32 %7483) %7485 = and i32 %Accumulator5656, %7484 %7486 = shl i64 1, %7482 %7487 = xor i64 %7486, -1 %7488 = and i64 %ActiveBits5657, %7487 %7489 = icmp eq i64 %7488, 0 br i1 %7489, label %ComputeEnd5655, label %ComputeLoop5654, !amdgpu.uniform !42 ComputeEnd5655: ; preds = %ComputeLoop5654 %.lcssa9220 = phi i32 [ %7485, %ComputeLoop5654 ] %7490 = trunc i64 %2387 to i32 %7491 = lshr i64 %2387, 32 %7492 = trunc i64 %7491 to i32 %7493 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7490, i32 0) %7494 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7492, i32 %7493) %7495 = icmp eq i32 %7494, 0 %7496 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7495) %7497 = extractvalue { i1, i64 } %7496, 0 %7498 = extractvalue { i1, i64 } %7496, 1 br i1 %7497, label %2388, label %2391 ComputeLoop5658: ; preds = %for.cond.i.i1.i1505, %ComputeLoop5658 %Accumulator5660 = phi i32 [ %7503, %ComputeLoop5658 ], [ 0, %for.cond.i.i1.i1505 ] %OldValuePhi5661 = phi i32 [ %7502, %ComputeLoop5658 ], [ poison, %for.cond.i.i1.i1505 ] %ActiveBits5662 = phi i64 [ %7506, %ComputeLoop5658 ], [ %2399, %for.cond.i.i1.i1505 ] %7499 = call i64 @llvm.cttz.i64(i64 %ActiveBits5662, i1 true) %7500 = trunc i64 %7499 to i32 %7501 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i1517, i32 %7500) %7502 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator5660, i32 %7500, i32 %OldValuePhi5661) %7503 = or i32 %Accumulator5660, %7501 %7504 = shl i64 1, %7499 %7505 = xor i64 %7504, -1 %7506 = and i64 %ActiveBits5662, %7505 %7507 = icmp eq i64 %7506, 0 br i1 %7507, label %ComputeEnd5659, label %ComputeLoop5658, !amdgpu.uniform !42 ComputeEnd5659: ; preds = %ComputeLoop5658 %.lcssa9223 = phi i32 [ %7502, %ComputeLoop5658 ] %.lcssa9222 = phi i32 [ %7503, %ComputeLoop5658 ] %div8.i.i.i.i.i1513 = lshr i32 %spec.store.select.i.i.i1512, 5 %idxprom.i.i.i.i.i1514 = zext nneg i32 %div8.i.i.i.i.i1513 to i64 %7508 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i1514 %7509 = trunc i64 %2399 to i32 %7510 = lshr i64 %2399, 32 %7511 = trunc i64 %7510 to i32 %7512 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7509, i32 0) %7513 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7511, i32 %7512) %7514 = icmp eq i32 %7513, 0 %7515 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7514) %7516 = extractvalue { i1, i64 } %7515, 0 %7517 = extractvalue { i1, i64 } %7515, 1 br i1 %7516, label %2403, label %2405 Flow8288: ; preds = %2423, %if.then.i.i.i.i1523 %7518 = phi i1 [ false, %2423 ], [ true, %if.then.i.i.i.i1523 ] br i1 %7518, label %if.end14.i.i.i1594, label %Flow8289, !amdgpu.uniform !42 ComputeLoop5663: ; preds = %if.then12.i.i.i1528, %ComputeLoop5663 %Accumulator5665 = phi i32 [ %7522, %ComputeLoop5663 ], [ -1, %if.then12.i.i.i1528 ] %ActiveBits5666 = phi i64 [ %7525, %ComputeLoop5663 ], [ %2420, %if.then12.i.i.i1528 ] %7519 = call i64 @llvm.cttz.i64(i64 %ActiveBits5666, i1 true) %7520 = trunc i64 %7519 to i32 %7521 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i1534, i32 %7520) %7522 = and i32 %Accumulator5665, %7521 %7523 = shl i64 1, %7519 %7524 = xor i64 %7523, -1 %7525 = and i64 %ActiveBits5666, %7524 %7526 = icmp eq i64 %7525, 0 br i1 %7526, label %ComputeEnd5664, label %ComputeLoop5663, !amdgpu.uniform !42 ComputeEnd5664: ; preds = %ComputeLoop5663 %.lcssa9224 = phi i32 [ %7522, %ComputeLoop5663 ] %7527 = trunc i64 %2420 to i32 %7528 = lshr i64 %2420, 32 %7529 = trunc i64 %7528 to i32 %7530 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7527, i32 0) %7531 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7529, i32 %7530) %7532 = icmp eq i32 %7531, 0 %7533 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7532) %7534 = extractvalue { i1, i64 } %7533, 0 %7535 = extractvalue { i1, i64 } %7533, 1 br i1 %7534, label %2421, label %2423 ComputeLoop5667: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1602, %ComputeLoop5667 %Accumulator5669 = phi i32 [ %7539, %ComputeLoop5667 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1602 ] %ActiveBits5670 = phi i64 [ %7542, %ComputeLoop5667 ], [ %2527, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1602 ] %7536 = call i64 @llvm.cttz.i64(i64 %ActiveBits5670, i1 true) %7537 = trunc i64 %7536 to i32 %7538 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i1593, i32 %7537) %7539 = and i32 %Accumulator5669, %7538 %7540 = shl i64 1, %7536 %7541 = xor i64 %7540, -1 %7542 = and i64 %ActiveBits5670, %7541 %7543 = icmp eq i64 %7542, 0 br i1 %7543, label %ComputeEnd5668, label %ComputeLoop5667, !amdgpu.uniform !42 ComputeEnd5668: ; preds = %ComputeLoop5667 %.lcssa9236 = phi i32 [ %7539, %ComputeLoop5667 ] %7544 = trunc i64 %2527 to i32 %7545 = lshr i64 %2527, 32 %7546 = trunc i64 %7545 to i32 %7547 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7544, i32 0) %7548 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7546, i32 %7547) %7549 = icmp eq i32 %7548, 0 %7550 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7549) %7551 = extractvalue { i1, i64 } %7550, 0 %7552 = extractvalue { i1, i64 } %7550, 1 br i1 %7551, label %2528, label %2531 ComputeLoop5671: ; preds = %for.cond.i.i1.i1612, %ComputeLoop5671 %Accumulator5673 = phi i32 [ %7557, %ComputeLoop5671 ], [ 0, %for.cond.i.i1.i1612 ] %OldValuePhi5674 = phi i32 [ %7556, %ComputeLoop5671 ], [ poison, %for.cond.i.i1.i1612 ] %ActiveBits5675 = phi i64 [ %7560, %ComputeLoop5671 ], [ %2539, %for.cond.i.i1.i1612 ] %7553 = call i64 @llvm.cttz.i64(i64 %ActiveBits5675, i1 true) %7554 = trunc i64 %7553 to i32 %7555 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i1624, i32 %7554) %7556 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator5673, i32 %7554, i32 %OldValuePhi5674) %7557 = or i32 %Accumulator5673, %7555 %7558 = shl i64 1, %7553 %7559 = xor i64 %7558, -1 %7560 = and i64 %ActiveBits5675, %7559 %7561 = icmp eq i64 %7560, 0 br i1 %7561, label %ComputeEnd5672, label %ComputeLoop5671, !amdgpu.uniform !42 ComputeEnd5672: ; preds = %ComputeLoop5671 %.lcssa9239 = phi i32 [ %7556, %ComputeLoop5671 ] %.lcssa9238 = phi i32 [ %7557, %ComputeLoop5671 ] %div8.i.i.i.i.i1620 = lshr i32 %spec.store.select.i.i.i1619, 5 %idxprom.i.i.i.i.i1621 = zext nneg i32 %div8.i.i.i.i.i1620 to i64 %7562 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i1621 %7563 = trunc i64 %2539 to i32 %7564 = lshr i64 %2539, 32 %7565 = trunc i64 %7564 to i32 %7566 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7563, i32 0) %7567 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7565, i32 %7566) %7568 = icmp eq i32 %7567, 0 %7569 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7568) %7570 = extractvalue { i1, i64 } %7569, 0 %7571 = extractvalue { i1, i64 } %7569, 1 br i1 %7570, label %2543, label %2545 Flow8269: ; preds = %2563, %if.then.i.i.i.i1630 %7572 = phi i1 [ false, %2563 ], [ true, %if.then.i.i.i.i1630 ] br i1 %7572, label %if.end14.i.i.i1701, label %Flow8270, !amdgpu.uniform !42 ComputeLoop5676: ; preds = %if.then12.i.i.i1635, %ComputeLoop5676 %Accumulator5678 = phi i32 [ %7576, %ComputeLoop5676 ], [ -1, %if.then12.i.i.i1635 ] %ActiveBits5679 = phi i64 [ %7579, %ComputeLoop5676 ], [ %2560, %if.then12.i.i.i1635 ] %7573 = call i64 @llvm.cttz.i64(i64 %ActiveBits5679, i1 true) %7574 = trunc i64 %7573 to i32 %7575 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i1641, i32 %7574) %7576 = and i32 %Accumulator5678, %7575 %7577 = shl i64 1, %7573 %7578 = xor i64 %7577, -1 %7579 = and i64 %ActiveBits5679, %7578 %7580 = icmp eq i64 %7579, 0 br i1 %7580, label %ComputeEnd5677, label %ComputeLoop5676, !amdgpu.uniform !42 ComputeEnd5677: ; preds = %ComputeLoop5676 %.lcssa9240 = phi i32 [ %7576, %ComputeLoop5676 ] %7581 = trunc i64 %2560 to i32 %7582 = lshr i64 %2560, 32 %7583 = trunc i64 %7582 to i32 %7584 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7581, i32 0) %7585 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7583, i32 %7584) %7586 = icmp eq i32 %7585, 0 %7587 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7586) %7588 = extractvalue { i1, i64 } %7587, 0 %7589 = extractvalue { i1, i64 } %7587, 1 br i1 %7588, label %2561, label %2563 ComputeLoop5680: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1709, %ComputeLoop5680 %Accumulator5682 = phi i32 [ %7593, %ComputeLoop5680 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1709 ] %ActiveBits5683 = phi i64 [ %7596, %ComputeLoop5680 ], [ %2662, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1709 ] %7590 = call i64 @llvm.cttz.i64(i64 %ActiveBits5683, i1 true) %7591 = trunc i64 %7590 to i32 %7592 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i1700, i32 %7591) %7593 = and i32 %Accumulator5682, %7592 %7594 = shl i64 1, %7590 %7595 = xor i64 %7594, -1 %7596 = and i64 %ActiveBits5683, %7595 %7597 = icmp eq i64 %7596, 0 br i1 %7597, label %ComputeEnd5681, label %ComputeLoop5680, !amdgpu.uniform !42 ComputeEnd5681: ; preds = %ComputeLoop5680 %.lcssa9252 = phi i32 [ %7593, %ComputeLoop5680 ] %7598 = trunc i64 %2662 to i32 %7599 = lshr i64 %2662, 32 %7600 = trunc i64 %7599 to i32 %7601 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7598, i32 0) %7602 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7600, i32 %7601) %7603 = icmp eq i32 %7602, 0 %7604 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7603) %7605 = extractvalue { i1, i64 } %7604, 0 %7606 = extractvalue { i1, i64 } %7604, 1 br i1 %7605, label %2663, label %2666 ComputeLoop5684: ; preds = %for.cond.i.i.i1713, %ComputeLoop5684 %Accumulator5686 = phi i32 [ %7611, %ComputeLoop5684 ], [ 0, %for.cond.i.i.i1713 ] %OldValuePhi5687 = phi i32 [ %7610, %ComputeLoop5684 ], [ poison, %for.cond.i.i.i1713 ] %ActiveBits5688 = phi i64 [ %7614, %ComputeLoop5684 ], [ %2671, %for.cond.i.i.i1713 ] %7607 = call i64 @llvm.cttz.i64(i64 %ActiveBits5688, i1 true) %7608 = trunc i64 %7607 to i32 %7609 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i1725, i32 %7608) %7610 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator5686, i32 %7608, i32 %OldValuePhi5687) %7611 = or i32 %Accumulator5686, %7609 %7612 = shl i64 1, %7607 %7613 = xor i64 %7612, -1 %7614 = and i64 %ActiveBits5688, %7613 %7615 = icmp eq i64 %7614, 0 br i1 %7615, label %ComputeEnd5685, label %ComputeLoop5684, !amdgpu.uniform !42 ComputeEnd5685: ; preds = %ComputeLoop5684 %.lcssa9254 = phi i32 [ %7610, %ComputeLoop5684 ] %.lcssa9253 = phi i32 [ %7611, %ComputeLoop5684 ] %div8.i.i.i.i.i1721 = lshr i32 %spec.store.select.i.i.i1720, 5 %idxprom.i.i.i.i.i1722 = zext nneg i32 %div8.i.i.i.i.i1721 to i64 %7616 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i1722 %7617 = trunc i64 %2671 to i32 %7618 = lshr i64 %2671, 32 %7619 = trunc i64 %7618 to i32 %7620 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7617, i32 0) %7621 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7619, i32 %7620) %7622 = icmp eq i32 %7621, 0 %7623 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7622) %7624 = extractvalue { i1, i64 } %7623, 0 %7625 = extractvalue { i1, i64 } %7623, 1 br i1 %7624, label %2675, label %2677 Flow8250: ; preds = %2695, %if.then.i.i.i.i1731 %7626 = phi i1 [ false, %2695 ], [ true, %if.then.i.i.i.i1731 ] br i1 %7626, label %if.end14.i.i.i1800, label %Flow8251, !amdgpu.uniform !42 ComputeLoop5689: ; preds = %if.then12.i.i.i1736, %ComputeLoop5689 %Accumulator5691 = phi i32 [ %7630, %ComputeLoop5689 ], [ -1, %if.then12.i.i.i1736 ] %ActiveBits5692 = phi i64 [ %7633, %ComputeLoop5689 ], [ %2692, %if.then12.i.i.i1736 ] %7627 = call i64 @llvm.cttz.i64(i64 %ActiveBits5692, i1 true) %7628 = trunc i64 %7627 to i32 %7629 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i1742, i32 %7628) %7630 = and i32 %Accumulator5691, %7629 %7631 = shl i64 1, %7627 %7632 = xor i64 %7631, -1 %7633 = and i64 %ActiveBits5692, %7632 %7634 = icmp eq i64 %7633, 0 br i1 %7634, label %ComputeEnd5690, label %ComputeLoop5689, !amdgpu.uniform !42 ComputeEnd5690: ; preds = %ComputeLoop5689 %.lcssa9255 = phi i32 [ %7630, %ComputeLoop5689 ] %7635 = trunc i64 %2692 to i32 %7636 = lshr i64 %2692, 32 %7637 = trunc i64 %7636 to i32 %7638 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7635, i32 0) %7639 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7637, i32 %7638) %7640 = icmp eq i32 %7639, 0 %7641 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7640) %7642 = extractvalue { i1, i64 } %7641, 0 %7643 = extractvalue { i1, i64 } %7641, 1 br i1 %7642, label %2693, label %2695 ComputeLoop5693: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit1808, %ComputeLoop5693 %Accumulator5695 = phi i32 [ %7647, %ComputeLoop5693 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit1808 ] %ActiveBits5696 = phi i64 [ %7650, %ComputeLoop5693 ], [ %2752, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit1808 ] %7644 = call i64 @llvm.cttz.i64(i64 %ActiveBits5696, i1 true) %7645 = trunc i64 %7644 to i32 %7646 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i1799, i32 %7645) %7647 = and i32 %Accumulator5695, %7646 %7648 = shl i64 1, %7644 %7649 = xor i64 %7648, -1 %7650 = and i64 %ActiveBits5696, %7649 %7651 = icmp eq i64 %7650, 0 br i1 %7651, label %ComputeEnd5694, label %ComputeLoop5693, !amdgpu.uniform !42 ComputeEnd5694: ; preds = %ComputeLoop5693 %.lcssa9263 = phi i32 [ %7647, %ComputeLoop5693 ] %7652 = trunc i64 %2752 to i32 %7653 = lshr i64 %2752, 32 %7654 = trunc i64 %7653 to i32 %7655 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7652, i32 0) %7656 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7654, i32 %7655) %7657 = icmp eq i32 %7656, 0 %7658 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7657) %7659 = extractvalue { i1, i64 } %7658, 0 %7660 = extractvalue { i1, i64 } %7658, 1 br i1 %7659, label %2753, label %2756 ComputeLoop5697: ; preds = %for.cond.i.i1.i1818, %ComputeLoop5697 %Accumulator5699 = phi i32 [ %7665, %ComputeLoop5697 ], [ 0, %for.cond.i.i1.i1818 ] %OldValuePhi5700 = phi i32 [ %7664, %ComputeLoop5697 ], [ poison, %for.cond.i.i1.i1818 ] %ActiveBits5701 = phi i64 [ %7668, %ComputeLoop5697 ], [ %2803, %for.cond.i.i1.i1818 ] %7661 = call i64 @llvm.cttz.i64(i64 %ActiveBits5701, i1 true) %7662 = trunc i64 %7661 to i32 %7663 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i1830, i32 %7662) %7664 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator5699, i32 %7662, i32 %OldValuePhi5700) %7665 = or i32 %Accumulator5699, %7663 %7666 = shl i64 1, %7661 %7667 = xor i64 %7666, -1 %7668 = and i64 %ActiveBits5701, %7667 %7669 = icmp eq i64 %7668, 0 br i1 %7669, label %ComputeEnd5698, label %ComputeLoop5697, !amdgpu.uniform !42 ComputeEnd5698: ; preds = %ComputeLoop5697 %.lcssa9049 = phi i32 [ %7664, %ComputeLoop5697 ] %.lcssa9048 = phi i32 [ %7665, %ComputeLoop5697 ] %div8.i.i.i.i.i1826 = lshr i32 %spec.store.select.i.i.i1825, 5 %idxprom.i.i.i.i.i1827 = zext nneg i32 %div8.i.i.i.i.i1826 to i64 %7670 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i1827 %7671 = trunc i64 %2803 to i32 %7672 = lshr i64 %2803, 32 %7673 = trunc i64 %7672 to i32 %7674 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7671, i32 0) %7675 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7673, i32 %7674) %7676 = icmp eq i32 %7675, 0 %7677 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7676) %7678 = extractvalue { i1, i64 } %7677, 0 %7679 = extractvalue { i1, i64 } %7677, 1 br i1 %7678, label %2807, label %2809 Flow8241: ; preds = %2827, %if.then.i.i.i.i1836 %7680 = phi i1 [ false, %2827 ], [ true, %if.then.i.i.i.i1836 ] br i1 %7680, label %if.end14.i.i.i1907, label %Flow8242, !amdgpu.uniform !42 ComputeLoop5702: ; preds = %if.then12.i.i.i1841, %ComputeLoop5702 %Accumulator5704 = phi i32 [ %7684, %ComputeLoop5702 ], [ -1, %if.then12.i.i.i1841 ] %ActiveBits5705 = phi i64 [ %7687, %ComputeLoop5702 ], [ %2824, %if.then12.i.i.i1841 ] %7681 = call i64 @llvm.cttz.i64(i64 %ActiveBits5705, i1 true) %7682 = trunc i64 %7681 to i32 %7683 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i1847, i32 %7682) %7684 = and i32 %Accumulator5704, %7683 %7685 = shl i64 1, %7681 %7686 = xor i64 %7685, -1 %7687 = and i64 %ActiveBits5705, %7686 %7688 = icmp eq i64 %7687, 0 br i1 %7688, label %ComputeEnd5703, label %ComputeLoop5702, !amdgpu.uniform !42 ComputeEnd5703: ; preds = %ComputeLoop5702 %.lcssa9050 = phi i32 [ %7684, %ComputeLoop5702 ] %7689 = trunc i64 %2824 to i32 %7690 = lshr i64 %2824, 32 %7691 = trunc i64 %7690 to i32 %7692 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7689, i32 0) %7693 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7691, i32 %7692) %7694 = icmp eq i32 %7693, 0 %7695 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7694) %7696 = extractvalue { i1, i64 } %7695, 0 %7697 = extractvalue { i1, i64 } %7695, 1 br i1 %7696, label %2825, label %2827 ComputeLoop5706: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1915, %ComputeLoop5706 %Accumulator5708 = phi i32 [ %7701, %ComputeLoop5706 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1915 ] %ActiveBits5709 = phi i64 [ %7704, %ComputeLoop5706 ], [ %2931, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit1915 ] %7698 = call i64 @llvm.cttz.i64(i64 %ActiveBits5709, i1 true) %7699 = trunc i64 %7698 to i32 %7700 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i1906, i32 %7699) %7701 = and i32 %Accumulator5708, %7700 %7702 = shl i64 1, %7698 %7703 = xor i64 %7702, -1 %7704 = and i64 %ActiveBits5709, %7703 %7705 = icmp eq i64 %7704, 0 br i1 %7705, label %ComputeEnd5707, label %ComputeLoop5706, !amdgpu.uniform !42 ComputeEnd5707: ; preds = %ComputeLoop5706 %.lcssa9062 = phi i32 [ %7701, %ComputeLoop5706 ] %7706 = trunc i64 %2931 to i32 %7707 = lshr i64 %2931, 32 %7708 = trunc i64 %7707 to i32 %7709 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7706, i32 0) %7710 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7708, i32 %7709) %7711 = icmp eq i32 %7710, 0 %7712 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7711) %7713 = extractvalue { i1, i64 } %7712, 0 %7714 = extractvalue { i1, i64 } %7712, 1 br i1 %7713, label %2932, label %2935 ComputeLoop5710: ; preds = %for.cond.i.i1.i1924, %ComputeLoop5710 %Accumulator5712 = phi i32 [ %7719, %ComputeLoop5710 ], [ 0, %for.cond.i.i1.i1924 ] %OldValuePhi5713 = phi i32 [ %7718, %ComputeLoop5710 ], [ poison, %for.cond.i.i1.i1924 ] %ActiveBits5714 = phi i64 [ %7722, %ComputeLoop5710 ], [ %2940, %for.cond.i.i1.i1924 ] %7715 = call i64 @llvm.cttz.i64(i64 %ActiveBits5714, i1 true) %7716 = trunc i64 %7715 to i32 %7717 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i1936, i32 %7716) %7718 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator5712, i32 %7716, i32 %OldValuePhi5713) %7719 = or i32 %Accumulator5712, %7717 %7720 = shl i64 1, %7715 %7721 = xor i64 %7720, -1 %7722 = and i64 %ActiveBits5714, %7721 %7723 = icmp eq i64 %7722, 0 br i1 %7723, label %ComputeEnd5711, label %ComputeLoop5710, !amdgpu.uniform !42 ComputeEnd5711: ; preds = %ComputeLoop5710 %.lcssa9064 = phi i32 [ %7718, %ComputeLoop5710 ] %.lcssa9063 = phi i32 [ %7719, %ComputeLoop5710 ] %div8.i.i.i.i.i1932 = lshr i32 %spec.store.select.i.i.i1931, 5 %idxprom.i.i.i.i.i1933 = zext nneg i32 %div8.i.i.i.i.i1932 to i64 %7724 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i1933 %7725 = trunc i64 %2940 to i32 %7726 = lshr i64 %2940, 32 %7727 = trunc i64 %7726 to i32 %7728 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7725, i32 0) %7729 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7727, i32 %7728) %7730 = icmp eq i32 %7729, 0 %7731 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7730) %7732 = extractvalue { i1, i64 } %7731, 0 %7733 = extractvalue { i1, i64 } %7731, 1 br i1 %7732, label %2944, label %2946 Flow8222: ; preds = %2964, %if.then.i.i.i.i1942 %7734 = phi i1 [ false, %2964 ], [ true, %if.then.i.i.i.i1942 ] br i1 %7734, label %if.end14.i.i.i2013, label %Flow8223, !amdgpu.uniform !42 ComputeLoop5715: ; preds = %if.then12.i.i.i1947, %ComputeLoop5715 %Accumulator5717 = phi i32 [ %7738, %ComputeLoop5715 ], [ -1, %if.then12.i.i.i1947 ] %ActiveBits5718 = phi i64 [ %7741, %ComputeLoop5715 ], [ %2961, %if.then12.i.i.i1947 ] %7735 = call i64 @llvm.cttz.i64(i64 %ActiveBits5718, i1 true) %7736 = trunc i64 %7735 to i32 %7737 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i1953, i32 %7736) %7738 = and i32 %Accumulator5717, %7737 %7739 = shl i64 1, %7735 %7740 = xor i64 %7739, -1 %7741 = and i64 %ActiveBits5718, %7740 %7742 = icmp eq i64 %7741, 0 br i1 %7742, label %ComputeEnd5716, label %ComputeLoop5715, !amdgpu.uniform !42 ComputeEnd5716: ; preds = %ComputeLoop5715 %.lcssa9065 = phi i32 [ %7738, %ComputeLoop5715 ] %7743 = trunc i64 %2961 to i32 %7744 = lshr i64 %2961, 32 %7745 = trunc i64 %7744 to i32 %7746 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7743, i32 0) %7747 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7745, i32 %7746) %7748 = icmp eq i32 %7747, 0 %7749 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7748) %7750 = extractvalue { i1, i64 } %7749, 0 %7751 = extractvalue { i1, i64 } %7749, 1 br i1 %7750, label %2962, label %2964 ComputeLoop5719: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit2021, %ComputeLoop5719 %Accumulator5721 = phi i32 [ %7755, %ComputeLoop5719 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit2021 ] %ActiveBits5722 = phi i64 [ %7758, %ComputeLoop5719 ], [ %3042, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit2021 ] %7752 = call i64 @llvm.cttz.i64(i64 %ActiveBits5722, i1 true) %7753 = trunc i64 %7752 to i32 %7754 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i2012, i32 %7753) %7755 = and i32 %Accumulator5721, %7754 %7756 = shl i64 1, %7752 %7757 = xor i64 %7756, -1 %7758 = and i64 %ActiveBits5722, %7757 %7759 = icmp eq i64 %7758, 0 br i1 %7759, label %ComputeEnd5720, label %ComputeLoop5719, !amdgpu.uniform !42 ComputeEnd5720: ; preds = %ComputeLoop5719 %.lcssa9073 = phi i32 [ %7755, %ComputeLoop5719 ] %7760 = trunc i64 %3042 to i32 %7761 = lshr i64 %3042, 32 %7762 = trunc i64 %7761 to i32 %7763 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7760, i32 0) %7764 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7762, i32 %7763) %7765 = icmp eq i32 %7764, 0 %7766 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7765) %7767 = extractvalue { i1, i64 } %7766, 0 %7768 = extractvalue { i1, i64 } %7766, 1 br i1 %7767, label %3043, label %3046 ComputeLoop5723: ; preds = %for.cond.i.i1.i2031, %ComputeLoop5723 %Accumulator5725 = phi i32 [ %7773, %ComputeLoop5723 ], [ 0, %for.cond.i.i1.i2031 ] %OldValuePhi5726 = phi i32 [ %7772, %ComputeLoop5723 ], [ poison, %for.cond.i.i1.i2031 ] %ActiveBits5727 = phi i64 [ %7776, %ComputeLoop5723 ], [ %3054, %for.cond.i.i1.i2031 ] %7769 = call i64 @llvm.cttz.i64(i64 %ActiveBits5727, i1 true) %7770 = trunc i64 %7769 to i32 %7771 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i2043, i32 %7770) %7772 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator5725, i32 %7770, i32 %OldValuePhi5726) %7773 = or i32 %Accumulator5725, %7771 %7774 = shl i64 1, %7769 %7775 = xor i64 %7774, -1 %7776 = and i64 %ActiveBits5727, %7775 %7777 = icmp eq i64 %7776, 0 br i1 %7777, label %ComputeEnd5724, label %ComputeLoop5723, !amdgpu.uniform !42 ComputeEnd5724: ; preds = %ComputeLoop5723 %.lcssa9076 = phi i32 [ %7772, %ComputeLoop5723 ] %.lcssa9075 = phi i32 [ %7773, %ComputeLoop5723 ] %div8.i.i.i.i.i2039 = lshr i32 %spec.store.select.i.i.i2038, 5 %idxprom.i.i.i.i.i2040 = zext nneg i32 %div8.i.i.i.i.i2039 to i64 %7778 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i2040 %7779 = trunc i64 %3054 to i32 %7780 = lshr i64 %3054, 32 %7781 = trunc i64 %7780 to i32 %7782 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7779, i32 0) %7783 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7781, i32 %7782) %7784 = icmp eq i32 %7783, 0 %7785 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7784) %7786 = extractvalue { i1, i64 } %7785, 0 %7787 = extractvalue { i1, i64 } %7785, 1 br i1 %7786, label %3058, label %3060 Flow8203: ; preds = %3078, %if.then.i.i.i.i2049 %7788 = phi i1 [ false, %3078 ], [ true, %if.then.i.i.i.i2049 ] br i1 %7788, label %if.end14.i.i.i2120, label %Flow8204, !amdgpu.uniform !42 ComputeLoop5728: ; preds = %if.then12.i.i.i2054, %ComputeLoop5728 %Accumulator5730 = phi i32 [ %7792, %ComputeLoop5728 ], [ -1, %if.then12.i.i.i2054 ] %ActiveBits5731 = phi i64 [ %7795, %ComputeLoop5728 ], [ %3075, %if.then12.i.i.i2054 ] %7789 = call i64 @llvm.cttz.i64(i64 %ActiveBits5731, i1 true) %7790 = trunc i64 %7789 to i32 %7791 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i2060, i32 %7790) %7792 = and i32 %Accumulator5730, %7791 %7793 = shl i64 1, %7789 %7794 = xor i64 %7793, -1 %7795 = and i64 %ActiveBits5731, %7794 %7796 = icmp eq i64 %7795, 0 br i1 %7796, label %ComputeEnd5729, label %ComputeLoop5728, !amdgpu.uniform !42 ComputeEnd5729: ; preds = %ComputeLoop5728 %.lcssa9077 = phi i32 [ %7792, %ComputeLoop5728 ] %7797 = trunc i64 %3075 to i32 %7798 = lshr i64 %3075, 32 %7799 = trunc i64 %7798 to i32 %7800 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7797, i32 0) %7801 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7799, i32 %7800) %7802 = icmp eq i32 %7801, 0 %7803 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7802) %7804 = extractvalue { i1, i64 } %7803, 0 %7805 = extractvalue { i1, i64 } %7803, 1 br i1 %7804, label %3076, label %3078 ComputeLoop5732: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit2128, %ComputeLoop5732 %Accumulator5734 = phi i32 [ %7809, %ComputeLoop5732 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit2128 ] %ActiveBits5735 = phi i64 [ %7812, %ComputeLoop5732 ], [ %3182, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit2128 ] %7806 = call i64 @llvm.cttz.i64(i64 %ActiveBits5735, i1 true) %7807 = trunc i64 %7806 to i32 %7808 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i2119, i32 %7807) %7809 = and i32 %Accumulator5734, %7808 %7810 = shl i64 1, %7806 %7811 = xor i64 %7810, -1 %7812 = and i64 %ActiveBits5735, %7811 %7813 = icmp eq i64 %7812, 0 br i1 %7813, label %ComputeEnd5733, label %ComputeLoop5732, !amdgpu.uniform !42 ComputeEnd5733: ; preds = %ComputeLoop5732 %.lcssa9089 = phi i32 [ %7809, %ComputeLoop5732 ] %7814 = trunc i64 %3182 to i32 %7815 = lshr i64 %3182, 32 %7816 = trunc i64 %7815 to i32 %7817 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7814, i32 0) %7818 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7816, i32 %7817) %7819 = icmp eq i32 %7818, 0 %7820 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7819) %7821 = extractvalue { i1, i64 } %7820, 0 %7822 = extractvalue { i1, i64 } %7820, 1 br i1 %7821, label %3183, label %3186 ComputeLoop5736: ; preds = %for.cond.i.i1.i2138, %ComputeLoop5736 %Accumulator5738 = phi i32 [ %7827, %ComputeLoop5736 ], [ 0, %for.cond.i.i1.i2138 ] %OldValuePhi5739 = phi i32 [ %7826, %ComputeLoop5736 ], [ poison, %for.cond.i.i1.i2138 ] %ActiveBits5740 = phi i64 [ %7830, %ComputeLoop5736 ], [ %3194, %for.cond.i.i1.i2138 ] %7823 = call i64 @llvm.cttz.i64(i64 %ActiveBits5740, i1 true) %7824 = trunc i64 %7823 to i32 %7825 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i2150, i32 %7824) %7826 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator5738, i32 %7824, i32 %OldValuePhi5739) %7827 = or i32 %Accumulator5738, %7825 %7828 = shl i64 1, %7823 %7829 = xor i64 %7828, -1 %7830 = and i64 %ActiveBits5740, %7829 %7831 = icmp eq i64 %7830, 0 br i1 %7831, label %ComputeEnd5737, label %ComputeLoop5736, !amdgpu.uniform !42 ComputeEnd5737: ; preds = %ComputeLoop5736 %.lcssa9092 = phi i32 [ %7826, %ComputeLoop5736 ] %.lcssa9091 = phi i32 [ %7827, %ComputeLoop5736 ] %div8.i.i.i.i.i2146 = lshr i32 %spec.store.select.i.i.i2145, 5 %idxprom.i.i.i.i.i2147 = zext nneg i32 %div8.i.i.i.i.i2146 to i64 %7832 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i2147 %7833 = trunc i64 %3194 to i32 %7834 = lshr i64 %3194, 32 %7835 = trunc i64 %7834 to i32 %7836 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7833, i32 0) %7837 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7835, i32 %7836) %7838 = icmp eq i32 %7837, 0 %7839 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7838) %7840 = extractvalue { i1, i64 } %7839, 0 %7841 = extractvalue { i1, i64 } %7839, 1 br i1 %7840, label %3198, label %3200 Flow8184: ; preds = %3218, %if.then.i.i.i.i2156 %7842 = phi i1 [ false, %3218 ], [ true, %if.then.i.i.i.i2156 ] br i1 %7842, label %if.end14.i.i.i2227, label %Flow8185, !amdgpu.uniform !42 ComputeLoop5741: ; preds = %if.then12.i.i.i2161, %ComputeLoop5741 %Accumulator5743 = phi i32 [ %7846, %ComputeLoop5741 ], [ -1, %if.then12.i.i.i2161 ] %ActiveBits5744 = phi i64 [ %7849, %ComputeLoop5741 ], [ %3215, %if.then12.i.i.i2161 ] %7843 = call i64 @llvm.cttz.i64(i64 %ActiveBits5744, i1 true) %7844 = trunc i64 %7843 to i32 %7845 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i2167, i32 %7844) %7846 = and i32 %Accumulator5743, %7845 %7847 = shl i64 1, %7843 %7848 = xor i64 %7847, -1 %7849 = and i64 %ActiveBits5744, %7848 %7850 = icmp eq i64 %7849, 0 br i1 %7850, label %ComputeEnd5742, label %ComputeLoop5741, !amdgpu.uniform !42 ComputeEnd5742: ; preds = %ComputeLoop5741 %.lcssa9093 = phi i32 [ %7846, %ComputeLoop5741 ] %7851 = trunc i64 %3215 to i32 %7852 = lshr i64 %3215, 32 %7853 = trunc i64 %7852 to i32 %7854 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7851, i32 0) %7855 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7853, i32 %7854) %7856 = icmp eq i32 %7855, 0 %7857 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7856) %7858 = extractvalue { i1, i64 } %7857, 0 %7859 = extractvalue { i1, i64 } %7857, 1 br i1 %7858, label %3216, label %3218 ComputeLoop5745: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit2235, %ComputeLoop5745 %Accumulator5747 = phi i32 [ %7863, %ComputeLoop5745 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit2235 ] %ActiveBits5748 = phi i64 [ %7866, %ComputeLoop5745 ], [ %3317, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit2235 ] %7860 = call i64 @llvm.cttz.i64(i64 %ActiveBits5748, i1 true) %7861 = trunc i64 %7860 to i32 %7862 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i2226, i32 %7861) %7863 = and i32 %Accumulator5747, %7862 %7864 = shl i64 1, %7860 %7865 = xor i64 %7864, -1 %7866 = and i64 %ActiveBits5748, %7865 %7867 = icmp eq i64 %7866, 0 br i1 %7867, label %ComputeEnd5746, label %ComputeLoop5745, !amdgpu.uniform !42 ComputeEnd5746: ; preds = %ComputeLoop5745 %.lcssa9105 = phi i32 [ %7863, %ComputeLoop5745 ] %7868 = trunc i64 %3317 to i32 %7869 = lshr i64 %3317, 32 %7870 = trunc i64 %7869 to i32 %7871 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7868, i32 0) %7872 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7870, i32 %7871) %7873 = icmp eq i32 %7872, 0 %7874 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7873) %7875 = extractvalue { i1, i64 } %7874, 0 %7876 = extractvalue { i1, i64 } %7874, 1 br i1 %7875, label %3318, label %3321 ComputeLoop5749: ; preds = %for.cond.i.i1.i2244, %ComputeLoop5749 %Accumulator5751 = phi i32 [ %7881, %ComputeLoop5749 ], [ 0, %for.cond.i.i1.i2244 ] %OldValuePhi5752 = phi i32 [ %7880, %ComputeLoop5749 ], [ poison, %for.cond.i.i1.i2244 ] %ActiveBits5753 = phi i64 [ %7884, %ComputeLoop5749 ], [ %3326, %for.cond.i.i1.i2244 ] %7877 = call i64 @llvm.cttz.i64(i64 %ActiveBits5753, i1 true) %7878 = trunc i64 %7877 to i32 %7879 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i2256, i32 %7878) %7880 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator5751, i32 %7878, i32 %OldValuePhi5752) %7881 = or i32 %Accumulator5751, %7879 %7882 = shl i64 1, %7877 %7883 = xor i64 %7882, -1 %7884 = and i64 %ActiveBits5753, %7883 %7885 = icmp eq i64 %7884, 0 br i1 %7885, label %ComputeEnd5750, label %ComputeLoop5749, !amdgpu.uniform !42 ComputeEnd5750: ; preds = %ComputeLoop5749 %.lcssa9107 = phi i32 [ %7880, %ComputeLoop5749 ] %.lcssa9106 = phi i32 [ %7881, %ComputeLoop5749 ] %div8.i.i.i.i.i2252 = lshr i32 %spec.store.select.i.i.i2251, 5 %idxprom.i.i.i.i.i2253 = zext nneg i32 %div8.i.i.i.i.i2252 to i64 %7886 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i2253 %7887 = trunc i64 %3326 to i32 %7888 = lshr i64 %3326, 32 %7889 = trunc i64 %7888 to i32 %7890 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7887, i32 0) %7891 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7889, i32 %7890) %7892 = icmp eq i32 %7891, 0 %7893 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7892) %7894 = extractvalue { i1, i64 } %7893, 0 %7895 = extractvalue { i1, i64 } %7893, 1 br i1 %7894, label %3330, label %3332 Flow8165: ; preds = %3350, %if.then.i.i.i.i2262 %7896 = phi i1 [ false, %3350 ], [ true, %if.then.i.i.i.i2262 ] br i1 %7896, label %if.end14.i.i.i2333, label %Flow8166, !amdgpu.uniform !42 ComputeLoop5754: ; preds = %if.then12.i.i.i2267, %ComputeLoop5754 %Accumulator5756 = phi i32 [ %7900, %ComputeLoop5754 ], [ -1, %if.then12.i.i.i2267 ] %ActiveBits5757 = phi i64 [ %7903, %ComputeLoop5754 ], [ %3347, %if.then12.i.i.i2267 ] %7897 = call i64 @llvm.cttz.i64(i64 %ActiveBits5757, i1 true) %7898 = trunc i64 %7897 to i32 %7899 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i2273, i32 %7898) %7900 = and i32 %Accumulator5756, %7899 %7901 = shl i64 1, %7897 %7902 = xor i64 %7901, -1 %7903 = and i64 %ActiveBits5757, %7902 %7904 = icmp eq i64 %7903, 0 br i1 %7904, label %ComputeEnd5755, label %ComputeLoop5754, !amdgpu.uniform !42 ComputeEnd5755: ; preds = %ComputeLoop5754 %.lcssa9108 = phi i32 [ %7900, %ComputeLoop5754 ] %7905 = trunc i64 %3347 to i32 %7906 = lshr i64 %3347, 32 %7907 = trunc i64 %7906 to i32 %7908 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7905, i32 0) %7909 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7907, i32 %7908) %7910 = icmp eq i32 %7909, 0 %7911 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7910) %7912 = extractvalue { i1, i64 } %7911, 0 %7913 = extractvalue { i1, i64 } %7911, 1 br i1 %7912, label %3348, label %3350 ComputeLoop5758: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit2341, %ComputeLoop5758 %Accumulator5760 = phi i32 [ %7917, %ComputeLoop5758 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit2341 ] %ActiveBits5761 = phi i64 [ %7920, %ComputeLoop5758 ], [ %3428, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit2341 ] %7914 = call i64 @llvm.cttz.i64(i64 %ActiveBits5761, i1 true) %7915 = trunc i64 %7914 to i32 %7916 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i2332, i32 %7915) %7917 = and i32 %Accumulator5760, %7916 %7918 = shl i64 1, %7914 %7919 = xor i64 %7918, -1 %7920 = and i64 %ActiveBits5761, %7919 %7921 = icmp eq i64 %7920, 0 br i1 %7921, label %ComputeEnd5759, label %ComputeLoop5758, !amdgpu.uniform !42 ComputeEnd5759: ; preds = %ComputeLoop5758 %.lcssa9116 = phi i32 [ %7917, %ComputeLoop5758 ] %7922 = trunc i64 %3428 to i32 %7923 = lshr i64 %3428, 32 %7924 = trunc i64 %7923 to i32 %7925 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7922, i32 0) %7926 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7924, i32 %7925) %7927 = icmp eq i32 %7926, 0 %7928 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7927) %7929 = extractvalue { i1, i64 } %7928, 0 %7930 = extractvalue { i1, i64 } %7928, 1 br i1 %7929, label %3429, label %3432 ComputeLoop5762: ; preds = %for.cond.i.i1.i2350, %ComputeLoop5762 %Accumulator5764 = phi i32 [ %7935, %ComputeLoop5762 ], [ 0, %for.cond.i.i1.i2350 ] %OldValuePhi5765 = phi i32 [ %7934, %ComputeLoop5762 ], [ poison, %for.cond.i.i1.i2350 ] %ActiveBits5766 = phi i64 [ %7938, %ComputeLoop5762 ], [ %3477, %for.cond.i.i1.i2350 ] %7931 = call i64 @llvm.cttz.i64(i64 %ActiveBits5766, i1 true) %7932 = trunc i64 %7931 to i32 %7933 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i2362, i32 %7932) %7934 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator5764, i32 %7932, i32 %OldValuePhi5765) %7935 = or i32 %Accumulator5764, %7933 %7936 = shl i64 1, %7931 %7937 = xor i64 %7936, -1 %7938 = and i64 %ActiveBits5766, %7937 %7939 = icmp eq i64 %7938, 0 br i1 %7939, label %ComputeEnd5763, label %ComputeLoop5762, !amdgpu.uniform !42 ComputeEnd5763: ; preds = %ComputeLoop5762 %.lcssa9184 = phi i32 [ %7934, %ComputeLoop5762 ] %.lcssa9183 = phi i32 [ %7935, %ComputeLoop5762 ] %div8.i.i.i.i.i2358 = lshr i32 %spec.store.select.i.i.i2357, 5 %idxprom.i.i.i.i.i2359 = zext nneg i32 %div8.i.i.i.i.i2358 to i64 %7940 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i2359 %7941 = trunc i64 %3477 to i32 %7942 = lshr i64 %3477, 32 %7943 = trunc i64 %7942 to i32 %7944 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7941, i32 0) %7945 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7943, i32 %7944) %7946 = icmp eq i32 %7945, 0 %7947 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7946) %7948 = extractvalue { i1, i64 } %7947, 0 %7949 = extractvalue { i1, i64 } %7947, 1 br i1 %7948, label %3481, label %3483 Flow8144: ; preds = %3501, %if.then.i.i.i.i2368 %7950 = phi i1 [ false, %3501 ], [ true, %if.then.i.i.i.i2368 ] br i1 %7950, label %if.end14.i.i.i2439, label %Flow8145, !amdgpu.uniform !42 ComputeLoop5767: ; preds = %if.then12.i.i.i2373, %ComputeLoop5767 %Accumulator5769 = phi i32 [ %7954, %ComputeLoop5767 ], [ -1, %if.then12.i.i.i2373 ] %ActiveBits5770 = phi i64 [ %7957, %ComputeLoop5767 ], [ %3498, %if.then12.i.i.i2373 ] %7951 = call i64 @llvm.cttz.i64(i64 %ActiveBits5770, i1 true) %7952 = trunc i64 %7951 to i32 %7953 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i2379, i32 %7952) %7954 = and i32 %Accumulator5769, %7953 %7955 = shl i64 1, %7951 %7956 = xor i64 %7955, -1 %7957 = and i64 %ActiveBits5770, %7956 %7958 = icmp eq i64 %7957, 0 br i1 %7958, label %ComputeEnd5768, label %ComputeLoop5767, !amdgpu.uniform !42 ComputeEnd5768: ; preds = %ComputeLoop5767 %.lcssa9185 = phi i32 [ %7954, %ComputeLoop5767 ] %7959 = trunc i64 %3498 to i32 %7960 = lshr i64 %3498, 32 %7961 = trunc i64 %7960 to i32 %7962 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7959, i32 0) %7963 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7961, i32 %7962) %7964 = icmp eq i32 %7963, 0 %7965 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7964) %7966 = extractvalue { i1, i64 } %7965, 0 %7967 = extractvalue { i1, i64 } %7965, 1 br i1 %7966, label %3499, label %3501 ComputeLoop5771: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit2447, %ComputeLoop5771 %Accumulator5773 = phi i32 [ %7971, %ComputeLoop5771 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit2447 ] %ActiveBits5774 = phi i64 [ %7974, %ComputeLoop5771 ], [ %3579, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit2447 ] %7968 = call i64 @llvm.cttz.i64(i64 %ActiveBits5774, i1 true) %7969 = trunc i64 %7968 to i32 %7970 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i2438, i32 %7969) %7971 = and i32 %Accumulator5773, %7970 %7972 = shl i64 1, %7968 %7973 = xor i64 %7972, -1 %7974 = and i64 %ActiveBits5774, %7973 %7975 = icmp eq i64 %7974, 0 br i1 %7975, label %ComputeEnd5772, label %ComputeLoop5771, !amdgpu.uniform !42 ComputeEnd5772: ; preds = %ComputeLoop5771 %.lcssa9193 = phi i32 [ %7971, %ComputeLoop5771 ] %7976 = trunc i64 %3579 to i32 %7977 = lshr i64 %3579, 32 %7978 = trunc i64 %7977 to i32 %7979 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7976, i32 0) %7980 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7978, i32 %7979) %7981 = icmp eq i32 %7980, 0 %7982 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %7981) %7983 = extractvalue { i1, i64 } %7982, 0 %7984 = extractvalue { i1, i64 } %7982, 1 br i1 %7983, label %3580, label %3583 ComputeLoop5775: ; preds = %for.cond.i.i.i2497, %ComputeLoop5775 %Accumulator5777 = phi i32 [ %7989, %ComputeLoop5775 ], [ 0, %for.cond.i.i.i2497 ] %OldValuePhi5778 = phi i32 [ %7988, %ComputeLoop5775 ], [ poison, %for.cond.i.i.i2497 ] %ActiveBits5779 = phi i64 [ %7992, %ComputeLoop5775 ], [ %3671, %for.cond.i.i.i2497 ] %7985 = call i64 @llvm.cttz.i64(i64 %ActiveBits5779, i1 true) %7986 = trunc i64 %7985 to i32 %7987 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i2509, i32 %7986) %7988 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator5777, i32 %7986, i32 %OldValuePhi5778) %7989 = or i32 %Accumulator5777, %7987 %7990 = shl i64 1, %7985 %7991 = xor i64 %7990, -1 %7992 = and i64 %ActiveBits5779, %7991 %7993 = icmp eq i64 %7992, 0 br i1 %7993, label %ComputeEnd5776, label %ComputeLoop5775, !amdgpu.uniform !42 ComputeEnd5776: ; preds = %ComputeLoop5775 %.lcssa9162 = phi i32 [ %7988, %ComputeLoop5775 ] %.lcssa9161 = phi i32 [ %7989, %ComputeLoop5775 ] %div8.i.i.i.i.i2505 = lshr i32 %spec.store.select.i.i.i2504, 5 %idxprom.i.i.i.i.i2506 = zext nneg i32 %div8.i.i.i.i.i2505 to i64 %7994 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i2506 %7995 = trunc i64 %3671 to i32 %7996 = lshr i64 %3671, 32 %7997 = trunc i64 %7996 to i32 %7998 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %7995, i32 0) %7999 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %7997, i32 %7998) %8000 = icmp eq i32 %7999, 0 %8001 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8000) %8002 = extractvalue { i1, i64 } %8001, 0 %8003 = extractvalue { i1, i64 } %8001, 1 br i1 %8002, label %3675, label %3677 Flow8098: ; preds = %3695, %if.then.i.i.i.i2515 %8004 = phi i1 [ false, %3695 ], [ true, %if.then.i.i.i.i2515 ] br i1 %8004, label %if.end14.i.i.i2587, label %Flow8099, !amdgpu.uniform !42 ComputeLoop5780: ; preds = %if.then12.i.i.i2520, %ComputeLoop5780 %Accumulator5782 = phi i32 [ %8008, %ComputeLoop5780 ], [ -1, %if.then12.i.i.i2520 ] %ActiveBits5783 = phi i64 [ %8011, %ComputeLoop5780 ], [ %3692, %if.then12.i.i.i2520 ] %8005 = call i64 @llvm.cttz.i64(i64 %ActiveBits5783, i1 true) %8006 = trunc i64 %8005 to i32 %8007 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i2526, i32 %8006) %8008 = and i32 %Accumulator5782, %8007 %8009 = shl i64 1, %8005 %8010 = xor i64 %8009, -1 %8011 = and i64 %ActiveBits5783, %8010 %8012 = icmp eq i64 %8011, 0 br i1 %8012, label %ComputeEnd5781, label %ComputeLoop5780, !amdgpu.uniform !42 ComputeEnd5781: ; preds = %ComputeLoop5780 %.lcssa9163 = phi i32 [ %8008, %ComputeLoop5780 ] %8013 = trunc i64 %3692 to i32 %8014 = lshr i64 %3692, 32 %8015 = trunc i64 %8014 to i32 %8016 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8013, i32 0) %8017 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8015, i32 %8016) %8018 = icmp eq i32 %8017, 0 %8019 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8018) %8020 = extractvalue { i1, i64 } %8019, 0 %8021 = extractvalue { i1, i64 } %8019, 1 br i1 %8020, label %3693, label %3695 ComputeLoop5784: ; preds = %_ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i2576, %ComputeLoop5784 %Accumulator5786 = phi i32 [ %8025, %ComputeLoop5784 ], [ -1, %_ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i2576 ] %ActiveBits5787 = phi i64 [ %8028, %ComputeLoop5784 ], [ %3777, %_ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i2576 ] %8022 = call i64 @llvm.cttz.i64(i64 %ActiveBits5787, i1 true) %8023 = trunc i64 %8022 to i32 %8024 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i2585, i32 %8023) %8025 = and i32 %Accumulator5786, %8024 %8026 = shl i64 1, %8022 %8027 = xor i64 %8026, -1 %8028 = and i64 %ActiveBits5787, %8027 %8029 = icmp eq i64 %8028, 0 br i1 %8029, label %ComputeEnd5785, label %ComputeLoop5784, !amdgpu.uniform !42 ComputeEnd5785: ; preds = %ComputeLoop5784 %.lcssa9171 = phi i32 [ %8025, %ComputeLoop5784 ] %8030 = trunc i64 %3777 to i32 %8031 = lshr i64 %3777, 32 %8032 = trunc i64 %8031 to i32 %8033 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8030, i32 0) %8034 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8032, i32 %8033) %8035 = icmp eq i32 %8034, 0 %8036 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8035) %8037 = extractvalue { i1, i64 } %8036, 0 %8038 = extractvalue { i1, i64 } %8036, 1 br i1 %8037, label %3778, label %3781 ComputeLoop5788: ; preds = %for.cond.i.i1.i2615, %ComputeLoop5788 %Accumulator5790 = phi i32 [ %8043, %ComputeLoop5788 ], [ 0, %for.cond.i.i1.i2615 ] %OldValuePhi5791 = phi i32 [ %8042, %ComputeLoop5788 ], [ poison, %for.cond.i.i1.i2615 ] %ActiveBits5792 = phi i64 [ %8046, %ComputeLoop5788 ], [ %3786, %for.cond.i.i1.i2615 ] %8039 = call i64 @llvm.cttz.i64(i64 %ActiveBits5792, i1 true) %8040 = trunc i64 %8039 to i32 %8041 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i2627, i32 %8040) %8042 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator5790, i32 %8040, i32 %OldValuePhi5791) %8043 = or i32 %Accumulator5790, %8041 %8044 = shl i64 1, %8039 %8045 = xor i64 %8044, -1 %8046 = and i64 %ActiveBits5792, %8045 %8047 = icmp eq i64 %8046, 0 br i1 %8047, label %ComputeEnd5789, label %ComputeLoop5788, !amdgpu.uniform !42 ComputeEnd5789: ; preds = %ComputeLoop5788 %.lcssa9173 = phi i32 [ %8042, %ComputeLoop5788 ] %.lcssa9172 = phi i32 [ %8043, %ComputeLoop5788 ] %div8.i.i.i.i.i2623 = lshr i32 %spec.store.select.i.i.i2622, 5 %idxprom.i.i.i.i.i2624 = zext nneg i32 %div8.i.i.i.i.i2623 to i64 %8048 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i2624 %8049 = trunc i64 %3786 to i32 %8050 = lshr i64 %3786, 32 %8051 = trunc i64 %8050 to i32 %8052 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8049, i32 0) %8053 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8051, i32 %8052) %8054 = icmp eq i32 %8053, 0 %8055 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8054) %8056 = extractvalue { i1, i64 } %8055, 0 %8057 = extractvalue { i1, i64 } %8055, 1 br i1 %8056, label %3790, label %3792 Flow8079: ; preds = %3810, %if.then.i.i.i.i2633 %8058 = phi i1 [ false, %3810 ], [ true, %if.then.i.i.i.i2633 ] br i1 %8058, label %if.end14.i.i.i2704, label %Flow8080, !amdgpu.uniform !42 ComputeLoop5793: ; preds = %if.then12.i.i.i2638, %ComputeLoop5793 %Accumulator5795 = phi i32 [ %8062, %ComputeLoop5793 ], [ -1, %if.then12.i.i.i2638 ] %ActiveBits5796 = phi i64 [ %8065, %ComputeLoop5793 ], [ %3807, %if.then12.i.i.i2638 ] %8059 = call i64 @llvm.cttz.i64(i64 %ActiveBits5796, i1 true) %8060 = trunc i64 %8059 to i32 %8061 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i2644, i32 %8060) %8062 = and i32 %Accumulator5795, %8061 %8063 = shl i64 1, %8059 %8064 = xor i64 %8063, -1 %8065 = and i64 %ActiveBits5796, %8064 %8066 = icmp eq i64 %8065, 0 br i1 %8066, label %ComputeEnd5794, label %ComputeLoop5793, !amdgpu.uniform !42 ComputeEnd5794: ; preds = %ComputeLoop5793 %.lcssa9174 = phi i32 [ %8062, %ComputeLoop5793 ] %8067 = trunc i64 %3807 to i32 %8068 = lshr i64 %3807, 32 %8069 = trunc i64 %8068 to i32 %8070 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8067, i32 0) %8071 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8069, i32 %8070) %8072 = icmp eq i32 %8071, 0 %8073 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8072) %8074 = extractvalue { i1, i64 } %8073, 0 %8075 = extractvalue { i1, i64 } %8073, 1 br i1 %8074, label %3808, label %3810 ComputeLoop5797: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit2712, %ComputeLoop5797 %Accumulator5799 = phi i32 [ %8079, %ComputeLoop5797 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit2712 ] %ActiveBits5800 = phi i64 [ %8082, %ComputeLoop5797 ], [ %3888, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit2712 ] %8076 = call i64 @llvm.cttz.i64(i64 %ActiveBits5800, i1 true) %8077 = trunc i64 %8076 to i32 %8078 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i2703, i32 %8077) %8079 = and i32 %Accumulator5799, %8078 %8080 = shl i64 1, %8076 %8081 = xor i64 %8080, -1 %8082 = and i64 %ActiveBits5800, %8081 %8083 = icmp eq i64 %8082, 0 br i1 %8083, label %ComputeEnd5798, label %ComputeLoop5797, !amdgpu.uniform !42 ComputeEnd5798: ; preds = %ComputeLoop5797 %.lcssa9182 = phi i32 [ %8079, %ComputeLoop5797 ] %8084 = trunc i64 %3888 to i32 %8085 = lshr i64 %3888, 32 %8086 = trunc i64 %8085 to i32 %8087 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8084, i32 0) %8088 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8086, i32 %8087) %8089 = icmp eq i32 %8088, 0 %8090 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8089) %8091 = extractvalue { i1, i64 } %8090, 0 %8092 = extractvalue { i1, i64 } %8090, 1 br i1 %8091, label %3889, label %3892 ComputeLoop5801: ; preds = %for.cond.i.i.i2771, %ComputeLoop5801 %Accumulator5803 = phi i32 [ %8097, %ComputeLoop5801 ], [ 0, %for.cond.i.i.i2771 ] %OldValuePhi5804 = phi i32 [ %8096, %ComputeLoop5801 ], [ poison, %for.cond.i.i.i2771 ] %ActiveBits5805 = phi i64 [ %8100, %ComputeLoop5801 ], [ %3948, %for.cond.i.i.i2771 ] %8093 = call i64 @llvm.cttz.i64(i64 %ActiveBits5805, i1 true) %8094 = trunc i64 %8093 to i32 %8095 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i2783, i32 %8094) %8096 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator5803, i32 %8094, i32 %OldValuePhi5804) %8097 = or i32 %Accumulator5803, %8095 %8098 = shl i64 1, %8093 %8099 = xor i64 %8098, -1 %8100 = and i64 %ActiveBits5805, %8099 %8101 = icmp eq i64 %8100, 0 br i1 %8101, label %ComputeEnd5802, label %ComputeLoop5801, !amdgpu.uniform !42 ComputeEnd5802: ; preds = %ComputeLoop5801 %.lcssa9118 = phi i32 [ %8096, %ComputeLoop5801 ] %.lcssa9117 = phi i32 [ %8097, %ComputeLoop5801 ] %div8.i.i.i.i.i2779 = lshr i32 %spec.store.select.i.i.i2778, 5 %idxprom.i.i.i.i.i2780 = zext nneg i32 %div8.i.i.i.i.i2779 to i64 %8102 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i2780 %8103 = trunc i64 %3948 to i32 %8104 = lshr i64 %3948, 32 %8105 = trunc i64 %8104 to i32 %8106 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8103, i32 0) %8107 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8105, i32 %8106) %8108 = icmp eq i32 %8107, 0 %8109 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8108) %8110 = extractvalue { i1, i64 } %8109, 0 %8111 = extractvalue { i1, i64 } %8109, 1 br i1 %8110, label %3952, label %3954 Flow7972: ; preds = %3972, %if.then.i.i.i.i2789 %8112 = phi i1 [ false, %3972 ], [ true, %if.then.i.i.i.i2789 ] br i1 %8112, label %if.end14.i.i.i2861, label %Flow7973, !amdgpu.uniform !42 ComputeLoop5806: ; preds = %if.then12.i.i.i2794, %ComputeLoop5806 %Accumulator5808 = phi i32 [ %8116, %ComputeLoop5806 ], [ -1, %if.then12.i.i.i2794 ] %ActiveBits5809 = phi i64 [ %8119, %ComputeLoop5806 ], [ %3969, %if.then12.i.i.i2794 ] %8113 = call i64 @llvm.cttz.i64(i64 %ActiveBits5809, i1 true) %8114 = trunc i64 %8113 to i32 %8115 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i2800, i32 %8114) %8116 = and i32 %Accumulator5808, %8115 %8117 = shl i64 1, %8113 %8118 = xor i64 %8117, -1 %8119 = and i64 %ActiveBits5809, %8118 %8120 = icmp eq i64 %8119, 0 br i1 %8120, label %ComputeEnd5807, label %ComputeLoop5806, !amdgpu.uniform !42 ComputeEnd5807: ; preds = %ComputeLoop5806 %.lcssa9119 = phi i32 [ %8116, %ComputeLoop5806 ] %8121 = trunc i64 %3969 to i32 %8122 = lshr i64 %3969, 32 %8123 = trunc i64 %8122 to i32 %8124 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8121, i32 0) %8125 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8123, i32 %8124) %8126 = icmp eq i32 %8125, 0 %8127 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8126) %8128 = extractvalue { i1, i64 } %8127, 0 %8129 = extractvalue { i1, i64 } %8127, 1 br i1 %8128, label %3970, label %3972 ComputeLoop5810: ; preds = %_ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i2850, %ComputeLoop5810 %Accumulator5812 = phi i32 [ %8133, %ComputeLoop5810 ], [ -1, %_ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i2850 ] %ActiveBits5813 = phi i64 [ %8136, %ComputeLoop5810 ], [ %4054, %_ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i2850 ] %8130 = call i64 @llvm.cttz.i64(i64 %ActiveBits5813, i1 true) %8131 = trunc i64 %8130 to i32 %8132 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i2859, i32 %8131) %8133 = and i32 %Accumulator5812, %8132 %8134 = shl i64 1, %8130 %8135 = xor i64 %8134, -1 %8136 = and i64 %ActiveBits5813, %8135 %8137 = icmp eq i64 %8136, 0 br i1 %8137, label %ComputeEnd5811, label %ComputeLoop5810, !amdgpu.uniform !42 ComputeEnd5811: ; preds = %ComputeLoop5810 %.lcssa9127 = phi i32 [ %8133, %ComputeLoop5810 ] %8138 = trunc i64 %4054 to i32 %8139 = lshr i64 %4054, 32 %8140 = trunc i64 %8139 to i32 %8141 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8138, i32 0) %8142 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8140, i32 %8141) %8143 = icmp eq i32 %8142, 0 %8144 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8143) %8145 = extractvalue { i1, i64 } %8144, 0 %8146 = extractvalue { i1, i64 } %8144, 1 br i1 %8145, label %4055, label %4058 ComputeLoop5814: ; preds = %for.cond.i.i1.i2890, %ComputeLoop5814 %Accumulator5816 = phi i32 [ %8151, %ComputeLoop5814 ], [ 0, %for.cond.i.i1.i2890 ] %OldValuePhi5817 = phi i32 [ %8150, %ComputeLoop5814 ], [ poison, %for.cond.i.i1.i2890 ] %ActiveBits5818 = phi i64 [ %8154, %ComputeLoop5814 ], [ %4063, %for.cond.i.i1.i2890 ] %8147 = call i64 @llvm.cttz.i64(i64 %ActiveBits5818, i1 true) %8148 = trunc i64 %8147 to i32 %8149 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i2902, i32 %8148) %8150 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator5816, i32 %8148, i32 %OldValuePhi5817) %8151 = or i32 %Accumulator5816, %8149 %8152 = shl i64 1, %8147 %8153 = xor i64 %8152, -1 %8154 = and i64 %ActiveBits5818, %8153 %8155 = icmp eq i64 %8154, 0 br i1 %8155, label %ComputeEnd5815, label %ComputeLoop5814, !amdgpu.uniform !42 ComputeEnd5815: ; preds = %ComputeLoop5814 %.lcssa9129 = phi i32 [ %8150, %ComputeLoop5814 ] %.lcssa9128 = phi i32 [ %8151, %ComputeLoop5814 ] %div8.i.i.i.i.i2898 = lshr i32 %spec.store.select.i.i.i2897, 5 %idxprom.i.i.i.i.i2899 = zext nneg i32 %div8.i.i.i.i.i2898 to i64 %8156 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i2899 %8157 = trunc i64 %4063 to i32 %8158 = lshr i64 %4063, 32 %8159 = trunc i64 %8158 to i32 %8160 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8157, i32 0) %8161 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8159, i32 %8160) %8162 = icmp eq i32 %8161, 0 %8163 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8162) %8164 = extractvalue { i1, i64 } %8163, 0 %8165 = extractvalue { i1, i64 } %8163, 1 br i1 %8164, label %4067, label %4069 Flow7953: ; preds = %4087, %if.then.i.i.i.i2908 %8166 = phi i1 [ false, %4087 ], [ true, %if.then.i.i.i.i2908 ] br i1 %8166, label %if.end14.i.i.i2979, label %Flow7954, !amdgpu.uniform !42 ComputeLoop5819: ; preds = %if.then12.i.i.i2913, %ComputeLoop5819 %Accumulator5821 = phi i32 [ %8170, %ComputeLoop5819 ], [ -1, %if.then12.i.i.i2913 ] %ActiveBits5822 = phi i64 [ %8173, %ComputeLoop5819 ], [ %4084, %if.then12.i.i.i2913 ] %8167 = call i64 @llvm.cttz.i64(i64 %ActiveBits5822, i1 true) %8168 = trunc i64 %8167 to i32 %8169 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i2919, i32 %8168) %8170 = and i32 %Accumulator5821, %8169 %8171 = shl i64 1, %8167 %8172 = xor i64 %8171, -1 %8173 = and i64 %ActiveBits5822, %8172 %8174 = icmp eq i64 %8173, 0 br i1 %8174, label %ComputeEnd5820, label %ComputeLoop5819, !amdgpu.uniform !42 ComputeEnd5820: ; preds = %ComputeLoop5819 %.lcssa9130 = phi i32 [ %8170, %ComputeLoop5819 ] %8175 = trunc i64 %4084 to i32 %8176 = lshr i64 %4084, 32 %8177 = trunc i64 %8176 to i32 %8178 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8175, i32 0) %8179 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8177, i32 %8178) %8180 = icmp eq i32 %8179, 0 %8181 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8180) %8182 = extractvalue { i1, i64 } %8181, 0 %8183 = extractvalue { i1, i64 } %8181, 1 br i1 %8182, label %4085, label %4087 ComputeLoop5823: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit2987, %ComputeLoop5823 %Accumulator5825 = phi i32 [ %8187, %ComputeLoop5823 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit2987 ] %ActiveBits5826 = phi i64 [ %8190, %ComputeLoop5823 ], [ %4165, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit2987 ] %8184 = call i64 @llvm.cttz.i64(i64 %ActiveBits5826, i1 true) %8185 = trunc i64 %8184 to i32 %8186 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i2978, i32 %8185) %8187 = and i32 %Accumulator5825, %8186 %8188 = shl i64 1, %8184 %8189 = xor i64 %8188, -1 %8190 = and i64 %ActiveBits5826, %8189 %8191 = icmp eq i64 %8190, 0 br i1 %8191, label %ComputeEnd5824, label %ComputeLoop5823, !amdgpu.uniform !42 ComputeEnd5824: ; preds = %ComputeLoop5823 %.lcssa9138 = phi i32 [ %8187, %ComputeLoop5823 ] %8192 = trunc i64 %4165 to i32 %8193 = lshr i64 %4165, 32 %8194 = trunc i64 %8193 to i32 %8195 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8192, i32 0) %8196 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8194, i32 %8195) %8197 = icmp eq i32 %8196, 0 %8198 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8197) %8199 = extractvalue { i1, i64 } %8198, 0 %8200 = extractvalue { i1, i64 } %8198, 1 br i1 %8199, label %4166, label %4169 ComputeLoop5827: ; preds = %for.cond.i.i.i3046, %ComputeLoop5827 %Accumulator5829 = phi i32 [ %8205, %ComputeLoop5827 ], [ 0, %for.cond.i.i.i3046 ] %OldValuePhi5830 = phi i32 [ %8204, %ComputeLoop5827 ], [ poison, %for.cond.i.i.i3046 ] %ActiveBits5831 = phi i64 [ %8208, %ComputeLoop5827 ], [ %4232, %for.cond.i.i.i3046 ] %8201 = call i64 @llvm.cttz.i64(i64 %ActiveBits5831, i1 true) %8202 = trunc i64 %8201 to i32 %8203 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i3058, i32 %8202) %8204 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator5829, i32 %8202, i32 %OldValuePhi5830) %8205 = or i32 %Accumulator5829, %8203 %8206 = shl i64 1, %8201 %8207 = xor i64 %8206, -1 %8208 = and i64 %ActiveBits5831, %8207 %8209 = icmp eq i64 %8208, 0 br i1 %8209, label %ComputeEnd5828, label %ComputeLoop5827, !amdgpu.uniform !42 ComputeEnd5828: ; preds = %ComputeLoop5827 %.lcssa9140 = phi i32 [ %8204, %ComputeLoop5827 ] %.lcssa9139 = phi i32 [ %8205, %ComputeLoop5827 ] %div8.i.i.i.i.i3054 = lshr i32 %spec.store.select.i.i.i3053, 5 %idxprom.i.i.i.i.i3055 = zext nneg i32 %div8.i.i.i.i.i3054 to i64 %8210 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i3055 %8211 = trunc i64 %4232 to i32 %8212 = lshr i64 %4232, 32 %8213 = trunc i64 %8212 to i32 %8214 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8211, i32 0) %8215 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8213, i32 %8214) %8216 = icmp eq i32 %8215, 0 %8217 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8216) %8218 = extractvalue { i1, i64 } %8217, 0 %8219 = extractvalue { i1, i64 } %8217, 1 br i1 %8218, label %4236, label %4238 Flow8033: ; preds = %4256, %if.then.i.i.i.i3064 %8220 = phi i1 [ false, %4256 ], [ true, %if.then.i.i.i.i3064 ] br i1 %8220, label %if.end14.i.i.i3136, label %Flow8034, !amdgpu.uniform !42 ComputeLoop5832: ; preds = %if.then12.i.i.i3069, %ComputeLoop5832 %Accumulator5834 = phi i32 [ %8224, %ComputeLoop5832 ], [ -1, %if.then12.i.i.i3069 ] %ActiveBits5835 = phi i64 [ %8227, %ComputeLoop5832 ], [ %4253, %if.then12.i.i.i3069 ] %8221 = call i64 @llvm.cttz.i64(i64 %ActiveBits5835, i1 true) %8222 = trunc i64 %8221 to i32 %8223 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i3075, i32 %8222) %8224 = and i32 %Accumulator5834, %8223 %8225 = shl i64 1, %8221 %8226 = xor i64 %8225, -1 %8227 = and i64 %ActiveBits5835, %8226 %8228 = icmp eq i64 %8227, 0 br i1 %8228, label %ComputeEnd5833, label %ComputeLoop5832, !amdgpu.uniform !42 ComputeEnd5833: ; preds = %ComputeLoop5832 %.lcssa9141 = phi i32 [ %8224, %ComputeLoop5832 ] %8229 = trunc i64 %4253 to i32 %8230 = lshr i64 %4253, 32 %8231 = trunc i64 %8230 to i32 %8232 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8229, i32 0) %8233 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8231, i32 %8232) %8234 = icmp eq i32 %8233, 0 %8235 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8234) %8236 = extractvalue { i1, i64 } %8235, 0 %8237 = extractvalue { i1, i64 } %8235, 1 br i1 %8236, label %4254, label %4256 ComputeLoop5836: ; preds = %_ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i3125, %ComputeLoop5836 %Accumulator5838 = phi i32 [ %8241, %ComputeLoop5836 ], [ -1, %_ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i3125 ] %ActiveBits5839 = phi i64 [ %8244, %ComputeLoop5836 ], [ %4338, %_ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i3125 ] %8238 = call i64 @llvm.cttz.i64(i64 %ActiveBits5839, i1 true) %8239 = trunc i64 %8238 to i32 %8240 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i3134, i32 %8239) %8241 = and i32 %Accumulator5838, %8240 %8242 = shl i64 1, %8238 %8243 = xor i64 %8242, -1 %8244 = and i64 %ActiveBits5839, %8243 %8245 = icmp eq i64 %8244, 0 br i1 %8245, label %ComputeEnd5837, label %ComputeLoop5836, !amdgpu.uniform !42 ComputeEnd5837: ; preds = %ComputeLoop5836 %.lcssa9149 = phi i32 [ %8241, %ComputeLoop5836 ] %8246 = trunc i64 %4338 to i32 %8247 = lshr i64 %4338, 32 %8248 = trunc i64 %8247 to i32 %8249 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8246, i32 0) %8250 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8248, i32 %8249) %8251 = icmp eq i32 %8250, 0 %8252 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8251) %8253 = extractvalue { i1, i64 } %8252, 0 %8254 = extractvalue { i1, i64 } %8252, 1 br i1 %8253, label %4339, label %4342 ComputeLoop5840: ; preds = %for.cond.i.i1.i3165, %ComputeLoop5840 %Accumulator5842 = phi i32 [ %8259, %ComputeLoop5840 ], [ 0, %for.cond.i.i1.i3165 ] %OldValuePhi5843 = phi i32 [ %8258, %ComputeLoop5840 ], [ poison, %for.cond.i.i1.i3165 ] %ActiveBits5844 = phi i64 [ %8262, %ComputeLoop5840 ], [ %4347, %for.cond.i.i1.i3165 ] %8255 = call i64 @llvm.cttz.i64(i64 %ActiveBits5844, i1 true) %8256 = trunc i64 %8255 to i32 %8257 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i3177, i32 %8256) %8258 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator5842, i32 %8256, i32 %OldValuePhi5843) %8259 = or i32 %Accumulator5842, %8257 %8260 = shl i64 1, %8255 %8261 = xor i64 %8260, -1 %8262 = and i64 %ActiveBits5844, %8261 %8263 = icmp eq i64 %8262, 0 br i1 %8263, label %ComputeEnd5841, label %ComputeLoop5840, !amdgpu.uniform !42 ComputeEnd5841: ; preds = %ComputeLoop5840 %.lcssa9151 = phi i32 [ %8258, %ComputeLoop5840 ] %.lcssa9150 = phi i32 [ %8259, %ComputeLoop5840 ] %div8.i.i.i.i.i3173 = lshr i32 %spec.store.select.i.i.i3172, 5 %idxprom.i.i.i.i.i3174 = zext nneg i32 %div8.i.i.i.i.i3173 to i64 %8264 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i3174 %8265 = trunc i64 %4347 to i32 %8266 = lshr i64 %4347, 32 %8267 = trunc i64 %8266 to i32 %8268 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8265, i32 0) %8269 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8267, i32 %8268) %8270 = icmp eq i32 %8269, 0 %8271 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8270) %8272 = extractvalue { i1, i64 } %8271, 0 %8273 = extractvalue { i1, i64 } %8271, 1 br i1 %8272, label %4351, label %4353 Flow8014: ; preds = %4371, %if.then.i.i.i.i3183 %8274 = phi i1 [ false, %4371 ], [ true, %if.then.i.i.i.i3183 ] br i1 %8274, label %if.end14.i.i.i3254, label %Flow8015, !amdgpu.uniform !42 ComputeLoop5845: ; preds = %if.then12.i.i.i3188, %ComputeLoop5845 %Accumulator5847 = phi i32 [ %8278, %ComputeLoop5845 ], [ -1, %if.then12.i.i.i3188 ] %ActiveBits5848 = phi i64 [ %8281, %ComputeLoop5845 ], [ %4368, %if.then12.i.i.i3188 ] %8275 = call i64 @llvm.cttz.i64(i64 %ActiveBits5848, i1 true) %8276 = trunc i64 %8275 to i32 %8277 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i3194, i32 %8276) %8278 = and i32 %Accumulator5847, %8277 %8279 = shl i64 1, %8275 %8280 = xor i64 %8279, -1 %8281 = and i64 %ActiveBits5848, %8280 %8282 = icmp eq i64 %8281, 0 br i1 %8282, label %ComputeEnd5846, label %ComputeLoop5845, !amdgpu.uniform !42 ComputeEnd5846: ; preds = %ComputeLoop5845 %.lcssa9152 = phi i32 [ %8278, %ComputeLoop5845 ] %8283 = trunc i64 %4368 to i32 %8284 = lshr i64 %4368, 32 %8285 = trunc i64 %8284 to i32 %8286 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8283, i32 0) %8287 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8285, i32 %8286) %8288 = icmp eq i32 %8287, 0 %8289 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8288) %8290 = extractvalue { i1, i64 } %8289, 0 %8291 = extractvalue { i1, i64 } %8289, 1 br i1 %8290, label %4369, label %4371 ComputeLoop5849: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit3262, %ComputeLoop5849 %Accumulator5851 = phi i32 [ %8295, %ComputeLoop5849 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit3262 ] %ActiveBits5852 = phi i64 [ %8298, %ComputeLoop5849 ], [ %4449, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit3262 ] %8292 = call i64 @llvm.cttz.i64(i64 %ActiveBits5852, i1 true) %8293 = trunc i64 %8292 to i32 %8294 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i3253, i32 %8293) %8295 = and i32 %Accumulator5851, %8294 %8296 = shl i64 1, %8292 %8297 = xor i64 %8296, -1 %8298 = and i64 %ActiveBits5852, %8297 %8299 = icmp eq i64 %8298, 0 br i1 %8299, label %ComputeEnd5850, label %ComputeLoop5849, !amdgpu.uniform !42 ComputeEnd5850: ; preds = %ComputeLoop5849 %.lcssa9160 = phi i32 [ %8295, %ComputeLoop5849 ] %8300 = trunc i64 %4449 to i32 %8301 = lshr i64 %4449, 32 %8302 = trunc i64 %8301 to i32 %8303 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8300, i32 0) %8304 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8302, i32 %8303) %8305 = icmp eq i32 %8304, 0 %8306 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8305) %8307 = extractvalue { i1, i64 } %8306, 0 %8308 = extractvalue { i1, i64 } %8306, 1 br i1 %8307, label %4450, label %4453 ComputeLoop5853: ; preds = %for.cond.i.i1.i3271, %ComputeLoop5853 %Accumulator5855 = phi i32 [ %8313, %ComputeLoop5853 ], [ 0, %for.cond.i.i1.i3271 ] %OldValuePhi5856 = phi i32 [ %8312, %ComputeLoop5853 ], [ poison, %for.cond.i.i1.i3271 ] %ActiveBits5857 = phi i64 [ %8316, %ComputeLoop5853 ], [ %4460, %for.cond.i.i1.i3271 ] %8309 = call i64 @llvm.cttz.i64(i64 %ActiveBits5857, i1 true) %8310 = trunc i64 %8309 to i32 %8311 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i3283, i32 %8310) %8312 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator5855, i32 %8310, i32 %OldValuePhi5856) %8313 = or i32 %Accumulator5855, %8311 %8314 = shl i64 1, %8309 %8315 = xor i64 %8314, -1 %8316 = and i64 %ActiveBits5857, %8315 %8317 = icmp eq i64 %8316, 0 br i1 %8317, label %ComputeEnd5854, label %ComputeLoop5853, !amdgpu.uniform !42 ComputeEnd5854: ; preds = %ComputeLoop5853 %.lcssa8928 = phi i32 [ %8312, %ComputeLoop5853 ] %.lcssa8927 = phi i32 [ %8313, %ComputeLoop5853 ] %div8.i.i.i.i.i3279 = lshr i32 %spec.store.select.i.i.i3278, 5 %idxprom.i.i.i.i.i3280 = zext nneg i32 %div8.i.i.i.i.i3279 to i64 %8318 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i3280 %8319 = trunc i64 %4460 to i32 %8320 = lshr i64 %4460, 32 %8321 = trunc i64 %8320 to i32 %8322 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8319, i32 0) %8323 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8321, i32 %8322) %8324 = icmp eq i32 %8323, 0 %8325 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8324) %8326 = extractvalue { i1, i64 } %8325, 0 %8327 = extractvalue { i1, i64 } %8325, 1 br i1 %8326, label %4464, label %4466 Flow7912: ; preds = %4484, %if.then.i.i.i.i3289 %8328 = phi i1 [ false, %4484 ], [ true, %if.then.i.i.i.i3289 ] br i1 %8328, label %if.end14.i.i.i3360, label %Flow7913, !amdgpu.uniform !42 ComputeLoop5858: ; preds = %if.then12.i.i.i3294, %ComputeLoop5858 %Accumulator5860 = phi i32 [ %8332, %ComputeLoop5858 ], [ -1, %if.then12.i.i.i3294 ] %ActiveBits5861 = phi i64 [ %8335, %ComputeLoop5858 ], [ %4481, %if.then12.i.i.i3294 ] %8329 = call i64 @llvm.cttz.i64(i64 %ActiveBits5861, i1 true) %8330 = trunc i64 %8329 to i32 %8331 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i3300, i32 %8330) %8332 = and i32 %Accumulator5860, %8331 %8333 = shl i64 1, %8329 %8334 = xor i64 %8333, -1 %8335 = and i64 %ActiveBits5861, %8334 %8336 = icmp eq i64 %8335, 0 br i1 %8336, label %ComputeEnd5859, label %ComputeLoop5858, !amdgpu.uniform !42 ComputeEnd5859: ; preds = %ComputeLoop5858 %.lcssa8929 = phi i32 [ %8332, %ComputeLoop5858 ] %8337 = trunc i64 %4481 to i32 %8338 = lshr i64 %4481, 32 %8339 = trunc i64 %8338 to i32 %8340 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8337, i32 0) %8341 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8339, i32 %8340) %8342 = icmp eq i32 %8341, 0 %8343 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8342) %8344 = extractvalue { i1, i64 } %8343, 0 %8345 = extractvalue { i1, i64 } %8343, 1 br i1 %8344, label %4482, label %4484 ComputeLoop5862: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit3368, %ComputeLoop5862 %Accumulator5864 = phi i32 [ %8349, %ComputeLoop5862 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit3368 ] %ActiveBits5865 = phi i64 [ %8352, %ComputeLoop5862 ], [ %4563, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit3368 ] %8346 = call i64 @llvm.cttz.i64(i64 %ActiveBits5865, i1 true) %8347 = trunc i64 %8346 to i32 %8348 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i3359, i32 %8347) %8349 = and i32 %Accumulator5864, %8348 %8350 = shl i64 1, %8346 %8351 = xor i64 %8350, -1 %8352 = and i64 %ActiveBits5865, %8351 %8353 = icmp eq i64 %8352, 0 br i1 %8353, label %ComputeEnd5863, label %ComputeLoop5862, !amdgpu.uniform !42 ComputeEnd5863: ; preds = %ComputeLoop5862 %.lcssa8923 = phi i32 [ %8349, %ComputeLoop5862 ] %8354 = trunc i64 %4563 to i32 %8355 = lshr i64 %4563, 32 %8356 = trunc i64 %8355 to i32 %8357 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8354, i32 0) %8358 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8356, i32 %8357) %8359 = icmp eq i32 %8358, 0 %8360 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8359) %8361 = extractvalue { i1, i64 } %8360, 0 %8362 = extractvalue { i1, i64 } %8360, 1 br i1 %8361, label %4564, label %4567 ComputeLoop5866: ; preds = %for.cond.i.i.i3437, %ComputeLoop5866 %Accumulator5868 = phi i32 [ %8367, %ComputeLoop5866 ], [ 0, %for.cond.i.i.i3437 ] %OldValuePhi5869 = phi i32 [ %8366, %ComputeLoop5866 ], [ poison, %for.cond.i.i.i3437 ] %ActiveBits5870 = phi i64 [ %8370, %ComputeLoop5866 ], [ %4685, %for.cond.i.i.i3437 ] %8363 = call i64 @llvm.cttz.i64(i64 %ActiveBits5870, i1 true) %8364 = trunc i64 %8363 to i32 %8365 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i3449, i32 %8364) %8366 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator5868, i32 %8364, i32 %OldValuePhi5869) %8367 = or i32 %Accumulator5868, %8365 %8368 = shl i64 1, %8363 %8369 = xor i64 %8368, -1 %8370 = and i64 %ActiveBits5870, %8369 %8371 = icmp eq i64 %8370, 0 br i1 %8371, label %ComputeEnd5867, label %ComputeLoop5866, !amdgpu.uniform !42 ComputeEnd5867: ; preds = %ComputeLoop5866 %.lcssa8914 = phi i32 [ %8366, %ComputeLoop5866 ] %.lcssa8913 = phi i32 [ %8367, %ComputeLoop5866 ] %div8.i.i.i.i.i3445 = lshr i32 %spec.store.select.i.i.i3444, 5 %idxprom.i.i.i.i.i3446 = zext nneg i32 %div8.i.i.i.i.i3445 to i64 %8372 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i3446 %8373 = trunc i64 %4685 to i32 %8374 = lshr i64 %4685, 32 %8375 = trunc i64 %8374 to i32 %8376 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8373, i32 0) %8377 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8375, i32 %8376) %8378 = icmp eq i32 %8377, 0 %8379 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8378) %8380 = extractvalue { i1, i64 } %8379, 0 %8381 = extractvalue { i1, i64 } %8379, 1 br i1 %8380, label %4689, label %4691 Flow7870: ; preds = %4709, %if.then.i.i.i.i3455 %8382 = phi i1 [ false, %4709 ], [ true, %if.then.i.i.i.i3455 ] br i1 %8382, label %if.end14.i.i.i3527, label %Flow7871, !amdgpu.uniform !42 ComputeLoop5871: ; preds = %if.then12.i.i.i3460, %ComputeLoop5871 %Accumulator5873 = phi i32 [ %8386, %ComputeLoop5871 ], [ -1, %if.then12.i.i.i3460 ] %ActiveBits5874 = phi i64 [ %8389, %ComputeLoop5871 ], [ %4706, %if.then12.i.i.i3460 ] %8383 = call i64 @llvm.cttz.i64(i64 %ActiveBits5874, i1 true) %8384 = trunc i64 %8383 to i32 %8385 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i3466, i32 %8384) %8386 = and i32 %Accumulator5873, %8385 %8387 = shl i64 1, %8383 %8388 = xor i64 %8387, -1 %8389 = and i64 %ActiveBits5874, %8388 %8390 = icmp eq i64 %8389, 0 br i1 %8390, label %ComputeEnd5872, label %ComputeLoop5871, !amdgpu.uniform !42 ComputeEnd5872: ; preds = %ComputeLoop5871 %.lcssa8915 = phi i32 [ %8386, %ComputeLoop5871 ] %8391 = trunc i64 %4706 to i32 %8392 = lshr i64 %4706, 32 %8393 = trunc i64 %8392 to i32 %8394 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8391, i32 0) %8395 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8393, i32 %8394) %8396 = icmp eq i32 %8395, 0 %8397 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8396) %8398 = extractvalue { i1, i64 } %8397, 0 %8399 = extractvalue { i1, i64 } %8397, 1 br i1 %8398, label %4707, label %4709 ComputeLoop5875: ; preds = %_ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i3516, %ComputeLoop5875 %Accumulator5877 = phi i32 [ %8403, %ComputeLoop5875 ], [ -1, %_ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i3516 ] %ActiveBits5878 = phi i64 [ %8406, %ComputeLoop5875 ], [ %4804, %_ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i3516 ] %8400 = call i64 @llvm.cttz.i64(i64 %ActiveBits5878, i1 true) %8401 = trunc i64 %8400 to i32 %8402 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i3525, i32 %8401) %8403 = and i32 %Accumulator5877, %8402 %8404 = shl i64 1, %8400 %8405 = xor i64 %8404, -1 %8406 = and i64 %ActiveBits5878, %8405 %8407 = icmp eq i64 %8406, 0 br i1 %8407, label %ComputeEnd5876, label %ComputeLoop5875, !amdgpu.uniform !42 ComputeEnd5876: ; preds = %ComputeLoop5875 %.lcssa8905 = phi i32 [ %8403, %ComputeLoop5875 ] %8408 = trunc i64 %4804 to i32 %8409 = lshr i64 %4804, 32 %8410 = trunc i64 %8409 to i32 %8411 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8408, i32 0) %8412 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8410, i32 %8411) %8413 = icmp eq i32 %8412, 0 %8414 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8413) %8415 = extractvalue { i1, i64 } %8414, 0 %8416 = extractvalue { i1, i64 } %8414, 1 br i1 %8415, label %4805, label %4808 ComputeLoop5879: ; preds = %for.cond.i.i1.i3556, %ComputeLoop5879 %Accumulator5881 = phi i32 [ %8421, %ComputeLoop5879 ], [ 0, %for.cond.i.i1.i3556 ] %OldValuePhi5882 = phi i32 [ %8420, %ComputeLoop5879 ], [ poison, %for.cond.i.i1.i3556 ] %ActiveBits5883 = phi i64 [ %8424, %ComputeLoop5879 ], [ %4813, %for.cond.i.i1.i3556 ] %8417 = call i64 @llvm.cttz.i64(i64 %ActiveBits5883, i1 true) %8418 = trunc i64 %8417 to i32 %8419 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i3568, i32 %8418) %8420 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator5881, i32 %8418, i32 %OldValuePhi5882) %8421 = or i32 %Accumulator5881, %8419 %8422 = shl i64 1, %8417 %8423 = xor i64 %8422, -1 %8424 = and i64 %ActiveBits5883, %8423 %8425 = icmp eq i64 %8424, 0 br i1 %8425, label %ComputeEnd5880, label %ComputeLoop5879, !amdgpu.uniform !42 ComputeEnd5880: ; preds = %ComputeLoop5879 %.lcssa8900 = phi i32 [ %8420, %ComputeLoop5879 ] %.lcssa8899 = phi i32 [ %8421, %ComputeLoop5879 ] %div8.i.i.i.i.i3564 = lshr i32 %spec.store.select.i.i.i3563, 5 %idxprom.i.i.i.i.i3565 = zext nneg i32 %div8.i.i.i.i.i3564 to i64 %8426 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i3565 %8427 = trunc i64 %4813 to i32 %8428 = lshr i64 %4813, 32 %8429 = trunc i64 %8428 to i32 %8430 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8427, i32 0) %8431 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8429, i32 %8430) %8432 = icmp eq i32 %8431, 0 %8433 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8432) %8434 = extractvalue { i1, i64 } %8433, 0 %8435 = extractvalue { i1, i64 } %8433, 1 br i1 %8434, label %4817, label %4819 Flow7851: ; preds = %4837, %if.then.i.i.i.i3574 %8436 = phi i1 [ false, %4837 ], [ true, %if.then.i.i.i.i3574 ] br i1 %8436, label %if.end14.i.i.i3645, label %Flow7852, !amdgpu.uniform !42 ComputeLoop5884: ; preds = %if.then12.i.i.i3579, %ComputeLoop5884 %Accumulator5886 = phi i32 [ %8440, %ComputeLoop5884 ], [ -1, %if.then12.i.i.i3579 ] %ActiveBits5887 = phi i64 [ %8443, %ComputeLoop5884 ], [ %4834, %if.then12.i.i.i3579 ] %8437 = call i64 @llvm.cttz.i64(i64 %ActiveBits5887, i1 true) %8438 = trunc i64 %8437 to i32 %8439 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i3585, i32 %8438) %8440 = and i32 %Accumulator5886, %8439 %8441 = shl i64 1, %8437 %8442 = xor i64 %8441, -1 %8443 = and i64 %ActiveBits5887, %8442 %8444 = icmp eq i64 %8443, 0 br i1 %8444, label %ComputeEnd5885, label %ComputeLoop5884, !amdgpu.uniform !42 ComputeEnd5885: ; preds = %ComputeLoop5884 %.lcssa8901 = phi i32 [ %8440, %ComputeLoop5884 ] %8445 = trunc i64 %4834 to i32 %8446 = lshr i64 %4834, 32 %8447 = trunc i64 %8446 to i32 %8448 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8445, i32 0) %8449 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8447, i32 %8448) %8450 = icmp eq i32 %8449, 0 %8451 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8450) %8452 = extractvalue { i1, i64 } %8451, 0 %8453 = extractvalue { i1, i64 } %8451, 1 br i1 %8452, label %4835, label %4837 ComputeLoop5888: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit3653, %ComputeLoop5888 %Accumulator5890 = phi i32 [ %8457, %ComputeLoop5888 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit3653 ] %ActiveBits5891 = phi i64 [ %8460, %ComputeLoop5888 ], [ %4914, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit3653 ] %8454 = call i64 @llvm.cttz.i64(i64 %ActiveBits5891, i1 true) %8455 = trunc i64 %8454 to i32 %8456 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i3644, i32 %8455) %8457 = and i32 %Accumulator5890, %8456 %8458 = shl i64 1, %8454 %8459 = xor i64 %8458, -1 %8460 = and i64 %ActiveBits5891, %8459 %8461 = icmp eq i64 %8460, 0 br i1 %8461, label %ComputeEnd5889, label %ComputeLoop5888, !amdgpu.uniform !42 ComputeEnd5889: ; preds = %ComputeLoop5888 %.lcssa8895 = phi i32 [ %8457, %ComputeLoop5888 ] %8462 = trunc i64 %4914 to i32 %8463 = lshr i64 %4914, 32 %8464 = trunc i64 %8463 to i32 %8465 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8462, i32 0) %8466 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8464, i32 %8465) %8467 = icmp eq i32 %8466, 0 %8468 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8467) %8469 = extractvalue { i1, i64 } %8468, 0 %8470 = extractvalue { i1, i64 } %8468, 1 br i1 %8469, label %4915, label %4918 ComputeLoop5892: ; preds = %for.cond.i.i1.i3662, %ComputeLoop5892 %Accumulator5894 = phi i32 [ %8475, %ComputeLoop5892 ], [ 0, %for.cond.i.i1.i3662 ] %OldValuePhi5895 = phi i32 [ %8474, %ComputeLoop5892 ], [ poison, %for.cond.i.i1.i3662 ] %ActiveBits5896 = phi i64 [ %8478, %ComputeLoop5892 ], [ %4923, %for.cond.i.i1.i3662 ] %8471 = call i64 @llvm.cttz.i64(i64 %ActiveBits5896, i1 true) %8472 = trunc i64 %8471 to i32 %8473 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i3674, i32 %8472) %8474 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator5894, i32 %8472, i32 %OldValuePhi5895) %8475 = or i32 %Accumulator5894, %8473 %8476 = shl i64 1, %8471 %8477 = xor i64 %8476, -1 %8478 = and i64 %ActiveBits5896, %8477 %8479 = icmp eq i64 %8478, 0 br i1 %8479, label %ComputeEnd5893, label %ComputeLoop5892, !amdgpu.uniform !42 ComputeEnd5893: ; preds = %ComputeLoop5892 %.lcssa8890 = phi i32 [ %8474, %ComputeLoop5892 ] %.lcssa8889 = phi i32 [ %8475, %ComputeLoop5892 ] %div8.i.i.i.i.i3670 = lshr i32 %spec.store.select.i.i.i3669, 5 %idxprom.i.i.i.i.i3671 = zext nneg i32 %div8.i.i.i.i.i3670 to i64 %8480 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i3671 %8481 = trunc i64 %4923 to i32 %8482 = lshr i64 %4923, 32 %8483 = trunc i64 %8482 to i32 %8484 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8481, i32 0) %8485 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8483, i32 %8484) %8486 = icmp eq i32 %8485, 0 %8487 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8486) %8488 = extractvalue { i1, i64 } %8487, 0 %8489 = extractvalue { i1, i64 } %8487, 1 br i1 %8488, label %4927, label %4929 Flow7832: ; preds = %4947, %if.then.i.i.i.i3680 %8490 = phi i1 [ false, %4947 ], [ true, %if.then.i.i.i.i3680 ] br i1 %8490, label %if.end14.i.i.i3751, label %Flow7833, !amdgpu.uniform !42 ComputeLoop5897: ; preds = %if.then12.i.i.i3685, %ComputeLoop5897 %Accumulator5899 = phi i32 [ %8494, %ComputeLoop5897 ], [ -1, %if.then12.i.i.i3685 ] %ActiveBits5900 = phi i64 [ %8497, %ComputeLoop5897 ], [ %4944, %if.then12.i.i.i3685 ] %8491 = call i64 @llvm.cttz.i64(i64 %ActiveBits5900, i1 true) %8492 = trunc i64 %8491 to i32 %8493 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i3691, i32 %8492) %8494 = and i32 %Accumulator5899, %8493 %8495 = shl i64 1, %8491 %8496 = xor i64 %8495, -1 %8497 = and i64 %ActiveBits5900, %8496 %8498 = icmp eq i64 %8497, 0 br i1 %8498, label %ComputeEnd5898, label %ComputeLoop5897, !amdgpu.uniform !42 ComputeEnd5898: ; preds = %ComputeLoop5897 %.lcssa8891 = phi i32 [ %8494, %ComputeLoop5897 ] %8499 = trunc i64 %4944 to i32 %8500 = lshr i64 %4944, 32 %8501 = trunc i64 %8500 to i32 %8502 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8499, i32 0) %8503 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8501, i32 %8502) %8504 = icmp eq i32 %8503, 0 %8505 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8504) %8506 = extractvalue { i1, i64 } %8505, 0 %8507 = extractvalue { i1, i64 } %8505, 1 br i1 %8506, label %4945, label %4947 ComputeLoop5901: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit3759, %ComputeLoop5901 %Accumulator5903 = phi i32 [ %8511, %ComputeLoop5901 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit3759 ] %ActiveBits5904 = phi i64 [ %8514, %ComputeLoop5901 ], [ %5024, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit3759 ] %8508 = call i64 @llvm.cttz.i64(i64 %ActiveBits5904, i1 true) %8509 = trunc i64 %8508 to i32 %8510 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i3750, i32 %8509) %8511 = and i32 %Accumulator5903, %8510 %8512 = shl i64 1, %8508 %8513 = xor i64 %8512, -1 %8514 = and i64 %ActiveBits5904, %8513 %8515 = icmp eq i64 %8514, 0 br i1 %8515, label %ComputeEnd5902, label %ComputeLoop5901, !amdgpu.uniform !42 ComputeEnd5902: ; preds = %ComputeLoop5901 %.lcssa8885 = phi i32 [ %8511, %ComputeLoop5901 ] %8516 = trunc i64 %5024 to i32 %8517 = lshr i64 %5024, 32 %8518 = trunc i64 %8517 to i32 %8519 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8516, i32 0) %8520 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8518, i32 %8519) %8521 = icmp eq i32 %8520, 0 %8522 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8521) %8523 = extractvalue { i1, i64 } %8522, 0 %8524 = extractvalue { i1, i64 } %8522, 1 br i1 %8523, label %5025, label %5028 ComputeLoop5905: ; preds = %for.cond.i.i.i3828, %ComputeLoop5905 %Accumulator5907 = phi i32 [ %8529, %ComputeLoop5905 ], [ 0, %for.cond.i.i.i3828 ] %OldValuePhi5908 = phi i32 [ %8528, %ComputeLoop5905 ], [ poison, %for.cond.i.i.i3828 ] %ActiveBits5909 = phi i64 [ %8532, %ComputeLoop5905 ], [ %5161, %for.cond.i.i.i3828 ] %8525 = call i64 @llvm.cttz.i64(i64 %ActiveBits5909, i1 true) %8526 = trunc i64 %8525 to i32 %8527 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i3840, i32 %8526) %8528 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator5907, i32 %8526, i32 %OldValuePhi5908) %8529 = or i32 %Accumulator5907, %8527 %8530 = shl i64 1, %8525 %8531 = xor i64 %8530, -1 %8532 = and i64 %ActiveBits5909, %8531 %8533 = icmp eq i64 %8532, 0 br i1 %8533, label %ComputeEnd5906, label %ComputeLoop5905, !amdgpu.uniform !42 ComputeEnd5906: ; preds = %ComputeLoop5905 %.lcssa8876 = phi i32 [ %8528, %ComputeLoop5905 ] %.lcssa8875 = phi i32 [ %8529, %ComputeLoop5905 ] %div8.i.i.i.i.i3836 = lshr i32 %spec.store.select.i.i.i3835, 5 %idxprom.i.i.i.i.i3837 = zext nneg i32 %div8.i.i.i.i.i3836 to i64 %8534 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i3837 %8535 = trunc i64 %5161 to i32 %8536 = lshr i64 %5161, 32 %8537 = trunc i64 %8536 to i32 %8538 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8535, i32 0) %8539 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8537, i32 %8538) %8540 = icmp eq i32 %8539, 0 %8541 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8540) %8542 = extractvalue { i1, i64 } %8541, 0 %8543 = extractvalue { i1, i64 } %8541, 1 br i1 %8542, label %5165, label %5167 Flow7787: ; preds = %5185, %if.then.i.i.i.i3846 %8544 = phi i1 [ false, %5185 ], [ true, %if.then.i.i.i.i3846 ] br i1 %8544, label %if.end14.i.i.i3918, label %Flow7788, !amdgpu.uniform !42 ComputeLoop5910: ; preds = %if.then12.i.i.i3851, %ComputeLoop5910 %Accumulator5912 = phi i32 [ %8548, %ComputeLoop5910 ], [ -1, %if.then12.i.i.i3851 ] %ActiveBits5913 = phi i64 [ %8551, %ComputeLoop5910 ], [ %5182, %if.then12.i.i.i3851 ] %8545 = call i64 @llvm.cttz.i64(i64 %ActiveBits5913, i1 true) %8546 = trunc i64 %8545 to i32 %8547 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i3857, i32 %8546) %8548 = and i32 %Accumulator5912, %8547 %8549 = shl i64 1, %8545 %8550 = xor i64 %8549, -1 %8551 = and i64 %ActiveBits5913, %8550 %8552 = icmp eq i64 %8551, 0 br i1 %8552, label %ComputeEnd5911, label %ComputeLoop5910, !amdgpu.uniform !42 ComputeEnd5911: ; preds = %ComputeLoop5910 %.lcssa8877 = phi i32 [ %8548, %ComputeLoop5910 ] %8553 = trunc i64 %5182 to i32 %8554 = lshr i64 %5182, 32 %8555 = trunc i64 %8554 to i32 %8556 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8553, i32 0) %8557 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8555, i32 %8556) %8558 = icmp eq i32 %8557, 0 %8559 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8558) %8560 = extractvalue { i1, i64 } %8559, 0 %8561 = extractvalue { i1, i64 } %8559, 1 br i1 %8560, label %5183, label %5185 ComputeLoop5914: ; preds = %_ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i3907, %ComputeLoop5914 %Accumulator5916 = phi i32 [ %8565, %ComputeLoop5914 ], [ -1, %_ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i3907 ] %ActiveBits5917 = phi i64 [ %8568, %ComputeLoop5914 ], [ %5280, %_ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i3907 ] %8562 = call i64 @llvm.cttz.i64(i64 %ActiveBits5917, i1 true) %8563 = trunc i64 %8562 to i32 %8564 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i3916, i32 %8563) %8565 = and i32 %Accumulator5916, %8564 %8566 = shl i64 1, %8562 %8567 = xor i64 %8566, -1 %8568 = and i64 %ActiveBits5917, %8567 %8569 = icmp eq i64 %8568, 0 br i1 %8569, label %ComputeEnd5915, label %ComputeLoop5914, !amdgpu.uniform !42 ComputeEnd5915: ; preds = %ComputeLoop5914 %.lcssa8867 = phi i32 [ %8565, %ComputeLoop5914 ] %8570 = trunc i64 %5280 to i32 %8571 = lshr i64 %5280, 32 %8572 = trunc i64 %8571 to i32 %8573 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8570, i32 0) %8574 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8572, i32 %8573) %8575 = icmp eq i32 %8574, 0 %8576 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8575) %8577 = extractvalue { i1, i64 } %8576, 0 %8578 = extractvalue { i1, i64 } %8576, 1 br i1 %8577, label %5281, label %5284 ComputeLoop5918: ; preds = %for.cond.i.i.i3942, %ComputeLoop5918 %Accumulator5920 = phi i32 [ %8583, %ComputeLoop5918 ], [ 0, %for.cond.i.i.i3942 ] %OldValuePhi5921 = phi i32 [ %8582, %ComputeLoop5918 ], [ poison, %for.cond.i.i.i3942 ] %ActiveBits5922 = phi i64 [ %8586, %ComputeLoop5918 ], [ %5289, %for.cond.i.i.i3942 ] %8579 = call i64 @llvm.cttz.i64(i64 %ActiveBits5922, i1 true) %8580 = trunc i64 %8579 to i32 %8581 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i3954, i32 %8580) %8582 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator5920, i32 %8580, i32 %OldValuePhi5921) %8583 = or i32 %Accumulator5920, %8581 %8584 = shl i64 1, %8579 %8585 = xor i64 %8584, -1 %8586 = and i64 %ActiveBits5922, %8585 %8587 = icmp eq i64 %8586, 0 br i1 %8587, label %ComputeEnd5919, label %ComputeLoop5918, !amdgpu.uniform !42 ComputeEnd5919: ; preds = %ComputeLoop5918 %.lcssa8862 = phi i32 [ %8582, %ComputeLoop5918 ] %.lcssa8861 = phi i32 [ %8583, %ComputeLoop5918 ] %div8.i.i.i.i.i3950 = lshr i32 %spec.store.select.i.i.i3949, 5 %idxprom.i.i.i.i.i3951 = zext nneg i32 %div8.i.i.i.i.i3950 to i64 %8588 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i3951 %8589 = trunc i64 %5289 to i32 %8590 = lshr i64 %5289, 32 %8591 = trunc i64 %8590 to i32 %8592 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8589, i32 0) %8593 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8591, i32 %8592) %8594 = icmp eq i32 %8593, 0 %8595 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8594) %8596 = extractvalue { i1, i64 } %8595, 0 %8597 = extractvalue { i1, i64 } %8595, 1 br i1 %8596, label %5293, label %5295 Flow7768: ; preds = %5313, %if.then.i.i.i.i3960 %8598 = phi i1 [ false, %5313 ], [ true, %if.then.i.i.i.i3960 ] br i1 %8598, label %if.end14.i.i.i4029, label %Flow7769, !amdgpu.uniform !42 ComputeLoop5923: ; preds = %if.then12.i.i.i3965, %ComputeLoop5923 %Accumulator5925 = phi i32 [ %8602, %ComputeLoop5923 ], [ -1, %if.then12.i.i.i3965 ] %ActiveBits5926 = phi i64 [ %8605, %ComputeLoop5923 ], [ %5310, %if.then12.i.i.i3965 ] %8599 = call i64 @llvm.cttz.i64(i64 %ActiveBits5926, i1 true) %8600 = trunc i64 %8599 to i32 %8601 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i3971, i32 %8600) %8602 = and i32 %Accumulator5925, %8601 %8603 = shl i64 1, %8599 %8604 = xor i64 %8603, -1 %8605 = and i64 %ActiveBits5926, %8604 %8606 = icmp eq i64 %8605, 0 br i1 %8606, label %ComputeEnd5924, label %ComputeLoop5923, !amdgpu.uniform !42 ComputeEnd5924: ; preds = %ComputeLoop5923 %.lcssa8863 = phi i32 [ %8602, %ComputeLoop5923 ] %8607 = trunc i64 %5310 to i32 %8608 = lshr i64 %5310, 32 %8609 = trunc i64 %8608 to i32 %8610 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8607, i32 0) %8611 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8609, i32 %8610) %8612 = icmp eq i32 %8611, 0 %8613 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8612) %8614 = extractvalue { i1, i64 } %8613, 0 %8615 = extractvalue { i1, i64 } %8613, 1 br i1 %8614, label %5311, label %5313 ComputeLoop5927: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit4037, %ComputeLoop5927 %Accumulator5929 = phi i32 [ %8619, %ComputeLoop5927 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit4037 ] %ActiveBits5930 = phi i64 [ %8622, %ComputeLoop5927 ], [ %5365, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit4037 ] %8616 = call i64 @llvm.cttz.i64(i64 %ActiveBits5930, i1 true) %8617 = trunc i64 %8616 to i32 %8618 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i4028, i32 %8617) %8619 = and i32 %Accumulator5929, %8618 %8620 = shl i64 1, %8616 %8621 = xor i64 %8620, -1 %8622 = and i64 %ActiveBits5930, %8621 %8623 = icmp eq i64 %8622, 0 br i1 %8623, label %ComputeEnd5928, label %ComputeLoop5927, !amdgpu.uniform !42 ComputeEnd5928: ; preds = %ComputeLoop5927 %.lcssa8857 = phi i32 [ %8619, %ComputeLoop5927 ] %8624 = trunc i64 %5365 to i32 %8625 = lshr i64 %5365, 32 %8626 = trunc i64 %8625 to i32 %8627 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8624, i32 0) %8628 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8626, i32 %8627) %8629 = icmp eq i32 %8628, 0 %8630 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8629) %8631 = extractvalue { i1, i64 } %8630, 0 %8632 = extractvalue { i1, i64 } %8630, 1 br i1 %8631, label %5366, label %5369 ComputeLoop5931: ; preds = %for.cond.i.i1.i4046, %ComputeLoop5931 %Accumulator5933 = phi i32 [ %8637, %ComputeLoop5931 ], [ 0, %for.cond.i.i1.i4046 ] %OldValuePhi5934 = phi i32 [ %8636, %ComputeLoop5931 ], [ poison, %for.cond.i.i1.i4046 ] %ActiveBits5935 = phi i64 [ %8640, %ComputeLoop5931 ], [ %5374, %for.cond.i.i1.i4046 ] %8633 = call i64 @llvm.cttz.i64(i64 %ActiveBits5935, i1 true) %8634 = trunc i64 %8633 to i32 %8635 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i4058, i32 %8634) %8636 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator5933, i32 %8634, i32 %OldValuePhi5934) %8637 = or i32 %Accumulator5933, %8635 %8638 = shl i64 1, %8633 %8639 = xor i64 %8638, -1 %8640 = and i64 %ActiveBits5935, %8639 %8641 = icmp eq i64 %8640, 0 br i1 %8641, label %ComputeEnd5932, label %ComputeLoop5931, !amdgpu.uniform !42 ComputeEnd5932: ; preds = %ComputeLoop5931 %.lcssa8852 = phi i32 [ %8636, %ComputeLoop5931 ] %.lcssa8851 = phi i32 [ %8637, %ComputeLoop5931 ] %div8.i.i.i.i.i4054 = lshr i32 %spec.store.select.i.i.i4053, 5 %idxprom.i.i.i.i.i4055 = zext nneg i32 %div8.i.i.i.i.i4054 to i64 %8642 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i4055 %8643 = trunc i64 %5374 to i32 %8644 = lshr i64 %5374, 32 %8645 = trunc i64 %8644 to i32 %8646 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8643, i32 0) %8647 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8645, i32 %8646) %8648 = icmp eq i32 %8647, 0 %8649 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8648) %8650 = extractvalue { i1, i64 } %8649, 0 %8651 = extractvalue { i1, i64 } %8649, 1 br i1 %8650, label %5378, label %5380 Flow7759: ; preds = %5398, %if.then.i.i.i.i4064 %8652 = phi i1 [ false, %5398 ], [ true, %if.then.i.i.i.i4064 ] br i1 %8652, label %if.end14.i.i.i4135, label %Flow7760, !amdgpu.uniform !42 ComputeLoop5936: ; preds = %if.then12.i.i.i4069, %ComputeLoop5936 %Accumulator5938 = phi i32 [ %8656, %ComputeLoop5936 ], [ -1, %if.then12.i.i.i4069 ] %ActiveBits5939 = phi i64 [ %8659, %ComputeLoop5936 ], [ %5395, %if.then12.i.i.i4069 ] %8653 = call i64 @llvm.cttz.i64(i64 %ActiveBits5939, i1 true) %8654 = trunc i64 %8653 to i32 %8655 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i4075, i32 %8654) %8656 = and i32 %Accumulator5938, %8655 %8657 = shl i64 1, %8653 %8658 = xor i64 %8657, -1 %8659 = and i64 %ActiveBits5939, %8658 %8660 = icmp eq i64 %8659, 0 br i1 %8660, label %ComputeEnd5937, label %ComputeLoop5936, !amdgpu.uniform !42 ComputeEnd5937: ; preds = %ComputeLoop5936 %.lcssa8853 = phi i32 [ %8656, %ComputeLoop5936 ] %8661 = trunc i64 %5395 to i32 %8662 = lshr i64 %5395, 32 %8663 = trunc i64 %8662 to i32 %8664 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8661, i32 0) %8665 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8663, i32 %8664) %8666 = icmp eq i32 %8665, 0 %8667 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8666) %8668 = extractvalue { i1, i64 } %8667, 0 %8669 = extractvalue { i1, i64 } %8667, 1 br i1 %8668, label %5396, label %5398 ComputeLoop5940: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit4143, %ComputeLoop5940 %Accumulator5942 = phi i32 [ %8673, %ComputeLoop5940 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit4143 ] %ActiveBits5943 = phi i64 [ %8676, %ComputeLoop5940 ], [ %5475, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit4143 ] %8670 = call i64 @llvm.cttz.i64(i64 %ActiveBits5943, i1 true) %8671 = trunc i64 %8670 to i32 %8672 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i4134, i32 %8671) %8673 = and i32 %Accumulator5942, %8672 %8674 = shl i64 1, %8670 %8675 = xor i64 %8674, -1 %8676 = and i64 %ActiveBits5943, %8675 %8677 = icmp eq i64 %8676, 0 br i1 %8677, label %ComputeEnd5941, label %ComputeLoop5940, !amdgpu.uniform !42 ComputeEnd5941: ; preds = %ComputeLoop5940 %.lcssa8847 = phi i32 [ %8673, %ComputeLoop5940 ] %8678 = trunc i64 %5475 to i32 %8679 = lshr i64 %5475, 32 %8680 = trunc i64 %8679 to i32 %8681 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8678, i32 0) %8682 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8680, i32 %8681) %8683 = icmp eq i32 %8682, 0 %8684 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8683) %8685 = extractvalue { i1, i64 } %8684, 0 %8686 = extractvalue { i1, i64 } %8684, 1 br i1 %8685, label %5476, label %5479 ComputeLoop5944: ; preds = %for.cond.i.i.i4212, %ComputeLoop5944 %Accumulator5946 = phi i32 [ %8691, %ComputeLoop5944 ], [ 0, %for.cond.i.i.i4212 ] %OldValuePhi5947 = phi i32 [ %8690, %ComputeLoop5944 ], [ poison, %for.cond.i.i.i4212 ] %ActiveBits5948 = phi i64 [ %8694, %ComputeLoop5944 ], [ %5612, %for.cond.i.i.i4212 ] %8687 = call i64 @llvm.cttz.i64(i64 %ActiveBits5948, i1 true) %8688 = trunc i64 %8687 to i32 %8689 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i4224, i32 %8688) %8690 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator5946, i32 %8688, i32 %OldValuePhi5947) %8691 = or i32 %Accumulator5946, %8689 %8692 = shl i64 1, %8687 %8693 = xor i64 %8692, -1 %8694 = and i64 %ActiveBits5948, %8693 %8695 = icmp eq i64 %8694, 0 br i1 %8695, label %ComputeEnd5945, label %ComputeLoop5944, !amdgpu.uniform !42 ComputeEnd5945: ; preds = %ComputeLoop5944 %.lcssa8838 = phi i32 [ %8690, %ComputeLoop5944 ] %.lcssa8837 = phi i32 [ %8691, %ComputeLoop5944 ] %div8.i.i.i.i.i4220 = lshr i32 %spec.store.select.i.i.i4219, 5 %idxprom.i.i.i.i.i4221 = zext nneg i32 %div8.i.i.i.i.i4220 to i64 %8696 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i4221 %8697 = trunc i64 %5612 to i32 %8698 = lshr i64 %5612, 32 %8699 = trunc i64 %8698 to i32 %8700 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8697, i32 0) %8701 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8699, i32 %8700) %8702 = icmp eq i32 %8701, 0 %8703 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8702) %8704 = extractvalue { i1, i64 } %8703, 0 %8705 = extractvalue { i1, i64 } %8703, 1 br i1 %8704, label %5616, label %5618 Flow7714: ; preds = %5636, %if.then.i.i.i.i4230 %8706 = phi i1 [ false, %5636 ], [ true, %if.then.i.i.i.i4230 ] br i1 %8706, label %if.end14.i.i.i4302, label %Flow7715, !amdgpu.uniform !42 ComputeLoop5949: ; preds = %if.then12.i.i.i4235, %ComputeLoop5949 %Accumulator5951 = phi i32 [ %8710, %ComputeLoop5949 ], [ -1, %if.then12.i.i.i4235 ] %ActiveBits5952 = phi i64 [ %8713, %ComputeLoop5949 ], [ %5633, %if.then12.i.i.i4235 ] %8707 = call i64 @llvm.cttz.i64(i64 %ActiveBits5952, i1 true) %8708 = trunc i64 %8707 to i32 %8709 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i4241, i32 %8708) %8710 = and i32 %Accumulator5951, %8709 %8711 = shl i64 1, %8707 %8712 = xor i64 %8711, -1 %8713 = and i64 %ActiveBits5952, %8712 %8714 = icmp eq i64 %8713, 0 br i1 %8714, label %ComputeEnd5950, label %ComputeLoop5949, !amdgpu.uniform !42 ComputeEnd5950: ; preds = %ComputeLoop5949 %.lcssa8839 = phi i32 [ %8710, %ComputeLoop5949 ] %8715 = trunc i64 %5633 to i32 %8716 = lshr i64 %5633, 32 %8717 = trunc i64 %8716 to i32 %8718 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8715, i32 0) %8719 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8717, i32 %8718) %8720 = icmp eq i32 %8719, 0 %8721 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8720) %8722 = extractvalue { i1, i64 } %8721, 0 %8723 = extractvalue { i1, i64 } %8721, 1 br i1 %8722, label %5634, label %5636 ComputeLoop5953: ; preds = %_ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i4291, %ComputeLoop5953 %Accumulator5955 = phi i32 [ %8727, %ComputeLoop5953 ], [ -1, %_ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i4291 ] %ActiveBits5956 = phi i64 [ %8730, %ComputeLoop5953 ], [ %5731, %_ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit.i4291 ] %8724 = call i64 @llvm.cttz.i64(i64 %ActiveBits5956, i1 true) %8725 = trunc i64 %8724 to i32 %8726 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i4300, i32 %8725) %8727 = and i32 %Accumulator5955, %8726 %8728 = shl i64 1, %8724 %8729 = xor i64 %8728, -1 %8730 = and i64 %ActiveBits5956, %8729 %8731 = icmp eq i64 %8730, 0 br i1 %8731, label %ComputeEnd5954, label %ComputeLoop5953, !amdgpu.uniform !42 ComputeEnd5954: ; preds = %ComputeLoop5953 %.lcssa8829 = phi i32 [ %8727, %ComputeLoop5953 ] %8732 = trunc i64 %5731 to i32 %8733 = lshr i64 %5731, 32 %8734 = trunc i64 %8733 to i32 %8735 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8732, i32 0) %8736 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8734, i32 %8735) %8737 = icmp eq i32 %8736, 0 %8738 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8737) %8739 = extractvalue { i1, i64 } %8738, 0 %8740 = extractvalue { i1, i64 } %8738, 1 br i1 %8739, label %5732, label %5735 ComputeLoop5957: ; preds = %for.cond.i.i.i4326, %ComputeLoop5957 %Accumulator5959 = phi i32 [ %8745, %ComputeLoop5957 ], [ 0, %for.cond.i.i.i4326 ] %OldValuePhi5960 = phi i32 [ %8744, %ComputeLoop5957 ], [ poison, %for.cond.i.i.i4326 ] %ActiveBits5961 = phi i64 [ %8748, %ComputeLoop5957 ], [ %5740, %for.cond.i.i.i4326 ] %8741 = call i64 @llvm.cttz.i64(i64 %ActiveBits5961, i1 true) %8742 = trunc i64 %8741 to i32 %8743 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i4338, i32 %8742) %8744 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator5959, i32 %8742, i32 %OldValuePhi5960) %8745 = or i32 %Accumulator5959, %8743 %8746 = shl i64 1, %8741 %8747 = xor i64 %8746, -1 %8748 = and i64 %ActiveBits5961, %8747 %8749 = icmp eq i64 %8748, 0 br i1 %8749, label %ComputeEnd5958, label %ComputeLoop5957, !amdgpu.uniform !42 ComputeEnd5958: ; preds = %ComputeLoop5957 %.lcssa8824 = phi i32 [ %8744, %ComputeLoop5957 ] %.lcssa8823 = phi i32 [ %8745, %ComputeLoop5957 ] %div8.i.i.i.i.i4334 = lshr i32 %spec.store.select.i.i.i4333, 5 %idxprom.i.i.i.i.i4335 = zext nneg i32 %div8.i.i.i.i.i4334 to i64 %8750 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i4335 %8751 = trunc i64 %5740 to i32 %8752 = lshr i64 %5740, 32 %8753 = trunc i64 %8752 to i32 %8754 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8751, i32 0) %8755 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8753, i32 %8754) %8756 = icmp eq i32 %8755, 0 %8757 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8756) %8758 = extractvalue { i1, i64 } %8757, 0 %8759 = extractvalue { i1, i64 } %8757, 1 br i1 %8758, label %5744, label %5746 Flow7695: ; preds = %5764, %if.then.i.i.i.i4344 %8760 = phi i1 [ false, %5764 ], [ true, %if.then.i.i.i.i4344 ] br i1 %8760, label %if.end14.i.i.i4413, label %Flow7696, !amdgpu.uniform !42 ComputeLoop5962: ; preds = %if.then12.i.i.i4349, %ComputeLoop5962 %Accumulator5964 = phi i32 [ %8764, %ComputeLoop5962 ], [ -1, %if.then12.i.i.i4349 ] %ActiveBits5965 = phi i64 [ %8767, %ComputeLoop5962 ], [ %5761, %if.then12.i.i.i4349 ] %8761 = call i64 @llvm.cttz.i64(i64 %ActiveBits5965, i1 true) %8762 = trunc i64 %8761 to i32 %8763 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i4355, i32 %8762) %8764 = and i32 %Accumulator5964, %8763 %8765 = shl i64 1, %8761 %8766 = xor i64 %8765, -1 %8767 = and i64 %ActiveBits5965, %8766 %8768 = icmp eq i64 %8767, 0 br i1 %8768, label %ComputeEnd5963, label %ComputeLoop5962, !amdgpu.uniform !42 ComputeEnd5963: ; preds = %ComputeLoop5962 %.lcssa8825 = phi i32 [ %8764, %ComputeLoop5962 ] %8769 = trunc i64 %5761 to i32 %8770 = lshr i64 %5761, 32 %8771 = trunc i64 %8770 to i32 %8772 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8769, i32 0) %8773 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8771, i32 %8772) %8774 = icmp eq i32 %8773, 0 %8775 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8774) %8776 = extractvalue { i1, i64 } %8775, 0 %8777 = extractvalue { i1, i64 } %8775, 1 br i1 %8776, label %5762, label %5764 ComputeLoop5966: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit4421, %ComputeLoop5966 %Accumulator5968 = phi i32 [ %8781, %ComputeLoop5966 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit4421 ] %ActiveBits5969 = phi i64 [ %8784, %ComputeLoop5966 ], [ %5816, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_.exit4421 ] %8778 = call i64 @llvm.cttz.i64(i64 %ActiveBits5969, i1 true) %8779 = trunc i64 %8778 to i32 %8780 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i4412, i32 %8779) %8781 = and i32 %Accumulator5968, %8780 %8782 = shl i64 1, %8778 %8783 = xor i64 %8782, -1 %8784 = and i64 %ActiveBits5969, %8783 %8785 = icmp eq i64 %8784, 0 br i1 %8785, label %ComputeEnd5967, label %ComputeLoop5966, !amdgpu.uniform !42 ComputeEnd5967: ; preds = %ComputeLoop5966 %.lcssa = phi i32 [ %8781, %ComputeLoop5966 ] %8786 = trunc i64 %5816 to i32 %8787 = lshr i64 %5816, 32 %8788 = trunc i64 %8787 to i32 %8789 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8786, i32 0) %8790 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8788, i32 %8789) %8791 = icmp eq i32 %8790, 0 %8792 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8791) %8793 = extractvalue { i1, i64 } %8792, 0 %8794 = extractvalue { i1, i64 } %8792, 1 br i1 %8793, label %5817, label %5820 ComputeLoop5970: ; preds = %for.cond.i.i1.i4430, %ComputeLoop5970 %Accumulator5972 = phi i32 [ %8799, %ComputeLoop5970 ], [ 0, %for.cond.i.i1.i4430 ] %OldValuePhi5973 = phi i32 [ %8798, %ComputeLoop5970 ], [ poison, %for.cond.i.i1.i4430 ] %ActiveBits5974 = phi i64 [ %8802, %ComputeLoop5970 ], [ %5828, %for.cond.i.i1.i4430 ] %8795 = call i64 @llvm.cttz.i64(i64 %ActiveBits5974, i1 true) %8796 = trunc i64 %8795 to i32 %8797 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i4442, i32 %8796) %8798 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator5972, i32 %8796, i32 %OldValuePhi5973) %8799 = or i32 %Accumulator5972, %8797 %8800 = shl i64 1, %8795 %8801 = xor i64 %8800, -1 %8802 = and i64 %ActiveBits5974, %8801 %8803 = icmp eq i64 %8802, 0 br i1 %8803, label %ComputeEnd5971, label %ComputeLoop5970, !amdgpu.uniform !42 ComputeEnd5971: ; preds = %ComputeLoop5970 %.lcssa8963 = phi i32 [ %8798, %ComputeLoop5970 ] %.lcssa8962 = phi i32 [ %8799, %ComputeLoop5970 ] %div8.i.i.i.i.i4438 = lshr i32 %spec.store.select.i.i.i4437, 5 %idxprom.i.i.i.i.i4439 = zext nneg i32 %div8.i.i.i.i.i4438 to i64 %8804 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i4439 %8805 = trunc i64 %5828 to i32 %8806 = lshr i64 %5828, 32 %8807 = trunc i64 %8806 to i32 %8808 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8805, i32 0) %8809 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8807, i32 %8808) %8810 = icmp eq i32 %8809, 0 %8811 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8810) %8812 = extractvalue { i1, i64 } %8811, 0 %8813 = extractvalue { i1, i64 } %8811, 1 br i1 %8812, label %5832, label %5834 Flow7686: ; preds = %5852, %if.then.i.i.i.i4448 %8814 = phi i1 [ false, %5852 ], [ true, %if.then.i.i.i.i4448 ] br i1 %8814, label %if.end14.i.i.i4519, label %Flow7687, !amdgpu.uniform !42 ComputeLoop5975: ; preds = %if.then12.i.i.i4453, %ComputeLoop5975 %Accumulator5977 = phi i32 [ %8818, %ComputeLoop5975 ], [ -1, %if.then12.i.i.i4453 ] %ActiveBits5978 = phi i64 [ %8821, %ComputeLoop5975 ], [ %5849, %if.then12.i.i.i4453 ] %8815 = call i64 @llvm.cttz.i64(i64 %ActiveBits5978, i1 true) %8816 = trunc i64 %8815 to i32 %8817 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i4459, i32 %8816) %8818 = and i32 %Accumulator5977, %8817 %8819 = shl i64 1, %8815 %8820 = xor i64 %8819, -1 %8821 = and i64 %ActiveBits5978, %8820 %8822 = icmp eq i64 %8821, 0 br i1 %8822, label %ComputeEnd5976, label %ComputeLoop5975, !amdgpu.uniform !42 ComputeEnd5976: ; preds = %ComputeLoop5975 %.lcssa8964 = phi i32 [ %8818, %ComputeLoop5975 ] %8823 = trunc i64 %5849 to i32 %8824 = lshr i64 %5849, 32 %8825 = trunc i64 %8824 to i32 %8826 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8823, i32 0) %8827 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8825, i32 %8826) %8828 = icmp eq i32 %8827, 0 %8829 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8828) %8830 = extractvalue { i1, i64 } %8829, 0 %8831 = extractvalue { i1, i64 } %8829, 1 br i1 %8830, label %5850, label %5852 ComputeLoop5979: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit4527, %ComputeLoop5979 %Accumulator5981 = phi i32 [ %8835, %ComputeLoop5979 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit4527 ] %ActiveBits5982 = phi i64 [ %8838, %ComputeLoop5979 ], [ %5931, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit4527 ] %8832 = call i64 @llvm.cttz.i64(i64 %ActiveBits5982, i1 true) %8833 = trunc i64 %8832 to i32 %8834 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i4518, i32 %8833) %8835 = and i32 %Accumulator5981, %8834 %8836 = shl i64 1, %8832 %8837 = xor i64 %8836, -1 %8838 = and i64 %ActiveBits5982, %8837 %8839 = icmp eq i64 %8838, 0 br i1 %8839, label %ComputeEnd5980, label %ComputeLoop5979, !amdgpu.uniform !42 ComputeEnd5980: ; preds = %ComputeLoop5979 %.lcssa8958 = phi i32 [ %8835, %ComputeLoop5979 ] %8840 = trunc i64 %5931 to i32 %8841 = lshr i64 %5931, 32 %8842 = trunc i64 %8841 to i32 %8843 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8840, i32 0) %8844 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8842, i32 %8843) %8845 = icmp eq i32 %8844, 0 %8846 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8845) %8847 = extractvalue { i1, i64 } %8846, 0 %8848 = extractvalue { i1, i64 } %8846, 1 br i1 %8847, label %5932, label %5935 ComputeLoop5983: ; preds = %for.cond.i.i1.i4536, %ComputeLoop5983 %Accumulator5985 = phi i32 [ %8853, %ComputeLoop5983 ], [ 0, %for.cond.i.i1.i4536 ] %OldValuePhi5986 = phi i32 [ %8852, %ComputeLoop5983 ], [ poison, %for.cond.i.i1.i4536 ] %ActiveBits5987 = phi i64 [ %8856, %ComputeLoop5983 ], [ %5944, %for.cond.i.i1.i4536 ] %8849 = call i64 @llvm.cttz.i64(i64 %ActiveBits5987, i1 true) %8850 = trunc i64 %8849 to i32 %8851 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i4548, i32 %8850) %8852 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator5985, i32 %8850, i32 %OldValuePhi5986) %8853 = or i32 %Accumulator5985, %8851 %8854 = shl i64 1, %8849 %8855 = xor i64 %8854, -1 %8856 = and i64 %ActiveBits5987, %8855 %8857 = icmp eq i64 %8856, 0 br i1 %8857, label %ComputeEnd5984, label %ComputeLoop5983, !amdgpu.uniform !42 ComputeEnd5984: ; preds = %ComputeLoop5983 %.lcssa8953 = phi i32 [ %8852, %ComputeLoop5983 ] %.lcssa8952 = phi i32 [ %8853, %ComputeLoop5983 ] %div8.i.i.i.i.i4544 = lshr i32 %spec.store.select.i.i.i4543, 5 %idxprom.i.i.i.i.i4545 = zext nneg i32 %div8.i.i.i.i.i4544 to i64 %8858 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i4545 %8859 = trunc i64 %5944 to i32 %8860 = lshr i64 %5944, 32 %8861 = trunc i64 %8860 to i32 %8862 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8859, i32 0) %8863 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8861, i32 %8862) %8864 = icmp eq i32 %8863, 0 %8865 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8864) %8866 = extractvalue { i1, i64 } %8865, 0 %8867 = extractvalue { i1, i64 } %8865, 1 br i1 %8866, label %5948, label %5950 Flow7666: ; preds = %5968, %if.then.i.i.i.i4554 %8868 = phi i1 [ false, %5968 ], [ true, %if.then.i.i.i.i4554 ] br i1 %8868, label %if.end14.i.i.i4625, label %Flow7667, !amdgpu.uniform !42 ComputeLoop5988: ; preds = %if.then12.i.i.i4559, %ComputeLoop5988 %Accumulator5990 = phi i32 [ %8872, %ComputeLoop5988 ], [ -1, %if.then12.i.i.i4559 ] %ActiveBits5991 = phi i64 [ %8875, %ComputeLoop5988 ], [ %5965, %if.then12.i.i.i4559 ] %8869 = call i64 @llvm.cttz.i64(i64 %ActiveBits5991, i1 true) %8870 = trunc i64 %8869 to i32 %8871 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i4565, i32 %8870) %8872 = and i32 %Accumulator5990, %8871 %8873 = shl i64 1, %8869 %8874 = xor i64 %8873, -1 %8875 = and i64 %ActiveBits5991, %8874 %8876 = icmp eq i64 %8875, 0 br i1 %8876, label %ComputeEnd5989, label %ComputeLoop5988, !amdgpu.uniform !42 ComputeEnd5989: ; preds = %ComputeLoop5988 %.lcssa8954 = phi i32 [ %8872, %ComputeLoop5988 ] %8877 = trunc i64 %5965 to i32 %8878 = lshr i64 %5965, 32 %8879 = trunc i64 %8878 to i32 %8880 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8877, i32 0) %8881 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8879, i32 %8880) %8882 = icmp eq i32 %8881, 0 %8883 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8882) %8884 = extractvalue { i1, i64 } %8883, 0 %8885 = extractvalue { i1, i64 } %8883, 1 br i1 %8884, label %5966, label %5968 ComputeLoop5992: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit4633, %ComputeLoop5992 %Accumulator5994 = phi i32 [ %8889, %ComputeLoop5992 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit4633 ] %ActiveBits5995 = phi i64 [ %8892, %ComputeLoop5992 ], [ %6045, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit4633 ] %8886 = call i64 @llvm.cttz.i64(i64 %ActiveBits5995, i1 true) %8887 = trunc i64 %8886 to i32 %8888 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i4624, i32 %8887) %8889 = and i32 %Accumulator5994, %8888 %8890 = shl i64 1, %8886 %8891 = xor i64 %8890, -1 %8892 = and i64 %ActiveBits5995, %8891 %8893 = icmp eq i64 %8892, 0 br i1 %8893, label %ComputeEnd5993, label %ComputeLoop5992, !amdgpu.uniform !42 ComputeEnd5993: ; preds = %ComputeLoop5992 %.lcssa8948 = phi i32 [ %8889, %ComputeLoop5992 ] %8894 = trunc i64 %6045 to i32 %8895 = lshr i64 %6045, 32 %8896 = trunc i64 %8895 to i32 %8897 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8894, i32 0) %8898 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8896, i32 %8897) %8899 = icmp eq i32 %8898, 0 %8900 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8899) %8901 = extractvalue { i1, i64 } %8900, 0 %8902 = extractvalue { i1, i64 } %8900, 1 br i1 %8901, label %6046, label %6049 ComputeLoop5996: ; preds = %for.cond.i.i1.i4643, %ComputeLoop5996 %Accumulator5998 = phi i32 [ %8907, %ComputeLoop5996 ], [ 0, %for.cond.i.i1.i4643 ] %OldValuePhi5999 = phi i32 [ %8906, %ComputeLoop5996 ], [ poison, %for.cond.i.i1.i4643 ] %ActiveBits6000 = phi i64 [ %8910, %ComputeLoop5996 ], [ %6058, %for.cond.i.i1.i4643 ] %8903 = call i64 @llvm.cttz.i64(i64 %ActiveBits6000, i1 true) %8904 = trunc i64 %8903 to i32 %8905 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i.i4655, i32 %8904) %8906 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator5998, i32 %8904, i32 %OldValuePhi5999) %8907 = or i32 %Accumulator5998, %8905 %8908 = shl i64 1, %8903 %8909 = xor i64 %8908, -1 %8910 = and i64 %ActiveBits6000, %8909 %8911 = icmp eq i64 %8910, 0 br i1 %8911, label %ComputeEnd5997, label %ComputeLoop5996, !amdgpu.uniform !42 ComputeEnd5997: ; preds = %ComputeLoop5996 %.lcssa8942 = phi i32 [ %8906, %ComputeLoop5996 ] %.lcssa8941 = phi i32 [ %8907, %ComputeLoop5996 ] %div8.i.i.i.i.i4651 = lshr i32 %spec.store.select.i.i.i4650, 5 %idxprom.i.i.i.i.i4652 = zext nneg i32 %div8.i.i.i.i.i4651 to i64 %8912 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i.i4652 %8913 = trunc i64 %6058 to i32 %8914 = lshr i64 %6058, 32 %8915 = trunc i64 %8914 to i32 %8916 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8913, i32 0) %8917 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8915, i32 %8916) %8918 = icmp eq i32 %8917, 0 %8919 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8918) %8920 = extractvalue { i1, i64 } %8919, 0 %8921 = extractvalue { i1, i64 } %8919, 1 br i1 %8920, label %6062, label %6064 Flow7647: ; preds = %6082, %if.then.i.i.i.i4661 %8922 = phi i1 [ false, %6082 ], [ true, %if.then.i.i.i.i4661 ] br i1 %8922, label %if.end14.i.i.i4732, label %Flow7648, !amdgpu.uniform !42 ComputeLoop6001: ; preds = %if.then12.i.i.i4666, %ComputeLoop6001 %Accumulator6003 = phi i32 [ %8926, %ComputeLoop6001 ], [ -1, %if.then12.i.i.i4666 ] %ActiveBits6004 = phi i64 [ %8929, %ComputeLoop6001 ], [ %6079, %if.then12.i.i.i4666 ] %8923 = call i64 @llvm.cttz.i64(i64 %ActiveBits6004, i1 true) %8924 = trunc i64 %8923 to i32 %8925 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i.i4672, i32 %8924) %8926 = and i32 %Accumulator6003, %8925 %8927 = shl i64 1, %8923 %8928 = xor i64 %8927, -1 %8929 = and i64 %ActiveBits6004, %8928 %8930 = icmp eq i64 %8929, 0 br i1 %8930, label %ComputeEnd6002, label %ComputeLoop6001, !amdgpu.uniform !42 ComputeEnd6002: ; preds = %ComputeLoop6001 %.lcssa8943 = phi i32 [ %8926, %ComputeLoop6001 ] %8931 = trunc i64 %6079 to i32 %8932 = lshr i64 %6079, 32 %8933 = trunc i64 %8932 to i32 %8934 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8931, i32 0) %8935 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8933, i32 %8934) %8936 = icmp eq i32 %8935, 0 %8937 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8936) %8938 = extractvalue { i1, i64 } %8937, 0 %8939 = extractvalue { i1, i64 } %8937, 1 br i1 %8938, label %6080, label %6082 ComputeLoop6005: ; preds = %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit4740, %ComputeLoop6005 %Accumulator6007 = phi i32 [ %8943, %ComputeLoop6005 ], [ -1, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit4740 ] %ActiveBits6008 = phi i64 [ %8946, %ComputeLoop6005 ], [ %6177, %_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIPKcEERS1_T_.exit4740 ] %8940 = call i64 @llvm.cttz.i64(i64 %ActiveBits6008, i1 true) %8941 = trunc i64 %8940 to i32 %8942 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i.i4731, i32 %8941) %8943 = and i32 %Accumulator6007, %8942 %8944 = shl i64 1, %8940 %8945 = xor i64 %8944, -1 %8946 = and i64 %ActiveBits6008, %8945 %8947 = icmp eq i64 %8946, 0 br i1 %8947, label %ComputeEnd6006, label %ComputeLoop6005, !amdgpu.uniform !42 ComputeEnd6006: ; preds = %ComputeLoop6005 %.lcssa8933 = phi i32 [ %8943, %ComputeLoop6005 ] %8948 = trunc i64 %6177 to i32 %8949 = lshr i64 %6177, 32 %8950 = trunc i64 %8949 to i32 %8951 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %8948, i32 0) %8952 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %8950, i32 %8951) %8953 = icmp eq i32 %8952, 0 %8954 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %8953) %8955 = extractvalue { i1, i64 } %8954, 0 %8956 = extractvalue { i1, i64 } %8954, 1 br i1 %8955, label %6178, label %6181 } ; Function Attrs: convergent mustprogress nofree norecurse nounwind define internal fastcc void @_ZN22__llvm_libc_22_0_0_git7testing10TestLoggerlsIcEERS1_T_(i8 noundef signext range(i8 10, 33) %ch) unnamed_addr #8 align 2 !type !195 { entry: %0 = tail call i32 @llvm.amdgcn.mbcnt.lo(i32 -1, i32 0) %1 = tail call noundef i32 @llvm.amdgcn.mbcnt.hi(i32 -1, i32 %0) %sh_prom.i.i.i = zext i32 %1 to i64 br label %for.cond.i.i, !amdgpu.uniform !42 for.cond.i.i: ; preds = %Flow25, %entry %2 = phi i32 [ poison, %entry ], [ %40, %Flow25 ] %3 = phi i64 [ poison, %entry ], [ %41, %Flow25 ] %4 = phi i32 [ poison, %entry ], [ %42, %Flow25 ] %retval.sroa.6.0.i.i = phi i32 [ undef, %entry ], [ %45, %Flow25 ] %retval.sroa.2.0.i.i = phi i64 [ undef, %entry ], [ %44, %Flow25 ] %retval.sroa.8.0.i.i = phi i32 [ undef, %entry ], [ %43, %Flow25 ] %index.0.i.i = phi i32 [ 0, %entry ], [ %47, %Flow25 ] %5 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not.i.i = icmp ult i32 %index.0.i.i, %5 %spec.store.select.i.i = select i1 %cmp.not.i.i, i32 %index.0.i.i, i32 0 %6 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %7 = and i32 %spec.store.select.i.i, 31 %8 = lshr i64 %6, %sh_prom.i.i.i %9 = trunc i64 %8 to i32 %conv4.i.i.i.i = and i32 %9, 1 %shl.i.i.i.i = shl nuw i32 %conv4.i.i.i.i, %7 %10 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop, !amdgpu.uniform !42 11: ; preds = %ComputeEnd %sunkaddr = getelementptr inbounds i8, ptr addrspace(1) %97, i64 40 %12 = atomicrmw or ptr addrspace(1) %sunkaddr, i32 %.lcssa30 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %13, !amdgpu.uniform !42 13: ; preds = %11, %ComputeEnd %14 = phi i32 [ %12, %11 ], [ poison, %ComputeEnd ] call void @llvm.amdgcn.end.cf.i64(i64 %106) %15 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %14) %16 = or i32 %15, %.lcssa31 %shl5.i.i.i.i = shl nuw i32 1, %7 %and.i.i.i.i = and i32 %shl5.i.i.i.i, %16 %tobool3.i.i.i = icmp ne i32 %and.i.i.i.i, 0 %17 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i.i.i) %and.i.i.i.i.i = and i64 %17, %6 %cmp.i.not.i.i = icmp ne i64 %6, %and.i.i.i.i.i br i1 %cmp.i.not.i.i, label %if.then.i.i.i, label %Flow24, !amdgpu.uniform !42 if.then.i.i.i: ; preds = %13 fence syncscope("agent") acquire %18 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %19 = extractelement <2 x i64> %18, i32 0 %20 = inttoptr i64 %19 to ptr %21 = extractelement <2 x i64> %18, i32 1 %22 = inttoptr i64 %21 to ptr %idxprom.i.i.i = zext i32 %spec.store.select.i.i to i64 %arrayidx.i.i.i = getelementptr inbounds nuw i32, ptr %20, i64 %idxprom.i.i.i, !amdgpu.uniform !42 %23 = load atomic i32, ptr %arrayidx.i.i.i monotonic, align 4 %24 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %23) %arrayidx.i45.i.i = getelementptr inbounds nuw i32, ptr %22, i64 %idxprom.i.i.i, !amdgpu.uniform !42 %25 = load atomic i32, ptr %arrayidx.i45.i.i monotonic, align 4 %26 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %25) %cmp.i46.not.i.i = icmp ne i32 %24, %26 br i1 %cmp.i46.not.i.i, label %if.then12.i.i, label %Flow22, !amdgpu.uniform !42 if.then12.i.i: ; preds = %if.then.i.i.i fence syncscope("agent") release %27 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %6, i1 true) %iszero.i.i.i.i.i.i = icmp ne i64 %6, 0 %cmp2.i.i.i.i.i = icmp eq i64 %27, %sh_prom.i.i.i %cmp.i.i.i.i.i = select i1 %iszero.i.i.i.i.i.i, i1 %cmp2.i.i.i.i.i, i1 false %conv4.i.i51.i.i = zext i1 %cmp.i.i.i.i.i to i32 %shl.i.i52.i.i = shl nuw i32 %conv4.i.i51.i.i, %7 %xor.i.i.i.i = xor i32 %shl.i.i52.i.i, -1 %28 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop2, !amdgpu.uniform !42 29: ; preds = %ComputeEnd3 %sunkaddr16 = getelementptr inbounds i8, ptr addrspace(1) %97, i64 40 %30 = atomicrmw and ptr addrspace(1) %sunkaddr16, i32 %.lcssa32 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %31, !amdgpu.uniform !42 31: ; preds = %29, %ComputeEnd3 call void @llvm.amdgcn.end.cf.i64(i64 %124) tail call void @llvm.amdgcn.wave.barrier() br label %Flow22, !amdgpu.uniform !42 if.end14.i.i: ; preds = %Flow22 %32 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %6, i1 true) %iszero.i.i.i.i.i = icmp ne i64 %6, 0 %cmp2.i.i.i.i = icmp eq i64 %32, %sh_prom.i.i.i %cmp.i.i.i.i = select i1 %iszero.i.i.i.i.i, i1 %cmp2.i.i.i.i, i1 false %33 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %cmp.i.i.i.i) %34 = extractvalue { i1, i64 } %33, 0 %35 = extractvalue { i1, i64 } %33, 1 br i1 %34, label %if.then16.i.i, label %if.end22.i.i if.then16.i.i: ; preds = %if.end14.i.i %36 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode.i.i = getelementptr inbounds nuw %"struct.rpc::Header", ptr %36, i64 %idxprom.i.i.i, i32 1 store i32 1660944387, ptr %opcode.i.i, align 8, !tbaa !77 %arrayidx21.i.i = getelementptr inbounds nuw %"struct.rpc::Header", ptr %36, i64 %idxprom.i.i.i store i64 %6, ptr %arrayidx21.i.i, align 8, !tbaa !80 br label %if.end22.i.i, !amdgpu.uniform !42 Flow23: ; preds = %if.end22.i.i, %Flow22 %37 = phi i32 [ %24, %if.end22.i.i ], [ %retval.sroa.8.0.i.i, %Flow22 ] %38 = phi i64 [ %6, %if.end22.i.i ], [ %retval.sroa.2.0.i.i, %Flow22 ] %39 = phi i32 [ %spec.store.select.i.i, %if.end22.i.i ], [ %retval.sroa.6.0.i.i, %Flow22 ] br label %cleanup26.i.i, !amdgpu.uniform !42 if.end22.i.i: ; preds = %if.then16.i.i, %if.end14.i.i call void @llvm.amdgcn.end.cf.i64(i64 %35) tail call void @llvm.amdgcn.wave.barrier() br label %Flow23, !amdgpu.uniform !42 Flow24: ; preds = %cleanup26.i.i, %13 %40 = phi i32 [ %39, %cleanup26.i.i ], [ %2, %13 ] %41 = phi i64 [ %38, %cleanup26.i.i ], [ %3, %13 ] %42 = phi i32 [ %37, %cleanup26.i.i ], [ %4, %13 ] %43 = phi i32 [ %37, %cleanup26.i.i ], [ %retval.sroa.8.0.i.i, %13 ] %44 = phi i64 [ %38, %cleanup26.i.i ], [ %retval.sroa.2.0.i.i, %13 ] %45 = phi i32 [ %39, %cleanup26.i.i ], [ %retval.sroa.6.0.i.i, %13 ] %46 = phi i1 [ %cmp.i46.not.i.i, %cleanup26.i.i ], [ true, %13 ] br i1 %46, label %for.inc.i.i, label %Flow25, !amdgpu.uniform !42 cleanup26.i.i: ; preds = %Flow23 br label %Flow24, !amdgpu.uniform !42 for.inc.i.i: ; preds = %Flow24 %inc.i.i = add i32 %spec.store.select.i.i, 1 br label %Flow25, !amdgpu.uniform !42 Flow25: ; preds = %for.inc.i.i, %Flow24 %47 = phi i32 [ %inc.i.i, %for.inc.i.i ], [ poison, %Flow24 ] %48 = phi i1 [ false, %for.inc.i.i ], [ true, %Flow24 ] br i1 %48, label %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i, label %for.cond.i.i, !amdgpu.uniform !42 _ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i: ; preds = %Flow25 %.lcssa35 = phi i32 [ %40, %Flow25 ] %.lcssa34 = phi i64 [ %41, %Flow25 ] %.lcssa33 = phi i32 [ %42, %Flow25 ] fence acquire %49 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %mul.i.i.i.i.i = shl i32 %.lcssa35, 6 %idxprom.i19.i.i.i.i = zext i32 %mul.i.i.i.i.i to i64 %arrayidx.i20.i.i.i.i = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %49, i64 %idxprom.i19.i.i.i.i %arrayidx.i22.i.i.i.i = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i.i.i.i, i64 %sh_prom.i.i.i store i64 1, ptr %arrayidx.i22.i.i.i.i, align 8, !tbaa !82 %arrayidx6.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %arrayidx.i22.i.i.i.i, i64 8 store i8 %ch, ptr %arrayidx6.i.i.i.i.i.i, align 8 %tobool.not.i.i.i.i.i = icmp eq i32 %.lcssa33, 0 %conv.i.i.i.i.i = zext i1 %tobool.not.i.i.i.i.i to i32 fence release %50 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %idxprom.i23.i.i.i.i = zext i32 %.lcssa35 to i64 %arrayidx.i24.i.i.i.i = getelementptr inbounds nuw i32, ptr %50, i64 %idxprom.i23.i.i.i.i store atomic i32 %conv.i.i.i.i.i, ptr %arrayidx.i24.i.i.i.i monotonic, align 4 %51 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !84 %arrayidx.i.i5.i = getelementptr inbounds nuw %"struct.rpc::Header", ptr %51, i64 %idxprom.i23.i.i.i.i, !amdgpu.uniform !42 %52 = load i64, ptr %arrayidx.i.i5.i, align 8, !tbaa !80 br label %while.cond.i.i.i, !amdgpu.uniform !42 while.cond.i.i.i: ; preds = %Flow21, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i %phi.broken = phi i64 [ %67, %Flow21 ], [ 0, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i ] %port.sroa.37.0.i = phi i32 [ %conv.i.i.i.i.i, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i ], [ %65, %Flow21 ] %idx.0.i.i.i = phi i64 [ 56, %_ZN3rpc6Client4openILj1660944387EEENS_4PortILb0EEEv.exit.i ], [ %64, %Flow21 ] %cmp.i.i.i = icmp eq i64 %idx.0.i.i.i, 0 %53 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %cmp.i.i.i) %and.i.i.i.i6.i = and i64 %53, %52 %tobool.not.i.i.i = icmp ne i64 %and.i.i.i.i6.i, 0 %54 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i22.i.i = getelementptr inbounds nuw i32, ptr %54, i64 %idxprom.i23.i.i.i.i, !amdgpu.uniform !42 %55 = load atomic i32, ptr %arrayidx.i22.i.i monotonic, align 4 %56 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %tobool.not.i.i.i) %57 = extractvalue { i1, i64 } %56, 0 %58 = extractvalue { i1, i64 } %56, 1 br i1 %57, label %cond.false.i8.i.i.i, label %Flow21 cond.false.i8.i.i.i: ; preds = %while.cond.i.i.i %59 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %55) %60 = icmp ne i32 %59, %port.sroa.37.0.i br i1 %60, label %while.body.i.i21.i.i.i.preheader, label %Flow20, !amdgpu.uniform !42 while.body.i.i21.i.i.i.preheader: ; preds = %cond.false.i8.i.i.i br label %while.body.i.i21.i.i.i, !amdgpu.uniform !42 Flow20: ; preds = %Flow19, %cond.false.i8.i.i.i br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i, !amdgpu.uniform !42 while.body.i.i21.i.i.i: ; preds = %while.body.i.i21.i.i.i.preheader, %while.body.i.i21.i.i.i tail call void @llvm.amdgcn.s.sleep(i32 2) %61 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i22.i.i.i = getelementptr inbounds nuw i32, ptr %61, i64 %idxprom.i23.i.i.i.i, !amdgpu.uniform !42 %62 = load atomic i32, ptr %arrayidx.i.i.i22.i.i.i monotonic, align 4 %63 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %62) %cmp.i.not.i.i23.i.i.i = icmp eq i32 %63, %port.sroa.37.0.i br i1 %cmp.i.not.i.i23.i.i.i, label %Flow19, label %while.body.i.i21.i.i.i, !amdgpu.uniform !42 Flow19: ; preds = %while.body.i.i21.i.i.i br label %Flow20, !amdgpu.uniform !42 Flow21: ; preds = %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i, %while.cond.i.i.i %64 = phi i64 [ %add.i.i.i, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i ], [ poison, %while.cond.i.i.i ] %65 = phi i32 [ %conv.i.i26.i.i.i, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i ], [ poison, %while.cond.i.i.i ] %66 = phi i1 [ false, %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i ], [ true, %while.cond.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %58) %67 = call i64 @llvm.amdgcn.if.break.i64(i1 %66, i64 %phi.broken) %68 = call i1 @llvm.amdgcn.loop.i64(i64 %67) br i1 %68, label %cond.false.i.i, label %while.cond.i.i.i _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i: ; preds = %Flow20 fence acquire br i1 %cmp.i.i.i, label %if.then.i.i.i.i.i.i, label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i, !amdgpu.uniform !42 if.then.i.i.i.i.i.i: ; preds = %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i %69 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 32), align 8, !tbaa !81 %arrayidx.i20.i35.i.i.i = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %69, i64 %idxprom.i19.i.i.i.i %arrayidx.i22.i38.i.i.i = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20.i35.i.i.i, i64 %sh_prom.i.i.i store i8 %ch, ptr %arrayidx.i22.i38.i.i.i, align 1 br label %_ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i, !amdgpu.uniform !42 _ZN3rpc4PortILb0EE4sendIZNS1_6send_nEPKPKvPyEUlPNS_6BufferEjE0_EEvT_.exit.i.i.i: ; preds = %if.then.i.i.i.i.i.i, %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit.i.i.i.i %conv.i.i26.i.i.i = xor i32 %port.sroa.37.0.i, 1 fence release %70 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 16), align 8, !tbaa !83 %arrayidx.i24.i29.i.i.i = getelementptr inbounds nuw i32, ptr %70, i64 %idxprom.i23.i.i.i.i store atomic i32 %conv.i.i26.i.i.i, ptr %arrayidx.i24.i29.i.i.i monotonic, align 4 %add.i.i.i = add i64 %idx.0.i.i.i, 64 br label %Flow21, !amdgpu.uniform !42 cond.false.i.i: ; preds = %Flow21 %.lcssa29 = phi i64 [ %67, %Flow21 ] %port.sroa.37.0.i.lcssa = phi i32 [ %port.sroa.37.0.i, %Flow21 ] %.lcssa28 = phi i32 [ %55, %Flow21 ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa29) %71 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %.lcssa28) %72 = icmp ne i32 %71, %port.sroa.37.0.i.lcssa %73 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %72) %74 = extractvalue { i1, i64 } %73, 0 %75 = extractvalue { i1, i64 } %73, 1 br i1 %74, label %while.body.i.i.i.preheader, label %Flow18 while.body.i.i.i.preheader: ; preds = %cond.false.i.i br label %while.body.i.i.i, !amdgpu.uniform !42 Flow18: ; preds = %Flow, %cond.false.i.i call void @llvm.amdgcn.end.cf.i64(i64 %75) br label %_ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit, !amdgpu.uniform !42 while.body.i.i.i: ; preds = %while.body.i.i.i.preheader, %while.body.i.i.i %phi.broken26 = phi i64 [ 0, %while.body.i.i.i.preheader ], [ %79, %while.body.i.i.i ] tail call void @llvm.amdgcn.s.sleep(i32 2) %76 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !85 %arrayidx.i.i.i8.i = getelementptr inbounds nuw i32, ptr %76, i64 %idxprom.i23.i.i.i.i, !amdgpu.uniform !42 %77 = load atomic i32, ptr %arrayidx.i.i.i8.i monotonic, align 4 %78 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %77) %cmp.i.not.i.i.i = icmp eq i32 %78, %port.sroa.37.0.i.lcssa %79 = call i64 @llvm.amdgcn.if.break.i64(i1 %cmp.i.not.i.i.i, i64 %phi.broken26) %80 = call i1 @llvm.amdgcn.loop.i64(i64 %79) br i1 %80, label %Flow, label %while.body.i.i.i Flow: ; preds = %while.body.i.i.i %.lcssa27 = phi i64 [ %79, %while.body.i.i.i ] call void @llvm.amdgcn.end.cf.i64(i64 %.lcssa27) br label %Flow18, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit: ; preds = %Flow18 fence acquire tail call void @llvm.amdgcn.wave.barrier() fence syncscope("agent") release %81 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %.lcssa34, i1 true) %iszero.i.i.i.i.i13.i = icmp ne i64 %.lcssa34, 0 %cmp2.i.i.i.i14.i = icmp eq i64 %81, %sh_prom.i.i.i %cmp.i.i.i.i15.i = select i1 %iszero.i.i.i.i.i13.i, i1 %cmp2.i.i.i.i14.i, i1 false %82 = and i32 %.lcssa35, 31 %conv4.i.i.i19.i = zext i1 %cmp.i.i.i.i15.i to i32 %shl.i.i.i20.i = shl nuw i32 %conv4.i.i.i19.i, %82 %xor.i.i.i21.i = xor i32 %shl.i.i.i20.i, -1 %83 = call i64 @llvm.amdgcn.ballot.i64(i1 true) br label %ComputeLoop6, !amdgpu.uniform !42 84: ; preds = %ComputeEnd7 %div8.i.i.i16.i = lshr i32 %.lcssa35, 5 %idxprom.i.i.i17.i = zext nneg i32 %div8.i.i.i16.i to i64 %85 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i17.i %sunkaddr17 = getelementptr inbounds i8, ptr addrspace(1) %85, i64 40 %86 = atomicrmw and ptr addrspace(1) %sunkaddr17, i32 %.lcssa syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %87, !amdgpu.uniform !42 87: ; preds = %84, %ComputeEnd7 call void @llvm.amdgcn.end.cf.i64(i64 %141) tail call void @llvm.amdgcn.wave.barrier() ret void ComputeLoop: ; preds = %for.cond.i.i, %ComputeLoop %Accumulator = phi i32 [ %92, %ComputeLoop ], [ 0, %for.cond.i.i ] %OldValuePhi = phi i32 [ %91, %ComputeLoop ], [ poison, %for.cond.i.i ] %ActiveBits = phi i64 [ %95, %ComputeLoop ], [ %10, %for.cond.i.i ] %88 = call i64 @llvm.cttz.i64(i64 %ActiveBits, i1 true) %89 = trunc i64 %88 to i32 %90 = call i32 @llvm.amdgcn.readlane.i32(i32 %shl.i.i.i.i, i32 %89) %91 = call i32 @llvm.amdgcn.writelane.i32(i32 %Accumulator, i32 %89, i32 %OldValuePhi) %92 = or i32 %Accumulator, %90 %93 = shl i64 1, %88 %94 = xor i64 %93, -1 %95 = and i64 %ActiveBits, %94 %96 = icmp eq i64 %95, 0 br i1 %96, label %ComputeEnd, label %ComputeLoop, !amdgpu.uniform !42 ComputeEnd: ; preds = %ComputeLoop %.lcssa31 = phi i32 [ %91, %ComputeLoop ] %.lcssa30 = phi i32 [ %92, %ComputeLoop ] %div8.i.i.i.i = lshr i32 %spec.store.select.i.i, 5 %idxprom.i.i.i.i = zext nneg i32 %div8.i.i.i.i to i64 %97 = getelementptr inbounds nuw i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i.i.i %98 = trunc i64 %10 to i32 %99 = lshr i64 %10, 32 %100 = trunc i64 %99 to i32 %101 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %98, i32 0) %102 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %100, i32 %101) %103 = icmp eq i32 %102, 0 %104 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %103) %105 = extractvalue { i1, i64 } %104, 0 %106 = extractvalue { i1, i64 } %104, 1 br i1 %105, label %11, label %13 Flow22: ; preds = %31, %if.then.i.i.i %107 = phi i1 [ false, %31 ], [ true, %if.then.i.i.i ] br i1 %107, label %if.end14.i.i, label %Flow23, !amdgpu.uniform !42 ComputeLoop2: ; preds = %if.then12.i.i, %ComputeLoop2 %Accumulator4 = phi i32 [ %111, %ComputeLoop2 ], [ -1, %if.then12.i.i ] %ActiveBits5 = phi i64 [ %114, %ComputeLoop2 ], [ %28, %if.then12.i.i ] %108 = call i64 @llvm.cttz.i64(i64 %ActiveBits5, i1 true) %109 = trunc i64 %108 to i32 %110 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i.i, i32 %109) %111 = and i32 %Accumulator4, %110 %112 = shl i64 1, %108 %113 = xor i64 %112, -1 %114 = and i64 %ActiveBits5, %113 %115 = icmp eq i64 %114, 0 br i1 %115, label %ComputeEnd3, label %ComputeLoop2, !amdgpu.uniform !42 ComputeEnd3: ; preds = %ComputeLoop2 %.lcssa32 = phi i32 [ %111, %ComputeLoop2 ] %116 = trunc i64 %28 to i32 %117 = lshr i64 %28, 32 %118 = trunc i64 %117 to i32 %119 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %116, i32 0) %120 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %118, i32 %119) %121 = icmp eq i32 %120, 0 %122 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %121) %123 = extractvalue { i1, i64 } %122, 0 %124 = extractvalue { i1, i64 } %122, 1 br i1 %123, label %29, label %31 ComputeLoop6: ; preds = %ComputeLoop6, %_ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit %Accumulator8 = phi i32 [ -1, %_ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit ], [ %128, %ComputeLoop6 ] %ActiveBits9 = phi i64 [ %83, %_ZN22__llvm_libc_22_0_0_git15write_to_stderrENS_3cpp11string_viewE.exit ], [ %131, %ComputeLoop6 ] %125 = call i64 @llvm.cttz.i64(i64 %ActiveBits9, i1 true) %126 = trunc i64 %125 to i32 %127 = call i32 @llvm.amdgcn.readlane.i32(i32 %xor.i.i.i21.i, i32 %126) %128 = and i32 %Accumulator8, %127 %129 = shl i64 1, %125 %130 = xor i64 %129, -1 %131 = and i64 %ActiveBits9, %130 %132 = icmp eq i64 %131, 0 br i1 %132, label %ComputeEnd7, label %ComputeLoop6, !amdgpu.uniform !42 ComputeEnd7: ; preds = %ComputeLoop6 %.lcssa = phi i32 [ %128, %ComputeLoop6 ] %133 = trunc i64 %83 to i32 %134 = lshr i64 %83, 32 %135 = trunc i64 %134 to i32 %136 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %133, i32 0) %137 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %135, i32 %136) %138 = icmp eq i32 %137, 0 %139 = call { i1, i64 } @llvm.amdgcn.if.i64(i1 %138) %140 = extractvalue { i1, i64 } %139, 0 %141 = extractvalue { i1, i64 } %139, 1 br i1 %140, label %84, label %87 } ; Function Attrs: mustprogress nobuiltin nounwind allocsize(0) define noundef nonnull ptr @_Znwm(i64 noundef %size) local_unnamed_addr #14 { entry: %sub.i = add i64 %size, 7 %div2.i = and i64 %sub.i, -8 %0 = load ptr, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %add.ptr.i = getelementptr inbounds nuw i8, ptr %0, i64 %div2.i store ptr %add.ptr.i, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 ret ptr %0 } ; Function Attrs: mustprogress nobuiltin nounwind allocsize(0) define noundef nonnull ptr @_Znam(i64 noundef %size) local_unnamed_addr #14 { entry: %sub.i = add i64 %size, 7 %div2.i = and i64 %sub.i, -8 %0 = load ptr, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 %add.ptr.i = getelementptr inbounds nuw i8, ptr %0, i64 %div2.i store ptr %add.ptr.i, ptr addrspace(1) @_ZN12_GLOBAL__N_13ptrE, align 8, !tbaa !55 ret ptr %0 } ; Function Attrs: mustprogress nobuiltin nounwind define void @_ZdlPv(ptr noundef %0) local_unnamed_addr #15 { entry: tail call void @llvm.trap() unreachable } ; Function Attrs: cold noreturn nounwind memory(inaccessiblemem: write) declare void @llvm.trap() #16 ; Function Attrs: mustprogress nobuiltin nounwind define void @_ZdlPvm(ptr noundef %ptr, i64 noundef %size) local_unnamed_addr #15 { entry: tail call void @llvm.trap() unreachable } ; Function Attrs: mustprogress nobuiltin nounwind define void @_ZdlPvSt11align_val_t(ptr noundef %mem, i64 noundef %0) local_unnamed_addr #15 { entry: tail call void @llvm.trap() unreachable } ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(none) declare i32 @llvm.amdgcn.mbcnt.lo(i32, i32) #17 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(none) declare i32 @llvm.amdgcn.mbcnt.hi(i32, i32) #17 ; Function Attrs: convergent mustprogress nocallback nofree nounwind willreturn memory(none) declare i64 @llvm.amdgcn.ballot.i64(i1) #18 ; Function Attrs: convergent mustprogress nocallback nofree nounwind willreturn memory(none) declare i32 @llvm.amdgcn.readfirstlane.i32(i32) #18 ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.cttz.i64(i64, i1 immarg) #2 ; Function Attrs: convergent mustprogress nocallback nofree nounwind willreturn declare void @llvm.amdgcn.wave.barrier() #19 ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umin.i64(i64, i64) #2 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn declare void @llvm.amdgcn.s.sleep(i32 immarg) #20 ; Function Attrs: convergent mustprogress nounwind define internal fastcc void @__cxa_finalize() unnamed_addr #21 { entry: %0 = load i64, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @_ZN22__llvm_libc_22_0_0_git16atexit_callbacksE, i64 1024), align 8, !tbaa !43 %cmp.i13.i = icmp ne i64 %0, 0 br i1 %cmp.i13.i, label %_ZN22__llvm_libc_22_0_0_git11FixedVectorINS_10AtExitUnitELm64EE4backEv.exit.i.preheader, label %Flow3, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git11FixedVectorINS_10AtExitUnitELm64EE4backEv.exit.i.preheader: ; preds = %entry br label %_ZN22__llvm_libc_22_0_0_git11FixedVectorINS_10AtExitUnitELm64EE4backEv.exit.i, !amdgpu.uniform !42 Flow3: ; preds = %Flow, %entry br label %_ZN22__llvm_libc_22_0_0_git19call_exit_callbacksERNS_11FixedVectorINS_10AtExitUnitELm64EEE.exit, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git11FixedVectorINS_10AtExitUnitELm64EE4backEv.exit.i: ; preds = %_ZN22__llvm_libc_22_0_0_git11FixedVectorINS_10AtExitUnitELm64EE4backEv.exit.i.preheader, %_ZN22__llvm_libc_22_0_0_git11FixedVectorINS_10AtExitUnitELm64EE4backEv.exit.i %1 = phi i64 [ %7, %_ZN22__llvm_libc_22_0_0_git11FixedVectorINS_10AtExitUnitELm64EE4backEv.exit.i ], [ %0, %_ZN22__llvm_libc_22_0_0_git11FixedVectorINS_10AtExitUnitELm64EE4backEv.exit.i.preheader ] %2 = getelementptr %"struct.__llvm_libc_22_0_0_git::AtExitUnit", ptr addrspace(1) @_ZN22__llvm_libc_22_0_0_git16atexit_callbacksE, i64 %1 %arrayidx.i.i.i = getelementptr i8, ptr addrspace(1) %2, i64 -16, !amdgpu.uniform !42 %3 = load <2 x i64>, ptr addrspace(1) %arrayidx.i.i.i, align 8, !tbaa !49 %unit.sroa.0.0.copyload.i1 = extractelement <2 x i64> %3, i32 0 %4 = inttoptr i64 %unit.sroa.0.0.copyload.i1 to ptr %unit.sroa.5.0.copyload.i2 = extractelement <2 x i64> %3, i32 1 %5 = inttoptr i64 %unit.sroa.5.0.copyload.i2 to ptr tail call void @llvm.memset.p1.i64(ptr addrspace(1) noundef align 8 dereferenceable(16) %arrayidx.i.i.i, i8 0, i64 16, i1 false) %6 = load i64, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @_ZN22__llvm_libc_22_0_0_git16atexit_callbacksE, i64 1024), align 8, !tbaa !43 %dec.i.i = add i64 %6, -1 store i64 %dec.i.i, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @_ZN22__llvm_libc_22_0_0_git16atexit_callbacksE, i64 1024), align 8, !tbaa !43 tail call void %4(ptr noundef %5) #36 %7 = load i64, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @_ZN22__llvm_libc_22_0_0_git16atexit_callbacksE, i64 1024), align 8, !tbaa !43 %cmp.i.i = icmp eq i64 %7, 0 br i1 %cmp.i.i, label %Flow, label %_ZN22__llvm_libc_22_0_0_git11FixedVectorINS_10AtExitUnitELm64EE4backEv.exit.i, !amdgpu.uniform !42 Flow: ; preds = %_ZN22__llvm_libc_22_0_0_git11FixedVectorINS_10AtExitUnitELm64EE4backEv.exit.i br label %Flow3, !amdgpu.uniform !42 _ZN22__llvm_libc_22_0_0_git19call_exit_callbacksERNS_11FixedVectorINS_10AtExitUnitELm64EEE.exit: ; preds = %Flow3 store i64 0, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @_ZN22__llvm_libc_22_0_0_git16atexit_callbacksE, i64 1024), align 8, !tbaa !43 ret void } ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write) declare void @llvm.memset.p1.i64(ptr addrspace(1) writeonly captures(none), i8, i64, i1 immarg) #11 ; Function Attrs: convergent inlinehint mustprogress nounwind define internal void @_ZN22__llvm_libc_22_0_0_git17stdc_at_exit_funcEPv(ptr noundef readonly captures(none) %payload) #22 comdat { entry: tail call void %payload() #36 ret void } ; Function Attrs: cold convergent mustprogress noreturn nounwind define internal fastcc void @_ZN22__llvm_libc_22_0_0_git4exitEi(i32 noundef %status) unnamed_addr #23 !section_prefix !58 { entry: tail call fastcc void @__cxa_finalize() #36 tail call fastcc void @_ZN22__llvm_libc_22_0_0_git8internal4exitEi(i32 noundef %status) #37 unreachable } ; Function Attrs: cold convergent mustprogress nofree norecurse noreturn nounwind define internal fastcc void @_ZN22__llvm_libc_22_0_0_git8internal4exitEi(i32 noundef %status) unnamed_addr #24 !section_prefix !58 { entry: %port = alloca %"struct.rpc::Port", align 8, addrspace(5) %0 = call ptr @llvm.amdgcn.addrspacecast.nonnull.p0.p5(ptr addrspace(5) %port) call void @llvm.lifetime.start.p5(ptr addrspace(5) %port) #34 %1 = getelementptr inbounds nuw i8, ptr addrspace(5) %port, i32 8 %2 = getelementptr inbounds nuw i8, ptr addrspace(5) %port, i32 16 %3 = getelementptr inbounds nuw i8, ptr addrspace(5) %port, i32 20 %4 = getelementptr inbounds nuw i8, ptr addrspace(5) %port, i32 24 %5 = getelementptr inbounds nuw i8, ptr addrspace(5) %port, i32 28 %6 = getelementptr inbounds nuw i8, ptr addrspace(5) %port, i32 30 store <2 x i8> splat (i8 -86), ptr addrspace(5) %6, align 2 %call = tail call fastcc <{ ptr, i64, i32, i32, i32, i8, i8 }> @_ZN3rpc6Client4openILj1660944385EEENS_4PortILb0EEEv() #38 %newret = extractvalue <{ ptr, i64, i32, i32, i32, i8, i8 }> %call, 0 %newret1 = extractvalue <{ ptr, i64, i32, i32, i32, i8, i8 }> %call, 1 %newret3 = extractvalue <{ ptr, i64, i32, i32, i32, i8, i8 }> %call, 2 %newret5 = extractvalue <{ ptr, i64, i32, i32, i32, i8, i8 }> %call, 3 %newret7 = extractvalue <{ ptr, i64, i32, i32, i32, i8, i8 }> %call, 4 %newret9 = extractvalue <{ ptr, i64, i32, i32, i32, i8, i8 }> %call, 5 %newret11 = extractvalue <{ ptr, i64, i32, i32, i32, i8, i8 }> %call, 6 store ptr %newret, ptr addrspace(5) %port, align 8 store i64 %newret1, ptr addrspace(5) %1, align 8 store i32 %newret3, ptr addrspace(5) %2, align 8 store i32 %newret5, ptr addrspace(5) %3, align 4 store i32 %newret7, ptr addrspace(5) %4, align 8 %7 = insertelement <2 x i8> poison, i8 %newret9, i32 0 %8 = insertelement <2 x i8> %7, i8 %newret11, i32 1 store <2 x i8> %8, ptr addrspace(5) %5, align 4 call fastcc void @"_ZN3rpc4PortILb0EE13send_and_recvIZN22__llvm_libc_22_0_0_git8internal4exitEiE3$_0ZNS4_4exitEiE3$_1EEvT_T0_"(ptr noundef nonnull align 8 dereferenceable(30) %0) #38 call fastcc void @"_ZN3rpc4PortILb0EE4sendIZN22__llvm_libc_22_0_0_git8internal4exitEiE3$_2EEvT_"(ptr noundef nonnull align 8 dereferenceable(30) %0, i32 %status) #38 call fastcc void @_ZN3rpc4PortILb0EE5closeEv(ptr noundef nonnull align 8 dereferenceable(30) %0) #38 tail call void @llvm.amdgcn.endpgm() unreachable } ; Function Attrs: convergent inlinehint mustprogress nofree norecurse nounwind define internal fastcc <{ ptr, i64, i32, i32, i32, i8, i8 }> @_ZN3rpc6Client4openILj1660944385EEENS_4PortILb0EEEv() unnamed_addr #25 comdat align 2 !type !196 { entry: %0 = tail call i32 @llvm.amdgcn.mbcnt.lo(i32 -1, i32 0) %1 = tail call noundef i32 @llvm.amdgcn.mbcnt.hi(i32 -1, i32 %0) %sh_prom.i = zext i32 %1 to i64 br label %for.cond, !amdgpu.uniform !42 for.cond: ; preds = %Flow18, %entry %2 = phi i32 [ poison, %entry ], [ %52, %Flow18 ] %3 = phi i64 [ poison, %entry ], [ %53, %Flow18 ] %4 = phi i32 [ poison, %entry ], [ %54, %Flow18 ] %retval.sroa.6.0 = phi i32 [ undef, %entry ], [ %57, %Flow18 ] %retval.sroa.2.0 = phi i64 [ undef, %entry ], [ %56, %Flow18 ] %retval.sroa.8.0 = phi i32 [ undef, %entry ], [ %55, %Flow18 ] %index.0 = phi i32 [ 0, %entry ], [ %59, %Flow18 ] %5 = load i32, ptr addrspace(1) @__llvm_rpc_client, align 8, !tbaa !68 %cmp.not = icmp ult i32 %index.0, %5 %spec.store.select = select i1 %cmp.not, i32 %index.0, i32 0 %6 = tail call noundef i64 @llvm.amdgcn.ballot.i64(i1 true) %div8.i.i = lshr i32 %spec.store.select, 5 %7 = and i32 %spec.store.select, 31 %idxprom.i.i = zext nneg i32 %div8.i.i to i64 %8 = getelementptr inbounds i32, ptr addrspace(1) @__llvm_rpc_client, i64 %idxprom.i.i %9 = lshr i64 %6, %sh_prom.i %10 = trunc i64 %9 to i32 %conv4.i.i = and i32 %10, 1 %shl.i.i = shl nuw i32 %conv4.i.i, %7 %11 = call i64 @llvm.amdgcn.ballot.i64(i1 true) %12 = trunc i64 %11 to i32 %13 = lshr i64 %11, 32 %14 = trunc i64 %13 to i32 %15 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %12, i32 0) %16 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %14, i32 %15) %17 = icmp eq i32 %16, 0 br i1 %17, label %18, label %20, !amdgpu.uniform !42 18: ; preds = %for.cond %sunkaddr = getelementptr inbounds i8, ptr addrspace(1) %8, i64 40 %19 = atomicrmw or ptr addrspace(1) %sunkaddr, i32 %shl.i.i syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %20, !amdgpu.uniform !42 20: ; preds = %18, %for.cond %21 = phi i32 [ %19, %18 ], [ poison, %for.cond ] %22 = call i32 @llvm.amdgcn.readfirstlane.i32(i32 %21) %23 = select i1 %17, i32 0, i32 %shl.i.i %24 = or i32 %22, %23 %shl5.i.i = shl nuw i32 1, %7 %and.i.i = and i32 %24, %shl5.i.i %tobool3.i = icmp ne i32 %and.i.i, 0 %25 = tail call i64 @llvm.amdgcn.ballot.i64(i1 %tobool3.i) %and.i.i.i = and i64 %25, %6 %cmp.i.not = icmp ne i64 %6, %and.i.i.i br i1 %cmp.i.not, label %if.then.i, label %Flow17, !amdgpu.uniform !42 if.then.i: ; preds = %20 fence syncscope("agent") acquire %26 = load <2 x i64>, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 8), align 8, !tbaa !75 %27 = extractelement <2 x i64> %26, i32 0 %28 = inttoptr i64 %27 to ptr %29 = extractelement <2 x i64> %26, i32 1 %30 = inttoptr i64 %29 to ptr %idxprom.i = zext i32 %spec.store.select to i64 %arrayidx.i = getelementptr inbounds nuw i32, ptr %28, i64 %idxprom.i, !amdgpu.uniform !42 %31 = load atomic i32, ptr %arrayidx.i monotonic, align 4 %32 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %31) %arrayidx.i45 = getelementptr inbounds nuw i32, ptr %30, i64 %idxprom.i, !amdgpu.uniform !42 %33 = load atomic i32, ptr %arrayidx.i45 monotonic, align 4 %34 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %33) %cmp.i46.not = icmp ne i32 %32, %34 br i1 %cmp.i46.not, label %if.then12, label %Flow, !amdgpu.uniform !42 if.then12: ; preds = %if.then.i fence syncscope("agent") release %35 = call i64 @llvm.amdgcn.ballot.i64(i1 true) %36 = trunc i64 %35 to i32 %37 = lshr i64 %35, 32 %38 = trunc i64 %37 to i32 %39 = call i32 @llvm.amdgcn.mbcnt.lo(i32 %36, i32 0) %40 = call i32 @llvm.amdgcn.mbcnt.hi(i32 %38, i32 %39) %41 = icmp eq i32 %40, 0 br i1 %41, label %42, label %46, !amdgpu.uniform !42 42: ; preds = %if.then12 %43 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %6, i1 true) %iszero.i.i.i.i = icmp ne i64 %6, 0 %cmp2.i.i.i = icmp eq i64 %43, %sh_prom.i %cmp.i.i.i = select i1 %iszero.i.i.i.i, i1 %cmp2.i.i.i, i1 false %conv4.i.i51 = zext i1 %cmp.i.i.i to i32 %shl.i.i52 = shl nuw i32 %conv4.i.i51, %7 %xor.i.i = xor i32 %shl.i.i52, -1 %sunkaddr15 = getelementptr inbounds i8, ptr addrspace(1) %8, i64 40 %44 = atomicrmw and ptr addrspace(1) %sunkaddr15, i32 %xor.i.i syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 br label %46, !amdgpu.uniform !42 Flow: ; preds = %46, %if.then.i %45 = phi i1 [ false, %46 ], [ true, %if.then.i ] br i1 %45, label %if.end14, label %Flow16, !amdgpu.uniform !42 46: ; preds = %42, %if.then12 tail call void @llvm.amdgcn.wave.barrier() br label %Flow, !amdgpu.uniform !42 if.end14: ; preds = %Flow %47 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %6, i1 true) %iszero.i.i.i = icmp ne i64 %6, 0 %cmp2.i.i = icmp eq i64 %47, %sh_prom.i %cmp.i.i = select i1 %iszero.i.i.i, i1 %cmp2.i.i, i1 false br i1 %cmp.i.i, label %if.then16, label %if.end22, !amdgpu.uniform !42 if.then16: ; preds = %if.end14 %48 = load ptr, ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @__llvm_rpc_client, i64 24), align 8, !tbaa !76 %opcode = getelementptr inbounds nuw %"struct.rpc::Header", ptr %48, i64 %idxprom.i, i32 1 store i32 1660944385, ptr %opcode, align 8, !tbaa !77 %arrayidx21 = getelementptr inbounds nuw %"struct.rpc::Header", ptr %48, i64 %idxprom.i store i64 %6, ptr %arrayidx21, align 8, !tbaa !80 br label %if.end22, !amdgpu.uniform !42 Flow16: ; preds = %if.end22, %Flow %49 = phi i32 [ %32, %if.end22 ], [ %retval.sroa.8.0, %Flow ] %50 = phi i64 [ %6, %if.end22 ], [ %retval.sroa.2.0, %Flow ] %51 = phi i32 [ %spec.store.select, %if.end22 ], [ %retval.sroa.6.0, %Flow ] br label %cleanup26, !amdgpu.uniform !42 if.end22: ; preds = %if.then16, %if.end14 tail call void @llvm.amdgcn.wave.barrier() br label %Flow16, !amdgpu.uniform !42 Flow17: ; preds = %cleanup26, %20 %52 = phi i32 [ %51, %cleanup26 ], [ %2, %20 ] %53 = phi i64 [ %50, %cleanup26 ], [ %3, %20 ] %54 = phi i32 [ %49, %cleanup26 ], [ %4, %20 ] %55 = phi i32 [ %49, %cleanup26 ], [ %retval.sroa.8.0, %20 ] %56 = phi i64 [ %50, %cleanup26 ], [ %retval.sroa.2.0, %20 ] %57 = phi i32 [ %51, %cleanup26 ], [ %retval.sroa.6.0, %20 ] %58 = phi i1 [ %cmp.i46.not, %cleanup26 ], [ true, %20 ] br i1 %58, label %for.inc, label %Flow18, !amdgpu.uniform !42 cleanup26: ; preds = %Flow16 br label %Flow17, !amdgpu.uniform !42 for.inc: ; preds = %Flow17 %inc = add i32 %spec.store.select, 1 br label %Flow18, !amdgpu.uniform !42 Flow18: ; preds = %for.inc, %Flow17 %59 = phi i32 [ %inc, %for.inc ], [ poison, %Flow17 ] %60 = phi i1 [ false, %for.inc ], [ true, %Flow17 ] br i1 %60, label %cleanup27, label %for.cond, !amdgpu.uniform !42 cleanup27: ; preds = %Flow18 %.lcssa20 = phi i32 [ %52, %Flow18 ] %.lcssa19 = phi i64 [ %53, %Flow18 ] %.lcssa = phi i32 [ %54, %Flow18 ] %newret2 = insertvalue <{ ptr, i64, i32, i32, i32, i8, i8 }> <{ ptr addrspacecast (ptr addrspace(1) @__llvm_rpc_client to ptr), i64 poison, i32 poison, i32 poison, i32 poison, i8 poison, i8 poison }>, i64 %.lcssa19, 1 %newret4 = insertvalue <{ ptr, i64, i32, i32, i32, i8, i8 }> %newret2, i32 64, 2 %newret6 = insertvalue <{ ptr, i64, i32, i32, i32, i8, i8 }> %newret4, i32 %.lcssa20, 3 %newret8 = insertvalue <{ ptr, i64, i32, i32, i32, i8, i8 }> %newret6, i32 %.lcssa, 4 %newret10 = insertvalue <{ ptr, i64, i32, i32, i32, i8, i8 }> %newret8, i8 0, 5 %newret12 = insertvalue <{ ptr, i64, i32, i32, i32, i8, i8 }> %newret10, i8 1, 6 ret <{ ptr, i64, i32, i32, i32, i8, i8 }> %newret12 } ; Function Attrs: convergent inlinehint mustprogress nofree norecurse nounwind define internal fastcc void @"_ZN3rpc4PortILb0EE13send_and_recvIZN22__llvm_libc_22_0_0_git8internal4exitEiE3$_0ZNS4_4exitEiE3$_1EEvT_T0_"(ptr noundef nonnull align 8 captures(none) dereferenceable(30) %this) unnamed_addr #25 align 2 !type !197 { entry: %owns_buffer.i = getelementptr inbounds nuw i8, ptr %this, i64 29, !amdgpu.uniform !42 %0 = load i8, ptr %owns_buffer.i, align 1, !tbaa !199, !range !152, !noundef !42 %loadedv.i = trunc nuw i8 %0 to i1 %loadedv.i.inv = xor i1 %loadedv.i, true br i1 %loadedv.i.inv, label %cond.false.i, label %Flow11, !amdgpu.uniform !42 Flow11: ; preds = %cond.false.i, %entry %1 = phi i1 [ %11, %cond.false.i ], [ poison, %entry ] %2 = phi i32 [ %.pre.i7, %cond.false.i ], [ poison, %entry ] %3 = phi i1 [ false, %cond.false.i ], [ true, %entry ] br i1 %3, label %cond.true.i, label %cond.end.i, !amdgpu.uniform !42 cond.true.i: ; preds = %Flow11 %out.i = getelementptr inbounds nuw i8, ptr %this, i64 24, !amdgpu.uniform !42 %4 = load i32, ptr %out.i, align 8, !tbaa !202 br label %cond.end.i, !amdgpu.uniform !42 cond.false.i: ; preds = %entry %5 = load ptr, ptr %this, align 8, !tbaa !203, !nonnull !42, !align !204 %index.i = getelementptr inbounds nuw i8, ptr %this, i64 20, !amdgpu.uniform !42 %6 = load <2 x i32>, ptr %index.i, align 4, !tbaa !205 %7 = extractelement <2 x i32> %6, i32 0 %.pre.i7 = extractelement <2 x i32> %6, i32 1 %inbox.i.i = getelementptr inbounds nuw i8, ptr %5, i64 8, !amdgpu.uniform !42 %8 = load ptr, ptr %inbox.i.i, align 8, !tbaa !85 %idxprom.i.i = zext i32 %7 to i64 %arrayidx.i.i = getelementptr inbounds nuw i32, ptr %8, i64 %idxprom.i.i, !amdgpu.uniform !42 %9 = load atomic i32, ptr %arrayidx.i.i monotonic, align 4 %10 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %9) %11 = icmp eq i32 %10, %.pre.i7 br label %Flow11, !amdgpu.uniform !42 cond.end.i: ; preds = %cond.true.i, %Flow11 %12 = phi i32 [ %2, %Flow11 ], [ %4, %cond.true.i ] %cond.i = phi i1 [ %1, %Flow11 ], [ true, %cond.true.i ] %cond.i.inv = xor i1 %cond.i, true br i1 %cond.i.inv, label %while.body.lr.ph.i.i, label %Flow10, !amdgpu.uniform !42 while.body.lr.ph.i.i: ; preds = %cond.end.i %sunkaddr = getelementptr inbounds i8, ptr %this, i64 20, !amdgpu.uniform !42 %13 = load i32, ptr %sunkaddr, align 4, !tbaa !206 %14 = load ptr, ptr %this, align 8, !tbaa !203, !nonnull !42, !align !204 %idxprom.i.i.i = zext i32 %13 to i64 br label %while.body.i.i, !amdgpu.uniform !42 Flow10: ; preds = %Flow9, %cond.end.i br label %"_ZN3rpc4PortILb0EE4sendIZN22__llvm_libc_22_0_0_git8internal4exitEiE3$_0EEvT_.exit", !amdgpu.uniform !42 while.body.i.i: ; preds = %while.body.lr.ph.i.i, %while.body.i.i tail call void @llvm.amdgcn.s.sleep(i32 2) %sunkaddr1 = getelementptr inbounds i8, ptr %14, i64 8, !amdgpu.uniform !42 %15 = load ptr, ptr %sunkaddr1, align 8, !tbaa !85 %arrayidx.i.i.i = getelementptr inbounds nuw i32, ptr %15, i64 %idxprom.i.i.i, !amdgpu.uniform !42 %16 = load atomic i32, ptr %arrayidx.i.i.i monotonic, align 4 %17 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %16) %cmp.i.not.i.i = icmp eq i32 %17, %12 br i1 %cmp.i.not.i.i, label %Flow9, label %while.body.i.i, !amdgpu.uniform !42 Flow9: ; preds = %while.body.i.i br label %Flow10, !amdgpu.uniform !42 "_ZN3rpc4PortILb0EE4sendIZN22__llvm_libc_22_0_0_git8internal4exitEiE3$_0EEvT_.exit": ; preds = %Flow10 %out5.i = getelementptr inbounds nuw i8, ptr %this, i64 24 fence acquire %18 = load ptr, ptr %this, align 8, !tbaa !203, !nonnull !42, !align !204 %sunkaddr2 = getelementptr inbounds i8, ptr %this, i64 20, !amdgpu.uniform !42 %19 = load <2 x i32>, ptr %sunkaddr2, align 4, !tbaa !205 %20 = extractelement <2 x i32> %19, i32 0 %21 = extractelement <2 x i32> %19, i32 1 %idxprom.i = zext i32 %20 to i64 %tobool.not.i.i = icmp eq i32 %21, 0 %conv.i.i = zext i1 %tobool.not.i.i to i32 fence release %outbox.i.i = getelementptr inbounds nuw i8, ptr %18, i64 16, !amdgpu.uniform !42 %22 = load ptr, ptr %outbox.i.i, align 8, !tbaa !83 %arrayidx.i21.i = getelementptr inbounds nuw i32, ptr %22, i64 %idxprom.i store atomic i32 %conv.i.i, ptr %arrayidx.i21.i monotonic, align 4 store i32 %conv.i.i, ptr %out5.i, align 8, !tbaa !202 %receive.i = getelementptr inbounds nuw i8, ptr %this, i64 28 store <2 x i8> zeroinitializer, ptr %receive.i, align 4, !tbaa !207 %23 = load ptr, ptr %this, align 8, !tbaa !203, !nonnull !42, !align !204 %24 = load i32, ptr %sunkaddr2, align 4, !tbaa !206 %inbox.i.i8 = getelementptr inbounds nuw i8, ptr %23, i64 8, !amdgpu.uniform !42 %25 = load ptr, ptr %inbox.i.i8, align 8, !tbaa !85 %idxprom.i21.i = zext i32 %24 to i64 %arrayidx.i22.i = getelementptr inbounds nuw i32, ptr %25, i64 %idxprom.i21.i, !amdgpu.uniform !42 %26 = load atomic i32, ptr %arrayidx.i22.i monotonic, align 4 %27 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %26) %28 = icmp ne i32 %27, %conv.i.i br i1 %28, label %while.body.i.i12.preheader, label %Flow8, !amdgpu.uniform !42 while.body.i.i12.preheader: ; preds = %"_ZN3rpc4PortILb0EE4sendIZN22__llvm_libc_22_0_0_git8internal4exitEiE3$_0EEvT_.exit" br label %while.body.i.i12, !amdgpu.uniform !42 Flow8: ; preds = %Flow, %"_ZN3rpc4PortILb0EE4sendIZN22__llvm_libc_22_0_0_git8internal4exitEiE3$_0EEvT_.exit" br label %"_ZN3rpc4PortILb0EE4recvIZN22__llvm_libc_22_0_0_git8internal4exitEiE3$_1EEvT_.exit", !amdgpu.uniform !42 while.body.i.i12: ; preds = %while.body.i.i12.preheader, %while.body.i.i12 tail call void @llvm.amdgcn.s.sleep(i32 2) %sunkaddr4 = getelementptr inbounds i8, ptr %23, i64 8, !amdgpu.uniform !42 %29 = load ptr, ptr %sunkaddr4, align 8, !tbaa !85 %arrayidx.i.i.i13 = getelementptr inbounds nuw i32, ptr %29, i64 %idxprom.i21.i, !amdgpu.uniform !42 %30 = load atomic i32, ptr %arrayidx.i.i.i13 monotonic, align 4 %31 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %30) %cmp.i.not.i.i14 = icmp eq i32 %31, %conv.i.i br i1 %cmp.i.not.i.i14, label %Flow, label %while.body.i.i12, !amdgpu.uniform !42 Flow: ; preds = %while.body.i.i12 br label %Flow8, !amdgpu.uniform !42 "_ZN3rpc4PortILb0EE4recvIZN22__llvm_libc_22_0_0_git8internal4exitEiE3$_1EEvT_.exit": ; preds = %Flow8 fence acquire %sunkaddr5 = getelementptr inbounds i8, ptr %this, i64 28 store <2 x i8> splat (i8 1), ptr %sunkaddr5, align 4, !tbaa !207 ret void } ; Function Attrs: convergent inlinehint mustprogress nofree norecurse nounwind define internal fastcc void @"_ZN3rpc4PortILb0EE4sendIZN22__llvm_libc_22_0_0_git8internal4exitEiE3$_2EEvT_"(ptr noundef nonnull align 8 captures(none) dereferenceable(30) %this, i32 %fill.coerce.0.val) unnamed_addr #25 align 2 !type !208 { entry: %owns_buffer = getelementptr inbounds nuw i8, ptr %this, i64 29, !amdgpu.uniform !42 %0 = load i8, ptr %owns_buffer, align 1, !tbaa !199, !range !152, !noundef !42 %loadedv = trunc nuw i8 %0 to i1 %loadedv.inv = xor i1 %loadedv, true br i1 %loadedv.inv, label %cond.false, label %Flow6, !amdgpu.uniform !42 Flow6: ; preds = %cond.false, %entry %1 = phi i1 [ %11, %cond.false ], [ poison, %entry ] %2 = phi i32 [ %.pre4, %cond.false ], [ poison, %entry ] %3 = phi i1 [ false, %cond.false ], [ true, %entry ] br i1 %3, label %cond.true, label %cond.end, !amdgpu.uniform !42 cond.true: ; preds = %Flow6 %out = getelementptr inbounds nuw i8, ptr %this, i64 24, !amdgpu.uniform !42 %4 = load i32, ptr %out, align 8, !tbaa !202 br label %cond.end, !amdgpu.uniform !42 cond.false: ; preds = %entry %5 = load ptr, ptr %this, align 8, !tbaa !203, !nonnull !42, !align !204 %index = getelementptr inbounds nuw i8, ptr %this, i64 20, !amdgpu.uniform !42 %6 = load <2 x i32>, ptr %index, align 4, !tbaa !205 %7 = extractelement <2 x i32> %6, i32 0 %.pre4 = extractelement <2 x i32> %6, i32 1 %inbox.i = getelementptr inbounds nuw i8, ptr %5, i64 8, !amdgpu.uniform !42 %8 = load ptr, ptr %inbox.i, align 8, !tbaa !85 %idxprom.i = zext i32 %7 to i64 %arrayidx.i = getelementptr inbounds nuw i32, ptr %8, i64 %idxprom.i, !amdgpu.uniform !42 %9 = load atomic i32, ptr %arrayidx.i monotonic, align 4 %10 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %9) %11 = icmp eq i32 %10, %.pre4 br label %Flow6, !amdgpu.uniform !42 cond.end: ; preds = %cond.true, %Flow6 %12 = phi i32 [ %2, %Flow6 ], [ %4, %cond.true ] %cond = phi i1 [ %1, %Flow6 ], [ true, %cond.true ] %cond.inv = xor i1 %cond, true br i1 %cond.inv, label %while.body.lr.ph.i, label %Flow5, !amdgpu.uniform !42 while.body.lr.ph.i: ; preds = %cond.end %sunkaddr = getelementptr inbounds i8, ptr %this, i64 20, !amdgpu.uniform !42 %13 = load i32, ptr %sunkaddr, align 4, !tbaa !206 %14 = load ptr, ptr %this, align 8, !tbaa !203, !nonnull !42, !align !204 %idxprom.i.i = zext i32 %13 to i64 br label %while.body.i, !amdgpu.uniform !42 Flow5: ; preds = %Flow, %cond.end br label %_ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit, !amdgpu.uniform !42 while.body.i: ; preds = %while.body.lr.ph.i, %while.body.i tail call void @llvm.amdgcn.s.sleep(i32 2) %sunkaddr1 = getelementptr inbounds i8, ptr %14, i64 8, !amdgpu.uniform !42 %15 = load ptr, ptr %sunkaddr1, align 8, !tbaa !85 %arrayidx.i.i = getelementptr inbounds nuw i32, ptr %15, i64 %idxprom.i.i, !amdgpu.uniform !42 %16 = load atomic i32, ptr %arrayidx.i.i monotonic, align 4 %17 = tail call noundef i32 @llvm.amdgcn.readfirstlane.i32(i32 %16) %cmp.i.not.i = icmp eq i32 %17, %12 br i1 %cmp.i.not.i, label %Flow, label %while.body.i, !amdgpu.uniform !42 Flow: ; preds = %while.body.i br label %Flow5, !amdgpu.uniform !42 _ZN3rpc7ProcessILb0EE18wait_for_ownershipEyjjj.exit: ; preds = %Flow5 %out6 = getelementptr inbounds nuw i8, ptr %this, i64 24 fence acquire %lane_size = getelementptr inbounds nuw i8, ptr %this, i64 16, !amdgpu.uniform !42 %18 = load ptr, ptr %this, align 8, !tbaa !203, !nonnull !42, !align !204 %19 = load <2 x i32>, ptr %lane_size, align 8, !tbaa !205 %packet.i = getelementptr inbounds nuw i8, ptr %18, i64 32, !amdgpu.uniform !42 %20 = load ptr, ptr %packet.i, align 8, !tbaa !81 %21 = extractelement <2 x i32> %19, i64 0 %22 = extractelement <2 x i32> %19, i64 1 %mul.i = mul i32 %22, %21 %idxprom.i19 = zext i32 %mul.i to i64 %arrayidx.i20 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %20, i64 %idxprom.i19 %23 = tail call i32 @llvm.amdgcn.mbcnt.lo(i32 -1, i32 0) %24 = tail call noundef i32 @llvm.amdgcn.mbcnt.hi(i32 -1, i32 %23) %idxprom.i21 = zext i32 %24 to i64 %arrayidx.i22 = getelementptr inbounds nuw %"struct.rpc::Buffer", ptr %arrayidx.i20, i64 %idxprom.i21 store i32 %fill.coerce.0.val, ptr %arrayidx.i22, align 8, !tbaa !205 %sunkaddr2 = getelementptr inbounds i8, ptr %this, i64 20, !amdgpu.uniform !42 %25 = load <2 x i32>, ptr %sunkaddr2, align 4, !tbaa !205 %26 = extractelement <2 x i32> %25, i32 0 %27 = extractelement <2 x i32> %25, i32 1 %tobool.not.i = icmp eq i32 %27, 0 %conv.i = zext i1 %tobool.not.i to i32 fence release %outbox.i = getelementptr inbounds nuw i8, ptr %18, i64 16, !amdgpu.uniform !42 %28 = load ptr, ptr %outbox.i, align 8, !tbaa !83 %idxprom.i23 = zext i32 %26 to i64 %arrayidx.i24 = getelementptr inbounds nuw i32, ptr %28, i64 %idxprom.i23 store atomic i32 %conv.i, ptr %arrayidx.i24 monotonic, align 4 store i32 %conv.i, ptr %out6, align 8, !tbaa !202 %receive = getelementptr inbounds nuw i8, ptr %this, i64 28 store <2 x i8> zeroinitializer, ptr %receive, align 4, !tbaa !207 ret void } ; Function Attrs: convergent inlinehint mustprogress nofree norecurse nounwind willreturn define internal fastcc void @_ZN3rpc4PortILb0EE5closeEv(ptr noundef nonnull readonly align 8 captures(none) dereferenceable(30) %this) unnamed_addr #26 comdat align 2 !type !210 { entry: tail call void @llvm.amdgcn.wave.barrier() %0 = load <2 x i64>, ptr %this, align 8, !tbaa !57 %1 = extractelement <2 x i64> %0, i32 0 %2 = inttoptr i64 %1 to ptr %3 = extractelement <2 x i64> %0, i32 1 %index5 = getelementptr inbounds nuw i8, ptr %this, i64 20, !amdgpu.uniform !42 %4 = load i32, ptr %index5, align 4, !tbaa !206 fence syncscope("agent") release %5 = tail call i32 @llvm.amdgcn.mbcnt.lo(i32 -1, i32 0) %6 = tail call noundef i32 @llvm.amdgcn.mbcnt.hi(i32 -1, i32 %5) %conv.i.i.i = zext i32 %6 to i64 %7 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %3, i1 true) %iszero.i.i.i.i = icmp ne i64 %3, 0 %cmp2.i.i.i = icmp eq i64 %7, %conv.i.i.i %cmp.i.i.i = select i1 %iszero.i.i.i.i, i1 %cmp2.i.i.i, i1 false %div8.i.i = lshr i32 %4, 5 %8 = and i32 %4, 31 %idxprom.i.i = zext nneg i32 %div8.i.i to i64 %9 = getelementptr inbounds nuw i32, ptr %2, i64 %idxprom.i.i %arrayidx.i.i1 = getelementptr inbounds nuw i8, ptr %9, i64 40 %conv4.i.i = zext i1 %cmp.i.i.i to i32 %shl.i.i = shl nuw i32 %conv4.i.i, %8 %xor.i.i = xor i32 %shl.i.i, -1 %10 = atomicrmw and ptr %arrayidx.i.i1, i32 %xor.i.i syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !42, !amdgpu.no.remote.memory !42 tail call void @llvm.amdgcn.wave.barrier() ret void } ; Function Attrs: cold convergent nocallback nofree noreturn nounwind declare void @llvm.amdgcn.endpgm() #27 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn declare i64 @llvm.readsteadycounter() #20 ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) declare void @llvm.memcpy.p0.p4.i64(ptr noalias writeonly captures(none), ptr addrspace(4) noalias readonly captures(none), i64, i1 immarg) #28 ; Function Attrs: convergent nocallback nofree nounwind willreturn memory(none) declare i32 @llvm.amdgcn.readlane.i32(i32, i32) #29 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare ptr @llvm.amdgcn.addrspacecast.nonnull.p0.p5(ptr addrspace(5)) #30 ; Function Attrs: convergent nocallback nofree nounwind willreturn memory(none) declare i32 @llvm.amdgcn.writelane.i32(i32, i32, i32) #29 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.amdgcn.mul.u24.i32(i32, i32) #30 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare noundef align 4 ptr addrspace(4) @llvm.amdgcn.kernarg.segment.ptr() #30 ; Function Attrs: nocallback nofree nounwind willreturn declare { i1, i64 } @llvm.amdgcn.if.i64(i1) #31 ; Function Attrs: nocallback nofree nounwind willreturn declare void @llvm.amdgcn.end.cf.i64(i64) #31 ; Function Attrs: nocallback nofree nounwind willreturn memory(none) declare i64 @llvm.amdgcn.if.break.i64(i1, i64) #32 ; Function Attrs: nocallback nofree nounwind willreturn declare i1 @llvm.amdgcn.loop.i64(i64) #31 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare { i64, i1 } @llvm.uadd.with.overflow.i64(i64, i64) #30 ; Function Attrs: nocallback nofree nounwind willreturn declare { i1, i64 } @llvm.amdgcn.else.i64.i64(i64) #31 attributes #0 = { convergent mustprogress nounwind "amdgpu-flat-work-group-size"="1,1" "amdgpu-max-num-workgroups"="1,1,1" "amdgpu-wave-limiter"="true" "frame-pointer"="all" "no-builtins" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "uniform-work-group-size"="false" } attributes #1 = { convergent mustprogress nounwind "frame-pointer"="all" "no-builtins" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "uniform-work-group-size"="false" } attributes #2 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } attributes #3 = { convergent mustprogress nounwind "amdgpu-wave-limiter"="true" "frame-pointer"="all" "no-builtins" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "uniform-work-group-size"="false" } attributes #4 = { cold convergent mustprogress noreturn nounwind "amdgpu-flat-work-group-size"="1,1" "amdgpu-max-num-workgroups"="1,1,1" "amdgpu-wave-limiter"="true" "frame-pointer"="all" "no-builtins" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "uniform-work-group-size"="false" } attributes #5 = { mustprogress nofree norecurse nosync nounwind willreturn memory(readwrite, argmem: write, inaccessiblemem: none) "amdgpu-agpr-alloc"="0" "amdgpu-memory-bound"="true" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "no-builtins" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="gfx90a" "target-features"="+16-bit-insts,+atomic-buffer-global-pk-add-f16-insts,+atomic-fadd-rtn-insts,+atomic-fmin-fmax-global-f64,+ci-insts,+dl-insts,+dot1-insts,+dot10-insts,+dot2-insts,+dot3-insts,+dot4-insts,+dot5-insts,+dot6-insts,+dot7-insts,+dpp,+gfx8-insts,+gfx9-insts,+gfx90a-insts,+mai-insts,+s-memrealtime,+s-memtime-inst,+wavefrontsize64" "uniform-work-group-size"="false" } attributes #6 = { mustprogress nofree norecurse nosync nounwind willreturn memory(none) "amdgpu-agpr-alloc"="0" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "no-builtins" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="gfx90a" "target-features"="+16-bit-insts,+atomic-buffer-global-pk-add-f16-insts,+atomic-fadd-rtn-insts,+atomic-fmin-fmax-global-f64,+ci-insts,+dl-insts,+dot1-insts,+dot10-insts,+dot2-insts,+dot3-insts,+dot4-insts,+dot5-insts,+dot6-insts,+dot7-insts,+dpp,+gfx8-insts,+gfx9-insts,+gfx90a-insts,+mai-insts,+s-memrealtime,+s-memtime-inst,+wavefrontsize64" "uniform-work-group-size"="false" } attributes #7 = { cold inlinehint mustprogress noreturn nounwind memory(inaccessiblemem: write) "amdgpu-agpr-alloc"="0" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "no-builtins" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="gfx90a" "target-features"="+16-bit-insts,+atomic-buffer-global-pk-add-f16-insts,+atomic-fadd-rtn-insts,+atomic-fmin-fmax-global-f64,+ci-insts,+dl-insts,+dot1-insts,+dot10-insts,+dot2-insts,+dot3-insts,+dot4-insts,+dot5-insts,+dot6-insts,+dot7-insts,+dpp,+gfx8-insts,+gfx9-insts,+gfx90a-insts,+mai-insts,+s-memrealtime,+s-memtime-inst,+wavefrontsize64" "uniform-work-group-size"="false" } attributes #8 = { convergent mustprogress nofree norecurse nounwind "amdgpu-agpr-alloc"="0" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "no-builtins" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="gfx90a" "target-features"="+16-bit-insts,+atomic-buffer-global-pk-add-f16-insts,+atomic-fadd-rtn-insts,+atomic-fmin-fmax-global-f64,+ci-insts,+dl-insts,+dot1-insts,+dot10-insts,+dot2-insts,+dot3-insts,+dot4-insts,+dot5-insts,+dot6-insts,+dot7-insts,+dpp,+gfx8-insts,+gfx9-insts,+gfx90a-insts,+mai-insts,+s-memrealtime,+s-memtime-inst,+wavefrontsize64" "uniform-work-group-size"="false" } attributes #9 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } attributes #10 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } attributes #11 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } attributes #12 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } attributes #13 = { convergent mustprogress nounwind "no-builtins" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="gfx90a" "target-features"="+16-bit-insts,+atomic-buffer-global-pk-add-f16-insts,+atomic-fadd-rtn-insts,+atomic-fmin-fmax-global-f64,+ci-insts,+dl-insts,+dot1-insts,+dot10-insts,+dot2-insts,+dot3-insts,+dot4-insts,+dot5-insts,+dot6-insts,+dot7-insts,+dpp,+gfx8-insts,+gfx9-insts,+gfx90a-insts,+mai-insts,+s-memrealtime,+s-memtime-inst,+wavefrontsize64" "uniform-work-group-size"="false" } attributes #14 = { mustprogress nobuiltin nounwind allocsize(0) "no-builtins" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="gfx90a" "target-features"="+16-bit-insts,+atomic-buffer-global-pk-add-f16-insts,+atomic-fadd-rtn-insts,+atomic-fmin-fmax-global-f64,+ci-insts,+dl-insts,+dot1-insts,+dot10-insts,+dot2-insts,+dot3-insts,+dot4-insts,+dot5-insts,+dot6-insts,+dot7-insts,+dpp,+gfx8-insts,+gfx9-insts,+gfx90a-insts,+mai-insts,+s-memrealtime,+s-memtime-inst,+wavefrontsize64" "uniform-work-group-size"="false" } attributes #15 = { mustprogress nobuiltin nounwind "no-builtins" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="gfx90a" "target-features"="+16-bit-insts,+atomic-buffer-global-pk-add-f16-insts,+atomic-fadd-rtn-insts,+atomic-fmin-fmax-global-f64,+ci-insts,+dl-insts,+dot1-insts,+dot10-insts,+dot2-insts,+dot3-insts,+dot4-insts,+dot5-insts,+dot6-insts,+dot7-insts,+dpp,+gfx8-insts,+gfx9-insts,+gfx90a-insts,+mai-insts,+s-memrealtime,+s-memtime-inst,+wavefrontsize64" "uniform-work-group-size"="false" } attributes #16 = { cold noreturn nounwind memory(inaccessiblemem: write) } attributes #17 = { mustprogress nocallback nofree nosync nounwind willreturn memory(none) } attributes #18 = { convergent mustprogress nocallback nofree nounwind willreturn memory(none) } attributes #19 = { convergent mustprogress nocallback nofree nounwind willreturn } attributes #20 = { mustprogress nocallback nofree nosync nounwind willreturn } attributes #21 = { convergent mustprogress nounwind "amdgpu-flat-work-group-size"="1,1" "amdgpu-max-num-workgroups"="1,1,1" "amdgpu-memory-bound"="true" "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "uniform-work-group-size"="false" } attributes #22 = { convergent inlinehint mustprogress nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "uniform-work-group-size"="false" } attributes #23 = { cold convergent mustprogress noreturn nounwind "amdgpu-flat-work-group-size"="1,1" "amdgpu-max-num-workgroups"="1,1,1" "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "uniform-work-group-size"="false" } attributes #24 = { cold convergent mustprogress nofree norecurse noreturn nounwind "amdgpu-agpr-alloc"="0" "amdgpu-flat-work-group-size"="1,1" "amdgpu-max-num-workgroups"="1,1,1" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "uniform-work-group-size"="false" } attributes #25 = { convergent inlinehint mustprogress nofree norecurse nounwind "amdgpu-agpr-alloc"="0" "amdgpu-flat-work-group-size"="1,1" "amdgpu-max-num-workgroups"="1,1,1" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "uniform-work-group-size"="false" } attributes #26 = { convergent inlinehint mustprogress nofree norecurse nounwind willreturn "amdgpu-agpr-alloc"="0" "amdgpu-flat-work-group-size"="1,1" "amdgpu-max-num-workgroups"="1,1,1" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "uniform-work-group-size"="false" } attributes #27 = { cold convergent nocallback nofree noreturn nounwind } attributes #28 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } attributes #29 = { convergent nocallback nofree nounwind willreturn memory(none) } attributes #30 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } attributes #31 = { nocallback nofree nounwind willreturn } attributes #32 = { nocallback nofree nounwind willreturn memory(none) } attributes #33 = { convergent nobuiltin nounwind "no-builtins" } attributes #34 = { nounwind } attributes #35 = { convergent nobuiltin noreturn nounwind "no-builtins" } attributes #36 = { convergent nounwind } attributes #37 = { convergent noreturn nounwind } attributes #38 = { convergent } !llvm.ident = !{!35} !llvm.module.flags = !{!36, !37, !38, !39, !40, !41} !0 = !{i64 16, !"_ZTS46LlvmLibcCharacterConverterUTF32To8Test_OneByte"} !1 = !{i64 32, !"_ZTSM46LlvmLibcCharacterConverterUTF32To8Test_OneByteFvvE.virtual"} !2 = !{i64 40, !"_ZTSM46LlvmLibcCharacterConverterUTF32To8Test_OneByteFvvE.virtual"} !3 = !{i64 48, !"_ZTSM46LlvmLibcCharacterConverterUTF32To8Test_OneByteFvvE.virtual"} !4 = !{i64 56, !"_ZTSM46LlvmLibcCharacterConverterUTF32To8Test_OneByteKFPKcvE.virtual"} !5 = !{i64 16, !"_ZTSN22__llvm_libc_22_0_0_git7testing4TestE"} !6 = !{i64 32, !"_ZTSMN22__llvm_libc_22_0_0_git7testing4TestEFvvE.virtual"} !7 = !{i64 40, !"_ZTSMN22__llvm_libc_22_0_0_git7testing4TestEFvvE.virtual"} !8 = !{i64 48, !"_ZTSMN22__llvm_libc_22_0_0_git7testing4TestEFvvE.virtual"} !9 = !{i64 56, !"_ZTSMN22__llvm_libc_22_0_0_git7testing4TestEKFPKcvE.virtual"} !10 = !{i64 16, !"_ZTS46LlvmLibcCharacterConverterUTF32To8Test_TwoByte"} !11 = !{i64 32, !"_ZTSM46LlvmLibcCharacterConverterUTF32To8Test_TwoByteFvvE.virtual"} !12 = !{i64 40, !"_ZTSM46LlvmLibcCharacterConverterUTF32To8Test_TwoByteFvvE.virtual"} !13 = !{i64 48, !"_ZTSM46LlvmLibcCharacterConverterUTF32To8Test_TwoByteFvvE.virtual"} !14 = !{i64 56, !"_ZTSM46LlvmLibcCharacterConverterUTF32To8Test_TwoByteKFPKcvE.virtual"} !15 = !{i64 16, !"_ZTS48LlvmLibcCharacterConverterUTF32To8Test_ThreeByte"} !16 = !{i64 32, !"_ZTSM48LlvmLibcCharacterConverterUTF32To8Test_ThreeByteFvvE.virtual"} !17 = !{i64 40, !"_ZTSM48LlvmLibcCharacterConverterUTF32To8Test_ThreeByteFvvE.virtual"} !18 = !{i64 48, !"_ZTSM48LlvmLibcCharacterConverterUTF32To8Test_ThreeByteFvvE.virtual"} !19 = !{i64 56, !"_ZTSM48LlvmLibcCharacterConverterUTF32To8Test_ThreeByteKFPKcvE.virtual"} !20 = !{i64 16, !"_ZTS47LlvmLibcCharacterConverterUTF32To8Test_FourByte"} !21 = !{i64 32, !"_ZTSM47LlvmLibcCharacterConverterUTF32To8Test_FourByteFvvE.virtual"} !22 = !{i64 40, !"_ZTSM47LlvmLibcCharacterConverterUTF32To8Test_FourByteFvvE.virtual"} !23 = !{i64 48, !"_ZTSM47LlvmLibcCharacterConverterUTF32To8Test_FourByteFvvE.virtual"} !24 = !{i64 56, !"_ZTSM47LlvmLibcCharacterConverterUTF32To8Test_FourByteKFPKcvE.virtual"} !25 = !{i64 16, !"_ZTS60LlvmLibcCharacterConverterUTF32To8Test_CantPushMidConversion"} !26 = !{i64 32, !"_ZTSM60LlvmLibcCharacterConverterUTF32To8Test_CantPushMidConversionFvvE.virtual"} !27 = !{i64 40, !"_ZTSM60LlvmLibcCharacterConverterUTF32To8Test_CantPushMidConversionFvvE.virtual"} !28 = !{i64 48, !"_ZTSM60LlvmLibcCharacterConverterUTF32To8Test_CantPushMidConversionFvvE.virtual"} !29 = !{i64 56, !"_ZTSM60LlvmLibcCharacterConverterUTF32To8Test_CantPushMidConversionKFPKcvE.virtual"} !30 = !{i64 16, !"_ZTS51LlvmLibcCharacterConverterUTF32To8Test_InvalidState"} !31 = !{i64 32, !"_ZTSM51LlvmLibcCharacterConverterUTF32To8Test_InvalidStateFvvE.virtual"} !32 = !{i64 40, !"_ZTSM51LlvmLibcCharacterConverterUTF32To8Test_InvalidStateFvvE.virtual"} !33 = !{i64 48, !"_ZTSM51LlvmLibcCharacterConverterUTF32To8Test_InvalidStateFvvE.virtual"} !34 = !{i64 56, !"_ZTSM51LlvmLibcCharacterConverterUTF32To8Test_InvalidStateKFPKcvE.virtual"} !35 = !{!"clang version 22.0.0git (https://github.com/llvm/llvm-project.git 74b9484fd62d6be9bc49e154800ceef0d74ef24f)"} !36 = !{i32 1, !"wchar_size", i32 4} !37 = !{i32 8, !"PIC Level", i32 2} !38 = !{i32 7, !"frame-pointer", i32 2} !39 = !{i32 1, !"ThinLTO", i32 0} !40 = !{i32 1, !"EnableSplitLTOUnit", i32 1} !41 = !{i32 1, !"amdhsa_code_object_version", i32 600} !42 = !{} !43 = !{!44, !48, i64 1024} !44 = !{!"_ZTSN22__llvm_libc_22_0_0_git11FixedVectorINS_10AtExitUnitELm64EEE", !45, i64 0, !48, i64 1024} !45 = !{!"_ZTSN22__llvm_libc_22_0_0_git3cpp5arrayINS_10AtExitUnitELm64EEE", !46, i64 0} !46 = !{!"omnipotent char", !47, i64 0} !47 = !{!"Simple C++ TBAA"} !48 = !{!"long", !46, i64 0} !49 = !{!50, !50, i64 0} !50 = !{!"any pointer", !46, i64 0} !51 = !{!48, !48, i64 0} !52 = !{!53, !53, i64 0} !53 = !{!"p2 omnipotent char", !54, i64 0} !54 = !{!"any p2 pointer", !50, i64 0} !55 = !{!56, !56, i64 0} !56 = !{!"p1 omnipotent char", !50, i64 0} !57 = !{!46, !46, i64 0} !58 = !{!"section_prefix", !"unlikely"} !59 = !{!60, !62, i64 16} !60 = !{!"_ZTSN22__llvm_libc_22_0_0_git7testing4TestE", !61, i64 8, !62, i64 16} !61 = !{!"p1 _ZTSN22__llvm_libc_22_0_0_git7testing4TestE", !50, i64 0} !62 = !{!"p1 _ZTSN22__llvm_libc_22_0_0_git7testing8internal10RunContextE", !50, i64 0} !63 = !{!61, !61, i64 0} !64 = !{!60, !61, i64 8} !65 = !{!66, !67, i64 0} !66 = !{!"_ZTSN22__llvm_libc_22_0_0_git7testing8internal10RunContextE", !67, i64 0} !67 = !{!"_ZTSN22__llvm_libc_22_0_0_git7testing8internal10RunContext9RunResultE", !46, i64 0} !68 = !{!69, !71, i64 0} !69 = !{!"_ZTSN3rpc6ClientE", !70, i64 0} !70 = !{!"_ZTSN3rpc7ProcessILb0EEE", !71, i64 0, !72, i64 8, !72, i64 16, !73, i64 24, !74, i64 32, !46, i64 40} !71 = !{!"int", !46, i64 0} !72 = !{!"p1 int", !50, i64 0} !73 = !{!"p1 _ZTSN3rpc6HeaderE", !50, i64 0} !74 = !{!"p1 _ZTSN3rpc6BufferE", !50, i64 0} !75 = !{!72, !72, i64 0} !76 = !{!69, !73, i64 24} !77 = !{!78, !71, i64 8} !78 = !{!"_ZTSN3rpc6HeaderE", !79, i64 0, !71, i64 8} !79 = !{!"long long", !46, i64 0} !80 = !{!78, !79, i64 0} !81 = !{!70, !74, i64 32} !82 = !{!79, !79, i64 0} !83 = !{!70, !72, i64 16} !84 = !{!70, !73, i64 24} !85 = !{!70, !72, i64 8} !86 = !{!87, !89} !87 = distinct !{!87, !88, !"_ZN22__llvm_libc_22_0_0_git3cpp8internal13to_dec_stringIiEENS0_6stringET_: %agg.result"} !88 = distinct !{!88, !"_ZN22__llvm_libc_22_0_0_git3cpp8internal13to_dec_stringIiEENS0_6stringET_"} !89 = distinct !{!89, !90, !"_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi: %agg.result"} !90 = distinct !{!90, !"_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi"} !91 = !{!92, !48, i64 16} !92 = !{!"_ZTSN22__llvm_libc_22_0_0_git15IntegerToStringIiNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEE", !93, i64 0, !48, i64 16} !93 = !{!"_ZTSN22__llvm_libc_22_0_0_git3cpp5arrayIcLm11EEE", !46, i64 0} !94 = !{!95, !97, !99} !95 = distinct !{!95, !96, !"_ZN22__llvm_libc_22_0_0_git3cpp8internal13to_dec_stringIiEENS0_6stringET_: %agg.result"} !96 = distinct !{!96, !"_ZN22__llvm_libc_22_0_0_git3cpp8internal13to_dec_stringIiEENS0_6stringET_"} !97 = distinct !{!97, !98, !"_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi: %agg.result"} !98 = distinct !{!98, !"_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi"} !99 = distinct !{!99, !100, !"_ZN22__llvm_libc_22_0_0_git7testing8internal13describeValueIcEENS_3cpp9enable_ifIXaasr3cppE13is_integral_vIT_ElestS5_Lm8EENS3_6stringEE4typeES5_: %agg.result"} !100 = distinct !{!100, !"_ZN22__llvm_libc_22_0_0_git7testing8internal13describeValueIcEENS_3cpp9enable_ifIXaasr3cppE13is_integral_vIT_ElestS5_Lm8EENS3_6stringEE4typeES5_"} !101 = !{i32 1, i32 4, i32 5, i32 10} !102 = !{!103, !105, !107} !103 = distinct !{!103, !104, !"_ZN22__llvm_libc_22_0_0_git3cpp8internal13to_dec_stringIiEENS0_6stringET_: %agg.result"} !104 = distinct !{!104, !"_ZN22__llvm_libc_22_0_0_git3cpp8internal13to_dec_stringIiEENS0_6stringET_"} !105 = distinct !{!105, !106, !"_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi: %agg.result"} !106 = distinct !{!106, !"_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi"} !107 = distinct !{!107, !108, !"_ZN22__llvm_libc_22_0_0_git7testing8internal13describeValueIcEENS_3cpp9enable_ifIXaasr3cppE13is_integral_vIT_ElestS5_Lm8EENS3_6stringEE4typeES5_: %agg.result"} !108 = distinct !{!108, !"_ZN22__llvm_libc_22_0_0_git7testing8internal13describeValueIcEENS_3cpp9enable_ifIXaasr3cppE13is_integral_vIT_ElestS5_Lm8EENS3_6stringEE4typeES5_"} !109 = !{!110, !112} !110 = distinct !{!110, !111, !"_ZN22__llvm_libc_22_0_0_git3cpp8internal13to_dec_stringIiEENS0_6stringET_: %agg.result"} !111 = distinct !{!111, !"_ZN22__llvm_libc_22_0_0_git3cpp8internal13to_dec_stringIiEENS0_6stringET_"} !112 = distinct !{!112, !113, !"_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi: %agg.result"} !113 = distinct !{!113, !"_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi"} !114 = !{!115, !117, !119} !115 = distinct !{!115, !116, !"_ZN22__llvm_libc_22_0_0_git3cpp8internal13to_dec_stringIiEENS0_6stringET_: %agg.result"} !116 = distinct !{!116, !"_ZN22__llvm_libc_22_0_0_git3cpp8internal13to_dec_stringIiEENS0_6stringET_"} !117 = distinct !{!117, !118, !"_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi: %agg.result"} !118 = distinct !{!118, !"_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi"} !119 = distinct !{!119, !120, !"_ZN22__llvm_libc_22_0_0_git7testing8internal13describeValueIiEENS_3cpp9enable_ifIXaasr3cppE13is_integral_vIT_ElestS5_Lm8EENS3_6stringEE4typeES5_: %agg.result"} !120 = distinct !{!120, !"_ZN22__llvm_libc_22_0_0_git7testing8internal13describeValueIiEENS_3cpp9enable_ifIXaasr3cppE13is_integral_vIT_ElestS5_Lm8EENS3_6stringEE4typeES5_"} !121 = !{!122, !124, !126} !122 = distinct !{!122, !123, !"_ZN22__llvm_libc_22_0_0_git3cpp8internal13to_dec_stringIiEENS0_6stringET_: %agg.result"} !123 = distinct !{!123, !"_ZN22__llvm_libc_22_0_0_git3cpp8internal13to_dec_stringIiEENS0_6stringET_"} !124 = distinct !{!124, !125, !"_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi: %agg.result"} !125 = distinct !{!125, !"_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi"} !126 = distinct !{!126, !127, !"_ZN22__llvm_libc_22_0_0_git7testing8internal13describeValueIiEENS_3cpp9enable_ifIXaasr3cppE13is_integral_vIT_ElestS5_Lm8EENS3_6stringEE4typeES5_: %agg.result"} !127 = distinct !{!127, !"_ZN22__llvm_libc_22_0_0_git7testing8internal13describeValueIiEENS_3cpp9enable_ifIXaasr3cppE13is_integral_vIT_ElestS5_Lm8EENS3_6stringEE4typeES5_"} !128 = !{!129, !131} !129 = distinct !{!129, !130, !"_ZN22__llvm_libc_22_0_0_git3cpp8internal13to_dec_stringIiEENS0_6stringET_: %agg.result"} !130 = distinct !{!130, !"_ZN22__llvm_libc_22_0_0_git3cpp8internal13to_dec_stringIiEENS0_6stringET_"} !131 = distinct !{!131, !132, !"_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi: %agg.result"} !132 = distinct !{!132, !"_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi"} !133 = !{!134, !136, !138} !134 = distinct !{!134, !135, !"_ZN22__llvm_libc_22_0_0_git3cpp8internal13to_dec_stringIiEENS0_6stringET_: %agg.result"} !135 = distinct !{!135, !"_ZN22__llvm_libc_22_0_0_git3cpp8internal13to_dec_stringIiEENS0_6stringET_"} !136 = distinct !{!136, !137, !"_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi: %agg.result"} !137 = distinct !{!137, !"_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi"} !138 = distinct !{!138, !139, !"_ZN22__llvm_libc_22_0_0_git7testing8internal13describeValueIbEENS_3cpp9enable_ifIXaasr3cppE13is_integral_vIT_ElestS5_Lm8EENS3_6stringEE4typeES5_: %agg.result"} !139 = distinct !{!139, !"_ZN22__llvm_libc_22_0_0_git7testing8internal13describeValueIbEENS_3cpp9enable_ifIXaasr3cppE13is_integral_vIT_ElestS5_Lm8EENS3_6stringEE4typeES5_"} !140 = !{!138} !141 = !{!142, !144, !146} !142 = distinct !{!142, !143, !"_ZN22__llvm_libc_22_0_0_git3cpp8internal13to_dec_stringIiEENS0_6stringET_: %agg.result"} !143 = distinct !{!143, !"_ZN22__llvm_libc_22_0_0_git3cpp8internal13to_dec_stringIiEENS0_6stringET_"} !144 = distinct !{!144, !145, !"_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi: %agg.result"} !145 = distinct !{!145, !"_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi"} !146 = distinct !{!146, !147, !"_ZN22__llvm_libc_22_0_0_git7testing8internal13describeValueIbEENS_3cpp9enable_ifIXaasr3cppE13is_integral_vIT_ElestS5_Lm8EENS3_6stringEE4typeES5_: %agg.result"} !147 = distinct !{!147, !"_ZN22__llvm_libc_22_0_0_git7testing8internal13describeValueIbEENS_3cpp9enable_ifIXaasr3cppE13is_integral_vIT_ElestS5_Lm8EENS3_6stringEE4typeES5_"} !148 = !{!146} !149 = !{!150, !151, i64 8} !150 = !{!"_ZTSN22__llvm_libc_22_0_0_git7testing11TestOptionsE", !56, i64 0, !151, i64 8, !151, i64 9} !151 = !{!"bool", !46, i64 0} !152 = !{i8 0, i8 2} !153 = !{!154, !156} !154 = distinct !{!154, !155, !"_ZN22__llvm_libc_22_0_0_git3cpp8internal13to_dec_stringIiEENS0_6stringET_: %agg.result"} !155 = distinct !{!155, !"_ZN22__llvm_libc_22_0_0_git3cpp8internal13to_dec_stringIiEENS0_6stringET_"} !156 = distinct !{!156, !157, !"_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi: %agg.result"} !157 = distinct !{!157, !"_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi"} !158 = !{!159, !159, i64 0} !159 = !{!"vtable pointer", !47, i64 0} !160 = !{!150, !56, i64 0} !161 = !{!150, !151, i64 9} !162 = !{!163, !165} !163 = distinct !{!163, !164, !"_ZN22__llvm_libc_22_0_0_git3cpp8internal13to_dec_stringIyEENS0_6stringET_: %agg.result"} !164 = distinct !{!164, !"_ZN22__llvm_libc_22_0_0_git3cpp8internal13to_dec_stringIyEENS0_6stringET_"} !165 = distinct !{!165, !166, !"_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEy: %agg.result"} !166 = distinct !{!166, !"_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEy"} !167 = !{!168, !48, i64 24} !168 = !{!"_ZTSN22__llvm_libc_22_0_0_git15IntegerToStringIyNS_7details3FmtILh10ELb0ELb0ELb0ELm1EEEEE", !169, i64 0, !48, i64 24} !169 = !{!"_ZTSN22__llvm_libc_22_0_0_git3cpp5arrayIcLm21EEE", !46, i64 0} !170 = !{!171, !173} !171 = distinct !{!171, !172, !"_ZN22__llvm_libc_22_0_0_git3cpp8internal13to_dec_stringIyEENS0_6stringET_: %agg.result"} !172 = distinct !{!172, !"_ZN22__llvm_libc_22_0_0_git3cpp8internal13to_dec_stringIyEENS0_6stringET_"} !173 = distinct !{!173, !174, !"_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEy: %agg.result"} !174 = distinct !{!174, !"_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEy"} !175 = !{!176, !178} !176 = distinct !{!176, !177, !"_ZN22__llvm_libc_22_0_0_git3cpp8internal13to_dec_stringIyEENS0_6stringET_: %agg.result"} !177 = distinct !{!177, !"_ZN22__llvm_libc_22_0_0_git3cpp8internal13to_dec_stringIyEENS0_6stringET_"} !178 = distinct !{!178, !179, !"_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEy: %agg.result"} !179 = distinct !{!179, !"_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEy"} !180 = !{!181, !183} !181 = distinct !{!181, !182, !"_ZN22__llvm_libc_22_0_0_git3cpp8internal13to_dec_stringIiEENS0_6stringET_: %agg.result"} !182 = distinct !{!182, !"_ZN22__llvm_libc_22_0_0_git3cpp8internal13to_dec_stringIiEENS0_6stringET_"} !183 = distinct !{!183, !184, !"_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi: %agg.result"} !184 = distinct !{!184, !"_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi"} !185 = !{!186, !188} !186 = distinct !{!186, !187, !"_ZN22__llvm_libc_22_0_0_git3cpp8internal13to_dec_stringIiEENS0_6stringET_: %agg.result"} !187 = distinct !{!187, !"_ZN22__llvm_libc_22_0_0_git3cpp8internal13to_dec_stringIiEENS0_6stringET_"} !188 = distinct !{!188, !189, !"_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi: %agg.result"} !189 = distinct !{!189, !"_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi"} !190 = !{!191, !193} !191 = distinct !{!191, !192, !"_ZN22__llvm_libc_22_0_0_git3cpp8internal13to_dec_stringIiEENS0_6stringET_: %agg.result"} !192 = distinct !{!192, !"_ZN22__llvm_libc_22_0_0_git3cpp8internal13to_dec_stringIiEENS0_6stringET_"} !193 = distinct !{!193, !194, !"_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi: %agg.result"} !194 = distinct !{!194, !"_ZN22__llvm_libc_22_0_0_git3cpp9to_stringEi"} !195 = !{i64 0, !"_ZTSMN22__llvm_libc_22_0_0_git7testing10TestLoggerEFRS1_cE"} !196 = !{i64 0, !"_ZTSMN3rpc6ClientEFNS_4PortILb0EEEvE"} !197 = !{i64 0, !198} !198 = distinct !{} !199 = !{!200, !151, i64 29} !200 = !{!"_ZTSN3rpc4PortILb0EEE", !201, i64 0, !79, i64 8, !71, i64 16, !71, i64 20, !71, i64 24, !151, i64 28, !151, i64 29} !201 = !{!"p1 _ZTSN3rpc7ProcessILb0EEE", !50, i64 0} !202 = !{!200, !71, i64 24} !203 = !{!200, !201, i64 0} !204 = !{i64 8} !205 = !{!71, !71, i64 0} !206 = !{!200, !71, i64 20} !207 = !{!151, !151, i64 0} !208 = !{i64 0, !209} !209 = distinct !{} !210 = !{i64 0, !"_ZTSMN3rpc4PortILb0EEEFvvE"}
Become a Patron
Sponsor on GitHub
Donate via PayPal
Compiler Explorer Shop
Source on GitHub
Mailing list
Installed libraries
Wiki
Report an issue
How it works
Contact the author
CE on Mastodon
CE on Bluesky
Statistics
Changelog
Version tree