brintos

brintos / llvm-project-archived public Read only

0
0
Text · 83.1 KiB · a979999 Raw
1898 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2;RUN: llc < %s -mtriple=amdgcn -mcpu=verde | FileCheck %s --check-prefixes=PREGFX103;RUN: llc < %s -mtriple=amdgcn -mcpu=tonga | FileCheck %s --check-prefixes=PREGFX104;RUN: llc < %s -mtriple=amdgcn -mcpu=gfx1010 | FileCheck %s --check-prefixes=GFX105;RUN: llc < %s -mtriple=amdgcn -mcpu=gfx1100 -amdgpu-enable-delay-alu=0 | FileCheck %s --check-prefixes=GFX116 7define amdgpu_ps {<4 x float>, <4 x float>, <4 x float>} @buffer_load(ptr addrspace(8) inreg) {8; PREGFX10-LABEL: buffer_load:9; PREGFX10:       ; %bb.0: ; %main_body10; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], off, s[0:3], 011; PREGFX10-NEXT:    buffer_load_dwordx4 v[4:7], off, s[0:3], 0 glc12; PREGFX10-NEXT:    buffer_load_dwordx4 v[8:11], off, s[0:3], 0 slc13; PREGFX10-NEXT:    s_waitcnt vmcnt(0)14; PREGFX10-NEXT:    ; return to shader part epilog15;16; GFX10-LABEL: buffer_load:17; GFX10:       ; %bb.0: ; %main_body18; GFX10-NEXT:    s_clause 0x219; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], off, s[0:3], 020; GFX10-NEXT:    buffer_load_dwordx4 v[4:7], off, s[0:3], 0 glc21; GFX10-NEXT:    buffer_load_dwordx4 v[8:11], off, s[0:3], 0 slc22; GFX10-NEXT:    s_waitcnt vmcnt(0)23; GFX10-NEXT:    ; return to shader part epilog24;25; GFX11-LABEL: buffer_load:26; GFX11:       ; %bb.0: ; %main_body27; GFX11-NEXT:    s_clause 0x228; GFX11-NEXT:    buffer_load_b128 v[0:3], off, s[0:3], 029; GFX11-NEXT:    buffer_load_b128 v[4:7], off, s[0:3], 0 glc30; GFX11-NEXT:    buffer_load_b128 v[8:11], off, s[0:3], 0 slc31; GFX11-NEXT:    s_waitcnt vmcnt(0)32; GFX11-NEXT:    ; return to shader part epilog33main_body:34  %data = call <4 x float> @llvm.amdgcn.raw.ptr.buffer.load.v4f32(ptr addrspace(8) %0, i32 0, i32 0, i32 0)35  %data_glc = call <4 x float> @llvm.amdgcn.raw.ptr.buffer.load.v4f32(ptr addrspace(8) %0, i32 0, i32 0, i32 1)36  %data_slc = call <4 x float> @llvm.amdgcn.raw.ptr.buffer.load.v4f32(ptr addrspace(8) %0, i32 0, i32 0, i32 2)37  %r0 = insertvalue {<4 x float>, <4 x float>, <4 x float>} poison, <4 x float> %data, 038  %r1 = insertvalue {<4 x float>, <4 x float>, <4 x float>} %r0, <4 x float> %data_glc, 139  %r2 = insertvalue {<4 x float>, <4 x float>, <4 x float>} %r1, <4 x float> %data_slc, 240  ret {<4 x float>, <4 x float>, <4 x float>} %r241}42 43define amdgpu_ps {<4 x float>, <4 x float>, <4 x float>} @buffer_load_dlc(ptr addrspace(8) inreg) {44; PREGFX10-LABEL: buffer_load_dlc:45; PREGFX10:       ; %bb.0: ; %main_body46; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], off, s[0:3], 047; PREGFX10-NEXT:    buffer_load_dwordx4 v[4:7], off, s[0:3], 0 glc48; PREGFX10-NEXT:    buffer_load_dwordx4 v[8:11], off, s[0:3], 0 slc49; PREGFX10-NEXT:    s_waitcnt vmcnt(0)50; PREGFX10-NEXT:    ; return to shader part epilog51;52; GFX10-LABEL: buffer_load_dlc:53; GFX10:       ; %bb.0: ; %main_body54; GFX10-NEXT:    s_clause 0x255; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], off, s[0:3], 0 dlc56; GFX10-NEXT:    buffer_load_dwordx4 v[4:7], off, s[0:3], 0 glc dlc57; GFX10-NEXT:    buffer_load_dwordx4 v[8:11], off, s[0:3], 0 slc dlc58; GFX10-NEXT:    s_waitcnt vmcnt(0)59; GFX10-NEXT:    ; return to shader part epilog60;61; GFX11-LABEL: buffer_load_dlc:62; GFX11:       ; %bb.0: ; %main_body63; GFX11-NEXT:    s_clause 0x264; GFX11-NEXT:    buffer_load_b128 v[0:3], off, s[0:3], 0 dlc65; GFX11-NEXT:    buffer_load_b128 v[4:7], off, s[0:3], 0 glc dlc66; GFX11-NEXT:    buffer_load_b128 v[8:11], off, s[0:3], 0 slc dlc67; GFX11-NEXT:    s_waitcnt vmcnt(0)68; GFX11-NEXT:    ; return to shader part epilog69main_body:70  %data = call <4 x float> @llvm.amdgcn.raw.ptr.buffer.load.v4f32(ptr addrspace(8) %0, i32 0, i32 0, i32 4)71  %data_glc = call <4 x float> @llvm.amdgcn.raw.ptr.buffer.load.v4f32(ptr addrspace(8) %0, i32 0, i32 0, i32 5)72  %data_slc = call <4 x float> @llvm.amdgcn.raw.ptr.buffer.load.v4f32(ptr addrspace(8) %0, i32 0, i32 0, i32 6)73  %r0 = insertvalue {<4 x float>, <4 x float>, <4 x float>} poison, <4 x float> %data, 074  %r1 = insertvalue {<4 x float>, <4 x float>, <4 x float>} %r0, <4 x float> %data_glc, 175  %r2 = insertvalue {<4 x float>, <4 x float>, <4 x float>} %r1, <4 x float> %data_slc, 276  ret {<4 x float>, <4 x float>, <4 x float>} %r277}78 79define amdgpu_ps {<4 x float>, <4 x float>, <4 x float>} @buffer_load_volatile(ptr addrspace(8) inreg) {80; PREGFX10-LABEL: buffer_load_volatile:81; PREGFX10:       ; %bb.0: ; %main_body82; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], off, s[0:3], 0 glc83; PREGFX10-NEXT:    s_waitcnt vmcnt(0)84; PREGFX10-NEXT:    buffer_load_dwordx4 v[4:7], off, s[0:3], 0 glc85; PREGFX10-NEXT:    s_waitcnt vmcnt(0)86; PREGFX10-NEXT:    buffer_load_dwordx4 v[8:11], off, s[0:3], 0 glc slc87; PREGFX10-NEXT:    s_waitcnt vmcnt(0)88; PREGFX10-NEXT:    ; return to shader part epilog89;90; GFX10-LABEL: buffer_load_volatile:91; GFX10:       ; %bb.0: ; %main_body92; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], off, s[0:3], 0 glc dlc93; GFX10-NEXT:    s_waitcnt vmcnt(0)94; GFX10-NEXT:    buffer_load_dwordx4 v[4:7], off, s[0:3], 0 glc dlc95; GFX10-NEXT:    s_waitcnt vmcnt(0)96; GFX10-NEXT:    buffer_load_dwordx4 v[8:11], off, s[0:3], 0 glc slc dlc97; GFX10-NEXT:    s_waitcnt vmcnt(0)98; GFX10-NEXT:    ; return to shader part epilog99;100; GFX11-LABEL: buffer_load_volatile:101; GFX11:       ; %bb.0: ; %main_body102; GFX11-NEXT:    buffer_load_b128 v[0:3], off, s[0:3], 0 glc dlc103; GFX11-NEXT:    s_waitcnt vmcnt(0)104; GFX11-NEXT:    buffer_load_b128 v[4:7], off, s[0:3], 0 glc dlc105; GFX11-NEXT:    s_waitcnt vmcnt(0)106; GFX11-NEXT:    buffer_load_b128 v[8:11], off, s[0:3], 0 glc slc dlc107; GFX11-NEXT:    s_waitcnt vmcnt(0)108; GFX11-NEXT:    ; return to shader part epilog109main_body:110  %data = call <4 x float> @llvm.amdgcn.raw.ptr.buffer.load.v4f32(ptr addrspace(8) %0, i32 0, i32 0, i32 -2147483648)111  %data_glc = call <4 x float> @llvm.amdgcn.raw.ptr.buffer.load.v4f32(ptr addrspace(8) %0, i32 0, i32 0, i32 -2147483647)112  %data_slc = call <4 x float> @llvm.amdgcn.raw.ptr.buffer.load.v4f32(ptr addrspace(8) %0, i32 0, i32 0, i32 -2147483646)113  %r0 = insertvalue {<4 x float>, <4 x float>, <4 x float>} poison, <4 x float> %data, 0114  %r1 = insertvalue {<4 x float>, <4 x float>, <4 x float>} %r0, <4 x float> %data_glc, 1115  %r2 = insertvalue {<4 x float>, <4 x float>, <4 x float>} %r1, <4 x float> %data_slc, 2116  ret {<4 x float>, <4 x float>, <4 x float>} %r2117}118 119define amdgpu_ps <4 x float> @buffer_load_immoffs(ptr addrspace(8) inreg) {120; PREGFX10-LABEL: buffer_load_immoffs:121; PREGFX10:       ; %bb.0: ; %main_body122; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], off, s[0:3], 0 offset:40123; PREGFX10-NEXT:    s_waitcnt vmcnt(0)124; PREGFX10-NEXT:    ; return to shader part epilog125;126; GFX10-LABEL: buffer_load_immoffs:127; GFX10:       ; %bb.0: ; %main_body128; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], off, s[0:3], 0 offset:40129; GFX10-NEXT:    s_waitcnt vmcnt(0)130; GFX10-NEXT:    ; return to shader part epilog131;132; GFX11-LABEL: buffer_load_immoffs:133; GFX11:       ; %bb.0: ; %main_body134; GFX11-NEXT:    buffer_load_b128 v[0:3], off, s[0:3], 0 offset:40135; GFX11-NEXT:    s_waitcnt vmcnt(0)136; GFX11-NEXT:    ; return to shader part epilog137main_body:138  %data = call <4 x float> @llvm.amdgcn.raw.ptr.buffer.load.v4f32(ptr addrspace(8) %0, i32 40, i32 0, i32 0)139  ret <4 x float> %data140}141 142define amdgpu_ps <4 x float> @buffer_load_immoffs_large(ptr addrspace(8) inreg) {143; PREGFX10-LABEL: buffer_load_immoffs_large:144; PREGFX10:       ; %bb.0: ; %main_body145; PREGFX10-NEXT:    s_movk_i32 s4, 0x1ffc146; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], off, s[0:3], s4 offset:4147; PREGFX10-NEXT:    s_waitcnt vmcnt(0)148; PREGFX10-NEXT:    ; return to shader part epilog149;150; GFX10-LABEL: buffer_load_immoffs_large:151; GFX10:       ; %bb.0: ; %main_body152; GFX10-NEXT:    s_movk_i32 s4, 0x1ffc153; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], off, s[0:3], s4 offset:4154; GFX10-NEXT:    s_waitcnt vmcnt(0)155; GFX10-NEXT:    ; return to shader part epilog156;157; GFX11-LABEL: buffer_load_immoffs_large:158; GFX11:       ; %bb.0: ; %main_body159; GFX11-NEXT:    s_movk_i32 s4, 0x1ffc160; GFX11-NEXT:    buffer_load_b128 v[0:3], off, s[0:3], s4 offset:4161; GFX11-NEXT:    s_waitcnt vmcnt(0)162; GFX11-NEXT:    ; return to shader part epilog163main_body:164  %data = call <4 x float> @llvm.amdgcn.raw.ptr.buffer.load.v4f32(ptr addrspace(8) %0, i32 4, i32 8188, i32 0)165  ret <4 x float> %data166}167 168define amdgpu_ps <4 x float> @buffer_load_ofs(ptr addrspace(8) inreg, i32) {169; PREGFX10-LABEL: buffer_load_ofs:170; PREGFX10:       ; %bb.0: ; %main_body171; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[0:3], 0 offen172; PREGFX10-NEXT:    s_waitcnt vmcnt(0)173; PREGFX10-NEXT:    ; return to shader part epilog174;175; GFX10-LABEL: buffer_load_ofs:176; GFX10:       ; %bb.0: ; %main_body177; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[0:3], 0 offen178; GFX10-NEXT:    s_waitcnt vmcnt(0)179; GFX10-NEXT:    ; return to shader part epilog180;181; GFX11-LABEL: buffer_load_ofs:182; GFX11:       ; %bb.0: ; %main_body183; GFX11-NEXT:    buffer_load_b128 v[0:3], v0, s[0:3], 0 offen184; GFX11-NEXT:    s_waitcnt vmcnt(0)185; GFX11-NEXT:    ; return to shader part epilog186main_body:187  %data = call <4 x float> @llvm.amdgcn.raw.ptr.buffer.load.v4f32(ptr addrspace(8) %0, i32 %1, i32 0, i32 0)188  ret <4 x float> %data189}190 191define amdgpu_ps <4 x float> @buffer_load_ofs_imm(ptr addrspace(8) inreg, i32) {192; PREGFX10-LABEL: buffer_load_ofs_imm:193; PREGFX10:       ; %bb.0: ; %main_body194; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[0:3], 0 offen offset:60195; PREGFX10-NEXT:    s_waitcnt vmcnt(0)196; PREGFX10-NEXT:    ; return to shader part epilog197;198; GFX10-LABEL: buffer_load_ofs_imm:199; GFX10:       ; %bb.0: ; %main_body200; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[0:3], 0 offen offset:60201; GFX10-NEXT:    s_waitcnt vmcnt(0)202; GFX10-NEXT:    ; return to shader part epilog203;204; GFX11-LABEL: buffer_load_ofs_imm:205; GFX11:       ; %bb.0: ; %main_body206; GFX11-NEXT:    buffer_load_b128 v[0:3], v0, s[0:3], 0 offen offset:60207; GFX11-NEXT:    s_waitcnt vmcnt(0)208; GFX11-NEXT:    ; return to shader part epilog209main_body:210  %ofs = add i32 %1, 60211  %data = call <4 x float> @llvm.amdgcn.raw.ptr.buffer.load.v4f32(ptr addrspace(8) %0, i32 %ofs, i32 0, i32 0)212  ret <4 x float> %data213}214 215define amdgpu_ps <4 x float> @buffer_load_voffset_large_12bit(ptr addrspace(8) inreg) {216; PREGFX10-LABEL: buffer_load_voffset_large_12bit:217; PREGFX10:       ; %bb.0: ; %main_body218; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], off, s[0:3], 0 offset:4092219; PREGFX10-NEXT:    s_waitcnt vmcnt(0)220; PREGFX10-NEXT:    ; return to shader part epilog221;222; GFX10-LABEL: buffer_load_voffset_large_12bit:223; GFX10:       ; %bb.0: ; %main_body224; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], off, s[0:3], 0 offset:4092225; GFX10-NEXT:    s_waitcnt vmcnt(0)226; GFX10-NEXT:    ; return to shader part epilog227;228; GFX11-LABEL: buffer_load_voffset_large_12bit:229; GFX11:       ; %bb.0: ; %main_body230; GFX11-NEXT:    buffer_load_b128 v[0:3], off, s[0:3], 0 offset:4092231; GFX11-NEXT:    s_waitcnt vmcnt(0)232; GFX11-NEXT:    ; return to shader part epilog233main_body:234  %data = call <4 x float> @llvm.amdgcn.raw.ptr.buffer.load.v4f32(ptr addrspace(8) %0, i32 4092, i32 0, i32 0)235  ret <4 x float> %data236}237 238define amdgpu_ps <4 x float> @buffer_load_voffset_large_13bit(ptr addrspace(8) inreg) {239; PREGFX10-LABEL: buffer_load_voffset_large_13bit:240; PREGFX10:       ; %bb.0: ; %main_body241; PREGFX10-NEXT:    v_mov_b32_e32 v0, 0x1000242; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[0:3], 0 offen offset:4092243; PREGFX10-NEXT:    s_waitcnt vmcnt(0)244; PREGFX10-NEXT:    ; return to shader part epilog245;246; GFX10-LABEL: buffer_load_voffset_large_13bit:247; GFX10:       ; %bb.0: ; %main_body248; GFX10-NEXT:    v_mov_b32_e32 v0, 0x1000249; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[0:3], 0 offen offset:4092250; GFX10-NEXT:    s_waitcnt vmcnt(0)251; GFX10-NEXT:    ; return to shader part epilog252;253; GFX11-LABEL: buffer_load_voffset_large_13bit:254; GFX11:       ; %bb.0: ; %main_body255; GFX11-NEXT:    v_mov_b32_e32 v0, 0x1000256; GFX11-NEXT:    buffer_load_b128 v[0:3], v0, s[0:3], 0 offen offset:4092257; GFX11-NEXT:    s_waitcnt vmcnt(0)258; GFX11-NEXT:    ; return to shader part epilog259main_body:260  %data = call <4 x float> @llvm.amdgcn.raw.ptr.buffer.load.v4f32(ptr addrspace(8) %0, i32 8188, i32 0, i32 0)261  ret <4 x float> %data262}263 264define amdgpu_ps <4 x float> @buffer_load_voffset_large_16bit(ptr addrspace(8) inreg) {265; PREGFX10-LABEL: buffer_load_voffset_large_16bit:266; PREGFX10:       ; %bb.0: ; %main_body267; PREGFX10-NEXT:    v_mov_b32_e32 v0, 0xf000268; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[0:3], 0 offen offset:4092269; PREGFX10-NEXT:    s_waitcnt vmcnt(0)270; PREGFX10-NEXT:    ; return to shader part epilog271;272; GFX10-LABEL: buffer_load_voffset_large_16bit:273; GFX10:       ; %bb.0: ; %main_body274; GFX10-NEXT:    v_mov_b32_e32 v0, 0xf000275; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[0:3], 0 offen offset:4092276; GFX10-NEXT:    s_waitcnt vmcnt(0)277; GFX10-NEXT:    ; return to shader part epilog278;279; GFX11-LABEL: buffer_load_voffset_large_16bit:280; GFX11:       ; %bb.0: ; %main_body281; GFX11-NEXT:    v_mov_b32_e32 v0, 0xf000282; GFX11-NEXT:    buffer_load_b128 v[0:3], v0, s[0:3], 0 offen offset:4092283; GFX11-NEXT:    s_waitcnt vmcnt(0)284; GFX11-NEXT:    ; return to shader part epilog285main_body:286  %data = call <4 x float> @llvm.amdgcn.raw.ptr.buffer.load.v4f32(ptr addrspace(8) %0, i32 65532, i32 0, i32 0)287  ret <4 x float> %data288}289 290define amdgpu_ps <4 x float> @buffer_load_voffset_large_23bit(ptr addrspace(8) inreg) {291; PREGFX10-LABEL: buffer_load_voffset_large_23bit:292; PREGFX10:       ; %bb.0: ; %main_body293; PREGFX10-NEXT:    v_mov_b32_e32 v0, 0x7ff000294; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[0:3], 0 offen offset:4092295; PREGFX10-NEXT:    s_waitcnt vmcnt(0)296; PREGFX10-NEXT:    ; return to shader part epilog297;298; GFX10-LABEL: buffer_load_voffset_large_23bit:299; GFX10:       ; %bb.0: ; %main_body300; GFX10-NEXT:    v_mov_b32_e32 v0, 0x7ff000301; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[0:3], 0 offen offset:4092302; GFX10-NEXT:    s_waitcnt vmcnt(0)303; GFX10-NEXT:    ; return to shader part epilog304;305; GFX11-LABEL: buffer_load_voffset_large_23bit:306; GFX11:       ; %bb.0: ; %main_body307; GFX11-NEXT:    v_mov_b32_e32 v0, 0x7ff000308; GFX11-NEXT:    buffer_load_b128 v[0:3], v0, s[0:3], 0 offen offset:4092309; GFX11-NEXT:    s_waitcnt vmcnt(0)310; GFX11-NEXT:    ; return to shader part epilog311main_body:312  %data = call <4 x float> @llvm.amdgcn.raw.ptr.buffer.load.v4f32(ptr addrspace(8) %0, i32 8388604, i32 0, i32 0)313  ret <4 x float> %data314}315 316define amdgpu_ps <4 x float> @buffer_load_voffset_large_24bit(ptr addrspace(8) inreg) {317; PREGFX10-LABEL: buffer_load_voffset_large_24bit:318; PREGFX10:       ; %bb.0: ; %main_body319; PREGFX10-NEXT:    v_mov_b32_e32 v0, 0xfff000320; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[0:3], 0 offen offset:4092321; PREGFX10-NEXT:    s_waitcnt vmcnt(0)322; PREGFX10-NEXT:    ; return to shader part epilog323;324; GFX10-LABEL: buffer_load_voffset_large_24bit:325; GFX10:       ; %bb.0: ; %main_body326; GFX10-NEXT:    v_mov_b32_e32 v0, 0xfff000327; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[0:3], 0 offen offset:4092328; GFX10-NEXT:    s_waitcnt vmcnt(0)329; GFX10-NEXT:    ; return to shader part epilog330;331; GFX11-LABEL: buffer_load_voffset_large_24bit:332; GFX11:       ; %bb.0: ; %main_body333; GFX11-NEXT:    v_mov_b32_e32 v0, 0xfff000334; GFX11-NEXT:    buffer_load_b128 v[0:3], v0, s[0:3], 0 offen offset:4092335; GFX11-NEXT:    s_waitcnt vmcnt(0)336; GFX11-NEXT:    ; return to shader part epilog337main_body:338  %data = call <4 x float> @llvm.amdgcn.raw.ptr.buffer.load.v4f32(ptr addrspace(8) %0, i32 16777212, i32 0, i32 0)339  ret <4 x float> %data340}341 342 343define amdgpu_ps float @buffer_load_x1(ptr addrspace(8) inreg %rsrc, i32 %ofs) {344; PREGFX10-LABEL: buffer_load_x1:345; PREGFX10:       ; %bb.0: ; %main_body346; PREGFX10-NEXT:    buffer_load_dword v0, v0, s[0:3], 0 offen347; PREGFX10-NEXT:    s_waitcnt vmcnt(0)348; PREGFX10-NEXT:    ; return to shader part epilog349;350; GFX10-LABEL: buffer_load_x1:351; GFX10:       ; %bb.0: ; %main_body352; GFX10-NEXT:    buffer_load_dword v0, v0, s[0:3], 0 offen353; GFX10-NEXT:    s_waitcnt vmcnt(0)354; GFX10-NEXT:    ; return to shader part epilog355;356; GFX11-LABEL: buffer_load_x1:357; GFX11:       ; %bb.0: ; %main_body358; GFX11-NEXT:    buffer_load_b32 v0, v0, s[0:3], 0 offen359; GFX11-NEXT:    s_waitcnt vmcnt(0)360; GFX11-NEXT:    ; return to shader part epilog361main_body:362  %data = call float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8) %rsrc, i32 %ofs, i32 0, i32 0)363  ret float %data364}365 366define amdgpu_ps <2 x float> @buffer_load_x2(ptr addrspace(8) inreg %rsrc, i32 %ofs) {367; PREGFX10-LABEL: buffer_load_x2:368; PREGFX10:       ; %bb.0: ; %main_body369; PREGFX10-NEXT:    buffer_load_dwordx2 v[0:1], v0, s[0:3], 0 offen370; PREGFX10-NEXT:    s_waitcnt vmcnt(0)371; PREGFX10-NEXT:    ; return to shader part epilog372;373; GFX10-LABEL: buffer_load_x2:374; GFX10:       ; %bb.0: ; %main_body375; GFX10-NEXT:    buffer_load_dwordx2 v[0:1], v0, s[0:3], 0 offen376; GFX10-NEXT:    s_waitcnt vmcnt(0)377; GFX10-NEXT:    ; return to shader part epilog378;379; GFX11-LABEL: buffer_load_x2:380; GFX11:       ; %bb.0: ; %main_body381; GFX11-NEXT:    buffer_load_b64 v[0:1], v0, s[0:3], 0 offen382; GFX11-NEXT:    s_waitcnt vmcnt(0)383; GFX11-NEXT:    ; return to shader part epilog384main_body:385  %data = call <2 x float> @llvm.amdgcn.raw.ptr.buffer.load.v2f32(ptr addrspace(8) %rsrc, i32 %ofs, i32 0, i32 0)386  ret <2 x float> %data387}388 389define amdgpu_ps <4 x float> @buffer_load_negative_offset(ptr addrspace(8) inreg, i32 %ofs) {390; GFX10-LABEL: buffer_load_negative_offset:391; GFX10:       ; %bb.0: ; %main_body392; GFX10-NEXT:    v_add_nc_u32_e32 v0, -16, v0393; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[0:3], 0 offen394; GFX10-NEXT:    s_waitcnt vmcnt(0)395; GFX10-NEXT:    ; return to shader part epilog396;397; GFX11-LABEL: buffer_load_negative_offset:398; GFX11:       ; %bb.0: ; %main_body399; GFX11-NEXT:    v_add_nc_u32_e32 v0, -16, v0400; GFX11-NEXT:    buffer_load_b128 v[0:3], v0, s[0:3], 0 offen401; GFX11-NEXT:    s_waitcnt vmcnt(0)402; GFX11-NEXT:    ; return to shader part epilog403main_body:404  %ofs.1 = add i32 %ofs, -16405  %data = call <4 x float> @llvm.amdgcn.raw.ptr.buffer.load.v4f32(ptr addrspace(8) %0, i32 %ofs.1, i32 0, i32 0)406  ret <4 x float> %data407}408 409define amdgpu_ps float @buffer_load_mmo(ptr addrspace(8) inreg %rsrc, ptr addrspace(3) %lds) {410; GFX10-LABEL: buffer_load_mmo:411; GFX10:       ; %bb.0: ; %entry412; GFX10-NEXT:    buffer_load_dword v1, off, s[0:3], 0413; GFX10-NEXT:    v_mov_b32_e32 v2, 0414; GFX10-NEXT:    ds_write2_b32 v0, v2, v2 offset1:4415; GFX10-NEXT:    s_waitcnt vmcnt(0)416; GFX10-NEXT:    v_mov_b32_e32 v0, v1417; GFX10-NEXT:    s_waitcnt lgkmcnt(0)418; GFX10-NEXT:    ; return to shader part epilog419;420; GFX11-LABEL: buffer_load_mmo:421; GFX11:       ; %bb.0: ; %entry422; GFX11-NEXT:    buffer_load_b32 v1, off, s[0:3], 0423; GFX11-NEXT:    v_mov_b32_e32 v2, 0424; GFX11-NEXT:    ds_store_2addr_b32 v0, v2, v2 offset1:4425; GFX11-NEXT:    s_waitcnt vmcnt(0)426; GFX11-NEXT:    v_mov_b32_e32 v0, v1427; GFX11-NEXT:    s_waitcnt lgkmcnt(0)428; GFX11-NEXT:    ; return to shader part epilog429entry:430  store float 0.0, ptr addrspace(3) %lds431  %val = call float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8) %rsrc, i32 0, i32 0, i32 0)432  %tmp2 = getelementptr float, ptr addrspace(3) %lds, i32 4433  store float 0.0, ptr addrspace(3) %tmp2434  ret float %val435}436 437define amdgpu_ps void @buffer_load_x1_offen_merged_and(ptr addrspace(8) inreg %rsrc, i32 %a) {438; PREGFX10-LABEL: buffer_load_x1_offen_merged_and:439; PREGFX10:       ; %bb.0: ; %main_body440; PREGFX10-NEXT:    buffer_load_dwordx4 v[1:4], v0, s[0:3], 0 offen offset:4441; PREGFX10-NEXT:    buffer_load_dwordx2 v[5:6], v0, s[0:3], 0 offen offset:28442; PREGFX10-NEXT:    s_waitcnt vmcnt(1)443; PREGFX10-NEXT:    exp mrt0 v1, v2, v3, v4 done vm444; PREGFX10-NEXT:    s_waitcnt vmcnt(0)445; PREGFX10-NEXT:    exp mrt0 v5, v6, v0, v0 done vm446; PREGFX10-NEXT:    s_endpgm447;448; GFX10-LABEL: buffer_load_x1_offen_merged_and:449; GFX10:       ; %bb.0: ; %main_body450; GFX10-NEXT:    s_clause 0x1451; GFX10-NEXT:    buffer_load_dwordx4 v[1:4], v0, s[0:3], 0 offen offset:4452; GFX10-NEXT:    buffer_load_dwordx2 v[5:6], v0, s[0:3], 0 offen offset:28453; GFX10-NEXT:    s_waitcnt vmcnt(1)454; GFX10-NEXT:    exp mrt0 v1, v2, v3, v4 done vm455; GFX10-NEXT:    s_waitcnt vmcnt(0)456; GFX10-NEXT:    exp mrt0 v5, v6, v0, v0 done vm457; GFX10-NEXT:    s_endpgm458;459; GFX11-LABEL: buffer_load_x1_offen_merged_and:460; GFX11:       ; %bb.0: ; %main_body461; GFX11-NEXT:    s_clause 0x1462; GFX11-NEXT:    buffer_load_b128 v[1:4], v0, s[0:3], 0 offen offset:4463; GFX11-NEXT:    buffer_load_b64 v[5:6], v0, s[0:3], 0 offen offset:28464; GFX11-NEXT:    s_waitcnt vmcnt(1)465; GFX11-NEXT:    exp mrt0 v1, v2, v3, v4 done466; GFX11-NEXT:    s_waitcnt vmcnt(0)467; GFX11-NEXT:    exp mrt0 v5, v6, v0, v0 done468; GFX11-NEXT:    s_endpgm469main_body:470  %a1 = add i32 %a, 4471  %a2 = add i32 %a, 8472  %a3 = add i32 %a, 12473  %a4 = add i32 %a, 16474  %a5 = add i32 %a, 28475  %a6 = add i32 %a, 32476  %r1 = call float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8) %rsrc, i32 %a1, i32 0, i32 0)477  %r2 = call float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8) %rsrc, i32 %a2, i32 0, i32 0)478  %r3 = call float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8) %rsrc, i32 %a3, i32 0, i32 0)479  %r4 = call float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8) %rsrc, i32 %a4, i32 0, i32 0)480  %r5 = call float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8) %rsrc, i32 %a5, i32 0, i32 0)481  %r6 = call float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8) %rsrc, i32 %a6, i32 0, i32 0)482  call void @llvm.amdgcn.exp.f32(i32 0, i32 15, float %r1, float %r2, float %r3, float %r4, i1 true, i1 true)483  call void @llvm.amdgcn.exp.f32(i32 0, i32 15, float %r5, float %r6, float poison, float poison, i1 true, i1 true)484  ret void485}486 487define amdgpu_ps void @buffer_load_x1_offen_merged_or(ptr addrspace(8) inreg %rsrc, i32 %inp) {488; PREGFX10-LABEL: buffer_load_x1_offen_merged_or:489; PREGFX10:       ; %bb.0: ; %main_body490; PREGFX10-NEXT:    v_lshlrev_b32_e32 v4, 6, v0491; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], v4, s[0:3], 0 offen offset:4492; PREGFX10-NEXT:    buffer_load_dwordx2 v[4:5], v4, s[0:3], 0 offen offset:28493; PREGFX10-NEXT:    s_waitcnt vmcnt(1)494; PREGFX10-NEXT:    exp mrt0 v0, v1, v2, v3 done vm495; PREGFX10-NEXT:    s_waitcnt vmcnt(0)496; PREGFX10-NEXT:    exp mrt0 v4, v5, v0, v0 done vm497; PREGFX10-NEXT:    s_endpgm498;499; GFX10-LABEL: buffer_load_x1_offen_merged_or:500; GFX10:       ; %bb.0: ; %main_body501; GFX10-NEXT:    v_lshlrev_b32_e32 v6, 6, v0502; GFX10-NEXT:    s_clause 0x1503; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], v6, s[0:3], 0 offen offset:4504; GFX10-NEXT:    buffer_load_dwordx2 v[4:5], v6, s[0:3], 0 offen offset:28505; GFX10-NEXT:    s_waitcnt vmcnt(1)506; GFX10-NEXT:    exp mrt0 v0, v1, v2, v3 done vm507; GFX10-NEXT:    s_waitcnt vmcnt(0)508; GFX10-NEXT:    exp mrt0 v4, v5, v0, v0 done vm509; GFX10-NEXT:    s_endpgm510;511; GFX11-LABEL: buffer_load_x1_offen_merged_or:512; GFX11:       ; %bb.0: ; %main_body513; GFX11-NEXT:    v_lshlrev_b32_e32 v4, 6, v0514; GFX11-NEXT:    s_clause 0x1515; GFX11-NEXT:    buffer_load_b128 v[0:3], v4, s[0:3], 0 offen offset:4516; GFX11-NEXT:    buffer_load_b64 v[4:5], v4, s[0:3], 0 offen offset:28517; GFX11-NEXT:    s_waitcnt vmcnt(1)518; GFX11-NEXT:    exp mrt0 v0, v1, v2, v3 done519; GFX11-NEXT:    s_waitcnt vmcnt(0)520; GFX11-NEXT:    exp mrt0 v4, v5, v0, v0 done521; GFX11-NEXT:    s_endpgm522main_body:523  %a = shl i32 %inp, 6524  %a1 = or i32 %a, 4525  %a2 = or i32 %a, 8526  %a3 = or i32 %a, 12527  %a4 = or i32 %a, 16528  %a5 = or i32 %a, 28529  %a6 = or i32 %a, 32530  %r1 = call float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8) %rsrc, i32 %a1, i32 0, i32 0)531  %r2 = call float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8) %rsrc, i32 %a2, i32 0, i32 0)532  %r3 = call float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8) %rsrc, i32 %a3, i32 0, i32 0)533  %r4 = call float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8) %rsrc, i32 %a4, i32 0, i32 0)534  %r5 = call float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8) %rsrc, i32 %a5, i32 0, i32 0)535  %r6 = call float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8) %rsrc, i32 %a6, i32 0, i32 0)536  call void @llvm.amdgcn.exp.f32(i32 0, i32 15, float %r1, float %r2, float %r3, float %r4, i1 true, i1 true)537  call void @llvm.amdgcn.exp.f32(i32 0, i32 15, float %r5, float %r6, float poison, float poison, i1 true, i1 true)538  ret void539}540 541define amdgpu_ps void @buffer_load_x1_offen_merged_glc_slc(ptr addrspace(8) inreg %rsrc, i32 %a) {542; PREGFX10-LABEL: buffer_load_x1_offen_merged_glc_slc:543; PREGFX10:       ; %bb.0: ; %main_body544; PREGFX10-NEXT:    buffer_load_dwordx2 v[1:2], v0, s[0:3], 0 offen offset:4545; PREGFX10-NEXT:    buffer_load_dwordx2 v[3:4], v0, s[0:3], 0 offen offset:12 glc546; PREGFX10-NEXT:    buffer_load_dwordx2 v[5:6], v0, s[0:3], 0 offen offset:28 glc slc547; PREGFX10-NEXT:    s_waitcnt vmcnt(1)548; PREGFX10-NEXT:    exp mrt0 v1, v2, v3, v4 done vm549; PREGFX10-NEXT:    s_waitcnt vmcnt(0)550; PREGFX10-NEXT:    exp mrt0 v5, v6, v0, v0 done vm551; PREGFX10-NEXT:    s_endpgm552;553; GFX10-LABEL: buffer_load_x1_offen_merged_glc_slc:554; GFX10:       ; %bb.0: ; %main_body555; GFX10-NEXT:    s_clause 0x2556; GFX10-NEXT:    buffer_load_dwordx2 v[1:2], v0, s[0:3], 0 offen offset:4557; GFX10-NEXT:    buffer_load_dwordx2 v[3:4], v0, s[0:3], 0 offen offset:12 glc558; GFX10-NEXT:    buffer_load_dwordx2 v[5:6], v0, s[0:3], 0 offen offset:28 glc slc559; GFX10-NEXT:    s_waitcnt vmcnt(1)560; GFX10-NEXT:    exp mrt0 v1, v2, v3, v4 done vm561; GFX10-NEXT:    s_waitcnt vmcnt(0)562; GFX10-NEXT:    exp mrt0 v5, v6, v0, v0 done vm563; GFX10-NEXT:    s_endpgm564;565; GFX11-LABEL: buffer_load_x1_offen_merged_glc_slc:566; GFX11:       ; %bb.0: ; %main_body567; GFX11-NEXT:    s_clause 0x2568; GFX11-NEXT:    buffer_load_b64 v[1:2], v0, s[0:3], 0 offen offset:4569; GFX11-NEXT:    buffer_load_b64 v[3:4], v0, s[0:3], 0 offen offset:12 glc570; GFX11-NEXT:    buffer_load_b64 v[5:6], v0, s[0:3], 0 offen offset:28 glc slc571; GFX11-NEXT:    s_waitcnt vmcnt(1)572; GFX11-NEXT:    exp mrt0 v1, v2, v3, v4 done573; GFX11-NEXT:    s_waitcnt vmcnt(0)574; GFX11-NEXT:    exp mrt0 v5, v6, v0, v0 done575; GFX11-NEXT:    s_endpgm576main_body:577  %a1 = add i32 %a, 4578  %a2 = add i32 %a, 8579  %a3 = add i32 %a, 12580  %a4 = add i32 %a, 16581  %a5 = add i32 %a, 28582  %a6 = add i32 %a, 32583  %r1 = call float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8) %rsrc, i32 %a1, i32 0, i32 0)584  %r2 = call float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8) %rsrc, i32 %a2, i32 0, i32 0)585  %r3 = call float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8) %rsrc, i32 %a3, i32 0, i32 1)586  %r4 = call float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8) %rsrc, i32 %a4, i32 0, i32 1)587  %r5 = call float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8) %rsrc, i32 %a5, i32 0, i32 3)588  %r6 = call float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8) %rsrc, i32 %a6, i32 0, i32 3)589  call void @llvm.amdgcn.exp.f32(i32 0, i32 15, float %r1, float %r2, float %r3, float %r4, i1 true, i1 true)590  call void @llvm.amdgcn.exp.f32(i32 0, i32 15, float %r5, float %r6, float poison, float poison, i1 true, i1 true)591  ret void592}593 594define amdgpu_ps void @buffer_load_x2_offen_merged_and(ptr addrspace(8) inreg %rsrc, i32 %a) {595; PREGFX10-LABEL: buffer_load_x2_offen_merged_and:596; PREGFX10:       ; %bb.0: ; %main_body597; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[0:3], 0 offen offset:4598; PREGFX10-NEXT:    s_waitcnt vmcnt(0)599; PREGFX10-NEXT:    exp mrt0 v0, v1, v2, v3 done vm600; PREGFX10-NEXT:    s_endpgm601;602; GFX10-LABEL: buffer_load_x2_offen_merged_and:603; GFX10:       ; %bb.0: ; %main_body604; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[0:3], 0 offen offset:4605; GFX10-NEXT:    s_waitcnt vmcnt(0)606; GFX10-NEXT:    exp mrt0 v0, v1, v2, v3 done vm607; GFX10-NEXT:    s_endpgm608;609; GFX11-LABEL: buffer_load_x2_offen_merged_and:610; GFX11:       ; %bb.0: ; %main_body611; GFX11-NEXT:    buffer_load_b128 v[0:3], v0, s[0:3], 0 offen offset:4612; GFX11-NEXT:    s_waitcnt vmcnt(0)613; GFX11-NEXT:    exp mrt0 v0, v1, v2, v3 done614; GFX11-NEXT:    s_endpgm615main_body:616  %a1 = add i32 %a, 4617  %a2 = add i32 %a, 12618  %vr1 = call <2 x float> @llvm.amdgcn.raw.ptr.buffer.load.v2f32(ptr addrspace(8) %rsrc, i32 %a1, i32 0, i32 0)619  %vr2 = call <2 x float> @llvm.amdgcn.raw.ptr.buffer.load.v2f32(ptr addrspace(8) %rsrc, i32 %a2, i32 0, i32 0)620  %r1 = extractelement <2 x float> %vr1, i32 0621  %r2 = extractelement <2 x float> %vr1, i32 1622  %r3 = extractelement <2 x float> %vr2, i32 0623  %r4 = extractelement <2 x float> %vr2, i32 1624  call void @llvm.amdgcn.exp.f32(i32 0, i32 15, float %r1, float %r2, float %r3, float %r4, i1 true, i1 true)625  ret void626}627 628define amdgpu_ps void @buffer_load_x2_offen_merged_or(ptr addrspace(8) inreg %rsrc, i32 %inp) {629; PREGFX10-LABEL: buffer_load_x2_offen_merged_or:630; PREGFX10:       ; %bb.0: ; %main_body631; PREGFX10-NEXT:    v_lshlrev_b32_e32 v0, 4, v0632; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[0:3], 0 offen offset:4633; PREGFX10-NEXT:    s_waitcnt vmcnt(0)634; PREGFX10-NEXT:    exp mrt0 v0, v1, v2, v3 done vm635; PREGFX10-NEXT:    s_endpgm636;637; GFX10-LABEL: buffer_load_x2_offen_merged_or:638; GFX10:       ; %bb.0: ; %main_body639; GFX10-NEXT:    v_lshlrev_b32_e32 v0, 4, v0640; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[0:3], 0 offen offset:4641; GFX10-NEXT:    s_waitcnt vmcnt(0)642; GFX10-NEXT:    exp mrt0 v0, v1, v2, v3 done vm643; GFX10-NEXT:    s_endpgm644;645; GFX11-LABEL: buffer_load_x2_offen_merged_or:646; GFX11:       ; %bb.0: ; %main_body647; GFX11-NEXT:    v_lshlrev_b32_e32 v0, 4, v0648; GFX11-NEXT:    buffer_load_b128 v[0:3], v0, s[0:3], 0 offen offset:4649; GFX11-NEXT:    s_waitcnt vmcnt(0)650; GFX11-NEXT:    exp mrt0 v0, v1, v2, v3 done651; GFX11-NEXT:    s_endpgm652main_body:653  %a = shl i32 %inp, 4654  %a1 = add i32 %a, 4655  %a2 = add i32 %a, 12656  %vr1 = call <2 x float> @llvm.amdgcn.raw.ptr.buffer.load.v2f32(ptr addrspace(8) %rsrc, i32 %a1, i32 0, i32 0)657  %vr2 = call <2 x float> @llvm.amdgcn.raw.ptr.buffer.load.v2f32(ptr addrspace(8) %rsrc, i32 %a2, i32 0, i32 0)658  %r1 = extractelement <2 x float> %vr1, i32 0659  %r2 = extractelement <2 x float> %vr1, i32 1660  %r3 = extractelement <2 x float> %vr2, i32 0661  %r4 = extractelement <2 x float> %vr2, i32 1662  call void @llvm.amdgcn.exp.f32(i32 0, i32 15, float %r1, float %r2, float %r3, float %r4, i1 true, i1 true)663  ret void664}665 666define amdgpu_ps void @buffer_load_x1_offset_merged(ptr addrspace(8) inreg %rsrc) {667; PREGFX10-LABEL: buffer_load_x1_offset_merged:668; PREGFX10:       ; %bb.0: ; %main_body669; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], off, s[0:3], 0 offset:4670; PREGFX10-NEXT:    buffer_load_dwordx2 v[4:5], off, s[0:3], 0 offset:28671; PREGFX10-NEXT:    s_waitcnt vmcnt(1)672; PREGFX10-NEXT:    exp mrt0 v0, v1, v2, v3 done vm673; PREGFX10-NEXT:    s_waitcnt vmcnt(0)674; PREGFX10-NEXT:    exp mrt0 v4, v5, v0, v0 done vm675; PREGFX10-NEXT:    s_endpgm676;677; GFX10-LABEL: buffer_load_x1_offset_merged:678; GFX10:       ; %bb.0: ; %main_body679; GFX10-NEXT:    s_clause 0x1680; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], off, s[0:3], 0 offset:4681; GFX10-NEXT:    buffer_load_dwordx2 v[4:5], off, s[0:3], 0 offset:28682; GFX10-NEXT:    s_waitcnt vmcnt(1)683; GFX10-NEXT:    exp mrt0 v0, v1, v2, v3 done vm684; GFX10-NEXT:    s_waitcnt vmcnt(0)685; GFX10-NEXT:    exp mrt0 v4, v5, v0, v0 done vm686; GFX10-NEXT:    s_endpgm687;688; GFX11-LABEL: buffer_load_x1_offset_merged:689; GFX11:       ; %bb.0: ; %main_body690; GFX11-NEXT:    s_clause 0x1691; GFX11-NEXT:    buffer_load_b128 v[0:3], off, s[0:3], 0 offset:4692; GFX11-NEXT:    buffer_load_b64 v[4:5], off, s[0:3], 0 offset:28693; GFX11-NEXT:    s_waitcnt vmcnt(1)694; GFX11-NEXT:    exp mrt0 v0, v1, v2, v3 done695; GFX11-NEXT:    s_waitcnt vmcnt(0)696; GFX11-NEXT:    exp mrt0 v4, v5, v0, v0 done697; GFX11-NEXT:    s_endpgm698main_body:699  %r1 = call float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8) %rsrc, i32 4, i32 0, i32 0)700  %r2 = call float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8) %rsrc, i32 8, i32 0, i32 0)701  %r3 = call float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8) %rsrc, i32 12, i32 0, i32 0)702  %r4 = call float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8) %rsrc, i32 16, i32 0, i32 0)703  %r5 = call float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8) %rsrc, i32 28, i32 0, i32 0)704  %r6 = call float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8) %rsrc, i32 32, i32 0, i32 0)705  call void @llvm.amdgcn.exp.f32(i32 0, i32 15, float %r1, float %r2, float %r3, float %r4, i1 true, i1 true)706  call void @llvm.amdgcn.exp.f32(i32 0, i32 15, float %r5, float %r6, float poison, float poison, i1 true, i1 true)707  ret void708}709 710define amdgpu_ps void @buffer_load_x2_offset_merged(ptr addrspace(8) inreg %rsrc) {711; PREGFX10-LABEL: buffer_load_x2_offset_merged:712; PREGFX10:       ; %bb.0: ; %main_body713; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], off, s[0:3], 0 offset:4714; PREGFX10-NEXT:    s_waitcnt vmcnt(0)715; PREGFX10-NEXT:    exp mrt0 v0, v1, v2, v3 done vm716; PREGFX10-NEXT:    s_endpgm717;718; GFX10-LABEL: buffer_load_x2_offset_merged:719; GFX10:       ; %bb.0: ; %main_body720; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], off, s[0:3], 0 offset:4721; GFX10-NEXT:    s_waitcnt vmcnt(0)722; GFX10-NEXT:    exp mrt0 v0, v1, v2, v3 done vm723; GFX10-NEXT:    s_endpgm724;725; GFX11-LABEL: buffer_load_x2_offset_merged:726; GFX11:       ; %bb.0: ; %main_body727; GFX11-NEXT:    buffer_load_b128 v[0:3], off, s[0:3], 0 offset:4728; GFX11-NEXT:    s_waitcnt vmcnt(0)729; GFX11-NEXT:    exp mrt0 v0, v1, v2, v3 done730; GFX11-NEXT:    s_endpgm731main_body:732  %vr1 = call <2 x float> @llvm.amdgcn.raw.ptr.buffer.load.v2f32(ptr addrspace(8) %rsrc, i32 4, i32 0, i32 0)733  %vr2 = call <2 x float> @llvm.amdgcn.raw.ptr.buffer.load.v2f32(ptr addrspace(8) %rsrc, i32 12, i32 0, i32 0)734  %r1 = extractelement <2 x float> %vr1, i32 0735  %r2 = extractelement <2 x float> %vr1, i32 1736  %r3 = extractelement <2 x float> %vr2, i32 0737  %r4 = extractelement <2 x float> %vr2, i32 1738  call void @llvm.amdgcn.exp.f32(i32 0, i32 15, float %r1, float %r2, float %r3, float %r4, i1 true, i1 true)739  ret void740}741 742define amdgpu_ps {<4 x float>, <2 x float>, float} @buffer_load_int(ptr addrspace(8) inreg) {743; PREGFX10-LABEL: buffer_load_int:744; PREGFX10:       ; %bb.0: ; %main_body745; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], off, s[0:3], 0746; PREGFX10-NEXT:    buffer_load_dwordx2 v[4:5], off, s[0:3], 0 glc747; PREGFX10-NEXT:    buffer_load_dword v6, off, s[0:3], 0 slc748; PREGFX10-NEXT:    s_waitcnt vmcnt(0)749; PREGFX10-NEXT:    ; return to shader part epilog750;751; GFX10-LABEL: buffer_load_int:752; GFX10:       ; %bb.0: ; %main_body753; GFX10-NEXT:    s_clause 0x2754; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], off, s[0:3], 0755; GFX10-NEXT:    buffer_load_dwordx2 v[4:5], off, s[0:3], 0 glc756; GFX10-NEXT:    buffer_load_dword v6, off, s[0:3], 0 slc757; GFX10-NEXT:    s_waitcnt vmcnt(0)758; GFX10-NEXT:    ; return to shader part epilog759;760; GFX11-LABEL: buffer_load_int:761; GFX11:       ; %bb.0: ; %main_body762; GFX11-NEXT:    s_clause 0x2763; GFX11-NEXT:    buffer_load_b128 v[0:3], off, s[0:3], 0764; GFX11-NEXT:    buffer_load_b64 v[4:5], off, s[0:3], 0 glc765; GFX11-NEXT:    buffer_load_b32 v6, off, s[0:3], 0 slc766; GFX11-NEXT:    s_waitcnt vmcnt(0)767; GFX11-NEXT:    ; return to shader part epilog768main_body:769  %data = call <4 x i32> @llvm.amdgcn.raw.ptr.buffer.load.v4i32(ptr addrspace(8) %0, i32 0, i32 0, i32 0)770  %data_glc = call <2 x i32> @llvm.amdgcn.raw.ptr.buffer.load.v2i32(ptr addrspace(8) %0, i32 0, i32 0, i32 1)771  %data_slc = call i32 @llvm.amdgcn.raw.ptr.buffer.load.i32(ptr addrspace(8) %0, i32 0, i32 0, i32 2)772  %fdata = bitcast <4 x i32> %data to <4 x float>773  %fdata_glc = bitcast <2 x i32> %data_glc to <2 x float>774  %fdata_slc = bitcast i32 %data_slc to float775  %r0 = insertvalue {<4 x float>, <2 x float>, float} poison, <4 x float> %fdata, 0776  %r1 = insertvalue {<4 x float>, <2 x float>, float} %r0, <2 x float> %fdata_glc, 1777  %r2 = insertvalue {<4 x float>, <2 x float>, float} %r1, float %fdata_slc, 2778  ret {<4 x float>, <2 x float>, float} %r2779}780 781define amdgpu_ps float @raw_ptr_buffer_load_ubyte(ptr addrspace(8) inreg %rsrc) {782; PREGFX10-LABEL: raw_ptr_buffer_load_ubyte:783; PREGFX10:       ; %bb.0: ; %main_body784; PREGFX10-NEXT:    buffer_load_ubyte v0, off, s[0:3], 0785; PREGFX10-NEXT:    s_waitcnt vmcnt(0)786; PREGFX10-NEXT:    v_cvt_f32_ubyte0_e32 v0, v0787; PREGFX10-NEXT:    ; return to shader part epilog788;789; GFX10-LABEL: raw_ptr_buffer_load_ubyte:790; GFX10:       ; %bb.0: ; %main_body791; GFX10-NEXT:    buffer_load_ubyte v0, off, s[0:3], 0792; GFX10-NEXT:    s_waitcnt vmcnt(0)793; GFX10-NEXT:    v_cvt_f32_ubyte0_e32 v0, v0794; GFX10-NEXT:    ; return to shader part epilog795;796; GFX11-LABEL: raw_ptr_buffer_load_ubyte:797; GFX11:       ; %bb.0: ; %main_body798; GFX11-NEXT:    buffer_load_u8 v0, off, s[0:3], 0799; GFX11-NEXT:    s_waitcnt vmcnt(0)800; GFX11-NEXT:    v_cvt_f32_ubyte0_e32 v0, v0801; GFX11-NEXT:    ; return to shader part epilog802main_body:803  %tmp = call i8 @llvm.amdgcn.raw.ptr.buffer.load.i8(ptr addrspace(8) %rsrc, i32 0, i32 0, i32 0)804  %tmp2 = zext i8 %tmp to i32805  %val = uitofp i32 %tmp2 to float806  ret float %val807}808 809define amdgpu_ps float @raw_ptr_buffer_load_i16(ptr addrspace(8) inreg %rsrc) {810; PREGFX10-LABEL: raw_ptr_buffer_load_i16:811; PREGFX10:       ; %bb.0: ; %main_body812; PREGFX10-NEXT:    buffer_load_ushort v0, off, s[0:3], 0813; PREGFX10-NEXT:    s_waitcnt vmcnt(0)814; PREGFX10-NEXT:    v_cvt_f32_u32_e32 v0, v0815; PREGFX10-NEXT:    ; return to shader part epilog816;817; GFX10-LABEL: raw_ptr_buffer_load_i16:818; GFX10:       ; %bb.0: ; %main_body819; GFX10-NEXT:    buffer_load_ushort v0, off, s[0:3], 0820; GFX10-NEXT:    s_waitcnt vmcnt(0)821; GFX10-NEXT:    v_cvt_f32_u32_e32 v0, v0822; GFX10-NEXT:    ; return to shader part epilog823;824; GFX11-LABEL: raw_ptr_buffer_load_i16:825; GFX11:       ; %bb.0: ; %main_body826; GFX11-NEXT:    buffer_load_u16 v0, off, s[0:3], 0827; GFX11-NEXT:    s_waitcnt vmcnt(0)828; GFX11-NEXT:    v_cvt_f32_u32_e32 v0, v0829; GFX11-NEXT:    ; return to shader part epilog830main_body:831  %tmp = call i16 @llvm.amdgcn.raw.ptr.buffer.load.i16(ptr addrspace(8) %rsrc, i32 0, i32 0, i32 0)832  %tmp2 = zext i16 %tmp to i32833  %val = uitofp i32 %tmp2 to float834  ret float %val835}836 837define amdgpu_ps float @raw_ptr_buffer_load_sbyte(ptr addrspace(8) inreg %rsrc) {838; PREGFX10-LABEL: raw_ptr_buffer_load_sbyte:839; PREGFX10:       ; %bb.0: ; %main_body840; PREGFX10-NEXT:    buffer_load_sbyte v0, off, s[0:3], 0841; PREGFX10-NEXT:    s_waitcnt vmcnt(0)842; PREGFX10-NEXT:    v_cvt_f32_i32_e32 v0, v0843; PREGFX10-NEXT:    ; return to shader part epilog844;845; GFX10-LABEL: raw_ptr_buffer_load_sbyte:846; GFX10:       ; %bb.0: ; %main_body847; GFX10-NEXT:    buffer_load_sbyte v0, off, s[0:3], 0848; GFX10-NEXT:    s_waitcnt vmcnt(0)849; GFX10-NEXT:    v_cvt_f32_i32_e32 v0, v0850; GFX10-NEXT:    ; return to shader part epilog851;852; GFX11-LABEL: raw_ptr_buffer_load_sbyte:853; GFX11:       ; %bb.0: ; %main_body854; GFX11-NEXT:    buffer_load_i8 v0, off, s[0:3], 0855; GFX11-NEXT:    s_waitcnt vmcnt(0)856; GFX11-NEXT:    v_cvt_f32_i32_e32 v0, v0857; GFX11-NEXT:    ; return to shader part epilog858main_body:859  %tmp = call i8 @llvm.amdgcn.raw.ptr.buffer.load.i8(ptr addrspace(8) %rsrc, i32 0, i32 0, i32 0)860  %tmp2 = sext i8 %tmp to i32861  %val = sitofp i32 %tmp2 to float862  ret float %val863}864 865define amdgpu_ps float @raw_ptr_buffer_load_sshort(ptr addrspace(8) inreg %rsrc) {866; PREGFX10-LABEL: raw_ptr_buffer_load_sshort:867; PREGFX10:       ; %bb.0: ; %main_body868; PREGFX10-NEXT:    buffer_load_sshort v0, off, s[0:3], 0869; PREGFX10-NEXT:    s_waitcnt vmcnt(0)870; PREGFX10-NEXT:    v_cvt_f32_i32_e32 v0, v0871; PREGFX10-NEXT:    ; return to shader part epilog872;873; GFX10-LABEL: raw_ptr_buffer_load_sshort:874; GFX10:       ; %bb.0: ; %main_body875; GFX10-NEXT:    buffer_load_sshort v0, off, s[0:3], 0876; GFX10-NEXT:    s_waitcnt vmcnt(0)877; GFX10-NEXT:    v_cvt_f32_i32_e32 v0, v0878; GFX10-NEXT:    ; return to shader part epilog879;880; GFX11-LABEL: raw_ptr_buffer_load_sshort:881; GFX11:       ; %bb.0: ; %main_body882; GFX11-NEXT:    buffer_load_i16 v0, off, s[0:3], 0883; GFX11-NEXT:    s_waitcnt vmcnt(0)884; GFX11-NEXT:    v_cvt_f32_i32_e32 v0, v0885; GFX11-NEXT:    ; return to shader part epilog886main_body:887  %tmp = call i16 @llvm.amdgcn.raw.ptr.buffer.load.i16(ptr addrspace(8) %rsrc, i32 0, i32 0, i32 0)888  %tmp2 = sext i16 %tmp to i32889  %val = sitofp i32 %tmp2 to float890  ret float %val891}892 893define amdgpu_ps void @raw_ptr_buffer_load_f16(ptr addrspace(8) inreg %rsrc, ptr addrspace(3) %ptr) {894; PREGFX10-LABEL: raw_ptr_buffer_load_f16:895; PREGFX10:       ; %bb.0: ; %main_body896; PREGFX10-NEXT:    buffer_load_ushort v1, off, s[0:3], 0897; PREGFX10-NEXT:    s_mov_b32 m0, -1898; PREGFX10-NEXT:    s_waitcnt vmcnt(0)899; PREGFX10-NEXT:    ds_write_b16 v0, v1900; PREGFX10-NEXT:    s_endpgm901;902; GFX10-LABEL: raw_ptr_buffer_load_f16:903; GFX10:       ; %bb.0: ; %main_body904; GFX10-NEXT:    buffer_load_ushort v1, off, s[0:3], 0905; GFX10-NEXT:    s_waitcnt vmcnt(0)906; GFX10-NEXT:    ds_write_b16 v0, v1907; GFX10-NEXT:    s_endpgm908;909; GFX11-LABEL: raw_ptr_buffer_load_f16:910; GFX11:       ; %bb.0: ; %main_body911; GFX11-NEXT:    buffer_load_u16 v1, off, s[0:3], 0912; GFX11-NEXT:    s_waitcnt vmcnt(0)913; GFX11-NEXT:    ds_store_b16 v0, v1914; GFX11-NEXT:    s_endpgm915main_body:916  %val = call half @llvm.amdgcn.raw.ptr.buffer.load.f16(ptr addrspace(8) %rsrc, i32 0, i32 0, i32 0)917  store half %val, ptr addrspace(3) %ptr918  ret void919}920 921define amdgpu_ps void @raw_ptr_buffer_load_v2f16(ptr addrspace(8) inreg %rsrc, ptr addrspace(3) %ptr) {922; PREGFX10-LABEL: raw_ptr_buffer_load_v2f16:923; PREGFX10:       ; %bb.0: ; %main_body924; PREGFX10-NEXT:    buffer_load_dword v1, off, s[0:3], 0925; PREGFX10-NEXT:    s_mov_b32 m0, -1926; PREGFX10-NEXT:    s_waitcnt vmcnt(0)927; PREGFX10-NEXT:    ds_write_b32 v0, v1928; PREGFX10-NEXT:    s_endpgm929;930; GFX10-LABEL: raw_ptr_buffer_load_v2f16:931; GFX10:       ; %bb.0: ; %main_body932; GFX10-NEXT:    buffer_load_dword v1, off, s[0:3], 0933; GFX10-NEXT:    s_waitcnt vmcnt(0)934; GFX10-NEXT:    ds_write_b32 v0, v1935; GFX10-NEXT:    s_endpgm936;937; GFX11-LABEL: raw_ptr_buffer_load_v2f16:938; GFX11:       ; %bb.0: ; %main_body939; GFX11-NEXT:    buffer_load_b32 v1, off, s[0:3], 0940; GFX11-NEXT:    s_waitcnt vmcnt(0)941; GFX11-NEXT:    ds_store_b32 v0, v1942; GFX11-NEXT:    s_endpgm943main_body:944  %val = call <2 x half> @llvm.amdgcn.raw.ptr.buffer.load.v2f16(ptr addrspace(8) %rsrc, i32 0, i32 0, i32 0)945  store <2 x half> %val, ptr addrspace(3) %ptr946  ret void947}948 949define amdgpu_ps void @raw_ptr_buffer_load_v4f16(ptr addrspace(8) inreg %rsrc, ptr addrspace(3) %ptr) {950; PREGFX10-LABEL: raw_ptr_buffer_load_v4f16:951; PREGFX10:       ; %bb.0:952; PREGFX10-NEXT:    buffer_load_dwordx2 v[1:2], off, s[0:3], 0953; PREGFX10-NEXT:    s_mov_b32 m0, -1954; PREGFX10-NEXT:    s_waitcnt vmcnt(0)955; PREGFX10-NEXT:    ds_write_b64 v0, v[1:2]956; PREGFX10-NEXT:    s_endpgm957;958; GFX10-LABEL: raw_ptr_buffer_load_v4f16:959; GFX10:       ; %bb.0:960; GFX10-NEXT:    buffer_load_dwordx2 v[1:2], off, s[0:3], 0961; GFX10-NEXT:    s_waitcnt vmcnt(0)962; GFX10-NEXT:    ds_write_b64 v0, v[1:2]963; GFX10-NEXT:    s_endpgm964;965; GFX11-LABEL: raw_ptr_buffer_load_v4f16:966; GFX11:       ; %bb.0:967; GFX11-NEXT:    buffer_load_b64 v[1:2], off, s[0:3], 0968; GFX11-NEXT:    s_waitcnt vmcnt(0)969; GFX11-NEXT:    ds_store_b64 v0, v[1:2]970; GFX11-NEXT:    s_endpgm971  %val = call <4 x half> @llvm.amdgcn.raw.ptr.buffer.load.v4f16(ptr addrspace(8) %rsrc, i32 0, i32 0, i32 0)972  store <4 x half> %val, ptr addrspace(3) %ptr973  ret void974}975 976; FIXME977; define amdgpu_ps void @raw_ptr_buffer_load_v6f16(ptr addrspace(8) inreg %rsrc, ptr addrspace(3) %ptr) {978;   %val = call <6 x half> @llvm.amdgcn.raw.ptr.buffer.load.v6f16(ptr addrspace(8) %rsrc, i32 0, i32 0, i32 0)979;   store <6 x half> %val, ptr addrspace(3) %ptr980;   ret void981; }982 983define amdgpu_ps void @raw_ptr_buffer_load_v8f16(ptr addrspace(8) inreg %rsrc, ptr addrspace(3) %ptr) {984; GFX10-LABEL: raw_ptr_buffer_load_v8f16:985; GFX10:       ; %bb.0:986; GFX10-NEXT:    buffer_load_dwordx4 v[1:4], off, s[0:3], 0987; GFX10-NEXT:    s_waitcnt vmcnt(0)988; GFX10-NEXT:    ds_write_b128 v0, v[1:4]989; GFX10-NEXT:    s_endpgm990;991; GFX11-LABEL: raw_ptr_buffer_load_v8f16:992; GFX11:       ; %bb.0:993; GFX11-NEXT:    buffer_load_b128 v[1:4], off, s[0:3], 0994; GFX11-NEXT:    s_waitcnt vmcnt(0)995; GFX11-NEXT:    ds_store_b128 v0, v[1:4]996; GFX11-NEXT:    s_endpgm997  %val = call <8 x half> @llvm.amdgcn.raw.ptr.buffer.load.v8f16(ptr addrspace(8) %rsrc, i32 0, i32 0, i32 0)998  store <8 x half> %val, ptr addrspace(3) %ptr999  ret void1000}1001 1002define amdgpu_ps void @raw_ptr_buffer_load_v2i16(ptr addrspace(8) inreg %rsrc, ptr addrspace(3) %ptr) {1003; PREGFX10-LABEL: raw_ptr_buffer_load_v2i16:1004; PREGFX10:       ; %bb.0: ; %main_body1005; PREGFX10-NEXT:    buffer_load_dword v1, off, s[0:3], 01006; PREGFX10-NEXT:    s_mov_b32 m0, -11007; PREGFX10-NEXT:    s_waitcnt vmcnt(0)1008; PREGFX10-NEXT:    ds_write_b32 v0, v11009; PREGFX10-NEXT:    s_endpgm1010;1011; GFX10-LABEL: raw_ptr_buffer_load_v2i16:1012; GFX10:       ; %bb.0: ; %main_body1013; GFX10-NEXT:    buffer_load_dword v1, off, s[0:3], 01014; GFX10-NEXT:    s_waitcnt vmcnt(0)1015; GFX10-NEXT:    ds_write_b32 v0, v11016; GFX10-NEXT:    s_endpgm1017;1018; GFX11-LABEL: raw_ptr_buffer_load_v2i16:1019; GFX11:       ; %bb.0: ; %main_body1020; GFX11-NEXT:    buffer_load_b32 v1, off, s[0:3], 01021; GFX11-NEXT:    s_waitcnt vmcnt(0)1022; GFX11-NEXT:    ds_store_b32 v0, v11023; GFX11-NEXT:    s_endpgm1024main_body:1025  %val = call <2 x i16> @llvm.amdgcn.raw.ptr.buffer.load.v2i16(ptr addrspace(8) %rsrc, i32 0, i32 0, i32 0)1026  store <2 x i16> %val, ptr addrspace(3) %ptr1027  ret void1028}1029 1030define amdgpu_ps void @raw_ptr_buffer_load_v4i16(ptr addrspace(8) inreg %rsrc, ptr addrspace(3) %ptr) {1031; PREGFX10-LABEL: raw_ptr_buffer_load_v4i16:1032; PREGFX10:       ; %bb.0:1033; PREGFX10-NEXT:    buffer_load_dwordx2 v[1:2], off, s[0:3], 01034; PREGFX10-NEXT:    s_mov_b32 m0, -11035; PREGFX10-NEXT:    s_waitcnt vmcnt(0)1036; PREGFX10-NEXT:    ds_write_b64 v0, v[1:2]1037; PREGFX10-NEXT:    s_endpgm1038;1039; GFX10-LABEL: raw_ptr_buffer_load_v4i16:1040; GFX10:       ; %bb.0:1041; GFX10-NEXT:    buffer_load_dwordx2 v[1:2], off, s[0:3], 01042; GFX10-NEXT:    s_waitcnt vmcnt(0)1043; GFX10-NEXT:    ds_write_b64 v0, v[1:2]1044; GFX10-NEXT:    s_endpgm1045;1046; GFX11-LABEL: raw_ptr_buffer_load_v4i16:1047; GFX11:       ; %bb.0:1048; GFX11-NEXT:    buffer_load_b64 v[1:2], off, s[0:3], 01049; GFX11-NEXT:    s_waitcnt vmcnt(0)1050; GFX11-NEXT:    ds_store_b64 v0, v[1:2]1051; GFX11-NEXT:    s_endpgm1052  %val = call <4 x i16> @llvm.amdgcn.raw.ptr.buffer.load.v4i16(ptr addrspace(8) %rsrc, i32 0, i32 0, i32 0)1053  store <4 x i16> %val, ptr addrspace(3) %ptr1054  ret void1055}1056 1057; FIXME1058; define amdgpu_ps void @raw_ptr_buffer_load_v6i16(ptr addrspace(8) inreg %rsrc, ptr addrspace(3) %ptr) {1059;   %val = call <6 x i16> @llvm.amdgcn.raw.ptr.buffer.load.v6i16(ptr addrspace(8) %rsrc, i32 0, i32 0, i32 0)1060;   store <6 x i16> %val, ptr addrspace(3) %ptr1061;   ret void1062; }1063 1064define amdgpu_ps void @raw_ptr_buffer_load_v8i16(ptr addrspace(8) inreg %rsrc, ptr addrspace(3) %ptr) {1065; GFX10-LABEL: raw_ptr_buffer_load_v8i16:1066; GFX10:       ; %bb.0:1067; GFX10-NEXT:    buffer_load_dwordx4 v[1:4], off, s[0:3], 01068; GFX10-NEXT:    s_waitcnt vmcnt(0)1069; GFX10-NEXT:    ds_write_b128 v0, v[1:4]1070; GFX10-NEXT:    s_endpgm1071;1072; GFX11-LABEL: raw_ptr_buffer_load_v8i16:1073; GFX11:       ; %bb.0:1074; GFX11-NEXT:    buffer_load_b128 v[1:4], off, s[0:3], 01075; GFX11-NEXT:    s_waitcnt vmcnt(0)1076; GFX11-NEXT:    ds_store_b128 v0, v[1:4]1077; GFX11-NEXT:    s_endpgm1078  %val = call <8 x i16> @llvm.amdgcn.raw.ptr.buffer.load.v8i16(ptr addrspace(8) %rsrc, i32 0, i32 0, i32 0)1079  store <8 x i16> %val, ptr addrspace(3) %ptr1080  ret void1081}1082 1083define amdgpu_ps void @raw_ptr_buffer_load_x1_offset_merged(ptr addrspace(8) inreg %rsrc) {1084; PREGFX10-LABEL: raw_ptr_buffer_load_x1_offset_merged:1085; PREGFX10:       ; %bb.0: ; %main_body1086; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], off, s[0:3], 0 offset:41087; PREGFX10-NEXT:    buffer_load_dwordx2 v[4:5], off, s[0:3], 0 offset:281088; PREGFX10-NEXT:    s_waitcnt vmcnt(1)1089; PREGFX10-NEXT:    exp mrt0 v0, v1, v2, v3 done vm1090; PREGFX10-NEXT:    s_waitcnt vmcnt(0)1091; PREGFX10-NEXT:    exp mrt0 v4, v5, v0, v0 done vm1092; PREGFX10-NEXT:    s_endpgm1093;1094; GFX10-LABEL: raw_ptr_buffer_load_x1_offset_merged:1095; GFX10:       ; %bb.0: ; %main_body1096; GFX10-NEXT:    s_clause 0x11097; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], off, s[0:3], 0 offset:41098; GFX10-NEXT:    buffer_load_dwordx2 v[4:5], off, s[0:3], 0 offset:281099; GFX10-NEXT:    s_waitcnt vmcnt(1)1100; GFX10-NEXT:    exp mrt0 v0, v1, v2, v3 done vm1101; GFX10-NEXT:    s_waitcnt vmcnt(0)1102; GFX10-NEXT:    exp mrt0 v4, v5, v0, v0 done vm1103; GFX10-NEXT:    s_endpgm1104;1105; GFX11-LABEL: raw_ptr_buffer_load_x1_offset_merged:1106; GFX11:       ; %bb.0: ; %main_body1107; GFX11-NEXT:    s_clause 0x11108; GFX11-NEXT:    buffer_load_b128 v[0:3], off, s[0:3], 0 offset:41109; GFX11-NEXT:    buffer_load_b64 v[4:5], off, s[0:3], 0 offset:281110; GFX11-NEXT:    s_waitcnt vmcnt(1)1111; GFX11-NEXT:    exp mrt0 v0, v1, v2, v3 done1112; GFX11-NEXT:    s_waitcnt vmcnt(0)1113; GFX11-NEXT:    exp mrt0 v4, v5, v0, v0 done1114; GFX11-NEXT:    s_endpgm1115main_body:1116  %r1 = call float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8) %rsrc, i32 4, i32 0, i32 0)1117  %r2 = call float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8) %rsrc, i32 8, i32 0, i32 0)1118  %r3 = call float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8) %rsrc, i32 12, i32 0, i32 0)1119  %r4 = call float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8) %rsrc, i32 16, i32 0, i32 0)1120  %r5 = call float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8) %rsrc, i32 28, i32 0, i32 0)1121  %r6 = call float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8) %rsrc, i32 32, i32 0, i32 0)1122  call void @llvm.amdgcn.exp.f32(i32 0, i32 15, float %r1, float %r2, float %r3, float %r4, i1 true, i1 true)1123  call void @llvm.amdgcn.exp.f32(i32 0, i32 15, float %r5, float %r6, float poison, float poison, i1 true, i1 true)1124  ret void1125}1126 1127define amdgpu_ps void @raw_ptr_buffer_load_x1_offset_swizzled_not_merged(ptr addrspace(8) inreg %rsrc) {1128; PREGFX10-LABEL: raw_ptr_buffer_load_x1_offset_swizzled_not_merged:1129; PREGFX10:       ; %bb.0: ; %main_body1130; PREGFX10-NEXT:    buffer_load_dword v0, off, s[0:3], 0 offset:41131; PREGFX10-NEXT:    buffer_load_dword v1, off, s[0:3], 0 offset:81132; PREGFX10-NEXT:    buffer_load_dword v2, off, s[0:3], 0 offset:121133; PREGFX10-NEXT:    buffer_load_dword v3, off, s[0:3], 0 offset:161134; PREGFX10-NEXT:    buffer_load_dword v4, off, s[0:3], 0 offset:281135; PREGFX10-NEXT:    buffer_load_dword v5, off, s[0:3], 0 offset:321136; PREGFX10-NEXT:    s_waitcnt vmcnt(2)1137; PREGFX10-NEXT:    exp mrt0 v0, v1, v2, v3 done vm1138; PREGFX10-NEXT:    s_waitcnt vmcnt(0)1139; PREGFX10-NEXT:    exp mrt0 v4, v5, v0, v0 done vm1140; PREGFX10-NEXT:    s_endpgm1141;1142; GFX10-LABEL: raw_ptr_buffer_load_x1_offset_swizzled_not_merged:1143; GFX10:       ; %bb.0: ; %main_body1144; GFX10-NEXT:    s_clause 0x51145; GFX10-NEXT:    buffer_load_dword v0, off, s[0:3], 0 offset:41146; GFX10-NEXT:    buffer_load_dword v1, off, s[0:3], 0 offset:81147; GFX10-NEXT:    buffer_load_dword v2, off, s[0:3], 0 offset:121148; GFX10-NEXT:    buffer_load_dword v3, off, s[0:3], 0 offset:161149; GFX10-NEXT:    buffer_load_dword v4, off, s[0:3], 0 offset:281150; GFX10-NEXT:    buffer_load_dword v5, off, s[0:3], 0 offset:321151; GFX10-NEXT:    s_waitcnt vmcnt(2)1152; GFX10-NEXT:    exp mrt0 v0, v1, v2, v3 done vm1153; GFX10-NEXT:    s_waitcnt vmcnt(0)1154; GFX10-NEXT:    exp mrt0 v4, v5, v0, v0 done vm1155; GFX10-NEXT:    s_endpgm1156;1157; GFX11-LABEL: raw_ptr_buffer_load_x1_offset_swizzled_not_merged:1158; GFX11:       ; %bb.0: ; %main_body1159; GFX11-NEXT:    s_clause 0x51160; GFX11-NEXT:    buffer_load_b32 v0, off, s[0:3], 0 offset:41161; GFX11-NEXT:    buffer_load_b32 v1, off, s[0:3], 0 offset:81162; GFX11-NEXT:    buffer_load_b32 v2, off, s[0:3], 0 offset:121163; GFX11-NEXT:    buffer_load_b32 v3, off, s[0:3], 0 offset:161164; GFX11-NEXT:    buffer_load_b32 v4, off, s[0:3], 0 offset:281165; GFX11-NEXT:    buffer_load_b32 v5, off, s[0:3], 0 offset:321166; GFX11-NEXT:    s_waitcnt vmcnt(2)1167; GFX11-NEXT:    exp mrt0 v0, v1, v2, v3 done1168; GFX11-NEXT:    s_waitcnt vmcnt(0)1169; GFX11-NEXT:    exp mrt0 v4, v5, v0, v0 done1170; GFX11-NEXT:    s_endpgm1171main_body:1172  %r1 = call float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8) %rsrc, i32 4, i32 0, i32 8)1173  %r2 = call float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8) %rsrc, i32 8, i32 0, i32 8)1174  %r3 = call float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8) %rsrc, i32 12, i32 0, i32 8)1175  %r4 = call float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8) %rsrc, i32 16, i32 0, i32 8)1176  %r5 = call float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8) %rsrc, i32 28, i32 0, i32 8)1177  %r6 = call float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8) %rsrc, i32 32, i32 0, i32 8)1178  call void @llvm.amdgcn.exp.f32(i32 0, i32 15, float %r1, float %r2, float %r3, float %r4, i1 true, i1 true)1179  call void @llvm.amdgcn.exp.f32(i32 0, i32 15, float %r5, float %r6, float poison, float poison, i1 true, i1 true)1180  ret void1181}1182 1183define double @buffer_load_f64__voffset_add(ptr addrspace(8) inreg %rsrc, i32 %voffset) {1184; PREGFX10-LABEL: buffer_load_f64__voffset_add:1185; PREGFX10:       ; %bb.0:1186; PREGFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1187; PREGFX10-NEXT:    buffer_load_dwordx2 v[0:1], v0, s[16:19], 0 offen offset:601188; PREGFX10-NEXT:    s_waitcnt vmcnt(0)1189; PREGFX10-NEXT:    s_setpc_b64 s[30:31]1190;1191; GFX10-LABEL: buffer_load_f64__voffset_add:1192; GFX10:       ; %bb.0:1193; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1194; GFX10-NEXT:    buffer_load_dwordx2 v[0:1], v0, s[16:19], 0 offen offset:601195; GFX10-NEXT:    s_waitcnt vmcnt(0)1196; GFX10-NEXT:    s_setpc_b64 s[30:31]1197;1198; GFX11-LABEL: buffer_load_f64__voffset_add:1199; GFX11:       ; %bb.0:1200; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1201; GFX11-NEXT:    buffer_load_b64 v[0:1], v0, s[0:3], 0 offen offset:601202; GFX11-NEXT:    s_waitcnt vmcnt(0)1203; GFX11-NEXT:    s_setpc_b64 s[30:31]1204  %voffset.add = add i32 %voffset, 601205  %data = call double @llvm.amdgcn.raw.ptr.buffer.load.f64(ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)1206  ret double %data1207}1208 1209define <2 x double> @buffer_load_v2f64__voffset_add(ptr addrspace(8) inreg %rsrc, i32 %voffset) {1210; PREGFX10-LABEL: buffer_load_v2f64__voffset_add:1211; PREGFX10:       ; %bb.0:1212; PREGFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1213; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[16:19], 0 offen offset:601214; PREGFX10-NEXT:    s_waitcnt vmcnt(0)1215; PREGFX10-NEXT:    s_setpc_b64 s[30:31]1216;1217; GFX10-LABEL: buffer_load_v2f64__voffset_add:1218; GFX10:       ; %bb.0:1219; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1220; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[16:19], 0 offen offset:601221; GFX10-NEXT:    s_waitcnt vmcnt(0)1222; GFX10-NEXT:    s_setpc_b64 s[30:31]1223;1224; GFX11-LABEL: buffer_load_v2f64__voffset_add:1225; GFX11:       ; %bb.0:1226; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1227; GFX11-NEXT:    buffer_load_b128 v[0:3], v0, s[0:3], 0 offen offset:601228; GFX11-NEXT:    s_waitcnt vmcnt(0)1229; GFX11-NEXT:    s_setpc_b64 s[30:31]1230  %voffset.add = add i32 %voffset, 601231  %data = call <2 x double> @llvm.amdgcn.raw.ptr.buffer.load.v2f64(ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)1232  ret <2 x double> %data1233}1234 1235define i64 @buffer_load_i64__voffset_add(ptr addrspace(8) inreg %rsrc, i32 %voffset) {1236; PREGFX10-LABEL: buffer_load_i64__voffset_add:1237; PREGFX10:       ; %bb.0:1238; PREGFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1239; PREGFX10-NEXT:    buffer_load_dwordx2 v[0:1], v0, s[16:19], 0 offen offset:601240; PREGFX10-NEXT:    s_waitcnt vmcnt(0)1241; PREGFX10-NEXT:    s_setpc_b64 s[30:31]1242;1243; GFX10-LABEL: buffer_load_i64__voffset_add:1244; GFX10:       ; %bb.0:1245; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1246; GFX10-NEXT:    buffer_load_dwordx2 v[0:1], v0, s[16:19], 0 offen offset:601247; GFX10-NEXT:    s_waitcnt vmcnt(0)1248; GFX10-NEXT:    s_setpc_b64 s[30:31]1249;1250; GFX11-LABEL: buffer_load_i64__voffset_add:1251; GFX11:       ; %bb.0:1252; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1253; GFX11-NEXT:    buffer_load_b64 v[0:1], v0, s[0:3], 0 offen offset:601254; GFX11-NEXT:    s_waitcnt vmcnt(0)1255; GFX11-NEXT:    s_setpc_b64 s[30:31]1256  %voffset.add = add i32 %voffset, 601257  %data = call i64 @llvm.amdgcn.raw.ptr.buffer.load.i64(ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)1258  ret i64 %data1259}1260 1261define <2 x i64> @buffer_load_v2i64__voffset_add(ptr addrspace(8) inreg %rsrc, i32 %voffset) {1262; PREGFX10-LABEL: buffer_load_v2i64__voffset_add:1263; PREGFX10:       ; %bb.0:1264; PREGFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1265; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[16:19], 0 offen offset:601266; PREGFX10-NEXT:    s_waitcnt vmcnt(0)1267; PREGFX10-NEXT:    s_setpc_b64 s[30:31]1268;1269; GFX10-LABEL: buffer_load_v2i64__voffset_add:1270; GFX10:       ; %bb.0:1271; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1272; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[16:19], 0 offen offset:601273; GFX10-NEXT:    s_waitcnt vmcnt(0)1274; GFX10-NEXT:    s_setpc_b64 s[30:31]1275;1276; GFX11-LABEL: buffer_load_v2i64__voffset_add:1277; GFX11:       ; %bb.0:1278; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1279; GFX11-NEXT:    buffer_load_b128 v[0:3], v0, s[0:3], 0 offen offset:601280; GFX11-NEXT:    s_waitcnt vmcnt(0)1281; GFX11-NEXT:    s_setpc_b64 s[30:31]1282  %voffset.add = add i32 %voffset, 601283  %data = call <2 x i64> @llvm.amdgcn.raw.ptr.buffer.load.v2i64(ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)1284  ret <2 x i64> %data1285}1286 1287define ptr @buffer_load_p0__voffset_add(ptr addrspace(8) inreg %rsrc, i32 %voffset) {1288; PREGFX10-LABEL: buffer_load_p0__voffset_add:1289; PREGFX10:       ; %bb.0:1290; PREGFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1291; PREGFX10-NEXT:    buffer_load_dwordx2 v[0:1], v0, s[16:19], 0 offen offset:601292; PREGFX10-NEXT:    s_waitcnt vmcnt(0)1293; PREGFX10-NEXT:    s_setpc_b64 s[30:31]1294;1295; GFX10-LABEL: buffer_load_p0__voffset_add:1296; GFX10:       ; %bb.0:1297; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1298; GFX10-NEXT:    buffer_load_dwordx2 v[0:1], v0, s[16:19], 0 offen offset:601299; GFX10-NEXT:    s_waitcnt vmcnt(0)1300; GFX10-NEXT:    s_setpc_b64 s[30:31]1301;1302; GFX11-LABEL: buffer_load_p0__voffset_add:1303; GFX11:       ; %bb.0:1304; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1305; GFX11-NEXT:    buffer_load_b64 v[0:1], v0, s[0:3], 0 offen offset:601306; GFX11-NEXT:    s_waitcnt vmcnt(0)1307; GFX11-NEXT:    s_setpc_b64 s[30:31]1308  %voffset.add = add i32 %voffset, 601309  %data = call ptr @llvm.amdgcn.raw.ptr.buffer.load.p0(ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)1310  ret ptr %data1311}1312 1313define <2 x ptr> @buffer_load_v2p0__voffset_add(ptr addrspace(8) inreg %rsrc, i32 %voffset) {1314; PREGFX10-LABEL: buffer_load_v2p0__voffset_add:1315; PREGFX10:       ; %bb.0:1316; PREGFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1317; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[16:19], 0 offen offset:601318; PREGFX10-NEXT:    s_waitcnt vmcnt(0)1319; PREGFX10-NEXT:    s_setpc_b64 s[30:31]1320;1321; GFX10-LABEL: buffer_load_v2p0__voffset_add:1322; GFX10:       ; %bb.0:1323; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1324; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[16:19], 0 offen offset:601325; GFX10-NEXT:    s_waitcnt vmcnt(0)1326; GFX10-NEXT:    s_setpc_b64 s[30:31]1327;1328; GFX11-LABEL: buffer_load_v2p0__voffset_add:1329; GFX11:       ; %bb.0:1330; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1331; GFX11-NEXT:    buffer_load_b128 v[0:3], v0, s[0:3], 0 offen offset:601332; GFX11-NEXT:    s_waitcnt vmcnt(0)1333; GFX11-NEXT:    s_setpc_b64 s[30:31]1334  %voffset.add = add i32 %voffset, 601335  %data = call <2 x ptr> @llvm.amdgcn.raw.ptr.buffer.load.p0(ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)1336  ret <2 x ptr> %data1337}1338 1339define ptr addrspace(1) @buffer_load_p1__voffset_add(ptr addrspace(8) inreg %rsrc, i32 %voffset) {1340; PREGFX10-LABEL: buffer_load_p1__voffset_add:1341; PREGFX10:       ; %bb.0:1342; PREGFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1343; PREGFX10-NEXT:    buffer_load_dwordx2 v[0:1], v0, s[16:19], 0 offen offset:601344; PREGFX10-NEXT:    s_waitcnt vmcnt(0)1345; PREGFX10-NEXT:    s_setpc_b64 s[30:31]1346;1347; GFX10-LABEL: buffer_load_p1__voffset_add:1348; GFX10:       ; %bb.0:1349; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1350; GFX10-NEXT:    buffer_load_dwordx2 v[0:1], v0, s[16:19], 0 offen offset:601351; GFX10-NEXT:    s_waitcnt vmcnt(0)1352; GFX10-NEXT:    s_setpc_b64 s[30:31]1353;1354; GFX11-LABEL: buffer_load_p1__voffset_add:1355; GFX11:       ; %bb.0:1356; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1357; GFX11-NEXT:    buffer_load_b64 v[0:1], v0, s[0:3], 0 offen offset:601358; GFX11-NEXT:    s_waitcnt vmcnt(0)1359; GFX11-NEXT:    s_setpc_b64 s[30:31]1360  %voffset.add = add i32 %voffset, 601361  %data = call ptr addrspace(1) @llvm.amdgcn.raw.ptr.buffer.load.p1(ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)1362  ret ptr addrspace(1) %data1363}1364 1365define <2 x ptr addrspace(1)> @buffer_load_v2p1__voffset_add(ptr addrspace(8) inreg %rsrc, i32 %voffset) {1366; PREGFX10-LABEL: buffer_load_v2p1__voffset_add:1367; PREGFX10:       ; %bb.0:1368; PREGFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1369; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[16:19], 0 offen offset:601370; PREGFX10-NEXT:    s_waitcnt vmcnt(0)1371; PREGFX10-NEXT:    s_setpc_b64 s[30:31]1372;1373; GFX10-LABEL: buffer_load_v2p1__voffset_add:1374; GFX10:       ; %bb.0:1375; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1376; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[16:19], 0 offen offset:601377; GFX10-NEXT:    s_waitcnt vmcnt(0)1378; GFX10-NEXT:    s_setpc_b64 s[30:31]1379;1380; GFX11-LABEL: buffer_load_v2p1__voffset_add:1381; GFX11:       ; %bb.0:1382; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1383; GFX11-NEXT:    buffer_load_b128 v[0:3], v0, s[0:3], 0 offen offset:601384; GFX11-NEXT:    s_waitcnt vmcnt(0)1385; GFX11-NEXT:    s_setpc_b64 s[30:31]1386  %voffset.add = add i32 %voffset, 601387  %data = call <2 x ptr addrspace(1)> @llvm.amdgcn.raw.ptr.buffer.load.p1(ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)1388  ret <2 x ptr addrspace(1)> %data1389}1390 1391define ptr addrspace(4) @buffer_load_p4__voffset_add(ptr addrspace(8) inreg %rsrc, i32 %voffset) {1392; PREGFX10-LABEL: buffer_load_p4__voffset_add:1393; PREGFX10:       ; %bb.0:1394; PREGFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1395; PREGFX10-NEXT:    buffer_load_dwordx2 v[0:1], v0, s[16:19], 0 offen offset:601396; PREGFX10-NEXT:    s_waitcnt vmcnt(0)1397; PREGFX10-NEXT:    s_setpc_b64 s[30:31]1398;1399; GFX10-LABEL: buffer_load_p4__voffset_add:1400; GFX10:       ; %bb.0:1401; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1402; GFX10-NEXT:    buffer_load_dwordx2 v[0:1], v0, s[16:19], 0 offen offset:601403; GFX10-NEXT:    s_waitcnt vmcnt(0)1404; GFX10-NEXT:    s_setpc_b64 s[30:31]1405;1406; GFX11-LABEL: buffer_load_p4__voffset_add:1407; GFX11:       ; %bb.0:1408; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1409; GFX11-NEXT:    buffer_load_b64 v[0:1], v0, s[0:3], 0 offen offset:601410; GFX11-NEXT:    s_waitcnt vmcnt(0)1411; GFX11-NEXT:    s_setpc_b64 s[30:31]1412  %voffset.add = add i32 %voffset, 601413  %data = call ptr addrspace(4) @llvm.amdgcn.raw.ptr.buffer.load.p4(ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)1414  ret ptr addrspace(4) %data1415}1416 1417define <2 x ptr addrspace(4)> @buffer_load_v2p4__voffset_add(ptr addrspace(8) inreg %rsrc, i32 %voffset) {1418; PREGFX10-LABEL: buffer_load_v2p4__voffset_add:1419; PREGFX10:       ; %bb.0:1420; PREGFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1421; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[16:19], 0 offen offset:601422; PREGFX10-NEXT:    s_waitcnt vmcnt(0)1423; PREGFX10-NEXT:    s_setpc_b64 s[30:31]1424;1425; GFX10-LABEL: buffer_load_v2p4__voffset_add:1426; GFX10:       ; %bb.0:1427; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1428; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[16:19], 0 offen offset:601429; GFX10-NEXT:    s_waitcnt vmcnt(0)1430; GFX10-NEXT:    s_setpc_b64 s[30:31]1431;1432; GFX11-LABEL: buffer_load_v2p4__voffset_add:1433; GFX11:       ; %bb.0:1434; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1435; GFX11-NEXT:    buffer_load_b128 v[0:3], v0, s[0:3], 0 offen offset:601436; GFX11-NEXT:    s_waitcnt vmcnt(0)1437; GFX11-NEXT:    s_setpc_b64 s[30:31]1438  %voffset.add = add i32 %voffset, 601439  %data = call <2 x ptr addrspace(4)> @llvm.amdgcn.raw.ptr.buffer.load.p4(ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)1440  ret <2 x ptr addrspace(4)> %data1441}1442 1443define ptr addrspace(999) @buffer_load_p999__voffset_add(ptr addrspace(8) inreg %rsrc, i32 %voffset) {1444; PREGFX10-LABEL: buffer_load_p999__voffset_add:1445; PREGFX10:       ; %bb.0:1446; PREGFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1447; PREGFX10-NEXT:    buffer_load_dwordx2 v[0:1], v0, s[16:19], 0 offen offset:601448; PREGFX10-NEXT:    s_waitcnt vmcnt(0)1449; PREGFX10-NEXT:    s_setpc_b64 s[30:31]1450;1451; GFX10-LABEL: buffer_load_p999__voffset_add:1452; GFX10:       ; %bb.0:1453; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1454; GFX10-NEXT:    buffer_load_dwordx2 v[0:1], v0, s[16:19], 0 offen offset:601455; GFX10-NEXT:    s_waitcnt vmcnt(0)1456; GFX10-NEXT:    s_setpc_b64 s[30:31]1457;1458; GFX11-LABEL: buffer_load_p999__voffset_add:1459; GFX11:       ; %bb.0:1460; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1461; GFX11-NEXT:    buffer_load_b64 v[0:1], v0, s[0:3], 0 offen offset:601462; GFX11-NEXT:    s_waitcnt vmcnt(0)1463; GFX11-NEXT:    s_setpc_b64 s[30:31]1464  %voffset.add = add i32 %voffset, 601465  %data = call ptr addrspace(999) @llvm.amdgcn.raw.ptr.buffer.load.p999(ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)1466  ret ptr addrspace(999) %data1467}1468 1469define <2 x ptr addrspace(999)> @buffer_load_v2p999__voffset_add(ptr addrspace(8) inreg %rsrc, i32 %voffset) {1470; PREGFX10-LABEL: buffer_load_v2p999__voffset_add:1471; PREGFX10:       ; %bb.0:1472; PREGFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1473; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[16:19], 0 offen offset:601474; PREGFX10-NEXT:    s_waitcnt vmcnt(0)1475; PREGFX10-NEXT:    s_setpc_b64 s[30:31]1476;1477; GFX10-LABEL: buffer_load_v2p999__voffset_add:1478; GFX10:       ; %bb.0:1479; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1480; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[16:19], 0 offen offset:601481; GFX10-NEXT:    s_waitcnt vmcnt(0)1482; GFX10-NEXT:    s_setpc_b64 s[30:31]1483;1484; GFX11-LABEL: buffer_load_v2p999__voffset_add:1485; GFX11:       ; %bb.0:1486; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1487; GFX11-NEXT:    buffer_load_b128 v[0:3], v0, s[0:3], 0 offen offset:601488; GFX11-NEXT:    s_waitcnt vmcnt(0)1489; GFX11-NEXT:    s_setpc_b64 s[30:31]1490  %voffset.add = add i32 %voffset, 601491  %data = call <2 x ptr addrspace(999)> @llvm.amdgcn.raw.ptr.buffer.load.p999(ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)1492  ret <2 x ptr addrspace(999)> %data1493}1494 1495define ptr addrspace(2) @buffer_load_p2__voffset_add(ptr addrspace(8) inreg %rsrc, i32 %voffset) {1496; PREGFX10-LABEL: buffer_load_p2__voffset_add:1497; PREGFX10:       ; %bb.0:1498; PREGFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1499; PREGFX10-NEXT:    buffer_load_dword v0, v0, s[16:19], 0 offen offset:601500; PREGFX10-NEXT:    s_waitcnt vmcnt(0)1501; PREGFX10-NEXT:    s_setpc_b64 s[30:31]1502;1503; GFX10-LABEL: buffer_load_p2__voffset_add:1504; GFX10:       ; %bb.0:1505; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1506; GFX10-NEXT:    buffer_load_dword v0, v0, s[16:19], 0 offen offset:601507; GFX10-NEXT:    s_waitcnt vmcnt(0)1508; GFX10-NEXT:    s_setpc_b64 s[30:31]1509;1510; GFX11-LABEL: buffer_load_p2__voffset_add:1511; GFX11:       ; %bb.0:1512; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1513; GFX11-NEXT:    buffer_load_b32 v0, v0, s[0:3], 0 offen offset:601514; GFX11-NEXT:    s_waitcnt vmcnt(0)1515; GFX11-NEXT:    s_setpc_b64 s[30:31]1516  %voffset.add = add i32 %voffset, 601517  %data = call ptr addrspace(2) @llvm.amdgcn.raw.ptr.buffer.load.p2(ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)1518  ret ptr addrspace(2) %data1519}1520 1521define <2 x ptr addrspace(2)> @buffer_load_v2p2__voffset_add(ptr addrspace(8) inreg %rsrc, i32 %voffset) {1522; PREGFX10-LABEL: buffer_load_v2p2__voffset_add:1523; PREGFX10:       ; %bb.0:1524; PREGFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1525; PREGFX10-NEXT:    buffer_load_dwordx2 v[0:1], v0, s[16:19], 0 offen offset:601526; PREGFX10-NEXT:    s_waitcnt vmcnt(0)1527; PREGFX10-NEXT:    s_setpc_b64 s[30:31]1528;1529; GFX10-LABEL: buffer_load_v2p2__voffset_add:1530; GFX10:       ; %bb.0:1531; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1532; GFX10-NEXT:    buffer_load_dwordx2 v[0:1], v0, s[16:19], 0 offen offset:601533; GFX10-NEXT:    s_waitcnt vmcnt(0)1534; GFX10-NEXT:    s_setpc_b64 s[30:31]1535;1536; GFX11-LABEL: buffer_load_v2p2__voffset_add:1537; GFX11:       ; %bb.0:1538; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1539; GFX11-NEXT:    buffer_load_b64 v[0:1], v0, s[0:3], 0 offen offset:601540; GFX11-NEXT:    s_waitcnt vmcnt(0)1541; GFX11-NEXT:    s_setpc_b64 s[30:31]1542  %voffset.add = add i32 %voffset, 601543  %data = call <2 x ptr addrspace(2)> @llvm.amdgcn.raw.ptr.buffer.load.v2p2(ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)1544  ret <2 x ptr addrspace(2)> %data1545}1546 1547define <3 x ptr addrspace(2)> @buffer_load_v3p2__voffset_add(ptr addrspace(8) inreg %rsrc, i32 %voffset) {1548; GFX10-LABEL: buffer_load_v3p2__voffset_add:1549; GFX10:       ; %bb.0:1550; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1551; GFX10-NEXT:    buffer_load_dwordx3 v[0:2], v0, s[16:19], 0 offen offset:601552; GFX10-NEXT:    s_waitcnt vmcnt(0)1553; GFX10-NEXT:    s_setpc_b64 s[30:31]1554;1555; GFX11-LABEL: buffer_load_v3p2__voffset_add:1556; GFX11:       ; %bb.0:1557; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1558; GFX11-NEXT:    buffer_load_b96 v[0:2], v0, s[0:3], 0 offen offset:601559; GFX11-NEXT:    s_waitcnt vmcnt(0)1560; GFX11-NEXT:    s_setpc_b64 s[30:31]1561  %voffset.add = add i32 %voffset, 601562  %data = call <3 x ptr addrspace(2)> @llvm.amdgcn.raw.ptr.buffer.load.v3p2(ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)1563  ret <3 x ptr addrspace(2)> %data1564}1565 1566define <4 x ptr addrspace(2)> @buffer_load_v4p2__voffset_add(ptr addrspace(8) inreg %rsrc, i32 %voffset) {1567; PREGFX10-LABEL: buffer_load_v4p2__voffset_add:1568; PREGFX10:       ; %bb.0:1569; PREGFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1570; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[16:19], 0 offen offset:601571; PREGFX10-NEXT:    s_waitcnt vmcnt(0)1572; PREGFX10-NEXT:    s_setpc_b64 s[30:31]1573;1574; GFX10-LABEL: buffer_load_v4p2__voffset_add:1575; GFX10:       ; %bb.0:1576; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1577; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[16:19], 0 offen offset:601578; GFX10-NEXT:    s_waitcnt vmcnt(0)1579; GFX10-NEXT:    s_setpc_b64 s[30:31]1580;1581; GFX11-LABEL: buffer_load_v4p2__voffset_add:1582; GFX11:       ; %bb.0:1583; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1584; GFX11-NEXT:    buffer_load_b128 v[0:3], v0, s[0:3], 0 offen offset:601585; GFX11-NEXT:    s_waitcnt vmcnt(0)1586; GFX11-NEXT:    s_setpc_b64 s[30:31]1587  %voffset.add = add i32 %voffset, 601588  %data = call <4 x ptr addrspace(2)> @llvm.amdgcn.raw.ptr.buffer.load.v4p2(ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)1589  ret <4 x ptr addrspace(2)> %data1590}1591 1592define ptr addrspace(3) @buffer_load_p3__voffset_add(ptr addrspace(8) inreg %rsrc, i32 %voffset) {1593; PREGFX10-LABEL: buffer_load_p3__voffset_add:1594; PREGFX10:       ; %bb.0:1595; PREGFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1596; PREGFX10-NEXT:    buffer_load_dword v0, v0, s[16:19], 0 offen offset:601597; PREGFX10-NEXT:    s_waitcnt vmcnt(0)1598; PREGFX10-NEXT:    s_setpc_b64 s[30:31]1599;1600; GFX10-LABEL: buffer_load_p3__voffset_add:1601; GFX10:       ; %bb.0:1602; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1603; GFX10-NEXT:    buffer_load_dword v0, v0, s[16:19], 0 offen offset:601604; GFX10-NEXT:    s_waitcnt vmcnt(0)1605; GFX10-NEXT:    s_setpc_b64 s[30:31]1606;1607; GFX11-LABEL: buffer_load_p3__voffset_add:1608; GFX11:       ; %bb.0:1609; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1610; GFX11-NEXT:    buffer_load_b32 v0, v0, s[0:3], 0 offen offset:601611; GFX11-NEXT:    s_waitcnt vmcnt(0)1612; GFX11-NEXT:    s_setpc_b64 s[30:31]1613  %voffset.add = add i32 %voffset, 601614  %data = call ptr addrspace(3) @llvm.amdgcn.raw.ptr.buffer.load.p3(ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)1615  ret ptr addrspace(3) %data1616}1617 1618define <2 x ptr addrspace(3)> @buffer_load_v2p3__voffset_add(ptr addrspace(8) inreg %rsrc, i32 %voffset) {1619; PREGFX10-LABEL: buffer_load_v2p3__voffset_add:1620; PREGFX10:       ; %bb.0:1621; PREGFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1622; PREGFX10-NEXT:    buffer_load_dwordx2 v[0:1], v0, s[16:19], 0 offen offset:601623; PREGFX10-NEXT:    s_waitcnt vmcnt(0)1624; PREGFX10-NEXT:    s_setpc_b64 s[30:31]1625;1626; GFX10-LABEL: buffer_load_v2p3__voffset_add:1627; GFX10:       ; %bb.0:1628; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1629; GFX10-NEXT:    buffer_load_dwordx2 v[0:1], v0, s[16:19], 0 offen offset:601630; GFX10-NEXT:    s_waitcnt vmcnt(0)1631; GFX10-NEXT:    s_setpc_b64 s[30:31]1632;1633; GFX11-LABEL: buffer_load_v2p3__voffset_add:1634; GFX11:       ; %bb.0:1635; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1636; GFX11-NEXT:    buffer_load_b64 v[0:1], v0, s[0:3], 0 offen offset:601637; GFX11-NEXT:    s_waitcnt vmcnt(0)1638; GFX11-NEXT:    s_setpc_b64 s[30:31]1639  %voffset.add = add i32 %voffset, 601640  %data = call <2 x ptr addrspace(3)> @llvm.amdgcn.raw.ptr.buffer.load.v2p3(ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)1641  ret <2 x ptr addrspace(3)> %data1642}1643 1644define <3 x ptr addrspace(3)> @buffer_load_v3p3__voffset_add(ptr addrspace(8) inreg %rsrc, i32 %voffset) {1645; GFX10-LABEL: buffer_load_v3p3__voffset_add:1646; GFX10:       ; %bb.0:1647; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1648; GFX10-NEXT:    buffer_load_dwordx3 v[0:2], v0, s[16:19], 0 offen offset:601649; GFX10-NEXT:    s_waitcnt vmcnt(0)1650; GFX10-NEXT:    s_setpc_b64 s[30:31]1651;1652; GFX11-LABEL: buffer_load_v3p3__voffset_add:1653; GFX11:       ; %bb.0:1654; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1655; GFX11-NEXT:    buffer_load_b96 v[0:2], v0, s[0:3], 0 offen offset:601656; GFX11-NEXT:    s_waitcnt vmcnt(0)1657; GFX11-NEXT:    s_setpc_b64 s[30:31]1658  %voffset.add = add i32 %voffset, 601659  %data = call <3 x ptr addrspace(3)> @llvm.amdgcn.raw.ptr.buffer.load.v3p3(ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)1660  ret <3 x ptr addrspace(3)> %data1661}1662 1663define <4 x ptr addrspace(3)> @buffer_load_v4p3__voffset_add(ptr addrspace(8) inreg %rsrc, i32 %voffset) {1664; PREGFX10-LABEL: buffer_load_v4p3__voffset_add:1665; PREGFX10:       ; %bb.0:1666; PREGFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1667; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[16:19], 0 offen offset:601668; PREGFX10-NEXT:    s_waitcnt vmcnt(0)1669; PREGFX10-NEXT:    s_setpc_b64 s[30:31]1670;1671; GFX10-LABEL: buffer_load_v4p3__voffset_add:1672; GFX10:       ; %bb.0:1673; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1674; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[16:19], 0 offen offset:601675; GFX10-NEXT:    s_waitcnt vmcnt(0)1676; GFX10-NEXT:    s_setpc_b64 s[30:31]1677;1678; GFX11-LABEL: buffer_load_v4p3__voffset_add:1679; GFX11:       ; %bb.0:1680; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1681; GFX11-NEXT:    buffer_load_b128 v[0:3], v0, s[0:3], 0 offen offset:601682; GFX11-NEXT:    s_waitcnt vmcnt(0)1683; GFX11-NEXT:    s_setpc_b64 s[30:31]1684  %voffset.add = add i32 %voffset, 601685  %data = call <4 x ptr addrspace(3)> @llvm.amdgcn.raw.ptr.buffer.load.v4p3(ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)1686  ret <4 x ptr addrspace(3)> %data1687}1688 1689define ptr addrspace(5) @buffer_load_p5__voffset_add(ptr addrspace(8) inreg %rsrc, i32 %voffset) {1690; PREGFX10-LABEL: buffer_load_p5__voffset_add:1691; PREGFX10:       ; %bb.0:1692; PREGFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1693; PREGFX10-NEXT:    buffer_load_dword v0, v0, s[16:19], 0 offen offset:601694; PREGFX10-NEXT:    s_waitcnt vmcnt(0)1695; PREGFX10-NEXT:    s_setpc_b64 s[30:31]1696;1697; GFX10-LABEL: buffer_load_p5__voffset_add:1698; GFX10:       ; %bb.0:1699; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1700; GFX10-NEXT:    buffer_load_dword v0, v0, s[16:19], 0 offen offset:601701; GFX10-NEXT:    s_waitcnt vmcnt(0)1702; GFX10-NEXT:    s_setpc_b64 s[30:31]1703;1704; GFX11-LABEL: buffer_load_p5__voffset_add:1705; GFX11:       ; %bb.0:1706; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1707; GFX11-NEXT:    buffer_load_b32 v0, v0, s[0:3], 0 offen offset:601708; GFX11-NEXT:    s_waitcnt vmcnt(0)1709; GFX11-NEXT:    s_setpc_b64 s[30:31]1710  %voffset.add = add i32 %voffset, 601711  %data = call ptr addrspace(5) @llvm.amdgcn.raw.ptr.buffer.load.p5(ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)1712  ret ptr addrspace(5) %data1713}1714 1715define <2 x ptr addrspace(5)> @buffer_load_v2p5__voffset_add(ptr addrspace(8) inreg %rsrc, i32 %voffset) {1716; PREGFX10-LABEL: buffer_load_v2p5__voffset_add:1717; PREGFX10:       ; %bb.0:1718; PREGFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1719; PREGFX10-NEXT:    buffer_load_dwordx2 v[0:1], v0, s[16:19], 0 offen offset:601720; PREGFX10-NEXT:    s_waitcnt vmcnt(0)1721; PREGFX10-NEXT:    s_setpc_b64 s[30:31]1722;1723; GFX10-LABEL: buffer_load_v2p5__voffset_add:1724; GFX10:       ; %bb.0:1725; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1726; GFX10-NEXT:    buffer_load_dwordx2 v[0:1], v0, s[16:19], 0 offen offset:601727; GFX10-NEXT:    s_waitcnt vmcnt(0)1728; GFX10-NEXT:    s_setpc_b64 s[30:31]1729;1730; GFX11-LABEL: buffer_load_v2p5__voffset_add:1731; GFX11:       ; %bb.0:1732; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1733; GFX11-NEXT:    buffer_load_b64 v[0:1], v0, s[0:3], 0 offen offset:601734; GFX11-NEXT:    s_waitcnt vmcnt(0)1735; GFX11-NEXT:    s_setpc_b64 s[30:31]1736  %voffset.add = add i32 %voffset, 601737  %data = call <2 x ptr addrspace(5)> @llvm.amdgcn.raw.ptr.buffer.load.v2p5(ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)1738  ret <2 x ptr addrspace(5)> %data1739}1740 1741define <3 x ptr addrspace(5)> @buffer_load_v3p5__voffset_add(ptr addrspace(8) inreg %rsrc, i32 %voffset) {1742; GFX10-LABEL: buffer_load_v3p5__voffset_add:1743; GFX10:       ; %bb.0:1744; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1745; GFX10-NEXT:    buffer_load_dwordx3 v[0:2], v0, s[16:19], 0 offen offset:601746; GFX10-NEXT:    s_waitcnt vmcnt(0)1747; GFX10-NEXT:    s_setpc_b64 s[30:31]1748;1749; GFX11-LABEL: buffer_load_v3p5__voffset_add:1750; GFX11:       ; %bb.0:1751; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1752; GFX11-NEXT:    buffer_load_b96 v[0:2], v0, s[0:3], 0 offen offset:601753; GFX11-NEXT:    s_waitcnt vmcnt(0)1754; GFX11-NEXT:    s_setpc_b64 s[30:31]1755  %voffset.add = add i32 %voffset, 601756  %data = call <3 x ptr addrspace(5)> @llvm.amdgcn.raw.ptr.buffer.load.v3p5(ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)1757  ret <3 x ptr addrspace(5)> %data1758}1759 1760define <4 x ptr addrspace(5)> @buffer_load_v4p5__voffset_add(ptr addrspace(8) inreg %rsrc, i32 %voffset) {1761; PREGFX10-LABEL: buffer_load_v4p5__voffset_add:1762; PREGFX10:       ; %bb.0:1763; PREGFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1764; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[16:19], 0 offen offset:601765; PREGFX10-NEXT:    s_waitcnt vmcnt(0)1766; PREGFX10-NEXT:    s_setpc_b64 s[30:31]1767;1768; GFX10-LABEL: buffer_load_v4p5__voffset_add:1769; GFX10:       ; %bb.0:1770; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1771; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[16:19], 0 offen offset:601772; GFX10-NEXT:    s_waitcnt vmcnt(0)1773; GFX10-NEXT:    s_setpc_b64 s[30:31]1774;1775; GFX11-LABEL: buffer_load_v4p5__voffset_add:1776; GFX11:       ; %bb.0:1777; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1778; GFX11-NEXT:    buffer_load_b128 v[0:3], v0, s[0:3], 0 offen offset:601779; GFX11-NEXT:    s_waitcnt vmcnt(0)1780; GFX11-NEXT:    s_setpc_b64 s[30:31]1781  %voffset.add = add i32 %voffset, 601782  %data = call <4 x ptr addrspace(5)> @llvm.amdgcn.raw.ptr.buffer.load.v4p5(ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)1783  ret <4 x ptr addrspace(5)> %data1784}1785 1786define ptr addrspace(6) @buffer_load_p6__voffset_add(ptr addrspace(8) inreg %rsrc, i32 %voffset) {1787; PREGFX10-LABEL: buffer_load_p6__voffset_add:1788; PREGFX10:       ; %bb.0:1789; PREGFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1790; PREGFX10-NEXT:    buffer_load_dword v0, v0, s[16:19], 0 offen offset:601791; PREGFX10-NEXT:    s_waitcnt vmcnt(0)1792; PREGFX10-NEXT:    s_setpc_b64 s[30:31]1793;1794; GFX10-LABEL: buffer_load_p6__voffset_add:1795; GFX10:       ; %bb.0:1796; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1797; GFX10-NEXT:    buffer_load_dword v0, v0, s[16:19], 0 offen offset:601798; GFX10-NEXT:    s_waitcnt vmcnt(0)1799; GFX10-NEXT:    s_setpc_b64 s[30:31]1800;1801; GFX11-LABEL: buffer_load_p6__voffset_add:1802; GFX11:       ; %bb.0:1803; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1804; GFX11-NEXT:    buffer_load_b32 v0, v0, s[0:3], 0 offen offset:601805; GFX11-NEXT:    s_waitcnt vmcnt(0)1806; GFX11-NEXT:    s_setpc_b64 s[30:31]1807  %voffset.add = add i32 %voffset, 601808  %data = call ptr addrspace(6) @llvm.amdgcn.raw.ptr.buffer.load.p6(ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)1809  ret ptr addrspace(6) %data1810}1811 1812define <2 x ptr addrspace(6)> @buffer_load_v2p6__voffset_add(ptr addrspace(8) inreg %rsrc, i32 %voffset) {1813; PREGFX10-LABEL: buffer_load_v2p6__voffset_add:1814; PREGFX10:       ; %bb.0:1815; PREGFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1816; PREGFX10-NEXT:    buffer_load_dwordx2 v[0:1], v0, s[16:19], 0 offen offset:601817; PREGFX10-NEXT:    s_waitcnt vmcnt(0)1818; PREGFX10-NEXT:    s_setpc_b64 s[30:31]1819;1820; GFX10-LABEL: buffer_load_v2p6__voffset_add:1821; GFX10:       ; %bb.0:1822; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1823; GFX10-NEXT:    buffer_load_dwordx2 v[0:1], v0, s[16:19], 0 offen offset:601824; GFX10-NEXT:    s_waitcnt vmcnt(0)1825; GFX10-NEXT:    s_setpc_b64 s[30:31]1826;1827; GFX11-LABEL: buffer_load_v2p6__voffset_add:1828; GFX11:       ; %bb.0:1829; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1830; GFX11-NEXT:    buffer_load_b64 v[0:1], v0, s[0:3], 0 offen offset:601831; GFX11-NEXT:    s_waitcnt vmcnt(0)1832; GFX11-NEXT:    s_setpc_b64 s[30:31]1833  %voffset.add = add i32 %voffset, 601834  %data = call <2 x ptr addrspace(6)> @llvm.amdgcn.raw.ptr.buffer.load.v2p6(ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)1835  ret <2 x ptr addrspace(6)> %data1836}1837 1838define <3 x ptr addrspace(6)> @buffer_load_v3p6__voffset_add(ptr addrspace(8) inreg %rsrc, i32 %voffset) {1839; GFX10-LABEL: buffer_load_v3p6__voffset_add:1840; GFX10:       ; %bb.0:1841; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1842; GFX10-NEXT:    buffer_load_dwordx3 v[0:2], v0, s[16:19], 0 offen offset:601843; GFX10-NEXT:    s_waitcnt vmcnt(0)1844; GFX10-NEXT:    s_setpc_b64 s[30:31]1845;1846; GFX11-LABEL: buffer_load_v3p6__voffset_add:1847; GFX11:       ; %bb.0:1848; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1849; GFX11-NEXT:    buffer_load_b96 v[0:2], v0, s[0:3], 0 offen offset:601850; GFX11-NEXT:    s_waitcnt vmcnt(0)1851; GFX11-NEXT:    s_setpc_b64 s[30:31]1852  %voffset.add = add i32 %voffset, 601853  %data = call <3 x ptr addrspace(6)> @llvm.amdgcn.raw.ptr.buffer.load.v3p6(ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)1854  ret <3 x ptr addrspace(6)> %data1855}1856 1857define <4 x ptr addrspace(6)> @buffer_load_v4p6__voffset_add(ptr addrspace(8) inreg %rsrc, i32 %voffset) {1858; PREGFX10-LABEL: buffer_load_v4p6__voffset_add:1859; PREGFX10:       ; %bb.0:1860; PREGFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1861; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[16:19], 0 offen offset:601862; PREGFX10-NEXT:    s_waitcnt vmcnt(0)1863; PREGFX10-NEXT:    s_setpc_b64 s[30:31]1864;1865; GFX10-LABEL: buffer_load_v4p6__voffset_add:1866; GFX10:       ; %bb.0:1867; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1868; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[16:19], 0 offen offset:601869; GFX10-NEXT:    s_waitcnt vmcnt(0)1870; GFX10-NEXT:    s_setpc_b64 s[30:31]1871;1872; GFX11-LABEL: buffer_load_v4p6__voffset_add:1873; GFX11:       ; %bb.0:1874; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1875; GFX11-NEXT:    buffer_load_b128 v[0:3], v0, s[0:3], 0 offen offset:601876; GFX11-NEXT:    s_waitcnt vmcnt(0)1877; GFX11-NEXT:    s_setpc_b64 s[30:31]1878  %voffset.add = add i32 %voffset, 601879  %data = call <4 x ptr addrspace(6)> @llvm.amdgcn.raw.ptr.buffer.load.v4p6(ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)1880  ret <4 x ptr addrspace(6)> %data1881}1882 1883declare float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8), i32, i32, i32) #01884declare <2 x float> @llvm.amdgcn.raw.ptr.buffer.load.v2f32(ptr addrspace(8), i32, i32, i32) #01885declare <4 x float> @llvm.amdgcn.raw.ptr.buffer.load.v4f32(ptr addrspace(8), i32, i32, i32) #01886declare i32 @llvm.amdgcn.raw.ptr.buffer.load.i32(ptr addrspace(8), i32, i32, i32) #01887declare <2 x i32> @llvm.amdgcn.raw.ptr.buffer.load.v2i32(ptr addrspace(8), i32, i32, i32) #01888declare <4 x i32> @llvm.amdgcn.raw.ptr.buffer.load.v4i32(ptr addrspace(8), i32, i32, i32) #01889declare void @llvm.amdgcn.exp.f32(i32, i32, float, float, float, float, i1, i1) #01890declare i8 @llvm.amdgcn.raw.ptr.buffer.load.i8(ptr addrspace(8), i32, i32, i32) #01891declare i16 @llvm.amdgcn.raw.ptr.buffer.load.i16(ptr addrspace(8), i32, i32, i32) #01892declare <2 x i16> @llvm.amdgcn.raw.ptr.buffer.load.v2i16(ptr addrspace(8), i32, i32, i32) #01893declare <4 x i16> @llvm.amdgcn.raw.ptr.buffer.load.v4i16(ptr addrspace(8), i32, i32, i32) #01894declare half @llvm.amdgcn.raw.ptr.buffer.load.f16(ptr addrspace(8), i32, i32, i32) #01895declare <2 x half> @llvm.amdgcn.raw.ptr.buffer.load.v2f16(ptr addrspace(8), i32, i32, i32) #01896declare <4 x half> @llvm.amdgcn.raw.ptr.buffer.load.v4f16(ptr addrspace(8), i32, i32, i32) #01897attributes #0 = { nounwind readonly }1898