1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc -march=amdgcn -mcpu=gfx900 -show-mc-encoding < %s | FileCheck -check-prefixes=GFX9 %s 3; RUN: llc -march=amdgcn -mcpu=gfx1010 -show-mc-encoding < %s | FileCheck -check-prefixes=GFX10 %s 4; RUN: llc -march=amdgcn -mcpu=gfx1100 -show-mc-encoding < %s | FileCheck -check-prefixes=GFX11 %s 5 6define amdgpu_ps <4 x float> @load_1d(<8 x i32> inreg %rsrc, <2 x i16> %coords) { 7; GFX9-LABEL: load_1d: 8; GFX9: ; %bb.0: ; %main_body 9; GFX9-NEXT: image_load v[0:3], v0, s[0:7] dmask:0xf unorm a16 ; encoding: [0x00,0x9f,0x00,0xf0,0x00,0x00,0x00,0x00] 10; GFX9-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf] 11; GFX9-NEXT: ; return to shader part epilog 12; 13; GFX10-LABEL: load_1d: 14; GFX10: ; %bb.0: ; %main_body 15; GFX10-NEXT: image_load v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm a16 ; encoding: [0x00,0x1f,0x00,0xf0,0x00,0x00,0x00,0x40] 16; GFX10-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf] 17; GFX10-NEXT: ; return to shader part epilog 18; 19; GFX11-LABEL: load_1d: 20; GFX11: ; %bb.0: ; %main_body 21; GFX11-NEXT: image_load v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm a16 ; encoding: [0x80,0x0f,0x01,0xf0,0x00,0x00,0x00,0x00] 22; GFX11-NEXT: s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf] 23; GFX11-NEXT: ; return to shader part epilog 24main_body: 25 %s = extractelement <2 x i16> %coords, i32 0 26 %v = call <4 x float> @llvm.amdgcn.image.load.1d.v4f32.i16(i32 15, i16 %s, <8 x i32> %rsrc, i32 0, i32 0) 27 ret <4 x float> %v 28} 29 30define amdgpu_ps <4 x float> @load_2d(<8 x i32> inreg %rsrc, <2 x i16> %coords) { 31; GFX9-LABEL: load_2d: 32; GFX9: ; %bb.0: ; %main_body 33; GFX9-NEXT: image_load v[0:3], v0, s[0:7] dmask:0xf unorm a16 ; encoding: [0x00,0x9f,0x00,0xf0,0x00,0x00,0x00,0x00] 34; GFX9-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf] 35; GFX9-NEXT: ; return to shader part epilog 36; 37; GFX10-LABEL: load_2d: 38; GFX10: ; %bb.0: ; %main_body 39; GFX10-NEXT: image_load v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D unorm a16 ; encoding: [0x08,0x1f,0x00,0xf0,0x00,0x00,0x00,0x40] 40; GFX10-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf] 41; GFX10-NEXT: ; return to shader part epilog 42; 43; GFX11-LABEL: load_2d: 44; GFX11: ; %bb.0: ; %main_body 45; GFX11-NEXT: image_load v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D unorm a16 ; encoding: [0x84,0x0f,0x01,0xf0,0x00,0x00,0x00,0x00] 46; GFX11-NEXT: s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf] 47; GFX11-NEXT: ; return to shader part epilog 48main_body: 49 %s = extractelement <2 x i16> %coords, i32 0 50 %t = extractelement <2 x i16> %coords, i32 1 51 %v = call <4 x float> @llvm.amdgcn.image.load.2d.v4f32.i16(i32 15, i16 %s, i16 %t, <8 x i32> %rsrc, i32 0, i32 0) 52 ret <4 x float> %v 53} 54 55define amdgpu_ps <4 x float> @load_3d(<8 x i32> inreg %rsrc, <2 x i16> %coords_lo, <2 x i16> %coords_hi) { 56; GFX9-LABEL: load_3d: 57; GFX9: ; %bb.0: ; %main_body 58; GFX9-NEXT: image_load v[0:3], v[0:1], s[0:7] dmask:0xf unorm a16 ; encoding: [0x00,0x9f,0x00,0xf0,0x00,0x00,0x00,0x00] 59; GFX9-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf] 60; GFX9-NEXT: ; return to shader part epilog 61; 62; GFX10-LABEL: load_3d: 63; GFX10: ; %bb.0: ; %main_body 64; GFX10-NEXT: image_load v[0:3], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_3D unorm a16 ; encoding: [0x10,0x1f,0x00,0xf0,0x00,0x00,0x00,0x40] 65; GFX10-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf] 66; GFX10-NEXT: ; return to shader part epilog 67; 68; GFX11-LABEL: load_3d: 69; GFX11: ; %bb.0: ; %main_body 70; GFX11-NEXT: image_load v[0:3], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_3D unorm a16 ; encoding: [0x88,0x0f,0x01,0xf0,0x00,0x00,0x00,0x00] 71; GFX11-NEXT: s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf] 72; GFX11-NEXT: ; return to shader part epilog 73main_body: 74 %s = extractelement <2 x i16> %coords_lo, i32 0 75 %t = extractelement <2 x i16> %coords_lo, i32 1 76 %r = extractelement <2 x i16> %coords_hi, i32 0 77 %v = call <4 x float> @llvm.amdgcn.image.load.3d.v4f32.i16(i32 15, i16 %s, i16 %t, i16 %r, <8 x i32> %rsrc, i32 0, i32 0) 78 ret <4 x float> %v 79} 80 81define amdgpu_ps <4 x float> @load_cube(<8 x i32> inreg %rsrc, <2 x i16> %coords_lo, <2 x i16> %coords_hi) { 82; GFX9-LABEL: load_cube: 83; GFX9: ; %bb.0: ; %main_body 84; GFX9-NEXT: image_load v[0:3], v[0:1], s[0:7] dmask:0xf unorm a16 da ; encoding: [0x00,0xdf,0x00,0xf0,0x00,0x00,0x00,0x00] 85; GFX9-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf] 86; GFX9-NEXT: ; return to shader part epilog 87; 88; GFX10-LABEL: load_cube: 89; GFX10: ; %bb.0: ; %main_body 90; GFX10-NEXT: image_load v[0:3], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_CUBE unorm a16 ; encoding: [0x18,0x1f,0x00,0xf0,0x00,0x00,0x00,0x40] 91; GFX10-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf] 92; GFX10-NEXT: ; return to shader part epilog 93; 94; GFX11-LABEL: load_cube: 95; GFX11: ; %bb.0: ; %main_body 96; GFX11-NEXT: image_load v[0:3], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_CUBE unorm a16 ; encoding: [0x8c,0x0f,0x01,0xf0,0x00,0x00,0x00,0x00] 97; GFX11-NEXT: s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf] 98; GFX11-NEXT: ; return to shader part epilog 99main_body: 100 %s = extractelement <2 x i16> %coords_lo, i32 0 101 %t = extractelement <2 x i16> %coords_lo, i32 1 102 %slice = extractelement <2 x i16> %coords_hi, i32 0 103 %v = call <4 x float> @llvm.amdgcn.image.load.cube.v4f32.i16(i32 15, i16 %s, i16 %t, i16 %slice, <8 x i32> %rsrc, i32 0, i32 0) 104 ret <4 x float> %v 105} 106 107define amdgpu_ps <4 x float> @load_1darray(<8 x i32> inreg %rsrc, <2 x i16> %coords) { 108; GFX9-LABEL: load_1darray: 109; GFX9: ; %bb.0: ; %main_body 110; GFX9-NEXT: image_load v[0:3], v0, s[0:7] dmask:0xf unorm a16 da ; encoding: [0x00,0xdf,0x00,0xf0,0x00,0x00,0x00,0x00] 111; GFX9-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf] 112; GFX9-NEXT: ; return to shader part epilog 113; 114; GFX10-LABEL: load_1darray: 115; GFX10: ; %bb.0: ; %main_body 116; GFX10-NEXT: image_load v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D_ARRAY unorm a16 ; encoding: [0x20,0x1f,0x00,0xf0,0x00,0x00,0x00,0x40] 117; GFX10-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf] 118; GFX10-NEXT: ; return to shader part epilog 119; 120; GFX11-LABEL: load_1darray: 121; GFX11: ; %bb.0: ; %main_body 122; GFX11-NEXT: image_load v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D_ARRAY unorm a16 ; encoding: [0x90,0x0f,0x01,0xf0,0x00,0x00,0x00,0x00] 123; GFX11-NEXT: s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf] 124; GFX11-NEXT: ; return to shader part epilog 125main_body: 126 %s = extractelement <2 x i16> %coords, i32 0 127 %slice = extractelement <2 x i16> %coords, i32 1 128 %v = call <4 x float> @llvm.amdgcn.image.load.1darray.v4f32.i16(i32 15, i16 %s, i16 %slice, <8 x i32> %rsrc, i32 0, i32 0) 129 ret <4 x float> %v 130} 131 132define amdgpu_ps <4 x float> @load_2darray(<8 x i32> inreg %rsrc, <2 x i16> %coords_lo, <2 x i16> %coords_hi) { 133; GFX9-LABEL: load_2darray: 134; GFX9: ; %bb.0: ; %main_body 135; GFX9-NEXT: image_load v[0:3], v[0:1], s[0:7] dmask:0xf unorm a16 da ; encoding: [0x00,0xdf,0x00,0xf0,0x00,0x00,0x00,0x00] 136; GFX9-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf] 137; GFX9-NEXT: ; return to shader part epilog 138; 139; GFX10-LABEL: load_2darray: 140; GFX10: ; %bb.0: ; %main_body 141; GFX10-NEXT: image_load v[0:3], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_ARRAY unorm a16 ; encoding: [0x28,0x1f,0x00,0xf0,0x00,0x00,0x00,0x40] 142; GFX10-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf] 143; GFX10-NEXT: ; return to shader part epilog 144; 145; GFX11-LABEL: load_2darray: 146; GFX11: ; %bb.0: ; %main_body 147; GFX11-NEXT: image_load v[0:3], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_ARRAY unorm a16 ; encoding: [0x94,0x0f,0x01,0xf0,0x00,0x00,0x00,0x00] 148; GFX11-NEXT: s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf] 149; GFX11-NEXT: ; return to shader part epilog 150main_body: 151 %s = extractelement <2 x i16> %coords_lo, i32 0 152 %t = extractelement <2 x i16> %coords_lo, i32 1 153 %slice = extractelement <2 x i16> %coords_hi, i32 0 154 %v = call <4 x float> @llvm.amdgcn.image.load.2darray.v4f32.i16(i32 15, i16 %s, i16 %t, i16 %slice, <8 x i32> %rsrc, i32 0, i32 0) 155 ret <4 x float> %v 156} 157 158define amdgpu_ps <4 x float> @load_2dmsaa(<8 x i32> inreg %rsrc, <2 x i16> %coords_lo, <2 x i16> %coords_hi) { 159; GFX9-LABEL: load_2dmsaa: 160; GFX9: ; %bb.0: ; %main_body 161; GFX9-NEXT: image_load v[0:3], v[0:1], s[0:7] dmask:0xf unorm a16 ; encoding: [0x00,0x9f,0x00,0xf0,0x00,0x00,0x00,0x00] 162; GFX9-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf] 163; GFX9-NEXT: ; return to shader part epilog 164; 165; GFX10-LABEL: load_2dmsaa: 166; GFX10: ; %bb.0: ; %main_body 167; GFX10-NEXT: image_load v[0:3], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA unorm a16 ; encoding: [0x30,0x1f,0x00,0xf0,0x00,0x00,0x00,0x40] 168; GFX10-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf] 169; GFX10-NEXT: ; return to shader part epilog 170; 171; GFX11-LABEL: load_2dmsaa: 172; GFX11: ; %bb.0: ; %main_body 173; GFX11-NEXT: image_load v[0:3], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA unorm a16 ; encoding: [0x98,0x0f,0x01,0xf0,0x00,0x00,0x00,0x00] 174; GFX11-NEXT: s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf] 175; GFX11-NEXT: ; return to shader part epilog 176main_body: 177 %s = extractelement <2 x i16> %coords_lo, i32 0 178 %t = extractelement <2 x i16> %coords_lo, i32 1 179 %fragid = extractelement <2 x i16> %coords_hi, i32 0 180 %v = call <4 x float> @llvm.amdgcn.image.load.2dmsaa.v4f32.i16(i32 15, i16 %s, i16 %t, i16 %fragid, <8 x i32> %rsrc, i32 0, i32 0) 181 ret <4 x float> %v 182} 183 184define amdgpu_ps <4 x float> @load_2darraymsaa(<8 x i32> inreg %rsrc, <2 x i16> %coords_lo, <2 x i16> %coords_hi) { 185; GFX9-LABEL: load_2darraymsaa: 186; GFX9: ; %bb.0: ; %main_body 187; GFX9-NEXT: image_load v[0:3], v[0:1], s[0:7] dmask:0xf unorm a16 da ; encoding: [0x00,0xdf,0x00,0xf0,0x00,0x00,0x00,0x00] 188; GFX9-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf] 189; GFX9-NEXT: ; return to shader part epilog 190; 191; GFX10-LABEL: load_2darraymsaa: 192; GFX10: ; %bb.0: ; %main_body 193; GFX10-NEXT: image_load v[0:3], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA_ARRAY unorm a16 ; encoding: [0x38,0x1f,0x00,0xf0,0x00,0x00,0x00,0x40] 194; GFX10-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf] 195; GFX10-NEXT: ; return to shader part epilog 196; 197; GFX11-LABEL: load_2darraymsaa: 198; GFX11: ; %bb.0: ; %main_body 199; GFX11-NEXT: image_load v[0:3], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA_ARRAY unorm a16 ; encoding: [0x9c,0x0f,0x01,0xf0,0x00,0x00,0x00,0x00] 200; GFX11-NEXT: s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf] 201; GFX11-NEXT: ; return to shader part epilog 202main_body: 203 %s = extractelement <2 x i16> %coords_lo, i32 0 204 %t = extractelement <2 x i16> %coords_lo, i32 1 205 %slice = extractelement <2 x i16> %coords_hi, i32 0 206 %fragid = extractelement <2 x i16> %coords_hi, i32 1 207 %v = call <4 x float> @llvm.amdgcn.image.load.2darraymsaa.v4f32.i16(i32 15, i16 %s, i16 %t, i16 %slice, i16 %fragid, <8 x i32> %rsrc, i32 0, i32 0) 208 ret <4 x float> %v 209} 210 211define amdgpu_ps <4 x float> @load_mip_1d(<8 x i32> inreg %rsrc, <2 x i16> %coords) { 212; GFX9-LABEL: load_mip_1d: 213; GFX9: ; %bb.0: ; %main_body 214; GFX9-NEXT: image_load_mip v[0:3], v0, s[0:7] dmask:0xf unorm a16 ; encoding: [0x00,0x9f,0x04,0xf0,0x00,0x00,0x00,0x00] 215; GFX9-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf] 216; GFX9-NEXT: ; return to shader part epilog 217; 218; GFX10-LABEL: load_mip_1d: 219; GFX10: ; %bb.0: ; %main_body 220; GFX10-NEXT: image_load_mip v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm a16 ; encoding: [0x00,0x1f,0x04,0xf0,0x00,0x00,0x00,0x40] 221; GFX10-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf] 222; GFX10-NEXT: ; return to shader part epilog 223; 224; GFX11-LABEL: load_mip_1d: 225; GFX11: ; %bb.0: ; %main_body 226; GFX11-NEXT: image_load_mip v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm a16 ; encoding: [0x80,0x0f,0x05,0xf0,0x00,0x00,0x00,0x00] 227; GFX11-NEXT: s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf] 228; GFX11-NEXT: ; return to shader part epilog 229main_body: 230 %s = extractelement <2 x i16> %coords, i32 0 231 %mip = extractelement <2 x i16> %coords, i32 1 232 %v = call <4 x float> @llvm.amdgcn.image.load.mip.1d.v4f32.i16(i32 15, i16 %s, i16 %mip, <8 x i32> %rsrc, i32 0, i32 0) 233 ret <4 x float> %v 234} 235 236define amdgpu_ps <4 x float> @load_mip_2d(<8 x i32> inreg %rsrc, <2 x i16> %coords_lo, <2 x i16> %coords_hi) { 237; GFX9-LABEL: load_mip_2d: 238; GFX9: ; %bb.0: ; %main_body 239; GFX9-NEXT: image_load_mip v[0:3], v[0:1], s[0:7] dmask:0xf unorm a16 ; encoding: [0x00,0x9f,0x04,0xf0,0x00,0x00,0x00,0x00] 240; GFX9-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf] 241; GFX9-NEXT: ; return to shader part epilog 242; 243; GFX10-LABEL: load_mip_2d: 244; GFX10: ; %bb.0: ; %main_body 245; GFX10-NEXT: image_load_mip v[0:3], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D unorm a16 ; encoding: [0x08,0x1f,0x04,0xf0,0x00,0x00,0x00,0x40] 246; GFX10-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf] 247; GFX10-NEXT: ; return to shader part epilog 248; 249; GFX11-LABEL: load_mip_2d: 250; GFX11: ; %bb.0: ; %main_body 251; GFX11-NEXT: image_load_mip v[0:3], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D unorm a16 ; encoding: [0x84,0x0f,0x05,0xf0,0x00,0x00,0x00,0x00] 252; GFX11-NEXT: s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf] 253; GFX11-NEXT: ; return to shader part epilog 254main_body: 255 %s = extractelement <2 x i16> %coords_lo, i32 0 256 %t = extractelement <2 x i16> %coords_lo, i32 1 257 %mip = extractelement <2 x i16> %coords_hi, i32 0 258 %v = call <4 x float> @llvm.amdgcn.image.load.mip.2d.v4f32.i16(i32 15, i16 %s, i16 %t, i16 %mip, <8 x i32> %rsrc, i32 0, i32 0) 259 ret <4 x float> %v 260} 261 262define amdgpu_ps <4 x float> @load_mip_3d(<8 x i32> inreg %rsrc, <2 x i16> %coords_lo, <2 x i16> %coords_hi) { 263; GFX9-LABEL: load_mip_3d: 264; GFX9: ; %bb.0: ; %main_body 265; GFX9-NEXT: image_load_mip v[0:3], v[0:1], s[0:7] dmask:0xf unorm a16 ; encoding: [0x00,0x9f,0x04,0xf0,0x00,0x00,0x00,0x00] 266; GFX9-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf] 267; GFX9-NEXT: ; return to shader part epilog 268; 269; GFX10-LABEL: load_mip_3d: 270; GFX10: ; %bb.0: ; %main_body 271; GFX10-NEXT: image_load_mip v[0:3], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_3D unorm a16 ; encoding: [0x10,0x1f,0x04,0xf0,0x00,0x00,0x00,0x40] 272; GFX10-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf] 273; GFX10-NEXT: ; return to shader part epilog 274; 275; GFX11-LABEL: load_mip_3d: 276; GFX11: ; %bb.0: ; %main_body 277; GFX11-NEXT: image_load_mip v[0:3], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_3D unorm a16 ; encoding: [0x88,0x0f,0x05,0xf0,0x00,0x00,0x00,0x00] 278; GFX11-NEXT: s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf] 279; GFX11-NEXT: ; return to shader part epilog 280main_body: 281 %s = extractelement <2 x i16> %coords_lo, i32 0 282 %t = extractelement <2 x i16> %coords_lo, i32 1 283 %r = extractelement <2 x i16> %coords_hi, i32 0 284 %mip = extractelement <2 x i16> %coords_hi, i32 1 285 %v = call <4 x float> @llvm.amdgcn.image.load.mip.3d.v4f32.i16(i32 15, i16 %s, i16 %t, i16 %r, i16 %mip, <8 x i32> %rsrc, i32 0, i32 0) 286 ret <4 x float> %v 287} 288 289define amdgpu_ps <4 x float> @load_mip_cube(<8 x i32> inreg %rsrc, <2 x i16> %coords_lo, <2 x i16> %coords_hi) { 290; GFX9-LABEL: load_mip_cube: 291; GFX9: ; %bb.0: ; %main_body 292; GFX9-NEXT: image_load_mip v[0:3], v[0:1], s[0:7] dmask:0xf unorm a16 da ; encoding: [0x00,0xdf,0x04,0xf0,0x00,0x00,0x00,0x00] 293; GFX9-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf] 294; GFX9-NEXT: ; return to shader part epilog 295; 296; GFX10-LABEL: load_mip_cube: 297; GFX10: ; %bb.0: ; %main_body 298; GFX10-NEXT: image_load_mip v[0:3], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_CUBE unorm a16 ; encoding: [0x18,0x1f,0x04,0xf0,0x00,0x00,0x00,0x40] 299; GFX10-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf] 300; GFX10-NEXT: ; return to shader part epilog 301; 302; GFX11-LABEL: load_mip_cube: 303; GFX11: ; %bb.0: ; %main_body 304; GFX11-NEXT: image_load_mip v[0:3], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_CUBE unorm a16 ; encoding: [0x8c,0x0f,0x05,0xf0,0x00,0x00,0x00,0x00] 305; GFX11-NEXT: s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf] 306; GFX11-NEXT: ; return to shader part epilog 307main_body: 308 %s = extractelement <2 x i16> %coords_lo, i32 0 309 %t = extractelement <2 x i16> %coords_lo, i32 1 310 %slice = extractelement <2 x i16> %coords_hi, i32 0 311 %mip = extractelement <2 x i16> %coords_hi, i32 1 312 %v = call <4 x float> @llvm.amdgcn.image.load.mip.cube.v4f32.i16(i32 15, i16 %s, i16 %t, i16 %slice, i16 %mip, <8 x i32> %rsrc, i32 0, i32 0) 313 ret <4 x float> %v 314} 315 316define amdgpu_ps <4 x float> @load_mip_1darray(<8 x i32> inreg %rsrc, <2 x i16> %coords_lo, <2 x i16> %coords_hi) { 317; GFX9-LABEL: load_mip_1darray: 318; GFX9: ; %bb.0: ; %main_body 319; GFX9-NEXT: image_load_mip v[0:3], v[0:1], s[0:7] dmask:0xf unorm a16 da ; encoding: [0x00,0xdf,0x04,0xf0,0x00,0x00,0x00,0x00] 320; GFX9-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf] 321; GFX9-NEXT: ; return to shader part epilog 322; 323; GFX10-LABEL: load_mip_1darray: 324; GFX10: ; %bb.0: ; %main_body 325; GFX10-NEXT: image_load_mip v[0:3], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D_ARRAY unorm a16 ; encoding: [0x20,0x1f,0x04,0xf0,0x00,0x00,0x00,0x40] 326; GFX10-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf] 327; GFX10-NEXT: ; return to shader part epilog 328; 329; GFX11-LABEL: load_mip_1darray: 330; GFX11: ; %bb.0: ; %main_body 331; GFX11-NEXT: image_load_mip v[0:3], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D_ARRAY unorm a16 ; encoding: [0x90,0x0f,0x05,0xf0,0x00,0x00,0x00,0x00] 332; GFX11-NEXT: s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf] 333; GFX11-NEXT: ; return to shader part epilog 334main_body: 335 %s = extractelement <2 x i16> %coords_lo, i32 0 336 %slice = extractelement <2 x i16> %coords_lo, i32 1 337 %mip = extractelement <2 x i16> %coords_hi, i32 0 338 %v = call <4 x float> @llvm.amdgcn.image.load.mip.1darray.v4f32.i16(i32 15, i16 %s, i16 %slice, i16 %mip, <8 x i32> %rsrc, i32 0, i32 0) 339 ret <4 x float> %v 340} 341 342define amdgpu_ps <4 x float> @load_mip_2darray(<8 x i32> inreg %rsrc, <2 x i16> %coords_lo, <2 x i16> %coords_hi) { 343; GFX9-LABEL: load_mip_2darray: 344; GFX9: ; %bb.0: ; %main_body 345; GFX9-NEXT: image_load_mip v[0:3], v[0:1], s[0:7] dmask:0xf unorm a16 da ; encoding: [0x00,0xdf,0x04,0xf0,0x00,0x00,0x00,0x00] 346; GFX9-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf] 347; GFX9-NEXT: ; return to shader part epilog 348; 349; GFX10-LABEL: load_mip_2darray: 350; GFX10: ; %bb.0: ; %main_body 351; GFX10-NEXT: image_load_mip v[0:3], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_ARRAY unorm a16 ; encoding: [0x28,0x1f,0x04,0xf0,0x00,0x00,0x00,0x40] 352; GFX10-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf] 353; GFX10-NEXT: ; return to shader part epilog 354; 355; GFX11-LABEL: load_mip_2darray: 356; GFX11: ; %bb.0: ; %main_body 357; GFX11-NEXT: image_load_mip v[0:3], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_ARRAY unorm a16 ; encoding: [0x94,0x0f,0x05,0xf0,0x00,0x00,0x00,0x00] 358; GFX11-NEXT: s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf] 359; GFX11-NEXT: ; return to shader part epilog 360main_body: 361 %s = extractelement <2 x i16> %coords_lo, i32 0 362 %t = extractelement <2 x i16> %coords_lo, i32 1 363 %slice = extractelement <2 x i16> %coords_hi, i32 0 364 %mip = extractelement <2 x i16> %coords_hi, i32 1 365 %v = call <4 x float> @llvm.amdgcn.image.load.mip.2darray.v4f32.i16(i32 15, i16 %s, i16 %t, i16 %slice, i16 %mip, <8 x i32> %rsrc, i32 0, i32 0) 366 ret <4 x float> %v 367} 368 369define amdgpu_ps void @store_1d(<8 x i32> inreg %rsrc, <4 x float> %vdata, <2 x i16> %coords) { 370; GFX9-LABEL: store_1d: 371; GFX9: ; %bb.0: ; %main_body 372; GFX9-NEXT: image_store v[0:3], v4, s[0:7] dmask:0xf unorm a16 ; encoding: [0x00,0x9f,0x20,0xf0,0x04,0x00,0x00,0x00] 373; GFX9-NEXT: s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] 374; 375; GFX10-LABEL: store_1d: 376; GFX10: ; %bb.0: ; %main_body 377; GFX10-NEXT: image_store v[0:3], v4, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm a16 ; encoding: [0x00,0x1f,0x20,0xf0,0x04,0x00,0x00,0x40] 378; GFX10-NEXT: s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] 379; 380; GFX11-LABEL: store_1d: 381; GFX11: ; %bb.0: ; %main_body 382; GFX11-NEXT: image_store v[0:3], v4, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm a16 ; encoding: [0x80,0x0f,0x19,0xf0,0x04,0x00,0x00,0x00] 383; GFX11-NEXT: s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] 384main_body: 385 %s = extractelement <2 x i16> %coords, i32 0 386 call void @llvm.amdgcn.image.store.1d.v4f32.i16(<4 x float> %vdata, i32 15, i16 %s, <8 x i32> %rsrc, i32 0, i32 0) 387 ret void 388} 389 390define amdgpu_ps void @store_2d(<8 x i32> inreg %rsrc, <4 x float> %vdata, <2 x i16> %coords) { 391; GFX9-LABEL: store_2d: 392; GFX9: ; %bb.0: ; %main_body 393; GFX9-NEXT: image_store v[0:3], v4, s[0:7] dmask:0xf unorm a16 ; encoding: [0x00,0x9f,0x20,0xf0,0x04,0x00,0x00,0x00] 394; GFX9-NEXT: s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] 395; 396; GFX10-LABEL: store_2d: 397; GFX10: ; %bb.0: ; %main_body 398; GFX10-NEXT: image_store v[0:3], v4, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D unorm a16 ; encoding: [0x08,0x1f,0x20,0xf0,0x04,0x00,0x00,0x40] 399; GFX10-NEXT: s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] 400; 401; GFX11-LABEL: store_2d: 402; GFX11: ; %bb.0: ; %main_body 403; GFX11-NEXT: image_store v[0:3], v4, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D unorm a16 ; encoding: [0x84,0x0f,0x19,0xf0,0x04,0x00,0x00,0x00] 404; GFX11-NEXT: s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] 405main_body: 406 %s = extractelement <2 x i16> %coords, i32 0 407 %t = extractelement <2 x i16> %coords, i32 1 408 call void @llvm.amdgcn.image.store.2d.v4f32.i16(<4 x float> %vdata, i32 15, i16 %s, i16 %t, <8 x i32> %rsrc, i32 0, i32 0) 409 ret void 410} 411 412define amdgpu_ps void @store_3d(<8 x i32> inreg %rsrc, <4 x float> %vdata, <2 x i16> %coords_lo, <2 x i16> %coords_hi) { 413; GFX9-LABEL: store_3d: 414; GFX9: ; %bb.0: ; %main_body 415; GFX9-NEXT: image_store v[0:3], v[4:5], s[0:7] dmask:0xf unorm a16 ; encoding: [0x00,0x9f,0x20,0xf0,0x04,0x00,0x00,0x00] 416; GFX9-NEXT: s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] 417; 418; GFX10-LABEL: store_3d: 419; GFX10: ; %bb.0: ; %main_body 420; GFX10-NEXT: image_store v[0:3], v[4:5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_3D unorm a16 ; encoding: [0x10,0x1f,0x20,0xf0,0x04,0x00,0x00,0x40] 421; GFX10-NEXT: s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] 422; 423; GFX11-LABEL: store_3d: 424; GFX11: ; %bb.0: ; %main_body 425; GFX11-NEXT: image_store v[0:3], v[4:5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_3D unorm a16 ; encoding: [0x88,0x0f,0x19,0xf0,0x04,0x00,0x00,0x00] 426; GFX11-NEXT: s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] 427main_body: 428 %s = extractelement <2 x i16> %coords_lo, i32 0 429 %t = extractelement <2 x i16> %coords_lo, i32 1 430 %r = extractelement <2 x i16> %coords_hi, i32 0 431 call void @llvm.amdgcn.image.store.3d.v4f32.i16(<4 x float> %vdata, i32 15, i16 %s, i16 %t, i16 %r, <8 x i32> %rsrc, i32 0, i32 0) 432 ret void 433} 434 435define amdgpu_ps void @store_cube(<8 x i32> inreg %rsrc, <4 x float> %vdata, <2 x i16> %coords_lo, <2 x i16> %coords_hi) { 436; GFX9-LABEL: store_cube: 437; GFX9: ; %bb.0: ; %main_body 438; GFX9-NEXT: image_store v[0:3], v[4:5], s[0:7] dmask:0xf unorm a16 da ; encoding: [0x00,0xdf,0x20,0xf0,0x04,0x00,0x00,0x00] 439; GFX9-NEXT: s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] 440; 441; GFX10-LABEL: store_cube: 442; GFX10: ; %bb.0: ; %main_body 443; GFX10-NEXT: image_store v[0:3], v[4:5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_CUBE unorm a16 ; encoding: [0x18,0x1f,0x20,0xf0,0x04,0x00,0x00,0x40] 444; GFX10-NEXT: s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] 445; 446; GFX11-LABEL: store_cube: 447; GFX11: ; %bb.0: ; %main_body 448; GFX11-NEXT: image_store v[0:3], v[4:5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_CUBE unorm a16 ; encoding: [0x8c,0x0f,0x19,0xf0,0x04,0x00,0x00,0x00] 449; GFX11-NEXT: s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] 450main_body: 451 %s = extractelement <2 x i16> %coords_lo, i32 0 452 %t = extractelement <2 x i16> %coords_lo, i32 1 453 %slice = extractelement <2 x i16> %coords_hi, i32 0 454 call void @llvm.amdgcn.image.store.cube.v4f32.i16(<4 x float> %vdata, i32 15, i16 %s, i16 %t, i16 %slice, <8 x i32> %rsrc, i32 0, i32 0) 455 ret void 456} 457 458define amdgpu_ps void @store_1darray(<8 x i32> inreg %rsrc, <4 x float> %vdata, <2 x i16> %coords) { 459; GFX9-LABEL: store_1darray: 460; GFX9: ; %bb.0: ; %main_body 461; GFX9-NEXT: image_store v[0:3], v4, s[0:7] dmask:0xf unorm a16 da ; encoding: [0x00,0xdf,0x20,0xf0,0x04,0x00,0x00,0x00] 462; GFX9-NEXT: s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] 463; 464; GFX10-LABEL: store_1darray: 465; GFX10: ; %bb.0: ; %main_body 466; GFX10-NEXT: image_store v[0:3], v4, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D_ARRAY unorm a16 ; encoding: [0x20,0x1f,0x20,0xf0,0x04,0x00,0x00,0x40] 467; GFX10-NEXT: s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] 468; 469; GFX11-LABEL: store_1darray: 470; GFX11: ; %bb.0: ; %main_body 471; GFX11-NEXT: image_store v[0:3], v4, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D_ARRAY unorm a16 ; encoding: [0x90,0x0f,0x19,0xf0,0x04,0x00,0x00,0x00] 472; GFX11-NEXT: s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] 473main_body: 474 %s = extractelement <2 x i16> %coords, i32 0 475 %slice = extractelement <2 x i16> %coords, i32 1 476 call void @llvm.amdgcn.image.store.1darray.v4f32.i16(<4 x float> %vdata, i32 15, i16 %s, i16 %slice, <8 x i32> %rsrc, i32 0, i32 0) 477 ret void 478} 479 480define amdgpu_ps void @store_2darray(<8 x i32> inreg %rsrc, <4 x float> %vdata, <2 x i16> %coords_lo, <2 x i16> %coords_hi) { 481; GFX9-LABEL: store_2darray: 482; GFX9: ; %bb.0: ; %main_body 483; GFX9-NEXT: image_store v[0:3], v[4:5], s[0:7] dmask:0xf unorm a16 da ; encoding: [0x00,0xdf,0x20,0xf0,0x04,0x00,0x00,0x00] 484; GFX9-NEXT: s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] 485; 486; GFX10-LABEL: store_2darray: 487; GFX10: ; %bb.0: ; %main_body 488; GFX10-NEXT: image_store v[0:3], v[4:5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_ARRAY unorm a16 ; encoding: [0x28,0x1f,0x20,0xf0,0x04,0x00,0x00,0x40] 489; GFX10-NEXT: s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] 490; 491; GFX11-LABEL: store_2darray: 492; GFX11: ; %bb.0: ; %main_body 493; GFX11-NEXT: image_store v[0:3], v[4:5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_ARRAY unorm a16 ; encoding: [0x94,0x0f,0x19,0xf0,0x04,0x00,0x00,0x00] 494; GFX11-NEXT: s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] 495main_body: 496 %s = extractelement <2 x i16> %coords_lo, i32 0 497 %t = extractelement <2 x i16> %coords_lo, i32 1 498 %slice = extractelement <2 x i16> %coords_hi, i32 0 499 call void @llvm.amdgcn.image.store.2darray.v4f32.i16(<4 x float> %vdata, i32 15, i16 %s, i16 %t, i16 %slice, <8 x i32> %rsrc, i32 0, i32 0) 500 ret void 501} 502 503define amdgpu_ps void @store_2dmsaa(<8 x i32> inreg %rsrc, <4 x float> %vdata, <2 x i16> %coords_lo, <2 x i16> %coords_hi) { 504; GFX9-LABEL: store_2dmsaa: 505; GFX9: ; %bb.0: ; %main_body 506; GFX9-NEXT: image_store v[0:3], v[4:5], s[0:7] dmask:0xf unorm a16 ; encoding: [0x00,0x9f,0x20,0xf0,0x04,0x00,0x00,0x00] 507; GFX9-NEXT: s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] 508; 509; GFX10-LABEL: store_2dmsaa: 510; GFX10: ; %bb.0: ; %main_body 511; GFX10-NEXT: image_store v[0:3], v[4:5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA unorm a16 ; encoding: [0x30,0x1f,0x20,0xf0,0x04,0x00,0x00,0x40] 512; GFX10-NEXT: s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] 513; 514; GFX11-LABEL: store_2dmsaa: 515; GFX11: ; %bb.0: ; %main_body 516; GFX11-NEXT: image_store v[0:3], v[4:5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA unorm a16 ; encoding: [0x98,0x0f,0x19,0xf0,0x04,0x00,0x00,0x00] 517; GFX11-NEXT: s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] 518main_body: 519 %s = extractelement <2 x i16> %coords_lo, i32 0 520 %t = extractelement <2 x i16> %coords_lo, i32 1 521 %fragid = extractelement <2 x i16> %coords_hi, i32 0 522 call void @llvm.amdgcn.image.store.2dmsaa.v4f32.i16(<4 x float> %vdata, i32 15, i16 %s, i16 %t, i16 %fragid, <8 x i32> %rsrc, i32 0, i32 0) 523 ret void 524} 525 526define amdgpu_ps void @store_2darraymsaa(<8 x i32> inreg %rsrc, <4 x float> %vdata, <2 x i16> %coords_lo, <2 x i16> %coords_hi) { 527; GFX9-LABEL: store_2darraymsaa: 528; GFX9: ; %bb.0: ; %main_body 529; GFX9-NEXT: image_store v[0:3], v[4:5], s[0:7] dmask:0xf unorm a16 da ; encoding: [0x00,0xdf,0x20,0xf0,0x04,0x00,0x00,0x00] 530; GFX9-NEXT: s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] 531; 532; GFX10-LABEL: store_2darraymsaa: 533; GFX10: ; %bb.0: ; %main_body 534; GFX10-NEXT: image_store v[0:3], v[4:5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA_ARRAY unorm a16 ; encoding: [0x38,0x1f,0x20,0xf0,0x04,0x00,0x00,0x40] 535; GFX10-NEXT: s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] 536; 537; GFX11-LABEL: store_2darraymsaa: 538; GFX11: ; %bb.0: ; %main_body 539; GFX11-NEXT: image_store v[0:3], v[4:5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA_ARRAY unorm a16 ; encoding: [0x9c,0x0f,0x19,0xf0,0x04,0x00,0x00,0x00] 540; GFX11-NEXT: s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] 541main_body: 542 %s = extractelement <2 x i16> %coords_lo, i32 0 543 %t = extractelement <2 x i16> %coords_lo, i32 1 544 %slice = extractelement <2 x i16> %coords_hi, i32 0 545 %fragid = extractelement <2 x i16> %coords_hi, i32 1 546 call void @llvm.amdgcn.image.store.2darraymsaa.v4f32.i16(<4 x float> %vdata, i32 15, i16 %s, i16 %t, i16 %slice, i16 %fragid, <8 x i32> %rsrc, i32 0, i32 0) 547 ret void 548} 549 550define amdgpu_ps void @store_mip_1d(<8 x i32> inreg %rsrc, <4 x float> %vdata, <2 x i16> %coords) { 551; GFX9-LABEL: store_mip_1d: 552; GFX9: ; %bb.0: ; %main_body 553; GFX9-NEXT: image_store_mip v[0:3], v4, s[0:7] dmask:0xf unorm a16 ; encoding: [0x00,0x9f,0x24,0xf0,0x04,0x00,0x00,0x00] 554; GFX9-NEXT: s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] 555; 556; GFX10-LABEL: store_mip_1d: 557; GFX10: ; %bb.0: ; %main_body 558; GFX10-NEXT: image_store_mip v[0:3], v4, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm a16 ; encoding: [0x00,0x1f,0x24,0xf0,0x04,0x00,0x00,0x40] 559; GFX10-NEXT: s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] 560; 561; GFX11-LABEL: store_mip_1d: 562; GFX11: ; %bb.0: ; %main_body 563; GFX11-NEXT: image_store_mip v[0:3], v4, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm a16 ; encoding: [0x80,0x0f,0x1d,0xf0,0x04,0x00,0x00,0x00] 564; GFX11-NEXT: s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] 565main_body: 566 %s = extractelement <2 x i16> %coords, i32 0 567 %mip = extractelement <2 x i16> %coords, i32 1 568 call void @llvm.amdgcn.image.store.mip.1d.v4f32.i16(<4 x float> %vdata, i32 15, i16 %s, i16 %mip, <8 x i32> %rsrc, i32 0, i32 0) 569 ret void 570} 571 572define amdgpu_ps void @store_mip_2d(<8 x i32> inreg %rsrc, <4 x float> %vdata, <2 x i16> %coords_lo, <2 x i16> %coords_hi) { 573; GFX9-LABEL: store_mip_2d: 574; GFX9: ; %bb.0: ; %main_body 575; GFX9-NEXT: image_store_mip v[0:3], v[4:5], s[0:7] dmask:0xf unorm a16 ; encoding: [0x00,0x9f,0x24,0xf0,0x04,0x00,0x00,0x00] 576; GFX9-NEXT: s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] 577; 578; GFX10-LABEL: store_mip_2d: 579; GFX10: ; %bb.0: ; %main_body 580; GFX10-NEXT: image_store_mip v[0:3], v[4:5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D unorm a16 ; encoding: [0x08,0x1f,0x24,0xf0,0x04,0x00,0x00,0x40] 581; GFX10-NEXT: s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] 582; 583; GFX11-LABEL: store_mip_2d: 584; GFX11: ; %bb.0: ; %main_body 585; GFX11-NEXT: image_store_mip v[0:3], v[4:5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D unorm a16 ; encoding: [0x84,0x0f,0x1d,0xf0,0x04,0x00,0x00,0x00] 586; GFX11-NEXT: s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] 587main_body: 588 %s = extractelement <2 x i16> %coords_lo, i32 0 589 %t = extractelement <2 x i16> %coords_lo, i32 1 590 %mip = extractelement <2 x i16> %coords_hi, i32 0 591 call void @llvm.amdgcn.image.store.mip.2d.v4f32.i16(<4 x float> %vdata, i32 15, i16 %s, i16 %t, i16 %mip, <8 x i32> %rsrc, i32 0, i32 0) 592 ret void 593} 594 595define amdgpu_ps void @store_mip_3d(<8 x i32> inreg %rsrc, <4 x float> %vdata, <2 x i16> %coords_lo, <2 x i16> %coords_hi) { 596; GFX9-LABEL: store_mip_3d: 597; GFX9: ; %bb.0: ; %main_body 598; GFX9-NEXT: image_store_mip v[0:3], v[4:5], s[0:7] dmask:0xf unorm a16 ; encoding: [0x00,0x9f,0x24,0xf0,0x04,0x00,0x00,0x00] 599; GFX9-NEXT: s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] 600; 601; GFX10-LABEL: store_mip_3d: 602; GFX10: ; %bb.0: ; %main_body 603; GFX10-NEXT: image_store_mip v[0:3], v[4:5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_3D unorm a16 ; encoding: [0x10,0x1f,0x24,0xf0,0x04,0x00,0x00,0x40] 604; GFX10-NEXT: s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] 605; 606; GFX11-LABEL: store_mip_3d: 607; GFX11: ; %bb.0: ; %main_body 608; GFX11-NEXT: image_store_mip v[0:3], v[4:5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_3D unorm a16 ; encoding: [0x88,0x0f,0x1d,0xf0,0x04,0x00,0x00,0x00] 609; GFX11-NEXT: s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] 610main_body: 611 %s = extractelement <2 x i16> %coords_lo, i32 0 612 %t = extractelement <2 x i16> %coords_lo, i32 1 613 %r = extractelement <2 x i16> %coords_hi, i32 0 614 %mip = extractelement <2 x i16> %coords_hi, i32 1 615 call void @llvm.amdgcn.image.store.mip.3d.v4f32.i16(<4 x float> %vdata, i32 15, i16 %s, i16 %t, i16 %r, i16 %mip, <8 x i32> %rsrc, i32 0, i32 0) 616 ret void 617} 618 619define amdgpu_ps void @store_mip_cube(<8 x i32> inreg %rsrc, <4 x float> %vdata, <2 x i16> %coords_lo, <2 x i16> %coords_hi) { 620; GFX9-LABEL: store_mip_cube: 621; GFX9: ; %bb.0: ; %main_body 622; GFX9-NEXT: image_store_mip v[0:3], v[4:5], s[0:7] dmask:0xf unorm a16 da ; encoding: [0x00,0xdf,0x24,0xf0,0x04,0x00,0x00,0x00] 623; GFX9-NEXT: s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] 624; 625; GFX10-LABEL: store_mip_cube: 626; GFX10: ; %bb.0: ; %main_body 627; GFX10-NEXT: image_store_mip v[0:3], v[4:5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_CUBE unorm a16 ; encoding: [0x18,0x1f,0x24,0xf0,0x04,0x00,0x00,0x40] 628; GFX10-NEXT: s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] 629; 630; GFX11-LABEL: store_mip_cube: 631; GFX11: ; %bb.0: ; %main_body 632; GFX11-NEXT: image_store_mip v[0:3], v[4:5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_CUBE unorm a16 ; encoding: [0x8c,0x0f,0x1d,0xf0,0x04,0x00,0x00,0x00] 633; GFX11-NEXT: s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] 634main_body: 635 %s = extractelement <2 x i16> %coords_lo, i32 0 636 %t = extractelement <2 x i16> %coords_lo, i32 1 637 %slice = extractelement <2 x i16> %coords_hi, i32 0 638 %mip = extractelement <2 x i16> %coords_hi, i32 1 639 call void @llvm.amdgcn.image.store.mip.cube.v4f32.i16(<4 x float> %vdata, i32 15, i16 %s, i16 %t, i16 %slice, i16 %mip, <8 x i32> %rsrc, i32 0, i32 0) 640 ret void 641} 642 643define amdgpu_ps void @store_mip_1darray(<8 x i32> inreg %rsrc, <4 x float> %vdata, <2 x i16> %coords_lo, <2 x i16> %coords_hi) { 644; GFX9-LABEL: store_mip_1darray: 645; GFX9: ; %bb.0: ; %main_body 646; GFX9-NEXT: image_store_mip v[0:3], v[4:5], s[0:7] dmask:0xf unorm a16 da ; encoding: [0x00,0xdf,0x24,0xf0,0x04,0x00,0x00,0x00] 647; GFX9-NEXT: s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] 648; 649; GFX10-LABEL: store_mip_1darray: 650; GFX10: ; %bb.0: ; %main_body 651; GFX10-NEXT: image_store_mip v[0:3], v[4:5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D_ARRAY unorm a16 ; encoding: [0x20,0x1f,0x24,0xf0,0x04,0x00,0x00,0x40] 652; GFX10-NEXT: s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] 653; 654; GFX11-LABEL: store_mip_1darray: 655; GFX11: ; %bb.0: ; %main_body 656; GFX11-NEXT: image_store_mip v[0:3], v[4:5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D_ARRAY unorm a16 ; encoding: [0x90,0x0f,0x1d,0xf0,0x04,0x00,0x00,0x00] 657; GFX11-NEXT: s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] 658main_body: 659 %s = extractelement <2 x i16> %coords_lo, i32 0 660 %slice = extractelement <2 x i16> %coords_lo, i32 1 661 %mip = extractelement <2 x i16> %coords_hi, i32 0 662 call void @llvm.amdgcn.image.store.mip.1darray.v4f32.i16(<4 x float> %vdata, i32 15, i16 %s, i16 %slice, i16 %mip, <8 x i32> %rsrc, i32 0, i32 0) 663 ret void 664} 665 666define amdgpu_ps void @store_mip_2darray(<8 x i32> inreg %rsrc, <4 x float> %vdata, <2 x i16> %coords_lo, <2 x i16> %coords_hi) { 667; GFX9-LABEL: store_mip_2darray: 668; GFX9: ; %bb.0: ; %main_body 669; GFX9-NEXT: image_store_mip v[0:3], v[4:5], s[0:7] dmask:0xf unorm a16 da ; encoding: [0x00,0xdf,0x24,0xf0,0x04,0x00,0x00,0x00] 670; GFX9-NEXT: s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] 671; 672; GFX10-LABEL: store_mip_2darray: 673; GFX10: ; %bb.0: ; %main_body 674; GFX10-NEXT: image_store_mip v[0:3], v[4:5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_ARRAY unorm a16 ; encoding: [0x28,0x1f,0x24,0xf0,0x04,0x00,0x00,0x40] 675; GFX10-NEXT: s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] 676; 677; GFX11-LABEL: store_mip_2darray: 678; GFX11: ; %bb.0: ; %main_body 679; GFX11-NEXT: image_store_mip v[0:3], v[4:5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_ARRAY unorm a16 ; encoding: [0x94,0x0f,0x1d,0xf0,0x04,0x00,0x00,0x00] 680; GFX11-NEXT: s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] 681main_body: 682 %s = extractelement <2 x i16> %coords_lo, i32 0 683 %t = extractelement <2 x i16> %coords_lo, i32 1 684 %slice = extractelement <2 x i16> %coords_hi, i32 0 685 %mip = extractelement <2 x i16> %coords_hi, i32 1 686 call void @llvm.amdgcn.image.store.mip.2darray.v4f32.i16(<4 x float> %vdata, i32 15, i16 %s, i16 %t, i16 %slice, i16 %mip, <8 x i32> %rsrc, i32 0, i32 0) 687 ret void 688} 689 690define amdgpu_ps <4 x float> @getresinfo_1d(<8 x i32> inreg %rsrc, <2 x i16> %coords) { 691; GFX9-LABEL: getresinfo_1d: 692; GFX9: ; %bb.0: ; %main_body 693; GFX9-NEXT: image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm a16 ; encoding: [0x00,0x9f,0x38,0xf0,0x00,0x00,0x00,0x00] 694; GFX9-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf] 695; GFX9-NEXT: ; return to shader part epilog 696; 697; GFX10-LABEL: getresinfo_1d: 698; GFX10: ; %bb.0: ; %main_body 699; GFX10-NEXT: image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm a16 ; encoding: [0x00,0x1f,0x38,0xf0,0x00,0x00,0x00,0x40] 700; GFX10-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf] 701; GFX10-NEXT: ; return to shader part epilog 702; 703; GFX11-LABEL: getresinfo_1d: 704; GFX11: ; %bb.0: ; %main_body 705; GFX11-NEXT: image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm a16 ; encoding: [0x80,0x0f,0x5d,0xf0,0x00,0x00,0x00,0x00] 706; GFX11-NEXT: s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf] 707; GFX11-NEXT: ; return to shader part epilog 708main_body: 709 %mip = extractelement <2 x i16> %coords, i32 0 710 %v = call <4 x float> @llvm.amdgcn.image.getresinfo.1d.v4f32.i16(i32 15, i16 %mip, <8 x i32> %rsrc, i32 0, i32 0) 711 ret <4 x float> %v 712} 713 714define amdgpu_ps <4 x float> @getresinfo_2d(<8 x i32> inreg %rsrc, <2 x i16> %coords) { 715; GFX9-LABEL: getresinfo_2d: 716; GFX9: ; %bb.0: ; %main_body 717; GFX9-NEXT: image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm a16 ; encoding: [0x00,0x9f,0x38,0xf0,0x00,0x00,0x00,0x00] 718; GFX9-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf] 719; GFX9-NEXT: ; return to shader part epilog 720; 721; GFX10-LABEL: getresinfo_2d: 722; GFX10: ; %bb.0: ; %main_body 723; GFX10-NEXT: image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D unorm a16 ; encoding: [0x08,0x1f,0x38,0xf0,0x00,0x00,0x00,0x40] 724; GFX10-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf] 725; GFX10-NEXT: ; return to shader part epilog 726; 727; GFX11-LABEL: getresinfo_2d: 728; GFX11: ; %bb.0: ; %main_body 729; GFX11-NEXT: image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D unorm a16 ; encoding: [0x84,0x0f,0x5d,0xf0,0x00,0x00,0x00,0x00] 730; GFX11-NEXT: s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf] 731; GFX11-NEXT: ; return to shader part epilog 732main_body: 733 %mip = extractelement <2 x i16> %coords, i32 0 734 %v = call <4 x float> @llvm.amdgcn.image.getresinfo.2d.v4f32.i16(i32 15, i16 %mip, <8 x i32> %rsrc, i32 0, i32 0) 735 ret <4 x float> %v 736} 737 738define amdgpu_ps <4 x float> @getresinfo_3d(<8 x i32> inreg %rsrc, <2 x i16> %coords) { 739; GFX9-LABEL: getresinfo_3d: 740; GFX9: ; %bb.0: ; %main_body 741; GFX9-NEXT: image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm a16 ; encoding: [0x00,0x9f,0x38,0xf0,0x00,0x00,0x00,0x00] 742; GFX9-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf] 743; GFX9-NEXT: ; return to shader part epilog 744; 745; GFX10-LABEL: getresinfo_3d: 746; GFX10: ; %bb.0: ; %main_body 747; GFX10-NEXT: image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_3D unorm a16 ; encoding: [0x10,0x1f,0x38,0xf0,0x00,0x00,0x00,0x40] 748; GFX10-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf] 749; GFX10-NEXT: ; return to shader part epilog 750; 751; GFX11-LABEL: getresinfo_3d: 752; GFX11: ; %bb.0: ; %main_body 753; GFX11-NEXT: image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_3D unorm a16 ; encoding: [0x88,0x0f,0x5d,0xf0,0x00,0x00,0x00,0x00] 754; GFX11-NEXT: s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf] 755; GFX11-NEXT: ; return to shader part epilog 756main_body: 757 %mip = extractelement <2 x i16> %coords, i32 0 758 %v = call <4 x float> @llvm.amdgcn.image.getresinfo.3d.v4f32.i16(i32 15, i16 %mip, <8 x i32> %rsrc, i32 0, i32 0) 759 ret <4 x float> %v 760} 761 762define amdgpu_ps <4 x float> @getresinfo_cube(<8 x i32> inreg %rsrc, <2 x i16> %coords) { 763; GFX9-LABEL: getresinfo_cube: 764; GFX9: ; %bb.0: ; %main_body 765; GFX9-NEXT: image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm a16 da ; encoding: [0x00,0xdf,0x38,0xf0,0x00,0x00,0x00,0x00] 766; GFX9-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf] 767; GFX9-NEXT: ; return to shader part epilog 768; 769; GFX10-LABEL: getresinfo_cube: 770; GFX10: ; %bb.0: ; %main_body 771; GFX10-NEXT: image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_CUBE unorm a16 ; encoding: [0x18,0x1f,0x38,0xf0,0x00,0x00,0x00,0x40] 772; GFX10-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf] 773; GFX10-NEXT: ; return to shader part epilog 774; 775; GFX11-LABEL: getresinfo_cube: 776; GFX11: ; %bb.0: ; %main_body 777; GFX11-NEXT: image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_CUBE unorm a16 ; encoding: [0x8c,0x0f,0x5d,0xf0,0x00,0x00,0x00,0x00] 778; GFX11-NEXT: s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf] 779; GFX11-NEXT: ; return to shader part epilog 780main_body: 781 %mip = extractelement <2 x i16> %coords, i32 0 782 %v = call <4 x float> @llvm.amdgcn.image.getresinfo.cube.v4f32.i16(i32 15, i16 %mip, <8 x i32> %rsrc, i32 0, i32 0) 783 ret <4 x float> %v 784} 785 786define amdgpu_ps <4 x float> @getresinfo_1darray(<8 x i32> inreg %rsrc, <2 x i16> %coords) { 787; GFX9-LABEL: getresinfo_1darray: 788; GFX9: ; %bb.0: ; %main_body 789; GFX9-NEXT: image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm a16 da ; encoding: [0x00,0xdf,0x38,0xf0,0x00,0x00,0x00,0x00] 790; GFX9-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf] 791; GFX9-NEXT: ; return to shader part epilog 792; 793; GFX10-LABEL: getresinfo_1darray: 794; GFX10: ; %bb.0: ; %main_body 795; GFX10-NEXT: image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D_ARRAY unorm a16 ; encoding: [0x20,0x1f,0x38,0xf0,0x00,0x00,0x00,0x40] 796; GFX10-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf] 797; GFX10-NEXT: ; return to shader part epilog 798; 799; GFX11-LABEL: getresinfo_1darray: 800; GFX11: ; %bb.0: ; %main_body 801; GFX11-NEXT: image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D_ARRAY unorm a16 ; encoding: [0x90,0x0f,0x5d,0xf0,0x00,0x00,0x00,0x00] 802; GFX11-NEXT: s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf] 803; GFX11-NEXT: ; return to shader part epilog 804main_body: 805 %mip = extractelement <2 x i16> %coords, i32 0 806 %v = call <4 x float> @llvm.amdgcn.image.getresinfo.1darray.v4f32.i16(i32 15, i16 %mip, <8 x i32> %rsrc, i32 0, i32 0) 807 ret <4 x float> %v 808} 809 810define amdgpu_ps <4 x float> @getresinfo_2darray(<8 x i32> inreg %rsrc, <2 x i16> %coords) { 811; GFX9-LABEL: getresinfo_2darray: 812; GFX9: ; %bb.0: ; %main_body 813; GFX9-NEXT: image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm a16 da ; encoding: [0x00,0xdf,0x38,0xf0,0x00,0x00,0x00,0x00] 814; GFX9-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf] 815; GFX9-NEXT: ; return to shader part epilog 816; 817; GFX10-LABEL: getresinfo_2darray: 818; GFX10: ; %bb.0: ; %main_body 819; GFX10-NEXT: image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_ARRAY unorm a16 ; encoding: [0x28,0x1f,0x38,0xf0,0x00,0x00,0x00,0x40] 820; GFX10-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf] 821; GFX10-NEXT: ; return to shader part epilog 822; 823; GFX11-LABEL: getresinfo_2darray: 824; GFX11: ; %bb.0: ; %main_body 825; GFX11-NEXT: image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_ARRAY unorm a16 ; encoding: [0x94,0x0f,0x5d,0xf0,0x00,0x00,0x00,0x00] 826; GFX11-NEXT: s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf] 827; GFX11-NEXT: ; return to shader part epilog 828main_body: 829 %mip = extractelement <2 x i16> %coords, i32 0 830 %v = call <4 x float> @llvm.amdgcn.image.getresinfo.2darray.v4f32.i16(i32 15, i16 %mip, <8 x i32> %rsrc, i32 0, i32 0) 831 ret <4 x float> %v 832} 833 834define amdgpu_ps <4 x float> @getresinfo_2dmsaa(<8 x i32> inreg %rsrc, <2 x i16> %coords) { 835; GFX9-LABEL: getresinfo_2dmsaa: 836; GFX9: ; %bb.0: ; %main_body 837; GFX9-NEXT: image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm a16 ; encoding: [0x00,0x9f,0x38,0xf0,0x00,0x00,0x00,0x00] 838; GFX9-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf] 839; GFX9-NEXT: ; return to shader part epilog 840; 841; GFX10-LABEL: getresinfo_2dmsaa: 842; GFX10: ; %bb.0: ; %main_body 843; GFX10-NEXT: image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA unorm a16 ; encoding: [0x30,0x1f,0x38,0xf0,0x00,0x00,0x00,0x40] 844; GFX10-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf] 845; GFX10-NEXT: ; return to shader part epilog 846; 847; GFX11-LABEL: getresinfo_2dmsaa: 848; GFX11: ; %bb.0: ; %main_body 849; GFX11-NEXT: image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA unorm a16 ; encoding: [0x98,0x0f,0x5d,0xf0,0x00,0x00,0x00,0x00] 850; GFX11-NEXT: s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf] 851; GFX11-NEXT: ; return to shader part epilog 852main_body: 853 %mip = extractelement <2 x i16> %coords, i32 0 854 %v = call <4 x float> @llvm.amdgcn.image.getresinfo.2dmsaa.v4f32.i16(i32 15, i16 %mip, <8 x i32> %rsrc, i32 0, i32 0) 855 ret <4 x float> %v 856} 857 858define amdgpu_ps <4 x float> @getresinfo_2darraymsaa(<8 x i32> inreg %rsrc, <2 x i16> %coords) { 859; GFX9-LABEL: getresinfo_2darraymsaa: 860; GFX9: ; %bb.0: ; %main_body 861; GFX9-NEXT: image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm a16 da ; encoding: [0x00,0xdf,0x38,0xf0,0x00,0x00,0x00,0x00] 862; GFX9-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf] 863; GFX9-NEXT: ; return to shader part epilog 864; 865; GFX10-LABEL: getresinfo_2darraymsaa: 866; GFX10: ; %bb.0: ; %main_body 867; GFX10-NEXT: image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA_ARRAY unorm a16 ; encoding: [0x38,0x1f,0x38,0xf0,0x00,0x00,0x00,0x40] 868; GFX10-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf] 869; GFX10-NEXT: ; return to shader part epilog 870; 871; GFX11-LABEL: getresinfo_2darraymsaa: 872; GFX11: ; %bb.0: ; %main_body 873; GFX11-NEXT: image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA_ARRAY unorm a16 ; encoding: [0x9c,0x0f,0x5d,0xf0,0x00,0x00,0x00,0x00] 874; GFX11-NEXT: s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf] 875; GFX11-NEXT: ; return to shader part epilog 876main_body: 877 %mip = extractelement <2 x i16> %coords, i32 0 878 %v = call <4 x float> @llvm.amdgcn.image.getresinfo.2darraymsaa.v4f32.i16(i32 15, i16 %mip, <8 x i32> %rsrc, i32 0, i32 0) 879 ret <4 x float> %v 880} 881 882define amdgpu_ps float @load_1d_V1(<8 x i32> inreg %rsrc, <2 x i16> %coords) { 883; GFX9-LABEL: load_1d_V1: 884; GFX9: ; %bb.0: ; %main_body 885; GFX9-NEXT: image_load v0, v0, s[0:7] dmask:0x8 unorm a16 ; encoding: [0x00,0x98,0x00,0xf0,0x00,0x00,0x00,0x00] 886; GFX9-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf] 887; GFX9-NEXT: ; return to shader part epilog 888; 889; GFX10-LABEL: load_1d_V1: 890; GFX10: ; %bb.0: ; %main_body 891; GFX10-NEXT: image_load v0, v0, s[0:7] dmask:0x8 dim:SQ_RSRC_IMG_1D unorm a16 ; encoding: [0x00,0x18,0x00,0xf0,0x00,0x00,0x00,0x40] 892; GFX10-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf] 893; GFX10-NEXT: ; return to shader part epilog 894; 895; GFX11-LABEL: load_1d_V1: 896; GFX11: ; %bb.0: ; %main_body 897; GFX11-NEXT: image_load v0, v0, s[0:7] dmask:0x8 dim:SQ_RSRC_IMG_1D unorm a16 ; encoding: [0x80,0x08,0x01,0xf0,0x00,0x00,0x00,0x00] 898; GFX11-NEXT: s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf] 899; GFX11-NEXT: ; return to shader part epilog 900main_body: 901 %s = extractelement <2 x i16> %coords, i32 0 902 %v = call float @llvm.amdgcn.image.load.1d.f32.i16(i32 8, i16 %s, <8 x i32> %rsrc, i32 0, i32 0) 903 ret float %v 904} 905 906define amdgpu_ps <2 x float> @load_1d_V2(<8 x i32> inreg %rsrc, <2 x i16> %coords) { 907; GFX9-LABEL: load_1d_V2: 908; GFX9: ; %bb.0: ; %main_body 909; GFX9-NEXT: image_load v[0:1], v0, s[0:7] dmask:0x9 unorm a16 ; encoding: [0x00,0x99,0x00,0xf0,0x00,0x00,0x00,0x00] 910; GFX9-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf] 911; GFX9-NEXT: ; return to shader part epilog 912; 913; GFX10-LABEL: load_1d_V2: 914; GFX10: ; %bb.0: ; %main_body 915; GFX10-NEXT: image_load v[0:1], v0, s[0:7] dmask:0x9 dim:SQ_RSRC_IMG_1D unorm a16 ; encoding: [0x00,0x19,0x00,0xf0,0x00,0x00,0x00,0x40] 916; GFX10-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf] 917; GFX10-NEXT: ; return to shader part epilog 918; 919; GFX11-LABEL: load_1d_V2: 920; GFX11: ; %bb.0: ; %main_body 921; GFX11-NEXT: image_load v[0:1], v0, s[0:7] dmask:0x9 dim:SQ_RSRC_IMG_1D unorm a16 ; encoding: [0x80,0x09,0x01,0xf0,0x00,0x00,0x00,0x00] 922; GFX11-NEXT: s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf] 923; GFX11-NEXT: ; return to shader part epilog 924main_body: 925 %s = extractelement <2 x i16> %coords, i32 0 926 %v = call <2 x float> @llvm.amdgcn.image.load.1d.v2f32.i16(i32 9, i16 %s, <8 x i32> %rsrc, i32 0, i32 0) 927 ret <2 x float> %v 928} 929 930define amdgpu_ps void @store_1d_V1(<8 x i32> inreg %rsrc, float %vdata, <2 x i16> %coords) { 931; GFX9-LABEL: store_1d_V1: 932; GFX9: ; %bb.0: ; %main_body 933; GFX9-NEXT: image_store v0, v1, s[0:7] dmask:0x2 unorm a16 ; encoding: [0x00,0x92,0x20,0xf0,0x01,0x00,0x00,0x00] 934; GFX9-NEXT: s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] 935; 936; GFX10-LABEL: store_1d_V1: 937; GFX10: ; %bb.0: ; %main_body 938; GFX10-NEXT: image_store v0, v1, s[0:7] dmask:0x2 dim:SQ_RSRC_IMG_1D unorm a16 ; encoding: [0x00,0x12,0x20,0xf0,0x01,0x00,0x00,0x40] 939; GFX10-NEXT: s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] 940; 941; GFX11-LABEL: store_1d_V1: 942; GFX11: ; %bb.0: ; %main_body 943; GFX11-NEXT: image_store v0, v1, s[0:7] dmask:0x2 dim:SQ_RSRC_IMG_1D unorm a16 ; encoding: [0x80,0x02,0x19,0xf0,0x01,0x00,0x00,0x00] 944; GFX11-NEXT: s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] 945main_body: 946 %s = extractelement <2 x i16> %coords, i32 0 947 call void @llvm.amdgcn.image.store.1d.f32.i16(float %vdata, i32 2, i16 %s, <8 x i32> %rsrc, i32 0, i32 0) 948 ret void 949} 950 951define amdgpu_ps void @store_1d_V2(<8 x i32> inreg %rsrc, <2 x float> %vdata, <2 x i16> %coords) { 952; GFX9-LABEL: store_1d_V2: 953; GFX9: ; %bb.0: ; %main_body 954; GFX9-NEXT: image_store v[0:1], v2, s[0:7] dmask:0xc unorm a16 ; encoding: [0x00,0x9c,0x20,0xf0,0x02,0x00,0x00,0x00] 955; GFX9-NEXT: s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] 956; 957; GFX10-LABEL: store_1d_V2: 958; GFX10: ; %bb.0: ; %main_body 959; GFX10-NEXT: image_store v[0:1], v2, s[0:7] dmask:0xc dim:SQ_RSRC_IMG_1D unorm a16 ; encoding: [0x00,0x1c,0x20,0xf0,0x02,0x00,0x00,0x40] 960; GFX10-NEXT: s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] 961; 962; GFX11-LABEL: store_1d_V2: 963; GFX11: ; %bb.0: ; %main_body 964; GFX11-NEXT: image_store v[0:1], v2, s[0:7] dmask:0xc dim:SQ_RSRC_IMG_1D unorm a16 ; encoding: [0x80,0x0c,0x19,0xf0,0x02,0x00,0x00,0x00] 965; GFX11-NEXT: s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] 966main_body: 967 %s = extractelement <2 x i16> %coords, i32 0 968 call void @llvm.amdgcn.image.store.1d.v2f32.i16(<2 x float> %vdata, i32 12, i16 %s, <8 x i32> %rsrc, i32 0, i32 0) 969 ret void 970} 971 972define amdgpu_ps <4 x float> @load_1d_glc(<8 x i32> inreg %rsrc, <2 x i16> %coords) { 973; GFX9-LABEL: load_1d_glc: 974; GFX9: ; %bb.0: ; %main_body 975; GFX9-NEXT: image_load v[0:3], v0, s[0:7] dmask:0xf unorm glc a16 ; encoding: [0x00,0xbf,0x00,0xf0,0x00,0x00,0x00,0x00] 976; GFX9-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf] 977; GFX9-NEXT: ; return to shader part epilog 978; 979; GFX10-LABEL: load_1d_glc: 980; GFX10: ; %bb.0: ; %main_body 981; GFX10-NEXT: image_load v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm glc a16 ; encoding: [0x00,0x3f,0x00,0xf0,0x00,0x00,0x00,0x40] 982; GFX10-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf] 983; GFX10-NEXT: ; return to shader part epilog 984; 985; GFX11-LABEL: load_1d_glc: 986; GFX11: ; %bb.0: ; %main_body 987; GFX11-NEXT: image_load v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm glc a16 ; encoding: [0x80,0x4f,0x01,0xf0,0x00,0x00,0x00,0x00] 988; GFX11-NEXT: s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf] 989; GFX11-NEXT: ; return to shader part epilog 990main_body: 991 %s = extractelement <2 x i16> %coords, i32 0 992 %v = call <4 x float> @llvm.amdgcn.image.load.1d.v4f32.i16(i32 15, i16 %s, <8 x i32> %rsrc, i32 0, i32 1) 993 ret <4 x float> %v 994} 995 996define amdgpu_ps <4 x float> @load_1d_slc(<8 x i32> inreg %rsrc, <2 x i16> %coords) { 997; GFX9-LABEL: load_1d_slc: 998; GFX9: ; %bb.0: ; %main_body 999; GFX9-NEXT: image_load v[0:3], v0, s[0:7] dmask:0xf unorm slc a16 ; encoding: [0x00,0x9f,0x00,0xf2,0x00,0x00,0x00,0x00] 1000; GFX9-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf] 1001; GFX9-NEXT: ; return to shader part epilog 1002; 1003; GFX10-LABEL: load_1d_slc: 1004; GFX10: ; %bb.0: ; %main_body 1005; GFX10-NEXT: image_load v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm slc a16 ; encoding: [0x00,0x1f,0x00,0xf2,0x00,0x00,0x00,0x40] 1006; GFX10-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf] 1007; GFX10-NEXT: ; return to shader part epilog 1008; 1009; GFX11-LABEL: load_1d_slc: 1010; GFX11: ; %bb.0: ; %main_body 1011; GFX11-NEXT: image_load v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm slc a16 ; encoding: [0x80,0x1f,0x01,0xf0,0x00,0x00,0x00,0x00] 1012; GFX11-NEXT: s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf] 1013; GFX11-NEXT: ; return to shader part epilog 1014main_body: 1015 %s = extractelement <2 x i16> %coords, i32 0 1016 %v = call <4 x float> @llvm.amdgcn.image.load.1d.v4f32.i16(i32 15, i16 %s, <8 x i32> %rsrc, i32 0, i32 2) 1017 ret <4 x float> %v 1018} 1019 1020define amdgpu_ps <4 x float> @load_1d_glc_slc(<8 x i32> inreg %rsrc, <2 x i16> %coords) { 1021; GFX9-LABEL: load_1d_glc_slc: 1022; GFX9: ; %bb.0: ; %main_body 1023; GFX9-NEXT: image_load v[0:3], v0, s[0:7] dmask:0xf unorm glc slc a16 ; encoding: [0x00,0xbf,0x00,0xf2,0x00,0x00,0x00,0x00] 1024; GFX9-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf] 1025; GFX9-NEXT: ; return to shader part epilog 1026; 1027; GFX10-LABEL: load_1d_glc_slc: 1028; GFX10: ; %bb.0: ; %main_body 1029; GFX10-NEXT: image_load v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm glc slc a16 ; encoding: [0x00,0x3f,0x00,0xf2,0x00,0x00,0x00,0x40] 1030; GFX10-NEXT: s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf] 1031; GFX10-NEXT: ; return to shader part epilog 1032; 1033; GFX11-LABEL: load_1d_glc_slc: 1034; GFX11: ; %bb.0: ; %main_body 1035; GFX11-NEXT: image_load v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm glc slc a16 ; encoding: [0x80,0x5f,0x01,0xf0,0x00,0x00,0x00,0x00] 1036; GFX11-NEXT: s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf] 1037; GFX11-NEXT: ; return to shader part epilog 1038main_body: 1039 %s = extractelement <2 x i16> %coords, i32 0 1040 %v = call <4 x float> @llvm.amdgcn.image.load.1d.v4f32.i16(i32 15, i16 %s, <8 x i32> %rsrc, i32 0, i32 3) 1041 ret <4 x float> %v 1042} 1043 1044define amdgpu_ps void @store_1d_glc(<8 x i32> inreg %rsrc, <4 x float> %vdata, <2 x i16> %coords) { 1045; GFX9-LABEL: store_1d_glc: 1046; GFX9: ; %bb.0: ; %main_body 1047; GFX9-NEXT: image_store v[0:3], v4, s[0:7] dmask:0xf unorm glc a16 ; encoding: [0x00,0xbf,0x20,0xf0,0x04,0x00,0x00,0x00] 1048; GFX9-NEXT: s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] 1049; 1050; GFX10-LABEL: store_1d_glc: 1051; GFX10: ; %bb.0: ; %main_body 1052; GFX10-NEXT: image_store v[0:3], v4, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm glc a16 ; encoding: [0x00,0x3f,0x20,0xf0,0x04,0x00,0x00,0x40] 1053; GFX10-NEXT: s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] 1054; 1055; GFX11-LABEL: store_1d_glc: 1056; GFX11: ; %bb.0: ; %main_body 1057; GFX11-NEXT: image_store v[0:3], v4, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm glc a16 ; encoding: [0x80,0x4f,0x19,0xf0,0x04,0x00,0x00,0x00] 1058; GFX11-NEXT: s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] 1059main_body: 1060 %s = extractelement <2 x i16> %coords, i32 0 1061 call void @llvm.amdgcn.image.store.1d.v4f32.i16(<4 x float> %vdata, i32 15, i16 %s, <8 x i32> %rsrc, i32 0, i32 1) 1062 ret void 1063} 1064 1065define amdgpu_ps void @store_1d_slc(<8 x i32> inreg %rsrc, <4 x float> %vdata, <2 x i16> %coords) { 1066; GFX9-LABEL: store_1d_slc: 1067; GFX9: ; %bb.0: ; %main_body 1068; GFX9-NEXT: image_store v[0:3], v4, s[0:7] dmask:0xf unorm slc a16 ; encoding: [0x00,0x9f,0x20,0xf2,0x04,0x00,0x00,0x00] 1069; GFX9-NEXT: s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] 1070; 1071; GFX10-LABEL: store_1d_slc: 1072; GFX10: ; %bb.0: ; %main_body 1073; GFX10-NEXT: image_store v[0:3], v4, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm slc a16 ; encoding: [0x00,0x1f,0x20,0xf2,0x04,0x00,0x00,0x40] 1074; GFX10-NEXT: s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] 1075; 1076; GFX11-LABEL: store_1d_slc: 1077; GFX11: ; %bb.0: ; %main_body 1078; GFX11-NEXT: image_store v[0:3], v4, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm slc a16 ; encoding: [0x80,0x1f,0x19,0xf0,0x04,0x00,0x00,0x00] 1079; GFX11-NEXT: s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] 1080main_body: 1081 %s = extractelement <2 x i16> %coords, i32 0 1082 call void @llvm.amdgcn.image.store.1d.v4f32.i16(<4 x float> %vdata, i32 15, i16 %s, <8 x i32> %rsrc, i32 0, i32 2) 1083 ret void 1084} 1085 1086define amdgpu_ps void @store_1d_glc_slc(<8 x i32> inreg %rsrc, <4 x float> %vdata, <2 x i16> %coords) { 1087; GFX9-LABEL: store_1d_glc_slc: 1088; GFX9: ; %bb.0: ; %main_body 1089; GFX9-NEXT: image_store v[0:3], v4, s[0:7] dmask:0xf unorm glc slc a16 ; encoding: [0x00,0xbf,0x20,0xf2,0x04,0x00,0x00,0x00] 1090; GFX9-NEXT: s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] 1091; 1092; GFX10-LABEL: store_1d_glc_slc: 1093; GFX10: ; %bb.0: ; %main_body 1094; GFX10-NEXT: image_store v[0:3], v4, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm glc slc a16 ; encoding: [0x00,0x3f,0x20,0xf2,0x04,0x00,0x00,0x40] 1095; GFX10-NEXT: s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] 1096; 1097; GFX11-LABEL: store_1d_glc_slc: 1098; GFX11: ; %bb.0: ; %main_body 1099; GFX11-NEXT: image_store v[0:3], v4, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm glc slc a16 ; encoding: [0x80,0x5f,0x19,0xf0,0x04,0x00,0x00,0x00] 1100; GFX11-NEXT: s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] 1101main_body: 1102 %s = extractelement <2 x i16> %coords, i32 0 1103 call void @llvm.amdgcn.image.store.1d.v4f32.i16(<4 x float> %vdata, i32 15, i16 %s, <8 x i32> %rsrc, i32 0, i32 3) 1104 ret void 1105} 1106 1107define amdgpu_ps <4 x float> @getresinfo_dmask0(<8 x i32> inreg %rsrc, <4 x float> %vdata, <2 x i16> %coords) #0 { 1108; GFX9-LABEL: getresinfo_dmask0: 1109; GFX9: ; %bb.0: ; %main_body 1110; GFX9-NEXT: ; return to shader part epilog 1111; 1112; GFX10-LABEL: getresinfo_dmask0: 1113; GFX10: ; %bb.0: ; %main_body 1114; GFX10-NEXT: ; return to shader part epilog 1115; 1116; GFX11-LABEL: getresinfo_dmask0: 1117; GFX11: ; %bb.0: ; %main_body 1118; GFX11-NEXT: ; return to shader part epilog 1119main_body: 1120 %mip = extractelement <2 x i16> %coords, i32 0 1121 %r = call <4 x float> @llvm.amdgcn.image.getresinfo.1d.v4f32.i16(i32 0, i16 %mip, <8 x i32> %rsrc, i32 0, i32 0) 1122 ret <4 x float> %r 1123} 1124 1125declare <4 x float> @llvm.amdgcn.image.load.1d.v4f32.i16(i32, i16, <8 x i32>, i32, i32) #1 1126declare <4 x float> @llvm.amdgcn.image.load.2d.v4f32.i16(i32, i16, i16, <8 x i32>, i32, i32) #1 1127declare <4 x float> @llvm.amdgcn.image.load.3d.v4f32.i16(i32, i16, i16, i16, <8 x i32>, i32, i32) #1 1128declare <4 x float> @llvm.amdgcn.image.load.cube.v4f32.i16(i32, i16, i16, i16, <8 x i32>, i32, i32) #1 1129declare <4 x float> @llvm.amdgcn.image.load.1darray.v4f32.i16(i32, i16, i16, <8 x i32>, i32, i32) #1 1130declare <4 x float> @llvm.amdgcn.image.load.2darray.v4f32.i16(i32, i16, i16, i16, <8 x i32>, i32, i32) #1 1131declare <4 x float> @llvm.amdgcn.image.load.2dmsaa.v4f32.i16(i32, i16, i16, i16, <8 x i32>, i32, i32) #1 1132declare <4 x float> @llvm.amdgcn.image.load.2darraymsaa.v4f32.i16(i32, i16, i16, i16, i16, <8 x i32>, i32, i32) #1 1133 1134declare <4 x float> @llvm.amdgcn.image.load.mip.1d.v4f32.i16(i32, i16, i16, <8 x i32>, i32, i32) #1 1135declare <4 x float> @llvm.amdgcn.image.load.mip.2d.v4f32.i16(i32, i16, i16, i16, <8 x i32>, i32, i32) #1 1136declare <4 x float> @llvm.amdgcn.image.load.mip.3d.v4f32.i16(i32, i16, i16, i16, i16, <8 x i32>, i32, i32) #1 1137declare <4 x float> @llvm.amdgcn.image.load.mip.cube.v4f32.i16(i32, i16, i16, i16, i16, <8 x i32>, i32, i32) #1 1138declare <4 x float> @llvm.amdgcn.image.load.mip.1darray.v4f32.i16(i32, i16, i16, i16, <8 x i32>, i32, i32) #1 1139declare <4 x float> @llvm.amdgcn.image.load.mip.2darray.v4f32.i16(i32, i16, i16, i16, i16, <8 x i32>, i32, i32) #1 1140 1141declare void @llvm.amdgcn.image.store.1d.v4f32.i16(<4 x float>, i32, i16, <8 x i32>, i32, i32) #0 1142declare void @llvm.amdgcn.image.store.2d.v4f32.i16(<4 x float>, i32, i16, i16, <8 x i32>, i32, i32) #0 1143declare void @llvm.amdgcn.image.store.3d.v4f32.i16(<4 x float>, i32, i16, i16, i16, <8 x i32>, i32, i32) #0 1144declare void @llvm.amdgcn.image.store.cube.v4f32.i16(<4 x float>, i32, i16, i16, i16, <8 x i32>, i32, i32) #0 1145declare void @llvm.amdgcn.image.store.1darray.v4f32.i16(<4 x float>, i32, i16, i16, <8 x i32>, i32, i32) #0 1146declare void @llvm.amdgcn.image.store.2darray.v4f32.i16(<4 x float>, i32, i16, i16, i16, <8 x i32>, i32, i32) #0 1147declare void @llvm.amdgcn.image.store.2dmsaa.v4f32.i16(<4 x float>, i32, i16, i16, i16, <8 x i32>, i32, i32) #0 1148declare void @llvm.amdgcn.image.store.2darraymsaa.v4f32.i16(<4 x float>, i32, i16, i16, i16, i16, <8 x i32>, i32, i32) #0 1149 1150declare void @llvm.amdgcn.image.store.mip.1d.v4f32.i16(<4 x float>, i32, i16, i16, <8 x i32>, i32, i32) #0 1151declare void @llvm.amdgcn.image.store.mip.2d.v4f32.i16(<4 x float>, i32, i16, i16, i16, <8 x i32>, i32, i32) #0 1152declare void @llvm.amdgcn.image.store.mip.3d.v4f32.i16(<4 x float>, i32, i16, i16, i16, i16, <8 x i32>, i32, i32) #0 1153declare void @llvm.amdgcn.image.store.mip.cube.v4f32.i16(<4 x float>, i32, i16, i16, i16, i16, <8 x i32>, i32, i32) #0 1154declare void @llvm.amdgcn.image.store.mip.1darray.v4f32.i16(<4 x float>, i32, i16, i16, i16, <8 x i32>, i32, i32) #0 1155declare void @llvm.amdgcn.image.store.mip.2darray.v4f32.i16(<4 x float>, i32, i16, i16, i16, i16, <8 x i32>, i32, i32) #0 1156 1157declare <4 x float> @llvm.amdgcn.image.getresinfo.1d.v4f32.i16(i32, i16, <8 x i32>, i32, i32) #2 1158declare <4 x float> @llvm.amdgcn.image.getresinfo.2d.v4f32.i16(i32, i16, <8 x i32>, i32, i32) #2 1159declare <4 x float> @llvm.amdgcn.image.getresinfo.3d.v4f32.i16(i32, i16, <8 x i32>, i32, i32) #2 1160declare <4 x float> @llvm.amdgcn.image.getresinfo.cube.v4f32.i16(i32, i16, <8 x i32>, i32, i32) #2 1161declare <4 x float> @llvm.amdgcn.image.getresinfo.1darray.v4f32.i16(i32, i16, <8 x i32>, i32, i32) #2 1162declare <4 x float> @llvm.amdgcn.image.getresinfo.2darray.v4f32.i16(i32, i16, <8 x i32>, i32, i32) #2 1163declare <4 x float> @llvm.amdgcn.image.getresinfo.2dmsaa.v4f32.i16(i32, i16, <8 x i32>, i32, i32) #2 1164declare <4 x float> @llvm.amdgcn.image.getresinfo.2darraymsaa.v4f32.i16(i32, i16, <8 x i32>, i32, i32) #2 1165 1166declare float @llvm.amdgcn.image.load.1d.f32.i16(i32, i16, <8 x i32>, i32, i32) #1 1167declare float @llvm.amdgcn.image.load.2d.f32.i16(i32, i16, i16, <8 x i32>, i32, i32) #1 1168declare <2 x float> @llvm.amdgcn.image.load.1d.v2f32.i16(i32, i16, <8 x i32>, i32, i32) #1 1169declare void @llvm.amdgcn.image.store.1d.f32.i16(float, i32, i16, <8 x i32>, i32, i32) #0 1170declare void @llvm.amdgcn.image.store.1d.v2f32.i16(<2 x float>, i32, i16, <8 x i32>, i32, i32) #0 1171 1172attributes #0 = { nounwind } 1173attributes #1 = { nounwind readonly } 1174attributes #2 = { nounwind readnone } 1175