brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.6 KiB · 96f084e Raw
156 lines · plain
1; RUN: llc -mtriple=amdgcn -mcpu=gfx900 < %s | FileCheck -check-prefixes=GCN,GFX9 %s2; RUN: llc -mtriple=amdgcn -mcpu=gfx1010 < %s | FileCheck -check-prefixes=GCN,GFX10 %s3; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 < %s | FileCheck -check-prefixes=GCN,GFX10 %s4; RUN: llc -mtriple=amdgcn -mcpu=gfx1200 < %s | FileCheck -check-prefixes=GCN,GFX12 %s5 6; GCN-LABEL: {{^}}load.f16.1d:7; GFX9: image_load v0, v0, s[0:7] dmask:0x1 unorm a16 d168; GFX10: image_load v0, v0, s[0:7] dmask:0x1 dim:SQ_RSRC_IMG_1D unorm a16 d169; GFX12: image_load v0, v0, s[0:7] dmask:0x1 dim:SQ_RSRC_IMG_1D a16 d1610define amdgpu_ps <4 x half> @load.f16.1d(<8 x i32> inreg %rsrc, <2 x i16> %coords) {11main_body:12  %x = extractelement <2 x i16> %coords, i32 013  %v = call <4 x half> @llvm.amdgcn.image.load.1d.v4f16.i16(i32 1, i16 %x, <8 x i32> %rsrc, i32 0, i32 0)14  ret <4 x half> %v15}16 17; GCN-LABEL: {{^}}load.v2f16.1d:18; GFX9: image_load v0, v0, s[0:7] dmask:0x3 unorm a16 d1619; GFX10: image_load v0, v0, s[0:7] dmask:0x3 dim:SQ_RSRC_IMG_1D unorm a16 d1620; GFX12: image_load v0, v0, s[0:7] dmask:0x3 dim:SQ_RSRC_IMG_1D a16 d1621define amdgpu_ps <4 x half> @load.v2f16.1d(<8 x i32> inreg %rsrc, <2 x i16> %coords) {22main_body:23  %x = extractelement <2 x i16> %coords, i32 024  %v = call <4 x half> @llvm.amdgcn.image.load.1d.v4f16.i16(i32 3, i16 %x, <8 x i32> %rsrc, i32 0, i32 0)25  ret <4 x half> %v26}27 28; GCN-LABEL: {{^}}load.v3f16.1d:29; GFX9: image_load v[0:1], v0, s[0:7] dmask:0x7 unorm a16 d1630; GFX10: image_load v[0:1], v0, s[0:7] dmask:0x7 dim:SQ_RSRC_IMG_1D unorm a16 d1631; GFX12: image_load v[0:1], v0, s[0:7] dmask:0x7 dim:SQ_RSRC_IMG_1D a16 d1632define amdgpu_ps <4 x half> @load.v3f16.1d(<8 x i32> inreg %rsrc, <2 x i16> %coords) {33main_body:34  %x = extractelement <2 x i16> %coords, i32 035  %v = call <4 x half> @llvm.amdgcn.image.load.1d.v4f16.i16(i32 7, i16 %x, <8 x i32> %rsrc, i32 0, i32 0)36  ret <4 x half> %v37}38 39; GCN-LABEL: {{^}}load.v4f16.1d:40; GFX9: image_load v[0:1], v0, s[0:7] dmask:0xf unorm a16 d1641; GFX10: image_load v[0:1], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm a16 d1642; GFX12: image_load v[0:1], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D a16 d1643define amdgpu_ps <4 x half> @load.v4f16.1d(<8 x i32> inreg %rsrc, <2 x i16> %coords) {44main_body:45  %x = extractelement <2 x i16> %coords, i32 046  %v = call <4 x half> @llvm.amdgcn.image.load.1d.v4f16.i16(i32 15, i16 %x, <8 x i32> %rsrc, i32 0, i32 0)47  ret <4 x half> %v48}49 50; GCN-LABEL: {{^}}load.f16.2d:51; GFX9: image_load v0, v0, s[0:7] dmask:0x1 unorm a16 d1652; GFX10: image_load v0, v0, s[0:7] dmask:0x1 dim:SQ_RSRC_IMG_2D unorm a16 d1653; GFX12: image_load v0, v0, s[0:7] dmask:0x1 dim:SQ_RSRC_IMG_2D a16 d1654define amdgpu_ps <4 x half> @load.f16.2d(<8 x i32> inreg %rsrc, <2 x i16> %coords) {55main_body:56  %x = extractelement <2 x i16> %coords, i32 057  %y = extractelement <2 x i16> %coords, i32 158  %v = call <4 x half> @llvm.amdgcn.image.load.2d.v4f16.i16(i32 1, i16 %x, i16 %y, <8 x i32> %rsrc, i32 0, i32 0)59  ret <4 x half> %v60}61 62; GCN-LABEL: {{^}}load.v2f16.2d:63; GFX9: image_load v0, v0, s[0:7] dmask:0x3 unorm a16 d1664; GFX10: image_load v0, v0, s[0:7] dmask:0x3 dim:SQ_RSRC_IMG_2D unorm a16 d1665; GFX12: image_load v0, v0, s[0:7] dmask:0x3 dim:SQ_RSRC_IMG_2D a16 d1666define amdgpu_ps <4 x half> @load.v2f16.2d(<8 x i32> inreg %rsrc, <2 x i16> %coords) {67main_body:68  %x = extractelement <2 x i16> %coords, i32 069  %y = extractelement <2 x i16> %coords, i32 170  %v = call <4 x half> @llvm.amdgcn.image.load.2d.v4f16.i16(i32 3, i16 %x, i16 %y, <8 x i32> %rsrc, i32 0, i32 0)71  ret <4 x half> %v72}73 74; GCN-LABEL: {{^}}load.v3f16.2d:75; GFX9: image_load v[0:1], v0, s[0:7] dmask:0x7 unorm a16 d1676; GFX10: image_load v[0:1], v0, s[0:7] dmask:0x7 dim:SQ_RSRC_IMG_2D unorm a16 d1677; GFX12: image_load v[0:1], v0, s[0:7] dmask:0x7 dim:SQ_RSRC_IMG_2D a16 d1678define amdgpu_ps <4 x half> @load.v3f16.2d(<8 x i32> inreg %rsrc, <2 x i16> %coords) {79main_body:80  %x = extractelement <2 x i16> %coords, i32 081  %y = extractelement <2 x i16> %coords, i32 182  %v = call <4 x half> @llvm.amdgcn.image.load.2d.v4f16.i16(i32 7, i16 %x, i16 %y, <8 x i32> %rsrc, i32 0, i32 0)83  ret <4 x half> %v84}85 86; GCN-LABEL: {{^}}load.v4f16.2d:87; GFX9: image_load v[0:1], v0, s[0:7] dmask:0xf unorm a16 d1688; GFX10: image_load v[0:1], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D unorm a16 d1689; GFX12: image_load v[0:1], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D a16 d1690define amdgpu_ps <4 x half> @load.v4f16.2d(<8 x i32> inreg %rsrc, <2 x i16> %coords) {91main_body:92  %x = extractelement <2 x i16> %coords, i32 093  %y = extractelement <2 x i16> %coords, i32 194  %v = call <4 x half> @llvm.amdgcn.image.load.2d.v4f16.i16(i32 15, i16 %x, i16 %y, <8 x i32> %rsrc, i32 0, i32 0)95  ret <4 x half> %v96}97 98; GCN-LABEL: {{^}}load.f16.3d:99; GFX9: image_load v0, v[0:1], s[0:7] dmask:0x1 unorm a16 d16100; GFX10: image_load v0, v[0:1], s[0:7] dmask:0x1 dim:SQ_RSRC_IMG_3D unorm a16 d16101; GFX12: image_load v0, [v0, v1], s[0:7] dmask:0x1 dim:SQ_RSRC_IMG_3D a16 d16102define amdgpu_ps <4 x half> @load.f16.3d(<8 x i32> inreg %rsrc, <2 x i16> %coords_lo, <2 x i16> %coords_hi) {103main_body:104  %x = extractelement <2 x i16> %coords_lo, i32 0105  %y = extractelement <2 x i16> %coords_lo, i32 1106  %z = extractelement <2 x i16> %coords_hi, i32 0107  %v = call <4 x half> @llvm.amdgcn.image.load.3d.v4f16.i16(i32 1, i16 %x, i16 %y, i16 %z, <8 x i32> %rsrc, i32 0, i32 0)108  ret <4 x half> %v109}110 111; GCN-LABEL: {{^}}load.v2f16.3d:112; GFX9: image_load v0, v[0:1], s[0:7] dmask:0x3 unorm a16 d16113; GFX10: image_load v0, v[0:1], s[0:7] dmask:0x3 dim:SQ_RSRC_IMG_3D unorm a16 d16114; GFX12: image_load v0, [v0, v1], s[0:7] dmask:0x3 dim:SQ_RSRC_IMG_3D a16 d16115define amdgpu_ps <4 x half> @load.v2f16.3d(<8 x i32> inreg %rsrc, <2 x i16> %coords_lo, <2 x i16> %coords_hi) {116main_body:117  %x = extractelement <2 x i16> %coords_lo, i32 0118  %y = extractelement <2 x i16> %coords_lo, i32 1119  %z = extractelement <2 x i16> %coords_hi, i32 0120  %v = call <4 x half> @llvm.amdgcn.image.load.3d.v4f16.i16(i32 3, i16 %x, i16 %y, i16 %z, <8 x i32> %rsrc, i32 0, i32 0)121  ret <4 x half> %v122}123 124; GCN-LABEL: {{^}}load.v3f16.3d:125; GFX9: image_load v[0:1], v[0:1], s[0:7] dmask:0x7 unorm a16 d16126; GFX10: image_load v[0:1], v[0:1], s[0:7] dmask:0x7 dim:SQ_RSRC_IMG_3D unorm a16 d16127; GFX12: image_load v[0:1], [v0, v1], s[0:7] dmask:0x7 dim:SQ_RSRC_IMG_3D a16 d16128define amdgpu_ps <4 x half> @load.v3f16.3d(<8 x i32> inreg %rsrc, <2 x i16> %coords_lo, <2 x i16> %coords_hi) {129main_body:130  %x = extractelement <2 x i16> %coords_lo, i32 0131  %y = extractelement <2 x i16> %coords_lo, i32 1132  %z = extractelement <2 x i16> %coords_hi, i32 0133  %v = call <4 x half> @llvm.amdgcn.image.load.3d.v4f16.i16(i32 7, i16 %x, i16 %y, i16 %z, <8 x i32> %rsrc, i32 0, i32 0)134  ret <4 x half> %v135}136 137; GCN-LABEL: {{^}}load.v4f16.3d:138; GFX9: image_load v[0:1], v[0:1], s[0:7] dmask:0xf unorm a16 d16139; GFX10: image_load v[0:1], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_3D unorm a16 d16140; GFX12: image_load v[0:1], [v0, v1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_3D a16 d16141define amdgpu_ps <4 x half> @load.v4f16.3d(<8 x i32> inreg %rsrc, <2 x i16> %coords_lo, <2 x i16> %coords_hi) {142main_body:143  %x = extractelement <2 x i16> %coords_lo, i32 0144  %y = extractelement <2 x i16> %coords_lo, i32 1145  %z = extractelement <2 x i16> %coords_hi, i32 0146  %v = call <4 x half> @llvm.amdgcn.image.load.3d.v4f16.i16(i32 15, i16 %x, i16 %y, i16 %z, <8 x i32> %rsrc, i32 0, i32 0)147  ret <4 x half> %v148}149 150declare <4 x half> @llvm.amdgcn.image.load.1d.v4f16.i16(i32, i16, <8 x i32>, i32, i32) #2151declare <4 x half> @llvm.amdgcn.image.load.2d.v4f16.i16(i32, i16, i16, <8 x i32>, i32, i32) #2152declare <4 x half> @llvm.amdgcn.image.load.3d.v4f16.i16(i32, i16, i16, i16, <8 x i32>, i32, i32) #2153 154attributes #0 = { nounwind }155attributes #1 = { nounwind readonly }156