brintos

brintos / llvm-project-archived public Read only

0
0
Text · 62.2 KiB · e6a59f4 Raw
1456 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;RUN: llc < %s -mtriple=amdgcn -mcpu=gfx1200 -amdgpu-enable-delay-alu=0 | FileCheck %s --check-prefixes=GFX12,GFX12-SDAG7;RUN: llc < %s -global-isel -mtriple=amdgcn -mcpu=gfx1200 -amdgpu-enable-delay-alu=0 | FileCheck %s --check-prefixes=GFX12,GFX12-GISEL8 9define amdgpu_ps {<4 x float>, <4 x float>, <4 x float>} @buffer_load(<4 x i32> inreg) {10; PREGFX10-LABEL: buffer_load:11; PREGFX10:       ; %bb.0: ; %main_body12; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], off, s[0:3], 013; PREGFX10-NEXT:    buffer_load_dwordx4 v[4:7], off, s[0:3], 0 glc14; PREGFX10-NEXT:    buffer_load_dwordx4 v[8:11], off, s[0:3], 0 slc15; PREGFX10-NEXT:    s_waitcnt vmcnt(0)16; PREGFX10-NEXT:    ; return to shader part epilog17;18; GFX10-LABEL: buffer_load:19; GFX10:       ; %bb.0: ; %main_body20; GFX10-NEXT:    s_clause 0x221; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], off, s[0:3], 022; GFX10-NEXT:    buffer_load_dwordx4 v[4:7], off, s[0:3], 0 glc23; GFX10-NEXT:    buffer_load_dwordx4 v[8:11], off, s[0:3], 0 slc24; GFX10-NEXT:    s_waitcnt vmcnt(0)25; GFX10-NEXT:    ; return to shader part epilog26;27; GFX11-LABEL: buffer_load:28; GFX11:       ; %bb.0: ; %main_body29; GFX11-NEXT:    s_clause 0x230; GFX11-NEXT:    buffer_load_b128 v[0:3], off, s[0:3], 031; GFX11-NEXT:    buffer_load_b128 v[4:7], off, s[0:3], 0 glc32; GFX11-NEXT:    buffer_load_b128 v[8:11], off, s[0:3], 0 slc33; GFX11-NEXT:    s_waitcnt vmcnt(0)34; GFX11-NEXT:    ; return to shader part epilog35;36; GFX12-LABEL: buffer_load:37; GFX12:       ; %bb.0: ; %main_body38; GFX12-NEXT:    s_clause 0x239; GFX12-NEXT:    buffer_load_b128 v[0:3], off, s[0:3], null40; GFX12-NEXT:    buffer_load_b128 v[4:7], off, s[0:3], null th:TH_LOAD_NT41; GFX12-NEXT:    buffer_load_b128 v[8:11], off, s[0:3], null th:TH_LOAD_HT42; GFX12-NEXT:    s_wait_loadcnt 0x043; GFX12-NEXT:    ; return to shader part epilog44main_body:45  %data = call <4 x float> @llvm.amdgcn.raw.buffer.load.v4f32(<4 x i32> %0, i32 0, i32 0, i32 0)46  %data_glc = call <4 x float> @llvm.amdgcn.raw.buffer.load.v4f32(<4 x i32> %0, i32 0, i32 0, i32 1)47  %data_slc = call <4 x float> @llvm.amdgcn.raw.buffer.load.v4f32(<4 x i32> %0, i32 0, i32 0, i32 2)48  %r0 = insertvalue {<4 x float>, <4 x float>, <4 x float>} poison, <4 x float> %data, 049  %r1 = insertvalue {<4 x float>, <4 x float>, <4 x float>} %r0, <4 x float> %data_glc, 150  %r2 = insertvalue {<4 x float>, <4 x float>, <4 x float>} %r1, <4 x float> %data_slc, 251  ret {<4 x float>, <4 x float>, <4 x float>} %r252}53 54define amdgpu_ps {<4 x float>, <4 x float>, <4 x float>} @buffer_load_dlc(<4 x i32> inreg) {55; PREGFX10-LABEL: buffer_load_dlc:56; PREGFX10:       ; %bb.0: ; %main_body57; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], off, s[0:3], 058; PREGFX10-NEXT:    buffer_load_dwordx4 v[4:7], off, s[0:3], 0 glc59; PREGFX10-NEXT:    buffer_load_dwordx4 v[8:11], off, s[0:3], 0 slc60; PREGFX10-NEXT:    s_waitcnt vmcnt(0)61; PREGFX10-NEXT:    ; return to shader part epilog62;63; GFX10-LABEL: buffer_load_dlc:64; GFX10:       ; %bb.0: ; %main_body65; GFX10-NEXT:    s_clause 0x266; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], off, s[0:3], 0 dlc67; GFX10-NEXT:    buffer_load_dwordx4 v[4:7], off, s[0:3], 0 glc dlc68; GFX10-NEXT:    buffer_load_dwordx4 v[8:11], off, s[0:3], 0 slc dlc69; GFX10-NEXT:    s_waitcnt vmcnt(0)70; GFX10-NEXT:    ; return to shader part epilog71;72; GFX11-LABEL: buffer_load_dlc:73; GFX11:       ; %bb.0: ; %main_body74; GFX11-NEXT:    s_clause 0x275; GFX11-NEXT:    buffer_load_b128 v[0:3], off, s[0:3], 0 dlc76; GFX11-NEXT:    buffer_load_b128 v[4:7], off, s[0:3], 0 glc dlc77; GFX11-NEXT:    buffer_load_b128 v[8:11], off, s[0:3], 0 slc dlc78; GFX11-NEXT:    s_waitcnt vmcnt(0)79; GFX11-NEXT:    ; return to shader part epilog80;81; GFX12-LABEL: buffer_load_dlc:82; GFX12:       ; %bb.0: ; %main_body83; GFX12-NEXT:    s_clause 0x284; GFX12-NEXT:    buffer_load_b128 v[0:3], off, s[0:3], null th:TH_LOAD_NT_RT85; GFX12-NEXT:    buffer_load_b128 v[4:7], off, s[0:3], null th:TH_LOAD_RT_NT86; GFX12-NEXT:    buffer_load_b128 v[8:11], off, s[0:3], null th:TH_LOAD_NT_HT87; GFX12-NEXT:    s_wait_loadcnt 0x088; GFX12-NEXT:    ; return to shader part epilog89main_body:90  %data = call <4 x float> @llvm.amdgcn.raw.buffer.load.v4f32(<4 x i32> %0, i32 0, i32 0, i32 4)91  %data_glc = call <4 x float> @llvm.amdgcn.raw.buffer.load.v4f32(<4 x i32> %0, i32 0, i32 0, i32 5)92  %data_slc = call <4 x float> @llvm.amdgcn.raw.buffer.load.v4f32(<4 x i32> %0, i32 0, i32 0, i32 6)93  %r0 = insertvalue {<4 x float>, <4 x float>, <4 x float>} poison, <4 x float> %data, 094  %r1 = insertvalue {<4 x float>, <4 x float>, <4 x float>} %r0, <4 x float> %data_glc, 195  %r2 = insertvalue {<4 x float>, <4 x float>, <4 x float>} %r1, <4 x float> %data_slc, 296  ret {<4 x float>, <4 x float>, <4 x float>} %r297}98 99define amdgpu_ps <4 x float> @buffer_load_immoffs(<4 x i32> inreg) {100; PREGFX10-LABEL: buffer_load_immoffs:101; PREGFX10:       ; %bb.0: ; %main_body102; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], off, s[0:3], 0 offset:40103; PREGFX10-NEXT:    s_waitcnt vmcnt(0)104; PREGFX10-NEXT:    ; return to shader part epilog105;106; GFX10-LABEL: buffer_load_immoffs:107; GFX10:       ; %bb.0: ; %main_body108; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], off, s[0:3], 0 offset:40109; GFX10-NEXT:    s_waitcnt vmcnt(0)110; GFX10-NEXT:    ; return to shader part epilog111;112; GFX11-LABEL: buffer_load_immoffs:113; GFX11:       ; %bb.0: ; %main_body114; GFX11-NEXT:    buffer_load_b128 v[0:3], off, s[0:3], 0 offset:40115; GFX11-NEXT:    s_waitcnt vmcnt(0)116; GFX11-NEXT:    ; return to shader part epilog117;118; GFX12-LABEL: buffer_load_immoffs:119; GFX12:       ; %bb.0: ; %main_body120; GFX12-NEXT:    buffer_load_b128 v[0:3], off, s[0:3], null offset:40121; GFX12-NEXT:    s_wait_loadcnt 0x0122; GFX12-NEXT:    ; return to shader part epilog123main_body:124  %data = call <4 x float> @llvm.amdgcn.raw.buffer.load.v4f32(<4 x i32> %0, i32 40, i32 0, i32 0)125  ret <4 x float> %data126}127 128define amdgpu_ps <4 x float> @buffer_load_immoffs_large(<4 x i32> inreg) {129; PREGFX10-LABEL: buffer_load_immoffs_large:130; PREGFX10:       ; %bb.0: ; %main_body131; PREGFX10-NEXT:    s_movk_i32 s4, 0x1ffc132; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], off, s[0:3], s4 offset:4133; PREGFX10-NEXT:    s_waitcnt vmcnt(0)134; PREGFX10-NEXT:    ; return to shader part epilog135;136; GFX10-LABEL: buffer_load_immoffs_large:137; GFX10:       ; %bb.0: ; %main_body138; GFX10-NEXT:    s_movk_i32 s4, 0x1ffc139; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], off, s[0:3], s4 offset:4140; GFX10-NEXT:    s_waitcnt vmcnt(0)141; GFX10-NEXT:    ; return to shader part epilog142;143; GFX11-LABEL: buffer_load_immoffs_large:144; GFX11:       ; %bb.0: ; %main_body145; GFX11-NEXT:    s_movk_i32 s4, 0x1ffc146; GFX11-NEXT:    buffer_load_b128 v[0:3], off, s[0:3], s4 offset:4147; GFX11-NEXT:    s_waitcnt vmcnt(0)148; GFX11-NEXT:    ; return to shader part epilog149;150; GFX12-LABEL: buffer_load_immoffs_large:151; GFX12:       ; %bb.0: ; %main_body152; GFX12-NEXT:    s_movk_i32 s4, 0x1ffc153; GFX12-NEXT:    buffer_load_b128 v[0:3], off, s[0:3], s4 offset:4154; GFX12-NEXT:    s_wait_loadcnt 0x0155; GFX12-NEXT:    ; return to shader part epilog156main_body:157  %data = call <4 x float> @llvm.amdgcn.raw.buffer.load.v4f32(<4 x i32> %0, i32 4, i32 8188, i32 0)158  ret <4 x float> %data159}160 161define amdgpu_ps <4 x float> @buffer_load_ofs(<4 x i32> inreg, i32) {162; PREGFX10-LABEL: buffer_load_ofs:163; PREGFX10:       ; %bb.0: ; %main_body164; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[0:3], 0 offen165; PREGFX10-NEXT:    s_waitcnt vmcnt(0)166; PREGFX10-NEXT:    ; return to shader part epilog167;168; GFX10-LABEL: buffer_load_ofs:169; GFX10:       ; %bb.0: ; %main_body170; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[0:3], 0 offen171; GFX10-NEXT:    s_waitcnt vmcnt(0)172; GFX10-NEXT:    ; return to shader part epilog173;174; GFX11-LABEL: buffer_load_ofs:175; GFX11:       ; %bb.0: ; %main_body176; GFX11-NEXT:    buffer_load_b128 v[0:3], v0, s[0:3], 0 offen177; GFX11-NEXT:    s_waitcnt vmcnt(0)178; GFX11-NEXT:    ; return to shader part epilog179;180; GFX12-LABEL: buffer_load_ofs:181; GFX12:       ; %bb.0: ; %main_body182; GFX12-NEXT:    buffer_load_b128 v[0:3], v0, s[0:3], null offen183; GFX12-NEXT:    s_wait_loadcnt 0x0184; GFX12-NEXT:    ; return to shader part epilog185main_body:186  %data = call <4 x float> @llvm.amdgcn.raw.buffer.load.v4f32(<4 x i32> %0, i32 %1, i32 0, i32 0)187  ret <4 x float> %data188}189 190define amdgpu_ps <4 x float> @buffer_load_ofs_imm(<4 x i32> inreg, i32) {191; PREGFX10-LABEL: buffer_load_ofs_imm:192; PREGFX10:       ; %bb.0: ; %main_body193; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[0:3], 0 offen offset:60194; PREGFX10-NEXT:    s_waitcnt vmcnt(0)195; PREGFX10-NEXT:    ; return to shader part epilog196;197; GFX10-LABEL: buffer_load_ofs_imm:198; GFX10:       ; %bb.0: ; %main_body199; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[0:3], 0 offen offset:60200; GFX10-NEXT:    s_waitcnt vmcnt(0)201; GFX10-NEXT:    ; return to shader part epilog202;203; GFX11-LABEL: buffer_load_ofs_imm:204; GFX11:       ; %bb.0: ; %main_body205; GFX11-NEXT:    buffer_load_b128 v[0:3], v0, s[0:3], 0 offen offset:60206; GFX11-NEXT:    s_waitcnt vmcnt(0)207; GFX11-NEXT:    ; return to shader part epilog208;209; GFX12-LABEL: buffer_load_ofs_imm:210; GFX12:       ; %bb.0: ; %main_body211; GFX12-NEXT:    buffer_load_b128 v[0:3], v0, s[0:3], null offen offset:60212; GFX12-NEXT:    s_wait_loadcnt 0x0213; GFX12-NEXT:    ; return to shader part epilog214main_body:215  %ofs = add i32 %1, 60216  %data = call <4 x float> @llvm.amdgcn.raw.buffer.load.v4f32(<4 x i32> %0, i32 %ofs, i32 0, i32 0)217  ret <4 x float> %data218}219 220define amdgpu_ps <4 x float> @buffer_load_voffset_large_12bit(<4 x i32> inreg) {221; PREGFX10-LABEL: buffer_load_voffset_large_12bit:222; PREGFX10:       ; %bb.0: ; %main_body223; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], off, s[0:3], 0 offset:4092224; PREGFX10-NEXT:    s_waitcnt vmcnt(0)225; PREGFX10-NEXT:    ; return to shader part epilog226;227; GFX10-LABEL: buffer_load_voffset_large_12bit:228; GFX10:       ; %bb.0: ; %main_body229; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], off, s[0:3], 0 offset:4092230; GFX10-NEXT:    s_waitcnt vmcnt(0)231; GFX10-NEXT:    ; return to shader part epilog232;233; GFX11-LABEL: buffer_load_voffset_large_12bit:234; GFX11:       ; %bb.0: ; %main_body235; GFX11-NEXT:    buffer_load_b128 v[0:3], off, s[0:3], 0 offset:4092236; GFX11-NEXT:    s_waitcnt vmcnt(0)237; GFX11-NEXT:    ; return to shader part epilog238;239; GFX12-LABEL: buffer_load_voffset_large_12bit:240; GFX12:       ; %bb.0: ; %main_body241; GFX12-NEXT:    buffer_load_b128 v[0:3], off, s[0:3], null offset:4092242; GFX12-NEXT:    s_wait_loadcnt 0x0243; GFX12-NEXT:    ; return to shader part epilog244main_body:245  %data = call <4 x float> @llvm.amdgcn.raw.buffer.load.v4f32(<4 x i32> %0, i32 4092, i32 0, i32 0)246  ret <4 x float> %data247}248 249define amdgpu_ps <4 x float> @buffer_load_voffset_large_13bit(<4 x i32> inreg) {250; PREGFX10-LABEL: buffer_load_voffset_large_13bit:251; PREGFX10:       ; %bb.0: ; %main_body252; PREGFX10-NEXT:    v_mov_b32_e32 v0, 0x1000253; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[0:3], 0 offen offset:4092254; PREGFX10-NEXT:    s_waitcnt vmcnt(0)255; PREGFX10-NEXT:    ; return to shader part epilog256;257; GFX10-LABEL: buffer_load_voffset_large_13bit:258; GFX10:       ; %bb.0: ; %main_body259; GFX10-NEXT:    v_mov_b32_e32 v0, 0x1000260; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[0:3], 0 offen offset:4092261; GFX10-NEXT:    s_waitcnt vmcnt(0)262; GFX10-NEXT:    ; return to shader part epilog263;264; GFX11-LABEL: buffer_load_voffset_large_13bit:265; GFX11:       ; %bb.0: ; %main_body266; GFX11-NEXT:    v_mov_b32_e32 v0, 0x1000267; GFX11-NEXT:    buffer_load_b128 v[0:3], v0, s[0:3], 0 offen offset:4092268; GFX11-NEXT:    s_waitcnt vmcnt(0)269; GFX11-NEXT:    ; return to shader part epilog270;271; GFX12-LABEL: buffer_load_voffset_large_13bit:272; GFX12:       ; %bb.0: ; %main_body273; GFX12-NEXT:    buffer_load_b128 v[0:3], off, s[0:3], null offset:8188274; GFX12-NEXT:    s_wait_loadcnt 0x0275; GFX12-NEXT:    ; return to shader part epilog276main_body:277  %data = call <4 x float> @llvm.amdgcn.raw.buffer.load.v4f32(<4 x i32> %0, i32 8188, i32 0, i32 0)278  ret <4 x float> %data279}280 281define amdgpu_ps <4 x float> @buffer_load_voffset_large_16bit(<4 x i32> inreg) {282; PREGFX10-LABEL: buffer_load_voffset_large_16bit:283; PREGFX10:       ; %bb.0: ; %main_body284; PREGFX10-NEXT:    v_mov_b32_e32 v0, 0xf000285; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[0:3], 0 offen offset:4092286; PREGFX10-NEXT:    s_waitcnt vmcnt(0)287; PREGFX10-NEXT:    ; return to shader part epilog288;289; GFX10-LABEL: buffer_load_voffset_large_16bit:290; GFX10:       ; %bb.0: ; %main_body291; GFX10-NEXT:    v_mov_b32_e32 v0, 0xf000292; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[0:3], 0 offen offset:4092293; GFX10-NEXT:    s_waitcnt vmcnt(0)294; GFX10-NEXT:    ; return to shader part epilog295;296; GFX11-LABEL: buffer_load_voffset_large_16bit:297; GFX11:       ; %bb.0: ; %main_body298; GFX11-NEXT:    v_mov_b32_e32 v0, 0xf000299; GFX11-NEXT:    buffer_load_b128 v[0:3], v0, s[0:3], 0 offen offset:4092300; GFX11-NEXT:    s_waitcnt vmcnt(0)301; GFX11-NEXT:    ; return to shader part epilog302;303; GFX12-LABEL: buffer_load_voffset_large_16bit:304; GFX12:       ; %bb.0: ; %main_body305; GFX12-NEXT:    buffer_load_b128 v[0:3], off, s[0:3], null offset:65532306; GFX12-NEXT:    s_wait_loadcnt 0x0307; GFX12-NEXT:    ; return to shader part epilog308main_body:309  %data = call <4 x float> @llvm.amdgcn.raw.buffer.load.v4f32(<4 x i32> %0, i32 65532, i32 0, i32 0)310  ret <4 x float> %data311}312 313define amdgpu_ps <4 x float> @buffer_load_voffset_large_23bit(<4 x i32> inreg) {314; PREGFX10-LABEL: buffer_load_voffset_large_23bit:315; PREGFX10:       ; %bb.0: ; %main_body316; PREGFX10-NEXT:    v_mov_b32_e32 v0, 0x7ff000317; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[0:3], 0 offen offset:4092318; PREGFX10-NEXT:    s_waitcnt vmcnt(0)319; PREGFX10-NEXT:    ; return to shader part epilog320;321; GFX10-LABEL: buffer_load_voffset_large_23bit:322; GFX10:       ; %bb.0: ; %main_body323; GFX10-NEXT:    v_mov_b32_e32 v0, 0x7ff000324; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[0:3], 0 offen offset:4092325; GFX10-NEXT:    s_waitcnt vmcnt(0)326; GFX10-NEXT:    ; return to shader part epilog327;328; GFX11-LABEL: buffer_load_voffset_large_23bit:329; GFX11:       ; %bb.0: ; %main_body330; GFX11-NEXT:    v_mov_b32_e32 v0, 0x7ff000331; GFX11-NEXT:    buffer_load_b128 v[0:3], v0, s[0:3], 0 offen offset:4092332; GFX11-NEXT:    s_waitcnt vmcnt(0)333; GFX11-NEXT:    ; return to shader part epilog334;335; GFX12-LABEL: buffer_load_voffset_large_23bit:336; GFX12:       ; %bb.0: ; %main_body337; GFX12-NEXT:    buffer_load_b128 v[0:3], off, s[0:3], null offset:8388604338; GFX12-NEXT:    s_wait_loadcnt 0x0339; GFX12-NEXT:    ; return to shader part epilog340main_body:341  %data = call <4 x float> @llvm.amdgcn.raw.buffer.load.v4f32(<4 x i32> %0, i32 8388604, i32 0, i32 0)342  ret <4 x float> %data343}344 345define amdgpu_ps <4 x float> @buffer_load_voffset_large_24bit(<4 x i32> inreg) {346; PREGFX10-LABEL: buffer_load_voffset_large_24bit:347; PREGFX10:       ; %bb.0: ; %main_body348; PREGFX10-NEXT:    v_mov_b32_e32 v0, 0xfff000349; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[0:3], 0 offen offset:4092350; PREGFX10-NEXT:    s_waitcnt vmcnt(0)351; PREGFX10-NEXT:    ; return to shader part epilog352;353; GFX10-LABEL: buffer_load_voffset_large_24bit:354; GFX10:       ; %bb.0: ; %main_body355; GFX10-NEXT:    v_mov_b32_e32 v0, 0xfff000356; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[0:3], 0 offen offset:4092357; GFX10-NEXT:    s_waitcnt vmcnt(0)358; GFX10-NEXT:    ; return to shader part epilog359;360; GFX11-LABEL: buffer_load_voffset_large_24bit:361; GFX11:       ; %bb.0: ; %main_body362; GFX11-NEXT:    v_mov_b32_e32 v0, 0xfff000363; GFX11-NEXT:    buffer_load_b128 v[0:3], v0, s[0:3], 0 offen offset:4092364; GFX11-NEXT:    s_waitcnt vmcnt(0)365; GFX11-NEXT:    ; return to shader part epilog366;367; GFX12-LABEL: buffer_load_voffset_large_24bit:368; GFX12:       ; %bb.0: ; %main_body369; GFX12-NEXT:    v_mov_b32_e32 v0, 0x800000370; GFX12-NEXT:    buffer_load_b128 v[0:3], v0, s[0:3], null offen offset:8388604371; GFX12-NEXT:    s_wait_loadcnt 0x0372; GFX12-NEXT:    ; return to shader part epilog373main_body:374  %data = call <4 x float> @llvm.amdgcn.raw.buffer.load.v4f32(<4 x i32> %0, i32 16777212, i32 0, i32 0)375  ret <4 x float> %data376}377 378 379define amdgpu_ps float @buffer_load_x1(<4 x i32> inreg %rsrc, i32 %ofs) {380; PREGFX10-LABEL: buffer_load_x1:381; PREGFX10:       ; %bb.0: ; %main_body382; PREGFX10-NEXT:    buffer_load_dword v0, v0, s[0:3], 0 offen383; PREGFX10-NEXT:    s_waitcnt vmcnt(0)384; PREGFX10-NEXT:    ; return to shader part epilog385;386; GFX10-LABEL: buffer_load_x1:387; GFX10:       ; %bb.0: ; %main_body388; GFX10-NEXT:    buffer_load_dword v0, v0, s[0:3], 0 offen389; GFX10-NEXT:    s_waitcnt vmcnt(0)390; GFX10-NEXT:    ; return to shader part epilog391;392; GFX11-LABEL: buffer_load_x1:393; GFX11:       ; %bb.0: ; %main_body394; GFX11-NEXT:    buffer_load_b32 v0, v0, s[0:3], 0 offen395; GFX11-NEXT:    s_waitcnt vmcnt(0)396; GFX11-NEXT:    ; return to shader part epilog397;398; GFX12-LABEL: buffer_load_x1:399; GFX12:       ; %bb.0: ; %main_body400; GFX12-NEXT:    buffer_load_b32 v0, v0, s[0:3], null offen401; GFX12-NEXT:    s_wait_loadcnt 0x0402; GFX12-NEXT:    ; return to shader part epilog403main_body:404  %data = call float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32> %rsrc, i32 %ofs, i32 0, i32 0)405  ret float %data406}407 408define amdgpu_ps <2 x float> @buffer_load_x2(<4 x i32> inreg %rsrc, i32 %ofs) {409; PREGFX10-LABEL: buffer_load_x2:410; PREGFX10:       ; %bb.0: ; %main_body411; PREGFX10-NEXT:    buffer_load_dwordx2 v[0:1], v0, s[0:3], 0 offen412; PREGFX10-NEXT:    s_waitcnt vmcnt(0)413; PREGFX10-NEXT:    ; return to shader part epilog414;415; GFX10-LABEL: buffer_load_x2:416; GFX10:       ; %bb.0: ; %main_body417; GFX10-NEXT:    buffer_load_dwordx2 v[0:1], v0, s[0:3], 0 offen418; GFX10-NEXT:    s_waitcnt vmcnt(0)419; GFX10-NEXT:    ; return to shader part epilog420;421; GFX11-LABEL: buffer_load_x2:422; GFX11:       ; %bb.0: ; %main_body423; GFX11-NEXT:    buffer_load_b64 v[0:1], v0, s[0:3], 0 offen424; GFX11-NEXT:    s_waitcnt vmcnt(0)425; GFX11-NEXT:    ; return to shader part epilog426;427; GFX12-LABEL: buffer_load_x2:428; GFX12:       ; %bb.0: ; %main_body429; GFX12-NEXT:    buffer_load_b64 v[0:1], v0, s[0:3], null offen430; GFX12-NEXT:    s_wait_loadcnt 0x0431; GFX12-NEXT:    ; return to shader part epilog432main_body:433  %data = call <2 x float> @llvm.amdgcn.raw.buffer.load.v2f32(<4 x i32> %rsrc, i32 %ofs, i32 0, i32 0)434  ret <2 x float> %data435}436 437define amdgpu_ps <4 x float> @buffer_load_negative_offset(<4 x i32> inreg, i32 %ofs) {438; GFX10-LABEL: buffer_load_negative_offset:439; GFX10:       ; %bb.0: ; %main_body440; GFX10-NEXT:    v_add_nc_u32_e32 v0, -16, v0441; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[0:3], 0 offen442; GFX10-NEXT:    s_waitcnt vmcnt(0)443; GFX10-NEXT:    ; return to shader part epilog444;445; GFX11-LABEL: buffer_load_negative_offset:446; GFX11:       ; %bb.0: ; %main_body447; GFX11-NEXT:    v_add_nc_u32_e32 v0, -16, v0448; GFX11-NEXT:    buffer_load_b128 v[0:3], v0, s[0:3], 0 offen449; GFX11-NEXT:    s_waitcnt vmcnt(0)450; GFX11-NEXT:    ; return to shader part epilog451;452; GFX12-LABEL: buffer_load_negative_offset:453; GFX12:       ; %bb.0: ; %main_body454; GFX12-NEXT:    v_add_nc_u32_e32 v0, -16, v0455; GFX12-NEXT:    buffer_load_b128 v[0:3], v0, s[0:3], null offen456; GFX12-NEXT:    s_wait_loadcnt 0x0457; GFX12-NEXT:    ; return to shader part epilog458main_body:459  %ofs.1 = add i32 %ofs, -16460  %data = call <4 x float> @llvm.amdgcn.raw.buffer.load.v4f32(<4 x i32> %0, i32 %ofs.1, i32 0, i32 0)461  ret <4 x float> %data462}463 464define amdgpu_ps float @buffer_load_mmo(<4 x i32> inreg %rsrc, ptr addrspace(3) %lds) {465; GFX10-LABEL: buffer_load_mmo:466; GFX10:       ; %bb.0: ; %entry467; GFX10-NEXT:    buffer_load_dword v1, off, s[0:3], 0468; GFX10-NEXT:    v_mov_b32_e32 v2, 0469; GFX10-NEXT:    ds_write2_b32 v0, v2, v2 offset1:4470; GFX10-NEXT:    s_waitcnt vmcnt(0)471; GFX10-NEXT:    v_mov_b32_e32 v0, v1472; GFX10-NEXT:    s_waitcnt lgkmcnt(0)473; GFX10-NEXT:    ; return to shader part epilog474;475; GFX11-LABEL: buffer_load_mmo:476; GFX11:       ; %bb.0: ; %entry477; GFX11-NEXT:    buffer_load_b32 v1, off, s[0:3], 0478; GFX11-NEXT:    v_mov_b32_e32 v2, 0479; GFX11-NEXT:    ds_store_2addr_b32 v0, v2, v2 offset1:4480; GFX11-NEXT:    s_waitcnt vmcnt(0)481; GFX11-NEXT:    v_mov_b32_e32 v0, v1482; GFX11-NEXT:    s_waitcnt lgkmcnt(0)483; GFX11-NEXT:    ; return to shader part epilog484;485; GFX12-LABEL: buffer_load_mmo:486; GFX12:       ; %bb.0: ; %entry487; GFX12-NEXT:    buffer_load_b32 v1, off, s[0:3], null488; GFX12-NEXT:    v_mov_b32_e32 v2, 0489; GFX12-NEXT:    ds_store_2addr_b32 v0, v2, v2 offset1:4490; GFX12-NEXT:    s_wait_loadcnt 0x0491; GFX12-NEXT:    v_mov_b32_e32 v0, v1492; GFX12-NEXT:    s_wait_dscnt 0x0493; GFX12-NEXT:    ; return to shader part epilog494entry:495  store float 0.0, ptr addrspace(3) %lds496  %val = call float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32> %rsrc, i32 0, i32 0, i32 0)497  %tmp2 = getelementptr float, ptr addrspace(3) %lds, i32 4498  store float 0.0, ptr addrspace(3) %tmp2499  ret float %val500}501 502define amdgpu_ps void @buffer_load_x1_offen_merged_and(<4 x i32> inreg %rsrc, i32 %a) {503; PREGFX10-LABEL: buffer_load_x1_offen_merged_and:504; PREGFX10:       ; %bb.0: ; %main_body505; PREGFX10-NEXT:    buffer_load_dwordx4 v[1:4], v0, s[0:3], 0 offen offset:4506; PREGFX10-NEXT:    buffer_load_dwordx2 v[5:6], v0, s[0:3], 0 offen offset:28507; PREGFX10-NEXT:    s_waitcnt vmcnt(1)508; PREGFX10-NEXT:    exp mrt0 v1, v2, v3, v4 done vm509; PREGFX10-NEXT:    s_waitcnt vmcnt(0)510; PREGFX10-NEXT:    exp mrt0 v5, v6, v0, v0 done vm511; PREGFX10-NEXT:    s_endpgm512;513; GFX10-LABEL: buffer_load_x1_offen_merged_and:514; GFX10:       ; %bb.0: ; %main_body515; GFX10-NEXT:    s_clause 0x1516; GFX10-NEXT:    buffer_load_dwordx4 v[1:4], v0, s[0:3], 0 offen offset:4517; GFX10-NEXT:    buffer_load_dwordx2 v[5:6], v0, s[0:3], 0 offen offset:28518; GFX10-NEXT:    s_waitcnt vmcnt(1)519; GFX10-NEXT:    exp mrt0 v1, v2, v3, v4 done vm520; GFX10-NEXT:    s_waitcnt vmcnt(0)521; GFX10-NEXT:    exp mrt0 v5, v6, v0, v0 done vm522; GFX10-NEXT:    s_endpgm523;524; GFX11-LABEL: buffer_load_x1_offen_merged_and:525; GFX11:       ; %bb.0: ; %main_body526; GFX11-NEXT:    s_clause 0x1527; GFX11-NEXT:    buffer_load_b128 v[1:4], v0, s[0:3], 0 offen offset:4528; GFX11-NEXT:    buffer_load_b64 v[5:6], v0, s[0:3], 0 offen offset:28529; GFX11-NEXT:    s_waitcnt vmcnt(1)530; GFX11-NEXT:    exp mrt0 v1, v2, v3, v4 done531; GFX11-NEXT:    s_waitcnt vmcnt(0)532; GFX11-NEXT:    exp mrt0 v5, v6, v0, v0 done533; GFX11-NEXT:    s_endpgm534;535; GFX12-LABEL: buffer_load_x1_offen_merged_and:536; GFX12:       ; %bb.0: ; %main_body537; GFX12-NEXT:    s_clause 0x1538; GFX12-NEXT:    buffer_load_b128 v[1:4], v0, s[0:3], null offen offset:4539; GFX12-NEXT:    buffer_load_b64 v[5:6], v0, s[0:3], null offen offset:28540; GFX12-NEXT:    s_wait_loadcnt 0x1541; GFX12-NEXT:    export mrt0 v1, v2, v3, v4 done542; GFX12-NEXT:    s_wait_loadcnt 0x0543; GFX12-NEXT:    export mrt0 v5, v6, v0, v0 done544; GFX12-NEXT:    s_endpgm545main_body:546  %a1 = add i32 %a, 4547  %a2 = add i32 %a, 8548  %a3 = add i32 %a, 12549  %a4 = add i32 %a, 16550  %a5 = add i32 %a, 28551  %a6 = add i32 %a, 32552  %r1 = call float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32> %rsrc, i32 %a1, i32 0, i32 0)553  %r2 = call float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32> %rsrc, i32 %a2, i32 0, i32 0)554  %r3 = call float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32> %rsrc, i32 %a3, i32 0, i32 0)555  %r4 = call float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32> %rsrc, i32 %a4, i32 0, i32 0)556  %r5 = call float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32> %rsrc, i32 %a5, i32 0, i32 0)557  %r6 = call float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32> %rsrc, i32 %a6, i32 0, i32 0)558  call void @llvm.amdgcn.exp.f32(i32 0, i32 15, float %r1, float %r2, float %r3, float %r4, i1 true, i1 true)559  call void @llvm.amdgcn.exp.f32(i32 0, i32 15, float %r5, float %r6, float poison, float poison, i1 true, i1 true)560  ret void561}562 563define amdgpu_ps void @buffer_load_x1_offen_merged_or(<4 x i32> inreg %rsrc, i32 %inp) {564; PREGFX10-LABEL: buffer_load_x1_offen_merged_or:565; PREGFX10:       ; %bb.0: ; %main_body566; PREGFX10-NEXT:    v_lshlrev_b32_e32 v4, 6, v0567; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], v4, s[0:3], 0 offen offset:4568; PREGFX10-NEXT:    buffer_load_dwordx2 v[4:5], v4, s[0:3], 0 offen offset:28569; PREGFX10-NEXT:    s_waitcnt vmcnt(1)570; PREGFX10-NEXT:    exp mrt0 v0, v1, v2, v3 done vm571; PREGFX10-NEXT:    s_waitcnt vmcnt(0)572; PREGFX10-NEXT:    exp mrt0 v4, v5, v0, v0 done vm573; PREGFX10-NEXT:    s_endpgm574;575; GFX10-LABEL: buffer_load_x1_offen_merged_or:576; GFX10:       ; %bb.0: ; %main_body577; GFX10-NEXT:    v_lshlrev_b32_e32 v6, 6, v0578; GFX10-NEXT:    s_clause 0x1579; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], v6, s[0:3], 0 offen offset:4580; GFX10-NEXT:    buffer_load_dwordx2 v[4:5], v6, s[0:3], 0 offen offset:28581; GFX10-NEXT:    s_waitcnt vmcnt(1)582; GFX10-NEXT:    exp mrt0 v0, v1, v2, v3 done vm583; GFX10-NEXT:    s_waitcnt vmcnt(0)584; GFX10-NEXT:    exp mrt0 v4, v5, v0, v0 done vm585; GFX10-NEXT:    s_endpgm586;587; GFX11-LABEL: buffer_load_x1_offen_merged_or:588; GFX11:       ; %bb.0: ; %main_body589; GFX11-NEXT:    v_lshlrev_b32_e32 v4, 6, v0590; GFX11-NEXT:    s_clause 0x1591; GFX11-NEXT:    buffer_load_b128 v[0:3], v4, s[0:3], 0 offen offset:4592; GFX11-NEXT:    buffer_load_b64 v[4:5], v4, s[0:3], 0 offen offset:28593; GFX11-NEXT:    s_waitcnt vmcnt(1)594; GFX11-NEXT:    exp mrt0 v0, v1, v2, v3 done595; GFX11-NEXT:    s_waitcnt vmcnt(0)596; GFX11-NEXT:    exp mrt0 v4, v5, v0, v0 done597; GFX11-NEXT:    s_endpgm598;599; GFX12-SDAG-LABEL: buffer_load_x1_offen_merged_or:600; GFX12-SDAG:       ; %bb.0: ; %main_body601; GFX12-SDAG-NEXT:    v_lshlrev_b32_e32 v4, 6, v0602; GFX12-SDAG-NEXT:    s_clause 0x1603; GFX12-SDAG-NEXT:    buffer_load_b128 v[0:3], v4, s[0:3], null offen offset:4604; GFX12-SDAG-NEXT:    buffer_load_b64 v[4:5], v4, s[0:3], null offen offset:28605; GFX12-SDAG-NEXT:    s_wait_loadcnt 0x1606; GFX12-SDAG-NEXT:    export mrt0 v0, v1, v2, v3 done607; GFX12-SDAG-NEXT:    s_wait_loadcnt 0x0608; GFX12-SDAG-NEXT:    export mrt0 v4, v5, v0, v0 done609; GFX12-SDAG-NEXT:    s_endpgm610;611; GFX12-GISEL-LABEL: buffer_load_x1_offen_merged_or:612; GFX12-GISEL:       ; %bb.0: ; %main_body613; GFX12-GISEL-NEXT:    v_lshlrev_b32_e32 v0, 6, v0614; GFX12-GISEL-NEXT:    v_or_b32_e32 v1, 4, v0615; GFX12-GISEL-NEXT:    v_or_b32_e32 v2, 8, v0616; GFX12-GISEL-NEXT:    v_or_b32_e32 v3, 12, v0617; GFX12-GISEL-NEXT:    v_or_b32_e32 v4, 16, v0618; GFX12-GISEL-NEXT:    v_or_b32_e32 v5, 28, v0619; GFX12-GISEL-NEXT:    v_or_b32_e32 v0, 32, v0620; GFX12-GISEL-NEXT:    s_clause 0x5621; GFX12-GISEL-NEXT:    buffer_load_b32 v1, v1, s[0:3], null offen622; GFX12-GISEL-NEXT:    buffer_load_b32 v2, v2, s[0:3], null offen623; GFX12-GISEL-NEXT:    buffer_load_b32 v3, v3, s[0:3], null offen624; GFX12-GISEL-NEXT:    buffer_load_b32 v4, v4, s[0:3], null offen625; GFX12-GISEL-NEXT:    buffer_load_b32 v5, v5, s[0:3], null offen626; GFX12-GISEL-NEXT:    buffer_load_b32 v0, v0, s[0:3], null offen627; GFX12-GISEL-NEXT:    s_wait_loadcnt 0x2628; GFX12-GISEL-NEXT:    export mrt0 v1, v2, v3, v4 done629; GFX12-GISEL-NEXT:    s_wait_loadcnt 0x0630; GFX12-GISEL-NEXT:    export mrt0 v5, v0, v0, v0 done631; GFX12-GISEL-NEXT:    s_endpgm632main_body:633  %a = shl i32 %inp, 6634  %a1 = or i32 %a, 4635  %a2 = or i32 %a, 8636  %a3 = or i32 %a, 12637  %a4 = or i32 %a, 16638  %a5 = or i32 %a, 28639  %a6 = or i32 %a, 32640  %r1 = call float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32> %rsrc, i32 %a1, i32 0, i32 0)641  %r2 = call float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32> %rsrc, i32 %a2, i32 0, i32 0)642  %r3 = call float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32> %rsrc, i32 %a3, i32 0, i32 0)643  %r4 = call float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32> %rsrc, i32 %a4, i32 0, i32 0)644  %r5 = call float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32> %rsrc, i32 %a5, i32 0, i32 0)645  %r6 = call float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32> %rsrc, i32 %a6, i32 0, i32 0)646  call void @llvm.amdgcn.exp.f32(i32 0, i32 15, float %r1, float %r2, float %r3, float %r4, i1 true, i1 true)647  call void @llvm.amdgcn.exp.f32(i32 0, i32 15, float %r5, float %r6, float poison, float poison, i1 true, i1 true)648  ret void649}650 651define amdgpu_ps void @buffer_load_x1_offen_merged_glc_slc(<4 x i32> inreg %rsrc, i32 %a) {652; PREGFX10-LABEL: buffer_load_x1_offen_merged_glc_slc:653; PREGFX10:       ; %bb.0: ; %main_body654; PREGFX10-NEXT:    buffer_load_dwordx2 v[1:2], v0, s[0:3], 0 offen offset:4655; PREGFX10-NEXT:    buffer_load_dwordx2 v[3:4], v0, s[0:3], 0 offen offset:12 glc656; PREGFX10-NEXT:    buffer_load_dwordx2 v[5:6], v0, s[0:3], 0 offen offset:28 glc slc657; PREGFX10-NEXT:    s_waitcnt vmcnt(1)658; PREGFX10-NEXT:    exp mrt0 v1, v2, v3, v4 done vm659; PREGFX10-NEXT:    s_waitcnt vmcnt(0)660; PREGFX10-NEXT:    exp mrt0 v5, v6, v0, v0 done vm661; PREGFX10-NEXT:    s_endpgm662;663; GFX10-LABEL: buffer_load_x1_offen_merged_glc_slc:664; GFX10:       ; %bb.0: ; %main_body665; GFX10-NEXT:    s_clause 0x2666; GFX10-NEXT:    buffer_load_dwordx2 v[1:2], v0, s[0:3], 0 offen offset:4667; GFX10-NEXT:    buffer_load_dwordx2 v[3:4], v0, s[0:3], 0 offen offset:12 glc668; GFX10-NEXT:    buffer_load_dwordx2 v[5:6], v0, s[0:3], 0 offen offset:28 glc slc669; GFX10-NEXT:    s_waitcnt vmcnt(1)670; GFX10-NEXT:    exp mrt0 v1, v2, v3, v4 done vm671; GFX10-NEXT:    s_waitcnt vmcnt(0)672; GFX10-NEXT:    exp mrt0 v5, v6, v0, v0 done vm673; GFX10-NEXT:    s_endpgm674;675; GFX11-LABEL: buffer_load_x1_offen_merged_glc_slc:676; GFX11:       ; %bb.0: ; %main_body677; GFX11-NEXT:    s_clause 0x2678; GFX11-NEXT:    buffer_load_b64 v[1:2], v0, s[0:3], 0 offen offset:4679; GFX11-NEXT:    buffer_load_b64 v[3:4], v0, s[0:3], 0 offen offset:12 glc680; GFX11-NEXT:    buffer_load_b64 v[5:6], v0, s[0:3], 0 offen offset:28 glc slc681; GFX11-NEXT:    s_waitcnt vmcnt(1)682; GFX11-NEXT:    exp mrt0 v1, v2, v3, v4 done683; GFX11-NEXT:    s_waitcnt vmcnt(0)684; GFX11-NEXT:    exp mrt0 v5, v6, v0, v0 done685; GFX11-NEXT:    s_endpgm686;687; GFX12-LABEL: buffer_load_x1_offen_merged_glc_slc:688; GFX12:       ; %bb.0: ; %main_body689; GFX12-NEXT:    s_clause 0x2690; GFX12-NEXT:    buffer_load_b64 v[1:2], v0, s[0:3], null offen offset:4691; GFX12-NEXT:    buffer_load_b64 v[3:4], v0, s[0:3], null offen offset:12 th:TH_LOAD_NT692; GFX12-NEXT:    buffer_load_b64 v[5:6], v0, s[0:3], null offen offset:28 th:TH_LOAD_LU693; GFX12-NEXT:    s_wait_loadcnt 0x1694; GFX12-NEXT:    export mrt0 v1, v2, v3, v4 done695; GFX12-NEXT:    s_wait_loadcnt 0x0696; GFX12-NEXT:    export mrt0 v5, v6, v0, v0 done697; GFX12-NEXT:    s_endpgm698main_body:699  %a1 = add i32 %a, 4700  %a2 = add i32 %a, 8701  %a3 = add i32 %a, 12702  %a4 = add i32 %a, 16703  %a5 = add i32 %a, 28704  %a6 = add i32 %a, 32705  %r1 = call float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32> %rsrc, i32 %a1, i32 0, i32 0)706  %r2 = call float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32> %rsrc, i32 %a2, i32 0, i32 0)707  %r3 = call float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32> %rsrc, i32 %a3, i32 0, i32 1)708  %r4 = call float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32> %rsrc, i32 %a4, i32 0, i32 1)709  %r5 = call float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32> %rsrc, i32 %a5, i32 0, i32 3)710  %r6 = call float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32> %rsrc, i32 %a6, i32 0, i32 3)711  call void @llvm.amdgcn.exp.f32(i32 0, i32 15, float %r1, float %r2, float %r3, float %r4, i1 true, i1 true)712  call void @llvm.amdgcn.exp.f32(i32 0, i32 15, float %r5, float %r6, float poison, float poison, i1 true, i1 true)713  ret void714}715 716define amdgpu_ps void @buffer_load_x2_offen_merged_and(<4 x i32> inreg %rsrc, i32 %a) {717; PREGFX10-LABEL: buffer_load_x2_offen_merged_and:718; PREGFX10:       ; %bb.0: ; %main_body719; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[0:3], 0 offen offset:4720; PREGFX10-NEXT:    s_waitcnt vmcnt(0)721; PREGFX10-NEXT:    exp mrt0 v0, v1, v2, v3 done vm722; PREGFX10-NEXT:    s_endpgm723;724; GFX10-LABEL: buffer_load_x2_offen_merged_and:725; GFX10:       ; %bb.0: ; %main_body726; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[0:3], 0 offen offset:4727; GFX10-NEXT:    s_waitcnt vmcnt(0)728; GFX10-NEXT:    exp mrt0 v0, v1, v2, v3 done vm729; GFX10-NEXT:    s_endpgm730;731; GFX11-LABEL: buffer_load_x2_offen_merged_and:732; GFX11:       ; %bb.0: ; %main_body733; GFX11-NEXT:    buffer_load_b128 v[0:3], v0, s[0:3], 0 offen offset:4734; GFX11-NEXT:    s_waitcnt vmcnt(0)735; GFX11-NEXT:    exp mrt0 v0, v1, v2, v3 done736; GFX11-NEXT:    s_endpgm737;738; GFX12-LABEL: buffer_load_x2_offen_merged_and:739; GFX12:       ; %bb.0: ; %main_body740; GFX12-NEXT:    buffer_load_b128 v[0:3], v0, s[0:3], null offen offset:4741; GFX12-NEXT:    s_wait_loadcnt 0x0742; GFX12-NEXT:    export mrt0 v0, v1, v2, v3 done743; GFX12-NEXT:    s_endpgm744main_body:745  %a1 = add i32 %a, 4746  %a2 = add i32 %a, 12747  %vr1 = call <2 x float> @llvm.amdgcn.raw.buffer.load.v2f32(<4 x i32> %rsrc, i32 %a1, i32 0, i32 0)748  %vr2 = call <2 x float> @llvm.amdgcn.raw.buffer.load.v2f32(<4 x i32> %rsrc, i32 %a2, i32 0, i32 0)749  %r1 = extractelement <2 x float> %vr1, i32 0750  %r2 = extractelement <2 x float> %vr1, i32 1751  %r3 = extractelement <2 x float> %vr2, i32 0752  %r4 = extractelement <2 x float> %vr2, i32 1753  call void @llvm.amdgcn.exp.f32(i32 0, i32 15, float %r1, float %r2, float %r3, float %r4, i1 true, i1 true)754  ret void755}756 757define amdgpu_ps void @buffer_load_x2_offen_merged_or(<4 x i32> inreg %rsrc, i32 %inp) {758; PREGFX10-LABEL: buffer_load_x2_offen_merged_or:759; PREGFX10:       ; %bb.0: ; %main_body760; PREGFX10-NEXT:    v_lshlrev_b32_e32 v0, 4, v0761; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[0:3], 0 offen offset:4762; PREGFX10-NEXT:    s_waitcnt vmcnt(0)763; PREGFX10-NEXT:    exp mrt0 v0, v1, v2, v3 done vm764; PREGFX10-NEXT:    s_endpgm765;766; GFX10-LABEL: buffer_load_x2_offen_merged_or:767; GFX10:       ; %bb.0: ; %main_body768; GFX10-NEXT:    v_lshlrev_b32_e32 v0, 4, v0769; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], v0, s[0:3], 0 offen offset:4770; GFX10-NEXT:    s_waitcnt vmcnt(0)771; GFX10-NEXT:    exp mrt0 v0, v1, v2, v3 done vm772; GFX10-NEXT:    s_endpgm773;774; GFX11-LABEL: buffer_load_x2_offen_merged_or:775; GFX11:       ; %bb.0: ; %main_body776; GFX11-NEXT:    v_lshlrev_b32_e32 v0, 4, v0777; GFX11-NEXT:    buffer_load_b128 v[0:3], v0, s[0:3], 0 offen offset:4778; GFX11-NEXT:    s_waitcnt vmcnt(0)779; GFX11-NEXT:    exp mrt0 v0, v1, v2, v3 done780; GFX11-NEXT:    s_endpgm781;782; GFX12-LABEL: buffer_load_x2_offen_merged_or:783; GFX12:       ; %bb.0: ; %main_body784; GFX12-NEXT:    v_lshlrev_b32_e32 v0, 4, v0785; GFX12-NEXT:    buffer_load_b128 v[0:3], v0, s[0:3], null offen offset:4786; GFX12-NEXT:    s_wait_loadcnt 0x0787; GFX12-NEXT:    export mrt0 v0, v1, v2, v3 done788; GFX12-NEXT:    s_endpgm789main_body:790  %a = shl i32 %inp, 4791  %a1 = add i32 %a, 4792  %a2 = add i32 %a, 12793  %vr1 = call <2 x float> @llvm.amdgcn.raw.buffer.load.v2f32(<4 x i32> %rsrc, i32 %a1, i32 0, i32 0)794  %vr2 = call <2 x float> @llvm.amdgcn.raw.buffer.load.v2f32(<4 x i32> %rsrc, i32 %a2, i32 0, i32 0)795  %r1 = extractelement <2 x float> %vr1, i32 0796  %r2 = extractelement <2 x float> %vr1, i32 1797  %r3 = extractelement <2 x float> %vr2, i32 0798  %r4 = extractelement <2 x float> %vr2, i32 1799  call void @llvm.amdgcn.exp.f32(i32 0, i32 15, float %r1, float %r2, float %r3, float %r4, i1 true, i1 true)800  ret void801}802 803define amdgpu_ps void @buffer_load_x1_offset_merged(<4 x i32> inreg %rsrc) {804; PREGFX10-LABEL: buffer_load_x1_offset_merged:805; PREGFX10:       ; %bb.0: ; %main_body806; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], off, s[0:3], 0 offset:4807; PREGFX10-NEXT:    buffer_load_dwordx2 v[4:5], off, s[0:3], 0 offset:28808; PREGFX10-NEXT:    s_waitcnt vmcnt(1)809; PREGFX10-NEXT:    exp mrt0 v0, v1, v2, v3 done vm810; PREGFX10-NEXT:    s_waitcnt vmcnt(0)811; PREGFX10-NEXT:    exp mrt0 v4, v5, v0, v0 done vm812; PREGFX10-NEXT:    s_endpgm813;814; GFX10-LABEL: buffer_load_x1_offset_merged:815; GFX10:       ; %bb.0: ; %main_body816; GFX10-NEXT:    s_clause 0x1817; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], off, s[0:3], 0 offset:4818; GFX10-NEXT:    buffer_load_dwordx2 v[4:5], off, s[0:3], 0 offset:28819; GFX10-NEXT:    s_waitcnt vmcnt(1)820; GFX10-NEXT:    exp mrt0 v0, v1, v2, v3 done vm821; GFX10-NEXT:    s_waitcnt vmcnt(0)822; GFX10-NEXT:    exp mrt0 v4, v5, v0, v0 done vm823; GFX10-NEXT:    s_endpgm824;825; GFX11-LABEL: buffer_load_x1_offset_merged:826; GFX11:       ; %bb.0: ; %main_body827; GFX11-NEXT:    s_clause 0x1828; GFX11-NEXT:    buffer_load_b128 v[0:3], off, s[0:3], 0 offset:4829; GFX11-NEXT:    buffer_load_b64 v[4:5], off, s[0:3], 0 offset:28830; GFX11-NEXT:    s_waitcnt vmcnt(1)831; GFX11-NEXT:    exp mrt0 v0, v1, v2, v3 done832; GFX11-NEXT:    s_waitcnt vmcnt(0)833; GFX11-NEXT:    exp mrt0 v4, v5, v0, v0 done834; GFX11-NEXT:    s_endpgm835;836; GFX12-LABEL: buffer_load_x1_offset_merged:837; GFX12:       ; %bb.0: ; %main_body838; GFX12-NEXT:    s_clause 0x1839; GFX12-NEXT:    buffer_load_b128 v[0:3], off, s[0:3], null offset:4840; GFX12-NEXT:    buffer_load_b64 v[4:5], off, s[0:3], null offset:28841; GFX12-NEXT:    s_wait_loadcnt 0x1842; GFX12-NEXT:    export mrt0 v0, v1, v2, v3 done843; GFX12-NEXT:    s_wait_loadcnt 0x0844; GFX12-NEXT:    export mrt0 v4, v5, v0, v0 done845; GFX12-NEXT:    s_endpgm846main_body:847  %r1 = call float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32> %rsrc, i32 4, i32 0, i32 0)848  %r2 = call float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32> %rsrc, i32 8, i32 0, i32 0)849  %r3 = call float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32> %rsrc, i32 12, i32 0, i32 0)850  %r4 = call float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32> %rsrc, i32 16, i32 0, i32 0)851  %r5 = call float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32> %rsrc, i32 28, i32 0, i32 0)852  %r6 = call float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32> %rsrc, i32 32, i32 0, i32 0)853  call void @llvm.amdgcn.exp.f32(i32 0, i32 15, float %r1, float %r2, float %r3, float %r4, i1 true, i1 true)854  call void @llvm.amdgcn.exp.f32(i32 0, i32 15, float %r5, float %r6, float poison, float poison, i1 true, i1 true)855  ret void856}857 858define amdgpu_ps void @buffer_load_x2_offset_merged(<4 x i32> inreg %rsrc) {859; PREGFX10-LABEL: buffer_load_x2_offset_merged:860; PREGFX10:       ; %bb.0: ; %main_body861; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], off, s[0:3], 0 offset:4862; PREGFX10-NEXT:    s_waitcnt vmcnt(0)863; PREGFX10-NEXT:    exp mrt0 v0, v1, v2, v3 done vm864; PREGFX10-NEXT:    s_endpgm865;866; GFX10-LABEL: buffer_load_x2_offset_merged:867; GFX10:       ; %bb.0: ; %main_body868; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], off, s[0:3], 0 offset:4869; GFX10-NEXT:    s_waitcnt vmcnt(0)870; GFX10-NEXT:    exp mrt0 v0, v1, v2, v3 done vm871; GFX10-NEXT:    s_endpgm872;873; GFX11-LABEL: buffer_load_x2_offset_merged:874; GFX11:       ; %bb.0: ; %main_body875; GFX11-NEXT:    buffer_load_b128 v[0:3], off, s[0:3], 0 offset:4876; GFX11-NEXT:    s_waitcnt vmcnt(0)877; GFX11-NEXT:    exp mrt0 v0, v1, v2, v3 done878; GFX11-NEXT:    s_endpgm879;880; GFX12-LABEL: buffer_load_x2_offset_merged:881; GFX12:       ; %bb.0: ; %main_body882; GFX12-NEXT:    buffer_load_b128 v[0:3], off, s[0:3], null offset:4883; GFX12-NEXT:    s_wait_loadcnt 0x0884; GFX12-NEXT:    export mrt0 v0, v1, v2, v3 done885; GFX12-NEXT:    s_endpgm886main_body:887  %vr1 = call <2 x float> @llvm.amdgcn.raw.buffer.load.v2f32(<4 x i32> %rsrc, i32 4, i32 0, i32 0)888  %vr2 = call <2 x float> @llvm.amdgcn.raw.buffer.load.v2f32(<4 x i32> %rsrc, i32 12, i32 0, i32 0)889  %r1 = extractelement <2 x float> %vr1, i32 0890  %r2 = extractelement <2 x float> %vr1, i32 1891  %r3 = extractelement <2 x float> %vr2, i32 0892  %r4 = extractelement <2 x float> %vr2, i32 1893  call void @llvm.amdgcn.exp.f32(i32 0, i32 15, float %r1, float %r2, float %r3, float %r4, i1 true, i1 true)894  ret void895}896 897define amdgpu_ps {<4 x float>, <2 x float>, float} @buffer_load_int(<4 x i32> inreg) {898; PREGFX10-LABEL: buffer_load_int:899; PREGFX10:       ; %bb.0: ; %main_body900; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], off, s[0:3], 0901; PREGFX10-NEXT:    buffer_load_dwordx2 v[4:5], off, s[0:3], 0 glc902; PREGFX10-NEXT:    buffer_load_dword v6, off, s[0:3], 0 slc903; PREGFX10-NEXT:    s_waitcnt vmcnt(0)904; PREGFX10-NEXT:    ; return to shader part epilog905;906; GFX10-LABEL: buffer_load_int:907; GFX10:       ; %bb.0: ; %main_body908; GFX10-NEXT:    s_clause 0x2909; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], off, s[0:3], 0910; GFX10-NEXT:    buffer_load_dwordx2 v[4:5], off, s[0:3], 0 glc911; GFX10-NEXT:    buffer_load_dword v6, off, s[0:3], 0 slc912; GFX10-NEXT:    s_waitcnt vmcnt(0)913; GFX10-NEXT:    ; return to shader part epilog914;915; GFX11-LABEL: buffer_load_int:916; GFX11:       ; %bb.0: ; %main_body917; GFX11-NEXT:    s_clause 0x2918; GFX11-NEXT:    buffer_load_b128 v[0:3], off, s[0:3], 0919; GFX11-NEXT:    buffer_load_b64 v[4:5], off, s[0:3], 0 glc920; GFX11-NEXT:    buffer_load_b32 v6, off, s[0:3], 0 slc921; GFX11-NEXT:    s_waitcnt vmcnt(0)922; GFX11-NEXT:    ; return to shader part epilog923;924; GFX12-LABEL: buffer_load_int:925; GFX12:       ; %bb.0: ; %main_body926; GFX12-NEXT:    s_clause 0x2927; GFX12-NEXT:    buffer_load_b128 v[0:3], off, s[0:3], null928; GFX12-NEXT:    buffer_load_b64 v[4:5], off, s[0:3], null th:TH_LOAD_NT929; GFX12-NEXT:    buffer_load_b32 v6, off, s[0:3], null th:TH_LOAD_HT930; GFX12-NEXT:    s_wait_loadcnt 0x0931; GFX12-NEXT:    ; return to shader part epilog932main_body:933  %data = call <4 x i32> @llvm.amdgcn.raw.buffer.load.v4i32(<4 x i32> %0, i32 0, i32 0, i32 0)934  %data_glc = call <2 x i32> @llvm.amdgcn.raw.buffer.load.v2i32(<4 x i32> %0, i32 0, i32 0, i32 1)935  %data_slc = call i32 @llvm.amdgcn.raw.buffer.load.i32(<4 x i32> %0, i32 0, i32 0, i32 2)936  %fdata = bitcast <4 x i32> %data to <4 x float>937  %fdata_glc = bitcast <2 x i32> %data_glc to <2 x float>938  %fdata_slc = bitcast i32 %data_slc to float939  %r0 = insertvalue {<4 x float>, <2 x float>, float} poison, <4 x float> %fdata, 0940  %r1 = insertvalue {<4 x float>, <2 x float>, float} %r0, <2 x float> %fdata_glc, 1941  %r2 = insertvalue {<4 x float>, <2 x float>, float} %r1, float %fdata_slc, 2942  ret {<4 x float>, <2 x float>, float} %r2943}944 945define amdgpu_ps float @raw_buffer_load_ubyte(<4 x i32> inreg %rsrc) {946; PREGFX10-LABEL: raw_buffer_load_ubyte:947; PREGFX10:       ; %bb.0: ; %main_body948; PREGFX10-NEXT:    buffer_load_ubyte v0, off, s[0:3], 0949; PREGFX10-NEXT:    s_waitcnt vmcnt(0)950; PREGFX10-NEXT:    v_cvt_f32_ubyte0_e32 v0, v0951; PREGFX10-NEXT:    ; return to shader part epilog952;953; GFX10-LABEL: raw_buffer_load_ubyte:954; GFX10:       ; %bb.0: ; %main_body955; GFX10-NEXT:    buffer_load_ubyte v0, off, s[0:3], 0956; GFX10-NEXT:    s_waitcnt vmcnt(0)957; GFX10-NEXT:    v_cvt_f32_ubyte0_e32 v0, v0958; GFX10-NEXT:    ; return to shader part epilog959;960; GFX11-LABEL: raw_buffer_load_ubyte:961; GFX11:       ; %bb.0: ; %main_body962; GFX11-NEXT:    buffer_load_u8 v0, off, s[0:3], 0963; GFX11-NEXT:    s_waitcnt vmcnt(0)964; GFX11-NEXT:    v_cvt_f32_ubyte0_e32 v0, v0965; GFX11-NEXT:    ; return to shader part epilog966;967; GFX12-LABEL: raw_buffer_load_ubyte:968; GFX12:       ; %bb.0: ; %main_body969; GFX12-NEXT:    buffer_load_u8 v0, off, s[0:3], null970; GFX12-NEXT:    s_wait_loadcnt 0x0971; GFX12-NEXT:    v_cvt_f32_ubyte0_e32 v0, v0972; GFX12-NEXT:    ; return to shader part epilog973main_body:974  %tmp = call i8 @llvm.amdgcn.raw.buffer.load.i8(<4 x i32> %rsrc, i32 0, i32 0, i32 0)975  %tmp2 = zext i8 %tmp to i32976  %val = uitofp i32 %tmp2 to float977  ret float %val978}979 980define amdgpu_ps float @raw_buffer_load_i16(<4 x i32> inreg %rsrc) {981; PREGFX10-LABEL: raw_buffer_load_i16:982; PREGFX10:       ; %bb.0: ; %main_body983; PREGFX10-NEXT:    buffer_load_ushort v0, off, s[0:3], 0984; PREGFX10-NEXT:    s_waitcnt vmcnt(0)985; PREGFX10-NEXT:    v_cvt_f32_u32_e32 v0, v0986; PREGFX10-NEXT:    ; return to shader part epilog987;988; GFX10-LABEL: raw_buffer_load_i16:989; GFX10:       ; %bb.0: ; %main_body990; GFX10-NEXT:    buffer_load_ushort v0, off, s[0:3], 0991; GFX10-NEXT:    s_waitcnt vmcnt(0)992; GFX10-NEXT:    v_cvt_f32_u32_e32 v0, v0993; GFX10-NEXT:    ; return to shader part epilog994;995; GFX11-LABEL: raw_buffer_load_i16:996; GFX11:       ; %bb.0: ; %main_body997; GFX11-NEXT:    buffer_load_u16 v0, off, s[0:3], 0998; GFX11-NEXT:    s_waitcnt vmcnt(0)999; GFX11-NEXT:    v_cvt_f32_u32_e32 v0, v01000; GFX11-NEXT:    ; return to shader part epilog1001;1002; GFX12-LABEL: raw_buffer_load_i16:1003; GFX12:       ; %bb.0: ; %main_body1004; GFX12-NEXT:    buffer_load_u16 v0, off, s[0:3], null1005; GFX12-NEXT:    s_wait_loadcnt 0x01006; GFX12-NEXT:    v_cvt_f32_u32_e32 v0, v01007; GFX12-NEXT:    ; return to shader part epilog1008main_body:1009  %tmp = call i16 @llvm.amdgcn.raw.buffer.load.i16(<4 x i32> %rsrc, i32 0, i32 0, i32 0)1010  %tmp2 = zext i16 %tmp to i321011  %val = uitofp i32 %tmp2 to float1012  ret float %val1013}1014 1015define amdgpu_ps float @raw_buffer_load_sbyte(<4 x i32> inreg %rsrc) {1016; PREGFX10-LABEL: raw_buffer_load_sbyte:1017; PREGFX10:       ; %bb.0: ; %main_body1018; PREGFX10-NEXT:    buffer_load_sbyte v0, off, s[0:3], 01019; PREGFX10-NEXT:    s_waitcnt vmcnt(0)1020; PREGFX10-NEXT:    v_cvt_f32_i32_e32 v0, v01021; PREGFX10-NEXT:    ; return to shader part epilog1022;1023; GFX10-LABEL: raw_buffer_load_sbyte:1024; GFX10:       ; %bb.0: ; %main_body1025; GFX10-NEXT:    buffer_load_sbyte v0, off, s[0:3], 01026; GFX10-NEXT:    s_waitcnt vmcnt(0)1027; GFX10-NEXT:    v_cvt_f32_i32_e32 v0, v01028; GFX10-NEXT:    ; return to shader part epilog1029;1030; GFX11-LABEL: raw_buffer_load_sbyte:1031; GFX11:       ; %bb.0: ; %main_body1032; GFX11-NEXT:    buffer_load_i8 v0, off, s[0:3], 01033; GFX11-NEXT:    s_waitcnt vmcnt(0)1034; GFX11-NEXT:    v_cvt_f32_i32_e32 v0, v01035; GFX11-NEXT:    ; return to shader part epilog1036;1037; GFX12-LABEL: raw_buffer_load_sbyte:1038; GFX12:       ; %bb.0: ; %main_body1039; GFX12-NEXT:    buffer_load_i8 v0, off, s[0:3], null1040; GFX12-NEXT:    s_wait_loadcnt 0x01041; GFX12-NEXT:    v_cvt_f32_i32_e32 v0, v01042; GFX12-NEXT:    ; return to shader part epilog1043main_body:1044  %tmp = call i8 @llvm.amdgcn.raw.buffer.load.i8(<4 x i32> %rsrc, i32 0, i32 0, i32 0)1045  %tmp2 = sext i8 %tmp to i321046  %val = sitofp i32 %tmp2 to float1047  ret float %val1048}1049 1050define amdgpu_ps float @raw_buffer_load_sshort(<4 x i32> inreg %rsrc) {1051; PREGFX10-LABEL: raw_buffer_load_sshort:1052; PREGFX10:       ; %bb.0: ; %main_body1053; PREGFX10-NEXT:    buffer_load_sshort v0, off, s[0:3], 01054; PREGFX10-NEXT:    s_waitcnt vmcnt(0)1055; PREGFX10-NEXT:    v_cvt_f32_i32_e32 v0, v01056; PREGFX10-NEXT:    ; return to shader part epilog1057;1058; GFX10-LABEL: raw_buffer_load_sshort:1059; GFX10:       ; %bb.0: ; %main_body1060; GFX10-NEXT:    buffer_load_sshort v0, off, s[0:3], 01061; GFX10-NEXT:    s_waitcnt vmcnt(0)1062; GFX10-NEXT:    v_cvt_f32_i32_e32 v0, v01063; GFX10-NEXT:    ; return to shader part epilog1064;1065; GFX11-LABEL: raw_buffer_load_sshort:1066; GFX11:       ; %bb.0: ; %main_body1067; GFX11-NEXT:    buffer_load_i16 v0, off, s[0:3], 01068; GFX11-NEXT:    s_waitcnt vmcnt(0)1069; GFX11-NEXT:    v_cvt_f32_i32_e32 v0, v01070; GFX11-NEXT:    ; return to shader part epilog1071;1072; GFX12-LABEL: raw_buffer_load_sshort:1073; GFX12:       ; %bb.0: ; %main_body1074; GFX12-NEXT:    buffer_load_i16 v0, off, s[0:3], null1075; GFX12-NEXT:    s_wait_loadcnt 0x01076; GFX12-NEXT:    v_cvt_f32_i32_e32 v0, v01077; GFX12-NEXT:    ; return to shader part epilog1078main_body:1079  %tmp = call i16 @llvm.amdgcn.raw.buffer.load.i16(<4 x i32> %rsrc, i32 0, i32 0, i32 0)1080  %tmp2 = sext i16 %tmp to i321081  %val = sitofp i32 %tmp2 to float1082  ret float %val1083}1084 1085define amdgpu_ps void @raw_buffer_load_f16(<4 x i32> inreg %rsrc, ptr addrspace(3) %ptr) {1086; PREGFX10-LABEL: raw_buffer_load_f16:1087; PREGFX10:       ; %bb.0: ; %main_body1088; PREGFX10-NEXT:    buffer_load_ushort v1, off, s[0:3], 01089; PREGFX10-NEXT:    s_mov_b32 m0, -11090; PREGFX10-NEXT:    s_waitcnt vmcnt(0)1091; PREGFX10-NEXT:    ds_write_b16 v0, v11092; PREGFX10-NEXT:    s_endpgm1093;1094; GFX10-LABEL: raw_buffer_load_f16:1095; GFX10:       ; %bb.0: ; %main_body1096; GFX10-NEXT:    buffer_load_ushort v1, off, s[0:3], 01097; GFX10-NEXT:    s_waitcnt vmcnt(0)1098; GFX10-NEXT:    ds_write_b16 v0, v11099; GFX10-NEXT:    s_endpgm1100;1101; GFX11-LABEL: raw_buffer_load_f16:1102; GFX11:       ; %bb.0: ; %main_body1103; GFX11-NEXT:    buffer_load_u16 v1, off, s[0:3], 01104; GFX11-NEXT:    s_waitcnt vmcnt(0)1105; GFX11-NEXT:    ds_store_b16 v0, v11106; GFX11-NEXT:    s_endpgm1107;1108; GFX12-LABEL: raw_buffer_load_f16:1109; GFX12:       ; %bb.0: ; %main_body1110; GFX12-NEXT:    buffer_load_u16 v1, off, s[0:3], null1111; GFX12-NEXT:    s_wait_loadcnt 0x01112; GFX12-NEXT:    ds_store_b16 v0, v11113; GFX12-NEXT:    s_endpgm1114main_body:1115  %val = call half @llvm.amdgcn.raw.buffer.load.f16(<4 x i32> %rsrc, i32 0, i32 0, i32 0)1116  store half %val, ptr addrspace(3) %ptr1117  ret void1118}1119 1120define amdgpu_ps void @raw_buffer_load_v2f16(<4 x i32> inreg %rsrc, ptr addrspace(3) %ptr) {1121; PREGFX10-LABEL: raw_buffer_load_v2f16:1122; PREGFX10:       ; %bb.0: ; %main_body1123; PREGFX10-NEXT:    buffer_load_dword v1, off, s[0:3], 01124; PREGFX10-NEXT:    s_mov_b32 m0, -11125; PREGFX10-NEXT:    s_waitcnt vmcnt(0)1126; PREGFX10-NEXT:    ds_write_b32 v0, v11127; PREGFX10-NEXT:    s_endpgm1128;1129; GFX10-LABEL: raw_buffer_load_v2f16:1130; GFX10:       ; %bb.0: ; %main_body1131; GFX10-NEXT:    buffer_load_dword v1, off, s[0:3], 01132; GFX10-NEXT:    s_waitcnt vmcnt(0)1133; GFX10-NEXT:    ds_write_b32 v0, v11134; GFX10-NEXT:    s_endpgm1135;1136; GFX11-LABEL: raw_buffer_load_v2f16:1137; GFX11:       ; %bb.0: ; %main_body1138; GFX11-NEXT:    buffer_load_b32 v1, off, s[0:3], 01139; GFX11-NEXT:    s_waitcnt vmcnt(0)1140; GFX11-NEXT:    ds_store_b32 v0, v11141; GFX11-NEXT:    s_endpgm1142;1143; GFX12-LABEL: raw_buffer_load_v2f16:1144; GFX12:       ; %bb.0: ; %main_body1145; GFX12-NEXT:    buffer_load_b32 v1, off, s[0:3], null1146; GFX12-NEXT:    s_wait_loadcnt 0x01147; GFX12-NEXT:    ds_store_b32 v0, v11148; GFX12-NEXT:    s_endpgm1149main_body:1150  %val = call <2 x half> @llvm.amdgcn.raw.buffer.load.v2f16(<4 x i32> %rsrc, i32 0, i32 0, i32 0)1151  store <2 x half> %val, ptr addrspace(3) %ptr1152  ret void1153}1154 1155define amdgpu_ps void @raw_buffer_load_v4f16(<4 x i32> inreg %rsrc, ptr addrspace(3) %ptr) {1156; PREGFX10-LABEL: raw_buffer_load_v4f16:1157; PREGFX10:       ; %bb.0: ; %main_body1158; PREGFX10-NEXT:    buffer_load_dwordx2 v[1:2], off, s[0:3], 01159; PREGFX10-NEXT:    s_mov_b32 m0, -11160; PREGFX10-NEXT:    s_waitcnt vmcnt(0)1161; PREGFX10-NEXT:    ds_write_b64 v0, v[1:2]1162; PREGFX10-NEXT:    s_endpgm1163;1164; GFX10-LABEL: raw_buffer_load_v4f16:1165; GFX10:       ; %bb.0: ; %main_body1166; GFX10-NEXT:    buffer_load_dwordx2 v[1:2], off, s[0:3], 01167; GFX10-NEXT:    s_waitcnt vmcnt(0)1168; GFX10-NEXT:    ds_write_b64 v0, v[1:2]1169; GFX10-NEXT:    s_endpgm1170;1171; GFX11-LABEL: raw_buffer_load_v4f16:1172; GFX11:       ; %bb.0: ; %main_body1173; GFX11-NEXT:    buffer_load_b64 v[1:2], off, s[0:3], 01174; GFX11-NEXT:    s_waitcnt vmcnt(0)1175; GFX11-NEXT:    ds_store_b64 v0, v[1:2]1176; GFX11-NEXT:    s_endpgm1177;1178; GFX12-LABEL: raw_buffer_load_v4f16:1179; GFX12:       ; %bb.0: ; %main_body1180; GFX12-NEXT:    buffer_load_b64 v[1:2], off, s[0:3], null1181; GFX12-NEXT:    s_wait_loadcnt 0x01182; GFX12-NEXT:    ds_store_b64 v0, v[1:2]1183; GFX12-NEXT:    s_endpgm1184main_body:1185  %val = call <4 x half> @llvm.amdgcn.raw.buffer.load.v4f16(<4 x i32> %rsrc, i32 0, i32 0, i32 0)1186  store <4 x half> %val, ptr addrspace(3) %ptr1187  ret void1188}1189 1190define amdgpu_ps void @raw_buffer_load_v2i16(<4 x i32> inreg %rsrc, ptr addrspace(3) %ptr) {1191; PREGFX10-LABEL: raw_buffer_load_v2i16:1192; PREGFX10:       ; %bb.0: ; %main_body1193; PREGFX10-NEXT:    buffer_load_dword v1, off, s[0:3], 01194; PREGFX10-NEXT:    s_mov_b32 m0, -11195; PREGFX10-NEXT:    s_waitcnt vmcnt(0)1196; PREGFX10-NEXT:    ds_write_b32 v0, v11197; PREGFX10-NEXT:    s_endpgm1198;1199; GFX10-LABEL: raw_buffer_load_v2i16:1200; GFX10:       ; %bb.0: ; %main_body1201; GFX10-NEXT:    buffer_load_dword v1, off, s[0:3], 01202; GFX10-NEXT:    s_waitcnt vmcnt(0)1203; GFX10-NEXT:    ds_write_b32 v0, v11204; GFX10-NEXT:    s_endpgm1205;1206; GFX11-LABEL: raw_buffer_load_v2i16:1207; GFX11:       ; %bb.0: ; %main_body1208; GFX11-NEXT:    buffer_load_b32 v1, off, s[0:3], 01209; GFX11-NEXT:    s_waitcnt vmcnt(0)1210; GFX11-NEXT:    ds_store_b32 v0, v11211; GFX11-NEXT:    s_endpgm1212;1213; GFX12-LABEL: raw_buffer_load_v2i16:1214; GFX12:       ; %bb.0: ; %main_body1215; GFX12-NEXT:    buffer_load_b32 v1, off, s[0:3], null1216; GFX12-NEXT:    s_wait_loadcnt 0x01217; GFX12-NEXT:    ds_store_b32 v0, v11218; GFX12-NEXT:    s_endpgm1219main_body:1220  %val = call <2 x i16> @llvm.amdgcn.raw.buffer.load.v2i16(<4 x i32> %rsrc, i32 0, i32 0, i32 0)1221  store <2 x i16> %val, ptr addrspace(3) %ptr1222  ret void1223}1224 1225define amdgpu_ps void @raw_buffer_load_v4i16(<4 x i32> inreg %rsrc, ptr addrspace(3) %ptr) {1226; PREGFX10-LABEL: raw_buffer_load_v4i16:1227; PREGFX10:       ; %bb.0: ; %main_body1228; PREGFX10-NEXT:    buffer_load_dwordx2 v[1:2], off, s[0:3], 01229; PREGFX10-NEXT:    s_mov_b32 m0, -11230; PREGFX10-NEXT:    s_waitcnt vmcnt(0)1231; PREGFX10-NEXT:    ds_write_b64 v0, v[1:2]1232; PREGFX10-NEXT:    s_endpgm1233;1234; GFX10-LABEL: raw_buffer_load_v4i16:1235; GFX10:       ; %bb.0: ; %main_body1236; GFX10-NEXT:    buffer_load_dwordx2 v[1:2], off, s[0:3], 01237; GFX10-NEXT:    s_waitcnt vmcnt(0)1238; GFX10-NEXT:    ds_write_b64 v0, v[1:2]1239; GFX10-NEXT:    s_endpgm1240;1241; GFX11-LABEL: raw_buffer_load_v4i16:1242; GFX11:       ; %bb.0: ; %main_body1243; GFX11-NEXT:    buffer_load_b64 v[1:2], off, s[0:3], 01244; GFX11-NEXT:    s_waitcnt vmcnt(0)1245; GFX11-NEXT:    ds_store_b64 v0, v[1:2]1246; GFX11-NEXT:    s_endpgm1247;1248; GFX12-LABEL: raw_buffer_load_v4i16:1249; GFX12:       ; %bb.0: ; %main_body1250; GFX12-NEXT:    buffer_load_b64 v[1:2], off, s[0:3], null1251; GFX12-NEXT:    s_wait_loadcnt 0x01252; GFX12-NEXT:    ds_store_b64 v0, v[1:2]1253; GFX12-NEXT:    s_endpgm1254main_body:1255  %val = call <4 x i16> @llvm.amdgcn.raw.buffer.load.v4i16(<4 x i32> %rsrc, i32 0, i32 0, i32 0)1256  store <4 x i16> %val, ptr addrspace(3) %ptr1257  ret void1258}1259 1260define amdgpu_ps void @raw_buffer_load_x1_offset_merged(<4 x i32> inreg %rsrc) {1261; PREGFX10-LABEL: raw_buffer_load_x1_offset_merged:1262; PREGFX10:       ; %bb.0: ; %main_body1263; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], off, s[0:3], 0 offset:41264; PREGFX10-NEXT:    buffer_load_dwordx2 v[4:5], off, s[0:3], 0 offset:281265; PREGFX10-NEXT:    s_waitcnt vmcnt(1)1266; PREGFX10-NEXT:    exp mrt0 v0, v1, v2, v3 done vm1267; PREGFX10-NEXT:    s_waitcnt vmcnt(0)1268; PREGFX10-NEXT:    exp mrt0 v4, v5, v0, v0 done vm1269; PREGFX10-NEXT:    s_endpgm1270;1271; GFX10-LABEL: raw_buffer_load_x1_offset_merged:1272; GFX10:       ; %bb.0: ; %main_body1273; GFX10-NEXT:    s_clause 0x11274; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], off, s[0:3], 0 offset:41275; GFX10-NEXT:    buffer_load_dwordx2 v[4:5], off, s[0:3], 0 offset:281276; GFX10-NEXT:    s_waitcnt vmcnt(1)1277; GFX10-NEXT:    exp mrt0 v0, v1, v2, v3 done vm1278; GFX10-NEXT:    s_waitcnt vmcnt(0)1279; GFX10-NEXT:    exp mrt0 v4, v5, v0, v0 done vm1280; GFX10-NEXT:    s_endpgm1281;1282; GFX11-LABEL: raw_buffer_load_x1_offset_merged:1283; GFX11:       ; %bb.0: ; %main_body1284; GFX11-NEXT:    s_clause 0x11285; GFX11-NEXT:    buffer_load_b128 v[0:3], off, s[0:3], 0 offset:41286; GFX11-NEXT:    buffer_load_b64 v[4:5], off, s[0:3], 0 offset:281287; GFX11-NEXT:    s_waitcnt vmcnt(1)1288; GFX11-NEXT:    exp mrt0 v0, v1, v2, v3 done1289; GFX11-NEXT:    s_waitcnt vmcnt(0)1290; GFX11-NEXT:    exp mrt0 v4, v5, v0, v0 done1291; GFX11-NEXT:    s_endpgm1292;1293; GFX12-LABEL: raw_buffer_load_x1_offset_merged:1294; GFX12:       ; %bb.0: ; %main_body1295; GFX12-NEXT:    s_clause 0x11296; GFX12-NEXT:    buffer_load_b128 v[0:3], off, s[0:3], null offset:41297; GFX12-NEXT:    buffer_load_b64 v[4:5], off, s[0:3], null offset:281298; GFX12-NEXT:    s_wait_loadcnt 0x11299; GFX12-NEXT:    export mrt0 v0, v1, v2, v3 done1300; GFX12-NEXT:    s_wait_loadcnt 0x01301; GFX12-NEXT:    export mrt0 v4, v5, v0, v0 done1302; GFX12-NEXT:    s_endpgm1303main_body:1304  %r1 = call float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32> %rsrc, i32 4, i32 0, i32 0)1305  %r2 = call float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32> %rsrc, i32 8, i32 0, i32 0)1306  %r3 = call float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32> %rsrc, i32 12, i32 0, i32 0)1307  %r4 = call float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32> %rsrc, i32 16, i32 0, i32 0)1308  %r5 = call float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32> %rsrc, i32 28, i32 0, i32 0)1309  %r6 = call float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32> %rsrc, i32 32, i32 0, i32 0)1310  call void @llvm.amdgcn.exp.f32(i32 0, i32 15, float %r1, float %r2, float %r3, float %r4, i1 true, i1 true)1311  call void @llvm.amdgcn.exp.f32(i32 0, i32 15, float %r5, float %r6, float poison, float poison, i1 true, i1 true)1312  ret void1313}1314 1315define amdgpu_ps void @raw_buffer_load_x1_offset_swizzled_not_merged_pregfx12(<4 x i32> inreg %rsrc) {1316; PREGFX10-LABEL: raw_buffer_load_x1_offset_swizzled_not_merged_pregfx12:1317; PREGFX10:       ; %bb.0: ; %main_body1318; PREGFX10-NEXT:    buffer_load_dword v0, off, s[0:3], 0 offset:41319; PREGFX10-NEXT:    buffer_load_dword v1, off, s[0:3], 0 offset:81320; PREGFX10-NEXT:    buffer_load_dword v2, off, s[0:3], 0 offset:121321; PREGFX10-NEXT:    buffer_load_dword v3, off, s[0:3], 0 offset:161322; PREGFX10-NEXT:    buffer_load_dword v4, off, s[0:3], 0 offset:281323; PREGFX10-NEXT:    buffer_load_dword v5, off, s[0:3], 0 offset:321324; PREGFX10-NEXT:    s_waitcnt vmcnt(2)1325; PREGFX10-NEXT:    exp mrt0 v0, v1, v2, v3 done vm1326; PREGFX10-NEXT:    s_waitcnt vmcnt(0)1327; PREGFX10-NEXT:    exp mrt0 v4, v5, v0, v0 done vm1328; PREGFX10-NEXT:    s_endpgm1329;1330; GFX10-LABEL: raw_buffer_load_x1_offset_swizzled_not_merged_pregfx12:1331; GFX10:       ; %bb.0: ; %main_body1332; GFX10-NEXT:    s_clause 0x51333; GFX10-NEXT:    buffer_load_dword v0, off, s[0:3], 0 offset:41334; GFX10-NEXT:    buffer_load_dword v1, off, s[0:3], 0 offset:81335; GFX10-NEXT:    buffer_load_dword v2, off, s[0:3], 0 offset:121336; GFX10-NEXT:    buffer_load_dword v3, off, s[0:3], 0 offset:161337; GFX10-NEXT:    buffer_load_dword v4, off, s[0:3], 0 offset:281338; GFX10-NEXT:    buffer_load_dword v5, off, s[0:3], 0 offset:321339; GFX10-NEXT:    s_waitcnt vmcnt(2)1340; GFX10-NEXT:    exp mrt0 v0, v1, v2, v3 done vm1341; GFX10-NEXT:    s_waitcnt vmcnt(0)1342; GFX10-NEXT:    exp mrt0 v4, v5, v0, v0 done vm1343; GFX10-NEXT:    s_endpgm1344;1345; GFX11-LABEL: raw_buffer_load_x1_offset_swizzled_not_merged_pregfx12:1346; GFX11:       ; %bb.0: ; %main_body1347; GFX11-NEXT:    s_clause 0x51348; GFX11-NEXT:    buffer_load_b32 v0, off, s[0:3], 0 offset:41349; GFX11-NEXT:    buffer_load_b32 v1, off, s[0:3], 0 offset:81350; GFX11-NEXT:    buffer_load_b32 v2, off, s[0:3], 0 offset:121351; GFX11-NEXT:    buffer_load_b32 v3, off, s[0:3], 0 offset:161352; GFX11-NEXT:    buffer_load_b32 v4, off, s[0:3], 0 offset:281353; GFX11-NEXT:    buffer_load_b32 v5, off, s[0:3], 0 offset:321354; GFX11-NEXT:    s_waitcnt vmcnt(2)1355; GFX11-NEXT:    exp mrt0 v0, v1, v2, v3 done1356; GFX11-NEXT:    s_waitcnt vmcnt(0)1357; GFX11-NEXT:    exp mrt0 v4, v5, v0, v0 done1358; GFX11-NEXT:    s_endpgm1359;1360; GFX12-LABEL: raw_buffer_load_x1_offset_swizzled_not_merged_pregfx12:1361; GFX12:       ; %bb.0: ; %main_body1362; GFX12-NEXT:    s_clause 0x11363; GFX12-NEXT:    buffer_load_b128 v[0:3], off, s[0:3], null offset:4 scope:SCOPE_SE1364; GFX12-NEXT:    buffer_load_b64 v[4:5], off, s[0:3], null offset:28 scope:SCOPE_SE1365; GFX12-NEXT:    s_wait_loadcnt 0x11366; GFX12-NEXT:    export mrt0 v0, v1, v2, v3 done1367; GFX12-NEXT:    s_wait_loadcnt 0x01368; GFX12-NEXT:    export mrt0 v4, v5, v0, v0 done1369; GFX12-NEXT:    s_endpgm1370main_body:1371  %r1 = call float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32> %rsrc, i32 4, i32 0, i32 8)1372  %r2 = call float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32> %rsrc, i32 8, i32 0, i32 8)1373  %r3 = call float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32> %rsrc, i32 12, i32 0, i32 8)1374  %r4 = call float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32> %rsrc, i32 16, i32 0, i32 8)1375  %r5 = call float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32> %rsrc, i32 28, i32 0, i32 8)1376  %r6 = call float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32> %rsrc, i32 32, i32 0, i32 8)1377  call void @llvm.amdgcn.exp.f32(i32 0, i32 15, float %r1, float %r2, float %r3, float %r4, i1 true, i1 true)1378  call void @llvm.amdgcn.exp.f32(i32 0, i32 15, float %r5, float %r6, float poison, float poison, i1 true, i1 true)1379  ret void1380}1381 1382define amdgpu_ps void @raw_buffer_load_x1_offset_swizzled_not_merged(<4 x i32> inreg %rsrc) {1383; PREGFX10-LABEL: raw_buffer_load_x1_offset_swizzled_not_merged:1384; PREGFX10:       ; %bb.0: ; %main_body1385; PREGFX10-NEXT:    buffer_load_dwordx4 v[0:3], off, s[0:3], 0 offset:41386; PREGFX10-NEXT:    buffer_load_dwordx2 v[4:5], off, s[0:3], 0 offset:281387; PREGFX10-NEXT:    s_waitcnt vmcnt(1)1388; PREGFX10-NEXT:    exp mrt0 v0, v1, v2, v3 done vm1389; PREGFX10-NEXT:    s_waitcnt vmcnt(0)1390; PREGFX10-NEXT:    exp mrt0 v4, v5, v0, v0 done vm1391; PREGFX10-NEXT:    s_endpgm1392;1393; GFX10-LABEL: raw_buffer_load_x1_offset_swizzled_not_merged:1394; GFX10:       ; %bb.0: ; %main_body1395; GFX10-NEXT:    s_clause 0x11396; GFX10-NEXT:    buffer_load_dwordx4 v[0:3], off, s[0:3], 0 offset:41397; GFX10-NEXT:    buffer_load_dwordx2 v[4:5], off, s[0:3], 0 offset:281398; GFX10-NEXT:    s_waitcnt vmcnt(1)1399; GFX10-NEXT:    exp mrt0 v0, v1, v2, v3 done vm1400; GFX10-NEXT:    s_waitcnt vmcnt(0)1401; GFX10-NEXT:    exp mrt0 v4, v5, v0, v0 done vm1402; GFX10-NEXT:    s_endpgm1403;1404; GFX11-LABEL: raw_buffer_load_x1_offset_swizzled_not_merged:1405; GFX11:       ; %bb.0: ; %main_body1406; GFX11-NEXT:    s_clause 0x11407; GFX11-NEXT:    buffer_load_b128 v[0:3], off, s[0:3], 0 offset:41408; GFX11-NEXT:    buffer_load_b64 v[4:5], off, s[0:3], 0 offset:281409; GFX11-NEXT:    s_waitcnt vmcnt(1)1410; GFX11-NEXT:    exp mrt0 v0, v1, v2, v3 done1411; GFX11-NEXT:    s_waitcnt vmcnt(0)1412; GFX11-NEXT:    exp mrt0 v4, v5, v0, v0 done1413; GFX11-NEXT:    s_endpgm1414;1415; GFX12-LABEL: raw_buffer_load_x1_offset_swizzled_not_merged:1416; GFX12:       ; %bb.0: ; %main_body1417; GFX12-NEXT:    s_clause 0x51418; GFX12-NEXT:    buffer_load_b32 v0, off, s[0:3], null offset:41419; GFX12-NEXT:    buffer_load_b32 v1, off, s[0:3], null offset:81420; GFX12-NEXT:    buffer_load_b32 v2, off, s[0:3], null offset:121421; GFX12-NEXT:    buffer_load_b32 v3, off, s[0:3], null offset:161422; GFX12-NEXT:    buffer_load_b32 v4, off, s[0:3], null offset:281423; GFX12-NEXT:    buffer_load_b32 v5, off, s[0:3], null offset:321424; GFX12-NEXT:    s_wait_loadcnt 0x21425; GFX12-NEXT:    export mrt0 v0, v1, v2, v3 done1426; GFX12-NEXT:    s_wait_loadcnt 0x01427; GFX12-NEXT:    export mrt0 v4, v5, v0, v0 done1428; GFX12-NEXT:    s_endpgm1429main_body:1430  %r1 = call float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32> %rsrc, i32 4, i32 0, i32 64)1431  %r2 = call float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32> %rsrc, i32 8, i32 0, i32 64)1432  %r3 = call float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32> %rsrc, i32 12, i32 0, i32 64)1433  %r4 = call float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32> %rsrc, i32 16, i32 0, i32 64)1434  %r5 = call float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32> %rsrc, i32 28, i32 0, i32 64)1435  %r6 = call float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32> %rsrc, i32 32, i32 0, i32 64)1436  call void @llvm.amdgcn.exp.f32(i32 0, i32 15, float %r1, float %r2, float %r3, float %r4, i1 true, i1 true)1437  call void @llvm.amdgcn.exp.f32(i32 0, i32 15, float %r5, float %r6, float poison, float poison, i1 true, i1 true)1438  ret void1439}1440 1441declare float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32>, i32, i32, i32) #01442declare <2 x float> @llvm.amdgcn.raw.buffer.load.v2f32(<4 x i32>, i32, i32, i32) #01443declare <4 x float> @llvm.amdgcn.raw.buffer.load.v4f32(<4 x i32>, i32, i32, i32) #01444declare i32 @llvm.amdgcn.raw.buffer.load.i32(<4 x i32>, i32, i32, i32) #01445declare <2 x i32> @llvm.amdgcn.raw.buffer.load.v2i32(<4 x i32>, i32, i32, i32) #01446declare <4 x i32> @llvm.amdgcn.raw.buffer.load.v4i32(<4 x i32>, i32, i32, i32) #01447declare void @llvm.amdgcn.exp.f32(i32, i32, float, float, float, float, i1, i1) #01448declare i8 @llvm.amdgcn.raw.buffer.load.i8(<4 x i32>, i32, i32, i32) #01449declare i16 @llvm.amdgcn.raw.buffer.load.i16(<4 x i32>, i32, i32, i32) #01450declare <2 x i16> @llvm.amdgcn.raw.buffer.load.v2i16(<4 x i32>, i32, i32, i32) #01451declare <4 x i16> @llvm.amdgcn.raw.buffer.load.v4i16(<4 x i32>, i32, i32, i32) #01452declare half @llvm.amdgcn.raw.buffer.load.f16(<4 x i32>, i32, i32, i32) #01453declare <2 x half> @llvm.amdgcn.raw.buffer.load.v2f16(<4 x i32>, i32, i32, i32) #01454declare <4 x half> @llvm.amdgcn.raw.buffer.load.v4f16(<4 x i32>, i32, i32, i32) #01455attributes #0 = { nounwind readonly }1456