1311 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=amdgcn -mcpu=gfx900 -verify-machine-dom-info -o - %s | FileCheck %s --check-prefix=GFX9_W643; RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -mattr=+wavefrontsize32 -verify-machine-dom-info -o - %s | FileCheck %s --check-prefix=GFX1010_W324; RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -mattr=+wavefrontsize64 -verify-machine-dom-info -o - %s | FileCheck %s --check-prefix=GFX1010_W645; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -mattr=+wavefrontsize32 -verify-machine-dom-info -o - %s | FileCheck %s --check-prefix=GFX1100_W326; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -mattr=+wavefrontsize64 -verify-machine-dom-info -o - %s | FileCheck %s --check-prefix=GFX1100_W647; RUN: llc -O0 -mtriple=amdgcn -mcpu=gfx900 -verify-machine-dom-info -o - %s | FileCheck %s --check-prefix=W64-O08 9; Test that we correctly legalize VGPR Rsrc operands in MUBUF instructions.10 11define float @mubuf_vgpr(ptr addrspace(8) %i, i32 %c) #0 {12; GFX9_W64-LABEL: mubuf_vgpr:13; GFX9_W64: ; %bb.0:14; GFX9_W64-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15; GFX9_W64-NEXT: s_mov_b64 s[6:7], exec16; GFX9_W64-NEXT: .LBB0_1: ; =>This Inner Loop Header: Depth=117; GFX9_W64-NEXT: v_readfirstlane_b32 s8, v018; GFX9_W64-NEXT: v_readfirstlane_b32 s9, v119; GFX9_W64-NEXT: v_readfirstlane_b32 s10, v220; GFX9_W64-NEXT: v_readfirstlane_b32 s11, v321; GFX9_W64-NEXT: v_cmp_eq_u64_e32 vcc, s[8:9], v[0:1]22; GFX9_W64-NEXT: v_cmp_eq_u64_e64 s[4:5], s[10:11], v[2:3]23; GFX9_W64-NEXT: s_and_b64 s[4:5], vcc, s[4:5]24; GFX9_W64-NEXT: s_and_saveexec_b64 s[4:5], s[4:5]25; GFX9_W64-NEXT: s_nop 026; GFX9_W64-NEXT: buffer_load_format_x v5, v4, s[8:11], 0 idxen27; GFX9_W64-NEXT: ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr328; GFX9_W64-NEXT: ; implicit-def: $vgpr429; GFX9_W64-NEXT: s_xor_b64 exec, exec, s[4:5]30; GFX9_W64-NEXT: s_cbranch_execnz .LBB0_131; GFX9_W64-NEXT: ; %bb.2:32; GFX9_W64-NEXT: s_mov_b64 exec, s[6:7]33; GFX9_W64-NEXT: s_waitcnt vmcnt(0)34; GFX9_W64-NEXT: v_mov_b32_e32 v0, v535; GFX9_W64-NEXT: s_setpc_b64 s[30:31]36;37; GFX1010_W32-LABEL: mubuf_vgpr:38; GFX1010_W32: ; %bb.0:39; GFX1010_W32-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)40; GFX1010_W32-NEXT: s_mov_b32 s5, exec_lo41; GFX1010_W32-NEXT: .LBB0_1: ; =>This Inner Loop Header: Depth=142; GFX1010_W32-NEXT: v_readfirstlane_b32 s8, v043; GFX1010_W32-NEXT: v_readfirstlane_b32 s9, v144; GFX1010_W32-NEXT: v_readfirstlane_b32 s10, v245; GFX1010_W32-NEXT: v_readfirstlane_b32 s11, v346; GFX1010_W32-NEXT: v_cmp_eq_u64_e32 vcc_lo, s[8:9], v[0:1]47; GFX1010_W32-NEXT: v_cmp_eq_u64_e64 s4, s[10:11], v[2:3]48; GFX1010_W32-NEXT: s_and_b32 s4, vcc_lo, s449; GFX1010_W32-NEXT: s_and_saveexec_b32 s4, s450; GFX1010_W32-NEXT: buffer_load_format_x v5, v4, s[8:11], 0 idxen51; GFX1010_W32-NEXT: ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr352; GFX1010_W32-NEXT: ; implicit-def: $vgpr453; GFX1010_W32-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)54; GFX1010_W32-NEXT: s_xor_b32 exec_lo, exec_lo, s455; GFX1010_W32-NEXT: s_cbranch_execnz .LBB0_156; GFX1010_W32-NEXT: ; %bb.2:57; GFX1010_W32-NEXT: s_mov_b32 exec_lo, s558; GFX1010_W32-NEXT: s_waitcnt vmcnt(0)59; GFX1010_W32-NEXT: v_mov_b32_e32 v0, v560; GFX1010_W32-NEXT: s_setpc_b64 s[30:31]61;62; GFX1010_W64-LABEL: mubuf_vgpr:63; GFX1010_W64: ; %bb.0:64; GFX1010_W64-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)65; GFX1010_W64-NEXT: s_mov_b64 s[6:7], exec66; GFX1010_W64-NEXT: .LBB0_1: ; =>This Inner Loop Header: Depth=167; GFX1010_W64-NEXT: v_readfirstlane_b32 s8, v068; GFX1010_W64-NEXT: v_readfirstlane_b32 s9, v169; GFX1010_W64-NEXT: v_readfirstlane_b32 s10, v270; GFX1010_W64-NEXT: v_readfirstlane_b32 s11, v371; GFX1010_W64-NEXT: v_cmp_eq_u64_e32 vcc, s[8:9], v[0:1]72; GFX1010_W64-NEXT: v_cmp_eq_u64_e64 s[4:5], s[10:11], v[2:3]73; GFX1010_W64-NEXT: s_and_b64 s[4:5], vcc, s[4:5]74; GFX1010_W64-NEXT: s_and_saveexec_b64 s[4:5], s[4:5]75; GFX1010_W64-NEXT: buffer_load_format_x v5, v4, s[8:11], 0 idxen76; GFX1010_W64-NEXT: ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr377; GFX1010_W64-NEXT: ; implicit-def: $vgpr478; GFX1010_W64-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)79; GFX1010_W64-NEXT: s_xor_b64 exec, exec, s[4:5]80; GFX1010_W64-NEXT: s_cbranch_execnz .LBB0_181; GFX1010_W64-NEXT: ; %bb.2:82; GFX1010_W64-NEXT: s_mov_b64 exec, s[6:7]83; GFX1010_W64-NEXT: s_waitcnt vmcnt(0)84; GFX1010_W64-NEXT: v_mov_b32_e32 v0, v585; GFX1010_W64-NEXT: s_setpc_b64 s[30:31]86;87; GFX1100_W32-LABEL: mubuf_vgpr:88; GFX1100_W32: ; %bb.0:89; GFX1100_W32-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)90; GFX1100_W32-NEXT: s_mov_b32 s1, exec_lo91; GFX1100_W32-NEXT: .LBB0_1: ; =>This Inner Loop Header: Depth=192; GFX1100_W32-NEXT: v_readfirstlane_b32 s4, v093; GFX1100_W32-NEXT: v_readfirstlane_b32 s5, v194; GFX1100_W32-NEXT: v_readfirstlane_b32 s6, v295; GFX1100_W32-NEXT: v_readfirstlane_b32 s7, v396; GFX1100_W32-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)97; GFX1100_W32-NEXT: v_cmp_eq_u64_e32 vcc_lo, s[4:5], v[0:1]98; GFX1100_W32-NEXT: v_cmp_eq_u64_e64 s0, s[6:7], v[2:3]99; GFX1100_W32-NEXT: s_and_b32 s0, vcc_lo, s0100; GFX1100_W32-NEXT: s_delay_alu instid0(SALU_CYCLE_1)101; GFX1100_W32-NEXT: s_and_saveexec_b32 s0, s0102; GFX1100_W32-NEXT: buffer_load_format_x v5, v4, s[4:7], 0 idxen103; GFX1100_W32-NEXT: ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3104; GFX1100_W32-NEXT: ; implicit-def: $vgpr4105; GFX1100_W32-NEXT: s_xor_b32 exec_lo, exec_lo, s0106; GFX1100_W32-NEXT: s_cbranch_execnz .LBB0_1107; GFX1100_W32-NEXT: ; %bb.2:108; GFX1100_W32-NEXT: s_mov_b32 exec_lo, s1109; GFX1100_W32-NEXT: s_waitcnt vmcnt(0)110; GFX1100_W32-NEXT: v_mov_b32_e32 v0, v5111; GFX1100_W32-NEXT: s_setpc_b64 s[30:31]112;113; GFX1100_W64-LABEL: mubuf_vgpr:114; GFX1100_W64: ; %bb.0:115; GFX1100_W64-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)116; GFX1100_W64-NEXT: s_mov_b64 s[2:3], exec117; GFX1100_W64-NEXT: .LBB0_1: ; =>This Inner Loop Header: Depth=1118; GFX1100_W64-NEXT: v_readfirstlane_b32 s4, v0119; GFX1100_W64-NEXT: v_readfirstlane_b32 s5, v1120; GFX1100_W64-NEXT: v_readfirstlane_b32 s6, v2121; GFX1100_W64-NEXT: v_readfirstlane_b32 s7, v3122; GFX1100_W64-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)123; GFX1100_W64-NEXT: v_cmp_eq_u64_e32 vcc, s[4:5], v[0:1]124; GFX1100_W64-NEXT: v_cmp_eq_u64_e64 s[0:1], s[6:7], v[2:3]125; GFX1100_W64-NEXT: s_and_b64 s[0:1], vcc, s[0:1]126; GFX1100_W64-NEXT: s_delay_alu instid0(SALU_CYCLE_1)127; GFX1100_W64-NEXT: s_and_saveexec_b64 s[0:1], s[0:1]128; GFX1100_W64-NEXT: buffer_load_format_x v5, v4, s[4:7], 0 idxen129; GFX1100_W64-NEXT: ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3130; GFX1100_W64-NEXT: ; implicit-def: $vgpr4131; GFX1100_W64-NEXT: s_xor_b64 exec, exec, s[0:1]132; GFX1100_W64-NEXT: s_cbranch_execnz .LBB0_1133; GFX1100_W64-NEXT: ; %bb.2:134; GFX1100_W64-NEXT: s_mov_b64 exec, s[2:3]135; GFX1100_W64-NEXT: s_waitcnt vmcnt(0)136; GFX1100_W64-NEXT: v_mov_b32_e32 v0, v5137; GFX1100_W64-NEXT: s_setpc_b64 s[30:31]138;139; W64-O0-LABEL: mubuf_vgpr:140; W64-O0: ; %bb.0:141; W64-O0-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)142; W64-O0-NEXT: s_xor_saveexec_b64 s[4:5], -1143; W64-O0-NEXT: buffer_store_dword v7, off, s[0:3], s32 offset:28 ; 4-byte Folded Spill144; W64-O0-NEXT: s_mov_b64 exec, s[4:5]145; W64-O0-NEXT: buffer_store_dword v4, off, s[0:3], s32 offset:20 ; 4-byte Folded Spill146; W64-O0-NEXT: v_mov_b32_e32 v5, v2147; W64-O0-NEXT: v_mov_b32_e32 v2, v1148; W64-O0-NEXT: ; kill: def $vgpr5 killed $vgpr5 def $vgpr5_vgpr6 killed $exec149; W64-O0-NEXT: v_mov_b32_e32 v6, v3150; W64-O0-NEXT: v_mov_b32_e32 v4, v6151; W64-O0-NEXT: ; kill: def $vgpr5 killed $vgpr5 killed $vgpr5_vgpr6 killed $exec152; W64-O0-NEXT: ; kill: def $vgpr0 killed $vgpr0 def $vgpr0_vgpr1 killed $exec153; W64-O0-NEXT: v_mov_b32_e32 v1, v2154; W64-O0-NEXT: v_mov_b32_e32 v6, v1155; W64-O0-NEXT: ; kill: def $vgpr0 killed $vgpr0 killed $vgpr0_vgpr1 killed $exec156; W64-O0-NEXT: ; kill: def $vgpr0 killed $vgpr0 def $vgpr0_vgpr1_vgpr2_vgpr3 killed $exec157; W64-O0-NEXT: v_mov_b32_e32 v1, v6158; W64-O0-NEXT: v_mov_b32_e32 v2, v5159; W64-O0-NEXT: v_mov_b32_e32 v3, v4160; W64-O0-NEXT: buffer_store_dword v0, off, s[0:3], s32 offset:4 ; 4-byte Folded Spill161; W64-O0-NEXT: s_nop 0162; W64-O0-NEXT: buffer_store_dword v1, off, s[0:3], s32 offset:8 ; 4-byte Folded Spill163; W64-O0-NEXT: buffer_store_dword v2, off, s[0:3], s32 offset:12 ; 4-byte Folded Spill164; W64-O0-NEXT: buffer_store_dword v3, off, s[0:3], s32 offset:16 ; 4-byte Folded Spill165; W64-O0-NEXT: s_mov_b32 s4, 0166; W64-O0-NEXT: ; implicit-def: $vgpr7 : SGPR spill to VGPR lane167; W64-O0-NEXT: v_writelane_b32 v7, s4, 0168; W64-O0-NEXT: s_mov_b64 s[4:5], exec169; W64-O0-NEXT: v_writelane_b32 v7, s4, 1170; W64-O0-NEXT: v_writelane_b32 v7, s5, 2171; W64-O0-NEXT: s_or_saveexec_b64 s[16:17], -1172; W64-O0-NEXT: buffer_store_dword v7, off, s[0:3], s32 ; 4-byte Folded Spill173; W64-O0-NEXT: s_mov_b64 exec, s[16:17]174; W64-O0-NEXT: .LBB0_1: ; =>This Inner Loop Header: Depth=1175; W64-O0-NEXT: s_or_saveexec_b64 s[16:17], -1176; W64-O0-NEXT: buffer_load_dword v7, off, s[0:3], s32 ; 4-byte Folded Reload177; W64-O0-NEXT: s_mov_b64 exec, s[16:17]178; W64-O0-NEXT: buffer_load_dword v0, off, s[0:3], s32 offset:4 ; 4-byte Folded Reload179; W64-O0-NEXT: buffer_load_dword v1, off, s[0:3], s32 offset:8 ; 4-byte Folded Reload180; W64-O0-NEXT: buffer_load_dword v2, off, s[0:3], s32 offset:12 ; 4-byte Folded Reload181; W64-O0-NEXT: buffer_load_dword v3, off, s[0:3], s32 offset:16 ; 4-byte Folded Reload182; W64-O0-NEXT: s_waitcnt vmcnt(3)183; W64-O0-NEXT: v_readfirstlane_b32 s8, v0184; W64-O0-NEXT: s_waitcnt vmcnt(2)185; W64-O0-NEXT: v_readfirstlane_b32 s12, v1186; W64-O0-NEXT: s_mov_b32 s4, s8187; W64-O0-NEXT: s_mov_b32 s5, s12188; W64-O0-NEXT: v_cmp_eq_u64_e64 s[4:5], s[4:5], v[0:1]189; W64-O0-NEXT: s_waitcnt vmcnt(1)190; W64-O0-NEXT: v_readfirstlane_b32 s7, v2191; W64-O0-NEXT: s_waitcnt vmcnt(0)192; W64-O0-NEXT: v_readfirstlane_b32 s6, v3193; W64-O0-NEXT: s_mov_b32 s10, s7194; W64-O0-NEXT: s_mov_b32 s11, s6195; W64-O0-NEXT: v_cmp_eq_u64_e64 s[10:11], s[10:11], v[2:3]196; W64-O0-NEXT: s_and_b64 s[4:5], s[4:5], s[10:11]197; W64-O0-NEXT: ; kill: def $sgpr8 killed $sgpr8 def $sgpr8_sgpr9_sgpr10_sgpr11198; W64-O0-NEXT: s_mov_b32 s9, s12199; W64-O0-NEXT: s_mov_b32 s10, s7200; W64-O0-NEXT: s_mov_b32 s11, s6201; W64-O0-NEXT: v_writelane_b32 v7, s8, 3202; W64-O0-NEXT: v_writelane_b32 v7, s9, 4203; W64-O0-NEXT: v_writelane_b32 v7, s10, 5204; W64-O0-NEXT: v_writelane_b32 v7, s11, 6205; W64-O0-NEXT: s_and_saveexec_b64 s[4:5], s[4:5]206; W64-O0-NEXT: v_writelane_b32 v7, s4, 7207; W64-O0-NEXT: v_writelane_b32 v7, s5, 8208; W64-O0-NEXT: s_or_saveexec_b64 s[16:17], -1209; W64-O0-NEXT: buffer_store_dword v7, off, s[0:3], s32 ; 4-byte Folded Spill210; W64-O0-NEXT: s_mov_b64 exec, s[16:17]211; W64-O0-NEXT: ; %bb.2: ; in Loop: Header=BB0_1 Depth=1212; W64-O0-NEXT: s_or_saveexec_b64 s[16:17], -1213; W64-O0-NEXT: buffer_load_dword v7, off, s[0:3], s32 ; 4-byte Folded Reload214; W64-O0-NEXT: s_mov_b64 exec, s[16:17]215; W64-O0-NEXT: s_waitcnt vmcnt(0)216; W64-O0-NEXT: v_readlane_b32 s4, v7, 7217; W64-O0-NEXT: v_readlane_b32 s5, v7, 8218; W64-O0-NEXT: v_readlane_b32 s8, v7, 3219; W64-O0-NEXT: v_readlane_b32 s9, v7, 4220; W64-O0-NEXT: v_readlane_b32 s10, v7, 5221; W64-O0-NEXT: v_readlane_b32 s11, v7, 6222; W64-O0-NEXT: v_readlane_b32 s6, v7, 0223; W64-O0-NEXT: buffer_load_dword v0, off, s[0:3], s32 offset:20 ; 4-byte Folded Reload224; W64-O0-NEXT: s_waitcnt vmcnt(0)225; W64-O0-NEXT: s_nop 2226; W64-O0-NEXT: buffer_load_format_x v0, v0, s[8:11], s6 idxen227; W64-O0-NEXT: s_waitcnt vmcnt(0)228; W64-O0-NEXT: buffer_store_dword v0, off, s[0:3], s32 offset:24 ; 4-byte Folded Spill229; W64-O0-NEXT: s_xor_b64 exec, exec, s[4:5]230; W64-O0-NEXT: s_cbranch_execnz .LBB0_1231; W64-O0-NEXT: ; %bb.3:232; W64-O0-NEXT: s_or_saveexec_b64 s[16:17], -1233; W64-O0-NEXT: buffer_load_dword v7, off, s[0:3], s32 ; 4-byte Folded Reload234; W64-O0-NEXT: s_mov_b64 exec, s[16:17]235; W64-O0-NEXT: s_waitcnt vmcnt(0)236; W64-O0-NEXT: v_readlane_b32 s4, v7, 1237; W64-O0-NEXT: v_readlane_b32 s5, v7, 2238; W64-O0-NEXT: s_mov_b64 exec, s[4:5]239; W64-O0-NEXT: buffer_load_dword v0, off, s[0:3], s32 offset:24 ; 4-byte Folded Reload240; W64-O0-NEXT: s_xor_saveexec_b64 s[4:5], -1241; W64-O0-NEXT: buffer_load_dword v7, off, s[0:3], s32 offset:28 ; 4-byte Folded Reload242; W64-O0-NEXT: s_mov_b64 exec, s[4:5]243; W64-O0-NEXT: s_waitcnt vmcnt(0)244; W64-O0-NEXT: s_setpc_b64 s[30:31]245 %call = call float @llvm.amdgcn.struct.ptr.buffer.load.format.f32(ptr addrspace(8) %i, i32 %c, i32 0, i32 0, i32 0) #1246 ret float %call247}248 249 250 251; FIXME: redundant s_mov252 253define void @mubuf_vgpr_adjacent_in_block(ptr addrspace(8) %i, ptr addrspace(8) %j, i32 %c, ptr addrspace(1) %out0, ptr addrspace(1) %out1) #0 {254; GFX9_W64-LABEL: mubuf_vgpr_adjacent_in_block:255; GFX9_W64: ; %bb.0: ; %entry256; GFX9_W64-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)257; GFX9_W64-NEXT: s_mov_b64 s[6:7], exec258; GFX9_W64-NEXT: .LBB1_1: ; =>This Inner Loop Header: Depth=1259; GFX9_W64-NEXT: v_readfirstlane_b32 s8, v0260; GFX9_W64-NEXT: v_readfirstlane_b32 s9, v1261; GFX9_W64-NEXT: v_readfirstlane_b32 s10, v2262; GFX9_W64-NEXT: v_readfirstlane_b32 s11, v3263; GFX9_W64-NEXT: v_cmp_eq_u64_e32 vcc, s[8:9], v[0:1]264; GFX9_W64-NEXT: v_cmp_eq_u64_e64 s[4:5], s[10:11], v[2:3]265; GFX9_W64-NEXT: s_and_b64 s[4:5], vcc, s[4:5]266; GFX9_W64-NEXT: s_and_saveexec_b64 s[4:5], s[4:5]267; GFX9_W64-NEXT: s_nop 0268; GFX9_W64-NEXT: buffer_load_format_x v13, v8, s[8:11], 0 idxen269; GFX9_W64-NEXT: ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3270; GFX9_W64-NEXT: s_xor_b64 exec, exec, s[4:5]271; GFX9_W64-NEXT: s_cbranch_execnz .LBB1_1272; GFX9_W64-NEXT: ; %bb.2:273; GFX9_W64-NEXT: s_mov_b64 exec, s[6:7]274; GFX9_W64-NEXT: s_mov_b64 s[6:7], exec275; GFX9_W64-NEXT: .LBB1_3: ; =>This Inner Loop Header: Depth=1276; GFX9_W64-NEXT: v_readfirstlane_b32 s8, v4277; GFX9_W64-NEXT: v_readfirstlane_b32 s9, v5278; GFX9_W64-NEXT: v_readfirstlane_b32 s10, v6279; GFX9_W64-NEXT: v_readfirstlane_b32 s11, v7280; GFX9_W64-NEXT: v_cmp_eq_u64_e32 vcc, s[8:9], v[4:5]281; GFX9_W64-NEXT: v_cmp_eq_u64_e64 s[4:5], s[10:11], v[6:7]282; GFX9_W64-NEXT: s_and_b64 s[4:5], vcc, s[4:5]283; GFX9_W64-NEXT: s_and_saveexec_b64 s[4:5], s[4:5]284; GFX9_W64-NEXT: s_nop 0285; GFX9_W64-NEXT: buffer_load_format_x v0, v8, s[8:11], 0 idxen286; GFX9_W64-NEXT: ; implicit-def: $vgpr4_vgpr5_vgpr6_vgpr7287; GFX9_W64-NEXT: ; implicit-def: $vgpr8288; GFX9_W64-NEXT: s_xor_b64 exec, exec, s[4:5]289; GFX9_W64-NEXT: s_cbranch_execnz .LBB1_3290; GFX9_W64-NEXT: ; %bb.4:291; GFX9_W64-NEXT: s_mov_b64 exec, s[6:7]292; GFX9_W64-NEXT: s_waitcnt vmcnt(1)293; GFX9_W64-NEXT: global_store_dword v[9:10], v13, off294; GFX9_W64-NEXT: s_waitcnt vmcnt(0)295; GFX9_W64-NEXT: global_store_dword v[11:12], v0, off296; GFX9_W64-NEXT: s_waitcnt vmcnt(0)297; GFX9_W64-NEXT: s_setpc_b64 s[30:31]298;299; GFX1010_W32-LABEL: mubuf_vgpr_adjacent_in_block:300; GFX1010_W32: ; %bb.0: ; %entry301; GFX1010_W32-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)302; GFX1010_W32-NEXT: s_mov_b32 s5, exec_lo303; GFX1010_W32-NEXT: .LBB1_1: ; =>This Inner Loop Header: Depth=1304; GFX1010_W32-NEXT: v_readfirstlane_b32 s8, v0305; GFX1010_W32-NEXT: v_readfirstlane_b32 s9, v1306; GFX1010_W32-NEXT: v_readfirstlane_b32 s10, v2307; GFX1010_W32-NEXT: v_readfirstlane_b32 s11, v3308; GFX1010_W32-NEXT: v_cmp_eq_u64_e32 vcc_lo, s[8:9], v[0:1]309; GFX1010_W32-NEXT: v_cmp_eq_u64_e64 s4, s[10:11], v[2:3]310; GFX1010_W32-NEXT: s_and_b32 s4, vcc_lo, s4311; GFX1010_W32-NEXT: s_and_saveexec_b32 s4, s4312; GFX1010_W32-NEXT: buffer_load_format_x v13, v8, s[8:11], 0 idxen313; GFX1010_W32-NEXT: ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3314; GFX1010_W32-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)315; GFX1010_W32-NEXT: s_xor_b32 exec_lo, exec_lo, s4316; GFX1010_W32-NEXT: s_cbranch_execnz .LBB1_1317; GFX1010_W32-NEXT: ; %bb.2:318; GFX1010_W32-NEXT: s_mov_b32 exec_lo, s5319; GFX1010_W32-NEXT: s_mov_b32 s5, exec_lo320; GFX1010_W32-NEXT: .LBB1_3: ; =>This Inner Loop Header: Depth=1321; GFX1010_W32-NEXT: v_readfirstlane_b32 s8, v4322; GFX1010_W32-NEXT: v_readfirstlane_b32 s9, v5323; GFX1010_W32-NEXT: v_readfirstlane_b32 s10, v6324; GFX1010_W32-NEXT: v_readfirstlane_b32 s11, v7325; GFX1010_W32-NEXT: v_cmp_eq_u64_e32 vcc_lo, s[8:9], v[4:5]326; GFX1010_W32-NEXT: v_cmp_eq_u64_e64 s4, s[10:11], v[6:7]327; GFX1010_W32-NEXT: s_and_b32 s4, vcc_lo, s4328; GFX1010_W32-NEXT: s_and_saveexec_b32 s4, s4329; GFX1010_W32-NEXT: buffer_load_format_x v0, v8, s[8:11], 0 idxen330; GFX1010_W32-NEXT: ; implicit-def: $vgpr4_vgpr5_vgpr6_vgpr7331; GFX1010_W32-NEXT: ; implicit-def: $vgpr8332; GFX1010_W32-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)333; GFX1010_W32-NEXT: s_xor_b32 exec_lo, exec_lo, s4334; GFX1010_W32-NEXT: s_cbranch_execnz .LBB1_3335; GFX1010_W32-NEXT: ; %bb.4:336; GFX1010_W32-NEXT: s_mov_b32 exec_lo, s5337; GFX1010_W32-NEXT: s_waitcnt vmcnt(1)338; GFX1010_W32-NEXT: global_store_dword v[9:10], v13, off339; GFX1010_W32-NEXT: s_waitcnt_vscnt null, 0x0340; GFX1010_W32-NEXT: s_waitcnt vmcnt(0)341; GFX1010_W32-NEXT: global_store_dword v[11:12], v0, off342; GFX1010_W32-NEXT: s_waitcnt_vscnt null, 0x0343; GFX1010_W32-NEXT: s_setpc_b64 s[30:31]344;345; GFX1010_W64-LABEL: mubuf_vgpr_adjacent_in_block:346; GFX1010_W64: ; %bb.0: ; %entry347; GFX1010_W64-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)348; GFX1010_W64-NEXT: s_mov_b64 s[6:7], exec349; GFX1010_W64-NEXT: .LBB1_1: ; =>This Inner Loop Header: Depth=1350; GFX1010_W64-NEXT: v_readfirstlane_b32 s8, v0351; GFX1010_W64-NEXT: v_readfirstlane_b32 s9, v1352; GFX1010_W64-NEXT: v_readfirstlane_b32 s10, v2353; GFX1010_W64-NEXT: v_readfirstlane_b32 s11, v3354; GFX1010_W64-NEXT: v_cmp_eq_u64_e32 vcc, s[8:9], v[0:1]355; GFX1010_W64-NEXT: v_cmp_eq_u64_e64 s[4:5], s[10:11], v[2:3]356; GFX1010_W64-NEXT: s_and_b64 s[4:5], vcc, s[4:5]357; GFX1010_W64-NEXT: s_and_saveexec_b64 s[4:5], s[4:5]358; GFX1010_W64-NEXT: buffer_load_format_x v13, v8, s[8:11], 0 idxen359; GFX1010_W64-NEXT: ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3360; GFX1010_W64-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)361; GFX1010_W64-NEXT: s_xor_b64 exec, exec, s[4:5]362; GFX1010_W64-NEXT: s_cbranch_execnz .LBB1_1363; GFX1010_W64-NEXT: ; %bb.2:364; GFX1010_W64-NEXT: s_mov_b64 exec, s[6:7]365; GFX1010_W64-NEXT: s_mov_b64 s[6:7], exec366; GFX1010_W64-NEXT: .LBB1_3: ; =>This Inner Loop Header: Depth=1367; GFX1010_W64-NEXT: v_readfirstlane_b32 s8, v4368; GFX1010_W64-NEXT: v_readfirstlane_b32 s9, v5369; GFX1010_W64-NEXT: v_readfirstlane_b32 s10, v6370; GFX1010_W64-NEXT: v_readfirstlane_b32 s11, v7371; GFX1010_W64-NEXT: v_cmp_eq_u64_e32 vcc, s[8:9], v[4:5]372; GFX1010_W64-NEXT: v_cmp_eq_u64_e64 s[4:5], s[10:11], v[6:7]373; GFX1010_W64-NEXT: s_and_b64 s[4:5], vcc, s[4:5]374; GFX1010_W64-NEXT: s_and_saveexec_b64 s[4:5], s[4:5]375; GFX1010_W64-NEXT: buffer_load_format_x v0, v8, s[8:11], 0 idxen376; GFX1010_W64-NEXT: ; implicit-def: $vgpr4_vgpr5_vgpr6_vgpr7377; GFX1010_W64-NEXT: ; implicit-def: $vgpr8378; GFX1010_W64-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)379; GFX1010_W64-NEXT: s_xor_b64 exec, exec, s[4:5]380; GFX1010_W64-NEXT: s_cbranch_execnz .LBB1_3381; GFX1010_W64-NEXT: ; %bb.4:382; GFX1010_W64-NEXT: s_mov_b64 exec, s[6:7]383; GFX1010_W64-NEXT: s_waitcnt vmcnt(1)384; GFX1010_W64-NEXT: global_store_dword v[9:10], v13, off385; GFX1010_W64-NEXT: s_waitcnt_vscnt null, 0x0386; GFX1010_W64-NEXT: s_waitcnt vmcnt(0)387; GFX1010_W64-NEXT: global_store_dword v[11:12], v0, off388; GFX1010_W64-NEXT: s_waitcnt_vscnt null, 0x0389; GFX1010_W64-NEXT: s_setpc_b64 s[30:31]390;391; GFX1100_W32-LABEL: mubuf_vgpr_adjacent_in_block:392; GFX1100_W32: ; %bb.0: ; %entry393; GFX1100_W32-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)394; GFX1100_W32-NEXT: s_mov_b32 s1, exec_lo395; GFX1100_W32-NEXT: .LBB1_1: ; =>This Inner Loop Header: Depth=1396; GFX1100_W32-NEXT: v_readfirstlane_b32 s4, v0397; GFX1100_W32-NEXT: v_readfirstlane_b32 s5, v1398; GFX1100_W32-NEXT: v_readfirstlane_b32 s6, v2399; GFX1100_W32-NEXT: v_readfirstlane_b32 s7, v3400; GFX1100_W32-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)401; GFX1100_W32-NEXT: v_cmp_eq_u64_e32 vcc_lo, s[4:5], v[0:1]402; GFX1100_W32-NEXT: v_cmp_eq_u64_e64 s0, s[6:7], v[2:3]403; GFX1100_W32-NEXT: s_and_b32 s0, vcc_lo, s0404; GFX1100_W32-NEXT: s_delay_alu instid0(SALU_CYCLE_1)405; GFX1100_W32-NEXT: s_and_saveexec_b32 s0, s0406; GFX1100_W32-NEXT: buffer_load_format_x v13, v8, s[4:7], 0 idxen407; GFX1100_W32-NEXT: ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3408; GFX1100_W32-NEXT: s_xor_b32 exec_lo, exec_lo, s0409; GFX1100_W32-NEXT: s_cbranch_execnz .LBB1_1410; GFX1100_W32-NEXT: ; %bb.2:411; GFX1100_W32-NEXT: s_mov_b32 exec_lo, s1412; GFX1100_W32-NEXT: s_delay_alu instid0(SALU_CYCLE_1)413; GFX1100_W32-NEXT: s_mov_b32 s1, exec_lo414; GFX1100_W32-NEXT: .LBB1_3: ; =>This Inner Loop Header: Depth=1415; GFX1100_W32-NEXT: v_readfirstlane_b32 s4, v4416; GFX1100_W32-NEXT: v_readfirstlane_b32 s5, v5417; GFX1100_W32-NEXT: v_readfirstlane_b32 s6, v6418; GFX1100_W32-NEXT: v_readfirstlane_b32 s7, v7419; GFX1100_W32-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)420; GFX1100_W32-NEXT: v_cmp_eq_u64_e32 vcc_lo, s[4:5], v[4:5]421; GFX1100_W32-NEXT: v_cmp_eq_u64_e64 s0, s[6:7], v[6:7]422; GFX1100_W32-NEXT: s_and_b32 s0, vcc_lo, s0423; GFX1100_W32-NEXT: s_delay_alu instid0(SALU_CYCLE_1)424; GFX1100_W32-NEXT: s_and_saveexec_b32 s0, s0425; GFX1100_W32-NEXT: buffer_load_format_x v0, v8, s[4:7], 0 idxen426; GFX1100_W32-NEXT: ; implicit-def: $vgpr4_vgpr5_vgpr6_vgpr7427; GFX1100_W32-NEXT: ; implicit-def: $vgpr8428; GFX1100_W32-NEXT: s_xor_b32 exec_lo, exec_lo, s0429; GFX1100_W32-NEXT: s_cbranch_execnz .LBB1_3430; GFX1100_W32-NEXT: ; %bb.4:431; GFX1100_W32-NEXT: s_mov_b32 exec_lo, s1432; GFX1100_W32-NEXT: s_waitcnt vmcnt(1)433; GFX1100_W32-NEXT: global_store_b32 v[9:10], v13, off dlc434; GFX1100_W32-NEXT: s_waitcnt_vscnt null, 0x0435; GFX1100_W32-NEXT: s_waitcnt vmcnt(0)436; GFX1100_W32-NEXT: global_store_b32 v[11:12], v0, off dlc437; GFX1100_W32-NEXT: s_waitcnt_vscnt null, 0x0438; GFX1100_W32-NEXT: s_setpc_b64 s[30:31]439;440; GFX1100_W64-LABEL: mubuf_vgpr_adjacent_in_block:441; GFX1100_W64: ; %bb.0: ; %entry442; GFX1100_W64-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)443; GFX1100_W64-NEXT: s_mov_b64 s[2:3], exec444; GFX1100_W64-NEXT: .LBB1_1: ; =>This Inner Loop Header: Depth=1445; GFX1100_W64-NEXT: v_readfirstlane_b32 s4, v0446; GFX1100_W64-NEXT: v_readfirstlane_b32 s5, v1447; GFX1100_W64-NEXT: v_readfirstlane_b32 s6, v2448; GFX1100_W64-NEXT: v_readfirstlane_b32 s7, v3449; GFX1100_W64-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)450; GFX1100_W64-NEXT: v_cmp_eq_u64_e32 vcc, s[4:5], v[0:1]451; GFX1100_W64-NEXT: v_cmp_eq_u64_e64 s[0:1], s[6:7], v[2:3]452; GFX1100_W64-NEXT: s_and_b64 s[0:1], vcc, s[0:1]453; GFX1100_W64-NEXT: s_delay_alu instid0(SALU_CYCLE_1)454; GFX1100_W64-NEXT: s_and_saveexec_b64 s[0:1], s[0:1]455; GFX1100_W64-NEXT: buffer_load_format_x v13, v8, s[4:7], 0 idxen456; GFX1100_W64-NEXT: ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3457; GFX1100_W64-NEXT: s_xor_b64 exec, exec, s[0:1]458; GFX1100_W64-NEXT: s_cbranch_execnz .LBB1_1459; GFX1100_W64-NEXT: ; %bb.2:460; GFX1100_W64-NEXT: s_mov_b64 exec, s[2:3]461; GFX1100_W64-NEXT: s_delay_alu instid0(SALU_CYCLE_1)462; GFX1100_W64-NEXT: s_mov_b64 s[2:3], exec463; GFX1100_W64-NEXT: .LBB1_3: ; =>This Inner Loop Header: Depth=1464; GFX1100_W64-NEXT: v_readfirstlane_b32 s4, v4465; GFX1100_W64-NEXT: v_readfirstlane_b32 s5, v5466; GFX1100_W64-NEXT: v_readfirstlane_b32 s6, v6467; GFX1100_W64-NEXT: v_readfirstlane_b32 s7, v7468; GFX1100_W64-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)469; GFX1100_W64-NEXT: v_cmp_eq_u64_e32 vcc, s[4:5], v[4:5]470; GFX1100_W64-NEXT: v_cmp_eq_u64_e64 s[0:1], s[6:7], v[6:7]471; GFX1100_W64-NEXT: s_and_b64 s[0:1], vcc, s[0:1]472; GFX1100_W64-NEXT: s_delay_alu instid0(SALU_CYCLE_1)473; GFX1100_W64-NEXT: s_and_saveexec_b64 s[0:1], s[0:1]474; GFX1100_W64-NEXT: buffer_load_format_x v0, v8, s[4:7], 0 idxen475; GFX1100_W64-NEXT: ; implicit-def: $vgpr4_vgpr5_vgpr6_vgpr7476; GFX1100_W64-NEXT: ; implicit-def: $vgpr8477; GFX1100_W64-NEXT: s_xor_b64 exec, exec, s[0:1]478; GFX1100_W64-NEXT: s_cbranch_execnz .LBB1_3479; GFX1100_W64-NEXT: ; %bb.4:480; GFX1100_W64-NEXT: s_mov_b64 exec, s[2:3]481; GFX1100_W64-NEXT: s_waitcnt vmcnt(1)482; GFX1100_W64-NEXT: global_store_b32 v[9:10], v13, off dlc483; GFX1100_W64-NEXT: s_waitcnt_vscnt null, 0x0484; GFX1100_W64-NEXT: s_waitcnt vmcnt(0)485; GFX1100_W64-NEXT: global_store_b32 v[11:12], v0, off dlc486; GFX1100_W64-NEXT: s_waitcnt_vscnt null, 0x0487; GFX1100_W64-NEXT: s_setpc_b64 s[30:31]488;489; W64-O0-LABEL: mubuf_vgpr_adjacent_in_block:490; W64-O0: ; %bb.0: ; %entry491; W64-O0-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)492; W64-O0-NEXT: s_xor_saveexec_b64 s[4:5], -1493; W64-O0-NEXT: buffer_store_dword v17, off, s[0:3], s32 offset:76 ; 4-byte Folded Spill494; W64-O0-NEXT: s_mov_b64 exec, s[4:5]495; W64-O0-NEXT: buffer_store_dword v11, off, s[0:3], s32 offset:56 ; 4-byte Folded Spill496; W64-O0-NEXT: buffer_store_dword v9, off, s[0:3], s32 offset:52 ; 4-byte Folded Spill497; W64-O0-NEXT: buffer_store_dword v8, off, s[0:3], s32 offset:64 ; 4-byte Folded Spill498; W64-O0-NEXT: buffer_store_dword v7, off, s[0:3], s32 offset:60 ; 4-byte Folded Spill499; W64-O0-NEXT: v_mov_b32_e32 v14, v6500; W64-O0-NEXT: v_mov_b32_e32 v8, v5501; W64-O0-NEXT: buffer_load_dword v5, off, s[0:3], s32 offset:60 ; 4-byte Folded Reload502; W64-O0-NEXT: v_mov_b32_e32 v13, v4503; W64-O0-NEXT: v_mov_b32_e32 v7, v2504; W64-O0-NEXT: v_mov_b32_e32 v4, v1505; W64-O0-NEXT: buffer_load_dword v1, off, s[0:3], s32 offset:56 ; 4-byte Folded Reload506; W64-O0-NEXT: v_mov_b32_e32 v2, v0507; W64-O0-NEXT: buffer_load_dword v0, off, s[0:3], s32 offset:52 ; 4-byte Folded Reload508; W64-O0-NEXT: ; kill: def $vgpr14 killed $vgpr14 def $vgpr14_vgpr15 killed $exec509; W64-O0-NEXT: s_waitcnt vmcnt(2)510; W64-O0-NEXT: v_mov_b32_e32 v15, v5511; W64-O0-NEXT: v_mov_b32_e32 v5, v15512; W64-O0-NEXT: v_mov_b32_e32 v6, v14513; W64-O0-NEXT: ; kill: def $vgpr13 killed $vgpr13 def $vgpr13_vgpr14 killed $exec514; W64-O0-NEXT: v_mov_b32_e32 v14, v8515; W64-O0-NEXT: v_mov_b32_e32 v8, v14516; W64-O0-NEXT: ; kill: def $vgpr13 killed $vgpr13 killed $vgpr13_vgpr14 killed $exec517; W64-O0-NEXT: ; kill: def $vgpr13 killed $vgpr13 def $vgpr13_vgpr14_vgpr15_vgpr16 killed $exec518; W64-O0-NEXT: v_mov_b32_e32 v14, v8519; W64-O0-NEXT: v_mov_b32_e32 v15, v6520; W64-O0-NEXT: v_mov_b32_e32 v16, v5521; W64-O0-NEXT: buffer_store_dword v13, off, s[0:3], s32 offset:36 ; 4-byte Folded Spill522; W64-O0-NEXT: s_nop 0523; W64-O0-NEXT: buffer_store_dword v14, off, s[0:3], s32 offset:40 ; 4-byte Folded Spill524; W64-O0-NEXT: buffer_store_dword v15, off, s[0:3], s32 offset:44 ; 4-byte Folded Spill525; W64-O0-NEXT: buffer_store_dword v16, off, s[0:3], s32 offset:48 ; 4-byte Folded Spill526; W64-O0-NEXT: ; kill: def $vgpr7 killed $vgpr7 def $vgpr7_vgpr8 killed $exec527; W64-O0-NEXT: v_mov_b32_e32 v8, v3528; W64-O0-NEXT: v_mov_b32_e32 v6, v8529; W64-O0-NEXT: ; kill: def $vgpr7 killed $vgpr7 killed $vgpr7_vgpr8 killed $exec530; W64-O0-NEXT: ; kill: def $vgpr2 killed $vgpr2 def $vgpr2_vgpr3 killed $exec531; W64-O0-NEXT: v_mov_b32_e32 v3, v4532; W64-O0-NEXT: v_mov_b32_e32 v8, v3533; W64-O0-NEXT: ; kill: def $vgpr2 killed $vgpr2 killed $vgpr2_vgpr3 killed $exec534; W64-O0-NEXT: ; kill: def $vgpr2 killed $vgpr2 def $vgpr2_vgpr3_vgpr4_vgpr5 killed $exec535; W64-O0-NEXT: v_mov_b32_e32 v3, v8536; W64-O0-NEXT: v_mov_b32_e32 v4, v7537; W64-O0-NEXT: v_mov_b32_e32 v5, v6538; W64-O0-NEXT: buffer_store_dword v2, off, s[0:3], s32 offset:20 ; 4-byte Folded Spill539; W64-O0-NEXT: s_nop 0540; W64-O0-NEXT: buffer_store_dword v3, off, s[0:3], s32 offset:24 ; 4-byte Folded Spill541; W64-O0-NEXT: buffer_store_dword v4, off, s[0:3], s32 offset:28 ; 4-byte Folded Spill542; W64-O0-NEXT: buffer_store_dword v5, off, s[0:3], s32 offset:32 ; 4-byte Folded Spill543; W64-O0-NEXT: ; kill: def $vgpr1 killed $vgpr1 def $vgpr1_vgpr2 killed $exec544; W64-O0-NEXT: v_mov_b32_e32 v2, v12545; W64-O0-NEXT: s_waitcnt vmcnt(9)546; W64-O0-NEXT: buffer_store_dword v1, off, s[0:3], s32 offset:12 ; 4-byte Folded Spill547; W64-O0-NEXT: s_nop 0548; W64-O0-NEXT: buffer_store_dword v2, off, s[0:3], s32 offset:16 ; 4-byte Folded Spill549; W64-O0-NEXT: ; kill: def $vgpr0 killed $vgpr0 def $vgpr0_vgpr1 killed $exec550; W64-O0-NEXT: v_mov_b32_e32 v1, v10551; W64-O0-NEXT: s_waitcnt vmcnt(10)552; W64-O0-NEXT: buffer_store_dword v0, off, s[0:3], s32 offset:4 ; 4-byte Folded Spill553; W64-O0-NEXT: s_nop 0554; W64-O0-NEXT: buffer_store_dword v1, off, s[0:3], s32 offset:8 ; 4-byte Folded Spill555; W64-O0-NEXT: s_mov_b32 s4, 0556; W64-O0-NEXT: ; implicit-def: $vgpr17 : SGPR spill to VGPR lane557; W64-O0-NEXT: v_writelane_b32 v17, s4, 0558; W64-O0-NEXT: s_mov_b64 s[4:5], exec559; W64-O0-NEXT: v_writelane_b32 v17, s4, 1560; W64-O0-NEXT: v_writelane_b32 v17, s5, 2561; W64-O0-NEXT: s_or_saveexec_b64 s[16:17], -1562; W64-O0-NEXT: buffer_store_dword v17, off, s[0:3], s32 ; 4-byte Folded Spill563; W64-O0-NEXT: s_mov_b64 exec, s[16:17]564; W64-O0-NEXT: .LBB1_1: ; =>This Inner Loop Header: Depth=1565; W64-O0-NEXT: s_or_saveexec_b64 s[16:17], -1566; W64-O0-NEXT: buffer_load_dword v17, off, s[0:3], s32 ; 4-byte Folded Reload567; W64-O0-NEXT: s_mov_b64 exec, s[16:17]568; W64-O0-NEXT: buffer_load_dword v0, off, s[0:3], s32 offset:20 ; 4-byte Folded Reload569; W64-O0-NEXT: buffer_load_dword v1, off, s[0:3], s32 offset:24 ; 4-byte Folded Reload570; W64-O0-NEXT: buffer_load_dword v2, off, s[0:3], s32 offset:28 ; 4-byte Folded Reload571; W64-O0-NEXT: buffer_load_dword v3, off, s[0:3], s32 offset:32 ; 4-byte Folded Reload572; W64-O0-NEXT: s_waitcnt vmcnt(3)573; W64-O0-NEXT: v_readfirstlane_b32 s8, v0574; W64-O0-NEXT: s_waitcnt vmcnt(2)575; W64-O0-NEXT: v_readfirstlane_b32 s12, v1576; W64-O0-NEXT: s_mov_b32 s4, s8577; W64-O0-NEXT: s_mov_b32 s5, s12578; W64-O0-NEXT: v_cmp_eq_u64_e64 s[4:5], s[4:5], v[0:1]579; W64-O0-NEXT: s_waitcnt vmcnt(1)580; W64-O0-NEXT: v_readfirstlane_b32 s7, v2581; W64-O0-NEXT: s_waitcnt vmcnt(0)582; W64-O0-NEXT: v_readfirstlane_b32 s6, v3583; W64-O0-NEXT: s_mov_b32 s10, s7584; W64-O0-NEXT: s_mov_b32 s11, s6585; W64-O0-NEXT: v_cmp_eq_u64_e64 s[10:11], s[10:11], v[2:3]586; W64-O0-NEXT: s_and_b64 s[4:5], s[4:5], s[10:11]587; W64-O0-NEXT: ; kill: def $sgpr8 killed $sgpr8 def $sgpr8_sgpr9_sgpr10_sgpr11588; W64-O0-NEXT: s_mov_b32 s9, s12589; W64-O0-NEXT: s_mov_b32 s10, s7590; W64-O0-NEXT: s_mov_b32 s11, s6591; W64-O0-NEXT: v_writelane_b32 v17, s8, 3592; W64-O0-NEXT: v_writelane_b32 v17, s9, 4593; W64-O0-NEXT: v_writelane_b32 v17, s10, 5594; W64-O0-NEXT: v_writelane_b32 v17, s11, 6595; W64-O0-NEXT: s_and_saveexec_b64 s[4:5], s[4:5]596; W64-O0-NEXT: v_writelane_b32 v17, s4, 7597; W64-O0-NEXT: v_writelane_b32 v17, s5, 8598; W64-O0-NEXT: s_or_saveexec_b64 s[16:17], -1599; W64-O0-NEXT: buffer_store_dword v17, off, s[0:3], s32 ; 4-byte Folded Spill600; W64-O0-NEXT: s_mov_b64 exec, s[16:17]601; W64-O0-NEXT: ; %bb.2: ; in Loop: Header=BB1_1 Depth=1602; W64-O0-NEXT: s_or_saveexec_b64 s[16:17], -1603; W64-O0-NEXT: buffer_load_dword v17, off, s[0:3], s32 ; 4-byte Folded Reload604; W64-O0-NEXT: s_mov_b64 exec, s[16:17]605; W64-O0-NEXT: s_waitcnt vmcnt(0)606; W64-O0-NEXT: v_readlane_b32 s4, v17, 7607; W64-O0-NEXT: v_readlane_b32 s5, v17, 8608; W64-O0-NEXT: v_readlane_b32 s8, v17, 3609; W64-O0-NEXT: v_readlane_b32 s9, v17, 4610; W64-O0-NEXT: v_readlane_b32 s10, v17, 5611; W64-O0-NEXT: v_readlane_b32 s11, v17, 6612; W64-O0-NEXT: v_readlane_b32 s6, v17, 0613; W64-O0-NEXT: buffer_load_dword v0, off, s[0:3], s32 offset:64 ; 4-byte Folded Reload614; W64-O0-NEXT: s_waitcnt vmcnt(0)615; W64-O0-NEXT: s_nop 2616; W64-O0-NEXT: buffer_load_format_x v0, v0, s[8:11], s6 idxen617; W64-O0-NEXT: s_waitcnt vmcnt(0)618; W64-O0-NEXT: buffer_store_dword v0, off, s[0:3], s32 offset:68 ; 4-byte Folded Spill619; W64-O0-NEXT: s_xor_b64 exec, exec, s[4:5]620; W64-O0-NEXT: s_cbranch_execnz .LBB1_1621; W64-O0-NEXT: ; %bb.3:622; W64-O0-NEXT: s_or_saveexec_b64 s[16:17], -1623; W64-O0-NEXT: buffer_load_dword v17, off, s[0:3], s32 ; 4-byte Folded Reload624; W64-O0-NEXT: s_mov_b64 exec, s[16:17]625; W64-O0-NEXT: s_waitcnt vmcnt(0)626; W64-O0-NEXT: v_readlane_b32 s4, v17, 1627; W64-O0-NEXT: v_readlane_b32 s5, v17, 2628; W64-O0-NEXT: s_mov_b64 exec, s[4:5]629; W64-O0-NEXT: s_mov_b64 s[4:5], exec630; W64-O0-NEXT: v_writelane_b32 v17, s4, 9631; W64-O0-NEXT: v_writelane_b32 v17, s5, 10632; W64-O0-NEXT: s_or_saveexec_b64 s[16:17], -1633; W64-O0-NEXT: buffer_store_dword v17, off, s[0:3], s32 ; 4-byte Folded Spill634; W64-O0-NEXT: s_mov_b64 exec, s[16:17]635; W64-O0-NEXT: .LBB1_4: ; =>This Inner Loop Header: Depth=1636; W64-O0-NEXT: s_or_saveexec_b64 s[16:17], -1637; W64-O0-NEXT: buffer_load_dword v17, off, s[0:3], s32 ; 4-byte Folded Reload638; W64-O0-NEXT: s_mov_b64 exec, s[16:17]639; W64-O0-NEXT: buffer_load_dword v0, off, s[0:3], s32 offset:36 ; 4-byte Folded Reload640; W64-O0-NEXT: buffer_load_dword v1, off, s[0:3], s32 offset:40 ; 4-byte Folded Reload641; W64-O0-NEXT: buffer_load_dword v2, off, s[0:3], s32 offset:44 ; 4-byte Folded Reload642; W64-O0-NEXT: buffer_load_dword v3, off, s[0:3], s32 offset:48 ; 4-byte Folded Reload643; W64-O0-NEXT: s_waitcnt vmcnt(3)644; W64-O0-NEXT: v_readfirstlane_b32 s8, v0645; W64-O0-NEXT: s_waitcnt vmcnt(2)646; W64-O0-NEXT: v_readfirstlane_b32 s12, v1647; W64-O0-NEXT: s_mov_b32 s4, s8648; W64-O0-NEXT: s_mov_b32 s5, s12649; W64-O0-NEXT: v_cmp_eq_u64_e64 s[4:5], s[4:5], v[0:1]650; W64-O0-NEXT: s_waitcnt vmcnt(1)651; W64-O0-NEXT: v_readfirstlane_b32 s7, v2652; W64-O0-NEXT: s_waitcnt vmcnt(0)653; W64-O0-NEXT: v_readfirstlane_b32 s6, v3654; W64-O0-NEXT: s_mov_b32 s10, s7655; W64-O0-NEXT: s_mov_b32 s11, s6656; W64-O0-NEXT: v_cmp_eq_u64_e64 s[10:11], s[10:11], v[2:3]657; W64-O0-NEXT: s_and_b64 s[4:5], s[4:5], s[10:11]658; W64-O0-NEXT: ; kill: def $sgpr8 killed $sgpr8 def $sgpr8_sgpr9_sgpr10_sgpr11659; W64-O0-NEXT: s_mov_b32 s9, s12660; W64-O0-NEXT: s_mov_b32 s10, s7661; W64-O0-NEXT: s_mov_b32 s11, s6662; W64-O0-NEXT: v_writelane_b32 v17, s8, 11663; W64-O0-NEXT: v_writelane_b32 v17, s9, 12664; W64-O0-NEXT: v_writelane_b32 v17, s10, 13665; W64-O0-NEXT: v_writelane_b32 v17, s11, 14666; W64-O0-NEXT: s_and_saveexec_b64 s[4:5], s[4:5]667; W64-O0-NEXT: v_writelane_b32 v17, s4, 15668; W64-O0-NEXT: v_writelane_b32 v17, s5, 16669; W64-O0-NEXT: s_or_saveexec_b64 s[16:17], -1670; W64-O0-NEXT: buffer_store_dword v17, off, s[0:3], s32 ; 4-byte Folded Spill671; W64-O0-NEXT: s_mov_b64 exec, s[16:17]672; W64-O0-NEXT: ; %bb.5: ; in Loop: Header=BB1_4 Depth=1673; W64-O0-NEXT: s_or_saveexec_b64 s[16:17], -1674; W64-O0-NEXT: buffer_load_dword v17, off, s[0:3], s32 ; 4-byte Folded Reload675; W64-O0-NEXT: s_mov_b64 exec, s[16:17]676; W64-O0-NEXT: s_waitcnt vmcnt(0)677; W64-O0-NEXT: v_readlane_b32 s4, v17, 15678; W64-O0-NEXT: v_readlane_b32 s5, v17, 16679; W64-O0-NEXT: v_readlane_b32 s8, v17, 11680; W64-O0-NEXT: v_readlane_b32 s9, v17, 12681; W64-O0-NEXT: v_readlane_b32 s10, v17, 13682; W64-O0-NEXT: v_readlane_b32 s11, v17, 14683; W64-O0-NEXT: v_readlane_b32 s6, v17, 0684; W64-O0-NEXT: buffer_load_dword v0, off, s[0:3], s32 offset:64 ; 4-byte Folded Reload685; W64-O0-NEXT: s_waitcnt vmcnt(0)686; W64-O0-NEXT: s_nop 2687; W64-O0-NEXT: buffer_load_format_x v0, v0, s[8:11], s6 idxen688; W64-O0-NEXT: s_waitcnt vmcnt(0)689; W64-O0-NEXT: buffer_store_dword v0, off, s[0:3], s32 offset:72 ; 4-byte Folded Spill690; W64-O0-NEXT: s_xor_b64 exec, exec, s[4:5]691; W64-O0-NEXT: s_cbranch_execnz .LBB1_4692; W64-O0-NEXT: ; %bb.6:693; W64-O0-NEXT: s_or_saveexec_b64 s[16:17], -1694; W64-O0-NEXT: buffer_load_dword v17, off, s[0:3], s32 ; 4-byte Folded Reload695; W64-O0-NEXT: s_mov_b64 exec, s[16:17]696; W64-O0-NEXT: s_waitcnt vmcnt(0)697; W64-O0-NEXT: v_readlane_b32 s4, v17, 9698; W64-O0-NEXT: v_readlane_b32 s5, v17, 10699; W64-O0-NEXT: s_mov_b64 exec, s[4:5]700; W64-O0-NEXT: buffer_load_dword v2, off, s[0:3], s32 offset:72 ; 4-byte Folded Reload701; W64-O0-NEXT: buffer_load_dword v0, off, s[0:3], s32 offset:12 ; 4-byte Folded Reload702; W64-O0-NEXT: buffer_load_dword v1, off, s[0:3], s32 offset:16 ; 4-byte Folded Reload703; W64-O0-NEXT: buffer_load_dword v5, off, s[0:3], s32 offset:68 ; 4-byte Folded Reload704; W64-O0-NEXT: buffer_load_dword v3, off, s[0:3], s32 offset:4 ; 4-byte Folded Reload705; W64-O0-NEXT: buffer_load_dword v4, off, s[0:3], s32 offset:8 ; 4-byte Folded Reload706; W64-O0-NEXT: s_waitcnt vmcnt(0)707; W64-O0-NEXT: global_store_dword v[3:4], v5, off708; W64-O0-NEXT: s_waitcnt vmcnt(0)709; W64-O0-NEXT: global_store_dword v[0:1], v2, off710; W64-O0-NEXT: s_waitcnt vmcnt(0)711; W64-O0-NEXT: s_xor_saveexec_b64 s[4:5], -1712; W64-O0-NEXT: buffer_load_dword v17, off, s[0:3], s32 offset:76 ; 4-byte Folded Reload713; W64-O0-NEXT: s_mov_b64 exec, s[4:5]714; W64-O0-NEXT: s_waitcnt vmcnt(0)715; W64-O0-NEXT: s_setpc_b64 s[30:31]716entry:717 %val0 = call float @llvm.amdgcn.struct.ptr.buffer.load.format.f32(ptr addrspace(8) %i, i32 %c, i32 0, i32 0, i32 0) #1718 %val1 = call float @llvm.amdgcn.struct.ptr.buffer.load.format.f32(ptr addrspace(8) %j, i32 %c, i32 0, i32 0, i32 0) #1719 store volatile float %val0, ptr addrspace(1) %out0720 store volatile float %val1, ptr addrspace(1) %out1721 ret void722}723 724; Confirm spills do not occur between the XOR and branch that terminate the725; waterfall loop BBs.726 727define void @mubuf_vgpr_outside_entry(ptr addrspace(8) %i, ptr addrspace(8) %j, i32 %c, ptr addrspace(1) %in, ptr addrspace(1) %out) #0 {728; GFX9_W64-LABEL: mubuf_vgpr_outside_entry:729; GFX9_W64: ; %bb.0: ; %entry730; GFX9_W64-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)731; GFX9_W64-NEXT: ;;#ASMSTART732; GFX9_W64-NEXT: s_mov_b32 s4, 17733; GFX9_W64-NEXT: ;;#ASMEND734; GFX9_W64-NEXT: v_mov_b32_e32 v8, s4735; GFX9_W64-NEXT: s_mov_b64 s[12:13], exec736; GFX9_W64-NEXT: .LBB2_1: ; =>This Inner Loop Header: Depth=1737; GFX9_W64-NEXT: v_readfirstlane_b32 s8, v0738; GFX9_W64-NEXT: v_readfirstlane_b32 s9, v1739; GFX9_W64-NEXT: v_readfirstlane_b32 s10, v2740; GFX9_W64-NEXT: v_readfirstlane_b32 s11, v3741; GFX9_W64-NEXT: v_cmp_eq_u64_e32 vcc, s[8:9], v[0:1]742; GFX9_W64-NEXT: v_cmp_eq_u64_e64 s[6:7], s[10:11], v[2:3]743; GFX9_W64-NEXT: s_and_b64 s[6:7], vcc, s[6:7]744; GFX9_W64-NEXT: s_and_saveexec_b64 s[6:7], s[6:7]745; GFX9_W64-NEXT: s_nop 0746; GFX9_W64-NEXT: buffer_load_format_x v9, v8, s[8:11], 0 idxen747; GFX9_W64-NEXT: ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3748; GFX9_W64-NEXT: ; implicit-def: $vgpr8749; GFX9_W64-NEXT: s_xor_b64 exec, exec, s[6:7]750; GFX9_W64-NEXT: s_cbranch_execnz .LBB2_1751; GFX9_W64-NEXT: ; %bb.2:752; GFX9_W64-NEXT: s_mov_b64 exec, s[12:13]753; GFX9_W64-NEXT: v_and_b32_e32 v0, 0x3ff, v31754; GFX9_W64-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0755; GFX9_W64-NEXT: s_and_saveexec_b64 s[6:7], vcc756; GFX9_W64-NEXT: s_cbranch_execz .LBB2_6757; GFX9_W64-NEXT: ; %bb.3: ; %bb1758; GFX9_W64-NEXT: v_mov_b32_e32 v0, s4759; GFX9_W64-NEXT: s_mov_b64 s[12:13], exec760; GFX9_W64-NEXT: .LBB2_4: ; =>This Inner Loop Header: Depth=1761; GFX9_W64-NEXT: v_readfirstlane_b32 s8, v4762; GFX9_W64-NEXT: v_readfirstlane_b32 s9, v5763; GFX9_W64-NEXT: v_readfirstlane_b32 s10, v6764; GFX9_W64-NEXT: v_readfirstlane_b32 s11, v7765; GFX9_W64-NEXT: v_cmp_eq_u64_e32 vcc, s[8:9], v[4:5]766; GFX9_W64-NEXT: v_cmp_eq_u64_e64 s[4:5], s[10:11], v[6:7]767; GFX9_W64-NEXT: s_and_b64 s[4:5], vcc, s[4:5]768; GFX9_W64-NEXT: s_and_saveexec_b64 s[4:5], s[4:5]769; GFX9_W64-NEXT: s_nop 0770; GFX9_W64-NEXT: buffer_load_format_x v9, v0, s[8:11], 0 idxen771; GFX9_W64-NEXT: ; implicit-def: $vgpr4_vgpr5_vgpr6_vgpr7772; GFX9_W64-NEXT: ; implicit-def: $vgpr0773; GFX9_W64-NEXT: s_xor_b64 exec, exec, s[4:5]774; GFX9_W64-NEXT: s_cbranch_execnz .LBB2_4775; GFX9_W64-NEXT: ; %bb.5:776; GFX9_W64-NEXT: s_mov_b64 exec, s[12:13]777; GFX9_W64-NEXT: .LBB2_6: ; %bb2778; GFX9_W64-NEXT: s_or_b64 exec, exec, s[6:7]779; GFX9_W64-NEXT: s_waitcnt vmcnt(0)780; GFX9_W64-NEXT: global_store_dword v[11:12], v9, off781; GFX9_W64-NEXT: s_waitcnt vmcnt(0)782; GFX9_W64-NEXT: s_setpc_b64 s[30:31]783;784; GFX1010_W32-LABEL: mubuf_vgpr_outside_entry:785; GFX1010_W32: ; %bb.0: ; %entry786; GFX1010_W32-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)787; GFX1010_W32-NEXT: ;;#ASMSTART788; GFX1010_W32-NEXT: s_mov_b32 s4, 17789; GFX1010_W32-NEXT: ;;#ASMEND790; GFX1010_W32-NEXT: v_mov_b32_e32 v8, s4791; GFX1010_W32-NEXT: s_mov_b32 s6, exec_lo792; GFX1010_W32-NEXT: .LBB2_1: ; =>This Inner Loop Header: Depth=1793; GFX1010_W32-NEXT: v_readfirstlane_b32 s8, v0794; GFX1010_W32-NEXT: v_readfirstlane_b32 s9, v1795; GFX1010_W32-NEXT: v_readfirstlane_b32 s10, v2796; GFX1010_W32-NEXT: v_readfirstlane_b32 s11, v3797; GFX1010_W32-NEXT: v_cmp_eq_u64_e32 vcc_lo, s[8:9], v[0:1]798; GFX1010_W32-NEXT: v_cmp_eq_u64_e64 s5, s[10:11], v[2:3]799; GFX1010_W32-NEXT: s_and_b32 s5, vcc_lo, s5800; GFX1010_W32-NEXT: s_and_saveexec_b32 s5, s5801; GFX1010_W32-NEXT: buffer_load_format_x v9, v8, s[8:11], 0 idxen802; GFX1010_W32-NEXT: ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3803; GFX1010_W32-NEXT: ; implicit-def: $vgpr8804; GFX1010_W32-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)805; GFX1010_W32-NEXT: s_xor_b32 exec_lo, exec_lo, s5806; GFX1010_W32-NEXT: s_cbranch_execnz .LBB2_1807; GFX1010_W32-NEXT: ; %bb.2:808; GFX1010_W32-NEXT: s_mov_b32 exec_lo, s6809; GFX1010_W32-NEXT: v_and_b32_e32 v0, 0x3ff, v31810; GFX1010_W32-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v0811; GFX1010_W32-NEXT: s_and_saveexec_b32 s5, vcc_lo812; GFX1010_W32-NEXT: s_cbranch_execz .LBB2_6813; GFX1010_W32-NEXT: ; %bb.3: ; %bb1814; GFX1010_W32-NEXT: v_mov_b32_e32 v0, s4815; GFX1010_W32-NEXT: s_mov_b32 s6, exec_lo816; GFX1010_W32-NEXT: .LBB2_4: ; =>This Inner Loop Header: Depth=1817; GFX1010_W32-NEXT: v_readfirstlane_b32 s8, v4818; GFX1010_W32-NEXT: v_readfirstlane_b32 s9, v5819; GFX1010_W32-NEXT: v_readfirstlane_b32 s10, v6820; GFX1010_W32-NEXT: v_readfirstlane_b32 s11, v7821; GFX1010_W32-NEXT: v_cmp_eq_u64_e32 vcc_lo, s[8:9], v[4:5]822; GFX1010_W32-NEXT: v_cmp_eq_u64_e64 s4, s[10:11], v[6:7]823; GFX1010_W32-NEXT: s_and_b32 s4, vcc_lo, s4824; GFX1010_W32-NEXT: s_and_saveexec_b32 s4, s4825; GFX1010_W32-NEXT: buffer_load_format_x v9, v0, s[8:11], 0 idxen826; GFX1010_W32-NEXT: ; implicit-def: $vgpr4_vgpr5_vgpr6_vgpr7827; GFX1010_W32-NEXT: ; implicit-def: $vgpr0828; GFX1010_W32-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)829; GFX1010_W32-NEXT: s_xor_b32 exec_lo, exec_lo, s4830; GFX1010_W32-NEXT: s_cbranch_execnz .LBB2_4831; GFX1010_W32-NEXT: ; %bb.5:832; GFX1010_W32-NEXT: s_mov_b32 exec_lo, s6833; GFX1010_W32-NEXT: .LBB2_6: ; %bb2834; GFX1010_W32-NEXT: s_or_b32 exec_lo, exec_lo, s5835; GFX1010_W32-NEXT: s_waitcnt vmcnt(0)836; GFX1010_W32-NEXT: global_store_dword v[11:12], v9, off837; GFX1010_W32-NEXT: s_waitcnt_vscnt null, 0x0838; GFX1010_W32-NEXT: s_setpc_b64 s[30:31]839;840; GFX1010_W64-LABEL: mubuf_vgpr_outside_entry:841; GFX1010_W64: ; %bb.0: ; %entry842; GFX1010_W64-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)843; GFX1010_W64-NEXT: ;;#ASMSTART844; GFX1010_W64-NEXT: s_mov_b32 s4, 17845; GFX1010_W64-NEXT: ;;#ASMEND846; GFX1010_W64-NEXT: v_mov_b32_e32 v8, s4847; GFX1010_W64-NEXT: s_mov_b64 s[12:13], exec848; GFX1010_W64-NEXT: .LBB2_1: ; =>This Inner Loop Header: Depth=1849; GFX1010_W64-NEXT: v_readfirstlane_b32 s8, v0850; GFX1010_W64-NEXT: v_readfirstlane_b32 s9, v1851; GFX1010_W64-NEXT: v_readfirstlane_b32 s10, v2852; GFX1010_W64-NEXT: v_readfirstlane_b32 s11, v3853; GFX1010_W64-NEXT: v_cmp_eq_u64_e32 vcc, s[8:9], v[0:1]854; GFX1010_W64-NEXT: v_cmp_eq_u64_e64 s[6:7], s[10:11], v[2:3]855; GFX1010_W64-NEXT: s_and_b64 s[6:7], vcc, s[6:7]856; GFX1010_W64-NEXT: s_and_saveexec_b64 s[6:7], s[6:7]857; GFX1010_W64-NEXT: buffer_load_format_x v9, v8, s[8:11], 0 idxen858; GFX1010_W64-NEXT: ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3859; GFX1010_W64-NEXT: ; implicit-def: $vgpr8860; GFX1010_W64-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)861; GFX1010_W64-NEXT: s_xor_b64 exec, exec, s[6:7]862; GFX1010_W64-NEXT: s_cbranch_execnz .LBB2_1863; GFX1010_W64-NEXT: ; %bb.2:864; GFX1010_W64-NEXT: s_mov_b64 exec, s[12:13]865; GFX1010_W64-NEXT: v_and_b32_e32 v0, 0x3ff, v31866; GFX1010_W64-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0867; GFX1010_W64-NEXT: s_and_saveexec_b64 s[6:7], vcc868; GFX1010_W64-NEXT: s_cbranch_execz .LBB2_6869; GFX1010_W64-NEXT: ; %bb.3: ; %bb1870; GFX1010_W64-NEXT: v_mov_b32_e32 v0, s4871; GFX1010_W64-NEXT: s_mov_b64 s[12:13], exec872; GFX1010_W64-NEXT: .LBB2_4: ; =>This Inner Loop Header: Depth=1873; GFX1010_W64-NEXT: v_readfirstlane_b32 s8, v4874; GFX1010_W64-NEXT: v_readfirstlane_b32 s9, v5875; GFX1010_W64-NEXT: v_readfirstlane_b32 s10, v6876; GFX1010_W64-NEXT: v_readfirstlane_b32 s11, v7877; GFX1010_W64-NEXT: v_cmp_eq_u64_e32 vcc, s[8:9], v[4:5]878; GFX1010_W64-NEXT: v_cmp_eq_u64_e64 s[4:5], s[10:11], v[6:7]879; GFX1010_W64-NEXT: s_and_b64 s[4:5], vcc, s[4:5]880; GFX1010_W64-NEXT: s_and_saveexec_b64 s[4:5], s[4:5]881; GFX1010_W64-NEXT: buffer_load_format_x v9, v0, s[8:11], 0 idxen882; GFX1010_W64-NEXT: ; implicit-def: $vgpr4_vgpr5_vgpr6_vgpr7883; GFX1010_W64-NEXT: ; implicit-def: $vgpr0884; GFX1010_W64-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)885; GFX1010_W64-NEXT: s_xor_b64 exec, exec, s[4:5]886; GFX1010_W64-NEXT: s_cbranch_execnz .LBB2_4887; GFX1010_W64-NEXT: ; %bb.5:888; GFX1010_W64-NEXT: s_mov_b64 exec, s[12:13]889; GFX1010_W64-NEXT: .LBB2_6: ; %bb2890; GFX1010_W64-NEXT: s_or_b64 exec, exec, s[6:7]891; GFX1010_W64-NEXT: s_waitcnt vmcnt(0)892; GFX1010_W64-NEXT: global_store_dword v[11:12], v9, off893; GFX1010_W64-NEXT: s_waitcnt_vscnt null, 0x0894; GFX1010_W64-NEXT: s_setpc_b64 s[30:31]895;896; GFX1100_W32-LABEL: mubuf_vgpr_outside_entry:897; GFX1100_W32: ; %bb.0: ; %entry898; GFX1100_W32-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)899; GFX1100_W32-NEXT: ;;#ASMSTART900; GFX1100_W32-NEXT: s_mov_b32 s4, 17901; GFX1100_W32-NEXT: ;;#ASMEND902; GFX1100_W32-NEXT: v_mov_b32_e32 v8, s4903; GFX1100_W32-NEXT: s_mov_b32 s1, exec_lo904; GFX1100_W32-NEXT: .LBB2_1: ; =>This Inner Loop Header: Depth=1905; GFX1100_W32-NEXT: v_readfirstlane_b32 s8, v0906; GFX1100_W32-NEXT: v_readfirstlane_b32 s9, v1907; GFX1100_W32-NEXT: v_readfirstlane_b32 s10, v2908; GFX1100_W32-NEXT: v_readfirstlane_b32 s11, v3909; GFX1100_W32-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)910; GFX1100_W32-NEXT: v_cmp_eq_u64_e32 vcc_lo, s[8:9], v[0:1]911; GFX1100_W32-NEXT: v_cmp_eq_u64_e64 s0, s[10:11], v[2:3]912; GFX1100_W32-NEXT: s_and_b32 s0, vcc_lo, s0913; GFX1100_W32-NEXT: s_delay_alu instid0(SALU_CYCLE_1)914; GFX1100_W32-NEXT: s_and_saveexec_b32 s0, s0915; GFX1100_W32-NEXT: buffer_load_format_x v9, v8, s[8:11], 0 idxen916; GFX1100_W32-NEXT: ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3917; GFX1100_W32-NEXT: ; implicit-def: $vgpr8918; GFX1100_W32-NEXT: s_xor_b32 exec_lo, exec_lo, s0919; GFX1100_W32-NEXT: s_cbranch_execnz .LBB2_1920; GFX1100_W32-NEXT: ; %bb.2:921; GFX1100_W32-NEXT: s_mov_b32 exec_lo, s1922; GFX1100_W32-NEXT: v_and_b32_e32 v0, 0x3ff, v31923; GFX1100_W32-NEXT: s_mov_b32 s1, exec_lo924; GFX1100_W32-NEXT: s_delay_alu instid0(VALU_DEP_1)925; GFX1100_W32-NEXT: v_cmpx_eq_u32_e32 0, v0926; GFX1100_W32-NEXT: s_cbranch_execz .LBB2_6927; GFX1100_W32-NEXT: ; %bb.3: ; %bb1928; GFX1100_W32-NEXT: v_mov_b32_e32 v0, s4929; GFX1100_W32-NEXT: s_mov_b32 s2, exec_lo930; GFX1100_W32-NEXT: .LBB2_4: ; =>This Inner Loop Header: Depth=1931; GFX1100_W32-NEXT: v_readfirstlane_b32 s4, v4932; GFX1100_W32-NEXT: v_readfirstlane_b32 s5, v5933; GFX1100_W32-NEXT: v_readfirstlane_b32 s6, v6934; GFX1100_W32-NEXT: v_readfirstlane_b32 s7, v7935; GFX1100_W32-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)936; GFX1100_W32-NEXT: v_cmp_eq_u64_e32 vcc_lo, s[4:5], v[4:5]937; GFX1100_W32-NEXT: v_cmp_eq_u64_e64 s0, s[6:7], v[6:7]938; GFX1100_W32-NEXT: s_and_b32 s0, vcc_lo, s0939; GFX1100_W32-NEXT: s_delay_alu instid0(SALU_CYCLE_1)940; GFX1100_W32-NEXT: s_and_saveexec_b32 s0, s0941; GFX1100_W32-NEXT: buffer_load_format_x v9, v0, s[4:7], 0 idxen942; GFX1100_W32-NEXT: ; implicit-def: $vgpr4_vgpr5_vgpr6_vgpr7943; GFX1100_W32-NEXT: ; implicit-def: $vgpr0944; GFX1100_W32-NEXT: s_xor_b32 exec_lo, exec_lo, s0945; GFX1100_W32-NEXT: s_cbranch_execnz .LBB2_4946; GFX1100_W32-NEXT: ; %bb.5:947; GFX1100_W32-NEXT: s_mov_b32 exec_lo, s2948; GFX1100_W32-NEXT: .LBB2_6: ; %bb2949; GFX1100_W32-NEXT: s_delay_alu instid0(SALU_CYCLE_1)950; GFX1100_W32-NEXT: s_or_b32 exec_lo, exec_lo, s1951; GFX1100_W32-NEXT: s_waitcnt vmcnt(0)952; GFX1100_W32-NEXT: global_store_b32 v[11:12], v9, off dlc953; GFX1100_W32-NEXT: s_waitcnt_vscnt null, 0x0954; GFX1100_W32-NEXT: s_setpc_b64 s[30:31]955;956; GFX1100_W64-LABEL: mubuf_vgpr_outside_entry:957; GFX1100_W64: ; %bb.0: ; %entry958; GFX1100_W64-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)959; GFX1100_W64-NEXT: ;;#ASMSTART960; GFX1100_W64-NEXT: s_mov_b32 s4, 17961; GFX1100_W64-NEXT: ;;#ASMEND962; GFX1100_W64-NEXT: v_mov_b32_e32 v8, s4963; GFX1100_W64-NEXT: s_mov_b64 s[2:3], exec964; GFX1100_W64-NEXT: .LBB2_1: ; =>This Inner Loop Header: Depth=1965; GFX1100_W64-NEXT: v_readfirstlane_b32 s8, v0966; GFX1100_W64-NEXT: v_readfirstlane_b32 s9, v1967; GFX1100_W64-NEXT: v_readfirstlane_b32 s10, v2968; GFX1100_W64-NEXT: v_readfirstlane_b32 s11, v3969; GFX1100_W64-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)970; GFX1100_W64-NEXT: v_cmp_eq_u64_e32 vcc, s[8:9], v[0:1]971; GFX1100_W64-NEXT: v_cmp_eq_u64_e64 s[0:1], s[10:11], v[2:3]972; GFX1100_W64-NEXT: s_and_b64 s[0:1], vcc, s[0:1]973; GFX1100_W64-NEXT: s_delay_alu instid0(SALU_CYCLE_1)974; GFX1100_W64-NEXT: s_and_saveexec_b64 s[0:1], s[0:1]975; GFX1100_W64-NEXT: buffer_load_format_x v9, v8, s[8:11], 0 idxen976; GFX1100_W64-NEXT: ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3977; GFX1100_W64-NEXT: ; implicit-def: $vgpr8978; GFX1100_W64-NEXT: s_xor_b64 exec, exec, s[0:1]979; GFX1100_W64-NEXT: s_cbranch_execnz .LBB2_1980; GFX1100_W64-NEXT: ; %bb.2:981; GFX1100_W64-NEXT: s_mov_b64 exec, s[2:3]982; GFX1100_W64-NEXT: v_and_b32_e32 v0, 0x3ff, v31983; GFX1100_W64-NEXT: s_mov_b64 s[2:3], exec984; GFX1100_W64-NEXT: s_delay_alu instid0(VALU_DEP_1)985; GFX1100_W64-NEXT: v_cmpx_eq_u32_e32 0, v0986; GFX1100_W64-NEXT: s_cbranch_execz .LBB2_6987; GFX1100_W64-NEXT: ; %bb.3: ; %bb1988; GFX1100_W64-NEXT: v_mov_b32_e32 v0, s4989; GFX1100_W64-NEXT: s_mov_b64 s[8:9], exec990; GFX1100_W64-NEXT: .LBB2_4: ; =>This Inner Loop Header: Depth=1991; GFX1100_W64-NEXT: v_readfirstlane_b32 s4, v4992; GFX1100_W64-NEXT: v_readfirstlane_b32 s5, v5993; GFX1100_W64-NEXT: v_readfirstlane_b32 s6, v6994; GFX1100_W64-NEXT: v_readfirstlane_b32 s7, v7995; GFX1100_W64-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)996; GFX1100_W64-NEXT: v_cmp_eq_u64_e32 vcc, s[4:5], v[4:5]997; GFX1100_W64-NEXT: v_cmp_eq_u64_e64 s[0:1], s[6:7], v[6:7]998; GFX1100_W64-NEXT: s_and_b64 s[0:1], vcc, s[0:1]999; GFX1100_W64-NEXT: s_delay_alu instid0(SALU_CYCLE_1)1000; GFX1100_W64-NEXT: s_and_saveexec_b64 s[0:1], s[0:1]1001; GFX1100_W64-NEXT: buffer_load_format_x v9, v0, s[4:7], 0 idxen1002; GFX1100_W64-NEXT: ; implicit-def: $vgpr4_vgpr5_vgpr6_vgpr71003; GFX1100_W64-NEXT: ; implicit-def: $vgpr01004; GFX1100_W64-NEXT: s_xor_b64 exec, exec, s[0:1]1005; GFX1100_W64-NEXT: s_cbranch_execnz .LBB2_41006; GFX1100_W64-NEXT: ; %bb.5:1007; GFX1100_W64-NEXT: s_mov_b64 exec, s[8:9]1008; GFX1100_W64-NEXT: .LBB2_6: ; %bb21009; GFX1100_W64-NEXT: s_delay_alu instid0(SALU_CYCLE_1)1010; GFX1100_W64-NEXT: s_or_b64 exec, exec, s[2:3]1011; GFX1100_W64-NEXT: s_waitcnt vmcnt(0)1012; GFX1100_W64-NEXT: global_store_b32 v[11:12], v9, off dlc1013; GFX1100_W64-NEXT: s_waitcnt_vscnt null, 0x01014; GFX1100_W64-NEXT: s_setpc_b64 s[30:31]1015;1016; W64-O0-LABEL: mubuf_vgpr_outside_entry:1017; W64-O0: ; %bb.0: ; %entry1018; W64-O0-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1019; W64-O0-NEXT: s_xor_saveexec_b64 s[4:5], -11020; W64-O0-NEXT: buffer_store_dword v13, off, s[0:3], s32 offset:100 ; 4-byte Folded Spill1021; W64-O0-NEXT: s_mov_b64 exec, s[4:5]1022; W64-O0-NEXT: buffer_store_dword v31, off, s[0:3], s32 offset:64 ; 4-byte Folded Spill1023; W64-O0-NEXT: buffer_store_dword v11, off, s[0:3], s32 offset:48 ; 4-byte Folded Spill1024; W64-O0-NEXT: buffer_store_dword v6, off, s[0:3], s32 offset:60 ; 4-byte Folded Spill1025; W64-O0-NEXT: buffer_store_dword v5, off, s[0:3], s32 offset:52 ; 4-byte Folded Spill1026; W64-O0-NEXT: v_mov_b32_e32 v5, v41027; W64-O0-NEXT: buffer_load_dword v4, off, s[0:3], s32 offset:60 ; 4-byte Folded Reload1028; W64-O0-NEXT: s_nop 01029; W64-O0-NEXT: buffer_store_dword v5, off, s[0:3], s32 offset:56 ; 4-byte Folded Spill1030; W64-O0-NEXT: v_mov_b32_e32 v9, v21031; W64-O0-NEXT: buffer_load_dword v2, off, s[0:3], s32 offset:56 ; 4-byte Folded Reload1032; W64-O0-NEXT: v_mov_b32_e32 v6, v11033; W64-O0-NEXT: buffer_load_dword v1, off, s[0:3], s32 offset:52 ; 4-byte Folded Reload1034; W64-O0-NEXT: v_mov_b32_e32 v8, v01035; W64-O0-NEXT: buffer_load_dword v0, off, s[0:3], s32 offset:48 ; 4-byte Folded Reload1036; W64-O0-NEXT: ; kill: def $vgpr9 killed $vgpr9 def $vgpr9_vgpr10 killed $exec1037; W64-O0-NEXT: v_mov_b32_e32 v10, v31038; W64-O0-NEXT: v_mov_b32_e32 v3, v101039; W64-O0-NEXT: v_mov_b32_e32 v5, v91040; W64-O0-NEXT: ; kill: def $vgpr8 killed $vgpr8 def $vgpr8_vgpr9 killed $exec1041; W64-O0-NEXT: v_mov_b32_e32 v9, v61042; W64-O0-NEXT: v_mov_b32_e32 v6, v91043; W64-O0-NEXT: ; kill: def $vgpr8 killed $vgpr8 killed $vgpr8_vgpr9 killed $exec1044; W64-O0-NEXT: ; kill: def $vgpr8 killed $vgpr8 def $vgpr8_vgpr9_vgpr10_vgpr11 killed $exec1045; W64-O0-NEXT: v_mov_b32_e32 v9, v61046; W64-O0-NEXT: v_mov_b32_e32 v10, v51047; W64-O0-NEXT: v_mov_b32_e32 v11, v31048; W64-O0-NEXT: buffer_store_dword v8, off, s[0:3], s32 offset:32 ; 4-byte Folded Spill1049; W64-O0-NEXT: s_nop 01050; W64-O0-NEXT: buffer_store_dword v9, off, s[0:3], s32 offset:36 ; 4-byte Folded Spill1051; W64-O0-NEXT: buffer_store_dword v10, off, s[0:3], s32 offset:40 ; 4-byte Folded Spill1052; W64-O0-NEXT: buffer_store_dword v11, off, s[0:3], s32 offset:44 ; 4-byte Folded Spill1053; W64-O0-NEXT: ; kill: def $vgpr4 killed $vgpr4 def $vgpr4_vgpr5 killed $exec1054; W64-O0-NEXT: v_mov_b32_e32 v5, v71055; W64-O0-NEXT: ; kill: def $vgpr2 killed $vgpr2 def $vgpr2_vgpr3 killed $exec1056; W64-O0-NEXT: s_waitcnt vmcnt(5)1057; W64-O0-NEXT: v_mov_b32_e32 v3, v11058; W64-O0-NEXT: ; kill: def $vgpr0 killed $vgpr0 def $vgpr0_vgpr1 killed $exec1059; W64-O0-NEXT: v_mov_b32_e32 v1, v121060; W64-O0-NEXT: buffer_store_dword v4, off, s[0:3], s32 offset:24 ; 4-byte Folded Spill1061; W64-O0-NEXT: s_nop 01062; W64-O0-NEXT: buffer_store_dword v5, off, s[0:3], s32 offset:28 ; 4-byte Folded Spill1063; W64-O0-NEXT: buffer_store_dword v2, off, s[0:3], s32 offset:16 ; 4-byte Folded Spill1064; W64-O0-NEXT: s_nop 01065; W64-O0-NEXT: buffer_store_dword v3, off, s[0:3], s32 offset:20 ; 4-byte Folded Spill1066; W64-O0-NEXT: s_waitcnt vmcnt(8)1067; W64-O0-NEXT: buffer_store_dword v0, off, s[0:3], s32 offset:8 ; 4-byte Folded Spill1068; W64-O0-NEXT: s_nop 01069; W64-O0-NEXT: buffer_store_dword v1, off, s[0:3], s32 offset:12 ; 4-byte Folded Spill1070; W64-O0-NEXT: ;;#ASMSTART1071; W64-O0-NEXT: s_mov_b32 s4, 171072; W64-O0-NEXT: ;;#ASMEND1073; W64-O0-NEXT: s_mov_b32 s5, s41074; W64-O0-NEXT: ; implicit-def: $vgpr13 : SGPR spill to VGPR lane1075; W64-O0-NEXT: v_writelane_b32 v13, s5, 01076; W64-O0-NEXT: s_mov_b32 s5, 01077; W64-O0-NEXT: v_writelane_b32 v13, s5, 11078; W64-O0-NEXT: v_mov_b32_e32 v0, s41079; W64-O0-NEXT: buffer_store_dword v0, off, s[0:3], s32 offset:4 ; 4-byte Folded Spill1080; W64-O0-NEXT: s_mov_b64 s[4:5], exec1081; W64-O0-NEXT: v_writelane_b32 v13, s4, 21082; W64-O0-NEXT: v_writelane_b32 v13, s5, 31083; W64-O0-NEXT: s_or_saveexec_b64 s[16:17], -11084; W64-O0-NEXT: buffer_store_dword v13, off, s[0:3], s32 ; 4-byte Folded Spill1085; W64-O0-NEXT: s_mov_b64 exec, s[16:17]1086; W64-O0-NEXT: .LBB2_1: ; =>This Inner Loop Header: Depth=11087; W64-O0-NEXT: s_or_saveexec_b64 s[16:17], -11088; W64-O0-NEXT: buffer_load_dword v13, off, s[0:3], s32 ; 4-byte Folded Reload1089; W64-O0-NEXT: s_mov_b64 exec, s[16:17]1090; W64-O0-NEXT: buffer_load_dword v0, off, s[0:3], s32 offset:32 ; 4-byte Folded Reload1091; W64-O0-NEXT: buffer_load_dword v1, off, s[0:3], s32 offset:36 ; 4-byte Folded Reload1092; W64-O0-NEXT: buffer_load_dword v2, off, s[0:3], s32 offset:40 ; 4-byte Folded Reload1093; W64-O0-NEXT: buffer_load_dword v3, off, s[0:3], s32 offset:44 ; 4-byte Folded Reload1094; W64-O0-NEXT: s_waitcnt vmcnt(3)1095; W64-O0-NEXT: v_readfirstlane_b32 s8, v01096; W64-O0-NEXT: s_waitcnt vmcnt(2)1097; W64-O0-NEXT: v_readfirstlane_b32 s12, v11098; W64-O0-NEXT: s_mov_b32 s4, s81099; W64-O0-NEXT: s_mov_b32 s5, s121100; W64-O0-NEXT: v_cmp_eq_u64_e64 s[4:5], s[4:5], v[0:1]1101; W64-O0-NEXT: s_waitcnt vmcnt(1)1102; W64-O0-NEXT: v_readfirstlane_b32 s7, v21103; W64-O0-NEXT: s_waitcnt vmcnt(0)1104; W64-O0-NEXT: v_readfirstlane_b32 s6, v31105; W64-O0-NEXT: s_mov_b32 s10, s71106; W64-O0-NEXT: s_mov_b32 s11, s61107; W64-O0-NEXT: v_cmp_eq_u64_e64 s[10:11], s[10:11], v[2:3]1108; W64-O0-NEXT: s_and_b64 s[4:5], s[4:5], s[10:11]1109; W64-O0-NEXT: ; kill: def $sgpr8 killed $sgpr8 def $sgpr8_sgpr9_sgpr10_sgpr111110; W64-O0-NEXT: s_mov_b32 s9, s121111; W64-O0-NEXT: s_mov_b32 s10, s71112; W64-O0-NEXT: s_mov_b32 s11, s61113; W64-O0-NEXT: v_writelane_b32 v13, s8, 41114; W64-O0-NEXT: v_writelane_b32 v13, s9, 51115; W64-O0-NEXT: v_writelane_b32 v13, s10, 61116; W64-O0-NEXT: v_writelane_b32 v13, s11, 71117; W64-O0-NEXT: s_and_saveexec_b64 s[4:5], s[4:5]1118; W64-O0-NEXT: v_writelane_b32 v13, s4, 81119; W64-O0-NEXT: v_writelane_b32 v13, s5, 91120; W64-O0-NEXT: s_or_saveexec_b64 s[16:17], -11121; W64-O0-NEXT: buffer_store_dword v13, off, s[0:3], s32 ; 4-byte Folded Spill1122; W64-O0-NEXT: s_mov_b64 exec, s[16:17]1123; W64-O0-NEXT: ; %bb.2: ; in Loop: Header=BB2_1 Depth=11124; W64-O0-NEXT: s_or_saveexec_b64 s[16:17], -11125; W64-O0-NEXT: buffer_load_dword v13, off, s[0:3], s32 ; 4-byte Folded Reload1126; W64-O0-NEXT: s_mov_b64 exec, s[16:17]1127; W64-O0-NEXT: s_waitcnt vmcnt(0)1128; W64-O0-NEXT: v_readlane_b32 s4, v13, 81129; W64-O0-NEXT: v_readlane_b32 s5, v13, 91130; W64-O0-NEXT: v_readlane_b32 s8, v13, 41131; W64-O0-NEXT: v_readlane_b32 s9, v13, 51132; W64-O0-NEXT: v_readlane_b32 s10, v13, 61133; W64-O0-NEXT: v_readlane_b32 s11, v13, 71134; W64-O0-NEXT: v_readlane_b32 s6, v13, 11135; W64-O0-NEXT: buffer_load_dword v0, off, s[0:3], s32 offset:4 ; 4-byte Folded Reload1136; W64-O0-NEXT: s_waitcnt vmcnt(0)1137; W64-O0-NEXT: s_nop 21138; W64-O0-NEXT: buffer_load_format_x v0, v0, s[8:11], s6 idxen1139; W64-O0-NEXT: s_waitcnt vmcnt(0)1140; W64-O0-NEXT: buffer_store_dword v0, off, s[0:3], s32 offset:68 ; 4-byte Folded Spill1141; W64-O0-NEXT: s_xor_b64 exec, exec, s[4:5]1142; W64-O0-NEXT: s_cbranch_execnz .LBB2_11143; W64-O0-NEXT: ; %bb.3:1144; W64-O0-NEXT: s_or_saveexec_b64 s[16:17], -11145; W64-O0-NEXT: buffer_load_dword v13, off, s[0:3], s32 ; 4-byte Folded Reload1146; W64-O0-NEXT: s_mov_b64 exec, s[16:17]1147; W64-O0-NEXT: s_waitcnt vmcnt(0)1148; W64-O0-NEXT: v_readlane_b32 s6, v13, 21149; W64-O0-NEXT: v_readlane_b32 s7, v13, 31150; W64-O0-NEXT: s_mov_b64 exec, s[6:7]1151; W64-O0-NEXT: v_readlane_b32 s4, v13, 11152; W64-O0-NEXT: buffer_load_dword v0, off, s[0:3], s32 offset:68 ; 4-byte Folded Reload1153; W64-O0-NEXT: buffer_load_dword v1, off, s[0:3], s32 offset:64 ; 4-byte Folded Reload1154; W64-O0-NEXT: s_mov_b32 s5, 0x3ff1155; W64-O0-NEXT: s_waitcnt vmcnt(0)1156; W64-O0-NEXT: v_and_b32_e64 v1, v1, s51157; W64-O0-NEXT: v_cmp_eq_u32_e64 s[6:7], v1, s41158; W64-O0-NEXT: buffer_store_dword v0, off, s[0:3], s32 offset:72 ; 4-byte Folded Spill1159; W64-O0-NEXT: s_mov_b64 s[4:5], exec1160; W64-O0-NEXT: v_writelane_b32 v13, s4, 101161; W64-O0-NEXT: v_writelane_b32 v13, s5, 111162; W64-O0-NEXT: s_or_saveexec_b64 s[16:17], -11163; W64-O0-NEXT: buffer_store_dword v13, off, s[0:3], s32 ; 4-byte Folded Spill1164; W64-O0-NEXT: s_mov_b64 exec, s[16:17]1165; W64-O0-NEXT: s_and_b64 s[4:5], s[4:5], s[6:7]1166; W64-O0-NEXT: s_mov_b64 exec, s[4:5]1167; W64-O0-NEXT: s_cbranch_execz .LBB2_81168; W64-O0-NEXT: ; %bb.4: ; %bb11169; W64-O0-NEXT: s_or_saveexec_b64 s[16:17], -11170; W64-O0-NEXT: buffer_load_dword v13, off, s[0:3], s32 ; 4-byte Folded Reload1171; W64-O0-NEXT: s_mov_b64 exec, s[16:17]1172; W64-O0-NEXT: s_waitcnt vmcnt(0)1173; W64-O0-NEXT: v_readlane_b32 s4, v13, 01174; W64-O0-NEXT: buffer_load_dword v1, off, s[0:3], s32 offset:24 ; 4-byte Folded Reload1175; W64-O0-NEXT: buffer_load_dword v2, off, s[0:3], s32 offset:28 ; 4-byte Folded Reload1176; W64-O0-NEXT: buffer_load_dword v3, off, s[0:3], s32 offset:16 ; 4-byte Folded Reload1177; W64-O0-NEXT: buffer_load_dword v4, off, s[0:3], s32 offset:20 ; 4-byte Folded Reload1178; W64-O0-NEXT: s_waitcnt vmcnt(0)1179; W64-O0-NEXT: v_mov_b32_e32 v6, v41180; W64-O0-NEXT: v_mov_b32_e32 v0, v31181; W64-O0-NEXT: v_mov_b32_e32 v4, v21182; W64-O0-NEXT: v_mov_b32_e32 v5, v11183; W64-O0-NEXT: ; kill: def $vgpr0 killed $vgpr0 def $vgpr0_vgpr1_vgpr2_vgpr3 killed $exec1184; W64-O0-NEXT: v_mov_b32_e32 v1, v61185; W64-O0-NEXT: v_mov_b32_e32 v2, v51186; W64-O0-NEXT: v_mov_b32_e32 v3, v41187; W64-O0-NEXT: buffer_store_dword v0, off, s[0:3], s32 offset:80 ; 4-byte Folded Spill1188; W64-O0-NEXT: s_nop 01189; W64-O0-NEXT: buffer_store_dword v1, off, s[0:3], s32 offset:84 ; 4-byte Folded Spill1190; W64-O0-NEXT: buffer_store_dword v2, off, s[0:3], s32 offset:88 ; 4-byte Folded Spill1191; W64-O0-NEXT: buffer_store_dword v3, off, s[0:3], s32 offset:92 ; 4-byte Folded Spill1192; W64-O0-NEXT: s_mov_b32 s5, 01193; W64-O0-NEXT: v_writelane_b32 v13, s5, 121194; W64-O0-NEXT: v_mov_b32_e32 v0, s41195; W64-O0-NEXT: buffer_store_dword v0, off, s[0:3], s32 offset:76 ; 4-byte Folded Spill1196; W64-O0-NEXT: s_mov_b64 s[4:5], exec1197; W64-O0-NEXT: v_writelane_b32 v13, s4, 131198; W64-O0-NEXT: v_writelane_b32 v13, s5, 141199; W64-O0-NEXT: s_or_saveexec_b64 s[16:17], -11200; W64-O0-NEXT: buffer_store_dword v13, off, s[0:3], s32 ; 4-byte Folded Spill1201; W64-O0-NEXT: s_mov_b64 exec, s[16:17]1202; W64-O0-NEXT: .LBB2_5: ; =>This Inner Loop Header: Depth=11203; W64-O0-NEXT: s_or_saveexec_b64 s[16:17], -11204; W64-O0-NEXT: buffer_load_dword v13, off, s[0:3], s32 ; 4-byte Folded Reload1205; W64-O0-NEXT: s_mov_b64 exec, s[16:17]1206; W64-O0-NEXT: buffer_load_dword v0, off, s[0:3], s32 offset:80 ; 4-byte Folded Reload1207; W64-O0-NEXT: buffer_load_dword v1, off, s[0:3], s32 offset:84 ; 4-byte Folded Reload1208; W64-O0-NEXT: buffer_load_dword v2, off, s[0:3], s32 offset:88 ; 4-byte Folded Reload1209; W64-O0-NEXT: buffer_load_dword v3, off, s[0:3], s32 offset:92 ; 4-byte Folded Reload1210; W64-O0-NEXT: s_waitcnt vmcnt(3)1211; W64-O0-NEXT: v_readfirstlane_b32 s8, v01212; W64-O0-NEXT: s_waitcnt vmcnt(2)1213; W64-O0-NEXT: v_readfirstlane_b32 s12, v11214; W64-O0-NEXT: s_mov_b32 s4, s81215; W64-O0-NEXT: s_mov_b32 s5, s121216; W64-O0-NEXT: v_cmp_eq_u64_e64 s[4:5], s[4:5], v[0:1]1217; W64-O0-NEXT: s_waitcnt vmcnt(1)1218; W64-O0-NEXT: v_readfirstlane_b32 s7, v21219; W64-O0-NEXT: s_waitcnt vmcnt(0)1220; W64-O0-NEXT: v_readfirstlane_b32 s6, v31221; W64-O0-NEXT: s_mov_b32 s10, s71222; W64-O0-NEXT: s_mov_b32 s11, s61223; W64-O0-NEXT: v_cmp_eq_u64_e64 s[10:11], s[10:11], v[2:3]1224; W64-O0-NEXT: s_and_b64 s[4:5], s[4:5], s[10:11]1225; W64-O0-NEXT: ; kill: def $sgpr8 killed $sgpr8 def $sgpr8_sgpr9_sgpr10_sgpr111226; W64-O0-NEXT: s_mov_b32 s9, s121227; W64-O0-NEXT: s_mov_b32 s10, s71228; W64-O0-NEXT: s_mov_b32 s11, s61229; W64-O0-NEXT: v_writelane_b32 v13, s8, 151230; W64-O0-NEXT: v_writelane_b32 v13, s9, 161231; W64-O0-NEXT: v_writelane_b32 v13, s10, 171232; W64-O0-NEXT: v_writelane_b32 v13, s11, 181233; W64-O0-NEXT: s_and_saveexec_b64 s[4:5], s[4:5]1234; W64-O0-NEXT: v_writelane_b32 v13, s4, 191235; W64-O0-NEXT: v_writelane_b32 v13, s5, 201236; W64-O0-NEXT: s_or_saveexec_b64 s[16:17], -11237; W64-O0-NEXT: buffer_store_dword v13, off, s[0:3], s32 ; 4-byte Folded Spill1238; W64-O0-NEXT: s_mov_b64 exec, s[16:17]1239; W64-O0-NEXT: ; %bb.6: ; in Loop: Header=BB2_5 Depth=11240; W64-O0-NEXT: s_or_saveexec_b64 s[16:17], -11241; W64-O0-NEXT: buffer_load_dword v13, off, s[0:3], s32 ; 4-byte Folded Reload1242; W64-O0-NEXT: s_mov_b64 exec, s[16:17]1243; W64-O0-NEXT: s_waitcnt vmcnt(0)1244; W64-O0-NEXT: v_readlane_b32 s4, v13, 191245; W64-O0-NEXT: v_readlane_b32 s5, v13, 201246; W64-O0-NEXT: v_readlane_b32 s8, v13, 151247; W64-O0-NEXT: v_readlane_b32 s9, v13, 161248; W64-O0-NEXT: v_readlane_b32 s10, v13, 171249; W64-O0-NEXT: v_readlane_b32 s11, v13, 181250; W64-O0-NEXT: v_readlane_b32 s6, v13, 121251; W64-O0-NEXT: buffer_load_dword v0, off, s[0:3], s32 offset:76 ; 4-byte Folded Reload1252; W64-O0-NEXT: s_waitcnt vmcnt(0)1253; W64-O0-NEXT: s_nop 21254; W64-O0-NEXT: buffer_load_format_x v0, v0, s[8:11], s6 idxen1255; W64-O0-NEXT: s_waitcnt vmcnt(0)1256; W64-O0-NEXT: buffer_store_dword v0, off, s[0:3], s32 offset:96 ; 4-byte Folded Spill1257; W64-O0-NEXT: s_xor_b64 exec, exec, s[4:5]1258; W64-O0-NEXT: s_cbranch_execnz .LBB2_51259; W64-O0-NEXT: ; %bb.7:1260; W64-O0-NEXT: s_or_saveexec_b64 s[16:17], -11261; W64-O0-NEXT: buffer_load_dword v13, off, s[0:3], s32 ; 4-byte Folded Reload1262; W64-O0-NEXT: s_mov_b64 exec, s[16:17]1263; W64-O0-NEXT: s_waitcnt vmcnt(0)1264; W64-O0-NEXT: v_readlane_b32 s4, v13, 131265; W64-O0-NEXT: v_readlane_b32 s5, v13, 141266; W64-O0-NEXT: s_mov_b64 exec, s[4:5]1267; W64-O0-NEXT: buffer_load_dword v0, off, s[0:3], s32 offset:96 ; 4-byte Folded Reload1268; W64-O0-NEXT: s_waitcnt vmcnt(0)1269; W64-O0-NEXT: buffer_store_dword v0, off, s[0:3], s32 offset:72 ; 4-byte Folded Spill1270; W64-O0-NEXT: .LBB2_8: ; %bb21271; W64-O0-NEXT: s_or_saveexec_b64 s[16:17], -11272; W64-O0-NEXT: buffer_load_dword v13, off, s[0:3], s32 ; 4-byte Folded Reload1273; W64-O0-NEXT: s_mov_b64 exec, s[16:17]1274; W64-O0-NEXT: s_waitcnt vmcnt(0)1275; W64-O0-NEXT: v_readlane_b32 s4, v13, 101276; W64-O0-NEXT: v_readlane_b32 s5, v13, 111277; W64-O0-NEXT: s_or_b64 exec, exec, s[4:5]1278; W64-O0-NEXT: buffer_load_dword v0, off, s[0:3], s32 offset:8 ; 4-byte Folded Reload1279; W64-O0-NEXT: buffer_load_dword v1, off, s[0:3], s32 offset:12 ; 4-byte Folded Reload1280; W64-O0-NEXT: buffer_load_dword v2, off, s[0:3], s32 offset:72 ; 4-byte Folded Reload1281; W64-O0-NEXT: s_waitcnt vmcnt(0)1282; W64-O0-NEXT: global_store_dword v[0:1], v2, off1283; W64-O0-NEXT: s_waitcnt vmcnt(0)1284; W64-O0-NEXT: s_xor_saveexec_b64 s[4:5], -11285; W64-O0-NEXT: buffer_load_dword v13, off, s[0:3], s32 offset:100 ; 4-byte Folded Reload1286; W64-O0-NEXT: s_mov_b64 exec, s[4:5]1287; W64-O0-NEXT: s_waitcnt vmcnt(0)1288; W64-O0-NEXT: s_setpc_b64 s[30:31]1289entry:1290 %live.out.reg = call i32 asm sideeffect "s_mov_b32 $0, 17", "={s4}" ()1291 %val0 = call float @llvm.amdgcn.struct.ptr.buffer.load.format.f32(ptr addrspace(8) %i, i32 %live.out.reg, i32 0, i32 0, i32 0) #11292 %idx = call i32 @llvm.amdgcn.workitem.id.x() #11293 %cmp = icmp eq i32 %idx, 01294 br i1 %cmp, label %bb1, label %bb21295 1296bb1:1297 %val1 = call float @llvm.amdgcn.struct.ptr.buffer.load.format.f32(ptr addrspace(8) %j, i32 %live.out.reg, i32 0, i32 0, i32 0) #11298 br label %bb21299 1300bb2:1301 %val = phi float [ %val0, %entry ], [ %val1, %bb1 ]1302 store volatile float %val, ptr addrspace(1) %out1303 ret void1304}1305 1306declare i32 @llvm.amdgcn.workitem.id.x() #11307declare float @llvm.amdgcn.struct.ptr.buffer.load.format.f32(ptr addrspace(8), i32, i32, i32, i32 immarg) #11308 1309attributes #0 = { nounwind }1310attributes #1 = { nounwind readonly }1311