brintos

brintos / llvm-project-archived public Read only

0
0
Text · 42.9 KiB · 13c697f Raw
1031 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -global-isel -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx900 -o - %s | FileCheck -check-prefix=GFX9 %s3; RUN: llc -global-isel -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx1010 -o - %s | FileCheck -check-prefix=GFX10NSA %s4; RUN: llc -global-isel -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx1100 -mattr=-real-true16 -o - %s | FileCheck -check-prefixes=GFX10NSA %s5; RUN: llc -global-isel -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx1200 -mattr=-real-true16 -o - %s | FileCheck -check-prefixes=GFX12 %s6 7define amdgpu_ps <4 x float> @gather4_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %s, half %t) {8; GFX9-LABEL: gather4_2d:9; GFX9:       ; %bb.0: ; %main_body10; GFX9-NEXT:    s_mov_b64 s[14:15], exec11; GFX9-NEXT:    s_mov_b32 s0, s212; GFX9-NEXT:    s_wqm_b64 exec, exec13; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v014; GFX9-NEXT:    s_mov_b32 s1, s315; GFX9-NEXT:    s_mov_b32 s2, s416; GFX9-NEXT:    s_mov_b32 s3, s517; GFX9-NEXT:    s_mov_b32 s4, s618; GFX9-NEXT:    s_mov_b32 s5, s719; GFX9-NEXT:    s_mov_b32 s6, s820; GFX9-NEXT:    s_mov_b32 s7, s921; GFX9-NEXT:    s_mov_b32 s8, s1022; GFX9-NEXT:    s_mov_b32 s9, s1123; GFX9-NEXT:    s_mov_b32 s10, s1224; GFX9-NEXT:    s_mov_b32 s11, s1325; GFX9-NEXT:    v_lshl_or_b32 v0, v1, 16, v026; GFX9-NEXT:    s_and_b64 exec, exec, s[14:15]27; GFX9-NEXT:    image_gather4 v[0:3], v0, s[0:7], s[8:11] dmask:0x1 a1628; GFX9-NEXT:    s_waitcnt vmcnt(0)29; GFX9-NEXT:    ; return to shader part epilog30;31; GFX10NSA-LABEL: gather4_2d:32; GFX10NSA:       ; %bb.0: ; %main_body33; GFX10NSA-NEXT:    s_mov_b32 s14, exec_lo34; GFX10NSA-NEXT:    s_mov_b32 s0, s235; GFX10NSA-NEXT:    s_wqm_b32 exec_lo, exec_lo36; GFX10NSA-NEXT:    v_and_b32_e32 v0, 0xffff, v037; GFX10NSA-NEXT:    s_mov_b32 s1, s338; GFX10NSA-NEXT:    s_mov_b32 s2, s439; GFX10NSA-NEXT:    s_mov_b32 s3, s540; GFX10NSA-NEXT:    s_mov_b32 s4, s641; GFX10NSA-NEXT:    s_mov_b32 s5, s742; GFX10NSA-NEXT:    s_mov_b32 s6, s843; GFX10NSA-NEXT:    s_mov_b32 s7, s944; GFX10NSA-NEXT:    s_mov_b32 s8, s1045; GFX10NSA-NEXT:    s_mov_b32 s9, s1146; GFX10NSA-NEXT:    s_mov_b32 s10, s1247; GFX10NSA-NEXT:    s_mov_b32 s11, s1348; GFX10NSA-NEXT:    v_lshl_or_b32 v0, v1, 16, v049; GFX10NSA-NEXT:    s_and_b32 exec_lo, exec_lo, s1450; GFX10NSA-NEXT:    image_gather4 v[0:3], v0, s[0:7], s[8:11] dmask:0x1 dim:SQ_RSRC_IMG_2D a1651; GFX10NSA-NEXT:    s_waitcnt vmcnt(0)52; GFX10NSA-NEXT:    ; return to shader part epilog53;54; GFX12-LABEL: gather4_2d:55; GFX12:       ; %bb.0: ; %main_body56; GFX12-NEXT:    s_mov_b32 s14, exec_lo57; GFX12-NEXT:    s_mov_b32 s0, s258; GFX12-NEXT:    s_wqm_b32 exec_lo, exec_lo59; GFX12-NEXT:    v_and_b32_e32 v0, 0xffff, v060; GFX12-NEXT:    s_mov_b32 s1, s361; GFX12-NEXT:    s_mov_b32 s2, s462; GFX12-NEXT:    s_mov_b32 s3, s563; GFX12-NEXT:    s_mov_b32 s4, s664; GFX12-NEXT:    s_mov_b32 s5, s765; GFX12-NEXT:    s_mov_b32 s6, s866; GFX12-NEXT:    s_mov_b32 s7, s967; GFX12-NEXT:    s_mov_b32 s8, s1068; GFX12-NEXT:    s_mov_b32 s9, s1169; GFX12-NEXT:    s_mov_b32 s10, s1270; GFX12-NEXT:    s_mov_b32 s11, s1371; GFX12-NEXT:    v_lshl_or_b32 v0, v1, 16, v072; GFX12-NEXT:    s_and_b32 exec_lo, exec_lo, s1473; GFX12-NEXT:    image_gather4 v[0:3], v0, s[0:7], s[8:11] dmask:0x1 dim:SQ_RSRC_IMG_2D a1674; GFX12-NEXT:    s_wait_samplecnt 0x075; GFX12-NEXT:    ; return to shader part epilog76main_body:77  %v = call <4 x float> @llvm.amdgcn.image.gather4.2d.v4f32.f16(i32 1, half %s, half %t, <8 x i32> %rsrc, <4 x i32> %samp, i1 false, i32 0, i32 0)78  ret <4 x float> %v79}80 81define amdgpu_ps <4 x float> @gather4_cube(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %s, half %t, half %face) {82; GFX9-LABEL: gather4_cube:83; GFX9:       ; %bb.0: ; %main_body84; GFX9-NEXT:    s_mov_b64 s[14:15], exec85; GFX9-NEXT:    s_mov_b32 s0, s286; GFX9-NEXT:    s_wqm_b64 exec, exec87; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v088; GFX9-NEXT:    s_mov_b32 s1, s389; GFX9-NEXT:    s_mov_b32 s2, s490; GFX9-NEXT:    s_mov_b32 s3, s591; GFX9-NEXT:    s_mov_b32 s4, s692; GFX9-NEXT:    s_mov_b32 s5, s793; GFX9-NEXT:    s_mov_b32 s6, s894; GFX9-NEXT:    s_mov_b32 s7, s995; GFX9-NEXT:    s_mov_b32 s8, s1096; GFX9-NEXT:    s_mov_b32 s9, s1197; GFX9-NEXT:    s_mov_b32 s10, s1298; GFX9-NEXT:    s_mov_b32 s11, s1399; GFX9-NEXT:    v_lshl_or_b32 v1, v1, 16, v0100; GFX9-NEXT:    s_and_b64 exec, exec, s[14:15]101; GFX9-NEXT:    image_gather4 v[0:3], v[1:2], s[0:7], s[8:11] dmask:0x1 a16 da102; GFX9-NEXT:    s_waitcnt vmcnt(0)103; GFX9-NEXT:    ; return to shader part epilog104;105; GFX10NSA-LABEL: gather4_cube:106; GFX10NSA:       ; %bb.0: ; %main_body107; GFX10NSA-NEXT:    s_mov_b32 s14, exec_lo108; GFX10NSA-NEXT:    s_mov_b32 s0, s2109; GFX10NSA-NEXT:    s_wqm_b32 exec_lo, exec_lo110; GFX10NSA-NEXT:    v_and_b32_e32 v0, 0xffff, v0111; GFX10NSA-NEXT:    s_mov_b32 s1, s3112; GFX10NSA-NEXT:    s_mov_b32 s2, s4113; GFX10NSA-NEXT:    s_mov_b32 s3, s5114; GFX10NSA-NEXT:    s_mov_b32 s4, s6115; GFX10NSA-NEXT:    s_mov_b32 s5, s7116; GFX10NSA-NEXT:    s_mov_b32 s6, s8117; GFX10NSA-NEXT:    s_mov_b32 s7, s9118; GFX10NSA-NEXT:    s_mov_b32 s8, s10119; GFX10NSA-NEXT:    s_mov_b32 s9, s11120; GFX10NSA-NEXT:    s_mov_b32 s10, s12121; GFX10NSA-NEXT:    s_mov_b32 s11, s13122; GFX10NSA-NEXT:    v_lshl_or_b32 v0, v1, 16, v0123; GFX10NSA-NEXT:    s_and_b32 exec_lo, exec_lo, s14124; GFX10NSA-NEXT:    image_gather4 v[0:3], [v0, v2], s[0:7], s[8:11] dmask:0x1 dim:SQ_RSRC_IMG_CUBE a16125; GFX10NSA-NEXT:    s_waitcnt vmcnt(0)126; GFX10NSA-NEXT:    ; return to shader part epilog127;128; GFX12-LABEL: gather4_cube:129; GFX12:       ; %bb.0: ; %main_body130; GFX12-NEXT:    s_mov_b32 s14, exec_lo131; GFX12-NEXT:    s_mov_b32 s0, s2132; GFX12-NEXT:    s_wqm_b32 exec_lo, exec_lo133; GFX12-NEXT:    v_and_b32_e32 v0, 0xffff, v0134; GFX12-NEXT:    s_mov_b32 s1, s3135; GFX12-NEXT:    s_mov_b32 s2, s4136; GFX12-NEXT:    s_mov_b32 s3, s5137; GFX12-NEXT:    s_mov_b32 s4, s6138; GFX12-NEXT:    s_mov_b32 s5, s7139; GFX12-NEXT:    s_mov_b32 s6, s8140; GFX12-NEXT:    s_mov_b32 s7, s9141; GFX12-NEXT:    s_mov_b32 s8, s10142; GFX12-NEXT:    s_mov_b32 s9, s11143; GFX12-NEXT:    s_mov_b32 s10, s12144; GFX12-NEXT:    s_mov_b32 s11, s13145; GFX12-NEXT:    v_lshl_or_b32 v0, v1, 16, v0146; GFX12-NEXT:    s_and_b32 exec_lo, exec_lo, s14147; GFX12-NEXT:    image_gather4 v[0:3], [v0, v2], s[0:7], s[8:11] dmask:0x1 dim:SQ_RSRC_IMG_CUBE a16148; GFX12-NEXT:    s_wait_samplecnt 0x0149; GFX12-NEXT:    ; return to shader part epilog150main_body:151  %v = call <4 x float> @llvm.amdgcn.image.gather4.cube.v4f32.f16(i32 1, half %s, half %t, half %face, <8 x i32> %rsrc, <4 x i32> %samp, i1 false, i32 0, i32 0)152  ret <4 x float> %v153}154 155define amdgpu_ps <4 x float> @gather4_2darray(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %s, half %t, half %slice) {156; GFX9-LABEL: gather4_2darray:157; GFX9:       ; %bb.0: ; %main_body158; GFX9-NEXT:    s_mov_b64 s[14:15], exec159; GFX9-NEXT:    s_mov_b32 s0, s2160; GFX9-NEXT:    s_wqm_b64 exec, exec161; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0162; GFX9-NEXT:    s_mov_b32 s1, s3163; GFX9-NEXT:    s_mov_b32 s2, s4164; GFX9-NEXT:    s_mov_b32 s3, s5165; GFX9-NEXT:    s_mov_b32 s4, s6166; GFX9-NEXT:    s_mov_b32 s5, s7167; GFX9-NEXT:    s_mov_b32 s6, s8168; GFX9-NEXT:    s_mov_b32 s7, s9169; GFX9-NEXT:    s_mov_b32 s8, s10170; GFX9-NEXT:    s_mov_b32 s9, s11171; GFX9-NEXT:    s_mov_b32 s10, s12172; GFX9-NEXT:    s_mov_b32 s11, s13173; GFX9-NEXT:    v_lshl_or_b32 v1, v1, 16, v0174; GFX9-NEXT:    s_and_b64 exec, exec, s[14:15]175; GFX9-NEXT:    image_gather4 v[0:3], v[1:2], s[0:7], s[8:11] dmask:0x1 a16 da176; GFX9-NEXT:    s_waitcnt vmcnt(0)177; GFX9-NEXT:    ; return to shader part epilog178;179; GFX10NSA-LABEL: gather4_2darray:180; GFX10NSA:       ; %bb.0: ; %main_body181; GFX10NSA-NEXT:    s_mov_b32 s14, exec_lo182; GFX10NSA-NEXT:    s_mov_b32 s0, s2183; GFX10NSA-NEXT:    s_wqm_b32 exec_lo, exec_lo184; GFX10NSA-NEXT:    v_and_b32_e32 v0, 0xffff, v0185; GFX10NSA-NEXT:    s_mov_b32 s1, s3186; GFX10NSA-NEXT:    s_mov_b32 s2, s4187; GFX10NSA-NEXT:    s_mov_b32 s3, s5188; GFX10NSA-NEXT:    s_mov_b32 s4, s6189; GFX10NSA-NEXT:    s_mov_b32 s5, s7190; GFX10NSA-NEXT:    s_mov_b32 s6, s8191; GFX10NSA-NEXT:    s_mov_b32 s7, s9192; GFX10NSA-NEXT:    s_mov_b32 s8, s10193; GFX10NSA-NEXT:    s_mov_b32 s9, s11194; GFX10NSA-NEXT:    s_mov_b32 s10, s12195; GFX10NSA-NEXT:    s_mov_b32 s11, s13196; GFX10NSA-NEXT:    v_lshl_or_b32 v0, v1, 16, v0197; GFX10NSA-NEXT:    s_and_b32 exec_lo, exec_lo, s14198; GFX10NSA-NEXT:    image_gather4 v[0:3], [v0, v2], s[0:7], s[8:11] dmask:0x1 dim:SQ_RSRC_IMG_2D_ARRAY a16199; GFX10NSA-NEXT:    s_waitcnt vmcnt(0)200; GFX10NSA-NEXT:    ; return to shader part epilog201;202; GFX12-LABEL: gather4_2darray:203; GFX12:       ; %bb.0: ; %main_body204; GFX12-NEXT:    s_mov_b32 s14, exec_lo205; GFX12-NEXT:    s_mov_b32 s0, s2206; GFX12-NEXT:    s_wqm_b32 exec_lo, exec_lo207; GFX12-NEXT:    v_and_b32_e32 v0, 0xffff, v0208; GFX12-NEXT:    s_mov_b32 s1, s3209; GFX12-NEXT:    s_mov_b32 s2, s4210; GFX12-NEXT:    s_mov_b32 s3, s5211; GFX12-NEXT:    s_mov_b32 s4, s6212; GFX12-NEXT:    s_mov_b32 s5, s7213; GFX12-NEXT:    s_mov_b32 s6, s8214; GFX12-NEXT:    s_mov_b32 s7, s9215; GFX12-NEXT:    s_mov_b32 s8, s10216; GFX12-NEXT:    s_mov_b32 s9, s11217; GFX12-NEXT:    s_mov_b32 s10, s12218; GFX12-NEXT:    s_mov_b32 s11, s13219; GFX12-NEXT:    v_lshl_or_b32 v0, v1, 16, v0220; GFX12-NEXT:    s_and_b32 exec_lo, exec_lo, s14221; GFX12-NEXT:    image_gather4 v[0:3], [v0, v2], s[0:7], s[8:11] dmask:0x1 dim:SQ_RSRC_IMG_2D_ARRAY a16222; GFX12-NEXT:    s_wait_samplecnt 0x0223; GFX12-NEXT:    ; return to shader part epilog224main_body:225  %v = call <4 x float> @llvm.amdgcn.image.gather4.2darray.v4f32.f16(i32 1, half %s, half %t, half %slice, <8 x i32> %rsrc, <4 x i32> %samp, i1 false, i32 0, i32 0)226  ret <4 x float> %v227}228 229define amdgpu_ps <4 x float> @gather4_c_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %zcompare, half %s, half %t) {230; GFX9-LABEL: gather4_c_2d:231; GFX9:       ; %bb.0: ; %main_body232; GFX9-NEXT:    s_mov_b64 s[14:15], exec233; GFX9-NEXT:    s_mov_b32 s0, s2234; GFX9-NEXT:    s_wqm_b64 exec, exec235; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1236; GFX9-NEXT:    s_mov_b32 s1, s3237; GFX9-NEXT:    s_mov_b32 s2, s4238; GFX9-NEXT:    s_mov_b32 s3, s5239; GFX9-NEXT:    s_mov_b32 s4, s6240; GFX9-NEXT:    s_mov_b32 s5, s7241; GFX9-NEXT:    s_mov_b32 s6, s8242; GFX9-NEXT:    s_mov_b32 s7, s9243; GFX9-NEXT:    s_mov_b32 s8, s10244; GFX9-NEXT:    s_mov_b32 s9, s11245; GFX9-NEXT:    s_mov_b32 s10, s12246; GFX9-NEXT:    s_mov_b32 s11, s13247; GFX9-NEXT:    v_lshl_or_b32 v1, v2, 16, v1248; GFX9-NEXT:    s_and_b64 exec, exec, s[14:15]249; GFX9-NEXT:    image_gather4_c v[0:3], v[0:1], s[0:7], s[8:11] dmask:0x1 a16250; GFX9-NEXT:    s_waitcnt vmcnt(0)251; GFX9-NEXT:    ; return to shader part epilog252;253; GFX10NSA-LABEL: gather4_c_2d:254; GFX10NSA:       ; %bb.0: ; %main_body255; GFX10NSA-NEXT:    s_mov_b32 s14, exec_lo256; GFX10NSA-NEXT:    s_mov_b32 s0, s2257; GFX10NSA-NEXT:    s_wqm_b32 exec_lo, exec_lo258; GFX10NSA-NEXT:    v_and_b32_e32 v1, 0xffff, v1259; GFX10NSA-NEXT:    s_mov_b32 s1, s3260; GFX10NSA-NEXT:    s_mov_b32 s2, s4261; GFX10NSA-NEXT:    s_mov_b32 s3, s5262; GFX10NSA-NEXT:    s_mov_b32 s4, s6263; GFX10NSA-NEXT:    s_mov_b32 s5, s7264; GFX10NSA-NEXT:    s_mov_b32 s6, s8265; GFX10NSA-NEXT:    s_mov_b32 s7, s9266; GFX10NSA-NEXT:    s_mov_b32 s8, s10267; GFX10NSA-NEXT:    s_mov_b32 s9, s11268; GFX10NSA-NEXT:    s_mov_b32 s10, s12269; GFX10NSA-NEXT:    s_mov_b32 s11, s13270; GFX10NSA-NEXT:    v_lshl_or_b32 v1, v2, 16, v1271; GFX10NSA-NEXT:    s_and_b32 exec_lo, exec_lo, s14272; GFX10NSA-NEXT:    image_gather4_c v[0:3], v[0:1], s[0:7], s[8:11] dmask:0x1 dim:SQ_RSRC_IMG_2D a16273; GFX10NSA-NEXT:    s_waitcnt vmcnt(0)274; GFX10NSA-NEXT:    ; return to shader part epilog275;276; GFX12-LABEL: gather4_c_2d:277; GFX12:       ; %bb.0: ; %main_body278; GFX12-NEXT:    s_mov_b32 s14, exec_lo279; GFX12-NEXT:    s_mov_b32 s0, s2280; GFX12-NEXT:    s_wqm_b32 exec_lo, exec_lo281; GFX12-NEXT:    v_and_b32_e32 v1, 0xffff, v1282; GFX12-NEXT:    s_mov_b32 s1, s3283; GFX12-NEXT:    s_mov_b32 s2, s4284; GFX12-NEXT:    s_mov_b32 s3, s5285; GFX12-NEXT:    s_mov_b32 s4, s6286; GFX12-NEXT:    s_mov_b32 s5, s7287; GFX12-NEXT:    s_mov_b32 s6, s8288; GFX12-NEXT:    s_mov_b32 s7, s9289; GFX12-NEXT:    s_mov_b32 s8, s10290; GFX12-NEXT:    s_mov_b32 s9, s11291; GFX12-NEXT:    s_mov_b32 s10, s12292; GFX12-NEXT:    s_mov_b32 s11, s13293; GFX12-NEXT:    v_lshl_or_b32 v1, v2, 16, v1294; GFX12-NEXT:    s_and_b32 exec_lo, exec_lo, s14295; GFX12-NEXT:    image_gather4_c v[0:3], [v0, v1], s[0:7], s[8:11] dmask:0x1 dim:SQ_RSRC_IMG_2D a16296; GFX12-NEXT:    s_wait_samplecnt 0x0297; GFX12-NEXT:    ; return to shader part epilog298main_body:299  %v = call <4 x float> @llvm.amdgcn.image.gather4.c.2d.v4f32.f16(i32 1, float %zcompare, half %s, half %t, <8 x i32> %rsrc, <4 x i32> %samp, i1 false, i32 0, i32 0)300  ret <4 x float> %v301}302 303define amdgpu_ps <4 x float> @gather4_cl_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %s, half %t, half %clamp) {304; GFX9-LABEL: gather4_cl_2d:305; GFX9:       ; %bb.0: ; %main_body306; GFX9-NEXT:    s_mov_b64 s[14:15], exec307; GFX9-NEXT:    s_mov_b32 s0, s2308; GFX9-NEXT:    s_wqm_b64 exec, exec309; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0310; GFX9-NEXT:    s_mov_b32 s1, s3311; GFX9-NEXT:    s_mov_b32 s2, s4312; GFX9-NEXT:    s_mov_b32 s3, s5313; GFX9-NEXT:    s_mov_b32 s4, s6314; GFX9-NEXT:    s_mov_b32 s5, s7315; GFX9-NEXT:    s_mov_b32 s6, s8316; GFX9-NEXT:    s_mov_b32 s7, s9317; GFX9-NEXT:    s_mov_b32 s8, s10318; GFX9-NEXT:    s_mov_b32 s9, s11319; GFX9-NEXT:    s_mov_b32 s10, s12320; GFX9-NEXT:    s_mov_b32 s11, s13321; GFX9-NEXT:    v_lshl_or_b32 v1, v1, 16, v0322; GFX9-NEXT:    s_and_b64 exec, exec, s[14:15]323; GFX9-NEXT:    image_gather4_cl v[0:3], v[1:2], s[0:7], s[8:11] dmask:0x1 a16324; GFX9-NEXT:    s_waitcnt vmcnt(0)325; GFX9-NEXT:    ; return to shader part epilog326;327; GFX10NSA-LABEL: gather4_cl_2d:328; GFX10NSA:       ; %bb.0: ; %main_body329; GFX10NSA-NEXT:    s_mov_b32 s14, exec_lo330; GFX10NSA-NEXT:    s_mov_b32 s0, s2331; GFX10NSA-NEXT:    s_wqm_b32 exec_lo, exec_lo332; GFX10NSA-NEXT:    v_and_b32_e32 v0, 0xffff, v0333; GFX10NSA-NEXT:    s_mov_b32 s1, s3334; GFX10NSA-NEXT:    s_mov_b32 s2, s4335; GFX10NSA-NEXT:    s_mov_b32 s3, s5336; GFX10NSA-NEXT:    s_mov_b32 s4, s6337; GFX10NSA-NEXT:    s_mov_b32 s5, s7338; GFX10NSA-NEXT:    s_mov_b32 s6, s8339; GFX10NSA-NEXT:    s_mov_b32 s7, s9340; GFX10NSA-NEXT:    s_mov_b32 s8, s10341; GFX10NSA-NEXT:    s_mov_b32 s9, s11342; GFX10NSA-NEXT:    s_mov_b32 s10, s12343; GFX10NSA-NEXT:    s_mov_b32 s11, s13344; GFX10NSA-NEXT:    v_lshl_or_b32 v0, v1, 16, v0345; GFX10NSA-NEXT:    s_and_b32 exec_lo, exec_lo, s14346; GFX10NSA-NEXT:    image_gather4_cl v[0:3], [v0, v2], s[0:7], s[8:11] dmask:0x1 dim:SQ_RSRC_IMG_2D a16347; GFX10NSA-NEXT:    s_waitcnt vmcnt(0)348; GFX10NSA-NEXT:    ; return to shader part epilog349;350; GFX12-LABEL: gather4_cl_2d:351; GFX12:       ; %bb.0: ; %main_body352; GFX12-NEXT:    s_mov_b32 s14, exec_lo353; GFX12-NEXT:    s_mov_b32 s0, s2354; GFX12-NEXT:    s_wqm_b32 exec_lo, exec_lo355; GFX12-NEXT:    v_and_b32_e32 v0, 0xffff, v0356; GFX12-NEXT:    s_mov_b32 s1, s3357; GFX12-NEXT:    s_mov_b32 s2, s4358; GFX12-NEXT:    s_mov_b32 s3, s5359; GFX12-NEXT:    s_mov_b32 s4, s6360; GFX12-NEXT:    s_mov_b32 s5, s7361; GFX12-NEXT:    s_mov_b32 s6, s8362; GFX12-NEXT:    s_mov_b32 s7, s9363; GFX12-NEXT:    s_mov_b32 s8, s10364; GFX12-NEXT:    s_mov_b32 s9, s11365; GFX12-NEXT:    s_mov_b32 s10, s12366; GFX12-NEXT:    s_mov_b32 s11, s13367; GFX12-NEXT:    v_lshl_or_b32 v0, v1, 16, v0368; GFX12-NEXT:    s_and_b32 exec_lo, exec_lo, s14369; GFX12-NEXT:    image_gather4_cl v[0:3], [v0, v2], s[0:7], s[8:11] dmask:0x1 dim:SQ_RSRC_IMG_2D a16370; GFX12-NEXT:    s_wait_samplecnt 0x0371; GFX12-NEXT:    ; return to shader part epilog372main_body:373  %v = call <4 x float> @llvm.amdgcn.image.gather4.cl.2d.v4f32.f16(i32 1, half %s, half %t, half %clamp, <8 x i32> %rsrc, <4 x i32> %samp, i1 false, i32 0, i32 0)374  ret <4 x float> %v375}376 377define amdgpu_ps <4 x float> @gather4_c_cl_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %zcompare, half %s, half %t, half %clamp) {378; GFX9-LABEL: gather4_c_cl_2d:379; GFX9:       ; %bb.0: ; %main_body380; GFX9-NEXT:    s_mov_b64 s[14:15], exec381; GFX9-NEXT:    s_mov_b32 s0, s2382; GFX9-NEXT:    s_wqm_b64 exec, exec383; GFX9-NEXT:    v_mov_b32_e32 v4, v1384; GFX9-NEXT:    v_mov_b32_e32 v1, v0385; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v4386; GFX9-NEXT:    s_mov_b32 s1, s3387; GFX9-NEXT:    s_mov_b32 s2, s4388; GFX9-NEXT:    s_mov_b32 s3, s5389; GFX9-NEXT:    s_mov_b32 s4, s6390; GFX9-NEXT:    s_mov_b32 s5, s7391; GFX9-NEXT:    s_mov_b32 s6, s8392; GFX9-NEXT:    s_mov_b32 s7, s9393; GFX9-NEXT:    s_mov_b32 s8, s10394; GFX9-NEXT:    s_mov_b32 s9, s11395; GFX9-NEXT:    s_mov_b32 s10, s12396; GFX9-NEXT:    s_mov_b32 s11, s13397; GFX9-NEXT:    v_lshl_or_b32 v2, v2, 16, v0398; GFX9-NEXT:    s_and_b64 exec, exec, s[14:15]399; GFX9-NEXT:    image_gather4_c_cl v[0:3], v[1:3], s[0:7], s[8:11] dmask:0x1 a16400; GFX9-NEXT:    s_waitcnt vmcnt(0)401; GFX9-NEXT:    ; return to shader part epilog402;403; GFX10NSA-LABEL: gather4_c_cl_2d:404; GFX10NSA:       ; %bb.0: ; %main_body405; GFX10NSA-NEXT:    s_mov_b32 s14, exec_lo406; GFX10NSA-NEXT:    s_mov_b32 s0, s2407; GFX10NSA-NEXT:    s_wqm_b32 exec_lo, exec_lo408; GFX10NSA-NEXT:    v_and_b32_e32 v1, 0xffff, v1409; GFX10NSA-NEXT:    s_mov_b32 s1, s3410; GFX10NSA-NEXT:    s_mov_b32 s2, s4411; GFX10NSA-NEXT:    s_mov_b32 s3, s5412; GFX10NSA-NEXT:    s_mov_b32 s4, s6413; GFX10NSA-NEXT:    s_mov_b32 s5, s7414; GFX10NSA-NEXT:    s_mov_b32 s6, s8415; GFX10NSA-NEXT:    s_mov_b32 s7, s9416; GFX10NSA-NEXT:    s_mov_b32 s8, s10417; GFX10NSA-NEXT:    s_mov_b32 s9, s11418; GFX10NSA-NEXT:    s_mov_b32 s10, s12419; GFX10NSA-NEXT:    s_mov_b32 s11, s13420; GFX10NSA-NEXT:    v_lshl_or_b32 v1, v2, 16, v1421; GFX10NSA-NEXT:    s_and_b32 exec_lo, exec_lo, s14422; GFX10NSA-NEXT:    image_gather4_c_cl v[0:3], [v0, v1, v3], s[0:7], s[8:11] dmask:0x1 dim:SQ_RSRC_IMG_2D a16423; GFX10NSA-NEXT:    s_waitcnt vmcnt(0)424; GFX10NSA-NEXT:    ; return to shader part epilog425;426; GFX12-LABEL: gather4_c_cl_2d:427; GFX12:       ; %bb.0: ; %main_body428; GFX12-NEXT:    s_mov_b32 s14, exec_lo429; GFX12-NEXT:    s_mov_b32 s0, s2430; GFX12-NEXT:    s_wqm_b32 exec_lo, exec_lo431; GFX12-NEXT:    v_and_b32_e32 v1, 0xffff, v1432; GFX12-NEXT:    s_mov_b32 s1, s3433; GFX12-NEXT:    s_mov_b32 s2, s4434; GFX12-NEXT:    s_mov_b32 s3, s5435; GFX12-NEXT:    s_mov_b32 s4, s6436; GFX12-NEXT:    s_mov_b32 s5, s7437; GFX12-NEXT:    s_mov_b32 s6, s8438; GFX12-NEXT:    s_mov_b32 s7, s9439; GFX12-NEXT:    s_mov_b32 s8, s10440; GFX12-NEXT:    s_mov_b32 s9, s11441; GFX12-NEXT:    s_mov_b32 s10, s12442; GFX12-NEXT:    s_mov_b32 s11, s13443; GFX12-NEXT:    v_lshl_or_b32 v1, v2, 16, v1444; GFX12-NEXT:    s_and_b32 exec_lo, exec_lo, s14445; GFX12-NEXT:    image_gather4_c_cl v[0:3], [v0, v1, v3], s[0:7], s[8:11] dmask:0x1 dim:SQ_RSRC_IMG_2D a16446; GFX12-NEXT:    s_wait_samplecnt 0x0447; GFX12-NEXT:    ; return to shader part epilog448main_body:449  %v = call <4 x float> @llvm.amdgcn.image.gather4.c.cl.2d.v4f32.f16(i32 1, float %zcompare, half %s, half %t, half %clamp, <8 x i32> %rsrc, <4 x i32> %samp, i1 false, i32 0, i32 0)450  ret <4 x float> %v451}452 453define amdgpu_ps <4 x float> @gather4_b_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %bias, half %s, half %t) {454; GFX9-LABEL: gather4_b_2d:455; GFX9:       ; %bb.0: ; %main_body456; GFX9-NEXT:    s_mov_b64 s[14:15], exec457; GFX9-NEXT:    s_mov_b32 s0, s2458; GFX9-NEXT:    s_wqm_b64 exec, exec459; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1460; GFX9-NEXT:    s_mov_b32 s1, s3461; GFX9-NEXT:    s_mov_b32 s2, s4462; GFX9-NEXT:    s_mov_b32 s3, s5463; GFX9-NEXT:    s_mov_b32 s4, s6464; GFX9-NEXT:    s_mov_b32 s5, s7465; GFX9-NEXT:    s_mov_b32 s6, s8466; GFX9-NEXT:    s_mov_b32 s7, s9467; GFX9-NEXT:    s_mov_b32 s8, s10468; GFX9-NEXT:    s_mov_b32 s9, s11469; GFX9-NEXT:    s_mov_b32 s10, s12470; GFX9-NEXT:    s_mov_b32 s11, s13471; GFX9-NEXT:    v_lshl_or_b32 v1, v2, 16, v1472; GFX9-NEXT:    s_and_b64 exec, exec, s[14:15]473; GFX9-NEXT:    image_gather4_b v[0:3], v[0:1], s[0:7], s[8:11] dmask:0x1 a16474; GFX9-NEXT:    s_waitcnt vmcnt(0)475; GFX9-NEXT:    ; return to shader part epilog476;477; GFX10NSA-LABEL: gather4_b_2d:478; GFX10NSA:       ; %bb.0: ; %main_body479; GFX10NSA-NEXT:    s_mov_b32 s14, exec_lo480; GFX10NSA-NEXT:    s_mov_b32 s0, s2481; GFX10NSA-NEXT:    s_wqm_b32 exec_lo, exec_lo482; GFX10NSA-NEXT:    v_and_b32_e32 v1, 0xffff, v1483; GFX10NSA-NEXT:    s_mov_b32 s1, s3484; GFX10NSA-NEXT:    s_mov_b32 s2, s4485; GFX10NSA-NEXT:    s_mov_b32 s3, s5486; GFX10NSA-NEXT:    s_mov_b32 s4, s6487; GFX10NSA-NEXT:    s_mov_b32 s5, s7488; GFX10NSA-NEXT:    s_mov_b32 s6, s8489; GFX10NSA-NEXT:    s_mov_b32 s7, s9490; GFX10NSA-NEXT:    s_mov_b32 s8, s10491; GFX10NSA-NEXT:    s_mov_b32 s9, s11492; GFX10NSA-NEXT:    s_mov_b32 s10, s12493; GFX10NSA-NEXT:    s_mov_b32 s11, s13494; GFX10NSA-NEXT:    v_lshl_or_b32 v1, v2, 16, v1495; GFX10NSA-NEXT:    s_and_b32 exec_lo, exec_lo, s14496; GFX10NSA-NEXT:    image_gather4_b v[0:3], v[0:1], s[0:7], s[8:11] dmask:0x1 dim:SQ_RSRC_IMG_2D a16497; GFX10NSA-NEXT:    s_waitcnt vmcnt(0)498; GFX10NSA-NEXT:    ; return to shader part epilog499;500; GFX12-LABEL: gather4_b_2d:501; GFX12:       ; %bb.0: ; %main_body502; GFX12-NEXT:    s_mov_b32 s14, exec_lo503; GFX12-NEXT:    s_mov_b32 s0, s2504; GFX12-NEXT:    s_wqm_b32 exec_lo, exec_lo505; GFX12-NEXT:    v_and_b32_e32 v1, 0xffff, v1506; GFX12-NEXT:    s_mov_b32 s1, s3507; GFX12-NEXT:    s_mov_b32 s2, s4508; GFX12-NEXT:    s_mov_b32 s3, s5509; GFX12-NEXT:    s_mov_b32 s4, s6510; GFX12-NEXT:    s_mov_b32 s5, s7511; GFX12-NEXT:    s_mov_b32 s6, s8512; GFX12-NEXT:    s_mov_b32 s7, s9513; GFX12-NEXT:    s_mov_b32 s8, s10514; GFX12-NEXT:    s_mov_b32 s9, s11515; GFX12-NEXT:    s_mov_b32 s10, s12516; GFX12-NEXT:    s_mov_b32 s11, s13517; GFX12-NEXT:    v_lshl_or_b32 v1, v2, 16, v1518; GFX12-NEXT:    s_and_b32 exec_lo, exec_lo, s14519; GFX12-NEXT:    image_gather4_b v[0:3], [v0, v1], s[0:7], s[8:11] dmask:0x1 dim:SQ_RSRC_IMG_2D a16520; GFX12-NEXT:    s_wait_samplecnt 0x0521; GFX12-NEXT:    ; return to shader part epilog522main_body:523  %v = call <4 x float> @llvm.amdgcn.image.gather4.b.2d.v4f32.f16.f16(i32 1, half %bias, half %s, half %t, <8 x i32> %rsrc, <4 x i32> %samp, i1 false, i32 0, i32 0)524  ret <4 x float> %v525}526 527define amdgpu_ps <4 x float> @gather4_c_b_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %bias, float %zcompare, half %s, half %t) {528; GFX9-LABEL: gather4_c_b_2d:529; GFX9:       ; %bb.0: ; %main_body530; GFX9-NEXT:    s_mov_b64 s[14:15], exec531; GFX9-NEXT:    s_mov_b32 s0, s2532; GFX9-NEXT:    s_wqm_b64 exec, exec533; GFX9-NEXT:    v_and_b32_e32 v2, 0xffff, v2534; GFX9-NEXT:    s_mov_b32 s1, s3535; GFX9-NEXT:    s_mov_b32 s2, s4536; GFX9-NEXT:    s_mov_b32 s3, s5537; GFX9-NEXT:    s_mov_b32 s4, s6538; GFX9-NEXT:    s_mov_b32 s5, s7539; GFX9-NEXT:    s_mov_b32 s6, s8540; GFX9-NEXT:    s_mov_b32 s7, s9541; GFX9-NEXT:    s_mov_b32 s8, s10542; GFX9-NEXT:    s_mov_b32 s9, s11543; GFX9-NEXT:    s_mov_b32 s10, s12544; GFX9-NEXT:    s_mov_b32 s11, s13545; GFX9-NEXT:    v_lshl_or_b32 v2, v3, 16, v2546; GFX9-NEXT:    s_and_b64 exec, exec, s[14:15]547; GFX9-NEXT:    image_gather4_c_b v[0:3], v[0:2], s[0:7], s[8:11] dmask:0x1 a16548; GFX9-NEXT:    s_waitcnt vmcnt(0)549; GFX9-NEXT:    ; return to shader part epilog550;551; GFX10NSA-LABEL: gather4_c_b_2d:552; GFX10NSA:       ; %bb.0: ; %main_body553; GFX10NSA-NEXT:    s_mov_b32 s14, exec_lo554; GFX10NSA-NEXT:    s_mov_b32 s0, s2555; GFX10NSA-NEXT:    s_wqm_b32 exec_lo, exec_lo556; GFX10NSA-NEXT:    v_and_b32_e32 v2, 0xffff, v2557; GFX10NSA-NEXT:    s_mov_b32 s1, s3558; GFX10NSA-NEXT:    s_mov_b32 s2, s4559; GFX10NSA-NEXT:    s_mov_b32 s3, s5560; GFX10NSA-NEXT:    s_mov_b32 s4, s6561; GFX10NSA-NEXT:    s_mov_b32 s5, s7562; GFX10NSA-NEXT:    s_mov_b32 s6, s8563; GFX10NSA-NEXT:    s_mov_b32 s7, s9564; GFX10NSA-NEXT:    s_mov_b32 s8, s10565; GFX10NSA-NEXT:    s_mov_b32 s9, s11566; GFX10NSA-NEXT:    s_mov_b32 s10, s12567; GFX10NSA-NEXT:    s_mov_b32 s11, s13568; GFX10NSA-NEXT:    v_lshl_or_b32 v2, v3, 16, v2569; GFX10NSA-NEXT:    s_and_b32 exec_lo, exec_lo, s14570; GFX10NSA-NEXT:    image_gather4_c_b v[0:3], v[0:2], s[0:7], s[8:11] dmask:0x1 dim:SQ_RSRC_IMG_2D a16571; GFX10NSA-NEXT:    s_waitcnt vmcnt(0)572; GFX10NSA-NEXT:    ; return to shader part epilog573;574; GFX12-LABEL: gather4_c_b_2d:575; GFX12:       ; %bb.0: ; %main_body576; GFX12-NEXT:    s_mov_b32 s14, exec_lo577; GFX12-NEXT:    s_mov_b32 s0, s2578; GFX12-NEXT:    s_wqm_b32 exec_lo, exec_lo579; GFX12-NEXT:    v_and_b32_e32 v2, 0xffff, v2580; GFX12-NEXT:    s_mov_b32 s1, s3581; GFX12-NEXT:    s_mov_b32 s2, s4582; GFX12-NEXT:    s_mov_b32 s3, s5583; GFX12-NEXT:    s_mov_b32 s4, s6584; GFX12-NEXT:    s_mov_b32 s5, s7585; GFX12-NEXT:    s_mov_b32 s6, s8586; GFX12-NEXT:    s_mov_b32 s7, s9587; GFX12-NEXT:    s_mov_b32 s8, s10588; GFX12-NEXT:    s_mov_b32 s9, s11589; GFX12-NEXT:    s_mov_b32 s10, s12590; GFX12-NEXT:    s_mov_b32 s11, s13591; GFX12-NEXT:    v_lshl_or_b32 v2, v3, 16, v2592; GFX12-NEXT:    s_and_b32 exec_lo, exec_lo, s14593; GFX12-NEXT:    image_gather4_c_b v[0:3], [v0, v1, v2], s[0:7], s[8:11] dmask:0x1 dim:SQ_RSRC_IMG_2D a16594; GFX12-NEXT:    s_wait_samplecnt 0x0595; GFX12-NEXT:    ; return to shader part epilog596main_body:597  %v = call <4 x float> @llvm.amdgcn.image.gather4.c.b.2d.v4f32.f16.f16(i32 1, half %bias, float %zcompare, half %s, half %t, <8 x i32> %rsrc, <4 x i32> %samp, i1 false, i32 0, i32 0)598  ret <4 x float> %v599}600 601define amdgpu_ps <4 x float> @gather4_b_cl_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %bias, half %s, half %t, half %clamp) {602; GFX9-LABEL: gather4_b_cl_2d:603; GFX9:       ; %bb.0: ; %main_body604; GFX9-NEXT:    s_mov_b64 s[14:15], exec605; GFX9-NEXT:    s_mov_b32 s0, s2606; GFX9-NEXT:    s_wqm_b64 exec, exec607; GFX9-NEXT:    v_mov_b32_e32 v4, v1608; GFX9-NEXT:    v_mov_b32_e32 v1, v0609; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v4610; GFX9-NEXT:    s_mov_b32 s1, s3611; GFX9-NEXT:    s_mov_b32 s2, s4612; GFX9-NEXT:    s_mov_b32 s3, s5613; GFX9-NEXT:    s_mov_b32 s4, s6614; GFX9-NEXT:    s_mov_b32 s5, s7615; GFX9-NEXT:    s_mov_b32 s6, s8616; GFX9-NEXT:    s_mov_b32 s7, s9617; GFX9-NEXT:    s_mov_b32 s8, s10618; GFX9-NEXT:    s_mov_b32 s9, s11619; GFX9-NEXT:    s_mov_b32 s10, s12620; GFX9-NEXT:    s_mov_b32 s11, s13621; GFX9-NEXT:    v_lshl_or_b32 v2, v2, 16, v0622; GFX9-NEXT:    s_and_b64 exec, exec, s[14:15]623; GFX9-NEXT:    image_gather4_b_cl v[0:3], v[1:3], s[0:7], s[8:11] dmask:0x1 a16624; GFX9-NEXT:    s_waitcnt vmcnt(0)625; GFX9-NEXT:    ; return to shader part epilog626;627; GFX10NSA-LABEL: gather4_b_cl_2d:628; GFX10NSA:       ; %bb.0: ; %main_body629; GFX10NSA-NEXT:    s_mov_b32 s14, exec_lo630; GFX10NSA-NEXT:    s_mov_b32 s0, s2631; GFX10NSA-NEXT:    s_wqm_b32 exec_lo, exec_lo632; GFX10NSA-NEXT:    v_and_b32_e32 v1, 0xffff, v1633; GFX10NSA-NEXT:    s_mov_b32 s1, s3634; GFX10NSA-NEXT:    s_mov_b32 s2, s4635; GFX10NSA-NEXT:    s_mov_b32 s3, s5636; GFX10NSA-NEXT:    s_mov_b32 s4, s6637; GFX10NSA-NEXT:    s_mov_b32 s5, s7638; GFX10NSA-NEXT:    s_mov_b32 s6, s8639; GFX10NSA-NEXT:    s_mov_b32 s7, s9640; GFX10NSA-NEXT:    s_mov_b32 s8, s10641; GFX10NSA-NEXT:    s_mov_b32 s9, s11642; GFX10NSA-NEXT:    s_mov_b32 s10, s12643; GFX10NSA-NEXT:    s_mov_b32 s11, s13644; GFX10NSA-NEXT:    v_lshl_or_b32 v1, v2, 16, v1645; GFX10NSA-NEXT:    s_and_b32 exec_lo, exec_lo, s14646; GFX10NSA-NEXT:    image_gather4_b_cl v[0:3], [v0, v1, v3], s[0:7], s[8:11] dmask:0x1 dim:SQ_RSRC_IMG_2D a16647; GFX10NSA-NEXT:    s_waitcnt vmcnt(0)648; GFX10NSA-NEXT:    ; return to shader part epilog649;650; GFX12-LABEL: gather4_b_cl_2d:651; GFX12:       ; %bb.0: ; %main_body652; GFX12-NEXT:    s_mov_b32 s14, exec_lo653; GFX12-NEXT:    s_mov_b32 s0, s2654; GFX12-NEXT:    s_wqm_b32 exec_lo, exec_lo655; GFX12-NEXT:    v_and_b32_e32 v1, 0xffff, v1656; GFX12-NEXT:    s_mov_b32 s1, s3657; GFX12-NEXT:    s_mov_b32 s2, s4658; GFX12-NEXT:    s_mov_b32 s3, s5659; GFX12-NEXT:    s_mov_b32 s4, s6660; GFX12-NEXT:    s_mov_b32 s5, s7661; GFX12-NEXT:    s_mov_b32 s6, s8662; GFX12-NEXT:    s_mov_b32 s7, s9663; GFX12-NEXT:    s_mov_b32 s8, s10664; GFX12-NEXT:    s_mov_b32 s9, s11665; GFX12-NEXT:    s_mov_b32 s10, s12666; GFX12-NEXT:    s_mov_b32 s11, s13667; GFX12-NEXT:    v_lshl_or_b32 v1, v2, 16, v1668; GFX12-NEXT:    s_and_b32 exec_lo, exec_lo, s14669; GFX12-NEXT:    image_gather4_b_cl v[0:3], [v0, v1, v3], s[0:7], s[8:11] dmask:0x1 dim:SQ_RSRC_IMG_2D a16670; GFX12-NEXT:    s_wait_samplecnt 0x0671; GFX12-NEXT:    ; return to shader part epilog672main_body:673  %v = call <4 x float> @llvm.amdgcn.image.gather4.b.cl.2d.v4f32.f16.f16(i32 1, half %bias, half %s, half %t, half %clamp, <8 x i32> %rsrc, <4 x i32> %samp, i1 false, i32 0, i32 0)674  ret <4 x float> %v675}676 677define amdgpu_ps <4 x float> @gather4_c_b_cl_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %bias, float %zcompare, half %s, half %t, half %clamp) {678; GFX9-LABEL: gather4_c_b_cl_2d:679; GFX9:       ; %bb.0: ; %main_body680; GFX9-NEXT:    s_mov_b64 s[14:15], exec681; GFX9-NEXT:    s_mov_b32 s0, s2682; GFX9-NEXT:    s_wqm_b64 exec, exec683; GFX9-NEXT:    v_mov_b32_e32 v5, v3684; GFX9-NEXT:    v_and_b32_e32 v2, 0xffff, v2685; GFX9-NEXT:    s_mov_b32 s1, s3686; GFX9-NEXT:    s_mov_b32 s2, s4687; GFX9-NEXT:    s_mov_b32 s3, s5688; GFX9-NEXT:    s_mov_b32 s4, s6689; GFX9-NEXT:    s_mov_b32 s5, s7690; GFX9-NEXT:    s_mov_b32 s6, s8691; GFX9-NEXT:    s_mov_b32 s7, s9692; GFX9-NEXT:    s_mov_b32 s8, s10693; GFX9-NEXT:    s_mov_b32 s9, s11694; GFX9-NEXT:    s_mov_b32 s10, s12695; GFX9-NEXT:    s_mov_b32 s11, s13696; GFX9-NEXT:    v_mov_b32_e32 v3, v4697; GFX9-NEXT:    v_lshl_or_b32 v2, v5, 16, v2698; GFX9-NEXT:    s_and_b64 exec, exec, s[14:15]699; GFX9-NEXT:    image_gather4_c_b_cl v[0:3], v[0:3], s[0:7], s[8:11] dmask:0x1 a16700; GFX9-NEXT:    s_waitcnt vmcnt(0)701; GFX9-NEXT:    ; return to shader part epilog702;703; GFX10NSA-LABEL: gather4_c_b_cl_2d:704; GFX10NSA:       ; %bb.0: ; %main_body705; GFX10NSA-NEXT:    s_mov_b32 s14, exec_lo706; GFX10NSA-NEXT:    s_mov_b32 s0, s2707; GFX10NSA-NEXT:    s_wqm_b32 exec_lo, exec_lo708; GFX10NSA-NEXT:    v_and_b32_e32 v2, 0xffff, v2709; GFX10NSA-NEXT:    s_mov_b32 s1, s3710; GFX10NSA-NEXT:    s_mov_b32 s2, s4711; GFX10NSA-NEXT:    s_mov_b32 s3, s5712; GFX10NSA-NEXT:    s_mov_b32 s4, s6713; GFX10NSA-NEXT:    s_mov_b32 s5, s7714; GFX10NSA-NEXT:    s_mov_b32 s6, s8715; GFX10NSA-NEXT:    s_mov_b32 s7, s9716; GFX10NSA-NEXT:    s_mov_b32 s8, s10717; GFX10NSA-NEXT:    s_mov_b32 s9, s11718; GFX10NSA-NEXT:    s_mov_b32 s10, s12719; GFX10NSA-NEXT:    s_mov_b32 s11, s13720; GFX10NSA-NEXT:    v_lshl_or_b32 v2, v3, 16, v2721; GFX10NSA-NEXT:    s_and_b32 exec_lo, exec_lo, s14722; GFX10NSA-NEXT:    image_gather4_c_b_cl v[0:3], [v0, v1, v2, v4], s[0:7], s[8:11] dmask:0x1 dim:SQ_RSRC_IMG_2D a16723; GFX10NSA-NEXT:    s_waitcnt vmcnt(0)724; GFX10NSA-NEXT:    ; return to shader part epilog725;726; GFX12-LABEL: gather4_c_b_cl_2d:727; GFX12:       ; %bb.0: ; %main_body728; GFX12-NEXT:    s_mov_b32 s14, exec_lo729; GFX12-NEXT:    s_mov_b32 s0, s2730; GFX12-NEXT:    s_wqm_b32 exec_lo, exec_lo731; GFX12-NEXT:    v_and_b32_e32 v2, 0xffff, v2732; GFX12-NEXT:    s_mov_b32 s1, s3733; GFX12-NEXT:    s_mov_b32 s2, s4734; GFX12-NEXT:    s_mov_b32 s3, s5735; GFX12-NEXT:    s_mov_b32 s4, s6736; GFX12-NEXT:    s_mov_b32 s5, s7737; GFX12-NEXT:    s_mov_b32 s6, s8738; GFX12-NEXT:    s_mov_b32 s7, s9739; GFX12-NEXT:    s_mov_b32 s8, s10740; GFX12-NEXT:    s_mov_b32 s9, s11741; GFX12-NEXT:    s_mov_b32 s10, s12742; GFX12-NEXT:    s_mov_b32 s11, s13743; GFX12-NEXT:    v_lshl_or_b32 v2, v3, 16, v2744; GFX12-NEXT:    s_and_b32 exec_lo, exec_lo, s14745; GFX12-NEXT:    image_gather4_c_b_cl v[0:3], [v0, v1, v2, v4], s[0:7], s[8:11] dmask:0x1 dim:SQ_RSRC_IMG_2D a16746; GFX12-NEXT:    s_wait_samplecnt 0x0747; GFX12-NEXT:    ; return to shader part epilog748main_body:749  %v = call <4 x float> @llvm.amdgcn.image.gather4.c.b.cl.2d.v4f32.f16.f16(i32 1, half %bias, float %zcompare, half %s, half %t, half %clamp, <8 x i32> %rsrc, <4 x i32> %samp, i1 false, i32 0, i32 0)750  ret <4 x float> %v751}752 753define amdgpu_ps <4 x float> @gather4_l_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %s, half %t, half %lod) {754; GFX9-LABEL: gather4_l_2d:755; GFX9:       ; %bb.0: ; %main_body756; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0757; GFX9-NEXT:    s_mov_b32 s0, s2758; GFX9-NEXT:    s_mov_b32 s1, s3759; GFX9-NEXT:    s_mov_b32 s2, s4760; GFX9-NEXT:    s_mov_b32 s3, s5761; GFX9-NEXT:    s_mov_b32 s4, s6762; GFX9-NEXT:    s_mov_b32 s5, s7763; GFX9-NEXT:    s_mov_b32 s6, s8764; GFX9-NEXT:    s_mov_b32 s7, s9765; GFX9-NEXT:    s_mov_b32 s8, s10766; GFX9-NEXT:    s_mov_b32 s9, s11767; GFX9-NEXT:    s_mov_b32 s10, s12768; GFX9-NEXT:    s_mov_b32 s11, s13769; GFX9-NEXT:    v_lshl_or_b32 v1, v1, 16, v0770; GFX9-NEXT:    image_gather4_l v[0:3], v[1:2], s[0:7], s[8:11] dmask:0x1 a16771; GFX9-NEXT:    s_waitcnt vmcnt(0)772; GFX9-NEXT:    ; return to shader part epilog773;774; GFX10NSA-LABEL: gather4_l_2d:775; GFX10NSA:       ; %bb.0: ; %main_body776; GFX10NSA-NEXT:    v_and_b32_e32 v0, 0xffff, v0777; GFX10NSA-NEXT:    s_mov_b32 s0, s2778; GFX10NSA-NEXT:    s_mov_b32 s1, s3779; GFX10NSA-NEXT:    s_mov_b32 s2, s4780; GFX10NSA-NEXT:    s_mov_b32 s3, s5781; GFX10NSA-NEXT:    v_lshl_or_b32 v0, v1, 16, v0782; GFX10NSA-NEXT:    s_mov_b32 s4, s6783; GFX10NSA-NEXT:    s_mov_b32 s5, s7784; GFX10NSA-NEXT:    s_mov_b32 s6, s8785; GFX10NSA-NEXT:    s_mov_b32 s7, s9786; GFX10NSA-NEXT:    s_mov_b32 s8, s10787; GFX10NSA-NEXT:    s_mov_b32 s9, s11788; GFX10NSA-NEXT:    s_mov_b32 s10, s12789; GFX10NSA-NEXT:    s_mov_b32 s11, s13790; GFX10NSA-NEXT:    image_gather4_l v[0:3], [v0, v2], s[0:7], s[8:11] dmask:0x1 dim:SQ_RSRC_IMG_2D a16791; GFX10NSA-NEXT:    s_waitcnt vmcnt(0)792; GFX10NSA-NEXT:    ; return to shader part epilog793;794; GFX12-LABEL: gather4_l_2d:795; GFX12:       ; %bb.0: ; %main_body796; GFX12-NEXT:    v_and_b32_e32 v0, 0xffff, v0797; GFX12-NEXT:    s_mov_b32 s0, s2798; GFX12-NEXT:    s_mov_b32 s1, s3799; GFX12-NEXT:    s_mov_b32 s2, s4800; GFX12-NEXT:    s_mov_b32 s3, s5801; GFX12-NEXT:    v_lshl_or_b32 v0, v1, 16, v0802; GFX12-NEXT:    s_mov_b32 s4, s6803; GFX12-NEXT:    s_mov_b32 s5, s7804; GFX12-NEXT:    s_mov_b32 s6, s8805; GFX12-NEXT:    s_mov_b32 s7, s9806; GFX12-NEXT:    s_mov_b32 s8, s10807; GFX12-NEXT:    s_mov_b32 s9, s11808; GFX12-NEXT:    s_mov_b32 s10, s12809; GFX12-NEXT:    s_mov_b32 s11, s13810; GFX12-NEXT:    image_gather4_l v[0:3], [v0, v2], s[0:7], s[8:11] dmask:0x1 dim:SQ_RSRC_IMG_2D a16811; GFX12-NEXT:    s_wait_samplecnt 0x0812; GFX12-NEXT:    ; return to shader part epilog813main_body:814  %v = call <4 x float> @llvm.amdgcn.image.gather4.l.2d.v4f32.f16(i32 1, half %s, half %t, half %lod, <8 x i32> %rsrc, <4 x i32> %samp, i1 false, i32 0, i32 0)815  ret <4 x float> %v816}817 818define amdgpu_ps <4 x float> @gather4_c_l_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %zcompare, half %s, half %t, half %lod) {819; GFX9-LABEL: gather4_c_l_2d:820; GFX9:       ; %bb.0: ; %main_body821; GFX9-NEXT:    v_mov_b32_e32 v4, v1822; GFX9-NEXT:    v_mov_b32_e32 v1, v0823; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v4824; GFX9-NEXT:    s_mov_b32 s0, s2825; GFX9-NEXT:    s_mov_b32 s1, s3826; GFX9-NEXT:    s_mov_b32 s2, s4827; GFX9-NEXT:    s_mov_b32 s3, s5828; GFX9-NEXT:    s_mov_b32 s4, s6829; GFX9-NEXT:    s_mov_b32 s5, s7830; GFX9-NEXT:    s_mov_b32 s6, s8831; GFX9-NEXT:    s_mov_b32 s7, s9832; GFX9-NEXT:    s_mov_b32 s8, s10833; GFX9-NEXT:    s_mov_b32 s9, s11834; GFX9-NEXT:    s_mov_b32 s10, s12835; GFX9-NEXT:    s_mov_b32 s11, s13836; GFX9-NEXT:    v_lshl_or_b32 v2, v2, 16, v0837; GFX9-NEXT:    image_gather4_c_l v[0:3], v[1:3], s[0:7], s[8:11] dmask:0x1 a16838; GFX9-NEXT:    s_waitcnt vmcnt(0)839; GFX9-NEXT:    ; return to shader part epilog840;841; GFX10NSA-LABEL: gather4_c_l_2d:842; GFX10NSA:       ; %bb.0: ; %main_body843; GFX10NSA-NEXT:    v_and_b32_e32 v1, 0xffff, v1844; GFX10NSA-NEXT:    s_mov_b32 s0, s2845; GFX10NSA-NEXT:    s_mov_b32 s1, s3846; GFX10NSA-NEXT:    s_mov_b32 s2, s4847; GFX10NSA-NEXT:    s_mov_b32 s3, s5848; GFX10NSA-NEXT:    v_lshl_or_b32 v1, v2, 16, v1849; GFX10NSA-NEXT:    s_mov_b32 s4, s6850; GFX10NSA-NEXT:    s_mov_b32 s5, s7851; GFX10NSA-NEXT:    s_mov_b32 s6, s8852; GFX10NSA-NEXT:    s_mov_b32 s7, s9853; GFX10NSA-NEXT:    s_mov_b32 s8, s10854; GFX10NSA-NEXT:    s_mov_b32 s9, s11855; GFX10NSA-NEXT:    s_mov_b32 s10, s12856; GFX10NSA-NEXT:    s_mov_b32 s11, s13857; GFX10NSA-NEXT:    image_gather4_c_l v[0:3], [v0, v1, v3], s[0:7], s[8:11] dmask:0x1 dim:SQ_RSRC_IMG_2D a16858; GFX10NSA-NEXT:    s_waitcnt vmcnt(0)859; GFX10NSA-NEXT:    ; return to shader part epilog860;861; GFX12-LABEL: gather4_c_l_2d:862; GFX12:       ; %bb.0: ; %main_body863; GFX12-NEXT:    v_and_b32_e32 v1, 0xffff, v1864; GFX12-NEXT:    s_mov_b32 s0, s2865; GFX12-NEXT:    s_mov_b32 s1, s3866; GFX12-NEXT:    s_mov_b32 s2, s4867; GFX12-NEXT:    s_mov_b32 s3, s5868; GFX12-NEXT:    v_lshl_or_b32 v1, v2, 16, v1869; GFX12-NEXT:    s_mov_b32 s4, s6870; GFX12-NEXT:    s_mov_b32 s5, s7871; GFX12-NEXT:    s_mov_b32 s6, s8872; GFX12-NEXT:    s_mov_b32 s7, s9873; GFX12-NEXT:    s_mov_b32 s8, s10874; GFX12-NEXT:    s_mov_b32 s9, s11875; GFX12-NEXT:    s_mov_b32 s10, s12876; GFX12-NEXT:    s_mov_b32 s11, s13877; GFX12-NEXT:    image_gather4_c_l v[0:3], [v0, v1, v3], s[0:7], s[8:11] dmask:0x1 dim:SQ_RSRC_IMG_2D a16878; GFX12-NEXT:    s_wait_samplecnt 0x0879; GFX12-NEXT:    ; return to shader part epilog880main_body:881  %v = call <4 x float> @llvm.amdgcn.image.gather4.c.l.2d.v4f32.f16(i32 1, float %zcompare, half %s, half %t, half %lod, <8 x i32> %rsrc, <4 x i32> %samp, i1 false, i32 0, i32 0)882  ret <4 x float> %v883}884 885define amdgpu_ps <4 x float> @gather4_lz_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %s, half %t) {886; GFX9-LABEL: gather4_lz_2d:887; GFX9:       ; %bb.0: ; %main_body888; GFX9-NEXT:    v_and_b32_e32 v0, 0xffff, v0889; GFX9-NEXT:    s_mov_b32 s0, s2890; GFX9-NEXT:    s_mov_b32 s1, s3891; GFX9-NEXT:    s_mov_b32 s2, s4892; GFX9-NEXT:    s_mov_b32 s3, s5893; GFX9-NEXT:    s_mov_b32 s4, s6894; GFX9-NEXT:    s_mov_b32 s5, s7895; GFX9-NEXT:    s_mov_b32 s6, s8896; GFX9-NEXT:    s_mov_b32 s7, s9897; GFX9-NEXT:    s_mov_b32 s8, s10898; GFX9-NEXT:    s_mov_b32 s9, s11899; GFX9-NEXT:    s_mov_b32 s10, s12900; GFX9-NEXT:    s_mov_b32 s11, s13901; GFX9-NEXT:    v_lshl_or_b32 v0, v1, 16, v0902; GFX9-NEXT:    image_gather4_lz v[0:3], v0, s[0:7], s[8:11] dmask:0x1 a16903; GFX9-NEXT:    s_waitcnt vmcnt(0)904; GFX9-NEXT:    ; return to shader part epilog905;906; GFX10NSA-LABEL: gather4_lz_2d:907; GFX10NSA:       ; %bb.0: ; %main_body908; GFX10NSA-NEXT:    v_and_b32_e32 v0, 0xffff, v0909; GFX10NSA-NEXT:    s_mov_b32 s0, s2910; GFX10NSA-NEXT:    s_mov_b32 s1, s3911; GFX10NSA-NEXT:    s_mov_b32 s2, s4912; GFX10NSA-NEXT:    s_mov_b32 s3, s5913; GFX10NSA-NEXT:    v_lshl_or_b32 v0, v1, 16, v0914; GFX10NSA-NEXT:    s_mov_b32 s4, s6915; GFX10NSA-NEXT:    s_mov_b32 s5, s7916; GFX10NSA-NEXT:    s_mov_b32 s6, s8917; GFX10NSA-NEXT:    s_mov_b32 s7, s9918; GFX10NSA-NEXT:    s_mov_b32 s8, s10919; GFX10NSA-NEXT:    s_mov_b32 s9, s11920; GFX10NSA-NEXT:    s_mov_b32 s10, s12921; GFX10NSA-NEXT:    s_mov_b32 s11, s13922; GFX10NSA-NEXT:    image_gather4_lz v[0:3], v0, s[0:7], s[8:11] dmask:0x1 dim:SQ_RSRC_IMG_2D a16923; GFX10NSA-NEXT:    s_waitcnt vmcnt(0)924; GFX10NSA-NEXT:    ; return to shader part epilog925;926; GFX12-LABEL: gather4_lz_2d:927; GFX12:       ; %bb.0: ; %main_body928; GFX12-NEXT:    v_and_b32_e32 v0, 0xffff, v0929; GFX12-NEXT:    s_mov_b32 s0, s2930; GFX12-NEXT:    s_mov_b32 s1, s3931; GFX12-NEXT:    s_mov_b32 s2, s4932; GFX12-NEXT:    s_mov_b32 s3, s5933; GFX12-NEXT:    v_lshl_or_b32 v0, v1, 16, v0934; GFX12-NEXT:    s_mov_b32 s4, s6935; GFX12-NEXT:    s_mov_b32 s5, s7936; GFX12-NEXT:    s_mov_b32 s6, s8937; GFX12-NEXT:    s_mov_b32 s7, s9938; GFX12-NEXT:    s_mov_b32 s8, s10939; GFX12-NEXT:    s_mov_b32 s9, s11940; GFX12-NEXT:    s_mov_b32 s10, s12941; GFX12-NEXT:    s_mov_b32 s11, s13942; GFX12-NEXT:    image_gather4_lz v[0:3], v0, s[0:7], s[8:11] dmask:0x1 dim:SQ_RSRC_IMG_2D a16943; GFX12-NEXT:    s_wait_samplecnt 0x0944; GFX12-NEXT:    ; return to shader part epilog945main_body:946  %v = call <4 x float> @llvm.amdgcn.image.gather4.lz.2d.v4f32.f16(i32 1, half %s, half %t, <8 x i32> %rsrc, <4 x i32> %samp, i1 false, i32 0, i32 0)947  ret <4 x float> %v948}949 950define amdgpu_ps <4 x float> @gather4_c_lz_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %zcompare, half %s, half %t) {951; GFX9-LABEL: gather4_c_lz_2d:952; GFX9:       ; %bb.0: ; %main_body953; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v1954; GFX9-NEXT:    s_mov_b32 s0, s2955; GFX9-NEXT:    s_mov_b32 s1, s3956; GFX9-NEXT:    s_mov_b32 s2, s4957; GFX9-NEXT:    s_mov_b32 s3, s5958; GFX9-NEXT:    s_mov_b32 s4, s6959; GFX9-NEXT:    s_mov_b32 s5, s7960; GFX9-NEXT:    s_mov_b32 s6, s8961; GFX9-NEXT:    s_mov_b32 s7, s9962; GFX9-NEXT:    s_mov_b32 s8, s10963; GFX9-NEXT:    s_mov_b32 s9, s11964; GFX9-NEXT:    s_mov_b32 s10, s12965; GFX9-NEXT:    s_mov_b32 s11, s13966; GFX9-NEXT:    v_lshl_or_b32 v1, v2, 16, v1967; GFX9-NEXT:    image_gather4_c_lz v[0:3], v[0:1], s[0:7], s[8:11] dmask:0x1 a16968; GFX9-NEXT:    s_waitcnt vmcnt(0)969; GFX9-NEXT:    ; return to shader part epilog970;971; GFX10NSA-LABEL: gather4_c_lz_2d:972; GFX10NSA:       ; %bb.0: ; %main_body973; GFX10NSA-NEXT:    v_and_b32_e32 v1, 0xffff, v1974; GFX10NSA-NEXT:    s_mov_b32 s0, s2975; GFX10NSA-NEXT:    s_mov_b32 s1, s3976; GFX10NSA-NEXT:    s_mov_b32 s2, s4977; GFX10NSA-NEXT:    s_mov_b32 s3, s5978; GFX10NSA-NEXT:    v_lshl_or_b32 v1, v2, 16, v1979; GFX10NSA-NEXT:    s_mov_b32 s4, s6980; GFX10NSA-NEXT:    s_mov_b32 s5, s7981; GFX10NSA-NEXT:    s_mov_b32 s6, s8982; GFX10NSA-NEXT:    s_mov_b32 s7, s9983; GFX10NSA-NEXT:    s_mov_b32 s8, s10984; GFX10NSA-NEXT:    s_mov_b32 s9, s11985; GFX10NSA-NEXT:    s_mov_b32 s10, s12986; GFX10NSA-NEXT:    s_mov_b32 s11, s13987; GFX10NSA-NEXT:    image_gather4_c_lz v[0:3], v[0:1], s[0:7], s[8:11] dmask:0x1 dim:SQ_RSRC_IMG_2D a16988; GFX10NSA-NEXT:    s_waitcnt vmcnt(0)989; GFX10NSA-NEXT:    ; return to shader part epilog990;991; GFX12-LABEL: gather4_c_lz_2d:992; GFX12:       ; %bb.0: ; %main_body993; GFX12-NEXT:    v_and_b32_e32 v1, 0xffff, v1994; GFX12-NEXT:    s_mov_b32 s0, s2995; GFX12-NEXT:    s_mov_b32 s1, s3996; GFX12-NEXT:    s_mov_b32 s2, s4997; GFX12-NEXT:    s_mov_b32 s3, s5998; GFX12-NEXT:    v_lshl_or_b32 v1, v2, 16, v1999; GFX12-NEXT:    s_mov_b32 s4, s61000; GFX12-NEXT:    s_mov_b32 s5, s71001; GFX12-NEXT:    s_mov_b32 s6, s81002; GFX12-NEXT:    s_mov_b32 s7, s91003; GFX12-NEXT:    s_mov_b32 s8, s101004; GFX12-NEXT:    s_mov_b32 s9, s111005; GFX12-NEXT:    s_mov_b32 s10, s121006; GFX12-NEXT:    s_mov_b32 s11, s131007; GFX12-NEXT:    image_gather4_c_lz v[0:3], [v0, v1], s[0:7], s[8:11] dmask:0x1 dim:SQ_RSRC_IMG_2D a161008; GFX12-NEXT:    s_wait_samplecnt 0x01009; GFX12-NEXT:    ; return to shader part epilog1010main_body:1011  %v = call <4 x float> @llvm.amdgcn.image.gather4.c.lz.2d.v4f32.f16(i32 1, float %zcompare, half %s, half %t, <8 x i32> %rsrc, <4 x i32> %samp, i1 false, i32 0, i32 0)1012  ret <4 x float> %v1013}1014 1015declare <4 x float> @llvm.amdgcn.image.gather4.2d.v4f32.f16(i32 immarg, half, half, <8 x i32>, <4 x i32>, i1 immarg, i32 immarg, i32 immarg) #01016declare <4 x float> @llvm.amdgcn.image.gather4.cube.v4f32.f16(i32 immarg, half, half, half, <8 x i32>, <4 x i32>, i1 immarg, i32 immarg, i32 immarg) #01017declare <4 x float> @llvm.amdgcn.image.gather4.2darray.v4f32.f16(i32 immarg, half, half, half, <8 x i32>, <4 x i32>, i1 immarg, i32 immarg, i32 immarg) #01018declare <4 x float> @llvm.amdgcn.image.gather4.cl.2d.v4f32.f16(i32 immarg, half, half, half, <8 x i32>, <4 x i32>, i1 immarg, i32 immarg, i32 immarg) #01019declare <4 x float> @llvm.amdgcn.image.gather4.b.2d.v4f32.f16.f16(i32 immarg, half, half, half, <8 x i32>, <4 x i32>, i1 immarg, i32 immarg, i32 immarg) #01020declare <4 x float> @llvm.amdgcn.image.gather4.c.b.2d.v4f32.f16.f16(i32 immarg, half, float, half, half, <8 x i32>, <4 x i32>, i1 immarg, i32 immarg, i32 immarg) #01021declare <4 x float> @llvm.amdgcn.image.gather4.b.cl.2d.v4f32.f16.f16(i32 immarg, half, half, half, half, <8 x i32>, <4 x i32>, i1 immarg, i32 immarg, i32 immarg) #01022declare <4 x float> @llvm.amdgcn.image.gather4.c.b.cl.2d.v4f32.f16.f16(i32 immarg, half, float, half, half, half, <8 x i32>, <4 x i32>, i1 immarg, i32 immarg, i32 immarg) #01023declare <4 x float> @llvm.amdgcn.image.gather4.l.2d.v4f32.f16(i32 immarg, half, half, half, <8 x i32>, <4 x i32>, i1 immarg, i32 immarg, i32 immarg) #01024declare <4 x float> @llvm.amdgcn.image.gather4.lz.2d.v4f32.f16(i32 immarg, half, half, <8 x i32>, <4 x i32>, i1 immarg, i32 immarg, i32 immarg) #01025declare <4 x float> @llvm.amdgcn.image.gather4.c.2d.v4f32.f16(i32 immarg, float, half, half, <8 x i32>, <4 x i32>, i1 immarg, i32 immarg, i32 immarg) #01026declare <4 x float> @llvm.amdgcn.image.gather4.c.cl.2d.v4f32.f16(i32 immarg, float, half, half, half, <8 x i32>, <4 x i32>, i1 immarg, i32 immarg, i32 immarg) #01027declare <4 x float> @llvm.amdgcn.image.gather4.c.l.2d.v4f32.f16(i32 immarg, float, half, half, half, <8 x i32>, <4 x i32>, i1 immarg, i32 immarg, i32 immarg) #01028declare <4 x float> @llvm.amdgcn.image.gather4.c.lz.2d.v4f32.f16(i32 immarg, float, half, half, <8 x i32>, <4 x i32>, i1 immarg, i32 immarg, i32 immarg) #01029 1030attributes #0 = { nounwind readonly }1031