179 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=amdgcn -mcpu=verde < %s | FileCheck -check-prefixes=VERDE %s3; RUN: llc -mtriple=amdgcn -mcpu=gfx900 < %s | FileCheck -check-prefixes=GFX6789 %s4; RUN: llc -mtriple=amdgcn -mcpu=gfx1010 < %s | FileCheck -check-prefixes=GFX10 %s5 6define amdgpu_ps <4 x float> @sample_cd_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %dsdh, float %dsdv, float %s) {7; VERDE-LABEL: sample_cd_1d:8; VERDE: ; %bb.0: ; %main_body9; VERDE-NEXT: image_sample_cd v[0:3], v[0:2], s[0:7], s[8:11] dmask:0xf10; VERDE-NEXT: s_waitcnt vmcnt(0)11; VERDE-NEXT: ; return to shader part epilog12;13; GFX6789-LABEL: sample_cd_1d:14; GFX6789: ; %bb.0: ; %main_body15; GFX6789-NEXT: image_sample_cd v[0:3], v[0:2], s[0:7], s[8:11] dmask:0xf16; GFX6789-NEXT: s_waitcnt vmcnt(0)17; GFX6789-NEXT: ; return to shader part epilog18;19; GFX10-LABEL: sample_cd_1d:20; GFX10: ; %bb.0: ; %main_body21; GFX10-NEXT: image_sample_cd v[0:3], v[0:2], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D22; GFX10-NEXT: s_waitcnt vmcnt(0)23; GFX10-NEXT: ; return to shader part epilog24main_body:25 %v = call <4 x float> @llvm.amdgcn.image.sample.cd.1d.v4f32.f32.f32(i32 15, float %dsdh, float %dsdv, float %s, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)26 ret <4 x float> %v27}28 29define amdgpu_ps <4 x float> @sample_cd_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %dsdh, float %dtdh, float %dsdv, float %dtdv, float %s, float %t) {30; VERDE-LABEL: sample_cd_2d:31; VERDE: ; %bb.0: ; %main_body32; VERDE-NEXT: image_sample_cd v[0:3], v[0:5], s[0:7], s[8:11] dmask:0xf33; VERDE-NEXT: s_waitcnt vmcnt(0)34; VERDE-NEXT: ; return to shader part epilog35;36; GFX6789-LABEL: sample_cd_2d:37; GFX6789: ; %bb.0: ; %main_body38; GFX6789-NEXT: image_sample_cd v[0:3], v[0:5], s[0:7], s[8:11] dmask:0xf39; GFX6789-NEXT: s_waitcnt vmcnt(0)40; GFX6789-NEXT: ; return to shader part epilog41;42; GFX10-LABEL: sample_cd_2d:43; GFX10: ; %bb.0: ; %main_body44; GFX10-NEXT: image_sample_cd v[0:3], v[0:5], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D45; GFX10-NEXT: s_waitcnt vmcnt(0)46; GFX10-NEXT: ; return to shader part epilog47main_body:48 %v = call <4 x float> @llvm.amdgcn.image.sample.cd.2d.v4f32.f32.f32(i32 15, float %dsdh, float %dtdh, float %dsdv, float %dtdv, float %s, float %t, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)49 ret <4 x float> %v50}51 52define amdgpu_ps <4 x float> @sample_c_cd_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %zcompare, float %dsdh, float %dsdv, float %s) {53; VERDE-LABEL: sample_c_cd_1d:54; VERDE: ; %bb.0: ; %main_body55; VERDE-NEXT: image_sample_c_cd v[0:3], v[0:3], s[0:7], s[8:11] dmask:0xf56; VERDE-NEXT: s_waitcnt vmcnt(0)57; VERDE-NEXT: ; return to shader part epilog58;59; GFX6789-LABEL: sample_c_cd_1d:60; GFX6789: ; %bb.0: ; %main_body61; GFX6789-NEXT: image_sample_c_cd v[0:3], v[0:3], s[0:7], s[8:11] dmask:0xf62; GFX6789-NEXT: s_waitcnt vmcnt(0)63; GFX6789-NEXT: ; return to shader part epilog64;65; GFX10-LABEL: sample_c_cd_1d:66; GFX10: ; %bb.0: ; %main_body67; GFX10-NEXT: image_sample_c_cd v[0:3], v[0:3], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D68; GFX10-NEXT: s_waitcnt vmcnt(0)69; GFX10-NEXT: ; return to shader part epilog70main_body:71 %v = call <4 x float> @llvm.amdgcn.image.sample.c.cd.1d.v4f32.f32.f32(i32 15, float %zcompare, float %dsdh, float %dsdv, float %s, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)72 ret <4 x float> %v73}74 75define amdgpu_ps <4 x float> @sample_c_cd_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %zcompare, float %dsdh, float %dtdh, float %dsdv, float %dtdv, float %s, float %t) {76; VERDE-LABEL: sample_c_cd_2d:77; VERDE: ; %bb.0: ; %main_body78; VERDE-NEXT: image_sample_c_cd v[0:3], v[0:6], s[0:7], s[8:11] dmask:0xf79; VERDE-NEXT: s_waitcnt vmcnt(0)80; VERDE-NEXT: ; return to shader part epilog81;82; GFX6789-LABEL: sample_c_cd_2d:83; GFX6789: ; %bb.0: ; %main_body84; GFX6789-NEXT: image_sample_c_cd v[0:3], v[0:6], s[0:7], s[8:11] dmask:0xf85; GFX6789-NEXT: s_waitcnt vmcnt(0)86; GFX6789-NEXT: ; return to shader part epilog87;88; GFX10-LABEL: sample_c_cd_2d:89; GFX10: ; %bb.0: ; %main_body90; GFX10-NEXT: image_sample_c_cd v[0:3], v[0:6], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D91; GFX10-NEXT: s_waitcnt vmcnt(0)92; GFX10-NEXT: ; return to shader part epilog93main_body:94 %v = call <4 x float> @llvm.amdgcn.image.sample.c.cd.2d.v4f32.f32.f32(i32 15, float %zcompare, float %dsdh, float %dtdh, float %dsdv, float %dtdv, float %s, float %t, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)95 ret <4 x float> %v96}97 98define amdgpu_ps <4 x float> @sample_cd_cl_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %dsdh, float %dsdv, float %s, float %clamp) {99; VERDE-LABEL: sample_cd_cl_1d:100; VERDE: ; %bb.0: ; %main_body101; VERDE-NEXT: image_sample_cd_cl v[0:3], v[0:3], s[0:7], s[8:11] dmask:0xf102; VERDE-NEXT: s_waitcnt vmcnt(0)103; VERDE-NEXT: ; return to shader part epilog104;105; GFX6789-LABEL: sample_cd_cl_1d:106; GFX6789: ; %bb.0: ; %main_body107; GFX6789-NEXT: image_sample_cd_cl v[0:3], v[0:3], s[0:7], s[8:11] dmask:0xf108; GFX6789-NEXT: s_waitcnt vmcnt(0)109; GFX6789-NEXT: ; return to shader part epilog110;111; GFX10-LABEL: sample_cd_cl_1d:112; GFX10: ; %bb.0: ; %main_body113; GFX10-NEXT: image_sample_cd_cl v[0:3], v[0:3], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D114; GFX10-NEXT: s_waitcnt vmcnt(0)115; GFX10-NEXT: ; return to shader part epilog116main_body:117 %v = call <4 x float> @llvm.amdgcn.image.sample.cd.cl.1d.v4f32.f32.f32(i32 15, float %dsdh, float %dsdv, float %s, float %clamp, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)118 ret <4 x float> %v119}120 121define amdgpu_ps <4 x float> @sample_cd_cl_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %dsdh, float %dtdh, float %dsdv, float %dtdv, float %s, float %t, float %clamp) {122; VERDE-LABEL: sample_cd_cl_2d:123; VERDE: ; %bb.0: ; %main_body124; VERDE-NEXT: image_sample_cd_cl v[0:3], v[0:6], s[0:7], s[8:11] dmask:0xf125; VERDE-NEXT: s_waitcnt vmcnt(0)126; VERDE-NEXT: ; return to shader part epilog127;128; GFX6789-LABEL: sample_cd_cl_2d:129; GFX6789: ; %bb.0: ; %main_body130; GFX6789-NEXT: image_sample_cd_cl v[0:3], v[0:6], s[0:7], s[8:11] dmask:0xf131; GFX6789-NEXT: s_waitcnt vmcnt(0)132; GFX6789-NEXT: ; return to shader part epilog133;134; GFX10-LABEL: sample_cd_cl_2d:135; GFX10: ; %bb.0: ; %main_body136; GFX10-NEXT: image_sample_cd_cl v[0:3], v[0:6], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_2D137; GFX10-NEXT: s_waitcnt vmcnt(0)138; GFX10-NEXT: ; return to shader part epilog139main_body:140 %v = call <4 x float> @llvm.amdgcn.image.sample.cd.cl.2d.v4f32.f32.f32(i32 15, float %dsdh, float %dtdh, float %dsdv, float %dtdv, float %s, float %t, float %clamp, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)141 ret <4 x float> %v142}143 144define amdgpu_ps <4 x float> @sample_c_cd_cl_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %zcompare, float %dsdh, float %dsdv, float %s, float %clamp) {145; VERDE-LABEL: sample_c_cd_cl_1d:146; VERDE: ; %bb.0: ; %main_body147; VERDE-NEXT: image_sample_c_cd_cl v[0:3], v[0:4], s[0:7], s[8:11] dmask:0xf148; VERDE-NEXT: s_waitcnt vmcnt(0)149; VERDE-NEXT: ; return to shader part epilog150;151; GFX6789-LABEL: sample_c_cd_cl_1d:152; GFX6789: ; %bb.0: ; %main_body153; GFX6789-NEXT: image_sample_c_cd_cl v[0:3], v[0:4], s[0:7], s[8:11] dmask:0xf154; GFX6789-NEXT: s_waitcnt vmcnt(0)155; GFX6789-NEXT: ; return to shader part epilog156;157; GFX10-LABEL: sample_c_cd_cl_1d:158; GFX10: ; %bb.0: ; %main_body159; GFX10-NEXT: image_sample_c_cd_cl v[0:3], v[0:4], s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D160; GFX10-NEXT: s_waitcnt vmcnt(0)161; GFX10-NEXT: ; return to shader part epilog162main_body:163 %v = call <4 x float> @llvm.amdgcn.image.sample.c.cd.cl.1d.v4f32.f32.f32(i32 15, float %zcompare, float %dsdh, float %dsdv, float %s, float %clamp, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)164 ret <4 x float> %v165}166 167declare <4 x float> @llvm.amdgcn.image.sample.cd.1d.v4f32.f32.f32(i32, float, float, float, <8 x i32>, <4 x i32>, i1, i32, i32) #1168declare <4 x float> @llvm.amdgcn.image.sample.cd.2d.v4f32.f32.f32(i32, float, float, float, float, float, float, <8 x i32>, <4 x i32>, i1, i32, i32) #1169declare <4 x float> @llvm.amdgcn.image.sample.c.cd.1d.v4f32.f32.f32(i32, float, float, float, float, <8 x i32>, <4 x i32>, i1, i32, i32) #1170declare <4 x float> @llvm.amdgcn.image.sample.c.cd.2d.v4f32.f32.f32(i32, float, float, float, float, float, float, float, <8 x i32>, <4 x i32>, i1, i32, i32) #1171declare <4 x float> @llvm.amdgcn.image.sample.cd.cl.1d.v4f32.f32.f32(i32, float, float, float, float, <8 x i32>, <4 x i32>, i1, i32, i32) #1172declare <4 x float> @llvm.amdgcn.image.sample.cd.cl.2d.v4f32.f32.f32(i32, float, float, float, float, float, float, float, <8 x i32>, <4 x i32>, i1, i32, i32) #1173declare <4 x float> @llvm.amdgcn.image.sample.c.cd.cl.1d.v4f32.f32.f32(i32, float, float, float, float, float, <8 x i32>, <4 x i32>, i1, i32, i32) #1174declare <4 x float> @llvm.amdgcn.image.sample.c.cd.cl.2d.v4f32.f32.f32(i32, float, float, float, float, float, float, float, float, <8 x i32>, <4 x i32>, i1, i32, i32) #1175 176attributes #0 = { nounwind }177attributes #1 = { nounwind readonly }178attributes #2 = { nounwind readnone }179