1825 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1010 -mattr=+cumode < %s | FileCheck -check-prefix=GFX10_1 %s3; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1030 -mattr=+cumode < %s | FileCheck -check-prefix=GFX10_3 %s4; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -mattr=+cumode < %s | FileCheck -check-prefix=GFX11 %s5; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1200 -mattr=+cumode < %s | FileCheck -check-prefix=GFX12 %s6; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx803 < %s | FileCheck -check-prefix=GFX8 %s7; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -check-prefixes=GFX9,GFX900 %s8; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx942 < %s | FileCheck -check-prefixes=GFX9,GFX942 %s9 10; We aren't pressuring the SGPRs, so this can use the add with carry out pre-gfx9.11define void @scalar_mov_materializes_frame_index_unavailable_scc() #0 {12; GFX10_1-LABEL: scalar_mov_materializes_frame_index_unavailable_scc:13; GFX10_1: ; %bb.0:14; GFX10_1-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15; GFX10_1-NEXT: s_xor_saveexec_b32 s4, -116; GFX10_1-NEXT: s_add_i32 s5, s32, 0x8088017; GFX10_1-NEXT: buffer_store_dword v1, off, s[0:3], s5 ; 4-byte Folded Spill18; GFX10_1-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)19; GFX10_1-NEXT: s_mov_b32 exec_lo, s420; GFX10_1-NEXT: v_lshrrev_b32_e64 v0, 5, s3221; GFX10_1-NEXT: v_writelane_b32 v1, s55, 022; GFX10_1-NEXT: s_and_b32 s4, 0, exec_lo23; GFX10_1-NEXT: v_add_nc_u32_e32 v0, 64, v024; GFX10_1-NEXT: ;;#ASMSTART25; GFX10_1-NEXT: ; use alloca0 v026; GFX10_1-NEXT: ;;#ASMEND27; GFX10_1-NEXT: v_lshrrev_b32_e64 v0, 5, s3228; GFX10_1-NEXT: v_add_nc_u32_e32 v0, 0x4040, v029; GFX10_1-NEXT: v_readfirstlane_b32 s55, v030; GFX10_1-NEXT: ;;#ASMSTART31; GFX10_1-NEXT: ; use s55, scc32; GFX10_1-NEXT: ;;#ASMEND33; GFX10_1-NEXT: v_readlane_b32 s55, v1, 034; GFX10_1-NEXT: s_xor_saveexec_b32 s4, -135; GFX10_1-NEXT: s_add_i32 s5, s32, 0x8088036; GFX10_1-NEXT: buffer_load_dword v1, off, s[0:3], s5 ; 4-byte Folded Reload37; GFX10_1-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)38; GFX10_1-NEXT: s_mov_b32 exec_lo, s439; GFX10_1-NEXT: s_waitcnt vmcnt(0)40; GFX10_1-NEXT: s_setpc_b64 s[30:31]41;42; GFX10_3-LABEL: scalar_mov_materializes_frame_index_unavailable_scc:43; GFX10_3: ; %bb.0:44; GFX10_3-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)45; GFX10_3-NEXT: s_xor_saveexec_b32 s4, -146; GFX10_3-NEXT: s_add_i32 s5, s32, 0x8088047; GFX10_3-NEXT: buffer_store_dword v1, off, s[0:3], s5 ; 4-byte Folded Spill48; GFX10_3-NEXT: s_mov_b32 exec_lo, s449; GFX10_3-NEXT: v_lshrrev_b32_e64 v0, 5, s3250; GFX10_3-NEXT: v_writelane_b32 v1, s55, 051; GFX10_3-NEXT: s_and_b32 s4, 0, exec_lo52; GFX10_3-NEXT: v_add_nc_u32_e32 v0, 64, v053; GFX10_3-NEXT: ;;#ASMSTART54; GFX10_3-NEXT: ; use alloca0 v055; GFX10_3-NEXT: ;;#ASMEND56; GFX10_3-NEXT: v_lshrrev_b32_e64 v0, 5, s3257; GFX10_3-NEXT: v_add_nc_u32_e32 v0, 0x4040, v058; GFX10_3-NEXT: v_readfirstlane_b32 s55, v059; GFX10_3-NEXT: ;;#ASMSTART60; GFX10_3-NEXT: ; use s55, scc61; GFX10_3-NEXT: ;;#ASMEND62; GFX10_3-NEXT: v_readlane_b32 s55, v1, 063; GFX10_3-NEXT: s_xor_saveexec_b32 s4, -164; GFX10_3-NEXT: s_add_i32 s5, s32, 0x8088065; GFX10_3-NEXT: buffer_load_dword v1, off, s[0:3], s5 ; 4-byte Folded Reload66; GFX10_3-NEXT: s_mov_b32 exec_lo, s467; GFX10_3-NEXT: s_waitcnt vmcnt(0)68; GFX10_3-NEXT: s_setpc_b64 s[30:31]69;70; GFX11-LABEL: scalar_mov_materializes_frame_index_unavailable_scc:71; GFX11: ; %bb.0:72; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)73; GFX11-NEXT: s_xor_saveexec_b32 s0, -174; GFX11-NEXT: s_add_i32 s1, s32, 0x404475; GFX11-NEXT: scratch_store_b32 off, v1, s1 ; 4-byte Folded Spill76; GFX11-NEXT: s_mov_b32 exec_lo, s077; GFX11-NEXT: s_add_i32 s0, s32, 6478; GFX11-NEXT: v_writelane_b32 v1, s55, 079; GFX11-NEXT: v_mov_b32_e32 v0, s080; GFX11-NEXT: s_and_b32 s0, 0, exec_lo81; GFX11-NEXT: s_addc_u32 s0, s32, 0x404082; GFX11-NEXT: ;;#ASMSTART83; GFX11-NEXT: ; use alloca0 v084; GFX11-NEXT: ;;#ASMEND85; GFX11-NEXT: s_bitcmp1_b32 s0, 086; GFX11-NEXT: s_bitset0_b32 s0, 087; GFX11-NEXT: s_delay_alu instid0(SALU_CYCLE_1)88; GFX11-NEXT: s_mov_b32 s55, s089; GFX11-NEXT: ;;#ASMSTART90; GFX11-NEXT: ; use s55, scc91; GFX11-NEXT: ;;#ASMEND92; GFX11-NEXT: v_readlane_b32 s55, v1, 093; GFX11-NEXT: s_xor_saveexec_b32 s0, -194; GFX11-NEXT: s_add_i32 s1, s32, 0x404495; GFX11-NEXT: scratch_load_b32 v1, off, s1 ; 4-byte Folded Reload96; GFX11-NEXT: s_mov_b32 exec_lo, s097; GFX11-NEXT: s_waitcnt vmcnt(0)98; GFX11-NEXT: s_setpc_b64 s[30:31]99;100; GFX12-LABEL: scalar_mov_materializes_frame_index_unavailable_scc:101; GFX12: ; %bb.0:102; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0103; GFX12-NEXT: s_wait_expcnt 0x0104; GFX12-NEXT: s_wait_samplecnt 0x0105; GFX12-NEXT: s_wait_bvhcnt 0x0106; GFX12-NEXT: s_wait_kmcnt 0x0107; GFX12-NEXT: s_xor_saveexec_b32 s0, -1108; GFX12-NEXT: scratch_store_b32 off, v1, s32 offset:16388 ; 4-byte Folded Spill109; GFX12-NEXT: s_wait_alu depctr_sa_sdst(0)110; GFX12-NEXT: s_mov_b32 exec_lo, s0111; GFX12-NEXT: s_delay_alu instid0(SALU_CYCLE_1)112; GFX12-NEXT: s_and_b32 s0, 0, exec_lo113; GFX12-NEXT: v_writelane_b32 v1, s55, 0114; GFX12-NEXT: s_add_co_ci_u32 s0, s32, 0x4000115; GFX12-NEXT: v_mov_b32_e32 v0, s32116; GFX12-NEXT: s_wait_alu depctr_sa_sdst(0)117; GFX12-NEXT: s_bitcmp1_b32 s0, 0118; GFX12-NEXT: s_bitset0_b32 s0, 0119; GFX12-NEXT: ;;#ASMSTART120; GFX12-NEXT: ; use alloca0 v0121; GFX12-NEXT: ;;#ASMEND122; GFX12-NEXT: s_wait_alu depctr_sa_sdst(0)123; GFX12-NEXT: s_mov_b32 s55, s0124; GFX12-NEXT: ;;#ASMSTART125; GFX12-NEXT: ; use s55, scc126; GFX12-NEXT: ;;#ASMEND127; GFX12-NEXT: v_readlane_b32 s55, v1, 0128; GFX12-NEXT: s_xor_saveexec_b32 s0, -1129; GFX12-NEXT: scratch_load_b32 v1, off, s32 offset:16388 ; 4-byte Folded Reload130; GFX12-NEXT: s_wait_alu depctr_sa_sdst(0)131; GFX12-NEXT: s_mov_b32 exec_lo, s0132; GFX12-NEXT: s_wait_loadcnt 0x0133; GFX12-NEXT: s_setpc_b64 s[30:31]134;135; GFX8-LABEL: scalar_mov_materializes_frame_index_unavailable_scc:136; GFX8: ; %bb.0:137; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)138; GFX8-NEXT: s_xor_saveexec_b64 s[4:5], -1139; GFX8-NEXT: s_add_i32 s6, s32, 0x101100140; GFX8-NEXT: buffer_store_dword v1, off, s[0:3], s6 ; 4-byte Folded Spill141; GFX8-NEXT: s_mov_b64 exec, s[4:5]142; GFX8-NEXT: v_lshrrev_b32_e64 v0, 6, s32143; GFX8-NEXT: v_add_u32_e32 v0, vcc, 64, v0144; GFX8-NEXT: v_writelane_b32 v1, s55, 0145; GFX8-NEXT: ;;#ASMSTART146; GFX8-NEXT: ; use alloca0 v0147; GFX8-NEXT: ;;#ASMEND148; GFX8-NEXT: v_lshrrev_b32_e64 v0, 6, s32149; GFX8-NEXT: s_movk_i32 s55, 0x4040150; GFX8-NEXT: v_add_u32_e32 v0, vcc, s55, v0151; GFX8-NEXT: v_readfirstlane_b32 s55, v0152; GFX8-NEXT: s_and_b64 s[4:5], 0, exec153; GFX8-NEXT: ;;#ASMSTART154; GFX8-NEXT: ; use s55, scc155; GFX8-NEXT: ;;#ASMEND156; GFX8-NEXT: v_readlane_b32 s55, v1, 0157; GFX8-NEXT: s_xor_saveexec_b64 s[4:5], -1158; GFX8-NEXT: s_add_i32 s6, s32, 0x101100159; GFX8-NEXT: buffer_load_dword v1, off, s[0:3], s6 ; 4-byte Folded Reload160; GFX8-NEXT: s_mov_b64 exec, s[4:5]161; GFX8-NEXT: s_waitcnt vmcnt(0)162; GFX8-NEXT: s_setpc_b64 s[30:31]163;164; GFX900-LABEL: scalar_mov_materializes_frame_index_unavailable_scc:165; GFX900: ; %bb.0:166; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)167; GFX900-NEXT: s_xor_saveexec_b64 s[4:5], -1168; GFX900-NEXT: s_add_i32 s6, s32, 0x101100169; GFX900-NEXT: buffer_store_dword v1, off, s[0:3], s6 ; 4-byte Folded Spill170; GFX900-NEXT: s_mov_b64 exec, s[4:5]171; GFX900-NEXT: v_lshrrev_b32_e64 v0, 6, s32172; GFX900-NEXT: v_add_u32_e32 v0, 64, v0173; GFX900-NEXT: ;;#ASMSTART174; GFX900-NEXT: ; use alloca0 v0175; GFX900-NEXT: ;;#ASMEND176; GFX900-NEXT: v_lshrrev_b32_e64 v0, 6, s32177; GFX900-NEXT: v_add_u32_e32 v0, 0x4040, v0178; GFX900-NEXT: v_writelane_b32 v1, s55, 0179; GFX900-NEXT: v_readfirstlane_b32 s55, v0180; GFX900-NEXT: s_and_b64 s[4:5], 0, exec181; GFX900-NEXT: ;;#ASMSTART182; GFX900-NEXT: ; use s55, scc183; GFX900-NEXT: ;;#ASMEND184; GFX900-NEXT: v_readlane_b32 s55, v1, 0185; GFX900-NEXT: s_xor_saveexec_b64 s[4:5], -1186; GFX900-NEXT: s_add_i32 s6, s32, 0x101100187; GFX900-NEXT: buffer_load_dword v1, off, s[0:3], s6 ; 4-byte Folded Reload188; GFX900-NEXT: s_mov_b64 exec, s[4:5]189; GFX900-NEXT: s_waitcnt vmcnt(0)190; GFX900-NEXT: s_setpc_b64 s[30:31]191;192; GFX942-LABEL: scalar_mov_materializes_frame_index_unavailable_scc:193; GFX942: ; %bb.0:194; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)195; GFX942-NEXT: s_xor_saveexec_b64 s[0:1], -1196; GFX942-NEXT: s_add_i32 s2, s32, 0x4044197; GFX942-NEXT: scratch_store_dword off, v1, s2 ; 4-byte Folded Spill198; GFX942-NEXT: s_mov_b64 exec, s[0:1]199; GFX942-NEXT: s_add_i32 s0, s32, 64200; GFX942-NEXT: v_mov_b32_e32 v0, s0201; GFX942-NEXT: s_and_b64 s[0:1], 0, exec202; GFX942-NEXT: s_addc_u32 s0, s32, 0x4040203; GFX942-NEXT: s_bitcmp1_b32 s0, 0204; GFX942-NEXT: s_bitset0_b32 s0, 0205; GFX942-NEXT: v_writelane_b32 v1, s55, 0206; GFX942-NEXT: s_mov_b32 s55, s0207; GFX942-NEXT: ;;#ASMSTART208; GFX942-NEXT: ; use alloca0 v0209; GFX942-NEXT: ;;#ASMEND210; GFX942-NEXT: ;;#ASMSTART211; GFX942-NEXT: ; use s55, scc212; GFX942-NEXT: ;;#ASMEND213; GFX942-NEXT: v_readlane_b32 s55, v1, 0214; GFX942-NEXT: s_xor_saveexec_b64 s[0:1], -1215; GFX942-NEXT: s_add_i32 s2, s32, 0x4044216; GFX942-NEXT: scratch_load_dword v1, off, s2 ; 4-byte Folded Reload217; GFX942-NEXT: s_mov_b64 exec, s[0:1]218; GFX942-NEXT: s_waitcnt vmcnt(0)219; GFX942-NEXT: s_setpc_b64 s[30:31]220 %alloca0 = alloca [4096 x i32], align 64, addrspace(5)221 %alloca1 = alloca i32, align 4, addrspace(5)222 call void asm sideeffect "; use alloca0 $0", "v"(ptr addrspace(5) %alloca0)223 call void asm sideeffect "; use $0, $1", "{s55},{scc}"(ptr addrspace(5) %alloca1, i32 0)224 ret void225}226 227; %alloca1 should end up materializing with s_mov_b32, and scc is228; available.229define void @scalar_mov_materializes_frame_index_dead_scc() #0 {230; GFX10_1-LABEL: scalar_mov_materializes_frame_index_dead_scc:231; GFX10_1: ; %bb.0:232; GFX10_1-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)233; GFX10_1-NEXT: s_xor_saveexec_b32 s4, -1234; GFX10_1-NEXT: s_add_i32 s5, s32, 0x80880235; GFX10_1-NEXT: buffer_store_dword v1, off, s[0:3], s5 ; 4-byte Folded Spill236; GFX10_1-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)237; GFX10_1-NEXT: s_mov_b32 exec_lo, s4238; GFX10_1-NEXT: v_writelane_b32 v1, s55, 0239; GFX10_1-NEXT: v_lshrrev_b32_e64 v0, 5, s32240; GFX10_1-NEXT: s_lshr_b32 s55, s32, 5241; GFX10_1-NEXT: s_addk_i32 s55, 0x4040242; GFX10_1-NEXT: v_add_nc_u32_e32 v0, 64, v0243; GFX10_1-NEXT: ;;#ASMSTART244; GFX10_1-NEXT: ; use alloca0 v0245; GFX10_1-NEXT: ;;#ASMEND246; GFX10_1-NEXT: ;;#ASMSTART247; GFX10_1-NEXT: ; use s55248; GFX10_1-NEXT: ;;#ASMEND249; GFX10_1-NEXT: v_readlane_b32 s55, v1, 0250; GFX10_1-NEXT: s_xor_saveexec_b32 s4, -1251; GFX10_1-NEXT: s_add_i32 s5, s32, 0x80880252; GFX10_1-NEXT: buffer_load_dword v1, off, s[0:3], s5 ; 4-byte Folded Reload253; GFX10_1-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)254; GFX10_1-NEXT: s_mov_b32 exec_lo, s4255; GFX10_1-NEXT: s_waitcnt vmcnt(0)256; GFX10_1-NEXT: s_setpc_b64 s[30:31]257;258; GFX10_3-LABEL: scalar_mov_materializes_frame_index_dead_scc:259; GFX10_3: ; %bb.0:260; GFX10_3-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)261; GFX10_3-NEXT: s_xor_saveexec_b32 s4, -1262; GFX10_3-NEXT: s_add_i32 s5, s32, 0x80880263; GFX10_3-NEXT: buffer_store_dword v1, off, s[0:3], s5 ; 4-byte Folded Spill264; GFX10_3-NEXT: s_mov_b32 exec_lo, s4265; GFX10_3-NEXT: v_writelane_b32 v1, s55, 0266; GFX10_3-NEXT: v_lshrrev_b32_e64 v0, 5, s32267; GFX10_3-NEXT: s_lshr_b32 s55, s32, 5268; GFX10_3-NEXT: s_addk_i32 s55, 0x4040269; GFX10_3-NEXT: v_add_nc_u32_e32 v0, 64, v0270; GFX10_3-NEXT: ;;#ASMSTART271; GFX10_3-NEXT: ; use alloca0 v0272; GFX10_3-NEXT: ;;#ASMEND273; GFX10_3-NEXT: ;;#ASMSTART274; GFX10_3-NEXT: ; use s55275; GFX10_3-NEXT: ;;#ASMEND276; GFX10_3-NEXT: v_readlane_b32 s55, v1, 0277; GFX10_3-NEXT: s_xor_saveexec_b32 s4, -1278; GFX10_3-NEXT: s_add_i32 s5, s32, 0x80880279; GFX10_3-NEXT: buffer_load_dword v1, off, s[0:3], s5 ; 4-byte Folded Reload280; GFX10_3-NEXT: s_mov_b32 exec_lo, s4281; GFX10_3-NEXT: s_waitcnt vmcnt(0)282; GFX10_3-NEXT: s_setpc_b64 s[30:31]283;284; GFX11-LABEL: scalar_mov_materializes_frame_index_dead_scc:285; GFX11: ; %bb.0:286; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)287; GFX11-NEXT: s_xor_saveexec_b32 s0, -1288; GFX11-NEXT: s_add_i32 s1, s32, 0x4044289; GFX11-NEXT: scratch_store_b32 off, v1, s1 ; 4-byte Folded Spill290; GFX11-NEXT: s_mov_b32 exec_lo, s0291; GFX11-NEXT: v_writelane_b32 v1, s55, 0292; GFX11-NEXT: s_add_i32 s0, s32, 64293; GFX11-NEXT: s_delay_alu instid0(SALU_CYCLE_1)294; GFX11-NEXT: v_mov_b32_e32 v0, s0295; GFX11-NEXT: s_add_i32 s0, s32, 0x4040296; GFX11-NEXT: ;;#ASMSTART297; GFX11-NEXT: ; use alloca0 v0298; GFX11-NEXT: ;;#ASMEND299; GFX11-NEXT: s_mov_b32 s55, s0300; GFX11-NEXT: ;;#ASMSTART301; GFX11-NEXT: ; use s55302; GFX11-NEXT: ;;#ASMEND303; GFX11-NEXT: v_readlane_b32 s55, v1, 0304; GFX11-NEXT: s_xor_saveexec_b32 s0, -1305; GFX11-NEXT: s_add_i32 s1, s32, 0x4044306; GFX11-NEXT: scratch_load_b32 v1, off, s1 ; 4-byte Folded Reload307; GFX11-NEXT: s_mov_b32 exec_lo, s0308; GFX11-NEXT: s_waitcnt vmcnt(0)309; GFX11-NEXT: s_setpc_b64 s[30:31]310;311; GFX12-LABEL: scalar_mov_materializes_frame_index_dead_scc:312; GFX12: ; %bb.0:313; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0314; GFX12-NEXT: s_wait_expcnt 0x0315; GFX12-NEXT: s_wait_samplecnt 0x0316; GFX12-NEXT: s_wait_bvhcnt 0x0317; GFX12-NEXT: s_wait_kmcnt 0x0318; GFX12-NEXT: s_xor_saveexec_b32 s0, -1319; GFX12-NEXT: scratch_store_b32 off, v1, s32 offset:16388 ; 4-byte Folded Spill320; GFX12-NEXT: s_wait_alu depctr_sa_sdst(0)321; GFX12-NEXT: s_mov_b32 exec_lo, s0322; GFX12-NEXT: v_writelane_b32 v1, s55, 0323; GFX12-NEXT: s_add_co_i32 s0, s32, 0x4000324; GFX12-NEXT: v_mov_b32_e32 v0, s32325; GFX12-NEXT: s_wait_alu depctr_sa_sdst(0)326; GFX12-NEXT: s_mov_b32 s55, s0327; GFX12-NEXT: ;;#ASMSTART328; GFX12-NEXT: ; use alloca0 v0329; GFX12-NEXT: ;;#ASMEND330; GFX12-NEXT: ;;#ASMSTART331; GFX12-NEXT: ; use s55332; GFX12-NEXT: ;;#ASMEND333; GFX12-NEXT: v_readlane_b32 s55, v1, 0334; GFX12-NEXT: s_xor_saveexec_b32 s0, -1335; GFX12-NEXT: scratch_load_b32 v1, off, s32 offset:16388 ; 4-byte Folded Reload336; GFX12-NEXT: s_wait_alu depctr_sa_sdst(0)337; GFX12-NEXT: s_mov_b32 exec_lo, s0338; GFX12-NEXT: s_wait_loadcnt 0x0339; GFX12-NEXT: s_setpc_b64 s[30:31]340;341; GFX8-LABEL: scalar_mov_materializes_frame_index_dead_scc:342; GFX8: ; %bb.0:343; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)344; GFX8-NEXT: s_xor_saveexec_b64 s[4:5], -1345; GFX8-NEXT: s_add_i32 s6, s32, 0x101100346; GFX8-NEXT: buffer_store_dword v1, off, s[0:3], s6 ; 4-byte Folded Spill347; GFX8-NEXT: s_mov_b64 exec, s[4:5]348; GFX8-NEXT: v_writelane_b32 v1, s55, 0349; GFX8-NEXT: s_lshr_b32 s55, s32, 6350; GFX8-NEXT: v_lshrrev_b32_e64 v0, 6, s32351; GFX8-NEXT: s_addk_i32 s55, 0x4040352; GFX8-NEXT: v_add_u32_e32 v0, vcc, 64, v0353; GFX8-NEXT: ;;#ASMSTART354; GFX8-NEXT: ; use alloca0 v0355; GFX8-NEXT: ;;#ASMEND356; GFX8-NEXT: ;;#ASMSTART357; GFX8-NEXT: ; use s55358; GFX8-NEXT: ;;#ASMEND359; GFX8-NEXT: v_readlane_b32 s55, v1, 0360; GFX8-NEXT: s_xor_saveexec_b64 s[4:5], -1361; GFX8-NEXT: s_add_i32 s6, s32, 0x101100362; GFX8-NEXT: buffer_load_dword v1, off, s[0:3], s6 ; 4-byte Folded Reload363; GFX8-NEXT: s_mov_b64 exec, s[4:5]364; GFX8-NEXT: s_waitcnt vmcnt(0)365; GFX8-NEXT: s_setpc_b64 s[30:31]366;367; GFX900-LABEL: scalar_mov_materializes_frame_index_dead_scc:368; GFX900: ; %bb.0:369; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)370; GFX900-NEXT: s_xor_saveexec_b64 s[4:5], -1371; GFX900-NEXT: s_add_i32 s6, s32, 0x101100372; GFX900-NEXT: buffer_store_dword v1, off, s[0:3], s6 ; 4-byte Folded Spill373; GFX900-NEXT: s_mov_b64 exec, s[4:5]374; GFX900-NEXT: v_writelane_b32 v1, s55, 0375; GFX900-NEXT: s_lshr_b32 s55, s32, 6376; GFX900-NEXT: v_lshrrev_b32_e64 v0, 6, s32377; GFX900-NEXT: s_addk_i32 s55, 0x4040378; GFX900-NEXT: v_add_u32_e32 v0, 64, v0379; GFX900-NEXT: ;;#ASMSTART380; GFX900-NEXT: ; use alloca0 v0381; GFX900-NEXT: ;;#ASMEND382; GFX900-NEXT: ;;#ASMSTART383; GFX900-NEXT: ; use s55384; GFX900-NEXT: ;;#ASMEND385; GFX900-NEXT: v_readlane_b32 s55, v1, 0386; GFX900-NEXT: s_xor_saveexec_b64 s[4:5], -1387; GFX900-NEXT: s_add_i32 s6, s32, 0x101100388; GFX900-NEXT: buffer_load_dword v1, off, s[0:3], s6 ; 4-byte Folded Reload389; GFX900-NEXT: s_mov_b64 exec, s[4:5]390; GFX900-NEXT: s_waitcnt vmcnt(0)391; GFX900-NEXT: s_setpc_b64 s[30:31]392;393; GFX942-LABEL: scalar_mov_materializes_frame_index_dead_scc:394; GFX942: ; %bb.0:395; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)396; GFX942-NEXT: s_xor_saveexec_b64 s[0:1], -1397; GFX942-NEXT: s_add_i32 s2, s32, 0x4044398; GFX942-NEXT: scratch_store_dword off, v1, s2 ; 4-byte Folded Spill399; GFX942-NEXT: s_mov_b64 exec, s[0:1]400; GFX942-NEXT: s_add_i32 s0, s32, 64401; GFX942-NEXT: v_mov_b32_e32 v0, s0402; GFX942-NEXT: s_add_i32 s0, s32, 0x4040403; GFX942-NEXT: v_writelane_b32 v1, s55, 0404; GFX942-NEXT: s_mov_b32 s55, s0405; GFX942-NEXT: ;;#ASMSTART406; GFX942-NEXT: ; use alloca0 v0407; GFX942-NEXT: ;;#ASMEND408; GFX942-NEXT: ;;#ASMSTART409; GFX942-NEXT: ; use s55410; GFX942-NEXT: ;;#ASMEND411; GFX942-NEXT: v_readlane_b32 s55, v1, 0412; GFX942-NEXT: s_xor_saveexec_b64 s[0:1], -1413; GFX942-NEXT: s_add_i32 s2, s32, 0x4044414; GFX942-NEXT: scratch_load_dword v1, off, s2 ; 4-byte Folded Reload415; GFX942-NEXT: s_mov_b64 exec, s[0:1]416; GFX942-NEXT: s_waitcnt vmcnt(0)417; GFX942-NEXT: s_setpc_b64 s[30:31]418 %alloca0 = alloca [4096 x i32], align 64, addrspace(5)419 %alloca1 = alloca i32, align 4, addrspace(5)420 call void asm sideeffect "; use alloca0 $0", "v"(ptr addrspace(5) %alloca0)421 call void asm sideeffect "; use $0", "{s55}"(ptr addrspace(5) %alloca1)422 ret void423}424 425define void @scalar_mov_materializes_frame_index_unavailable_scc_fp() #1 {426; GFX10_1-LABEL: scalar_mov_materializes_frame_index_unavailable_scc_fp:427; GFX10_1: ; %bb.0:428; GFX10_1-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)429; GFX10_1-NEXT: s_mov_b32 s5, s33430; GFX10_1-NEXT: s_mov_b32 s33, s32431; GFX10_1-NEXT: s_xor_saveexec_b32 s4, -1432; GFX10_1-NEXT: s_add_i32 s6, s33, 0x80880433; GFX10_1-NEXT: buffer_store_dword v1, off, s[0:3], s6 ; 4-byte Folded Spill434; GFX10_1-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)435; GFX10_1-NEXT: s_mov_b32 exec_lo, s4436; GFX10_1-NEXT: v_lshrrev_b32_e64 v0, 5, s33437; GFX10_1-NEXT: v_writelane_b32 v1, s55, 0438; GFX10_1-NEXT: s_add_i32 s32, s32, 0x81000439; GFX10_1-NEXT: s_and_b32 s4, 0, exec_lo440; GFX10_1-NEXT: s_mov_b32 s32, s33441; GFX10_1-NEXT: v_add_nc_u32_e32 v0, 64, v0442; GFX10_1-NEXT: ;;#ASMSTART443; GFX10_1-NEXT: ; use alloca0 v0444; GFX10_1-NEXT: ;;#ASMEND445; GFX10_1-NEXT: v_lshrrev_b32_e64 v0, 5, s33446; GFX10_1-NEXT: v_add_nc_u32_e32 v0, 0x4040, v0447; GFX10_1-NEXT: v_readfirstlane_b32 s55, v0448; GFX10_1-NEXT: ;;#ASMSTART449; GFX10_1-NEXT: ; use s55, scc450; GFX10_1-NEXT: ;;#ASMEND451; GFX10_1-NEXT: v_readlane_b32 s55, v1, 0452; GFX10_1-NEXT: s_xor_saveexec_b32 s4, -1453; GFX10_1-NEXT: s_add_i32 s6, s33, 0x80880454; GFX10_1-NEXT: buffer_load_dword v1, off, s[0:3], s6 ; 4-byte Folded Reload455; GFX10_1-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)456; GFX10_1-NEXT: s_mov_b32 exec_lo, s4457; GFX10_1-NEXT: s_mov_b32 s33, s5458; GFX10_1-NEXT: s_waitcnt vmcnt(0)459; GFX10_1-NEXT: s_setpc_b64 s[30:31]460;461; GFX10_3-LABEL: scalar_mov_materializes_frame_index_unavailable_scc_fp:462; GFX10_3: ; %bb.0:463; GFX10_3-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)464; GFX10_3-NEXT: s_mov_b32 s5, s33465; GFX10_3-NEXT: s_mov_b32 s33, s32466; GFX10_3-NEXT: s_xor_saveexec_b32 s4, -1467; GFX10_3-NEXT: s_add_i32 s6, s33, 0x80880468; GFX10_3-NEXT: buffer_store_dword v1, off, s[0:3], s6 ; 4-byte Folded Spill469; GFX10_3-NEXT: s_mov_b32 exec_lo, s4470; GFX10_3-NEXT: v_lshrrev_b32_e64 v0, 5, s33471; GFX10_3-NEXT: v_writelane_b32 v1, s55, 0472; GFX10_3-NEXT: s_add_i32 s32, s32, 0x81000473; GFX10_3-NEXT: s_and_b32 s4, 0, exec_lo474; GFX10_3-NEXT: s_mov_b32 s32, s33475; GFX10_3-NEXT: v_add_nc_u32_e32 v0, 64, v0476; GFX10_3-NEXT: ;;#ASMSTART477; GFX10_3-NEXT: ; use alloca0 v0478; GFX10_3-NEXT: ;;#ASMEND479; GFX10_3-NEXT: v_lshrrev_b32_e64 v0, 5, s33480; GFX10_3-NEXT: v_add_nc_u32_e32 v0, 0x4040, v0481; GFX10_3-NEXT: v_readfirstlane_b32 s55, v0482; GFX10_3-NEXT: ;;#ASMSTART483; GFX10_3-NEXT: ; use s55, scc484; GFX10_3-NEXT: ;;#ASMEND485; GFX10_3-NEXT: v_readlane_b32 s55, v1, 0486; GFX10_3-NEXT: s_xor_saveexec_b32 s4, -1487; GFX10_3-NEXT: s_add_i32 s6, s33, 0x80880488; GFX10_3-NEXT: buffer_load_dword v1, off, s[0:3], s6 ; 4-byte Folded Reload489; GFX10_3-NEXT: s_mov_b32 exec_lo, s4490; GFX10_3-NEXT: s_mov_b32 s33, s5491; GFX10_3-NEXT: s_waitcnt vmcnt(0)492; GFX10_3-NEXT: s_setpc_b64 s[30:31]493;494; GFX11-LABEL: scalar_mov_materializes_frame_index_unavailable_scc_fp:495; GFX11: ; %bb.0:496; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)497; GFX11-NEXT: s_mov_b32 s1, s33498; GFX11-NEXT: s_mov_b32 s33, s32499; GFX11-NEXT: s_xor_saveexec_b32 s0, -1500; GFX11-NEXT: s_add_i32 s2, s33, 0x4044501; GFX11-NEXT: scratch_store_b32 off, v1, s2 ; 4-byte Folded Spill502; GFX11-NEXT: s_mov_b32 exec_lo, s0503; GFX11-NEXT: s_addk_i32 s32, 0x4080504; GFX11-NEXT: s_add_i32 s0, s33, 64505; GFX11-NEXT: v_writelane_b32 v1, s55, 0506; GFX11-NEXT: v_mov_b32_e32 v0, s0507; GFX11-NEXT: s_and_b32 s0, 0, exec_lo508; GFX11-NEXT: s_addc_u32 s0, s33, 0x4040509; GFX11-NEXT: ;;#ASMSTART510; GFX11-NEXT: ; use alloca0 v0511; GFX11-NEXT: ;;#ASMEND512; GFX11-NEXT: s_bitcmp1_b32 s0, 0513; GFX11-NEXT: s_bitset0_b32 s0, 0514; GFX11-NEXT: s_mov_b32 s32, s33515; GFX11-NEXT: s_mov_b32 s55, s0516; GFX11-NEXT: ;;#ASMSTART517; GFX11-NEXT: ; use s55, scc518; GFX11-NEXT: ;;#ASMEND519; GFX11-NEXT: v_readlane_b32 s55, v1, 0520; GFX11-NEXT: s_xor_saveexec_b32 s0, -1521; GFX11-NEXT: s_add_i32 s2, s33, 0x4044522; GFX11-NEXT: scratch_load_b32 v1, off, s2 ; 4-byte Folded Reload523; GFX11-NEXT: s_mov_b32 exec_lo, s0524; GFX11-NEXT: s_mov_b32 s33, s1525; GFX11-NEXT: s_waitcnt vmcnt(0)526; GFX11-NEXT: s_setpc_b64 s[30:31]527;528; GFX12-LABEL: scalar_mov_materializes_frame_index_unavailable_scc_fp:529; GFX12: ; %bb.0:530; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0531; GFX12-NEXT: s_wait_expcnt 0x0532; GFX12-NEXT: s_wait_samplecnt 0x0533; GFX12-NEXT: s_wait_bvhcnt 0x0534; GFX12-NEXT: s_wait_kmcnt 0x0535; GFX12-NEXT: s_mov_b32 s1, s33536; GFX12-NEXT: s_mov_b32 s33, s32537; GFX12-NEXT: s_xor_saveexec_b32 s0, -1538; GFX12-NEXT: scratch_store_b32 off, v1, s33 offset:16388 ; 4-byte Folded Spill539; GFX12-NEXT: s_wait_alu depctr_sa_sdst(0)540; GFX12-NEXT: s_mov_b32 exec_lo, s0541; GFX12-NEXT: s_addk_co_i32 s32, 0x4040542; GFX12-NEXT: s_and_b32 s0, 0, exec_lo543; GFX12-NEXT: v_writelane_b32 v1, s55, 0544; GFX12-NEXT: s_add_co_ci_u32 s0, s33, 0x4000545; GFX12-NEXT: v_mov_b32_e32 v0, s33546; GFX12-NEXT: s_wait_alu depctr_sa_sdst(0)547; GFX12-NEXT: s_bitcmp1_b32 s0, 0548; GFX12-NEXT: s_bitset0_b32 s0, 0549; GFX12-NEXT: ;;#ASMSTART550; GFX12-NEXT: ; use alloca0 v0551; GFX12-NEXT: ;;#ASMEND552; GFX12-NEXT: s_wait_alu depctr_sa_sdst(0)553; GFX12-NEXT: s_mov_b32 s55, s0554; GFX12-NEXT: ;;#ASMSTART555; GFX12-NEXT: ; use s55, scc556; GFX12-NEXT: ;;#ASMEND557; GFX12-NEXT: v_readlane_b32 s55, v1, 0558; GFX12-NEXT: s_mov_b32 s32, s33559; GFX12-NEXT: s_xor_saveexec_b32 s0, -1560; GFX12-NEXT: scratch_load_b32 v1, off, s33 offset:16388 ; 4-byte Folded Reload561; GFX12-NEXT: s_wait_alu depctr_sa_sdst(0)562; GFX12-NEXT: s_mov_b32 exec_lo, s0563; GFX12-NEXT: s_mov_b32 s33, s1564; GFX12-NEXT: s_wait_loadcnt 0x0565; GFX12-NEXT: s_wait_alu depctr_sa_sdst(0)566; GFX12-NEXT: s_setpc_b64 s[30:31]567;568; GFX8-LABEL: scalar_mov_materializes_frame_index_unavailable_scc_fp:569; GFX8: ; %bb.0:570; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)571; GFX8-NEXT: s_mov_b32 s6, s33572; GFX8-NEXT: s_mov_b32 s33, s32573; GFX8-NEXT: s_xor_saveexec_b64 s[4:5], -1574; GFX8-NEXT: s_add_i32 s7, s33, 0x101100575; GFX8-NEXT: buffer_store_dword v1, off, s[0:3], s7 ; 4-byte Folded Spill576; GFX8-NEXT: s_mov_b64 exec, s[4:5]577; GFX8-NEXT: v_lshrrev_b32_e64 v0, 6, s33578; GFX8-NEXT: v_add_u32_e32 v0, vcc, 64, v0579; GFX8-NEXT: v_writelane_b32 v1, s55, 0580; GFX8-NEXT: ;;#ASMSTART581; GFX8-NEXT: ; use alloca0 v0582; GFX8-NEXT: ;;#ASMEND583; GFX8-NEXT: v_lshrrev_b32_e64 v0, 6, s33584; GFX8-NEXT: s_movk_i32 s55, 0x4040585; GFX8-NEXT: v_add_u32_e32 v0, vcc, s55, v0586; GFX8-NEXT: s_add_i32 s32, s32, 0x102000587; GFX8-NEXT: v_readfirstlane_b32 s55, v0588; GFX8-NEXT: s_and_b64 s[4:5], 0, exec589; GFX8-NEXT: ;;#ASMSTART590; GFX8-NEXT: ; use s55, scc591; GFX8-NEXT: ;;#ASMEND592; GFX8-NEXT: v_readlane_b32 s55, v1, 0593; GFX8-NEXT: s_mov_b32 s32, s33594; GFX8-NEXT: s_xor_saveexec_b64 s[4:5], -1595; GFX8-NEXT: s_add_i32 s7, s33, 0x101100596; GFX8-NEXT: buffer_load_dword v1, off, s[0:3], s7 ; 4-byte Folded Reload597; GFX8-NEXT: s_mov_b64 exec, s[4:5]598; GFX8-NEXT: s_mov_b32 s33, s6599; GFX8-NEXT: s_waitcnt vmcnt(0)600; GFX8-NEXT: s_setpc_b64 s[30:31]601;602; GFX900-LABEL: scalar_mov_materializes_frame_index_unavailable_scc_fp:603; GFX900: ; %bb.0:604; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)605; GFX900-NEXT: s_mov_b32 s6, s33606; GFX900-NEXT: s_mov_b32 s33, s32607; GFX900-NEXT: s_xor_saveexec_b64 s[4:5], -1608; GFX900-NEXT: s_add_i32 s7, s33, 0x101100609; GFX900-NEXT: buffer_store_dword v1, off, s[0:3], s7 ; 4-byte Folded Spill610; GFX900-NEXT: s_mov_b64 exec, s[4:5]611; GFX900-NEXT: v_lshrrev_b32_e64 v0, 6, s33612; GFX900-NEXT: v_add_u32_e32 v0, 64, v0613; GFX900-NEXT: ;;#ASMSTART614; GFX900-NEXT: ; use alloca0 v0615; GFX900-NEXT: ;;#ASMEND616; GFX900-NEXT: v_lshrrev_b32_e64 v0, 6, s33617; GFX900-NEXT: v_add_u32_e32 v0, 0x4040, v0618; GFX900-NEXT: s_add_i32 s32, s32, 0x102000619; GFX900-NEXT: v_writelane_b32 v1, s55, 0620; GFX900-NEXT: v_readfirstlane_b32 s55, v0621; GFX900-NEXT: s_and_b64 s[4:5], 0, exec622; GFX900-NEXT: ;;#ASMSTART623; GFX900-NEXT: ; use s55, scc624; GFX900-NEXT: ;;#ASMEND625; GFX900-NEXT: v_readlane_b32 s55, v1, 0626; GFX900-NEXT: s_mov_b32 s32, s33627; GFX900-NEXT: s_xor_saveexec_b64 s[4:5], -1628; GFX900-NEXT: s_add_i32 s7, s33, 0x101100629; GFX900-NEXT: buffer_load_dword v1, off, s[0:3], s7 ; 4-byte Folded Reload630; GFX900-NEXT: s_mov_b64 exec, s[4:5]631; GFX900-NEXT: s_mov_b32 s33, s6632; GFX900-NEXT: s_waitcnt vmcnt(0)633; GFX900-NEXT: s_setpc_b64 s[30:31]634;635; GFX942-LABEL: scalar_mov_materializes_frame_index_unavailable_scc_fp:636; GFX942: ; %bb.0:637; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)638; GFX942-NEXT: s_mov_b32 s2, s33639; GFX942-NEXT: s_mov_b32 s33, s32640; GFX942-NEXT: s_xor_saveexec_b64 s[0:1], -1641; GFX942-NEXT: s_add_i32 s3, s33, 0x4044642; GFX942-NEXT: scratch_store_dword off, v1, s3 ; 4-byte Folded Spill643; GFX942-NEXT: s_mov_b64 exec, s[0:1]644; GFX942-NEXT: s_addk_i32 s32, 0x4080645; GFX942-NEXT: s_add_i32 s0, s33, 64646; GFX942-NEXT: v_mov_b32_e32 v0, s0647; GFX942-NEXT: s_and_b64 s[0:1], 0, exec648; GFX942-NEXT: s_addc_u32 s0, s33, 0x4040649; GFX942-NEXT: s_bitcmp1_b32 s0, 0650; GFX942-NEXT: s_bitset0_b32 s0, 0651; GFX942-NEXT: v_writelane_b32 v1, s55, 0652; GFX942-NEXT: s_mov_b32 s55, s0653; GFX942-NEXT: ;;#ASMSTART654; GFX942-NEXT: ; use alloca0 v0655; GFX942-NEXT: ;;#ASMEND656; GFX942-NEXT: ;;#ASMSTART657; GFX942-NEXT: ; use s55, scc658; GFX942-NEXT: ;;#ASMEND659; GFX942-NEXT: v_readlane_b32 s55, v1, 0660; GFX942-NEXT: s_mov_b32 s32, s33661; GFX942-NEXT: s_xor_saveexec_b64 s[0:1], -1662; GFX942-NEXT: s_add_i32 s3, s33, 0x4044663; GFX942-NEXT: scratch_load_dword v1, off, s3 ; 4-byte Folded Reload664; GFX942-NEXT: s_mov_b64 exec, s[0:1]665; GFX942-NEXT: s_mov_b32 s33, s2666; GFX942-NEXT: s_waitcnt vmcnt(0)667; GFX942-NEXT: s_setpc_b64 s[30:31]668 %alloca0 = alloca [4096 x i32], align 64, addrspace(5)669 %alloca1 = alloca i32, align 4, addrspace(5)670 call void asm sideeffect "; use alloca0 $0", "v"(ptr addrspace(5) %alloca0)671 call void asm sideeffect "; use $0, $1", "{s55},{scc}"(ptr addrspace(5) %alloca1, i32 0)672 ret void673}674 675define void @scalar_mov_materializes_frame_index_unavailable_scc_small_offset() #0 {676; GFX10_1-LABEL: scalar_mov_materializes_frame_index_unavailable_scc_small_offset:677; GFX10_1: ; %bb.0:678; GFX10_1-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)679; GFX10_1-NEXT: s_xor_saveexec_b32 s4, -1680; GFX10_1-NEXT: s_add_i32 s5, s32, 0x80800681; GFX10_1-NEXT: buffer_store_dword v0, off, s[0:3], s5 ; 4-byte Folded Spill682; GFX10_1-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)683; GFX10_1-NEXT: s_mov_b32 exec_lo, s4684; GFX10_1-NEXT: v_lshrrev_b32_e64 v1, 5, s32685; GFX10_1-NEXT: v_writelane_b32 v0, s55, 0686; GFX10_1-NEXT: s_and_b32 s4, 0, exec_lo687; GFX10_1-NEXT: v_add_nc_u32_e32 v1, 64, v1688; GFX10_1-NEXT: v_readfirstlane_b32 s55, v1689; GFX10_1-NEXT: ;;#ASMSTART690; GFX10_1-NEXT: ; use s55, scc691; GFX10_1-NEXT: ;;#ASMEND692; GFX10_1-NEXT: v_readlane_b32 s55, v0, 0693; GFX10_1-NEXT: s_xor_saveexec_b32 s4, -1694; GFX10_1-NEXT: s_add_i32 s5, s32, 0x80800695; GFX10_1-NEXT: buffer_load_dword v0, off, s[0:3], s5 ; 4-byte Folded Reload696; GFX10_1-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)697; GFX10_1-NEXT: s_mov_b32 exec_lo, s4698; GFX10_1-NEXT: s_waitcnt vmcnt(0)699; GFX10_1-NEXT: s_setpc_b64 s[30:31]700;701; GFX10_3-LABEL: scalar_mov_materializes_frame_index_unavailable_scc_small_offset:702; GFX10_3: ; %bb.0:703; GFX10_3-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)704; GFX10_3-NEXT: s_xor_saveexec_b32 s4, -1705; GFX10_3-NEXT: s_add_i32 s5, s32, 0x80800706; GFX10_3-NEXT: buffer_store_dword v0, off, s[0:3], s5 ; 4-byte Folded Spill707; GFX10_3-NEXT: s_mov_b32 exec_lo, s4708; GFX10_3-NEXT: v_lshrrev_b32_e64 v1, 5, s32709; GFX10_3-NEXT: v_writelane_b32 v0, s55, 0710; GFX10_3-NEXT: s_and_b32 s4, 0, exec_lo711; GFX10_3-NEXT: v_add_nc_u32_e32 v1, 64, v1712; GFX10_3-NEXT: v_readfirstlane_b32 s55, v1713; GFX10_3-NEXT: ;;#ASMSTART714; GFX10_3-NEXT: ; use s55, scc715; GFX10_3-NEXT: ;;#ASMEND716; GFX10_3-NEXT: v_readlane_b32 s55, v0, 0717; GFX10_3-NEXT: s_xor_saveexec_b32 s4, -1718; GFX10_3-NEXT: s_add_i32 s5, s32, 0x80800719; GFX10_3-NEXT: buffer_load_dword v0, off, s[0:3], s5 ; 4-byte Folded Reload720; GFX10_3-NEXT: s_mov_b32 exec_lo, s4721; GFX10_3-NEXT: s_waitcnt vmcnt(0)722; GFX10_3-NEXT: s_setpc_b64 s[30:31]723;724; GFX11-LABEL: scalar_mov_materializes_frame_index_unavailable_scc_small_offset:725; GFX11: ; %bb.0:726; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)727; GFX11-NEXT: s_xor_saveexec_b32 s0, -1728; GFX11-NEXT: s_add_i32 s1, s32, 0x4040729; GFX11-NEXT: scratch_store_b32 off, v0, s1 ; 4-byte Folded Spill730; GFX11-NEXT: s_mov_b32 exec_lo, s0731; GFX11-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(SALU_CYCLE_1)732; GFX11-NEXT: s_and_b32 s0, 0, exec_lo733; GFX11-NEXT: v_writelane_b32 v0, s55, 0734; GFX11-NEXT: s_addc_u32 s0, s32, 64735; GFX11-NEXT: s_bitcmp1_b32 s0, 0736; GFX11-NEXT: s_bitset0_b32 s0, 0737; GFX11-NEXT: s_delay_alu instid0(SALU_CYCLE_1)738; GFX11-NEXT: s_mov_b32 s55, s0739; GFX11-NEXT: ;;#ASMSTART740; GFX11-NEXT: ; use s55, scc741; GFX11-NEXT: ;;#ASMEND742; GFX11-NEXT: v_readlane_b32 s55, v0, 0743; GFX11-NEXT: s_xor_saveexec_b32 s0, -1744; GFX11-NEXT: s_add_i32 s1, s32, 0x4040745; GFX11-NEXT: scratch_load_b32 v0, off, s1 ; 4-byte Folded Reload746; GFX11-NEXT: s_mov_b32 exec_lo, s0747; GFX11-NEXT: s_waitcnt vmcnt(0)748; GFX11-NEXT: s_setpc_b64 s[30:31]749;750; GFX12-LABEL: scalar_mov_materializes_frame_index_unavailable_scc_small_offset:751; GFX12: ; %bb.0:752; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0753; GFX12-NEXT: s_wait_expcnt 0x0754; GFX12-NEXT: s_wait_samplecnt 0x0755; GFX12-NEXT: s_wait_bvhcnt 0x0756; GFX12-NEXT: s_wait_kmcnt 0x0757; GFX12-NEXT: s_xor_saveexec_b32 s0, -1758; GFX12-NEXT: scratch_store_b32 off, v0, s32 offset:16384 ; 4-byte Folded Spill759; GFX12-NEXT: s_wait_alu depctr_sa_sdst(0)760; GFX12-NEXT: s_mov_b32 exec_lo, s0761; GFX12-NEXT: v_writelane_b32 v0, s55, 0762; GFX12-NEXT: s_mov_b32 s55, s32763; GFX12-NEXT: s_and_b32 s0, 0, exec_lo764; GFX12-NEXT: ;;#ASMSTART765; GFX12-NEXT: ; use s55, scc766; GFX12-NEXT: ;;#ASMEND767; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1)768; GFX12-NEXT: v_readlane_b32 s55, v0, 0769; GFX12-NEXT: s_xor_saveexec_b32 s0, -1770; GFX12-NEXT: scratch_load_b32 v0, off, s32 offset:16384 ; 4-byte Folded Reload771; GFX12-NEXT: s_wait_alu depctr_sa_sdst(0)772; GFX12-NEXT: s_mov_b32 exec_lo, s0773; GFX12-NEXT: s_wait_loadcnt 0x0774; GFX12-NEXT: s_setpc_b64 s[30:31]775;776; GFX8-LABEL: scalar_mov_materializes_frame_index_unavailable_scc_small_offset:777; GFX8: ; %bb.0:778; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)779; GFX8-NEXT: s_xor_saveexec_b64 s[4:5], -1780; GFX8-NEXT: s_add_i32 s6, s32, 0x101000781; GFX8-NEXT: buffer_store_dword v0, off, s[0:3], s6 ; 4-byte Folded Spill782; GFX8-NEXT: s_mov_b64 exec, s[4:5]783; GFX8-NEXT: v_writelane_b32 v0, s55, 0784; GFX8-NEXT: v_lshrrev_b32_e64 v1, 6, s32785; GFX8-NEXT: s_mov_b32 s55, 64786; GFX8-NEXT: v_add_u32_e32 v1, vcc, s55, v1787; GFX8-NEXT: v_readfirstlane_b32 s55, v1788; GFX8-NEXT: s_and_b64 s[4:5], 0, exec789; GFX8-NEXT: ;;#ASMSTART790; GFX8-NEXT: ; use s55, scc791; GFX8-NEXT: ;;#ASMEND792; GFX8-NEXT: v_readlane_b32 s55, v0, 0793; GFX8-NEXT: s_xor_saveexec_b64 s[4:5], -1794; GFX8-NEXT: s_add_i32 s6, s32, 0x101000795; GFX8-NEXT: buffer_load_dword v0, off, s[0:3], s6 ; 4-byte Folded Reload796; GFX8-NEXT: s_mov_b64 exec, s[4:5]797; GFX8-NEXT: s_waitcnt vmcnt(0)798; GFX8-NEXT: s_setpc_b64 s[30:31]799;800; GFX900-LABEL: scalar_mov_materializes_frame_index_unavailable_scc_small_offset:801; GFX900: ; %bb.0:802; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)803; GFX900-NEXT: s_xor_saveexec_b64 s[4:5], -1804; GFX900-NEXT: s_add_i32 s6, s32, 0x101000805; GFX900-NEXT: buffer_store_dword v0, off, s[0:3], s6 ; 4-byte Folded Spill806; GFX900-NEXT: s_mov_b64 exec, s[4:5]807; GFX900-NEXT: v_lshrrev_b32_e64 v1, 6, s32808; GFX900-NEXT: v_add_u32_e32 v1, 64, v1809; GFX900-NEXT: v_writelane_b32 v0, s55, 0810; GFX900-NEXT: v_readfirstlane_b32 s55, v1811; GFX900-NEXT: s_and_b64 s[4:5], 0, exec812; GFX900-NEXT: ;;#ASMSTART813; GFX900-NEXT: ; use s55, scc814; GFX900-NEXT: ;;#ASMEND815; GFX900-NEXT: v_readlane_b32 s55, v0, 0816; GFX900-NEXT: s_xor_saveexec_b64 s[4:5], -1817; GFX900-NEXT: s_add_i32 s6, s32, 0x101000818; GFX900-NEXT: buffer_load_dword v0, off, s[0:3], s6 ; 4-byte Folded Reload819; GFX900-NEXT: s_mov_b64 exec, s[4:5]820; GFX900-NEXT: s_waitcnt vmcnt(0)821; GFX900-NEXT: s_setpc_b64 s[30:31]822;823; GFX942-LABEL: scalar_mov_materializes_frame_index_unavailable_scc_small_offset:824; GFX942: ; %bb.0:825; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)826; GFX942-NEXT: s_xor_saveexec_b64 s[0:1], -1827; GFX942-NEXT: s_add_i32 s2, s32, 0x4040828; GFX942-NEXT: scratch_store_dword off, v0, s2 ; 4-byte Folded Spill829; GFX942-NEXT: s_mov_b64 exec, s[0:1]830; GFX942-NEXT: s_and_b64 s[0:1], 0, exec831; GFX942-NEXT: s_addc_u32 s0, s32, 64832; GFX942-NEXT: s_bitcmp1_b32 s0, 0833; GFX942-NEXT: s_bitset0_b32 s0, 0834; GFX942-NEXT: v_writelane_b32 v0, s55, 0835; GFX942-NEXT: s_mov_b32 s55, s0836; GFX942-NEXT: ;;#ASMSTART837; GFX942-NEXT: ; use s55, scc838; GFX942-NEXT: ;;#ASMEND839; GFX942-NEXT: v_readlane_b32 s55, v0, 0840; GFX942-NEXT: s_xor_saveexec_b64 s[0:1], -1841; GFX942-NEXT: s_add_i32 s2, s32, 0x4040842; GFX942-NEXT: scratch_load_dword v0, off, s2 ; 4-byte Folded Reload843; GFX942-NEXT: s_mov_b64 exec, s[0:1]844; GFX942-NEXT: s_waitcnt vmcnt(0)845; GFX942-NEXT: s_setpc_b64 s[30:31]846 %alloca0 = alloca [4096 x i32], align 64, addrspace(5)847 call void asm sideeffect "; use $0, $1", "{s55},{scc}"(ptr addrspace(5) %alloca0, i32 0)848 ret void849}850 851define void @scalar_mov_materializes_frame_index_available_scc_small_offset() #0 {852; GFX10_1-LABEL: scalar_mov_materializes_frame_index_available_scc_small_offset:853; GFX10_1: ; %bb.0:854; GFX10_1-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)855; GFX10_1-NEXT: s_xor_saveexec_b32 s4, -1856; GFX10_1-NEXT: s_add_i32 s5, s32, 0x80800857; GFX10_1-NEXT: buffer_store_dword v0, off, s[0:3], s5 ; 4-byte Folded Spill858; GFX10_1-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)859; GFX10_1-NEXT: s_mov_b32 exec_lo, s4860; GFX10_1-NEXT: v_writelane_b32 v0, s55, 0861; GFX10_1-NEXT: s_lshr_b32 s55, s32, 5862; GFX10_1-NEXT: s_add_i32 s55, s55, 64863; GFX10_1-NEXT: ;;#ASMSTART864; GFX10_1-NEXT: ; use s55865; GFX10_1-NEXT: ;;#ASMEND866; GFX10_1-NEXT: v_readlane_b32 s55, v0, 0867; GFX10_1-NEXT: s_xor_saveexec_b32 s4, -1868; GFX10_1-NEXT: s_add_i32 s5, s32, 0x80800869; GFX10_1-NEXT: buffer_load_dword v0, off, s[0:3], s5 ; 4-byte Folded Reload870; GFX10_1-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)871; GFX10_1-NEXT: s_mov_b32 exec_lo, s4872; GFX10_1-NEXT: s_waitcnt vmcnt(0)873; GFX10_1-NEXT: s_setpc_b64 s[30:31]874;875; GFX10_3-LABEL: scalar_mov_materializes_frame_index_available_scc_small_offset:876; GFX10_3: ; %bb.0:877; GFX10_3-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)878; GFX10_3-NEXT: s_xor_saveexec_b32 s4, -1879; GFX10_3-NEXT: s_add_i32 s5, s32, 0x80800880; GFX10_3-NEXT: buffer_store_dword v0, off, s[0:3], s5 ; 4-byte Folded Spill881; GFX10_3-NEXT: s_mov_b32 exec_lo, s4882; GFX10_3-NEXT: v_writelane_b32 v0, s55, 0883; GFX10_3-NEXT: s_lshr_b32 s55, s32, 5884; GFX10_3-NEXT: s_add_i32 s55, s55, 64885; GFX10_3-NEXT: ;;#ASMSTART886; GFX10_3-NEXT: ; use s55887; GFX10_3-NEXT: ;;#ASMEND888; GFX10_3-NEXT: v_readlane_b32 s55, v0, 0889; GFX10_3-NEXT: s_xor_saveexec_b32 s4, -1890; GFX10_3-NEXT: s_add_i32 s5, s32, 0x80800891; GFX10_3-NEXT: buffer_load_dword v0, off, s[0:3], s5 ; 4-byte Folded Reload892; GFX10_3-NEXT: s_mov_b32 exec_lo, s4893; GFX10_3-NEXT: s_waitcnt vmcnt(0)894; GFX10_3-NEXT: s_setpc_b64 s[30:31]895;896; GFX11-LABEL: scalar_mov_materializes_frame_index_available_scc_small_offset:897; GFX11: ; %bb.0:898; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)899; GFX11-NEXT: s_xor_saveexec_b32 s0, -1900; GFX11-NEXT: s_add_i32 s1, s32, 0x4040901; GFX11-NEXT: scratch_store_b32 off, v0, s1 ; 4-byte Folded Spill902; GFX11-NEXT: s_mov_b32 exec_lo, s0903; GFX11-NEXT: v_writelane_b32 v0, s55, 0904; GFX11-NEXT: s_add_i32 s0, s32, 64905; GFX11-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)906; GFX11-NEXT: s_mov_b32 s55, s0907; GFX11-NEXT: ;;#ASMSTART908; GFX11-NEXT: ; use s55909; GFX11-NEXT: ;;#ASMEND910; GFX11-NEXT: v_readlane_b32 s55, v0, 0911; GFX11-NEXT: s_xor_saveexec_b32 s0, -1912; GFX11-NEXT: s_add_i32 s1, s32, 0x4040913; GFX11-NEXT: scratch_load_b32 v0, off, s1 ; 4-byte Folded Reload914; GFX11-NEXT: s_mov_b32 exec_lo, s0915; GFX11-NEXT: s_waitcnt vmcnt(0)916; GFX11-NEXT: s_setpc_b64 s[30:31]917;918; GFX12-LABEL: scalar_mov_materializes_frame_index_available_scc_small_offset:919; GFX12: ; %bb.0:920; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0921; GFX12-NEXT: s_wait_expcnt 0x0922; GFX12-NEXT: s_wait_samplecnt 0x0923; GFX12-NEXT: s_wait_bvhcnt 0x0924; GFX12-NEXT: s_wait_kmcnt 0x0925; GFX12-NEXT: s_xor_saveexec_b32 s0, -1926; GFX12-NEXT: scratch_store_b32 off, v0, s32 offset:16384 ; 4-byte Folded Spill927; GFX12-NEXT: s_wait_alu depctr_sa_sdst(0)928; GFX12-NEXT: s_mov_b32 exec_lo, s0929; GFX12-NEXT: v_writelane_b32 v0, s55, 0930; GFX12-NEXT: s_mov_b32 s55, s32931; GFX12-NEXT: ;;#ASMSTART932; GFX12-NEXT: ; use s55933; GFX12-NEXT: ;;#ASMEND934; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1)935; GFX12-NEXT: v_readlane_b32 s55, v0, 0936; GFX12-NEXT: s_xor_saveexec_b32 s0, -1937; GFX12-NEXT: scratch_load_b32 v0, off, s32 offset:16384 ; 4-byte Folded Reload938; GFX12-NEXT: s_wait_alu depctr_sa_sdst(0)939; GFX12-NEXT: s_mov_b32 exec_lo, s0940; GFX12-NEXT: s_wait_loadcnt 0x0941; GFX12-NEXT: s_setpc_b64 s[30:31]942;943; GFX8-LABEL: scalar_mov_materializes_frame_index_available_scc_small_offset:944; GFX8: ; %bb.0:945; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)946; GFX8-NEXT: s_xor_saveexec_b64 s[4:5], -1947; GFX8-NEXT: s_add_i32 s6, s32, 0x101000948; GFX8-NEXT: buffer_store_dword v0, off, s[0:3], s6 ; 4-byte Folded Spill949; GFX8-NEXT: s_mov_b64 exec, s[4:5]950; GFX8-NEXT: v_writelane_b32 v0, s55, 0951; GFX8-NEXT: s_lshr_b32 s55, s32, 6952; GFX8-NEXT: s_add_i32 s55, s55, 64953; GFX8-NEXT: ;;#ASMSTART954; GFX8-NEXT: ; use s55955; GFX8-NEXT: ;;#ASMEND956; GFX8-NEXT: v_readlane_b32 s55, v0, 0957; GFX8-NEXT: s_xor_saveexec_b64 s[4:5], -1958; GFX8-NEXT: s_add_i32 s6, s32, 0x101000959; GFX8-NEXT: buffer_load_dword v0, off, s[0:3], s6 ; 4-byte Folded Reload960; GFX8-NEXT: s_mov_b64 exec, s[4:5]961; GFX8-NEXT: s_waitcnt vmcnt(0)962; GFX8-NEXT: s_setpc_b64 s[30:31]963;964; GFX900-LABEL: scalar_mov_materializes_frame_index_available_scc_small_offset:965; GFX900: ; %bb.0:966; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)967; GFX900-NEXT: s_xor_saveexec_b64 s[4:5], -1968; GFX900-NEXT: s_add_i32 s6, s32, 0x101000969; GFX900-NEXT: buffer_store_dword v0, off, s[0:3], s6 ; 4-byte Folded Spill970; GFX900-NEXT: s_mov_b64 exec, s[4:5]971; GFX900-NEXT: v_writelane_b32 v0, s55, 0972; GFX900-NEXT: s_lshr_b32 s55, s32, 6973; GFX900-NEXT: s_add_i32 s55, s55, 64974; GFX900-NEXT: ;;#ASMSTART975; GFX900-NEXT: ; use s55976; GFX900-NEXT: ;;#ASMEND977; GFX900-NEXT: v_readlane_b32 s55, v0, 0978; GFX900-NEXT: s_xor_saveexec_b64 s[4:5], -1979; GFX900-NEXT: s_add_i32 s6, s32, 0x101000980; GFX900-NEXT: buffer_load_dword v0, off, s[0:3], s6 ; 4-byte Folded Reload981; GFX900-NEXT: s_mov_b64 exec, s[4:5]982; GFX900-NEXT: s_waitcnt vmcnt(0)983; GFX900-NEXT: s_setpc_b64 s[30:31]984;985; GFX942-LABEL: scalar_mov_materializes_frame_index_available_scc_small_offset:986; GFX942: ; %bb.0:987; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)988; GFX942-NEXT: s_xor_saveexec_b64 s[0:1], -1989; GFX942-NEXT: s_add_i32 s2, s32, 0x4040990; GFX942-NEXT: scratch_store_dword off, v0, s2 ; 4-byte Folded Spill991; GFX942-NEXT: s_mov_b64 exec, s[0:1]992; GFX942-NEXT: s_add_i32 s0, s32, 64993; GFX942-NEXT: v_writelane_b32 v0, s55, 0994; GFX942-NEXT: s_mov_b32 s55, s0995; GFX942-NEXT: ;;#ASMSTART996; GFX942-NEXT: ; use s55997; GFX942-NEXT: ;;#ASMEND998; GFX942-NEXT: v_readlane_b32 s55, v0, 0999; GFX942-NEXT: s_xor_saveexec_b64 s[0:1], -11000; GFX942-NEXT: s_add_i32 s2, s32, 0x40401001; GFX942-NEXT: scratch_load_dword v0, off, s2 ; 4-byte Folded Reload1002; GFX942-NEXT: s_mov_b64 exec, s[0:1]1003; GFX942-NEXT: s_waitcnt vmcnt(0)1004; GFX942-NEXT: s_setpc_b64 s[30:31]1005 %alloca0 = alloca [4096 x i32], align 64, addrspace(5)1006 call void asm sideeffect "; use $0", "{s55}"(ptr addrspace(5) %alloca0)1007 ret void1008}1009 1010define void @scalar_mov_materializes_frame_index_unavailable_scc_small_offset_fp() #1 {1011; GFX10_1-LABEL: scalar_mov_materializes_frame_index_unavailable_scc_small_offset_fp:1012; GFX10_1: ; %bb.0:1013; GFX10_1-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1014; GFX10_1-NEXT: s_mov_b32 s5, s331015; GFX10_1-NEXT: s_mov_b32 s33, s321016; GFX10_1-NEXT: s_xor_saveexec_b32 s4, -11017; GFX10_1-NEXT: s_add_i32 s6, s33, 0x808001018; GFX10_1-NEXT: buffer_store_dword v0, off, s[0:3], s6 ; 4-byte Folded Spill1019; GFX10_1-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)1020; GFX10_1-NEXT: s_mov_b32 exec_lo, s41021; GFX10_1-NEXT: v_lshrrev_b32_e64 v1, 5, s331022; GFX10_1-NEXT: v_writelane_b32 v0, s55, 01023; GFX10_1-NEXT: s_add_i32 s32, s32, 0x810001024; GFX10_1-NEXT: s_and_b32 s4, 0, exec_lo1025; GFX10_1-NEXT: s_mov_b32 s32, s331026; GFX10_1-NEXT: v_add_nc_u32_e32 v1, 64, v11027; GFX10_1-NEXT: v_readfirstlane_b32 s55, v11028; GFX10_1-NEXT: ;;#ASMSTART1029; GFX10_1-NEXT: ; use s55, scc1030; GFX10_1-NEXT: ;;#ASMEND1031; GFX10_1-NEXT: v_readlane_b32 s55, v0, 01032; GFX10_1-NEXT: s_xor_saveexec_b32 s4, -11033; GFX10_1-NEXT: s_add_i32 s6, s33, 0x808001034; GFX10_1-NEXT: buffer_load_dword v0, off, s[0:3], s6 ; 4-byte Folded Reload1035; GFX10_1-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)1036; GFX10_1-NEXT: s_mov_b32 exec_lo, s41037; GFX10_1-NEXT: s_mov_b32 s33, s51038; GFX10_1-NEXT: s_waitcnt vmcnt(0)1039; GFX10_1-NEXT: s_setpc_b64 s[30:31]1040;1041; GFX10_3-LABEL: scalar_mov_materializes_frame_index_unavailable_scc_small_offset_fp:1042; GFX10_3: ; %bb.0:1043; GFX10_3-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1044; GFX10_3-NEXT: s_mov_b32 s5, s331045; GFX10_3-NEXT: s_mov_b32 s33, s321046; GFX10_3-NEXT: s_xor_saveexec_b32 s4, -11047; GFX10_3-NEXT: s_add_i32 s6, s33, 0x808001048; GFX10_3-NEXT: buffer_store_dword v0, off, s[0:3], s6 ; 4-byte Folded Spill1049; GFX10_3-NEXT: s_mov_b32 exec_lo, s41050; GFX10_3-NEXT: v_lshrrev_b32_e64 v1, 5, s331051; GFX10_3-NEXT: v_writelane_b32 v0, s55, 01052; GFX10_3-NEXT: s_add_i32 s32, s32, 0x810001053; GFX10_3-NEXT: s_and_b32 s4, 0, exec_lo1054; GFX10_3-NEXT: s_mov_b32 s32, s331055; GFX10_3-NEXT: v_add_nc_u32_e32 v1, 64, v11056; GFX10_3-NEXT: v_readfirstlane_b32 s55, v11057; GFX10_3-NEXT: ;;#ASMSTART1058; GFX10_3-NEXT: ; use s55, scc1059; GFX10_3-NEXT: ;;#ASMEND1060; GFX10_3-NEXT: v_readlane_b32 s55, v0, 01061; GFX10_3-NEXT: s_xor_saveexec_b32 s4, -11062; GFX10_3-NEXT: s_add_i32 s6, s33, 0x808001063; GFX10_3-NEXT: buffer_load_dword v0, off, s[0:3], s6 ; 4-byte Folded Reload1064; GFX10_3-NEXT: s_mov_b32 exec_lo, s41065; GFX10_3-NEXT: s_mov_b32 s33, s51066; GFX10_3-NEXT: s_waitcnt vmcnt(0)1067; GFX10_3-NEXT: s_setpc_b64 s[30:31]1068;1069; GFX11-LABEL: scalar_mov_materializes_frame_index_unavailable_scc_small_offset_fp:1070; GFX11: ; %bb.0:1071; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1072; GFX11-NEXT: s_mov_b32 s1, s331073; GFX11-NEXT: s_mov_b32 s33, s321074; GFX11-NEXT: s_xor_saveexec_b32 s0, -11075; GFX11-NEXT: s_add_i32 s2, s33, 0x40401076; GFX11-NEXT: scratch_store_b32 off, v0, s2 ; 4-byte Folded Spill1077; GFX11-NEXT: s_mov_b32 exec_lo, s01078; GFX11-NEXT: s_addk_i32 s32, 0x40801079; GFX11-NEXT: s_and_b32 s0, 0, exec_lo1080; GFX11-NEXT: v_writelane_b32 v0, s55, 01081; GFX11-NEXT: s_addc_u32 s0, s33, 641082; GFX11-NEXT: s_mov_b32 s32, s331083; GFX11-NEXT: s_bitcmp1_b32 s0, 01084; GFX11-NEXT: s_bitset0_b32 s0, 01085; GFX11-NEXT: s_delay_alu instid0(SALU_CYCLE_1)1086; GFX11-NEXT: s_mov_b32 s55, s01087; GFX11-NEXT: ;;#ASMSTART1088; GFX11-NEXT: ; use s55, scc1089; GFX11-NEXT: ;;#ASMEND1090; GFX11-NEXT: v_readlane_b32 s55, v0, 01091; GFX11-NEXT: s_xor_saveexec_b32 s0, -11092; GFX11-NEXT: s_add_i32 s2, s33, 0x40401093; GFX11-NEXT: scratch_load_b32 v0, off, s2 ; 4-byte Folded Reload1094; GFX11-NEXT: s_mov_b32 exec_lo, s01095; GFX11-NEXT: s_mov_b32 s33, s11096; GFX11-NEXT: s_waitcnt vmcnt(0)1097; GFX11-NEXT: s_setpc_b64 s[30:31]1098;1099; GFX12-LABEL: scalar_mov_materializes_frame_index_unavailable_scc_small_offset_fp:1100; GFX12: ; %bb.0:1101; GFX12-NEXT: s_wait_loadcnt_dscnt 0x01102; GFX12-NEXT: s_wait_expcnt 0x01103; GFX12-NEXT: s_wait_samplecnt 0x01104; GFX12-NEXT: s_wait_bvhcnt 0x01105; GFX12-NEXT: s_wait_kmcnt 0x01106; GFX12-NEXT: s_mov_b32 s1, s331107; GFX12-NEXT: s_mov_b32 s33, s321108; GFX12-NEXT: s_xor_saveexec_b32 s0, -11109; GFX12-NEXT: scratch_store_b32 off, v0, s33 offset:16384 ; 4-byte Folded Spill1110; GFX12-NEXT: s_wait_alu depctr_sa_sdst(0)1111; GFX12-NEXT: s_mov_b32 exec_lo, s01112; GFX12-NEXT: v_writelane_b32 v0, s55, 01113; GFX12-NEXT: s_addk_co_i32 s32, 0x40401114; GFX12-NEXT: s_mov_b32 s55, s331115; GFX12-NEXT: s_and_b32 s0, 0, exec_lo1116; GFX12-NEXT: ;;#ASMSTART1117; GFX12-NEXT: ; use s55, scc1118; GFX12-NEXT: ;;#ASMEND1119; GFX12-NEXT: v_readlane_b32 s55, v0, 01120; GFX12-NEXT: s_mov_b32 s32, s331121; GFX12-NEXT: s_xor_saveexec_b32 s0, -11122; GFX12-NEXT: scratch_load_b32 v0, off, s33 offset:16384 ; 4-byte Folded Reload1123; GFX12-NEXT: s_wait_alu depctr_sa_sdst(0)1124; GFX12-NEXT: s_mov_b32 exec_lo, s01125; GFX12-NEXT: s_mov_b32 s33, s11126; GFX12-NEXT: s_wait_loadcnt 0x01127; GFX12-NEXT: s_wait_alu depctr_sa_sdst(0)1128; GFX12-NEXT: s_setpc_b64 s[30:31]1129;1130; GFX8-LABEL: scalar_mov_materializes_frame_index_unavailable_scc_small_offset_fp:1131; GFX8: ; %bb.0:1132; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1133; GFX8-NEXT: s_mov_b32 s6, s331134; GFX8-NEXT: s_mov_b32 s33, s321135; GFX8-NEXT: s_xor_saveexec_b64 s[4:5], -11136; GFX8-NEXT: s_add_i32 s7, s33, 0x1010001137; GFX8-NEXT: buffer_store_dword v0, off, s[0:3], s7 ; 4-byte Folded Spill1138; GFX8-NEXT: s_mov_b64 exec, s[4:5]1139; GFX8-NEXT: v_writelane_b32 v0, s55, 01140; GFX8-NEXT: v_lshrrev_b32_e64 v1, 6, s331141; GFX8-NEXT: s_mov_b32 s55, 641142; GFX8-NEXT: v_add_u32_e32 v1, vcc, s55, v11143; GFX8-NEXT: s_add_i32 s32, s32, 0x1020001144; GFX8-NEXT: v_readfirstlane_b32 s55, v11145; GFX8-NEXT: s_and_b64 s[4:5], 0, exec1146; GFX8-NEXT: ;;#ASMSTART1147; GFX8-NEXT: ; use s55, scc1148; GFX8-NEXT: ;;#ASMEND1149; GFX8-NEXT: v_readlane_b32 s55, v0, 01150; GFX8-NEXT: s_mov_b32 s32, s331151; GFX8-NEXT: s_xor_saveexec_b64 s[4:5], -11152; GFX8-NEXT: s_add_i32 s7, s33, 0x1010001153; GFX8-NEXT: buffer_load_dword v0, off, s[0:3], s7 ; 4-byte Folded Reload1154; GFX8-NEXT: s_mov_b64 exec, s[4:5]1155; GFX8-NEXT: s_mov_b32 s33, s61156; GFX8-NEXT: s_waitcnt vmcnt(0)1157; GFX8-NEXT: s_setpc_b64 s[30:31]1158;1159; GFX900-LABEL: scalar_mov_materializes_frame_index_unavailable_scc_small_offset_fp:1160; GFX900: ; %bb.0:1161; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1162; GFX900-NEXT: s_mov_b32 s6, s331163; GFX900-NEXT: s_mov_b32 s33, s321164; GFX900-NEXT: s_xor_saveexec_b64 s[4:5], -11165; GFX900-NEXT: s_add_i32 s7, s33, 0x1010001166; GFX900-NEXT: buffer_store_dword v0, off, s[0:3], s7 ; 4-byte Folded Spill1167; GFX900-NEXT: s_mov_b64 exec, s[4:5]1168; GFX900-NEXT: v_lshrrev_b32_e64 v1, 6, s331169; GFX900-NEXT: v_add_u32_e32 v1, 64, v11170; GFX900-NEXT: s_add_i32 s32, s32, 0x1020001171; GFX900-NEXT: v_writelane_b32 v0, s55, 01172; GFX900-NEXT: v_readfirstlane_b32 s55, v11173; GFX900-NEXT: s_and_b64 s[4:5], 0, exec1174; GFX900-NEXT: ;;#ASMSTART1175; GFX900-NEXT: ; use s55, scc1176; GFX900-NEXT: ;;#ASMEND1177; GFX900-NEXT: v_readlane_b32 s55, v0, 01178; GFX900-NEXT: s_mov_b32 s32, s331179; GFX900-NEXT: s_xor_saveexec_b64 s[4:5], -11180; GFX900-NEXT: s_add_i32 s7, s33, 0x1010001181; GFX900-NEXT: buffer_load_dword v0, off, s[0:3], s7 ; 4-byte Folded Reload1182; GFX900-NEXT: s_mov_b64 exec, s[4:5]1183; GFX900-NEXT: s_mov_b32 s33, s61184; GFX900-NEXT: s_waitcnt vmcnt(0)1185; GFX900-NEXT: s_setpc_b64 s[30:31]1186;1187; GFX942-LABEL: scalar_mov_materializes_frame_index_unavailable_scc_small_offset_fp:1188; GFX942: ; %bb.0:1189; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1190; GFX942-NEXT: s_mov_b32 s2, s331191; GFX942-NEXT: s_mov_b32 s33, s321192; GFX942-NEXT: s_xor_saveexec_b64 s[0:1], -11193; GFX942-NEXT: s_add_i32 s3, s33, 0x40401194; GFX942-NEXT: scratch_store_dword off, v0, s3 ; 4-byte Folded Spill1195; GFX942-NEXT: s_mov_b64 exec, s[0:1]1196; GFX942-NEXT: s_addk_i32 s32, 0x40801197; GFX942-NEXT: s_and_b64 s[0:1], 0, exec1198; GFX942-NEXT: s_addc_u32 s0, s33, 641199; GFX942-NEXT: s_bitcmp1_b32 s0, 01200; GFX942-NEXT: s_bitset0_b32 s0, 01201; GFX942-NEXT: v_writelane_b32 v0, s55, 01202; GFX942-NEXT: s_mov_b32 s55, s01203; GFX942-NEXT: ;;#ASMSTART1204; GFX942-NEXT: ; use s55, scc1205; GFX942-NEXT: ;;#ASMEND1206; GFX942-NEXT: v_readlane_b32 s55, v0, 01207; GFX942-NEXT: s_mov_b32 s32, s331208; GFX942-NEXT: s_xor_saveexec_b64 s[0:1], -11209; GFX942-NEXT: s_add_i32 s3, s33, 0x40401210; GFX942-NEXT: scratch_load_dword v0, off, s3 ; 4-byte Folded Reload1211; GFX942-NEXT: s_mov_b64 exec, s[0:1]1212; GFX942-NEXT: s_mov_b32 s33, s21213; GFX942-NEXT: s_waitcnt vmcnt(0)1214; GFX942-NEXT: s_setpc_b64 s[30:31]1215 %alloca0 = alloca [4096 x i32], align 64, addrspace(5)1216 call void asm sideeffect "; use $0, $1", "{s55},{scc}"(ptr addrspace(5) %alloca0, i32 0)1217 ret void1218}1219 1220define void @scalar_mov_materializes_frame_index_available_scc_small_offset_fp() #1 {1221; GFX10_1-LABEL: scalar_mov_materializes_frame_index_available_scc_small_offset_fp:1222; GFX10_1: ; %bb.0:1223; GFX10_1-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1224; GFX10_1-NEXT: s_mov_b32 s4, s331225; GFX10_1-NEXT: s_mov_b32 s33, s321226; GFX10_1-NEXT: s_xor_saveexec_b32 s5, -11227; GFX10_1-NEXT: s_add_i32 s6, s33, 0x808001228; GFX10_1-NEXT: buffer_store_dword v0, off, s[0:3], s6 ; 4-byte Folded Spill1229; GFX10_1-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)1230; GFX10_1-NEXT: s_mov_b32 exec_lo, s51231; GFX10_1-NEXT: v_writelane_b32 v0, s55, 01232; GFX10_1-NEXT: s_add_i32 s32, s32, 0x810001233; GFX10_1-NEXT: s_lshr_b32 s55, s33, 51234; GFX10_1-NEXT: s_mov_b32 s32, s331235; GFX10_1-NEXT: s_add_i32 s55, s55, 641236; GFX10_1-NEXT: ;;#ASMSTART1237; GFX10_1-NEXT: ; use s551238; GFX10_1-NEXT: ;;#ASMEND1239; GFX10_1-NEXT: v_readlane_b32 s55, v0, 01240; GFX10_1-NEXT: s_xor_saveexec_b32 s5, -11241; GFX10_1-NEXT: s_add_i32 s6, s33, 0x808001242; GFX10_1-NEXT: buffer_load_dword v0, off, s[0:3], s6 ; 4-byte Folded Reload1243; GFX10_1-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)1244; GFX10_1-NEXT: s_mov_b32 exec_lo, s51245; GFX10_1-NEXT: s_mov_b32 s33, s41246; GFX10_1-NEXT: s_waitcnt vmcnt(0)1247; GFX10_1-NEXT: s_setpc_b64 s[30:31]1248;1249; GFX10_3-LABEL: scalar_mov_materializes_frame_index_available_scc_small_offset_fp:1250; GFX10_3: ; %bb.0:1251; GFX10_3-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1252; GFX10_3-NEXT: s_mov_b32 s4, s331253; GFX10_3-NEXT: s_mov_b32 s33, s321254; GFX10_3-NEXT: s_xor_saveexec_b32 s5, -11255; GFX10_3-NEXT: s_add_i32 s6, s33, 0x808001256; GFX10_3-NEXT: buffer_store_dword v0, off, s[0:3], s6 ; 4-byte Folded Spill1257; GFX10_3-NEXT: s_mov_b32 exec_lo, s51258; GFX10_3-NEXT: v_writelane_b32 v0, s55, 01259; GFX10_3-NEXT: s_add_i32 s32, s32, 0x810001260; GFX10_3-NEXT: s_lshr_b32 s55, s33, 51261; GFX10_3-NEXT: s_mov_b32 s32, s331262; GFX10_3-NEXT: s_add_i32 s55, s55, 641263; GFX10_3-NEXT: ;;#ASMSTART1264; GFX10_3-NEXT: ; use s551265; GFX10_3-NEXT: ;;#ASMEND1266; GFX10_3-NEXT: v_readlane_b32 s55, v0, 01267; GFX10_3-NEXT: s_xor_saveexec_b32 s5, -11268; GFX10_3-NEXT: s_add_i32 s6, s33, 0x808001269; GFX10_3-NEXT: buffer_load_dword v0, off, s[0:3], s6 ; 4-byte Folded Reload1270; GFX10_3-NEXT: s_mov_b32 exec_lo, s51271; GFX10_3-NEXT: s_mov_b32 s33, s41272; GFX10_3-NEXT: s_waitcnt vmcnt(0)1273; GFX10_3-NEXT: s_setpc_b64 s[30:31]1274;1275; GFX11-LABEL: scalar_mov_materializes_frame_index_available_scc_small_offset_fp:1276; GFX11: ; %bb.0:1277; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1278; GFX11-NEXT: s_mov_b32 s0, s331279; GFX11-NEXT: s_mov_b32 s33, s321280; GFX11-NEXT: s_xor_saveexec_b32 s1, -11281; GFX11-NEXT: s_add_i32 s2, s33, 0x40401282; GFX11-NEXT: scratch_store_b32 off, v0, s2 ; 4-byte Folded Spill1283; GFX11-NEXT: s_mov_b32 exec_lo, s11284; GFX11-NEXT: v_writelane_b32 v0, s55, 01285; GFX11-NEXT: s_addk_i32 s32, 0x40801286; GFX11-NEXT: s_add_i32 s1, s33, 641287; GFX11-NEXT: s_mov_b32 s32, s331288; GFX11-NEXT: s_mov_b32 s55, s11289; GFX11-NEXT: ;;#ASMSTART1290; GFX11-NEXT: ; use s551291; GFX11-NEXT: ;;#ASMEND1292; GFX11-NEXT: v_readlane_b32 s55, v0, 01293; GFX11-NEXT: s_xor_saveexec_b32 s1, -11294; GFX11-NEXT: s_add_i32 s2, s33, 0x40401295; GFX11-NEXT: scratch_load_b32 v0, off, s2 ; 4-byte Folded Reload1296; GFX11-NEXT: s_mov_b32 exec_lo, s11297; GFX11-NEXT: s_mov_b32 s33, s01298; GFX11-NEXT: s_waitcnt vmcnt(0)1299; GFX11-NEXT: s_setpc_b64 s[30:31]1300;1301; GFX12-LABEL: scalar_mov_materializes_frame_index_available_scc_small_offset_fp:1302; GFX12: ; %bb.0:1303; GFX12-NEXT: s_wait_loadcnt_dscnt 0x01304; GFX12-NEXT: s_wait_expcnt 0x01305; GFX12-NEXT: s_wait_samplecnt 0x01306; GFX12-NEXT: s_wait_bvhcnt 0x01307; GFX12-NEXT: s_wait_kmcnt 0x01308; GFX12-NEXT: s_mov_b32 s0, s331309; GFX12-NEXT: s_mov_b32 s33, s321310; GFX12-NEXT: s_xor_saveexec_b32 s1, -11311; GFX12-NEXT: scratch_store_b32 off, v0, s33 offset:16384 ; 4-byte Folded Spill1312; GFX12-NEXT: s_wait_alu depctr_sa_sdst(0)1313; GFX12-NEXT: s_mov_b32 exec_lo, s11314; GFX12-NEXT: v_writelane_b32 v0, s55, 01315; GFX12-NEXT: s_addk_co_i32 s32, 0x40401316; GFX12-NEXT: s_mov_b32 s55, s331317; GFX12-NEXT: ;;#ASMSTART1318; GFX12-NEXT: ; use s551319; GFX12-NEXT: ;;#ASMEND1320; GFX12-NEXT: s_mov_b32 s32, s331321; GFX12-NEXT: v_readlane_b32 s55, v0, 01322; GFX12-NEXT: s_xor_saveexec_b32 s1, -11323; GFX12-NEXT: scratch_load_b32 v0, off, s33 offset:16384 ; 4-byte Folded Reload1324; GFX12-NEXT: s_wait_alu depctr_sa_sdst(0)1325; GFX12-NEXT: s_mov_b32 exec_lo, s11326; GFX12-NEXT: s_mov_b32 s33, s01327; GFX12-NEXT: s_wait_loadcnt 0x01328; GFX12-NEXT: s_wait_alu depctr_sa_sdst(0)1329; GFX12-NEXT: s_setpc_b64 s[30:31]1330;1331; GFX8-LABEL: scalar_mov_materializes_frame_index_available_scc_small_offset_fp:1332; GFX8: ; %bb.0:1333; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1334; GFX8-NEXT: s_mov_b32 s4, s331335; GFX8-NEXT: s_mov_b32 s33, s321336; GFX8-NEXT: s_xor_saveexec_b64 s[6:7], -11337; GFX8-NEXT: s_add_i32 s5, s33, 0x1010001338; GFX8-NEXT: buffer_store_dword v0, off, s[0:3], s5 ; 4-byte Folded Spill1339; GFX8-NEXT: s_mov_b64 exec, s[6:7]1340; GFX8-NEXT: s_add_i32 s32, s32, 0x1020001341; GFX8-NEXT: v_writelane_b32 v0, s55, 01342; GFX8-NEXT: s_lshr_b32 s55, s33, 61343; GFX8-NEXT: s_add_i32 s55, s55, 641344; GFX8-NEXT: ;;#ASMSTART1345; GFX8-NEXT: ; use s551346; GFX8-NEXT: ;;#ASMEND1347; GFX8-NEXT: v_readlane_b32 s55, v0, 01348; GFX8-NEXT: s_mov_b32 s32, s331349; GFX8-NEXT: s_xor_saveexec_b64 s[6:7], -11350; GFX8-NEXT: s_add_i32 s5, s33, 0x1010001351; GFX8-NEXT: buffer_load_dword v0, off, s[0:3], s5 ; 4-byte Folded Reload1352; GFX8-NEXT: s_mov_b64 exec, s[6:7]1353; GFX8-NEXT: s_mov_b32 s33, s41354; GFX8-NEXT: s_waitcnt vmcnt(0)1355; GFX8-NEXT: s_setpc_b64 s[30:31]1356;1357; GFX900-LABEL: scalar_mov_materializes_frame_index_available_scc_small_offset_fp:1358; GFX900: ; %bb.0:1359; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1360; GFX900-NEXT: s_mov_b32 s4, s331361; GFX900-NEXT: s_mov_b32 s33, s321362; GFX900-NEXT: s_xor_saveexec_b64 s[6:7], -11363; GFX900-NEXT: s_add_i32 s5, s33, 0x1010001364; GFX900-NEXT: buffer_store_dword v0, off, s[0:3], s5 ; 4-byte Folded Spill1365; GFX900-NEXT: s_mov_b64 exec, s[6:7]1366; GFX900-NEXT: s_add_i32 s32, s32, 0x1020001367; GFX900-NEXT: v_writelane_b32 v0, s55, 01368; GFX900-NEXT: s_lshr_b32 s55, s33, 61369; GFX900-NEXT: s_add_i32 s55, s55, 641370; GFX900-NEXT: ;;#ASMSTART1371; GFX900-NEXT: ; use s551372; GFX900-NEXT: ;;#ASMEND1373; GFX900-NEXT: v_readlane_b32 s55, v0, 01374; GFX900-NEXT: s_mov_b32 s32, s331375; GFX900-NEXT: s_xor_saveexec_b64 s[6:7], -11376; GFX900-NEXT: s_add_i32 s5, s33, 0x1010001377; GFX900-NEXT: buffer_load_dword v0, off, s[0:3], s5 ; 4-byte Folded Reload1378; GFX900-NEXT: s_mov_b64 exec, s[6:7]1379; GFX900-NEXT: s_mov_b32 s33, s41380; GFX900-NEXT: s_waitcnt vmcnt(0)1381; GFX900-NEXT: s_setpc_b64 s[30:31]1382;1383; GFX942-LABEL: scalar_mov_materializes_frame_index_available_scc_small_offset_fp:1384; GFX942: ; %bb.0:1385; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1386; GFX942-NEXT: s_mov_b32 s0, s331387; GFX942-NEXT: s_mov_b32 s33, s321388; GFX942-NEXT: s_xor_saveexec_b64 s[2:3], -11389; GFX942-NEXT: s_add_i32 s1, s33, 0x40401390; GFX942-NEXT: scratch_store_dword off, v0, s1 ; 4-byte Folded Spill1391; GFX942-NEXT: s_mov_b64 exec, s[2:3]1392; GFX942-NEXT: s_addk_i32 s32, 0x40801393; GFX942-NEXT: s_add_i32 s1, s33, 641394; GFX942-NEXT: v_writelane_b32 v0, s55, 01395; GFX942-NEXT: s_mov_b32 s55, s11396; GFX942-NEXT: ;;#ASMSTART1397; GFX942-NEXT: ; use s551398; GFX942-NEXT: ;;#ASMEND1399; GFX942-NEXT: v_readlane_b32 s55, v0, 01400; GFX942-NEXT: s_mov_b32 s32, s331401; GFX942-NEXT: s_xor_saveexec_b64 s[2:3], -11402; GFX942-NEXT: s_add_i32 s1, s33, 0x40401403; GFX942-NEXT: scratch_load_dword v0, off, s1 ; 4-byte Folded Reload1404; GFX942-NEXT: s_mov_b64 exec, s[2:3]1405; GFX942-NEXT: s_mov_b32 s33, s01406; GFX942-NEXT: s_waitcnt vmcnt(0)1407; GFX942-NEXT: s_setpc_b64 s[30:31]1408 %alloca0 = alloca [4096 x i32], align 64, addrspace(5)1409 call void asm sideeffect "; use $0", "{s55}"(ptr addrspace(5) %alloca0)1410 ret void1411}1412 1413define void @scalar_mov_materializes_frame_index_unavailable_scc__gep_immoffset() #0 {1414; GFX10_1-LABEL: scalar_mov_materializes_frame_index_unavailable_scc__gep_immoffset:1415; GFX10_1: ; %bb.0:1416; GFX10_1-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1417; GFX10_1-NEXT: s_xor_saveexec_b32 s4, -11418; GFX10_1-NEXT: s_add_i32 s5, s32, 0x1008001419; GFX10_1-NEXT: buffer_store_dword v1, off, s[0:3], s5 ; 4-byte Folded Spill1420; GFX10_1-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)1421; GFX10_1-NEXT: s_mov_b32 exec_lo, s41422; GFX10_1-NEXT: v_writelane_b32 v1, s55, 01423; GFX10_1-NEXT: v_lshrrev_b32_e64 v0, 5, s321424; GFX10_1-NEXT: s_lshr_b32 s4, s32, 51425; GFX10_1-NEXT: s_add_i32 s55, s4, 0x442c1426; GFX10_1-NEXT: s_and_b32 s4, 0, exec_lo1427; GFX10_1-NEXT: v_add_nc_u32_e32 v0, 64, v01428; GFX10_1-NEXT: ;;#ASMSTART1429; GFX10_1-NEXT: ; use alloca0 v01430; GFX10_1-NEXT: ;;#ASMEND1431; GFX10_1-NEXT: ;;#ASMSTART1432; GFX10_1-NEXT: ; use s55, scc1433; GFX10_1-NEXT: ;;#ASMEND1434; GFX10_1-NEXT: v_readlane_b32 s55, v1, 01435; GFX10_1-NEXT: s_xor_saveexec_b32 s4, -11436; GFX10_1-NEXT: s_add_i32 s5, s32, 0x1008001437; GFX10_1-NEXT: buffer_load_dword v1, off, s[0:3], s5 ; 4-byte Folded Reload1438; GFX10_1-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)1439; GFX10_1-NEXT: s_mov_b32 exec_lo, s41440; GFX10_1-NEXT: s_waitcnt vmcnt(0)1441; GFX10_1-NEXT: s_setpc_b64 s[30:31]1442;1443; GFX10_3-LABEL: scalar_mov_materializes_frame_index_unavailable_scc__gep_immoffset:1444; GFX10_3: ; %bb.0:1445; GFX10_3-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1446; GFX10_3-NEXT: s_xor_saveexec_b32 s4, -11447; GFX10_3-NEXT: s_add_i32 s5, s32, 0x1008001448; GFX10_3-NEXT: buffer_store_dword v1, off, s[0:3], s5 ; 4-byte Folded Spill1449; GFX10_3-NEXT: s_mov_b32 exec_lo, s41450; GFX10_3-NEXT: v_writelane_b32 v1, s55, 01451; GFX10_3-NEXT: v_lshrrev_b32_e64 v0, 5, s321452; GFX10_3-NEXT: s_lshr_b32 s4, s32, 51453; GFX10_3-NEXT: s_add_i32 s55, s4, 0x442c1454; GFX10_3-NEXT: s_and_b32 s4, 0, exec_lo1455; GFX10_3-NEXT: v_add_nc_u32_e32 v0, 64, v01456; GFX10_3-NEXT: ;;#ASMSTART1457; GFX10_3-NEXT: ; use alloca0 v01458; GFX10_3-NEXT: ;;#ASMEND1459; GFX10_3-NEXT: ;;#ASMSTART1460; GFX10_3-NEXT: ; use s55, scc1461; GFX10_3-NEXT: ;;#ASMEND1462; GFX10_3-NEXT: v_readlane_b32 s55, v1, 01463; GFX10_3-NEXT: s_xor_saveexec_b32 s4, -11464; GFX10_3-NEXT: s_add_i32 s5, s32, 0x1008001465; GFX10_3-NEXT: buffer_load_dword v1, off, s[0:3], s5 ; 4-byte Folded Reload1466; GFX10_3-NEXT: s_mov_b32 exec_lo, s41467; GFX10_3-NEXT: s_waitcnt vmcnt(0)1468; GFX10_3-NEXT: s_setpc_b64 s[30:31]1469;1470; GFX11-LABEL: scalar_mov_materializes_frame_index_unavailable_scc__gep_immoffset:1471; GFX11: ; %bb.0:1472; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1473; GFX11-NEXT: s_xor_saveexec_b32 s0, -11474; GFX11-NEXT: s_add_i32 s1, s32, 0x80401475; GFX11-NEXT: scratch_store_b32 off, v1, s1 ; 4-byte Folded Spill1476; GFX11-NEXT: s_mov_b32 exec_lo, s01477; GFX11-NEXT: v_writelane_b32 v1, s55, 01478; GFX11-NEXT: s_add_i32 s0, s32, 641479; GFX11-NEXT: s_add_i32 s55, s32, 0x442c1480; GFX11-NEXT: v_mov_b32_e32 v0, s01481; GFX11-NEXT: s_and_b32 s0, 0, exec_lo1482; GFX11-NEXT: ;;#ASMSTART1483; GFX11-NEXT: ; use alloca0 v01484; GFX11-NEXT: ;;#ASMEND1485; GFX11-NEXT: ;;#ASMSTART1486; GFX11-NEXT: ; use s55, scc1487; GFX11-NEXT: ;;#ASMEND1488; GFX11-NEXT: v_readlane_b32 s55, v1, 01489; GFX11-NEXT: s_xor_saveexec_b32 s0, -11490; GFX11-NEXT: s_add_i32 s1, s32, 0x80401491; GFX11-NEXT: scratch_load_b32 v1, off, s1 ; 4-byte Folded Reload1492; GFX11-NEXT: s_mov_b32 exec_lo, s01493; GFX11-NEXT: s_waitcnt vmcnt(0)1494; GFX11-NEXT: s_setpc_b64 s[30:31]1495;1496; GFX12-LABEL: scalar_mov_materializes_frame_index_unavailable_scc__gep_immoffset:1497; GFX12: ; %bb.0:1498; GFX12-NEXT: s_wait_loadcnt_dscnt 0x01499; GFX12-NEXT: s_wait_expcnt 0x01500; GFX12-NEXT: s_wait_samplecnt 0x01501; GFX12-NEXT: s_wait_bvhcnt 0x01502; GFX12-NEXT: s_wait_kmcnt 0x01503; GFX12-NEXT: s_xor_saveexec_b32 s0, -11504; GFX12-NEXT: scratch_store_b32 off, v1, s32 offset:32768 ; 4-byte Folded Spill1505; GFX12-NEXT: s_wait_alu depctr_sa_sdst(0)1506; GFX12-NEXT: s_mov_b32 exec_lo, s01507; GFX12-NEXT: v_writelane_b32 v1, s55, 01508; GFX12-NEXT: s_add_co_i32 s55, s32, 0x43ec1509; GFX12-NEXT: v_mov_b32_e32 v0, s321510; GFX12-NEXT: s_and_b32 s0, 0, exec_lo1511; GFX12-NEXT: ;;#ASMSTART1512; GFX12-NEXT: ; use alloca0 v01513; GFX12-NEXT: ;;#ASMEND1514; GFX12-NEXT: ;;#ASMSTART1515; GFX12-NEXT: ; use s55, scc1516; GFX12-NEXT: ;;#ASMEND1517; GFX12-NEXT: v_readlane_b32 s55, v1, 01518; GFX12-NEXT: s_xor_saveexec_b32 s0, -11519; GFX12-NEXT: scratch_load_b32 v1, off, s32 offset:32768 ; 4-byte Folded Reload1520; GFX12-NEXT: s_wait_alu depctr_sa_sdst(0)1521; GFX12-NEXT: s_mov_b32 exec_lo, s01522; GFX12-NEXT: s_wait_loadcnt 0x01523; GFX12-NEXT: s_setpc_b64 s[30:31]1524;1525; GFX8-LABEL: scalar_mov_materializes_frame_index_unavailable_scc__gep_immoffset:1526; GFX8: ; %bb.0:1527; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1528; GFX8-NEXT: s_xor_saveexec_b64 s[4:5], -11529; GFX8-NEXT: s_add_i32 s6, s32, 0x2010001530; GFX8-NEXT: buffer_store_dword v1, off, s[0:3], s6 ; 4-byte Folded Spill1531; GFX8-NEXT: s_mov_b64 exec, s[4:5]1532; GFX8-NEXT: s_lshr_b32 s4, s32, 61533; GFX8-NEXT: v_writelane_b32 v1, s55, 01534; GFX8-NEXT: s_add_i32 s55, s4, 0x442c1535; GFX8-NEXT: v_lshrrev_b32_e64 v0, 6, s321536; GFX8-NEXT: v_add_u32_e32 v0, vcc, 64, v01537; GFX8-NEXT: ;;#ASMSTART1538; GFX8-NEXT: ; use alloca0 v01539; GFX8-NEXT: ;;#ASMEND1540; GFX8-NEXT: s_and_b64 s[4:5], 0, exec1541; GFX8-NEXT: ;;#ASMSTART1542; GFX8-NEXT: ; use s55, scc1543; GFX8-NEXT: ;;#ASMEND1544; GFX8-NEXT: v_readlane_b32 s55, v1, 01545; GFX8-NEXT: s_xor_saveexec_b64 s[4:5], -11546; GFX8-NEXT: s_add_i32 s6, s32, 0x2010001547; GFX8-NEXT: buffer_load_dword v1, off, s[0:3], s6 ; 4-byte Folded Reload1548; GFX8-NEXT: s_mov_b64 exec, s[4:5]1549; GFX8-NEXT: s_waitcnt vmcnt(0)1550; GFX8-NEXT: s_setpc_b64 s[30:31]1551;1552; GFX900-LABEL: scalar_mov_materializes_frame_index_unavailable_scc__gep_immoffset:1553; GFX900: ; %bb.0:1554; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1555; GFX900-NEXT: s_xor_saveexec_b64 s[4:5], -11556; GFX900-NEXT: s_add_i32 s6, s32, 0x2010001557; GFX900-NEXT: buffer_store_dword v1, off, s[0:3], s6 ; 4-byte Folded Spill1558; GFX900-NEXT: s_mov_b64 exec, s[4:5]1559; GFX900-NEXT: s_lshr_b32 s4, s32, 61560; GFX900-NEXT: v_writelane_b32 v1, s55, 01561; GFX900-NEXT: s_add_i32 s55, s4, 0x442c1562; GFX900-NEXT: v_lshrrev_b32_e64 v0, 6, s321563; GFX900-NEXT: v_add_u32_e32 v0, 64, v01564; GFX900-NEXT: ;;#ASMSTART1565; GFX900-NEXT: ; use alloca0 v01566; GFX900-NEXT: ;;#ASMEND1567; GFX900-NEXT: s_and_b64 s[4:5], 0, exec1568; GFX900-NEXT: ;;#ASMSTART1569; GFX900-NEXT: ; use s55, scc1570; GFX900-NEXT: ;;#ASMEND1571; GFX900-NEXT: v_readlane_b32 s55, v1, 01572; GFX900-NEXT: s_xor_saveexec_b64 s[4:5], -11573; GFX900-NEXT: s_add_i32 s6, s32, 0x2010001574; GFX900-NEXT: buffer_load_dword v1, off, s[0:3], s6 ; 4-byte Folded Reload1575; GFX900-NEXT: s_mov_b64 exec, s[4:5]1576; GFX900-NEXT: s_waitcnt vmcnt(0)1577; GFX900-NEXT: s_setpc_b64 s[30:31]1578;1579; GFX942-LABEL: scalar_mov_materializes_frame_index_unavailable_scc__gep_immoffset:1580; GFX942: ; %bb.0:1581; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1582; GFX942-NEXT: s_xor_saveexec_b64 s[0:1], -11583; GFX942-NEXT: s_add_i32 s2, s32, 0x80401584; GFX942-NEXT: scratch_store_dword off, v1, s2 ; 4-byte Folded Spill1585; GFX942-NEXT: s_mov_b64 exec, s[0:1]1586; GFX942-NEXT: v_writelane_b32 v1, s55, 01587; GFX942-NEXT: s_add_i32 s55, s32, 0x442c1588; GFX942-NEXT: s_add_i32 s0, s32, 641589; GFX942-NEXT: v_mov_b32_e32 v0, s01590; GFX942-NEXT: ;;#ASMSTART1591; GFX942-NEXT: ; use alloca0 v01592; GFX942-NEXT: ;;#ASMEND1593; GFX942-NEXT: s_and_b64 s[0:1], 0, exec1594; GFX942-NEXT: ;;#ASMSTART1595; GFX942-NEXT: ; use s55, scc1596; GFX942-NEXT: ;;#ASMEND1597; GFX942-NEXT: v_readlane_b32 s55, v1, 01598; GFX942-NEXT: s_xor_saveexec_b64 s[0:1], -11599; GFX942-NEXT: s_add_i32 s2, s32, 0x80401600; GFX942-NEXT: scratch_load_dword v1, off, s2 ; 4-byte Folded Reload1601; GFX942-NEXT: s_mov_b64 exec, s[0:1]1602; GFX942-NEXT: s_waitcnt vmcnt(0)1603; GFX942-NEXT: s_setpc_b64 s[30:31]1604 %alloca0 = alloca [4096 x i32], align 64, addrspace(5)1605 %alloca1 = alloca [4096 x i32], align 4, addrspace(5)1606 %alloca1.offset = getelementptr [4096 x i32], ptr addrspace(5) %alloca1, i32 0, i32 2511607 call void asm sideeffect "; use alloca0 $0", "v"(ptr addrspace(5) %alloca0)1608 call void asm sideeffect "; use $0, $1", "{s55},{scc}"(ptr addrspace(5) %alloca1.offset, i32 0)1609 ret void1610}1611 1612define void @scalar_mov_materializes_frame_index_unavailable_scc__gep_sgpr_offset(i32 inreg %soffset) #0 {1613; GFX10_1-LABEL: scalar_mov_materializes_frame_index_unavailable_scc__gep_sgpr_offset:1614; GFX10_1: ; %bb.0:1615; GFX10_1-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1616; GFX10_1-NEXT: s_xor_saveexec_b32 s4, -11617; GFX10_1-NEXT: s_add_i32 s5, s32, 0x1008001618; GFX10_1-NEXT: buffer_store_dword v1, off, s[0:3], s5 ; 4-byte Folded Spill1619; GFX10_1-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)1620; GFX10_1-NEXT: s_mov_b32 exec_lo, s41621; GFX10_1-NEXT: v_writelane_b32 v1, s55, 01622; GFX10_1-NEXT: v_lshrrev_b32_e64 v0, 5, s321623; GFX10_1-NEXT: s_lshr_b32 s4, s32, 51624; GFX10_1-NEXT: s_addk_i32 s4, 0x40401625; GFX10_1-NEXT: s_lshl2_add_u32 s55, s16, s41626; GFX10_1-NEXT: v_add_nc_u32_e32 v0, 64, v01627; GFX10_1-NEXT: s_and_b32 s4, 0, exec_lo1628; GFX10_1-NEXT: ;;#ASMSTART1629; GFX10_1-NEXT: ; use alloca0 v01630; GFX10_1-NEXT: ;;#ASMEND1631; GFX10_1-NEXT: ;;#ASMSTART1632; GFX10_1-NEXT: ; use s55, scc1633; GFX10_1-NEXT: ;;#ASMEND1634; GFX10_1-NEXT: v_readlane_b32 s55, v1, 01635; GFX10_1-NEXT: s_xor_saveexec_b32 s4, -11636; GFX10_1-NEXT: s_add_i32 s5, s32, 0x1008001637; GFX10_1-NEXT: buffer_load_dword v1, off, s[0:3], s5 ; 4-byte Folded Reload1638; GFX10_1-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)1639; GFX10_1-NEXT: s_mov_b32 exec_lo, s41640; GFX10_1-NEXT: s_waitcnt vmcnt(0)1641; GFX10_1-NEXT: s_setpc_b64 s[30:31]1642;1643; GFX10_3-LABEL: scalar_mov_materializes_frame_index_unavailable_scc__gep_sgpr_offset:1644; GFX10_3: ; %bb.0:1645; GFX10_3-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1646; GFX10_3-NEXT: s_xor_saveexec_b32 s4, -11647; GFX10_3-NEXT: s_add_i32 s5, s32, 0x1008001648; GFX10_3-NEXT: buffer_store_dword v1, off, s[0:3], s5 ; 4-byte Folded Spill1649; GFX10_3-NEXT: s_mov_b32 exec_lo, s41650; GFX10_3-NEXT: v_writelane_b32 v1, s55, 01651; GFX10_3-NEXT: v_lshrrev_b32_e64 v0, 5, s321652; GFX10_3-NEXT: s_lshr_b32 s4, s32, 51653; GFX10_3-NEXT: s_addk_i32 s4, 0x40401654; GFX10_3-NEXT: s_lshl2_add_u32 s55, s16, s41655; GFX10_3-NEXT: v_add_nc_u32_e32 v0, 64, v01656; GFX10_3-NEXT: s_and_b32 s4, 0, exec_lo1657; GFX10_3-NEXT: ;;#ASMSTART1658; GFX10_3-NEXT: ; use alloca0 v01659; GFX10_3-NEXT: ;;#ASMEND1660; GFX10_3-NEXT: ;;#ASMSTART1661; GFX10_3-NEXT: ; use s55, scc1662; GFX10_3-NEXT: ;;#ASMEND1663; GFX10_3-NEXT: v_readlane_b32 s55, v1, 01664; GFX10_3-NEXT: s_xor_saveexec_b32 s4, -11665; GFX10_3-NEXT: s_add_i32 s5, s32, 0x1008001666; GFX10_3-NEXT: buffer_load_dword v1, off, s[0:3], s5 ; 4-byte Folded Reload1667; GFX10_3-NEXT: s_mov_b32 exec_lo, s41668; GFX10_3-NEXT: s_waitcnt vmcnt(0)1669; GFX10_3-NEXT: s_setpc_b64 s[30:31]1670;1671; GFX11-LABEL: scalar_mov_materializes_frame_index_unavailable_scc__gep_sgpr_offset:1672; GFX11: ; %bb.0:1673; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1674; GFX11-NEXT: s_xor_saveexec_b32 s1, -11675; GFX11-NEXT: s_add_i32 s2, s32, 0x80401676; GFX11-NEXT: scratch_store_b32 off, v1, s2 ; 4-byte Folded Spill1677; GFX11-NEXT: s_mov_b32 exec_lo, s11678; GFX11-NEXT: v_writelane_b32 v1, s55, 01679; GFX11-NEXT: s_add_i32 s1, s32, 641680; GFX11-NEXT: s_delay_alu instid0(SALU_CYCLE_1)1681; GFX11-NEXT: v_mov_b32_e32 v0, s11682; GFX11-NEXT: s_add_i32 s1, s32, 0x40401683; GFX11-NEXT: ;;#ASMSTART1684; GFX11-NEXT: ; use alloca0 v01685; GFX11-NEXT: ;;#ASMEND1686; GFX11-NEXT: s_lshl2_add_u32 s55, s0, s11687; GFX11-NEXT: s_and_b32 s0, 0, exec_lo1688; GFX11-NEXT: ;;#ASMSTART1689; GFX11-NEXT: ; use s55, scc1690; GFX11-NEXT: ;;#ASMEND1691; GFX11-NEXT: v_readlane_b32 s55, v1, 01692; GFX11-NEXT: s_xor_saveexec_b32 s0, -11693; GFX11-NEXT: s_add_i32 s1, s32, 0x80401694; GFX11-NEXT: scratch_load_b32 v1, off, s1 ; 4-byte Folded Reload1695; GFX11-NEXT: s_mov_b32 exec_lo, s01696; GFX11-NEXT: s_waitcnt vmcnt(0)1697; GFX11-NEXT: s_setpc_b64 s[30:31]1698;1699; GFX12-LABEL: scalar_mov_materializes_frame_index_unavailable_scc__gep_sgpr_offset:1700; GFX12: ; %bb.0:1701; GFX12-NEXT: s_wait_loadcnt_dscnt 0x01702; GFX12-NEXT: s_wait_expcnt 0x01703; GFX12-NEXT: s_wait_samplecnt 0x01704; GFX12-NEXT: s_wait_bvhcnt 0x01705; GFX12-NEXT: s_wait_kmcnt 0x01706; GFX12-NEXT: s_xor_saveexec_b32 s1, -11707; GFX12-NEXT: scratch_store_b32 off, v1, s32 offset:32768 ; 4-byte Folded Spill1708; GFX12-NEXT: s_wait_alu depctr_sa_sdst(0)1709; GFX12-NEXT: s_mov_b32 exec_lo, s11710; GFX12-NEXT: v_writelane_b32 v1, s55, 01711; GFX12-NEXT: s_add_co_i32 s1, s32, 0x40001712; GFX12-NEXT: v_mov_b32_e32 v0, s321713; GFX12-NEXT: s_wait_alu depctr_sa_sdst(0)1714; GFX12-NEXT: s_lshl2_add_u32 s55, s0, s11715; GFX12-NEXT: s_and_b32 s0, 0, exec_lo1716; GFX12-NEXT: ;;#ASMSTART1717; GFX12-NEXT: ; use alloca0 v01718; GFX12-NEXT: ;;#ASMEND1719; GFX12-NEXT: ;;#ASMSTART1720; GFX12-NEXT: ; use s55, scc1721; GFX12-NEXT: ;;#ASMEND1722; GFX12-NEXT: v_readlane_b32 s55, v1, 01723; GFX12-NEXT: s_xor_saveexec_b32 s0, -11724; GFX12-NEXT: scratch_load_b32 v1, off, s32 offset:32768 ; 4-byte Folded Reload1725; GFX12-NEXT: s_wait_alu depctr_sa_sdst(0)1726; GFX12-NEXT: s_mov_b32 exec_lo, s01727; GFX12-NEXT: s_wait_loadcnt 0x01728; GFX12-NEXT: s_setpc_b64 s[30:31]1729;1730; GFX8-LABEL: scalar_mov_materializes_frame_index_unavailable_scc__gep_sgpr_offset:1731; GFX8: ; %bb.0:1732; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1733; GFX8-NEXT: s_xor_saveexec_b64 s[4:5], -11734; GFX8-NEXT: s_add_i32 s6, s32, 0x2010001735; GFX8-NEXT: buffer_store_dword v1, off, s[0:3], s6 ; 4-byte Folded Spill1736; GFX8-NEXT: s_mov_b64 exec, s[4:5]1737; GFX8-NEXT: v_writelane_b32 v1, s55, 01738; GFX8-NEXT: s_lshl_b32 s4, s16, 21739; GFX8-NEXT: s_lshr_b32 s55, s32, 61740; GFX8-NEXT: s_add_i32 s55, s55, s41741; GFX8-NEXT: s_addk_i32 s55, 0x40401742; GFX8-NEXT: v_lshrrev_b32_e64 v0, 6, s321743; GFX8-NEXT: v_add_u32_e32 v0, vcc, 64, v01744; GFX8-NEXT: ;;#ASMSTART1745; GFX8-NEXT: ; use alloca0 v01746; GFX8-NEXT: ;;#ASMEND1747; GFX8-NEXT: s_and_b64 s[4:5], 0, exec1748; GFX8-NEXT: ;;#ASMSTART1749; GFX8-NEXT: ; use s55, scc1750; GFX8-NEXT: ;;#ASMEND1751; GFX8-NEXT: v_readlane_b32 s55, v1, 01752; GFX8-NEXT: s_xor_saveexec_b64 s[4:5], -11753; GFX8-NEXT: s_add_i32 s6, s32, 0x2010001754; GFX8-NEXT: buffer_load_dword v1, off, s[0:3], s6 ; 4-byte Folded Reload1755; GFX8-NEXT: s_mov_b64 exec, s[4:5]1756; GFX8-NEXT: s_waitcnt vmcnt(0)1757; GFX8-NEXT: s_setpc_b64 s[30:31]1758;1759; GFX900-LABEL: scalar_mov_materializes_frame_index_unavailable_scc__gep_sgpr_offset:1760; GFX900: ; %bb.0:1761; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1762; GFX900-NEXT: s_xor_saveexec_b64 s[4:5], -11763; GFX900-NEXT: s_add_i32 s6, s32, 0x2010001764; GFX900-NEXT: buffer_store_dword v1, off, s[0:3], s6 ; 4-byte Folded Spill1765; GFX900-NEXT: s_mov_b64 exec, s[4:5]1766; GFX900-NEXT: s_lshr_b32 s4, s32, 61767; GFX900-NEXT: s_addk_i32 s4, 0x40401768; GFX900-NEXT: v_writelane_b32 v1, s55, 01769; GFX900-NEXT: s_lshl2_add_u32 s55, s16, s41770; GFX900-NEXT: v_lshrrev_b32_e64 v0, 6, s321771; GFX900-NEXT: v_add_u32_e32 v0, 64, v01772; GFX900-NEXT: ;;#ASMSTART1773; GFX900-NEXT: ; use alloca0 v01774; GFX900-NEXT: ;;#ASMEND1775; GFX900-NEXT: s_and_b64 s[4:5], 0, exec1776; GFX900-NEXT: ;;#ASMSTART1777; GFX900-NEXT: ; use s55, scc1778; GFX900-NEXT: ;;#ASMEND1779; GFX900-NEXT: v_readlane_b32 s55, v1, 01780; GFX900-NEXT: s_xor_saveexec_b64 s[4:5], -11781; GFX900-NEXT: s_add_i32 s6, s32, 0x2010001782; GFX900-NEXT: buffer_load_dword v1, off, s[0:3], s6 ; 4-byte Folded Reload1783; GFX900-NEXT: s_mov_b64 exec, s[4:5]1784; GFX900-NEXT: s_waitcnt vmcnt(0)1785; GFX900-NEXT: s_setpc_b64 s[30:31]1786;1787; GFX942-LABEL: scalar_mov_materializes_frame_index_unavailable_scc__gep_sgpr_offset:1788; GFX942: ; %bb.0:1789; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1790; GFX942-NEXT: s_xor_saveexec_b64 s[2:3], -11791; GFX942-NEXT: s_add_i32 s1, s32, 0x80401792; GFX942-NEXT: scratch_store_dword off, v1, s1 ; 4-byte Folded Spill1793; GFX942-NEXT: s_mov_b64 exec, s[2:3]1794; GFX942-NEXT: s_add_i32 s1, s32, 0x40401795; GFX942-NEXT: v_writelane_b32 v1, s55, 01796; GFX942-NEXT: s_lshl2_add_u32 s55, s0, s11797; GFX942-NEXT: s_add_i32 s0, s32, 641798; GFX942-NEXT: v_mov_b32_e32 v0, s01799; GFX942-NEXT: ;;#ASMSTART1800; GFX942-NEXT: ; use alloca0 v01801; GFX942-NEXT: ;;#ASMEND1802; GFX942-NEXT: s_and_b64 s[0:1], 0, exec1803; GFX942-NEXT: ;;#ASMSTART1804; GFX942-NEXT: ; use s55, scc1805; GFX942-NEXT: ;;#ASMEND1806; GFX942-NEXT: v_readlane_b32 s55, v1, 01807; GFX942-NEXT: s_xor_saveexec_b64 s[0:1], -11808; GFX942-NEXT: s_add_i32 s2, s32, 0x80401809; GFX942-NEXT: scratch_load_dword v1, off, s2 ; 4-byte Folded Reload1810; GFX942-NEXT: s_mov_b64 exec, s[0:1]1811; GFX942-NEXT: s_waitcnt vmcnt(0)1812; GFX942-NEXT: s_setpc_b64 s[30:31]1813 %alloca0 = alloca [4096 x i32], align 64, addrspace(5)1814 %alloca1 = alloca [4096 x i32], align 4, addrspace(5)1815 %alloca1.offset = getelementptr [4096 x i32], ptr addrspace(5) %alloca1, i32 0, i32 %soffset1816 call void asm sideeffect "; use alloca0 $0", "v"(ptr addrspace(5) %alloca0)1817 call void asm sideeffect "; use $0, $1", "{s55},{scc}"(ptr addrspace(5) %alloca1.offset, i32 0)1818 ret void1819}1820 1821attributes #0 = { nounwind alignstack=64 "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "amdgpu-waves-per-eu"="10,10" "no-realign-stack" }1822attributes #1 = { nounwind alignstack=64 "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "amdgpu-waves-per-eu"="10,10" "no-realign-stack" "frame-pointer"="all" }1823;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:1824; GFX9: {{.*}}1825