brintos

brintos / llvm-project-archived public Read only

0
0
Text · 110.4 KiB · 437f438 Raw
2269 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=amdgcn -mcpu=gfx900 < %s | FileCheck -check-prefixes=GFX9 %s3; RUN: llc -mtriple=amdgcn -mcpu=gfx1010 < %s | FileCheck -check-prefixes=GFX10 %s4; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -mattr=+real-true16 -amdgpu-enable-delay-alu=0 -amdgpu-enable-vopd=0 < %s | FileCheck -check-prefixes=GFX11,GFX11-TRUE16 %s5; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -mattr=-real-true16 -amdgpu-enable-delay-alu=0 -amdgpu-enable-vopd=0 < %s | FileCheck -check-prefixes=GFX11,GFX11-FAKE16 %s6; RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -mattr=+real-true16 -amdgpu-enable-delay-alu=0 -amdgpu-enable-vopd=0 < %s | FileCheck -check-prefixes=GFX12,GFX12-TRUE16 %s7; RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -mattr=-real-true16 -amdgpu-enable-delay-alu=0 -amdgpu-enable-vopd=0 < %s | FileCheck -check-prefixes=GFX12,GFX12-FAKE16 %s8 9define amdgpu_ps <4 x float> @sample_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %s) {10; GFX9-LABEL: sample_1d:11; GFX9:       ; %bb.0: ; %main_body12; GFX9-NEXT:    s_mov_b64 s[12:13], exec13; GFX9-NEXT:    s_wqm_b64 exec, exec14; GFX9-NEXT:    s_and_b64 exec, exec, s[12:13]15; GFX9-NEXT:    image_sample v[0:3], v0, s[0:7], s[8:11] dmask:0xf a1616; GFX9-NEXT:    s_waitcnt vmcnt(0)17; GFX9-NEXT:    ; return to shader part epilog18;19; GFX10-LABEL: sample_1d:20; GFX10:       ; %bb.0: ; %main_body21; GFX10-NEXT:    s_mov_b32 s12, exec_lo22; GFX10-NEXT:    s_wqm_b32 exec_lo, exec_lo23; GFX10-NEXT:    s_and_b32 exec_lo, exec_lo, s1224; GFX10-NEXT:    image_sample v[0:3], v0, s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a1625; GFX10-NEXT:    s_waitcnt vmcnt(0)26; GFX10-NEXT:    ; return to shader part epilog27;28; GFX11-LABEL: sample_1d:29; GFX11:       ; %bb.0: ; %main_body30; GFX11-NEXT:    s_mov_b32 s12, exec_lo31; GFX11-NEXT:    s_wqm_b32 exec_lo, exec_lo32; GFX11-NEXT:    s_and_b32 exec_lo, exec_lo, s1233; GFX11-NEXT:    image_sample v[0:3], v0, s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a1634; GFX11-NEXT:    s_waitcnt vmcnt(0)35; GFX11-NEXT:    ; return to shader part epilog36;37; GFX12-LABEL: sample_1d:38; GFX12:       ; %bb.0: ; %main_body39; GFX12-NEXT:    s_mov_b32 s12, exec_lo40; GFX12-NEXT:    s_wqm_b32 exec_lo, exec_lo41; GFX12-NEXT:    s_and_b32 exec_lo, exec_lo, s1242; GFX12-NEXT:    image_sample v[0:3], v0, s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a1643; GFX12-NEXT:    s_wait_samplecnt 0x044; GFX12-NEXT:    ; return to shader part epilog45main_body:46  %v = call <4 x float> @llvm.amdgcn.image.sample.1d.v4f32.f16(i32 15, half %s, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)47  ret <4 x float> %v48}49 50define amdgpu_ps <4 x float> @sample_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %s, half %t) {51; GFX9-LABEL: sample_2d:52; GFX9:       ; %bb.0: ; %main_body53; GFX9-NEXT:    s_mov_b64 s[12:13], exec54; GFX9-NEXT:    s_wqm_b64 exec, exec55; GFX9-NEXT:    s_mov_b32 s14, 0x504010056; GFX9-NEXT:    v_perm_b32 v0, v1, v0, s1457; GFX9-NEXT:    s_and_b64 exec, exec, s[12:13]58; GFX9-NEXT:    image_sample v[0:3], v0, s[0:7], s[8:11] dmask:0xf a1659; GFX9-NEXT:    s_waitcnt vmcnt(0)60; GFX9-NEXT:    ; return to shader part epilog61;62; GFX10-LABEL: sample_2d:63; GFX10:       ; %bb.0: ; %main_body64; GFX10-NEXT:    s_mov_b32 s12, exec_lo65; GFX10-NEXT:    s_wqm_b32 exec_lo, exec_lo66; GFX10-NEXT:    v_perm_b32 v0, v1, v0, 0x504010067; GFX10-NEXT:    s_and_b32 exec_lo, exec_lo, s1268; GFX10-NEXT:    image_sample v[0:3], v0, s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a1669; GFX10-NEXT:    s_waitcnt vmcnt(0)70; GFX10-NEXT:    ; return to shader part epilog71;72; GFX11-TRUE16-LABEL: sample_2d:73; GFX11-TRUE16:       ; %bb.0: ; %main_body74; GFX11-TRUE16-NEXT:    s_mov_b32 s12, exec_lo75; GFX11-TRUE16-NEXT:    s_wqm_b32 exec_lo, exec_lo76; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v1.l77; GFX11-TRUE16-NEXT:    s_and_b32 exec_lo, exec_lo, s1278; GFX11-TRUE16-NEXT:    image_sample v[0:3], v0, s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a1679; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)80; GFX11-TRUE16-NEXT:    ; return to shader part epilog81;82; GFX11-FAKE16-LABEL: sample_2d:83; GFX11-FAKE16:       ; %bb.0: ; %main_body84; GFX11-FAKE16-NEXT:    s_mov_b32 s12, exec_lo85; GFX11-FAKE16-NEXT:    s_wqm_b32 exec_lo, exec_lo86; GFX11-FAKE16-NEXT:    v_perm_b32 v0, v1, v0, 0x504010087; GFX11-FAKE16-NEXT:    s_and_b32 exec_lo, exec_lo, s1288; GFX11-FAKE16-NEXT:    image_sample v[0:3], v0, s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a1689; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)90; GFX11-FAKE16-NEXT:    ; return to shader part epilog91;92; GFX12-TRUE16-LABEL: sample_2d:93; GFX12-TRUE16:       ; %bb.0: ; %main_body94; GFX12-TRUE16-NEXT:    s_mov_b32 s12, exec_lo95; GFX12-TRUE16-NEXT:    s_wqm_b32 exec_lo, exec_lo96; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v1.l97; GFX12-TRUE16-NEXT:    s_and_b32 exec_lo, exec_lo, s1298; GFX12-TRUE16-NEXT:    image_sample v[0:3], v0, s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a1699; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x0100; GFX12-TRUE16-NEXT:    ; return to shader part epilog101;102; GFX12-FAKE16-LABEL: sample_2d:103; GFX12-FAKE16:       ; %bb.0: ; %main_body104; GFX12-FAKE16-NEXT:    s_mov_b32 s12, exec_lo105; GFX12-FAKE16-NEXT:    s_wqm_b32 exec_lo, exec_lo106; GFX12-FAKE16-NEXT:    v_perm_b32 v0, v1, v0, 0x5040100107; GFX12-FAKE16-NEXT:    s_and_b32 exec_lo, exec_lo, s12108; GFX12-FAKE16-NEXT:    image_sample v[0:3], v0, s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a16109; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x0110; GFX12-FAKE16-NEXT:    ; return to shader part epilog111main_body:112  %v = call <4 x float> @llvm.amdgcn.image.sample.2d.v4f32.f16(i32 15, half %s, half %t, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)113  ret <4 x float> %v114}115 116define amdgpu_ps <4 x float> @sample_3d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %s, half %t, half %r) {117; GFX9-LABEL: sample_3d:118; GFX9:       ; %bb.0: ; %main_body119; GFX9-NEXT:    s_mov_b64 s[12:13], exec120; GFX9-NEXT:    s_wqm_b64 exec, exec121; GFX9-NEXT:    s_mov_b32 s14, 0x5040100122; GFX9-NEXT:    v_perm_b32 v1, v1, v0, s14123; GFX9-NEXT:    s_and_b64 exec, exec, s[12:13]124; GFX9-NEXT:    image_sample v[0:3], v[1:2], s[0:7], s[8:11] dmask:0xf a16125; GFX9-NEXT:    s_waitcnt vmcnt(0)126; GFX9-NEXT:    ; return to shader part epilog127;128; GFX10-LABEL: sample_3d:129; GFX10:       ; %bb.0: ; %main_body130; GFX10-NEXT:    s_mov_b32 s12, exec_lo131; GFX10-NEXT:    s_wqm_b32 exec_lo, exec_lo132; GFX10-NEXT:    v_perm_b32 v0, v1, v0, 0x5040100133; GFX10-NEXT:    s_and_b32 exec_lo, exec_lo, s12134; GFX10-NEXT:    image_sample v[0:3], [v0, v2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_3D a16135; GFX10-NEXT:    s_waitcnt vmcnt(0)136; GFX10-NEXT:    ; return to shader part epilog137;138; GFX11-TRUE16-LABEL: sample_3d:139; GFX11-TRUE16:       ; %bb.0: ; %main_body140; GFX11-TRUE16-NEXT:    s_mov_b32 s12, exec_lo141; GFX11-TRUE16-NEXT:    s_wqm_b32 exec_lo, exec_lo142; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v2.l143; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v0.l144; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.h, v1.l145; GFX11-TRUE16-NEXT:    s_and_b32 exec_lo, exec_lo, s12146; GFX11-TRUE16-NEXT:    image_sample v[0:3], v[2:3], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_3D a16147; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)148; GFX11-TRUE16-NEXT:    ; return to shader part epilog149;150; GFX11-FAKE16-LABEL: sample_3d:151; GFX11-FAKE16:       ; %bb.0: ; %main_body152; GFX11-FAKE16-NEXT:    s_mov_b32 s12, exec_lo153; GFX11-FAKE16-NEXT:    s_wqm_b32 exec_lo, exec_lo154; GFX11-FAKE16-NEXT:    v_perm_b32 v0, v1, v0, 0x5040100155; GFX11-FAKE16-NEXT:    s_and_b32 exec_lo, exec_lo, s12156; GFX11-FAKE16-NEXT:    image_sample v[0:3], [v0, v2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_3D a16157; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)158; GFX11-FAKE16-NEXT:    ; return to shader part epilog159;160; GFX12-TRUE16-LABEL: sample_3d:161; GFX12-TRUE16:       ; %bb.0: ; %main_body162; GFX12-TRUE16-NEXT:    s_mov_b32 s12, exec_lo163; GFX12-TRUE16-NEXT:    s_wqm_b32 exec_lo, exec_lo164; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v1.l165; GFX12-TRUE16-NEXT:    s_and_b32 exec_lo, exec_lo, s12166; GFX12-TRUE16-NEXT:    image_sample v[0:3], [v0, v2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_3D a16167; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x0168; GFX12-TRUE16-NEXT:    ; return to shader part epilog169;170; GFX12-FAKE16-LABEL: sample_3d:171; GFX12-FAKE16:       ; %bb.0: ; %main_body172; GFX12-FAKE16-NEXT:    s_mov_b32 s12, exec_lo173; GFX12-FAKE16-NEXT:    s_wqm_b32 exec_lo, exec_lo174; GFX12-FAKE16-NEXT:    v_perm_b32 v0, v1, v0, 0x5040100175; GFX12-FAKE16-NEXT:    s_and_b32 exec_lo, exec_lo, s12176; GFX12-FAKE16-NEXT:    image_sample v[0:3], [v0, v2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_3D a16177; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x0178; GFX12-FAKE16-NEXT:    ; return to shader part epilog179main_body:180  %v = call <4 x float> @llvm.amdgcn.image.sample.3d.v4f32.f16(i32 15, half %s, half %t, half %r, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)181  ret <4 x float> %v182}183 184define amdgpu_ps <4 x float> @sample_cube(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %s, half %t, half %face) {185; GFX9-LABEL: sample_cube:186; GFX9:       ; %bb.0: ; %main_body187; GFX9-NEXT:    s_mov_b64 s[12:13], exec188; GFX9-NEXT:    s_wqm_b64 exec, exec189; GFX9-NEXT:    s_mov_b32 s14, 0x5040100190; GFX9-NEXT:    v_perm_b32 v1, v1, v0, s14191; GFX9-NEXT:    s_and_b64 exec, exec, s[12:13]192; GFX9-NEXT:    image_sample v[0:3], v[1:2], s[0:7], s[8:11] dmask:0xf a16 da193; GFX9-NEXT:    s_waitcnt vmcnt(0)194; GFX9-NEXT:    ; return to shader part epilog195;196; GFX10-LABEL: sample_cube:197; GFX10:       ; %bb.0: ; %main_body198; GFX10-NEXT:    s_mov_b32 s12, exec_lo199; GFX10-NEXT:    s_wqm_b32 exec_lo, exec_lo200; GFX10-NEXT:    v_perm_b32 v0, v1, v0, 0x5040100201; GFX10-NEXT:    s_and_b32 exec_lo, exec_lo, s12202; GFX10-NEXT:    image_sample v[0:3], [v0, v2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_CUBE a16203; GFX10-NEXT:    s_waitcnt vmcnt(0)204; GFX10-NEXT:    ; return to shader part epilog205;206; GFX11-TRUE16-LABEL: sample_cube:207; GFX11-TRUE16:       ; %bb.0: ; %main_body208; GFX11-TRUE16-NEXT:    s_mov_b32 s12, exec_lo209; GFX11-TRUE16-NEXT:    s_wqm_b32 exec_lo, exec_lo210; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v2.l211; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v0.l212; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.h, v1.l213; GFX11-TRUE16-NEXT:    s_and_b32 exec_lo, exec_lo, s12214; GFX11-TRUE16-NEXT:    image_sample v[0:3], v[2:3], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_CUBE a16215; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)216; GFX11-TRUE16-NEXT:    ; return to shader part epilog217;218; GFX11-FAKE16-LABEL: sample_cube:219; GFX11-FAKE16:       ; %bb.0: ; %main_body220; GFX11-FAKE16-NEXT:    s_mov_b32 s12, exec_lo221; GFX11-FAKE16-NEXT:    s_wqm_b32 exec_lo, exec_lo222; GFX11-FAKE16-NEXT:    v_perm_b32 v0, v1, v0, 0x5040100223; GFX11-FAKE16-NEXT:    s_and_b32 exec_lo, exec_lo, s12224; GFX11-FAKE16-NEXT:    image_sample v[0:3], [v0, v2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_CUBE a16225; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)226; GFX11-FAKE16-NEXT:    ; return to shader part epilog227;228; GFX12-TRUE16-LABEL: sample_cube:229; GFX12-TRUE16:       ; %bb.0: ; %main_body230; GFX12-TRUE16-NEXT:    s_mov_b32 s12, exec_lo231; GFX12-TRUE16-NEXT:    s_wqm_b32 exec_lo, exec_lo232; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v1.l233; GFX12-TRUE16-NEXT:    s_and_b32 exec_lo, exec_lo, s12234; GFX12-TRUE16-NEXT:    image_sample v[0:3], [v0, v2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_CUBE a16235; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x0236; GFX12-TRUE16-NEXT:    ; return to shader part epilog237;238; GFX12-FAKE16-LABEL: sample_cube:239; GFX12-FAKE16:       ; %bb.0: ; %main_body240; GFX12-FAKE16-NEXT:    s_mov_b32 s12, exec_lo241; GFX12-FAKE16-NEXT:    s_wqm_b32 exec_lo, exec_lo242; GFX12-FAKE16-NEXT:    v_perm_b32 v0, v1, v0, 0x5040100243; GFX12-FAKE16-NEXT:    s_and_b32 exec_lo, exec_lo, s12244; GFX12-FAKE16-NEXT:    image_sample v[0:3], [v0, v2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_CUBE a16245; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x0246; GFX12-FAKE16-NEXT:    ; return to shader part epilog247main_body:248  %v = call <4 x float> @llvm.amdgcn.image.sample.cube.v4f32.f16(i32 15, half %s, half %t, half %face, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)249  ret <4 x float> %v250}251 252define amdgpu_ps <4 x float> @sample_1darray(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %s, half %slice) {253; GFX9-LABEL: sample_1darray:254; GFX9:       ; %bb.0: ; %main_body255; GFX9-NEXT:    s_mov_b64 s[12:13], exec256; GFX9-NEXT:    s_wqm_b64 exec, exec257; GFX9-NEXT:    s_mov_b32 s14, 0x5040100258; GFX9-NEXT:    v_perm_b32 v0, v1, v0, s14259; GFX9-NEXT:    s_and_b64 exec, exec, s[12:13]260; GFX9-NEXT:    image_sample v[0:3], v0, s[0:7], s[8:11] dmask:0xf a16 da261; GFX9-NEXT:    s_waitcnt vmcnt(0)262; GFX9-NEXT:    ; return to shader part epilog263;264; GFX10-LABEL: sample_1darray:265; GFX10:       ; %bb.0: ; %main_body266; GFX10-NEXT:    s_mov_b32 s12, exec_lo267; GFX10-NEXT:    s_wqm_b32 exec_lo, exec_lo268; GFX10-NEXT:    v_perm_b32 v0, v1, v0, 0x5040100269; GFX10-NEXT:    s_and_b32 exec_lo, exec_lo, s12270; GFX10-NEXT:    image_sample v[0:3], v0, s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D_ARRAY a16271; GFX10-NEXT:    s_waitcnt vmcnt(0)272; GFX10-NEXT:    ; return to shader part epilog273;274; GFX11-TRUE16-LABEL: sample_1darray:275; GFX11-TRUE16:       ; %bb.0: ; %main_body276; GFX11-TRUE16-NEXT:    s_mov_b32 s12, exec_lo277; GFX11-TRUE16-NEXT:    s_wqm_b32 exec_lo, exec_lo278; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v1.l279; GFX11-TRUE16-NEXT:    s_and_b32 exec_lo, exec_lo, s12280; GFX11-TRUE16-NEXT:    image_sample v[0:3], v0, s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D_ARRAY a16281; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)282; GFX11-TRUE16-NEXT:    ; return to shader part epilog283;284; GFX11-FAKE16-LABEL: sample_1darray:285; GFX11-FAKE16:       ; %bb.0: ; %main_body286; GFX11-FAKE16-NEXT:    s_mov_b32 s12, exec_lo287; GFX11-FAKE16-NEXT:    s_wqm_b32 exec_lo, exec_lo288; GFX11-FAKE16-NEXT:    v_perm_b32 v0, v1, v0, 0x5040100289; GFX11-FAKE16-NEXT:    s_and_b32 exec_lo, exec_lo, s12290; GFX11-FAKE16-NEXT:    image_sample v[0:3], v0, s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D_ARRAY a16291; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)292; GFX11-FAKE16-NEXT:    ; return to shader part epilog293;294; GFX12-TRUE16-LABEL: sample_1darray:295; GFX12-TRUE16:       ; %bb.0: ; %main_body296; GFX12-TRUE16-NEXT:    s_mov_b32 s12, exec_lo297; GFX12-TRUE16-NEXT:    s_wqm_b32 exec_lo, exec_lo298; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v1.l299; GFX12-TRUE16-NEXT:    s_and_b32 exec_lo, exec_lo, s12300; GFX12-TRUE16-NEXT:    image_sample v[0:3], v0, s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D_ARRAY a16301; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x0302; GFX12-TRUE16-NEXT:    ; return to shader part epilog303;304; GFX12-FAKE16-LABEL: sample_1darray:305; GFX12-FAKE16:       ; %bb.0: ; %main_body306; GFX12-FAKE16-NEXT:    s_mov_b32 s12, exec_lo307; GFX12-FAKE16-NEXT:    s_wqm_b32 exec_lo, exec_lo308; GFX12-FAKE16-NEXT:    v_perm_b32 v0, v1, v0, 0x5040100309; GFX12-FAKE16-NEXT:    s_and_b32 exec_lo, exec_lo, s12310; GFX12-FAKE16-NEXT:    image_sample v[0:3], v0, s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D_ARRAY a16311; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x0312; GFX12-FAKE16-NEXT:    ; return to shader part epilog313main_body:314  %v = call <4 x float> @llvm.amdgcn.image.sample.1darray.v4f32.f16(i32 15, half %s, half %slice, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)315  ret <4 x float> %v316}317 318define amdgpu_ps <4 x float> @sample_2darray(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %s, half %t, half %slice) {319; GFX9-LABEL: sample_2darray:320; GFX9:       ; %bb.0: ; %main_body321; GFX9-NEXT:    s_mov_b64 s[12:13], exec322; GFX9-NEXT:    s_wqm_b64 exec, exec323; GFX9-NEXT:    s_mov_b32 s14, 0x5040100324; GFX9-NEXT:    v_perm_b32 v1, v1, v0, s14325; GFX9-NEXT:    s_and_b64 exec, exec, s[12:13]326; GFX9-NEXT:    image_sample v[0:3], v[1:2], s[0:7], s[8:11] dmask:0xf a16 da327; GFX9-NEXT:    s_waitcnt vmcnt(0)328; GFX9-NEXT:    ; return to shader part epilog329;330; GFX10-LABEL: sample_2darray:331; GFX10:       ; %bb.0: ; %main_body332; GFX10-NEXT:    s_mov_b32 s12, exec_lo333; GFX10-NEXT:    s_wqm_b32 exec_lo, exec_lo334; GFX10-NEXT:    v_perm_b32 v0, v1, v0, 0x5040100335; GFX10-NEXT:    s_and_b32 exec_lo, exec_lo, s12336; GFX10-NEXT:    image_sample v[0:3], [v0, v2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D_ARRAY a16337; GFX10-NEXT:    s_waitcnt vmcnt(0)338; GFX10-NEXT:    ; return to shader part epilog339;340; GFX11-TRUE16-LABEL: sample_2darray:341; GFX11-TRUE16:       ; %bb.0: ; %main_body342; GFX11-TRUE16-NEXT:    s_mov_b32 s12, exec_lo343; GFX11-TRUE16-NEXT:    s_wqm_b32 exec_lo, exec_lo344; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v2.l345; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v0.l346; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.h, v1.l347; GFX11-TRUE16-NEXT:    s_and_b32 exec_lo, exec_lo, s12348; GFX11-TRUE16-NEXT:    image_sample v[0:3], v[2:3], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D_ARRAY a16349; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)350; GFX11-TRUE16-NEXT:    ; return to shader part epilog351;352; GFX11-FAKE16-LABEL: sample_2darray:353; GFX11-FAKE16:       ; %bb.0: ; %main_body354; GFX11-FAKE16-NEXT:    s_mov_b32 s12, exec_lo355; GFX11-FAKE16-NEXT:    s_wqm_b32 exec_lo, exec_lo356; GFX11-FAKE16-NEXT:    v_perm_b32 v0, v1, v0, 0x5040100357; GFX11-FAKE16-NEXT:    s_and_b32 exec_lo, exec_lo, s12358; GFX11-FAKE16-NEXT:    image_sample v[0:3], [v0, v2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D_ARRAY a16359; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)360; GFX11-FAKE16-NEXT:    ; return to shader part epilog361;362; GFX12-TRUE16-LABEL: sample_2darray:363; GFX12-TRUE16:       ; %bb.0: ; %main_body364; GFX12-TRUE16-NEXT:    s_mov_b32 s12, exec_lo365; GFX12-TRUE16-NEXT:    s_wqm_b32 exec_lo, exec_lo366; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v1.l367; GFX12-TRUE16-NEXT:    s_and_b32 exec_lo, exec_lo, s12368; GFX12-TRUE16-NEXT:    image_sample v[0:3], [v0, v2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D_ARRAY a16369; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x0370; GFX12-TRUE16-NEXT:    ; return to shader part epilog371;372; GFX12-FAKE16-LABEL: sample_2darray:373; GFX12-FAKE16:       ; %bb.0: ; %main_body374; GFX12-FAKE16-NEXT:    s_mov_b32 s12, exec_lo375; GFX12-FAKE16-NEXT:    s_wqm_b32 exec_lo, exec_lo376; GFX12-FAKE16-NEXT:    v_perm_b32 v0, v1, v0, 0x5040100377; GFX12-FAKE16-NEXT:    s_and_b32 exec_lo, exec_lo, s12378; GFX12-FAKE16-NEXT:    image_sample v[0:3], [v0, v2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D_ARRAY a16379; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x0380; GFX12-FAKE16-NEXT:    ; return to shader part epilog381main_body:382  %v = call <4 x float> @llvm.amdgcn.image.sample.2darray.v4f32.f16(i32 15, half %s, half %t, half %slice, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)383  ret <4 x float> %v384}385 386define amdgpu_ps <4 x float> @sample_c_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %zcompare, half %s) {387; GFX9-LABEL: sample_c_1d:388; GFX9:       ; %bb.0: ; %main_body389; GFX9-NEXT:    s_mov_b64 s[12:13], exec390; GFX9-NEXT:    s_wqm_b64 exec, exec391; GFX9-NEXT:    s_and_b64 exec, exec, s[12:13]392; GFX9-NEXT:    image_sample_c v[0:3], v[0:1], s[0:7], s[8:11] dmask:0xf a16393; GFX9-NEXT:    s_waitcnt vmcnt(0)394; GFX9-NEXT:    ; return to shader part epilog395;396; GFX10-LABEL: sample_c_1d:397; GFX10:       ; %bb.0: ; %main_body398; GFX10-NEXT:    s_mov_b32 s12, exec_lo399; GFX10-NEXT:    s_wqm_b32 exec_lo, exec_lo400; GFX10-NEXT:    s_and_b32 exec_lo, exec_lo, s12401; GFX10-NEXT:    image_sample_c v[0:3], v[0:1], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a16402; GFX10-NEXT:    s_waitcnt vmcnt(0)403; GFX10-NEXT:    ; return to shader part epilog404;405; GFX11-LABEL: sample_c_1d:406; GFX11:       ; %bb.0: ; %main_body407; GFX11-NEXT:    s_mov_b32 s12, exec_lo408; GFX11-NEXT:    s_wqm_b32 exec_lo, exec_lo409; GFX11-NEXT:    s_and_b32 exec_lo, exec_lo, s12410; GFX11-NEXT:    image_sample_c v[0:3], v[0:1], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a16411; GFX11-NEXT:    s_waitcnt vmcnt(0)412; GFX11-NEXT:    ; return to shader part epilog413;414; GFX12-LABEL: sample_c_1d:415; GFX12:       ; %bb.0: ; %main_body416; GFX12-NEXT:    s_mov_b32 s12, exec_lo417; GFX12-NEXT:    s_wqm_b32 exec_lo, exec_lo418; GFX12-NEXT:    s_and_b32 exec_lo, exec_lo, s12419; GFX12-NEXT:    image_sample_c v[0:3], [v0, v1], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a16420; GFX12-NEXT:    s_wait_samplecnt 0x0421; GFX12-NEXT:    ; return to shader part epilog422main_body:423  %v = call <4 x float> @llvm.amdgcn.image.sample.c.1d.v4f32.f16(i32 15, float %zcompare, half %s, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)424  ret <4 x float> %v425}426 427define amdgpu_ps <4 x float> @sample_c_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %zcompare, half %s, half %t) {428; GFX9-LABEL: sample_c_2d:429; GFX9:       ; %bb.0: ; %main_body430; GFX9-NEXT:    s_mov_b64 s[12:13], exec431; GFX9-NEXT:    s_wqm_b64 exec, exec432; GFX9-NEXT:    s_mov_b32 s14, 0x5040100433; GFX9-NEXT:    v_perm_b32 v1, v2, v1, s14434; GFX9-NEXT:    s_and_b64 exec, exec, s[12:13]435; GFX9-NEXT:    image_sample_c v[0:3], v[0:1], s[0:7], s[8:11] dmask:0xf a16436; GFX9-NEXT:    s_waitcnt vmcnt(0)437; GFX9-NEXT:    ; return to shader part epilog438;439; GFX10-LABEL: sample_c_2d:440; GFX10:       ; %bb.0: ; %main_body441; GFX10-NEXT:    s_mov_b32 s12, exec_lo442; GFX10-NEXT:    s_wqm_b32 exec_lo, exec_lo443; GFX10-NEXT:    v_perm_b32 v1, v2, v1, 0x5040100444; GFX10-NEXT:    s_and_b32 exec_lo, exec_lo, s12445; GFX10-NEXT:    image_sample_c v[0:3], v[0:1], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a16446; GFX10-NEXT:    s_waitcnt vmcnt(0)447; GFX10-NEXT:    ; return to shader part epilog448;449; GFX11-TRUE16-LABEL: sample_c_2d:450; GFX11-TRUE16:       ; %bb.0: ; %main_body451; GFX11-TRUE16-NEXT:    s_mov_b32 s12, exec_lo452; GFX11-TRUE16-NEXT:    s_wqm_b32 exec_lo, exec_lo453; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v2.l454; GFX11-TRUE16-NEXT:    s_and_b32 exec_lo, exec_lo, s12455; GFX11-TRUE16-NEXT:    image_sample_c v[0:3], v[0:1], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a16456; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)457; GFX11-TRUE16-NEXT:    ; return to shader part epilog458;459; GFX11-FAKE16-LABEL: sample_c_2d:460; GFX11-FAKE16:       ; %bb.0: ; %main_body461; GFX11-FAKE16-NEXT:    s_mov_b32 s12, exec_lo462; GFX11-FAKE16-NEXT:    s_wqm_b32 exec_lo, exec_lo463; GFX11-FAKE16-NEXT:    v_perm_b32 v1, v2, v1, 0x5040100464; GFX11-FAKE16-NEXT:    s_and_b32 exec_lo, exec_lo, s12465; GFX11-FAKE16-NEXT:    image_sample_c v[0:3], v[0:1], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a16466; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)467; GFX11-FAKE16-NEXT:    ; return to shader part epilog468;469; GFX12-TRUE16-LABEL: sample_c_2d:470; GFX12-TRUE16:       ; %bb.0: ; %main_body471; GFX12-TRUE16-NEXT:    s_mov_b32 s12, exec_lo472; GFX12-TRUE16-NEXT:    s_wqm_b32 exec_lo, exec_lo473; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v2.l474; GFX12-TRUE16-NEXT:    s_and_b32 exec_lo, exec_lo, s12475; GFX12-TRUE16-NEXT:    image_sample_c v[0:3], [v0, v1], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a16476; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x0477; GFX12-TRUE16-NEXT:    ; return to shader part epilog478;479; GFX12-FAKE16-LABEL: sample_c_2d:480; GFX12-FAKE16:       ; %bb.0: ; %main_body481; GFX12-FAKE16-NEXT:    s_mov_b32 s12, exec_lo482; GFX12-FAKE16-NEXT:    s_wqm_b32 exec_lo, exec_lo483; GFX12-FAKE16-NEXT:    v_perm_b32 v1, v2, v1, 0x5040100484; GFX12-FAKE16-NEXT:    s_and_b32 exec_lo, exec_lo, s12485; GFX12-FAKE16-NEXT:    image_sample_c v[0:3], [v0, v1], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a16486; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x0487; GFX12-FAKE16-NEXT:    ; return to shader part epilog488main_body:489  %v = call <4 x float> @llvm.amdgcn.image.sample.c.2d.v4f32.f16(i32 15, float %zcompare, half %s, half %t, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)490  ret <4 x float> %v491}492 493define amdgpu_ps <4 x float> @sample_cl_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %s, half %clamp) {494; GFX9-LABEL: sample_cl_1d:495; GFX9:       ; %bb.0: ; %main_body496; GFX9-NEXT:    s_mov_b64 s[12:13], exec497; GFX9-NEXT:    s_wqm_b64 exec, exec498; GFX9-NEXT:    s_mov_b32 s14, 0x5040100499; GFX9-NEXT:    v_perm_b32 v0, v1, v0, s14500; GFX9-NEXT:    s_and_b64 exec, exec, s[12:13]501; GFX9-NEXT:    image_sample_cl v[0:3], v0, s[0:7], s[8:11] dmask:0xf a16502; GFX9-NEXT:    s_waitcnt vmcnt(0)503; GFX9-NEXT:    ; return to shader part epilog504;505; GFX10-LABEL: sample_cl_1d:506; GFX10:       ; %bb.0: ; %main_body507; GFX10-NEXT:    s_mov_b32 s12, exec_lo508; GFX10-NEXT:    s_wqm_b32 exec_lo, exec_lo509; GFX10-NEXT:    v_perm_b32 v0, v1, v0, 0x5040100510; GFX10-NEXT:    s_and_b32 exec_lo, exec_lo, s12511; GFX10-NEXT:    image_sample_cl v[0:3], v0, s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a16512; GFX10-NEXT:    s_waitcnt vmcnt(0)513; GFX10-NEXT:    ; return to shader part epilog514;515; GFX11-TRUE16-LABEL: sample_cl_1d:516; GFX11-TRUE16:       ; %bb.0: ; %main_body517; GFX11-TRUE16-NEXT:    s_mov_b32 s12, exec_lo518; GFX11-TRUE16-NEXT:    s_wqm_b32 exec_lo, exec_lo519; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v1.l520; GFX11-TRUE16-NEXT:    s_and_b32 exec_lo, exec_lo, s12521; GFX11-TRUE16-NEXT:    image_sample_cl v[0:3], v0, s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a16522; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)523; GFX11-TRUE16-NEXT:    ; return to shader part epilog524;525; GFX11-FAKE16-LABEL: sample_cl_1d:526; GFX11-FAKE16:       ; %bb.0: ; %main_body527; GFX11-FAKE16-NEXT:    s_mov_b32 s12, exec_lo528; GFX11-FAKE16-NEXT:    s_wqm_b32 exec_lo, exec_lo529; GFX11-FAKE16-NEXT:    v_perm_b32 v0, v1, v0, 0x5040100530; GFX11-FAKE16-NEXT:    s_and_b32 exec_lo, exec_lo, s12531; GFX11-FAKE16-NEXT:    image_sample_cl v[0:3], v0, s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a16532; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)533; GFX11-FAKE16-NEXT:    ; return to shader part epilog534;535; GFX12-TRUE16-LABEL: sample_cl_1d:536; GFX12-TRUE16:       ; %bb.0: ; %main_body537; GFX12-TRUE16-NEXT:    s_mov_b32 s12, exec_lo538; GFX12-TRUE16-NEXT:    s_wqm_b32 exec_lo, exec_lo539; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v1.l540; GFX12-TRUE16-NEXT:    s_and_b32 exec_lo, exec_lo, s12541; GFX12-TRUE16-NEXT:    image_sample_cl v[0:3], v0, s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a16542; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x0543; GFX12-TRUE16-NEXT:    ; return to shader part epilog544;545; GFX12-FAKE16-LABEL: sample_cl_1d:546; GFX12-FAKE16:       ; %bb.0: ; %main_body547; GFX12-FAKE16-NEXT:    s_mov_b32 s12, exec_lo548; GFX12-FAKE16-NEXT:    s_wqm_b32 exec_lo, exec_lo549; GFX12-FAKE16-NEXT:    v_perm_b32 v0, v1, v0, 0x5040100550; GFX12-FAKE16-NEXT:    s_and_b32 exec_lo, exec_lo, s12551; GFX12-FAKE16-NEXT:    image_sample_cl v[0:3], v0, s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a16552; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x0553; GFX12-FAKE16-NEXT:    ; return to shader part epilog554main_body:555  %v = call <4 x float> @llvm.amdgcn.image.sample.cl.1d.v4f32.f16(i32 15, half %s, half %clamp, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)556  ret <4 x float> %v557}558 559define amdgpu_ps <4 x float> @sample_cl_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %s, half %t, half %clamp) {560; GFX9-LABEL: sample_cl_2d:561; GFX9:       ; %bb.0: ; %main_body562; GFX9-NEXT:    s_mov_b64 s[12:13], exec563; GFX9-NEXT:    s_wqm_b64 exec, exec564; GFX9-NEXT:    s_mov_b32 s14, 0x5040100565; GFX9-NEXT:    v_perm_b32 v1, v1, v0, s14566; GFX9-NEXT:    s_and_b64 exec, exec, s[12:13]567; GFX9-NEXT:    image_sample_cl v[0:3], v[1:2], s[0:7], s[8:11] dmask:0xf a16568; GFX9-NEXT:    s_waitcnt vmcnt(0)569; GFX9-NEXT:    ; return to shader part epilog570;571; GFX10-LABEL: sample_cl_2d:572; GFX10:       ; %bb.0: ; %main_body573; GFX10-NEXT:    s_mov_b32 s12, exec_lo574; GFX10-NEXT:    s_wqm_b32 exec_lo, exec_lo575; GFX10-NEXT:    v_perm_b32 v0, v1, v0, 0x5040100576; GFX10-NEXT:    s_and_b32 exec_lo, exec_lo, s12577; GFX10-NEXT:    image_sample_cl v[0:3], [v0, v2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a16578; GFX10-NEXT:    s_waitcnt vmcnt(0)579; GFX10-NEXT:    ; return to shader part epilog580;581; GFX11-TRUE16-LABEL: sample_cl_2d:582; GFX11-TRUE16:       ; %bb.0: ; %main_body583; GFX11-TRUE16-NEXT:    s_mov_b32 s12, exec_lo584; GFX11-TRUE16-NEXT:    s_wqm_b32 exec_lo, exec_lo585; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v2.l586; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v0.l587; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.h, v1.l588; GFX11-TRUE16-NEXT:    s_and_b32 exec_lo, exec_lo, s12589; GFX11-TRUE16-NEXT:    image_sample_cl v[0:3], v[2:3], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a16590; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)591; GFX11-TRUE16-NEXT:    ; return to shader part epilog592;593; GFX11-FAKE16-LABEL: sample_cl_2d:594; GFX11-FAKE16:       ; %bb.0: ; %main_body595; GFX11-FAKE16-NEXT:    s_mov_b32 s12, exec_lo596; GFX11-FAKE16-NEXT:    s_wqm_b32 exec_lo, exec_lo597; GFX11-FAKE16-NEXT:    v_perm_b32 v0, v1, v0, 0x5040100598; GFX11-FAKE16-NEXT:    s_and_b32 exec_lo, exec_lo, s12599; GFX11-FAKE16-NEXT:    image_sample_cl v[0:3], [v0, v2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a16600; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)601; GFX11-FAKE16-NEXT:    ; return to shader part epilog602;603; GFX12-TRUE16-LABEL: sample_cl_2d:604; GFX12-TRUE16:       ; %bb.0: ; %main_body605; GFX12-TRUE16-NEXT:    s_mov_b32 s12, exec_lo606; GFX12-TRUE16-NEXT:    s_wqm_b32 exec_lo, exec_lo607; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v1.l608; GFX12-TRUE16-NEXT:    s_and_b32 exec_lo, exec_lo, s12609; GFX12-TRUE16-NEXT:    image_sample_cl v[0:3], [v0, v2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a16610; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x0611; GFX12-TRUE16-NEXT:    ; return to shader part epilog612;613; GFX12-FAKE16-LABEL: sample_cl_2d:614; GFX12-FAKE16:       ; %bb.0: ; %main_body615; GFX12-FAKE16-NEXT:    s_mov_b32 s12, exec_lo616; GFX12-FAKE16-NEXT:    s_wqm_b32 exec_lo, exec_lo617; GFX12-FAKE16-NEXT:    v_perm_b32 v0, v1, v0, 0x5040100618; GFX12-FAKE16-NEXT:    s_and_b32 exec_lo, exec_lo, s12619; GFX12-FAKE16-NEXT:    image_sample_cl v[0:3], [v0, v2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a16620; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x0621; GFX12-FAKE16-NEXT:    ; return to shader part epilog622main_body:623  %v = call <4 x float> @llvm.amdgcn.image.sample.cl.2d.v4f32.f16(i32 15, half %s, half %t, half %clamp, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)624  ret <4 x float> %v625}626 627define amdgpu_ps <4 x float> @sample_c_cl_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %zcompare, half %s, half %clamp) {628; GFX9-LABEL: sample_c_cl_1d:629; GFX9:       ; %bb.0: ; %main_body630; GFX9-NEXT:    s_mov_b64 s[12:13], exec631; GFX9-NEXT:    s_wqm_b64 exec, exec632; GFX9-NEXT:    s_mov_b32 s14, 0x5040100633; GFX9-NEXT:    v_perm_b32 v1, v2, v1, s14634; GFX9-NEXT:    s_and_b64 exec, exec, s[12:13]635; GFX9-NEXT:    image_sample_c_cl v[0:3], v[0:1], s[0:7], s[8:11] dmask:0xf a16636; GFX9-NEXT:    s_waitcnt vmcnt(0)637; GFX9-NEXT:    ; return to shader part epilog638;639; GFX10-LABEL: sample_c_cl_1d:640; GFX10:       ; %bb.0: ; %main_body641; GFX10-NEXT:    s_mov_b32 s12, exec_lo642; GFX10-NEXT:    s_wqm_b32 exec_lo, exec_lo643; GFX10-NEXT:    v_perm_b32 v1, v2, v1, 0x5040100644; GFX10-NEXT:    s_and_b32 exec_lo, exec_lo, s12645; GFX10-NEXT:    image_sample_c_cl v[0:3], v[0:1], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a16646; GFX10-NEXT:    s_waitcnt vmcnt(0)647; GFX10-NEXT:    ; return to shader part epilog648;649; GFX11-TRUE16-LABEL: sample_c_cl_1d:650; GFX11-TRUE16:       ; %bb.0: ; %main_body651; GFX11-TRUE16-NEXT:    s_mov_b32 s12, exec_lo652; GFX11-TRUE16-NEXT:    s_wqm_b32 exec_lo, exec_lo653; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v2.l654; GFX11-TRUE16-NEXT:    s_and_b32 exec_lo, exec_lo, s12655; GFX11-TRUE16-NEXT:    image_sample_c_cl v[0:3], v[0:1], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a16656; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)657; GFX11-TRUE16-NEXT:    ; return to shader part epilog658;659; GFX11-FAKE16-LABEL: sample_c_cl_1d:660; GFX11-FAKE16:       ; %bb.0: ; %main_body661; GFX11-FAKE16-NEXT:    s_mov_b32 s12, exec_lo662; GFX11-FAKE16-NEXT:    s_wqm_b32 exec_lo, exec_lo663; GFX11-FAKE16-NEXT:    v_perm_b32 v1, v2, v1, 0x5040100664; GFX11-FAKE16-NEXT:    s_and_b32 exec_lo, exec_lo, s12665; GFX11-FAKE16-NEXT:    image_sample_c_cl v[0:3], v[0:1], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a16666; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)667; GFX11-FAKE16-NEXT:    ; return to shader part epilog668;669; GFX12-TRUE16-LABEL: sample_c_cl_1d:670; GFX12-TRUE16:       ; %bb.0: ; %main_body671; GFX12-TRUE16-NEXT:    s_mov_b32 s12, exec_lo672; GFX12-TRUE16-NEXT:    s_wqm_b32 exec_lo, exec_lo673; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v2.l674; GFX12-TRUE16-NEXT:    s_and_b32 exec_lo, exec_lo, s12675; GFX12-TRUE16-NEXT:    image_sample_c_cl v[0:3], [v0, v1], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a16676; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x0677; GFX12-TRUE16-NEXT:    ; return to shader part epilog678;679; GFX12-FAKE16-LABEL: sample_c_cl_1d:680; GFX12-FAKE16:       ; %bb.0: ; %main_body681; GFX12-FAKE16-NEXT:    s_mov_b32 s12, exec_lo682; GFX12-FAKE16-NEXT:    s_wqm_b32 exec_lo, exec_lo683; GFX12-FAKE16-NEXT:    v_perm_b32 v1, v2, v1, 0x5040100684; GFX12-FAKE16-NEXT:    s_and_b32 exec_lo, exec_lo, s12685; GFX12-FAKE16-NEXT:    image_sample_c_cl v[0:3], [v0, v1], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a16686; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x0687; GFX12-FAKE16-NEXT:    ; return to shader part epilog688main_body:689  %v = call <4 x float> @llvm.amdgcn.image.sample.c.cl.1d.v4f32.f16(i32 15, float %zcompare, half %s, half %clamp, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)690  ret <4 x float> %v691}692 693define amdgpu_ps <4 x float> @sample_c_cl_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %zcompare, half %s, half %t, half %clamp) {694; GFX9-LABEL: sample_c_cl_2d:695; GFX9:       ; %bb.0: ; %main_body696; GFX9-NEXT:    s_mov_b64 s[12:13], exec697; GFX9-NEXT:    s_wqm_b64 exec, exec698; GFX9-NEXT:    s_mov_b32 s14, 0x5040100699; GFX9-NEXT:    v_mov_b32_e32 v5, v3700; GFX9-NEXT:    v_mov_b32_e32 v3, v0701; GFX9-NEXT:    v_perm_b32 v4, v2, v1, s14702; GFX9-NEXT:    s_and_b64 exec, exec, s[12:13]703; GFX9-NEXT:    image_sample_c_cl v[0:3], v[3:5], s[0:7], s[8:11] dmask:0xf a16704; GFX9-NEXT:    s_waitcnt vmcnt(0)705; GFX9-NEXT:    ; return to shader part epilog706;707; GFX10-LABEL: sample_c_cl_2d:708; GFX10:       ; %bb.0: ; %main_body709; GFX10-NEXT:    s_mov_b32 s12, exec_lo710; GFX10-NEXT:    s_wqm_b32 exec_lo, exec_lo711; GFX10-NEXT:    v_perm_b32 v1, v2, v1, 0x5040100712; GFX10-NEXT:    s_and_b32 exec_lo, exec_lo, s12713; GFX10-NEXT:    image_sample_c_cl v[0:3], [v0, v1, v3], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a16714; GFX10-NEXT:    s_waitcnt vmcnt(0)715; GFX10-NEXT:    ; return to shader part epilog716;717; GFX11-TRUE16-LABEL: sample_c_cl_2d:718; GFX11-TRUE16:       ; %bb.0: ; %main_body719; GFX11-TRUE16-NEXT:    s_mov_b32 s12, exec_lo720; GFX11-TRUE16-NEXT:    s_wqm_b32 exec_lo, exec_lo721; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v2.l722; GFX11-TRUE16-NEXT:    s_and_b32 exec_lo, exec_lo, s12723; GFX11-TRUE16-NEXT:    image_sample_c_cl v[0:3], [v0, v1, v3], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a16724; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)725; GFX11-TRUE16-NEXT:    ; return to shader part epilog726;727; GFX11-FAKE16-LABEL: sample_c_cl_2d:728; GFX11-FAKE16:       ; %bb.0: ; %main_body729; GFX11-FAKE16-NEXT:    s_mov_b32 s12, exec_lo730; GFX11-FAKE16-NEXT:    s_wqm_b32 exec_lo, exec_lo731; GFX11-FAKE16-NEXT:    v_perm_b32 v1, v2, v1, 0x5040100732; GFX11-FAKE16-NEXT:    s_and_b32 exec_lo, exec_lo, s12733; GFX11-FAKE16-NEXT:    image_sample_c_cl v[0:3], [v0, v1, v3], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a16734; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)735; GFX11-FAKE16-NEXT:    ; return to shader part epilog736;737; GFX12-TRUE16-LABEL: sample_c_cl_2d:738; GFX12-TRUE16:       ; %bb.0: ; %main_body739; GFX12-TRUE16-NEXT:    s_mov_b32 s12, exec_lo740; GFX12-TRUE16-NEXT:    s_wqm_b32 exec_lo, exec_lo741; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v2.l742; GFX12-TRUE16-NEXT:    s_and_b32 exec_lo, exec_lo, s12743; GFX12-TRUE16-NEXT:    image_sample_c_cl v[0:3], [v0, v1, v3], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a16744; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x0745; GFX12-TRUE16-NEXT:    ; return to shader part epilog746;747; GFX12-FAKE16-LABEL: sample_c_cl_2d:748; GFX12-FAKE16:       ; %bb.0: ; %main_body749; GFX12-FAKE16-NEXT:    s_mov_b32 s12, exec_lo750; GFX12-FAKE16-NEXT:    s_wqm_b32 exec_lo, exec_lo751; GFX12-FAKE16-NEXT:    v_perm_b32 v1, v2, v1, 0x5040100752; GFX12-FAKE16-NEXT:    s_and_b32 exec_lo, exec_lo, s12753; GFX12-FAKE16-NEXT:    image_sample_c_cl v[0:3], [v0, v1, v3], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a16754; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x0755; GFX12-FAKE16-NEXT:    ; return to shader part epilog756main_body:757  %v = call <4 x float> @llvm.amdgcn.image.sample.c.cl.2d.v4f32.f16(i32 15, float %zcompare, half %s, half %t, half %clamp, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)758  ret <4 x float> %v759}760 761define amdgpu_ps <4 x float> @sample_b_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %bias, half %s) {762; GFX9-LABEL: sample_b_1d:763; GFX9:       ; %bb.0: ; %main_body764; GFX9-NEXT:    s_mov_b64 s[12:13], exec765; GFX9-NEXT:    s_wqm_b64 exec, exec766; GFX9-NEXT:    s_and_b64 exec, exec, s[12:13]767; GFX9-NEXT:    image_sample_b v[0:3], v[0:1], s[0:7], s[8:11] dmask:0xf a16768; GFX9-NEXT:    s_waitcnt vmcnt(0)769; GFX9-NEXT:    ; return to shader part epilog770;771; GFX10-LABEL: sample_b_1d:772; GFX10:       ; %bb.0: ; %main_body773; GFX10-NEXT:    s_mov_b32 s12, exec_lo774; GFX10-NEXT:    s_wqm_b32 exec_lo, exec_lo775; GFX10-NEXT:    s_and_b32 exec_lo, exec_lo, s12776; GFX10-NEXT:    image_sample_b v[0:3], v[0:1], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a16777; GFX10-NEXT:    s_waitcnt vmcnt(0)778; GFX10-NEXT:    ; return to shader part epilog779;780; GFX11-LABEL: sample_b_1d:781; GFX11:       ; %bb.0: ; %main_body782; GFX11-NEXT:    s_mov_b32 s12, exec_lo783; GFX11-NEXT:    s_wqm_b32 exec_lo, exec_lo784; GFX11-NEXT:    s_and_b32 exec_lo, exec_lo, s12785; GFX11-NEXT:    image_sample_b v[0:3], v[0:1], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a16786; GFX11-NEXT:    s_waitcnt vmcnt(0)787; GFX11-NEXT:    ; return to shader part epilog788;789; GFX12-LABEL: sample_b_1d:790; GFX12:       ; %bb.0: ; %main_body791; GFX12-NEXT:    s_mov_b32 s12, exec_lo792; GFX12-NEXT:    s_wqm_b32 exec_lo, exec_lo793; GFX12-NEXT:    s_and_b32 exec_lo, exec_lo, s12794; GFX12-NEXT:    image_sample_b v[0:3], [v0, v1], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a16795; GFX12-NEXT:    s_wait_samplecnt 0x0796; GFX12-NEXT:    ; return to shader part epilog797main_body:798  %v = call <4 x float> @llvm.amdgcn.image.sample.b.1d.v4f32.f16.f16(i32 15, half %bias, half %s, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)799  ret <4 x float> %v800}801 802define amdgpu_ps <4 x float> @sample_b_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %bias, half %s, half %t) {803; GFX9-LABEL: sample_b_2d:804; GFX9:       ; %bb.0: ; %main_body805; GFX9-NEXT:    s_mov_b64 s[12:13], exec806; GFX9-NEXT:    s_wqm_b64 exec, exec807; GFX9-NEXT:    s_mov_b32 s14, 0x5040100808; GFX9-NEXT:    v_perm_b32 v1, v2, v1, s14809; GFX9-NEXT:    s_and_b64 exec, exec, s[12:13]810; GFX9-NEXT:    image_sample_b v[0:3], v[0:1], s[0:7], s[8:11] dmask:0xf a16811; GFX9-NEXT:    s_waitcnt vmcnt(0)812; GFX9-NEXT:    ; return to shader part epilog813;814; GFX10-LABEL: sample_b_2d:815; GFX10:       ; %bb.0: ; %main_body816; GFX10-NEXT:    s_mov_b32 s12, exec_lo817; GFX10-NEXT:    s_wqm_b32 exec_lo, exec_lo818; GFX10-NEXT:    v_perm_b32 v1, v2, v1, 0x5040100819; GFX10-NEXT:    s_and_b32 exec_lo, exec_lo, s12820; GFX10-NEXT:    image_sample_b v[0:3], v[0:1], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a16821; GFX10-NEXT:    s_waitcnt vmcnt(0)822; GFX10-NEXT:    ; return to shader part epilog823;824; GFX11-TRUE16-LABEL: sample_b_2d:825; GFX11-TRUE16:       ; %bb.0: ; %main_body826; GFX11-TRUE16-NEXT:    s_mov_b32 s12, exec_lo827; GFX11-TRUE16-NEXT:    s_wqm_b32 exec_lo, exec_lo828; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v2.l829; GFX11-TRUE16-NEXT:    s_and_b32 exec_lo, exec_lo, s12830; GFX11-TRUE16-NEXT:    image_sample_b v[0:3], v[0:1], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a16831; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)832; GFX11-TRUE16-NEXT:    ; return to shader part epilog833;834; GFX11-FAKE16-LABEL: sample_b_2d:835; GFX11-FAKE16:       ; %bb.0: ; %main_body836; GFX11-FAKE16-NEXT:    s_mov_b32 s12, exec_lo837; GFX11-FAKE16-NEXT:    s_wqm_b32 exec_lo, exec_lo838; GFX11-FAKE16-NEXT:    v_perm_b32 v1, v2, v1, 0x5040100839; GFX11-FAKE16-NEXT:    s_and_b32 exec_lo, exec_lo, s12840; GFX11-FAKE16-NEXT:    image_sample_b v[0:3], v[0:1], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a16841; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)842; GFX11-FAKE16-NEXT:    ; return to shader part epilog843;844; GFX12-TRUE16-LABEL: sample_b_2d:845; GFX12-TRUE16:       ; %bb.0: ; %main_body846; GFX12-TRUE16-NEXT:    s_mov_b32 s12, exec_lo847; GFX12-TRUE16-NEXT:    s_wqm_b32 exec_lo, exec_lo848; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v2.l849; GFX12-TRUE16-NEXT:    s_and_b32 exec_lo, exec_lo, s12850; GFX12-TRUE16-NEXT:    image_sample_b v[0:3], [v0, v1], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a16851; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x0852; GFX12-TRUE16-NEXT:    ; return to shader part epilog853;854; GFX12-FAKE16-LABEL: sample_b_2d:855; GFX12-FAKE16:       ; %bb.0: ; %main_body856; GFX12-FAKE16-NEXT:    s_mov_b32 s12, exec_lo857; GFX12-FAKE16-NEXT:    s_wqm_b32 exec_lo, exec_lo858; GFX12-FAKE16-NEXT:    v_perm_b32 v1, v2, v1, 0x5040100859; GFX12-FAKE16-NEXT:    s_and_b32 exec_lo, exec_lo, s12860; GFX12-FAKE16-NEXT:    image_sample_b v[0:3], [v0, v1], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a16861; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x0862; GFX12-FAKE16-NEXT:    ; return to shader part epilog863main_body:864  %v = call <4 x float> @llvm.amdgcn.image.sample.b.2d.v4f32.f16.f16(i32 15, half %bias, half %s, half %t, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)865  ret <4 x float> %v866}867 868define amdgpu_ps <4 x float> @sample_c_b_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %bias, float %zcompare, half %s) {869; GFX9-LABEL: sample_c_b_1d:870; GFX9:       ; %bb.0: ; %main_body871; GFX9-NEXT:    s_mov_b64 s[12:13], exec872; GFX9-NEXT:    s_wqm_b64 exec, exec873; GFX9-NEXT:    s_and_b64 exec, exec, s[12:13]874; GFX9-NEXT:    image_sample_c_b v[0:3], v[0:2], s[0:7], s[8:11] dmask:0xf a16875; GFX9-NEXT:    s_waitcnt vmcnt(0)876; GFX9-NEXT:    ; return to shader part epilog877;878; GFX10-LABEL: sample_c_b_1d:879; GFX10:       ; %bb.0: ; %main_body880; GFX10-NEXT:    s_mov_b32 s12, exec_lo881; GFX10-NEXT:    s_wqm_b32 exec_lo, exec_lo882; GFX10-NEXT:    s_and_b32 exec_lo, exec_lo, s12883; GFX10-NEXT:    image_sample_c_b v[0:3], v[0:2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a16884; GFX10-NEXT:    s_waitcnt vmcnt(0)885; GFX10-NEXT:    ; return to shader part epilog886;887; GFX11-LABEL: sample_c_b_1d:888; GFX11:       ; %bb.0: ; %main_body889; GFX11-NEXT:    s_mov_b32 s12, exec_lo890; GFX11-NEXT:    s_wqm_b32 exec_lo, exec_lo891; GFX11-NEXT:    s_and_b32 exec_lo, exec_lo, s12892; GFX11-NEXT:    image_sample_c_b v[0:3], v[0:2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a16893; GFX11-NEXT:    s_waitcnt vmcnt(0)894; GFX11-NEXT:    ; return to shader part epilog895;896; GFX12-LABEL: sample_c_b_1d:897; GFX12:       ; %bb.0: ; %main_body898; GFX12-NEXT:    s_mov_b32 s12, exec_lo899; GFX12-NEXT:    s_wqm_b32 exec_lo, exec_lo900; GFX12-NEXT:    s_and_b32 exec_lo, exec_lo, s12901; GFX12-NEXT:    image_sample_c_b v[0:3], [v0, v1, v2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a16902; GFX12-NEXT:    s_wait_samplecnt 0x0903; GFX12-NEXT:    ; return to shader part epilog904main_body:905  %v = call <4 x float> @llvm.amdgcn.image.sample.c.b.1d.v4f32.f16.f16(i32 15, half %bias, float %zcompare, half %s, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)906  ret <4 x float> %v907}908 909define amdgpu_ps <4 x float> @sample_c_b_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %bias, float %zcompare, half %s, half %t) {910; GFX9-LABEL: sample_c_b_2d:911; GFX9:       ; %bb.0: ; %main_body912; GFX9-NEXT:    s_mov_b64 s[12:13], exec913; GFX9-NEXT:    s_wqm_b64 exec, exec914; GFX9-NEXT:    s_mov_b32 s14, 0x5040100915; GFX9-NEXT:    v_perm_b32 v2, v3, v2, s14916; GFX9-NEXT:    s_and_b64 exec, exec, s[12:13]917; GFX9-NEXT:    image_sample_c_b v[0:3], v[0:2], s[0:7], s[8:11] dmask:0xf a16918; GFX9-NEXT:    s_waitcnt vmcnt(0)919; GFX9-NEXT:    ; return to shader part epilog920;921; GFX10-LABEL: sample_c_b_2d:922; GFX10:       ; %bb.0: ; %main_body923; GFX10-NEXT:    s_mov_b32 s12, exec_lo924; GFX10-NEXT:    s_wqm_b32 exec_lo, exec_lo925; GFX10-NEXT:    v_perm_b32 v2, v3, v2, 0x5040100926; GFX10-NEXT:    s_and_b32 exec_lo, exec_lo, s12927; GFX10-NEXT:    image_sample_c_b v[0:3], v[0:2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a16928; GFX10-NEXT:    s_waitcnt vmcnt(0)929; GFX10-NEXT:    ; return to shader part epilog930;931; GFX11-TRUE16-LABEL: sample_c_b_2d:932; GFX11-TRUE16:       ; %bb.0: ; %main_body933; GFX11-TRUE16-NEXT:    s_mov_b32 s12, exec_lo934; GFX11-TRUE16-NEXT:    s_wqm_b32 exec_lo, exec_lo935; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.h, v3.l936; GFX11-TRUE16-NEXT:    s_and_b32 exec_lo, exec_lo, s12937; GFX11-TRUE16-NEXT:    image_sample_c_b v[0:3], v[0:2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a16938; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)939; GFX11-TRUE16-NEXT:    ; return to shader part epilog940;941; GFX11-FAKE16-LABEL: sample_c_b_2d:942; GFX11-FAKE16:       ; %bb.0: ; %main_body943; GFX11-FAKE16-NEXT:    s_mov_b32 s12, exec_lo944; GFX11-FAKE16-NEXT:    s_wqm_b32 exec_lo, exec_lo945; GFX11-FAKE16-NEXT:    v_perm_b32 v2, v3, v2, 0x5040100946; GFX11-FAKE16-NEXT:    s_and_b32 exec_lo, exec_lo, s12947; GFX11-FAKE16-NEXT:    image_sample_c_b v[0:3], v[0:2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a16948; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)949; GFX11-FAKE16-NEXT:    ; return to shader part epilog950;951; GFX12-TRUE16-LABEL: sample_c_b_2d:952; GFX12-TRUE16:       ; %bb.0: ; %main_body953; GFX12-TRUE16-NEXT:    s_mov_b32 s12, exec_lo954; GFX12-TRUE16-NEXT:    s_wqm_b32 exec_lo, exec_lo955; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v2.h, v3.l956; GFX12-TRUE16-NEXT:    s_and_b32 exec_lo, exec_lo, s12957; GFX12-TRUE16-NEXT:    image_sample_c_b v[0:3], [v0, v1, v2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a16958; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x0959; GFX12-TRUE16-NEXT:    ; return to shader part epilog960;961; GFX12-FAKE16-LABEL: sample_c_b_2d:962; GFX12-FAKE16:       ; %bb.0: ; %main_body963; GFX12-FAKE16-NEXT:    s_mov_b32 s12, exec_lo964; GFX12-FAKE16-NEXT:    s_wqm_b32 exec_lo, exec_lo965; GFX12-FAKE16-NEXT:    v_perm_b32 v2, v3, v2, 0x5040100966; GFX12-FAKE16-NEXT:    s_and_b32 exec_lo, exec_lo, s12967; GFX12-FAKE16-NEXT:    image_sample_c_b v[0:3], [v0, v1, v2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a16968; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x0969; GFX12-FAKE16-NEXT:    ; return to shader part epilog970main_body:971  %v = call <4 x float> @llvm.amdgcn.image.sample.c.b.2d.v4f32.f16.f16(i32 15, half %bias, float %zcompare, half %s, half %t, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)972  ret <4 x float> %v973}974 975define amdgpu_ps <4 x float> @sample_b_cl_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %bias, half %s, half %clamp) {976; GFX9-LABEL: sample_b_cl_1d:977; GFX9:       ; %bb.0: ; %main_body978; GFX9-NEXT:    s_mov_b64 s[12:13], exec979; GFX9-NEXT:    s_wqm_b64 exec, exec980; GFX9-NEXT:    s_mov_b32 s14, 0x5040100981; GFX9-NEXT:    v_perm_b32 v1, v2, v1, s14982; GFX9-NEXT:    s_and_b64 exec, exec, s[12:13]983; GFX9-NEXT:    image_sample_b_cl v[0:3], v[0:1], s[0:7], s[8:11] dmask:0xf a16984; GFX9-NEXT:    s_waitcnt vmcnt(0)985; GFX9-NEXT:    ; return to shader part epilog986;987; GFX10-LABEL: sample_b_cl_1d:988; GFX10:       ; %bb.0: ; %main_body989; GFX10-NEXT:    s_mov_b32 s12, exec_lo990; GFX10-NEXT:    s_wqm_b32 exec_lo, exec_lo991; GFX10-NEXT:    v_perm_b32 v1, v2, v1, 0x5040100992; GFX10-NEXT:    s_and_b32 exec_lo, exec_lo, s12993; GFX10-NEXT:    image_sample_b_cl v[0:3], v[0:1], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a16994; GFX10-NEXT:    s_waitcnt vmcnt(0)995; GFX10-NEXT:    ; return to shader part epilog996;997; GFX11-TRUE16-LABEL: sample_b_cl_1d:998; GFX11-TRUE16:       ; %bb.0: ; %main_body999; GFX11-TRUE16-NEXT:    s_mov_b32 s12, exec_lo1000; GFX11-TRUE16-NEXT:    s_wqm_b32 exec_lo, exec_lo1001; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v2.l1002; GFX11-TRUE16-NEXT:    s_and_b32 exec_lo, exec_lo, s121003; GFX11-TRUE16-NEXT:    image_sample_b_cl v[0:3], v[0:1], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a161004; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)1005; GFX11-TRUE16-NEXT:    ; return to shader part epilog1006;1007; GFX11-FAKE16-LABEL: sample_b_cl_1d:1008; GFX11-FAKE16:       ; %bb.0: ; %main_body1009; GFX11-FAKE16-NEXT:    s_mov_b32 s12, exec_lo1010; GFX11-FAKE16-NEXT:    s_wqm_b32 exec_lo, exec_lo1011; GFX11-FAKE16-NEXT:    v_perm_b32 v1, v2, v1, 0x50401001012; GFX11-FAKE16-NEXT:    s_and_b32 exec_lo, exec_lo, s121013; GFX11-FAKE16-NEXT:    image_sample_b_cl v[0:3], v[0:1], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a161014; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)1015; GFX11-FAKE16-NEXT:    ; return to shader part epilog1016;1017; GFX12-TRUE16-LABEL: sample_b_cl_1d:1018; GFX12-TRUE16:       ; %bb.0: ; %main_body1019; GFX12-TRUE16-NEXT:    s_mov_b32 s12, exec_lo1020; GFX12-TRUE16-NEXT:    s_wqm_b32 exec_lo, exec_lo1021; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v2.l1022; GFX12-TRUE16-NEXT:    s_and_b32 exec_lo, exec_lo, s121023; GFX12-TRUE16-NEXT:    image_sample_b_cl v[0:3], [v0, v1], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a161024; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x01025; GFX12-TRUE16-NEXT:    ; return to shader part epilog1026;1027; GFX12-FAKE16-LABEL: sample_b_cl_1d:1028; GFX12-FAKE16:       ; %bb.0: ; %main_body1029; GFX12-FAKE16-NEXT:    s_mov_b32 s12, exec_lo1030; GFX12-FAKE16-NEXT:    s_wqm_b32 exec_lo, exec_lo1031; GFX12-FAKE16-NEXT:    v_perm_b32 v1, v2, v1, 0x50401001032; GFX12-FAKE16-NEXT:    s_and_b32 exec_lo, exec_lo, s121033; GFX12-FAKE16-NEXT:    image_sample_b_cl v[0:3], [v0, v1], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a161034; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x01035; GFX12-FAKE16-NEXT:    ; return to shader part epilog1036main_body:1037  %v = call <4 x float> @llvm.amdgcn.image.sample.b.cl.1d.v4f32.f16.f16(i32 15, half %bias, half %s, half %clamp, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)1038  ret <4 x float> %v1039}1040 1041define amdgpu_ps <4 x float> @sample_b_cl_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %bias, half %s, half %t, half %clamp) {1042; GFX9-LABEL: sample_b_cl_2d:1043; GFX9:       ; %bb.0: ; %main_body1044; GFX9-NEXT:    s_mov_b64 s[12:13], exec1045; GFX9-NEXT:    s_wqm_b64 exec, exec1046; GFX9-NEXT:    s_mov_b32 s14, 0x50401001047; GFX9-NEXT:    v_mov_b32_e32 v5, v31048; GFX9-NEXT:    v_mov_b32_e32 v3, v01049; GFX9-NEXT:    v_perm_b32 v4, v2, v1, s141050; GFX9-NEXT:    s_and_b64 exec, exec, s[12:13]1051; GFX9-NEXT:    image_sample_b_cl v[0:3], v[3:5], s[0:7], s[8:11] dmask:0xf a161052; GFX9-NEXT:    s_waitcnt vmcnt(0)1053; GFX9-NEXT:    ; return to shader part epilog1054;1055; GFX10-LABEL: sample_b_cl_2d:1056; GFX10:       ; %bb.0: ; %main_body1057; GFX10-NEXT:    s_mov_b32 s12, exec_lo1058; GFX10-NEXT:    s_wqm_b32 exec_lo, exec_lo1059; GFX10-NEXT:    v_perm_b32 v1, v2, v1, 0x50401001060; GFX10-NEXT:    s_and_b32 exec_lo, exec_lo, s121061; GFX10-NEXT:    image_sample_b_cl v[0:3], [v0, v1, v3], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a161062; GFX10-NEXT:    s_waitcnt vmcnt(0)1063; GFX10-NEXT:    ; return to shader part epilog1064;1065; GFX11-TRUE16-LABEL: sample_b_cl_2d:1066; GFX11-TRUE16:       ; %bb.0: ; %main_body1067; GFX11-TRUE16-NEXT:    s_mov_b32 s12, exec_lo1068; GFX11-TRUE16-NEXT:    s_wqm_b32 exec_lo, exec_lo1069; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v4.l, v3.l1070; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v1.l1071; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v2.l1072; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v0.l1073; GFX11-TRUE16-NEXT:    s_and_b32 exec_lo, exec_lo, s121074; GFX11-TRUE16-NEXT:    image_sample_b_cl v[0:3], v[2:4], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a161075; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)1076; GFX11-TRUE16-NEXT:    ; return to shader part epilog1077;1078; GFX11-FAKE16-LABEL: sample_b_cl_2d:1079; GFX11-FAKE16:       ; %bb.0: ; %main_body1080; GFX11-FAKE16-NEXT:    s_mov_b32 s12, exec_lo1081; GFX11-FAKE16-NEXT:    s_wqm_b32 exec_lo, exec_lo1082; GFX11-FAKE16-NEXT:    v_perm_b32 v1, v2, v1, 0x50401001083; GFX11-FAKE16-NEXT:    s_and_b32 exec_lo, exec_lo, s121084; GFX11-FAKE16-NEXT:    image_sample_b_cl v[0:3], [v0, v1, v3], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a161085; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)1086; GFX11-FAKE16-NEXT:    ; return to shader part epilog1087;1088; GFX12-TRUE16-LABEL: sample_b_cl_2d:1089; GFX12-TRUE16:       ; %bb.0: ; %main_body1090; GFX12-TRUE16-NEXT:    s_mov_b32 s12, exec_lo1091; GFX12-TRUE16-NEXT:    s_wqm_b32 exec_lo, exec_lo1092; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v2.l1093; GFX12-TRUE16-NEXT:    s_and_b32 exec_lo, exec_lo, s121094; GFX12-TRUE16-NEXT:    image_sample_b_cl v[0:3], [v0, v1, v3], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a161095; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x01096; GFX12-TRUE16-NEXT:    ; return to shader part epilog1097;1098; GFX12-FAKE16-LABEL: sample_b_cl_2d:1099; GFX12-FAKE16:       ; %bb.0: ; %main_body1100; GFX12-FAKE16-NEXT:    s_mov_b32 s12, exec_lo1101; GFX12-FAKE16-NEXT:    s_wqm_b32 exec_lo, exec_lo1102; GFX12-FAKE16-NEXT:    v_perm_b32 v1, v2, v1, 0x50401001103; GFX12-FAKE16-NEXT:    s_and_b32 exec_lo, exec_lo, s121104; GFX12-FAKE16-NEXT:    image_sample_b_cl v[0:3], [v0, v1, v3], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a161105; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x01106; GFX12-FAKE16-NEXT:    ; return to shader part epilog1107main_body:1108  %v = call <4 x float> @llvm.amdgcn.image.sample.b.cl.2d.v4f32.f16.f16(i32 15, half %bias, half %s, half %t, half %clamp, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)1109  ret <4 x float> %v1110}1111 1112define amdgpu_ps <4 x float> @sample_c_b_cl_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %bias, float %zcompare, half %s, half %clamp) {1113; GFX9-LABEL: sample_c_b_cl_1d:1114; GFX9:       ; %bb.0: ; %main_body1115; GFX9-NEXT:    s_mov_b64 s[12:13], exec1116; GFX9-NEXT:    s_wqm_b64 exec, exec1117; GFX9-NEXT:    s_mov_b32 s14, 0x50401001118; GFX9-NEXT:    v_perm_b32 v2, v3, v2, s141119; GFX9-NEXT:    s_and_b64 exec, exec, s[12:13]1120; GFX9-NEXT:    image_sample_c_b_cl v[0:3], v[0:2], s[0:7], s[8:11] dmask:0xf a161121; GFX9-NEXT:    s_waitcnt vmcnt(0)1122; GFX9-NEXT:    ; return to shader part epilog1123;1124; GFX10-LABEL: sample_c_b_cl_1d:1125; GFX10:       ; %bb.0: ; %main_body1126; GFX10-NEXT:    s_mov_b32 s12, exec_lo1127; GFX10-NEXT:    s_wqm_b32 exec_lo, exec_lo1128; GFX10-NEXT:    v_perm_b32 v2, v3, v2, 0x50401001129; GFX10-NEXT:    s_and_b32 exec_lo, exec_lo, s121130; GFX10-NEXT:    image_sample_c_b_cl v[0:3], v[0:2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a161131; GFX10-NEXT:    s_waitcnt vmcnt(0)1132; GFX10-NEXT:    ; return to shader part epilog1133;1134; GFX11-TRUE16-LABEL: sample_c_b_cl_1d:1135; GFX11-TRUE16:       ; %bb.0: ; %main_body1136; GFX11-TRUE16-NEXT:    s_mov_b32 s12, exec_lo1137; GFX11-TRUE16-NEXT:    s_wqm_b32 exec_lo, exec_lo1138; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.h, v3.l1139; GFX11-TRUE16-NEXT:    s_and_b32 exec_lo, exec_lo, s121140; GFX11-TRUE16-NEXT:    image_sample_c_b_cl v[0:3], v[0:2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a161141; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)1142; GFX11-TRUE16-NEXT:    ; return to shader part epilog1143;1144; GFX11-FAKE16-LABEL: sample_c_b_cl_1d:1145; GFX11-FAKE16:       ; %bb.0: ; %main_body1146; GFX11-FAKE16-NEXT:    s_mov_b32 s12, exec_lo1147; GFX11-FAKE16-NEXT:    s_wqm_b32 exec_lo, exec_lo1148; GFX11-FAKE16-NEXT:    v_perm_b32 v2, v3, v2, 0x50401001149; GFX11-FAKE16-NEXT:    s_and_b32 exec_lo, exec_lo, s121150; GFX11-FAKE16-NEXT:    image_sample_c_b_cl v[0:3], v[0:2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a161151; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)1152; GFX11-FAKE16-NEXT:    ; return to shader part epilog1153;1154; GFX12-TRUE16-LABEL: sample_c_b_cl_1d:1155; GFX12-TRUE16:       ; %bb.0: ; %main_body1156; GFX12-TRUE16-NEXT:    s_mov_b32 s12, exec_lo1157; GFX12-TRUE16-NEXT:    s_wqm_b32 exec_lo, exec_lo1158; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v2.h, v3.l1159; GFX12-TRUE16-NEXT:    s_and_b32 exec_lo, exec_lo, s121160; GFX12-TRUE16-NEXT:    image_sample_c_b_cl v[0:3], [v0, v1, v2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a161161; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x01162; GFX12-TRUE16-NEXT:    ; return to shader part epilog1163;1164; GFX12-FAKE16-LABEL: sample_c_b_cl_1d:1165; GFX12-FAKE16:       ; %bb.0: ; %main_body1166; GFX12-FAKE16-NEXT:    s_mov_b32 s12, exec_lo1167; GFX12-FAKE16-NEXT:    s_wqm_b32 exec_lo, exec_lo1168; GFX12-FAKE16-NEXT:    v_perm_b32 v2, v3, v2, 0x50401001169; GFX12-FAKE16-NEXT:    s_and_b32 exec_lo, exec_lo, s121170; GFX12-FAKE16-NEXT:    image_sample_c_b_cl v[0:3], [v0, v1, v2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a161171; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x01172; GFX12-FAKE16-NEXT:    ; return to shader part epilog1173main_body:1174  %v = call <4 x float> @llvm.amdgcn.image.sample.c.b.cl.1d.v4f32.f16.f16(i32 15, half %bias, float %zcompare, half %s, half %clamp, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)1175  ret <4 x float> %v1176}1177 1178define amdgpu_ps <4 x float> @sample_c_b_cl_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %bias, float %zcompare, half %s, half %t, half %clamp) {1179; GFX9-LABEL: sample_c_b_cl_2d:1180; GFX9:       ; %bb.0: ; %main_body1181; GFX9-NEXT:    s_mov_b64 s[12:13], exec1182; GFX9-NEXT:    s_wqm_b64 exec, exec1183; GFX9-NEXT:    s_mov_b32 s14, 0x50401001184; GFX9-NEXT:    v_mov_b32_e32 v7, v41185; GFX9-NEXT:    v_mov_b32_e32 v5, v11186; GFX9-NEXT:    v_mov_b32_e32 v4, v01187; GFX9-NEXT:    v_perm_b32 v6, v3, v2, s141188; GFX9-NEXT:    s_and_b64 exec, exec, s[12:13]1189; GFX9-NEXT:    image_sample_c_b_cl v[0:3], v[4:7], s[0:7], s[8:11] dmask:0xf a161190; GFX9-NEXT:    s_waitcnt vmcnt(0)1191; GFX9-NEXT:    ; return to shader part epilog1192;1193; GFX10-LABEL: sample_c_b_cl_2d:1194; GFX10:       ; %bb.0: ; %main_body1195; GFX10-NEXT:    s_mov_b32 s12, exec_lo1196; GFX10-NEXT:    s_wqm_b32 exec_lo, exec_lo1197; GFX10-NEXT:    v_perm_b32 v2, v3, v2, 0x50401001198; GFX10-NEXT:    s_and_b32 exec_lo, exec_lo, s121199; GFX10-NEXT:    image_sample_c_b_cl v[0:3], [v0, v1, v2, v4], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a161200; GFX10-NEXT:    s_waitcnt vmcnt(0)1201; GFX10-NEXT:    ; return to shader part epilog1202;1203; GFX11-TRUE16-LABEL: sample_c_b_cl_2d:1204; GFX11-TRUE16:       ; %bb.0: ; %main_body1205; GFX11-TRUE16-NEXT:    s_mov_b32 s12, exec_lo1206; GFX11-TRUE16-NEXT:    s_wqm_b32 exec_lo, exec_lo1207; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.h, v3.l1208; GFX11-TRUE16-NEXT:    s_and_b32 exec_lo, exec_lo, s121209; GFX11-TRUE16-NEXT:    image_sample_c_b_cl v[0:3], [v0, v1, v2, v4], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a161210; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)1211; GFX11-TRUE16-NEXT:    ; return to shader part epilog1212;1213; GFX11-FAKE16-LABEL: sample_c_b_cl_2d:1214; GFX11-FAKE16:       ; %bb.0: ; %main_body1215; GFX11-FAKE16-NEXT:    s_mov_b32 s12, exec_lo1216; GFX11-FAKE16-NEXT:    s_wqm_b32 exec_lo, exec_lo1217; GFX11-FAKE16-NEXT:    v_perm_b32 v2, v3, v2, 0x50401001218; GFX11-FAKE16-NEXT:    s_and_b32 exec_lo, exec_lo, s121219; GFX11-FAKE16-NEXT:    image_sample_c_b_cl v[0:3], [v0, v1, v2, v4], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a161220; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)1221; GFX11-FAKE16-NEXT:    ; return to shader part epilog1222;1223; GFX12-TRUE16-LABEL: sample_c_b_cl_2d:1224; GFX12-TRUE16:       ; %bb.0: ; %main_body1225; GFX12-TRUE16-NEXT:    s_mov_b32 s12, exec_lo1226; GFX12-TRUE16-NEXT:    s_wqm_b32 exec_lo, exec_lo1227; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v2.h, v3.l1228; GFX12-TRUE16-NEXT:    s_and_b32 exec_lo, exec_lo, s121229; GFX12-TRUE16-NEXT:    image_sample_c_b_cl v[0:3], [v0, v1, v2, v4], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a161230; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x01231; GFX12-TRUE16-NEXT:    ; return to shader part epilog1232;1233; GFX12-FAKE16-LABEL: sample_c_b_cl_2d:1234; GFX12-FAKE16:       ; %bb.0: ; %main_body1235; GFX12-FAKE16-NEXT:    s_mov_b32 s12, exec_lo1236; GFX12-FAKE16-NEXT:    s_wqm_b32 exec_lo, exec_lo1237; GFX12-FAKE16-NEXT:    v_perm_b32 v2, v3, v2, 0x50401001238; GFX12-FAKE16-NEXT:    s_and_b32 exec_lo, exec_lo, s121239; GFX12-FAKE16-NEXT:    image_sample_c_b_cl v[0:3], [v0, v1, v2, v4], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a161240; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x01241; GFX12-FAKE16-NEXT:    ; return to shader part epilog1242main_body:1243  %v = call <4 x float> @llvm.amdgcn.image.sample.c.b.cl.2d.v4f32.f16.f16(i32 15, half %bias, float %zcompare, half %s, half %t, half %clamp, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)1244  ret <4 x float> %v1245}1246 1247define amdgpu_ps <4 x float> @sample_d_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %dsdh, half %dsdv, half %s) {1248; GFX9-LABEL: sample_d_1d:1249; GFX9:       ; %bb.0: ; %main_body1250; GFX9-NEXT:    image_sample_d v[0:3], v[0:2], s[0:7], s[8:11] dmask:0xf a161251; GFX9-NEXT:    s_waitcnt vmcnt(0)1252; GFX9-NEXT:    ; return to shader part epilog1253;1254; GFX10-LABEL: sample_d_1d:1255; GFX10:       ; %bb.0: ; %main_body1256; GFX10-NEXT:    image_sample_d_g16 v[0:3], v[0:2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a161257; GFX10-NEXT:    s_waitcnt vmcnt(0)1258; GFX10-NEXT:    ; return to shader part epilog1259;1260; GFX11-LABEL: sample_d_1d:1261; GFX11:       ; %bb.0: ; %main_body1262; GFX11-NEXT:    image_sample_d_g16 v[0:3], v[0:2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a161263; GFX11-NEXT:    s_waitcnt vmcnt(0)1264; GFX11-NEXT:    ; return to shader part epilog1265;1266; GFX12-LABEL: sample_d_1d:1267; GFX12:       ; %bb.0: ; %main_body1268; GFX12-NEXT:    image_sample_d_g16 v[0:3], [v0, v1, v2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a161269; GFX12-NEXT:    s_wait_samplecnt 0x01270; GFX12-NEXT:    ; return to shader part epilog1271main_body:1272  %v = call <4 x float> @llvm.amdgcn.image.sample.d.1d.v4f32.f16.f16(i32 15, half %dsdh, half %dsdv, half %s, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)1273  ret <4 x float> %v1274}1275 1276define amdgpu_ps <4 x float> @sample_d_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %dsdh, half %dtdh, half %dsdv, half %dtdv, half %s, half %t) {1277; GFX9-LABEL: sample_d_2d:1278; GFX9:       ; %bb.0: ; %main_body1279; GFX9-NEXT:    s_mov_b32 s12, 0x50401001280; GFX9-NEXT:    v_perm_b32 v4, v5, v4, s121281; GFX9-NEXT:    v_perm_b32 v3, v3, v2, s121282; GFX9-NEXT:    v_perm_b32 v2, v1, v0, s121283; GFX9-NEXT:    image_sample_d v[0:3], v[2:4], s[0:7], s[8:11] dmask:0xf a161284; GFX9-NEXT:    s_waitcnt vmcnt(0)1285; GFX9-NEXT:    ; return to shader part epilog1286;1287; GFX10-LABEL: sample_d_2d:1288; GFX10:       ; %bb.0: ; %main_body1289; GFX10-NEXT:    v_perm_b32 v4, v5, v4, 0x50401001290; GFX10-NEXT:    v_perm_b32 v3, v3, v2, 0x50401001291; GFX10-NEXT:    v_perm_b32 v2, v1, v0, 0x50401001292; GFX10-NEXT:    image_sample_d_g16 v[0:3], v[2:4], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a161293; GFX10-NEXT:    s_waitcnt vmcnt(0)1294; GFX10-NEXT:    ; return to shader part epilog1295;1296; GFX11-TRUE16-LABEL: sample_d_2d:1297; GFX11-TRUE16:       ; %bb.0: ; %main_body1298; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v6.l, v4.l1299; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v6.h, v5.l1300; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v2.l1301; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.h, v3.l1302; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v4.l, v0.l1303; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v4.h, v1.l1304; GFX11-TRUE16-NEXT:    image_sample_d_g16 v[0:3], v[4:6], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a161305; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)1306; GFX11-TRUE16-NEXT:    ; return to shader part epilog1307;1308; GFX11-FAKE16-LABEL: sample_d_2d:1309; GFX11-FAKE16:       ; %bb.0: ; %main_body1310; GFX11-FAKE16-NEXT:    v_perm_b32 v4, v5, v4, 0x50401001311; GFX11-FAKE16-NEXT:    v_perm_b32 v3, v3, v2, 0x50401001312; GFX11-FAKE16-NEXT:    v_perm_b32 v2, v1, v0, 0x50401001313; GFX11-FAKE16-NEXT:    image_sample_d_g16 v[0:3], v[2:4], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a161314; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)1315; GFX11-FAKE16-NEXT:    ; return to shader part epilog1316;1317; GFX12-TRUE16-LABEL: sample_d_2d:1318; GFX12-TRUE16:       ; %bb.0: ; %main_body1319; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v4.h, v5.l1320; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v2.h, v3.l1321; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v1.l1322; GFX12-TRUE16-NEXT:    image_sample_d_g16 v[0:3], [v0, v2, v4], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a161323; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x01324; GFX12-TRUE16-NEXT:    ; return to shader part epilog1325;1326; GFX12-FAKE16-LABEL: sample_d_2d:1327; GFX12-FAKE16:       ; %bb.0: ; %main_body1328; GFX12-FAKE16-NEXT:    v_perm_b32 v4, v5, v4, 0x50401001329; GFX12-FAKE16-NEXT:    v_perm_b32 v2, v3, v2, 0x50401001330; GFX12-FAKE16-NEXT:    v_perm_b32 v0, v1, v0, 0x50401001331; GFX12-FAKE16-NEXT:    image_sample_d_g16 v[0:3], [v0, v2, v4], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a161332; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x01333; GFX12-FAKE16-NEXT:    ; return to shader part epilog1334main_body:1335  %v = call <4 x float> @llvm.amdgcn.image.sample.d.2d.v4f32.f16.f16(i32 15, half %dsdh, half %dtdh, half %dsdv, half %dtdv, half %s, half %t, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)1336  ret <4 x float> %v1337}1338 1339define amdgpu_ps <4 x float> @sample_d_3d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %dsdh, half %dtdh, half %drdh, half %dsdv, half %dtdv, half %drdv, half %s, half %t, half %r) {1340; GFX9-LABEL: sample_d_3d:1341; GFX9:       ; %bb.0: ; %main_body1342; GFX9-NEXT:    s_mov_b32 s12, 0x50401001343; GFX9-NEXT:    v_mov_b32_e32 v12, v81344; GFX9-NEXT:    v_mov_b32_e32 v10, v51345; GFX9-NEXT:    v_mov_b32_e32 v8, v21346; GFX9-NEXT:    v_perm_b32 v11, v7, v6, s121347; GFX9-NEXT:    v_perm_b32 v9, v4, v3, s121348; GFX9-NEXT:    v_perm_b32 v7, v1, v0, s121349; GFX9-NEXT:    image_sample_d v[0:3], v[7:12], s[0:7], s[8:11] dmask:0xf a161350; GFX9-NEXT:    s_waitcnt vmcnt(0)1351; GFX9-NEXT:    ; return to shader part epilog1352;1353; GFX10-LABEL: sample_d_3d:1354; GFX10:       ; %bb.0: ; %main_body1355; GFX10-NEXT:    v_mov_b32_e32 v12, v81356; GFX10-NEXT:    v_mov_b32_e32 v10, v51357; GFX10-NEXT:    v_mov_b32_e32 v8, v21358; GFX10-NEXT:    v_perm_b32 v11, v7, v6, 0x50401001359; GFX10-NEXT:    v_perm_b32 v9, v4, v3, 0x50401001360; GFX10-NEXT:    v_perm_b32 v7, v1, v0, 0x50401001361; GFX10-NEXT:    image_sample_d_g16 v[0:3], v[7:12], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_3D a161362; GFX10-NEXT:    s_waitcnt vmcnt(0)1363; GFX10-NEXT:    ; return to shader part epilog1364;1365; GFX11-TRUE16-LABEL: sample_d_3d:1366; GFX11-TRUE16:       ; %bb.0: ; %main_body1367; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v9.l, v8.l1368; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v8.l, v6.l1369; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v8.h, v7.l1370; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v4.l1371; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v1.l1372; GFX11-TRUE16-NEXT:    image_sample_d_g16 v[0:3], [v0, v2, v3, v5, v[8:9]], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_3D a161373; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)1374; GFX11-TRUE16-NEXT:    ; return to shader part epilog1375;1376; GFX11-FAKE16-LABEL: sample_d_3d:1377; GFX11-FAKE16:       ; %bb.0: ; %main_body1378; GFX11-FAKE16-NEXT:    v_perm_b32 v3, v4, v3, 0x50401001379; GFX11-FAKE16-NEXT:    v_perm_b32 v0, v1, v0, 0x50401001380; GFX11-FAKE16-NEXT:    v_perm_b32 v7, v7, v6, 0x50401001381; GFX11-FAKE16-NEXT:    image_sample_d_g16 v[0:3], [v0, v2, v3, v5, v[7:8]], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_3D a161382; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)1383; GFX11-FAKE16-NEXT:    ; return to shader part epilog1384;1385; GFX12-TRUE16-LABEL: sample_d_3d:1386; GFX12-TRUE16:       ; %bb.0: ; %main_body1387; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v9.l, v8.l1388; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v8.l, v6.l1389; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v8.h, v7.l1390; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v5.l1391; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v4.l1392; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v1.l1393; GFX12-TRUE16-NEXT:    image_sample_d_g16 v[0:3], [v0, v2, v3, v[7:9]], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_3D a161394; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x01395; GFX12-TRUE16-NEXT:    ; return to shader part epilog1396;1397; GFX12-FAKE16-LABEL: sample_d_3d:1398; GFX12-FAKE16:       ; %bb.0: ; %main_body1399; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v10, v81400; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v8, v51401; GFX12-FAKE16-NEXT:    v_perm_b32 v3, v4, v3, 0x50401001402; GFX12-FAKE16-NEXT:    v_perm_b32 v0, v1, v0, 0x50401001403; GFX12-FAKE16-NEXT:    v_perm_b32 v9, v7, v6, 0x50401001404; GFX12-FAKE16-NEXT:    image_sample_d_g16 v[0:3], [v0, v2, v3, v[8:10]], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_3D a161405; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x01406; GFX12-FAKE16-NEXT:    ; return to shader part epilog1407main_body:1408  %v = call <4 x float> @llvm.amdgcn.image.sample.d.3d.v4f32.f16.f16(i32 15, half %dsdh, half %dtdh, half %drdh, half %dsdv, half %dtdv, half %drdv, half %s, half %t, half %r, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)1409  ret <4 x float> %v1410}1411 1412define amdgpu_ps <4 x float> @sample_c_d_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %zcompare, half %dsdh, half %dsdv, half %s) {1413; GFX9-LABEL: sample_c_d_1d:1414; GFX9:       ; %bb.0: ; %main_body1415; GFX9-NEXT:    image_sample_c_d v[0:3], v[0:3], s[0:7], s[8:11] dmask:0xf a161416; GFX9-NEXT:    s_waitcnt vmcnt(0)1417; GFX9-NEXT:    ; return to shader part epilog1418;1419; GFX10-LABEL: sample_c_d_1d:1420; GFX10:       ; %bb.0: ; %main_body1421; GFX10-NEXT:    image_sample_c_d_g16 v[0:3], v[0:3], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a161422; GFX10-NEXT:    s_waitcnt vmcnt(0)1423; GFX10-NEXT:    ; return to shader part epilog1424;1425; GFX11-LABEL: sample_c_d_1d:1426; GFX11:       ; %bb.0: ; %main_body1427; GFX11-NEXT:    image_sample_c_d_g16 v[0:3], v[0:3], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a161428; GFX11-NEXT:    s_waitcnt vmcnt(0)1429; GFX11-NEXT:    ; return to shader part epilog1430;1431; GFX12-LABEL: sample_c_d_1d:1432; GFX12:       ; %bb.0: ; %main_body1433; GFX12-NEXT:    image_sample_c_d_g16 v[0:3], [v0, v1, v2, v3], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a161434; GFX12-NEXT:    s_wait_samplecnt 0x01435; GFX12-NEXT:    ; return to shader part epilog1436main_body:1437  %v = call <4 x float> @llvm.amdgcn.image.sample.c.d.1d.v4f32.f32.f16(i32 15, float %zcompare, half %dsdh, half %dsdv, half %s, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)1438  ret <4 x float> %v1439}1440 1441define amdgpu_ps <4 x float> @sample_c_d_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %zcompare, half %dsdh, half %dtdh, half %dsdv, half %dtdv, half %s, half %t) {1442; GFX9-LABEL: sample_c_d_2d:1443; GFX9:       ; %bb.0: ; %main_body1444; GFX9-NEXT:    v_mov_b32_e32 v7, v31445; GFX9-NEXT:    v_mov_b32_e32 v8, v21446; GFX9-NEXT:    s_mov_b32 s12, 0x50401001447; GFX9-NEXT:    v_perm_b32 v3, v6, v5, s121448; GFX9-NEXT:    v_perm_b32 v2, v4, v7, s121449; GFX9-NEXT:    v_perm_b32 v1, v8, v1, s121450; GFX9-NEXT:    image_sample_c_d v[0:3], v[0:3], s[0:7], s[8:11] dmask:0xf a161451; GFX9-NEXT:    s_waitcnt vmcnt(0)1452; GFX9-NEXT:    ; return to shader part epilog1453;1454; GFX10-LABEL: sample_c_d_2d:1455; GFX10:       ; %bb.0: ; %main_body1456; GFX10-NEXT:    v_perm_b32 v5, v6, v5, 0x50401001457; GFX10-NEXT:    v_perm_b32 v3, v4, v3, 0x50401001458; GFX10-NEXT:    v_perm_b32 v1, v2, v1, 0x50401001459; GFX10-NEXT:    image_sample_c_d_g16 v[0:3], [v0, v1, v3, v5], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a161460; GFX10-NEXT:    s_waitcnt vmcnt(0)1461; GFX10-NEXT:    ; return to shader part epilog1462;1463; GFX11-TRUE16-LABEL: sample_c_d_2d:1464; GFX11-TRUE16:       ; %bb.0: ; %main_body1465; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.h, v6.l1466; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v4.l1467; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v2.l1468; GFX11-TRUE16-NEXT:    image_sample_c_d_g16 v[0:3], [v0, v1, v3, v5], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a161469; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)1470; GFX11-TRUE16-NEXT:    ; return to shader part epilog1471;1472; GFX11-FAKE16-LABEL: sample_c_d_2d:1473; GFX11-FAKE16:       ; %bb.0: ; %main_body1474; GFX11-FAKE16-NEXT:    v_perm_b32 v5, v6, v5, 0x50401001475; GFX11-FAKE16-NEXT:    v_perm_b32 v3, v4, v3, 0x50401001476; GFX11-FAKE16-NEXT:    v_perm_b32 v1, v2, v1, 0x50401001477; GFX11-FAKE16-NEXT:    image_sample_c_d_g16 v[0:3], [v0, v1, v3, v5], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a161478; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)1479; GFX11-FAKE16-NEXT:    ; return to shader part epilog1480;1481; GFX12-TRUE16-LABEL: sample_c_d_2d:1482; GFX12-TRUE16:       ; %bb.0: ; %main_body1483; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.h, v6.l1484; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v4.l1485; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v2.l1486; GFX12-TRUE16-NEXT:    image_sample_c_d_g16 v[0:3], [v0, v1, v3, v5], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a161487; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x01488; GFX12-TRUE16-NEXT:    ; return to shader part epilog1489;1490; GFX12-FAKE16-LABEL: sample_c_d_2d:1491; GFX12-FAKE16:       ; %bb.0: ; %main_body1492; GFX12-FAKE16-NEXT:    v_perm_b32 v5, v6, v5, 0x50401001493; GFX12-FAKE16-NEXT:    v_perm_b32 v3, v4, v3, 0x50401001494; GFX12-FAKE16-NEXT:    v_perm_b32 v1, v2, v1, 0x50401001495; GFX12-FAKE16-NEXT:    image_sample_c_d_g16 v[0:3], [v0, v1, v3, v5], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a161496; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x01497; GFX12-FAKE16-NEXT:    ; return to shader part epilog1498main_body:1499  %v = call <4 x float> @llvm.amdgcn.image.sample.c.d.2d.v4f32.f32.f16(i32 15, float %zcompare, half %dsdh, half %dtdh, half %dsdv, half %dtdv, half %s, half %t, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)1500  ret <4 x float> %v1501}1502 1503define amdgpu_ps <4 x float> @sample_d_cl_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %dsdh, half %dsdv, half %s, half %clamp) {1504; GFX9-LABEL: sample_d_cl_1d:1505; GFX9:       ; %bb.0: ; %main_body1506; GFX9-NEXT:    s_mov_b32 s12, 0x50401001507; GFX9-NEXT:    v_perm_b32 v2, v3, v2, s121508; GFX9-NEXT:    image_sample_d_cl v[0:3], v[0:2], s[0:7], s[8:11] dmask:0xf a161509; GFX9-NEXT:    s_waitcnt vmcnt(0)1510; GFX9-NEXT:    ; return to shader part epilog1511;1512; GFX10-LABEL: sample_d_cl_1d:1513; GFX10:       ; %bb.0: ; %main_body1514; GFX10-NEXT:    v_perm_b32 v2, v3, v2, 0x50401001515; GFX10-NEXT:    image_sample_d_cl_g16 v[0:3], v[0:2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a161516; GFX10-NEXT:    s_waitcnt vmcnt(0)1517; GFX10-NEXT:    ; return to shader part epilog1518;1519; GFX11-TRUE16-LABEL: sample_d_cl_1d:1520; GFX11-TRUE16:       ; %bb.0: ; %main_body1521; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.h, v3.l1522; GFX11-TRUE16-NEXT:    image_sample_d_cl_g16 v[0:3], v[0:2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a161523; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)1524; GFX11-TRUE16-NEXT:    ; return to shader part epilog1525;1526; GFX11-FAKE16-LABEL: sample_d_cl_1d:1527; GFX11-FAKE16:       ; %bb.0: ; %main_body1528; GFX11-FAKE16-NEXT:    v_perm_b32 v2, v3, v2, 0x50401001529; GFX11-FAKE16-NEXT:    image_sample_d_cl_g16 v[0:3], v[0:2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a161530; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)1531; GFX11-FAKE16-NEXT:    ; return to shader part epilog1532;1533; GFX12-TRUE16-LABEL: sample_d_cl_1d:1534; GFX12-TRUE16:       ; %bb.0: ; %main_body1535; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v2.h, v3.l1536; GFX12-TRUE16-NEXT:    image_sample_d_cl_g16 v[0:3], [v0, v1, v2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a161537; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x01538; GFX12-TRUE16-NEXT:    ; return to shader part epilog1539;1540; GFX12-FAKE16-LABEL: sample_d_cl_1d:1541; GFX12-FAKE16:       ; %bb.0: ; %main_body1542; GFX12-FAKE16-NEXT:    v_perm_b32 v2, v3, v2, 0x50401001543; GFX12-FAKE16-NEXT:    image_sample_d_cl_g16 v[0:3], [v0, v1, v2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a161544; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x01545; GFX12-FAKE16-NEXT:    ; return to shader part epilog1546main_body:1547  %v = call <4 x float> @llvm.amdgcn.image.sample.d.cl.1d.v4f32.f16.f16(i32 15, half %dsdh, half %dsdv, half %s, half %clamp, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)1548  ret <4 x float> %v1549}1550 1551define amdgpu_ps <4 x float> @sample_d_cl_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %dsdh, half %dtdh, half %dsdv, half %dtdv, half %s, half %t, half %clamp) {1552; GFX9-LABEL: sample_d_cl_2d:1553; GFX9:       ; %bb.0: ; %main_body1554; GFX9-NEXT:    s_mov_b32 s12, 0x50401001555; GFX9-NEXT:    v_perm_b32 v5, v5, v4, s121556; GFX9-NEXT:    v_perm_b32 v4, v3, v2, s121557; GFX9-NEXT:    v_perm_b32 v3, v1, v0, s121558; GFX9-NEXT:    image_sample_d_cl v[0:3], v[3:6], s[0:7], s[8:11] dmask:0xf a161559; GFX9-NEXT:    s_waitcnt vmcnt(0)1560; GFX9-NEXT:    ; return to shader part epilog1561;1562; GFX10-LABEL: sample_d_cl_2d:1563; GFX10:       ; %bb.0: ; %main_body1564; GFX10-NEXT:    v_perm_b32 v4, v5, v4, 0x50401001565; GFX10-NEXT:    v_perm_b32 v2, v3, v2, 0x50401001566; GFX10-NEXT:    v_perm_b32 v0, v1, v0, 0x50401001567; GFX10-NEXT:    image_sample_d_cl_g16 v[0:3], [v0, v2, v4, v6], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a161568; GFX10-NEXT:    s_waitcnt vmcnt(0)1569; GFX10-NEXT:    ; return to shader part epilog1570;1571; GFX11-TRUE16-LABEL: sample_d_cl_2d:1572; GFX11-TRUE16:       ; %bb.0: ; %main_body1573; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v6.l1574; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v6.l, v4.l1575; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v6.h, v5.l1576; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v2.l1577; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.h, v3.l1578; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v4.l, v0.l1579; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v4.h, v1.l1580; GFX11-TRUE16-NEXT:    image_sample_d_cl_g16 v[0:3], v[4:7], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a161581; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)1582; GFX11-TRUE16-NEXT:    ; return to shader part epilog1583;1584; GFX11-FAKE16-LABEL: sample_d_cl_2d:1585; GFX11-FAKE16:       ; %bb.0: ; %main_body1586; GFX11-FAKE16-NEXT:    v_perm_b32 v4, v5, v4, 0x50401001587; GFX11-FAKE16-NEXT:    v_perm_b32 v2, v3, v2, 0x50401001588; GFX11-FAKE16-NEXT:    v_perm_b32 v0, v1, v0, 0x50401001589; GFX11-FAKE16-NEXT:    image_sample_d_cl_g16 v[0:3], [v0, v2, v4, v6], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a161590; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)1591; GFX11-FAKE16-NEXT:    ; return to shader part epilog1592;1593; GFX12-TRUE16-LABEL: sample_d_cl_2d:1594; GFX12-TRUE16:       ; %bb.0: ; %main_body1595; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v4.h, v5.l1596; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v2.h, v3.l1597; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v1.l1598; GFX12-TRUE16-NEXT:    image_sample_d_cl_g16 v[0:3], [v0, v2, v4, v6], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a161599; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x01600; GFX12-TRUE16-NEXT:    ; return to shader part epilog1601;1602; GFX12-FAKE16-LABEL: sample_d_cl_2d:1603; GFX12-FAKE16:       ; %bb.0: ; %main_body1604; GFX12-FAKE16-NEXT:    v_perm_b32 v4, v5, v4, 0x50401001605; GFX12-FAKE16-NEXT:    v_perm_b32 v2, v3, v2, 0x50401001606; GFX12-FAKE16-NEXT:    v_perm_b32 v0, v1, v0, 0x50401001607; GFX12-FAKE16-NEXT:    image_sample_d_cl_g16 v[0:3], [v0, v2, v4, v6], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a161608; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x01609; GFX12-FAKE16-NEXT:    ; return to shader part epilog1610main_body:1611  %v = call <4 x float> @llvm.amdgcn.image.sample.d.cl.2d.v4f32.f16.f16(i32 15, half %dsdh, half %dtdh, half %dsdv, half %dtdv, half %s, half %t, half %clamp, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)1612  ret <4 x float> %v1613}1614 1615define amdgpu_ps <4 x float> @sample_c_d_cl_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %zcompare, half %dsdh, half %dsdv, half %s, half %clamp) {1616; GFX9-LABEL: sample_c_d_cl_1d:1617; GFX9:       ; %bb.0: ; %main_body1618; GFX9-NEXT:    s_mov_b32 s12, 0x50401001619; GFX9-NEXT:    v_perm_b32 v3, v4, v3, s121620; GFX9-NEXT:    image_sample_c_d_cl v[0:3], v[0:3], s[0:7], s[8:11] dmask:0xf a161621; GFX9-NEXT:    s_waitcnt vmcnt(0)1622; GFX9-NEXT:    ; return to shader part epilog1623;1624; GFX10-LABEL: sample_c_d_cl_1d:1625; GFX10:       ; %bb.0: ; %main_body1626; GFX10-NEXT:    v_perm_b32 v3, v4, v3, 0x50401001627; GFX10-NEXT:    image_sample_c_d_cl_g16 v[0:3], v[0:3], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a161628; GFX10-NEXT:    s_waitcnt vmcnt(0)1629; GFX10-NEXT:    ; return to shader part epilog1630;1631; GFX11-TRUE16-LABEL: sample_c_d_cl_1d:1632; GFX11-TRUE16:       ; %bb.0: ; %main_body1633; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v4.l1634; GFX11-TRUE16-NEXT:    image_sample_c_d_cl_g16 v[0:3], v[0:3], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a161635; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)1636; GFX11-TRUE16-NEXT:    ; return to shader part epilog1637;1638; GFX11-FAKE16-LABEL: sample_c_d_cl_1d:1639; GFX11-FAKE16:       ; %bb.0: ; %main_body1640; GFX11-FAKE16-NEXT:    v_perm_b32 v3, v4, v3, 0x50401001641; GFX11-FAKE16-NEXT:    image_sample_c_d_cl_g16 v[0:3], v[0:3], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a161642; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)1643; GFX11-FAKE16-NEXT:    ; return to shader part epilog1644;1645; GFX12-TRUE16-LABEL: sample_c_d_cl_1d:1646; GFX12-TRUE16:       ; %bb.0: ; %main_body1647; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v4.l1648; GFX12-TRUE16-NEXT:    image_sample_c_d_cl_g16 v[0:3], [v0, v1, v2, v3], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a161649; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x01650; GFX12-TRUE16-NEXT:    ; return to shader part epilog1651;1652; GFX12-FAKE16-LABEL: sample_c_d_cl_1d:1653; GFX12-FAKE16:       ; %bb.0: ; %main_body1654; GFX12-FAKE16-NEXT:    v_perm_b32 v3, v4, v3, 0x50401001655; GFX12-FAKE16-NEXT:    image_sample_c_d_cl_g16 v[0:3], [v0, v1, v2, v3], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a161656; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x01657; GFX12-FAKE16-NEXT:    ; return to shader part epilog1658main_body:1659  %v = call <4 x float> @llvm.amdgcn.image.sample.c.d.cl.1d.v4f32.f32.f16(i32 15, float %zcompare, half %dsdh, half %dsdv, half %s, half %clamp, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)1660  ret <4 x float> %v1661}1662 1663define amdgpu_ps <4 x float> @sample_c_d_cl_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %zcompare, half %dsdh, half %dtdh, half %dsdv, half %dtdv, half %s, half %t, half %clamp) {1664; GFX9-LABEL: sample_c_d_cl_2d:1665; GFX9:       ; %bb.0: ; %main_body1666; GFX9-NEXT:    s_mov_b32 s12, 0x50401001667; GFX9-NEXT:    v_mov_b32_e32 v11, v71668; GFX9-NEXT:    v_mov_b32_e32 v7, v01669; GFX9-NEXT:    v_perm_b32 v10, v6, v5, s121670; GFX9-NEXT:    v_perm_b32 v9, v4, v3, s121671; GFX9-NEXT:    v_perm_b32 v8, v2, v1, s121672; GFX9-NEXT:    image_sample_c_d_cl v[0:3], v[7:11], s[0:7], s[8:11] dmask:0xf a161673; GFX9-NEXT:    s_waitcnt vmcnt(0)1674; GFX9-NEXT:    ; return to shader part epilog1675;1676; GFX10-LABEL: sample_c_d_cl_2d:1677; GFX10:       ; %bb.0: ; %main_body1678; GFX10-NEXT:    v_perm_b32 v5, v6, v5, 0x50401001679; GFX10-NEXT:    v_perm_b32 v3, v4, v3, 0x50401001680; GFX10-NEXT:    v_perm_b32 v1, v2, v1, 0x50401001681; GFX10-NEXT:    image_sample_c_d_cl_g16 v[0:3], [v0, v1, v3, v5, v7], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a161682; GFX10-NEXT:    s_waitcnt vmcnt(0)1683; GFX10-NEXT:    ; return to shader part epilog1684;1685; GFX11-TRUE16-LABEL: sample_c_d_cl_2d:1686; GFX11-TRUE16:       ; %bb.0: ; %main_body1687; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.h, v6.l1688; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v4.l1689; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v2.l1690; GFX11-TRUE16-NEXT:    image_sample_c_d_cl_g16 v[0:3], [v0, v1, v3, v5, v7], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a161691; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)1692; GFX11-TRUE16-NEXT:    ; return to shader part epilog1693;1694; GFX11-FAKE16-LABEL: sample_c_d_cl_2d:1695; GFX11-FAKE16:       ; %bb.0: ; %main_body1696; GFX11-FAKE16-NEXT:    v_perm_b32 v5, v6, v5, 0x50401001697; GFX11-FAKE16-NEXT:    v_perm_b32 v3, v4, v3, 0x50401001698; GFX11-FAKE16-NEXT:    v_perm_b32 v1, v2, v1, 0x50401001699; GFX11-FAKE16-NEXT:    image_sample_c_d_cl_g16 v[0:3], [v0, v1, v3, v5, v7], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a161700; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)1701; GFX11-FAKE16-NEXT:    ; return to shader part epilog1702;1703; GFX12-TRUE16-LABEL: sample_c_d_cl_2d:1704; GFX12-TRUE16:       ; %bb.0: ; %main_body1705; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v8.l, v7.l1706; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v5.l1707; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v6.l1708; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v4.l1709; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v2.l1710; GFX12-TRUE16-NEXT:    image_sample_c_d_cl_g16 v[0:3], [v0, v1, v3, v[7:8]], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a161711; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x01712; GFX12-TRUE16-NEXT:    ; return to shader part epilog1713;1714; GFX12-FAKE16-LABEL: sample_c_d_cl_2d:1715; GFX12-FAKE16:       ; %bb.0: ; %main_body1716; GFX12-FAKE16-NEXT:    v_perm_b32 v3, v4, v3, 0x50401001717; GFX12-FAKE16-NEXT:    v_perm_b32 v1, v2, v1, 0x50401001718; GFX12-FAKE16-NEXT:    v_perm_b32 v6, v6, v5, 0x50401001719; GFX12-FAKE16-NEXT:    image_sample_c_d_cl_g16 v[0:3], [v0, v1, v3, v[6:7]], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a161720; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x01721; GFX12-FAKE16-NEXT:    ; return to shader part epilog1722main_body:1723  %v = call <4 x float> @llvm.amdgcn.image.sample.c.d.cl.2d.v4f32.f32.f16(i32 15, float %zcompare, half %dsdh, half %dtdh, half %dsdv, half %dtdv, half %s, half %t, half %clamp, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)1724  ret <4 x float> %v1725}1726 1727define amdgpu_ps <4 x float> @sample_l_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %s, half %lod) {1728; GFX9-LABEL: sample_l_1d:1729; GFX9:       ; %bb.0: ; %main_body1730; GFX9-NEXT:    s_mov_b32 s12, 0x50401001731; GFX9-NEXT:    v_perm_b32 v0, v1, v0, s121732; GFX9-NEXT:    image_sample_l v[0:3], v0, s[0:7], s[8:11] dmask:0xf a161733; GFX9-NEXT:    s_waitcnt vmcnt(0)1734; GFX9-NEXT:    ; return to shader part epilog1735;1736; GFX10-LABEL: sample_l_1d:1737; GFX10:       ; %bb.0: ; %main_body1738; GFX10-NEXT:    v_perm_b32 v0, v1, v0, 0x50401001739; GFX10-NEXT:    image_sample_l v[0:3], v0, s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a161740; GFX10-NEXT:    s_waitcnt vmcnt(0)1741; GFX10-NEXT:    ; return to shader part epilog1742;1743; GFX11-TRUE16-LABEL: sample_l_1d:1744; GFX11-TRUE16:       ; %bb.0: ; %main_body1745; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v1.l1746; GFX11-TRUE16-NEXT:    image_sample_l v[0:3], v0, s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a161747; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)1748; GFX11-TRUE16-NEXT:    ; return to shader part epilog1749;1750; GFX11-FAKE16-LABEL: sample_l_1d:1751; GFX11-FAKE16:       ; %bb.0: ; %main_body1752; GFX11-FAKE16-NEXT:    v_perm_b32 v0, v1, v0, 0x50401001753; GFX11-FAKE16-NEXT:    image_sample_l v[0:3], v0, s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a161754; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)1755; GFX11-FAKE16-NEXT:    ; return to shader part epilog1756;1757; GFX12-TRUE16-LABEL: sample_l_1d:1758; GFX12-TRUE16:       ; %bb.0: ; %main_body1759; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v1.l1760; GFX12-TRUE16-NEXT:    image_sample_l v[0:3], v0, s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a161761; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x01762; GFX12-TRUE16-NEXT:    ; return to shader part epilog1763;1764; GFX12-FAKE16-LABEL: sample_l_1d:1765; GFX12-FAKE16:       ; %bb.0: ; %main_body1766; GFX12-FAKE16-NEXT:    v_perm_b32 v0, v1, v0, 0x50401001767; GFX12-FAKE16-NEXT:    image_sample_l v[0:3], v0, s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a161768; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x01769; GFX12-FAKE16-NEXT:    ; return to shader part epilog1770main_body:1771  %v = call <4 x float> @llvm.amdgcn.image.sample.l.1d.v4f32.f16(i32 15, half %s, half %lod, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)1772  ret <4 x float> %v1773}1774 1775define amdgpu_ps <4 x float> @sample_l_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %s, half %t, half %lod) {1776; GFX9-LABEL: sample_l_2d:1777; GFX9:       ; %bb.0: ; %main_body1778; GFX9-NEXT:    s_mov_b32 s12, 0x50401001779; GFX9-NEXT:    v_perm_b32 v1, v1, v0, s121780; GFX9-NEXT:    image_sample_l v[0:3], v[1:2], s[0:7], s[8:11] dmask:0xf a161781; GFX9-NEXT:    s_waitcnt vmcnt(0)1782; GFX9-NEXT:    ; return to shader part epilog1783;1784; GFX10-LABEL: sample_l_2d:1785; GFX10:       ; %bb.0: ; %main_body1786; GFX10-NEXT:    v_perm_b32 v0, v1, v0, 0x50401001787; GFX10-NEXT:    image_sample_l v[0:3], [v0, v2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a161788; GFX10-NEXT:    s_waitcnt vmcnt(0)1789; GFX10-NEXT:    ; return to shader part epilog1790;1791; GFX11-TRUE16-LABEL: sample_l_2d:1792; GFX11-TRUE16:       ; %bb.0: ; %main_body1793; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v2.l1794; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v0.l1795; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.h, v1.l1796; GFX11-TRUE16-NEXT:    image_sample_l v[0:3], v[2:3], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a161797; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)1798; GFX11-TRUE16-NEXT:    ; return to shader part epilog1799;1800; GFX11-FAKE16-LABEL: sample_l_2d:1801; GFX11-FAKE16:       ; %bb.0: ; %main_body1802; GFX11-FAKE16-NEXT:    v_perm_b32 v0, v1, v0, 0x50401001803; GFX11-FAKE16-NEXT:    image_sample_l v[0:3], [v0, v2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a161804; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)1805; GFX11-FAKE16-NEXT:    ; return to shader part epilog1806;1807; GFX12-TRUE16-LABEL: sample_l_2d:1808; GFX12-TRUE16:       ; %bb.0: ; %main_body1809; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v1.l1810; GFX12-TRUE16-NEXT:    image_sample_l v[0:3], [v0, v2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a161811; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x01812; GFX12-TRUE16-NEXT:    ; return to shader part epilog1813;1814; GFX12-FAKE16-LABEL: sample_l_2d:1815; GFX12-FAKE16:       ; %bb.0: ; %main_body1816; GFX12-FAKE16-NEXT:    v_perm_b32 v0, v1, v0, 0x50401001817; GFX12-FAKE16-NEXT:    image_sample_l v[0:3], [v0, v2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a161818; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x01819; GFX12-FAKE16-NEXT:    ; return to shader part epilog1820main_body:1821  %v = call <4 x float> @llvm.amdgcn.image.sample.l.2d.v4f32.f16(i32 15, half %s, half %t, half %lod, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)1822  ret <4 x float> %v1823}1824 1825define amdgpu_ps <4 x float> @sample_c_l_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %zcompare, half %s, half %lod) {1826; GFX9-LABEL: sample_c_l_1d:1827; GFX9:       ; %bb.0: ; %main_body1828; GFX9-NEXT:    s_mov_b32 s12, 0x50401001829; GFX9-NEXT:    v_perm_b32 v1, v2, v1, s121830; GFX9-NEXT:    image_sample_c_l v[0:3], v[0:1], s[0:7], s[8:11] dmask:0xf a161831; GFX9-NEXT:    s_waitcnt vmcnt(0)1832; GFX9-NEXT:    ; return to shader part epilog1833;1834; GFX10-LABEL: sample_c_l_1d:1835; GFX10:       ; %bb.0: ; %main_body1836; GFX10-NEXT:    v_perm_b32 v1, v2, v1, 0x50401001837; GFX10-NEXT:    image_sample_c_l v[0:3], v[0:1], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a161838; GFX10-NEXT:    s_waitcnt vmcnt(0)1839; GFX10-NEXT:    ; return to shader part epilog1840;1841; GFX11-TRUE16-LABEL: sample_c_l_1d:1842; GFX11-TRUE16:       ; %bb.0: ; %main_body1843; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v2.l1844; GFX11-TRUE16-NEXT:    image_sample_c_l v[0:3], v[0:1], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a161845; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)1846; GFX11-TRUE16-NEXT:    ; return to shader part epilog1847;1848; GFX11-FAKE16-LABEL: sample_c_l_1d:1849; GFX11-FAKE16:       ; %bb.0: ; %main_body1850; GFX11-FAKE16-NEXT:    v_perm_b32 v1, v2, v1, 0x50401001851; GFX11-FAKE16-NEXT:    image_sample_c_l v[0:3], v[0:1], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a161852; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)1853; GFX11-FAKE16-NEXT:    ; return to shader part epilog1854;1855; GFX12-TRUE16-LABEL: sample_c_l_1d:1856; GFX12-TRUE16:       ; %bb.0: ; %main_body1857; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v2.l1858; GFX12-TRUE16-NEXT:    image_sample_c_l v[0:3], [v0, v1], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a161859; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x01860; GFX12-TRUE16-NEXT:    ; return to shader part epilog1861;1862; GFX12-FAKE16-LABEL: sample_c_l_1d:1863; GFX12-FAKE16:       ; %bb.0: ; %main_body1864; GFX12-FAKE16-NEXT:    v_perm_b32 v1, v2, v1, 0x50401001865; GFX12-FAKE16-NEXT:    image_sample_c_l v[0:3], [v0, v1], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a161866; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x01867; GFX12-FAKE16-NEXT:    ; return to shader part epilog1868main_body:1869  %v = call <4 x float> @llvm.amdgcn.image.sample.c.l.1d.v4f32.f16(i32 15, float %zcompare, half %s, half %lod, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)1870  ret <4 x float> %v1871}1872 1873define amdgpu_ps <4 x float> @sample_c_l_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %zcompare, half %s, half %t, half %lod) {1874; GFX9-LABEL: sample_c_l_2d:1875; GFX9:       ; %bb.0: ; %main_body1876; GFX9-NEXT:    s_mov_b32 s12, 0x50401001877; GFX9-NEXT:    v_mov_b32_e32 v5, v31878; GFX9-NEXT:    v_mov_b32_e32 v3, v01879; GFX9-NEXT:    v_perm_b32 v4, v2, v1, s121880; GFX9-NEXT:    image_sample_c_l v[0:3], v[3:5], s[0:7], s[8:11] dmask:0xf a161881; GFX9-NEXT:    s_waitcnt vmcnt(0)1882; GFX9-NEXT:    ; return to shader part epilog1883;1884; GFX10-LABEL: sample_c_l_2d:1885; GFX10:       ; %bb.0: ; %main_body1886; GFX10-NEXT:    v_perm_b32 v1, v2, v1, 0x50401001887; GFX10-NEXT:    image_sample_c_l v[0:3], [v0, v1, v3], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a161888; GFX10-NEXT:    s_waitcnt vmcnt(0)1889; GFX10-NEXT:    ; return to shader part epilog1890;1891; GFX11-TRUE16-LABEL: sample_c_l_2d:1892; GFX11-TRUE16:       ; %bb.0: ; %main_body1893; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v2.l1894; GFX11-TRUE16-NEXT:    image_sample_c_l v[0:3], [v0, v1, v3], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a161895; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)1896; GFX11-TRUE16-NEXT:    ; return to shader part epilog1897;1898; GFX11-FAKE16-LABEL: sample_c_l_2d:1899; GFX11-FAKE16:       ; %bb.0: ; %main_body1900; GFX11-FAKE16-NEXT:    v_perm_b32 v1, v2, v1, 0x50401001901; GFX11-FAKE16-NEXT:    image_sample_c_l v[0:3], [v0, v1, v3], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a161902; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)1903; GFX11-FAKE16-NEXT:    ; return to shader part epilog1904;1905; GFX12-TRUE16-LABEL: sample_c_l_2d:1906; GFX12-TRUE16:       ; %bb.0: ; %main_body1907; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v2.l1908; GFX12-TRUE16-NEXT:    image_sample_c_l v[0:3], [v0, v1, v3], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a161909; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x01910; GFX12-TRUE16-NEXT:    ; return to shader part epilog1911;1912; GFX12-FAKE16-LABEL: sample_c_l_2d:1913; GFX12-FAKE16:       ; %bb.0: ; %main_body1914; GFX12-FAKE16-NEXT:    v_perm_b32 v1, v2, v1, 0x50401001915; GFX12-FAKE16-NEXT:    image_sample_c_l v[0:3], [v0, v1, v3], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a161916; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x01917; GFX12-FAKE16-NEXT:    ; return to shader part epilog1918main_body:1919  %v = call <4 x float> @llvm.amdgcn.image.sample.c.l.2d.v4f32.f16(i32 15, float %zcompare, half %s, half %t, half %lod, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)1920  ret <4 x float> %v1921}1922 1923define amdgpu_ps <4 x float> @sample_lz_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %s) {1924; GFX9-LABEL: sample_lz_1d:1925; GFX9:       ; %bb.0: ; %main_body1926; GFX9-NEXT:    image_sample_lz v[0:3], v0, s[0:7], s[8:11] dmask:0xf a161927; GFX9-NEXT:    s_waitcnt vmcnt(0)1928; GFX9-NEXT:    ; return to shader part epilog1929;1930; GFX10-LABEL: sample_lz_1d:1931; GFX10:       ; %bb.0: ; %main_body1932; GFX10-NEXT:    image_sample_lz v[0:3], v0, s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a161933; GFX10-NEXT:    s_waitcnt vmcnt(0)1934; GFX10-NEXT:    ; return to shader part epilog1935;1936; GFX11-LABEL: sample_lz_1d:1937; GFX11:       ; %bb.0: ; %main_body1938; GFX11-NEXT:    image_sample_lz v[0:3], v0, s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a161939; GFX11-NEXT:    s_waitcnt vmcnt(0)1940; GFX11-NEXT:    ; return to shader part epilog1941;1942; GFX12-LABEL: sample_lz_1d:1943; GFX12:       ; %bb.0: ; %main_body1944; GFX12-NEXT:    image_sample_lz v[0:3], v0, s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a161945; GFX12-NEXT:    s_wait_samplecnt 0x01946; GFX12-NEXT:    ; return to shader part epilog1947main_body:1948  %v = call <4 x float> @llvm.amdgcn.image.sample.lz.1d.v4f32.f16(i32 15, half %s, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)1949  ret <4 x float> %v1950}1951 1952define amdgpu_ps <4 x float> @sample_lz_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %s, half %t) {1953; GFX9-LABEL: sample_lz_2d:1954; GFX9:       ; %bb.0: ; %main_body1955; GFX9-NEXT:    s_mov_b32 s12, 0x50401001956; GFX9-NEXT:    v_perm_b32 v0, v1, v0, s121957; GFX9-NEXT:    image_sample_lz v[0:3], v0, s[0:7], s[8:11] dmask:0xf a161958; GFX9-NEXT:    s_waitcnt vmcnt(0)1959; GFX9-NEXT:    ; return to shader part epilog1960;1961; GFX10-LABEL: sample_lz_2d:1962; GFX10:       ; %bb.0: ; %main_body1963; GFX10-NEXT:    v_perm_b32 v0, v1, v0, 0x50401001964; GFX10-NEXT:    image_sample_lz v[0:3], v0, s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a161965; GFX10-NEXT:    s_waitcnt vmcnt(0)1966; GFX10-NEXT:    ; return to shader part epilog1967;1968; GFX11-TRUE16-LABEL: sample_lz_2d:1969; GFX11-TRUE16:       ; %bb.0: ; %main_body1970; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v1.l1971; GFX11-TRUE16-NEXT:    image_sample_lz v[0:3], v0, s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a161972; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)1973; GFX11-TRUE16-NEXT:    ; return to shader part epilog1974;1975; GFX11-FAKE16-LABEL: sample_lz_2d:1976; GFX11-FAKE16:       ; %bb.0: ; %main_body1977; GFX11-FAKE16-NEXT:    v_perm_b32 v0, v1, v0, 0x50401001978; GFX11-FAKE16-NEXT:    image_sample_lz v[0:3], v0, s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a161979; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)1980; GFX11-FAKE16-NEXT:    ; return to shader part epilog1981;1982; GFX12-TRUE16-LABEL: sample_lz_2d:1983; GFX12-TRUE16:       ; %bb.0: ; %main_body1984; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v1.l1985; GFX12-TRUE16-NEXT:    image_sample_lz v[0:3], v0, s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a161986; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x01987; GFX12-TRUE16-NEXT:    ; return to shader part epilog1988;1989; GFX12-FAKE16-LABEL: sample_lz_2d:1990; GFX12-FAKE16:       ; %bb.0: ; %main_body1991; GFX12-FAKE16-NEXT:    v_perm_b32 v0, v1, v0, 0x50401001992; GFX12-FAKE16-NEXT:    image_sample_lz v[0:3], v0, s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a161993; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x01994; GFX12-FAKE16-NEXT:    ; return to shader part epilog1995main_body:1996  %v = call <4 x float> @llvm.amdgcn.image.sample.lz.2d.v4f32.f16(i32 15, half %s, half %t, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)1997  ret <4 x float> %v1998}1999 2000define amdgpu_ps <4 x float> @sample_c_lz_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %zcompare, half %s) {2001; GFX9-LABEL: sample_c_lz_1d:2002; GFX9:       ; %bb.0: ; %main_body2003; GFX9-NEXT:    image_sample_c_lz v[0:3], v[0:1], s[0:7], s[8:11] dmask:0xf a162004; GFX9-NEXT:    s_waitcnt vmcnt(0)2005; GFX9-NEXT:    ; return to shader part epilog2006;2007; GFX10-LABEL: sample_c_lz_1d:2008; GFX10:       ; %bb.0: ; %main_body2009; GFX10-NEXT:    image_sample_c_lz v[0:3], v[0:1], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a162010; GFX10-NEXT:    s_waitcnt vmcnt(0)2011; GFX10-NEXT:    ; return to shader part epilog2012;2013; GFX11-LABEL: sample_c_lz_1d:2014; GFX11:       ; %bb.0: ; %main_body2015; GFX11-NEXT:    image_sample_c_lz v[0:3], v[0:1], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a162016; GFX11-NEXT:    s_waitcnt vmcnt(0)2017; GFX11-NEXT:    ; return to shader part epilog2018;2019; GFX12-LABEL: sample_c_lz_1d:2020; GFX12:       ; %bb.0: ; %main_body2021; GFX12-NEXT:    image_sample_c_lz v[0:3], [v0, v1], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D a162022; GFX12-NEXT:    s_wait_samplecnt 0x02023; GFX12-NEXT:    ; return to shader part epilog2024main_body:2025  %v = call <4 x float> @llvm.amdgcn.image.sample.c.lz.1d.v4f32.f16(i32 15, float %zcompare, half %s, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)2026  ret <4 x float> %v2027}2028 2029define amdgpu_ps <4 x float> @sample_c_lz_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %zcompare, half %s, half %t) {2030; GFX9-LABEL: sample_c_lz_2d:2031; GFX9:       ; %bb.0: ; %main_body2032; GFX9-NEXT:    s_mov_b32 s12, 0x50401002033; GFX9-NEXT:    v_perm_b32 v1, v2, v1, s122034; GFX9-NEXT:    image_sample_c_lz v[0:3], v[0:1], s[0:7], s[8:11] dmask:0xf a162035; GFX9-NEXT:    s_waitcnt vmcnt(0)2036; GFX9-NEXT:    ; return to shader part epilog2037;2038; GFX10-LABEL: sample_c_lz_2d:2039; GFX10:       ; %bb.0: ; %main_body2040; GFX10-NEXT:    v_perm_b32 v1, v2, v1, 0x50401002041; GFX10-NEXT:    image_sample_c_lz v[0:3], v[0:1], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a162042; GFX10-NEXT:    s_waitcnt vmcnt(0)2043; GFX10-NEXT:    ; return to shader part epilog2044;2045; GFX11-TRUE16-LABEL: sample_c_lz_2d:2046; GFX11-TRUE16:       ; %bb.0: ; %main_body2047; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v2.l2048; GFX11-TRUE16-NEXT:    image_sample_c_lz v[0:3], v[0:1], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a162049; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)2050; GFX11-TRUE16-NEXT:    ; return to shader part epilog2051;2052; GFX11-FAKE16-LABEL: sample_c_lz_2d:2053; GFX11-FAKE16:       ; %bb.0: ; %main_body2054; GFX11-FAKE16-NEXT:    v_perm_b32 v1, v2, v1, 0x50401002055; GFX11-FAKE16-NEXT:    image_sample_c_lz v[0:3], v[0:1], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a162056; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)2057; GFX11-FAKE16-NEXT:    ; return to shader part epilog2058;2059; GFX12-TRUE16-LABEL: sample_c_lz_2d:2060; GFX12-TRUE16:       ; %bb.0: ; %main_body2061; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v2.l2062; GFX12-TRUE16-NEXT:    image_sample_c_lz v[0:3], [v0, v1], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a162063; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x02064; GFX12-TRUE16-NEXT:    ; return to shader part epilog2065;2066; GFX12-FAKE16-LABEL: sample_c_lz_2d:2067; GFX12-FAKE16:       ; %bb.0: ; %main_body2068; GFX12-FAKE16-NEXT:    v_perm_b32 v1, v2, v1, 0x50401002069; GFX12-FAKE16-NEXT:    image_sample_c_lz v[0:3], [v0, v1], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D a162070; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x02071; GFX12-FAKE16-NEXT:    ; return to shader part epilog2072main_body:2073  %v = call <4 x float> @llvm.amdgcn.image.sample.c.lz.2d.v4f32.f16(i32 15, float %zcompare, half %s, half %t, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)2074  ret <4 x float> %v2075}2076 2077define amdgpu_ps float @sample_c_d_o_2darray_V1(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, i32 %offset, float %zcompare, half %dsdh, half %dtdh, half %dsdv, half %dtdv, half %s, half %t, half %slice) {2078; GFX9-LABEL: sample_c_d_o_2darray_V1:2079; GFX9:       ; %bb.0: ; %main_body2080; GFX9-NEXT:    s_mov_b32 s12, 0x50401002081; GFX9-NEXT:    v_mov_b32_e32 v13, v82082; GFX9-NEXT:    v_mov_b32_e32 v9, v12083; GFX9-NEXT:    v_mov_b32_e32 v8, v02084; GFX9-NEXT:    v_perm_b32 v12, v7, v6, s122085; GFX9-NEXT:    v_perm_b32 v11, v5, v4, s122086; GFX9-NEXT:    v_perm_b32 v10, v3, v2, s122087; GFX9-NEXT:    image_sample_c_d_o v0, v[8:13], s[0:7], s[8:11] dmask:0x4 a16 da2088; GFX9-NEXT:    s_waitcnt vmcnt(0)2089; GFX9-NEXT:    ; return to shader part epilog2090;2091; GFX10-LABEL: sample_c_d_o_2darray_V1:2092; GFX10:       ; %bb.0: ; %main_body2093; GFX10-NEXT:    v_mov_b32_e32 v13, v82094; GFX10-NEXT:    v_mov_b32_e32 v9, v12095; GFX10-NEXT:    v_mov_b32_e32 v8, v02096; GFX10-NEXT:    v_perm_b32 v12, v7, v6, 0x50401002097; GFX10-NEXT:    v_perm_b32 v11, v5, v4, 0x50401002098; GFX10-NEXT:    v_perm_b32 v10, v3, v2, 0x50401002099; GFX10-NEXT:    image_sample_c_d_o_g16 v0, v[8:13], s[0:7], s[8:11] dmask:0x4 dim:SQ_RSRC_IMG_2D_ARRAY a162100; GFX10-NEXT:    s_waitcnt vmcnt(0)2101; GFX10-NEXT:    ; return to shader part epilog2102;2103; GFX11-TRUE16-LABEL: sample_c_d_o_2darray_V1:2104; GFX11-TRUE16:       ; %bb.0: ; %main_body2105; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v9.l, v8.l2106; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v8.l, v6.l2107; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v8.h, v7.l2108; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v4.h, v5.l2109; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.h, v3.l2110; GFX11-TRUE16-NEXT:    image_sample_c_d_o_g16 v0, [v0, v1, v2, v4, v[8:9]], s[0:7], s[8:11] dmask:0x4 dim:SQ_RSRC_IMG_2D_ARRAY a162111; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)2112; GFX11-TRUE16-NEXT:    ; return to shader part epilog2113;2114; GFX11-FAKE16-LABEL: sample_c_d_o_2darray_V1:2115; GFX11-FAKE16:       ; %bb.0: ; %main_body2116; GFX11-FAKE16-NEXT:    v_perm_b32 v4, v5, v4, 0x50401002117; GFX11-FAKE16-NEXT:    v_perm_b32 v2, v3, v2, 0x50401002118; GFX11-FAKE16-NEXT:    v_perm_b32 v7, v7, v6, 0x50401002119; GFX11-FAKE16-NEXT:    image_sample_c_d_o_g16 v0, [v0, v1, v2, v4, v[7:8]], s[0:7], s[8:11] dmask:0x4 dim:SQ_RSRC_IMG_2D_ARRAY a162120; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)2121; GFX11-FAKE16-NEXT:    ; return to shader part epilog2122;2123; GFX12-TRUE16-LABEL: sample_c_d_o_2darray_V1:2124; GFX12-TRUE16:       ; %bb.0: ; %main_body2125; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v9.l, v8.l2126; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v8.l, v6.l2127; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v8.h, v7.l2128; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v4.l2129; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v5.l2130; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v2.h, v3.l2131; GFX12-TRUE16-NEXT:    image_sample_c_d_o_g16 v0, [v0, v1, v2, v[7:9]], s[0:7], s[8:11] dmask:0x4 dim:SQ_RSRC_IMG_2D_ARRAY a162132; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x02133; GFX12-TRUE16-NEXT:    ; return to shader part epilog2134;2135; GFX12-FAKE16-LABEL: sample_c_d_o_2darray_V1:2136; GFX12-FAKE16:       ; %bb.0: ; %main_body2137; GFX12-FAKE16-NEXT:    v_perm_b32 v7, v7, v6, 0x50401002138; GFX12-FAKE16-NEXT:    v_perm_b32 v6, v5, v4, 0x50401002139; GFX12-FAKE16-NEXT:    v_perm_b32 v2, v3, v2, 0x50401002140; GFX12-FAKE16-NEXT:    image_sample_c_d_o_g16 v0, [v0, v1, v2, v[6:8]], s[0:7], s[8:11] dmask:0x4 dim:SQ_RSRC_IMG_2D_ARRAY a162141; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x02142; GFX12-FAKE16-NEXT:    ; return to shader part epilog2143main_body:2144  %v = call float @llvm.amdgcn.image.sample.c.d.o.2darray.f32.f16.f16(i32 4, i32 %offset, float %zcompare, half %dsdh, half %dtdh, half %dsdv, half %dtdv, half %s, half %t, half %slice, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)2145  ret float %v2146}2147 2148define amdgpu_ps <2 x float> @sample_c_d_o_2darray_V2(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, i32 %offset, float %zcompare, half %dsdh, half %dtdh, half %dsdv, half %dtdv, half %s, half %t, half %slice) {2149; GFX9-LABEL: sample_c_d_o_2darray_V2:2150; GFX9:       ; %bb.0: ; %main_body2151; GFX9-NEXT:    s_mov_b32 s12, 0x50401002152; GFX9-NEXT:    v_mov_b32_e32 v13, v82153; GFX9-NEXT:    v_mov_b32_e32 v9, v12154; GFX9-NEXT:    v_mov_b32_e32 v8, v02155; GFX9-NEXT:    v_perm_b32 v12, v7, v6, s122156; GFX9-NEXT:    v_perm_b32 v11, v5, v4, s122157; GFX9-NEXT:    v_perm_b32 v10, v3, v2, s122158; GFX9-NEXT:    image_sample_c_d_o v[0:1], v[8:13], s[0:7], s[8:11] dmask:0x6 a16 da2159; GFX9-NEXT:    s_waitcnt vmcnt(0)2160; GFX9-NEXT:    ; return to shader part epilog2161;2162; GFX10-LABEL: sample_c_d_o_2darray_V2:2163; GFX10:       ; %bb.0: ; %main_body2164; GFX10-NEXT:    v_mov_b32_e32 v13, v82165; GFX10-NEXT:    v_mov_b32_e32 v9, v12166; GFX10-NEXT:    v_mov_b32_e32 v8, v02167; GFX10-NEXT:    v_perm_b32 v12, v7, v6, 0x50401002168; GFX10-NEXT:    v_perm_b32 v11, v5, v4, 0x50401002169; GFX10-NEXT:    v_perm_b32 v10, v3, v2, 0x50401002170; GFX10-NEXT:    image_sample_c_d_o_g16 v[0:1], v[8:13], s[0:7], s[8:11] dmask:0x6 dim:SQ_RSRC_IMG_2D_ARRAY a162171; GFX10-NEXT:    s_waitcnt vmcnt(0)2172; GFX10-NEXT:    ; return to shader part epilog2173;2174; GFX11-TRUE16-LABEL: sample_c_d_o_2darray_V2:2175; GFX11-TRUE16:       ; %bb.0: ; %main_body2176; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v9.l, v8.l2177; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v8.l, v6.l2178; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v8.h, v7.l2179; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v4.h, v5.l2180; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.h, v3.l2181; GFX11-TRUE16-NEXT:    image_sample_c_d_o_g16 v[0:1], [v0, v1, v2, v4, v[8:9]], s[0:7], s[8:11] dmask:0x6 dim:SQ_RSRC_IMG_2D_ARRAY a162182; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)2183; GFX11-TRUE16-NEXT:    ; return to shader part epilog2184;2185; GFX11-FAKE16-LABEL: sample_c_d_o_2darray_V2:2186; GFX11-FAKE16:       ; %bb.0: ; %main_body2187; GFX11-FAKE16-NEXT:    v_perm_b32 v4, v5, v4, 0x50401002188; GFX11-FAKE16-NEXT:    v_perm_b32 v2, v3, v2, 0x50401002189; GFX11-FAKE16-NEXT:    v_perm_b32 v7, v7, v6, 0x50401002190; GFX11-FAKE16-NEXT:    image_sample_c_d_o_g16 v[0:1], [v0, v1, v2, v4, v[7:8]], s[0:7], s[8:11] dmask:0x6 dim:SQ_RSRC_IMG_2D_ARRAY a162191; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)2192; GFX11-FAKE16-NEXT:    ; return to shader part epilog2193;2194; GFX12-TRUE16-LABEL: sample_c_d_o_2darray_V2:2195; GFX12-TRUE16:       ; %bb.0: ; %main_body2196; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v9.l, v8.l2197; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v8.l, v6.l2198; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v8.h, v7.l2199; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v4.l2200; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v5.l2201; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v2.h, v3.l2202; GFX12-TRUE16-NEXT:    image_sample_c_d_o_g16 v[0:1], [v0, v1, v2, v[7:9]], s[0:7], s[8:11] dmask:0x6 dim:SQ_RSRC_IMG_2D_ARRAY a162203; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x02204; GFX12-TRUE16-NEXT:    ; return to shader part epilog2205;2206; GFX12-FAKE16-LABEL: sample_c_d_o_2darray_V2:2207; GFX12-FAKE16:       ; %bb.0: ; %main_body2208; GFX12-FAKE16-NEXT:    v_perm_b32 v7, v7, v6, 0x50401002209; GFX12-FAKE16-NEXT:    v_perm_b32 v6, v5, v4, 0x50401002210; GFX12-FAKE16-NEXT:    v_perm_b32 v2, v3, v2, 0x50401002211; GFX12-FAKE16-NEXT:    image_sample_c_d_o_g16 v[0:1], [v0, v1, v2, v[6:8]], s[0:7], s[8:11] dmask:0x6 dim:SQ_RSRC_IMG_2D_ARRAY a162212; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x02213; GFX12-FAKE16-NEXT:    ; return to shader part epilog2214main_body:2215  %v = call <2 x float> @llvm.amdgcn.image.sample.c.d.o.2darray.v2f32.f32.f16(i32 6, i32 %offset, float %zcompare, half %dsdh, half %dtdh, half %dsdv, half %dtdv, half %s, half %t, half %slice, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)2216  ret <2 x float> %v2217}2218 2219declare <4 x float> @llvm.amdgcn.image.sample.1d.v4f32.f16(i32, half, <8 x i32>, <4 x i32>, i1, i32, i32) #12220declare <8 x float> @llvm.amdgcn.image.sample.1d.v8f32.f16(i32, half, <8 x i32>, <4 x i32>, i1, i32, i32) #12221declare <4 x float> @llvm.amdgcn.image.sample.2d.v4f32.f16(i32, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #12222declare <4 x float> @llvm.amdgcn.image.sample.3d.v4f32.f16(i32, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #12223declare <4 x float> @llvm.amdgcn.image.sample.cube.v4f32.f16(i32, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #12224declare <4 x float> @llvm.amdgcn.image.sample.1darray.v4f32.f16(i32, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #12225declare <4 x float> @llvm.amdgcn.image.sample.2darray.v4f32.f16(i32, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #12226 2227declare <4 x float> @llvm.amdgcn.image.sample.c.1d.v4f32.f16(i32, float, half, <8 x i32>, <4 x i32>, i1, i32, i32) #12228declare <4 x float> @llvm.amdgcn.image.sample.c.2d.v4f32.f16(i32, float, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #12229declare <4 x float> @llvm.amdgcn.image.sample.cl.1d.v4f32.f16(i32, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #12230declare <4 x float> @llvm.amdgcn.image.sample.cl.2d.v4f32.f16(i32, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #12231declare <4 x float> @llvm.amdgcn.image.sample.c.cl.1d.v4f32.f16(i32, float, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #12232declare <4 x float> @llvm.amdgcn.image.sample.c.cl.2d.v4f32.f16(i32, float, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #12233 2234declare <4 x float> @llvm.amdgcn.image.sample.b.1d.v4f32.f16.f16(i32, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #12235declare <4 x float> @llvm.amdgcn.image.sample.b.2d.v4f32.f16.f16(i32, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #12236declare <4 x float> @llvm.amdgcn.image.sample.c.b.1d.v4f32.f16.f16(i32, half, float, half, <8 x i32>, <4 x i32>, i1, i32, i32) #12237declare <4 x float> @llvm.amdgcn.image.sample.c.b.2d.v4f32.f16.f16(i32, half, float, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #12238declare <4 x float> @llvm.amdgcn.image.sample.b.cl.1d.v4f32.f16.f16(i32, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #12239declare <4 x float> @llvm.amdgcn.image.sample.b.cl.2d.v4f32.f16.f16(i32, half, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #12240declare <4 x float> @llvm.amdgcn.image.sample.c.b.cl.1d.v4f32.f16.f16(i32, half, float, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #12241declare <4 x float> @llvm.amdgcn.image.sample.c.b.cl.2d.v4f32.f16.f16(i32, half, float, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #12242 2243declare <4 x float> @llvm.amdgcn.image.sample.d.1d.v4f32.f16.f16(i32, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #12244declare <4 x float> @llvm.amdgcn.image.sample.d.2d.v4f32.f16.f16(i32, half, half, half, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #12245declare <4 x float> @llvm.amdgcn.image.sample.d.3d.v4f32.f16.f16(i32, half, half, half, half, half, half, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #12246declare <4 x float> @llvm.amdgcn.image.sample.c.d.1d.v4f32.f32.f16(i32, float, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #12247declare <4 x float> @llvm.amdgcn.image.sample.c.d.2d.v4f32.f32.f16(i32, float, half, half, half, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #12248declare <4 x float> @llvm.amdgcn.image.sample.d.cl.1d.v4f32.f16.f16(i32, half, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #12249declare <4 x float> @llvm.amdgcn.image.sample.d.cl.2d.v4f32.f16.f16(i32, half, half, half, half, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #12250declare <4 x float> @llvm.amdgcn.image.sample.c.d.cl.1d.v4f32.f32.f16(i32, float, half, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #12251declare <4 x float> @llvm.amdgcn.image.sample.c.d.cl.2d.v4f32.f32.f16(i32, float, half, half, half, half, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #12252 2253declare <4 x float> @llvm.amdgcn.image.sample.l.1d.v4f32.f16(i32, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #12254declare <4 x float> @llvm.amdgcn.image.sample.l.2d.v4f32.f16(i32, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #12255declare <4 x float> @llvm.amdgcn.image.sample.c.l.1d.v4f32.f16(i32, float, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #12256declare <4 x float> @llvm.amdgcn.image.sample.c.l.2d.v4f32.f16(i32, float, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #12257 2258declare <4 x float> @llvm.amdgcn.image.sample.lz.1d.v4f32.f16(i32, half, <8 x i32>, <4 x i32>, i1, i32, i32) #12259declare <4 x float> @llvm.amdgcn.image.sample.lz.2d.v4f32.f16(i32, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #12260declare <4 x float> @llvm.amdgcn.image.sample.c.lz.1d.v4f32.f16(i32, float, half, <8 x i32>, <4 x i32>, i1, i32, i32) #12261declare <4 x float> @llvm.amdgcn.image.sample.c.lz.2d.v4f32.f16(i32, float, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #12262 2263declare float @llvm.amdgcn.image.sample.c.d.o.2darray.f32.f16.f16(i32, i32, float, half, half, half, half, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #12264declare <2 x float> @llvm.amdgcn.image.sample.c.d.o.2darray.v2f32.f32.f16(i32, i32, float, half, half, half, half, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #12265 2266attributes #0 = { nounwind }2267attributes #1 = { nounwind readonly }2268attributes #2 = { nounwind readnone }2269