brintos

brintos / llvm-project-archived public Read only

0
0
Text · 86.1 KiB · 5f965ba Raw
2109 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 62; RUN: opt -passes=amdgpu-attributor -mcpu=kaveri < %s | llc -mcpu=gfx90a -enable-ipra=0 | FileCheck -enable-var-scope -check-prefixes=GCN,GFX7 %s3; RUN: opt -passes=amdgpu-attributor -mcpu=gfx90a -mattr=-xnack < %s | llc -mcpu=gfx90a -mattr=-xnack -enable-ipra=0 | FileCheck -enable-var-scope -check-prefixes=GCN,GFX90A %s4 5target triple = "amdgcn-amd-amdhsa"6 7define void @use_workitem_id_x() #1 {8; GFX7-LABEL: use_workitem_id_x:9; GFX7:       ; %bb.0:10; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11; GFX7-NEXT:    v_and_b32_e32 v0, 0x3ff, v3112; GFX7-NEXT:    flat_store_dword v[0:1], v013; GFX7-NEXT:    s_waitcnt vmcnt(0)14; GFX7-NEXT:    s_setpc_b64 s[30:31]15;16; GFX90A-LABEL: use_workitem_id_x:17; GFX90A:       ; %bb.0:18; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19; GFX90A-NEXT:    v_and_b32_e32 v0, 0x3ff, v3120; GFX90A-NEXT:    global_store_dword v[0:1], v0, off21; GFX90A-NEXT:    s_waitcnt vmcnt(0)22; GFX90A-NEXT:    s_setpc_b64 s[30:31]23  %val = call i32 @llvm.amdgcn.workitem.id.x()24  store volatile i32 %val, ptr addrspace(1) poison25  ret void26}27 28define void @use_workitem_id_y() #1 {29; GFX7-LABEL: use_workitem_id_y:30; GFX7:       ; %bb.0:31; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)32; GFX7-NEXT:    v_bfe_u32 v0, v31, 10, 1033; GFX7-NEXT:    flat_store_dword v[0:1], v034; GFX7-NEXT:    s_waitcnt vmcnt(0)35; GFX7-NEXT:    s_setpc_b64 s[30:31]36;37; GFX90A-LABEL: use_workitem_id_y:38; GFX90A:       ; %bb.0:39; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)40; GFX90A-NEXT:    v_bfe_u32 v0, v31, 10, 1041; GFX90A-NEXT:    global_store_dword v[0:1], v0, off42; GFX90A-NEXT:    s_waitcnt vmcnt(0)43; GFX90A-NEXT:    s_setpc_b64 s[30:31]44  %val = call i32 @llvm.amdgcn.workitem.id.y()45  store volatile i32 %val, ptr addrspace(1) poison46  ret void47}48 49define void @use_workitem_id_z() #1 {50; GFX7-LABEL: use_workitem_id_z:51; GFX7:       ; %bb.0:52; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)53; GFX7-NEXT:    v_bfe_u32 v0, v31, 20, 1054; GFX7-NEXT:    flat_store_dword v[0:1], v055; GFX7-NEXT:    s_waitcnt vmcnt(0)56; GFX7-NEXT:    s_setpc_b64 s[30:31]57;58; GFX90A-LABEL: use_workitem_id_z:59; GFX90A:       ; %bb.0:60; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)61; GFX90A-NEXT:    v_bfe_u32 v0, v31, 20, 1062; GFX90A-NEXT:    global_store_dword v[0:1], v0, off63; GFX90A-NEXT:    s_waitcnt vmcnt(0)64; GFX90A-NEXT:    s_setpc_b64 s[30:31]65  %val = call i32 @llvm.amdgcn.workitem.id.z()66  store volatile i32 %val, ptr addrspace(1) poison67  ret void68}69 70define void @use_workitem_id_xy() #1 {71; GFX7-LABEL: use_workitem_id_xy:72; GFX7:       ; %bb.0:73; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)74; GFX7-NEXT:    v_and_b32_e32 v0, 0x3ff, v3175; GFX7-NEXT:    flat_store_dword v[0:1], v076; GFX7-NEXT:    s_waitcnt vmcnt(0)77; GFX7-NEXT:    v_bfe_u32 v0, v31, 10, 1078; GFX7-NEXT:    flat_store_dword v[0:1], v079; GFX7-NEXT:    s_waitcnt vmcnt(0)80; GFX7-NEXT:    s_setpc_b64 s[30:31]81;82; GFX90A-LABEL: use_workitem_id_xy:83; GFX90A:       ; %bb.0:84; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)85; GFX90A-NEXT:    v_and_b32_e32 v0, 0x3ff, v3186; GFX90A-NEXT:    global_store_dword v[0:1], v0, off87; GFX90A-NEXT:    s_waitcnt vmcnt(0)88; GFX90A-NEXT:    v_bfe_u32 v0, v31, 10, 1089; GFX90A-NEXT:    global_store_dword v[0:1], v0, off90; GFX90A-NEXT:    s_waitcnt vmcnt(0)91; GFX90A-NEXT:    s_setpc_b64 s[30:31]92  %val0 = call i32 @llvm.amdgcn.workitem.id.x()93  %val1 = call i32 @llvm.amdgcn.workitem.id.y()94  store volatile i32 %val0, ptr addrspace(1) poison95  store volatile i32 %val1, ptr addrspace(1) poison96  ret void97}98 99define void @use_workitem_id_xyz() #1 {100; GFX7-LABEL: use_workitem_id_xyz:101; GFX7:       ; %bb.0:102; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)103; GFX7-NEXT:    v_and_b32_e32 v0, 0x3ff, v31104; GFX7-NEXT:    flat_store_dword v[0:1], v0105; GFX7-NEXT:    s_waitcnt vmcnt(0)106; GFX7-NEXT:    v_bfe_u32 v0, v31, 10, 10107; GFX7-NEXT:    flat_store_dword v[0:1], v0108; GFX7-NEXT:    s_waitcnt vmcnt(0)109; GFX7-NEXT:    v_bfe_u32 v0, v31, 20, 10110; GFX7-NEXT:    flat_store_dword v[0:1], v0111; GFX7-NEXT:    s_waitcnt vmcnt(0)112; GFX7-NEXT:    s_setpc_b64 s[30:31]113;114; GFX90A-LABEL: use_workitem_id_xyz:115; GFX90A:       ; %bb.0:116; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)117; GFX90A-NEXT:    v_and_b32_e32 v0, 0x3ff, v31118; GFX90A-NEXT:    global_store_dword v[0:1], v0, off119; GFX90A-NEXT:    s_waitcnt vmcnt(0)120; GFX90A-NEXT:    v_bfe_u32 v0, v31, 10, 10121; GFX90A-NEXT:    global_store_dword v[0:1], v0, off122; GFX90A-NEXT:    s_waitcnt vmcnt(0)123; GFX90A-NEXT:    v_bfe_u32 v0, v31, 20, 10124; GFX90A-NEXT:    global_store_dword v[0:1], v0, off125; GFX90A-NEXT:    s_waitcnt vmcnt(0)126; GFX90A-NEXT:    s_setpc_b64 s[30:31]127  %val0 = call i32 @llvm.amdgcn.workitem.id.x()128  %val1 = call i32 @llvm.amdgcn.workitem.id.y()129  %val2 = call i32 @llvm.amdgcn.workitem.id.z()130  store volatile i32 %val0, ptr addrspace(1) poison131  store volatile i32 %val1, ptr addrspace(1) poison132  store volatile i32 %val2, ptr addrspace(1) poison133  ret void134}135 136define void @use_workitem_id_xz() #1 {137; GFX7-LABEL: use_workitem_id_xz:138; GFX7:       ; %bb.0:139; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)140; GFX7-NEXT:    v_and_b32_e32 v0, 0x3ff, v31141; GFX7-NEXT:    flat_store_dword v[0:1], v0142; GFX7-NEXT:    s_waitcnt vmcnt(0)143; GFX7-NEXT:    v_bfe_u32 v0, v31, 20, 10144; GFX7-NEXT:    flat_store_dword v[0:1], v0145; GFX7-NEXT:    s_waitcnt vmcnt(0)146; GFX7-NEXT:    s_setpc_b64 s[30:31]147;148; GFX90A-LABEL: use_workitem_id_xz:149; GFX90A:       ; %bb.0:150; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)151; GFX90A-NEXT:    v_and_b32_e32 v0, 0x3ff, v31152; GFX90A-NEXT:    global_store_dword v[0:1], v0, off153; GFX90A-NEXT:    s_waitcnt vmcnt(0)154; GFX90A-NEXT:    v_bfe_u32 v0, v31, 20, 10155; GFX90A-NEXT:    global_store_dword v[0:1], v0, off156; GFX90A-NEXT:    s_waitcnt vmcnt(0)157; GFX90A-NEXT:    s_setpc_b64 s[30:31]158  %val0 = call i32 @llvm.amdgcn.workitem.id.x()159  %val1 = call i32 @llvm.amdgcn.workitem.id.z()160  store volatile i32 %val0, ptr addrspace(1) poison161  store volatile i32 %val1, ptr addrspace(1) poison162  ret void163}164 165define void @use_workitem_id_yz() #1 {166; GFX7-LABEL: use_workitem_id_yz:167; GFX7:       ; %bb.0:168; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)169; GFX7-NEXT:    v_bfe_u32 v0, v31, 10, 10170; GFX7-NEXT:    flat_store_dword v[0:1], v0171; GFX7-NEXT:    s_waitcnt vmcnt(0)172; GFX7-NEXT:    v_bfe_u32 v0, v31, 20, 10173; GFX7-NEXT:    flat_store_dword v[0:1], v0174; GFX7-NEXT:    s_waitcnt vmcnt(0)175; GFX7-NEXT:    s_setpc_b64 s[30:31]176;177; GFX90A-LABEL: use_workitem_id_yz:178; GFX90A:       ; %bb.0:179; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)180; GFX90A-NEXT:    v_bfe_u32 v0, v31, 10, 10181; GFX90A-NEXT:    global_store_dword v[0:1], v0, off182; GFX90A-NEXT:    s_waitcnt vmcnt(0)183; GFX90A-NEXT:    v_bfe_u32 v0, v31, 20, 10184; GFX90A-NEXT:    global_store_dword v[0:1], v0, off185; GFX90A-NEXT:    s_waitcnt vmcnt(0)186; GFX90A-NEXT:    s_setpc_b64 s[30:31]187  %val0 = call i32 @llvm.amdgcn.workitem.id.y()188  %val1 = call i32 @llvm.amdgcn.workitem.id.z()189  store volatile i32 %val0, ptr addrspace(1) poison190  store volatile i32 %val1, ptr addrspace(1) poison191  ret void192}193 194define amdgpu_kernel void @kern_indirect_use_workitem_id_x() #1 {195; GCN-LABEL: kern_indirect_use_workitem_id_x:196; GCN:       ; %bb.0:197; GCN-NEXT:    s_add_u32 s0, s0, s5198; GCN-NEXT:    s_addc_u32 s1, s1, 0199; GCN-NEXT:    s_getpc_b64 s[4:5]200; GCN-NEXT:    s_add_u32 s4, s4, use_workitem_id_x@gotpcrel32@lo+4201; GCN-NEXT:    s_addc_u32 s5, s5, use_workitem_id_x@gotpcrel32@hi+12202; GCN-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x0203; GCN-NEXT:    v_mov_b32_e32 v31, v0204; GCN-NEXT:    s_mov_b32 s32, 0205; GCN-NEXT:    s_waitcnt lgkmcnt(0)206; GCN-NEXT:    s_swappc_b64 s[30:31], s[4:5]207; GCN-NEXT:    s_endpgm208  call void @use_workitem_id_x()209  ret void210}211; GCN: .amdhsa_system_vgpr_workitem_id 0212 213define amdgpu_kernel void @kern_indirect_use_workitem_id_y() #1 {214; GFX7-LABEL: kern_indirect_use_workitem_id_y:215; GFX7:       ; %bb.0:216; GFX7-NEXT:    s_add_u32 s0, s0, s5217; GFX7-NEXT:    s_addc_u32 s1, s1, 0218; GFX7-NEXT:    s_getpc_b64 s[4:5]219; GFX7-NEXT:    s_add_u32 s4, s4, use_workitem_id_y@gotpcrel32@lo+4220; GFX7-NEXT:    s_addc_u32 s5, s5, use_workitem_id_y@gotpcrel32@hi+12221; GFX7-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x0222; GFX7-NEXT:    v_lshlrev_b32_e32 v31, 10, v1223; GFX7-NEXT:    s_mov_b32 s32, 0224; GFX7-NEXT:    s_waitcnt lgkmcnt(0)225; GFX7-NEXT:    s_swappc_b64 s[30:31], s[4:5]226; GFX7-NEXT:    s_endpgm227;228; GFX90A-LABEL: kern_indirect_use_workitem_id_y:229; GFX90A:       ; %bb.0:230; GFX90A-NEXT:    s_add_u32 s0, s0, s5231; GFX90A-NEXT:    s_addc_u32 s1, s1, 0232; GFX90A-NEXT:    s_getpc_b64 s[4:5]233; GFX90A-NEXT:    s_add_u32 s4, s4, use_workitem_id_y@gotpcrel32@lo+4234; GFX90A-NEXT:    s_addc_u32 s5, s5, use_workitem_id_y@gotpcrel32@hi+12235; GFX90A-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x0236; GFX90A-NEXT:    v_mov_b32_e32 v31, v0237; GFX90A-NEXT:    s_mov_b32 s32, 0238; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)239; GFX90A-NEXT:    s_swappc_b64 s[30:31], s[4:5]240; GFX90A-NEXT:    s_endpgm241  call void @use_workitem_id_y()242  ret void243}244; GCN: .amdhsa_system_vgpr_workitem_id 1245 246define amdgpu_kernel void @kern_indirect_use_workitem_id_z() #1 {247; GFX7-LABEL: kern_indirect_use_workitem_id_z:248; GFX7:       ; %bb.0:249; GFX7-NEXT:    s_add_u32 s0, s0, s5250; GFX7-NEXT:    s_addc_u32 s1, s1, 0251; GFX7-NEXT:    s_getpc_b64 s[4:5]252; GFX7-NEXT:    s_add_u32 s4, s4, use_workitem_id_z@gotpcrel32@lo+4253; GFX7-NEXT:    s_addc_u32 s5, s5, use_workitem_id_z@gotpcrel32@hi+12254; GFX7-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x0255; GFX7-NEXT:    v_lshlrev_b32_e32 v31, 20, v2256; GFX7-NEXT:    s_mov_b32 s32, 0257; GFX7-NEXT:    s_waitcnt lgkmcnt(0)258; GFX7-NEXT:    s_swappc_b64 s[30:31], s[4:5]259; GFX7-NEXT:    s_endpgm260;261; GFX90A-LABEL: kern_indirect_use_workitem_id_z:262; GFX90A:       ; %bb.0:263; GFX90A-NEXT:    s_add_u32 s0, s0, s5264; GFX90A-NEXT:    s_addc_u32 s1, s1, 0265; GFX90A-NEXT:    s_getpc_b64 s[4:5]266; GFX90A-NEXT:    s_add_u32 s4, s4, use_workitem_id_z@gotpcrel32@lo+4267; GFX90A-NEXT:    s_addc_u32 s5, s5, use_workitem_id_z@gotpcrel32@hi+12268; GFX90A-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x0269; GFX90A-NEXT:    v_mov_b32_e32 v31, v0270; GFX90A-NEXT:    s_mov_b32 s32, 0271; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)272; GFX90A-NEXT:    s_swappc_b64 s[30:31], s[4:5]273; GFX90A-NEXT:    s_endpgm274  call void @use_workitem_id_z()275  ret void276}277; GCN: .amdhsa_system_vgpr_workitem_id 2278 279define amdgpu_kernel void @kern_indirect_use_workitem_id_xy() #1 {280; GFX7-LABEL: kern_indirect_use_workitem_id_xy:281; GFX7:       ; %bb.0:282; GFX7-NEXT:    s_add_u32 s0, s0, s5283; GFX7-NEXT:    s_addc_u32 s1, s1, 0284; GFX7-NEXT:    s_getpc_b64 s[4:5]285; GFX7-NEXT:    s_add_u32 s4, s4, use_workitem_id_xy@gotpcrel32@lo+4286; GFX7-NEXT:    s_addc_u32 s5, s5, use_workitem_id_xy@gotpcrel32@hi+12287; GFX7-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x0288; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 10, v1289; GFX7-NEXT:    v_or_b32_e32 v31, v0, v1290; GFX7-NEXT:    s_mov_b32 s32, 0291; GFX7-NEXT:    s_waitcnt lgkmcnt(0)292; GFX7-NEXT:    s_swappc_b64 s[30:31], s[4:5]293; GFX7-NEXT:    s_endpgm294;295; GFX90A-LABEL: kern_indirect_use_workitem_id_xy:296; GFX90A:       ; %bb.0:297; GFX90A-NEXT:    s_add_u32 s0, s0, s5298; GFX90A-NEXT:    s_addc_u32 s1, s1, 0299; GFX90A-NEXT:    s_getpc_b64 s[4:5]300; GFX90A-NEXT:    s_add_u32 s4, s4, use_workitem_id_xy@gotpcrel32@lo+4301; GFX90A-NEXT:    s_addc_u32 s5, s5, use_workitem_id_xy@gotpcrel32@hi+12302; GFX90A-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x0303; GFX90A-NEXT:    v_mov_b32_e32 v31, v0304; GFX90A-NEXT:    s_mov_b32 s32, 0305; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)306; GFX90A-NEXT:    s_swappc_b64 s[30:31], s[4:5]307; GFX90A-NEXT:    s_endpgm308  call void @use_workitem_id_xy()309  ret void310}311 312define amdgpu_kernel void @kern_indirect_use_workitem_id_xz() #1 {313; GFX7-LABEL: kern_indirect_use_workitem_id_xz:314; GFX7:       ; %bb.0:315; GFX7-NEXT:    s_add_u32 s0, s0, s5316; GFX7-NEXT:    s_addc_u32 s1, s1, 0317; GFX7-NEXT:    s_getpc_b64 s[4:5]318; GFX7-NEXT:    s_add_u32 s4, s4, use_workitem_id_xz@gotpcrel32@lo+4319; GFX7-NEXT:    s_addc_u32 s5, s5, use_workitem_id_xz@gotpcrel32@hi+12320; GFX7-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x0321; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 20, v2322; GFX7-NEXT:    v_or_b32_e32 v31, v0, v1323; GFX7-NEXT:    s_mov_b32 s32, 0324; GFX7-NEXT:    s_waitcnt lgkmcnt(0)325; GFX7-NEXT:    s_swappc_b64 s[30:31], s[4:5]326; GFX7-NEXT:    s_endpgm327;328; GFX90A-LABEL: kern_indirect_use_workitem_id_xz:329; GFX90A:       ; %bb.0:330; GFX90A-NEXT:    s_add_u32 s0, s0, s5331; GFX90A-NEXT:    s_addc_u32 s1, s1, 0332; GFX90A-NEXT:    s_getpc_b64 s[4:5]333; GFX90A-NEXT:    s_add_u32 s4, s4, use_workitem_id_xz@gotpcrel32@lo+4334; GFX90A-NEXT:    s_addc_u32 s5, s5, use_workitem_id_xz@gotpcrel32@hi+12335; GFX90A-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x0336; GFX90A-NEXT:    v_mov_b32_e32 v31, v0337; GFX90A-NEXT:    s_mov_b32 s32, 0338; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)339; GFX90A-NEXT:    s_swappc_b64 s[30:31], s[4:5]340; GFX90A-NEXT:    s_endpgm341  call void @use_workitem_id_xz()342  ret void343}344 345define amdgpu_kernel void @kern_indirect_use_workitem_id_yz() #1 {346; GFX7-LABEL: kern_indirect_use_workitem_id_yz:347; GFX7:       ; %bb.0:348; GFX7-NEXT:    s_add_u32 s0, s0, s5349; GFX7-NEXT:    s_addc_u32 s1, s1, 0350; GFX7-NEXT:    s_getpc_b64 s[4:5]351; GFX7-NEXT:    s_add_u32 s4, s4, use_workitem_id_yz@gotpcrel32@lo+4352; GFX7-NEXT:    s_addc_u32 s5, s5, use_workitem_id_yz@gotpcrel32@hi+12353; GFX7-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x0354; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 20, v2355; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 10, v1356; GFX7-NEXT:    v_or_b32_e32 v31, v1, v0357; GFX7-NEXT:    s_mov_b32 s32, 0358; GFX7-NEXT:    s_waitcnt lgkmcnt(0)359; GFX7-NEXT:    s_swappc_b64 s[30:31], s[4:5]360; GFX7-NEXT:    s_endpgm361;362; GFX90A-LABEL: kern_indirect_use_workitem_id_yz:363; GFX90A:       ; %bb.0:364; GFX90A-NEXT:    s_add_u32 s0, s0, s5365; GFX90A-NEXT:    s_addc_u32 s1, s1, 0366; GFX90A-NEXT:    s_getpc_b64 s[4:5]367; GFX90A-NEXT:    s_add_u32 s4, s4, use_workitem_id_yz@gotpcrel32@lo+4368; GFX90A-NEXT:    s_addc_u32 s5, s5, use_workitem_id_yz@gotpcrel32@hi+12369; GFX90A-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x0370; GFX90A-NEXT:    v_mov_b32_e32 v31, v0371; GFX90A-NEXT:    s_mov_b32 s32, 0372; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)373; GFX90A-NEXT:    s_swappc_b64 s[30:31], s[4:5]374; GFX90A-NEXT:    s_endpgm375  call void @use_workitem_id_yz()376  ret void377}378 379define amdgpu_kernel void @kern_indirect_use_workitem_id_xyz() #1 {380; GFX7-LABEL: kern_indirect_use_workitem_id_xyz:381; GFX7:       ; %bb.0:382; GFX7-NEXT:    s_add_u32 s0, s0, s5383; GFX7-NEXT:    s_addc_u32 s1, s1, 0384; GFX7-NEXT:    s_getpc_b64 s[4:5]385; GFX7-NEXT:    s_add_u32 s4, s4, use_workitem_id_xyz@gotpcrel32@lo+4386; GFX7-NEXT:    s_addc_u32 s5, s5, use_workitem_id_xyz@gotpcrel32@hi+12387; GFX7-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x0388; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 10, v1389; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 20, v2390; GFX7-NEXT:    v_or_b32_e32 v0, v0, v1391; GFX7-NEXT:    v_or_b32_e32 v31, v0, v2392; GFX7-NEXT:    s_mov_b32 s32, 0393; GFX7-NEXT:    s_waitcnt lgkmcnt(0)394; GFX7-NEXT:    s_swappc_b64 s[30:31], s[4:5]395; GFX7-NEXT:    s_endpgm396;397; GFX90A-LABEL: kern_indirect_use_workitem_id_xyz:398; GFX90A:       ; %bb.0:399; GFX90A-NEXT:    s_add_u32 s0, s0, s5400; GFX90A-NEXT:    s_addc_u32 s1, s1, 0401; GFX90A-NEXT:    s_getpc_b64 s[4:5]402; GFX90A-NEXT:    s_add_u32 s4, s4, use_workitem_id_xyz@gotpcrel32@lo+4403; GFX90A-NEXT:    s_addc_u32 s5, s5, use_workitem_id_xyz@gotpcrel32@hi+12404; GFX90A-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x0405; GFX90A-NEXT:    v_mov_b32_e32 v31, v0406; GFX90A-NEXT:    s_mov_b32 s32, 0407; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)408; GFX90A-NEXT:    s_swappc_b64 s[30:31], s[4:5]409; GFX90A-NEXT:    s_endpgm410  call void @use_workitem_id_xyz()411  ret void412}413 414define void @func_indirect_use_workitem_id_x() #1 {415; GCN-LABEL: func_indirect_use_workitem_id_x:416; GCN:       ; %bb.0:417; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)418; GCN-NEXT:    s_mov_b32 s4, s33419; GCN-NEXT:    s_mov_b32 s33, s32420; GCN-NEXT:    s_or_saveexec_b64 s[6:7], -1421; GCN-NEXT:    buffer_store_dword v40, off, s[0:3], s33 ; 4-byte Folded Spill422; GCN-NEXT:    s_mov_b64 exec, s[6:7]423; GCN-NEXT:    s_addk_i32 s32, 0x400424; GCN-NEXT:    v_writelane_b32 v40, s4, 2425; GCN-NEXT:    s_getpc_b64 s[4:5]426; GCN-NEXT:    s_add_u32 s4, s4, use_workitem_id_x@gotpcrel32@lo+4427; GCN-NEXT:    s_addc_u32 s5, s5, use_workitem_id_x@gotpcrel32@hi+12428; GCN-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x0429; GCN-NEXT:    v_writelane_b32 v40, s30, 0430; GCN-NEXT:    v_writelane_b32 v40, s31, 1431; GCN-NEXT:    s_waitcnt lgkmcnt(0)432; GCN-NEXT:    s_swappc_b64 s[30:31], s[4:5]433; GCN-NEXT:    v_readlane_b32 s31, v40, 1434; GCN-NEXT:    v_readlane_b32 s30, v40, 0435; GCN-NEXT:    s_mov_b32 s32, s33436; GCN-NEXT:    v_readlane_b32 s4, v40, 2437; GCN-NEXT:    s_or_saveexec_b64 s[6:7], -1438; GCN-NEXT:    buffer_load_dword v40, off, s[0:3], s33 ; 4-byte Folded Reload439; GCN-NEXT:    s_mov_b64 exec, s[6:7]440; GCN-NEXT:    s_mov_b32 s33, s4441; GCN-NEXT:    s_waitcnt vmcnt(0)442; GCN-NEXT:    s_setpc_b64 s[30:31]443  call void @use_workitem_id_x()444  ret void445}446 447define void @func_indirect_use_workitem_id_y() #1 {448; GCN-LABEL: func_indirect_use_workitem_id_y:449; GCN:       ; %bb.0:450; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)451; GCN-NEXT:    s_mov_b32 s4, s33452; GCN-NEXT:    s_mov_b32 s33, s32453; GCN-NEXT:    s_or_saveexec_b64 s[6:7], -1454; GCN-NEXT:    buffer_store_dword v40, off, s[0:3], s33 ; 4-byte Folded Spill455; GCN-NEXT:    s_mov_b64 exec, s[6:7]456; GCN-NEXT:    s_addk_i32 s32, 0x400457; GCN-NEXT:    v_writelane_b32 v40, s4, 2458; GCN-NEXT:    s_getpc_b64 s[4:5]459; GCN-NEXT:    s_add_u32 s4, s4, use_workitem_id_y@gotpcrel32@lo+4460; GCN-NEXT:    s_addc_u32 s5, s5, use_workitem_id_y@gotpcrel32@hi+12461; GCN-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x0462; GCN-NEXT:    v_writelane_b32 v40, s30, 0463; GCN-NEXT:    v_writelane_b32 v40, s31, 1464; GCN-NEXT:    s_waitcnt lgkmcnt(0)465; GCN-NEXT:    s_swappc_b64 s[30:31], s[4:5]466; GCN-NEXT:    v_readlane_b32 s31, v40, 1467; GCN-NEXT:    v_readlane_b32 s30, v40, 0468; GCN-NEXT:    s_mov_b32 s32, s33469; GCN-NEXT:    v_readlane_b32 s4, v40, 2470; GCN-NEXT:    s_or_saveexec_b64 s[6:7], -1471; GCN-NEXT:    buffer_load_dword v40, off, s[0:3], s33 ; 4-byte Folded Reload472; GCN-NEXT:    s_mov_b64 exec, s[6:7]473; GCN-NEXT:    s_mov_b32 s33, s4474; GCN-NEXT:    s_waitcnt vmcnt(0)475; GCN-NEXT:    s_setpc_b64 s[30:31]476  call void @use_workitem_id_y()477  ret void478}479 480define void @func_indirect_use_workitem_id_z() #1 {481; GCN-LABEL: func_indirect_use_workitem_id_z:482; GCN:       ; %bb.0:483; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)484; GCN-NEXT:    s_mov_b32 s4, s33485; GCN-NEXT:    s_mov_b32 s33, s32486; GCN-NEXT:    s_or_saveexec_b64 s[6:7], -1487; GCN-NEXT:    buffer_store_dword v40, off, s[0:3], s33 ; 4-byte Folded Spill488; GCN-NEXT:    s_mov_b64 exec, s[6:7]489; GCN-NEXT:    s_addk_i32 s32, 0x400490; GCN-NEXT:    v_writelane_b32 v40, s4, 2491; GCN-NEXT:    s_getpc_b64 s[4:5]492; GCN-NEXT:    s_add_u32 s4, s4, use_workitem_id_z@gotpcrel32@lo+4493; GCN-NEXT:    s_addc_u32 s5, s5, use_workitem_id_z@gotpcrel32@hi+12494; GCN-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x0495; GCN-NEXT:    v_writelane_b32 v40, s30, 0496; GCN-NEXT:    v_writelane_b32 v40, s31, 1497; GCN-NEXT:    s_waitcnt lgkmcnt(0)498; GCN-NEXT:    s_swappc_b64 s[30:31], s[4:5]499; GCN-NEXT:    v_readlane_b32 s31, v40, 1500; GCN-NEXT:    v_readlane_b32 s30, v40, 0501; GCN-NEXT:    s_mov_b32 s32, s33502; GCN-NEXT:    v_readlane_b32 s4, v40, 2503; GCN-NEXT:    s_or_saveexec_b64 s[6:7], -1504; GCN-NEXT:    buffer_load_dword v40, off, s[0:3], s33 ; 4-byte Folded Reload505; GCN-NEXT:    s_mov_b64 exec, s[6:7]506; GCN-NEXT:    s_mov_b32 s33, s4507; GCN-NEXT:    s_waitcnt vmcnt(0)508; GCN-NEXT:    s_setpc_b64 s[30:31]509  call void @use_workitem_id_z()510  ret void511}512 513define void @other_arg_use_workitem_id_x(i32 %arg0) #1 {514; GFX7-LABEL: other_arg_use_workitem_id_x:515; GFX7:       ; %bb.0:516; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)517; GFX7-NEXT:    flat_store_dword v[0:1], v0518; GFX7-NEXT:    s_waitcnt vmcnt(0)519; GFX7-NEXT:    v_and_b32_e32 v0, 0x3ff, v31520; GFX7-NEXT:    flat_store_dword v[0:1], v0521; GFX7-NEXT:    s_waitcnt vmcnt(0)522; GFX7-NEXT:    s_setpc_b64 s[30:31]523;524; GFX90A-LABEL: other_arg_use_workitem_id_x:525; GFX90A:       ; %bb.0:526; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)527; GFX90A-NEXT:    global_store_dword v[0:1], v0, off528; GFX90A-NEXT:    s_waitcnt vmcnt(0)529; GFX90A-NEXT:    v_and_b32_e32 v0, 0x3ff, v31530; GFX90A-NEXT:    global_store_dword v[0:1], v0, off531; GFX90A-NEXT:    s_waitcnt vmcnt(0)532; GFX90A-NEXT:    s_setpc_b64 s[30:31]533  %val = call i32 @llvm.amdgcn.workitem.id.x()534  store volatile i32 %arg0, ptr addrspace(1) poison535  store volatile i32 %val, ptr addrspace(1) poison536  ret void537}538 539define void @other_arg_use_workitem_id_y(i32 %arg0) #1 {540; GFX7-LABEL: other_arg_use_workitem_id_y:541; GFX7:       ; %bb.0:542; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)543; GFX7-NEXT:    flat_store_dword v[0:1], v0544; GFX7-NEXT:    s_waitcnt vmcnt(0)545; GFX7-NEXT:    v_bfe_u32 v0, v31, 10, 10546; GFX7-NEXT:    flat_store_dword v[0:1], v0547; GFX7-NEXT:    s_waitcnt vmcnt(0)548; GFX7-NEXT:    s_setpc_b64 s[30:31]549;550; GFX90A-LABEL: other_arg_use_workitem_id_y:551; GFX90A:       ; %bb.0:552; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)553; GFX90A-NEXT:    global_store_dword v[0:1], v0, off554; GFX90A-NEXT:    s_waitcnt vmcnt(0)555; GFX90A-NEXT:    v_bfe_u32 v0, v31, 10, 10556; GFX90A-NEXT:    global_store_dword v[0:1], v0, off557; GFX90A-NEXT:    s_waitcnt vmcnt(0)558; GFX90A-NEXT:    s_setpc_b64 s[30:31]559  %val = call i32 @llvm.amdgcn.workitem.id.y()560  store volatile i32 %arg0, ptr addrspace(1) poison561  store volatile i32 %val, ptr addrspace(1) poison562  ret void563}564 565define void @other_arg_use_workitem_id_z(i32 %arg0) #1 {566; GFX7-LABEL: other_arg_use_workitem_id_z:567; GFX7:       ; %bb.0:568; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)569; GFX7-NEXT:    flat_store_dword v[0:1], v0570; GFX7-NEXT:    s_waitcnt vmcnt(0)571; GFX7-NEXT:    v_bfe_u32 v0, v31, 20, 10572; GFX7-NEXT:    flat_store_dword v[0:1], v0573; GFX7-NEXT:    s_waitcnt vmcnt(0)574; GFX7-NEXT:    s_setpc_b64 s[30:31]575;576; GFX90A-LABEL: other_arg_use_workitem_id_z:577; GFX90A:       ; %bb.0:578; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)579; GFX90A-NEXT:    global_store_dword v[0:1], v0, off580; GFX90A-NEXT:    s_waitcnt vmcnt(0)581; GFX90A-NEXT:    v_bfe_u32 v0, v31, 20, 10582; GFX90A-NEXT:    global_store_dword v[0:1], v0, off583; GFX90A-NEXT:    s_waitcnt vmcnt(0)584; GFX90A-NEXT:    s_setpc_b64 s[30:31]585  %val = call i32 @llvm.amdgcn.workitem.id.z()586  store volatile i32 %arg0, ptr addrspace(1) poison587  store volatile i32 %val, ptr addrspace(1) poison588  ret void589}590 591define amdgpu_kernel void @kern_indirect_other_arg_use_workitem_id_x() #1 {592; GCN-LABEL: kern_indirect_other_arg_use_workitem_id_x:593; GCN:       ; %bb.0:594; GCN-NEXT:    s_add_u32 s0, s0, s5595; GCN-NEXT:    s_addc_u32 s1, s1, 0596; GCN-NEXT:    s_getpc_b64 s[4:5]597; GCN-NEXT:    s_add_u32 s4, s4, other_arg_use_workitem_id_x@gotpcrel32@lo+4598; GCN-NEXT:    s_addc_u32 s5, s5, other_arg_use_workitem_id_x@gotpcrel32@hi+12599; GCN-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x0600; GCN-NEXT:    v_mov_b32_e32 v31, v0601; GCN-NEXT:    v_mov_b32_e32 v0, 0x22b602; GCN-NEXT:    s_mov_b32 s32, 0603; GCN-NEXT:    s_waitcnt lgkmcnt(0)604; GCN-NEXT:    s_swappc_b64 s[30:31], s[4:5]605; GCN-NEXT:    s_endpgm606  call void @other_arg_use_workitem_id_x(i32 555)607  ret void608}609; GCN: .amdhsa_system_vgpr_workitem_id 0610 611define amdgpu_kernel void @kern_indirect_other_arg_use_workitem_id_y() #1 {612; GFX7-LABEL: kern_indirect_other_arg_use_workitem_id_y:613; GFX7:       ; %bb.0:614; GFX7-NEXT:    s_add_u32 s0, s0, s5615; GFX7-NEXT:    s_addc_u32 s1, s1, 0616; GFX7-NEXT:    s_getpc_b64 s[4:5]617; GFX7-NEXT:    s_add_u32 s4, s4, other_arg_use_workitem_id_y@gotpcrel32@lo+4618; GFX7-NEXT:    s_addc_u32 s5, s5, other_arg_use_workitem_id_y@gotpcrel32@hi+12619; GFX7-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x0620; GFX7-NEXT:    v_lshlrev_b32_e32 v31, 10, v1621; GFX7-NEXT:    v_mov_b32_e32 v0, 0x22b622; GFX7-NEXT:    s_mov_b32 s32, 0623; GFX7-NEXT:    s_waitcnt lgkmcnt(0)624; GFX7-NEXT:    s_swappc_b64 s[30:31], s[4:5]625; GFX7-NEXT:    s_endpgm626;627; GFX90A-LABEL: kern_indirect_other_arg_use_workitem_id_y:628; GFX90A:       ; %bb.0:629; GFX90A-NEXT:    s_add_u32 s0, s0, s5630; GFX90A-NEXT:    s_addc_u32 s1, s1, 0631; GFX90A-NEXT:    s_getpc_b64 s[4:5]632; GFX90A-NEXT:    s_add_u32 s4, s4, other_arg_use_workitem_id_y@gotpcrel32@lo+4633; GFX90A-NEXT:    s_addc_u32 s5, s5, other_arg_use_workitem_id_y@gotpcrel32@hi+12634; GFX90A-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x0635; GFX90A-NEXT:    v_mov_b32_e32 v31, v0636; GFX90A-NEXT:    v_mov_b32_e32 v0, 0x22b637; GFX90A-NEXT:    s_mov_b32 s32, 0638; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)639; GFX90A-NEXT:    s_swappc_b64 s[30:31], s[4:5]640; GFX90A-NEXT:    s_endpgm641  call void @other_arg_use_workitem_id_y(i32 555)642  ret void643}644; GCN: .amdhsa_system_vgpr_workitem_id 1645 646define amdgpu_kernel void @kern_indirect_other_arg_use_workitem_id_z() #1 {647; GFX7-LABEL: kern_indirect_other_arg_use_workitem_id_z:648; GFX7:       ; %bb.0:649; GFX7-NEXT:    s_add_u32 s0, s0, s5650; GFX7-NEXT:    s_addc_u32 s1, s1, 0651; GFX7-NEXT:    s_getpc_b64 s[4:5]652; GFX7-NEXT:    s_add_u32 s4, s4, other_arg_use_workitem_id_z@gotpcrel32@lo+4653; GFX7-NEXT:    s_addc_u32 s5, s5, other_arg_use_workitem_id_z@gotpcrel32@hi+12654; GFX7-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x0655; GFX7-NEXT:    v_lshlrev_b32_e32 v31, 20, v2656; GFX7-NEXT:    v_mov_b32_e32 v0, 0x22b657; GFX7-NEXT:    s_mov_b32 s32, 0658; GFX7-NEXT:    s_waitcnt lgkmcnt(0)659; GFX7-NEXT:    s_swappc_b64 s[30:31], s[4:5]660; GFX7-NEXT:    s_endpgm661;662; GFX90A-LABEL: kern_indirect_other_arg_use_workitem_id_z:663; GFX90A:       ; %bb.0:664; GFX90A-NEXT:    s_add_u32 s0, s0, s5665; GFX90A-NEXT:    s_addc_u32 s1, s1, 0666; GFX90A-NEXT:    s_getpc_b64 s[4:5]667; GFX90A-NEXT:    s_add_u32 s4, s4, other_arg_use_workitem_id_z@gotpcrel32@lo+4668; GFX90A-NEXT:    s_addc_u32 s5, s5, other_arg_use_workitem_id_z@gotpcrel32@hi+12669; GFX90A-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x0670; GFX90A-NEXT:    v_mov_b32_e32 v31, v0671; GFX90A-NEXT:    v_mov_b32_e32 v0, 0x22b672; GFX90A-NEXT:    s_mov_b32 s32, 0673; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)674; GFX90A-NEXT:    s_swappc_b64 s[30:31], s[4:5]675; GFX90A-NEXT:    s_endpgm676  call void @other_arg_use_workitem_id_z(i32 555)677  ret void678}679; GCN: .amdhsa_system_vgpr_workitem_id 2680 681define void @too_many_args_use_workitem_id_x(682; GFX7-LABEL: too_many_args_use_workitem_id_x:683; GFX7:       ; %bb.0:684; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)685; GFX7-NEXT:    v_and_b32_e32 v31, 0x3ff, v31686; GFX7-NEXT:    flat_store_dword v[0:1], v31687; GFX7-NEXT:    s_waitcnt vmcnt(0)688; GFX7-NEXT:    buffer_load_dword v31, off, s[0:3], s32689; GFX7-NEXT:    flat_store_dword v[0:1], v0690; GFX7-NEXT:    s_waitcnt vmcnt(0)691; GFX7-NEXT:    flat_store_dword v[0:1], v1692; GFX7-NEXT:    s_waitcnt vmcnt(0)693; GFX7-NEXT:    flat_store_dword v[0:1], v2694; GFX7-NEXT:    s_waitcnt vmcnt(0)695; GFX7-NEXT:    flat_store_dword v[0:1], v3696; GFX7-NEXT:    s_waitcnt vmcnt(0)697; GFX7-NEXT:    flat_store_dword v[0:1], v4698; GFX7-NEXT:    s_waitcnt vmcnt(0)699; GFX7-NEXT:    flat_store_dword v[0:1], v5700; GFX7-NEXT:    s_waitcnt vmcnt(0)701; GFX7-NEXT:    flat_store_dword v[0:1], v6702; GFX7-NEXT:    s_waitcnt vmcnt(0)703; GFX7-NEXT:    flat_store_dword v[0:1], v7704; GFX7-NEXT:    s_waitcnt vmcnt(0)705; GFX7-NEXT:    flat_store_dword v[0:1], v8706; GFX7-NEXT:    s_waitcnt vmcnt(0)707; GFX7-NEXT:    flat_store_dword v[0:1], v9708; GFX7-NEXT:    s_waitcnt vmcnt(0)709; GFX7-NEXT:    flat_store_dword v[0:1], v10710; GFX7-NEXT:    s_waitcnt vmcnt(0)711; GFX7-NEXT:    flat_store_dword v[0:1], v11712; GFX7-NEXT:    s_waitcnt vmcnt(0)713; GFX7-NEXT:    flat_store_dword v[0:1], v12714; GFX7-NEXT:    s_waitcnt vmcnt(0)715; GFX7-NEXT:    flat_store_dword v[0:1], v13716; GFX7-NEXT:    s_waitcnt vmcnt(0)717; GFX7-NEXT:    flat_store_dword v[0:1], v14718; GFX7-NEXT:    s_waitcnt vmcnt(0)719; GFX7-NEXT:    flat_store_dword v[0:1], v15720; GFX7-NEXT:    s_waitcnt vmcnt(0)721; GFX7-NEXT:    flat_store_dword v[0:1], v16722; GFX7-NEXT:    s_waitcnt vmcnt(0)723; GFX7-NEXT:    flat_store_dword v[0:1], v17724; GFX7-NEXT:    s_waitcnt vmcnt(0)725; GFX7-NEXT:    flat_store_dword v[0:1], v18726; GFX7-NEXT:    s_waitcnt vmcnt(0)727; GFX7-NEXT:    flat_store_dword v[0:1], v19728; GFX7-NEXT:    s_waitcnt vmcnt(0)729; GFX7-NEXT:    flat_store_dword v[0:1], v20730; GFX7-NEXT:    s_waitcnt vmcnt(0)731; GFX7-NEXT:    flat_store_dword v[0:1], v21732; GFX7-NEXT:    s_waitcnt vmcnt(0)733; GFX7-NEXT:    flat_store_dword v[0:1], v22734; GFX7-NEXT:    s_waitcnt vmcnt(0)735; GFX7-NEXT:    flat_store_dword v[0:1], v23736; GFX7-NEXT:    s_waitcnt vmcnt(0)737; GFX7-NEXT:    flat_store_dword v[0:1], v24738; GFX7-NEXT:    s_waitcnt vmcnt(0)739; GFX7-NEXT:    flat_store_dword v[0:1], v25740; GFX7-NEXT:    s_waitcnt vmcnt(0)741; GFX7-NEXT:    flat_store_dword v[0:1], v26742; GFX7-NEXT:    s_waitcnt vmcnt(0)743; GFX7-NEXT:    flat_store_dword v[0:1], v27744; GFX7-NEXT:    s_waitcnt vmcnt(0)745; GFX7-NEXT:    flat_store_dword v[0:1], v28746; GFX7-NEXT:    s_waitcnt vmcnt(0)747; GFX7-NEXT:    flat_store_dword v[0:1], v29748; GFX7-NEXT:    s_waitcnt vmcnt(0)749; GFX7-NEXT:    flat_store_dword v[0:1], v30750; GFX7-NEXT:    s_waitcnt vmcnt(0)751; GFX7-NEXT:    flat_store_dword v[0:1], v31752; GFX7-NEXT:    s_waitcnt vmcnt(0)753; GFX7-NEXT:    s_setpc_b64 s[30:31]754;755; GFX90A-LABEL: too_many_args_use_workitem_id_x:756; GFX90A:       ; %bb.0:757; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)758; GFX90A-NEXT:    buffer_load_dword v32, off, s[0:3], s32759; GFX90A-NEXT:    v_and_b32_e32 v31, 0x3ff, v31760; GFX90A-NEXT:    global_store_dword v[0:1], v31, off761; GFX90A-NEXT:    s_waitcnt vmcnt(0)762; GFX90A-NEXT:    global_store_dword v[0:1], v0, off763; GFX90A-NEXT:    s_waitcnt vmcnt(0)764; GFX90A-NEXT:    global_store_dword v[0:1], v1, off765; GFX90A-NEXT:    s_waitcnt vmcnt(0)766; GFX90A-NEXT:    global_store_dword v[0:1], v2, off767; GFX90A-NEXT:    s_waitcnt vmcnt(0)768; GFX90A-NEXT:    global_store_dword v[0:1], v3, off769; GFX90A-NEXT:    s_waitcnt vmcnt(0)770; GFX90A-NEXT:    global_store_dword v[0:1], v4, off771; GFX90A-NEXT:    s_waitcnt vmcnt(0)772; GFX90A-NEXT:    global_store_dword v[0:1], v5, off773; GFX90A-NEXT:    s_waitcnt vmcnt(0)774; GFX90A-NEXT:    global_store_dword v[0:1], v6, off775; GFX90A-NEXT:    s_waitcnt vmcnt(0)776; GFX90A-NEXT:    global_store_dword v[0:1], v7, off777; GFX90A-NEXT:    s_waitcnt vmcnt(0)778; GFX90A-NEXT:    global_store_dword v[0:1], v8, off779; GFX90A-NEXT:    s_waitcnt vmcnt(0)780; GFX90A-NEXT:    global_store_dword v[0:1], v9, off781; GFX90A-NEXT:    s_waitcnt vmcnt(0)782; GFX90A-NEXT:    global_store_dword v[0:1], v10, off783; GFX90A-NEXT:    s_waitcnt vmcnt(0)784; GFX90A-NEXT:    global_store_dword v[0:1], v11, off785; GFX90A-NEXT:    s_waitcnt vmcnt(0)786; GFX90A-NEXT:    global_store_dword v[0:1], v12, off787; GFX90A-NEXT:    s_waitcnt vmcnt(0)788; GFX90A-NEXT:    global_store_dword v[0:1], v13, off789; GFX90A-NEXT:    s_waitcnt vmcnt(0)790; GFX90A-NEXT:    global_store_dword v[0:1], v14, off791; GFX90A-NEXT:    s_waitcnt vmcnt(0)792; GFX90A-NEXT:    global_store_dword v[0:1], v15, off793; GFX90A-NEXT:    s_waitcnt vmcnt(0)794; GFX90A-NEXT:    global_store_dword v[0:1], v16, off795; GFX90A-NEXT:    s_waitcnt vmcnt(0)796; GFX90A-NEXT:    global_store_dword v[0:1], v17, off797; GFX90A-NEXT:    s_waitcnt vmcnt(0)798; GFX90A-NEXT:    global_store_dword v[0:1], v18, off799; GFX90A-NEXT:    s_waitcnt vmcnt(0)800; GFX90A-NEXT:    global_store_dword v[0:1], v19, off801; GFX90A-NEXT:    s_waitcnt vmcnt(0)802; GFX90A-NEXT:    global_store_dword v[0:1], v20, off803; GFX90A-NEXT:    s_waitcnt vmcnt(0)804; GFX90A-NEXT:    global_store_dword v[0:1], v21, off805; GFX90A-NEXT:    s_waitcnt vmcnt(0)806; GFX90A-NEXT:    global_store_dword v[0:1], v22, off807; GFX90A-NEXT:    s_waitcnt vmcnt(0)808; GFX90A-NEXT:    global_store_dword v[0:1], v23, off809; GFX90A-NEXT:    s_waitcnt vmcnt(0)810; GFX90A-NEXT:    global_store_dword v[0:1], v24, off811; GFX90A-NEXT:    s_waitcnt vmcnt(0)812; GFX90A-NEXT:    global_store_dword v[0:1], v25, off813; GFX90A-NEXT:    s_waitcnt vmcnt(0)814; GFX90A-NEXT:    global_store_dword v[0:1], v26, off815; GFX90A-NEXT:    s_waitcnt vmcnt(0)816; GFX90A-NEXT:    global_store_dword v[0:1], v27, off817; GFX90A-NEXT:    s_waitcnt vmcnt(0)818; GFX90A-NEXT:    global_store_dword v[0:1], v28, off819; GFX90A-NEXT:    s_waitcnt vmcnt(0)820; GFX90A-NEXT:    global_store_dword v[0:1], v29, off821; GFX90A-NEXT:    s_waitcnt vmcnt(0)822; GFX90A-NEXT:    global_store_dword v[0:1], v30, off823; GFX90A-NEXT:    s_waitcnt vmcnt(0)824; GFX90A-NEXT:    global_store_dword v[0:1], v32, off825; GFX90A-NEXT:    s_waitcnt vmcnt(0)826; GFX90A-NEXT:    s_setpc_b64 s[30:31]827  i32 %arg0, i32 %arg1, i32 %arg2, i32 %arg3, i32 %arg4, i32 %arg5, i32 %arg6, i32 %arg7,828  i32 %arg8, i32 %arg9, i32 %arg10, i32 %arg11, i32 %arg12, i32 %arg13, i32 %arg14, i32 %arg15,829  i32 %arg16, i32 %arg17, i32 %arg18, i32 %arg19, i32 %arg20, i32 %arg21, i32 %arg22, i32 %arg23,830  i32 %arg24, i32 %arg25, i32 %arg26, i32 %arg27, i32 %arg28, i32 %arg29, i32 %arg30, i32 %arg31) #1 {831  %val = call i32 @llvm.amdgcn.workitem.id.x()832  store volatile i32 %val, ptr addrspace(1) poison833 834  store volatile i32 %arg0, ptr addrspace(1) poison835  store volatile i32 %arg1, ptr addrspace(1) poison836  store volatile i32 %arg2, ptr addrspace(1) poison837  store volatile i32 %arg3, ptr addrspace(1) poison838  store volatile i32 %arg4, ptr addrspace(1) poison839  store volatile i32 %arg5, ptr addrspace(1) poison840  store volatile i32 %arg6, ptr addrspace(1) poison841  store volatile i32 %arg7, ptr addrspace(1) poison842 843  store volatile i32 %arg8, ptr addrspace(1) poison844  store volatile i32 %arg9, ptr addrspace(1) poison845  store volatile i32 %arg10, ptr addrspace(1) poison846  store volatile i32 %arg11, ptr addrspace(1) poison847  store volatile i32 %arg12, ptr addrspace(1) poison848  store volatile i32 %arg13, ptr addrspace(1) poison849  store volatile i32 %arg14, ptr addrspace(1) poison850  store volatile i32 %arg15, ptr addrspace(1) poison851 852  store volatile i32 %arg16, ptr addrspace(1) poison853  store volatile i32 %arg17, ptr addrspace(1) poison854  store volatile i32 %arg18, ptr addrspace(1) poison855  store volatile i32 %arg19, ptr addrspace(1) poison856  store volatile i32 %arg20, ptr addrspace(1) poison857  store volatile i32 %arg21, ptr addrspace(1) poison858  store volatile i32 %arg22, ptr addrspace(1) poison859  store volatile i32 %arg23, ptr addrspace(1) poison860 861  store volatile i32 %arg24, ptr addrspace(1) poison862  store volatile i32 %arg25, ptr addrspace(1) poison863  store volatile i32 %arg26, ptr addrspace(1) poison864  store volatile i32 %arg27, ptr addrspace(1) poison865  store volatile i32 %arg28, ptr addrspace(1) poison866  store volatile i32 %arg29, ptr addrspace(1) poison867  store volatile i32 %arg30, ptr addrspace(1) poison868  store volatile i32 %arg31, ptr addrspace(1) poison869 870  ret void871}872 873define amdgpu_kernel void @kern_call_too_many_args_use_workitem_id_x() #1 {874; GCN-LABEL: kern_call_too_many_args_use_workitem_id_x:875; GCN:       ; %bb.0:876; GCN-NEXT:    s_add_u32 s0, s0, s5877; GCN-NEXT:    s_addc_u32 s1, s1, 0878; GCN-NEXT:    s_getpc_b64 s[4:5]879; GCN-NEXT:    s_add_u32 s4, s4, too_many_args_use_workitem_id_x@gotpcrel32@lo+4880; GCN-NEXT:    s_addc_u32 s5, s5, too_many_args_use_workitem_id_x@gotpcrel32@hi+12881; GCN-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x0882; GCN-NEXT:    s_mov_b32 s32, 0883; GCN-NEXT:    v_mov_b32_e32 v1, 0x140884; GCN-NEXT:    buffer_store_dword v1, off, s[0:3], s32885; GCN-NEXT:    v_mov_b32_e32 v31, v0886; GCN-NEXT:    v_mov_b32_e32 v0, 10887; GCN-NEXT:    v_mov_b32_e32 v1, 20888; GCN-NEXT:    v_mov_b32_e32 v2, 30889; GCN-NEXT:    v_mov_b32_e32 v3, 40890; GCN-NEXT:    v_mov_b32_e32 v4, 50891; GCN-NEXT:    v_mov_b32_e32 v5, 60892; GCN-NEXT:    v_mov_b32_e32 v6, 0x46893; GCN-NEXT:    v_mov_b32_e32 v7, 0x50894; GCN-NEXT:    v_mov_b32_e32 v8, 0x5a895; GCN-NEXT:    v_mov_b32_e32 v9, 0x64896; GCN-NEXT:    v_mov_b32_e32 v10, 0x6e897; GCN-NEXT:    v_mov_b32_e32 v11, 0x78898; GCN-NEXT:    v_mov_b32_e32 v12, 0x82899; GCN-NEXT:    v_mov_b32_e32 v13, 0x8c900; GCN-NEXT:    v_mov_b32_e32 v14, 0x96901; GCN-NEXT:    v_mov_b32_e32 v15, 0xa0902; GCN-NEXT:    v_mov_b32_e32 v16, 0xaa903; GCN-NEXT:    v_mov_b32_e32 v17, 0xb4904; GCN-NEXT:    v_mov_b32_e32 v18, 0xbe905; GCN-NEXT:    v_mov_b32_e32 v19, 0xc8906; GCN-NEXT:    v_mov_b32_e32 v20, 0xd2907; GCN-NEXT:    v_mov_b32_e32 v21, 0xdc908; GCN-NEXT:    v_mov_b32_e32 v22, 0xe6909; GCN-NEXT:    v_mov_b32_e32 v23, 0xf0910; GCN-NEXT:    v_mov_b32_e32 v24, 0xfa911; GCN-NEXT:    v_mov_b32_e32 v25, 0x104912; GCN-NEXT:    v_mov_b32_e32 v26, 0x10e913; GCN-NEXT:    v_mov_b32_e32 v27, 0x118914; GCN-NEXT:    v_mov_b32_e32 v28, 0x122915; GCN-NEXT:    v_mov_b32_e32 v29, 0x12c916; GCN-NEXT:    v_mov_b32_e32 v30, 0x136917; GCN-NEXT:    s_waitcnt lgkmcnt(0)918; GCN-NEXT:    s_swappc_b64 s[30:31], s[4:5]919; GCN-NEXT:    s_endpgm920  call void @too_many_args_use_workitem_id_x(921    i32 10, i32 20, i32 30, i32 40,922    i32 50, i32 60, i32 70, i32 80,923    i32 90, i32 100, i32 110, i32 120,924    i32 130, i32 140, i32 150, i32 160,925    i32 170, i32 180, i32 190, i32 200,926    i32 210, i32 220, i32 230, i32 240,927    i32 250, i32 260, i32 270, i32 280,928    i32 290, i32 300, i32 310, i32 320)929  ret void930}931; GCN: .amdhsa_system_vgpr_workitem_id 0932 933define void @func_call_too_many_args_use_workitem_id_x(i32 %arg0) #1 {934; GFX7-LABEL: func_call_too_many_args_use_workitem_id_x:935; GFX7:       ; %bb.0:936; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)937; GFX7-NEXT:    s_mov_b32 s4, s33938; GFX7-NEXT:    s_mov_b32 s33, s32939; GFX7-NEXT:    s_or_saveexec_b64 s[6:7], -1940; GFX7-NEXT:    buffer_store_dword v40, off, s[0:3], s33 ; 4-byte Folded Spill941; GFX7-NEXT:    s_mov_b64 exec, s[6:7]942; GFX7-NEXT:    s_addk_i32 s32, 0x400943; GFX7-NEXT:    v_writelane_b32 v40, s4, 2944; GFX7-NEXT:    s_getpc_b64 s[4:5]945; GFX7-NEXT:    s_add_u32 s4, s4, too_many_args_use_workitem_id_x@gotpcrel32@lo+4946; GFX7-NEXT:    s_addc_u32 s5, s5, too_many_args_use_workitem_id_x@gotpcrel32@hi+12947; GFX7-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x0948; GFX7-NEXT:    flat_store_dword v[0:1], v0949; GFX7-NEXT:    s_waitcnt vmcnt(0)950; GFX7-NEXT:    v_mov_b32_e32 v0, 0x140951; GFX7-NEXT:    v_writelane_b32 v40, s30, 0952; GFX7-NEXT:    buffer_store_dword v0, off, s[0:3], s32953; GFX7-NEXT:    v_mov_b32_e32 v0, 10954; GFX7-NEXT:    v_mov_b32_e32 v1, 20955; GFX7-NEXT:    v_mov_b32_e32 v2, 30956; GFX7-NEXT:    v_mov_b32_e32 v3, 40957; GFX7-NEXT:    v_mov_b32_e32 v4, 50958; GFX7-NEXT:    v_mov_b32_e32 v5, 60959; GFX7-NEXT:    v_mov_b32_e32 v6, 0x46960; GFX7-NEXT:    v_mov_b32_e32 v7, 0x50961; GFX7-NEXT:    v_mov_b32_e32 v8, 0x5a962; GFX7-NEXT:    v_mov_b32_e32 v9, 0x64963; GFX7-NEXT:    v_mov_b32_e32 v10, 0x6e964; GFX7-NEXT:    v_mov_b32_e32 v11, 0x78965; GFX7-NEXT:    v_mov_b32_e32 v12, 0x82966; GFX7-NEXT:    v_mov_b32_e32 v13, 0x8c967; GFX7-NEXT:    v_mov_b32_e32 v14, 0x96968; GFX7-NEXT:    v_mov_b32_e32 v15, 0xa0969; GFX7-NEXT:    v_mov_b32_e32 v16, 0xaa970; GFX7-NEXT:    v_mov_b32_e32 v17, 0xb4971; GFX7-NEXT:    v_mov_b32_e32 v18, 0xbe972; GFX7-NEXT:    v_mov_b32_e32 v19, 0xc8973; GFX7-NEXT:    v_mov_b32_e32 v20, 0xd2974; GFX7-NEXT:    v_mov_b32_e32 v21, 0xdc975; GFX7-NEXT:    v_mov_b32_e32 v22, 0xe6976; GFX7-NEXT:    v_mov_b32_e32 v23, 0xf0977; GFX7-NEXT:    v_mov_b32_e32 v24, 0xfa978; GFX7-NEXT:    v_mov_b32_e32 v25, 0x104979; GFX7-NEXT:    v_mov_b32_e32 v26, 0x10e980; GFX7-NEXT:    v_mov_b32_e32 v27, 0x118981; GFX7-NEXT:    v_mov_b32_e32 v28, 0x122982; GFX7-NEXT:    v_mov_b32_e32 v29, 0x12c983; GFX7-NEXT:    v_mov_b32_e32 v30, 0x136984; GFX7-NEXT:    v_writelane_b32 v40, s31, 1985; GFX7-NEXT:    s_waitcnt lgkmcnt(0)986; GFX7-NEXT:    s_swappc_b64 s[30:31], s[4:5]987; GFX7-NEXT:    v_readlane_b32 s31, v40, 1988; GFX7-NEXT:    v_readlane_b32 s30, v40, 0989; GFX7-NEXT:    s_mov_b32 s32, s33990; GFX7-NEXT:    v_readlane_b32 s4, v40, 2991; GFX7-NEXT:    s_or_saveexec_b64 s[6:7], -1992; GFX7-NEXT:    buffer_load_dword v40, off, s[0:3], s33 ; 4-byte Folded Reload993; GFX7-NEXT:    s_mov_b64 exec, s[6:7]994; GFX7-NEXT:    s_mov_b32 s33, s4995; GFX7-NEXT:    s_waitcnt vmcnt(0)996; GFX7-NEXT:    s_setpc_b64 s[30:31]997;998; GFX90A-LABEL: func_call_too_many_args_use_workitem_id_x:999; GFX90A:       ; %bb.0:1000; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1001; GFX90A-NEXT:    s_mov_b32 s4, s331002; GFX90A-NEXT:    s_mov_b32 s33, s321003; GFX90A-NEXT:    s_or_saveexec_b64 s[6:7], -11004; GFX90A-NEXT:    buffer_store_dword v40, off, s[0:3], s33 ; 4-byte Folded Spill1005; GFX90A-NEXT:    s_mov_b64 exec, s[6:7]1006; GFX90A-NEXT:    s_addk_i32 s32, 0x4001007; GFX90A-NEXT:    v_writelane_b32 v40, s4, 21008; GFX90A-NEXT:    s_getpc_b64 s[4:5]1009; GFX90A-NEXT:    s_add_u32 s4, s4, too_many_args_use_workitem_id_x@gotpcrel32@lo+41010; GFX90A-NEXT:    s_addc_u32 s5, s5, too_many_args_use_workitem_id_x@gotpcrel32@hi+121011; GFX90A-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x01012; GFX90A-NEXT:    global_store_dword v[0:1], v0, off1013; GFX90A-NEXT:    s_waitcnt vmcnt(0)1014; GFX90A-NEXT:    v_mov_b32_e32 v0, 0x1401015; GFX90A-NEXT:    v_writelane_b32 v40, s30, 01016; GFX90A-NEXT:    buffer_store_dword v0, off, s[0:3], s321017; GFX90A-NEXT:    v_mov_b32_e32 v0, 101018; GFX90A-NEXT:    v_mov_b32_e32 v1, 201019; GFX90A-NEXT:    v_mov_b32_e32 v2, 301020; GFX90A-NEXT:    v_mov_b32_e32 v3, 401021; GFX90A-NEXT:    v_mov_b32_e32 v4, 501022; GFX90A-NEXT:    v_mov_b32_e32 v5, 601023; GFX90A-NEXT:    v_mov_b32_e32 v6, 0x461024; GFX90A-NEXT:    v_mov_b32_e32 v7, 0x501025; GFX90A-NEXT:    v_mov_b32_e32 v8, 0x5a1026; GFX90A-NEXT:    v_mov_b32_e32 v9, 0x641027; GFX90A-NEXT:    v_mov_b32_e32 v10, 0x6e1028; GFX90A-NEXT:    v_mov_b32_e32 v11, 0x781029; GFX90A-NEXT:    v_mov_b32_e32 v12, 0x821030; GFX90A-NEXT:    v_mov_b32_e32 v13, 0x8c1031; GFX90A-NEXT:    v_mov_b32_e32 v14, 0x961032; GFX90A-NEXT:    v_mov_b32_e32 v15, 0xa01033; GFX90A-NEXT:    v_mov_b32_e32 v16, 0xaa1034; GFX90A-NEXT:    v_mov_b32_e32 v17, 0xb41035; GFX90A-NEXT:    v_mov_b32_e32 v18, 0xbe1036; GFX90A-NEXT:    v_mov_b32_e32 v19, 0xc81037; GFX90A-NEXT:    v_mov_b32_e32 v20, 0xd21038; GFX90A-NEXT:    v_mov_b32_e32 v21, 0xdc1039; GFX90A-NEXT:    v_mov_b32_e32 v22, 0xe61040; GFX90A-NEXT:    v_mov_b32_e32 v23, 0xf01041; GFX90A-NEXT:    v_mov_b32_e32 v24, 0xfa1042; GFX90A-NEXT:    v_mov_b32_e32 v25, 0x1041043; GFX90A-NEXT:    v_mov_b32_e32 v26, 0x10e1044; GFX90A-NEXT:    v_mov_b32_e32 v27, 0x1181045; GFX90A-NEXT:    v_mov_b32_e32 v28, 0x1221046; GFX90A-NEXT:    v_mov_b32_e32 v29, 0x12c1047; GFX90A-NEXT:    v_mov_b32_e32 v30, 0x1361048; GFX90A-NEXT:    v_writelane_b32 v40, s31, 11049; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)1050; GFX90A-NEXT:    s_swappc_b64 s[30:31], s[4:5]1051; GFX90A-NEXT:    v_readlane_b32 s31, v40, 11052; GFX90A-NEXT:    v_readlane_b32 s30, v40, 01053; GFX90A-NEXT:    s_mov_b32 s32, s331054; GFX90A-NEXT:    v_readlane_b32 s4, v40, 21055; GFX90A-NEXT:    s_or_saveexec_b64 s[6:7], -11056; GFX90A-NEXT:    buffer_load_dword v40, off, s[0:3], s33 ; 4-byte Folded Reload1057; GFX90A-NEXT:    s_mov_b64 exec, s[6:7]1058; GFX90A-NEXT:    s_mov_b32 s33, s41059; GFX90A-NEXT:    s_waitcnt vmcnt(0)1060; GFX90A-NEXT:    s_setpc_b64 s[30:31]1061  store volatile i32 %arg0, ptr addrspace(1) poison1062  call void @too_many_args_use_workitem_id_x(1063    i32 10, i32 20, i32 30, i32 40,1064    i32 50, i32 60, i32 70, i32 80,1065    i32 90, i32 100, i32 110, i32 120,1066    i32 130, i32 140, i32 150, i32 160,1067    i32 170, i32 180, i32 190, i32 200,1068    i32 210, i32 220, i32 230, i32 240,1069    i32 250, i32 260, i32 270, i32 280,1070    i32 290, i32 300, i32 310, i32 320)1071  ret void1072}1073 1074; Requires loading and storing to stack slot.1075define void @too_many_args_call_too_many_args_use_workitem_id_x(1076; GCN-LABEL: too_many_args_call_too_many_args_use_workitem_id_x:1077; GCN:       ; %bb.0:1078; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1079; GCN-NEXT:    s_mov_b32 s4, s331080; GCN-NEXT:    s_mov_b32 s33, s321081; GCN-NEXT:    s_or_saveexec_b64 s[6:7], -11082; GCN-NEXT:    buffer_store_dword v40, off, s[0:3], s33 offset:4 ; 4-byte Folded Spill1083; GCN-NEXT:    s_mov_b64 exec, s[6:7]1084; GCN-NEXT:    buffer_load_dword v32, off, s[0:3], s331085; GCN-NEXT:    s_addk_i32 s32, 0x4001086; GCN-NEXT:    v_writelane_b32 v40, s4, 21087; GCN-NEXT:    s_getpc_b64 s[4:5]1088; GCN-NEXT:    s_add_u32 s4, s4, too_many_args_use_workitem_id_x@gotpcrel32@lo+41089; GCN-NEXT:    s_addc_u32 s5, s5, too_many_args_use_workitem_id_x@gotpcrel32@hi+121090; GCN-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x01091; GCN-NEXT:    v_writelane_b32 v40, s30, 01092; GCN-NEXT:    v_writelane_b32 v40, s31, 11093; GCN-NEXT:    s_waitcnt vmcnt(0)1094; GCN-NEXT:    buffer_store_dword v32, off, s[0:3], s321095; GCN-NEXT:    s_waitcnt lgkmcnt(0)1096; GCN-NEXT:    s_swappc_b64 s[30:31], s[4:5]1097; GCN-NEXT:    v_readlane_b32 s31, v40, 11098; GCN-NEXT:    v_readlane_b32 s30, v40, 01099; GCN-NEXT:    s_mov_b32 s32, s331100; GCN-NEXT:    v_readlane_b32 s4, v40, 21101; GCN-NEXT:    s_or_saveexec_b64 s[6:7], -11102; GCN-NEXT:    buffer_load_dword v40, off, s[0:3], s33 offset:4 ; 4-byte Folded Reload1103; GCN-NEXT:    s_mov_b64 exec, s[6:7]1104; GCN-NEXT:    s_mov_b32 s33, s41105; GCN-NEXT:    s_waitcnt vmcnt(0)1106; GCN-NEXT:    s_setpc_b64 s[30:31]1107  i32 %arg0, i32 %arg1, i32 %arg2, i32 %arg3, i32 %arg4, i32 %arg5, i32 %arg6, i32 %arg7,1108  i32 %arg8, i32 %arg9, i32 %arg10, i32 %arg11, i32 %arg12, i32 %arg13, i32 %arg14, i32 %arg15,1109  i32 %arg16, i32 %arg17, i32 %arg18, i32 %arg19, i32 %arg20, i32 %arg21, i32 %arg22, i32 %arg23,1110  i32 %arg24, i32 %arg25, i32 %arg26, i32 %arg27, i32 %arg28, i32 %arg29, i32 %arg30, i32 %arg31) #1 {1111  call void @too_many_args_use_workitem_id_x(1112    i32 %arg0, i32 %arg1, i32 %arg2, i32 %arg3, i32 %arg4, i32 %arg5, i32 %arg6, i32 %arg7,1113    i32 %arg8, i32 %arg9, i32 %arg10, i32 %arg11, i32 %arg12, i32 %arg13, i32 %arg14, i32 %arg15,1114    i32 %arg16, i32 %arg17, i32 %arg18, i32 %arg19, i32 %arg20, i32 %arg21, i32 %arg22, i32 %arg23,1115    i32 %arg24, i32 %arg25, i32 %arg26, i32 %arg27, i32 %arg28, i32 %arg29, i32 %arg30, i32 %arg31)1116  ret void1117}1118 1119; stack layout:1120; frame[0] = stack passed arg231121; frame[1] = byval arg321122define void @too_many_args_use_workitem_id_x_byval(1123; GFX7-LABEL: too_many_args_use_workitem_id_x_byval:1124; GFX7:       ; %bb.0:1125; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1126; GFX7-NEXT:    v_and_b32_e32 v31, 0x3ff, v311127; GFX7-NEXT:    flat_store_dword v[0:1], v311128; GFX7-NEXT:    s_waitcnt vmcnt(0)1129; GFX7-NEXT:    buffer_load_dword v31, off, s[0:3], s321130; GFX7-NEXT:    flat_store_dword v[0:1], v01131; GFX7-NEXT:    s_waitcnt vmcnt(0)1132; GFX7-NEXT:    flat_store_dword v[0:1], v11133; GFX7-NEXT:    s_waitcnt vmcnt(0)1134; GFX7-NEXT:    flat_store_dword v[0:1], v21135; GFX7-NEXT:    s_waitcnt vmcnt(0)1136; GFX7-NEXT:    flat_store_dword v[0:1], v31137; GFX7-NEXT:    s_waitcnt vmcnt(0)1138; GFX7-NEXT:    flat_store_dword v[0:1], v41139; GFX7-NEXT:    s_waitcnt vmcnt(0)1140; GFX7-NEXT:    flat_store_dword v[0:1], v51141; GFX7-NEXT:    s_waitcnt vmcnt(0)1142; GFX7-NEXT:    flat_store_dword v[0:1], v61143; GFX7-NEXT:    s_waitcnt vmcnt(0)1144; GFX7-NEXT:    flat_store_dword v[0:1], v71145; GFX7-NEXT:    s_waitcnt vmcnt(0)1146; GFX7-NEXT:    flat_store_dword v[0:1], v81147; GFX7-NEXT:    s_waitcnt vmcnt(0)1148; GFX7-NEXT:    flat_store_dword v[0:1], v91149; GFX7-NEXT:    s_waitcnt vmcnt(0)1150; GFX7-NEXT:    flat_store_dword v[0:1], v101151; GFX7-NEXT:    s_waitcnt vmcnt(0)1152; GFX7-NEXT:    flat_store_dword v[0:1], v111153; GFX7-NEXT:    s_waitcnt vmcnt(0)1154; GFX7-NEXT:    flat_store_dword v[0:1], v121155; GFX7-NEXT:    s_waitcnt vmcnt(0)1156; GFX7-NEXT:    flat_store_dword v[0:1], v131157; GFX7-NEXT:    s_waitcnt vmcnt(0)1158; GFX7-NEXT:    flat_store_dword v[0:1], v141159; GFX7-NEXT:    s_waitcnt vmcnt(0)1160; GFX7-NEXT:    flat_store_dword v[0:1], v151161; GFX7-NEXT:    s_waitcnt vmcnt(0)1162; GFX7-NEXT:    flat_store_dword v[0:1], v161163; GFX7-NEXT:    s_waitcnt vmcnt(0)1164; GFX7-NEXT:    flat_store_dword v[0:1], v171165; GFX7-NEXT:    s_waitcnt vmcnt(0)1166; GFX7-NEXT:    flat_store_dword v[0:1], v181167; GFX7-NEXT:    s_waitcnt vmcnt(0)1168; GFX7-NEXT:    flat_store_dword v[0:1], v191169; GFX7-NEXT:    s_waitcnt vmcnt(0)1170; GFX7-NEXT:    flat_store_dword v[0:1], v201171; GFX7-NEXT:    s_waitcnt vmcnt(0)1172; GFX7-NEXT:    flat_store_dword v[0:1], v211173; GFX7-NEXT:    s_waitcnt vmcnt(0)1174; GFX7-NEXT:    flat_store_dword v[0:1], v221175; GFX7-NEXT:    s_waitcnt vmcnt(0)1176; GFX7-NEXT:    flat_store_dword v[0:1], v231177; GFX7-NEXT:    s_waitcnt vmcnt(0)1178; GFX7-NEXT:    flat_store_dword v[0:1], v241179; GFX7-NEXT:    s_waitcnt vmcnt(0)1180; GFX7-NEXT:    flat_store_dword v[0:1], v251181; GFX7-NEXT:    s_waitcnt vmcnt(0)1182; GFX7-NEXT:    flat_store_dword v[0:1], v261183; GFX7-NEXT:    s_waitcnt vmcnt(0)1184; GFX7-NEXT:    flat_store_dword v[0:1], v271185; GFX7-NEXT:    s_waitcnt vmcnt(0)1186; GFX7-NEXT:    flat_store_dword v[0:1], v281187; GFX7-NEXT:    s_waitcnt vmcnt(0)1188; GFX7-NEXT:    flat_store_dword v[0:1], v291189; GFX7-NEXT:    s_waitcnt vmcnt(0)1190; GFX7-NEXT:    flat_store_dword v[0:1], v301191; GFX7-NEXT:    s_waitcnt vmcnt(0)1192; GFX7-NEXT:    flat_store_dword v[0:1], v311193; GFX7-NEXT:    s_waitcnt vmcnt(0)1194; GFX7-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:4 glc1195; GFX7-NEXT:    s_waitcnt vmcnt(0)1196; GFX7-NEXT:    s_setpc_b64 s[30:31]1197;1198; GFX90A-LABEL: too_many_args_use_workitem_id_x_byval:1199; GFX90A:       ; %bb.0:1200; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1201; GFX90A-NEXT:    buffer_load_dword v32, off, s[0:3], s321202; GFX90A-NEXT:    v_and_b32_e32 v31, 0x3ff, v311203; GFX90A-NEXT:    global_store_dword v[0:1], v31, off1204; GFX90A-NEXT:    s_waitcnt vmcnt(0)1205; GFX90A-NEXT:    global_store_dword v[0:1], v0, off1206; GFX90A-NEXT:    s_waitcnt vmcnt(0)1207; GFX90A-NEXT:    global_store_dword v[0:1], v1, off1208; GFX90A-NEXT:    s_waitcnt vmcnt(0)1209; GFX90A-NEXT:    global_store_dword v[0:1], v2, off1210; GFX90A-NEXT:    s_waitcnt vmcnt(0)1211; GFX90A-NEXT:    global_store_dword v[0:1], v3, off1212; GFX90A-NEXT:    s_waitcnt vmcnt(0)1213; GFX90A-NEXT:    global_store_dword v[0:1], v4, off1214; GFX90A-NEXT:    s_waitcnt vmcnt(0)1215; GFX90A-NEXT:    global_store_dword v[0:1], v5, off1216; GFX90A-NEXT:    s_waitcnt vmcnt(0)1217; GFX90A-NEXT:    global_store_dword v[0:1], v6, off1218; GFX90A-NEXT:    s_waitcnt vmcnt(0)1219; GFX90A-NEXT:    global_store_dword v[0:1], v7, off1220; GFX90A-NEXT:    s_waitcnt vmcnt(0)1221; GFX90A-NEXT:    global_store_dword v[0:1], v8, off1222; GFX90A-NEXT:    s_waitcnt vmcnt(0)1223; GFX90A-NEXT:    global_store_dword v[0:1], v9, off1224; GFX90A-NEXT:    s_waitcnt vmcnt(0)1225; GFX90A-NEXT:    global_store_dword v[0:1], v10, off1226; GFX90A-NEXT:    s_waitcnt vmcnt(0)1227; GFX90A-NEXT:    global_store_dword v[0:1], v11, off1228; GFX90A-NEXT:    s_waitcnt vmcnt(0)1229; GFX90A-NEXT:    global_store_dword v[0:1], v12, off1230; GFX90A-NEXT:    s_waitcnt vmcnt(0)1231; GFX90A-NEXT:    global_store_dword v[0:1], v13, off1232; GFX90A-NEXT:    s_waitcnt vmcnt(0)1233; GFX90A-NEXT:    global_store_dword v[0:1], v14, off1234; GFX90A-NEXT:    s_waitcnt vmcnt(0)1235; GFX90A-NEXT:    global_store_dword v[0:1], v15, off1236; GFX90A-NEXT:    s_waitcnt vmcnt(0)1237; GFX90A-NEXT:    global_store_dword v[0:1], v16, off1238; GFX90A-NEXT:    s_waitcnt vmcnt(0)1239; GFX90A-NEXT:    global_store_dword v[0:1], v17, off1240; GFX90A-NEXT:    s_waitcnt vmcnt(0)1241; GFX90A-NEXT:    global_store_dword v[0:1], v18, off1242; GFX90A-NEXT:    s_waitcnt vmcnt(0)1243; GFX90A-NEXT:    global_store_dword v[0:1], v19, off1244; GFX90A-NEXT:    s_waitcnt vmcnt(0)1245; GFX90A-NEXT:    global_store_dword v[0:1], v20, off1246; GFX90A-NEXT:    s_waitcnt vmcnt(0)1247; GFX90A-NEXT:    global_store_dword v[0:1], v21, off1248; GFX90A-NEXT:    s_waitcnt vmcnt(0)1249; GFX90A-NEXT:    global_store_dword v[0:1], v22, off1250; GFX90A-NEXT:    s_waitcnt vmcnt(0)1251; GFX90A-NEXT:    global_store_dword v[0:1], v23, off1252; GFX90A-NEXT:    s_waitcnt vmcnt(0)1253; GFX90A-NEXT:    global_store_dword v[0:1], v24, off1254; GFX90A-NEXT:    s_waitcnt vmcnt(0)1255; GFX90A-NEXT:    global_store_dword v[0:1], v25, off1256; GFX90A-NEXT:    s_waitcnt vmcnt(0)1257; GFX90A-NEXT:    global_store_dword v[0:1], v26, off1258; GFX90A-NEXT:    s_waitcnt vmcnt(0)1259; GFX90A-NEXT:    global_store_dword v[0:1], v27, off1260; GFX90A-NEXT:    s_waitcnt vmcnt(0)1261; GFX90A-NEXT:    global_store_dword v[0:1], v28, off1262; GFX90A-NEXT:    s_waitcnt vmcnt(0)1263; GFX90A-NEXT:    global_store_dword v[0:1], v29, off1264; GFX90A-NEXT:    s_waitcnt vmcnt(0)1265; GFX90A-NEXT:    global_store_dword v[0:1], v30, off1266; GFX90A-NEXT:    s_waitcnt vmcnt(0)1267; GFX90A-NEXT:    global_store_dword v[0:1], v32, off1268; GFX90A-NEXT:    s_waitcnt vmcnt(0)1269; GFX90A-NEXT:    buffer_load_dword v0, off, s[0:3], s32 offset:4 glc1270; GFX90A-NEXT:    s_waitcnt vmcnt(0)1271; GFX90A-NEXT:    s_setpc_b64 s[30:31]1272  i32 %arg0, i32 %arg1, i32 %arg2, i32 %arg3, i32 %arg4, i32 %arg5, i32 %arg6, i32 %arg7,1273  i32 %arg8, i32 %arg9, i32 %arg10, i32 %arg11, i32 %arg12, i32 %arg13, i32 %arg14, i32 %arg15,1274  i32 %arg16, i32 %arg17, i32 %arg18, i32 %arg19, i32 %arg20, i32 %arg21, i32 %arg22, i32 %arg23,1275  i32 %arg24, i32 %arg25, i32 %arg26, i32 %arg27, i32 %arg28, i32 %arg29, i32 %arg30, i32 %arg31, ptr addrspace(5) byval(i32) %arg32) #1 {1276  %val = call i32 @llvm.amdgcn.workitem.id.x()1277  store volatile i32 %val, ptr addrspace(1) poison1278 1279  store volatile i32 %arg0, ptr addrspace(1) poison1280  store volatile i32 %arg1, ptr addrspace(1) poison1281  store volatile i32 %arg2, ptr addrspace(1) poison1282  store volatile i32 %arg3, ptr addrspace(1) poison1283  store volatile i32 %arg4, ptr addrspace(1) poison1284  store volatile i32 %arg5, ptr addrspace(1) poison1285  store volatile i32 %arg6, ptr addrspace(1) poison1286  store volatile i32 %arg7, ptr addrspace(1) poison1287 1288  store volatile i32 %arg8, ptr addrspace(1) poison1289  store volatile i32 %arg9, ptr addrspace(1) poison1290  store volatile i32 %arg10, ptr addrspace(1) poison1291  store volatile i32 %arg11, ptr addrspace(1) poison1292  store volatile i32 %arg12, ptr addrspace(1) poison1293  store volatile i32 %arg13, ptr addrspace(1) poison1294  store volatile i32 %arg14, ptr addrspace(1) poison1295  store volatile i32 %arg15, ptr addrspace(1) poison1296 1297  store volatile i32 %arg16, ptr addrspace(1) poison1298  store volatile i32 %arg17, ptr addrspace(1) poison1299  store volatile i32 %arg18, ptr addrspace(1) poison1300  store volatile i32 %arg19, ptr addrspace(1) poison1301  store volatile i32 %arg20, ptr addrspace(1) poison1302  store volatile i32 %arg21, ptr addrspace(1) poison1303  store volatile i32 %arg22, ptr addrspace(1) poison1304  store volatile i32 %arg23, ptr addrspace(1) poison1305 1306  store volatile i32 %arg24, ptr addrspace(1) poison1307  store volatile i32 %arg25, ptr addrspace(1) poison1308  store volatile i32 %arg26, ptr addrspace(1) poison1309  store volatile i32 %arg27, ptr addrspace(1) poison1310  store volatile i32 %arg28, ptr addrspace(1) poison1311  store volatile i32 %arg29, ptr addrspace(1) poison1312  store volatile i32 %arg30, ptr addrspace(1) poison1313  store volatile i32 %arg31, ptr addrspace(1) poison1314  %private = load volatile i32, ptr addrspace(5) %arg321315  ret void1316}1317 1318; sp[0] = stack passed %arg311319; sp[1] = byval1320; Local stack object initialize. Offset 0 is the emergency spill slot.1321define amdgpu_kernel void @kern_call_too_many_args_use_workitem_id_x_byval() #1 {1322; GCN-LABEL: kern_call_too_many_args_use_workitem_id_x_byval:1323; GCN:       ; %bb.0:1324; GCN-NEXT:    s_add_u32 s0, s0, s51325; GCN-NEXT:    s_addc_u32 s1, s1, 01326; GCN-NEXT:    v_mov_b32_e32 v31, v01327; GCN-NEXT:    v_mov_b32_e32 v0, 0x3e71328; GCN-NEXT:    s_movk_i32 s32, 0x4001329; GCN-NEXT:    buffer_store_dword v0, off, s[0:3], 01330; GCN-NEXT:    s_waitcnt vmcnt(0)1331; GCN-NEXT:    v_mov_b32_e32 v0, 0x1401332; GCN-NEXT:    buffer_store_dword v0, off, s[0:3], s321333; GCN-NEXT:    buffer_load_dword v0, off, s[0:3], 01334; GCN-NEXT:    s_getpc_b64 s[4:5]1335; GCN-NEXT:    s_add_u32 s4, s4, too_many_args_use_workitem_id_x_byval@gotpcrel32@lo+41336; GCN-NEXT:    s_addc_u32 s5, s5, too_many_args_use_workitem_id_x_byval@gotpcrel32@hi+121337; GCN-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x01338; GCN-NEXT:    v_mov_b32_e32 v1, 201339; GCN-NEXT:    v_mov_b32_e32 v2, 301340; GCN-NEXT:    v_mov_b32_e32 v3, 401341; GCN-NEXT:    v_mov_b32_e32 v4, 501342; GCN-NEXT:    v_mov_b32_e32 v5, 601343; GCN-NEXT:    v_mov_b32_e32 v6, 0x461344; GCN-NEXT:    v_mov_b32_e32 v7, 0x501345; GCN-NEXT:    v_mov_b32_e32 v8, 0x5a1346; GCN-NEXT:    v_mov_b32_e32 v9, 0x641347; GCN-NEXT:    v_mov_b32_e32 v10, 0x6e1348; GCN-NEXT:    v_mov_b32_e32 v11, 0x781349; GCN-NEXT:    v_mov_b32_e32 v12, 0x821350; GCN-NEXT:    v_mov_b32_e32 v13, 0x8c1351; GCN-NEXT:    v_mov_b32_e32 v14, 0x961352; GCN-NEXT:    v_mov_b32_e32 v15, 0xa01353; GCN-NEXT:    v_mov_b32_e32 v16, 0xaa1354; GCN-NEXT:    v_mov_b32_e32 v17, 0xb41355; GCN-NEXT:    v_mov_b32_e32 v18, 0xbe1356; GCN-NEXT:    v_mov_b32_e32 v19, 0xc81357; GCN-NEXT:    v_mov_b32_e32 v20, 0xd21358; GCN-NEXT:    v_mov_b32_e32 v21, 0xdc1359; GCN-NEXT:    v_mov_b32_e32 v22, 0xe61360; GCN-NEXT:    v_mov_b32_e32 v23, 0xf01361; GCN-NEXT:    v_mov_b32_e32 v24, 0xfa1362; GCN-NEXT:    v_mov_b32_e32 v25, 0x1041363; GCN-NEXT:    v_mov_b32_e32 v26, 0x10e1364; GCN-NEXT:    v_mov_b32_e32 v27, 0x1181365; GCN-NEXT:    v_mov_b32_e32 v28, 0x1221366; GCN-NEXT:    v_mov_b32_e32 v29, 0x12c1367; GCN-NEXT:    v_mov_b32_e32 v30, 0x1361368; GCN-NEXT:    s_waitcnt vmcnt(0)1369; GCN-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:41370; GCN-NEXT:    v_mov_b32_e32 v0, 101371; GCN-NEXT:    s_waitcnt lgkmcnt(0)1372; GCN-NEXT:    s_swappc_b64 s[30:31], s[4:5]1373; GCN-NEXT:    s_endpgm1374  %alloca = alloca i32, align 4, addrspace(5)1375  store volatile i32 999, ptr addrspace(5) %alloca1376  call void @too_many_args_use_workitem_id_x_byval(1377    i32 10, i32 20, i32 30, i32 40,1378    i32 50, i32 60, i32 70, i32 80,1379    i32 90, i32 100, i32 110, i32 120,1380    i32 130, i32 140, i32 150, i32 160,1381    i32 170, i32 180, i32 190, i32 200,1382    i32 210, i32 220, i32 230, i32 240,1383    i32 250, i32 260, i32 270, i32 280,1384    i32 290, i32 300, i32 310, i32 320,1385    ptr addrspace(5) byval(i32) %alloca)1386  ret void1387}1388; GCN: .amdhsa_system_vgpr_workitem_id 01389 1390define void @func_call_too_many_args_use_workitem_id_x_byval() #1 {1391; GCN-LABEL: func_call_too_many_args_use_workitem_id_x_byval:1392; GCN:       ; %bb.0:1393; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1394; GCN-NEXT:    s_mov_b32 s4, s331395; GCN-NEXT:    s_mov_b32 s33, s321396; GCN-NEXT:    s_or_saveexec_b64 s[6:7], -11397; GCN-NEXT:    buffer_store_dword v40, off, s[0:3], s33 offset:4 ; 4-byte Folded Spill1398; GCN-NEXT:    s_mov_b64 exec, s[6:7]1399; GCN-NEXT:    v_mov_b32_e32 v0, 0x3e71400; GCN-NEXT:    s_addk_i32 s32, 0x4001401; GCN-NEXT:    buffer_store_dword v0, off, s[0:3], s331402; GCN-NEXT:    s_waitcnt vmcnt(0)1403; GCN-NEXT:    v_mov_b32_e32 v0, 0x1401404; GCN-NEXT:    buffer_store_dword v0, off, s[0:3], s321405; GCN-NEXT:    buffer_load_dword v0, off, s[0:3], s331406; GCN-NEXT:    v_writelane_b32 v40, s4, 21407; GCN-NEXT:    s_getpc_b64 s[4:5]1408; GCN-NEXT:    s_add_u32 s4, s4, too_many_args_use_workitem_id_x_byval@gotpcrel32@lo+41409; GCN-NEXT:    s_addc_u32 s5, s5, too_many_args_use_workitem_id_x_byval@gotpcrel32@hi+121410; GCN-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x01411; GCN-NEXT:    v_writelane_b32 v40, s30, 01412; GCN-NEXT:    v_mov_b32_e32 v1, 201413; GCN-NEXT:    v_mov_b32_e32 v2, 301414; GCN-NEXT:    v_mov_b32_e32 v3, 401415; GCN-NEXT:    v_mov_b32_e32 v4, 501416; GCN-NEXT:    v_mov_b32_e32 v5, 601417; GCN-NEXT:    v_mov_b32_e32 v6, 0x461418; GCN-NEXT:    v_mov_b32_e32 v7, 0x501419; GCN-NEXT:    v_mov_b32_e32 v8, 0x5a1420; GCN-NEXT:    v_mov_b32_e32 v9, 0x641421; GCN-NEXT:    v_mov_b32_e32 v10, 0x6e1422; GCN-NEXT:    v_mov_b32_e32 v11, 0x781423; GCN-NEXT:    v_mov_b32_e32 v12, 0x821424; GCN-NEXT:    v_mov_b32_e32 v13, 0x8c1425; GCN-NEXT:    v_mov_b32_e32 v14, 0x961426; GCN-NEXT:    v_mov_b32_e32 v15, 0xa01427; GCN-NEXT:    v_mov_b32_e32 v16, 0xaa1428; GCN-NEXT:    v_mov_b32_e32 v17, 0xb41429; GCN-NEXT:    v_mov_b32_e32 v18, 0xbe1430; GCN-NEXT:    v_mov_b32_e32 v19, 0xc81431; GCN-NEXT:    v_mov_b32_e32 v20, 0xd21432; GCN-NEXT:    v_mov_b32_e32 v21, 0xdc1433; GCN-NEXT:    v_mov_b32_e32 v22, 0xe61434; GCN-NEXT:    v_mov_b32_e32 v23, 0xf01435; GCN-NEXT:    v_mov_b32_e32 v24, 0xfa1436; GCN-NEXT:    v_mov_b32_e32 v25, 0x1041437; GCN-NEXT:    v_mov_b32_e32 v26, 0x10e1438; GCN-NEXT:    v_mov_b32_e32 v27, 0x1181439; GCN-NEXT:    v_mov_b32_e32 v28, 0x1221440; GCN-NEXT:    v_mov_b32_e32 v29, 0x12c1441; GCN-NEXT:    v_mov_b32_e32 v30, 0x1361442; GCN-NEXT:    v_writelane_b32 v40, s31, 11443; GCN-NEXT:    s_waitcnt vmcnt(0)1444; GCN-NEXT:    buffer_store_dword v0, off, s[0:3], s32 offset:41445; GCN-NEXT:    v_mov_b32_e32 v0, 101446; GCN-NEXT:    s_waitcnt lgkmcnt(0)1447; GCN-NEXT:    s_swappc_b64 s[30:31], s[4:5]1448; GCN-NEXT:    v_readlane_b32 s31, v40, 11449; GCN-NEXT:    v_readlane_b32 s30, v40, 01450; GCN-NEXT:    s_mov_b32 s32, s331451; GCN-NEXT:    v_readlane_b32 s4, v40, 21452; GCN-NEXT:    s_or_saveexec_b64 s[6:7], -11453; GCN-NEXT:    buffer_load_dword v40, off, s[0:3], s33 offset:4 ; 4-byte Folded Reload1454; GCN-NEXT:    s_mov_b64 exec, s[6:7]1455; GCN-NEXT:    s_mov_b32 s33, s41456; GCN-NEXT:    s_waitcnt vmcnt(0)1457; GCN-NEXT:    s_setpc_b64 s[30:31]1458  %alloca = alloca i32, align 4, addrspace(5)1459  store volatile i32 999, ptr addrspace(5) %alloca1460  call void @too_many_args_use_workitem_id_x_byval(1461    i32 10, i32 20, i32 30, i32 40,1462    i32 50, i32 60, i32 70, i32 80,1463    i32 90, i32 100, i32 110, i32 120,1464    i32 130, i32 140, i32 150, i32 160,1465    i32 170, i32 180, i32 190, i32 200,1466    i32 210, i32 220, i32 230, i32 240,1467    i32 250, i32 260, i32 270, i32 280,1468    i32 290, i32 300, i32 310, i32 320,1469    ptr addrspace(5) byval(i32) %alloca)1470  ret void1471}1472 1473define void @too_many_args_use_workitem_id_xyz(1474; GFX7-LABEL: too_many_args_use_workitem_id_xyz:1475; GFX7:       ; %bb.0:1476; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1477; GFX7-NEXT:    v_and_b32_e32 v32, 0x3ff, v311478; GFX7-NEXT:    flat_store_dword v[0:1], v321479; GFX7-NEXT:    s_waitcnt vmcnt(0)1480; GFX7-NEXT:    v_bfe_u32 v32, v31, 10, 101481; GFX7-NEXT:    v_bfe_u32 v31, v31, 20, 101482; GFX7-NEXT:    flat_store_dword v[0:1], v321483; GFX7-NEXT:    s_waitcnt vmcnt(0)1484; GFX7-NEXT:    flat_store_dword v[0:1], v311485; GFX7-NEXT:    s_waitcnt vmcnt(0)1486; GFX7-NEXT:    buffer_load_dword v31, off, s[0:3], s321487; GFX7-NEXT:    flat_store_dword v[0:1], v01488; GFX7-NEXT:    s_waitcnt vmcnt(0)1489; GFX7-NEXT:    flat_store_dword v[0:1], v11490; GFX7-NEXT:    s_waitcnt vmcnt(0)1491; GFX7-NEXT:    flat_store_dword v[0:1], v21492; GFX7-NEXT:    s_waitcnt vmcnt(0)1493; GFX7-NEXT:    flat_store_dword v[0:1], v31494; GFX7-NEXT:    s_waitcnt vmcnt(0)1495; GFX7-NEXT:    flat_store_dword v[0:1], v41496; GFX7-NEXT:    s_waitcnt vmcnt(0)1497; GFX7-NEXT:    flat_store_dword v[0:1], v51498; GFX7-NEXT:    s_waitcnt vmcnt(0)1499; GFX7-NEXT:    flat_store_dword v[0:1], v61500; GFX7-NEXT:    s_waitcnt vmcnt(0)1501; GFX7-NEXT:    flat_store_dword v[0:1], v71502; GFX7-NEXT:    s_waitcnt vmcnt(0)1503; GFX7-NEXT:    flat_store_dword v[0:1], v81504; GFX7-NEXT:    s_waitcnt vmcnt(0)1505; GFX7-NEXT:    flat_store_dword v[0:1], v91506; GFX7-NEXT:    s_waitcnt vmcnt(0)1507; GFX7-NEXT:    flat_store_dword v[0:1], v101508; GFX7-NEXT:    s_waitcnt vmcnt(0)1509; GFX7-NEXT:    flat_store_dword v[0:1], v111510; GFX7-NEXT:    s_waitcnt vmcnt(0)1511; GFX7-NEXT:    flat_store_dword v[0:1], v121512; GFX7-NEXT:    s_waitcnt vmcnt(0)1513; GFX7-NEXT:    flat_store_dword v[0:1], v131514; GFX7-NEXT:    s_waitcnt vmcnt(0)1515; GFX7-NEXT:    flat_store_dword v[0:1], v141516; GFX7-NEXT:    s_waitcnt vmcnt(0)1517; GFX7-NEXT:    flat_store_dword v[0:1], v151518; GFX7-NEXT:    s_waitcnt vmcnt(0)1519; GFX7-NEXT:    flat_store_dword v[0:1], v161520; GFX7-NEXT:    s_waitcnt vmcnt(0)1521; GFX7-NEXT:    flat_store_dword v[0:1], v171522; GFX7-NEXT:    s_waitcnt vmcnt(0)1523; GFX7-NEXT:    flat_store_dword v[0:1], v181524; GFX7-NEXT:    s_waitcnt vmcnt(0)1525; GFX7-NEXT:    flat_store_dword v[0:1], v191526; GFX7-NEXT:    s_waitcnt vmcnt(0)1527; GFX7-NEXT:    flat_store_dword v[0:1], v201528; GFX7-NEXT:    s_waitcnt vmcnt(0)1529; GFX7-NEXT:    flat_store_dword v[0:1], v211530; GFX7-NEXT:    s_waitcnt vmcnt(0)1531; GFX7-NEXT:    flat_store_dword v[0:1], v221532; GFX7-NEXT:    s_waitcnt vmcnt(0)1533; GFX7-NEXT:    flat_store_dword v[0:1], v231534; GFX7-NEXT:    s_waitcnt vmcnt(0)1535; GFX7-NEXT:    flat_store_dword v[0:1], v241536; GFX7-NEXT:    s_waitcnt vmcnt(0)1537; GFX7-NEXT:    flat_store_dword v[0:1], v251538; GFX7-NEXT:    s_waitcnt vmcnt(0)1539; GFX7-NEXT:    flat_store_dword v[0:1], v261540; GFX7-NEXT:    s_waitcnt vmcnt(0)1541; GFX7-NEXT:    flat_store_dword v[0:1], v271542; GFX7-NEXT:    s_waitcnt vmcnt(0)1543; GFX7-NEXT:    flat_store_dword v[0:1], v281544; GFX7-NEXT:    s_waitcnt vmcnt(0)1545; GFX7-NEXT:    flat_store_dword v[0:1], v291546; GFX7-NEXT:    s_waitcnt vmcnt(0)1547; GFX7-NEXT:    flat_store_dword v[0:1], v301548; GFX7-NEXT:    s_waitcnt vmcnt(0)1549; GFX7-NEXT:    flat_store_dword v[0:1], v311550; GFX7-NEXT:    s_waitcnt vmcnt(0)1551; GFX7-NEXT:    s_setpc_b64 s[30:31]1552;1553; GFX90A-LABEL: too_many_args_use_workitem_id_xyz:1554; GFX90A:       ; %bb.0:1555; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1556; GFX90A-NEXT:    buffer_load_dword v33, off, s[0:3], s321557; GFX90A-NEXT:    v_and_b32_e32 v32, 0x3ff, v311558; GFX90A-NEXT:    global_store_dword v[0:1], v32, off1559; GFX90A-NEXT:    s_waitcnt vmcnt(0)1560; GFX90A-NEXT:    v_bfe_u32 v32, v31, 10, 101561; GFX90A-NEXT:    v_bfe_u32 v31, v31, 20, 101562; GFX90A-NEXT:    global_store_dword v[0:1], v32, off1563; GFX90A-NEXT:    s_waitcnt vmcnt(0)1564; GFX90A-NEXT:    global_store_dword v[0:1], v31, off1565; GFX90A-NEXT:    s_waitcnt vmcnt(0)1566; GFX90A-NEXT:    global_store_dword v[0:1], v0, off1567; GFX90A-NEXT:    s_waitcnt vmcnt(0)1568; GFX90A-NEXT:    global_store_dword v[0:1], v1, off1569; GFX90A-NEXT:    s_waitcnt vmcnt(0)1570; GFX90A-NEXT:    global_store_dword v[0:1], v2, off1571; GFX90A-NEXT:    s_waitcnt vmcnt(0)1572; GFX90A-NEXT:    global_store_dword v[0:1], v3, off1573; GFX90A-NEXT:    s_waitcnt vmcnt(0)1574; GFX90A-NEXT:    global_store_dword v[0:1], v4, off1575; GFX90A-NEXT:    s_waitcnt vmcnt(0)1576; GFX90A-NEXT:    global_store_dword v[0:1], v5, off1577; GFX90A-NEXT:    s_waitcnt vmcnt(0)1578; GFX90A-NEXT:    global_store_dword v[0:1], v6, off1579; GFX90A-NEXT:    s_waitcnt vmcnt(0)1580; GFX90A-NEXT:    global_store_dword v[0:1], v7, off1581; GFX90A-NEXT:    s_waitcnt vmcnt(0)1582; GFX90A-NEXT:    global_store_dword v[0:1], v8, off1583; GFX90A-NEXT:    s_waitcnt vmcnt(0)1584; GFX90A-NEXT:    global_store_dword v[0:1], v9, off1585; GFX90A-NEXT:    s_waitcnt vmcnt(0)1586; GFX90A-NEXT:    global_store_dword v[0:1], v10, off1587; GFX90A-NEXT:    s_waitcnt vmcnt(0)1588; GFX90A-NEXT:    global_store_dword v[0:1], v11, off1589; GFX90A-NEXT:    s_waitcnt vmcnt(0)1590; GFX90A-NEXT:    global_store_dword v[0:1], v12, off1591; GFX90A-NEXT:    s_waitcnt vmcnt(0)1592; GFX90A-NEXT:    global_store_dword v[0:1], v13, off1593; GFX90A-NEXT:    s_waitcnt vmcnt(0)1594; GFX90A-NEXT:    global_store_dword v[0:1], v14, off1595; GFX90A-NEXT:    s_waitcnt vmcnt(0)1596; GFX90A-NEXT:    global_store_dword v[0:1], v15, off1597; GFX90A-NEXT:    s_waitcnt vmcnt(0)1598; GFX90A-NEXT:    global_store_dword v[0:1], v16, off1599; GFX90A-NEXT:    s_waitcnt vmcnt(0)1600; GFX90A-NEXT:    global_store_dword v[0:1], v17, off1601; GFX90A-NEXT:    s_waitcnt vmcnt(0)1602; GFX90A-NEXT:    global_store_dword v[0:1], v18, off1603; GFX90A-NEXT:    s_waitcnt vmcnt(0)1604; GFX90A-NEXT:    global_store_dword v[0:1], v19, off1605; GFX90A-NEXT:    s_waitcnt vmcnt(0)1606; GFX90A-NEXT:    global_store_dword v[0:1], v20, off1607; GFX90A-NEXT:    s_waitcnt vmcnt(0)1608; GFX90A-NEXT:    global_store_dword v[0:1], v21, off1609; GFX90A-NEXT:    s_waitcnt vmcnt(0)1610; GFX90A-NEXT:    global_store_dword v[0:1], v22, off1611; GFX90A-NEXT:    s_waitcnt vmcnt(0)1612; GFX90A-NEXT:    global_store_dword v[0:1], v23, off1613; GFX90A-NEXT:    s_waitcnt vmcnt(0)1614; GFX90A-NEXT:    global_store_dword v[0:1], v24, off1615; GFX90A-NEXT:    s_waitcnt vmcnt(0)1616; GFX90A-NEXT:    global_store_dword v[0:1], v25, off1617; GFX90A-NEXT:    s_waitcnt vmcnt(0)1618; GFX90A-NEXT:    global_store_dword v[0:1], v26, off1619; GFX90A-NEXT:    s_waitcnt vmcnt(0)1620; GFX90A-NEXT:    global_store_dword v[0:1], v27, off1621; GFX90A-NEXT:    s_waitcnt vmcnt(0)1622; GFX90A-NEXT:    global_store_dword v[0:1], v28, off1623; GFX90A-NEXT:    s_waitcnt vmcnt(0)1624; GFX90A-NEXT:    global_store_dword v[0:1], v29, off1625; GFX90A-NEXT:    s_waitcnt vmcnt(0)1626; GFX90A-NEXT:    global_store_dword v[0:1], v30, off1627; GFX90A-NEXT:    s_waitcnt vmcnt(0)1628; GFX90A-NEXT:    global_store_dword v[0:1], v33, off1629; GFX90A-NEXT:    s_waitcnt vmcnt(0)1630; GFX90A-NEXT:    s_setpc_b64 s[30:31]1631  i32 %arg0, i32 %arg1, i32 %arg2, i32 %arg3, i32 %arg4, i32 %arg5, i32 %arg6, i32 %arg7,1632  i32 %arg8, i32 %arg9, i32 %arg10, i32 %arg11, i32 %arg12, i32 %arg13, i32 %arg14, i32 %arg15,1633  i32 %arg16, i32 %arg17, i32 %arg18, i32 %arg19, i32 %arg20, i32 %arg21, i32 %arg22, i32 %arg23,1634  i32 %arg24, i32 %arg25, i32 %arg26, i32 %arg27, i32 %arg28, i32 %arg29, i32 %arg30, i32 %arg31) #1 {1635  %val0 = call i32 @llvm.amdgcn.workitem.id.x()1636  store volatile i32 %val0, ptr addrspace(1) poison1637  %val1 = call i32 @llvm.amdgcn.workitem.id.y()1638  store volatile i32 %val1, ptr addrspace(1) poison1639  %val2 = call i32 @llvm.amdgcn.workitem.id.z()1640  store volatile i32 %val2, ptr addrspace(1) poison1641 1642  store volatile i32 %arg0, ptr addrspace(1) poison1643  store volatile i32 %arg1, ptr addrspace(1) poison1644  store volatile i32 %arg2, ptr addrspace(1) poison1645  store volatile i32 %arg3, ptr addrspace(1) poison1646  store volatile i32 %arg4, ptr addrspace(1) poison1647  store volatile i32 %arg5, ptr addrspace(1) poison1648  store volatile i32 %arg6, ptr addrspace(1) poison1649  store volatile i32 %arg7, ptr addrspace(1) poison1650 1651  store volatile i32 %arg8, ptr addrspace(1) poison1652  store volatile i32 %arg9, ptr addrspace(1) poison1653  store volatile i32 %arg10, ptr addrspace(1) poison1654  store volatile i32 %arg11, ptr addrspace(1) poison1655  store volatile i32 %arg12, ptr addrspace(1) poison1656  store volatile i32 %arg13, ptr addrspace(1) poison1657  store volatile i32 %arg14, ptr addrspace(1) poison1658  store volatile i32 %arg15, ptr addrspace(1) poison1659 1660  store volatile i32 %arg16, ptr addrspace(1) poison1661  store volatile i32 %arg17, ptr addrspace(1) poison1662  store volatile i32 %arg18, ptr addrspace(1) poison1663  store volatile i32 %arg19, ptr addrspace(1) poison1664  store volatile i32 %arg20, ptr addrspace(1) poison1665  store volatile i32 %arg21, ptr addrspace(1) poison1666  store volatile i32 %arg22, ptr addrspace(1) poison1667  store volatile i32 %arg23, ptr addrspace(1) poison1668 1669  store volatile i32 %arg24, ptr addrspace(1) poison1670  store volatile i32 %arg25, ptr addrspace(1) poison1671  store volatile i32 %arg26, ptr addrspace(1) poison1672  store volatile i32 %arg27, ptr addrspace(1) poison1673  store volatile i32 %arg28, ptr addrspace(1) poison1674  store volatile i32 %arg29, ptr addrspace(1) poison1675  store volatile i32 %arg30, ptr addrspace(1) poison1676  store volatile i32 %arg31, ptr addrspace(1) poison1677 1678  ret void1679}1680 1681; frame[0] = ID { Z, Y, X }1682define amdgpu_kernel void @kern_call_too_many_args_use_workitem_id_xyz() #1 {1683; GFX7-LABEL: kern_call_too_many_args_use_workitem_id_xyz:1684; GFX7:       ; %bb.0:1685; GFX7-NEXT:    s_add_u32 s0, s0, s51686; GFX7-NEXT:    s_addc_u32 s1, s1, 01687; GFX7-NEXT:    s_getpc_b64 s[4:5]1688; GFX7-NEXT:    s_add_u32 s4, s4, too_many_args_use_workitem_id_xyz@gotpcrel32@lo+41689; GFX7-NEXT:    s_addc_u32 s5, s5, too_many_args_use_workitem_id_xyz@gotpcrel32@hi+121690; GFX7-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x01691; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 10, v11692; GFX7-NEXT:    s_mov_b32 s32, 01693; GFX7-NEXT:    v_mov_b32_e32 v3, 0x1401694; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 20, v21695; GFX7-NEXT:    v_or_b32_e32 v0, v0, v11696; GFX7-NEXT:    buffer_store_dword v3, off, s[0:3], s321697; GFX7-NEXT:    v_or_b32_e32 v31, v0, v21698; GFX7-NEXT:    v_mov_b32_e32 v0, 101699; GFX7-NEXT:    v_mov_b32_e32 v1, 201700; GFX7-NEXT:    v_mov_b32_e32 v2, 301701; GFX7-NEXT:    v_mov_b32_e32 v3, 401702; GFX7-NEXT:    v_mov_b32_e32 v4, 501703; GFX7-NEXT:    v_mov_b32_e32 v5, 601704; GFX7-NEXT:    v_mov_b32_e32 v6, 0x461705; GFX7-NEXT:    v_mov_b32_e32 v7, 0x501706; GFX7-NEXT:    v_mov_b32_e32 v8, 0x5a1707; GFX7-NEXT:    v_mov_b32_e32 v9, 0x641708; GFX7-NEXT:    v_mov_b32_e32 v10, 0x6e1709; GFX7-NEXT:    v_mov_b32_e32 v11, 0x781710; GFX7-NEXT:    v_mov_b32_e32 v12, 0x821711; GFX7-NEXT:    v_mov_b32_e32 v13, 0x8c1712; GFX7-NEXT:    v_mov_b32_e32 v14, 0x961713; GFX7-NEXT:    v_mov_b32_e32 v15, 0xa01714; GFX7-NEXT:    v_mov_b32_e32 v16, 0xaa1715; GFX7-NEXT:    v_mov_b32_e32 v17, 0xb41716; GFX7-NEXT:    v_mov_b32_e32 v18, 0xbe1717; GFX7-NEXT:    v_mov_b32_e32 v19, 0xc81718; GFX7-NEXT:    v_mov_b32_e32 v20, 0xd21719; GFX7-NEXT:    v_mov_b32_e32 v21, 0xdc1720; GFX7-NEXT:    v_mov_b32_e32 v22, 0xe61721; GFX7-NEXT:    v_mov_b32_e32 v23, 0xf01722; GFX7-NEXT:    v_mov_b32_e32 v24, 0xfa1723; GFX7-NEXT:    v_mov_b32_e32 v25, 0x1041724; GFX7-NEXT:    v_mov_b32_e32 v26, 0x10e1725; GFX7-NEXT:    v_mov_b32_e32 v27, 0x1181726; GFX7-NEXT:    v_mov_b32_e32 v28, 0x1221727; GFX7-NEXT:    v_mov_b32_e32 v29, 0x12c1728; GFX7-NEXT:    v_mov_b32_e32 v30, 0x1361729; GFX7-NEXT:    s_waitcnt lgkmcnt(0)1730; GFX7-NEXT:    s_swappc_b64 s[30:31], s[4:5]1731; GFX7-NEXT:    s_endpgm1732;1733; GFX90A-LABEL: kern_call_too_many_args_use_workitem_id_xyz:1734; GFX90A:       ; %bb.0:1735; GFX90A-NEXT:    s_add_u32 s0, s0, s51736; GFX90A-NEXT:    s_addc_u32 s1, s1, 01737; GFX90A-NEXT:    s_getpc_b64 s[4:5]1738; GFX90A-NEXT:    s_add_u32 s4, s4, too_many_args_use_workitem_id_xyz@gotpcrel32@lo+41739; GFX90A-NEXT:    s_addc_u32 s5, s5, too_many_args_use_workitem_id_xyz@gotpcrel32@hi+121740; GFX90A-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x01741; GFX90A-NEXT:    s_mov_b32 s32, 01742; GFX90A-NEXT:    v_mov_b32_e32 v1, 0x1401743; GFX90A-NEXT:    buffer_store_dword v1, off, s[0:3], s321744; GFX90A-NEXT:    v_mov_b32_e32 v31, v01745; GFX90A-NEXT:    v_mov_b32_e32 v0, 101746; GFX90A-NEXT:    v_mov_b32_e32 v1, 201747; GFX90A-NEXT:    v_mov_b32_e32 v2, 301748; GFX90A-NEXT:    v_mov_b32_e32 v3, 401749; GFX90A-NEXT:    v_mov_b32_e32 v4, 501750; GFX90A-NEXT:    v_mov_b32_e32 v5, 601751; GFX90A-NEXT:    v_mov_b32_e32 v6, 0x461752; GFX90A-NEXT:    v_mov_b32_e32 v7, 0x501753; GFX90A-NEXT:    v_mov_b32_e32 v8, 0x5a1754; GFX90A-NEXT:    v_mov_b32_e32 v9, 0x641755; GFX90A-NEXT:    v_mov_b32_e32 v10, 0x6e1756; GFX90A-NEXT:    v_mov_b32_e32 v11, 0x781757; GFX90A-NEXT:    v_mov_b32_e32 v12, 0x821758; GFX90A-NEXT:    v_mov_b32_e32 v13, 0x8c1759; GFX90A-NEXT:    v_mov_b32_e32 v14, 0x961760; GFX90A-NEXT:    v_mov_b32_e32 v15, 0xa01761; GFX90A-NEXT:    v_mov_b32_e32 v16, 0xaa1762; GFX90A-NEXT:    v_mov_b32_e32 v17, 0xb41763; GFX90A-NEXT:    v_mov_b32_e32 v18, 0xbe1764; GFX90A-NEXT:    v_mov_b32_e32 v19, 0xc81765; GFX90A-NEXT:    v_mov_b32_e32 v20, 0xd21766; GFX90A-NEXT:    v_mov_b32_e32 v21, 0xdc1767; GFX90A-NEXT:    v_mov_b32_e32 v22, 0xe61768; GFX90A-NEXT:    v_mov_b32_e32 v23, 0xf01769; GFX90A-NEXT:    v_mov_b32_e32 v24, 0xfa1770; GFX90A-NEXT:    v_mov_b32_e32 v25, 0x1041771; GFX90A-NEXT:    v_mov_b32_e32 v26, 0x10e1772; GFX90A-NEXT:    v_mov_b32_e32 v27, 0x1181773; GFX90A-NEXT:    v_mov_b32_e32 v28, 0x1221774; GFX90A-NEXT:    v_mov_b32_e32 v29, 0x12c1775; GFX90A-NEXT:    v_mov_b32_e32 v30, 0x1361776; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)1777; GFX90A-NEXT:    s_swappc_b64 s[30:31], s[4:5]1778; GFX90A-NEXT:    s_endpgm1779  call void @too_many_args_use_workitem_id_xyz(1780    i32 10, i32 20, i32 30, i32 40,1781    i32 50, i32 60, i32 70, i32 80,1782    i32 90, i32 100, i32 110, i32 120,1783    i32 130, i32 140, i32 150, i32 160,1784    i32 170, i32 180, i32 190, i32 200,1785    i32 210, i32 220, i32 230, i32 240,1786    i32 250, i32 260, i32 270, i32 280,1787    i32 290, i32 300, i32 310, i32 320)1788  ret void1789}1790; GCN: .amdhsa_system_vgpr_workitem_id 21791 1792; workitem ID X in register, yz on stack1793; v31 = workitem ID X1794; frame[0] = workitem { Z, Y, X }1795define void @too_many_args_use_workitem_id_x_stack_yz(1796; GFX7-LABEL: too_many_args_use_workitem_id_x_stack_yz:1797; GFX7:       ; %bb.0:1798; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1799; GFX7-NEXT:    v_and_b32_e32 v32, 0x3ff, v311800; GFX7-NEXT:    flat_store_dword v[0:1], v321801; GFX7-NEXT:    s_waitcnt vmcnt(0)1802; GFX7-NEXT:    v_bfe_u32 v32, v31, 10, 101803; GFX7-NEXT:    v_bfe_u32 v31, v31, 20, 101804; GFX7-NEXT:    flat_store_dword v[0:1], v321805; GFX7-NEXT:    s_waitcnt vmcnt(0)1806; GFX7-NEXT:    flat_store_dword v[0:1], v311807; GFX7-NEXT:    s_waitcnt vmcnt(0)1808; GFX7-NEXT:    flat_store_dword v[0:1], v01809; GFX7-NEXT:    s_waitcnt vmcnt(0)1810; GFX7-NEXT:    flat_store_dword v[0:1], v11811; GFX7-NEXT:    s_waitcnt vmcnt(0)1812; GFX7-NEXT:    flat_store_dword v[0:1], v21813; GFX7-NEXT:    s_waitcnt vmcnt(0)1814; GFX7-NEXT:    flat_store_dword v[0:1], v31815; GFX7-NEXT:    s_waitcnt vmcnt(0)1816; GFX7-NEXT:    flat_store_dword v[0:1], v41817; GFX7-NEXT:    s_waitcnt vmcnt(0)1818; GFX7-NEXT:    flat_store_dword v[0:1], v51819; GFX7-NEXT:    s_waitcnt vmcnt(0)1820; GFX7-NEXT:    flat_store_dword v[0:1], v61821; GFX7-NEXT:    s_waitcnt vmcnt(0)1822; GFX7-NEXT:    flat_store_dword v[0:1], v71823; GFX7-NEXT:    s_waitcnt vmcnt(0)1824; GFX7-NEXT:    flat_store_dword v[0:1], v81825; GFX7-NEXT:    s_waitcnt vmcnt(0)1826; GFX7-NEXT:    flat_store_dword v[0:1], v91827; GFX7-NEXT:    s_waitcnt vmcnt(0)1828; GFX7-NEXT:    flat_store_dword v[0:1], v101829; GFX7-NEXT:    s_waitcnt vmcnt(0)1830; GFX7-NEXT:    flat_store_dword v[0:1], v111831; GFX7-NEXT:    s_waitcnt vmcnt(0)1832; GFX7-NEXT:    flat_store_dword v[0:1], v121833; GFX7-NEXT:    s_waitcnt vmcnt(0)1834; GFX7-NEXT:    flat_store_dword v[0:1], v131835; GFX7-NEXT:    s_waitcnt vmcnt(0)1836; GFX7-NEXT:    flat_store_dword v[0:1], v141837; GFX7-NEXT:    s_waitcnt vmcnt(0)1838; GFX7-NEXT:    flat_store_dword v[0:1], v151839; GFX7-NEXT:    s_waitcnt vmcnt(0)1840; GFX7-NEXT:    flat_store_dword v[0:1], v161841; GFX7-NEXT:    s_waitcnt vmcnt(0)1842; GFX7-NEXT:    flat_store_dword v[0:1], v171843; GFX7-NEXT:    s_waitcnt vmcnt(0)1844; GFX7-NEXT:    flat_store_dword v[0:1], v181845; GFX7-NEXT:    s_waitcnt vmcnt(0)1846; GFX7-NEXT:    flat_store_dword v[0:1], v191847; GFX7-NEXT:    s_waitcnt vmcnt(0)1848; GFX7-NEXT:    flat_store_dword v[0:1], v201849; GFX7-NEXT:    s_waitcnt vmcnt(0)1850; GFX7-NEXT:    flat_store_dword v[0:1], v211851; GFX7-NEXT:    s_waitcnt vmcnt(0)1852; GFX7-NEXT:    flat_store_dword v[0:1], v221853; GFX7-NEXT:    s_waitcnt vmcnt(0)1854; GFX7-NEXT:    flat_store_dword v[0:1], v231855; GFX7-NEXT:    s_waitcnt vmcnt(0)1856; GFX7-NEXT:    flat_store_dword v[0:1], v241857; GFX7-NEXT:    s_waitcnt vmcnt(0)1858; GFX7-NEXT:    flat_store_dword v[0:1], v251859; GFX7-NEXT:    s_waitcnt vmcnt(0)1860; GFX7-NEXT:    flat_store_dword v[0:1], v261861; GFX7-NEXT:    s_waitcnt vmcnt(0)1862; GFX7-NEXT:    flat_store_dword v[0:1], v271863; GFX7-NEXT:    s_waitcnt vmcnt(0)1864; GFX7-NEXT:    flat_store_dword v[0:1], v281865; GFX7-NEXT:    s_waitcnt vmcnt(0)1866; GFX7-NEXT:    flat_store_dword v[0:1], v291867; GFX7-NEXT:    s_waitcnt vmcnt(0)1868; GFX7-NEXT:    flat_store_dword v[0:1], v301869; GFX7-NEXT:    s_waitcnt vmcnt(0)1870; GFX7-NEXT:    s_setpc_b64 s[30:31]1871;1872; GFX90A-LABEL: too_many_args_use_workitem_id_x_stack_yz:1873; GFX90A:       ; %bb.0:1874; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1875; GFX90A-NEXT:    v_and_b32_e32 v32, 0x3ff, v311876; GFX90A-NEXT:    global_store_dword v[0:1], v32, off1877; GFX90A-NEXT:    s_waitcnt vmcnt(0)1878; GFX90A-NEXT:    v_bfe_u32 v32, v31, 10, 101879; GFX90A-NEXT:    v_bfe_u32 v31, v31, 20, 101880; GFX90A-NEXT:    global_store_dword v[0:1], v32, off1881; GFX90A-NEXT:    s_waitcnt vmcnt(0)1882; GFX90A-NEXT:    global_store_dword v[0:1], v31, off1883; GFX90A-NEXT:    s_waitcnt vmcnt(0)1884; GFX90A-NEXT:    global_store_dword v[0:1], v0, off1885; GFX90A-NEXT:    s_waitcnt vmcnt(0)1886; GFX90A-NEXT:    global_store_dword v[0:1], v1, off1887; GFX90A-NEXT:    s_waitcnt vmcnt(0)1888; GFX90A-NEXT:    global_store_dword v[0:1], v2, off1889; GFX90A-NEXT:    s_waitcnt vmcnt(0)1890; GFX90A-NEXT:    global_store_dword v[0:1], v3, off1891; GFX90A-NEXT:    s_waitcnt vmcnt(0)1892; GFX90A-NEXT:    global_store_dword v[0:1], v4, off1893; GFX90A-NEXT:    s_waitcnt vmcnt(0)1894; GFX90A-NEXT:    global_store_dword v[0:1], v5, off1895; GFX90A-NEXT:    s_waitcnt vmcnt(0)1896; GFX90A-NEXT:    global_store_dword v[0:1], v6, off1897; GFX90A-NEXT:    s_waitcnt vmcnt(0)1898; GFX90A-NEXT:    global_store_dword v[0:1], v7, off1899; GFX90A-NEXT:    s_waitcnt vmcnt(0)1900; GFX90A-NEXT:    global_store_dword v[0:1], v8, off1901; GFX90A-NEXT:    s_waitcnt vmcnt(0)1902; GFX90A-NEXT:    global_store_dword v[0:1], v9, off1903; GFX90A-NEXT:    s_waitcnt vmcnt(0)1904; GFX90A-NEXT:    global_store_dword v[0:1], v10, off1905; GFX90A-NEXT:    s_waitcnt vmcnt(0)1906; GFX90A-NEXT:    global_store_dword v[0:1], v11, off1907; GFX90A-NEXT:    s_waitcnt vmcnt(0)1908; GFX90A-NEXT:    global_store_dword v[0:1], v12, off1909; GFX90A-NEXT:    s_waitcnt vmcnt(0)1910; GFX90A-NEXT:    global_store_dword v[0:1], v13, off1911; GFX90A-NEXT:    s_waitcnt vmcnt(0)1912; GFX90A-NEXT:    global_store_dword v[0:1], v14, off1913; GFX90A-NEXT:    s_waitcnt vmcnt(0)1914; GFX90A-NEXT:    global_store_dword v[0:1], v15, off1915; GFX90A-NEXT:    s_waitcnt vmcnt(0)1916; GFX90A-NEXT:    global_store_dword v[0:1], v16, off1917; GFX90A-NEXT:    s_waitcnt vmcnt(0)1918; GFX90A-NEXT:    global_store_dword v[0:1], v17, off1919; GFX90A-NEXT:    s_waitcnt vmcnt(0)1920; GFX90A-NEXT:    global_store_dword v[0:1], v18, off1921; GFX90A-NEXT:    s_waitcnt vmcnt(0)1922; GFX90A-NEXT:    global_store_dword v[0:1], v19, off1923; GFX90A-NEXT:    s_waitcnt vmcnt(0)1924; GFX90A-NEXT:    global_store_dword v[0:1], v20, off1925; GFX90A-NEXT:    s_waitcnt vmcnt(0)1926; GFX90A-NEXT:    global_store_dword v[0:1], v21, off1927; GFX90A-NEXT:    s_waitcnt vmcnt(0)1928; GFX90A-NEXT:    global_store_dword v[0:1], v22, off1929; GFX90A-NEXT:    s_waitcnt vmcnt(0)1930; GFX90A-NEXT:    global_store_dword v[0:1], v23, off1931; GFX90A-NEXT:    s_waitcnt vmcnt(0)1932; GFX90A-NEXT:    global_store_dword v[0:1], v24, off1933; GFX90A-NEXT:    s_waitcnt vmcnt(0)1934; GFX90A-NEXT:    global_store_dword v[0:1], v25, off1935; GFX90A-NEXT:    s_waitcnt vmcnt(0)1936; GFX90A-NEXT:    global_store_dword v[0:1], v26, off1937; GFX90A-NEXT:    s_waitcnt vmcnt(0)1938; GFX90A-NEXT:    global_store_dword v[0:1], v27, off1939; GFX90A-NEXT:    s_waitcnt vmcnt(0)1940; GFX90A-NEXT:    global_store_dword v[0:1], v28, off1941; GFX90A-NEXT:    s_waitcnt vmcnt(0)1942; GFX90A-NEXT:    global_store_dword v[0:1], v29, off1943; GFX90A-NEXT:    s_waitcnt vmcnt(0)1944; GFX90A-NEXT:    global_store_dword v[0:1], v30, off1945; GFX90A-NEXT:    s_waitcnt vmcnt(0)1946; GFX90A-NEXT:    s_setpc_b64 s[30:31]1947  i32 %arg0, i32 %arg1, i32 %arg2, i32 %arg3, i32 %arg4, i32 %arg5, i32 %arg6, i32 %arg7,1948  i32 %arg8, i32 %arg9, i32 %arg10, i32 %arg11, i32 %arg12, i32 %arg13, i32 %arg14, i32 %arg15,1949  i32 %arg16, i32 %arg17, i32 %arg18, i32 %arg19, i32 %arg20, i32 %arg21, i32 %arg22, i32 %arg23,1950  i32 %arg24, i32 %arg25, i32 %arg26, i32 %arg27, i32 %arg28, i32 %arg29, i32 %arg30) #1 {1951  %val0 = call i32 @llvm.amdgcn.workitem.id.x()1952  store volatile i32 %val0, ptr addrspace(1) poison1953  %val1 = call i32 @llvm.amdgcn.workitem.id.y()1954  store volatile i32 %val1, ptr addrspace(1) poison1955  %val2 = call i32 @llvm.amdgcn.workitem.id.z()1956  store volatile i32 %val2, ptr addrspace(1) poison1957 1958  store volatile i32 %arg0, ptr addrspace(1) poison1959  store volatile i32 %arg1, ptr addrspace(1) poison1960  store volatile i32 %arg2, ptr addrspace(1) poison1961  store volatile i32 %arg3, ptr addrspace(1) poison1962  store volatile i32 %arg4, ptr addrspace(1) poison1963  store volatile i32 %arg5, ptr addrspace(1) poison1964  store volatile i32 %arg6, ptr addrspace(1) poison1965  store volatile i32 %arg7, ptr addrspace(1) poison1966 1967  store volatile i32 %arg8, ptr addrspace(1) poison1968  store volatile i32 %arg9, ptr addrspace(1) poison1969  store volatile i32 %arg10, ptr addrspace(1) poison1970  store volatile i32 %arg11, ptr addrspace(1) poison1971  store volatile i32 %arg12, ptr addrspace(1) poison1972  store volatile i32 %arg13, ptr addrspace(1) poison1973  store volatile i32 %arg14, ptr addrspace(1) poison1974  store volatile i32 %arg15, ptr addrspace(1) poison1975 1976  store volatile i32 %arg16, ptr addrspace(1) poison1977  store volatile i32 %arg17, ptr addrspace(1) poison1978  store volatile i32 %arg18, ptr addrspace(1) poison1979  store volatile i32 %arg19, ptr addrspace(1) poison1980  store volatile i32 %arg20, ptr addrspace(1) poison1981  store volatile i32 %arg21, ptr addrspace(1) poison1982  store volatile i32 %arg22, ptr addrspace(1) poison1983  store volatile i32 %arg23, ptr addrspace(1) poison1984 1985  store volatile i32 %arg24, ptr addrspace(1) poison1986  store volatile i32 %arg25, ptr addrspace(1) poison1987  store volatile i32 %arg26, ptr addrspace(1) poison1988  store volatile i32 %arg27, ptr addrspace(1) poison1989  store volatile i32 %arg28, ptr addrspace(1) poison1990  store volatile i32 %arg29, ptr addrspace(1) poison1991  store volatile i32 %arg30, ptr addrspace(1) poison1992 1993  ret void1994}1995; GCN: ScratchSize: 01996 1997define amdgpu_kernel void @kern_call_too_many_args_use_workitem_id_x_stack_yz() #1 {1998; GFX7-LABEL: kern_call_too_many_args_use_workitem_id_x_stack_yz:1999; GFX7:       ; %bb.0:2000; GFX7-NEXT:    s_add_u32 s0, s0, s52001; GFX7-NEXT:    s_addc_u32 s1, s1, 02002; GFX7-NEXT:    s_getpc_b64 s[4:5]2003; GFX7-NEXT:    s_add_u32 s4, s4, too_many_args_use_workitem_id_x_stack_yz@gotpcrel32@lo+42004; GFX7-NEXT:    s_addc_u32 s5, s5, too_many_args_use_workitem_id_x_stack_yz@gotpcrel32@hi+122005; GFX7-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x02006; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 10, v12007; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 20, v22008; GFX7-NEXT:    v_or_b32_e32 v0, v0, v12009; GFX7-NEXT:    v_or_b32_e32 v31, v0, v22010; GFX7-NEXT:    v_mov_b32_e32 v0, 102011; GFX7-NEXT:    v_mov_b32_e32 v1, 202012; GFX7-NEXT:    v_mov_b32_e32 v2, 302013; GFX7-NEXT:    v_mov_b32_e32 v3, 402014; GFX7-NEXT:    v_mov_b32_e32 v4, 502015; GFX7-NEXT:    v_mov_b32_e32 v5, 602016; GFX7-NEXT:    v_mov_b32_e32 v6, 0x462017; GFX7-NEXT:    v_mov_b32_e32 v7, 0x502018; GFX7-NEXT:    v_mov_b32_e32 v8, 0x5a2019; GFX7-NEXT:    v_mov_b32_e32 v9, 0x642020; GFX7-NEXT:    v_mov_b32_e32 v10, 0x6e2021; GFX7-NEXT:    v_mov_b32_e32 v11, 0x782022; GFX7-NEXT:    v_mov_b32_e32 v12, 0x822023; GFX7-NEXT:    v_mov_b32_e32 v13, 0x8c2024; GFX7-NEXT:    v_mov_b32_e32 v14, 0x962025; GFX7-NEXT:    v_mov_b32_e32 v15, 0xa02026; GFX7-NEXT:    v_mov_b32_e32 v16, 0xaa2027; GFX7-NEXT:    v_mov_b32_e32 v17, 0xb42028; GFX7-NEXT:    v_mov_b32_e32 v18, 0xbe2029; GFX7-NEXT:    v_mov_b32_e32 v19, 0xc82030; GFX7-NEXT:    v_mov_b32_e32 v20, 0xd22031; GFX7-NEXT:    v_mov_b32_e32 v21, 0xdc2032; GFX7-NEXT:    v_mov_b32_e32 v22, 0xe62033; GFX7-NEXT:    v_mov_b32_e32 v23, 0xf02034; GFX7-NEXT:    v_mov_b32_e32 v24, 0xfa2035; GFX7-NEXT:    v_mov_b32_e32 v25, 0x1042036; GFX7-NEXT:    v_mov_b32_e32 v26, 0x10e2037; GFX7-NEXT:    v_mov_b32_e32 v27, 0x1182038; GFX7-NEXT:    v_mov_b32_e32 v28, 0x1222039; GFX7-NEXT:    v_mov_b32_e32 v29, 0x12c2040; GFX7-NEXT:    v_mov_b32_e32 v30, 0x1362041; GFX7-NEXT:    s_mov_b32 s32, 02042; GFX7-NEXT:    s_waitcnt lgkmcnt(0)2043; GFX7-NEXT:    s_swappc_b64 s[30:31], s[4:5]2044; GFX7-NEXT:    s_endpgm2045;2046; GFX90A-LABEL: kern_call_too_many_args_use_workitem_id_x_stack_yz:2047; GFX90A:       ; %bb.0:2048; GFX90A-NEXT:    s_add_u32 s0, s0, s52049; GFX90A-NEXT:    s_addc_u32 s1, s1, 02050; GFX90A-NEXT:    s_getpc_b64 s[4:5]2051; GFX90A-NEXT:    s_add_u32 s4, s4, too_many_args_use_workitem_id_x_stack_yz@gotpcrel32@lo+42052; GFX90A-NEXT:    s_addc_u32 s5, s5, too_many_args_use_workitem_id_x_stack_yz@gotpcrel32@hi+122053; GFX90A-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x02054; GFX90A-NEXT:    v_mov_b32_e32 v31, v02055; GFX90A-NEXT:    v_mov_b32_e32 v0, 102056; GFX90A-NEXT:    v_mov_b32_e32 v1, 202057; GFX90A-NEXT:    v_mov_b32_e32 v2, 302058; GFX90A-NEXT:    v_mov_b32_e32 v3, 402059; GFX90A-NEXT:    v_mov_b32_e32 v4, 502060; GFX90A-NEXT:    v_mov_b32_e32 v5, 602061; GFX90A-NEXT:    v_mov_b32_e32 v6, 0x462062; GFX90A-NEXT:    v_mov_b32_e32 v7, 0x502063; GFX90A-NEXT:    v_mov_b32_e32 v8, 0x5a2064; GFX90A-NEXT:    v_mov_b32_e32 v9, 0x642065; GFX90A-NEXT:    v_mov_b32_e32 v10, 0x6e2066; GFX90A-NEXT:    v_mov_b32_e32 v11, 0x782067; GFX90A-NEXT:    v_mov_b32_e32 v12, 0x822068; GFX90A-NEXT:    v_mov_b32_e32 v13, 0x8c2069; GFX90A-NEXT:    v_mov_b32_e32 v14, 0x962070; GFX90A-NEXT:    v_mov_b32_e32 v15, 0xa02071; GFX90A-NEXT:    v_mov_b32_e32 v16, 0xaa2072; GFX90A-NEXT:    v_mov_b32_e32 v17, 0xb42073; GFX90A-NEXT:    v_mov_b32_e32 v18, 0xbe2074; GFX90A-NEXT:    v_mov_b32_e32 v19, 0xc82075; GFX90A-NEXT:    v_mov_b32_e32 v20, 0xd22076; GFX90A-NEXT:    v_mov_b32_e32 v21, 0xdc2077; GFX90A-NEXT:    v_mov_b32_e32 v22, 0xe62078; GFX90A-NEXT:    v_mov_b32_e32 v23, 0xf02079; GFX90A-NEXT:    v_mov_b32_e32 v24, 0xfa2080; GFX90A-NEXT:    v_mov_b32_e32 v25, 0x1042081; GFX90A-NEXT:    v_mov_b32_e32 v26, 0x10e2082; GFX90A-NEXT:    v_mov_b32_e32 v27, 0x1182083; GFX90A-NEXT:    v_mov_b32_e32 v28, 0x1222084; GFX90A-NEXT:    v_mov_b32_e32 v29, 0x12c2085; GFX90A-NEXT:    v_mov_b32_e32 v30, 0x1362086; GFX90A-NEXT:    s_mov_b32 s32, 02087; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)2088; GFX90A-NEXT:    s_swappc_b64 s[30:31], s[4:5]2089; GFX90A-NEXT:    s_endpgm2090  call void @too_many_args_use_workitem_id_x_stack_yz(2091    i32 10, i32 20, i32 30, i32 40,2092    i32 50, i32 60, i32 70, i32 80,2093    i32 90, i32 100, i32 110, i32 120,2094    i32 130, i32 140, i32 150, i32 160,2095    i32 170, i32 180, i32 190, i32 200,2096    i32 210, i32 220, i32 230, i32 240,2097    i32 250, i32 260, i32 270, i32 280,2098    i32 290, i32 300, i32 310)2099  ret void2100}2101; GCN: .amdhsa_system_vgpr_workitem_id 22102 2103declare i32 @llvm.amdgcn.workitem.id.x() #02104declare i32 @llvm.amdgcn.workitem.id.y() #02105declare i32 @llvm.amdgcn.workitem.id.z() #02106 2107attributes #0 = { nounwind readnone speculatable "amdgpu-flat-work-group-size"="1,512" }2108attributes #1 = { nounwind noinline "amdgpu-flat-work-group-size"="1,512" }2109