302 lines · plain
1; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx700 -filetype=obj -o - < %s | llvm-readelf --notes - | FileCheck --check-prefix=CHECK %s2; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx803 -filetype=obj -o - < %s | llvm-readelf --notes - | FileCheck --check-prefix=CHECK %s3; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -filetype=obj -o - < %s | llvm-readelf --notes - | FileCheck --check-prefix=CHECK %s4 5; CHECK: ---6; CHECK: amdhsa.kernels:7 8; CHECK: - .args:9; CHECK-NEXT: - .address_space: global10; CHECK-NEXT: .name: r11; CHECK-NEXT: .offset: 012; CHECK-NEXT: .size: 813; CHECK-NEXT: .value_kind: global_buffer14; CHECK-NEXT: - .address_space: global15; CHECK-NEXT: .name: a16; CHECK-NEXT: .offset: 817; CHECK-NEXT: .size: 818; CHECK-NEXT: .value_kind: global_buffer19; CHECK-NEXT: - .address_space: global20; CHECK-NEXT: .name: b21; CHECK-NEXT: .offset: 1622; CHECK-NEXT: .size: 823; CHECK-NEXT: .value_kind: global_buffer24; CHECK: .name: test025; CHECK: .symbol: test0.kd26define amdgpu_kernel void @test0(27 ptr addrspace(1) %r,28 ptr addrspace(1) %a,29 ptr addrspace(1) %b) {30entry:31 %a.val = load half, ptr addrspace(1) %a32 %b.val = load half, ptr addrspace(1) %b33 %r.val = fadd half %a.val, %b.val34 store half %r.val, ptr addrspace(1) %r35 ret void36}37 38; CHECK: - .args:39; CHECK-NEXT: - .address_space: global40; CHECK-NEXT: .name: r41; CHECK-NEXT: .offset: 042; CHECK-NEXT: .size: 843; CHECK-NEXT: .value_kind: global_buffer44; CHECK-NEXT: - .address_space: global45; CHECK-NEXT: .name: a46; CHECK-NEXT: .offset: 847; CHECK-NEXT: .size: 848; CHECK-NEXT: .value_kind: global_buffer49; CHECK-NEXT: - .address_space: global50; CHECK-NEXT: .name: b51; CHECK-NEXT: .offset: 1652; CHECK-NEXT: .size: 853; CHECK-NEXT: .value_kind: global_buffer54; CHECK-NEXT: - .offset: 2455; CHECK-NEXT: .size: 856; CHECK-NEXT: .value_kind: hidden_global_offset_x57; CHECK: .name: test858; CHECK: .symbol: test8.kd59define amdgpu_kernel void @test8(60 ptr addrspace(1) %r,61 ptr addrspace(1) %a,62 ptr addrspace(1) %b) #0 {63entry:64 %a.val = load half, ptr addrspace(1) %a65 %b.val = load half, ptr addrspace(1) %b66 %r.val = fadd half %a.val, %b.val67 store half %r.val, ptr addrspace(1) %r68 ret void69}70 71; CHECK: - .args:72; CHECK-NEXT: - .address_space: global73; CHECK-NEXT: .name: r74; CHECK-NEXT: .offset: 075; CHECK-NEXT: .size: 876; CHECK-NEXT: .value_kind: global_buffer77; CHECK-NEXT: - .address_space: global78; CHECK-NEXT: .name: a79; CHECK-NEXT: .offset: 880; CHECK-NEXT: .size: 881; CHECK-NEXT: .value_kind: global_buffer82; CHECK-NEXT: - .address_space: global83; CHECK-NEXT: .name: b84; CHECK-NEXT: .offset: 1685; CHECK-NEXT: .size: 886; CHECK-NEXT: .value_kind: global_buffer87; CHECK-NEXT: - .offset: 2488; CHECK-NEXT: .size: 889; CHECK-NEXT: .value_kind: hidden_global_offset_x90; CHECK-NEXT: - .offset: 3291; CHECK-NEXT: .size: 892; CHECK-NEXT: .value_kind: hidden_global_offset_y93; CHECK: .name: test1694; CHECK: .symbol: test16.kd95define amdgpu_kernel void @test16(96 ptr addrspace(1) %r,97 ptr addrspace(1) %a,98 ptr addrspace(1) %b) #1 {99entry:100 %a.val = load half, ptr addrspace(1) %a101 %b.val = load half, ptr addrspace(1) %b102 %r.val = fadd half %a.val, %b.val103 store half %r.val, ptr addrspace(1) %r104 ret void105}106 107; CHECK: - .args:108; CHECK-NEXT: - .address_space: global109; CHECK-NEXT: .name: r110; CHECK-NEXT: .offset: 0111; CHECK-NEXT: .size: 8112; CHECK-NEXT: .value_kind: global_buffer113; CHECK-NEXT: - .address_space: global114; CHECK-NEXT: .name: a115; CHECK-NEXT: .offset: 8116; CHECK-NEXT: .size: 8117; CHECK-NEXT: .value_kind: global_buffer118; CHECK-NEXT: - .address_space: global119; CHECK-NEXT: .name: b120; CHECK-NEXT: .offset: 16121; CHECK-NEXT: .size: 8122; CHECK-NEXT: .value_kind: global_buffer123; CHECK-NEXT: - .offset: 24124; CHECK-NEXT: .size: 8125; CHECK-NEXT: .value_kind: hidden_global_offset_x126; CHECK-NEXT: - .offset: 32127; CHECK-NEXT: .size: 8128; CHECK-NEXT: .value_kind: hidden_global_offset_y129; CHECK-NEXT: - .offset: 40130; CHECK-NEXT: .size: 8131; CHECK-NEXT: .value_kind: hidden_global_offset_z132; CHECK: .name: test24133; CHECK: .symbol: test24.kd134define amdgpu_kernel void @test24(135 ptr addrspace(1) %r,136 ptr addrspace(1) %a,137 ptr addrspace(1) %b) #2 {138entry:139 %a.val = load half, ptr addrspace(1) %a140 %b.val = load half, ptr addrspace(1) %b141 %r.val = fadd half %a.val, %b.val142 store half %r.val, ptr addrspace(1) %r143 ret void144}145 146; CHECK: - .args:147; CHECK-NEXT: - .address_space: global148; CHECK-NEXT: .name: r149; CHECK-NEXT: .offset: 0150; CHECK-NEXT: .size: 8151; CHECK-NEXT: .value_kind: global_buffer152; CHECK-NEXT: - .address_space: global153; CHECK-NEXT: .name: a154; CHECK-NEXT: .offset: 8155; CHECK-NEXT: .size: 8156; CHECK-NEXT: .value_kind: global_buffer157; CHECK-NEXT: - .address_space: global158; CHECK-NEXT: .name: b159; CHECK-NEXT: .offset: 16160; CHECK-NEXT: .size: 8161; CHECK-NEXT: .value_kind: global_buffer162; CHECK-NEXT: - .offset: 24163; CHECK-NEXT: .size: 8164; CHECK-NEXT: .value_kind: hidden_global_offset_x165; CHECK-NEXT: - .offset: 32166; CHECK-NEXT: .size: 8167; CHECK-NEXT: .value_kind: hidden_global_offset_y168; CHECK-NEXT: - .offset: 40169; CHECK-NEXT: .size: 8170; CHECK-NEXT: .value_kind: hidden_global_offset_z171; CHECK-NEXT: - .offset: 48172; CHECK-NEXT: .size: 8173; CHECK-NEXT: .value_kind: hidden_hostcall_buffer174; CHECK: .name: test32175; CHECK: .symbol: test32.kd176define amdgpu_kernel void @test32(177 ptr addrspace(1) %r,178 ptr addrspace(1) %a,179 ptr addrspace(1) %b) #3 {180entry:181 %a.val = load half, ptr addrspace(1) %a182 %b.val = load half, ptr addrspace(1) %b183 %r.val = fadd half %a.val, %b.val184 store half %r.val, ptr addrspace(1) %r185 ret void186}187 188; CHECK: - .args:189; CHECK-NEXT: - .address_space: global190; CHECK-NEXT: .name: r191; CHECK-NEXT: .offset: 0192; CHECK-NEXT: .size: 8193; CHECK-NEXT: .value_kind: global_buffer194; CHECK-NEXT: - .address_space: global195; CHECK-NEXT: .name: a196; CHECK-NEXT: .offset: 8197; CHECK-NEXT: .size: 8198; CHECK-NEXT: .value_kind: global_buffer199; CHECK-NEXT: - .address_space: global200; CHECK-NEXT: .name: b201; CHECK-NEXT: .offset: 16202; CHECK-NEXT: .size: 8203; CHECK-NEXT: .value_kind: global_buffer204; CHECK-NEXT: - .offset: 24205; CHECK-NEXT: .size: 8206; CHECK-NEXT: .value_kind: hidden_global_offset_x207; CHECK-NEXT: - .offset: 32208; CHECK-NEXT: .size: 8209; CHECK-NEXT: .value_kind: hidden_global_offset_y210; CHECK-NEXT: - .offset: 40211; CHECK-NEXT: .size: 8212; CHECK-NEXT: .value_kind: hidden_global_offset_z213; CHECK-NEXT: - .offset: 48214; CHECK-NEXT: .size: 8215; CHECK-NEXT: .value_kind: hidden_hostcall_buffer216; CHECK-NEXT: - .offset: 56217; CHECK-NEXT: .size: 8218; CHECK-NEXT: .value_kind: hidden_default_queue219; CHECK-NEXT: - .offset: 64220; CHECK-NEXT: .size: 8221; CHECK-NEXT: .value_kind: hidden_completion_action222; CHECK: .name: test48223; CHECK: .symbol: test48.kd224define amdgpu_kernel void @test48(225 ptr addrspace(1) %r,226 ptr addrspace(1) %a,227 ptr addrspace(1) %b) #4 {228entry:229 %a.val = load half, ptr addrspace(1) %a230 %b.val = load half, ptr addrspace(1) %b231 %r.val = fadd half %a.val, %b.val232 store half %r.val, ptr addrspace(1) %r233 ret void234}235 236; CHECK: - .args:237; CHECK-NEXT: - .address_space: global238; CHECK-NEXT: .name: r239; CHECK-NEXT: .offset: 0240; CHECK-NEXT: .size: 8241; CHECK-NEXT: .value_kind: global_buffer242; CHECK-NEXT: - .address_space: global243; CHECK-NEXT: .name: a244; CHECK-NEXT: .offset: 8245; CHECK-NEXT: .size: 8246; CHECK-NEXT: .value_kind: global_buffer247; CHECK-NEXT: - .address_space: global248; CHECK-NEXT: .name: b249; CHECK-NEXT: .offset: 16250; CHECK-NEXT: .size: 8251; CHECK-NEXT: .value_kind: global_buffer252; CHECK-NEXT: - .offset: 24253; CHECK-NEXT: .size: 8254; CHECK-NEXT: .value_kind: hidden_global_offset_x255; CHECK-NEXT: - .offset: 32256; CHECK-NEXT: .size: 8257; CHECK-NEXT: .value_kind: hidden_global_offset_y258; CHECK-NEXT: - .offset: 40259; CHECK-NEXT: .size: 8260; CHECK-NEXT: .value_kind: hidden_global_offset_z261; CHECK-NEXT: - .offset: 48262; CHECK-NEXT: .size: 8263; CHECK-NEXT: .value_kind: hidden_hostcall_buffer264; CHECK-NEXT: - .offset: 56265; CHECK-NEXT: .size: 8266; CHECK-NEXT: .value_kind: hidden_default_queue267; CHECK-NEXT: - .offset: 64268; CHECK-NEXT: .size: 8269; CHECK-NEXT: .value_kind: hidden_completion_action270; CHECK-NEXT: - .offset: 72271; CHECK-NEXT: .size: 8272; CHECK-NEXT: .value_kind: hidden_multigrid_sync_arg273; CHECK: .name: test56274; CHECK: .symbol: test56.kd275define amdgpu_kernel void @test56(276 ptr addrspace(1) %r,277 ptr addrspace(1) %a,278 ptr addrspace(1) %b) #5 {279entry:280 %a.val = load half, ptr addrspace(1) %a281 %b.val = load half, ptr addrspace(1) %b282 %r.val = fadd half %a.val, %b.val283 store half %r.val, ptr addrspace(1) %r284 ret void285}286 287; CHECK: amdhsa.version:288; CHECK-NEXT: - 1289; CHECK-NEXT: - 1290 291; We don't have a use of llvm.amdgcn.implicitarg.ptr, so optnone to292; avoid optimizing out the implicit argument allocation.293attributes #0 = { optnone noinline "amdgpu-implicitarg-num-bytes"="8" }294attributes #1 = { optnone noinline "amdgpu-implicitarg-num-bytes"="16" }295attributes #2 = { optnone noinline "amdgpu-implicitarg-num-bytes"="24" }296attributes #3 = { optnone noinline "amdgpu-implicitarg-num-bytes"="32" }297attributes #4 = { optnone noinline "amdgpu-implicitarg-num-bytes"="48" }298attributes #5 = { optnone noinline "amdgpu-implicitarg-num-bytes"="56" }299 300!llvm.module.flags = !{!0}301!0 = !{i32 1, !"amdhsa_code_object_version", i32 400}302