brintos

brintos / llvm-project-archived public Read only

0
0
Text · 50.0 KiB · af75381 Raw
956 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2 3; RUN: llc -mtriple=amdgcn -mcpu=gfx90a -mattr=-enable-flat-scratch < %s | FileCheck --check-prefixes=GFX90A,GFX90A-SDAG,GFX90A-MUBUF,GFX90A-SDAG-MUBUF %s4; RUN: llc -mtriple=amdgcn -mcpu=gfx90a -mattr=+enable-flat-scratch < %s | FileCheck --check-prefixes=GFX90A,GFX90A-SDAG,GFX90A-FLATSCR,GFX90A-SDAG-FLATSCR %s5; RUN: llc -mtriple=amdgcn -mcpu=gfx1030 -mattr=-enable-flat-scratch < %s | FileCheck --check-prefixes=GFX10,GFX10-SDAG,GFX10-MUBUF,GFX10-SDAG-MUBUF %s6; RUN: llc -mtriple=amdgcn -mcpu=gfx1030 -mattr=+enable-flat-scratch < %s | FileCheck --check-prefixes=GFX10,GFX10-SDAG,GFX10-FLATSCR,GFX10-SDAG-FLATSCR %s7; RUN: llc -mtriple=amdgcn -mcpu=gfx942 < %s | FileCheck --check-prefixes=GFX942,GFX942-SDAG %s8; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 < %s | FileCheck --check-prefixes=GFX11,GFX11-SDAG %s9; RUN: llc -mtriple=amdgcn -mcpu=gfx1200 < %s | FileCheck --check-prefixes=GFX12,GFX12-SDAG %s10 11; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx90a -mattr=-enable-flat-scratch < %s | FileCheck --check-prefixes=GFX90A,GFX90A-GISEL,GFX90A-MUBUF,GFX90A-GISEL-MUBUF %s12; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx90a -mattr=+enable-flat-scratch < %s | FileCheck --check-prefixes=GFX90A,GFX90A-GISEL,GFX90A-FLATSCR,GFX90A-GISEL-FLATSCR %s13; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1030 -mattr=-enable-flat-scratch < %s | FileCheck --check-prefixes=GFX10,GFX10-GISEL,GFX10-MUBUF,GFX10-GISEL-MUBUF %s14; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1030 -mattr=+enable-flat-scratch < %s | FileCheck --check-prefixes=GFX10,GFX10-GISEL,GFX10-FLATSCR,GFX10-GISEL-FLATSCR %s15; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx942 < %s | FileCheck --check-prefixes=GFX942,GFX942-GISEL %s16; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1100 < %s | FileCheck --check-prefixes=GFX11,GFX11-GISEL %s17; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1200 < %s | FileCheck --check-prefixes=GFX12,GFX12-GISEL %s18 19; This test checks memory addresses with constant offset components that should20; not be folded into memory accesses with immediate offsets.21; SeparateConstOffsetsFromGEP transforms the GEPs in a way that can lead to22; out-of-bounds or negative intermediate results in the address computation,23; which are problematic for flat and scratch instructions:24;     gep[inbounds](p, i + 3) -> gep(gep(p, i), 3)25 26 27; The offset here cannot be folded: if %p points to the beginning of scratch or28; scratch or LDS and %i is -1, a folded offset crashes the program.29define i32 @flat_offset_maybe_oob(ptr %p, i32 %i) {30; GFX90A-LABEL: flat_offset_maybe_oob:31; GFX90A:       ; %bb.0:32; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)33; GFX90A-NEXT:    v_ashrrev_i32_e32 v3, 31, v234; GFX90A-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]35; GFX90A-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v236; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc37; GFX90A-NEXT:    v_add_co_u32_e32 v0, vcc, 12, v038; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc39; GFX90A-NEXT:    flat_load_dword v0, v[0:1]40; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)41; GFX90A-NEXT:    s_setpc_b64 s[30:31]42;43; GFX10-LABEL: flat_offset_maybe_oob:44; GFX10:       ; %bb.0:45; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)46; GFX10-NEXT:    v_ashrrev_i32_e32 v3, 31, v247; GFX10-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]48; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v249; GFX10-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo50; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, v0, 1251; GFX10-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo52; GFX10-NEXT:    flat_load_dword v0, v[0:1]53; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)54; GFX10-NEXT:    s_setpc_b64 s[30:31]55;56; GFX942-SDAG-LABEL: flat_offset_maybe_oob:57; GFX942-SDAG:       ; %bb.0:58; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)59; GFX942-SDAG-NEXT:    v_ashrrev_i32_e32 v3, 31, v260; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 2, v[0:1]61; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, 1262; GFX942-SDAG-NEXT:    flat_load_dword v0, v[0:1]63; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)64; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]65;66; GFX11-LABEL: flat_offset_maybe_oob:67; GFX11:       ; %bb.0:68; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)69; GFX11-NEXT:    v_ashrrev_i32_e32 v3, 31, v270; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)71; GFX11-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]72; GFX11-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v273; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)74; GFX11-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo75; GFX11-NEXT:    v_add_co_u32 v0, vcc_lo, v0, 1276; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)77; GFX11-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo78; GFX11-NEXT:    flat_load_b32 v0, v[0:1]79; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)80; GFX11-NEXT:    s_setpc_b64 s[30:31]81;82; GFX12-LABEL: flat_offset_maybe_oob:83; GFX12:       ; %bb.0:84; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x085; GFX12-NEXT:    s_wait_expcnt 0x086; GFX12-NEXT:    s_wait_samplecnt 0x087; GFX12-NEXT:    s_wait_bvhcnt 0x088; GFX12-NEXT:    s_wait_kmcnt 0x089; GFX12-NEXT:    v_ashrrev_i32_e32 v3, 31, v290; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)91; GFX12-NEXT:    v_lshlrev_b64_e32 v[2:3], 2, v[2:3]92; GFX12-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v293; GFX12-NEXT:    s_wait_alu depctr_va_vcc(0)94; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)95; GFX12-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo96; GFX12-NEXT:    v_add_co_u32 v0, vcc_lo, v0, 1297; GFX12-NEXT:    s_wait_alu depctr_va_vcc(0)98; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_2)99; GFX12-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo100; GFX12-NEXT:    flat_load_b32 v0, v[0:1]101; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0102; GFX12-NEXT:    s_setpc_b64 s[30:31]103;104; GFX942-GISEL-LABEL: flat_offset_maybe_oob:105; GFX942-GISEL:       ; %bb.0:106; GFX942-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)107; GFX942-GISEL-NEXT:    v_ashrrev_i32_e32 v3, 31, v2108; GFX942-GISEL-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 2, v[0:1]109; GFX942-GISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 12, v0110; GFX942-GISEL-NEXT:    s_nop 1111; GFX942-GISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc112; GFX942-GISEL-NEXT:    flat_load_dword v0, v[0:1]113; GFX942-GISEL-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)114; GFX942-GISEL-NEXT:    s_setpc_b64 s[30:31]115  %idx = add nsw i32 %i, 3116  %arrayidx = getelementptr inbounds i32, ptr %p, i32 %idx117  %l = load i32, ptr %arrayidx118  ret i32 %l119}120 121; For MUBUF and for GFX12, folding the offset is okay.122define i32 @private_offset_maybe_oob(ptr addrspace(5) %p, i32 %i) {123; GFX90A-SDAG-MUBUF-LABEL: private_offset_maybe_oob:124; GFX90A-SDAG-MUBUF:       ; %bb.0:125; GFX90A-SDAG-MUBUF-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)126; GFX90A-SDAG-MUBUF-NEXT:    v_lshl_add_u32 v0, v1, 2, v0127; GFX90A-SDAG-MUBUF-NEXT:    buffer_load_dword v0, v0, s[0:3], 0 offen offset:12128; GFX90A-SDAG-MUBUF-NEXT:    s_waitcnt vmcnt(0)129; GFX90A-SDAG-MUBUF-NEXT:    s_setpc_b64 s[30:31]130;131; GFX90A-FLATSCR-LABEL: private_offset_maybe_oob:132; GFX90A-FLATSCR:       ; %bb.0:133; GFX90A-FLATSCR-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)134; GFX90A-FLATSCR-NEXT:    v_lshlrev_b32_e32 v1, 2, v1135; GFX90A-FLATSCR-NEXT:    v_add3_u32 v0, v0, v1, 12136; GFX90A-FLATSCR-NEXT:    scratch_load_dword v0, v0, off137; GFX90A-FLATSCR-NEXT:    s_waitcnt vmcnt(0)138; GFX90A-FLATSCR-NEXT:    s_setpc_b64 s[30:31]139;140; GFX10-SDAG-MUBUF-LABEL: private_offset_maybe_oob:141; GFX10-SDAG-MUBUF:       ; %bb.0:142; GFX10-SDAG-MUBUF-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)143; GFX10-SDAG-MUBUF-NEXT:    v_lshl_add_u32 v0, v1, 2, v0144; GFX10-SDAG-MUBUF-NEXT:    buffer_load_dword v0, v0, s[0:3], 0 offen offset:12145; GFX10-SDAG-MUBUF-NEXT:    s_waitcnt vmcnt(0)146; GFX10-SDAG-MUBUF-NEXT:    s_setpc_b64 s[30:31]147;148; GFX10-FLATSCR-LABEL: private_offset_maybe_oob:149; GFX10-FLATSCR:       ; %bb.0:150; GFX10-FLATSCR-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)151; GFX10-FLATSCR-NEXT:    v_lshlrev_b32_e32 v1, 2, v1152; GFX10-FLATSCR-NEXT:    v_add3_u32 v0, v0, v1, 12153; GFX10-FLATSCR-NEXT:    scratch_load_dword v0, v0, off154; GFX10-FLATSCR-NEXT:    s_waitcnt vmcnt(0)155; GFX10-FLATSCR-NEXT:    s_setpc_b64 s[30:31]156;157; GFX942-LABEL: private_offset_maybe_oob:158; GFX942:       ; %bb.0:159; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)160; GFX942-NEXT:    v_lshlrev_b32_e32 v1, 2, v1161; GFX942-NEXT:    v_add3_u32 v0, v0, v1, 12162; GFX942-NEXT:    scratch_load_dword v0, v0, off163; GFX942-NEXT:    s_waitcnt vmcnt(0)164; GFX942-NEXT:    s_setpc_b64 s[30:31]165;166; GFX11-LABEL: private_offset_maybe_oob:167; GFX11:       ; %bb.0:168; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)169; GFX11-NEXT:    v_lshlrev_b32_e32 v1, 2, v1170; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)171; GFX11-NEXT:    v_add3_u32 v0, v0, v1, 12172; GFX11-NEXT:    scratch_load_b32 v0, v0, off173; GFX11-NEXT:    s_waitcnt vmcnt(0)174; GFX11-NEXT:    s_setpc_b64 s[30:31]175;176; GFX12-SDAG-LABEL: private_offset_maybe_oob:177; GFX12-SDAG:       ; %bb.0:178; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0179; GFX12-SDAG-NEXT:    s_wait_expcnt 0x0180; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x0181; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x0182; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0183; GFX12-SDAG-NEXT:    v_lshl_add_u32 v0, v1, 2, v0184; GFX12-SDAG-NEXT:    scratch_load_b32 v0, v0, off offset:12185; GFX12-SDAG-NEXT:    s_wait_loadcnt 0x0186; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31]187;188; GFX90A-GISEL-MUBUF-LABEL: private_offset_maybe_oob:189; GFX90A-GISEL-MUBUF:       ; %bb.0:190; GFX90A-GISEL-MUBUF-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)191; GFX90A-GISEL-MUBUF-NEXT:    v_lshlrev_b32_e32 v1, 2, v1192; GFX90A-GISEL-MUBUF-NEXT:    v_add_u32_e32 v0, v0, v1193; GFX90A-GISEL-MUBUF-NEXT:    buffer_load_dword v0, v0, s[0:3], 0 offen offset:12194; GFX90A-GISEL-MUBUF-NEXT:    s_waitcnt vmcnt(0)195; GFX90A-GISEL-MUBUF-NEXT:    s_setpc_b64 s[30:31]196;197; GFX10-GISEL-MUBUF-LABEL: private_offset_maybe_oob:198; GFX10-GISEL-MUBUF:       ; %bb.0:199; GFX10-GISEL-MUBUF-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)200; GFX10-GISEL-MUBUF-NEXT:    v_lshlrev_b32_e32 v1, 2, v1201; GFX10-GISEL-MUBUF-NEXT:    v_add_nc_u32_e32 v0, v0, v1202; GFX10-GISEL-MUBUF-NEXT:    buffer_load_dword v0, v0, s[0:3], 0 offen offset:12203; GFX10-GISEL-MUBUF-NEXT:    s_waitcnt vmcnt(0)204; GFX10-GISEL-MUBUF-NEXT:    s_setpc_b64 s[30:31]205;206; GFX12-GISEL-LABEL: private_offset_maybe_oob:207; GFX12-GISEL:       ; %bb.0:208; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0209; GFX12-GISEL-NEXT:    s_wait_expcnt 0x0210; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x0211; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x0212; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0213; GFX12-GISEL-NEXT:    v_lshlrev_b32_e32 v1, 2, v1214; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)215; GFX12-GISEL-NEXT:    v_add_nc_u32_e32 v0, v0, v1216; GFX12-GISEL-NEXT:    scratch_load_b32 v0, v0, off offset:12217; GFX12-GISEL-NEXT:    s_wait_loadcnt 0x0218; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]219  %idx = add nsw i32 %i, 3220  %arrayidx = getelementptr inbounds i32, ptr addrspace(5) %p, i32 %idx221  %l = load i32, ptr addrspace(5) %arrayidx222  ret i32 %l223}224 225; If the GEP that adds the offset is inbounds, folding the offset is legal.226define i32 @flat_offset_inbounds(ptr %p, i32 %i) {227; GFX90A-LABEL: flat_offset_inbounds:228; GFX90A:       ; %bb.0:229; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)230; GFX90A-NEXT:    v_ashrrev_i32_e32 v3, 31, v2231; GFX90A-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]232; GFX90A-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2233; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc234; GFX90A-NEXT:    flat_load_dword v0, v[0:1] offset:12235; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)236; GFX90A-NEXT:    s_setpc_b64 s[30:31]237;238; GFX10-LABEL: flat_offset_inbounds:239; GFX10:       ; %bb.0:240; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)241; GFX10-NEXT:    v_ashrrev_i32_e32 v3, 31, v2242; GFX10-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]243; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2244; GFX10-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo245; GFX10-NEXT:    flat_load_dword v0, v[0:1] offset:12246; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)247; GFX10-NEXT:    s_setpc_b64 s[30:31]248;249; GFX942-LABEL: flat_offset_inbounds:250; GFX942:       ; %bb.0:251; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)252; GFX942-NEXT:    v_ashrrev_i32_e32 v3, 31, v2253; GFX942-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 2, v[0:1]254; GFX942-NEXT:    flat_load_dword v0, v[0:1] offset:12255; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)256; GFX942-NEXT:    s_setpc_b64 s[30:31]257;258; GFX11-LABEL: flat_offset_inbounds:259; GFX11:       ; %bb.0:260; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)261; GFX11-NEXT:    v_ashrrev_i32_e32 v3, 31, v2262; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)263; GFX11-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]264; GFX11-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2265; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)266; GFX11-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo267; GFX11-NEXT:    flat_load_b32 v0, v[0:1] offset:12268; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)269; GFX11-NEXT:    s_setpc_b64 s[30:31]270;271; GFX12-LABEL: flat_offset_inbounds:272; GFX12:       ; %bb.0:273; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0274; GFX12-NEXT:    s_wait_expcnt 0x0275; GFX12-NEXT:    s_wait_samplecnt 0x0276; GFX12-NEXT:    s_wait_bvhcnt 0x0277; GFX12-NEXT:    s_wait_kmcnt 0x0278; GFX12-NEXT:    v_ashrrev_i32_e32 v3, 31, v2279; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)280; GFX12-NEXT:    v_lshlrev_b64_e32 v[2:3], 2, v[2:3]281; GFX12-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2282; GFX12-NEXT:    s_wait_alu depctr_va_vcc(0)283; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_2)284; GFX12-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo285; GFX12-NEXT:    flat_load_b32 v0, v[0:1] offset:12286; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0287; GFX12-NEXT:    s_setpc_b64 s[30:31]288  %p.1 = getelementptr inbounds i32, ptr %p, i32 %i289  %arrayidx = getelementptr inbounds i32, ptr %p.1, i32 3290  %l = load i32, ptr %arrayidx291  ret i32 %l292}293 294define void @flat_offset_inbounds_wide(ptr %p, ptr %pout, i32 %i) {295; GFX90A-SDAG-LABEL: flat_offset_inbounds_wide:296; GFX90A-SDAG:       ; %bb.0:297; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)298; GFX90A-SDAG-NEXT:    v_ashrrev_i32_e32 v5, 31, v4299; GFX90A-SDAG-NEXT:    v_lshlrev_b64 v[4:5], 2, v[4:5]300; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v4301; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v5, vcc302; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v4, vcc, 28, v0303; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v5, vcc, 0, v1, vcc304; GFX90A-SDAG-NEXT:    flat_load_dword v10, v[4:5]305; GFX90A-SDAG-NEXT:    flat_load_dwordx4 v[6:9], v[0:1] offset:12306; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)307; GFX90A-SDAG-NEXT:    flat_store_dword v[2:3], v10 offset:16308; GFX90A-SDAG-NEXT:    flat_store_dwordx4 v[2:3], v[6:9]309; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)310; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]311;312; GFX10-SDAG-LABEL: flat_offset_inbounds_wide:313; GFX10-SDAG:       ; %bb.0:314; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)315; GFX10-SDAG-NEXT:    v_ashrrev_i32_e32 v5, 31, v4316; GFX10-SDAG-NEXT:    v_lshlrev_b64 v[4:5], 2, v[4:5]317; GFX10-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v4318; GFX10-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v5, vcc_lo319; GFX10-SDAG-NEXT:    v_add_co_u32 v4, vcc_lo, v0, 28320; GFX10-SDAG-NEXT:    v_add_co_ci_u32_e64 v5, null, 0, v1, vcc_lo321; GFX10-SDAG-NEXT:    s_clause 0x1322; GFX10-SDAG-NEXT:    flat_load_dword v8, v[4:5]323; GFX10-SDAG-NEXT:    flat_load_dwordx4 v[4:7], v[0:1] offset:12324; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(1) lgkmcnt(1)325; GFX10-SDAG-NEXT:    flat_store_dword v[2:3], v8 offset:16326; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(1)327; GFX10-SDAG-NEXT:    flat_store_dwordx4 v[2:3], v[4:7]328; GFX10-SDAG-NEXT:    s_waitcnt lgkmcnt(0)329; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]330;331; GFX942-SDAG-LABEL: flat_offset_inbounds_wide:332; GFX942-SDAG:       ; %bb.0:333; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)334; GFX942-SDAG-NEXT:    v_ashrrev_i32_e32 v5, 31, v4335; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[4:5], 2, v[0:1]336; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, 28337; GFX942-SDAG-NEXT:    flat_load_dword v10, v[4:5]338; GFX942-SDAG-NEXT:    flat_load_dwordx4 v[6:9], v[0:1] offset:12339; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)340; GFX942-SDAG-NEXT:    flat_store_dword v[2:3], v10 offset:16341; GFX942-SDAG-NEXT:    flat_store_dwordx4 v[2:3], v[6:9]342; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)343; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]344;345; GFX11-SDAG-LABEL: flat_offset_inbounds_wide:346; GFX11-SDAG:       ; %bb.0:347; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)348; GFX11-SDAG-NEXT:    v_ashrrev_i32_e32 v5, 31, v4349; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)350; GFX11-SDAG-NEXT:    v_lshlrev_b64 v[4:5], 2, v[4:5]351; GFX11-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v4352; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)353; GFX11-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v5, vcc_lo354; GFX11-SDAG-NEXT:    v_add_co_u32 v4, vcc_lo, v0, 28355; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)356; GFX11-SDAG-NEXT:    v_add_co_ci_u32_e64 v5, null, 0, v1, vcc_lo357; GFX11-SDAG-NEXT:    s_clause 0x1358; GFX11-SDAG-NEXT:    flat_load_b32 v8, v[4:5]359; GFX11-SDAG-NEXT:    flat_load_b128 v[4:7], v[0:1] offset:12360; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(1) lgkmcnt(1)361; GFX11-SDAG-NEXT:    flat_store_b32 v[2:3], v8 offset:16362; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(1)363; GFX11-SDAG-NEXT:    flat_store_b128 v[2:3], v[4:7]364; GFX11-SDAG-NEXT:    s_waitcnt lgkmcnt(0)365; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31]366;367; GFX12-SDAG-LABEL: flat_offset_inbounds_wide:368; GFX12-SDAG:       ; %bb.0:369; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0370; GFX12-SDAG-NEXT:    s_wait_expcnt 0x0371; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x0372; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x0373; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0374; GFX12-SDAG-NEXT:    v_ashrrev_i32_e32 v5, 31, v4375; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)376; GFX12-SDAG-NEXT:    v_lshlrev_b64_e32 v[4:5], 2, v[4:5]377; GFX12-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v4378; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)379; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)380; GFX12-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v5, vcc_lo381; GFX12-SDAG-NEXT:    v_add_co_u32 v4, vcc_lo, v0, 28382; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)383; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2)384; GFX12-SDAG-NEXT:    v_add_co_ci_u32_e64 v5, null, 0, v1, vcc_lo385; GFX12-SDAG-NEXT:    s_clause 0x1386; GFX12-SDAG-NEXT:    flat_load_b32 v8, v[4:5]387; GFX12-SDAG-NEXT:    flat_load_b128 v[4:7], v[0:1] offset:12388; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x101389; GFX12-SDAG-NEXT:    flat_store_b32 v[2:3], v8 offset:16390; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x1391; GFX12-SDAG-NEXT:    flat_store_b128 v[2:3], v[4:7]392; GFX12-SDAG-NEXT:    s_wait_dscnt 0x0393; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31]394;395; GFX90A-GISEL-LABEL: flat_offset_inbounds_wide:396; GFX90A-GISEL:       ; %bb.0:397; GFX90A-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)398; GFX90A-GISEL-NEXT:    v_ashrrev_i32_e32 v5, 31, v4399; GFX90A-GISEL-NEXT:    v_lshlrev_b64 v[4:5], 2, v[4:5]400; GFX90A-GISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v4401; GFX90A-GISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v5, vcc402; GFX90A-GISEL-NEXT:    flat_load_dwordx4 v[4:7], v[0:1] offset:12403; GFX90A-GISEL-NEXT:    flat_load_dword v8, v[0:1] offset:28404; GFX90A-GISEL-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)405; GFX90A-GISEL-NEXT:    flat_store_dwordx4 v[2:3], v[4:7]406; GFX90A-GISEL-NEXT:    flat_store_dword v[2:3], v8 offset:16407; GFX90A-GISEL-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)408; GFX90A-GISEL-NEXT:    s_setpc_b64 s[30:31]409;410; GFX10-GISEL-LABEL: flat_offset_inbounds_wide:411; GFX10-GISEL:       ; %bb.0:412; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)413; GFX10-GISEL-NEXT:    v_ashrrev_i32_e32 v5, 31, v4414; GFX10-GISEL-NEXT:    v_lshlrev_b64 v[4:5], 2, v[4:5]415; GFX10-GISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v4416; GFX10-GISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v5, vcc_lo417; GFX10-GISEL-NEXT:    s_clause 0x1418; GFX10-GISEL-NEXT:    flat_load_dwordx4 v[4:7], v[0:1] offset:12419; GFX10-GISEL-NEXT:    flat_load_dword v0, v[0:1] offset:28420; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(1) lgkmcnt(1)421; GFX10-GISEL-NEXT:    flat_store_dwordx4 v[2:3], v[4:7]422; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(1)423; GFX10-GISEL-NEXT:    flat_store_dword v[2:3], v0 offset:16424; GFX10-GISEL-NEXT:    s_waitcnt lgkmcnt(0)425; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]426;427; GFX942-GISEL-LABEL: flat_offset_inbounds_wide:428; GFX942-GISEL:       ; %bb.0:429; GFX942-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)430; GFX942-GISEL-NEXT:    v_ashrrev_i32_e32 v5, 31, v4431; GFX942-GISEL-NEXT:    v_lshl_add_u64 v[0:1], v[4:5], 2, v[0:1]432; GFX942-GISEL-NEXT:    flat_load_dwordx4 v[4:7], v[0:1] offset:12433; GFX942-GISEL-NEXT:    flat_load_dword v8, v[0:1] offset:28434; GFX942-GISEL-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)435; GFX942-GISEL-NEXT:    flat_store_dwordx4 v[2:3], v[4:7]436; GFX942-GISEL-NEXT:    flat_store_dword v[2:3], v8 offset:16437; GFX942-GISEL-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)438; GFX942-GISEL-NEXT:    s_setpc_b64 s[30:31]439;440; GFX11-GISEL-LABEL: flat_offset_inbounds_wide:441; GFX11-GISEL:       ; %bb.0:442; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)443; GFX11-GISEL-NEXT:    v_ashrrev_i32_e32 v5, 31, v4444; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)445; GFX11-GISEL-NEXT:    v_lshlrev_b64 v[4:5], 2, v[4:5]446; GFX11-GISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v4447; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)448; GFX11-GISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v5, vcc_lo449; GFX11-GISEL-NEXT:    s_clause 0x1450; GFX11-GISEL-NEXT:    flat_load_b128 v[4:7], v[0:1] offset:12451; GFX11-GISEL-NEXT:    flat_load_b32 v0, v[0:1] offset:28452; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(1) lgkmcnt(1)453; GFX11-GISEL-NEXT:    flat_store_b128 v[2:3], v[4:7]454; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(1)455; GFX11-GISEL-NEXT:    flat_store_b32 v[2:3], v0 offset:16456; GFX11-GISEL-NEXT:    s_waitcnt lgkmcnt(0)457; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]458;459; GFX12-GISEL-LABEL: flat_offset_inbounds_wide:460; GFX12-GISEL:       ; %bb.0:461; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0462; GFX12-GISEL-NEXT:    s_wait_expcnt 0x0463; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x0464; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x0465; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0466; GFX12-GISEL-NEXT:    v_ashrrev_i32_e32 v5, 31, v4467; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)468; GFX12-GISEL-NEXT:    v_lshlrev_b64_e32 v[4:5], 2, v[4:5]469; GFX12-GISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v4470; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_vcc(0)471; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2)472; GFX12-GISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v5, vcc_lo473; GFX12-GISEL-NEXT:    s_clause 0x1474; GFX12-GISEL-NEXT:    flat_load_b128 v[4:7], v[0:1] offset:12475; GFX12-GISEL-NEXT:    flat_load_b32 v0, v[0:1] offset:28476; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x101477; GFX12-GISEL-NEXT:    flat_store_b128 v[2:3], v[4:7]478; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x1479; GFX12-GISEL-NEXT:    flat_store_b32 v[2:3], v0 offset:16480; GFX12-GISEL-NEXT:    s_wait_dscnt 0x0481; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]482  %p.1 = getelementptr inbounds i32, ptr %p, i32 %i483  %arrayidx = getelementptr inbounds i32, ptr %p.1, i32 3484  %l = load <5 x i32>, ptr %arrayidx485  store <5 x i32> %l, ptr %pout486  ret void487}488 489define void @flat_offset_inbounds_very_wide(ptr %p, ptr %pout, i32 %i) {490; GFX90A-SDAG-MUBUF-LABEL: flat_offset_inbounds_very_wide:491; GFX90A-SDAG-MUBUF:       ; %bb.0:492; GFX90A-SDAG-MUBUF-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)493; GFX90A-SDAG-MUBUF-NEXT:    v_ashrrev_i32_e32 v5, 31, v4494; GFX90A-SDAG-MUBUF-NEXT:    v_lshlrev_b64 v[4:5], 2, v[4:5]495; GFX90A-SDAG-MUBUF-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v4496; GFX90A-SDAG-MUBUF-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v5, vcc497; GFX90A-SDAG-MUBUF-NEXT:    v_add_co_u32_e64 v6, s[4:5], 28, v0498; GFX90A-SDAG-MUBUF-NEXT:    v_addc_co_u32_e64 v7, s[4:5], 0, v1, s[4:5]499; GFX90A-SDAG-MUBUF-NEXT:    v_add_co_u32_e64 v8, s[4:5], 44, v0500; GFX90A-SDAG-MUBUF-NEXT:    v_add_co_u32_e32 v4, vcc, 0x8c, v0501; GFX90A-SDAG-MUBUF-NEXT:    v_addc_co_u32_e64 v9, s[4:5], 0, v1, s[4:5]502; GFX90A-SDAG-MUBUF-NEXT:    flat_load_dwordx4 v[10:13], v[8:9] offset:16503; GFX90A-SDAG-MUBUF-NEXT:    flat_load_dwordx4 v[14:17], v[8:9] offset:32504; GFX90A-SDAG-MUBUF-NEXT:    flat_load_dwordx4 v[18:21], v[8:9] offset:48505; GFX90A-SDAG-MUBUF-NEXT:    flat_load_dwordx4 v[22:25], v[8:9] offset:64506; GFX90A-SDAG-MUBUF-NEXT:    flat_load_dwordx4 v[26:29], v[8:9] offset:80507; GFX90A-SDAG-MUBUF-NEXT:    flat_load_dwordx4 v[30:33], v[6:7]508; GFX90A-SDAG-MUBUF-NEXT:    s_nop 0509; GFX90A-SDAG-MUBUF-NEXT:    flat_load_dwordx4 v[6:9], v[8:9]510; GFX90A-SDAG-MUBUF-NEXT:    v_addc_co_u32_e32 v5, vcc, 0, v1, vcc511; GFX90A-SDAG-MUBUF-NEXT:    flat_load_dwordx4 v[34:37], v[0:1] offset:12512; GFX90A-SDAG-MUBUF-NEXT:    flat_load_dwordx4 v[48:51], v[4:5]513; GFX90A-SDAG-MUBUF-NEXT:    v_add_co_u32_e32 v0, vcc, 48, v2514; GFX90A-SDAG-MUBUF-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v3, vcc515; GFX90A-SDAG-MUBUF-NEXT:    v_add_co_u32_e32 v4, vcc, 0x88, v2516; GFX90A-SDAG-MUBUF-NEXT:    v_addc_co_u32_e32 v5, vcc, 0, v3, vcc517; GFX90A-SDAG-MUBUF-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)518; GFX90A-SDAG-MUBUF-NEXT:    flat_store_dwordx4 v[0:1], v[22:25] offset:48519; GFX90A-SDAG-MUBUF-NEXT:    flat_store_dwordx4 v[0:1], v[26:29] offset:64520; GFX90A-SDAG-MUBUF-NEXT:    flat_store_dwordx4 v[2:3], v[14:17] offset:64521; GFX90A-SDAG-MUBUF-NEXT:    flat_store_dwordx4 v[0:1], v[18:21] offset:32522; GFX90A-SDAG-MUBUF-NEXT:    flat_store_dwordx4 v[2:3], v[6:9] offset:32523; GFX90A-SDAG-MUBUF-NEXT:    flat_store_dwordx4 v[0:1], v[10:13]524; GFX90A-SDAG-MUBUF-NEXT:    flat_store_dwordx4 v[2:3], v[30:33] offset:16525; GFX90A-SDAG-MUBUF-NEXT:    flat_store_dwordx4 v[2:3], v[34:37]526; GFX90A-SDAG-MUBUF-NEXT:    flat_store_dword v[4:5], v50527; GFX90A-SDAG-MUBUF-NEXT:    flat_store_dwordx2 v[2:3], v[48:49] offset:128528; GFX90A-SDAG-MUBUF-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)529; GFX90A-SDAG-MUBUF-NEXT:    s_setpc_b64 s[30:31]530;531; GFX90A-SDAG-FLATSCR-LABEL: flat_offset_inbounds_very_wide:532; GFX90A-SDAG-FLATSCR:       ; %bb.0:533; GFX90A-SDAG-FLATSCR-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)534; GFX90A-SDAG-FLATSCR-NEXT:    v_ashrrev_i32_e32 v5, 31, v4535; GFX90A-SDAG-FLATSCR-NEXT:    v_lshlrev_b64 v[4:5], 2, v[4:5]536; GFX90A-SDAG-FLATSCR-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v4537; GFX90A-SDAG-FLATSCR-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v5, vcc538; GFX90A-SDAG-FLATSCR-NEXT:    v_add_co_u32_e64 v6, s[0:1], 28, v0539; GFX90A-SDAG-FLATSCR-NEXT:    v_addc_co_u32_e64 v7, s[0:1], 0, v1, s[0:1]540; GFX90A-SDAG-FLATSCR-NEXT:    v_add_co_u32_e64 v8, s[0:1], 44, v0541; GFX90A-SDAG-FLATSCR-NEXT:    v_add_co_u32_e32 v4, vcc, 0x8c, v0542; GFX90A-SDAG-FLATSCR-NEXT:    v_addc_co_u32_e64 v9, s[0:1], 0, v1, s[0:1]543; GFX90A-SDAG-FLATSCR-NEXT:    flat_load_dwordx4 v[10:13], v[8:9] offset:16544; GFX90A-SDAG-FLATSCR-NEXT:    flat_load_dwordx4 v[14:17], v[8:9] offset:32545; GFX90A-SDAG-FLATSCR-NEXT:    flat_load_dwordx4 v[18:21], v[8:9] offset:48546; GFX90A-SDAG-FLATSCR-NEXT:    flat_load_dwordx4 v[22:25], v[8:9] offset:64547; GFX90A-SDAG-FLATSCR-NEXT:    flat_load_dwordx4 v[26:29], v[8:9] offset:80548; GFX90A-SDAG-FLATSCR-NEXT:    flat_load_dwordx4 v[30:33], v[6:7]549; GFX90A-SDAG-FLATSCR-NEXT:    s_nop 0550; GFX90A-SDAG-FLATSCR-NEXT:    flat_load_dwordx4 v[6:9], v[8:9]551; GFX90A-SDAG-FLATSCR-NEXT:    v_addc_co_u32_e32 v5, vcc, 0, v1, vcc552; GFX90A-SDAG-FLATSCR-NEXT:    flat_load_dwordx4 v[34:37], v[0:1] offset:12553; GFX90A-SDAG-FLATSCR-NEXT:    flat_load_dwordx4 v[48:51], v[4:5]554; GFX90A-SDAG-FLATSCR-NEXT:    v_add_co_u32_e32 v0, vcc, 48, v2555; GFX90A-SDAG-FLATSCR-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v3, vcc556; GFX90A-SDAG-FLATSCR-NEXT:    v_add_co_u32_e32 v4, vcc, 0x88, v2557; GFX90A-SDAG-FLATSCR-NEXT:    v_addc_co_u32_e32 v5, vcc, 0, v3, vcc558; GFX90A-SDAG-FLATSCR-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)559; GFX90A-SDAG-FLATSCR-NEXT:    flat_store_dwordx4 v[0:1], v[22:25] offset:48560; GFX90A-SDAG-FLATSCR-NEXT:    flat_store_dwordx4 v[0:1], v[26:29] offset:64561; GFX90A-SDAG-FLATSCR-NEXT:    flat_store_dwordx4 v[2:3], v[14:17] offset:64562; GFX90A-SDAG-FLATSCR-NEXT:    flat_store_dwordx4 v[0:1], v[18:21] offset:32563; GFX90A-SDAG-FLATSCR-NEXT:    flat_store_dwordx4 v[2:3], v[6:9] offset:32564; GFX90A-SDAG-FLATSCR-NEXT:    flat_store_dwordx4 v[0:1], v[10:13]565; GFX90A-SDAG-FLATSCR-NEXT:    flat_store_dwordx4 v[2:3], v[30:33] offset:16566; GFX90A-SDAG-FLATSCR-NEXT:    flat_store_dwordx4 v[2:3], v[34:37]567; GFX90A-SDAG-FLATSCR-NEXT:    flat_store_dword v[4:5], v50568; GFX90A-SDAG-FLATSCR-NEXT:    flat_store_dwordx2 v[2:3], v[48:49] offset:128569; GFX90A-SDAG-FLATSCR-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)570; GFX90A-SDAG-FLATSCR-NEXT:    s_setpc_b64 s[30:31]571;572; GFX10-SDAG-LABEL: flat_offset_inbounds_very_wide:573; GFX10-SDAG:       ; %bb.0:574; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)575; GFX10-SDAG-NEXT:    v_ashrrev_i32_e32 v5, 31, v4576; GFX10-SDAG-NEXT:    v_lshlrev_b64 v[4:5], 2, v[4:5]577; GFX10-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v4578; GFX10-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v5, vcc_lo579; GFX10-SDAG-NEXT:    v_add_co_u32 v36, vcc_lo, v0, 28580; GFX10-SDAG-NEXT:    v_add_co_ci_u32_e64 v37, null, 0, v1, vcc_lo581; GFX10-SDAG-NEXT:    s_clause 0x8582; GFX10-SDAG-NEXT:    flat_load_dwordx4 v[4:7], v[36:37] offset:80583; GFX10-SDAG-NEXT:    flat_load_dwordx4 v[8:11], v[36:37] offset:96584; GFX10-SDAG-NEXT:    flat_load_dwordx4 v[12:15], v[36:37] offset:48585; GFX10-SDAG-NEXT:    flat_load_dwordx4 v[16:19], v[36:37] offset:64586; GFX10-SDAG-NEXT:    flat_load_dwordx4 v[20:23], v[36:37] offset:16587; GFX10-SDAG-NEXT:    flat_load_dwordx4 v[24:27], v[36:37] offset:32588; GFX10-SDAG-NEXT:    flat_load_dwordx4 v[28:31], v[0:1] offset:12589; GFX10-SDAG-NEXT:    flat_load_dwordx4 v[32:35], v[36:37]590; GFX10-SDAG-NEXT:    flat_load_dwordx4 v[36:39], v[36:37] offset:112591; GFX10-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v2, 48592; GFX10-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v3, vcc_lo593; GFX10-SDAG-NEXT:    v_add_co_u32 v48, vcc_lo, 0x88, v2594; GFX10-SDAG-NEXT:    v_add_co_ci_u32_e64 v49, null, 0, v3, vcc_lo595; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(8) lgkmcnt(8)596; GFX10-SDAG-NEXT:    flat_store_dwordx4 v[0:1], v[4:7] offset:48597; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(7) lgkmcnt(8)598; GFX10-SDAG-NEXT:    flat_store_dwordx4 v[0:1], v[8:11] offset:64599; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(6) lgkmcnt(8)600; GFX10-SDAG-NEXT:    flat_store_dwordx4 v[2:3], v[12:15] offset:64601; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(5) lgkmcnt(8)602; GFX10-SDAG-NEXT:    flat_store_dwordx4 v[0:1], v[16:19] offset:32603; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(4) lgkmcnt(8)604; GFX10-SDAG-NEXT:    flat_store_dwordx4 v[2:3], v[20:23] offset:32605; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(3) lgkmcnt(8)606; GFX10-SDAG-NEXT:    flat_store_dwordx4 v[0:1], v[24:27]607; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(2) lgkmcnt(8)608; GFX10-SDAG-NEXT:    flat_store_dwordx4 v[2:3], v[28:31]609; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(1) lgkmcnt(8)610; GFX10-SDAG-NEXT:    flat_store_dwordx4 v[2:3], v[32:35] offset:16611; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(8)612; GFX10-SDAG-NEXT:    flat_store_dword v[48:49], v38613; GFX10-SDAG-NEXT:    flat_store_dwordx2 v[2:3], v[36:37] offset:128614; GFX10-SDAG-NEXT:    s_waitcnt lgkmcnt(0)615; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31]616;617; GFX942-SDAG-LABEL: flat_offset_inbounds_very_wide:618; GFX942-SDAG:       ; %bb.0:619; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)620; GFX942-SDAG-NEXT:    v_ashrrev_i32_e32 v5, 31, v4621; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[4:5], 2, v[0:1]622; GFX942-SDAG-NEXT:    s_mov_b64 s[2:3], 0x5c623; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[10:11], v[0:1], 0, s[2:3]624; GFX942-SDAG-NEXT:    s_mov_b64 s[2:3], 0x4c625; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[12:13], v[0:1], 0, s[2:3]626; GFX942-SDAG-NEXT:    s_mov_b64 s[2:3], 0x7c627; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[14:15], v[0:1], 0, s[2:3]628; GFX942-SDAG-NEXT:    s_mov_b64 s[2:3], 0x6c629; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[16:17], v[0:1], 0, s[2:3]630; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, 28631; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[6:7], v[0:1], 0, 60632; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[8:9], v[0:1], 0, 44633; GFX942-SDAG-NEXT:    flat_load_dwordx4 v[18:21], v[16:17]634; GFX942-SDAG-NEXT:    flat_load_dwordx4 v[22:25], v[12:13]635; GFX942-SDAG-NEXT:    flat_load_dwordx4 v[26:29], v[14:15]636; GFX942-SDAG-NEXT:    ; kill: killed $vgpr12_vgpr13637; GFX942-SDAG-NEXT:    ; kill: killed $vgpr14_vgpr15638; GFX942-SDAG-NEXT:    ; kill: killed $vgpr16_vgpr17639; GFX942-SDAG-NEXT:    s_nop 0640; GFX942-SDAG-NEXT:    flat_load_dwordx4 v[12:15], v[8:9]641; GFX942-SDAG-NEXT:    flat_load_dwordx4 v[30:33], v[10:11]642; GFX942-SDAG-NEXT:    flat_load_dwordx4 v[34:37], v[4:5]643; GFX942-SDAG-NEXT:    flat_load_dwordx4 v[48:51], v[6:7]644; GFX942-SDAG-NEXT:    flat_load_dwordx4 v[52:55], v[0:1] offset:12645; GFX942-SDAG-NEXT:    s_mov_b64 s[0:1], 0x8c646; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, s[0:1]647; GFX942-SDAG-NEXT:    flat_load_dwordx4 a[0:3], v[0:1]648; GFX942-SDAG-NEXT:    s_mov_b64 s[0:1], 0x60649; GFX942-SDAG-NEXT:    s_mov_b64 s[2:3], 0x70650; GFX942-SDAG-NEXT:    s_mov_b64 s[4:5], 0x50651; GFX942-SDAG-NEXT:    s_mov_b64 s[6:7], 0x88652; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 0, s[0:1]653; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[4:5], v[2:3], 0, s[2:3]654; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[6:7], v[2:3], 0, s[4:5]655; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[8:9], v[2:3], 0, 48656; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[10:11], v[2:3], 0, s[6:7]657; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)658; GFX942-SDAG-NEXT:    flat_store_dwordx4 v[0:1], v[18:21]659; GFX942-SDAG-NEXT:    flat_store_dwordx4 v[4:5], v[26:29]660; GFX942-SDAG-NEXT:    flat_store_dwordx4 v[2:3], v[22:25] offset:64661; GFX942-SDAG-NEXT:    flat_store_dwordx4 v[6:7], v[30:33]662; GFX942-SDAG-NEXT:    flat_store_dwordx4 v[2:3], v[12:15] offset:32663; GFX942-SDAG-NEXT:    flat_store_dwordx4 v[8:9], v[48:51]664; GFX942-SDAG-NEXT:    flat_store_dwordx4 v[2:3], v[52:55]665; GFX942-SDAG-NEXT:    flat_store_dwordx4 v[2:3], v[34:37] offset:16666; GFX942-SDAG-NEXT:    flat_store_dword v[10:11], a2667; GFX942-SDAG-NEXT:    flat_store_dwordx2 v[2:3], a[0:1] offset:128668; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)669; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]670;671; GFX11-SDAG-LABEL: flat_offset_inbounds_very_wide:672; GFX11-SDAG:       ; %bb.0:673; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)674; GFX11-SDAG-NEXT:    v_ashrrev_i32_e32 v5, 31, v4675; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)676; GFX11-SDAG-NEXT:    v_lshlrev_b64 v[4:5], 2, v[4:5]677; GFX11-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v4678; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)679; GFX11-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v5, vcc_lo680; GFX11-SDAG-NEXT:    v_add_co_u32 v36, vcc_lo, v0, 28681; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)682; GFX11-SDAG-NEXT:    v_add_co_ci_u32_e64 v37, null, 0, v1, vcc_lo683; GFX11-SDAG-NEXT:    s_clause 0x7684; GFX11-SDAG-NEXT:    flat_load_b128 v[4:7], v[36:37] offset:80685; GFX11-SDAG-NEXT:    flat_load_b128 v[8:11], v[36:37] offset:96686; GFX11-SDAG-NEXT:    flat_load_b128 v[12:15], v[36:37] offset:64687; GFX11-SDAG-NEXT:    flat_load_b128 v[16:19], v[36:37] offset:32688; GFX11-SDAG-NEXT:    flat_load_b128 v[20:23], v[36:37] offset:16689; GFX11-SDAG-NEXT:    flat_load_b128 v[24:27], v[36:37]690; GFX11-SDAG-NEXT:    flat_load_b128 v[28:31], v[0:1] offset:12691; GFX11-SDAG-NEXT:    flat_load_b128 v[32:35], v[36:37] offset:112692; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)693; GFX11-SDAG-NEXT:    flat_load_b128 v[35:38], v[36:37] offset:48694; GFX11-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v2, 48695; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)696; GFX11-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v3, vcc_lo697; GFX11-SDAG-NEXT:    v_add_co_u32 v48, vcc_lo, 0x88, v2698; GFX11-SDAG-NEXT:    v_add_co_ci_u32_e64 v49, null, 0, v3, vcc_lo699; GFX11-SDAG-NEXT:    s_clause 0x7700; GFX11-SDAG-NEXT:    flat_store_b128 v[0:1], v[4:7] offset:48701; GFX11-SDAG-NEXT:    flat_store_b128 v[0:1], v[8:11] offset:64702; GFX11-SDAG-NEXT:    flat_store_b128 v[0:1], v[12:15] offset:32703; GFX11-SDAG-NEXT:    flat_store_b128 v[0:1], v[16:19]704; GFX11-SDAG-NEXT:    flat_store_b128 v[2:3], v[20:23] offset:32705; GFX11-SDAG-NEXT:    flat_store_b128 v[2:3], v[24:27] offset:16706; GFX11-SDAG-NEXT:    flat_store_b128 v[2:3], v[28:31]707; GFX11-SDAG-NEXT:    flat_store_b32 v[48:49], v34708; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(8)709; GFX11-SDAG-NEXT:    s_clause 0x1710; GFX11-SDAG-NEXT:    flat_store_b128 v[2:3], v[35:38] offset:64711; GFX11-SDAG-NEXT:    flat_store_b64 v[2:3], v[32:33] offset:128712; GFX11-SDAG-NEXT:    s_waitcnt lgkmcnt(0)713; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31]714;715; GFX12-SDAG-LABEL: flat_offset_inbounds_very_wide:716; GFX12-SDAG:       ; %bb.0:717; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0718; GFX12-SDAG-NEXT:    s_wait_expcnt 0x0719; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x0720; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x0721; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0722; GFX12-SDAG-NEXT:    v_ashrrev_i32_e32 v5, 31, v4723; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)724; GFX12-SDAG-NEXT:    v_lshlrev_b64_e32 v[4:5], 2, v[4:5]725; GFX12-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v4726; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)727; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)728; GFX12-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v5, vcc_lo729; GFX12-SDAG-NEXT:    v_add_co_u32 v36, vcc_lo, v0, 28730; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)731; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2)732; GFX12-SDAG-NEXT:    v_add_co_ci_u32_e64 v37, null, 0, v1, vcc_lo733; GFX12-SDAG-NEXT:    s_clause 0x7734; GFX12-SDAG-NEXT:    flat_load_b128 v[4:7], v[36:37] offset:80735; GFX12-SDAG-NEXT:    flat_load_b128 v[8:11], v[36:37] offset:96736; GFX12-SDAG-NEXT:    flat_load_b128 v[12:15], v[36:37] offset:64737; GFX12-SDAG-NEXT:    flat_load_b128 v[16:19], v[36:37] offset:32738; GFX12-SDAG-NEXT:    flat_load_b128 v[20:23], v[36:37] offset:16739; GFX12-SDAG-NEXT:    flat_load_b128 v[24:27], v[36:37]740; GFX12-SDAG-NEXT:    flat_load_b128 v[28:31], v[0:1] offset:12741; GFX12-SDAG-NEXT:    flat_load_b128 v[32:35], v[36:37] offset:112742; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0743; GFX12-SDAG-NEXT:    flat_load_b128 v[35:38], v[36:37] offset:48744; GFX12-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v2, 48745; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)746; GFX12-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v3, vcc_lo747; GFX12-SDAG-NEXT:    v_add_co_u32 v48, vcc_lo, 0x88, v2748; GFX12-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)749; GFX12-SDAG-NEXT:    v_add_co_ci_u32_e64 v49, null, 0, v3, vcc_lo750; GFX12-SDAG-NEXT:    s_clause 0x7751; GFX12-SDAG-NEXT:    flat_store_b128 v[0:1], v[4:7] offset:48752; GFX12-SDAG-NEXT:    flat_store_b128 v[0:1], v[8:11] offset:64753; GFX12-SDAG-NEXT:    flat_store_b128 v[0:1], v[12:15] offset:32754; GFX12-SDAG-NEXT:    flat_store_b128 v[0:1], v[16:19]755; GFX12-SDAG-NEXT:    flat_store_b128 v[2:3], v[20:23] offset:32756; GFX12-SDAG-NEXT:    flat_store_b128 v[2:3], v[24:27] offset:16757; GFX12-SDAG-NEXT:    flat_store_b128 v[2:3], v[28:31]758; GFX12-SDAG-NEXT:    flat_store_b32 v[48:49], v34759; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x8760; GFX12-SDAG-NEXT:    s_clause 0x1761; GFX12-SDAG-NEXT:    flat_store_b128 v[2:3], v[35:38] offset:64762; GFX12-SDAG-NEXT:    flat_store_b64 v[2:3], v[32:33] offset:128763; GFX12-SDAG-NEXT:    s_wait_dscnt 0x0764; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31]765;766; GFX90A-GISEL-LABEL: flat_offset_inbounds_very_wide:767; GFX90A-GISEL:       ; %bb.0:768; GFX90A-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)769; GFX90A-GISEL-NEXT:    v_ashrrev_i32_e32 v5, 31, v4770; GFX90A-GISEL-NEXT:    v_lshlrev_b64 v[4:5], 2, v[4:5]771; GFX90A-GISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v4772; GFX90A-GISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v5, vcc773; GFX90A-GISEL-NEXT:    flat_load_dwordx4 v[4:7], v[0:1] offset:12774; GFX90A-GISEL-NEXT:    flat_load_dwordx4 v[8:11], v[0:1] offset:28775; GFX90A-GISEL-NEXT:    flat_load_dwordx4 v[12:15], v[0:1] offset:44776; GFX90A-GISEL-NEXT:    flat_load_dwordx4 v[16:19], v[0:1] offset:60777; GFX90A-GISEL-NEXT:    flat_load_dwordx4 v[20:23], v[0:1] offset:76778; GFX90A-GISEL-NEXT:    flat_load_dwordx4 v[24:27], v[0:1] offset:92779; GFX90A-GISEL-NEXT:    flat_load_dwordx4 v[28:31], v[0:1] offset:108780; GFX90A-GISEL-NEXT:    flat_load_dwordx4 v[32:35], v[0:1] offset:124781; GFX90A-GISEL-NEXT:    flat_load_dwordx3 v[36:38], v[0:1] offset:140782; GFX90A-GISEL-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)783; GFX90A-GISEL-NEXT:    flat_store_dwordx4 v[2:3], v[4:7]784; GFX90A-GISEL-NEXT:    flat_store_dwordx4 v[2:3], v[8:11] offset:16785; GFX90A-GISEL-NEXT:    flat_store_dwordx4 v[2:3], v[12:15] offset:32786; GFX90A-GISEL-NEXT:    flat_store_dwordx4 v[2:3], v[16:19] offset:48787; GFX90A-GISEL-NEXT:    flat_store_dwordx4 v[2:3], v[20:23] offset:64788; GFX90A-GISEL-NEXT:    flat_store_dwordx4 v[2:3], v[24:27] offset:80789; GFX90A-GISEL-NEXT:    flat_store_dwordx4 v[2:3], v[28:31] offset:96790; GFX90A-GISEL-NEXT:    flat_store_dwordx4 v[2:3], v[32:35] offset:112791; GFX90A-GISEL-NEXT:    flat_store_dwordx3 v[2:3], v[36:38] offset:128792; GFX90A-GISEL-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)793; GFX90A-GISEL-NEXT:    s_setpc_b64 s[30:31]794;795; GFX10-GISEL-LABEL: flat_offset_inbounds_very_wide:796; GFX10-GISEL:       ; %bb.0:797; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)798; GFX10-GISEL-NEXT:    v_ashrrev_i32_e32 v5, 31, v4799; GFX10-GISEL-NEXT:    v_lshlrev_b64 v[4:5], 2, v[4:5]800; GFX10-GISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v4801; GFX10-GISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v5, vcc_lo802; GFX10-GISEL-NEXT:    s_clause 0x8803; GFX10-GISEL-NEXT:    flat_load_dwordx4 v[4:7], v[0:1] offset:12804; GFX10-GISEL-NEXT:    flat_load_dwordx4 v[8:11], v[0:1] offset:28805; GFX10-GISEL-NEXT:    flat_load_dwordx4 v[12:15], v[0:1] offset:44806; GFX10-GISEL-NEXT:    flat_load_dwordx4 v[16:19], v[0:1] offset:60807; GFX10-GISEL-NEXT:    flat_load_dwordx4 v[20:23], v[0:1] offset:76808; GFX10-GISEL-NEXT:    flat_load_dwordx4 v[24:27], v[0:1] offset:92809; GFX10-GISEL-NEXT:    flat_load_dwordx4 v[28:31], v[0:1] offset:108810; GFX10-GISEL-NEXT:    flat_load_dwordx4 v[32:35], v[0:1] offset:124811; GFX10-GISEL-NEXT:    flat_load_dwordx3 v[36:38], v[0:1] offset:140812; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(8) lgkmcnt(8)813; GFX10-GISEL-NEXT:    flat_store_dwordx4 v[2:3], v[4:7]814; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(7) lgkmcnt(8)815; GFX10-GISEL-NEXT:    flat_store_dwordx4 v[2:3], v[8:11] offset:16816; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(6) lgkmcnt(8)817; GFX10-GISEL-NEXT:    flat_store_dwordx4 v[2:3], v[12:15] offset:32818; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(5) lgkmcnt(8)819; GFX10-GISEL-NEXT:    flat_store_dwordx4 v[2:3], v[16:19] offset:48820; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(4) lgkmcnt(8)821; GFX10-GISEL-NEXT:    flat_store_dwordx4 v[2:3], v[20:23] offset:64822; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(3) lgkmcnt(8)823; GFX10-GISEL-NEXT:    flat_store_dwordx4 v[2:3], v[24:27] offset:80824; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(2) lgkmcnt(8)825; GFX10-GISEL-NEXT:    flat_store_dwordx4 v[2:3], v[28:31] offset:96826; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(1) lgkmcnt(8)827; GFX10-GISEL-NEXT:    flat_store_dwordx4 v[2:3], v[32:35] offset:112828; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(8)829; GFX10-GISEL-NEXT:    flat_store_dwordx3 v[2:3], v[36:38] offset:128830; GFX10-GISEL-NEXT:    s_waitcnt lgkmcnt(0)831; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31]832;833; GFX942-GISEL-LABEL: flat_offset_inbounds_very_wide:834; GFX942-GISEL:       ; %bb.0:835; GFX942-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)836; GFX942-GISEL-NEXT:    v_ashrrev_i32_e32 v5, 31, v4837; GFX942-GISEL-NEXT:    v_lshl_add_u64 v[0:1], v[4:5], 2, v[0:1]838; GFX942-GISEL-NEXT:    flat_load_dwordx4 v[4:7], v[0:1] offset:12839; GFX942-GISEL-NEXT:    flat_load_dwordx4 v[8:11], v[0:1] offset:28840; GFX942-GISEL-NEXT:    flat_load_dwordx4 v[12:15], v[0:1] offset:44841; GFX942-GISEL-NEXT:    flat_load_dwordx4 v[16:19], v[0:1] offset:60842; GFX942-GISEL-NEXT:    flat_load_dwordx4 v[20:23], v[0:1] offset:76843; GFX942-GISEL-NEXT:    flat_load_dwordx4 v[24:27], v[0:1] offset:92844; GFX942-GISEL-NEXT:    flat_load_dwordx4 v[28:31], v[0:1] offset:108845; GFX942-GISEL-NEXT:    flat_load_dwordx4 v[32:35], v[0:1] offset:124846; GFX942-GISEL-NEXT:    flat_load_dwordx3 v[36:38], v[0:1] offset:140847; GFX942-GISEL-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)848; GFX942-GISEL-NEXT:    flat_store_dwordx4 v[2:3], v[4:7]849; GFX942-GISEL-NEXT:    flat_store_dwordx4 v[2:3], v[8:11] offset:16850; GFX942-GISEL-NEXT:    flat_store_dwordx4 v[2:3], v[12:15] offset:32851; GFX942-GISEL-NEXT:    flat_store_dwordx4 v[2:3], v[16:19] offset:48852; GFX942-GISEL-NEXT:    flat_store_dwordx4 v[2:3], v[20:23] offset:64853; GFX942-GISEL-NEXT:    flat_store_dwordx4 v[2:3], v[24:27] offset:80854; GFX942-GISEL-NEXT:    flat_store_dwordx4 v[2:3], v[28:31] offset:96855; GFX942-GISEL-NEXT:    flat_store_dwordx4 v[2:3], v[32:35] offset:112856; GFX942-GISEL-NEXT:    flat_store_dwordx3 v[2:3], v[36:38] offset:128857; GFX942-GISEL-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)858; GFX942-GISEL-NEXT:    s_setpc_b64 s[30:31]859;860; GFX11-GISEL-LABEL: flat_offset_inbounds_very_wide:861; GFX11-GISEL:       ; %bb.0:862; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)863; GFX11-GISEL-NEXT:    v_ashrrev_i32_e32 v5, 31, v4864; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)865; GFX11-GISEL-NEXT:    v_lshlrev_b64 v[4:5], 2, v[4:5]866; GFX11-GISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v4867; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)868; GFX11-GISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v5, vcc_lo869; GFX11-GISEL-NEXT:    s_clause 0x8870; GFX11-GISEL-NEXT:    flat_load_b128 v[4:7], v[0:1] offset:12871; GFX11-GISEL-NEXT:    flat_load_b128 v[8:11], v[0:1] offset:28872; GFX11-GISEL-NEXT:    flat_load_b128 v[12:15], v[0:1] offset:44873; GFX11-GISEL-NEXT:    flat_load_b128 v[16:19], v[0:1] offset:60874; GFX11-GISEL-NEXT:    flat_load_b128 v[20:23], v[0:1] offset:76875; GFX11-GISEL-NEXT:    flat_load_b128 v[24:27], v[0:1] offset:92876; GFX11-GISEL-NEXT:    flat_load_b128 v[28:31], v[0:1] offset:108877; GFX11-GISEL-NEXT:    flat_load_b128 v[32:35], v[0:1] offset:124878; GFX11-GISEL-NEXT:    flat_load_b96 v[36:38], v[0:1] offset:140879; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(8) lgkmcnt(8)880; GFX11-GISEL-NEXT:    flat_store_b128 v[2:3], v[4:7]881; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(7) lgkmcnt(8)882; GFX11-GISEL-NEXT:    flat_store_b128 v[2:3], v[8:11] offset:16883; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(6) lgkmcnt(8)884; GFX11-GISEL-NEXT:    flat_store_b128 v[2:3], v[12:15] offset:32885; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(5) lgkmcnt(8)886; GFX11-GISEL-NEXT:    flat_store_b128 v[2:3], v[16:19] offset:48887; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(4) lgkmcnt(8)888; GFX11-GISEL-NEXT:    flat_store_b128 v[2:3], v[20:23] offset:64889; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(3) lgkmcnt(8)890; GFX11-GISEL-NEXT:    flat_store_b128 v[2:3], v[24:27] offset:80891; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(2) lgkmcnt(8)892; GFX11-GISEL-NEXT:    flat_store_b128 v[2:3], v[28:31] offset:96893; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(1) lgkmcnt(8)894; GFX11-GISEL-NEXT:    flat_store_b128 v[2:3], v[32:35] offset:112895; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(8)896; GFX11-GISEL-NEXT:    flat_store_b96 v[2:3], v[36:38] offset:128897; GFX11-GISEL-NEXT:    s_waitcnt lgkmcnt(0)898; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31]899;900; GFX12-GISEL-LABEL: flat_offset_inbounds_very_wide:901; GFX12-GISEL:       ; %bb.0:902; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0903; GFX12-GISEL-NEXT:    s_wait_expcnt 0x0904; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x0905; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x0906; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0907; GFX12-GISEL-NEXT:    v_ashrrev_i32_e32 v5, 31, v4908; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)909; GFX12-GISEL-NEXT:    v_lshlrev_b64_e32 v[4:5], 2, v[4:5]910; GFX12-GISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v4911; GFX12-GISEL-NEXT:    s_wait_alu depctr_va_vcc(0)912; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2)913; GFX12-GISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v5, vcc_lo914; GFX12-GISEL-NEXT:    s_clause 0x8915; GFX12-GISEL-NEXT:    flat_load_b128 v[4:7], v[0:1] offset:12916; GFX12-GISEL-NEXT:    flat_load_b128 v[8:11], v[0:1] offset:28917; GFX12-GISEL-NEXT:    flat_load_b128 v[12:15], v[0:1] offset:44918; GFX12-GISEL-NEXT:    flat_load_b128 v[16:19], v[0:1] offset:60919; GFX12-GISEL-NEXT:    flat_load_b128 v[20:23], v[0:1] offset:76920; GFX12-GISEL-NEXT:    flat_load_b128 v[24:27], v[0:1] offset:92921; GFX12-GISEL-NEXT:    flat_load_b128 v[28:31], v[0:1] offset:108922; GFX12-GISEL-NEXT:    flat_load_b128 v[32:35], v[0:1] offset:124923; GFX12-GISEL-NEXT:    flat_load_b96 v[36:38], v[0:1] offset:140924; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x808925; GFX12-GISEL-NEXT:    flat_store_b128 v[2:3], v[4:7]926; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x708927; GFX12-GISEL-NEXT:    flat_store_b128 v[2:3], v[8:11] offset:16928; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x608929; GFX12-GISEL-NEXT:    flat_store_b128 v[2:3], v[12:15] offset:32930; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x508931; GFX12-GISEL-NEXT:    flat_store_b128 v[2:3], v[16:19] offset:48932; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x408933; GFX12-GISEL-NEXT:    flat_store_b128 v[2:3], v[20:23] offset:64934; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x308935; GFX12-GISEL-NEXT:    flat_store_b128 v[2:3], v[24:27] offset:80936; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x208937; GFX12-GISEL-NEXT:    flat_store_b128 v[2:3], v[28:31] offset:96938; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x108939; GFX12-GISEL-NEXT:    flat_store_b128 v[2:3], v[32:35] offset:112940; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x8941; GFX12-GISEL-NEXT:    flat_store_b96 v[2:3], v[36:38] offset:128942; GFX12-GISEL-NEXT:    s_wait_dscnt 0x0943; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31]944  %p.1 = getelementptr inbounds i32, ptr %p, i32 %i945  %arrayidx = getelementptr inbounds i32, ptr %p.1, i32 3946  %l = load <35 x i32>, ptr %arrayidx947  store <35 x i32> %l, ptr %pout948  ret void949}950;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:951; GFX10-GISEL-FLATSCR: {{.*}}952; GFX10-MUBUF: {{.*}}953; GFX10-SDAG-FLATSCR: {{.*}}954; GFX90A-GISEL-FLATSCR: {{.*}}955; GFX90A-MUBUF: {{.*}}956