1; RUN: llvm-split -o %t %s -j 3 -mtriple amdgcn-amd-amdhsa -amdgpu-module-splitting-no-externalize-globals 2; RUN: llvm-dis -o - %t0 | FileCheck --check-prefix=CHECK0 --implicit-check-not=define %s 3; RUN: llvm-dis -o - %t1 | FileCheck --check-prefix=CHECK1 --implicit-check-not=define %s 4; RUN: llvm-dis -o - %t2 | FileCheck --check-prefix=CHECK2 --implicit-check-not=define %s 5 6; 3 kernels use private/internal global variables. 7; The GVs should be copied in each partition as needed. 8 9; CHECK0: @bar = internal constant ptr 10; CHECK0: define amdgpu_kernel void @C 11 12; CHECK1: @foo = private constant ptr 13; CHECK1: define amdgpu_kernel void @A 14 15; CHECK2: @foo = private constant ptr 16; CHECK2: @bar = internal constant ptr 17; CHECK2: define amdgpu_kernel void @B 18 19@foo = private constant ptr poison 20@bar = internal constant ptr poison 21 22define amdgpu_kernel void @A() { 23 store i32 42, ptr @foo 24 ret void 25} 26 27define amdgpu_kernel void @B() { 28 store i32 42, ptr @foo 29 store i32 42, ptr @bar 30 ret void 31} 32 33define amdgpu_kernel void @C() { 34 store i32 42, ptr @bar 35 ret void 36} 37