brintos

brintos / llvm-project-archived public Read only

0
0
Text · 24.4 KiB · 45cebaf Raw
447 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=amdgcn -mcpu=gfx1010 < %s | FileCheck -check-prefixes=GFX10 %s3; 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 %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-FAKE16 %s5; 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 %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-FAKE16 %s7 8define amdgpu_ps <4 x float> @sample_d_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %dsdh, half %dsdv, float %s) {9; GFX10-LABEL: sample_d_1d:10; GFX10:       ; %bb.0: ; %main_body11; GFX10-NEXT:    image_sample_d_g16 v[0:3], v[0:2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D12; GFX10-NEXT:    s_waitcnt vmcnt(0)13; GFX10-NEXT:    ; return to shader part epilog14;15; GFX11-LABEL: sample_d_1d:16; GFX11:       ; %bb.0: ; %main_body17; GFX11-NEXT:    image_sample_d_g16 v[0:3], v[0:2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D18; GFX11-NEXT:    s_waitcnt vmcnt(0)19; GFX11-NEXT:    ; return to shader part epilog20;21; GFX12-LABEL: sample_d_1d:22; GFX12:       ; %bb.0: ; %main_body23; GFX12-NEXT:    image_sample_d_g16 v[0:3], [v0, v1, v2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D24; GFX12-NEXT:    s_wait_samplecnt 0x025; GFX12-NEXT:    ; return to shader part epilog26main_body:27  %v = call <4 x float> @llvm.amdgcn.image.sample.d.1d.v4f32.f16.f32(i32 15, half %dsdh, half %dsdv, float %s, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)28  ret <4 x float> %v29}30 31define 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, float %s, float %t) {32; GFX10-LABEL: sample_d_2d:33; GFX10:       ; %bb.0: ; %main_body34; GFX10-NEXT:    v_perm_b32 v2, v3, v2, 0x504010035; GFX10-NEXT:    v_perm_b32 v0, v1, v0, 0x504010036; GFX10-NEXT:    image_sample_d_g16 v[0:3], [v0, v2, v4, v5], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D37; GFX10-NEXT:    s_waitcnt vmcnt(0)38; GFX10-NEXT:    ; return to shader part epilog39;40; GFX11-TRUE16-LABEL: sample_d_2d:41; GFX11-TRUE16:       ; %bb.0: ; %main_body42; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.h, v3.l43; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v1.l44; GFX11-TRUE16-NEXT:    image_sample_d_g16 v[0:3], [v0, v2, v4, v5], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D45; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)46; GFX11-TRUE16-NEXT:    ; return to shader part epilog47;48; GFX11-FAKE16-LABEL: sample_d_2d:49; GFX11-FAKE16:       ; %bb.0: ; %main_body50; GFX11-FAKE16-NEXT:    v_perm_b32 v2, v3, v2, 0x504010051; GFX11-FAKE16-NEXT:    v_perm_b32 v0, v1, v0, 0x504010052; GFX11-FAKE16-NEXT:    image_sample_d_g16 v[0:3], [v0, v2, v4, v5], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D53; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)54; GFX11-FAKE16-NEXT:    ; return to shader part epilog55;56; GFX12-TRUE16-LABEL: sample_d_2d:57; GFX12-TRUE16:       ; %bb.0: ; %main_body58; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v2.h, v3.l59; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v1.l60; GFX12-TRUE16-NEXT:    image_sample_d_g16 v[0:3], [v0, v2, v4, v5], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D61; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x062; GFX12-TRUE16-NEXT:    ; return to shader part epilog63;64; GFX12-FAKE16-LABEL: sample_d_2d:65; GFX12-FAKE16:       ; %bb.0: ; %main_body66; GFX12-FAKE16-NEXT:    v_perm_b32 v2, v3, v2, 0x504010067; GFX12-FAKE16-NEXT:    v_perm_b32 v0, v1, v0, 0x504010068; GFX12-FAKE16-NEXT:    image_sample_d_g16 v[0:3], [v0, v2, v4, v5], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D69; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x070; GFX12-FAKE16-NEXT:    ; return to shader part epilog71main_body:72  %v = call <4 x float> @llvm.amdgcn.image.sample.d.2d.v4f32.f16.f32(i32 15, half %dsdh, half %dtdh, half %dsdv, half %dtdv, float %s, float %t, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)73  ret <4 x float> %v74}75 76define 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, float %s, float %t, float %r) {77; GFX10-LABEL: sample_d_3d:78; GFX10:       ; %bb.0: ; %main_body79; GFX10-NEXT:    v_mov_b32_e32 v9, v380; GFX10-NEXT:    v_mov_b32_e32 v3, v281; GFX10-NEXT:    v_perm_b32 v2, v1, v0, 0x504010082; GFX10-NEXT:    v_perm_b32 v4, v4, v9, 0x504010083; GFX10-NEXT:    image_sample_d_g16 v[0:3], v[2:8], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_3D84; GFX10-NEXT:    s_waitcnt vmcnt(0)85; GFX10-NEXT:    ; return to shader part epilog86;87; GFX11-TRUE16-LABEL: sample_d_3d:88; GFX11-TRUE16:       ; %bb.0: ; %main_body89; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v4.l90; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v1.l91; GFX11-TRUE16-NEXT:    image_sample_d_g16 v[0:3], [v0, v2, v3, v5, v[6:8]], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_3D92; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)93; GFX11-TRUE16-NEXT:    ; return to shader part epilog94;95; GFX11-FAKE16-LABEL: sample_d_3d:96; GFX11-FAKE16:       ; %bb.0: ; %main_body97; GFX11-FAKE16-NEXT:    v_perm_b32 v3, v4, v3, 0x504010098; GFX11-FAKE16-NEXT:    v_perm_b32 v0, v1, v0, 0x504010099; GFX11-FAKE16-NEXT:    image_sample_d_g16 v[0:3], [v0, v2, v3, v5, v[6:8]], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_3D100; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)101; GFX11-FAKE16-NEXT:    ; return to shader part epilog102;103; GFX12-TRUE16-LABEL: sample_d_3d:104; GFX12-TRUE16:       ; %bb.0: ; %main_body105; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v4.l106; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v1.l107; GFX12-TRUE16-NEXT:    image_sample_d_g16 v[0:3], [v0, v2, v3, v[5:8]], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_3D108; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x0109; GFX12-TRUE16-NEXT:    ; return to shader part epilog110;111; GFX12-FAKE16-LABEL: sample_d_3d:112; GFX12-FAKE16:       ; %bb.0: ; %main_body113; GFX12-FAKE16-NEXT:    v_perm_b32 v3, v4, v3, 0x5040100114; GFX12-FAKE16-NEXT:    v_perm_b32 v0, v1, v0, 0x5040100115; GFX12-FAKE16-NEXT:    image_sample_d_g16 v[0:3], [v0, v2, v3, v[5:8]], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_3D116; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x0117; GFX12-FAKE16-NEXT:    ; return to shader part epilog118main_body:119  %v = call <4 x float> @llvm.amdgcn.image.sample.d.3d.v4f32.f16.f32(i32 15, half %dsdh, half %dtdh, half %drdh, half %dsdv, half %dtdv, half %drdv, float %s, float %t, float %r, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)120  ret <4 x float> %v121}122 123define 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, float %s) {124; GFX10-LABEL: sample_c_d_1d:125; GFX10:       ; %bb.0: ; %main_body126; 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_1D127; GFX10-NEXT:    s_waitcnt vmcnt(0)128; GFX10-NEXT:    ; return to shader part epilog129;130; GFX11-LABEL: sample_c_d_1d:131; GFX11:       ; %bb.0: ; %main_body132; 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_1D133; GFX11-NEXT:    s_waitcnt vmcnt(0)134; GFX11-NEXT:    ; return to shader part epilog135;136; GFX12-LABEL: sample_c_d_1d:137; GFX12:       ; %bb.0: ; %main_body138; 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_1D139; GFX12-NEXT:    s_wait_samplecnt 0x0140; GFX12-NEXT:    ; return to shader part epilog141main_body:142  %v = call <4 x float> @llvm.amdgcn.image.sample.c.d.1d.v4f32.f16.f32(i32 15, float %zcompare, half %dsdh, half %dsdv, float %s, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)143  ret <4 x float> %v144}145 146define 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, float %s, float %t) {147; GFX10-LABEL: sample_c_d_2d:148; GFX10:       ; %bb.0: ; %main_body149; GFX10-NEXT:    v_perm_b32 v3, v4, v3, 0x5040100150; GFX10-NEXT:    v_perm_b32 v1, v2, v1, 0x5040100151; GFX10-NEXT:    image_sample_c_d_g16 v[0:3], [v0, v1, v3, v5, v6], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D152; GFX10-NEXT:    s_waitcnt vmcnt(0)153; GFX10-NEXT:    ; return to shader part epilog154;155; GFX11-TRUE16-LABEL: sample_c_d_2d:156; GFX11-TRUE16:       ; %bb.0: ; %main_body157; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v4.l158; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v2.l159; GFX11-TRUE16-NEXT:    image_sample_c_d_g16 v[0:3], [v0, v1, v3, v5, v6], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D160; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)161; GFX11-TRUE16-NEXT:    ; return to shader part epilog162;163; GFX11-FAKE16-LABEL: sample_c_d_2d:164; GFX11-FAKE16:       ; %bb.0: ; %main_body165; GFX11-FAKE16-NEXT:    v_perm_b32 v3, v4, v3, 0x5040100166; GFX11-FAKE16-NEXT:    v_perm_b32 v1, v2, v1, 0x5040100167; GFX11-FAKE16-NEXT:    image_sample_c_d_g16 v[0:3], [v0, v1, v3, v5, v6], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D168; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)169; GFX11-FAKE16-NEXT:    ; return to shader part epilog170;171; GFX12-TRUE16-LABEL: sample_c_d_2d:172; GFX12-TRUE16:       ; %bb.0: ; %main_body173; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v4.l174; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v2.l175; GFX12-TRUE16-NEXT:    image_sample_c_d_g16 v[0:3], [v0, v1, v3, v[5:6]], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D176; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x0177; GFX12-TRUE16-NEXT:    ; return to shader part epilog178;179; GFX12-FAKE16-LABEL: sample_c_d_2d:180; GFX12-FAKE16:       ; %bb.0: ; %main_body181; GFX12-FAKE16-NEXT:    v_perm_b32 v3, v4, v3, 0x5040100182; GFX12-FAKE16-NEXT:    v_perm_b32 v1, v2, v1, 0x5040100183; GFX12-FAKE16-NEXT:    image_sample_c_d_g16 v[0:3], [v0, v1, v3, v[5:6]], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D184; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x0185; GFX12-FAKE16-NEXT:    ; return to shader part epilog186main_body:187  %v = call <4 x float> @llvm.amdgcn.image.sample.c.d.2d.v4f32.f16.f32(i32 15, float %zcompare, half %dsdh, half %dtdh, half %dsdv, half %dtdv, float %s, float %t, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)188  ret <4 x float> %v189}190 191define amdgpu_ps <4 x float> @sample_d_cl_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %dsdh, half %dsdv, float %s, float %clamp) {192; GFX10-LABEL: sample_d_cl_1d:193; GFX10:       ; %bb.0: ; %main_body194; GFX10-NEXT:    image_sample_d_cl_g16 v[0:3], v[0:3], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D195; GFX10-NEXT:    s_waitcnt vmcnt(0)196; GFX10-NEXT:    ; return to shader part epilog197;198; GFX11-LABEL: sample_d_cl_1d:199; GFX11:       ; %bb.0: ; %main_body200; GFX11-NEXT:    image_sample_d_cl_g16 v[0:3], v[0:3], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D201; GFX11-NEXT:    s_waitcnt vmcnt(0)202; GFX11-NEXT:    ; return to shader part epilog203;204; GFX12-LABEL: sample_d_cl_1d:205; GFX12:       ; %bb.0: ; %main_body206; GFX12-NEXT:    image_sample_d_cl_g16 v[0:3], [v0, v1, v2, v3], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D207; GFX12-NEXT:    s_wait_samplecnt 0x0208; GFX12-NEXT:    ; return to shader part epilog209main_body:210  %v = call <4 x float> @llvm.amdgcn.image.sample.d.cl.1d.v4f32.f16.f32(i32 15, half %dsdh, half %dsdv, float %s, float %clamp, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)211  ret <4 x float> %v212}213 214define 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, float %s, float %t, float %clamp) {215; GFX10-LABEL: sample_d_cl_2d:216; GFX10:       ; %bb.0: ; %main_body217; GFX10-NEXT:    v_perm_b32 v2, v3, v2, 0x5040100218; GFX10-NEXT:    v_perm_b32 v0, v1, v0, 0x5040100219; GFX10-NEXT:    image_sample_d_cl_g16 v[0:3], [v0, v2, v4, v5, v6], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D220; GFX10-NEXT:    s_waitcnt vmcnt(0)221; GFX10-NEXT:    ; return to shader part epilog222;223; GFX11-TRUE16-LABEL: sample_d_cl_2d:224; GFX11-TRUE16:       ; %bb.0: ; %main_body225; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.h, v3.l226; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v1.l227; GFX11-TRUE16-NEXT:    image_sample_d_cl_g16 v[0:3], [v0, v2, v4, v5, v6], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D228; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)229; GFX11-TRUE16-NEXT:    ; return to shader part epilog230;231; GFX11-FAKE16-LABEL: sample_d_cl_2d:232; GFX11-FAKE16:       ; %bb.0: ; %main_body233; GFX11-FAKE16-NEXT:    v_perm_b32 v2, v3, v2, 0x5040100234; GFX11-FAKE16-NEXT:    v_perm_b32 v0, v1, v0, 0x5040100235; GFX11-FAKE16-NEXT:    image_sample_d_cl_g16 v[0:3], [v0, v2, v4, v5, v6], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D236; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)237; GFX11-FAKE16-NEXT:    ; return to shader part epilog238;239; GFX12-TRUE16-LABEL: sample_d_cl_2d:240; GFX12-TRUE16:       ; %bb.0: ; %main_body241; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v2.h, v3.l242; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v1.l243; GFX12-TRUE16-NEXT:    image_sample_d_cl_g16 v[0:3], [v0, v2, v4, v[5:6]], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D244; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x0245; GFX12-TRUE16-NEXT:    ; return to shader part epilog246;247; GFX12-FAKE16-LABEL: sample_d_cl_2d:248; GFX12-FAKE16:       ; %bb.0: ; %main_body249; GFX12-FAKE16-NEXT:    v_perm_b32 v2, v3, v2, 0x5040100250; GFX12-FAKE16-NEXT:    v_perm_b32 v0, v1, v0, 0x5040100251; GFX12-FAKE16-NEXT:    image_sample_d_cl_g16 v[0:3], [v0, v2, v4, v[5:6]], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D252; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x0253; GFX12-FAKE16-NEXT:    ; return to shader part epilog254main_body:255  %v = call <4 x float> @llvm.amdgcn.image.sample.d.cl.2d.v4f32.f16.f32(i32 15, half %dsdh, half %dtdh, half %dsdv, half %dtdv, float %s, float %t, float %clamp, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)256  ret <4 x float> %v257}258 259define 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, float %s, float %clamp) {260; GFX10-LABEL: sample_c_d_cl_1d:261; GFX10:       ; %bb.0: ; %main_body262; GFX10-NEXT:    image_sample_c_d_cl_g16 v[0:3], v[0:4], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D263; GFX10-NEXT:    s_waitcnt vmcnt(0)264; GFX10-NEXT:    ; return to shader part epilog265;266; GFX11-LABEL: sample_c_d_cl_1d:267; GFX11:       ; %bb.0: ; %main_body268; GFX11-NEXT:    image_sample_c_d_cl_g16 v[0:3], v[0:4], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D269; GFX11-NEXT:    s_waitcnt vmcnt(0)270; GFX11-NEXT:    ; return to shader part epilog271;272; GFX12-LABEL: sample_c_d_cl_1d:273; GFX12:       ; %bb.0: ; %main_body274; GFX12-NEXT:    image_sample_c_d_cl_g16 v[0:3], [v0, v1, v2, v[3:4]], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D275; GFX12-NEXT:    s_wait_samplecnt 0x0276; GFX12-NEXT:    ; return to shader part epilog277main_body:278  %v = call <4 x float> @llvm.amdgcn.image.sample.c.d.cl.1d.v4f32.f16.f32(i32 15, float %zcompare, half %dsdh, half %dsdv, float %s, float %clamp, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)279  ret <4 x float> %v280}281 282define 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, float %s, float %t, float %clamp) {283; GFX10-LABEL: sample_c_d_cl_2d:284; GFX10:       ; %bb.0: ; %main_body285; GFX10-NEXT:    v_mov_b32_e32 v8, v2286; GFX10-NEXT:    v_mov_b32_e32 v2, v0287; GFX10-NEXT:    v_perm_b32 v4, v4, v3, 0x5040100288; GFX10-NEXT:    v_perm_b32 v3, v8, v1, 0x5040100289; GFX10-NEXT:    image_sample_c_d_cl_g16 v[0:3], v[2:7], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D290; GFX10-NEXT:    s_waitcnt vmcnt(0)291; GFX10-NEXT:    ; return to shader part epilog292;293; GFX11-TRUE16-LABEL: sample_c_d_cl_2d:294; GFX11-TRUE16:       ; %bb.0: ; %main_body295; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v4.l296; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v2.l297; GFX11-TRUE16-NEXT:    image_sample_c_d_cl_g16 v[0:3], [v0, v1, v3, v5, v[6:7]], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D298; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)299; GFX11-TRUE16-NEXT:    ; return to shader part epilog300;301; GFX11-FAKE16-LABEL: sample_c_d_cl_2d:302; GFX11-FAKE16:       ; %bb.0: ; %main_body303; GFX11-FAKE16-NEXT:    v_perm_b32 v3, v4, v3, 0x5040100304; GFX11-FAKE16-NEXT:    v_perm_b32 v1, v2, v1, 0x5040100305; GFX11-FAKE16-NEXT:    image_sample_c_d_cl_g16 v[0:3], [v0, v1, v3, v5, v[6:7]], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D306; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)307; GFX11-FAKE16-NEXT:    ; return to shader part epilog308;309; GFX12-TRUE16-LABEL: sample_c_d_cl_2d:310; GFX12-TRUE16:       ; %bb.0: ; %main_body311; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v4.l312; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v1.h, v2.l313; GFX12-TRUE16-NEXT:    image_sample_c_d_cl_g16 v[0:3], [v0, v1, v3, v[5:7]], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D314; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x0315; GFX12-TRUE16-NEXT:    ; return to shader part epilog316;317; GFX12-FAKE16-LABEL: sample_c_d_cl_2d:318; GFX12-FAKE16:       ; %bb.0: ; %main_body319; GFX12-FAKE16-NEXT:    v_perm_b32 v3, v4, v3, 0x5040100320; GFX12-FAKE16-NEXT:    v_perm_b32 v1, v2, v1, 0x5040100321; GFX12-FAKE16-NEXT:    image_sample_c_d_cl_g16 v[0:3], [v0, v1, v3, v[5:7]], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D322; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x0323; GFX12-FAKE16-NEXT:    ; return to shader part epilog324main_body:325  %v = call <4 x float> @llvm.amdgcn.image.sample.c.d.cl.2d.v4f32.f16.f32(i32 15, float %zcompare, half %dsdh, half %dtdh, half %dsdv, half %dtdv, float %s, float %t, float %clamp, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)326  ret <4 x float> %v327}328 329define 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, float %s, float %t, float %slice) {330; GFX10-LABEL: sample_c_d_o_2darray_V1:331; GFX10:       ; %bb.0: ; %main_body332; GFX10-NEXT:    v_mov_b32_e32 v9, v3333; GFX10-NEXT:    v_mov_b32_e32 v10, v2334; GFX10-NEXT:    v_mov_b32_e32 v3, v1335; GFX10-NEXT:    v_mov_b32_e32 v2, v0336; GFX10-NEXT:    v_perm_b32 v5, v5, v4, 0x5040100337; GFX10-NEXT:    v_perm_b32 v4, v9, v10, 0x5040100338; GFX10-NEXT:    image_sample_c_d_o_g16 v0, v[2:8], s[0:7], s[8:11] dmask:0x4 dim:SQ_RSRC_IMG_2D_ARRAY339; GFX10-NEXT:    s_waitcnt vmcnt(0)340; GFX10-NEXT:    ; return to shader part epilog341;342; GFX11-TRUE16-LABEL: sample_c_d_o_2darray_V1:343; GFX11-TRUE16:       ; %bb.0: ; %main_body344; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v4.h, v5.l345; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.h, v3.l346; GFX11-TRUE16-NEXT:    image_sample_c_d_o_g16 v0, [v0, v1, v2, v4, v[6:8]], s[0:7], s[8:11] dmask:0x4 dim:SQ_RSRC_IMG_2D_ARRAY347; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)348; GFX11-TRUE16-NEXT:    ; return to shader part epilog349;350; GFX11-FAKE16-LABEL: sample_c_d_o_2darray_V1:351; GFX11-FAKE16:       ; %bb.0: ; %main_body352; GFX11-FAKE16-NEXT:    v_perm_b32 v4, v5, v4, 0x5040100353; GFX11-FAKE16-NEXT:    v_perm_b32 v2, v3, v2, 0x5040100354; GFX11-FAKE16-NEXT:    image_sample_c_d_o_g16 v0, [v0, v1, v2, v4, v[6:8]], s[0:7], s[8:11] dmask:0x4 dim:SQ_RSRC_IMG_2D_ARRAY355; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)356; GFX11-FAKE16-NEXT:    ; return to shader part epilog357;358; GFX12-TRUE16-LABEL: sample_c_d_o_2darray_V1:359; GFX12-TRUE16:       ; %bb.0: ; %main_body360; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v9, v5361; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v4.l362; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v2.h, v3.l363; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.h, v9.l364; GFX12-TRUE16-NEXT:    image_sample_c_d_o_g16 v0, [v0, v1, v2, v[5:8]], s[0:7], s[8:11] dmask:0x4 dim:SQ_RSRC_IMG_2D_ARRAY365; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x0366; GFX12-TRUE16-NEXT:    ; return to shader part epilog367;368; GFX12-FAKE16-LABEL: sample_c_d_o_2darray_V1:369; GFX12-FAKE16:       ; %bb.0: ; %main_body370; GFX12-FAKE16-NEXT:    v_perm_b32 v5, v5, v4, 0x5040100371; GFX12-FAKE16-NEXT:    v_perm_b32 v2, v3, v2, 0x5040100372; GFX12-FAKE16-NEXT:    image_sample_c_d_o_g16 v0, [v0, v1, v2, v[5:8]], s[0:7], s[8:11] dmask:0x4 dim:SQ_RSRC_IMG_2D_ARRAY373; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x0374; GFX12-FAKE16-NEXT:    ; return to shader part epilog375main_body:376  %v = call float @llvm.amdgcn.image.sample.c.d.o.2darray.f16.f32.f32(i32 4, i32 %offset, float %zcompare, half %dsdh, half %dtdh, half %dsdv, half %dtdv, float %s, float %t, float %slice, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)377  ret float %v378}379 380define 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, float %s, float %t, float %slice) {381; GFX10-LABEL: sample_c_d_o_2darray_V2:382; GFX10:       ; %bb.0: ; %main_body383; GFX10-NEXT:    v_mov_b32_e32 v9, v3384; GFX10-NEXT:    v_mov_b32_e32 v10, v2385; GFX10-NEXT:    v_mov_b32_e32 v3, v1386; GFX10-NEXT:    v_mov_b32_e32 v2, v0387; GFX10-NEXT:    v_perm_b32 v5, v5, v4, 0x5040100388; GFX10-NEXT:    v_perm_b32 v4, v9, v10, 0x5040100389; GFX10-NEXT:    image_sample_c_d_o_g16 v[0:1], v[2:8], s[0:7], s[8:11] dmask:0x6 dim:SQ_RSRC_IMG_2D_ARRAY390; GFX10-NEXT:    s_waitcnt vmcnt(0)391; GFX10-NEXT:    ; return to shader part epilog392;393; GFX11-TRUE16-LABEL: sample_c_d_o_2darray_V2:394; GFX11-TRUE16:       ; %bb.0: ; %main_body395; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v4.h, v5.l396; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.h, v3.l397; GFX11-TRUE16-NEXT:    image_sample_c_d_o_g16 v[0:1], [v0, v1, v2, v4, v[6:8]], s[0:7], s[8:11] dmask:0x6 dim:SQ_RSRC_IMG_2D_ARRAY398; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)399; GFX11-TRUE16-NEXT:    ; return to shader part epilog400;401; GFX11-FAKE16-LABEL: sample_c_d_o_2darray_V2:402; GFX11-FAKE16:       ; %bb.0: ; %main_body403; GFX11-FAKE16-NEXT:    v_perm_b32 v4, v5, v4, 0x5040100404; GFX11-FAKE16-NEXT:    v_perm_b32 v2, v3, v2, 0x5040100405; GFX11-FAKE16-NEXT:    image_sample_c_d_o_g16 v[0:1], [v0, v1, v2, v4, v[6:8]], s[0:7], s[8:11] dmask:0x6 dim:SQ_RSRC_IMG_2D_ARRAY406; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)407; GFX11-FAKE16-NEXT:    ; return to shader part epilog408;409; GFX12-TRUE16-LABEL: sample_c_d_o_2darray_V2:410; GFX12-TRUE16:       ; %bb.0: ; %main_body411; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v9, v5412; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v4.l413; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v2.h, v3.l414; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.h, v9.l415; GFX12-TRUE16-NEXT:    image_sample_c_d_o_g16 v[0:1], [v0, v1, v2, v[5:8]], s[0:7], s[8:11] dmask:0x6 dim:SQ_RSRC_IMG_2D_ARRAY416; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x0417; GFX12-TRUE16-NEXT:    ; return to shader part epilog418;419; GFX12-FAKE16-LABEL: sample_c_d_o_2darray_V2:420; GFX12-FAKE16:       ; %bb.0: ; %main_body421; GFX12-FAKE16-NEXT:    v_perm_b32 v5, v5, v4, 0x5040100422; GFX12-FAKE16-NEXT:    v_perm_b32 v2, v3, v2, 0x5040100423; GFX12-FAKE16-NEXT:    image_sample_c_d_o_g16 v[0:1], [v0, v1, v2, v[5:8]], s[0:7], s[8:11] dmask:0x6 dim:SQ_RSRC_IMG_2D_ARRAY424; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x0425; GFX12-FAKE16-NEXT:    ; return to shader part epilog426main_body:427  %v = call <2 x float> @llvm.amdgcn.image.sample.c.d.o.2darray.v2f32.f16.f32(i32 6, i32 %offset, float %zcompare, half %dsdh, half %dtdh, half %dsdv, half %dtdv, float %s, float %t, float %slice, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)428  ret <2 x float> %v429}430 431declare <4 x float> @llvm.amdgcn.image.sample.d.1d.v4f32.f16.f32(i32, half, half, float, <8 x i32>, <4 x i32>, i1, i32, i32) #1432declare <4 x float> @llvm.amdgcn.image.sample.d.2d.v4f32.f16.f32(i32, half, half, half, half, float, float, <8 x i32>, <4 x i32>, i1, i32, i32) #1433declare <4 x float> @llvm.amdgcn.image.sample.d.3d.v4f32.f16.f32(i32, half, half, half, half, half, half, float, float, float, <8 x i32>, <4 x i32>, i1, i32, i32) #1434declare <4 x float> @llvm.amdgcn.image.sample.c.d.1d.v4f32.f16.f32(i32, float, half, half, float, <8 x i32>, <4 x i32>, i1, i32, i32) #1435declare <4 x float> @llvm.amdgcn.image.sample.c.d.2d.v4f32.f16.f32(i32, float, half, half, half, half, float, float, <8 x i32>, <4 x i32>, i1, i32, i32) #1436declare <4 x float> @llvm.amdgcn.image.sample.d.cl.1d.v4f32.f16.f32(i32, half, half, float, float, <8 x i32>, <4 x i32>, i1, i32, i32) #1437declare <4 x float> @llvm.amdgcn.image.sample.d.cl.2d.v4f32.f16.f32(i32, half, half, half, half, float, float, float, <8 x i32>, <4 x i32>, i1, i32, i32) #1438declare <4 x float> @llvm.amdgcn.image.sample.c.d.cl.1d.v4f32.f16.f32(i32, float, half, half, float, float, <8 x i32>, <4 x i32>, i1, i32, i32) #1439declare <4 x float> @llvm.amdgcn.image.sample.c.d.cl.2d.v4f32.f16.f32(i32, float, half, half, half, half, float, float, float, <8 x i32>, <4 x i32>, i1, i32, i32) #1440 441declare float @llvm.amdgcn.image.sample.c.d.o.2darray.f16.f32.f32(i32, i32, float, half, half, half, half, float, float, float, <8 x i32>, <4 x i32>, i1, i32, i32) #1442declare <2 x float> @llvm.amdgcn.image.sample.c.d.o.2darray.v2f32.f16.f32(i32, i32, float, half, half, half, half, float, float, float, <8 x i32>, <4 x i32>, i1, i32, i32) #1443 444attributes #0 = { nounwind }445attributes #1 = { nounwind readonly }446attributes #2 = { nounwind readnone }447