brintos

brintos / llvm-project-archived public Read only

0
0
Text · 18.1 KiB · 3194581 Raw
421 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx803 < %s | FileCheck -check-prefixes=FIXEDABI,FIXEDABI-SDAG %s3; RUN: llc -global-isel -mtriple=amdgcn-amd-amdhsa -mcpu=gfx803 < %s | FileCheck -check-prefixes=FIXEDABI,FIXEDABI-GISEL %s4 5; Test with gfx803 so that6; addrspacecast/llvm.amdgcn.is.shared/llvm.amdgcn.is.private require7; the queue ptr.  Tests with code object v3 and above to test8; llvm.trap/llvm.debugtrap that require the queue ptr.9 10 11declare hidden void @requires_all_inputs()12 13; This function incorrectly is marked with the hints that the callee14; does not require the implicit arguments to the function. Make sure15; we do not crash.16define void @parent_func_missing_inputs() #0 {17; FIXEDABI-LABEL: parent_func_missing_inputs:18; FIXEDABI:       ; %bb.0:19; FIXEDABI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20; FIXEDABI-NEXT:    s_mov_b32 s16, s3321; FIXEDABI-NEXT:    s_mov_b32 s33, s3222; FIXEDABI-NEXT:    s_or_saveexec_b64 s[18:19], -123; FIXEDABI-NEXT:    buffer_store_dword v40, off, s[0:3], s33 ; 4-byte Folded Spill24; FIXEDABI-NEXT:    s_mov_b64 exec, s[18:19]25; FIXEDABI-NEXT:    v_writelane_b32 v40, s16, 226; FIXEDABI-NEXT:    s_addk_i32 s32, 0x40027; FIXEDABI-NEXT:    v_writelane_b32 v40, s30, 028; FIXEDABI-NEXT:    s_getpc_b64 s[16:17]29; FIXEDABI-NEXT:    s_add_u32 s16, s16, requires_all_inputs@rel32@lo+430; FIXEDABI-NEXT:    s_addc_u32 s17, s17, requires_all_inputs@rel32@hi+1231; FIXEDABI-NEXT:    v_writelane_b32 v40, s31, 132; FIXEDABI-NEXT:    s_swappc_b64 s[30:31], s[16:17]33; FIXEDABI-NEXT:    v_readlane_b32 s31, v40, 134; FIXEDABI-NEXT:    v_readlane_b32 s30, v40, 035; FIXEDABI-NEXT:    s_mov_b32 s32, s3336; FIXEDABI-NEXT:    v_readlane_b32 s4, v40, 237; FIXEDABI-NEXT:    s_or_saveexec_b64 s[6:7], -138; FIXEDABI-NEXT:    buffer_load_dword v40, off, s[0:3], s33 ; 4-byte Folded Reload39; FIXEDABI-NEXT:    s_mov_b64 exec, s[6:7]40; FIXEDABI-NEXT:    s_mov_b32 s33, s441; FIXEDABI-NEXT:    s_waitcnt vmcnt(0)42; FIXEDABI-NEXT:    s_setpc_b64 s[30:31]43  call void @requires_all_inputs()44  ret void45}46 47define amdgpu_kernel void @parent_kernel_missing_inputs() #0 {48; FIXEDABI-SDAG-LABEL: parent_kernel_missing_inputs:49; FIXEDABI-SDAG:       ; %bb.0:50; FIXEDABI-SDAG-NEXT:    s_add_i32 s4, s4, s951; FIXEDABI-SDAG-NEXT:    s_lshr_b32 flat_scratch_hi, s4, 852; FIXEDABI-SDAG-NEXT:    s_add_u32 s0, s0, s953; FIXEDABI-SDAG-NEXT:    v_lshlrev_b32_e32 v1, 10, v154; FIXEDABI-SDAG-NEXT:    s_addc_u32 s1, s1, 055; FIXEDABI-SDAG-NEXT:    v_lshlrev_b32_e32 v2, 20, v256; FIXEDABI-SDAG-NEXT:    v_or_b32_e32 v0, v0, v157; FIXEDABI-SDAG-NEXT:    s_mov_b32 flat_scratch_lo, s558; FIXEDABI-SDAG-NEXT:    s_mov_b32 s14, s859; FIXEDABI-SDAG-NEXT:    s_getpc_b64 s[4:5]60; FIXEDABI-SDAG-NEXT:    s_add_u32 s4, s4, requires_all_inputs@rel32@lo+461; FIXEDABI-SDAG-NEXT:    s_addc_u32 s5, s5, requires_all_inputs@rel32@hi+1262; FIXEDABI-SDAG-NEXT:    v_or_b32_e32 v31, v0, v263; FIXEDABI-SDAG-NEXT:    s_mov_b64 s[8:9], 064; FIXEDABI-SDAG-NEXT:    s_mov_b32 s12, s665; FIXEDABI-SDAG-NEXT:    s_mov_b32 s13, s766; FIXEDABI-SDAG-NEXT:    s_mov_b32 s32, 067; FIXEDABI-SDAG-NEXT:    s_swappc_b64 s[30:31], s[4:5]68; FIXEDABI-SDAG-NEXT:    s_endpgm69;70; FIXEDABI-GISEL-LABEL: parent_kernel_missing_inputs:71; FIXEDABI-GISEL:       ; %bb.0:72; FIXEDABI-GISEL-NEXT:    s_add_i32 s4, s4, s973; FIXEDABI-GISEL-NEXT:    s_lshr_b32 flat_scratch_hi, s4, 874; FIXEDABI-GISEL-NEXT:    s_add_u32 s0, s0, s975; FIXEDABI-GISEL-NEXT:    v_lshlrev_b32_e32 v1, 10, v176; FIXEDABI-GISEL-NEXT:    s_addc_u32 s1, s1, 077; FIXEDABI-GISEL-NEXT:    v_or_b32_e32 v0, v0, v178; FIXEDABI-GISEL-NEXT:    v_lshlrev_b32_e32 v1, 20, v279; FIXEDABI-GISEL-NEXT:    s_mov_b32 flat_scratch_lo, s580; FIXEDABI-GISEL-NEXT:    s_mov_b32 s14, s881; FIXEDABI-GISEL-NEXT:    v_or_b32_e32 v31, v0, v182; FIXEDABI-GISEL-NEXT:    s_getpc_b64 s[4:5]83; FIXEDABI-GISEL-NEXT:    s_add_u32 s4, s4, requires_all_inputs@rel32@lo+484; FIXEDABI-GISEL-NEXT:    s_addc_u32 s5, s5, requires_all_inputs@rel32@hi+1285; FIXEDABI-GISEL-NEXT:    s_mov_b64 s[8:9], 086; FIXEDABI-GISEL-NEXT:    s_mov_b32 s12, s687; FIXEDABI-GISEL-NEXT:    s_mov_b32 s13, s788; FIXEDABI-GISEL-NEXT:    s_mov_b32 s32, 089; FIXEDABI-GISEL-NEXT:    s_swappc_b64 s[30:31], s[4:5]90; FIXEDABI-GISEL-NEXT:    s_endpgm91  call void @requires_all_inputs()92  ret void93}94 95; Function is marked with amdgpu-no-workitem-id-* but uses them anyway96define void @marked_func_use_workitem_id(ptr addrspace(1) %ptr) #0 {97; FIXEDABI-SDAG-LABEL: marked_func_use_workitem_id:98; FIXEDABI-SDAG:       ; %bb.0:99; FIXEDABI-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)100; FIXEDABI-SDAG-NEXT:    v_and_b32_e32 v2, 0x3ff, v31101; FIXEDABI-SDAG-NEXT:    flat_store_dword v[0:1], v2102; FIXEDABI-SDAG-NEXT:    s_waitcnt vmcnt(0)103; FIXEDABI-SDAG-NEXT:    v_bfe_u32 v2, v31, 10, 10104; FIXEDABI-SDAG-NEXT:    flat_store_dword v[0:1], v2105; FIXEDABI-SDAG-NEXT:    s_waitcnt vmcnt(0)106; FIXEDABI-SDAG-NEXT:    v_bfe_u32 v2, v31, 20, 10107; FIXEDABI-SDAG-NEXT:    flat_store_dword v[0:1], v2108; FIXEDABI-SDAG-NEXT:    s_waitcnt vmcnt(0)109; FIXEDABI-SDAG-NEXT:    s_setpc_b64 s[30:31]110;111; FIXEDABI-GISEL-LABEL: marked_func_use_workitem_id:112; FIXEDABI-GISEL:       ; %bb.0:113; FIXEDABI-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)114; FIXEDABI-GISEL-NEXT:    v_and_b32_e32 v2, 0x3ff, v31115; FIXEDABI-GISEL-NEXT:    v_bfe_u32 v3, v31, 10, 10116; FIXEDABI-GISEL-NEXT:    v_bfe_u32 v4, v31, 20, 10117; FIXEDABI-GISEL-NEXT:    flat_store_dword v[0:1], v2118; FIXEDABI-GISEL-NEXT:    s_waitcnt vmcnt(0)119; FIXEDABI-GISEL-NEXT:    flat_store_dword v[0:1], v3120; FIXEDABI-GISEL-NEXT:    s_waitcnt vmcnt(0)121; FIXEDABI-GISEL-NEXT:    flat_store_dword v[0:1], v4122; FIXEDABI-GISEL-NEXT:    s_waitcnt vmcnt(0)123; FIXEDABI-GISEL-NEXT:    s_setpc_b64 s[30:31]124  %id.x = call i32 @llvm.amdgcn.workitem.id.x()125  %id.y = call i32 @llvm.amdgcn.workitem.id.y()126  %id.z = call i32 @llvm.amdgcn.workitem.id.z()127  store volatile i32 %id.x, ptr addrspace(1) %ptr128  store volatile i32 %id.y, ptr addrspace(1) %ptr129  store volatile i32 %id.z, ptr addrspace(1) %ptr130  ret void131}132 133; Function is marked with amdgpu-no-workitem-id-* but uses them anyway134define amdgpu_kernel void @marked_kernel_use_workitem_id(ptr addrspace(1) %ptr) #0 {135; FIXEDABI-LABEL: marked_kernel_use_workitem_id:136; FIXEDABI:       ; %bb.0:137; FIXEDABI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x0138; FIXEDABI-NEXT:    s_add_i32 s6, s6, s11139; FIXEDABI-NEXT:    s_mov_b32 flat_scratch_lo, s7140; FIXEDABI-NEXT:    s_lshr_b32 flat_scratch_hi, s6, 8141; FIXEDABI-NEXT:    s_waitcnt lgkmcnt(0)142; FIXEDABI-NEXT:    v_mov_b32_e32 v4, s1143; FIXEDABI-NEXT:    v_mov_b32_e32 v3, s0144; FIXEDABI-NEXT:    flat_store_dword v[3:4], v0145; FIXEDABI-NEXT:    s_waitcnt vmcnt(0)146; FIXEDABI-NEXT:    flat_store_dword v[3:4], v1147; FIXEDABI-NEXT:    s_waitcnt vmcnt(0)148; FIXEDABI-NEXT:    flat_store_dword v[3:4], v2149; FIXEDABI-NEXT:    s_waitcnt vmcnt(0)150; FIXEDABI-NEXT:    s_endpgm151  %id.x = call i32 @llvm.amdgcn.workitem.id.x()152  %id.y = call i32 @llvm.amdgcn.workitem.id.y()153  %id.z = call i32 @llvm.amdgcn.workitem.id.z()154  store volatile i32 %id.x, ptr addrspace(1) %ptr155  store volatile i32 %id.y, ptr addrspace(1) %ptr156  store volatile i32 %id.z, ptr addrspace(1) %ptr157  ret void158}159 160define void @marked_func_use_workgroup_id(ptr addrspace(1) %ptr) #0 {161; FIXEDABI-LABEL: marked_func_use_workgroup_id:162; FIXEDABI:       ; %bb.0:163; FIXEDABI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)164; FIXEDABI-NEXT:    v_mov_b32_e32 v2, s12165; FIXEDABI-NEXT:    flat_store_dword v[0:1], v2166; FIXEDABI-NEXT:    s_waitcnt vmcnt(0)167; FIXEDABI-NEXT:    v_mov_b32_e32 v2, s13168; FIXEDABI-NEXT:    flat_store_dword v[0:1], v2169; FIXEDABI-NEXT:    s_waitcnt vmcnt(0)170; FIXEDABI-NEXT:    v_mov_b32_e32 v2, s14171; FIXEDABI-NEXT:    flat_store_dword v[0:1], v2172; FIXEDABI-NEXT:    s_waitcnt vmcnt(0)173; FIXEDABI-NEXT:    s_setpc_b64 s[30:31]174  %id.x = call i32 @llvm.amdgcn.workgroup.id.x()175  %id.y = call i32 @llvm.amdgcn.workgroup.id.y()176  %id.z = call i32 @llvm.amdgcn.workgroup.id.z()177  store volatile i32 %id.x, ptr addrspace(1) %ptr178  store volatile i32 %id.y, ptr addrspace(1) %ptr179  store volatile i32 %id.z, ptr addrspace(1) %ptr180  ret void181}182 183define amdgpu_kernel void @marked_kernel_use_workgroup_id(ptr addrspace(1) %ptr) #0 {184; FIXEDABI-LABEL: marked_kernel_use_workgroup_id:185; FIXEDABI:       ; %bb.0:186; FIXEDABI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x0187; FIXEDABI-NEXT:    s_add_i32 s6, s6, s11188; FIXEDABI-NEXT:    s_mov_b32 flat_scratch_lo, s7189; FIXEDABI-NEXT:    s_lshr_b32 flat_scratch_hi, s6, 8190; FIXEDABI-NEXT:    v_mov_b32_e32 v2, s8191; FIXEDABI-NEXT:    s_waitcnt lgkmcnt(0)192; FIXEDABI-NEXT:    v_mov_b32_e32 v0, s0193; FIXEDABI-NEXT:    v_mov_b32_e32 v1, s1194; FIXEDABI-NEXT:    flat_store_dword v[0:1], v2195; FIXEDABI-NEXT:    s_waitcnt vmcnt(0)196; FIXEDABI-NEXT:    v_mov_b32_e32 v2, s9197; FIXEDABI-NEXT:    flat_store_dword v[0:1], v2198; FIXEDABI-NEXT:    s_waitcnt vmcnt(0)199; FIXEDABI-NEXT:    v_mov_b32_e32 v2, s10200; FIXEDABI-NEXT:    flat_store_dword v[0:1], v2201; FIXEDABI-NEXT:    s_waitcnt vmcnt(0)202; FIXEDABI-NEXT:    s_endpgm203  %id.x = call i32 @llvm.amdgcn.workgroup.id.x()204  %id.y = call i32 @llvm.amdgcn.workgroup.id.y()205  %id.z = call i32 @llvm.amdgcn.workgroup.id.z()206  store volatile i32 %id.x, ptr addrspace(1) %ptr207  store volatile i32 %id.y, ptr addrspace(1) %ptr208  store volatile i32 %id.z, ptr addrspace(1) %ptr209  ret void210}211 212define void @marked_func_use_other_sgpr(ptr addrspace(1) %ptr) #0 {213; FIXEDABI-LABEL: marked_func_use_other_sgpr:214; FIXEDABI:       ; %bb.0:215; FIXEDABI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)216; FIXEDABI-NEXT:    v_mov_b32_e32 v2, s6217; FIXEDABI-NEXT:    v_mov_b32_e32 v3, s7218; FIXEDABI-NEXT:    flat_load_ubyte v2, v[2:3] glc219; FIXEDABI-NEXT:    s_waitcnt vmcnt(0)220; FIXEDABI-NEXT:    v_mov_b32_e32 v2, s8221; FIXEDABI-NEXT:    v_mov_b32_e32 v3, s9222; FIXEDABI-NEXT:    flat_load_ubyte v2, v[2:3] glc223; FIXEDABI-NEXT:    s_waitcnt vmcnt(0)224; FIXEDABI-NEXT:    v_mov_b32_e32 v2, s4225; FIXEDABI-NEXT:    v_mov_b32_e32 v3, s5226; FIXEDABI-NEXT:    flat_load_ubyte v2, v[2:3] glc227; FIXEDABI-NEXT:    s_waitcnt vmcnt(0)228; FIXEDABI-NEXT:    v_mov_b32_e32 v2, s10229; FIXEDABI-NEXT:    v_mov_b32_e32 v3, s11230; FIXEDABI-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]231; FIXEDABI-NEXT:    s_waitcnt vmcnt(0)232; FIXEDABI-NEXT:    s_setpc_b64 s[30:31]233  %queue.ptr = call ptr addrspace(4) @llvm.amdgcn.queue.ptr()234  %implicitarg.ptr = call ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr()235  %dispatch.ptr = call ptr addrspace(4) @llvm.amdgcn.dispatch.ptr()236  %dispatch.id = call i64 @llvm.amdgcn.dispatch.id()237  %queue.load = load volatile i8, ptr addrspace(4) %queue.ptr238  %implicitarg.load = load volatile i8, ptr addrspace(4) %implicitarg.ptr239  %dispatch.load = load volatile i8, ptr addrspace(4) %dispatch.ptr240  store volatile i64 %dispatch.id, ptr addrspace(1) %ptr241  ret void242}243 244define amdgpu_kernel void @marked_kernel_use_other_sgpr(ptr addrspace(1) %ptr) #0 {245; FIXEDABI-LABEL: marked_kernel_use_other_sgpr:246; FIXEDABI:       ; %bb.0:247; FIXEDABI-NEXT:    s_add_i32 s6, s6, s11248; FIXEDABI-NEXT:    s_mov_b32 flat_scratch_lo, s7249; FIXEDABI-NEXT:    s_lshr_b32 flat_scratch_hi, s6, 8250; FIXEDABI-NEXT:    s_add_u32 s0, s4, 8251; FIXEDABI-NEXT:    flat_load_ubyte v0, v[0:1] glc252; FIXEDABI-NEXT:    s_addc_u32 s1, s5, 0253; FIXEDABI-NEXT:    s_waitcnt vmcnt(0)254; FIXEDABI-NEXT:    v_mov_b32_e32 v0, s0255; FIXEDABI-NEXT:    v_mov_b32_e32 v1, s1256; FIXEDABI-NEXT:    flat_load_ubyte v0, v[0:1] glc257; FIXEDABI-NEXT:    s_waitcnt vmcnt(0)258; FIXEDABI-NEXT:    flat_load_ubyte v0, v[0:1] glc259; FIXEDABI-NEXT:    s_endpgm260  %queue.ptr = call ptr addrspace(4) @llvm.amdgcn.queue.ptr()261  %implicitarg.ptr = call ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr()262  %dispatch.ptr = call ptr addrspace(4) @llvm.amdgcn.dispatch.ptr()263  %dispatch.id = call i64 @llvm.amdgcn.dispatch.id()264  %queue.load = load volatile i8, ptr addrspace(4) %queue.ptr265  %implicitarg.load = load volatile i8, ptr addrspace(4) %implicitarg.ptr266  %dispatch.load = load volatile i8, ptr addrspace(4) %dispatch.ptr267  ret void268}269 270define amdgpu_kernel void @marked_kernel_nokernargs_implicitarg_ptr() #0 {271; FIXEDABI-LABEL: marked_kernel_nokernargs_implicitarg_ptr:272; FIXEDABI:       ; %bb.0:273; FIXEDABI-NEXT:    s_add_i32 s4, s4, s9274; FIXEDABI-NEXT:    v_mov_b32_e32 v0, 0275; FIXEDABI-NEXT:    s_mov_b32 flat_scratch_lo, s5276; FIXEDABI-NEXT:    s_lshr_b32 flat_scratch_hi, s4, 8277; FIXEDABI-NEXT:    v_mov_b32_e32 v1, 0278; FIXEDABI-NEXT:    flat_load_ubyte v0, v[0:1] glc279; FIXEDABI-NEXT:    s_endpgm280  %implicitarg.ptr = call ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr()281  %implicitarg.load = load volatile i8, ptr addrspace(4) %implicitarg.ptr282  ret void283}284 285; On gfx8, the queue ptr is required for this addrspacecast.286define void @addrspacecast_requires_queue_ptr(ptr addrspace(5) %ptr.private, ptr addrspace(3) %ptr.local) #0 {287; FIXEDABI-SDAG-LABEL: addrspacecast_requires_queue_ptr:288; FIXEDABI-SDAG:       ; %bb.0:289; FIXEDABI-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)290; FIXEDABI-SDAG-NEXT:    s_mov_b64 s[4:5], 0xc0291; FIXEDABI-SDAG-NEXT:    s_load_dword s6, s[4:5], 0x0292; FIXEDABI-SDAG-NEXT:    s_mov_b64 s[4:5], 0xc4293; FIXEDABI-SDAG-NEXT:    s_load_dword s4, s[4:5], 0x0294; FIXEDABI-SDAG-NEXT:    v_cmp_ne_u32_e32 vcc, -1, v0295; FIXEDABI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)296; FIXEDABI-SDAG-NEXT:    v_mov_b32_e32 v2, s6297; FIXEDABI-SDAG-NEXT:    v_cndmask_b32_e32 v3, 0, v2, vcc298; FIXEDABI-SDAG-NEXT:    v_cndmask_b32_e32 v2, 0, v0, vcc299; FIXEDABI-SDAG-NEXT:    v_mov_b32_e32 v0, s4300; FIXEDABI-SDAG-NEXT:    v_cmp_ne_u32_e32 vcc, -1, v1301; FIXEDABI-SDAG-NEXT:    v_cndmask_b32_e32 v5, 0, v0, vcc302; FIXEDABI-SDAG-NEXT:    v_mov_b32_e32 v0, 1303; FIXEDABI-SDAG-NEXT:    v_cndmask_b32_e32 v4, 0, v1, vcc304; FIXEDABI-SDAG-NEXT:    flat_store_dword v[2:3], v0305; FIXEDABI-SDAG-NEXT:    s_waitcnt vmcnt(0)306; FIXEDABI-SDAG-NEXT:    v_mov_b32_e32 v0, 2307; FIXEDABI-SDAG-NEXT:    flat_store_dword v[4:5], v0308; FIXEDABI-SDAG-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)309; FIXEDABI-SDAG-NEXT:    s_setpc_b64 s[30:31]310;311; FIXEDABI-GISEL-LABEL: addrspacecast_requires_queue_ptr:312; FIXEDABI-GISEL:       ; %bb.0:313; FIXEDABI-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)314; FIXEDABI-GISEL-NEXT:    s_mov_b64 s[4:5], 0xc0315; FIXEDABI-GISEL-NEXT:    s_load_dword s6, s[4:5], 0x0316; FIXEDABI-GISEL-NEXT:    s_mov_b64 s[4:5], 0xc4317; FIXEDABI-GISEL-NEXT:    s_load_dword s4, s[4:5], 0x0318; FIXEDABI-GISEL-NEXT:    v_cmp_ne_u32_e32 vcc, -1, v0319; FIXEDABI-GISEL-NEXT:    v_cndmask_b32_e32 v2, 0, v0, vcc320; FIXEDABI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)321; FIXEDABI-GISEL-NEXT:    v_mov_b32_e32 v3, s6322; FIXEDABI-GISEL-NEXT:    v_cndmask_b32_e32 v3, 0, v3, vcc323; FIXEDABI-GISEL-NEXT:    v_mov_b32_e32 v4, s4324; FIXEDABI-GISEL-NEXT:    v_cmp_ne_u32_e32 vcc, -1, v1325; FIXEDABI-GISEL-NEXT:    v_cndmask_b32_e32 v0, 0, v1, vcc326; FIXEDABI-GISEL-NEXT:    v_cndmask_b32_e32 v1, 0, v4, vcc327; FIXEDABI-GISEL-NEXT:    v_mov_b32_e32 v4, 1328; FIXEDABI-GISEL-NEXT:    flat_store_dword v[2:3], v4329; FIXEDABI-GISEL-NEXT:    s_waitcnt vmcnt(0)330; FIXEDABI-GISEL-NEXT:    v_mov_b32_e32 v2, 2331; FIXEDABI-GISEL-NEXT:    flat_store_dword v[0:1], v2332; FIXEDABI-GISEL-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)333; FIXEDABI-GISEL-NEXT:    s_setpc_b64 s[30:31]334  %flat.private = addrspacecast ptr addrspace(5) %ptr.private to ptr335  %flat.local = addrspacecast ptr addrspace(3) %ptr.local to ptr336  store volatile i32 1, ptr %flat.private337  store volatile i32 2, ptr %flat.local338  ret void339}340 341define void @is_shared_requires_queue_ptr(ptr %ptr) #0 {342; FIXEDABI-LABEL: is_shared_requires_queue_ptr:343; FIXEDABI:       ; %bb.0:344; FIXEDABI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)345; FIXEDABI-NEXT:    s_mov_b64 s[4:5], 0xc4346; FIXEDABI-NEXT:    s_load_dword s4, s[4:5], 0x0347; FIXEDABI-NEXT:    s_waitcnt lgkmcnt(0)348; FIXEDABI-NEXT:    v_cmp_eq_u32_e32 vcc, s4, v1349; FIXEDABI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc350; FIXEDABI-NEXT:    flat_store_dword v[0:1], v0351; FIXEDABI-NEXT:    s_waitcnt vmcnt(0)352; FIXEDABI-NEXT:    s_setpc_b64 s[30:31]353  %is.shared = call i1 @llvm.amdgcn.is.shared(ptr %ptr)354  %zext = zext i1 %is.shared to i32355  store volatile i32 %zext, ptr addrspace(1) poison356  ret void357}358 359define void @is_private_requires_queue_ptr(ptr %ptr) #0 {360; FIXEDABI-LABEL: is_private_requires_queue_ptr:361; FIXEDABI:       ; %bb.0:362; FIXEDABI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)363; FIXEDABI-NEXT:    s_mov_b64 s[4:5], 0xc0364; FIXEDABI-NEXT:    s_load_dword s4, s[4:5], 0x0365; FIXEDABI-NEXT:    s_waitcnt lgkmcnt(0)366; FIXEDABI-NEXT:    v_cmp_eq_u32_e32 vcc, s4, v1367; FIXEDABI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc368; FIXEDABI-NEXT:    flat_store_dword v[0:1], v0369; FIXEDABI-NEXT:    s_waitcnt vmcnt(0)370; FIXEDABI-NEXT:    s_setpc_b64 s[30:31]371  %is.private = call i1 @llvm.amdgcn.is.private(ptr %ptr)372  %zext = zext i1 %is.private to i32373  store volatile i32 %zext, ptr addrspace(1) poison374  ret void375}376 377define void @trap_requires_queue() #0 {378; FIXEDABI-LABEL: trap_requires_queue:379; FIXEDABI:       ; %bb.0:380; FIXEDABI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)381; FIXEDABI-NEXT:    s_mov_b64 s[4:5], 0xc8382; FIXEDABI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x0383; FIXEDABI-NEXT:    s_waitcnt lgkmcnt(0)384; FIXEDABI-NEXT:    s_trap 2385  call void @llvm.trap()386  unreachable387}388 389define void @debugtrap_requires_queue() #0 {390; FIXEDABI-LABEL: debugtrap_requires_queue:391; FIXEDABI:       ; %bb.0:392; FIXEDABI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)393; FIXEDABI-NEXT:    s_trap 3394  call void @llvm.debugtrap()395  unreachable396}397 398; FIXME: Broken in globalisel399; define void @ubsantrap_requires_queue() #0 {400;   call void @llvm.ubsantrap(i8 0)401;   unreachable402; }403 404declare i32 @llvm.amdgcn.workitem.id.x()405declare i32 @llvm.amdgcn.workitem.id.y()406declare i32 @llvm.amdgcn.workitem.id.z()407declare i32 @llvm.amdgcn.workgroup.id.x()408declare i32 @llvm.amdgcn.workgroup.id.y()409declare i32 @llvm.amdgcn.workgroup.id.z()410declare noalias ptr addrspace(4) @llvm.amdgcn.queue.ptr()411declare noalias ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr()412declare i64 @llvm.amdgcn.dispatch.id()413declare noalias ptr addrspace(4) @llvm.amdgcn.dispatch.ptr()414declare i1 @llvm.amdgcn.is.shared(ptr)415declare i1 @llvm.amdgcn.is.private(ptr)416declare void @llvm.trap()417declare void @llvm.debugtrap()418 419attributes #0 = { "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-queue-ptr" "amdgpu-no-work-group-id-x" "amdgpu-no-work-group-id-y" "amdgpu-no-work-group-id-z" "amdgpu-no-work-item-id-x" "amdgpu-no-work-item-id-y" "amdgpu-no-work-item-id-z" }420 421