brintos

brintos / llvm-project-archived public Read only

0
0
Text · 36.4 KiB · 9283bd5 Raw
720 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --function-signature --check-globals2; RUN: opt -mtriple=amdgcn-unknown-amdhsa -S -passes=amdgpu-attributor < %s | FileCheck -check-prefixes=ATTRIBUTOR_HSA %s3 4; TODO: The test contains UB which is refined by the Attributor and should be removed.5 6declare i32 @llvm.amdgcn.workgroup.id.x() #07declare i32 @llvm.amdgcn.workgroup.id.y() #08declare i32 @llvm.amdgcn.workgroup.id.z() #09 10declare i32 @llvm.amdgcn.workitem.id.x() #011declare i32 @llvm.amdgcn.workitem.id.y() #012declare i32 @llvm.amdgcn.workitem.id.z() #013 14declare ptr addrspace(4) @llvm.amdgcn.dispatch.ptr() #015declare ptr addrspace(4) @llvm.amdgcn.queue.ptr() #016declare ptr addrspace(4) @llvm.amdgcn.kernarg.segment.ptr() #017declare ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr() #018declare i64 @llvm.amdgcn.dispatch.id() #019 20define void @use_workitem_id_x() #1 {21; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@use_workitem_id_x22; ATTRIBUTOR_HSA-SAME: () #[[ATTR1:[0-9]+]] {23; ATTRIBUTOR_HSA-NEXT:    [[VAL:%.*]] = call i32 @llvm.amdgcn.workitem.id.x()24; ATTRIBUTOR_HSA-NEXT:    store volatile i32 [[VAL]], ptr addrspace(1) poison, align 425; ATTRIBUTOR_HSA-NEXT:    ret void26;27  %val = call i32 @llvm.amdgcn.workitem.id.x()28  store volatile i32 %val, ptr addrspace(1) poison29  ret void30}31 32define void @use_workitem_id_y() #1 {33; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@use_workitem_id_y34; ATTRIBUTOR_HSA-SAME: () #[[ATTR2:[0-9]+]] {35; ATTRIBUTOR_HSA-NEXT:    [[VAL:%.*]] = call i32 @llvm.amdgcn.workitem.id.y()36; ATTRIBUTOR_HSA-NEXT:    store volatile i32 [[VAL]], ptr addrspace(1) poison, align 437; ATTRIBUTOR_HSA-NEXT:    ret void38;39  %val = call i32 @llvm.amdgcn.workitem.id.y()40  store volatile i32 %val, ptr addrspace(1) poison41  ret void42}43 44define void @use_workitem_id_z() #1 {45; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@use_workitem_id_z46; ATTRIBUTOR_HSA-SAME: () #[[ATTR3:[0-9]+]] {47; ATTRIBUTOR_HSA-NEXT:    [[VAL:%.*]] = call i32 @llvm.amdgcn.workitem.id.z()48; ATTRIBUTOR_HSA-NEXT:    store volatile i32 [[VAL]], ptr addrspace(1) poison, align 449; ATTRIBUTOR_HSA-NEXT:    ret void50;51  %val = call i32 @llvm.amdgcn.workitem.id.z()52  store volatile i32 %val, ptr addrspace(1) poison53  ret void54}55 56define void @use_workgroup_id_x() #1 {57; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@use_workgroup_id_x58; ATTRIBUTOR_HSA-SAME: () #[[ATTR4:[0-9]+]] {59; ATTRIBUTOR_HSA-NEXT:    [[VAL:%.*]] = call i32 @llvm.amdgcn.workgroup.id.x()60; ATTRIBUTOR_HSA-NEXT:    store volatile i32 [[VAL]], ptr addrspace(1) poison, align 461; ATTRIBUTOR_HSA-NEXT:    ret void62;63  %val = call i32 @llvm.amdgcn.workgroup.id.x()64  store volatile i32 %val, ptr addrspace(1) poison65  ret void66}67 68define void @use_workgroup_id_y() #1 {69; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@use_workgroup_id_y70; ATTRIBUTOR_HSA-SAME: () #[[ATTR5:[0-9]+]] {71; ATTRIBUTOR_HSA-NEXT:    [[VAL:%.*]] = call i32 @llvm.amdgcn.workgroup.id.y()72; ATTRIBUTOR_HSA-NEXT:    store volatile i32 [[VAL]], ptr addrspace(1) poison, align 473; ATTRIBUTOR_HSA-NEXT:    ret void74;75  %val = call i32 @llvm.amdgcn.workgroup.id.y()76  store volatile i32 %val, ptr addrspace(1) poison77  ret void78}79 80define void @use_workgroup_id_z() #1 {81; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@use_workgroup_id_z82; ATTRIBUTOR_HSA-SAME: () #[[ATTR6:[0-9]+]] {83; ATTRIBUTOR_HSA-NEXT:    [[VAL:%.*]] = call i32 @llvm.amdgcn.workgroup.id.z()84; ATTRIBUTOR_HSA-NEXT:    store volatile i32 [[VAL]], ptr addrspace(1) poison, align 485; ATTRIBUTOR_HSA-NEXT:    ret void86;87  %val = call i32 @llvm.amdgcn.workgroup.id.z()88  store volatile i32 %val, ptr addrspace(1) poison89  ret void90}91 92define void @use_dispatch_ptr() #1 {93; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@use_dispatch_ptr94; ATTRIBUTOR_HSA-SAME: () #[[ATTR7:[0-9]+]] {95; ATTRIBUTOR_HSA-NEXT:    [[DISPATCH_PTR:%.*]] = call ptr addrspace(4) @llvm.amdgcn.dispatch.ptr()96; ATTRIBUTOR_HSA-NEXT:    store volatile ptr addrspace(4) [[DISPATCH_PTR]], ptr addrspace(1) poison, align 897; ATTRIBUTOR_HSA-NEXT:    ret void98;99  %dispatch.ptr = call ptr addrspace(4) @llvm.amdgcn.dispatch.ptr()100  store volatile ptr addrspace(4) %dispatch.ptr, ptr addrspace(1) poison101  ret void102}103 104define void @use_queue_ptr() #1 {105; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@use_queue_ptr106; ATTRIBUTOR_HSA-SAME: () #[[ATTR8:[0-9]+]] {107; ATTRIBUTOR_HSA-NEXT:    [[QUEUE_PTR:%.*]] = call ptr addrspace(4) @llvm.amdgcn.queue.ptr()108; ATTRIBUTOR_HSA-NEXT:    store volatile ptr addrspace(4) [[QUEUE_PTR]], ptr addrspace(1) poison, align 8109; ATTRIBUTOR_HSA-NEXT:    ret void110;111  %queue.ptr = call ptr addrspace(4) @llvm.amdgcn.queue.ptr()112  store volatile ptr addrspace(4) %queue.ptr, ptr addrspace(1) poison113  ret void114}115 116define void @use_dispatch_id() #1 {117; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@use_dispatch_id118; ATTRIBUTOR_HSA-SAME: () #[[ATTR9:[0-9]+]] {119; ATTRIBUTOR_HSA-NEXT:    [[VAL:%.*]] = call i64 @llvm.amdgcn.dispatch.id()120; ATTRIBUTOR_HSA-NEXT:    store volatile i64 [[VAL]], ptr addrspace(1) poison, align 8121; ATTRIBUTOR_HSA-NEXT:    ret void122;123  %val = call i64 @llvm.amdgcn.dispatch.id()124  store volatile i64 %val, ptr addrspace(1) poison125  ret void126}127 128define void @use_workgroup_id_y_workgroup_id_z() #1 {129; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@use_workgroup_id_y_workgroup_id_z130; ATTRIBUTOR_HSA-SAME: () #[[ATTR10:[0-9]+]] {131; ATTRIBUTOR_HSA-NEXT:    [[VAL0:%.*]] = call i32 @llvm.amdgcn.workgroup.id.y()132; ATTRIBUTOR_HSA-NEXT:    [[VAL1:%.*]] = call i32 @llvm.amdgcn.workgroup.id.z()133; ATTRIBUTOR_HSA-NEXT:    store volatile i32 [[VAL0]], ptr addrspace(1) poison, align 4134; ATTRIBUTOR_HSA-NEXT:    store volatile i32 [[VAL1]], ptr addrspace(1) poison, align 4135; ATTRIBUTOR_HSA-NEXT:    ret void136;137  %val0 = call i32 @llvm.amdgcn.workgroup.id.y()138  %val1 = call i32 @llvm.amdgcn.workgroup.id.z()139  store volatile i32 %val0, ptr addrspace(1) poison140  store volatile i32 %val1, ptr addrspace(1) poison141  ret void142}143 144define void @func_indirect_use_workitem_id_x() #1 {145; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@func_indirect_use_workitem_id_x146; ATTRIBUTOR_HSA-SAME: () #[[ATTR1]] {147; ATTRIBUTOR_HSA-NEXT:    call void @use_workitem_id_x()148; ATTRIBUTOR_HSA-NEXT:    ret void149;150  call void @use_workitem_id_x()151  ret void152}153 154define void @kernel_indirect_use_workitem_id_x() #1 {155; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@kernel_indirect_use_workitem_id_x156; ATTRIBUTOR_HSA-SAME: () #[[ATTR1]] {157; ATTRIBUTOR_HSA-NEXT:    call void @use_workitem_id_x()158; ATTRIBUTOR_HSA-NEXT:    ret void159;160  call void @use_workitem_id_x()161  ret void162}163 164define void @func_indirect_use_workitem_id_y() #1 {165; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@func_indirect_use_workitem_id_y166; ATTRIBUTOR_HSA-SAME: () #[[ATTR2]] {167; ATTRIBUTOR_HSA-NEXT:    call void @use_workitem_id_y()168; ATTRIBUTOR_HSA-NEXT:    ret void169;170  call void @use_workitem_id_y()171  ret void172}173 174define void @func_indirect_use_workitem_id_z() #1 {175; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@func_indirect_use_workitem_id_z176; ATTRIBUTOR_HSA-SAME: () #[[ATTR3]] {177; ATTRIBUTOR_HSA-NEXT:    call void @use_workitem_id_z()178; ATTRIBUTOR_HSA-NEXT:    ret void179;180  call void @use_workitem_id_z()181  ret void182}183 184define void @func_indirect_use_workgroup_id_x() #1 {185; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@func_indirect_use_workgroup_id_x186; ATTRIBUTOR_HSA-SAME: () #[[ATTR4]] {187; ATTRIBUTOR_HSA-NEXT:    call void @use_workgroup_id_x()188; ATTRIBUTOR_HSA-NEXT:    ret void189;190  call void @use_workgroup_id_x()191  ret void192}193 194define void @kernel_indirect_use_workgroup_id_x() #1 {195; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@kernel_indirect_use_workgroup_id_x196; ATTRIBUTOR_HSA-SAME: () #[[ATTR4]] {197; ATTRIBUTOR_HSA-NEXT:    call void @use_workgroup_id_x()198; ATTRIBUTOR_HSA-NEXT:    ret void199;200  call void @use_workgroup_id_x()201  ret void202}203 204define void @func_indirect_use_workgroup_id_y() #1 {205; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@func_indirect_use_workgroup_id_y206; ATTRIBUTOR_HSA-SAME: () #[[ATTR5]] {207; ATTRIBUTOR_HSA-NEXT:    call void @use_workgroup_id_y()208; ATTRIBUTOR_HSA-NEXT:    ret void209;210  call void @use_workgroup_id_y()211  ret void212}213 214define void @func_indirect_use_workgroup_id_z() #1 {215; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@func_indirect_use_workgroup_id_z216; ATTRIBUTOR_HSA-SAME: () #[[ATTR6]] {217; ATTRIBUTOR_HSA-NEXT:    call void @use_workgroup_id_z()218; ATTRIBUTOR_HSA-NEXT:    ret void219;220  call void @use_workgroup_id_z()221  ret void222}223 224define void @func_indirect_indirect_use_workgroup_id_y() #1 {225; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@func_indirect_indirect_use_workgroup_id_y226; ATTRIBUTOR_HSA-SAME: () #[[ATTR5]] {227; ATTRIBUTOR_HSA-NEXT:    call void @func_indirect_use_workgroup_id_y()228; ATTRIBUTOR_HSA-NEXT:    ret void229;230  call void @func_indirect_use_workgroup_id_y()231  ret void232}233 234define void @indirect_x2_use_workgroup_id_y() #1 {235; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@indirect_x2_use_workgroup_id_y236; ATTRIBUTOR_HSA-SAME: () #[[ATTR5]] {237; ATTRIBUTOR_HSA-NEXT:    call void @func_indirect_indirect_use_workgroup_id_y()238; ATTRIBUTOR_HSA-NEXT:    ret void239;240  call void @func_indirect_indirect_use_workgroup_id_y()241  ret void242}243 244define void @func_indirect_use_dispatch_ptr() #1 {245; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@func_indirect_use_dispatch_ptr246; ATTRIBUTOR_HSA-SAME: () #[[ATTR7]] {247; ATTRIBUTOR_HSA-NEXT:    call void @use_dispatch_ptr()248; ATTRIBUTOR_HSA-NEXT:    ret void249;250  call void @use_dispatch_ptr()251  ret void252}253 254define void @func_indirect_use_queue_ptr() #1 {255; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@func_indirect_use_queue_ptr256; ATTRIBUTOR_HSA-SAME: () #[[ATTR8]] {257; ATTRIBUTOR_HSA-NEXT:    call void @use_queue_ptr()258; ATTRIBUTOR_HSA-NEXT:    ret void259;260  call void @use_queue_ptr()261  ret void262}263 264define void @func_indirect_use_dispatch_id() #1 {265; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@func_indirect_use_dispatch_id266; ATTRIBUTOR_HSA-SAME: () #[[ATTR9]] {267; ATTRIBUTOR_HSA-NEXT:    call void @use_dispatch_id()268; ATTRIBUTOR_HSA-NEXT:    ret void269;270  call void @use_dispatch_id()271  ret void272}273 274define void @func_indirect_use_workgroup_id_y_workgroup_id_z() #1 {275; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@func_indirect_use_workgroup_id_y_workgroup_id_z276; ATTRIBUTOR_HSA-SAME: () #[[ATTR11:[0-9]+]] {277; ATTRIBUTOR_HSA-NEXT:    call void @func_indirect_use_workgroup_id_y_workgroup_id_z()278; ATTRIBUTOR_HSA-NEXT:    ret void279;280  call void @func_indirect_use_workgroup_id_y_workgroup_id_z()281  ret void282}283 284define void @recursive_use_workitem_id_y() #1 {285; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@recursive_use_workitem_id_y286; ATTRIBUTOR_HSA-SAME: () #[[ATTR2]] {287; ATTRIBUTOR_HSA-NEXT:    [[VAL:%.*]] = call i32 @llvm.amdgcn.workitem.id.y()288; ATTRIBUTOR_HSA-NEXT:    store volatile i32 [[VAL]], ptr addrspace(1) poison, align 4289; ATTRIBUTOR_HSA-NEXT:    call void @recursive_use_workitem_id_y()290; ATTRIBUTOR_HSA-NEXT:    ret void291;292  %val = call i32 @llvm.amdgcn.workitem.id.y()293  store volatile i32 %val, ptr addrspace(1) poison294  call void @recursive_use_workitem_id_y()295  ret void296}297 298define void @call_recursive_use_workitem_id_y() #1 {299; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@call_recursive_use_workitem_id_y300; ATTRIBUTOR_HSA-SAME: () #[[ATTR2]] {301; ATTRIBUTOR_HSA-NEXT:    call void @recursive_use_workitem_id_y()302; ATTRIBUTOR_HSA-NEXT:    ret void303;304  call void @recursive_use_workitem_id_y()305  ret void306}307 308define void @use_group_to_flat_addrspacecast(ptr addrspace(3) %ptr) #1 {309; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@use_group_to_flat_addrspacecast310; ATTRIBUTOR_HSA-SAME: (ptr addrspace(3) [[PTR:%.*]]) #[[ATTR12:[0-9]+]] {311; ATTRIBUTOR_HSA-NEXT:    [[STOF:%.*]] = addrspacecast ptr addrspace(3) [[PTR]] to ptr addrspace(4)312; ATTRIBUTOR_HSA-NEXT:    store volatile i32 0, ptr addrspace(4) [[STOF]], align 4313; ATTRIBUTOR_HSA-NEXT:    ret void314;315  %stof = addrspacecast ptr addrspace(3) %ptr to ptr addrspace(4)316  store volatile i32 0, ptr addrspace(4) %stof317  ret void318}319 320 321define void @use_group_to_flat_addrspacecast_gfx9(ptr addrspace(3) %ptr) #2 {322; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@use_group_to_flat_addrspacecast_gfx9323; ATTRIBUTOR_HSA-SAME: (ptr addrspace(3) [[PTR:%.*]]) #[[ATTR13:[0-9]+]] {324; ATTRIBUTOR_HSA-NEXT:    [[STOF:%.*]] = addrspacecast ptr addrspace(3) [[PTR]] to ptr addrspace(4)325; ATTRIBUTOR_HSA-NEXT:    store volatile i32 0, ptr addrspace(4) [[STOF]], align 4326; ATTRIBUTOR_HSA-NEXT:    ret void327;328  %stof = addrspacecast ptr addrspace(3) %ptr to ptr addrspace(4)329  store volatile i32 0, ptr addrspace(4) %stof330  ret void331}332 333define void @use_group_to_flat_addrspacecast_queue_ptr_gfx9(ptr addrspace(3) %ptr) #2 {334; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@use_group_to_flat_addrspacecast_queue_ptr_gfx9335; ATTRIBUTOR_HSA-SAME: (ptr addrspace(3) [[PTR:%.*]]) #[[ATTR14:[0-9]+]] {336; ATTRIBUTOR_HSA-NEXT:    [[STOF:%.*]] = addrspacecast ptr addrspace(3) [[PTR]] to ptr addrspace(4)337; ATTRIBUTOR_HSA-NEXT:    store volatile i32 0, ptr addrspace(4) [[STOF]], align 4338; ATTRIBUTOR_HSA-NEXT:    call void @func_indirect_use_queue_ptr()339; ATTRIBUTOR_HSA-NEXT:    ret void340;341  %stof = addrspacecast ptr addrspace(3) %ptr to ptr addrspace(4)342  store volatile i32 0, ptr addrspace(4) %stof343  call void @func_indirect_use_queue_ptr()344  ret void345}346 347define void @indirect_use_group_to_flat_addrspacecast() #1 {348; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@indirect_use_group_to_flat_addrspacecast349; ATTRIBUTOR_HSA-SAME: () #[[ATTR12]] {350; ATTRIBUTOR_HSA-NEXT:    call void @use_group_to_flat_addrspacecast(ptr addrspace(3) null)351; ATTRIBUTOR_HSA-NEXT:    ret void352;353  call void @use_group_to_flat_addrspacecast(ptr addrspace(3) null)354  ret void355}356 357define void @indirect_use_group_to_flat_addrspacecast_gfx9() #1 {358; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@indirect_use_group_to_flat_addrspacecast_gfx9359; ATTRIBUTOR_HSA-SAME: () #[[ATTR11]] {360; ATTRIBUTOR_HSA-NEXT:    call void @use_group_to_flat_addrspacecast_gfx9(ptr addrspace(3) null)361; ATTRIBUTOR_HSA-NEXT:    ret void362;363  call void @use_group_to_flat_addrspacecast_gfx9(ptr addrspace(3) null)364  ret void365}366 367define void @indirect_use_group_to_flat_addrspacecast_queue_ptr_gfx9() #1 {368; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@indirect_use_group_to_flat_addrspacecast_queue_ptr_gfx9369; ATTRIBUTOR_HSA-SAME: () #[[ATTR8]] {370; ATTRIBUTOR_HSA-NEXT:    call void @use_group_to_flat_addrspacecast_queue_ptr_gfx9(ptr addrspace(3) null)371; ATTRIBUTOR_HSA-NEXT:    ret void372;373  call void @use_group_to_flat_addrspacecast_queue_ptr_gfx9(ptr addrspace(3) null)374  ret void375}376 377define void @use_kernarg_segment_ptr() #1 {378; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@use_kernarg_segment_ptr379; ATTRIBUTOR_HSA-SAME: () #[[ATTR11]] {380; ATTRIBUTOR_HSA-NEXT:    [[KERNARG_SEGMENT_PTR:%.*]] = call ptr addrspace(4) @llvm.amdgcn.kernarg.segment.ptr()381; ATTRIBUTOR_HSA-NEXT:    store volatile ptr addrspace(4) [[KERNARG_SEGMENT_PTR]], ptr addrspace(1) poison, align 8382; ATTRIBUTOR_HSA-NEXT:    ret void383;384  %kernarg.segment.ptr = call ptr addrspace(4) @llvm.amdgcn.kernarg.segment.ptr()385  store volatile ptr addrspace(4) %kernarg.segment.ptr, ptr addrspace(1) poison386  ret void387}388define void @func_indirect_use_kernarg_segment_ptr() #1 {389; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@func_indirect_use_kernarg_segment_ptr390; ATTRIBUTOR_HSA-SAME: () #[[ATTR11]] {391; ATTRIBUTOR_HSA-NEXT:    call void @use_kernarg_segment_ptr()392; ATTRIBUTOR_HSA-NEXT:    ret void393;394  call void @use_kernarg_segment_ptr()395  ret void396}397 398define amdgpu_kernel void @kern_use_implicitarg_ptr() #1 {399; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@kern_use_implicitarg_ptr400; ATTRIBUTOR_HSA-SAME: () #[[ATTR12]] {401; ATTRIBUTOR_HSA-NEXT:    [[IMPLICITARG_PTR:%.*]] = call ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr()402; ATTRIBUTOR_HSA-NEXT:    store volatile ptr addrspace(4) [[IMPLICITARG_PTR]], ptr addrspace(1) poison, align 8403; ATTRIBUTOR_HSA-NEXT:    ret void404;405  %implicitarg.ptr = call ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr()406  store volatile ptr addrspace(4) %implicitarg.ptr, ptr addrspace(1) poison407  ret void408}409 410define void @use_implicitarg_ptr() #1 {411; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@use_implicitarg_ptr412; ATTRIBUTOR_HSA-SAME: () #[[ATTR12]] {413; ATTRIBUTOR_HSA-NEXT:    [[IMPLICITARG_PTR:%.*]] = call ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr()414; ATTRIBUTOR_HSA-NEXT:    store volatile ptr addrspace(4) [[IMPLICITARG_PTR]], ptr addrspace(1) poison, align 8415; ATTRIBUTOR_HSA-NEXT:    ret void416;417  %implicitarg.ptr = call ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr()418  store volatile ptr addrspace(4) %implicitarg.ptr, ptr addrspace(1) poison419  ret void420}421 422define void @func_indirect_use_implicitarg_ptr() #1 {423; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@func_indirect_use_implicitarg_ptr424; ATTRIBUTOR_HSA-SAME: () #[[ATTR12]] {425; ATTRIBUTOR_HSA-NEXT:    call void @use_implicitarg_ptr()426; ATTRIBUTOR_HSA-NEXT:    ret void427;428  call void @use_implicitarg_ptr()429  ret void430}431 432declare void @external.func() #3433 434; This function gets deleted.435define internal void @defined.func() #3 {436; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@defined.func437; ATTRIBUTOR_HSA-SAME: () #[[ATTR16:[0-9]+]] {438; ATTRIBUTOR_HSA-NEXT:    ret void439;440  ret void441}442 443define void @func_call_external() #3 {444; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@func_call_external445; ATTRIBUTOR_HSA-SAME: () #[[ATTR15:[0-9]+]] {446; ATTRIBUTOR_HSA-NEXT:    call void @external.func()447; ATTRIBUTOR_HSA-NEXT:    ret void448;449  call void @external.func()450  ret void451}452 453define void @func_call_defined() #3 {454; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@func_call_defined455; ATTRIBUTOR_HSA-SAME: () #[[ATTR16]] {456; ATTRIBUTOR_HSA-NEXT:    call void @defined.func()457; ATTRIBUTOR_HSA-NEXT:    ret void458;459  call void @defined.func()460  ret void461}462define void @func_call_asm() #3 {463; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@func_call_asm464; ATTRIBUTOR_HSA-SAME: () #[[ATTR16]] {465; ATTRIBUTOR_HSA-NEXT:    call void asm sideeffect "", ""() #[[ATTR24:[0-9]+]]466; ATTRIBUTOR_HSA-NEXT:    ret void467;468  call void asm sideeffect "", ""() #3469  ret void470}471 472define amdgpu_kernel void @kern_call_external() #3 {473; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@kern_call_external474; ATTRIBUTOR_HSA-SAME: () #[[ATTR15]] {475; ATTRIBUTOR_HSA-NEXT:    call void @external.func()476; ATTRIBUTOR_HSA-NEXT:    ret void477;478  call void @external.func()479  ret void480}481 482define amdgpu_kernel void @func_kern_defined() #3 {483; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@func_kern_defined484; ATTRIBUTOR_HSA-SAME: () #[[ATTR16]] {485; ATTRIBUTOR_HSA-NEXT:    call void @defined.func()486; ATTRIBUTOR_HSA-NEXT:    ret void487;488  call void @defined.func()489  ret void490}491 492define i32 @use_dispatch_ptr_ret_type() #1 {493; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@use_dispatch_ptr_ret_type494; ATTRIBUTOR_HSA-SAME: () #[[ATTR7]] {495; ATTRIBUTOR_HSA-NEXT:    [[DISPATCH_PTR:%.*]] = call ptr addrspace(4) @llvm.amdgcn.dispatch.ptr()496; ATTRIBUTOR_HSA-NEXT:    store volatile ptr addrspace(4) [[DISPATCH_PTR]], ptr addrspace(1) poison, align 8497; ATTRIBUTOR_HSA-NEXT:    ret i32 0498;499  %dispatch.ptr = call ptr addrspace(4) @llvm.amdgcn.dispatch.ptr()500  store volatile ptr addrspace(4) %dispatch.ptr, ptr addrspace(1) poison501  ret i32 0502}503 504define float @func_indirect_use_dispatch_ptr_constexpr_cast_func() #1 {505; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@func_indirect_use_dispatch_ptr_constexpr_cast_func506; ATTRIBUTOR_HSA-SAME: () #[[ATTR7]] {507; ATTRIBUTOR_HSA-NEXT:    [[F:%.*]] = call float @use_dispatch_ptr_ret_type()508; ATTRIBUTOR_HSA-NEXT:    [[FADD:%.*]] = fadd float [[F]], 1.000000e+00509; ATTRIBUTOR_HSA-NEXT:    ret float [[FADD]]510;511  %f = call float @use_dispatch_ptr_ret_type()512  %fadd = fadd float %f, 1.0513  ret float %fadd514}515 516define float @func_indirect_call(ptr %fptr) #3 {517; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@func_indirect_call518; ATTRIBUTOR_HSA-SAME: (ptr [[FPTR:%.*]]) #[[ATTR15]] {519; ATTRIBUTOR_HSA-NEXT:    [[F:%.*]] = call float [[FPTR]]()520; ATTRIBUTOR_HSA-NEXT:    [[FADD:%.*]] = fadd float [[F]], 1.000000e+00521; ATTRIBUTOR_HSA-NEXT:    ret float [[FADD]]522;523  %f = call float %fptr()524  %fadd = fadd float %f, 1.0525  ret float %fadd526}527 528declare float @extern() #3529define float @func_extern_call() #3 {530; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@func_extern_call531; ATTRIBUTOR_HSA-SAME: () #[[ATTR15]] {532; ATTRIBUTOR_HSA-NEXT:    [[F:%.*]] = call float @extern()533; ATTRIBUTOR_HSA-NEXT:    [[FADD:%.*]] = fadd float [[F]], 1.000000e+00534; ATTRIBUTOR_HSA-NEXT:    ret float [[FADD]]535;536  %f = call float @extern()537  %fadd = fadd float %f, 1.0538  ret float %fadd539}540 541define float @func_null_call(ptr %fptr) #3 {542; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@func_null_call543; ATTRIBUTOR_HSA-SAME: (ptr [[FPTR:%.*]]) #[[ATTR15]] {544; ATTRIBUTOR_HSA-NEXT:    [[F:%.*]] = call float null()545; ATTRIBUTOR_HSA-NEXT:    [[FADD:%.*]] = fadd float [[F]], 1.000000e+00546; ATTRIBUTOR_HSA-NEXT:    ret float [[FADD]]547;548  %f = call float null()549  %fadd = fadd float %f, 1.0550  ret float %fadd551}552 553declare float @llvm.amdgcn.rcp.f32(float) #0554 555; Calls some other recognized intrinsic556define float @func_other_intrinsic_call(float %arg) #3 {557; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@func_other_intrinsic_call558; ATTRIBUTOR_HSA-SAME: (float [[ARG:%.*]]) #[[ATTR16]] {559; ATTRIBUTOR_HSA-NEXT:    [[F:%.*]] = call float @llvm.amdgcn.rcp.f32(float [[ARG]])560; ATTRIBUTOR_HSA-NEXT:    [[FADD:%.*]] = fadd float [[F]], 1.000000e+00561; ATTRIBUTOR_HSA-NEXT:    ret float [[FADD]]562;563  %f = call float @llvm.amdgcn.rcp.f32(float %arg)564  %fadd = fadd float %f, 1.0565  ret float %fadd566}567 568; Hostcall needs to be enabled for sanitizers569define amdgpu_kernel void @kern_sanitize_address() #4 {570; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@kern_sanitize_address571; ATTRIBUTOR_HSA-SAME: () #[[ATTR17:[0-9]+]] {572; ATTRIBUTOR_HSA-NEXT:    store volatile i32 0, ptr addrspace(1) null, align 4573; ATTRIBUTOR_HSA-NEXT:    ret void574;575  store volatile i32 0, ptr addrspace(1) null576  ret void577}578 579; Hostcall needs to be enabled for sanitizers580define void @func_sanitize_address() #4 {581; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@func_sanitize_address582; ATTRIBUTOR_HSA-SAME: () #[[ATTR17]] {583; ATTRIBUTOR_HSA-NEXT:    store volatile i32 0, ptr addrspace(1) null, align 4584; ATTRIBUTOR_HSA-NEXT:    ret void585;586  store volatile i32 0, ptr addrspace(1) null587  ret void588}589 590; Hostcall needs to be enabled for sanitizers591define void @func_indirect_sanitize_address() #3 {592; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@func_indirect_sanitize_address593; ATTRIBUTOR_HSA-SAME: () #[[ATTR18:[0-9]+]] {594; ATTRIBUTOR_HSA-NEXT:    call void @func_sanitize_address()595; ATTRIBUTOR_HSA-NEXT:    ret void596;597  call void @func_sanitize_address()598  ret void599}600 601; Hostcall needs to be enabled for sanitizers602define amdgpu_kernel void @kern_indirect_sanitize_address() #3 {603; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@kern_indirect_sanitize_address604; ATTRIBUTOR_HSA-SAME: () #[[ATTR18]] {605; ATTRIBUTOR_HSA-NEXT:    call void @func_sanitize_address()606; ATTRIBUTOR_HSA-NEXT:    ret void607;608  call void @func_sanitize_address()609  ret void610}611 612; Marked with amdgpu-no-implicitarg-ptr, and613; sanitize_address. sanitize_address wins and requires the pointer.614declare void @extern_func_sanitize_address() #5615 616define amdgpu_kernel void @kern_decl_sanitize_address() #3 {617; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@kern_decl_sanitize_address618; ATTRIBUTOR_HSA-SAME: () #[[ATTR15]] {619; ATTRIBUTOR_HSA-NEXT:    call void @extern_func_sanitize_address()620; ATTRIBUTOR_HSA-NEXT:    ret void621;622  call void @extern_func_sanitize_address()623  ret void624}625 626declare void @enqueue_block_decl() #6627 628define internal void @enqueue_block_def() #6 {629; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@enqueue_block_def630; ATTRIBUTOR_HSA-SAME: () #[[ATTR21:[0-9]+]] {631; ATTRIBUTOR_HSA-NEXT:    ret void632;633  ret void634}635 636define amdgpu_kernel void @kern_call_enqueued_block_decl() {637; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@kern_call_enqueued_block_decl638; ATTRIBUTOR_HSA-SAME: () #[[ATTR22:[0-9]+]] {639; ATTRIBUTOR_HSA-NEXT:    call void @enqueue_block_decl()640; ATTRIBUTOR_HSA-NEXT:    ret void641;642  call void @enqueue_block_decl()643  ret void644}645 646define amdgpu_kernel void @kern_call_enqueued_block_def() {647; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@kern_call_enqueued_block_def648; ATTRIBUTOR_HSA-SAME: () #[[ATTR23:[0-9]+]] {649; ATTRIBUTOR_HSA-NEXT:    call void @enqueue_block_def()650; ATTRIBUTOR_HSA-NEXT:    ret void651;652  call void @enqueue_block_def()653  ret void654}655 656define void @unused_enqueue_block() {657; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@unused_enqueue_block658; ATTRIBUTOR_HSA-SAME: () #[[ATTR23]] {659; ATTRIBUTOR_HSA-NEXT:    ret void660;661  ret void662}663 664define internal void @known_func() {665; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@known_func666; ATTRIBUTOR_HSA-SAME: () #[[ATTR23]] {667; ATTRIBUTOR_HSA-NEXT:    ret void668;669  ret void670}671 672; Should never happen673define amdgpu_kernel void @kern_callsite_enqueue_block() {674; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@kern_callsite_enqueue_block675; ATTRIBUTOR_HSA-SAME: () #[[ATTR23]] {676; ATTRIBUTOR_HSA-NEXT:    call void @known_func() #[[ATTR25:[0-9]+]]677; ATTRIBUTOR_HSA-NEXT:    ret void678;679  call void @known_func() #6680  ret void681}682 683attributes #0 = { nounwind readnone speculatable }684attributes #1 = { nounwind "target-cpu"="fiji" }685attributes #2 = { nounwind "target-cpu"="gfx900" }686attributes #3 = { nounwind }687attributes #4 = { nounwind sanitize_address }688attributes #5 = { nounwind sanitize_address "amdgpu-no-implicitarg-ptr" }689attributes #6 = { "enqueued-block" }690 691 692;.693; ATTRIBUTOR_HSA: attributes #[[ATTR0:[0-9]+]] = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }694; ATTRIBUTOR_HSA: attributes #[[ATTR1]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "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-y" "amdgpu-no-workitem-id-z" "target-cpu"="fiji" "uniform-work-group-size"="false" }695; ATTRIBUTOR_HSA: attributes #[[ATTR2]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "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-z" "target-cpu"="fiji" "uniform-work-group-size"="false" }696; ATTRIBUTOR_HSA: attributes #[[ATTR3]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "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" "target-cpu"="fiji" "uniform-work-group-size"="false" }697; ATTRIBUTOR_HSA: attributes #[[ATTR4]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "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-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="fiji" "uniform-work-group-size"="false" }698; ATTRIBUTOR_HSA: attributes #[[ATTR5]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "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-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="fiji" "uniform-work-group-size"="false" }699; ATTRIBUTOR_HSA: attributes #[[ATTR6]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "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-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="fiji" "uniform-work-group-size"="false" }700; ATTRIBUTOR_HSA: attributes #[[ATTR7]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "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" "target-cpu"="fiji" "uniform-work-group-size"="false" }701; ATTRIBUTOR_HSA: attributes #[[ATTR8]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "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-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "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" "target-cpu"="fiji" "uniform-work-group-size"="false" }702; ATTRIBUTOR_HSA: attributes #[[ATTR9]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "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" "target-cpu"="fiji" "uniform-work-group-size"="false" }703; ATTRIBUTOR_HSA: attributes #[[ATTR10]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "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-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="fiji" "uniform-work-group-size"="false" }704; ATTRIBUTOR_HSA: attributes #[[ATTR11]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "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" "target-cpu"="fiji" "uniform-work-group-size"="false" }705; ATTRIBUTOR_HSA: attributes #[[ATTR12]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "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-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" "target-cpu"="fiji" "uniform-work-group-size"="false" }706; ATTRIBUTOR_HSA: attributes #[[ATTR13]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "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" "target-cpu"="gfx900" "uniform-work-group-size"="false" }707; ATTRIBUTOR_HSA: attributes #[[ATTR14]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "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-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "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" "target-cpu"="gfx900" "uniform-work-group-size"="false" }708; ATTRIBUTOR_HSA: attributes #[[ATTR15]] = { nounwind "uniform-work-group-size"="false" }709; ATTRIBUTOR_HSA: attributes #[[ATTR16]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "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" "uniform-work-group-size"="false" }710; ATTRIBUTOR_HSA: attributes #[[ATTR17]] = { nounwind sanitize_address "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-heap-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" "uniform-work-group-size"="false" }711; ATTRIBUTOR_HSA: attributes #[[ATTR18]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-heap-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" "uniform-work-group-size"="false" }712; ATTRIBUTOR_HSA: attributes #[[ATTR19:[0-9]+]] = { nounwind sanitize_address "amdgpu-no-implicitarg-ptr" "uniform-work-group-size"="false" }713; ATTRIBUTOR_HSA: attributes #[[ATTR20:[0-9]+]] = { "enqueued-block" "uniform-work-group-size"="false" }714; ATTRIBUTOR_HSA: attributes #[[ATTR21]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "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" "enqueued-block" "uniform-work-group-size"="false" }715; ATTRIBUTOR_HSA: attributes #[[ATTR22]] = { "uniform-work-group-size"="false" }716; ATTRIBUTOR_HSA: attributes #[[ATTR23]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "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" "uniform-work-group-size"="false" }717; ATTRIBUTOR_HSA: attributes #[[ATTR24]] = { nounwind }718; ATTRIBUTOR_HSA: attributes #[[ATTR25]] = { "enqueued-block" }719;.720