1706 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=gfx700 < %s | FileCheck -check-prefix=GFX7 %s3; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx810 -mattr=+xnack < %s | FileCheck -check-prefix=GFX8 %s4; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -mattr=+xnack < %s | FileCheck -check-prefixes=GFX900 %s5; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx942 -mattr=+xnack < %s | FileCheck -check-prefixes=GFX942 %s6; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1010 < %s | FileCheck -check-prefix=GFX10_1 %s7; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1030 < %s | FileCheck -check-prefix=GFX10_3 %s8; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 < %s | FileCheck -check-prefix=GFX11 %s9; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1200 < %s | FileCheck -check-prefix=GFX12 %s10 11%asm.output = type { <16 x i32>, <16 x i32>, <16 x i32>, <8 x i32>, <2 x i32>, i32, ; sgprs12 <16 x i32>, <7 x i32>, ; vgprs13 i64 ; vcc14 }15 16%asm.output2 = type { <16 x i32>, <16 x i32>, <16 x i32>, <8 x i32>, <2 x i32>, i32, ; sgprs17 <16 x i32>, <5 x i32>, ; vgprs18 i64 ; vcc19 }20 21%asm.output3 = type { <16 x i32>, <16 x i32>, <16 x i32>, <8 x i32>, <2 x i32>, ; sgprs22 <16 x i32>, <6 x i32>, ; vgprs23 i64 ; vcc24 }25 26; %alloca1 should end up materializing with s_mov_b32, but scc is27; unavailable.28;29; This is primarily to test gfx7 and gfx8, which do not have vector30; add with no carry.31;32define void @scalar_mov_materializes_frame_index_no_live_scc_no_live_sgprs() #0 {33; GFX7-LABEL: scalar_mov_materializes_frame_index_no_live_scc_no_live_sgprs:34; GFX7: ; %bb.0:35; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)36; GFX7-NEXT: s_xor_saveexec_b64 s[4:5], -137; GFX7-NEXT: s_add_i32 s6, s32, 0x10110038; GFX7-NEXT: buffer_store_dword v23, off, s[0:3], s6 ; 4-byte Folded Spill39; GFX7-NEXT: s_mov_b64 exec, s[4:5]40; GFX7-NEXT: v_writelane_b32 v23, s30, 041; GFX7-NEXT: v_writelane_b32 v23, s31, 142; GFX7-NEXT: v_writelane_b32 v23, s33, 243; GFX7-NEXT: v_writelane_b32 v23, s34, 344; GFX7-NEXT: v_writelane_b32 v23, s35, 445; GFX7-NEXT: v_writelane_b32 v23, s36, 546; GFX7-NEXT: v_writelane_b32 v23, s37, 647; GFX7-NEXT: v_writelane_b32 v23, s38, 748; GFX7-NEXT: v_writelane_b32 v23, s39, 849; GFX7-NEXT: v_writelane_b32 v23, s48, 950; GFX7-NEXT: v_writelane_b32 v23, s49, 1051; GFX7-NEXT: v_writelane_b32 v23, s50, 1152; GFX7-NEXT: v_writelane_b32 v23, s51, 1253; GFX7-NEXT: v_writelane_b32 v23, s52, 1354; GFX7-NEXT: v_writelane_b32 v23, s53, 1455; GFX7-NEXT: v_lshr_b32_e64 v0, s32, 656; GFX7-NEXT: v_writelane_b32 v23, s54, 1557; GFX7-NEXT: v_add_i32_e32 v0, vcc, 64, v058; GFX7-NEXT: s_and_b64 s[4:5], 0, exec59; GFX7-NEXT: v_writelane_b32 v23, s55, 1660; GFX7-NEXT: ;;#ASMSTART61; GFX7-NEXT: ; use alloca0 v062; GFX7-NEXT: ;;#ASMEND63; GFX7-NEXT: ;;#ASMSTART64; GFX7-NEXT: ; def s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], s58, v[0:15], v[16:22], vcc65; GFX7-NEXT: ;;#ASMEND66; GFX7-NEXT: buffer_store_dword v0, off, s[0:3], s3267; GFX7-NEXT: v_mov_b32_e32 v0, 0x404068; GFX7-NEXT: v_mad_u32_u24 v0, v0, 64, s3269; GFX7-NEXT: v_lshrrev_b32_e32 v0, 6, v070; GFX7-NEXT: v_readfirstlane_b32 s54, v071; GFX7-NEXT: buffer_load_dword v0, off, s[0:3], s3272; GFX7-NEXT: s_waitcnt vmcnt(0)73; GFX7-NEXT: ;;#ASMSTART74; GFX7-NEXT: ; use s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], s58, v[0:15], v[16:22], vcc, s54, scc75; GFX7-NEXT: ;;#ASMEND76; GFX7-NEXT: v_readlane_b32 s55, v23, 1677; GFX7-NEXT: v_readlane_b32 s54, v23, 1578; GFX7-NEXT: v_readlane_b32 s53, v23, 1479; GFX7-NEXT: v_readlane_b32 s52, v23, 1380; GFX7-NEXT: v_readlane_b32 s51, v23, 1281; GFX7-NEXT: v_readlane_b32 s50, v23, 1182; GFX7-NEXT: v_readlane_b32 s49, v23, 1083; GFX7-NEXT: v_readlane_b32 s48, v23, 984; GFX7-NEXT: v_readlane_b32 s39, v23, 885; GFX7-NEXT: v_readlane_b32 s38, v23, 786; GFX7-NEXT: v_readlane_b32 s37, v23, 687; GFX7-NEXT: v_readlane_b32 s36, v23, 588; GFX7-NEXT: v_readlane_b32 s35, v23, 489; GFX7-NEXT: v_readlane_b32 s34, v23, 390; GFX7-NEXT: v_readlane_b32 s33, v23, 291; GFX7-NEXT: v_readlane_b32 s31, v23, 192; GFX7-NEXT: v_readlane_b32 s30, v23, 093; GFX7-NEXT: s_xor_saveexec_b64 s[4:5], -194; GFX7-NEXT: s_add_i32 s6, s32, 0x10110095; GFX7-NEXT: buffer_load_dword v23, off, s[0:3], s6 ; 4-byte Folded Reload96; GFX7-NEXT: s_mov_b64 exec, s[4:5]97; GFX7-NEXT: s_waitcnt vmcnt(0)98; GFX7-NEXT: s_setpc_b64 s[30:31]99;100; GFX8-LABEL: scalar_mov_materializes_frame_index_no_live_scc_no_live_sgprs:101; GFX8: ; %bb.0:102; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)103; GFX8-NEXT: s_xor_saveexec_b64 s[4:5], -1104; GFX8-NEXT: s_add_i32 s6, s32, 0x101100105; GFX8-NEXT: buffer_store_dword v23, off, s[0:3], s6 ; 4-byte Folded Spill106; GFX8-NEXT: s_mov_b64 exec, s[4:5]107; GFX8-NEXT: v_writelane_b32 v23, s30, 0108; GFX8-NEXT: v_writelane_b32 v23, s31, 1109; GFX8-NEXT: v_writelane_b32 v23, s33, 2110; GFX8-NEXT: v_writelane_b32 v23, s34, 3111; GFX8-NEXT: v_writelane_b32 v23, s35, 4112; GFX8-NEXT: v_writelane_b32 v23, s36, 5113; GFX8-NEXT: v_writelane_b32 v23, s37, 6114; GFX8-NEXT: v_writelane_b32 v23, s38, 7115; GFX8-NEXT: v_writelane_b32 v23, s39, 8116; GFX8-NEXT: v_writelane_b32 v23, s48, 9117; GFX8-NEXT: v_writelane_b32 v23, s49, 10118; GFX8-NEXT: v_writelane_b32 v23, s50, 11119; GFX8-NEXT: v_writelane_b32 v23, s51, 12120; GFX8-NEXT: v_writelane_b32 v23, s52, 13121; GFX8-NEXT: v_writelane_b32 v23, s53, 14122; GFX8-NEXT: v_lshrrev_b32_e64 v0, 6, s32123; GFX8-NEXT: v_writelane_b32 v23, s54, 15124; GFX8-NEXT: v_add_u32_e32 v0, vcc, 64, v0125; GFX8-NEXT: s_and_b64 s[4:5], 0, exec126; GFX8-NEXT: v_writelane_b32 v23, s55, 16127; GFX8-NEXT: ;;#ASMSTART128; GFX8-NEXT: ; use alloca0 v0129; GFX8-NEXT: ;;#ASMEND130; GFX8-NEXT: ;;#ASMSTART131; GFX8-NEXT: ; def s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], s58, v[0:15], v[16:22], vcc132; GFX8-NEXT: ;;#ASMEND133; GFX8-NEXT: buffer_store_dword v0, off, s[0:3], s32134; GFX8-NEXT: v_mov_b32_e32 v0, 0x4040135; GFX8-NEXT: v_mad_u32_u24 v0, v0, 64, s32136; GFX8-NEXT: ; kill: def $sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55 killed $sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55 def $sgpr54137; GFX8-NEXT: v_lshrrev_b32_e32 v0, 6, v0138; GFX8-NEXT: v_readfirstlane_b32 s54, v0139; GFX8-NEXT: buffer_load_dword v0, off, s[0:3], s32140; GFX8-NEXT: s_waitcnt vmcnt(0)141; GFX8-NEXT: ;;#ASMSTART142; GFX8-NEXT: ; use s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], s58, v[0:15], v[16:22], vcc, s54, scc143; GFX8-NEXT: ;;#ASMEND144; GFX8-NEXT: v_readlane_b32 s55, v23, 16145; GFX8-NEXT: v_readlane_b32 s54, v23, 15146; GFX8-NEXT: v_readlane_b32 s53, v23, 14147; GFX8-NEXT: v_readlane_b32 s52, v23, 13148; GFX8-NEXT: v_readlane_b32 s51, v23, 12149; GFX8-NEXT: v_readlane_b32 s50, v23, 11150; GFX8-NEXT: v_readlane_b32 s49, v23, 10151; GFX8-NEXT: v_readlane_b32 s48, v23, 9152; GFX8-NEXT: v_readlane_b32 s39, v23, 8153; GFX8-NEXT: v_readlane_b32 s38, v23, 7154; GFX8-NEXT: v_readlane_b32 s37, v23, 6155; GFX8-NEXT: v_readlane_b32 s36, v23, 5156; GFX8-NEXT: v_readlane_b32 s35, v23, 4157; GFX8-NEXT: v_readlane_b32 s34, v23, 3158; GFX8-NEXT: v_readlane_b32 s33, v23, 2159; GFX8-NEXT: v_readlane_b32 s31, v23, 1160; GFX8-NEXT: v_readlane_b32 s30, v23, 0161; GFX8-NEXT: s_xor_saveexec_b64 s[4:5], -1162; GFX8-NEXT: s_add_i32 s6, s32, 0x101100163; GFX8-NEXT: buffer_load_dword v23, off, s[0:3], s6 ; 4-byte Folded Reload164; GFX8-NEXT: s_mov_b64 exec, s[4:5]165; GFX8-NEXT: s_waitcnt vmcnt(0)166; GFX8-NEXT: s_setpc_b64 s[30:31]167;168; GFX900-LABEL: scalar_mov_materializes_frame_index_no_live_scc_no_live_sgprs:169; GFX900: ; %bb.0:170; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)171; GFX900-NEXT: s_xor_saveexec_b64 s[4:5], -1172; GFX900-NEXT: s_add_i32 s6, s32, 0x101100173; GFX900-NEXT: buffer_store_dword v23, off, s[0:3], s6 ; 4-byte Folded Spill174; GFX900-NEXT: s_mov_b64 exec, s[4:5]175; GFX900-NEXT: v_writelane_b32 v23, s30, 0176; GFX900-NEXT: v_writelane_b32 v23, s31, 1177; GFX900-NEXT: v_writelane_b32 v23, s33, 2178; GFX900-NEXT: v_writelane_b32 v23, s34, 3179; GFX900-NEXT: v_writelane_b32 v23, s35, 4180; GFX900-NEXT: v_writelane_b32 v23, s36, 5181; GFX900-NEXT: v_writelane_b32 v23, s37, 6182; GFX900-NEXT: v_writelane_b32 v23, s38, 7183; GFX900-NEXT: v_writelane_b32 v23, s39, 8184; GFX900-NEXT: v_writelane_b32 v23, s48, 9185; GFX900-NEXT: v_writelane_b32 v23, s49, 10186; GFX900-NEXT: v_writelane_b32 v23, s50, 11187; GFX900-NEXT: v_writelane_b32 v23, s51, 12188; GFX900-NEXT: v_writelane_b32 v23, s52, 13189; GFX900-NEXT: v_writelane_b32 v23, s53, 14190; GFX900-NEXT: v_lshrrev_b32_e64 v0, 6, s32191; GFX900-NEXT: v_writelane_b32 v23, s54, 15192; GFX900-NEXT: v_add_u32_e32 v0, 64, v0193; GFX900-NEXT: s_and_b64 s[4:5], 0, exec194; GFX900-NEXT: v_writelane_b32 v23, s55, 16195; GFX900-NEXT: ;;#ASMSTART196; GFX900-NEXT: ; use alloca0 v0197; GFX900-NEXT: ;;#ASMEND198; GFX900-NEXT: ;;#ASMSTART199; GFX900-NEXT: ; def s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], s58, v[0:15], v[16:22], vcc200; GFX900-NEXT: ;;#ASMEND201; GFX900-NEXT: buffer_store_dword v0, off, s[0:3], s32202; GFX900-NEXT: v_lshrrev_b32_e64 v0, 6, s32203; GFX900-NEXT: ; kill: def $sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55 killed $sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55 def $sgpr54204; GFX900-NEXT: v_add_u32_e32 v0, 0x4040, v0205; GFX900-NEXT: v_readfirstlane_b32 s54, v0206; GFX900-NEXT: buffer_load_dword v0, off, s[0:3], s32207; GFX900-NEXT: s_waitcnt vmcnt(0)208; GFX900-NEXT: ;;#ASMSTART209; GFX900-NEXT: ; use s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], s58, v[0:15], v[16:22], vcc, s54, scc210; GFX900-NEXT: ;;#ASMEND211; GFX900-NEXT: v_readlane_b32 s55, v23, 16212; GFX900-NEXT: v_readlane_b32 s54, v23, 15213; GFX900-NEXT: v_readlane_b32 s53, v23, 14214; GFX900-NEXT: v_readlane_b32 s52, v23, 13215; GFX900-NEXT: v_readlane_b32 s51, v23, 12216; GFX900-NEXT: v_readlane_b32 s50, v23, 11217; GFX900-NEXT: v_readlane_b32 s49, v23, 10218; GFX900-NEXT: v_readlane_b32 s48, v23, 9219; GFX900-NEXT: v_readlane_b32 s39, v23, 8220; GFX900-NEXT: v_readlane_b32 s38, v23, 7221; GFX900-NEXT: v_readlane_b32 s37, v23, 6222; GFX900-NEXT: v_readlane_b32 s36, v23, 5223; GFX900-NEXT: v_readlane_b32 s35, v23, 4224; GFX900-NEXT: v_readlane_b32 s34, v23, 3225; GFX900-NEXT: v_readlane_b32 s33, v23, 2226; GFX900-NEXT: v_readlane_b32 s31, v23, 1227; GFX900-NEXT: v_readlane_b32 s30, v23, 0228; GFX900-NEXT: s_xor_saveexec_b64 s[4:5], -1229; GFX900-NEXT: s_add_i32 s6, s32, 0x101100230; GFX900-NEXT: buffer_load_dword v23, off, s[0:3], s6 ; 4-byte Folded Reload231; GFX900-NEXT: s_mov_b64 exec, s[4:5]232; GFX900-NEXT: s_waitcnt vmcnt(0)233; GFX900-NEXT: s_setpc_b64 s[30:31]234;235; GFX942-LABEL: scalar_mov_materializes_frame_index_no_live_scc_no_live_sgprs:236; GFX942: ; %bb.0:237; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)238; GFX942-NEXT: s_xor_saveexec_b64 s[0:1], -1239; GFX942-NEXT: s_add_i32 s2, s32, 0x4044240; GFX942-NEXT: scratch_store_dword off, v23, s2 ; 4-byte Folded Spill241; GFX942-NEXT: s_mov_b64 exec, s[0:1]242; GFX942-NEXT: v_writelane_b32 v23, s30, 0243; GFX942-NEXT: v_writelane_b32 v23, s31, 1244; GFX942-NEXT: v_writelane_b32 v23, s33, 2245; GFX942-NEXT: v_writelane_b32 v23, s34, 3246; GFX942-NEXT: v_writelane_b32 v23, s35, 4247; GFX942-NEXT: v_writelane_b32 v23, s36, 5248; GFX942-NEXT: v_writelane_b32 v23, s37, 6249; GFX942-NEXT: v_writelane_b32 v23, s38, 7250; GFX942-NEXT: v_writelane_b32 v23, s39, 8251; GFX942-NEXT: v_writelane_b32 v23, s48, 9252; GFX942-NEXT: v_writelane_b32 v23, s49, 10253; GFX942-NEXT: v_writelane_b32 v23, s50, 11254; GFX942-NEXT: v_writelane_b32 v23, s51, 12255; GFX942-NEXT: v_writelane_b32 v23, s52, 13256; GFX942-NEXT: v_writelane_b32 v23, s53, 14257; GFX942-NEXT: s_add_i32 s0, s32, 64258; GFX942-NEXT: v_writelane_b32 v23, s54, 15259; GFX942-NEXT: v_mov_b32_e32 v0, s0260; GFX942-NEXT: s_and_b64 s[60:61], 0, exec261; GFX942-NEXT: v_writelane_b32 v23, s55, 16262; GFX942-NEXT: ;;#ASMSTART263; GFX942-NEXT: ; use alloca0 v0264; GFX942-NEXT: ;;#ASMEND265; GFX942-NEXT: ;;#ASMSTART266; GFX942-NEXT: ; def s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], s58, v[0:15], v[16:22], vcc267; GFX942-NEXT: ;;#ASMEND268; GFX942-NEXT: s_addc_u32 s59, s32, 0x4040269; GFX942-NEXT: ; kill: def $sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55 killed $sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55 def $sgpr54270; GFX942-NEXT: s_bitcmp1_b32 s59, 0271; GFX942-NEXT: s_bitset0_b32 s59, 0272; GFX942-NEXT: s_mov_b32 s54, s59273; GFX942-NEXT: ;;#ASMSTART274; GFX942-NEXT: ; use s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], s58, v[0:15], v[16:22], vcc, s54, scc275; GFX942-NEXT: ;;#ASMEND276; GFX942-NEXT: v_readlane_b32 s55, v23, 16277; GFX942-NEXT: v_readlane_b32 s54, v23, 15278; GFX942-NEXT: v_readlane_b32 s53, v23, 14279; GFX942-NEXT: v_readlane_b32 s52, v23, 13280; GFX942-NEXT: v_readlane_b32 s51, v23, 12281; GFX942-NEXT: v_readlane_b32 s50, v23, 11282; GFX942-NEXT: v_readlane_b32 s49, v23, 10283; GFX942-NEXT: v_readlane_b32 s48, v23, 9284; GFX942-NEXT: v_readlane_b32 s39, v23, 8285; GFX942-NEXT: v_readlane_b32 s38, v23, 7286; GFX942-NEXT: v_readlane_b32 s37, v23, 6287; GFX942-NEXT: v_readlane_b32 s36, v23, 5288; GFX942-NEXT: v_readlane_b32 s35, v23, 4289; GFX942-NEXT: v_readlane_b32 s34, v23, 3290; GFX942-NEXT: v_readlane_b32 s33, v23, 2291; GFX942-NEXT: v_readlane_b32 s31, v23, 1292; GFX942-NEXT: v_readlane_b32 s30, v23, 0293; GFX942-NEXT: s_xor_saveexec_b64 s[0:1], -1294; GFX942-NEXT: s_add_i32 s2, s32, 0x4044295; GFX942-NEXT: scratch_load_dword v23, off, s2 ; 4-byte Folded Reload296; GFX942-NEXT: s_mov_b64 exec, s[0:1]297; GFX942-NEXT: s_waitcnt vmcnt(0)298; GFX942-NEXT: s_setpc_b64 s[30:31]299;300; GFX10_1-LABEL: scalar_mov_materializes_frame_index_no_live_scc_no_live_sgprs:301; GFX10_1: ; %bb.0:302; GFX10_1-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)303; GFX10_1-NEXT: s_xor_saveexec_b32 s4, -1304; GFX10_1-NEXT: s_add_i32 s5, s32, 0x80880305; GFX10_1-NEXT: buffer_store_dword v23, off, s[0:3], s5 ; 4-byte Folded Spill306; GFX10_1-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)307; GFX10_1-NEXT: s_mov_b32 exec_lo, s4308; GFX10_1-NEXT: v_writelane_b32 v23, s30, 0309; GFX10_1-NEXT: v_lshrrev_b32_e64 v0, 5, s32310; GFX10_1-NEXT: s_and_b32 s4, 0, exec_lo311; GFX10_1-NEXT: v_writelane_b32 v23, s31, 1312; GFX10_1-NEXT: v_add_nc_u32_e32 v0, 64, v0313; GFX10_1-NEXT: ;;#ASMSTART314; GFX10_1-NEXT: ; use alloca0 v0315; GFX10_1-NEXT: ;;#ASMEND316; GFX10_1-NEXT: v_writelane_b32 v23, s33, 2317; GFX10_1-NEXT: v_writelane_b32 v23, s34, 3318; GFX10_1-NEXT: v_writelane_b32 v23, s35, 4319; GFX10_1-NEXT: v_writelane_b32 v23, s36, 5320; GFX10_1-NEXT: v_writelane_b32 v23, s37, 6321; GFX10_1-NEXT: v_writelane_b32 v23, s38, 7322; GFX10_1-NEXT: v_writelane_b32 v23, s39, 8323; GFX10_1-NEXT: v_writelane_b32 v23, s48, 9324; GFX10_1-NEXT: v_writelane_b32 v23, s49, 10325; GFX10_1-NEXT: v_writelane_b32 v23, s50, 11326; GFX10_1-NEXT: v_writelane_b32 v23, s51, 12327; GFX10_1-NEXT: v_writelane_b32 v23, s52, 13328; GFX10_1-NEXT: v_writelane_b32 v23, s53, 14329; GFX10_1-NEXT: v_writelane_b32 v23, s54, 15330; GFX10_1-NEXT: v_writelane_b32 v23, s55, 16331; GFX10_1-NEXT: ;;#ASMSTART332; GFX10_1-NEXT: ; def s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], s58, v[0:15], v[16:22], vcc333; GFX10_1-NEXT: ;;#ASMEND334; GFX10_1-NEXT: v_lshrrev_b32_e64 v24, 5, s32335; GFX10_1-NEXT: ; kill: def $sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55 killed $sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55 def $sgpr54336; GFX10_1-NEXT: v_add_nc_u32_e32 v24, 0x4040, v24337; GFX10_1-NEXT: v_readfirstlane_b32 s54, v24338; GFX10_1-NEXT: ;;#ASMSTART339; GFX10_1-NEXT: ; use s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], s58, v[0:15], v[16:22], vcc, s54, scc340; GFX10_1-NEXT: ;;#ASMEND341; GFX10_1-NEXT: v_readlane_b32 s55, v23, 16342; GFX10_1-NEXT: v_readlane_b32 s54, v23, 15343; GFX10_1-NEXT: v_readlane_b32 s53, v23, 14344; GFX10_1-NEXT: v_readlane_b32 s52, v23, 13345; GFX10_1-NEXT: v_readlane_b32 s51, v23, 12346; GFX10_1-NEXT: v_readlane_b32 s50, v23, 11347; GFX10_1-NEXT: v_readlane_b32 s49, v23, 10348; GFX10_1-NEXT: v_readlane_b32 s48, v23, 9349; GFX10_1-NEXT: v_readlane_b32 s39, v23, 8350; GFX10_1-NEXT: v_readlane_b32 s38, v23, 7351; GFX10_1-NEXT: v_readlane_b32 s37, v23, 6352; GFX10_1-NEXT: v_readlane_b32 s36, v23, 5353; GFX10_1-NEXT: v_readlane_b32 s35, v23, 4354; GFX10_1-NEXT: v_readlane_b32 s34, v23, 3355; GFX10_1-NEXT: v_readlane_b32 s33, v23, 2356; GFX10_1-NEXT: v_readlane_b32 s31, v23, 1357; GFX10_1-NEXT: v_readlane_b32 s30, v23, 0358; GFX10_1-NEXT: s_xor_saveexec_b32 s4, -1359; GFX10_1-NEXT: s_add_i32 s5, s32, 0x80880360; GFX10_1-NEXT: buffer_load_dword v23, off, s[0:3], s5 ; 4-byte Folded Reload361; GFX10_1-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)362; GFX10_1-NEXT: s_mov_b32 exec_lo, s4363; GFX10_1-NEXT: s_waitcnt vmcnt(0)364; GFX10_1-NEXT: s_setpc_b64 s[30:31]365;366; GFX10_3-LABEL: scalar_mov_materializes_frame_index_no_live_scc_no_live_sgprs:367; GFX10_3: ; %bb.0:368; GFX10_3-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)369; GFX10_3-NEXT: s_xor_saveexec_b32 s4, -1370; GFX10_3-NEXT: s_add_i32 s5, s32, 0x80880371; GFX10_3-NEXT: buffer_store_dword v23, off, s[0:3], s5 ; 4-byte Folded Spill372; GFX10_3-NEXT: s_mov_b32 exec_lo, s4373; GFX10_3-NEXT: v_writelane_b32 v23, s30, 0374; GFX10_3-NEXT: v_lshrrev_b32_e64 v0, 5, s32375; GFX10_3-NEXT: s_and_b32 s4, 0, exec_lo376; GFX10_3-NEXT: v_writelane_b32 v23, s31, 1377; GFX10_3-NEXT: v_add_nc_u32_e32 v0, 64, v0378; GFX10_3-NEXT: ;;#ASMSTART379; GFX10_3-NEXT: ; use alloca0 v0380; GFX10_3-NEXT: ;;#ASMEND381; GFX10_3-NEXT: v_writelane_b32 v23, s33, 2382; GFX10_3-NEXT: v_writelane_b32 v23, s34, 3383; GFX10_3-NEXT: v_writelane_b32 v23, s35, 4384; GFX10_3-NEXT: v_writelane_b32 v23, s36, 5385; GFX10_3-NEXT: v_writelane_b32 v23, s37, 6386; GFX10_3-NEXT: v_writelane_b32 v23, s38, 7387; GFX10_3-NEXT: v_writelane_b32 v23, s39, 8388; GFX10_3-NEXT: v_writelane_b32 v23, s48, 9389; GFX10_3-NEXT: v_writelane_b32 v23, s49, 10390; GFX10_3-NEXT: v_writelane_b32 v23, s50, 11391; GFX10_3-NEXT: v_writelane_b32 v23, s51, 12392; GFX10_3-NEXT: v_writelane_b32 v23, s52, 13393; GFX10_3-NEXT: v_writelane_b32 v23, s53, 14394; GFX10_3-NEXT: v_writelane_b32 v23, s54, 15395; GFX10_3-NEXT: v_writelane_b32 v23, s55, 16396; GFX10_3-NEXT: ;;#ASMSTART397; GFX10_3-NEXT: ; def s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], s58, v[0:15], v[16:22], vcc398; GFX10_3-NEXT: ;;#ASMEND399; GFX10_3-NEXT: v_lshrrev_b32_e64 v24, 5, s32400; GFX10_3-NEXT: ; kill: def $sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55 killed $sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55 def $sgpr54401; GFX10_3-NEXT: v_add_nc_u32_e32 v24, 0x4040, v24402; GFX10_3-NEXT: v_readfirstlane_b32 s54, v24403; GFX10_3-NEXT: ;;#ASMSTART404; GFX10_3-NEXT: ; use s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], s58, v[0:15], v[16:22], vcc, s54, scc405; GFX10_3-NEXT: ;;#ASMEND406; GFX10_3-NEXT: v_readlane_b32 s55, v23, 16407; GFX10_3-NEXT: v_readlane_b32 s54, v23, 15408; GFX10_3-NEXT: v_readlane_b32 s53, v23, 14409; GFX10_3-NEXT: v_readlane_b32 s52, v23, 13410; GFX10_3-NEXT: v_readlane_b32 s51, v23, 12411; GFX10_3-NEXT: v_readlane_b32 s50, v23, 11412; GFX10_3-NEXT: v_readlane_b32 s49, v23, 10413; GFX10_3-NEXT: v_readlane_b32 s48, v23, 9414; GFX10_3-NEXT: v_readlane_b32 s39, v23, 8415; GFX10_3-NEXT: v_readlane_b32 s38, v23, 7416; GFX10_3-NEXT: v_readlane_b32 s37, v23, 6417; GFX10_3-NEXT: v_readlane_b32 s36, v23, 5418; GFX10_3-NEXT: v_readlane_b32 s35, v23, 4419; GFX10_3-NEXT: v_readlane_b32 s34, v23, 3420; GFX10_3-NEXT: v_readlane_b32 s33, v23, 2421; GFX10_3-NEXT: v_readlane_b32 s31, v23, 1422; GFX10_3-NEXT: v_readlane_b32 s30, v23, 0423; GFX10_3-NEXT: s_xor_saveexec_b32 s4, -1424; GFX10_3-NEXT: s_add_i32 s5, s32, 0x80880425; GFX10_3-NEXT: buffer_load_dword v23, off, s[0:3], s5 ; 4-byte Folded Reload426; GFX10_3-NEXT: s_mov_b32 exec_lo, s4427; GFX10_3-NEXT: s_waitcnt vmcnt(0)428; GFX10_3-NEXT: s_setpc_b64 s[30:31]429;430; GFX11-LABEL: scalar_mov_materializes_frame_index_no_live_scc_no_live_sgprs:431; GFX11: ; %bb.0:432; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)433; GFX11-NEXT: s_xor_saveexec_b32 s0, -1434; GFX11-NEXT: s_add_i32 s1, s32, 0x4044435; GFX11-NEXT: scratch_store_b32 off, v23, s1 ; 4-byte Folded Spill436; GFX11-NEXT: s_mov_b32 exec_lo, s0437; GFX11-NEXT: v_writelane_b32 v23, s30, 0438; GFX11-NEXT: s_add_i32 s0, s32, 64439; GFX11-NEXT: s_delay_alu instid0(SALU_CYCLE_1)440; GFX11-NEXT: v_mov_b32_e32 v0, s0441; GFX11-NEXT: s_and_b32 s0, 0, exec_lo442; GFX11-NEXT: v_writelane_b32 v23, s31, 1443; GFX11-NEXT: ;;#ASMSTART444; GFX11-NEXT: ; use alloca0 v0445; GFX11-NEXT: ;;#ASMEND446; GFX11-NEXT: v_writelane_b32 v23, s33, 2447; GFX11-NEXT: v_writelane_b32 v23, s34, 3448; GFX11-NEXT: v_writelane_b32 v23, s35, 4449; GFX11-NEXT: v_writelane_b32 v23, s36, 5450; GFX11-NEXT: v_writelane_b32 v23, s37, 6451; GFX11-NEXT: v_writelane_b32 v23, s38, 7452; GFX11-NEXT: v_writelane_b32 v23, s39, 8453; GFX11-NEXT: v_writelane_b32 v23, s48, 9454; GFX11-NEXT: v_writelane_b32 v23, s49, 10455; GFX11-NEXT: v_writelane_b32 v23, s50, 11456; GFX11-NEXT: v_writelane_b32 v23, s51, 12457; GFX11-NEXT: v_writelane_b32 v23, s52, 13458; GFX11-NEXT: v_writelane_b32 v23, s53, 14459; GFX11-NEXT: v_writelane_b32 v23, s54, 15460; GFX11-NEXT: v_writelane_b32 v23, s55, 16461; GFX11-NEXT: ;;#ASMSTART462; GFX11-NEXT: ; def s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], s58, v[0:15], v[16:22], vcc463; GFX11-NEXT: ;;#ASMEND464; GFX11-NEXT: s_addc_u32 s59, s32, 0x4040465; GFX11-NEXT: ; kill: def $sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55 killed $sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55 def $sgpr54466; GFX11-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)467; GFX11-NEXT: s_bitcmp1_b32 s59, 0468; GFX11-NEXT: s_bitset0_b32 s59, 0469; GFX11-NEXT: s_mov_b32 s54, s59470; GFX11-NEXT: ;;#ASMSTART471; GFX11-NEXT: ; use s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], s58, v[0:15], v[16:22], vcc, s54, scc472; GFX11-NEXT: ;;#ASMEND473; GFX11-NEXT: v_readlane_b32 s55, v23, 16474; GFX11-NEXT: v_readlane_b32 s54, v23, 15475; GFX11-NEXT: v_readlane_b32 s53, v23, 14476; GFX11-NEXT: v_readlane_b32 s52, v23, 13477; GFX11-NEXT: v_readlane_b32 s51, v23, 12478; GFX11-NEXT: v_readlane_b32 s50, v23, 11479; GFX11-NEXT: v_readlane_b32 s49, v23, 10480; GFX11-NEXT: v_readlane_b32 s48, v23, 9481; GFX11-NEXT: v_readlane_b32 s39, v23, 8482; GFX11-NEXT: v_readlane_b32 s38, v23, 7483; GFX11-NEXT: v_readlane_b32 s37, v23, 6484; GFX11-NEXT: v_readlane_b32 s36, v23, 5485; GFX11-NEXT: v_readlane_b32 s35, v23, 4486; GFX11-NEXT: v_readlane_b32 s34, v23, 3487; GFX11-NEXT: v_readlane_b32 s33, v23, 2488; GFX11-NEXT: v_readlane_b32 s31, v23, 1489; GFX11-NEXT: v_readlane_b32 s30, v23, 0490; GFX11-NEXT: s_xor_saveexec_b32 s0, -1491; GFX11-NEXT: s_add_i32 s1, s32, 0x4044492; GFX11-NEXT: scratch_load_b32 v23, off, s1 ; 4-byte Folded Reload493; GFX11-NEXT: s_mov_b32 exec_lo, s0494; GFX11-NEXT: s_waitcnt vmcnt(0)495; GFX11-NEXT: s_setpc_b64 s[30:31]496;497; GFX12-LABEL: scalar_mov_materializes_frame_index_no_live_scc_no_live_sgprs:498; GFX12: ; %bb.0:499; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0500; GFX12-NEXT: s_wait_expcnt 0x0501; GFX12-NEXT: s_wait_samplecnt 0x0502; GFX12-NEXT: s_wait_bvhcnt 0x0503; GFX12-NEXT: s_wait_kmcnt 0x0504; GFX12-NEXT: s_xor_saveexec_b32 s0, -1505; GFX12-NEXT: scratch_store_b32 off, v23, s32 offset:16388 ; 4-byte Folded Spill506; GFX12-NEXT: s_wait_alu depctr_sa_sdst(0)507; GFX12-NEXT: s_mov_b32 exec_lo, s0508; GFX12-NEXT: v_writelane_b32 v23, s30, 0509; GFX12-NEXT: v_mov_b32_e32 v0, s32510; GFX12-NEXT: s_and_b32 s0, 0, exec_lo511; GFX12-NEXT: ;;#ASMSTART512; GFX12-NEXT: ; use alloca0 v0513; GFX12-NEXT: ;;#ASMEND514; GFX12-NEXT: v_writelane_b32 v23, s31, 1515; GFX12-NEXT: v_writelane_b32 v23, s33, 2516; GFX12-NEXT: v_writelane_b32 v23, s34, 3517; GFX12-NEXT: v_writelane_b32 v23, s35, 4518; GFX12-NEXT: v_writelane_b32 v23, s36, 5519; GFX12-NEXT: v_writelane_b32 v23, s37, 6520; GFX12-NEXT: v_writelane_b32 v23, s38, 7521; GFX12-NEXT: v_writelane_b32 v23, s39, 8522; GFX12-NEXT: v_writelane_b32 v23, s48, 9523; GFX12-NEXT: v_writelane_b32 v23, s49, 10524; GFX12-NEXT: v_writelane_b32 v23, s50, 11525; GFX12-NEXT: v_writelane_b32 v23, s51, 12526; GFX12-NEXT: v_writelane_b32 v23, s52, 13527; GFX12-NEXT: v_writelane_b32 v23, s53, 14528; GFX12-NEXT: v_writelane_b32 v23, s54, 15529; GFX12-NEXT: v_writelane_b32 v23, s55, 16530; GFX12-NEXT: ;;#ASMSTART531; GFX12-NEXT: ; def s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], s58, v[0:15], v[16:22], vcc532; GFX12-NEXT: ;;#ASMEND533; GFX12-NEXT: s_add_co_ci_u32 s59, s32, 0x4000534; GFX12-NEXT: ; kill: def $sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55 killed $sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55 def $sgpr54535; GFX12-NEXT: s_wait_alu depctr_sa_sdst(0)536; GFX12-NEXT: s_bitcmp1_b32 s59, 0537; GFX12-NEXT: s_bitset0_b32 s59, 0538; GFX12-NEXT: s_wait_alu depctr_sa_sdst(0)539; GFX12-NEXT: s_mov_b32 s54, s59540; GFX12-NEXT: ;;#ASMSTART541; GFX12-NEXT: ; use s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], s58, v[0:15], v[16:22], vcc, s54, scc542; GFX12-NEXT: ;;#ASMEND543; GFX12-NEXT: v_readlane_b32 s55, v23, 16544; GFX12-NEXT: v_readlane_b32 s54, v23, 15545; GFX12-NEXT: v_readlane_b32 s53, v23, 14546; GFX12-NEXT: v_readlane_b32 s52, v23, 13547; GFX12-NEXT: v_readlane_b32 s51, v23, 12548; GFX12-NEXT: v_readlane_b32 s50, v23, 11549; GFX12-NEXT: v_readlane_b32 s49, v23, 10550; GFX12-NEXT: v_readlane_b32 s48, v23, 9551; GFX12-NEXT: v_readlane_b32 s39, v23, 8552; GFX12-NEXT: v_readlane_b32 s38, v23, 7553; GFX12-NEXT: v_readlane_b32 s37, v23, 6554; GFX12-NEXT: v_readlane_b32 s36, v23, 5555; GFX12-NEXT: v_readlane_b32 s35, v23, 4556; GFX12-NEXT: v_readlane_b32 s34, v23, 3557; GFX12-NEXT: v_readlane_b32 s33, v23, 2558; GFX12-NEXT: v_readlane_b32 s31, v23, 1559; GFX12-NEXT: v_readlane_b32 s30, v23, 0560; GFX12-NEXT: s_xor_saveexec_b32 s0, -1561; GFX12-NEXT: scratch_load_b32 v23, off, s32 offset:16388 ; 4-byte Folded Reload562; GFX12-NEXT: s_wait_alu depctr_sa_sdst(0)563; GFX12-NEXT: s_mov_b32 exec_lo, s0564; GFX12-NEXT: s_wait_loadcnt 0x0565; GFX12-NEXT: s_setpc_b64 s[30:31]566 %alloca0 = alloca [4096 x i32], align 64, addrspace(5)567 %alloca1 = alloca i32, align 4, addrspace(5)568 call void asm sideeffect "; use alloca0 $0", "v"(ptr addrspace(5) %alloca0)569 570 ; Force no SGPRs to be available for the carry-out of the vector add.571 %asm = call %asm.output asm sideeffect572 "; def $0, $1, $2, $3, $4, $5, $6, $7, $8",573 "={s[0:15]},={s[16:31]},={s[32:47]},={s[48:55]},={s[56:57]},={s58},={v[0:15]},={v[16:22]},={vcc}"()574 575 %s0 = extractvalue %asm.output %asm, 0576 %s1 = extractvalue %asm.output %asm, 1577 %s2 = extractvalue %asm.output %asm, 2578 %s3 = extractvalue %asm.output %asm, 3579 %s4 = extractvalue %asm.output %asm, 4580 %s5 = extractvalue %asm.output %asm, 5581 582 %v0 = extractvalue %asm.output %asm, 6583 %v1 = extractvalue %asm.output %asm, 7584 585 %vcc = extractvalue %asm.output %asm, 8586 587 ; scc is unavailable since it is live in588 call void asm sideeffect "; use $0, $1, $2, $3, $4, $5, $6, $7, $8, $9, $10",589 "{s[0:15]},{s[16:31]},{s[32:47]},{s[48:55]},{s[56:57]},{s58},{v[0:15]},{v[16:22]},{vcc},{s54},{scc}"(590 <16 x i32> %s0,591 <16 x i32> %s1,592 <16 x i32> %s2,593 <8 x i32> %s3,594 <2 x i32> %s4,595 i32 %s5,596 <16 x i32> %v0,597 <7 x i32> %v1,598 i64 %vcc,599 ptr addrspace(5) %alloca1,600 i32 0) ; use of scc601 602 ret void603}604 605; FIXME: This would have test FI at offset 0, but other objects get606; assigned there. This shows a non-0, but inline immediate that can607; fold directly into the address computation.608define void @scalar_mov_materializes_frame_index_no_live_scc_no_live_sgprs__lowest_offset() #1 {609; GFX7-LABEL: scalar_mov_materializes_frame_index_no_live_scc_no_live_sgprs__lowest_offset:610; GFX7: ; %bb.0:611; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)612; GFX7-NEXT: s_xor_saveexec_b64 s[4:5], -1613; GFX7-NEXT: s_add_i32 s6, s32, 0x100400614; GFX7-NEXT: buffer_store_dword v21, off, s[0:3], s6 ; 4-byte Folded Spill615; GFX7-NEXT: s_mov_b64 exec, s[4:5]616; GFX7-NEXT: v_writelane_b32 v21, s30, 0617; GFX7-NEXT: v_writelane_b32 v21, s31, 1618; GFX7-NEXT: v_writelane_b32 v21, s33, 2619; GFX7-NEXT: v_writelane_b32 v21, s34, 3620; GFX7-NEXT: v_writelane_b32 v21, s35, 4621; GFX7-NEXT: v_writelane_b32 v21, s36, 5622; GFX7-NEXT: v_writelane_b32 v21, s37, 6623; GFX7-NEXT: v_writelane_b32 v21, s38, 7624; GFX7-NEXT: v_writelane_b32 v21, s39, 8625; GFX7-NEXT: v_writelane_b32 v21, s48, 9626; GFX7-NEXT: v_writelane_b32 v21, s49, 10627; GFX7-NEXT: v_writelane_b32 v21, s50, 11628; GFX7-NEXT: v_writelane_b32 v21, s51, 12629; GFX7-NEXT: v_writelane_b32 v21, s52, 13630; GFX7-NEXT: v_writelane_b32 v21, s53, 14631; GFX7-NEXT: v_writelane_b32 v21, s54, 15632; GFX7-NEXT: s_and_b64 s[4:5], 0, exec633; GFX7-NEXT: v_writelane_b32 v21, s55, 16634; GFX7-NEXT: ;;#ASMSTART635; GFX7-NEXT: ; def s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], s58, v[0:15], v[16:20], vcc636; GFX7-NEXT: ;;#ASMEND637; GFX7-NEXT: v_mad_u32_u24 v22, 16, 64, s32638; GFX7-NEXT: v_lshrrev_b32_e32 v22, 6, v22639; GFX7-NEXT: v_readfirstlane_b32 s54, v22640; GFX7-NEXT: ;;#ASMSTART641; GFX7-NEXT: ; use s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], s58, v[0:15], v[16:20], vcc, s54, scc642; GFX7-NEXT: ;;#ASMEND643; GFX7-NEXT: v_readlane_b32 s55, v21, 16644; GFX7-NEXT: v_readlane_b32 s54, v21, 15645; GFX7-NEXT: v_readlane_b32 s53, v21, 14646; GFX7-NEXT: v_readlane_b32 s52, v21, 13647; GFX7-NEXT: v_readlane_b32 s51, v21, 12648; GFX7-NEXT: v_readlane_b32 s50, v21, 11649; GFX7-NEXT: v_readlane_b32 s49, v21, 10650; GFX7-NEXT: v_readlane_b32 s48, v21, 9651; GFX7-NEXT: v_readlane_b32 s39, v21, 8652; GFX7-NEXT: v_readlane_b32 s38, v21, 7653; GFX7-NEXT: v_readlane_b32 s37, v21, 6654; GFX7-NEXT: v_readlane_b32 s36, v21, 5655; GFX7-NEXT: v_readlane_b32 s35, v21, 4656; GFX7-NEXT: v_readlane_b32 s34, v21, 3657; GFX7-NEXT: v_readlane_b32 s33, v21, 2658; GFX7-NEXT: v_readlane_b32 s31, v21, 1659; GFX7-NEXT: v_readlane_b32 s30, v21, 0660; GFX7-NEXT: s_xor_saveexec_b64 s[4:5], -1661; GFX7-NEXT: s_add_i32 s6, s32, 0x100400662; GFX7-NEXT: buffer_load_dword v21, off, s[0:3], s6 ; 4-byte Folded Reload663; GFX7-NEXT: s_mov_b64 exec, s[4:5]664; GFX7-NEXT: s_waitcnt vmcnt(0)665; GFX7-NEXT: s_setpc_b64 s[30:31]666;667; GFX8-LABEL: scalar_mov_materializes_frame_index_no_live_scc_no_live_sgprs__lowest_offset:668; GFX8: ; %bb.0:669; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)670; GFX8-NEXT: s_xor_saveexec_b64 s[4:5], -1671; GFX8-NEXT: s_add_i32 s6, s32, 0x100400672; GFX8-NEXT: buffer_store_dword v21, off, s[0:3], s6 ; 4-byte Folded Spill673; GFX8-NEXT: s_mov_b64 exec, s[4:5]674; GFX8-NEXT: v_writelane_b32 v21, s30, 0675; GFX8-NEXT: v_writelane_b32 v21, s31, 1676; GFX8-NEXT: v_writelane_b32 v21, s33, 2677; GFX8-NEXT: v_writelane_b32 v21, s34, 3678; GFX8-NEXT: v_writelane_b32 v21, s35, 4679; GFX8-NEXT: v_writelane_b32 v21, s36, 5680; GFX8-NEXT: v_writelane_b32 v21, s37, 6681; GFX8-NEXT: v_writelane_b32 v21, s38, 7682; GFX8-NEXT: v_writelane_b32 v21, s39, 8683; GFX8-NEXT: v_writelane_b32 v21, s48, 9684; GFX8-NEXT: v_writelane_b32 v21, s49, 10685; GFX8-NEXT: v_writelane_b32 v21, s50, 11686; GFX8-NEXT: v_writelane_b32 v21, s51, 12687; GFX8-NEXT: v_writelane_b32 v21, s52, 13688; GFX8-NEXT: v_writelane_b32 v21, s53, 14689; GFX8-NEXT: v_writelane_b32 v21, s54, 15690; GFX8-NEXT: s_and_b64 s[4:5], 0, exec691; GFX8-NEXT: v_writelane_b32 v21, s55, 16692; GFX8-NEXT: ;;#ASMSTART693; GFX8-NEXT: ; def s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], s58, v[0:15], v[16:20], vcc694; GFX8-NEXT: ;;#ASMEND695; GFX8-NEXT: v_mad_u32_u24 v22, 16, 64, s32696; GFX8-NEXT: ; kill: def $sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55 killed $sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55 def $sgpr54697; GFX8-NEXT: v_lshrrev_b32_e32 v22, 6, v22698; GFX8-NEXT: v_readfirstlane_b32 s54, v22699; GFX8-NEXT: ;;#ASMSTART700; GFX8-NEXT: ; use s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], s58, v[0:15], v[16:20], vcc, s54, scc701; GFX8-NEXT: ;;#ASMEND702; GFX8-NEXT: v_readlane_b32 s55, v21, 16703; GFX8-NEXT: v_readlane_b32 s54, v21, 15704; GFX8-NEXT: v_readlane_b32 s53, v21, 14705; GFX8-NEXT: v_readlane_b32 s52, v21, 13706; GFX8-NEXT: v_readlane_b32 s51, v21, 12707; GFX8-NEXT: v_readlane_b32 s50, v21, 11708; GFX8-NEXT: v_readlane_b32 s49, v21, 10709; GFX8-NEXT: v_readlane_b32 s48, v21, 9710; GFX8-NEXT: v_readlane_b32 s39, v21, 8711; GFX8-NEXT: v_readlane_b32 s38, v21, 7712; GFX8-NEXT: v_readlane_b32 s37, v21, 6713; GFX8-NEXT: v_readlane_b32 s36, v21, 5714; GFX8-NEXT: v_readlane_b32 s35, v21, 4715; GFX8-NEXT: v_readlane_b32 s34, v21, 3716; GFX8-NEXT: v_readlane_b32 s33, v21, 2717; GFX8-NEXT: v_readlane_b32 s31, v21, 1718; GFX8-NEXT: v_readlane_b32 s30, v21, 0719; GFX8-NEXT: s_xor_saveexec_b64 s[4:5], -1720; GFX8-NEXT: s_add_i32 s6, s32, 0x100400721; GFX8-NEXT: buffer_load_dword v21, off, s[0:3], s6 ; 4-byte Folded Reload722; GFX8-NEXT: s_mov_b64 exec, s[4:5]723; GFX8-NEXT: s_waitcnt vmcnt(0)724; GFX8-NEXT: s_setpc_b64 s[30:31]725;726; GFX900-LABEL: scalar_mov_materializes_frame_index_no_live_scc_no_live_sgprs__lowest_offset:727; GFX900: ; %bb.0:728; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)729; GFX900-NEXT: s_xor_saveexec_b64 s[4:5], -1730; GFX900-NEXT: s_add_i32 s6, s32, 0x100400731; GFX900-NEXT: buffer_store_dword v21, off, s[0:3], s6 ; 4-byte Folded Spill732; GFX900-NEXT: s_mov_b64 exec, s[4:5]733; GFX900-NEXT: v_writelane_b32 v21, s30, 0734; GFX900-NEXT: v_writelane_b32 v21, s31, 1735; GFX900-NEXT: v_writelane_b32 v21, s33, 2736; GFX900-NEXT: v_writelane_b32 v21, s34, 3737; GFX900-NEXT: v_writelane_b32 v21, s35, 4738; GFX900-NEXT: v_writelane_b32 v21, s36, 5739; GFX900-NEXT: v_writelane_b32 v21, s37, 6740; GFX900-NEXT: v_writelane_b32 v21, s38, 7741; GFX900-NEXT: v_writelane_b32 v21, s39, 8742; GFX900-NEXT: v_writelane_b32 v21, s48, 9743; GFX900-NEXT: v_writelane_b32 v21, s49, 10744; GFX900-NEXT: v_writelane_b32 v21, s50, 11745; GFX900-NEXT: v_writelane_b32 v21, s51, 12746; GFX900-NEXT: v_writelane_b32 v21, s52, 13747; GFX900-NEXT: v_writelane_b32 v21, s53, 14748; GFX900-NEXT: v_writelane_b32 v21, s54, 15749; GFX900-NEXT: s_and_b64 s[4:5], 0, exec750; GFX900-NEXT: v_writelane_b32 v21, s55, 16751; GFX900-NEXT: ;;#ASMSTART752; GFX900-NEXT: ; def s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], s58, v[0:15], v[16:20], vcc753; GFX900-NEXT: ;;#ASMEND754; GFX900-NEXT: v_lshrrev_b32_e64 v22, 6, s32755; GFX900-NEXT: ; kill: def $sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55 killed $sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55 def $sgpr54756; GFX900-NEXT: v_add_u32_e32 v22, 16, v22757; GFX900-NEXT: v_readfirstlane_b32 s54, v22758; GFX900-NEXT: ;;#ASMSTART759; GFX900-NEXT: ; use s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], s58, v[0:15], v[16:20], vcc, s54, scc760; GFX900-NEXT: ;;#ASMEND761; GFX900-NEXT: v_readlane_b32 s55, v21, 16762; GFX900-NEXT: v_readlane_b32 s54, v21, 15763; GFX900-NEXT: v_readlane_b32 s53, v21, 14764; GFX900-NEXT: v_readlane_b32 s52, v21, 13765; GFX900-NEXT: v_readlane_b32 s51, v21, 12766; GFX900-NEXT: v_readlane_b32 s50, v21, 11767; GFX900-NEXT: v_readlane_b32 s49, v21, 10768; GFX900-NEXT: v_readlane_b32 s48, v21, 9769; GFX900-NEXT: v_readlane_b32 s39, v21, 8770; GFX900-NEXT: v_readlane_b32 s38, v21, 7771; GFX900-NEXT: v_readlane_b32 s37, v21, 6772; GFX900-NEXT: v_readlane_b32 s36, v21, 5773; GFX900-NEXT: v_readlane_b32 s35, v21, 4774; GFX900-NEXT: v_readlane_b32 s34, v21, 3775; GFX900-NEXT: v_readlane_b32 s33, v21, 2776; GFX900-NEXT: v_readlane_b32 s31, v21, 1777; GFX900-NEXT: v_readlane_b32 s30, v21, 0778; GFX900-NEXT: s_xor_saveexec_b64 s[4:5], -1779; GFX900-NEXT: s_add_i32 s6, s32, 0x100400780; GFX900-NEXT: buffer_load_dword v21, off, s[0:3], s6 ; 4-byte Folded Reload781; GFX900-NEXT: s_mov_b64 exec, s[4:5]782; GFX900-NEXT: s_waitcnt vmcnt(0)783; GFX900-NEXT: s_setpc_b64 s[30:31]784;785; GFX942-LABEL: scalar_mov_materializes_frame_index_no_live_scc_no_live_sgprs__lowest_offset:786; GFX942: ; %bb.0:787; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)788; GFX942-NEXT: s_xor_saveexec_b64 s[0:1], -1789; GFX942-NEXT: s_add_i32 s2, s32, 0x4010790; GFX942-NEXT: scratch_store_dword off, v21, s2 ; 4-byte Folded Spill791; GFX942-NEXT: s_mov_b64 exec, s[0:1]792; GFX942-NEXT: v_writelane_b32 v21, s30, 0793; GFX942-NEXT: v_writelane_b32 v21, s31, 1794; GFX942-NEXT: v_writelane_b32 v21, s33, 2795; GFX942-NEXT: v_writelane_b32 v21, s34, 3796; GFX942-NEXT: v_writelane_b32 v21, s35, 4797; GFX942-NEXT: v_writelane_b32 v21, s36, 5798; GFX942-NEXT: v_writelane_b32 v21, s37, 6799; GFX942-NEXT: v_writelane_b32 v21, s38, 7800; GFX942-NEXT: v_writelane_b32 v21, s39, 8801; GFX942-NEXT: v_writelane_b32 v21, s48, 9802; GFX942-NEXT: v_writelane_b32 v21, s49, 10803; GFX942-NEXT: v_writelane_b32 v21, s50, 11804; GFX942-NEXT: v_writelane_b32 v21, s51, 12805; GFX942-NEXT: v_writelane_b32 v21, s52, 13806; GFX942-NEXT: v_writelane_b32 v21, s53, 14807; GFX942-NEXT: v_writelane_b32 v21, s54, 15808; GFX942-NEXT: s_and_b64 s[60:61], 0, exec809; GFX942-NEXT: v_writelane_b32 v21, s55, 16810; GFX942-NEXT: ;;#ASMSTART811; GFX942-NEXT: ; def s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], s58, v[0:15], v[16:20], vcc812; GFX942-NEXT: ;;#ASMEND813; GFX942-NEXT: s_addc_u32 s59, s32, 16814; GFX942-NEXT: ; kill: def $sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55 killed $sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55 def $sgpr54815; GFX942-NEXT: s_bitcmp1_b32 s59, 0816; GFX942-NEXT: s_bitset0_b32 s59, 0817; GFX942-NEXT: s_mov_b32 s54, s59818; GFX942-NEXT: ;;#ASMSTART819; GFX942-NEXT: ; use s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], s58, v[0:15], v[16:20], vcc, s54, scc820; GFX942-NEXT: ;;#ASMEND821; GFX942-NEXT: v_readlane_b32 s55, v21, 16822; GFX942-NEXT: v_readlane_b32 s54, v21, 15823; GFX942-NEXT: v_readlane_b32 s53, v21, 14824; GFX942-NEXT: v_readlane_b32 s52, v21, 13825; GFX942-NEXT: v_readlane_b32 s51, v21, 12826; GFX942-NEXT: v_readlane_b32 s50, v21, 11827; GFX942-NEXT: v_readlane_b32 s49, v21, 10828; GFX942-NEXT: v_readlane_b32 s48, v21, 9829; GFX942-NEXT: v_readlane_b32 s39, v21, 8830; GFX942-NEXT: v_readlane_b32 s38, v21, 7831; GFX942-NEXT: v_readlane_b32 s37, v21, 6832; GFX942-NEXT: v_readlane_b32 s36, v21, 5833; GFX942-NEXT: v_readlane_b32 s35, v21, 4834; GFX942-NEXT: v_readlane_b32 s34, v21, 3835; GFX942-NEXT: v_readlane_b32 s33, v21, 2836; GFX942-NEXT: v_readlane_b32 s31, v21, 1837; GFX942-NEXT: v_readlane_b32 s30, v21, 0838; GFX942-NEXT: s_xor_saveexec_b64 s[0:1], -1839; GFX942-NEXT: s_add_i32 s2, s32, 0x4010840; GFX942-NEXT: scratch_load_dword v21, off, s2 ; 4-byte Folded Reload841; GFX942-NEXT: s_mov_b64 exec, s[0:1]842; GFX942-NEXT: s_waitcnt vmcnt(0)843; GFX942-NEXT: s_setpc_b64 s[30:31]844;845; GFX10_1-LABEL: scalar_mov_materializes_frame_index_no_live_scc_no_live_sgprs__lowest_offset:846; GFX10_1: ; %bb.0:847; GFX10_1-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)848; GFX10_1-NEXT: s_xor_saveexec_b32 s4, -1849; GFX10_1-NEXT: s_add_i32 s5, s32, 0x80200850; GFX10_1-NEXT: buffer_store_dword v21, off, s[0:3], s5 ; 4-byte Folded Spill851; GFX10_1-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)852; GFX10_1-NEXT: s_mov_b32 exec_lo, s4853; GFX10_1-NEXT: v_writelane_b32 v21, s30, 0854; GFX10_1-NEXT: s_and_b32 s59, 0, exec_lo855; GFX10_1-NEXT: v_writelane_b32 v21, s31, 1856; GFX10_1-NEXT: v_writelane_b32 v21, s33, 2857; GFX10_1-NEXT: v_writelane_b32 v21, s34, 3858; GFX10_1-NEXT: v_writelane_b32 v21, s35, 4859; GFX10_1-NEXT: v_writelane_b32 v21, s36, 5860; GFX10_1-NEXT: v_writelane_b32 v21, s37, 6861; GFX10_1-NEXT: v_writelane_b32 v21, s38, 7862; GFX10_1-NEXT: v_writelane_b32 v21, s39, 8863; GFX10_1-NEXT: v_writelane_b32 v21, s48, 9864; GFX10_1-NEXT: v_writelane_b32 v21, s49, 10865; GFX10_1-NEXT: v_writelane_b32 v21, s50, 11866; GFX10_1-NEXT: v_writelane_b32 v21, s51, 12867; GFX10_1-NEXT: v_writelane_b32 v21, s52, 13868; GFX10_1-NEXT: v_writelane_b32 v21, s53, 14869; GFX10_1-NEXT: v_writelane_b32 v21, s54, 15870; GFX10_1-NEXT: v_writelane_b32 v21, s55, 16871; GFX10_1-NEXT: ;;#ASMSTART872; GFX10_1-NEXT: ; def s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], s58, v[0:15], v[16:20], vcc873; GFX10_1-NEXT: ;;#ASMEND874; GFX10_1-NEXT: v_lshrrev_b32_e64 v22, 5, s32875; GFX10_1-NEXT: ; kill: def $sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55 killed $sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55 def $sgpr54876; GFX10_1-NEXT: v_add_nc_u32_e32 v22, 16, v22877; GFX10_1-NEXT: v_readfirstlane_b32 s54, v22878; GFX10_1-NEXT: ;;#ASMSTART879; GFX10_1-NEXT: ; use s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], s58, v[0:15], v[16:20], vcc, s54, scc880; GFX10_1-NEXT: ;;#ASMEND881; GFX10_1-NEXT: v_readlane_b32 s55, v21, 16882; GFX10_1-NEXT: v_readlane_b32 s54, v21, 15883; GFX10_1-NEXT: v_readlane_b32 s53, v21, 14884; GFX10_1-NEXT: v_readlane_b32 s52, v21, 13885; GFX10_1-NEXT: v_readlane_b32 s51, v21, 12886; GFX10_1-NEXT: v_readlane_b32 s50, v21, 11887; GFX10_1-NEXT: v_readlane_b32 s49, v21, 10888; GFX10_1-NEXT: v_readlane_b32 s48, v21, 9889; GFX10_1-NEXT: v_readlane_b32 s39, v21, 8890; GFX10_1-NEXT: v_readlane_b32 s38, v21, 7891; GFX10_1-NEXT: v_readlane_b32 s37, v21, 6892; GFX10_1-NEXT: v_readlane_b32 s36, v21, 5893; GFX10_1-NEXT: v_readlane_b32 s35, v21, 4894; GFX10_1-NEXT: v_readlane_b32 s34, v21, 3895; GFX10_1-NEXT: v_readlane_b32 s33, v21, 2896; GFX10_1-NEXT: v_readlane_b32 s31, v21, 1897; GFX10_1-NEXT: v_readlane_b32 s30, v21, 0898; GFX10_1-NEXT: s_xor_saveexec_b32 s4, -1899; GFX10_1-NEXT: s_add_i32 s5, s32, 0x80200900; GFX10_1-NEXT: buffer_load_dword v21, off, s[0:3], s5 ; 4-byte Folded Reload901; GFX10_1-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)902; GFX10_1-NEXT: s_mov_b32 exec_lo, s4903; GFX10_1-NEXT: s_waitcnt vmcnt(0)904; GFX10_1-NEXT: s_setpc_b64 s[30:31]905;906; GFX10_3-LABEL: scalar_mov_materializes_frame_index_no_live_scc_no_live_sgprs__lowest_offset:907; GFX10_3: ; %bb.0:908; GFX10_3-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)909; GFX10_3-NEXT: s_xor_saveexec_b32 s4, -1910; GFX10_3-NEXT: s_add_i32 s5, s32, 0x80200911; GFX10_3-NEXT: buffer_store_dword v21, off, s[0:3], s5 ; 4-byte Folded Spill912; GFX10_3-NEXT: s_mov_b32 exec_lo, s4913; GFX10_3-NEXT: v_writelane_b32 v21, s30, 0914; GFX10_3-NEXT: s_and_b32 s59, 0, exec_lo915; GFX10_3-NEXT: v_writelane_b32 v21, s31, 1916; GFX10_3-NEXT: v_writelane_b32 v21, s33, 2917; GFX10_3-NEXT: v_writelane_b32 v21, s34, 3918; GFX10_3-NEXT: v_writelane_b32 v21, s35, 4919; GFX10_3-NEXT: v_writelane_b32 v21, s36, 5920; GFX10_3-NEXT: v_writelane_b32 v21, s37, 6921; GFX10_3-NEXT: v_writelane_b32 v21, s38, 7922; GFX10_3-NEXT: v_writelane_b32 v21, s39, 8923; GFX10_3-NEXT: v_writelane_b32 v21, s48, 9924; GFX10_3-NEXT: v_writelane_b32 v21, s49, 10925; GFX10_3-NEXT: v_writelane_b32 v21, s50, 11926; GFX10_3-NEXT: v_writelane_b32 v21, s51, 12927; GFX10_3-NEXT: v_writelane_b32 v21, s52, 13928; GFX10_3-NEXT: v_writelane_b32 v21, s53, 14929; GFX10_3-NEXT: v_writelane_b32 v21, s54, 15930; GFX10_3-NEXT: v_writelane_b32 v21, s55, 16931; GFX10_3-NEXT: ;;#ASMSTART932; GFX10_3-NEXT: ; def s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], s58, v[0:15], v[16:20], vcc933; GFX10_3-NEXT: ;;#ASMEND934; GFX10_3-NEXT: v_lshrrev_b32_e64 v22, 5, s32935; GFX10_3-NEXT: ; kill: def $sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55 killed $sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55 def $sgpr54936; GFX10_3-NEXT: v_add_nc_u32_e32 v22, 16, v22937; GFX10_3-NEXT: v_readfirstlane_b32 s54, v22938; GFX10_3-NEXT: ;;#ASMSTART939; GFX10_3-NEXT: ; use s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], s58, v[0:15], v[16:20], vcc, s54, scc940; GFX10_3-NEXT: ;;#ASMEND941; GFX10_3-NEXT: v_readlane_b32 s55, v21, 16942; GFX10_3-NEXT: v_readlane_b32 s54, v21, 15943; GFX10_3-NEXT: v_readlane_b32 s53, v21, 14944; GFX10_3-NEXT: v_readlane_b32 s52, v21, 13945; GFX10_3-NEXT: v_readlane_b32 s51, v21, 12946; GFX10_3-NEXT: v_readlane_b32 s50, v21, 11947; GFX10_3-NEXT: v_readlane_b32 s49, v21, 10948; GFX10_3-NEXT: v_readlane_b32 s48, v21, 9949; GFX10_3-NEXT: v_readlane_b32 s39, v21, 8950; GFX10_3-NEXT: v_readlane_b32 s38, v21, 7951; GFX10_3-NEXT: v_readlane_b32 s37, v21, 6952; GFX10_3-NEXT: v_readlane_b32 s36, v21, 5953; GFX10_3-NEXT: v_readlane_b32 s35, v21, 4954; GFX10_3-NEXT: v_readlane_b32 s34, v21, 3955; GFX10_3-NEXT: v_readlane_b32 s33, v21, 2956; GFX10_3-NEXT: v_readlane_b32 s31, v21, 1957; GFX10_3-NEXT: v_readlane_b32 s30, v21, 0958; GFX10_3-NEXT: s_xor_saveexec_b32 s4, -1959; GFX10_3-NEXT: s_add_i32 s5, s32, 0x80200960; GFX10_3-NEXT: buffer_load_dword v21, off, s[0:3], s5 ; 4-byte Folded Reload961; GFX10_3-NEXT: s_mov_b32 exec_lo, s4962; GFX10_3-NEXT: s_waitcnt vmcnt(0)963; GFX10_3-NEXT: s_setpc_b64 s[30:31]964;965; GFX11-LABEL: scalar_mov_materializes_frame_index_no_live_scc_no_live_sgprs__lowest_offset:966; GFX11: ; %bb.0:967; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)968; GFX11-NEXT: s_xor_saveexec_b32 s0, -1969; GFX11-NEXT: s_add_i32 s1, s32, 0x4010970; GFX11-NEXT: scratch_store_b32 off, v21, s1 ; 4-byte Folded Spill971; GFX11-NEXT: s_mov_b32 exec_lo, s0972; GFX11-NEXT: v_writelane_b32 v21, s30, 0973; GFX11-NEXT: s_and_b32 s59, 0, exec_lo974; GFX11-NEXT: v_writelane_b32 v21, s31, 1975; GFX11-NEXT: v_writelane_b32 v21, s33, 2976; GFX11-NEXT: v_writelane_b32 v21, s34, 3977; GFX11-NEXT: v_writelane_b32 v21, s35, 4978; GFX11-NEXT: v_writelane_b32 v21, s36, 5979; GFX11-NEXT: v_writelane_b32 v21, s37, 6980; GFX11-NEXT: v_writelane_b32 v21, s38, 7981; GFX11-NEXT: v_writelane_b32 v21, s39, 8982; GFX11-NEXT: v_writelane_b32 v21, s48, 9983; GFX11-NEXT: v_writelane_b32 v21, s49, 10984; GFX11-NEXT: v_writelane_b32 v21, s50, 11985; GFX11-NEXT: v_writelane_b32 v21, s51, 12986; GFX11-NEXT: v_writelane_b32 v21, s52, 13987; GFX11-NEXT: v_writelane_b32 v21, s53, 14988; GFX11-NEXT: v_writelane_b32 v21, s54, 15989; GFX11-NEXT: v_writelane_b32 v21, s55, 16990; GFX11-NEXT: ;;#ASMSTART991; GFX11-NEXT: ; def s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], s58, v[0:15], v[16:20], vcc992; GFX11-NEXT: ;;#ASMEND993; GFX11-NEXT: s_addc_u32 s59, s32, 16994; GFX11-NEXT: ; kill: def $sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55 killed $sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55 def $sgpr54995; GFX11-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)996; GFX11-NEXT: s_bitcmp1_b32 s59, 0997; GFX11-NEXT: s_bitset0_b32 s59, 0998; GFX11-NEXT: s_mov_b32 s54, s59999; GFX11-NEXT: ;;#ASMSTART1000; GFX11-NEXT: ; use s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], s58, v[0:15], v[16:20], vcc, s54, scc1001; GFX11-NEXT: ;;#ASMEND1002; GFX11-NEXT: v_readlane_b32 s55, v21, 161003; GFX11-NEXT: v_readlane_b32 s54, v21, 151004; GFX11-NEXT: v_readlane_b32 s53, v21, 141005; GFX11-NEXT: v_readlane_b32 s52, v21, 131006; GFX11-NEXT: v_readlane_b32 s51, v21, 121007; GFX11-NEXT: v_readlane_b32 s50, v21, 111008; GFX11-NEXT: v_readlane_b32 s49, v21, 101009; GFX11-NEXT: v_readlane_b32 s48, v21, 91010; GFX11-NEXT: v_readlane_b32 s39, v21, 81011; GFX11-NEXT: v_readlane_b32 s38, v21, 71012; GFX11-NEXT: v_readlane_b32 s37, v21, 61013; GFX11-NEXT: v_readlane_b32 s36, v21, 51014; GFX11-NEXT: v_readlane_b32 s35, v21, 41015; GFX11-NEXT: v_readlane_b32 s34, v21, 31016; GFX11-NEXT: v_readlane_b32 s33, v21, 21017; GFX11-NEXT: v_readlane_b32 s31, v21, 11018; GFX11-NEXT: v_readlane_b32 s30, v21, 01019; GFX11-NEXT: s_xor_saveexec_b32 s0, -11020; GFX11-NEXT: s_add_i32 s1, s32, 0x40101021; GFX11-NEXT: scratch_load_b32 v21, off, s1 ; 4-byte Folded Reload1022; GFX11-NEXT: s_mov_b32 exec_lo, s01023; GFX11-NEXT: s_waitcnt vmcnt(0)1024; GFX11-NEXT: s_setpc_b64 s[30:31]1025;1026; GFX12-LABEL: scalar_mov_materializes_frame_index_no_live_scc_no_live_sgprs__lowest_offset:1027; GFX12: ; %bb.0:1028; GFX12-NEXT: s_wait_loadcnt_dscnt 0x01029; GFX12-NEXT: s_wait_expcnt 0x01030; GFX12-NEXT: s_wait_samplecnt 0x01031; GFX12-NEXT: s_wait_bvhcnt 0x01032; GFX12-NEXT: s_wait_kmcnt 0x01033; GFX12-NEXT: s_xor_saveexec_b32 s0, -11034; GFX12-NEXT: scratch_store_b32 off, v21, s32 offset:16384 ; 4-byte Folded Spill1035; GFX12-NEXT: s_wait_alu depctr_sa_sdst(0)1036; GFX12-NEXT: s_mov_b32 exec_lo, s01037; GFX12-NEXT: v_writelane_b32 v21, s30, 01038; GFX12-NEXT: s_and_b32 s59, 0, exec_lo1039; GFX12-NEXT: v_writelane_b32 v21, s31, 11040; GFX12-NEXT: v_writelane_b32 v21, s33, 21041; GFX12-NEXT: v_writelane_b32 v21, s34, 31042; GFX12-NEXT: v_writelane_b32 v21, s35, 41043; GFX12-NEXT: v_writelane_b32 v21, s36, 51044; GFX12-NEXT: v_writelane_b32 v21, s37, 61045; GFX12-NEXT: v_writelane_b32 v21, s38, 71046; GFX12-NEXT: v_writelane_b32 v21, s39, 81047; GFX12-NEXT: v_writelane_b32 v21, s48, 91048; GFX12-NEXT: v_writelane_b32 v21, s49, 101049; GFX12-NEXT: v_writelane_b32 v21, s50, 111050; GFX12-NEXT: v_writelane_b32 v21, s51, 121051; GFX12-NEXT: v_writelane_b32 v21, s52, 131052; GFX12-NEXT: v_writelane_b32 v21, s53, 141053; GFX12-NEXT: v_writelane_b32 v21, s54, 151054; GFX12-NEXT: v_writelane_b32 v21, s55, 161055; GFX12-NEXT: ;;#ASMSTART1056; GFX12-NEXT: ; def s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], s58, v[0:15], v[16:20], vcc1057; GFX12-NEXT: ;;#ASMEND1058; GFX12-NEXT: ; kill: def $sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55 killed $sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55 def $sgpr541059; GFX12-NEXT: s_mov_b32 s54, s321060; GFX12-NEXT: ;;#ASMSTART1061; GFX12-NEXT: ; use s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], s58, v[0:15], v[16:20], vcc, s54, scc1062; GFX12-NEXT: ;;#ASMEND1063; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1)1064; GFX12-NEXT: v_readlane_b32 s55, v21, 161065; GFX12-NEXT: v_readlane_b32 s54, v21, 151066; GFX12-NEXT: v_readlane_b32 s53, v21, 141067; GFX12-NEXT: v_readlane_b32 s52, v21, 131068; GFX12-NEXT: v_readlane_b32 s51, v21, 121069; GFX12-NEXT: v_readlane_b32 s50, v21, 111070; GFX12-NEXT: v_readlane_b32 s49, v21, 101071; GFX12-NEXT: v_readlane_b32 s48, v21, 91072; GFX12-NEXT: v_readlane_b32 s39, v21, 81073; GFX12-NEXT: v_readlane_b32 s38, v21, 71074; GFX12-NEXT: v_readlane_b32 s37, v21, 61075; GFX12-NEXT: v_readlane_b32 s36, v21, 51076; GFX12-NEXT: v_readlane_b32 s35, v21, 41077; GFX12-NEXT: v_readlane_b32 s34, v21, 31078; GFX12-NEXT: v_readlane_b32 s33, v21, 21079; GFX12-NEXT: v_readlane_b32 s31, v21, 11080; GFX12-NEXT: v_readlane_b32 s30, v21, 01081; GFX12-NEXT: s_xor_saveexec_b32 s0, -11082; GFX12-NEXT: scratch_load_b32 v21, off, s32 offset:16384 ; 4-byte Folded Reload1083; GFX12-NEXT: s_wait_alu depctr_sa_sdst(0)1084; GFX12-NEXT: s_mov_b32 exec_lo, s01085; GFX12-NEXT: s_wait_loadcnt 0x01086; GFX12-NEXT: s_setpc_b64 s[30:31]1087 %alloca0 = alloca [4096 x i32], align 16, addrspace(5)1088 1089 ; Force no SGPRs to be available for the carry-out of the vector add.1090 %asm = call %asm.output2 asm sideeffect1091 "; def $0, $1, $2, $3, $4, $5, $6, $7, $8",1092 "={s[0:15]},={s[16:31]},={s[32:47]},={s[48:55]},={s[56:57]},={s58},={v[0:15]},={v[16:20]},={vcc}"()1093 1094 %s0 = extractvalue %asm.output2 %asm, 01095 %s1 = extractvalue %asm.output2 %asm, 11096 %s2 = extractvalue %asm.output2 %asm, 21097 %s3 = extractvalue %asm.output2 %asm, 31098 %s4 = extractvalue %asm.output2 %asm, 41099 %s5 = extractvalue %asm.output2 %asm, 51100 1101 %v0 = extractvalue %asm.output2 %asm, 61102 %v1 = extractvalue %asm.output2 %asm, 71103 1104 %vcc = extractvalue %asm.output2 %asm, 81105 1106 ; scc is unavailable since it is live in1107 call void asm sideeffect "; use $0, $1, $2, $3, $4, $5, $6, $7, $8, $9, $10",1108 "{s[0:15]},{s[16:31]},{s[32:47]},{s[48:55]},{s[56:57]},{s58},{v[0:15]},{v[16:20]},{vcc},{s54},{scc}"(1109 <16 x i32> %s0,1110 <16 x i32> %s1,1111 <16 x i32> %s2,1112 <8 x i32> %s3,1113 <2 x i32> %s4,1114 i32 %s5,1115 <16 x i32> %v0,1116 <5 x i32> %v1,1117 i64 %vcc,1118 ptr addrspace(5) %alloca0,1119 i32 0) ; use of scc1120 1121 ret void1122}1123 1124; This case isn't using SGPRs yet.1125; FIXME: Should also use one more VGPR, but currently fails to allocate on gfx8.1126define void @scalar_mov_materializes_frame_index_no_live_scc_no_live_sgprs_gep_immoffset() #0 {1127; GFX7-LABEL: scalar_mov_materializes_frame_index_no_live_scc_no_live_sgprs_gep_immoffset:1128; GFX7: ; %bb.0:1129; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1130; GFX7-NEXT: s_xor_saveexec_b64 s[4:5], -11131; GFX7-NEXT: s_add_i32 s6, s32, 0x2010001132; GFX7-NEXT: buffer_store_dword v23, off, s[0:3], s6 ; 4-byte Folded Spill1133; GFX7-NEXT: s_add_i32 s6, s32, 0x2011001134; GFX7-NEXT: buffer_store_dword v22, off, s[0:3], s6 ; 4-byte Folded Spill1135; GFX7-NEXT: s_mov_b64 exec, s[4:5]1136; GFX7-NEXT: v_writelane_b32 v23, s28, 171137; GFX7-NEXT: v_writelane_b32 v23, s29, 181138; GFX7-NEXT: v_writelane_b32 v23, s30, 01139; GFX7-NEXT: v_writelane_b32 v23, s31, 11140; GFX7-NEXT: v_writelane_b32 v23, s33, 21141; GFX7-NEXT: v_writelane_b32 v23, s34, 31142; GFX7-NEXT: v_writelane_b32 v23, s35, 41143; GFX7-NEXT: v_writelane_b32 v23, s36, 51144; GFX7-NEXT: v_writelane_b32 v23, s37, 61145; GFX7-NEXT: v_writelane_b32 v23, s38, 71146; GFX7-NEXT: v_writelane_b32 v23, s39, 81147; GFX7-NEXT: v_writelane_b32 v23, s48, 91148; GFX7-NEXT: v_writelane_b32 v23, s49, 101149; GFX7-NEXT: v_writelane_b32 v23, s50, 111150; GFX7-NEXT: v_writelane_b32 v23, s51, 121151; GFX7-NEXT: v_writelane_b32 v23, s52, 131152; GFX7-NEXT: s_lshr_b32 s5, s32, 61153; GFX7-NEXT: v_writelane_b32 v23, s53, 141154; GFX7-NEXT: v_lshr_b32_e64 v0, s32, 61155; GFX7-NEXT: s_add_i32 s4, s5, 0x42401156; GFX7-NEXT: ; implicit-def: $vgpr22 : SGPR spill to VGPR lane1157; GFX7-NEXT: v_writelane_b32 v23, s54, 151158; GFX7-NEXT: v_add_i32_e32 v0, vcc, 64, v01159; GFX7-NEXT: v_writelane_b32 v22, s4, 01160; GFX7-NEXT: s_and_b64 s[4:5], 0, exec1161; GFX7-NEXT: v_writelane_b32 v23, s55, 161162; GFX7-NEXT: ;;#ASMSTART1163; GFX7-NEXT: ; use alloca0 v01164; GFX7-NEXT: ;;#ASMEND1165; GFX7-NEXT: ;;#ASMSTART1166; GFX7-NEXT: ; def s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], v[0:15], v[16:21], vcc1167; GFX7-NEXT: ;;#ASMEND1168; GFX7-NEXT: v_readlane_b32 s54, v22, 01169; GFX7-NEXT: ;;#ASMSTART1170; GFX7-NEXT: ; use s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], v[0:15], v[16:21], vcc, s54, scc1171; GFX7-NEXT: ;;#ASMEND1172; GFX7-NEXT: v_readlane_b32 s55, v23, 161173; GFX7-NEXT: v_readlane_b32 s54, v23, 151174; GFX7-NEXT: v_readlane_b32 s53, v23, 141175; GFX7-NEXT: v_readlane_b32 s52, v23, 131176; GFX7-NEXT: v_readlane_b32 s51, v23, 121177; GFX7-NEXT: v_readlane_b32 s50, v23, 111178; GFX7-NEXT: v_readlane_b32 s49, v23, 101179; GFX7-NEXT: v_readlane_b32 s48, v23, 91180; GFX7-NEXT: v_readlane_b32 s39, v23, 81181; GFX7-NEXT: v_readlane_b32 s38, v23, 71182; GFX7-NEXT: v_readlane_b32 s37, v23, 61183; GFX7-NEXT: v_readlane_b32 s36, v23, 51184; GFX7-NEXT: v_readlane_b32 s35, v23, 41185; GFX7-NEXT: v_readlane_b32 s34, v23, 31186; GFX7-NEXT: v_readlane_b32 s33, v23, 21187; GFX7-NEXT: v_readlane_b32 s31, v23, 11188; GFX7-NEXT: v_readlane_b32 s30, v23, 01189; GFX7-NEXT: v_readlane_b32 s28, v23, 171190; GFX7-NEXT: v_readlane_b32 s29, v23, 181191; GFX7-NEXT: s_xor_saveexec_b64 s[4:5], -11192; GFX7-NEXT: s_add_i32 s6, s32, 0x2010001193; GFX7-NEXT: buffer_load_dword v23, off, s[0:3], s6 ; 4-byte Folded Reload1194; GFX7-NEXT: s_add_i32 s6, s32, 0x2011001195; GFX7-NEXT: buffer_load_dword v22, off, s[0:3], s6 ; 4-byte Folded Reload1196; GFX7-NEXT: s_mov_b64 exec, s[4:5]1197; GFX7-NEXT: s_waitcnt vmcnt(0)1198; GFX7-NEXT: s_setpc_b64 s[30:31]1199;1200; GFX8-LABEL: scalar_mov_materializes_frame_index_no_live_scc_no_live_sgprs_gep_immoffset:1201; GFX8: ; %bb.0:1202; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1203; GFX8-NEXT: s_xor_saveexec_b64 s[4:5], -11204; GFX8-NEXT: s_add_i32 s6, s32, 0x2010001205; GFX8-NEXT: buffer_store_dword v23, off, s[0:3], s6 ; 4-byte Folded Spill1206; GFX8-NEXT: s_add_i32 s6, s32, 0x2011001207; GFX8-NEXT: buffer_store_dword v22, off, s[0:3], s6 ; 4-byte Folded Spill1208; GFX8-NEXT: s_mov_b64 exec, s[4:5]1209; GFX8-NEXT: v_writelane_b32 v23, s30, 01210; GFX8-NEXT: v_writelane_b32 v23, s31, 11211; GFX8-NEXT: v_writelane_b32 v23, s33, 21212; GFX8-NEXT: v_writelane_b32 v23, s34, 31213; GFX8-NEXT: v_writelane_b32 v23, s35, 41214; GFX8-NEXT: v_writelane_b32 v23, s36, 51215; GFX8-NEXT: v_writelane_b32 v23, s37, 61216; GFX8-NEXT: v_writelane_b32 v23, s38, 71217; GFX8-NEXT: v_writelane_b32 v23, s39, 81218; GFX8-NEXT: v_writelane_b32 v23, s48, 91219; GFX8-NEXT: v_writelane_b32 v23, s49, 101220; GFX8-NEXT: v_writelane_b32 v23, s50, 111221; GFX8-NEXT: v_writelane_b32 v23, s51, 121222; GFX8-NEXT: v_writelane_b32 v23, s52, 131223; GFX8-NEXT: s_lshr_b32 s5, s32, 61224; GFX8-NEXT: v_writelane_b32 v23, s53, 141225; GFX8-NEXT: v_lshrrev_b32_e64 v0, 6, s321226; GFX8-NEXT: s_add_i32 s4, s5, 0x42401227; GFX8-NEXT: ; implicit-def: $vgpr22 : SGPR spill to VGPR lane1228; GFX8-NEXT: v_writelane_b32 v23, s54, 151229; GFX8-NEXT: v_add_u32_e32 v0, vcc, 64, v01230; GFX8-NEXT: v_writelane_b32 v22, s4, 01231; GFX8-NEXT: s_and_b64 s[4:5], 0, exec1232; GFX8-NEXT: v_writelane_b32 v23, s55, 161233; GFX8-NEXT: ;;#ASMSTART1234; GFX8-NEXT: ; use alloca0 v01235; GFX8-NEXT: ;;#ASMEND1236; GFX8-NEXT: ;;#ASMSTART1237; GFX8-NEXT: ; def s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], v[0:15], v[16:21], vcc1238; GFX8-NEXT: ;;#ASMEND1239; GFX8-NEXT: ; kill: def $sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55 killed $sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55 def $sgpr541240; GFX8-NEXT: v_readlane_b32 s54, v22, 01241; GFX8-NEXT: ;;#ASMSTART1242; GFX8-NEXT: ; use s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], v[0:15], v[16:21], vcc, s54, scc1243; GFX8-NEXT: ;;#ASMEND1244; GFX8-NEXT: v_readlane_b32 s55, v23, 161245; GFX8-NEXT: v_readlane_b32 s54, v23, 151246; GFX8-NEXT: v_readlane_b32 s53, v23, 141247; GFX8-NEXT: v_readlane_b32 s52, v23, 131248; GFX8-NEXT: v_readlane_b32 s51, v23, 121249; GFX8-NEXT: v_readlane_b32 s50, v23, 111250; GFX8-NEXT: v_readlane_b32 s49, v23, 101251; GFX8-NEXT: v_readlane_b32 s48, v23, 91252; GFX8-NEXT: v_readlane_b32 s39, v23, 81253; GFX8-NEXT: v_readlane_b32 s38, v23, 71254; GFX8-NEXT: v_readlane_b32 s37, v23, 61255; GFX8-NEXT: v_readlane_b32 s36, v23, 51256; GFX8-NEXT: v_readlane_b32 s35, v23, 41257; GFX8-NEXT: v_readlane_b32 s34, v23, 31258; GFX8-NEXT: v_readlane_b32 s33, v23, 21259; GFX8-NEXT: v_readlane_b32 s31, v23, 11260; GFX8-NEXT: v_readlane_b32 s30, v23, 01261; GFX8-NEXT: s_xor_saveexec_b64 s[4:5], -11262; GFX8-NEXT: s_add_i32 s6, s32, 0x2010001263; GFX8-NEXT: buffer_load_dword v23, off, s[0:3], s6 ; 4-byte Folded Reload1264; GFX8-NEXT: s_add_i32 s6, s32, 0x2011001265; GFX8-NEXT: buffer_load_dword v22, off, s[0:3], s6 ; 4-byte Folded Reload1266; GFX8-NEXT: s_mov_b64 exec, s[4:5]1267; GFX8-NEXT: s_waitcnt vmcnt(0)1268; GFX8-NEXT: s_setpc_b64 s[30:31]1269;1270; GFX900-LABEL: scalar_mov_materializes_frame_index_no_live_scc_no_live_sgprs_gep_immoffset:1271; GFX900: ; %bb.0:1272; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1273; GFX900-NEXT: s_xor_saveexec_b64 s[4:5], -11274; GFX900-NEXT: s_add_i32 s6, s32, 0x2010001275; GFX900-NEXT: buffer_store_dword v23, off, s[0:3], s6 ; 4-byte Folded Spill1276; GFX900-NEXT: s_add_i32 s6, s32, 0x2011001277; GFX900-NEXT: buffer_store_dword v22, off, s[0:3], s6 ; 4-byte Folded Spill1278; GFX900-NEXT: s_mov_b64 exec, s[4:5]1279; GFX900-NEXT: v_writelane_b32 v23, s30, 01280; GFX900-NEXT: v_writelane_b32 v23, s31, 11281; GFX900-NEXT: v_writelane_b32 v23, s33, 21282; GFX900-NEXT: v_writelane_b32 v23, s34, 31283; GFX900-NEXT: v_writelane_b32 v23, s35, 41284; GFX900-NEXT: v_writelane_b32 v23, s36, 51285; GFX900-NEXT: v_writelane_b32 v23, s37, 61286; GFX900-NEXT: v_writelane_b32 v23, s38, 71287; GFX900-NEXT: v_writelane_b32 v23, s39, 81288; GFX900-NEXT: v_writelane_b32 v23, s48, 91289; GFX900-NEXT: v_writelane_b32 v23, s49, 101290; GFX900-NEXT: v_writelane_b32 v23, s50, 111291; GFX900-NEXT: v_writelane_b32 v23, s51, 121292; GFX900-NEXT: v_writelane_b32 v23, s52, 131293; GFX900-NEXT: s_lshr_b32 s5, s32, 61294; GFX900-NEXT: v_writelane_b32 v23, s53, 141295; GFX900-NEXT: v_lshrrev_b32_e64 v0, 6, s321296; GFX900-NEXT: s_add_i32 s4, s5, 0x42401297; GFX900-NEXT: ; implicit-def: $vgpr22 : SGPR spill to VGPR lane1298; GFX900-NEXT: v_writelane_b32 v23, s54, 151299; GFX900-NEXT: v_add_u32_e32 v0, 64, v01300; GFX900-NEXT: v_writelane_b32 v22, s4, 01301; GFX900-NEXT: s_and_b64 s[4:5], 0, exec1302; GFX900-NEXT: v_writelane_b32 v23, s55, 161303; GFX900-NEXT: ;;#ASMSTART1304; GFX900-NEXT: ; use alloca0 v01305; GFX900-NEXT: ;;#ASMEND1306; GFX900-NEXT: ;;#ASMSTART1307; GFX900-NEXT: ; def s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], v[0:15], v[16:21], vcc1308; GFX900-NEXT: ;;#ASMEND1309; GFX900-NEXT: ; kill: def $sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55 killed $sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55 def $sgpr541310; GFX900-NEXT: v_readlane_b32 s54, v22, 01311; GFX900-NEXT: ;;#ASMSTART1312; GFX900-NEXT: ; use s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], v[0:15], v[16:21], vcc, s54, scc1313; GFX900-NEXT: ;;#ASMEND1314; GFX900-NEXT: v_readlane_b32 s55, v23, 161315; GFX900-NEXT: v_readlane_b32 s54, v23, 151316; GFX900-NEXT: v_readlane_b32 s53, v23, 141317; GFX900-NEXT: v_readlane_b32 s52, v23, 131318; GFX900-NEXT: v_readlane_b32 s51, v23, 121319; GFX900-NEXT: v_readlane_b32 s50, v23, 111320; GFX900-NEXT: v_readlane_b32 s49, v23, 101321; GFX900-NEXT: v_readlane_b32 s48, v23, 91322; GFX900-NEXT: v_readlane_b32 s39, v23, 81323; GFX900-NEXT: v_readlane_b32 s38, v23, 71324; GFX900-NEXT: v_readlane_b32 s37, v23, 61325; GFX900-NEXT: v_readlane_b32 s36, v23, 51326; GFX900-NEXT: v_readlane_b32 s35, v23, 41327; GFX900-NEXT: v_readlane_b32 s34, v23, 31328; GFX900-NEXT: v_readlane_b32 s33, v23, 21329; GFX900-NEXT: v_readlane_b32 s31, v23, 11330; GFX900-NEXT: v_readlane_b32 s30, v23, 01331; GFX900-NEXT: s_xor_saveexec_b64 s[4:5], -11332; GFX900-NEXT: s_add_i32 s6, s32, 0x2010001333; GFX900-NEXT: buffer_load_dword v23, off, s[0:3], s6 ; 4-byte Folded Reload1334; GFX900-NEXT: s_add_i32 s6, s32, 0x2011001335; GFX900-NEXT: buffer_load_dword v22, off, s[0:3], s6 ; 4-byte Folded Reload1336; GFX900-NEXT: s_mov_b64 exec, s[4:5]1337; GFX900-NEXT: s_waitcnt vmcnt(0)1338; GFX900-NEXT: s_setpc_b64 s[30:31]1339;1340; GFX942-LABEL: scalar_mov_materializes_frame_index_no_live_scc_no_live_sgprs_gep_immoffset:1341; GFX942: ; %bb.0:1342; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1343; GFX942-NEXT: s_xor_saveexec_b64 s[0:1], -11344; GFX942-NEXT: s_add_i32 s2, s32, 0x80401345; GFX942-NEXT: scratch_store_dword off, v22, s2 ; 4-byte Folded Spill1346; GFX942-NEXT: s_mov_b64 exec, s[0:1]1347; GFX942-NEXT: v_writelane_b32 v22, s30, 01348; GFX942-NEXT: v_writelane_b32 v22, s31, 11349; GFX942-NEXT: v_writelane_b32 v22, s33, 21350; GFX942-NEXT: v_writelane_b32 v22, s34, 31351; GFX942-NEXT: v_writelane_b32 v22, s35, 41352; GFX942-NEXT: v_writelane_b32 v22, s36, 51353; GFX942-NEXT: v_writelane_b32 v22, s37, 61354; GFX942-NEXT: v_writelane_b32 v22, s38, 71355; GFX942-NEXT: v_writelane_b32 v22, s39, 81356; GFX942-NEXT: v_writelane_b32 v22, s48, 91357; GFX942-NEXT: v_writelane_b32 v22, s49, 101358; GFX942-NEXT: v_writelane_b32 v22, s50, 111359; GFX942-NEXT: v_writelane_b32 v22, s51, 121360; GFX942-NEXT: v_writelane_b32 v22, s52, 131361; GFX942-NEXT: v_writelane_b32 v22, s53, 141362; GFX942-NEXT: s_add_i32 s0, s32, 641363; GFX942-NEXT: v_writelane_b32 v22, s54, 151364; GFX942-NEXT: v_mov_b32_e32 v0, s01365; GFX942-NEXT: v_writelane_b32 v22, s55, 161366; GFX942-NEXT: ;;#ASMSTART1367; GFX942-NEXT: ; use alloca0 v01368; GFX942-NEXT: ;;#ASMEND1369; GFX942-NEXT: ;;#ASMSTART1370; GFX942-NEXT: ; def s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], v[0:15], v[16:21], vcc1371; GFX942-NEXT: ;;#ASMEND1372; GFX942-NEXT: s_add_i32 s58, s32, 0x42401373; GFX942-NEXT: ; kill: def $sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55 killed $sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55 def $sgpr541374; GFX942-NEXT: s_and_b64 s[60:61], 0, exec1375; GFX942-NEXT: s_mov_b32 s54, s581376; GFX942-NEXT: ;;#ASMSTART1377; GFX942-NEXT: ; use s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], v[0:15], v[16:21], vcc, s54, scc1378; GFX942-NEXT: ;;#ASMEND1379; GFX942-NEXT: v_readlane_b32 s55, v22, 161380; GFX942-NEXT: v_readlane_b32 s54, v22, 151381; GFX942-NEXT: v_readlane_b32 s53, v22, 141382; GFX942-NEXT: v_readlane_b32 s52, v22, 131383; GFX942-NEXT: v_readlane_b32 s51, v22, 121384; GFX942-NEXT: v_readlane_b32 s50, v22, 111385; GFX942-NEXT: v_readlane_b32 s49, v22, 101386; GFX942-NEXT: v_readlane_b32 s48, v22, 91387; GFX942-NEXT: v_readlane_b32 s39, v22, 81388; GFX942-NEXT: v_readlane_b32 s38, v22, 71389; GFX942-NEXT: v_readlane_b32 s37, v22, 61390; GFX942-NEXT: v_readlane_b32 s36, v22, 51391; GFX942-NEXT: v_readlane_b32 s35, v22, 41392; GFX942-NEXT: v_readlane_b32 s34, v22, 31393; GFX942-NEXT: v_readlane_b32 s33, v22, 21394; GFX942-NEXT: v_readlane_b32 s31, v22, 11395; GFX942-NEXT: v_readlane_b32 s30, v22, 01396; GFX942-NEXT: s_xor_saveexec_b64 s[0:1], -11397; GFX942-NEXT: s_add_i32 s2, s32, 0x80401398; GFX942-NEXT: scratch_load_dword v22, off, s2 ; 4-byte Folded Reload1399; GFX942-NEXT: s_mov_b64 exec, s[0:1]1400; GFX942-NEXT: s_waitcnt vmcnt(0)1401; GFX942-NEXT: s_setpc_b64 s[30:31]1402;1403; GFX10_1-LABEL: scalar_mov_materializes_frame_index_no_live_scc_no_live_sgprs_gep_immoffset:1404; GFX10_1: ; %bb.0:1405; GFX10_1-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1406; GFX10_1-NEXT: s_xor_saveexec_b32 s4, -11407; GFX10_1-NEXT: s_add_i32 s5, s32, 0x1008001408; GFX10_1-NEXT: buffer_store_dword v22, off, s[0:3], s5 ; 4-byte Folded Spill1409; GFX10_1-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)1410; GFX10_1-NEXT: s_mov_b32 exec_lo, s41411; GFX10_1-NEXT: v_writelane_b32 v22, s30, 01412; GFX10_1-NEXT: v_lshrrev_b32_e64 v0, 5, s321413; GFX10_1-NEXT: s_lshr_b32 s4, s32, 51414; GFX10_1-NEXT: s_add_i32 s58, s4, 0x42401415; GFX10_1-NEXT: v_writelane_b32 v22, s31, 11416; GFX10_1-NEXT: v_add_nc_u32_e32 v0, 64, v01417; GFX10_1-NEXT: s_and_b32 s4, 0, exec_lo1418; GFX10_1-NEXT: ;;#ASMSTART1419; GFX10_1-NEXT: ; use alloca0 v01420; GFX10_1-NEXT: ;;#ASMEND1421; GFX10_1-NEXT: v_writelane_b32 v22, s33, 21422; GFX10_1-NEXT: v_writelane_b32 v22, s34, 31423; GFX10_1-NEXT: v_writelane_b32 v22, s35, 41424; GFX10_1-NEXT: v_writelane_b32 v22, s36, 51425; GFX10_1-NEXT: v_writelane_b32 v22, s37, 61426; GFX10_1-NEXT: v_writelane_b32 v22, s38, 71427; GFX10_1-NEXT: v_writelane_b32 v22, s39, 81428; GFX10_1-NEXT: v_writelane_b32 v22, s48, 91429; GFX10_1-NEXT: v_writelane_b32 v22, s49, 101430; GFX10_1-NEXT: v_writelane_b32 v22, s50, 111431; GFX10_1-NEXT: v_writelane_b32 v22, s51, 121432; GFX10_1-NEXT: v_writelane_b32 v22, s52, 131433; GFX10_1-NEXT: v_writelane_b32 v22, s53, 141434; GFX10_1-NEXT: v_writelane_b32 v22, s54, 151435; GFX10_1-NEXT: v_writelane_b32 v22, s55, 161436; GFX10_1-NEXT: ;;#ASMSTART1437; GFX10_1-NEXT: ; def s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], v[0:15], v[16:21], vcc1438; GFX10_1-NEXT: ;;#ASMEND1439; GFX10_1-NEXT: ; kill: def $sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55 killed $sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55 def $sgpr541440; GFX10_1-NEXT: s_mov_b32 s54, s581441; GFX10_1-NEXT: ;;#ASMSTART1442; GFX10_1-NEXT: ; use s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], v[0:15], v[16:21], vcc, s54, scc1443; GFX10_1-NEXT: ;;#ASMEND1444; GFX10_1-NEXT: v_readlane_b32 s55, v22, 161445; GFX10_1-NEXT: v_readlane_b32 s54, v22, 151446; GFX10_1-NEXT: v_readlane_b32 s53, v22, 141447; GFX10_1-NEXT: v_readlane_b32 s52, v22, 131448; GFX10_1-NEXT: v_readlane_b32 s51, v22, 121449; GFX10_1-NEXT: v_readlane_b32 s50, v22, 111450; GFX10_1-NEXT: v_readlane_b32 s49, v22, 101451; GFX10_1-NEXT: v_readlane_b32 s48, v22, 91452; GFX10_1-NEXT: v_readlane_b32 s39, v22, 81453; GFX10_1-NEXT: v_readlane_b32 s38, v22, 71454; GFX10_1-NEXT: v_readlane_b32 s37, v22, 61455; GFX10_1-NEXT: v_readlane_b32 s36, v22, 51456; GFX10_1-NEXT: v_readlane_b32 s35, v22, 41457; GFX10_1-NEXT: v_readlane_b32 s34, v22, 31458; GFX10_1-NEXT: v_readlane_b32 s33, v22, 21459; GFX10_1-NEXT: v_readlane_b32 s31, v22, 11460; GFX10_1-NEXT: v_readlane_b32 s30, v22, 01461; GFX10_1-NEXT: s_xor_saveexec_b32 s4, -11462; GFX10_1-NEXT: s_add_i32 s5, s32, 0x1008001463; GFX10_1-NEXT: buffer_load_dword v22, off, s[0:3], s5 ; 4-byte Folded Reload1464; GFX10_1-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)1465; GFX10_1-NEXT: s_mov_b32 exec_lo, s41466; GFX10_1-NEXT: s_waitcnt vmcnt(0)1467; GFX10_1-NEXT: s_setpc_b64 s[30:31]1468;1469; GFX10_3-LABEL: scalar_mov_materializes_frame_index_no_live_scc_no_live_sgprs_gep_immoffset:1470; GFX10_3: ; %bb.0:1471; GFX10_3-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1472; GFX10_3-NEXT: s_xor_saveexec_b32 s4, -11473; GFX10_3-NEXT: s_add_i32 s5, s32, 0x1008001474; GFX10_3-NEXT: buffer_store_dword v22, off, s[0:3], s5 ; 4-byte Folded Spill1475; GFX10_3-NEXT: s_mov_b32 exec_lo, s41476; GFX10_3-NEXT: v_writelane_b32 v22, s30, 01477; GFX10_3-NEXT: v_lshrrev_b32_e64 v0, 5, s321478; GFX10_3-NEXT: s_lshr_b32 s4, s32, 51479; GFX10_3-NEXT: s_add_i32 s58, s4, 0x42401480; GFX10_3-NEXT: v_writelane_b32 v22, s31, 11481; GFX10_3-NEXT: v_add_nc_u32_e32 v0, 64, v01482; GFX10_3-NEXT: s_and_b32 s4, 0, exec_lo1483; GFX10_3-NEXT: ;;#ASMSTART1484; GFX10_3-NEXT: ; use alloca0 v01485; GFX10_3-NEXT: ;;#ASMEND1486; GFX10_3-NEXT: v_writelane_b32 v22, s33, 21487; GFX10_3-NEXT: v_writelane_b32 v22, s34, 31488; GFX10_3-NEXT: v_writelane_b32 v22, s35, 41489; GFX10_3-NEXT: v_writelane_b32 v22, s36, 51490; GFX10_3-NEXT: v_writelane_b32 v22, s37, 61491; GFX10_3-NEXT: v_writelane_b32 v22, s38, 71492; GFX10_3-NEXT: v_writelane_b32 v22, s39, 81493; GFX10_3-NEXT: v_writelane_b32 v22, s48, 91494; GFX10_3-NEXT: v_writelane_b32 v22, s49, 101495; GFX10_3-NEXT: v_writelane_b32 v22, s50, 111496; GFX10_3-NEXT: v_writelane_b32 v22, s51, 121497; GFX10_3-NEXT: v_writelane_b32 v22, s52, 131498; GFX10_3-NEXT: v_writelane_b32 v22, s53, 141499; GFX10_3-NEXT: v_writelane_b32 v22, s54, 151500; GFX10_3-NEXT: v_writelane_b32 v22, s55, 161501; GFX10_3-NEXT: ;;#ASMSTART1502; GFX10_3-NEXT: ; def s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], v[0:15], v[16:21], vcc1503; GFX10_3-NEXT: ;;#ASMEND1504; GFX10_3-NEXT: ; kill: def $sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55 killed $sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55 def $sgpr541505; GFX10_3-NEXT: s_mov_b32 s54, s581506; GFX10_3-NEXT: ;;#ASMSTART1507; GFX10_3-NEXT: ; use s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], v[0:15], v[16:21], vcc, s54, scc1508; GFX10_3-NEXT: ;;#ASMEND1509; GFX10_3-NEXT: v_readlane_b32 s55, v22, 161510; GFX10_3-NEXT: v_readlane_b32 s54, v22, 151511; GFX10_3-NEXT: v_readlane_b32 s53, v22, 141512; GFX10_3-NEXT: v_readlane_b32 s52, v22, 131513; GFX10_3-NEXT: v_readlane_b32 s51, v22, 121514; GFX10_3-NEXT: v_readlane_b32 s50, v22, 111515; GFX10_3-NEXT: v_readlane_b32 s49, v22, 101516; GFX10_3-NEXT: v_readlane_b32 s48, v22, 91517; GFX10_3-NEXT: v_readlane_b32 s39, v22, 81518; GFX10_3-NEXT: v_readlane_b32 s38, v22, 71519; GFX10_3-NEXT: v_readlane_b32 s37, v22, 61520; GFX10_3-NEXT: v_readlane_b32 s36, v22, 51521; GFX10_3-NEXT: v_readlane_b32 s35, v22, 41522; GFX10_3-NEXT: v_readlane_b32 s34, v22, 31523; GFX10_3-NEXT: v_readlane_b32 s33, v22, 21524; GFX10_3-NEXT: v_readlane_b32 s31, v22, 11525; GFX10_3-NEXT: v_readlane_b32 s30, v22, 01526; GFX10_3-NEXT: s_xor_saveexec_b32 s4, -11527; GFX10_3-NEXT: s_add_i32 s5, s32, 0x1008001528; GFX10_3-NEXT: buffer_load_dword v22, off, s[0:3], s5 ; 4-byte Folded Reload1529; GFX10_3-NEXT: s_mov_b32 exec_lo, s41530; GFX10_3-NEXT: s_waitcnt vmcnt(0)1531; GFX10_3-NEXT: s_setpc_b64 s[30:31]1532;1533; GFX11-LABEL: scalar_mov_materializes_frame_index_no_live_scc_no_live_sgprs_gep_immoffset:1534; GFX11: ; %bb.0:1535; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1536; GFX11-NEXT: s_xor_saveexec_b32 s0, -11537; GFX11-NEXT: s_add_i32 s1, s32, 0x80401538; GFX11-NEXT: scratch_store_b32 off, v22, s1 ; 4-byte Folded Spill1539; GFX11-NEXT: s_mov_b32 exec_lo, s01540; GFX11-NEXT: v_writelane_b32 v22, s30, 01541; GFX11-NEXT: s_add_i32 s0, s32, 641542; GFX11-NEXT: s_add_i32 s58, s32, 0x42401543; GFX11-NEXT: v_mov_b32_e32 v0, s01544; GFX11-NEXT: s_and_b32 s0, 0, exec_lo1545; GFX11-NEXT: v_writelane_b32 v22, s31, 11546; GFX11-NEXT: ;;#ASMSTART1547; GFX11-NEXT: ; use alloca0 v01548; GFX11-NEXT: ;;#ASMEND1549; GFX11-NEXT: v_writelane_b32 v22, s33, 21550; GFX11-NEXT: v_writelane_b32 v22, s34, 31551; GFX11-NEXT: v_writelane_b32 v22, s35, 41552; GFX11-NEXT: v_writelane_b32 v22, s36, 51553; GFX11-NEXT: v_writelane_b32 v22, s37, 61554; GFX11-NEXT: v_writelane_b32 v22, s38, 71555; GFX11-NEXT: v_writelane_b32 v22, s39, 81556; GFX11-NEXT: v_writelane_b32 v22, s48, 91557; GFX11-NEXT: v_writelane_b32 v22, s49, 101558; GFX11-NEXT: v_writelane_b32 v22, s50, 111559; GFX11-NEXT: v_writelane_b32 v22, s51, 121560; GFX11-NEXT: v_writelane_b32 v22, s52, 131561; GFX11-NEXT: v_writelane_b32 v22, s53, 141562; GFX11-NEXT: v_writelane_b32 v22, s54, 151563; GFX11-NEXT: v_writelane_b32 v22, s55, 161564; GFX11-NEXT: ;;#ASMSTART1565; GFX11-NEXT: ; def s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], v[0:15], v[16:21], vcc1566; GFX11-NEXT: ;;#ASMEND1567; GFX11-NEXT: ; kill: def $sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55 killed $sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55 def $sgpr541568; GFX11-NEXT: s_mov_b32 s54, s581569; GFX11-NEXT: ;;#ASMSTART1570; GFX11-NEXT: ; use s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], v[0:15], v[16:21], vcc, s54, scc1571; GFX11-NEXT: ;;#ASMEND1572; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)1573; GFX11-NEXT: v_readlane_b32 s55, v22, 161574; GFX11-NEXT: v_readlane_b32 s54, v22, 151575; GFX11-NEXT: v_readlane_b32 s53, v22, 141576; GFX11-NEXT: v_readlane_b32 s52, v22, 131577; GFX11-NEXT: v_readlane_b32 s51, v22, 121578; GFX11-NEXT: v_readlane_b32 s50, v22, 111579; GFX11-NEXT: v_readlane_b32 s49, v22, 101580; GFX11-NEXT: v_readlane_b32 s48, v22, 91581; GFX11-NEXT: v_readlane_b32 s39, v22, 81582; GFX11-NEXT: v_readlane_b32 s38, v22, 71583; GFX11-NEXT: v_readlane_b32 s37, v22, 61584; GFX11-NEXT: v_readlane_b32 s36, v22, 51585; GFX11-NEXT: v_readlane_b32 s35, v22, 41586; GFX11-NEXT: v_readlane_b32 s34, v22, 31587; GFX11-NEXT: v_readlane_b32 s33, v22, 21588; GFX11-NEXT: v_readlane_b32 s31, v22, 11589; GFX11-NEXT: v_readlane_b32 s30, v22, 01590; GFX11-NEXT: s_xor_saveexec_b32 s0, -11591; GFX11-NEXT: s_add_i32 s1, s32, 0x80401592; GFX11-NEXT: scratch_load_b32 v22, off, s1 ; 4-byte Folded Reload1593; GFX11-NEXT: s_mov_b32 exec_lo, s01594; GFX11-NEXT: s_waitcnt vmcnt(0)1595; GFX11-NEXT: s_setpc_b64 s[30:31]1596;1597; GFX12-LABEL: scalar_mov_materializes_frame_index_no_live_scc_no_live_sgprs_gep_immoffset:1598; GFX12: ; %bb.0:1599; GFX12-NEXT: s_wait_loadcnt_dscnt 0x01600; GFX12-NEXT: s_wait_expcnt 0x01601; GFX12-NEXT: s_wait_samplecnt 0x01602; GFX12-NEXT: s_wait_bvhcnt 0x01603; GFX12-NEXT: s_wait_kmcnt 0x01604; GFX12-NEXT: s_xor_saveexec_b32 s0, -11605; GFX12-NEXT: scratch_store_b32 off, v22, s32 offset:32768 ; 4-byte Folded Spill1606; GFX12-NEXT: s_wait_alu depctr_sa_sdst(0)1607; GFX12-NEXT: s_mov_b32 exec_lo, s01608; GFX12-NEXT: v_writelane_b32 v22, s30, 01609; GFX12-NEXT: s_add_co_i32 s58, s32, 0x42001610; GFX12-NEXT: v_mov_b32_e32 v0, s321611; GFX12-NEXT: s_and_b32 s0, 0, exec_lo1612; GFX12-NEXT: ;;#ASMSTART1613; GFX12-NEXT: ; use alloca0 v01614; GFX12-NEXT: ;;#ASMEND1615; GFX12-NEXT: v_writelane_b32 v22, s31, 11616; GFX12-NEXT: v_writelane_b32 v22, s33, 21617; GFX12-NEXT: v_writelane_b32 v22, s34, 31618; GFX12-NEXT: v_writelane_b32 v22, s35, 41619; GFX12-NEXT: v_writelane_b32 v22, s36, 51620; GFX12-NEXT: v_writelane_b32 v22, s37, 61621; GFX12-NEXT: v_writelane_b32 v22, s38, 71622; GFX12-NEXT: v_writelane_b32 v22, s39, 81623; GFX12-NEXT: v_writelane_b32 v22, s48, 91624; GFX12-NEXT: v_writelane_b32 v22, s49, 101625; GFX12-NEXT: v_writelane_b32 v22, s50, 111626; GFX12-NEXT: v_writelane_b32 v22, s51, 121627; GFX12-NEXT: v_writelane_b32 v22, s52, 131628; GFX12-NEXT: v_writelane_b32 v22, s53, 141629; GFX12-NEXT: v_writelane_b32 v22, s54, 151630; GFX12-NEXT: v_writelane_b32 v22, s55, 161631; GFX12-NEXT: ;;#ASMSTART1632; GFX12-NEXT: ; def s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], v[0:15], v[16:21], vcc1633; GFX12-NEXT: ;;#ASMEND1634; GFX12-NEXT: ; kill: def $sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55 killed $sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55 def $sgpr541635; GFX12-NEXT: s_wait_alu depctr_sa_sdst(0)1636; GFX12-NEXT: s_mov_b32 s54, s581637; GFX12-NEXT: ;;#ASMSTART1638; GFX12-NEXT: ; use s[0:15], s[16:31], s[32:47], s[48:55], s[56:57], v[0:15], v[16:21], vcc, s54, scc1639; GFX12-NEXT: ;;#ASMEND1640; GFX12-NEXT: v_readlane_b32 s55, v22, 161641; GFX12-NEXT: v_readlane_b32 s54, v22, 151642; GFX12-NEXT: v_readlane_b32 s53, v22, 141643; GFX12-NEXT: v_readlane_b32 s52, v22, 131644; GFX12-NEXT: v_readlane_b32 s51, v22, 121645; GFX12-NEXT: v_readlane_b32 s50, v22, 111646; GFX12-NEXT: v_readlane_b32 s49, v22, 101647; GFX12-NEXT: v_readlane_b32 s48, v22, 91648; GFX12-NEXT: v_readlane_b32 s39, v22, 81649; GFX12-NEXT: v_readlane_b32 s38, v22, 71650; GFX12-NEXT: v_readlane_b32 s37, v22, 61651; GFX12-NEXT: v_readlane_b32 s36, v22, 51652; GFX12-NEXT: v_readlane_b32 s35, v22, 41653; GFX12-NEXT: v_readlane_b32 s34, v22, 31654; GFX12-NEXT: v_readlane_b32 s33, v22, 21655; GFX12-NEXT: v_readlane_b32 s31, v22, 11656; GFX12-NEXT: v_readlane_b32 s30, v22, 01657; GFX12-NEXT: s_xor_saveexec_b32 s0, -11658; GFX12-NEXT: scratch_load_b32 v22, off, s32 offset:32768 ; 4-byte Folded Reload1659; GFX12-NEXT: s_wait_alu depctr_sa_sdst(0)1660; GFX12-NEXT: s_mov_b32 exec_lo, s01661; GFX12-NEXT: s_wait_loadcnt 0x01662; GFX12-NEXT: s_setpc_b64 s[30:31]1663 %alloca0 = alloca [4096 x i32], align 64, addrspace(5)1664 %alloca1 = alloca [4096 x i32], align 4, addrspace(5)1665 call void asm sideeffect "; use alloca0 $0", "v"(ptr addrspace(5) %alloca0)1666 1667 ; Force no SGPRs to be available for the carry-out of the vector add.1668 %asm = call %asm.output3 asm sideeffect1669 "; def $0, $1, $2, $3, $4, $5, $6, $7",1670 "={s[0:15]},={s[16:31]},={s[32:47]},={s[48:55]},={s[56:57]},={v[0:15]},={v[16:21]},={vcc}"()1671 1672 %s0 = extractvalue %asm.output3 %asm, 01673 %s1 = extractvalue %asm.output3 %asm, 11674 %s2 = extractvalue %asm.output3 %asm, 21675 %s3 = extractvalue %asm.output3 %asm, 31676 %s4 = extractvalue %asm.output3 %asm, 41677 1678 %v0 = extractvalue %asm.output3 %asm, 51679 %v1 = extractvalue %asm.output3 %asm, 61680 1681 %vcc = extractvalue %asm.output3 %asm, 71682 1683 %alloca1.offset = getelementptr [4096 x i32], ptr addrspace(5) %alloca1, i32 0, i32 1281684 1685 ; scc is unavailable since it is live in1686 call void asm sideeffect "; use $0, $1, $2, $3, $4, $5, $6, $7, $8, $9",1687 "{s[0:15]},{s[16:31]},{s[32:47]},{s[48:55]},{s[56:57]},{v[0:15]},{v[16:21]},{vcc},{s54},{scc}"(1688 <16 x i32> %s0,1689 <16 x i32> %s1,1690 <16 x i32> %s2,1691 <8 x i32> %s3,1692 <2 x i32> %s4,1693 <16 x i32> %v0,1694 <6 x i32> %v1,1695 i64 %vcc,1696 ptr addrspace(5) %alloca1.offset,1697 i32 0) ; use of scc1698 1699 ret void1700}1701 1702; For gfx8/gfx9, this should enforce a budget of 24 VGPRs, and 60 SGPRs (41703; are reserved at the end for xnack + vcc).1704attributes #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" }1705attributes #1 = { nounwind alignstack=16 "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "amdgpu-waves-per-eu"="10,10" "no-realign-stack" }1706